diff options
author | Eric Laurent <elaurent@google.com> | 2009-12-17 03:12:59 -0800 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2009-12-22 16:20:46 -0800 |
commit | eb14a783be073b5fd6e8c8c9bc87d2d1919f2c9e (patch) | |
tree | 7e288ac01c4a713d13e46c872b5dd682667dbe20 /media/java | |
parent | f0cdfa9955725c99cd4df6b933e4cb732847ebd1 (diff) | |
download | frameworks_base-eb14a783be073b5fd6e8c8c9bc87d2d1919f2c9e.zip frameworks_base-eb14a783be073b5fd6e8c8c9bc87d2d1919f2c9e.tar.gz frameworks_base-eb14a783be073b5fd6e8c8c9bc87d2d1919f2c9e.tar.bz2 |
Fix issues 2333450 and 2333559:
Add new config values to AudioSystem::FOR_DOCK force usage to differenciate car and desk docks.
Use a receiver for the sticky Intent.ACTION_DOCK_EVENT in AudioService to detect the type
of dock and select force usage accordingly.
Diffstat (limited to 'media/java')
-rw-r--r-- | media/java/android/media/AudioService.java | 23 | ||||
-rw-r--r-- | media/java/android/media/AudioSystem.java | 3 |
2 files changed, 22 insertions, 4 deletions
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index b41f3e2..4a1c2a5 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -112,7 +112,7 @@ public class AudioService extends IAudioService.Stub { private boolean mMediaServerOk; /** cached value of the BT dock address to recognize undocking events */ - private static String sBtDockAddress; + private static String sBtDockAddress = ""; private SoundPool mSoundPool; private Object mSoundEffectsLock = new Object(); @@ -231,6 +231,7 @@ public class AudioService extends IAudioService.Stub { // Forced device usage for communications private int mForcedUseForComm; + /////////////////////////////////////////////////////////////////////////// // Construction /////////////////////////////////////////////////////////////////////////// @@ -1414,9 +1415,25 @@ public class AudioService extends IAudioService.Stub { (state == BluetoothA2dp.STATE_CONNECTED || state == BluetoothA2dp.STATE_PLAYING)) { if (btDevice.isBluetoothDock()) { - Log.v(TAG, "Recognized docking to BT dock"); + Log.v(TAG, "Recognized connection to BT dock"); sBtDockAddress = address; - AudioSystem.setForceUse(AudioSystem.FOR_DOCK, AudioSystem.FORCE_BT_DOCK); + Intent i = context.registerReceiver(null, new IntentFilter(Intent.ACTION_DOCK_EVENT)); + if (i != null) { + int dockState = i.getIntExtra(Intent.EXTRA_DOCK_STATE, Intent.EXTRA_DOCK_STATE_UNDOCKED); + int config; + switch (dockState) { + case Intent.EXTRA_DOCK_STATE_DESK: + config = AudioSystem.FORCE_BT_DESK_DOCK; + break; + case Intent.EXTRA_DOCK_STATE_CAR: + config = AudioSystem.FORCE_BT_CAR_DOCK; + break; + case Intent.EXTRA_DOCK_STATE_UNDOCKED: + default: + config = AudioSystem.FORCE_NONE; + } + AudioSystem.setForceUse(AudioSystem.FOR_DOCK, config); + } } AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, AudioSystem.DEVICE_STATE_AVAILABLE, diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index 9e9b259..137b919 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -271,7 +271,8 @@ public class AudioSystem public static final int FORCE_BT_SCO = 3; public static final int FORCE_BT_A2DP = 4; public static final int FORCE_WIRED_ACCESSORY = 5; - public static final int FORCE_BT_DOCK = 6; + public static final int FORCE_BT_CAR_DOCK = 6; + public static final int FORCE_BT_DESK_DOCK = 7; public static final int FORCE_DEFAULT = FORCE_NONE; // usage for serForceUse |