Auto switch to bluetooth during a call if available
This commit is contained in:
parent
111bcd092f
commit
62083bc5c0
2 changed files with 17 additions and 2 deletions
|
@ -90,7 +90,7 @@ class ControlsViewModel : ViewModel() {
|
||||||
|
|
||||||
val somethingClickedEvent = MutableLiveData<Event<Boolean>>()
|
val somethingClickedEvent = MutableLiveData<Event<Boolean>>()
|
||||||
|
|
||||||
val chatAllowed = !LinphoneApplication.corePreferences.disableChat
|
val chatAllowed = !corePreferences.disableChat
|
||||||
|
|
||||||
private val vibrator = coreContext.context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
|
private val vibrator = coreContext.context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
|
||||||
|
|
||||||
|
@ -178,12 +178,15 @@ class ControlsViewModel : ViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAudioDeviceChanged(core: Core, audioDevice: AudioDevice) {
|
override fun onAudioDeviceChanged(core: Core, audioDevice: AudioDevice) {
|
||||||
|
Log.i("[Call] Audio device changed: ${audioDevice.deviceName}")
|
||||||
updateSpeakerState()
|
updateSpeakerState()
|
||||||
updateBluetoothHeadsetState()
|
updateBluetoothHeadsetState()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAudioDevicesListUpdated(core: Core) {
|
override fun onAudioDevicesListUpdated(core: Core) {
|
||||||
|
if (core.callsNb == 0) return
|
||||||
updateAudioRoutesState()
|
updateAudioRoutesState()
|
||||||
|
routeAudioToBluetoothIfAvailable(core.currentCall ?: core.calls[0])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,6 +439,18 @@ class ControlsViewModel : ViewModel() {
|
||||||
isBluetoothHeadsetSelected.value = audioDevice?.type == AudioDevice.Type.Bluetooth
|
isBluetoothHeadsetSelected.value = audioDevice?.type == AudioDevice.Type.Bluetooth
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun routeAudioToBluetoothIfAvailable(call: Call) {
|
||||||
|
for (audioDevice in coreContext.core.audioDevices) {
|
||||||
|
if (audioDevice.type == AudioDevice.Type.Bluetooth &&
|
||||||
|
audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) {
|
||||||
|
Log.i("[Call] Found bluetooth audio device [${audioDevice.deviceName}], routing audio to it")
|
||||||
|
call.outputAudioDevice = audioDevice
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log.w("[Call] Didn't find any bluetooth audio device, keeping current audio route")
|
||||||
|
}
|
||||||
|
|
||||||
private fun updateVideoAvailable() {
|
private fun updateVideoAvailable() {
|
||||||
val core = coreContext.core
|
val core = coreContext.core
|
||||||
val currentCall = core.currentCall
|
val currentCall = core.currentCall
|
||||||
|
|
|
@ -160,7 +160,7 @@ class CoreContext(val context: Context, coreConfig: Config) {
|
||||||
}
|
}
|
||||||
} else if (state == Call.State.OutgoingInit) {
|
} else if (state == Call.State.OutgoingInit) {
|
||||||
onOutgoingStarted()
|
onOutgoingStarted()
|
||||||
} else if (state == Call.State.OutgoingRinging) {
|
} else if (state == Call.State.OutgoingProgress) {
|
||||||
if (core.callsNb == 1) {
|
if (core.callsNb == 1) {
|
||||||
routeAudioToBluetoothIfAvailable(call)
|
routeAudioToBluetoothIfAvailable(call)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue