Rename methods of RouteController.

Add basic support for returning stream ids.

Change-Id: Iaa11980e6195e23bd598075cb066c6234f000198
This commit is contained in:
Jeff Brown
2013-03-22 19:46:23 -07:00
parent d4f9f64beb
commit fbe0890bb4
2 changed files with 36 additions and 11 deletions

View File

@@ -32,6 +32,8 @@ import android.support.v7.media.MediaRouter.ControlRequestCallback;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import java.util.UUID;
/** /**
* Demonstrates how to create a custom media route provider. * Demonstrates how to create a custom media route provider.
* *
@@ -138,6 +140,10 @@ final class SampleMediaRouteProvider extends MediaRouteProvider {
setDescriptor(providerDescriptor); setDescriptor(providerDescriptor);
} }
private String generateStreamId() {
return UUID.randomUUID().toString();
}
private final class SampleRouteController extends MediaRouteProvider.RouteController { private final class SampleRouteController extends MediaRouteProvider.RouteController {
private final String mRouteId; private final String mRouteId;
@@ -147,22 +153,22 @@ final class SampleMediaRouteProvider extends MediaRouteProvider {
} }
@Override @Override
public void release() { public void onRelease() {
Log.d(TAG, mRouteId + ": Controller released"); Log.d(TAG, mRouteId + ": Controller released");
} }
@Override @Override
public void select() { public void onSelect() {
Log.d(TAG, mRouteId + ": Selected"); Log.d(TAG, mRouteId + ": Selected");
} }
@Override @Override
public void unselect() { public void onUnselect() {
Log.d(TAG, mRouteId + ": Unselected"); Log.d(TAG, mRouteId + ": Unselected");
} }
@Override @Override
public void setVolume(int volume) { public void onSetVolume(int volume) {
Log.d(TAG, mRouteId + ": Set volume to " + volume); Log.d(TAG, mRouteId + ": Set volume to " + volume);
if (mRouteId.equals(VARIABLE_VOLUME_ROUTE_ID)) { if (mRouteId.equals(VARIABLE_VOLUME_ROUTE_ID)) {
setVolumeInternal(volume); setVolumeInternal(volume);
@@ -170,7 +176,7 @@ final class SampleMediaRouteProvider extends MediaRouteProvider {
} }
@Override @Override
public void updateVolume(int delta) { public void onUpdateVolume(int delta) {
Log.d(TAG, mRouteId + ": Update volume by " + delta); Log.d(TAG, mRouteId + ": Update volume by " + delta);
if (mRouteId.equals(VARIABLE_VOLUME_ROUTE_ID)) { if (mRouteId.equals(VARIABLE_VOLUME_ROUTE_ID)) {
setVolumeInternal(mVolume + delta); setVolumeInternal(mVolume + delta);
@@ -186,7 +192,7 @@ final class SampleMediaRouteProvider extends MediaRouteProvider {
} }
@Override @Override
public boolean sendControlRequest(Intent intent, ControlRequestCallback callback) { public boolean onControlRequest(Intent intent, ControlRequestCallback callback) {
Log.d(TAG, mRouteId + ": Received control request " + intent); Log.d(TAG, mRouteId + ": Received control request " + intent);
if (intent.getAction().equals(MediaControlIntent.ACTION_PLAY) if (intent.getAction().equals(MediaControlIntent.ACTION_PLAY)
&& intent.hasCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK) && intent.hasCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
@@ -194,11 +200,26 @@ final class SampleMediaRouteProvider extends MediaRouteProvider {
mPlaybackCount +=1; mPlaybackCount +=1;
Uri uri = intent.getData(); Uri uri = intent.getData();
Log.d(TAG, mRouteId + ": Received play request, uri=" + uri); int queueBehavior = intent.getIntExtra(
MediaControlIntent.EXTRA_QUEUE_BEHAVIOR,
MediaControlIntent.QUEUE_BEHAVIOR_PLAY_NOW);
int position = intent.getIntExtra(
MediaControlIntent.EXTRA_STREAM_POSITION, 0);
Bundle metadata = intent.getBundleExtra(MediaControlIntent.EXTRA_STREAM_METADATA);
Bundle headers = intent.getBundleExtra(MediaControlIntent.EXTRA_HTTP_HEADERS);
String streamId = generateStreamId();
Log.d(TAG, mRouteId + ": Received play request, uri=" + uri
+ ", queueBehavior=" + queueBehavior
+ ", position=" + position
+ ", metadata=" + metadata
+ ", headers=" + headers);
Toast.makeText(getContext(), "Route received play request: uri=" + uri, Toast.makeText(getContext(), "Route received play request: uri=" + uri,
Toast.LENGTH_LONG).show(); Toast.LENGTH_LONG).show();
if (callback != null) { if (callback != null) {
callback.onResult(ControlRequestCallback.REQUEST_SUCCEEDED, null); Bundle result = new Bundle();
result.putString(MediaControlIntent.EXTRA_STREAM_ID, streamId);
callback.onResult(ControlRequestCallback.REQUEST_SUCCEEDED, result);
} }
return true; return true;
} }

View File

@@ -184,15 +184,19 @@ public class SampleMediaRouterActivity extends Activity {
@Override @Override
public void onResult(int result, Bundle data) { public void onResult(int result, Bundle data) {
switch (result) { switch (result) {
case REQUEST_SUCCEEDED: case REQUEST_SUCCEEDED: {
Log.d(TAG, "Play request succeeded: data=" + data); String streamId = data != null ? data.getString(
MediaControlIntent.EXTRA_STREAM_ID) : null;
Log.d(TAG, "Play request succeeded: streamId=" + streamId);
Toast.makeText(SampleMediaRouterActivity.this, Toast.makeText(SampleMediaRouterActivity.this,
"Now playing " + item.mName, "Now playing " + item.mName,
Toast.LENGTH_LONG).show(); Toast.LENGTH_LONG).show();
break; break;
}
case REQUEST_FAILED: case REQUEST_FAILED:
Log.d(TAG, "Play request failed: data=" + data); Log.d(TAG, "Play request failed.");
Toast.makeText(SampleMediaRouterActivity.this, Toast.makeText(SampleMediaRouterActivity.this,
"Unable to play " + item.mName, "Unable to play " + item.mName,
Toast.LENGTH_LONG).show(); Toast.LENGTH_LONG).show();