Merge "AudioService: handle BT profile disconnections" into tm-qpr-dev am: f642d99e9a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21226440 Change-Id: Id17f3aec7596d77d4f028fc5fc606f68b0877d61 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1512,6 +1512,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
case MSG_I_BT_SERVICE_DISCONNECTED_PROFILE:
|
||||
if (msg.arg1 != BluetoothProfile.HEADSET) {
|
||||
synchronized (mDeviceStateLock) {
|
||||
mBtHelper.onBtProfileDisconnected(msg.arg1);
|
||||
mDeviceInventory.onBtProfileDisconnected(msg.arg1);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -279,7 +279,11 @@ public class BtHelper {
|
||||
}
|
||||
AudioService.sVolumeLogger.log(new AudioServiceEvents.VolumeEvent(
|
||||
AudioServiceEvents.VolumeEvent.VOL_SET_AVRCP_VOL, index));
|
||||
mA2dp.setAvrcpAbsoluteVolume(index);
|
||||
try {
|
||||
mA2dp.setAvrcpAbsoluteVolume(index);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Exception while changing abs volume", e);
|
||||
}
|
||||
}
|
||||
|
||||
/*package*/ synchronized @AudioSystem.AudioFormatNativeEnumForBtCodec int getA2dpCodec(
|
||||
@@ -287,7 +291,12 @@ public class BtHelper {
|
||||
if (mA2dp == null) {
|
||||
return AudioSystem.AUDIO_FORMAT_DEFAULT;
|
||||
}
|
||||
final BluetoothCodecStatus btCodecStatus = mA2dp.getCodecStatus(device);
|
||||
final BluetoothCodecStatus btCodecStatus = null;
|
||||
try {
|
||||
mA2dp.getCodecStatus(device);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Exception while getting status of " + device, e);
|
||||
}
|
||||
if (btCodecStatus == null) {
|
||||
return AudioSystem.AUDIO_FORMAT_DEFAULT;
|
||||
}
|
||||
@@ -421,7 +430,11 @@ public class BtHelper {
|
||||
}
|
||||
AudioService.sVolumeLogger.log(new AudioServiceEvents.VolumeEvent(
|
||||
AudioServiceEvents.VolumeEvent.VOL_SET_LE_AUDIO_VOL, index, maxIndex));
|
||||
mLeAudio.setVolume(volume);
|
||||
try {
|
||||
mLeAudio.setVolume(volume);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Exception while setting LE volume", e);
|
||||
}
|
||||
}
|
||||
|
||||
/*package*/ synchronized void setHearingAidVolume(int index, int streamType,
|
||||
@@ -447,7 +460,11 @@ public class BtHelper {
|
||||
AudioService.sVolumeLogger.log(new AudioServiceEvents.VolumeEvent(
|
||||
AudioServiceEvents.VolumeEvent.VOL_SET_HEARING_AID_VOL, index, gainDB));
|
||||
}
|
||||
mHearingAid.setVolume(gainDB);
|
||||
try {
|
||||
mHearingAid.setVolume(gainDB);
|
||||
} catch (Exception e) {
|
||||
Log.i(TAG, "Exception while setting hearing aid volume", e);
|
||||
}
|
||||
}
|
||||
|
||||
/*package*/ synchronized void onBroadcastScoConnectionState(int state) {
|
||||
@@ -487,6 +504,35 @@ public class BtHelper {
|
||||
mBluetoothHeadset = null;
|
||||
}
|
||||
|
||||
//@GuardedBy("AudioDeviceBroker.mDeviceStateLock")
|
||||
/*package*/ synchronized void onBtProfileDisconnected(int profile) {
|
||||
switch (profile) {
|
||||
case BluetoothProfile.A2DP:
|
||||
mA2dp = null;
|
||||
break;
|
||||
case BluetoothProfile.HEARING_AID:
|
||||
mHearingAid = null;
|
||||
break;
|
||||
case BluetoothProfile.LE_AUDIO:
|
||||
mLeAudio = null;
|
||||
break;
|
||||
|
||||
case BluetoothProfile.A2DP_SINK:
|
||||
case BluetoothProfile.LE_AUDIO_BROADCAST:
|
||||
// shouldn't be received here as profile doesn't involve BtHelper
|
||||
Log.e(TAG, "onBtProfileDisconnected: Not a profile handled by BtHelper "
|
||||
+ BluetoothProfile.getProfileName(profile));
|
||||
break;
|
||||
|
||||
default:
|
||||
// Not a valid profile to disconnect
|
||||
Log.e(TAG, "onBtProfileDisconnected: Not a valid profile to disconnect "
|
||||
+ BluetoothProfile.getProfileName(profile));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//@GuardedBy("AudioDeviceBroker.mDeviceStateLock")
|
||||
/*package*/ synchronized void onBtProfileConnected(int profile, BluetoothProfile proxy) {
|
||||
if (profile == BluetoothProfile.HEADSET) {
|
||||
onHeadsetProfileConnected((BluetoothHeadset) proxy);
|
||||
@@ -672,7 +718,6 @@ public class BtHelper {
|
||||
public void onServiceConnected(int profile, BluetoothProfile proxy) {
|
||||
switch(profile) {
|
||||
case BluetoothProfile.A2DP:
|
||||
case BluetoothProfile.A2DP_SINK:
|
||||
case BluetoothProfile.HEADSET:
|
||||
case BluetoothProfile.HEARING_AID:
|
||||
case BluetoothProfile.LE_AUDIO:
|
||||
@@ -682,6 +727,10 @@ public class BtHelper {
|
||||
mDeviceBroker.postBtProfileConnected(profile, proxy);
|
||||
break;
|
||||
|
||||
case BluetoothProfile.A2DP_SINK:
|
||||
// no A2DP sink functionality handled by BtHelper
|
||||
case BluetoothProfile.LE_AUDIO_BROADCAST:
|
||||
// no broadcast functionality handled by BtHelper
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -690,14 +739,19 @@ public class BtHelper {
|
||||
|
||||
switch (profile) {
|
||||
case BluetoothProfile.A2DP:
|
||||
case BluetoothProfile.A2DP_SINK:
|
||||
case BluetoothProfile.HEADSET:
|
||||
case BluetoothProfile.HEARING_AID:
|
||||
case BluetoothProfile.LE_AUDIO:
|
||||
case BluetoothProfile.LE_AUDIO_BROADCAST:
|
||||
AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent(
|
||||
"BT profile service: disconnecting "
|
||||
+ BluetoothProfile.getProfileName(profile) + " profile"));
|
||||
mDeviceBroker.postBtProfileDisconnected(profile);
|
||||
break;
|
||||
|
||||
case BluetoothProfile.A2DP_SINK:
|
||||
// no A2DP sink functionality handled by BtHelper
|
||||
case BluetoothProfile.LE_AUDIO_BROADCAST:
|
||||
// no broadcast functionality handled by BtHelper
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user