Merge "AudioService: device vol behavior can use additional permission"
This commit is contained in:
committed by
Android (Google) Code Review
commit
aadefe0a6a
@@ -6686,7 +6686,7 @@ package android.media {
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups();
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION) public android.media.AudioRecord getCallDownlinkExtractionAudioRecord(@NonNull android.media.AudioFormat);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION) public android.media.AudioTrack getCallUplinkInjectionAudioTrack(@NonNull android.media.AudioFormat);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, "android.permission.QUERY_AUDIO_STATE"}) public int getDeviceVolumeBehavior(@NonNull android.media.AudioDeviceAttributes);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, "android.permission.QUERY_AUDIO_STATE", android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS}) 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) @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public int getLastAudibleVolumeGroupVolume(int);
|
||||
@@ -6729,7 +6729,7 @@ package android.media {
|
||||
method public void setAudioServerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioServerStateCallback);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setBluetoothVariableLatencyEnabled(boolean);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setDeviceAsNonDefaultForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDeviceAttributes);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setDeviceVolumeBehavior(@NonNull android.media.AudioDeviceAttributes, int);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS}) public void setDeviceVolumeBehavior(@NonNull android.media.AudioDeviceAttributes, int);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForCapturePreset(int, @NonNull android.media.AudioDeviceAttributes);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDeviceAttributes);
|
||||
|
||||
@@ -1706,7 +1706,7 @@ package android.media {
|
||||
method @NonNull public java.util.Map<java.lang.Integer,java.lang.Boolean> getSurroundFormats();
|
||||
method public boolean hasRegisteredDynamicPolicy();
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS) public boolean isCsdEnabled();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, android.Manifest.permission.QUERY_AUDIO_STATE}) public boolean isFullVolumeDevice();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, android.Manifest.permission.QUERY_AUDIO_STATE, android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS}) public boolean isFullVolumeDevice();
|
||||
method @RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION) public boolean isPstnCallAudioInterceptable();
|
||||
method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public int requestAudioFocusForTest(@NonNull android.media.AudioFocusRequest, @NonNull String, int, int);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS) public void setCsd(float);
|
||||
|
||||
@@ -20,6 +20,7 @@ import static android.companion.virtual.VirtualDeviceManager.DEVICE_ID_DEFAULT;
|
||||
import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_DEFAULT;
|
||||
import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_AUDIO;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.CallbackExecutor;
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.IntRange;
|
||||
@@ -407,7 +408,7 @@ public class AudioManager {
|
||||
public static final int STREAM_ACCESSIBILITY = AudioSystem.STREAM_ACCESSIBILITY;
|
||||
/** @hide Used to identify the volume of audio streams for virtual assistant */
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public static final int STREAM_ASSISTANT = AudioSystem.STREAM_ASSISTANT;
|
||||
|
||||
/** Number of audio streams */
|
||||
@@ -1038,7 +1039,7 @@ public class AudioManager {
|
||||
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setMasterMute(boolean mute, int flags) {
|
||||
final IAudioService service = getService();
|
||||
try {
|
||||
@@ -1346,7 +1347,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setVolumeIndexForAttributes(@NonNull AudioAttributes attr, int index, int flags) {
|
||||
Preconditions.checkNotNull(attr, "attr must not be null");
|
||||
final IAudioService service = getService();
|
||||
@@ -1366,7 +1367,7 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@IntRange(from = 0)
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public int getVolumeIndexForAttributes(@NonNull AudioAttributes attr) {
|
||||
Preconditions.checkNotNull(attr, "attr must not be null");
|
||||
final IAudioService service = getService();
|
||||
@@ -1384,7 +1385,7 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@IntRange(from = 0)
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public int getMaxVolumeIndexForAttributes(@NonNull AudioAttributes attr) {
|
||||
Preconditions.checkNotNull(attr, "attr must not be null");
|
||||
final IAudioService service = getService();
|
||||
@@ -1402,7 +1403,7 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@IntRange(from = 0)
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public int getMinVolumeIndexForAttributes(@NonNull AudioAttributes attr) {
|
||||
Preconditions.checkNotNull(attr, "attr must not be null");
|
||||
final IAudioService service = getService();
|
||||
@@ -1593,7 +1594,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setSupportedSystemUsages(@NonNull @AttributeSystemUsage int[] systemUsages) {
|
||||
Objects.requireNonNull(systemUsages, "systemUsages must not be null");
|
||||
final IAudioService service = getService();
|
||||
@@ -1610,7 +1611,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public @NonNull @AttributeSystemUsage int[] getSupportedSystemUsages() {
|
||||
final IAudioService service = getService();
|
||||
try {
|
||||
@@ -1719,7 +1720,7 @@ public class AudioManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
|
||||
@UnsupportedAppUsage
|
||||
public void forceVolumeControlStream(int streamType) {
|
||||
final IAudioService service = getService();
|
||||
@@ -1916,7 +1917,7 @@ public class AudioManager {
|
||||
* @return true if the operation was successful, false otherwise
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean setPreferredDeviceForStrategy(@NonNull AudioProductStrategy strategy,
|
||||
@NonNull AudioDeviceAttributes device) {
|
||||
return setPreferredDevicesForStrategy(strategy, Arrays.asList(device));
|
||||
@@ -1932,7 +1933,7 @@ public class AudioManager {
|
||||
* device set for example)
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean removePreferredDeviceForStrategy(@NonNull AudioProductStrategy strategy) {
|
||||
Objects.requireNonNull(strategy);
|
||||
try {
|
||||
@@ -1955,7 +1956,7 @@ public class AudioManager {
|
||||
* ever set or if the strategy is invalid
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@Nullable
|
||||
public AudioDeviceAttributes getPreferredDeviceForStrategy(
|
||||
@NonNull AudioProductStrategy strategy) {
|
||||
@@ -1977,7 +1978,7 @@ public class AudioManager {
|
||||
* @return true if the operation was successful, false otherwise
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean setPreferredDevicesForStrategy(@NonNull AudioProductStrategy strategy,
|
||||
@NonNull List<AudioDeviceAttributes> devices) {
|
||||
Objects.requireNonNull(strategy);
|
||||
@@ -2007,7 +2008,7 @@ public class AudioManager {
|
||||
* @return list of the preferred devices for that strategy
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@NonNull
|
||||
public List<AudioDeviceAttributes> getPreferredDevicesForStrategy(
|
||||
@NonNull AudioProductStrategy strategy) {
|
||||
@@ -2031,7 +2032,7 @@ public class AudioManager {
|
||||
* @return true if the operation was successful, false otherwise
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean setDeviceAsNonDefaultForStrategy(@NonNull AudioProductStrategy strategy,
|
||||
@NonNull AudioDeviceAttributes device) {
|
||||
Objects.requireNonNull(strategy);
|
||||
@@ -2055,7 +2056,7 @@ public class AudioManager {
|
||||
* device set for example)
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean removeDeviceAsNonDefaultForStrategy(@NonNull AudioProductStrategy strategy,
|
||||
@NonNull AudioDeviceAttributes device) {
|
||||
Objects.requireNonNull(strategy);
|
||||
@@ -2077,7 +2078,7 @@ public class AudioManager {
|
||||
* @return list of non-default devices for the strategy
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@NonNull
|
||||
public List<AudioDeviceAttributes> getNonDefaultDevicesForStrategy(
|
||||
@NonNull AudioProductStrategy strategy) {
|
||||
@@ -2160,7 +2161,7 @@ public class AudioManager {
|
||||
* Executor, AudioManager.OnPreferredDevicesForStrategyChangedListener)} instead
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@Deprecated
|
||||
public void addOnPreferredDeviceForStrategyChangedListener(
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@@ -2177,7 +2178,7 @@ public class AudioManager {
|
||||
* AudioManager.OnPreferredDevicesForStrategyChangedListener)} instead
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@Deprecated
|
||||
public void removeOnPreferredDeviceForStrategyChangedListener(
|
||||
@NonNull OnPreferredDeviceForStrategyChangedListener listener) {
|
||||
@@ -2192,7 +2193,7 @@ public class AudioManager {
|
||||
* @throws SecurityException if the caller doesn't hold the required permission
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void addOnPreferredDevicesForStrategyChangedListener(
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull OnPreferredDevicesForStrategyChangedListener listener)
|
||||
@@ -2210,7 +2211,7 @@ public class AudioManager {
|
||||
* @param listener
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void removeOnPreferredDevicesForStrategyChangedListener(
|
||||
@NonNull OnPreferredDevicesForStrategyChangedListener listener) {
|
||||
Objects.requireNonNull(listener);
|
||||
@@ -2256,7 +2257,7 @@ public class AudioManager {
|
||||
* @throws SecurityException if the caller doesn't hold the required permission
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void addOnNonDefaultDevicesForStrategyChangedListener(
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull OnNonDefaultDevicesForStrategyChangedListener listener)
|
||||
@@ -2276,7 +2277,7 @@ public class AudioManager {
|
||||
* @param listener
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void removeOnNonDefaultDevicesForStrategyChangedListener(
|
||||
@NonNull OnNonDefaultDevicesForStrategyChangedListener listener) {
|
||||
Objects.requireNonNull(listener);
|
||||
@@ -2370,7 +2371,7 @@ public class AudioManager {
|
||||
* @return true if the operation was successful, false otherwise
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean setPreferredDeviceForCapturePreset(@MediaRecorder.SystemSource int capturePreset,
|
||||
@NonNull AudioDeviceAttributes device) {
|
||||
return setPreferredDevicesForCapturePreset(capturePreset, Arrays.asList(device));
|
||||
@@ -2384,7 +2385,7 @@ public class AudioManager {
|
||||
* device set for example)
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean clearPreferredDevicesForCapturePreset(
|
||||
@MediaRecorder.SystemSource int capturePreset) {
|
||||
if (!MediaRecorder.isValidAudioSource(capturePreset)) {
|
||||
@@ -2407,7 +2408,7 @@ public class AudioManager {
|
||||
*/
|
||||
@NonNull
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public List<AudioDeviceAttributes> getPreferredDevicesForCapturePreset(
|
||||
@MediaRecorder.SystemSource int capturePreset) {
|
||||
if (!MediaRecorder.isValidAudioSource(capturePreset)) {
|
||||
@@ -2479,7 +2480,7 @@ public class AudioManager {
|
||||
* @throws SecurityException if the caller doesn't hold the required permission
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void addOnPreferredDevicesForCapturePresetChangedListener(
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull OnPreferredDevicesForCapturePresetChangedListener listener)
|
||||
@@ -2505,7 +2506,7 @@ public class AudioManager {
|
||||
* @param listener
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void removeOnPreferredDevicesForCapturePresetChangedListener(
|
||||
@NonNull OnPreferredDevicesForCapturePresetChangedListener listener) {
|
||||
Objects.requireNonNull(listener);
|
||||
@@ -2949,7 +2950,7 @@ public class AudioManager {
|
||||
/**
|
||||
* Start bluetooth SCO audio connection.
|
||||
* <p>Requires Permission:
|
||||
* {@link android.Manifest.permission#MODIFY_AUDIO_SETTINGS}.
|
||||
* {@link Manifest.permission#MODIFY_AUDIO_SETTINGS}.
|
||||
* <p>This method can be used by applications wanting to send and received audio
|
||||
* to/from a bluetooth SCO headset while the phone is not in call.
|
||||
* <p>As the SCO connection establishment can take several seconds,
|
||||
@@ -3006,7 +3007,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
* Start bluetooth SCO audio connection in virtual call mode.
|
||||
* <p>Requires Permission:
|
||||
* {@link android.Manifest.permission#MODIFY_AUDIO_SETTINGS}.
|
||||
* {@link Manifest.permission#MODIFY_AUDIO_SETTINGS}.
|
||||
* <p>Similar to {@link #startBluetoothSco()} with explicit selection of virtual call mode.
|
||||
* Telephony and communication applications (VoIP, Video Chat) should preferably select
|
||||
* virtual call mode.
|
||||
@@ -3030,7 +3031,7 @@ public class AudioManager {
|
||||
/**
|
||||
* Stop bluetooth SCO audio connection.
|
||||
* <p>Requires Permission:
|
||||
* {@link android.Manifest.permission#MODIFY_AUDIO_SETTINGS}.
|
||||
* {@link Manifest.permission#MODIFY_AUDIO_SETTINGS}.
|
||||
* <p>This method must be called by applications having requested the use of
|
||||
* bluetooth SCO audio with {@link #startBluetoothSco()} when finished with the SCO
|
||||
* connection or if connection fails.
|
||||
@@ -3618,7 +3619,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
@RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK)
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_STACK)
|
||||
public void setHfpEnabled(boolean enable) {
|
||||
AudioSystem.setParameters("hfp_enable=" + enable);
|
||||
}
|
||||
@@ -3627,7 +3628,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
@RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK)
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_STACK)
|
||||
public void setHfpVolume(int volume) {
|
||||
AudioSystem.setParameters("hfp_volume=" + volume);
|
||||
}
|
||||
@@ -3636,7 +3637,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
@RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK)
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_STACK)
|
||||
public void setHfpSamplingRate(int rate) {
|
||||
AudioSystem.setParameters("hfp_set_sampling_rate=" + rate);
|
||||
}
|
||||
@@ -3645,7 +3646,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
@RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK)
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_STACK)
|
||||
public void setBluetoothHeadsetProperties(@NonNull String name, boolean hasNrecEnabled,
|
||||
boolean hasWbsEnabled) {
|
||||
AudioSystem.setParameters("bt_headset_name=" + name
|
||||
@@ -3657,7 +3658,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
@RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK)
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_STACK)
|
||||
public void setA2dpSuspended(boolean enable) {
|
||||
AudioSystem.setParameters("A2dpSuspended=" + enable);
|
||||
}
|
||||
@@ -3670,7 +3671,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
@RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK)
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_STACK)
|
||||
public void setLeAudioSuspended(boolean enable) {
|
||||
AudioSystem.setParameters("LeAudioSuspended=" + enable);
|
||||
}
|
||||
@@ -4480,7 +4481,7 @@ public class AudioManager {
|
||||
* @throws IllegalArgumentException
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
|
||||
public int requestAudioFocus(OnAudioFocusChangeListener l,
|
||||
@NonNull AudioAttributes requestAttributes,
|
||||
int durationHint,
|
||||
@@ -4521,8 +4522,8 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(anyOf= {
|
||||
android.Manifest.permission.MODIFY_PHONE_STATE,
|
||||
android.Manifest.permission.MODIFY_AUDIO_ROUTING
|
||||
Manifest.permission.MODIFY_PHONE_STATE,
|
||||
Manifest.permission.MODIFY_AUDIO_ROUTING
|
||||
})
|
||||
public int requestAudioFocus(OnAudioFocusChangeListener l,
|
||||
@NonNull AudioAttributes requestAttributes,
|
||||
@@ -4666,7 +4667,7 @@ public class AudioManager {
|
||||
* @throws IllegalArgumentException when trying to lock focus without an AudioPolicy
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public int requestAudioFocus(@NonNull AudioFocusRequest afr, @Nullable AudioPolicy ap) {
|
||||
if (afr == null) {
|
||||
throw new NullPointerException("Illegal null AudioFocusRequest");
|
||||
@@ -4853,7 +4854,7 @@ public class AudioManager {
|
||||
* @param ap a valid registered {@link AudioPolicy} configured as a focus policy.
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setFocusRequestResult(@NonNull AudioFocusInfo afi,
|
||||
@FocusRequestResult int requestResult, @NonNull AudioPolicy ap) {
|
||||
if (afi == null) {
|
||||
@@ -4892,7 +4893,7 @@ public class AudioManager {
|
||||
* @throws NullPointerException if the {@link AudioFocusInfo} or {@link AudioPolicy} are null.
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public int dispatchAudioFocusChange(@NonNull AudioFocusInfo afi, int focusChange,
|
||||
@NonNull AudioPolicy ap) {
|
||||
if (afi == null) {
|
||||
@@ -5152,11 +5153,11 @@ public class AudioManager {
|
||||
* @param policy the non-null {@link AudioPolicy} to register.
|
||||
* @return {@link #ERROR} if there was an error communicating with the registration service
|
||||
* or if the user doesn't have the required
|
||||
* {@link android.Manifest.permission#MODIFY_AUDIO_ROUTING} permission,
|
||||
* {@link Manifest.permission#MODIFY_AUDIO_ROUTING} permission,
|
||||
* {@link #SUCCESS} otherwise.
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public int registerAudioPolicy(@NonNull AudioPolicy policy) {
|
||||
return registerAudioPolicyStatic(policy);
|
||||
}
|
||||
@@ -5190,7 +5191,7 @@ public class AudioManager {
|
||||
* @param policy the non-null {@link AudioPolicy} to unregister.
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void unregisterAudioPolicyAsync(@NonNull AudioPolicy policy) {
|
||||
unregisterAudioPolicyAsyncStatic(policy);
|
||||
}
|
||||
@@ -5216,7 +5217,7 @@ public class AudioManager {
|
||||
* @param policy the non-null {@link AudioPolicy} to unregister.
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void unregisterAudioPolicy(@NonNull AudioPolicy policy) {
|
||||
Preconditions.checkNotNull(policy, "Illegal null AudioPolicy argument");
|
||||
final IAudioService service = getService();
|
||||
@@ -6017,8 +6018,8 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
android.Manifest.permission.QUERY_AUDIO_STATE
|
||||
Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
Manifest.permission.QUERY_AUDIO_STATE
|
||||
})
|
||||
public @NonNull List<AudioDeviceAttributes> getDevicesForAttributes(
|
||||
@NonNull AudioAttributes attributes) {
|
||||
@@ -6093,8 +6094,8 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
android.Manifest.permission.QUERY_AUDIO_STATE
|
||||
Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
Manifest.permission.QUERY_AUDIO_STATE
|
||||
})
|
||||
public void addOnDevicesForAttributesChangedListener(@NonNull AudioAttributes attributes,
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@@ -6124,8 +6125,8 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
android.Manifest.permission.QUERY_AUDIO_STATE
|
||||
Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
Manifest.permission.QUERY_AUDIO_STATE
|
||||
})
|
||||
public void removeOnDevicesForAttributesChangedListener(
|
||||
@NonNull OnDevicesForAttributesChangedListener listener) {
|
||||
@@ -6283,7 +6284,10 @@ public class AudioManager {
|
||||
* @param deviceVolumeBehavior one of the device behaviors
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(anyOf = {
|
||||
Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS
|
||||
})
|
||||
public void setDeviceVolumeBehavior(@NonNull AudioDeviceAttributes device,
|
||||
@DeviceVolumeBehavior int deviceVolumeBehavior) {
|
||||
// verify arguments (validity of device type is enforced in server)
|
||||
@@ -6307,8 +6311,9 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
android.Manifest.permission.QUERY_AUDIO_STATE
|
||||
Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
Manifest.permission.QUERY_AUDIO_STATE,
|
||||
Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS
|
||||
})
|
||||
public @DeviceVolumeBehavior
|
||||
int getDeviceVolumeBehavior(@NonNull AudioDeviceAttributes device) {
|
||||
@@ -6329,8 +6334,9 @@ public class AudioManager {
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
android.Manifest.permission.QUERY_AUDIO_STATE
|
||||
Manifest.permission.MODIFY_AUDIO_ROUTING,
|
||||
Manifest.permission.QUERY_AUDIO_STATE,
|
||||
Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS
|
||||
})
|
||||
public boolean isFullVolumeDevice() {
|
||||
final AudioAttributes attributes = new AudioAttributes.Builder()
|
||||
@@ -6353,7 +6359,7 @@ public class AudioManager {
|
||||
* {@hide}
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setWiredDeviceConnectionState(int device, int state, String address, String name) {
|
||||
AudioDeviceAttributes attributes = new AudioDeviceAttributes(device, address, name);
|
||||
setWiredDeviceConnectionState(attributes, state);
|
||||
@@ -6366,7 +6372,7 @@ public class AudioManager {
|
||||
* {@hide}
|
||||
*/
|
||||
@UnsupportedAppUsage
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setWiredDeviceConnectionState(AudioDeviceAttributes attributes, int state) {
|
||||
final IAudioService service = getService();
|
||||
try {
|
||||
@@ -6384,7 +6390,7 @@ public class AudioManager {
|
||||
* {@hide}
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setTestDeviceConnectionState(@NonNull AudioDeviceAttributes device,
|
||||
boolean connected) {
|
||||
try {
|
||||
@@ -6407,7 +6413,7 @@ public class AudioManager {
|
||||
* {@hide}
|
||||
*/
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
@RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK)
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_STACK)
|
||||
public void handleBluetoothActiveDeviceChanged(@Nullable BluetoothDevice newDevice,
|
||||
@Nullable BluetoothDevice previousDevice,
|
||||
@NonNull BluetoothProfileConnectionInfo info) {
|
||||
@@ -6527,7 +6533,7 @@ public class AudioManager {
|
||||
* or the delay is not in range of {@link #getMaxAdditionalOutputDeviceDelay()}.
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean setAdditionalOutputDeviceDelay(
|
||||
@NonNull AudioDeviceInfo device, @IntRange(from = 0) long delayMillis) {
|
||||
Objects.requireNonNull(device);
|
||||
@@ -6686,7 +6692,7 @@ public class AudioManager {
|
||||
* @return the RS2 value used for momentary exposure warnings
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
public float getRs2Value() {
|
||||
try {
|
||||
return getService().getRs2Value();
|
||||
@@ -6700,7 +6706,7 @@ public class AudioManager {
|
||||
* Sets the RS2 value used for momentary exposure warnings
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
public void setRs2Value(float rs2Value) {
|
||||
try {
|
||||
getService().setRs2Value(rs2Value);
|
||||
@@ -6714,7 +6720,7 @@ public class AudioManager {
|
||||
* @return the current computed sound dose value
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
public float getCsd() {
|
||||
try {
|
||||
return getService().getCsd();
|
||||
@@ -6728,7 +6734,7 @@ public class AudioManager {
|
||||
* Sets the computed sound dose value to {@code csd}
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
public void setCsd(float csd) {
|
||||
try {
|
||||
getService().setCsd(csd);
|
||||
@@ -6744,7 +6750,7 @@ public class AudioManager {
|
||||
* since this can affect the certification of a device with EN50332-3 regulation.
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
public void forceUseFrameworkMel(boolean useFrameworkMel) {
|
||||
try {
|
||||
getService().forceUseFrameworkMel(useFrameworkMel);
|
||||
@@ -6758,7 +6764,7 @@ public class AudioManager {
|
||||
* Forces the computation of CSD on all output devices.
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
public void forceComputeCsdOnAllDevices(boolean computeCsdOnAllDevices) {
|
||||
try {
|
||||
getService().forceComputeCsdOnAllDevices(computeCsdOnAllDevices);
|
||||
@@ -6772,7 +6778,7 @@ public class AudioManager {
|
||||
* Returns whether CSD is enabled on this device.
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS)
|
||||
public boolean isCsdEnabled() {
|
||||
try {
|
||||
return getService().isCsdEnabled();
|
||||
@@ -7806,7 +7812,7 @@ public class AudioManager {
|
||||
*
|
||||
* @return true if successful, otherwise false
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.WRITE_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.WRITE_SETTINGS)
|
||||
public boolean setEncodedSurroundMode(@EncodedSurroundOutputMode int mode) {
|
||||
try {
|
||||
return getService().setEncodedSurroundMode(mode);
|
||||
@@ -7858,7 +7864,7 @@ public class AudioManager {
|
||||
* @param enabled the required surround format state, true for enabled, false for disabled
|
||||
* @return true if successful, otherwise false
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.WRITE_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.WRITE_SETTINGS)
|
||||
public boolean setSurroundFormatEnabled(
|
||||
@AudioFormat.SurroundSoundEncoding int audioFormat, boolean enabled) {
|
||||
try {
|
||||
@@ -7922,7 +7928,7 @@ public class AudioManager {
|
||||
* Ultrasound playback and capture, false otherwise.
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_ULTRASOUND)
|
||||
@RequiresPermission(Manifest.permission.ACCESS_ULTRASOUND)
|
||||
public boolean isUltrasoundSupported() {
|
||||
try {
|
||||
return getService().isUltrasoundSupported();
|
||||
@@ -7943,7 +7949,7 @@ public class AudioManager {
|
||||
* open. False otherwise.
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_HOTWORD)
|
||||
@RequiresPermission(Manifest.permission.CAPTURE_AUDIO_HOTWORD)
|
||||
public boolean isHotwordStreamSupported(boolean lookbackAudio) {
|
||||
try {
|
||||
return getService().isHotwordStreamSupported(lookbackAudio);
|
||||
@@ -7967,7 +7973,7 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@NonNull
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public static List<AudioProductStrategy> getAudioProductStrategies() {
|
||||
final IAudioService service = getService();
|
||||
try {
|
||||
@@ -7987,7 +7993,7 @@ public class AudioManager {
|
||||
*/
|
||||
@SystemApi
|
||||
@NonNull
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public static List<AudioVolumeGroup> getAudioVolumeGroups() {
|
||||
final IAudioService service = getService();
|
||||
try {
|
||||
@@ -8239,7 +8245,7 @@ public class AudioManager {
|
||||
|
||||
/** @hide
|
||||
* TODO: make this a @SystemApi */
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setMultiAudioFocusEnabled(boolean enabled) {
|
||||
try {
|
||||
getService().setMultiAudioFocusEnabled(enabled);
|
||||
@@ -8283,7 +8289,7 @@ public class AudioManager {
|
||||
* latest application having selected mode {@link #MODE_IN_COMMUNICATION} or mode
|
||||
* {@link #MODE_IN_CALL}. Note that <code>MODE_IN_CALL</code> can only be selected by the main
|
||||
* telephony application with permission
|
||||
* {@link android.Manifest.permission#MODIFY_PHONE_STATE}.
|
||||
* {@link Manifest.permission#MODIFY_PHONE_STATE}.
|
||||
* <p> If the requested devices is not currently available, the request will be rejected and
|
||||
* the method will return false.
|
||||
* <p>This API replaces the following deprecated APIs:
|
||||
@@ -8550,7 +8556,7 @@ public class AudioManager {
|
||||
*/
|
||||
@TestApi
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION)
|
||||
@RequiresPermission(Manifest.permission.CALL_AUDIO_INTERCEPTION)
|
||||
public boolean isPstnCallAudioInterceptable() {
|
||||
final IAudioService service = getService();
|
||||
try {
|
||||
@@ -8651,7 +8657,7 @@ public class AudioManager {
|
||||
*/
|
||||
@TestApi
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION)
|
||||
@RequiresPermission(Manifest.permission.CALL_AUDIO_INTERCEPTION)
|
||||
public @NonNull AudioTrack getCallUplinkInjectionAudioTrack(@NonNull AudioFormat format) {
|
||||
Objects.requireNonNull(format);
|
||||
checkCallRedirectionFormat(format, true /* isOutput */);
|
||||
@@ -8723,7 +8729,7 @@ public class AudioManager {
|
||||
*/
|
||||
@TestApi
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION)
|
||||
@RequiresPermission(Manifest.permission.CALL_AUDIO_INTERCEPTION)
|
||||
public @NonNull AudioRecord getCallDownlinkExtractionAudioRecord(@NonNull AudioFormat format) {
|
||||
Objects.requireNonNull(format);
|
||||
checkCallRedirectionFormat(format, false /* isOutput */);
|
||||
@@ -8832,7 +8838,7 @@ public class AudioManager {
|
||||
* @see #registerMuteAwaitConnectionCallback(Executor, AudioManager.MuteAwaitConnectionCallback)
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void muteAwaitConnection(@NonNull int[] usagesToMute,
|
||||
@NonNull AudioDeviceAttributes device,
|
||||
long timeout, @NonNull TimeUnit timeUnit) throws IllegalStateException {
|
||||
@@ -8862,7 +8868,7 @@ public class AudioManager {
|
||||
* or because it timed out)
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public @Nullable AudioDeviceAttributes getMutingExpectedDevice() {
|
||||
try {
|
||||
return getService().getMutingExpectedDevice();
|
||||
@@ -8882,7 +8888,7 @@ public class AudioManager {
|
||||
* {@link #muteAwaitConnection(int[], AudioDeviceAttributes, long, TimeUnit)}
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void cancelMuteAwaitConnection(@NonNull AudioDeviceAttributes device)
|
||||
throws IllegalStateException {
|
||||
Objects.requireNonNull(device);
|
||||
@@ -8961,7 +8967,7 @@ public class AudioManager {
|
||||
* @param callback the callback to register
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void registerMuteAwaitConnectionCallback(
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull MuteAwaitConnectionCallback callback) {
|
||||
@@ -8985,7 +8991,7 @@ public class AudioManager {
|
||||
* @param callback the callback to unregister
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void unregisterMuteAwaitConnectionCallback(
|
||||
@NonNull MuteAwaitConnectionCallback callback) {
|
||||
synchronized (mMuteAwaitConnectionListenerLock) {
|
||||
@@ -9007,7 +9013,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void addAssistantServicesUids(@NonNull int[] assistantUids) {
|
||||
try {
|
||||
getService().addAssistantServicesUids(assistantUids);
|
||||
@@ -9024,7 +9030,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void removeAssistantServicesUids(@NonNull int[] assistantUids) {
|
||||
try {
|
||||
getService().removeAssistantServicesUids(assistantUids);
|
||||
@@ -9049,7 +9055,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public @NonNull int[] getAssistantServicesUids() {
|
||||
try {
|
||||
int[] uids = getService().getAssistantServicesUids();
|
||||
@@ -9074,7 +9080,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setActiveAssistantServiceUids(@NonNull int[] assistantUids) {
|
||||
try {
|
||||
getService().setActiveAssistantServiceUids(assistantUids);
|
||||
@@ -9092,7 +9098,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public @NonNull int[] getActiveAssistantServicesUids() {
|
||||
try {
|
||||
int[] uids = getService().getActiveAssistantServiceUids();
|
||||
@@ -9166,7 +9172,7 @@ public class AudioManager {
|
||||
* @see #getPreferredMixerAttributes(AudioAttributes, AudioDeviceInfo)
|
||||
* @see #clearPreferredMixerAttributes(AudioAttributes, AudioDeviceInfo)
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS)
|
||||
public boolean setPreferredMixerAttributes(@NonNull AudioAttributes attributes,
|
||||
@NonNull AudioDeviceInfo device,
|
||||
@NonNull AudioMixerAttributes mixerAttributes) {
|
||||
@@ -9220,7 +9226,7 @@ public class AudioManager {
|
||||
* @see #setPreferredMixerAttributes(AudioAttributes, AudioDeviceInfo, AudioMixerAttributes)
|
||||
* @see #getPreferredMixerAttributes(AudioAttributes, AudioDeviceInfo)
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS)
|
||||
public boolean clearPreferredMixerAttributes(
|
||||
@NonNull AudioAttributes attributes,
|
||||
@NonNull AudioDeviceInfo device) {
|
||||
@@ -9340,7 +9346,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean supportsBluetoothVariableLatency() {
|
||||
try {
|
||||
return getService().supportsBluetoothVariableLatency();
|
||||
@@ -9357,7 +9363,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public void setBluetoothVariableLatencyEnabled(boolean enabled) {
|
||||
try {
|
||||
getService().setBluetoothVariableLatencyEnabled(enabled);
|
||||
@@ -9371,7 +9377,7 @@ public class AudioManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
@RequiresPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
public boolean isBluetoothVariableLatencyEnabled() {
|
||||
try {
|
||||
return getService().isBluetoothVariableLatencyEnabled();
|
||||
|
||||
@@ -412,10 +412,11 @@ interface IAudioService {
|
||||
|
||||
oneway void setRttEnabled(in boolean rttEnabled);
|
||||
|
||||
@EnforcePermission("MODIFY_AUDIO_ROUTING")
|
||||
@EnforcePermission(anyOf = {"MODIFY_AUDIO_ROUTING", "MODIFY_AUDIO_SYSTEM_SETTINGS"})
|
||||
void setDeviceVolumeBehavior(in AudioDeviceAttributes device,
|
||||
in int deviceVolumeBehavior, in String pkgName);
|
||||
|
||||
@EnforcePermission(anyOf = {"MODIFY_AUDIO_ROUTING", "QUERY_AUDIO_STATE", "MODIFY_AUDIO_SYSTEM_SETTINGS"})
|
||||
int getDeviceVolumeBehavior(in AudioDeviceAttributes device);
|
||||
|
||||
// WARNING: read warning at top of file, new methods that need to be used by native
|
||||
|
||||
@@ -7130,20 +7130,21 @@ public class AudioService extends IAudioService.Stub
|
||||
}
|
||||
}
|
||||
|
||||
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
|
||||
/**
|
||||
* @see AudioManager#setDeviceVolumeBehavior(AudioDeviceAttributes, int)
|
||||
* @param device the audio device to be affected
|
||||
* @param deviceVolumeBehavior one of the device behaviors
|
||||
*/
|
||||
@android.annotation.EnforcePermission(anyOf =
|
||||
{"MODIFY_AUDIO_ROUTING", "MODIFY_AUDIO_SYSTEM_SETTINGS"})
|
||||
public void setDeviceVolumeBehavior(@NonNull AudioDeviceAttributes device,
|
||||
@AudioManager.DeviceVolumeBehavior int deviceVolumeBehavior, @Nullable String pkgName) {
|
||||
// verify permissions
|
||||
// verify arguments
|
||||
super.setDeviceVolumeBehavior_enforcePermission();
|
||||
|
||||
// verify arguments
|
||||
Objects.requireNonNull(device);
|
||||
AudioManager.enforceValidVolumeBehavior(deviceVolumeBehavior);
|
||||
|
||||
sVolumeLogger.enqueue(new EventLogger.StringEvent("setDeviceVolumeBehavior: dev:"
|
||||
+ AudioSystem.getOutputDeviceName(device.getInternalType()) + " addr:"
|
||||
+ device.getAddress() + " behavior:"
|
||||
@@ -7214,11 +7215,14 @@ public class AudioService extends IAudioService.Stub
|
||||
* @param device the audio output device type
|
||||
* @return the volume behavior for the device
|
||||
*/
|
||||
@android.annotation.EnforcePermission(anyOf =
|
||||
{"MODIFY_AUDIO_ROUTING", "QUERY_AUDIO_STATE", "MODIFY_AUDIO_SYSTEM_SETTINGS"})
|
||||
public @AudioManager.DeviceVolumeBehavior
|
||||
int getDeviceVolumeBehavior(@NonNull AudioDeviceAttributes device) {
|
||||
Objects.requireNonNull(device);
|
||||
// verify permissions
|
||||
enforceQueryStateOrModifyRoutingPermission();
|
||||
super.getDeviceVolumeBehavior_enforcePermission();
|
||||
// verify parameters
|
||||
Objects.requireNonNull(device);
|
||||
|
||||
return getDeviceVolumeBehaviorInt(device);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user