add a default audio device option in audio manager. stops auto-switch to bluetooth being disabled by 'user selected audio device' being set in code

Signed-off-by: gavine99 <github@xymail.tk>
This commit is contained in:
gavine99 2025-04-16 11:35:25 +10:00 committed by Marcel Hibbe
parent 6af46160b4
commit 7e267ab761
2 changed files with 24 additions and 3 deletions

View File

@ -805,9 +805,9 @@ class CallActivity : CallBaseActivity() {
)
}
if (isVoiceOnlyCall) {
setAudioOutputChannel(AudioDevice.EARPIECE)
setDefaultAudioOutputChannel(AudioDevice.EARPIECE)
} else {
setAudioOutputChannel(AudioDevice.SPEAKER_PHONE)
setDefaultAudioOutputChannel(AudioDevice.SPEAKER_PHONE)
}
iceServers = ArrayList()
@ -834,6 +834,13 @@ class CallActivity : CallBaseActivity() {
microphoneInitialization()
}
fun setDefaultAudioOutputChannel(selectedAudioDevice: AudioDevice?) {
if (audioManager != null) {
audioManager!!.selectDefaultAudioDevice(selectedAudioDevice)
updateAudioOutputButton(audioManager!!.currentAudioDevice)
}
}
fun setAudioOutputChannel(selectedAudioDevice: AudioDevice?) {
if (audioManager != null) {
audioManager!!.selectAudioDevice(selectedAudioDevice)

View File

@ -55,6 +55,7 @@ public class WebRtcAudioManager {
private AudioDevice userSelectedAudioDevice;
private AudioDevice currentAudioDevice;
private AudioDevice defaultAudioDevice;
private ProximitySensor proximitySensor = null;
@ -215,6 +216,7 @@ public class WebRtcAudioManager {
// Set initial device states.
userSelectedAudioDevice = AudioDevice.NONE;
currentAudioDevice = AudioDevice.NONE;
defaultAudioDevice = AudioDevice.NONE;
audioDevices.clear();
startBluetoothManager();
@ -297,6 +299,15 @@ public class WebRtcAudioManager {
/**
* Changes selection of the currently active audio device.
*/
public void selectDefaultAudioDevice(AudioDevice device) {
ThreadUtils.checkIsOnMainThread();
if (!audioDevices.contains(device)) {
Log.e(TAG, "Can not select default " + device + " from available " + audioDevices);
}
defaultAudioDevice = device;
updateAudioDeviceState();
}
public void selectAudioDevice(AudioDevice device) {
ThreadUtils.checkIsOnMainThread();
if (!audioDevices.contains(device)) {
@ -493,7 +504,10 @@ public class WebRtcAudioManager {
// phone (on a tablet), or speaker phone and earpiece (on mobile phone).
// |defaultAudioDevice| contains either AudioDevice.SPEAKER_PHONE or AudioDevice.EARPIECE
// depending on the user's selection.
newCurrentAudioDevice = userSelectedAudioDevice;
if ((userSelectedAudioDevice == AudioDevice.NONE) && (defaultAudioDevice != AudioDevice.NONE))
newCurrentAudioDevice = defaultAudioDevice;
else
newCurrentAudioDevice = userSelectedAudioDevice;
}
// Switch to new device but only if there has been any changes.
if (newCurrentAudioDevice != currentAudioDevice || audioDeviceSetUpdated) {