Loading cmds/media/src/com/android/commands/media/Media.java +19 −7 Original line number Diff line number Diff line Loading @@ -171,7 +171,6 @@ public class Media extends BaseCommand { showError("Error: unknown dispatch code '" + cmd + "'"); return; } final long now = SystemClock.uptimeMillis(); sendMediaKey(new KeyEvent(now, now, KeyEvent.ACTION_DOWN, keycode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 0, InputDevice.SOURCE_KEYBOARD)); Loading @@ -189,7 +188,6 @@ public class Media extends BaseCommand { @Override public void onSessionDestroyed() { System.out.println("onSessionDestroyed. Enter q to quit."); } @Override Loading Loading @@ -246,7 +244,7 @@ public class Media extends BaseCommand { @Override protected void onLooperPrepared() { try { mController.registerCallbackListener(ControllerMonitor.this); mController.registerCallbackListener(PACKAGE_NAME, ControllerMonitor.this); } catch (RemoteException e) { System.out.println("Error registering monitor callback"); } Loading @@ -266,13 +264,13 @@ public class Media extends BaseCommand { } else if ("q".equals(line) || "quit".equals(line)) { break; } else if ("play".equals(line)) { mController.play(PACKAGE_NAME); dispatchKeyCode(KeyEvent.KEYCODE_MEDIA_PLAY); } else if ("pause".equals(line)) { mController.pause(PACKAGE_NAME); dispatchKeyCode(KeyEvent.KEYCODE_MEDIA_PAUSE); } else if ("next".equals(line)) { mController.next(PACKAGE_NAME); dispatchKeyCode(KeyEvent.KEYCODE_MEDIA_NEXT); } else if ("previous".equals(line)) { mController.previous(PACKAGE_NAME); dispatchKeyCode(KeyEvent.KEYCODE_MEDIA_PREVIOUS); } else { System.out.println("Invalid command: " + line); } Loading @@ -295,6 +293,20 @@ public class Media extends BaseCommand { } } } private void dispatchKeyCode(int keyCode) { final long now = SystemClock.uptimeMillis(); KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 0, InputDevice.SOURCE_KEYBOARD); KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 0, InputDevice.SOURCE_KEYBOARD); try { mController.sendMediaButton(PACKAGE_NAME, null, false, down); mController.sendMediaButton(PACKAGE_NAME, null, false, up); } catch (RemoteException e) { System.out.println("Failed to dispatch " + keyCode); } } } private void runListSessions() { Loading media/java/android/media/session/ISessionCallback.aidl +37 −23 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.media.session; import android.content.Intent; import android.media.Rating; import android.media.session.ISessionControllerCallback; import android.net.Uri; import android.os.Bundle; import android.os.ResultReceiver; Loading @@ -25,33 +26,46 @@ import android.os.ResultReceiver; * @hide */ oneway interface ISessionCallback { void onCommand(String packageName, int pid, int uid, String command, in Bundle args, in ResultReceiver cb); void onCommand(String packageName, int pid, int uid, ISessionControllerCallback caller, String command, in Bundle args, in ResultReceiver cb); void onMediaButton(String packageName, int pid, int uid, in Intent mediaButtonIntent, int sequenceNumber, in ResultReceiver cb); void onMediaButtonFromController(String packageName, int pid, int uid, ISessionControllerCallback caller, in Intent mediaButtonIntent); // These callbacks are for the TransportPerformer void onPrepare(String packageName, int pid, int uid); void onPrepareFromMediaId(String packageName, int pid, int uid, String mediaId, in Bundle extras); void onPrepareFromSearch(String packageName, int pid, int uid, String query, in Bundle extras); void onPrepareFromUri(String packageName, int pid, int uid, in Uri uri, in Bundle extras); void onPlay(String packageName, int pid, int uid); void onPlayFromMediaId(String packageName, int pid, int uid, String mediaId, in Bundle extras); void onPlayFromSearch(String packageName, int pid, int uid, String query, in Bundle extras); void onPlayFromUri(String packageName, int pid, int uid, in Uri uri, in Bundle extras); void onSkipToTrack(String packageName, int pid, int uid, long id); void onPause(String packageName, int pid, int uid); void onStop(String packageName, int pid, int uid); void onNext(String packageName, int pid, int uid); void onPrevious(String packageName, int pid, int uid); void onFastForward(String packageName, int pid, int uid); void onRewind(String packageName, int pid, int uid); void onSeekTo(String packageName, int pid, int uid, long pos); void onRate(String packageName, int pid, int uid, in Rating rating); void onCustomAction(String packageName, int pid, int uid, String action, in Bundle args); void onPrepare(String packageName, int pid, int uid, ISessionControllerCallback caller); void onPrepareFromMediaId(String packageName, int pid, int uid, ISessionControllerCallback caller, String mediaId, in Bundle extras); void onPrepareFromSearch(String packageName, int pid, int uid, ISessionControllerCallback caller, String query, in Bundle extras); void onPrepareFromUri(String packageName, int pid, int uid, ISessionControllerCallback caller, in Uri uri, in Bundle extras); void onPlay(String packageName, int pid, int uid, ISessionControllerCallback caller); void onPlayFromMediaId(String packageName, int pid, int uid, ISessionControllerCallback caller, String mediaId, in Bundle extras); void onPlayFromSearch(String packageName, int pid, int uid, ISessionControllerCallback caller, String query, in Bundle extras); void onPlayFromUri(String packageName, int pid, int uid, ISessionControllerCallback caller, in Uri uri, in Bundle extras); void onSkipToTrack(String packageName, int pid, int uid, ISessionControllerCallback caller, long id); void onPause(String packageName, int pid, int uid, ISessionControllerCallback caller); void onStop(String packageName, int pid, int uid, ISessionControllerCallback caller); void onNext(String packageName, int pid, int uid, ISessionControllerCallback caller); void onPrevious(String packageName, int pid, int uid, ISessionControllerCallback caller); void onFastForward(String packageName, int pid, int uid, ISessionControllerCallback caller); void onRewind(String packageName, int pid, int uid, ISessionControllerCallback caller); void onSeekTo(String packageName, int pid, int uid, ISessionControllerCallback caller, long pos); void onRate(String packageName, int pid, int uid, ISessionControllerCallback caller, in Rating rating); void onCustomAction(String packageName, int pid, int uid, ISessionControllerCallback caller, String action, in Bundle args); // These callbacks are for volume handling void onAdjustVolume(String packageName, int pid, int uid, int direction); void onSetVolumeTo(String packageName, int pid, int uid, int value); void onAdjustVolume(String packageName, int pid, int uid, ISessionControllerCallback caller, int direction); void onSetVolumeTo(String packageName, int pid, int uid, ISessionControllerCallback caller, int value); } media/java/android/media/session/ISessionController.aidl +36 −25 Original line number Diff line number Diff line Loading @@ -32,42 +32,53 @@ import android.view.KeyEvent; import java.util.List; /** * Interface to a MediaSession in the system. * Interface to MediaSessionRecord in the system. * @hide */ interface ISessionController { void sendCommand(String packageName, String command, in Bundle args, in ResultReceiver cb); boolean sendMediaButton(String packageName, boolean asSystemService, in KeyEvent mediaButton); void registerCallbackListener(in ISessionControllerCallback cb); void unregisterCallbackListener(in ISessionControllerCallback cb); void sendCommand(String packageName, ISessionControllerCallback caller, String command, in Bundle args, in ResultReceiver cb); boolean sendMediaButton(String packageName, ISessionControllerCallback caller, boolean asSystemService, in KeyEvent mediaButton); void registerCallbackListener(String packageName, ISessionControllerCallback cb); void unregisterCallbackListener(ISessionControllerCallback cb); boolean isTransportControlEnabled(); String getPackageName(); String getTag(); PendingIntent getLaunchPendingIntent(); long getFlags(); ParcelableVolumeInfo getVolumeAttributes(); void adjustVolume(String packageName, boolean asSystemService, int direction, int flags); void setVolumeTo(String packageName, int value, int flags); void adjustVolume(String packageName, ISessionControllerCallback caller, boolean asSystemService, int direction, int flags); void setVolumeTo(String packageName, ISessionControllerCallback caller, int value, int flags); // These commands are for the TransportControls void prepare(String packageName); void prepareFromMediaId(String packageName, String mediaId, in Bundle extras); void prepareFromSearch(String packageName, String string, in Bundle extras); void prepareFromUri(String packageName, in Uri uri, in Bundle extras); void play(String packageName); void playFromMediaId(String packageName, String mediaId, in Bundle extras); void playFromSearch(String packageName, String string, in Bundle extras); void playFromUri(String packageName, in Uri uri, in Bundle extras); void skipToQueueItem(String packageName, long id); void pause(String packageName); void stop(String packageName); void next(String packageName); void previous(String packageName); void fastForward(String packageName); void rewind(String packageName); void seekTo(String packageName, long pos); void rate(String packageName, in Rating rating); void sendCustomAction(String packageName, String action, in Bundle args); void prepare(String packageName, ISessionControllerCallback caller); void prepareFromMediaId(String packageName, ISessionControllerCallback caller, String mediaId, in Bundle extras); void prepareFromSearch(String packageName, ISessionControllerCallback caller, String string, in Bundle extras); void prepareFromUri(String packageName, ISessionControllerCallback caller, in Uri uri, in Bundle extras); void play(String packageName, ISessionControllerCallback caller); void playFromMediaId(String packageName, ISessionControllerCallback caller, String mediaId, in Bundle extras); void playFromSearch(String packageName, ISessionControllerCallback caller, String string, in Bundle extras); void playFromUri(String packageName, ISessionControllerCallback caller, in Uri uri, in Bundle extras); void skipToQueueItem(String packageName, ISessionControllerCallback caller, long id); void pause(String packageName, ISessionControllerCallback caller); void stop(String packageName, ISessionControllerCallback caller); void next(String packageName, ISessionControllerCallback caller); void previous(String packageName, ISessionControllerCallback caller); void fastForward(String packageName, ISessionControllerCallback caller); void rewind(String packageName, ISessionControllerCallback caller); void seekTo(String packageName, ISessionControllerCallback caller, long pos); void rate(String packageName, ISessionControllerCallback caller, in Rating rating); void sendCustomAction(String packageName, ISessionControllerCallback caller, String action, in Bundle args); MediaMetadata getMetadata(); PlaybackState getPlaybackState(); ParceledListSlice getQueue(); Loading media/java/android/media/session/MediaController.java +34 −32 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ public final class MediaController { * @return true if the event was sent to the session, false otherwise. */ public boolean dispatchMediaButtonEvent(@NonNull KeyEvent keyEvent) { return dispatchMediButtonEventInternal(false, keyEvent); return dispatchMediaButtonEventInternal(false, keyEvent); } /** Loading @@ -142,10 +142,10 @@ public final class MediaController { * @hide */ public boolean dispatchMediaButtonEventAsSystemService(@NonNull KeyEvent keyEvent) { return dispatchMediButtonEventInternal(true, keyEvent); return dispatchMediaButtonEventInternal(true, keyEvent); } private boolean dispatchMediButtonEventInternal(boolean asSystemService, private boolean dispatchMediaButtonEventInternal(boolean asSystemService, @NonNull KeyEvent keyEvent) { if (keyEvent == null) { throw new IllegalArgumentException("KeyEvent may not be null"); Loading @@ -154,8 +154,8 @@ public final class MediaController { return false; } try { return mSessionBinder.sendMediaButton(mContext.getPackageName(), asSystemService, keyEvent); return mSessionBinder.sendMediaButton(mContext.getPackageName(), mCbStub, asSystemService, keyEvent); } catch (RemoteException e) { // System is dead. =( } Loading Loading @@ -189,7 +189,7 @@ public final class MediaController { break; } try { mSessionBinder.adjustVolume(mContext.getPackageName(), true, direction, mSessionBinder.adjustVolume(mContext.getPackageName(), mCbStub, true, direction, AudioManager.FLAG_SHOW_UI); } catch (RemoteException e) { Log.wtf(TAG, "Error calling adjustVolumeBy", e); Loading @@ -200,7 +200,7 @@ public final class MediaController { final int flags = AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_VIBRATE | AudioManager.FLAG_FROM_KEY; try { mSessionBinder.adjustVolume(mContext.getPackageName(), true, 0, flags); mSessionBinder.adjustVolume(mContext.getPackageName(), mCbStub, true, 0, flags); } catch (RemoteException e) { Log.wtf(TAG, "Error calling adjustVolumeBy", e); } Loading Loading @@ -369,7 +369,7 @@ public final class MediaController { */ public void setVolumeTo(int value, int flags) { try { mSessionBinder.setVolumeTo(mContext.getPackageName(), value, flags); mSessionBinder.setVolumeTo(mContext.getPackageName(), mCbStub, value, flags); } catch (RemoteException e) { Log.wtf(TAG, "Error calling setVolumeTo.", e); } Loading @@ -390,7 +390,8 @@ public final class MediaController { */ public void adjustVolume(int direction, int flags) { try { mSessionBinder.adjustVolume(mContext.getPackageName(), false, direction, flags); mSessionBinder.adjustVolume(mContext.getPackageName(), mCbStub, false, direction, flags); } catch (RemoteException e) { Log.wtf(TAG, "Error calling adjustVolumeBy.", e); } Loading Loading @@ -456,7 +457,7 @@ public final class MediaController { throw new IllegalArgumentException("command cannot be null or empty"); } try { mSessionBinder.sendCommand(mContext.getPackageName(), command, args, cb); mSessionBinder.sendCommand(mContext.getPackageName(), mCbStub, command, args, cb); } catch (RemoteException e) { Log.d(TAG, "Dead object in sendCommand.", e); } Loading Loading @@ -521,7 +522,7 @@ public final class MediaController { if (!mCbRegistered) { try { mSessionBinder.registerCallbackListener(mCbStub); mSessionBinder.registerCallbackListener(mContext.getPackageName(), mCbStub); mCbRegistered = true; } catch (RemoteException e) { Log.e(TAG, "Dead object in registerCallback", e); Loading Loading @@ -668,7 +669,7 @@ public final class MediaController { */ public void prepare() { try { mSessionBinder.prepare(mContext.getPackageName()); mSessionBinder.prepare(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling prepare.", e); } Loading @@ -692,7 +693,8 @@ public final class MediaController { "You must specify a non-empty String for prepareFromMediaId."); } try { mSessionBinder.prepareFromMediaId(mContext.getPackageName(), mediaId, extras); mSessionBinder.prepareFromMediaId(mContext.getPackageName(), mCbStub, mediaId, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling prepare(" + mediaId + ").", e); } Loading @@ -718,7 +720,7 @@ public final class MediaController { query = ""; } try { mSessionBinder.prepareFromSearch(mContext.getPackageName(), query, extras); mSessionBinder.prepareFromSearch(mContext.getPackageName(), mCbStub, query, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling prepare(" + query + ").", e); } Loading @@ -742,7 +744,7 @@ public final class MediaController { "You must specify a non-empty Uri for prepareFromUri."); } try { mSessionBinder.prepareFromUri(mContext.getPackageName(), uri, extras); mSessionBinder.prepareFromUri(mContext.getPackageName(), mCbStub, uri, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling prepare(" + uri + ").", e); } Loading @@ -753,7 +755,7 @@ public final class MediaController { */ public void play() { try { mSessionBinder.play(mContext.getPackageName()); mSessionBinder.play(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling play.", e); } Loading @@ -772,7 +774,7 @@ public final class MediaController { "You must specify a non-empty String for playFromMediaId."); } try { mSessionBinder.playFromMediaId(mContext.getPackageName(), mediaId, extras); mSessionBinder.playFromMediaId(mContext.getPackageName(), mCbStub, mediaId, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling play(" + mediaId + ").", e); } Loading @@ -794,7 +796,7 @@ public final class MediaController { query = ""; } try { mSessionBinder.playFromSearch(mContext.getPackageName(), query, extras); mSessionBinder.playFromSearch(mContext.getPackageName(), mCbStub, query, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling play(" + query + ").", e); } Loading @@ -813,7 +815,7 @@ public final class MediaController { "You must specify a non-empty Uri for playFromUri."); } try { mSessionBinder.playFromUri(mContext.getPackageName(), uri, extras); mSessionBinder.playFromUri(mContext.getPackageName(), mCbStub, uri, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling play(" + uri + ").", e); } Loading @@ -825,7 +827,7 @@ public final class MediaController { */ public void skipToQueueItem(long id) { try { mSessionBinder.skipToQueueItem(mContext.getPackageName(), id); mSessionBinder.skipToQueueItem(mContext.getPackageName(), mCbStub, id); } catch (RemoteException e) { Log.wtf(TAG, "Error calling skipToItem(" + id + ").", e); } Loading @@ -837,7 +839,7 @@ public final class MediaController { */ public void pause() { try { mSessionBinder.pause(mContext.getPackageName()); mSessionBinder.pause(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling pause.", e); } Loading @@ -849,7 +851,7 @@ public final class MediaController { */ public void stop() { try { mSessionBinder.stop(mContext.getPackageName()); mSessionBinder.stop(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling stop.", e); } Loading @@ -862,7 +864,7 @@ public final class MediaController { */ public void seekTo(long pos) { try { mSessionBinder.seekTo(mContext.getPackageName(), pos); mSessionBinder.seekTo(mContext.getPackageName(), mCbStub, pos); } catch (RemoteException e) { Log.wtf(TAG, "Error calling seekTo.", e); } Loading @@ -874,7 +876,7 @@ public final class MediaController { */ public void fastForward() { try { mSessionBinder.fastForward(mContext.getPackageName()); mSessionBinder.fastForward(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling fastForward.", e); } Loading @@ -885,7 +887,7 @@ public final class MediaController { */ public void skipToNext() { try { mSessionBinder.next(mContext.getPackageName()); mSessionBinder.next(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling next.", e); } Loading @@ -897,7 +899,7 @@ public final class MediaController { */ public void rewind() { try { mSessionBinder.rewind(mContext.getPackageName()); mSessionBinder.rewind(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling rewind.", e); } Loading @@ -908,7 +910,7 @@ public final class MediaController { */ public void skipToPrevious() { try { mSessionBinder.previous(mContext.getPackageName()); mSessionBinder.previous(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling previous.", e); } Loading @@ -923,7 +925,7 @@ public final class MediaController { */ public void setRating(Rating rating) { try { mSessionBinder.rate(mContext.getPackageName(), rating); mSessionBinder.rate(mContext.getPackageName(), mCbStub, rating); } catch (RemoteException e) { Log.wtf(TAG, "Error calling rate.", e); } Loading Loading @@ -958,7 +960,7 @@ public final class MediaController { throw new IllegalArgumentException("CustomAction cannot be null."); } try { mSessionBinder.sendCustomAction(mContext.getPackageName(), action, args); mSessionBinder.sendCustomAction(mContext.getPackageName(), mCbStub, action, args); } catch (RemoteException e) { Log.d(TAG, "Dead object in sendCustomAction.", e); } Loading Loading @@ -1124,8 +1126,8 @@ public final class MediaController { public void onVolumeInfoChanged(ParcelableVolumeInfo pvi) { MediaController controller = mController.get(); if (controller != null) { PlaybackInfo info = new PlaybackInfo(pvi.volumeType, pvi.audioAttrs, pvi.controlType, pvi.maxVolume, pvi.currentVolume); PlaybackInfo info = new PlaybackInfo(pvi.volumeType, pvi.audioAttrs, pvi.controlType, pvi.maxVolume, pvi.currentVolume); controller.postMessage(MSG_UPDATE_VOLUME, info, null); } } Loading media/java/android/media/session/MediaSession.java +182 −198 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
cmds/media/src/com/android/commands/media/Media.java +19 −7 Original line number Diff line number Diff line Loading @@ -171,7 +171,6 @@ public class Media extends BaseCommand { showError("Error: unknown dispatch code '" + cmd + "'"); return; } final long now = SystemClock.uptimeMillis(); sendMediaKey(new KeyEvent(now, now, KeyEvent.ACTION_DOWN, keycode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 0, InputDevice.SOURCE_KEYBOARD)); Loading @@ -189,7 +188,6 @@ public class Media extends BaseCommand { @Override public void onSessionDestroyed() { System.out.println("onSessionDestroyed. Enter q to quit."); } @Override Loading Loading @@ -246,7 +244,7 @@ public class Media extends BaseCommand { @Override protected void onLooperPrepared() { try { mController.registerCallbackListener(ControllerMonitor.this); mController.registerCallbackListener(PACKAGE_NAME, ControllerMonitor.this); } catch (RemoteException e) { System.out.println("Error registering monitor callback"); } Loading @@ -266,13 +264,13 @@ public class Media extends BaseCommand { } else if ("q".equals(line) || "quit".equals(line)) { break; } else if ("play".equals(line)) { mController.play(PACKAGE_NAME); dispatchKeyCode(KeyEvent.KEYCODE_MEDIA_PLAY); } else if ("pause".equals(line)) { mController.pause(PACKAGE_NAME); dispatchKeyCode(KeyEvent.KEYCODE_MEDIA_PAUSE); } else if ("next".equals(line)) { mController.next(PACKAGE_NAME); dispatchKeyCode(KeyEvent.KEYCODE_MEDIA_NEXT); } else if ("previous".equals(line)) { mController.previous(PACKAGE_NAME); dispatchKeyCode(KeyEvent.KEYCODE_MEDIA_PREVIOUS); } else { System.out.println("Invalid command: " + line); } Loading @@ -295,6 +293,20 @@ public class Media extends BaseCommand { } } } private void dispatchKeyCode(int keyCode) { final long now = SystemClock.uptimeMillis(); KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 0, InputDevice.SOURCE_KEYBOARD); KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 0, InputDevice.SOURCE_KEYBOARD); try { mController.sendMediaButton(PACKAGE_NAME, null, false, down); mController.sendMediaButton(PACKAGE_NAME, null, false, up); } catch (RemoteException e) { System.out.println("Failed to dispatch " + keyCode); } } } private void runListSessions() { Loading
media/java/android/media/session/ISessionCallback.aidl +37 −23 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.media.session; import android.content.Intent; import android.media.Rating; import android.media.session.ISessionControllerCallback; import android.net.Uri; import android.os.Bundle; import android.os.ResultReceiver; Loading @@ -25,33 +26,46 @@ import android.os.ResultReceiver; * @hide */ oneway interface ISessionCallback { void onCommand(String packageName, int pid, int uid, String command, in Bundle args, in ResultReceiver cb); void onCommand(String packageName, int pid, int uid, ISessionControllerCallback caller, String command, in Bundle args, in ResultReceiver cb); void onMediaButton(String packageName, int pid, int uid, in Intent mediaButtonIntent, int sequenceNumber, in ResultReceiver cb); void onMediaButtonFromController(String packageName, int pid, int uid, ISessionControllerCallback caller, in Intent mediaButtonIntent); // These callbacks are for the TransportPerformer void onPrepare(String packageName, int pid, int uid); void onPrepareFromMediaId(String packageName, int pid, int uid, String mediaId, in Bundle extras); void onPrepareFromSearch(String packageName, int pid, int uid, String query, in Bundle extras); void onPrepareFromUri(String packageName, int pid, int uid, in Uri uri, in Bundle extras); void onPlay(String packageName, int pid, int uid); void onPlayFromMediaId(String packageName, int pid, int uid, String mediaId, in Bundle extras); void onPlayFromSearch(String packageName, int pid, int uid, String query, in Bundle extras); void onPlayFromUri(String packageName, int pid, int uid, in Uri uri, in Bundle extras); void onSkipToTrack(String packageName, int pid, int uid, long id); void onPause(String packageName, int pid, int uid); void onStop(String packageName, int pid, int uid); void onNext(String packageName, int pid, int uid); void onPrevious(String packageName, int pid, int uid); void onFastForward(String packageName, int pid, int uid); void onRewind(String packageName, int pid, int uid); void onSeekTo(String packageName, int pid, int uid, long pos); void onRate(String packageName, int pid, int uid, in Rating rating); void onCustomAction(String packageName, int pid, int uid, String action, in Bundle args); void onPrepare(String packageName, int pid, int uid, ISessionControllerCallback caller); void onPrepareFromMediaId(String packageName, int pid, int uid, ISessionControllerCallback caller, String mediaId, in Bundle extras); void onPrepareFromSearch(String packageName, int pid, int uid, ISessionControllerCallback caller, String query, in Bundle extras); void onPrepareFromUri(String packageName, int pid, int uid, ISessionControllerCallback caller, in Uri uri, in Bundle extras); void onPlay(String packageName, int pid, int uid, ISessionControllerCallback caller); void onPlayFromMediaId(String packageName, int pid, int uid, ISessionControllerCallback caller, String mediaId, in Bundle extras); void onPlayFromSearch(String packageName, int pid, int uid, ISessionControllerCallback caller, String query, in Bundle extras); void onPlayFromUri(String packageName, int pid, int uid, ISessionControllerCallback caller, in Uri uri, in Bundle extras); void onSkipToTrack(String packageName, int pid, int uid, ISessionControllerCallback caller, long id); void onPause(String packageName, int pid, int uid, ISessionControllerCallback caller); void onStop(String packageName, int pid, int uid, ISessionControllerCallback caller); void onNext(String packageName, int pid, int uid, ISessionControllerCallback caller); void onPrevious(String packageName, int pid, int uid, ISessionControllerCallback caller); void onFastForward(String packageName, int pid, int uid, ISessionControllerCallback caller); void onRewind(String packageName, int pid, int uid, ISessionControllerCallback caller); void onSeekTo(String packageName, int pid, int uid, ISessionControllerCallback caller, long pos); void onRate(String packageName, int pid, int uid, ISessionControllerCallback caller, in Rating rating); void onCustomAction(String packageName, int pid, int uid, ISessionControllerCallback caller, String action, in Bundle args); // These callbacks are for volume handling void onAdjustVolume(String packageName, int pid, int uid, int direction); void onSetVolumeTo(String packageName, int pid, int uid, int value); void onAdjustVolume(String packageName, int pid, int uid, ISessionControllerCallback caller, int direction); void onSetVolumeTo(String packageName, int pid, int uid, ISessionControllerCallback caller, int value); }
media/java/android/media/session/ISessionController.aidl +36 −25 Original line number Diff line number Diff line Loading @@ -32,42 +32,53 @@ import android.view.KeyEvent; import java.util.List; /** * Interface to a MediaSession in the system. * Interface to MediaSessionRecord in the system. * @hide */ interface ISessionController { void sendCommand(String packageName, String command, in Bundle args, in ResultReceiver cb); boolean sendMediaButton(String packageName, boolean asSystemService, in KeyEvent mediaButton); void registerCallbackListener(in ISessionControllerCallback cb); void unregisterCallbackListener(in ISessionControllerCallback cb); void sendCommand(String packageName, ISessionControllerCallback caller, String command, in Bundle args, in ResultReceiver cb); boolean sendMediaButton(String packageName, ISessionControllerCallback caller, boolean asSystemService, in KeyEvent mediaButton); void registerCallbackListener(String packageName, ISessionControllerCallback cb); void unregisterCallbackListener(ISessionControllerCallback cb); boolean isTransportControlEnabled(); String getPackageName(); String getTag(); PendingIntent getLaunchPendingIntent(); long getFlags(); ParcelableVolumeInfo getVolumeAttributes(); void adjustVolume(String packageName, boolean asSystemService, int direction, int flags); void setVolumeTo(String packageName, int value, int flags); void adjustVolume(String packageName, ISessionControllerCallback caller, boolean asSystemService, int direction, int flags); void setVolumeTo(String packageName, ISessionControllerCallback caller, int value, int flags); // These commands are for the TransportControls void prepare(String packageName); void prepareFromMediaId(String packageName, String mediaId, in Bundle extras); void prepareFromSearch(String packageName, String string, in Bundle extras); void prepareFromUri(String packageName, in Uri uri, in Bundle extras); void play(String packageName); void playFromMediaId(String packageName, String mediaId, in Bundle extras); void playFromSearch(String packageName, String string, in Bundle extras); void playFromUri(String packageName, in Uri uri, in Bundle extras); void skipToQueueItem(String packageName, long id); void pause(String packageName); void stop(String packageName); void next(String packageName); void previous(String packageName); void fastForward(String packageName); void rewind(String packageName); void seekTo(String packageName, long pos); void rate(String packageName, in Rating rating); void sendCustomAction(String packageName, String action, in Bundle args); void prepare(String packageName, ISessionControllerCallback caller); void prepareFromMediaId(String packageName, ISessionControllerCallback caller, String mediaId, in Bundle extras); void prepareFromSearch(String packageName, ISessionControllerCallback caller, String string, in Bundle extras); void prepareFromUri(String packageName, ISessionControllerCallback caller, in Uri uri, in Bundle extras); void play(String packageName, ISessionControllerCallback caller); void playFromMediaId(String packageName, ISessionControllerCallback caller, String mediaId, in Bundle extras); void playFromSearch(String packageName, ISessionControllerCallback caller, String string, in Bundle extras); void playFromUri(String packageName, ISessionControllerCallback caller, in Uri uri, in Bundle extras); void skipToQueueItem(String packageName, ISessionControllerCallback caller, long id); void pause(String packageName, ISessionControllerCallback caller); void stop(String packageName, ISessionControllerCallback caller); void next(String packageName, ISessionControllerCallback caller); void previous(String packageName, ISessionControllerCallback caller); void fastForward(String packageName, ISessionControllerCallback caller); void rewind(String packageName, ISessionControllerCallback caller); void seekTo(String packageName, ISessionControllerCallback caller, long pos); void rate(String packageName, ISessionControllerCallback caller, in Rating rating); void sendCustomAction(String packageName, ISessionControllerCallback caller, String action, in Bundle args); MediaMetadata getMetadata(); PlaybackState getPlaybackState(); ParceledListSlice getQueue(); Loading
media/java/android/media/session/MediaController.java +34 −32 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ public final class MediaController { * @return true if the event was sent to the session, false otherwise. */ public boolean dispatchMediaButtonEvent(@NonNull KeyEvent keyEvent) { return dispatchMediButtonEventInternal(false, keyEvent); return dispatchMediaButtonEventInternal(false, keyEvent); } /** Loading @@ -142,10 +142,10 @@ public final class MediaController { * @hide */ public boolean dispatchMediaButtonEventAsSystemService(@NonNull KeyEvent keyEvent) { return dispatchMediButtonEventInternal(true, keyEvent); return dispatchMediaButtonEventInternal(true, keyEvent); } private boolean dispatchMediButtonEventInternal(boolean asSystemService, private boolean dispatchMediaButtonEventInternal(boolean asSystemService, @NonNull KeyEvent keyEvent) { if (keyEvent == null) { throw new IllegalArgumentException("KeyEvent may not be null"); Loading @@ -154,8 +154,8 @@ public final class MediaController { return false; } try { return mSessionBinder.sendMediaButton(mContext.getPackageName(), asSystemService, keyEvent); return mSessionBinder.sendMediaButton(mContext.getPackageName(), mCbStub, asSystemService, keyEvent); } catch (RemoteException e) { // System is dead. =( } Loading Loading @@ -189,7 +189,7 @@ public final class MediaController { break; } try { mSessionBinder.adjustVolume(mContext.getPackageName(), true, direction, mSessionBinder.adjustVolume(mContext.getPackageName(), mCbStub, true, direction, AudioManager.FLAG_SHOW_UI); } catch (RemoteException e) { Log.wtf(TAG, "Error calling adjustVolumeBy", e); Loading @@ -200,7 +200,7 @@ public final class MediaController { final int flags = AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_VIBRATE | AudioManager.FLAG_FROM_KEY; try { mSessionBinder.adjustVolume(mContext.getPackageName(), true, 0, flags); mSessionBinder.adjustVolume(mContext.getPackageName(), mCbStub, true, 0, flags); } catch (RemoteException e) { Log.wtf(TAG, "Error calling adjustVolumeBy", e); } Loading Loading @@ -369,7 +369,7 @@ public final class MediaController { */ public void setVolumeTo(int value, int flags) { try { mSessionBinder.setVolumeTo(mContext.getPackageName(), value, flags); mSessionBinder.setVolumeTo(mContext.getPackageName(), mCbStub, value, flags); } catch (RemoteException e) { Log.wtf(TAG, "Error calling setVolumeTo.", e); } Loading @@ -390,7 +390,8 @@ public final class MediaController { */ public void adjustVolume(int direction, int flags) { try { mSessionBinder.adjustVolume(mContext.getPackageName(), false, direction, flags); mSessionBinder.adjustVolume(mContext.getPackageName(), mCbStub, false, direction, flags); } catch (RemoteException e) { Log.wtf(TAG, "Error calling adjustVolumeBy.", e); } Loading Loading @@ -456,7 +457,7 @@ public final class MediaController { throw new IllegalArgumentException("command cannot be null or empty"); } try { mSessionBinder.sendCommand(mContext.getPackageName(), command, args, cb); mSessionBinder.sendCommand(mContext.getPackageName(), mCbStub, command, args, cb); } catch (RemoteException e) { Log.d(TAG, "Dead object in sendCommand.", e); } Loading Loading @@ -521,7 +522,7 @@ public final class MediaController { if (!mCbRegistered) { try { mSessionBinder.registerCallbackListener(mCbStub); mSessionBinder.registerCallbackListener(mContext.getPackageName(), mCbStub); mCbRegistered = true; } catch (RemoteException e) { Log.e(TAG, "Dead object in registerCallback", e); Loading Loading @@ -668,7 +669,7 @@ public final class MediaController { */ public void prepare() { try { mSessionBinder.prepare(mContext.getPackageName()); mSessionBinder.prepare(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling prepare.", e); } Loading @@ -692,7 +693,8 @@ public final class MediaController { "You must specify a non-empty String for prepareFromMediaId."); } try { mSessionBinder.prepareFromMediaId(mContext.getPackageName(), mediaId, extras); mSessionBinder.prepareFromMediaId(mContext.getPackageName(), mCbStub, mediaId, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling prepare(" + mediaId + ").", e); } Loading @@ -718,7 +720,7 @@ public final class MediaController { query = ""; } try { mSessionBinder.prepareFromSearch(mContext.getPackageName(), query, extras); mSessionBinder.prepareFromSearch(mContext.getPackageName(), mCbStub, query, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling prepare(" + query + ").", e); } Loading @@ -742,7 +744,7 @@ public final class MediaController { "You must specify a non-empty Uri for prepareFromUri."); } try { mSessionBinder.prepareFromUri(mContext.getPackageName(), uri, extras); mSessionBinder.prepareFromUri(mContext.getPackageName(), mCbStub, uri, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling prepare(" + uri + ").", e); } Loading @@ -753,7 +755,7 @@ public final class MediaController { */ public void play() { try { mSessionBinder.play(mContext.getPackageName()); mSessionBinder.play(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling play.", e); } Loading @@ -772,7 +774,7 @@ public final class MediaController { "You must specify a non-empty String for playFromMediaId."); } try { mSessionBinder.playFromMediaId(mContext.getPackageName(), mediaId, extras); mSessionBinder.playFromMediaId(mContext.getPackageName(), mCbStub, mediaId, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling play(" + mediaId + ").", e); } Loading @@ -794,7 +796,7 @@ public final class MediaController { query = ""; } try { mSessionBinder.playFromSearch(mContext.getPackageName(), query, extras); mSessionBinder.playFromSearch(mContext.getPackageName(), mCbStub, query, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling play(" + query + ").", e); } Loading @@ -813,7 +815,7 @@ public final class MediaController { "You must specify a non-empty Uri for playFromUri."); } try { mSessionBinder.playFromUri(mContext.getPackageName(), uri, extras); mSessionBinder.playFromUri(mContext.getPackageName(), mCbStub, uri, extras); } catch (RemoteException e) { Log.wtf(TAG, "Error calling play(" + uri + ").", e); } Loading @@ -825,7 +827,7 @@ public final class MediaController { */ public void skipToQueueItem(long id) { try { mSessionBinder.skipToQueueItem(mContext.getPackageName(), id); mSessionBinder.skipToQueueItem(mContext.getPackageName(), mCbStub, id); } catch (RemoteException e) { Log.wtf(TAG, "Error calling skipToItem(" + id + ").", e); } Loading @@ -837,7 +839,7 @@ public final class MediaController { */ public void pause() { try { mSessionBinder.pause(mContext.getPackageName()); mSessionBinder.pause(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling pause.", e); } Loading @@ -849,7 +851,7 @@ public final class MediaController { */ public void stop() { try { mSessionBinder.stop(mContext.getPackageName()); mSessionBinder.stop(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling stop.", e); } Loading @@ -862,7 +864,7 @@ public final class MediaController { */ public void seekTo(long pos) { try { mSessionBinder.seekTo(mContext.getPackageName(), pos); mSessionBinder.seekTo(mContext.getPackageName(), mCbStub, pos); } catch (RemoteException e) { Log.wtf(TAG, "Error calling seekTo.", e); } Loading @@ -874,7 +876,7 @@ public final class MediaController { */ public void fastForward() { try { mSessionBinder.fastForward(mContext.getPackageName()); mSessionBinder.fastForward(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling fastForward.", e); } Loading @@ -885,7 +887,7 @@ public final class MediaController { */ public void skipToNext() { try { mSessionBinder.next(mContext.getPackageName()); mSessionBinder.next(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling next.", e); } Loading @@ -897,7 +899,7 @@ public final class MediaController { */ public void rewind() { try { mSessionBinder.rewind(mContext.getPackageName()); mSessionBinder.rewind(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling rewind.", e); } Loading @@ -908,7 +910,7 @@ public final class MediaController { */ public void skipToPrevious() { try { mSessionBinder.previous(mContext.getPackageName()); mSessionBinder.previous(mContext.getPackageName(), mCbStub); } catch (RemoteException e) { Log.wtf(TAG, "Error calling previous.", e); } Loading @@ -923,7 +925,7 @@ public final class MediaController { */ public void setRating(Rating rating) { try { mSessionBinder.rate(mContext.getPackageName(), rating); mSessionBinder.rate(mContext.getPackageName(), mCbStub, rating); } catch (RemoteException e) { Log.wtf(TAG, "Error calling rate.", e); } Loading Loading @@ -958,7 +960,7 @@ public final class MediaController { throw new IllegalArgumentException("CustomAction cannot be null."); } try { mSessionBinder.sendCustomAction(mContext.getPackageName(), action, args); mSessionBinder.sendCustomAction(mContext.getPackageName(), mCbStub, action, args); } catch (RemoteException e) { Log.d(TAG, "Dead object in sendCustomAction.", e); } Loading Loading @@ -1124,8 +1126,8 @@ public final class MediaController { public void onVolumeInfoChanged(ParcelableVolumeInfo pvi) { MediaController controller = mController.get(); if (controller != null) { PlaybackInfo info = new PlaybackInfo(pvi.volumeType, pvi.audioAttrs, pvi.controlType, pvi.maxVolume, pvi.currentVolume); PlaybackInfo info = new PlaybackInfo(pvi.volumeType, pvi.audioAttrs, pvi.controlType, pvi.maxVolume, pvi.currentVolume); controller.postMessage(MSG_UPDATE_VOLUME, info, null); } } Loading
media/java/android/media/session/MediaSession.java +182 −198 File changed.Preview size limit exceeded, changes collapsed. Show changes