Loading api/current.txt +34 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ package android { field public static final java.lang.String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS"; field public static final java.lang.String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS"; field public static final java.lang.String MASTER_CLEAR = "android.permission.MASTER_CLEAR"; field public static final java.lang.String MEDIA_CONTENT_CONTROL = "android.permission.MEDIA_CONTENT_CONTROL"; field public static final java.lang.String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS"; field public static final java.lang.String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE"; field public static final java.lang.String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS"; Loading Loading @@ -12009,6 +12010,7 @@ package android.media { method public void adjustStreamVolume(int, int, int); method public void adjustSuggestedStreamVolume(int, int, int); method public void adjustVolume(int, int); method public void dispatchMediaKeyEvent(android.view.KeyEvent); method public int getMode(); method public java.lang.String getParameters(java.lang.String); method public java.lang.String getProperty(java.lang.String); Loading @@ -12030,6 +12032,7 @@ package android.media { method public void registerMediaButtonEventReceiver(android.content.ComponentName); method public void registerMediaButtonEventReceiver(android.app.PendingIntent); method public void registerRemoteControlClient(android.media.RemoteControlClient); method public boolean registerRemoteController(android.media.RemoteController); method public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int); method public deprecated void setBluetoothA2dpOn(boolean); method public void setBluetoothScoOn(boolean); Loading @@ -12051,6 +12054,7 @@ package android.media { method public void unregisterMediaButtonEventReceiver(android.content.ComponentName); method public void unregisterMediaButtonEventReceiver(android.app.PendingIntent); method public void unregisterRemoteControlClient(android.media.RemoteControlClient); method public void unregisterRemoteController(android.media.RemoteController); field public static final java.lang.String ACTION_AUDIO_BECOMING_NOISY = "android.media.AUDIO_BECOMING_NOISY"; field public static final deprecated java.lang.String ACTION_SCO_AUDIO_STATE_CHANGED = "android.media.SCO_AUDIO_STATE_CHANGED"; field public static final java.lang.String ACTION_SCO_AUDIO_STATE_UPDATED = "android.media.ACTION_SCO_AUDIO_STATE_UPDATED"; Loading Loading @@ -13280,6 +13284,36 @@ package android.media { method public abstract void onPlaybackPositionUpdate(long); } public final class RemoteController { ctor public RemoteController(android.content.Context) throws java.lang.IllegalArgumentException; ctor public RemoteController(android.content.Context, android.os.Looper) throws java.lang.IllegalArgumentException; method public int clearArtworkConfiguration(); method public android.media.RemoteController.MetadataEditor editMetadata(); method public int seekTo(long); method public int sendMediaKeyEvent(android.view.KeyEvent); method public int setArtworkConfiguration(int, int); method public void setOnClientUpdateListener(android.media.RemoteController.OnClientUpdateListener); method public int setSynchronizationMode(int); field public static final int ERROR = -1; // 0xffffffff field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe field public static final int POSITION_SYNCHRONIZATION_CHECK = 1; // 0x1 field public static final int POSITION_SYNCHRONIZATION_NONE = 0; // 0x0 field public static final int SUCCESS = 0; // 0x0 } public class RemoteController.MetadataEditor extends android.media.MediaMetadataEditor { method public synchronized void apply(); } public static abstract class RemoteController.OnClientUpdateListener { ctor public RemoteController.OnClientUpdateListener(); method public void onClientChange(boolean); method public void onClientMetadataUpdate(android.media.RemoteController.MetadataEditor); method public void onClientPlaybackStateUpdate(int); method public void onClientPlaybackStateUpdate(int, long, long, float); method public void onClientTransportControlUpdate(int); } public final class ResourceBusyException extends android.media.MediaDrmException { ctor public ResourceBusyException(java.lang.String); } core/res/AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -2107,7 +2107,7 @@ android:description="@string/permdesc_captureSecureVideoOutput" android:protectionLevel="signature|system" /> <!--@hide Allows an application to know what content is playing and control its playback. <!-- Allows an application to know what content is playing and control its playback. <p>Not for use by third-party applications due to privacy of media consumption</p> --> <permission android:name="android.permission.MEDIA_CONTENT_CONTROL" android:label="@string/permlab_mediaContentControl" Loading media/java/android/media/AudioManager.java +32 −10 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.media; import android.Manifest; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.app.PendingIntent; Loading Loading @@ -443,10 +444,29 @@ public class AudioManager { } /** * @hide * @param KeyEvent */ protected void dispatchMediaKeyEvent(KeyEvent keyEvent) { * Sends a simulated key event for a media button. * To simulate a key press, you must first send a KeyEvent built with a * {@link KeyEvent#ACTION_DOWN} action, then another event with the {@link KeyEvent#ACTION_UP} * action. * <p>The key event will be sent to the current media key event consumer which registered with * {@link AudioManager#registerMediaButtonEventReceiver(PendingIntent)}. * @param keyEvent a {@link KeyEvent} instance whose key code is one of * {@link KeyEvent#KEYCODE_MUTE}, * {@link KeyEvent#KEYCODE_HEADSETHOOK}, * {@link KeyEvent#KEYCODE_MEDIA_PLAY}, * {@link KeyEvent#KEYCODE_MEDIA_PAUSE}, * {@link KeyEvent#KEYCODE_MEDIA_PLAY_PAUSE}, * {@link KeyEvent#KEYCODE_MEDIA_STOP}, * {@link KeyEvent#KEYCODE_MEDIA_NEXT}, * {@link KeyEvent#KEYCODE_MEDIA_PREVIOUS}, * {@link KeyEvent#KEYCODE_MEDIA_REWIND}, * {@link KeyEvent#KEYCODE_MEDIA_RECORD}, * {@link KeyEvent#KEYCODE_MEDIA_FAST_FORWARD}, * {@link KeyEvent#KEYCODE_MEDIA_CLOSE}, * {@link KeyEvent#KEYCODE_MEDIA_EJECT}, * or {@link KeyEvent#KEYCODE_MEDIA_AUDIO_TRACK}. */ public void dispatchMediaKeyEvent(KeyEvent keyEvent) { IAudioService service = getService(); try { service.dispatchMediaKeyEvent(keyEvent); Loading Loading @@ -2247,9 +2267,11 @@ public class AudioManager { } /** * @hide * CANDIDATE FOR PUBLIC API * @param rctlr * Registers a {@link RemoteController} instance for it to receive media metadata updates * and playback state information from applications using {@link RemoteControlClient}, and * control their playback. * <p>Registration requires the {@link Manifest.permission#MEDIA_CONTENT_CONTROL} permission. * @param rctlr the object to register. * @return true if the {@link RemoteController} was successfully registered, false if an * error occurred, due to an internal system error, or insufficient permissions. */ Loading @@ -2272,9 +2294,9 @@ public class AudioManager { } /** * @hide * CANDIDATE FOR PUBLIC API * @param rctlr * Unregisters a {@link RemoteController}, causing it to no longer receive media metadata and * playback state information, and no longer be capable of controlling playback. * @param rctlr the object to unregister. */ public void unregisterRemoteController(RemoteController rctlr) { if (rctlr == null) { Loading media/java/android/media/MediaFocusControl.java +10 −0 Original line number Diff line number Diff line Loading @@ -524,10 +524,20 @@ public class MediaFocusControl implements OnFinished { //========================================================================================== // RemoteControl //========================================================================================== /** * No-op if the key code for keyEvent is not a valid media key * (see {@link #isValidMediaKeyEvent(KeyEvent)}) * @param keyEvent the key event to send */ protected void dispatchMediaKeyEvent(KeyEvent keyEvent) { filterMediaKeyEvent(keyEvent, false /*needWakeLock*/); } /** * No-op if the key code for keyEvent is not a valid media key * (see {@link #isValidMediaKeyEvent(KeyEvent)}) * @param keyEvent the key event to send */ protected void dispatchMediaKeyEventUnderWakelock(KeyEvent keyEvent) { filterMediaKeyEvent(keyEvent, true /*needWakeLock*/); } Loading media/java/android/media/RemoteController.java +131 −164 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
api/current.txt +34 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ package android { field public static final java.lang.String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS"; field public static final java.lang.String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS"; field public static final java.lang.String MASTER_CLEAR = "android.permission.MASTER_CLEAR"; field public static final java.lang.String MEDIA_CONTENT_CONTROL = "android.permission.MEDIA_CONTENT_CONTROL"; field public static final java.lang.String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS"; field public static final java.lang.String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE"; field public static final java.lang.String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS"; Loading Loading @@ -12009,6 +12010,7 @@ package android.media { method public void adjustStreamVolume(int, int, int); method public void adjustSuggestedStreamVolume(int, int, int); method public void adjustVolume(int, int); method public void dispatchMediaKeyEvent(android.view.KeyEvent); method public int getMode(); method public java.lang.String getParameters(java.lang.String); method public java.lang.String getProperty(java.lang.String); Loading @@ -12030,6 +12032,7 @@ package android.media { method public void registerMediaButtonEventReceiver(android.content.ComponentName); method public void registerMediaButtonEventReceiver(android.app.PendingIntent); method public void registerRemoteControlClient(android.media.RemoteControlClient); method public boolean registerRemoteController(android.media.RemoteController); method public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int); method public deprecated void setBluetoothA2dpOn(boolean); method public void setBluetoothScoOn(boolean); Loading @@ -12051,6 +12054,7 @@ package android.media { method public void unregisterMediaButtonEventReceiver(android.content.ComponentName); method public void unregisterMediaButtonEventReceiver(android.app.PendingIntent); method public void unregisterRemoteControlClient(android.media.RemoteControlClient); method public void unregisterRemoteController(android.media.RemoteController); field public static final java.lang.String ACTION_AUDIO_BECOMING_NOISY = "android.media.AUDIO_BECOMING_NOISY"; field public static final deprecated java.lang.String ACTION_SCO_AUDIO_STATE_CHANGED = "android.media.SCO_AUDIO_STATE_CHANGED"; field public static final java.lang.String ACTION_SCO_AUDIO_STATE_UPDATED = "android.media.ACTION_SCO_AUDIO_STATE_UPDATED"; Loading Loading @@ -13280,6 +13284,36 @@ package android.media { method public abstract void onPlaybackPositionUpdate(long); } public final class RemoteController { ctor public RemoteController(android.content.Context) throws java.lang.IllegalArgumentException; ctor public RemoteController(android.content.Context, android.os.Looper) throws java.lang.IllegalArgumentException; method public int clearArtworkConfiguration(); method public android.media.RemoteController.MetadataEditor editMetadata(); method public int seekTo(long); method public int sendMediaKeyEvent(android.view.KeyEvent); method public int setArtworkConfiguration(int, int); method public void setOnClientUpdateListener(android.media.RemoteController.OnClientUpdateListener); method public int setSynchronizationMode(int); field public static final int ERROR = -1; // 0xffffffff field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe field public static final int POSITION_SYNCHRONIZATION_CHECK = 1; // 0x1 field public static final int POSITION_SYNCHRONIZATION_NONE = 0; // 0x0 field public static final int SUCCESS = 0; // 0x0 } public class RemoteController.MetadataEditor extends android.media.MediaMetadataEditor { method public synchronized void apply(); } public static abstract class RemoteController.OnClientUpdateListener { ctor public RemoteController.OnClientUpdateListener(); method public void onClientChange(boolean); method public void onClientMetadataUpdate(android.media.RemoteController.MetadataEditor); method public void onClientPlaybackStateUpdate(int); method public void onClientPlaybackStateUpdate(int, long, long, float); method public void onClientTransportControlUpdate(int); } public final class ResourceBusyException extends android.media.MediaDrmException { ctor public ResourceBusyException(java.lang.String); }
core/res/AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -2107,7 +2107,7 @@ android:description="@string/permdesc_captureSecureVideoOutput" android:protectionLevel="signature|system" /> <!--@hide Allows an application to know what content is playing and control its playback. <!-- Allows an application to know what content is playing and control its playback. <p>Not for use by third-party applications due to privacy of media consumption</p> --> <permission android:name="android.permission.MEDIA_CONTENT_CONTROL" android:label="@string/permlab_mediaContentControl" Loading
media/java/android/media/AudioManager.java +32 −10 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.media; import android.Manifest; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.app.PendingIntent; Loading Loading @@ -443,10 +444,29 @@ public class AudioManager { } /** * @hide * @param KeyEvent */ protected void dispatchMediaKeyEvent(KeyEvent keyEvent) { * Sends a simulated key event for a media button. * To simulate a key press, you must first send a KeyEvent built with a * {@link KeyEvent#ACTION_DOWN} action, then another event with the {@link KeyEvent#ACTION_UP} * action. * <p>The key event will be sent to the current media key event consumer which registered with * {@link AudioManager#registerMediaButtonEventReceiver(PendingIntent)}. * @param keyEvent a {@link KeyEvent} instance whose key code is one of * {@link KeyEvent#KEYCODE_MUTE}, * {@link KeyEvent#KEYCODE_HEADSETHOOK}, * {@link KeyEvent#KEYCODE_MEDIA_PLAY}, * {@link KeyEvent#KEYCODE_MEDIA_PAUSE}, * {@link KeyEvent#KEYCODE_MEDIA_PLAY_PAUSE}, * {@link KeyEvent#KEYCODE_MEDIA_STOP}, * {@link KeyEvent#KEYCODE_MEDIA_NEXT}, * {@link KeyEvent#KEYCODE_MEDIA_PREVIOUS}, * {@link KeyEvent#KEYCODE_MEDIA_REWIND}, * {@link KeyEvent#KEYCODE_MEDIA_RECORD}, * {@link KeyEvent#KEYCODE_MEDIA_FAST_FORWARD}, * {@link KeyEvent#KEYCODE_MEDIA_CLOSE}, * {@link KeyEvent#KEYCODE_MEDIA_EJECT}, * or {@link KeyEvent#KEYCODE_MEDIA_AUDIO_TRACK}. */ public void dispatchMediaKeyEvent(KeyEvent keyEvent) { IAudioService service = getService(); try { service.dispatchMediaKeyEvent(keyEvent); Loading Loading @@ -2247,9 +2267,11 @@ public class AudioManager { } /** * @hide * CANDIDATE FOR PUBLIC API * @param rctlr * Registers a {@link RemoteController} instance for it to receive media metadata updates * and playback state information from applications using {@link RemoteControlClient}, and * control their playback. * <p>Registration requires the {@link Manifest.permission#MEDIA_CONTENT_CONTROL} permission. * @param rctlr the object to register. * @return true if the {@link RemoteController} was successfully registered, false if an * error occurred, due to an internal system error, or insufficient permissions. */ Loading @@ -2272,9 +2294,9 @@ public class AudioManager { } /** * @hide * CANDIDATE FOR PUBLIC API * @param rctlr * Unregisters a {@link RemoteController}, causing it to no longer receive media metadata and * playback state information, and no longer be capable of controlling playback. * @param rctlr the object to unregister. */ public void unregisterRemoteController(RemoteController rctlr) { if (rctlr == null) { Loading
media/java/android/media/MediaFocusControl.java +10 −0 Original line number Diff line number Diff line Loading @@ -524,10 +524,20 @@ public class MediaFocusControl implements OnFinished { //========================================================================================== // RemoteControl //========================================================================================== /** * No-op if the key code for keyEvent is not a valid media key * (see {@link #isValidMediaKeyEvent(KeyEvent)}) * @param keyEvent the key event to send */ protected void dispatchMediaKeyEvent(KeyEvent keyEvent) { filterMediaKeyEvent(keyEvent, false /*needWakeLock*/); } /** * No-op if the key code for keyEvent is not a valid media key * (see {@link #isValidMediaKeyEvent(KeyEvent)}) * @param keyEvent the key event to send */ protected void dispatchMediaKeyEventUnderWakelock(KeyEvent keyEvent) { filterMediaKeyEvent(keyEvent, true /*needWakeLock*/); } Loading
media/java/android/media/RemoteController.java +131 −164 File changed.Preview size limit exceeded, changes collapsed. Show changes