Merge "AudioManager: permission annotations" into oc-mr1-dev

This commit is contained in:
Jean-Michel Trivi
2017-08-28 16:27:27 +00:00
committed by Android (Google) Code Review

View File

@@ -16,12 +16,12 @@
package android.media; package android.media;
import android.Manifest;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.annotation.RequiresPermission; import android.annotation.RequiresPermission;
import android.annotation.SdkConstant; import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SuppressLint;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.annotation.SystemService; import android.annotation.SystemService;
import android.app.NotificationManager; import android.app.NotificationManager;
@@ -2364,8 +2364,8 @@ public class AudioManager {
* usecases such as voice memo recording, or speech recognition. * usecases such as voice memo recording, or speech recognition.
* Use {@link #AUDIOFOCUS_GAIN} for a focus request of unknown duration such * Use {@link #AUDIOFOCUS_GAIN} for a focus request of unknown duration such
* as the playback of a song or a video. * as the playback of a song or a video.
* @param flags 0 or a combination of {link #AUDIOFOCUS_FLAG_DELAY_OK} * @param flags 0 or a combination of {link #AUDIOFOCUS_FLAG_DELAY_OK},
* and {@link #AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS}. * {@link #AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS} and {@link #AUDIOFOCUS_FLAG_LOCK}.
* <br>Use 0 when not using any flags for the request, which behaves like * <br>Use 0 when not using any flags for the request, which behaves like
* {@link #requestAudioFocus(OnAudioFocusChangeListener, int, int)}, where either audio * {@link #requestAudioFocus(OnAudioFocusChangeListener, int, int)}, where either audio
* focus is granted immediately, or the grant request fails because the system is in a * focus is granted immediately, or the grant request fails because the system is in a
@@ -2377,6 +2377,7 @@ public class AudioManager {
* @throws IllegalArgumentException * @throws IllegalArgumentException
*/ */
@SystemApi @SystemApi
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public int requestAudioFocus(OnAudioFocusChangeListener l, public int requestAudioFocus(OnAudioFocusChangeListener l,
@NonNull AudioAttributes requestAttributes, @NonNull AudioAttributes requestAttributes,
int durationHint, int durationHint,
@@ -2416,6 +2417,10 @@ public class AudioManager {
* @deprecated use {@link #requestAudioFocus(AudioFocusRequest, AudioPolicy)} * @deprecated use {@link #requestAudioFocus(AudioFocusRequest, AudioPolicy)}
*/ */
@SystemApi @SystemApi
@RequiresPermission(anyOf= {
android.Manifest.permission.MODIFY_PHONE_STATE,
android.Manifest.permission.MODIFY_AUDIO_ROUTING
})
public int requestAudioFocus(OnAudioFocusChangeListener l, public int requestAudioFocus(OnAudioFocusChangeListener l,
@NonNull AudioAttributes requestAttributes, @NonNull AudioAttributes requestAttributes,
int durationHint, int durationHint,
@@ -2474,6 +2479,7 @@ public class AudioManager {
* @throws IllegalArgumentException when trying to lock focus without an AudioPolicy * @throws IllegalArgumentException when trying to lock focus without an AudioPolicy
*/ */
@SystemApi @SystemApi
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
public int requestAudioFocus(@NonNull AudioFocusRequest afr, @Nullable AudioPolicy ap) { public int requestAudioFocus(@NonNull AudioFocusRequest afr, @Nullable AudioPolicy ap) {
if (afr == null) { if (afr == null) {
throw new NullPointerException("Illegal null AudioFocusRequest"); throw new NullPointerException("Illegal null AudioFocusRequest");
@@ -2571,6 +2577,7 @@ public class AudioManager {
* @throws NullPointerException if the {@link AudioFocusInfo} or {@link AudioPolicy} are null. * @throws NullPointerException if the {@link AudioFocusInfo} or {@link AudioPolicy} are null.
*/ */
@SystemApi @SystemApi
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
public int dispatchAudioFocusChange(@NonNull AudioFocusInfo afi, int focusChange, public int dispatchAudioFocusChange(@NonNull AudioFocusInfo afi, int focusChange,
@NonNull AudioPolicy ap) { @NonNull AudioPolicy ap) {
if (afi == null) { if (afi == null) {
@@ -2622,6 +2629,8 @@ public class AudioManager {
* @deprecated use {@link #abandonAudioFocusRequest(AudioFocusRequest)} * @deprecated use {@link #abandonAudioFocusRequest(AudioFocusRequest)}
*/ */
@SystemApi @SystemApi
@SuppressLint("Doclava125") // no permission enforcement, but only "undoes" what would have been
// done by a matching requestAudioFocus
public int abandonAudioFocus(OnAudioFocusChangeListener l, AudioAttributes aa) { public int abandonAudioFocus(OnAudioFocusChangeListener l, AudioAttributes aa) {
int status = AUDIOFOCUS_REQUEST_FAILED; int status = AUDIOFOCUS_REQUEST_FAILED;
unregisterAudioFocusRequest(l); unregisterAudioFocusRequest(l);
@@ -3833,6 +3842,7 @@ public class AudioManager {
* @hide * @hide
*/ */
@SystemApi @SystemApi
@SuppressLint("Doclava125") // FIXME is this still used?
public boolean isHdmiSystemAudioSupported() { public boolean isHdmiSystemAudioSupported() {
try { try {
return getService().isHdmiSystemAudioSupported(); return getService().isHdmiSystemAudioSupported();