Support7Demos: Preserve the media position when the route is changed

Bug: 153852254
Test: Position preserved when casting to sample routes and
      Chromecast routes.
Change-Id: Iff268686893d653670acf7a296c7d93b8d86434f
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/RemotePlayer.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/RemotePlayer.java
index aa84a22..1722592 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/RemotePlayer.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/RemotePlayer.java
@@ -127,15 +127,13 @@
         if (DEBUG) {
             Log.d(TAG, "play: item=" + item);
         }
-        mClient.play(item.getUri(), "video/mp4", null, 0, null, new ItemActionCallback() {
+        mClient.play(item.getUri(), "video/mp4", null, item.getPosition(), null,
+                new ItemActionCallback() {
             @Override
             public void onResult(Bundle data, String sessionId, MediaSessionStatus sessionStatus,
                     String itemId, MediaItemStatus itemStatus) {
                 logStatus("play: succeeded", sessionId, sessionStatus, itemId, itemStatus);
                 item.setRemoteItemId(itemId);
-                if (item.getPosition() > 0) {
-                    seekInternal(item);
-                }
                 if (item.getState() == MediaItemStatus.PLAYBACK_STATE_PAUSED) {
                     pause();
                 } else {
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java
index 3b604db..efc1dd8 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java
@@ -449,7 +449,7 @@
                     + ", metadata=" + metadata
                     + ", headers=" + headers
                     + ", receiver=" + receiver);
-            PlaylistItem item = mSessionManager.add(null, uri, mime, receiver);
+            PlaylistItem item = mSessionManager.add(null, uri, mime, pos, receiver);
             if (callback != null) {
                 if (item != null) {
                     Bundle result = new Bundle();
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SessionManager.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SessionManager.java
index 979e2ea..feb6c5a 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SessionManager.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SessionManager.java
@@ -101,10 +101,11 @@
     }
 
     public PlaylistItem add(String title, Uri uri, String mime) {
-        return add(title, uri, mime, null);
+        return add(title, uri, mime, 0, null);
     }
 
-    public PlaylistItem add(String title, Uri uri, String mime, PendingIntent receiver) {
+    public PlaylistItem add(String title, Uri uri, String mime, long startPosition,
+            PendingIntent receiver) {
         if (DEBUG) {
             log("add: title=" + title + ", uri=" + uri + ", receiver=" + receiver);
         }
@@ -115,6 +116,7 @@
         // append new item with initial status PLAYBACK_STATE_PENDING
         PlaylistItem item = new PlaylistItem(Integer.toString(mSessionId),
                 Integer.toString(mItemId), title, uri, mime, receiver);
+        item.setPosition(startPosition);
         mPlaylist.add(item);
         mItemId++;