Loading core/api/system-current.txt +4 −2 Original line number Diff line number Diff line Loading @@ -3112,6 +3112,7 @@ package android.content { field public static final String APP_HIBERNATION_SERVICE = "app_hibernation"; field public static final String APP_INTEGRITY_SERVICE = "app_integrity"; field public static final String APP_PREDICTION_SERVICE = "app_prediction"; field public static final String AUDIO_DEVICE_VOLUME_SERVICE = "audio_device_volume"; field public static final String BACKUP_SERVICE = "backup"; field public static final String BATTERY_STATS_SERVICE = "batterystats"; field public static final int BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS = 1048576; // 0x100000 Loading Loading @@ -6311,7 +6312,7 @@ package android.media { } public class AudioDeviceVolumeManager { ctor public AudioDeviceVolumeManager(@NonNull android.content.Context); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.VolumeInfo getDeviceVolume(@NonNull android.media.VolumeInfo, @NonNull android.media.AudioDeviceAttributes); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setDeviceVolume(@NonNull android.media.VolumeInfo, @NonNull android.media.AudioDeviceAttributes); } Loading Loading @@ -6649,8 +6650,9 @@ package android.media { method public int getMaxVolumeIndex(); method public int getMinVolumeIndex(); method public int getStreamType(); method @Nullable public android.media.audiopolicy.AudioVolumeGroup getVolumeGroup(); method @NonNull public android.media.audiopolicy.AudioVolumeGroup getVolumeGroup(); method public int getVolumeIndex(); method public boolean hasMuteCommand(); method public boolean hasStreamType(); method public boolean hasVolumeGroup(); method public boolean isMuted(); core/java/android/app/SystemServiceRegistry.java +8 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,7 @@ import android.location.CountryDetector; import android.location.ICountryDetector; import android.location.ILocationManager; import android.location.LocationManager; import android.media.AudioDeviceVolumeManager; import android.media.AudioManager; import android.media.MediaFrameworkInitializer; import android.media.MediaFrameworkPlatformInitializer; Loading Loading @@ -343,6 +344,13 @@ public final class SystemServiceRegistry { return new AudioManager(ctx); }}); registerService(Context.AUDIO_DEVICE_VOLUME_SERVICE, AudioDeviceVolumeManager.class, new CachedServiceFetcher<AudioDeviceVolumeManager>() { @Override public AudioDeviceVolumeManager createService(ContextImpl ctx) { return new AudioDeviceVolumeManager(ctx); }}); registerService(Context.MEDIA_ROUTER_SERVICE, MediaRouter.class, new CachedServiceFetcher<MediaRouter>() { @Override Loading core/java/android/content/Context.java +13 −0 Original line number Diff line number Diff line Loading @@ -3850,6 +3850,7 @@ public abstract class Context { WIFI_RTT_RANGING_SERVICE, NSD_SERVICE, AUDIO_SERVICE, AUDIO_DEVICE_VOLUME_SERVICE, AUTH_SERVICE, FINGERPRINT_SERVICE, //@hide: FACE_SERVICE, Loading Loading @@ -4692,6 +4693,18 @@ public abstract class Context { */ public static final String AUDIO_SERVICE = "audio"; /** * @hide * Use with {@link #getSystemService(String)} to retrieve a * {@link android.media.AudioDeviceVolumeManager} for handling management of audio device * (e.g. speaker, USB headset) volume. * * @see #getSystemService(String) * @see android.media.AudioDeviceVolumeManager */ @SystemApi public static final String AUDIO_DEVICE_VOLUME_SERVICE = "audio_device_volume"; /** * Use with {@link #getSystemService(String)} to retrieve a {@link * android.media.MediaTranscodingManager} for transcoding media. Loading media/java/android/media/AudioDeviceVolumeManager.java +28 −10 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.content.Context; import android.os.IBinder; Loading @@ -44,8 +43,7 @@ import java.util.concurrent.Executor; @SystemApi public class AudioDeviceVolumeManager { // define when using Log.* //private static final String TAG = "AudioDeviceVolumeManager"; private static final String TAG = "AudioDeviceVolumeManager"; /** @hide * Indicates no special treatment in the handling of the volume adjustment */ Loading @@ -70,20 +68,15 @@ public class AudioDeviceVolumeManager { private static IAudioService sService; private final @NonNull String mPackageName; private final @Nullable String mAttributionTag; /** * @hide * Constructor * @param context the Context for the device volume operations */ @SuppressLint("ManagerConstructor") // reason for suppression: even though the functionality handled by this class is implemented in // AudioService, we want to avoid bloating android.media.AudioManager // with @SystemApi functionality public AudioDeviceVolumeManager(@NonNull Context context) { Objects.requireNonNull(context); mPackageName = context.getApplicationContext().getOpPackageName(); mAttributionTag = context.getApplicationContext().getAttributionTag(); } /** Loading Loading @@ -325,13 +318,38 @@ public class AudioDeviceVolumeManager { * @param ada the device for which volume is to be modified */ @SystemApi // TODO alternatively require MODIFY_AUDIO_SYSTEM_SETTINGS when defined @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setDeviceVolume(@NonNull VolumeInfo vi, @NonNull AudioDeviceAttributes ada) { try { getService().setDeviceVolume(vi, ada, mPackageName, mAttributionTag); getService().setDeviceVolume(vi, ada, mPackageName); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * @hide * Returns the volume on the given audio device for the given volume information. * For instance if using a {@link VolumeInfo} configured for {@link AudioManager#STREAM_ALARM}, * it will return the alarm volume. When no volume index has ever been set for the given * device, the default volume will be returned (the volume setting that would have been * applied if playback for that use case had started). * @param vi the volume information, only stream-based volumes are supported. Information * other than the stream type is ignored. * @param ada the device for which volume is to be retrieved */ @SystemApi // TODO alternatively require MODIFY_AUDIO_SYSTEM_SETTINGS when defined @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public @NonNull VolumeInfo getDeviceVolume(@NonNull VolumeInfo vi, @NonNull AudioDeviceAttributes ada) { try { return getService().getDeviceVolume(vi, ada, mPackageName); } catch (RemoteException e) { e.rethrowFromSystemServer(); } return VolumeInfo.getDefaultVolumeInfo(); } /** Loading media/java/android/media/AudioManager.java +7 −1 Original line number Diff line number Diff line Loading @@ -1212,7 +1212,13 @@ public class AudioManager { } } private static boolean isPublicStreamType(int streamType) { /** * @hide * Checks whether a stream type is part of the public SDK * @param streamType * @return true if the stream type is available in SDK */ public static boolean isPublicStreamType(int streamType) { switch (streamType) { case STREAM_VOICE_CALL: case STREAM_SYSTEM: Loading Loading
core/api/system-current.txt +4 −2 Original line number Diff line number Diff line Loading @@ -3112,6 +3112,7 @@ package android.content { field public static final String APP_HIBERNATION_SERVICE = "app_hibernation"; field public static final String APP_INTEGRITY_SERVICE = "app_integrity"; field public static final String APP_PREDICTION_SERVICE = "app_prediction"; field public static final String AUDIO_DEVICE_VOLUME_SERVICE = "audio_device_volume"; field public static final String BACKUP_SERVICE = "backup"; field public static final String BATTERY_STATS_SERVICE = "batterystats"; field public static final int BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS = 1048576; // 0x100000 Loading Loading @@ -6311,7 +6312,7 @@ package android.media { } public class AudioDeviceVolumeManager { ctor public AudioDeviceVolumeManager(@NonNull android.content.Context); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.VolumeInfo getDeviceVolume(@NonNull android.media.VolumeInfo, @NonNull android.media.AudioDeviceAttributes); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setDeviceVolume(@NonNull android.media.VolumeInfo, @NonNull android.media.AudioDeviceAttributes); } Loading Loading @@ -6649,8 +6650,9 @@ package android.media { method public int getMaxVolumeIndex(); method public int getMinVolumeIndex(); method public int getStreamType(); method @Nullable public android.media.audiopolicy.AudioVolumeGroup getVolumeGroup(); method @NonNull public android.media.audiopolicy.AudioVolumeGroup getVolumeGroup(); method public int getVolumeIndex(); method public boolean hasMuteCommand(); method public boolean hasStreamType(); method public boolean hasVolumeGroup(); method public boolean isMuted();
core/java/android/app/SystemServiceRegistry.java +8 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,7 @@ import android.location.CountryDetector; import android.location.ICountryDetector; import android.location.ILocationManager; import android.location.LocationManager; import android.media.AudioDeviceVolumeManager; import android.media.AudioManager; import android.media.MediaFrameworkInitializer; import android.media.MediaFrameworkPlatformInitializer; Loading Loading @@ -343,6 +344,13 @@ public final class SystemServiceRegistry { return new AudioManager(ctx); }}); registerService(Context.AUDIO_DEVICE_VOLUME_SERVICE, AudioDeviceVolumeManager.class, new CachedServiceFetcher<AudioDeviceVolumeManager>() { @Override public AudioDeviceVolumeManager createService(ContextImpl ctx) { return new AudioDeviceVolumeManager(ctx); }}); registerService(Context.MEDIA_ROUTER_SERVICE, MediaRouter.class, new CachedServiceFetcher<MediaRouter>() { @Override Loading
core/java/android/content/Context.java +13 −0 Original line number Diff line number Diff line Loading @@ -3850,6 +3850,7 @@ public abstract class Context { WIFI_RTT_RANGING_SERVICE, NSD_SERVICE, AUDIO_SERVICE, AUDIO_DEVICE_VOLUME_SERVICE, AUTH_SERVICE, FINGERPRINT_SERVICE, //@hide: FACE_SERVICE, Loading Loading @@ -4692,6 +4693,18 @@ public abstract class Context { */ public static final String AUDIO_SERVICE = "audio"; /** * @hide * Use with {@link #getSystemService(String)} to retrieve a * {@link android.media.AudioDeviceVolumeManager} for handling management of audio device * (e.g. speaker, USB headset) volume. * * @see #getSystemService(String) * @see android.media.AudioDeviceVolumeManager */ @SystemApi public static final String AUDIO_DEVICE_VOLUME_SERVICE = "audio_device_volume"; /** * Use with {@link #getSystemService(String)} to retrieve a {@link * android.media.MediaTranscodingManager} for transcoding media. Loading
media/java/android/media/AudioDeviceVolumeManager.java +28 −10 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.content.Context; import android.os.IBinder; Loading @@ -44,8 +43,7 @@ import java.util.concurrent.Executor; @SystemApi public class AudioDeviceVolumeManager { // define when using Log.* //private static final String TAG = "AudioDeviceVolumeManager"; private static final String TAG = "AudioDeviceVolumeManager"; /** @hide * Indicates no special treatment in the handling of the volume adjustment */ Loading @@ -70,20 +68,15 @@ public class AudioDeviceVolumeManager { private static IAudioService sService; private final @NonNull String mPackageName; private final @Nullable String mAttributionTag; /** * @hide * Constructor * @param context the Context for the device volume operations */ @SuppressLint("ManagerConstructor") // reason for suppression: even though the functionality handled by this class is implemented in // AudioService, we want to avoid bloating android.media.AudioManager // with @SystemApi functionality public AudioDeviceVolumeManager(@NonNull Context context) { Objects.requireNonNull(context); mPackageName = context.getApplicationContext().getOpPackageName(); mAttributionTag = context.getApplicationContext().getAttributionTag(); } /** Loading Loading @@ -325,13 +318,38 @@ public class AudioDeviceVolumeManager { * @param ada the device for which volume is to be modified */ @SystemApi // TODO alternatively require MODIFY_AUDIO_SYSTEM_SETTINGS when defined @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setDeviceVolume(@NonNull VolumeInfo vi, @NonNull AudioDeviceAttributes ada) { try { getService().setDeviceVolume(vi, ada, mPackageName, mAttributionTag); getService().setDeviceVolume(vi, ada, mPackageName); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * @hide * Returns the volume on the given audio device for the given volume information. * For instance if using a {@link VolumeInfo} configured for {@link AudioManager#STREAM_ALARM}, * it will return the alarm volume. When no volume index has ever been set for the given * device, the default volume will be returned (the volume setting that would have been * applied if playback for that use case had started). * @param vi the volume information, only stream-based volumes are supported. Information * other than the stream type is ignored. * @param ada the device for which volume is to be retrieved */ @SystemApi // TODO alternatively require MODIFY_AUDIO_SYSTEM_SETTINGS when defined @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public @NonNull VolumeInfo getDeviceVolume(@NonNull VolumeInfo vi, @NonNull AudioDeviceAttributes ada) { try { return getService().getDeviceVolume(vi, ada, mPackageName); } catch (RemoteException e) { e.rethrowFromSystemServer(); } return VolumeInfo.getDefaultVolumeInfo(); } /** Loading
media/java/android/media/AudioManager.java +7 −1 Original line number Diff line number Diff line Loading @@ -1212,7 +1212,13 @@ public class AudioManager { } } private static boolean isPublicStreamType(int streamType) { /** * @hide * Checks whether a stream type is part of the public SDK * @param streamType * @return true if the stream type is available in SDK */ public static boolean isPublicStreamType(int streamType) { switch (streamType) { case STREAM_VOICE_CALL: case STREAM_SYSTEM: Loading