summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSreenidhi T <nidhit@broadcom.com>2012-05-08 03:19:54 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-07-16 22:05:10 -0700
commitce4edb8ed132976651b32b337f3d90e1a170afa9 (patch)
tree0d1d9b5a6c9928772d71d757655751cd96bf465f /src
parent405b6148a168c05f9c9eac6a80db68b9a58392e2 (diff)
downloadandroid_packages_apps_Bluetooth-ce4edb8ed132976651b32b337f3d90e1a170afa9.tar.gz
android_packages_apps_Bluetooth-ce4edb8ed132976651b32b337f3d90e1a170afa9.tar.bz2
android_packages_apps_Bluetooth-ce4edb8ed132976651b32b337f3d90e1a170afa9.zip
Changes done for disconnecting sco connection based on disconnectAudioNative() return status, instead of waiting till BTA_AG_AUDIO_CLOSE_EVT is received. The delay in disconnecting sco was causing audio to be routed to earpiece instead of speaker, when selected from incall screen.
Change-Id: I307c3e9c114676649750cb64f1043fc7fe79d71b
Diffstat (limited to 'src')
-rwxr-xr-xsrc/com/android/bluetooth/hfp/HeadsetStateMachine.java17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
index 5eb97530f..94452fa2e 100755
--- a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
+++ b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
@@ -769,7 +769,12 @@ final class HeadsetStateMachine extends StateMachine {
}
// fall through
case DISCONNECT_AUDIO:
- disconnectAudioNative(getByteAddress(mCurrentDevice));
+ if (disconnectAudioNative(getByteAddress(mCurrentDevice))) {
+ mAudioState = BluetoothHeadset.STATE_AUDIO_DISCONNECTED;
+ mAudioManager.setBluetoothScoOn(false);
+ broadcastAudioState(mCurrentDevice, BluetoothHeadset.STATE_AUDIO_DISCONNECTED,
+ BluetoothHeadset.STATE_AUDIO_CONNECTED);
+ }
break;
case VOICE_RECOGNITION_START:
processLocalVrEvent(HeadsetHalConstants.VR_STATE_STARTED);
@@ -904,10 +909,12 @@ final class HeadsetStateMachine extends StateMachine {
switch (state) {
case HeadsetHalConstants.AUDIO_STATE_DISCONNECTED:
- mAudioState = BluetoothHeadset.STATE_AUDIO_DISCONNECTED;
- mAudioManager.setBluetoothScoOn(false);
- broadcastAudioState(device, BluetoothHeadset.STATE_AUDIO_DISCONNECTED,
- BluetoothHeadset.STATE_AUDIO_CONNECTED);
+ if (mAudioState != BluetoothHeadset.STATE_AUDIO_DISCONNECTED) {
+ mAudioState = BluetoothHeadset.STATE_AUDIO_DISCONNECTED;
+ mAudioManager.setBluetoothScoOn(false);
+ broadcastAudioState(device, BluetoothHeadset.STATE_AUDIO_DISCONNECTED,
+ BluetoothHeadset.STATE_AUDIO_CONNECTED);
+ }
transitionTo(mConnected);
break;
case HeadsetHalConstants.AUDIO_STATE_DISCONNECTING: