summaryrefslogtreecommitdiffstats
path: root/core/java/android/bluetooth
diff options
context:
space:
mode:
authorJohn Du <johnldu@google.com>2013-07-19 11:30:34 -0700
committerJohn Du <johnldu@google.com>2013-08-16 12:25:20 -0700
commit5a0cf7a27f3953a1266af48543ccd9024f4cd89f (patch)
treeea7d275d83c0e1f6699a802330fbe696b03e4208 /core/java/android/bluetooth
parent0a94b9ce277ef2ec79902e3c576a50ab438dca97 (diff)
downloadframeworks_base-5a0cf7a27f3953a1266af48543ccd9024f4cd89f.zip
frameworks_base-5a0cf7a27f3953a1266af48543ccd9024f4cd89f.tar.gz
frameworks_base-5a0cf7a27f3953a1266af48543ccd9024f4cd89f.tar.bz2
Adding support for Absolute Volume
Change-Id: I7bbc6f9296221ca219a50a5e377ebac9dcf5a407
Diffstat (limited to 'core/java/android/bluetooth')
-rw-r--r--core/java/android/bluetooth/BluetoothA2dp.java60
-rw-r--r--core/java/android/bluetooth/IBluetoothA2dp.aidl3
2 files changed, 63 insertions, 0 deletions
diff --git a/core/java/android/bluetooth/BluetoothA2dp.java b/core/java/android/bluetooth/BluetoothA2dp.java
index d7d8cdb..e7e4a0f 100644
--- a/core/java/android/bluetooth/BluetoothA2dp.java
+++ b/core/java/android/bluetooth/BluetoothA2dp.java
@@ -388,6 +388,66 @@ public final class BluetoothA2dp implements BluetoothProfile {
}
/**
+ * Checks if Avrcp device supports the absolute volume feature.
+ *
+ * @return true if device supports absolute volume
+ * @hide
+ */
+ public boolean isAvrcpAbsoluteVolumeSupported() {
+ if (DBG) Log.d(TAG, "isAvrcpAbsoluteVolumeSupported");
+ if (mService != null && isEnabled()) {
+ try {
+ return mService.isAvrcpAbsoluteVolumeSupported();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error talking to BT service in isAvrcpAbsoluteVolumeSupported()", e);
+ return false;
+ }
+ }
+ if (mService == null) Log.w(TAG, "Proxy not attached to service");
+ return false;
+ }
+
+ /**
+ * Tells remote device to adjust volume. Only if absolute volume is supported.
+ *
+ * @param direction 1 to increase volume, or -1 to decrease volume
+ * @hide
+ */
+ public void adjustAvrcpAbsoluteVolume(int direction) {
+ if (DBG) Log.d(TAG, "adjustAvrcpAbsoluteVolume");
+ if (mService != null && isEnabled()) {
+ try {
+ mService.adjustAvrcpAbsoluteVolume(direction);
+ return;
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error talking to BT service in adjustAvrcpAbsoluteVolume()", e);
+ return;
+ }
+ }
+ if (mService == null) Log.w(TAG, "Proxy not attached to service");
+ }
+
+ /**
+ * Tells remote device to set an absolute volume. Only if absolute volume is supported
+ *
+ * @param volume Absolute volume to be set on AVRCP side
+ * @hide
+ */
+ public void setAvrcpAbsoluteVolume(int volume) {
+ if (DBG) Log.d(TAG, "setAvrcpAbsoluteVolume");
+ if (mService != null && isEnabled()) {
+ try {
+ mService.setAvrcpAbsoluteVolume(volume);
+ return;
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error talking to BT service in setAvrcpAbsoluteVolume()", e);
+ return;
+ }
+ }
+ if (mService == null) Log.w(TAG, "Proxy not attached to service");
+ }
+
+ /**
* Check if A2DP profile is streaming music.
*
* <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
diff --git a/core/java/android/bluetooth/IBluetoothA2dp.aidl b/core/java/android/bluetooth/IBluetoothA2dp.aidl
index 1f10998..26ff9e2 100644
--- a/core/java/android/bluetooth/IBluetoothA2dp.aidl
+++ b/core/java/android/bluetooth/IBluetoothA2dp.aidl
@@ -32,5 +32,8 @@ interface IBluetoothA2dp {
int getConnectionState(in BluetoothDevice device);
boolean setPriority(in BluetoothDevice device, int priority);
int getPriority(in BluetoothDevice device);
+ boolean isAvrcpAbsoluteVolumeSupported();
+ oneway void adjustAvrcpAbsoluteVolume(int direction);
+ oneway void setAvrcpAbsoluteVolume(int volume);
boolean isA2dpPlaying(in BluetoothDevice device);
}