summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author William Escande <wescande@google.com> 2022-01-05 14:41:52 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2022-01-05 14:41:52 +0000
commitf3a2e55ff746c1620e11ce60743d5191f96b3206 (patch)
treeff32806e934966a8ca450536966af2836b5074b7
parent0a9079431b2c636e305d7397365c04fa15e10717 (diff)
parente178f8f635815f8d0ee68fe07289e4f9f02f7f82 (diff)
Merge "Add `SystemApi` tag on getLastAudibleStreamVolume"
-rw-r--r--core/api/system-current.txt1
-rw-r--r--media/java/android/media/AudioManager.java3
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java8
3 files changed, 11 insertions, 1 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 069cc5e6580d..9bca7fcba028 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -5252,6 +5252,7 @@ package android.media {
method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups();
method @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, "android.permission.QUERY_AUDIO_STATE"}) public int getDeviceVolumeBehavior(@NonNull android.media.AudioDeviceAttributes);
method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, "android.permission.QUERY_AUDIO_STATE"}) public java.util.List<android.media.AudioDeviceAttributes> getDevicesForAttributes(@NonNull android.media.AudioAttributes);
+ method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public int getLastAudibleStreamVolume(int);
method @IntRange(from=0) public long getMaxAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMaxVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMinVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 982cf07da358..b7e8c8cb0a7e 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -1172,7 +1172,8 @@ public class AudioManager {
*
* @hide
*/
- @UnsupportedAppUsage
+ @SystemApi
+ @RequiresPermission("android.permission.QUERY_AUDIO_STATE")
public int getLastAudibleStreamVolume(int streamType) {
final IAudioService service = getService();
try {
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index df5d60c3a74d..e00c8a39074a 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -3193,6 +3193,13 @@ public class AudioService extends IAudioService.Stub
}
}
+ private void enforceQueryStatePermission() {
+ if (mContext.checkCallingOrSelfPermission(Manifest.permission.QUERY_AUDIO_STATE)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("Missing QUERY_AUDIO_STATE permissions");
+ }
+ }
+
private void enforceQueryStateOrModifyRoutingPermission() {
if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
!= PackageManager.PERMISSION_GRANTED
@@ -4094,6 +4101,7 @@ public class AudioService extends IAudioService.Stub
/** Get last audible volume before stream was muted. */
public int getLastAudibleStreamVolume(int streamType) {
+ enforceQueryStatePermission();
ensureValidStreamType(streamType);
int device = getDeviceForStream(streamType);
return (mStreamStates[streamType].getIndex(device) + 5) / 10;