private void handleSessionStatusChange(String sid) { if (mSessionReceiver != null) { Intent intent = new Intent(); intent.putExtra(MediaControlIntent.EXTRA_SESSION_ID, sid); intent.putExtra(MediaControlIntent.EXTRA_SESSION_STATUS, mSessionManager.getSessionStatus(sid).asBundle()); try { mSessionReceiver.send(getContext(), 0, intent); Log.d(TAG, mRouteId + ": Sending session status update from provider"); } catch (PendingIntent.CanceledException e) { Log.d(TAG, mRouteId + ": Failed to send session status update!"); } } } }
private boolean handleGetSessionStatus(Intent intent, ControlRequestCallback callback) { String sid = intent.getStringExtra(MediaControlIntent.EXTRA_SESSION_ID); MediaSessionStatus sessionStatus = mSessionManager.getSessionStatus(sid); if (callback != null) { if (sessionStatus != null) { Bundle result = new Bundle(); result.putBundle(MediaControlIntent.EXTRA_SESSION_STATUS, mSessionManager.getSessionStatus(sid).asBundle()); callback.onResult(result); } else { callback.onError("Failed to get session status, sid=" + sid, null); } } return (sessionStatus != null); }
private boolean handleStartSession(Intent intent, ControlRequestCallback callback) { String sid = mSessionManager.startSession(); Log.d(TAG, "StartSession returns sessionId "+sid); if (callback != null) { if (sid != null) { Bundle result = new Bundle(); result.putString(MediaControlIntent.EXTRA_SESSION_ID, sid); result.putBundle(MediaControlIntent.EXTRA_SESSION_STATUS, mSessionManager.getSessionStatus(sid).asBundle()); callback.onResult(result); mSessionReceiver = (PendingIntent)intent.getParcelableExtra( MediaControlIntent.EXTRA_SESSION_STATUS_UPDATE_RECEIVER); handleSessionStatusChange(sid); } else { callback.onError("Failed to start session.", null); } } return (sid != null); }
private boolean handleEndSession(Intent intent, ControlRequestCallback callback) { String sid = intent.getStringExtra(MediaControlIntent.EXTRA_SESSION_ID); boolean success = (sid != null) && sid.equals(mSessionManager.getSessionId()) && mSessionManager.endSession(); if (callback != null) { if (success) { Bundle result = new Bundle(); MediaSessionStatus sessionStatus = new MediaSessionStatus.Builder( MediaSessionStatus.SESSION_STATE_ENDED).build(); result.putBundle(MediaControlIntent.EXTRA_SESSION_STATUS, sessionStatus.asBundle()); callback.onResult(result); handleSessionStatusChange(sid); mSessionReceiver = null; } else { callback.onError("Failed to end session, sid=" + sid, null); } } return success; }