diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-30 14:24:46 -0400 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-30 14:24:46 -0400 |
commit | e5661c40a62dc3556ece353b3b74fdde249c228e (patch) | |
tree | 6034a32184ed8e8fcac569eae63dea577ee86cca /core/java/android/server | |
parent | 170d9df0f3e3d7ad5652ccfe0d0bd53d74685d1d (diff) | |
parent | f9bbe1e71a502fe7bd1f4a23ba5bbe4dde0d9d57 (diff) | |
download | frameworks_base-e5661c40a62dc3556ece353b3b74fdde249c228e.zip frameworks_base-e5661c40a62dc3556ece353b3b74fdde249c228e.tar.gz frameworks_base-e5661c40a62dc3556ece353b3b74fdde249c228e.tar.bz2 |
Merge change I8366852f into eclair
* changes:
Bluetooth A2DP suspend/resume functionality
Diffstat (limited to 'core/java/android/server')
-rw-r--r-- | core/java/android/server/BluetoothA2dpService.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/core/java/android/server/BluetoothA2dpService.java b/core/java/android/server/BluetoothA2dpService.java index 0fc2e7e..4a5f431 100644 --- a/core/java/android/server/BluetoothA2dpService.java +++ b/core/java/android/server/BluetoothA2dpService.java @@ -325,6 +325,48 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { } } + public synchronized boolean suspendSink(BluetoothDevice device) { + mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, + "Need BLUETOOTH_ADMIN permission"); + if (DBG) log("suspendSink(" + device + ")"); + if (device == null || mAudioDevices == null) { + return false; + } + String path = mBluetoothService.getObjectPathFromAddress(device.getAddress()); + if (path == null) { + return false; + } + switch (mAudioDevices.get(device)) { + case BluetoothA2dp.STATE_CONNECTED: + return true; + case BluetoothA2dp.STATE_PLAYING: + return suspendSinkNative(path); + default: + return false; + } + } + + public synchronized boolean resumeSink(BluetoothDevice device) { + mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, + "Need BLUETOOTH_ADMIN permission"); + if (DBG) log("resumeSink(" + device + ")"); + if (device == null || mAudioDevices == null) { + return false; + } + String path = mBluetoothService.getObjectPathFromAddress(device.getAddress()); + if (path == null) { + return false; + } + switch (mAudioDevices.get(device)) { + case BluetoothA2dp.STATE_PLAYING: + return true; + case BluetoothA2dp.STATE_CONNECTED: + return resumeSinkNative(path); + default: + return false; + } + } + public synchronized BluetoothDevice[] getConnectedSinks() { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); Set<BluetoothDevice> sinks = lookupSinksMatchingStates( @@ -445,5 +487,7 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { private native void cleanupNative(); private synchronized native boolean connectSinkNative(String path); private synchronized native boolean disconnectSinkNative(String path); + private synchronized native boolean suspendSinkNative(String path); + private synchronized native boolean resumeSinkNative(String path); private synchronized native Object []getSinkPropertiesNative(String path); } |