Merge "Update mGlobalBluetoothA2dpOn when active device changed" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
babf190396
@@ -3299,6 +3299,9 @@ public class AudioService extends IAudioService.Stub
|
|||||||
.append(Binder.getCallingPid()).toString();
|
.append(Binder.getCallingPid()).toString();
|
||||||
|
|
||||||
synchronized (mBluetoothA2dpEnabledLock) {
|
synchronized (mBluetoothA2dpEnabledLock) {
|
||||||
|
if (mBluetoothA2dpEnabled == on) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
mBluetoothA2dpEnabled = on;
|
mBluetoothA2dpEnabled = on;
|
||||||
sendMsg(mAudioHandler, MSG_SET_FORCE_BT_A2DP_USE, SENDMSG_QUEUE,
|
sendMsg(mAudioHandler, MSG_SET_FORCE_BT_A2DP_USE, SENDMSG_QUEUE,
|
||||||
AudioSystem.FOR_MEDIA,
|
AudioSystem.FOR_MEDIA,
|
||||||
|
|||||||
@@ -95,9 +95,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
|||||||
|
|
||||||
// State guarded by mLock.
|
// State guarded by mLock.
|
||||||
private final Object mLock = new Object();
|
private final Object mLock = new Object();
|
||||||
private final SparseArray<UserRecord> mUserRecords = new SparseArray<UserRecord>();
|
private final SparseArray<UserRecord> mUserRecords = new SparseArray<>();
|
||||||
private final ArrayMap<IBinder, ClientRecord> mAllClientRecords =
|
private final ArrayMap<IBinder, ClientRecord> mAllClientRecords = new ArrayMap<>();
|
||||||
new ArrayMap<IBinder, ClientRecord>();
|
|
||||||
private int mCurrentUserId = -1;
|
private int mCurrentUserId = -1;
|
||||||
private final IAudioService mAudioService;
|
private final IAudioService mAudioService;
|
||||||
private final AudioPlayerStateMonitor mAudioPlayerStateMonitor;
|
private final AudioPlayerStateMonitor mAudioPlayerStateMonitor;
|
||||||
@@ -106,7 +105,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
|||||||
private final IntArray mActivePlayerUidMinPriorityQueue = new IntArray();
|
private final IntArray mActivePlayerUidMinPriorityQueue = new IntArray();
|
||||||
|
|
||||||
private final BroadcastReceiver mReceiver = new MediaRouterServiceBroadcastReceiver();
|
private final BroadcastReceiver mReceiver = new MediaRouterServiceBroadcastReceiver();
|
||||||
BluetoothDevice mBluetoothDevice;
|
BluetoothDevice mActiveBluetoothDevice;
|
||||||
int mAudioRouteMainType = AudioRoutesInfo.MAIN_SPEAKER;
|
int mAudioRouteMainType = AudioRoutesInfo.MAIN_SPEAKER;
|
||||||
boolean mGlobalBluetoothA2dpOn = false;
|
boolean mGlobalBluetoothA2dpOn = false;
|
||||||
|
|
||||||
@@ -180,7 +179,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
|||||||
| AudioRoutesInfo.MAIN_HEADPHONES
|
| AudioRoutesInfo.MAIN_HEADPHONES
|
||||||
| AudioRoutesInfo.MAIN_USB)) == 0) {
|
| AudioRoutesInfo.MAIN_USB)) == 0) {
|
||||||
// headset was plugged out.
|
// headset was plugged out.
|
||||||
mGlobalBluetoothA2dpOn = mBluetoothDevice != null;
|
mGlobalBluetoothA2dpOn = (newRoutes.bluetoothName != null
|
||||||
|
|| mActiveBluetoothDevice != null);
|
||||||
} else {
|
} else {
|
||||||
// headset was plugged in.
|
// headset was plugged in.
|
||||||
mGlobalBluetoothA2dpOn = false;
|
mGlobalBluetoothA2dpOn = false;
|
||||||
@@ -197,7 +197,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
|||||||
Slog.w(TAG, "RemoteException in the audio service.");
|
Slog.w(TAG, "RemoteException in the audio service.");
|
||||||
}
|
}
|
||||||
|
|
||||||
IntentFilter intentFilter = new IntentFilter(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED);
|
IntentFilter intentFilter = new IntentFilter(BluetoothA2dp.ACTION_ACTIVE_DEVICE_CHANGED);
|
||||||
context.registerReceiverAsUser(mReceiver, UserHandle.ALL, intentFilter, null, null);
|
context.registerReceiverAsUser(mReceiver, UserHandle.ALL, intentFilter, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -406,12 +406,14 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
|||||||
|
|
||||||
void restoreBluetoothA2dp() {
|
void restoreBluetoothA2dp() {
|
||||||
try {
|
try {
|
||||||
boolean a2dpOn = false;
|
boolean a2dpOn;
|
||||||
|
BluetoothDevice btDevice;
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
a2dpOn = mGlobalBluetoothA2dpOn;
|
a2dpOn = mGlobalBluetoothA2dpOn;
|
||||||
|
btDevice = mActiveBluetoothDevice;
|
||||||
}
|
}
|
||||||
// We don't need to change a2dp status when bluetooth is not connected.
|
// We don't need to change a2dp status when bluetooth is not connected.
|
||||||
if (mBluetoothDevice != null) {
|
if (btDevice != null) {
|
||||||
Slog.v(TAG, "restoreBluetoothA2dp(" + a2dpOn + ")");
|
Slog.v(TAG, "restoreBluetoothA2dp(" + a2dpOn + ")");
|
||||||
mAudioService.setBluetoothA2dpOn(a2dpOn);
|
mAudioService.setBluetoothA2dpOn(a2dpOn);
|
||||||
}
|
}
|
||||||
@@ -653,17 +655,11 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
|||||||
final class MediaRouterServiceBroadcastReceiver extends BroadcastReceiver {
|
final class MediaRouterServiceBroadcastReceiver extends BroadcastReceiver {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
if (intent.getAction().equals(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED)) {
|
if (intent.getAction().equals(BluetoothA2dp.ACTION_ACTIVE_DEVICE_CHANGED)) {
|
||||||
int state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE,
|
BluetoothDevice btDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||||
BluetoothProfile.STATE_DISCONNECTED);
|
synchronized (mLock) {
|
||||||
if (state == BluetoothProfile.STATE_DISCONNECTED) {
|
mActiveBluetoothDevice = btDevice;
|
||||||
mGlobalBluetoothA2dpOn = false;
|
mGlobalBluetoothA2dpOn = btDevice != null;
|
||||||
mBluetoothDevice = null;
|
|
||||||
} else if (state == BluetoothProfile.STATE_CONNECTED) {
|
|
||||||
mGlobalBluetoothA2dpOn = true;
|
|
||||||
mBluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
|
||||||
// To ensure that BT A2DP is on, call restoreBluetoothA2dp().
|
|
||||||
restoreBluetoothA2dp();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user