Factorized code
This commit is contained in:
parent
465ac2db74
commit
64f3808c9d
1 changed files with 27 additions and 77 deletions
|
@ -26,105 +26,55 @@ import org.linphone.core.tools.Log
|
||||||
|
|
||||||
class AudioRouteUtils {
|
class AudioRouteUtils {
|
||||||
companion object {
|
companion object {
|
||||||
fun routeAudioToEarpiece(call: Call? = null) {
|
private fun routeAudioTo(types : List<AudioDevice.Type>, call: Call? = null) {
|
||||||
|
val listSize = types.size
|
||||||
|
val stringBuilder = StringBuilder()
|
||||||
|
var index = 0
|
||||||
|
while (index < listSize) {
|
||||||
|
stringBuilder.append(types[index].name)
|
||||||
|
if (index < listSize - 1) {
|
||||||
|
stringBuilder.append("/")
|
||||||
|
}
|
||||||
|
index++
|
||||||
|
}
|
||||||
|
val typesNames = stringBuilder.toString()
|
||||||
|
|
||||||
if (coreContext.core.callsNb == 0) {
|
if (coreContext.core.callsNb == 0) {
|
||||||
Log.e("[Audio Route Helper] No call found, aborting earpiece audio route change")
|
Log.e("[Audio Route Helper] No call found, aborting [$typesNames] audio route change")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val currentCall = call ?: coreContext.core.currentCall ?: coreContext.core.calls[0]
|
val currentCall = call ?: coreContext.core.currentCall ?: coreContext.core.calls[0]
|
||||||
val conference = coreContext.core.conference
|
val conference = coreContext.core.conference
|
||||||
|
|
||||||
for (audioDevice in coreContext.core.audioDevices) {
|
for (audioDevice in coreContext.core.audioDevices) {
|
||||||
if (audioDevice.type == AudioDevice.Type.Earpiece) {
|
if (types.contains(audioDevice.type) && audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) {
|
||||||
if (conference != null && conference.isIn) {
|
if (conference != null && conference.isIn) {
|
||||||
Log.i("[Audio Route Helper] Found earpiece audio device [${audioDevice.deviceName}], routing audio of conference to it")
|
Log.i("[Audio Route Helper] Found [${audioDevice.type}] audio device [${audioDevice.deviceName}], routing conference audio to it")
|
||||||
conference.outputAudioDevice = audioDevice
|
conference.outputAudioDevice = audioDevice
|
||||||
return
|
|
||||||
} else {
|
} else {
|
||||||
Log.i("[Audio Route Helper] Found earpiece audio device [${audioDevice.deviceName}], routing audio of call to it")
|
Log.i("[Audio Route Helper] Found [${audioDevice.type}] audio device [${audioDevice.deviceName}], routing call audio to it")
|
||||||
currentCall.outputAudioDevice = audioDevice
|
currentCall.outputAudioDevice = audioDevice
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Log.e("[Audio Route Helper] Couldn't find [$typesNames] audio device")
|
||||||
}
|
}
|
||||||
Log.e("[Audio Route Helper] Couldn't find earpiece audio device")
|
|
||||||
|
fun routeAudioToEarpiece(call: Call? = null) {
|
||||||
|
routeAudioTo(arrayListOf(AudioDevice.Type.Earpiece), call)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun routeAudioToSpeaker(call: Call? = null) {
|
fun routeAudioToSpeaker(call: Call? = null) {
|
||||||
if (coreContext.core.callsNb == 0) {
|
routeAudioTo(arrayListOf(AudioDevice.Type.Speaker), call)
|
||||||
Log.e("[Audio Route Helper] No call found, aborting speaker audio route change")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val currentCall = call ?: coreContext.core.currentCall ?: coreContext.core.calls[0]
|
|
||||||
val conference = coreContext.core.conference
|
|
||||||
|
|
||||||
for (audioDevice in coreContext.core.audioDevices) {
|
|
||||||
if (audioDevice.type == AudioDevice.Type.Speaker) {
|
|
||||||
if (conference != null && conference.isIn) {
|
|
||||||
Log.i("[Audio Route Helper] Found speaker audio device [${audioDevice.deviceName}], routing audio of conference to it")
|
|
||||||
conference.outputAudioDevice = audioDevice
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
Log.i("[Audio Route Helper] Found speaker audio device [${audioDevice.deviceName}], routing audio of call to it")
|
|
||||||
currentCall.outputAudioDevice = audioDevice
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Log.e("[Audio Route Helper] Couldn't find speaker audio device")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun routeAudioToBluetooth(call: Call? = null) {
|
fun routeAudioToBluetooth(call: Call? = null) {
|
||||||
if (coreContext.core.callsNb == 0) {
|
routeAudioTo(arrayListOf(AudioDevice.Type.Bluetooth), call)
|
||||||
Log.e("[Audio Route Helper] No call found, aborting bluetooth audio route change")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
val currentCall = call ?: coreContext.core.currentCall ?: coreContext.core.calls[0]
|
|
||||||
val conference = coreContext.core.conference
|
|
||||||
|
|
||||||
for (audioDevice in coreContext.core.audioDevices) {
|
|
||||||
if (audioDevice.type == AudioDevice.Type.Bluetooth) {
|
|
||||||
if (audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) {
|
|
||||||
if (conference != null && conference.isIn) {
|
|
||||||
Log.i("[Audio Route Helper] Found bluetooth audio device [${audioDevice.deviceName}], routing audio of conference to it")
|
|
||||||
conference.outputAudioDevice = audioDevice
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
Log.i("[Audio Route Helper] Found bluetooth audio device [${audioDevice.deviceName}], routing audio of call to it")
|
|
||||||
currentCall.outputAudioDevice = audioDevice
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Log.e("[Audio Route Helper] Couldn't find bluetooth audio device")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun routeAudioToHeadset(call: Call? = null) {
|
fun routeAudioToHeadset(call: Call? = null) {
|
||||||
if (coreContext.core.callsNb == 0) {
|
routeAudioTo(arrayListOf(AudioDevice.Type.Headphones, AudioDevice.Type.Headset), call)
|
||||||
Log.e("[Audio Route Helper] No call found, aborting headset audio route change")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
val currentCall = call ?: coreContext.core.currentCall ?: coreContext.core.calls[0]
|
|
||||||
val conference = coreContext.core.conference
|
|
||||||
|
|
||||||
for (audioDevice in coreContext.core.audioDevices) {
|
|
||||||
if (audioDevice.type == AudioDevice.Type.Headphones || audioDevice.type == AudioDevice.Type.Headset) {
|
|
||||||
if (audioDevice.hasCapability(AudioDevice.Capabilities.CapabilityPlay)) {
|
|
||||||
if (conference != null && conference.isIn) {
|
|
||||||
Log.i("[Audio Route Helper] Found headset audio device [${audioDevice.deviceName}], routing audio of conference to it")
|
|
||||||
conference.outputAudioDevice = audioDevice
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
Log.i("[Audio Route Helper] Found headset audio device [${audioDevice.deviceName}], routing audio of call to it")
|
|
||||||
currentCall.outputAudioDevice = audioDevice
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Log.e("[Audio Route Helper] Couldn't find headset audio device")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isSpeakerAudioRouteCurrentlyUsed(call: Call? = null): Boolean {
|
fun isSpeakerAudioRouteCurrentlyUsed(call: Call? = null): Boolean {
|
||||||
|
|
Loading…
Reference in a new issue