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.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.media.MediaControlIntent;
|
import android.support.v7.media.MediaControlIntent;
|
||||||
|
import android.support.v7.media.MediaItemStatus;
|
||||||
import android.support.v7.media.MediaRouteProvider;
|
import android.support.v7.media.MediaRouteProvider;
|
||||||
import android.support.v7.media.MediaRouter.ControlRequestCallback;
|
import android.support.v7.media.MediaRouter.ControlRequestCallback;
|
||||||
import android.support.v7.media.MediaRouteProviderDescriptor;
|
import android.support.v7.media.MediaRouteProviderDescriptor;
|
||||||
@@ -212,24 +213,40 @@ final class SampleMediaRouteProvider extends MediaRouteProvider {
|
|||||||
int queueBehavior = intent.getIntExtra(
|
int queueBehavior = intent.getIntExtra(
|
||||||
MediaControlIntent.EXTRA_ITEM_QUEUE_BEHAVIOR,
|
MediaControlIntent.EXTRA_ITEM_QUEUE_BEHAVIOR,
|
||||||
MediaControlIntent.ITEM_QUEUE_BEHAVIOR_PLAY_NOW);
|
MediaControlIntent.ITEM_QUEUE_BEHAVIOR_PLAY_NOW);
|
||||||
int position = intent.getIntExtra(
|
double contentPosition = intent.getDoubleExtra(
|
||||||
MediaControlIntent.EXTRA_ITEM_POSITION, 0);
|
MediaControlIntent.EXTRA_ITEM_CONTENT_POSITION, 0);
|
||||||
Bundle metadata = intent.getBundleExtra(MediaControlIntent.EXTRA_ITEM_METADATA);
|
Bundle metadata = intent.getBundleExtra(MediaControlIntent.EXTRA_ITEM_METADATA);
|
||||||
Bundle headers = intent.getBundleExtra(
|
Bundle headers = intent.getBundleExtra(
|
||||||
MediaControlIntent.EXTRA_ITEM_HTTP_HEADERS);
|
MediaControlIntent.EXTRA_ITEM_HTTP_HEADERS);
|
||||||
String streamId = generateStreamId();
|
|
||||||
|
|
||||||
Log.d(TAG, mRouteId + ": Received play request, uri=" + uri
|
Log.d(TAG, mRouteId + ": Received play request, uri=" + uri
|
||||||
+ ", queueBehavior=" + queueBehavior
|
+ ", queueBehavior=" + queueBehavior
|
||||||
+ ", position=" + position
|
+ ", contentPosition=" + contentPosition
|
||||||
+ ", metadata=" + metadata
|
+ ", metadata=" + metadata
|
||||||
+ ", headers=" + headers);
|
+ ", headers=" + headers);
|
||||||
Toast.makeText(getContext(), "Route received play request: uri=" + uri,
|
|
||||||
Toast.LENGTH_LONG).show();
|
if (uri.toString().contains("hats")) {
|
||||||
if (callback != null) {
|
// Simulate generating an error whenever the uri contains the word 'hats'.
|
||||||
Bundle result = new Bundle();
|
Toast.makeText(getContext(), "Route rejected play request: uri=" + uri
|
||||||
result.putString(MediaControlIntent.EXTRA_ITEM_ID, streamId);
|
+ ", no hats allowed!", Toast.LENGTH_LONG).show();
|
||||||
callback.onResult(ControlRequestCallback.REQUEST_SUCCEEDED, result);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -239,7 +256,7 @@ final class SampleMediaRouteProvider extends MediaRouteProvider {
|
|||||||
Bundle data = new Bundle();
|
Bundle data = new Bundle();
|
||||||
data.putInt(DATA_PLAYBACK_COUNT, mPlaybackCount);
|
data.putInt(DATA_PLAYBACK_COUNT, mPlaybackCount);
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.onResult(ControlRequestCallback.REQUEST_SUCCEEDED, data);
|
callback.onResult(data);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -189,26 +189,22 @@ public class SampleMediaRouterActivity extends ActionBarActivity {
|
|||||||
MediaRouter.ControlRequestCallback callback =
|
MediaRouter.ControlRequestCallback callback =
|
||||||
new MediaRouter.ControlRequestCallback() {
|
new MediaRouter.ControlRequestCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onResult(int result, Bundle data) {
|
public void onResult(Bundle data) {
|
||||||
switch (result) {
|
String streamId = data != null ? data.getString(
|
||||||
case REQUEST_SUCCEEDED: {
|
MediaControlIntent.EXTRA_ITEM_ID) : null;
|
||||||
String streamId = data != null ? data.getString(
|
|
||||||
MediaControlIntent.EXTRA_ITEM_ID) : null;
|
|
||||||
|
|
||||||
Log.d(TAG, "Play request succeeded: streamId=" + streamId);
|
Log.d(TAG, "Play request succeeded: data=" + data + " , 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;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
case REQUEST_FAILED:
|
@Override
|
||||||
Log.d(TAG, "Play request failed.");
|
public void onError(String error, Bundle data) {
|
||||||
Toast.makeText(SampleMediaRouterActivity.this,
|
Log.d(TAG, "Play request failed: error=" + error + ", data=" + data);
|
||||||
"Unable to play " + item.mName,
|
Toast.makeText(SampleMediaRouterActivity.this,
|
||||||
Toast.LENGTH_LONG).show();
|
"Unable to play " + item.mName + ", error: " + error,
|
||||||
break;
|
Toast.LENGTH_LONG).show();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -227,31 +223,28 @@ public class SampleMediaRouterActivity extends ActionBarActivity {
|
|||||||
if (route.supportsControlRequest(intent)) {
|
if (route.supportsControlRequest(intent)) {
|
||||||
MediaRouter.ControlRequestCallback callback = new MediaRouter.ControlRequestCallback() {
|
MediaRouter.ControlRequestCallback callback = new MediaRouter.ControlRequestCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onResult(int result, Bundle data) {
|
public void onResult(Bundle data) {
|
||||||
switch (result) {
|
Log.d(TAG, "Statistics request succeeded: data=" + data);
|
||||||
case REQUEST_SUCCEEDED:
|
if (data != null) {
|
||||||
Log.d(TAG, "Statistics request succeeded: data=" + data);
|
int playbackCount = data.getInt(
|
||||||
if (data != null) {
|
SampleMediaRouteProvider.DATA_PLAYBACK_COUNT, -1);
|
||||||
int playbackCount = data.getInt(
|
Toast.makeText(SampleMediaRouterActivity.this,
|
||||||
SampleMediaRouteProvider.DATA_PLAYBACK_COUNT, -1);
|
"Total playback count: " + playbackCount,
|
||||||
Toast.makeText(SampleMediaRouterActivity.this,
|
Toast.LENGTH_LONG).show();
|
||||||
"Total playback count: " + playbackCount,
|
} else {
|
||||||
Toast.LENGTH_LONG).show();
|
Toast.makeText(SampleMediaRouterActivity.this,
|
||||||
} else {
|
"Statistics query did not return any data",
|
||||||
Toast.makeText(SampleMediaRouterActivity.this,
|
Toast.LENGTH_LONG).show();
|
||||||
"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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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);
|
Log.d(TAG, "Sent statistics request: intent=" + intent);
|
||||||
|
|||||||
Reference in New Issue
Block a user