From 9a928fbb410362c948ca059e66e36e7f167ef8c0 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 22 Nov 2019 16:32:59 +0100 Subject: [PATCH] Added more logs for BT SCO process + refresh audio routes while in call if BT headset connects/disconnects --- .../org/linphone/call/AndroidAudioManager.java | 13 ++++++++++--- .../java/org/linphone/dialer/DialerActivity.java | 15 ++++++--------- .../org/linphone/receivers/BluetoothReceiver.java | 9 +++++++++ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/linphone/call/AndroidAudioManager.java b/app/src/main/java/org/linphone/call/AndroidAudioManager.java index 3c20d6ead..ce561c13d 100644 --- a/app/src/main/java/org/linphone/call/AndroidAudioManager.java +++ b/app/src/main/java/org/linphone/call/AndroidAudioManager.java @@ -438,6 +438,7 @@ public class AndroidAudioManager { public synchronized void bluetoothHeadetConnectionChanged(boolean connected) { mIsBluetoothHeadsetConnected = connected; mAudioManager.setBluetoothScoOn(connected); + LinphoneManager.getCallManager().refreshInCallActions(); } public synchronized void bluetoothHeadetAudioConnectionChanged(boolean connected) { @@ -485,8 +486,10 @@ public class AndroidAudioManager { new Thread() { @Override public void run() { - boolean resultAcknoledged; + Log.i("[Audio Manager] [Bluetooth] SCO start/stop thread started"); + boolean resultAcknowledged; int retries = 0; + do { try { Thread.sleep(200); @@ -506,10 +509,10 @@ public class AndroidAudioManager { + retries); mAudioManager.stopBluetoothSco(); } - resultAcknoledged = isUsingBluetoothAudioRoute() == enable; + resultAcknowledged = isUsingBluetoothAudioRoute() == enable; retries++; } - } while (!resultAcknoledged && retries < 10); + } while (!resultAcknowledged && retries < 10); } }.start(); } @@ -523,6 +526,7 @@ public class AndroidAudioManager { } else { Log.w("[Audio Manager] [Bluetooth] SCO not available off call !"); } + if (mBluetoothAdapter.isEnabled()) { Log.i("[Audio Manager] [Bluetooth] Adapter enabled"); mBluetoothReceiver = new BluetoothReceiver(); @@ -557,6 +561,8 @@ public class AndroidAudioManager { Intent sticky = mContext.registerReceiver(mBluetoothReceiver, filter); + Log.i( + "[Audio Manager] [Bluetooth] Bluetooth receiver registered"); int state = sticky.getIntExtra( AudioManager.EXTRA_SCO_AUDIO_STATE, @@ -593,6 +599,7 @@ public class AndroidAudioManager { } } }; + mBluetoothAdapter.getProfileProxy( mContext, bluetoothServiceListener, BluetoothProfile.HEADSET); } diff --git a/app/src/main/java/org/linphone/dialer/DialerActivity.java b/app/src/main/java/org/linphone/dialer/DialerActivity.java index 2a60f7297..56e0999bd 100644 --- a/app/src/main/java/org/linphone/dialer/DialerActivity.java +++ b/app/src/main/java/org/linphone/dialer/DialerActivity.java @@ -67,8 +67,6 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC super.onCreate(savedInstanceState); mInterfaceLoaded = false; - mIsTransfer = false; - // Uses the fragment container layout to inflate the dialer view instead of using a fragment new AsyncLayoutInflater(this) .inflate( @@ -124,8 +122,6 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); - - setIntent(intent); handleIntentParams(intent); } @@ -211,6 +207,12 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC } }); + mIsTransfer = false; + if (getIntent() != null) { + mIsTransfer = getIntent().getBooleanExtra("Transfer", false); + mAddress.setText(getIntent().getStringExtra("SipUri")); + } + setUpNumpad(view); updateLayout(); enableVideoPreviewIfTablet(true); @@ -280,11 +282,6 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC } } - if (getIntent() != null) { - mIsTransfer = getIntent().getBooleanExtra("Transfer", false); - mAddress.setText(getIntent().getStringExtra("SipUri")); - } - mBackToCall.setVisibility(atLeastOneCall ? View.VISIBLE : View.GONE); mAddCall.setVisibility(atLeastOneCall && !mIsTransfer ? View.VISIBLE : View.GONE); mTransferCall.setVisibility(atLeastOneCall && mIsTransfer ? View.VISIBLE : View.GONE); diff --git a/app/src/main/java/org/linphone/receivers/BluetoothReceiver.java b/app/src/main/java/org/linphone/receivers/BluetoothReceiver.java index d2e677e1a..fee24a678 100644 --- a/app/src/main/java/org/linphone/receivers/BluetoothReceiver.java +++ b/app/src/main/java/org/linphone/receivers/BluetoothReceiver.java @@ -28,9 +28,16 @@ import org.linphone.LinphoneManager; import org.linphone.core.tools.Log; public class BluetoothReceiver extends BroadcastReceiver { + public BluetoothReceiver() { + super(); + Log.i("[Bluetooth] Bluetooth receiver created"); + } + @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); + Log.i("[Bluetooth] Bluetooth broadcast received"); + if (action.equals(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED)) { int state = intent.getIntExtra( @@ -55,6 +62,8 @@ public class BluetoothReceiver extends BroadcastReceiver { } else if (state == BluetoothHeadset.STATE_AUDIO_DISCONNECTED) { Log.i("[Bluetooth] Bluetooth headset audio disconnected"); LinphoneManager.getAudioManager().bluetoothHeadetAudioConnectionChanged(false); + } else if (state == BluetoothHeadset.STATE_AUDIO_CONNECTING) { + Log.i("[Bluetooth] Bluetooth headset audio connecting"); } else { Log.w("[Bluetooth] Bluetooth headset unknown audio state changed: " + state); }