Loading core/java/android/bluetooth/BluetoothA2dp.java +4 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,10 @@ public final class BluetoothA2dp implements BluetoothProfile { } } /*package*/ void close() { mServiceListener = null; } /** * Initiate connection to a profile of the remote bluetooth device. * Loading core/java/android/bluetooth/BluetoothAdapter.java +22 −4 Original line number Diff line number Diff line Loading @@ -1180,11 +1180,29 @@ public final class BluetoothAdapter { * @param proxy Profile proxy object */ public void closeProfileProxy(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { if (proxy == null) return; switch (profile) { case BluetoothProfile.HEADSET: BluetoothHeadset headset = (BluetoothHeadset)proxy; if (headset != null) { headset.close(); } break; case BluetoothProfile.A2DP: BluetoothA2dp a2dp = (BluetoothA2dp)proxy; a2dp.close(); break; case BluetoothProfile.INPUT_DEVICE: BluetoothInputDevice iDev = (BluetoothInputDevice)proxy; iDev.close(); break; case BluetoothProfile.PAN: BluetoothPan pan = (BluetoothPan)proxy; pan.close(); break; case BluetoothProfile.HEALTH: BluetoothHealth health = (BluetoothHealth)proxy; health.close(); break; } } Loading core/java/android/bluetooth/BluetoothDeviceProfileState.java +25 −3 Original line number Diff line number Diff line Loading @@ -109,6 +109,8 @@ public final class BluetoothDeviceProfileState extends StateMachine { private BluetoothA2dpService mA2dpService; private BluetoothHeadset mHeadsetService; private BluetoothPbap mPbapService; private PbapServiceListener mPbap; private BluetoothAdapter mAdapter; private boolean mPbapServiceConnected; private boolean mAutoConnectionPending; private static final String BLUETOOTH_ADMIN_PERM = android.Manifest.permission.BLUETOOTH_ADMIN; Loading Loading @@ -249,11 +251,11 @@ public final class BluetoothDeviceProfileState extends StateMachine { mContext.registerReceiver(mBroadcastReceiver, filter); BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); adapter.getProfileProxy(mContext, mBluetoothProfileServiceListener, mAdapter = BluetoothAdapter.getDefaultAdapter(); mAdapter.getProfileProxy(mContext, mBluetoothProfileServiceListener, BluetoothProfile.HEADSET); // TODO(): Convert PBAP to the new Profile APIs. PbapServiceListener p = new PbapServiceListener(); mPbap = new PbapServiceListener(); mIncomingConnections = mService.getIncomingState(address); mIncomingRejectTimer = readTimerValue(); Loading Loading @@ -414,6 +416,26 @@ public final class BluetoothDeviceProfileState extends StateMachine { case TRANSITION_TO_STABLE: // ignore. break; case SM_QUIT_CMD: mContext.unregisterReceiver(mBroadcastReceiver); mBroadcastReceiver = null; mAdapter.closeProfileProxy(BluetoothProfile.HEADSET, mHeadsetService); mBluetoothProfileServiceListener = null; mOutgoingHandsfree = null; mPbap = null; mPbapService.close(); mPbapService = null; mIncomingHid = null; mOutgoingHid = null; mIncomingHandsfree = null; mOutgoingHandsfree = null; mIncomingA2dp = null; mOutgoingA2dp = null; mBondedDevice = null; // There is a problem in the State Machine code // where things are not cleaned up properly, when quit message // is handled so return NOT_HANDLED as a workaround. return NOT_HANDLED; default: return NOT_HANDLED; } Loading core/java/android/bluetooth/BluetoothHeadset.java +1 −0 Original line number Diff line number Diff line Loading @@ -245,6 +245,7 @@ public final class BluetoothHeadset implements BluetoothProfile { mContext.unbindService(mConnection); mConnection = null; } mServiceListener = null; } /** Loading core/java/android/bluetooth/BluetoothHealth.java +4 −0 Original line number Diff line number Diff line Loading @@ -452,6 +452,10 @@ public final class BluetoothHealth implements BluetoothProfile { } } /*package*/ void close() { mServiceListener = null; } private boolean isEnabled() { BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); Loading Loading
core/java/android/bluetooth/BluetoothA2dp.java +4 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,10 @@ public final class BluetoothA2dp implements BluetoothProfile { } } /*package*/ void close() { mServiceListener = null; } /** * Initiate connection to a profile of the remote bluetooth device. * Loading
core/java/android/bluetooth/BluetoothAdapter.java +22 −4 Original line number Diff line number Diff line Loading @@ -1180,11 +1180,29 @@ public final class BluetoothAdapter { * @param proxy Profile proxy object */ public void closeProfileProxy(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { if (proxy == null) return; switch (profile) { case BluetoothProfile.HEADSET: BluetoothHeadset headset = (BluetoothHeadset)proxy; if (headset != null) { headset.close(); } break; case BluetoothProfile.A2DP: BluetoothA2dp a2dp = (BluetoothA2dp)proxy; a2dp.close(); break; case BluetoothProfile.INPUT_DEVICE: BluetoothInputDevice iDev = (BluetoothInputDevice)proxy; iDev.close(); break; case BluetoothProfile.PAN: BluetoothPan pan = (BluetoothPan)proxy; pan.close(); break; case BluetoothProfile.HEALTH: BluetoothHealth health = (BluetoothHealth)proxy; health.close(); break; } } Loading
core/java/android/bluetooth/BluetoothDeviceProfileState.java +25 −3 Original line number Diff line number Diff line Loading @@ -109,6 +109,8 @@ public final class BluetoothDeviceProfileState extends StateMachine { private BluetoothA2dpService mA2dpService; private BluetoothHeadset mHeadsetService; private BluetoothPbap mPbapService; private PbapServiceListener mPbap; private BluetoothAdapter mAdapter; private boolean mPbapServiceConnected; private boolean mAutoConnectionPending; private static final String BLUETOOTH_ADMIN_PERM = android.Manifest.permission.BLUETOOTH_ADMIN; Loading Loading @@ -249,11 +251,11 @@ public final class BluetoothDeviceProfileState extends StateMachine { mContext.registerReceiver(mBroadcastReceiver, filter); BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); adapter.getProfileProxy(mContext, mBluetoothProfileServiceListener, mAdapter = BluetoothAdapter.getDefaultAdapter(); mAdapter.getProfileProxy(mContext, mBluetoothProfileServiceListener, BluetoothProfile.HEADSET); // TODO(): Convert PBAP to the new Profile APIs. PbapServiceListener p = new PbapServiceListener(); mPbap = new PbapServiceListener(); mIncomingConnections = mService.getIncomingState(address); mIncomingRejectTimer = readTimerValue(); Loading Loading @@ -414,6 +416,26 @@ public final class BluetoothDeviceProfileState extends StateMachine { case TRANSITION_TO_STABLE: // ignore. break; case SM_QUIT_CMD: mContext.unregisterReceiver(mBroadcastReceiver); mBroadcastReceiver = null; mAdapter.closeProfileProxy(BluetoothProfile.HEADSET, mHeadsetService); mBluetoothProfileServiceListener = null; mOutgoingHandsfree = null; mPbap = null; mPbapService.close(); mPbapService = null; mIncomingHid = null; mOutgoingHid = null; mIncomingHandsfree = null; mOutgoingHandsfree = null; mIncomingA2dp = null; mOutgoingA2dp = null; mBondedDevice = null; // There is a problem in the State Machine code // where things are not cleaned up properly, when quit message // is handled so return NOT_HANDLED as a workaround. return NOT_HANDLED; default: return NOT_HANDLED; } Loading
core/java/android/bluetooth/BluetoothHeadset.java +1 −0 Original line number Diff line number Diff line Loading @@ -245,6 +245,7 @@ public final class BluetoothHeadset implements BluetoothProfile { mContext.unbindService(mConnection); mConnection = null; } mServiceListener = null; } /** Loading
core/java/android/bluetooth/BluetoothHealth.java +4 −0 Original line number Diff line number Diff line Loading @@ -452,6 +452,10 @@ public final class BluetoothHealth implements BluetoothProfile { } } /*package*/ void close() { mServiceListener = null; } private boolean isEnabled() { BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); Loading