From e312b160f4b3c3032109a4b4262f4857d8e56033 Mon Sep 17 00:00:00 2001 From: wescande Date: Tue, 19 Oct 2021 14:17:50 +0200 Subject: [PATCH] AbsoluteVolume change custom call to official API BT mainline effort to remove hidden api: `avrcpSupportsAbsoluteVolume` only inform for a new volume behavior and AudioManager already provide such method. Bug: 190422401 Tag: #refactor Test: Manual: Start bluetooth, play music and change volume from speaker/phone Change-Id: I935df5e0f5632cd4144343bdb1bc2b9d7bc61c01 --- media/java/android/media/AudioManager.java | 15 --------------- media/java/android/media/IAudioService.aidl | 2 -- .../com/android/server/audio/AudioService.java | 7 ++++++- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index c068963adc923..ed8cdb941792f 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -5203,21 +5203,6 @@ public class AudioManager { } } - /** - * @hide - * Notifies AudioService that it is connected to an A2DP device that supports absolute volume, - * so that AudioService can send volume change events to the A2DP device, rather than handling - * them. - */ - public void avrcpSupportsAbsoluteVolume(String address, boolean support) { - final IAudioService service = getService(); - try { - service.avrcpSupportsAbsoluteVolume(address, support); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - /** * {@hide} */ diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index 71912800e0d78..dd44fdf1e8c40 100755 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -171,8 +171,6 @@ interface IAudioService { int getEncodedSurroundMode(int targetSdkVersion); - oneway void avrcpSupportsAbsoluteVolume(String address, boolean support); - void setSpeakerphoneOn(IBinder cb, boolean on); boolean isSpeakerphoneOn(); diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 8e1b06b8ca093..d75f21c4ef85f 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -6136,6 +6136,11 @@ public class AudioService extends IAudioService.Stub if (pkgName == null) { pkgName = ""; } + if (device.getType() == AudioDeviceInfo.TYPE_BLUETOOTH_A2DP) { + avrcpSupportsAbsoluteVolume(device.getAddress(), + deviceVolumeBehavior == AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE); + return; + } int audioSystemDeviceOut = AudioDeviceInfo.convertDeviceTypeToInternalDevice( device.getType()); @@ -7792,7 +7797,7 @@ public class AudioService extends IAudioService.Stub } } - public void avrcpSupportsAbsoluteVolume(String address, boolean support) { + private void avrcpSupportsAbsoluteVolume(String address, boolean support) { // address is not used for now, but may be used when multiple a2dp devices are supported sVolumeLogger.log(new AudioEventLogger.StringEvent("avrcpSupportsAbsoluteVolume addr=" + address + " support=" + support));