private void initMediaSession() { mMediaSession = new MediaSession(mContext, MEDIA_SESSION_TAG); mMediaSession.setCallback(new MediaSession.Callback() { @Override public boolean onMediaButtonEvent(Intent mediaButtonIntent) { // Consume the media button event here. Should not send it to other apps. return true; } }); mMediaSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); if (!mMediaSession.isActive()) { mMediaSession.setActive(true); } }
private void setupMediaSession() { ComponentName mediaButtonReceiverComponentName = new ComponentName(getApplicationContext(), MediaButtonIntentReceiver.class); Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); mediaButtonIntent.setComponent(mediaButtonReceiverComponentName); PendingIntent mediaButtonReceiverPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0); mediaSession = new MediaSessionCompat(this, "RetroMusicPlayer", mediaButtonReceiverComponentName, mediaButtonReceiverPendingIntent); mediaSession.setCallback(new MediaSessionCompat.Callback() { @Override public void onPlay() { play(); } @Override public void onPause() { pause(); } @Override public void onSkipToNext() { playNextSong(true); } @Override public void onSkipToPrevious() { back(true); } @Override public void onStop() { quit(); } @Override public void onSeekTo(long pos) { seek((int) pos); } @Override public boolean onMediaButtonEvent(Intent mediaButtonEvent) { return MediaButtonIntentReceiver.handleIntent(MusicService.this, mediaButtonEvent); } }); mediaSession.setFlags(MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS | MediaSession.FLAG_HANDLES_MEDIA_BUTTONS); mediaSession.setMediaButtonReceiver(mediaButtonReceiverPendingIntent); }
@Override public void onCreate() { Log.d (TAG, "onCreate() " + this) ; super.onCreate(); // Start a new MediaSession mediaSession = new MediaSession(this, "MuziKarMusicService"); mediaSession.setCallback(mediaSessionCallback); mediaSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); setSessionToken(mediaSession.getSessionToken()); playbackControlEventBroadcastReceiver = new PlaybackControlEventBroadcastReceiver(this); audioPlaybackHelper = new AudioPlaybackHelper(getApplicationContext(), new AudioPlaybackHelper.PlayStateChangeCallback() { @Override public void onPlaybackStatusChanged(PlaybackState state) { mediaSession.setPlaybackState(state); playbackControlEventBroadcastReceiver.update(audioPlaybackHelper.getCurrentMedia(), state, getSessionToken()); } }); carConnectStatusBroadcastReceiver = new CarConnectStatusBroadcastReceiver( this ) ; }
private static List<MediaSession.QueueItem> convertToQueue( Iterable<MediaMetadata> tracks, String... categories) { List<MediaSession.QueueItem> queue = new ArrayList<>(); int count = 0; for (MediaMetadata track : tracks) { // We create a hierarchy-aware mediaID, so we know what the queue is about by looking // at the QueueItem media IDs. String hierarchyAwareMediaID = MediaIDHelper.createMediaID( track.getDescription().getMediaId(), categories); MediaMetadata trackCopy = new MediaMetadata.Builder(track) .putString(MediaMetadata.METADATA_KEY_MEDIA_ID, hierarchyAwareMediaID) .build(); // We don't expect queues to change after created, so we use the item index as the // queueId. Any other number unique in the queue would work. MediaSession.QueueItem item = new MediaSession.QueueItem( trackCopy.getDescription(), count++); queue.add(item); } return queue; }
/** * Create a random queue. * * @param musicProvider the provider used for fetching music. * @return list containing {@link MediaSession.QueueItem}'s */ public static List<MediaSession.QueueItem> getRandomQueue(MusicProvider musicProvider) { List<MediaMetadata> result = new ArrayList<>(); for (String genre: musicProvider.getGenres()) { Iterable<MediaMetadata> tracks = musicProvider.getMusicsByGenre(genre); for (MediaMetadata track: tracks) { if (ThreadLocalRandom.current().nextBoolean()) { result.add(track); } } } LogHelper.d(TAG, "getRandomQueue: result.size=", result.size()); Collections.shuffle(result); return convertToQueue(result, MEDIA_ID_MUSICS_BY_SEARCH, "random"); }
private boolean equalsQueue(List<MediaSession.QueueItem> list1, List<MediaSession.QueueItem> list2) { if (list1 == list2) { return true; } if (list1 == null || list2 == null) { return false; } if (list1.size() != list2.size()) { return false; } for (int i=0; i<list1.size(); i++) { if (list1.get(i).getQueueId() != list2.get(i).getQueueId()) { return false; } if (!TextUtils.equals(list1.get(i).getDescription().getMediaId(), list2.get(i).getDescription().getMediaId())) { return false; } } return true; }
private void connectToSession(MediaSession.Token token) { MediaController mediaController = new MediaController(this, token); setMediaController(mediaController); mediaController.registerCallback(mMediaControllerCallback); if (shouldShowControls()) { showPlaybackControls(); } else { LogHelper.d(TAG, "connectionCallback.onConnected: " + "hiding controls because metadata is null"); hidePlaybackControls(); } if (mControlsFragment != null) { mControlsFragment.onConnected(); } onMediaControllerConnected(); }
private void connectToSession(MediaSession.Token token) { MediaController mediaController = new MediaController(FullScreenPlayerActivity.this, token); if (mediaController.getMetadata() == null) { finish(); return; } setMediaController(mediaController); mediaController.registerCallback(mCallback); PlaybackState state = mediaController.getPlaybackState(); updatePlaybackState(state); MediaMetadata metadata = mediaController.getMetadata(); if (metadata != null) { updateMediaDescription(metadata.getDescription()); updateDuration(metadata); } updateProgress(); if (state != null && (state.getState() == PlaybackState.STATE_PLAYING || state.getState() == PlaybackState.STATE_BUFFERING)) { scheduleSeekbarUpdate(); } }
public static void updateMediaSession(boolean updateMetadata, MediaMetadata.Builder mediaBuilder, final MediaSession mediaSession, final int playbackState, final long position, final float speed) { if (mediaSession.isActive()) { if (updateMetadata) { mediaSession.setMetadata(mediaBuilder.build()); } PlaybackState.Builder stateBuilder = new PlaybackState.Builder(); stateBuilder.setState(playbackState, position, speed); mediaSession.setPlaybackState(stateBuilder.build()); } }
@Override public void onCreate() { super.onCreate(); // Start a new MediaSession mSession = new MediaSession(this, "MusicService"); mSession.setCallback(mCallback); mSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); setSessionToken(mSession.getSessionToken()); final MediaNotificationManager mediaNotificationManager = new MediaNotificationManager(this); mPlayback = new PlaybackManager(this, new PlaybackManager.Callback() { @Override public void onPlaybackStatusChanged(PlaybackState state) { mSession.setPlaybackState(state); mediaNotificationManager.update(mPlayback.getCurrentMedia(), state, getSessionToken()); } }); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override protected MediaSession create() throws Exception { final MediaSession newMediaSession = new MediaSession( PlaybackService.this, mediaSessionTag); newMediaSession.setFlags( MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); newMediaSession.setCallback(new MediaSessionCallbackReceiver(PlaybackService.this)); final Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); mediaButtonIntent.setComponent(remoteControlReceiver.getObject()); final PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(PlaybackService.this, 0, mediaButtonIntent, 0); newMediaSession.setMediaButtonReceiver(mediaPendingIntent); return newMediaSession; }
@Override public void updatePlaylist(List<DownloadFile> playlist) { List<MediaSession.QueueItem> queue = new ArrayList<>(); for(DownloadFile file: playlist) { Entry entry = file.getSong(); MediaDescription description = new MediaDescription.Builder() .setMediaId(entry.getId()) .setTitle(entry.getTitle()) .setSubtitle(entry.getAlbumDisplay()) .build(); MediaSession.QueueItem item = new MediaSession.QueueItem(description, entry.getId().hashCode()); queue.add(item); } mediaSession.setQueue(queue); currentQueue = playlist; }
@Override void setup() { mHandlerThread = new HandlerThread(getClass().getName(), Process.THREAD_PRIORITY_BACKGROUND); mHandlerThread.start(); mMediaSession = new MediaSession(mService, mService.getClass().getName()); mMediaSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS|MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); mMediaSession.setCallback(new Callback(), new Handler(mHandlerThread.getLooper())); mMediaSession.setMediaButtonReceiver(PendingIntent.getBroadcast( mService, 1, new Intent(mService, MediaButtonIntentReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT )); mMediaSession.setSessionActivity(PendingIntent.getActivity( mService, 2, NavUtils.makeLauncherIntent(mService), PendingIntent.FLAG_UPDATE_CURRENT )); }
@DebugLog @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static List<MediaSession.QueueItem> buildQueueList(Context context, long[] songs) { List<MediaSession.QueueItem> list = new ArrayList<>(15); if (songs.length == 0) return list; final OrderPreservingCursor c = new OrderPreservingCursor(context, songs, MusicProvider.RECENTS_URI, Projections.RECENT_SONGS, "", null); c.moveToFirst(); int ii=0; do { list.add(new MediaSession.QueueItem( new MediaDescription.Builder() .setTitle(c.getString(c.getColumnIndex(MusicStore.Cols.NAME))) .setSubtitle(c.getString(c.getColumnIndex(MusicStore.Cols.ARTIST_NAME))) .setMediaId(c.getString(c.getColumnIndex(MusicStore.Cols.IDENTITY))) .build(), songs[ii] )); } while (c.moveToNext() && ++ii<15); c.close(); return list; }
@Override public void onCreate() { super.onCreate(); mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); mMediaSession = new MediaSession(this, TAG); setUpCallBack(); mNotifications = new ArrayList<Botification>(); final IntentFilter filter = new IntentFilter(); filter.addAction(SERVICECMD); // Attach the broadcast listener mSharedPref = PreferenceManager.getDefaultSharedPreferences(this); mHandler = new Handler(){ public void handleMessage(Message msg){ resetNotify(true); } }; }
/** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.playback_controls); loadViews(); setupCallbacks(); mSession = new MediaSession(this, "LeanbackSampleApp"); mSession.setCallback(new MediaSessionCallback()); mSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); mSession.setActive(true); }
@Override public void onCreate() { super.onCreate(); ApplicationLoader.postInitApplication(); lastSelectedDialog = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE).getInt("auto_lastSelectedDialog", 0); mediaSession = new MediaSession(this, "MusicService"); setSessionToken(mediaSession.getSessionToken()); mediaSession.setCallback(new MediaSessionCallback()); mediaSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); Context context = getApplicationContext(); Intent intent = new Intent(context, LaunchActivity.class); PendingIntent pi = PendingIntent.getActivity(context, 99, intent, PendingIntent.FLAG_UPDATE_CURRENT); mediaSession.setSessionActivity(pi); Bundle extras = new Bundle(); extras.putBoolean(SLOT_RESERVATION_QUEUE, true); extras.putBoolean(SLOT_RESERVATION_SKIP_TO_PREV, true); extras.putBoolean(SLOT_RESERVATION_SKIP_TO_NEXT, true); mediaSession.setExtras(extras); updatePlaybackState(null); NotificationCenter.getInstance().addObserver(this, NotificationCenter.audioPlayStateChanged); NotificationCenter.getInstance().addObserver(this, NotificationCenter.audioDidStarted); NotificationCenter.getInstance().addObserver(this, NotificationCenter.audioDidReset); }
@Override public void onPlayFromMediaId(String mediaId, Bundle extras) { String args[] = mediaId.split("_"); if (args.length != 2) { return; } try { int did = Integer.parseInt(args[0]); int id = Integer.parseInt(args[1]); ArrayList<MessageObject> arrayList = musicObjects.get(did); ArrayList<MediaSession.QueueItem> arrayList1 = musicQueues.get(did); if (arrayList == null || id < 0 || id >= arrayList.size()) { return; } lastSelectedDialog = did; ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE).edit().putInt("auto_lastSelectedDialog", did).commit(); MediaController.getInstance().setPlaylist(arrayList, arrayList.get(id), false); mediaSession.setQueue(arrayList1); if (did > 0) { TLRPC.User user = users.get(did); if (user != null) { mediaSession.setQueueTitle(ContactsController.formatName(user.first_name, user.last_name)); } else { mediaSession.setQueueTitle("DELETED USER"); } } else { TLRPC.Chat chat = chats.get(-did); if (chat != null) { mediaSession.setQueueTitle(chat.title); } else { mediaSession.setQueueTitle("DELETED CHAT"); } } } catch (Exception e) { FileLog.e("tmessages", e); } handlePlayRequest(); }
public static MediaAppEntry fromSessionToken(MediaSession.Token sessionToken, String appName, String packageName, Drawable appIcon) { return new MediaAppEntry(appName, packageName, appIcon) { @Override public void getSessionToken(Context context, SessionTokenAvailableCallback callback) { callback.onSuccess(MediaSessionCompat.Token.fromToken(sessionToken)); } }; }
private void setupMediaSession() { ComponentName mediaButtonReceiverComponentName = new ComponentName(getApplicationContext(), MediaButtonIntentReceiver.class); Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); mediaButtonIntent.setComponent(mediaButtonReceiverComponentName); PendingIntent mediaButtonReceiverPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0); mediaSession = new MediaSessionCompat(this, "Phonograph", mediaButtonReceiverComponentName, mediaButtonReceiverPendingIntent); mediaSession.setCallback(new MediaSessionCompat.Callback() { @Override public void onPlay() { play(); } @Override public void onPause() { pause(); } @Override public void onSkipToNext() { playNextSong(true); } @Override public void onSkipToPrevious() { back(true); } @Override public void onStop() { quit(); } @Override public void onSeekTo(long pos) { seek((int) pos); } @Override public boolean onMediaButtonEvent(Intent mediaButtonEvent) { return MediaButtonIntentReceiver.handleIntent(MusicService.this, mediaButtonEvent); } }); mediaSession.setFlags(MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS | MediaSession.FLAG_HANDLES_MEDIA_BUTTONS); mediaSession.setMediaButtonReceiver(mediaButtonReceiverPendingIntent); }
@Override public void onCreate() { super.onCreate(); sInstance = this; mContext = this; mSession = new MediaSession(this, "WearBrowserService"); setSessionToken(mSession.getSessionToken()); mSession.setCallback(new MediaSessionCallback()); mSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); }
public static void setQueue(Object sessionObj, List<Object> queueObjs) { if (queueObjs == null) { ((MediaSession) sessionObj).setQueue(null); return; } ArrayList<android.media.session.MediaSession.QueueItem> queue = new ArrayList(); Iterator i$ = queueObjs.iterator(); while (i$.hasNext()) { queue.add((android.media.session.MediaSession.QueueItem) i$.next()); } ((MediaSession) sessionObj).setQueue(queue); }
public void setMediaSessionCompat(MediaSession mediaSession) { if (mediaSession == null) { return; } mNotificationBuilder.setStyle(new Notification.MediaStyle().setMediaSession(mediaSession.getSessionToken())); }