Update media router API.

Bug: 8175766
Change-Id: Ib93572738b912530e96f8772bf7961af4b57c0c7
This commit is contained in:
Jeff Brown
2013-05-20 16:42:23 -07:00
parent 05a1690799
commit ff342b425c
2 changed files with 62 additions and 52 deletions

View File

@@ -27,6 +27,7 @@ import android.media.MediaRouter;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.media.MediaControlIntent;
import android.support.v7.media.MediaItemStatus;
import android.support.v7.media.MediaRouteProvider;
import android.support.v7.media.MediaRouter.ControlRequestCallback;
import android.support.v7.media.MediaRouteProviderDescriptor;
@@ -212,24 +213,40 @@ final class SampleMediaRouteProvider extends MediaRouteProvider {
int queueBehavior = intent.getIntExtra(
MediaControlIntent.EXTRA_ITEM_QUEUE_BEHAVIOR,
MediaControlIntent.ITEM_QUEUE_BEHAVIOR_PLAY_NOW);
int position = intent.getIntExtra(
MediaControlIntent.EXTRA_ITEM_POSITION, 0);
double contentPosition = intent.getDoubleExtra(
MediaControlIntent.EXTRA_ITEM_CONTENT_POSITION, 0);
Bundle metadata = intent.getBundleExtra(MediaControlIntent.EXTRA_ITEM_METADATA);
Bundle headers = intent.getBundleExtra(
MediaControlIntent.EXTRA_ITEM_HTTP_HEADERS);
String streamId = generateStreamId();
Log.d(TAG, mRouteId + ": Received play request, uri=" + uri
+ ", queueBehavior=" + queueBehavior
+ ", position=" + position
+ ", contentPosition=" + contentPosition
+ ", metadata=" + metadata
+ ", headers=" + headers);
Toast.makeText(getContext(), "Route received play request: uri=" + uri,
Toast.LENGTH_LONG).show();
if (callback != null) {
Bundle result = new Bundle();
result.putString(MediaControlIntent.EXTRA_ITEM_ID, streamId);
callback.onResult(ControlRequestCallback.REQUEST_SUCCEEDED, result);
if (uri.toString().contains("hats")) {
// Simulate generating an error whenever the uri contains the word 'hats'.
Toast.makeText(getContext(), "Route rejected play request: uri=" + uri
+ ", no hats allowed!", Toast.LENGTH_LONG).show();
if (callback != null) {
callback.onError("Simulated error. No hats allowed!", null);
}
} else {
Toast.makeText(getContext(), "Route received play request: uri=" + uri,
Toast.LENGTH_LONG).show();
String streamId = generateStreamId();
if (callback != null) {
MediaItemStatus status = new MediaItemStatus.Builder(
MediaItemStatus.PLAYBACK_STATE_PLAYING)
.setContentPosition(contentPosition)
.build();
Bundle result = new Bundle();
result.putString(MediaControlIntent.EXTRA_ITEM_ID, streamId);
result.putBundle(MediaControlIntent.EXTRA_ITEM_STATUS, status.asBundle());
callback.onResult(result);
}
}
return true;
}
@@ -239,7 +256,7 @@ final class SampleMediaRouteProvider extends MediaRouteProvider {
Bundle data = new Bundle();
data.putInt(DATA_PLAYBACK_COUNT, mPlaybackCount);
if (callback != null) {
callback.onResult(ControlRequestCallback.REQUEST_SUCCEEDED, data);
callback.onResult(data);
}
return true;
}

View File

@@ -189,26 +189,22 @@ public class SampleMediaRouterActivity extends ActionBarActivity {
MediaRouter.ControlRequestCallback callback =
new MediaRouter.ControlRequestCallback() {
@Override
public void onResult(int result, Bundle data) {
switch (result) {
case REQUEST_SUCCEEDED: {
String streamId = data != null ? data.getString(
MediaControlIntent.EXTRA_ITEM_ID) : null;
public void onResult(Bundle data) {
String streamId = data != null ? data.getString(
MediaControlIntent.EXTRA_ITEM_ID) : null;
Log.d(TAG, "Play request succeeded: streamId=" + streamId);
Toast.makeText(SampleMediaRouterActivity.this,
"Now playing " + item.mName,
Toast.LENGTH_LONG).show();
break;
}
Log.d(TAG, "Play request succeeded: data=" + data + " , streamId=" + streamId);
Toast.makeText(SampleMediaRouterActivity.this,
"Now playing " + item.mName,
Toast.LENGTH_LONG).show();
}
case REQUEST_FAILED:
Log.d(TAG, "Play request failed.");
Toast.makeText(SampleMediaRouterActivity.this,
"Unable to play " + item.mName,
Toast.LENGTH_LONG).show();
break;
}
@Override
public void onError(String error, Bundle data) {
Log.d(TAG, "Play request failed: error=" + error + ", data=" + data);
Toast.makeText(SampleMediaRouterActivity.this,
"Unable to play " + item.mName + ", error: " + error,
Toast.LENGTH_LONG).show();
}
};
@@ -227,31 +223,28 @@ public class SampleMediaRouterActivity extends ActionBarActivity {
if (route.supportsControlRequest(intent)) {
MediaRouter.ControlRequestCallback callback = new MediaRouter.ControlRequestCallback() {
@Override
public void onResult(int result, Bundle data) {
switch (result) {
case REQUEST_SUCCEEDED:
Log.d(TAG, "Statistics request succeeded: data=" + data);
if (data != null) {
int playbackCount = data.getInt(
SampleMediaRouteProvider.DATA_PLAYBACK_COUNT, -1);
Toast.makeText(SampleMediaRouterActivity.this,
"Total playback count: " + playbackCount,
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(SampleMediaRouterActivity.this,
"Statistics query did not return any data",
Toast.LENGTH_LONG).show();
}
break;
case REQUEST_FAILED:
Log.d(TAG, "Statistics request failed: data=" + data);
Toast.makeText(SampleMediaRouterActivity.this,
"Unable to query statistics.",
Toast.LENGTH_LONG).show();
break;
public void onResult(Bundle data) {
Log.d(TAG, "Statistics request succeeded: data=" + data);
if (data != null) {
int playbackCount = data.getInt(
SampleMediaRouteProvider.DATA_PLAYBACK_COUNT, -1);
Toast.makeText(SampleMediaRouterActivity.this,
"Total playback count: " + playbackCount,
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(SampleMediaRouterActivity.this,
"Statistics query did not return any data",
Toast.LENGTH_LONG).show();
}
}
@Override
public void onError(String error, Bundle data) {
Log.d(TAG, "Statistics request failed: error=" + error + ", data=" + data);
Toast.makeText(SampleMediaRouterActivity.this,
"Unable to query statistics, error: " + error,
Toast.LENGTH_LONG).show();
}
};
Log.d(TAG, "Sent statistics request: intent=" + intent);