Update media router API.
Bug: 8175766 Change-Id: Ib93572738b912530e96f8772bf7961af4b57c0c7
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user