diff --git a/src/com/connectsdk/discovery/provider/CastDiscoveryProvider.java b/src/com/connectsdk/discovery/provider/CastDiscoveryProvider.java index 41fbad8..732fc07 100644 --- a/src/com/connectsdk/discovery/provider/CastDiscoveryProvider.java +++ b/src/com/connectsdk/discovery/provider/CastDiscoveryProvider.java @@ -207,8 +207,8 @@ public void onRouteAdded(MediaRouter router, RouteInfo route) { foundServices.put(uuid, foundService); if (listUpdateFlag) { - for (DiscoveryProviderListener listenter: serviceListeners) { - listenter.onServiceAdded(CastDiscoveryProvider.this, foundService); + for (DiscoveryProviderListener listener: serviceListeners) { + listener.onServiceAdded(CastDiscoveryProvider.this, foundService); } } } @@ -243,8 +243,8 @@ public void onRouteChanged(MediaRouter router, RouteInfo route) { foundServices.put(uuid, foundService); if (listUpdateFlag) { - for (DiscoveryProviderListener listenter: serviceListeners) { - listenter.onServiceAdded(CastDiscoveryProvider.this, foundService); + for (DiscoveryProviderListener listener: serviceListeners) { + listener.onServiceAdded(CastDiscoveryProvider.this, foundService); } } } diff --git a/src/com/connectsdk/service/CastService.java b/src/com/connectsdk/service/CastService.java index 85a9c49..b4c12d1 100644 --- a/src/com/connectsdk/service/CastService.java +++ b/src/com/connectsdk/service/CastService.java @@ -287,6 +287,11 @@ public CastService(ServiceDescription serviceDescription, ServiceConfig serviceC mWaitingForReconnect = false; } + @Override + public String getWebAppId() { + return applicationID; + } + @Override public String getServiceName() { return ID; @@ -688,8 +693,7 @@ public void displayImage(MediaInfo mediaInfo, LaunchListener listener) { } private void playMedia(String url, SubtitleInfo subtitleInfo, String mimeType, String title, - String description, String iconSrc, boolean shouldLoop, - LaunchListener listener) { + String description, String iconSrc, boolean shouldLoop, long startPosition, JSONObject customData, LaunchListener listener) { MediaMetadata mMediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE); mMediaMetadata.putString(MediaMetadata.KEY_TITLE, title); mMediaMetadata.putString(MediaMetadata.KEY_SUBTITLE, description); @@ -722,18 +726,29 @@ private void playMedia(String url, SubtitleInfo subtitleInfo, String mimeType, S .setMediaTracks(mediaTracks) .build(); - playMedia(mediaInformation, applicationID, listener); + //playMedia(mediaInformation, applicationID, listener); + playMedia(mediaInformation, applicationID, startPosition, customData, listener); } @Override public void playMedia(String url, String mimeType, String title, String description, String iconSrc, boolean shouldLoop, LaunchListener listener) { - playMedia(url, null, mimeType, title, description, iconSrc, shouldLoop, listener); + playMedia(url, null, mimeType, title, description, iconSrc, shouldLoop, 0, null, listener); } @Override public void playMedia(MediaInfo mediaInfo, boolean shouldLoop, LaunchListener listener) { + playMedia(mediaInfo, shouldLoop, 0,listener); + } + + @Override + public void playMedia(MediaInfo mediaInfo, boolean shouldLoop, long startPosition, LaunchListener listener) { + playMedia(mediaInfo, shouldLoop, startPosition, null, listener); + } + + @Override + public void playMedia(final MediaInfo mediaInfo, final boolean shouldLoop, long startPosition, Object customData, final LaunchListener listener) { try { mCastClient.getApplicationStatus(mApiClient); } catch (CastClientException e) { @@ -759,31 +774,40 @@ public void playMedia(MediaInfo mediaInfo, boolean shouldLoop, LaunchListener li } } - playMedia(mediaUrl, subtitle, mimeType, title, desc, iconSrc, shouldLoop, listener); + if(customData instanceof JSONObject) { + playMedia(mediaUrl, subtitle, mimeType, title, desc, iconSrc, shouldLoop, startPosition, (JSONObject)customData, listener); + }else{ + playMedia(mediaUrl, subtitle, mimeType, title, desc, iconSrc, shouldLoop, startPosition, null, listener); + } + } private void playMedia(final com.google.android.gms.cast.MediaInfo mediaInformation, final String mediaAppId, final LaunchListener listener) { + playMedia(mediaInformation, mediaAppId, 0, null, listener); + } + + private void playMedia(final com.google.android.gms.cast.MediaInfo mediaInformation, final String mediaAppId, final long startPosition, final JSONObject customData, final LaunchListener listener) { final ApplicationConnectionResultCallback webAppLaunchCallback = new ApplicationConnectionResultCallback(new LaunchWebAppListener() { - @Override - public void onSuccess(final WebAppSession webAppSession) { - ConnectionListener connectionListener = new ConnectionListener() { - @Override - public void onConnected() { - loadMedia(mediaInformation, webAppSession, listener); - } - }; + public void onSuccess(final WebAppSession webAppSession) { + ConnectionListener connectionListener = new ConnectionListener() { - runCommand(connectionListener); - } + @Override + public void onConnected() { + loadMedia(mediaInformation, startPosition, customData, webAppSession, listener); + } + }; - @Override - public void onFailure(ServiceCommandError error) { - Util.postError(listener, error); - } - }); + runCommand(connectionListener); + } + + @Override + public void onFailure(ServiceCommandError error) { + Util.postError(listener, error); + } + }); launchingAppId = mediaAppId; @@ -810,10 +834,13 @@ public void onConnected() { runCommand(connectionListener); } - private void loadMedia(com.google.android.gms.cast.MediaInfo mediaInformation, - final WebAppSession webAppSession, final LaunchListener listener) { + private void loadMedia(com.google.android.gms.cast.MediaInfo mediaInformation, final WebAppSession webAppSession, final LaunchListener listener) { + loadMedia(mediaInformation, 0, null, webAppSession, listener); + } + + private void loadMedia(com.google.android.gms.cast.MediaInfo mediaInformation, long startPosition, JSONObject customData, final WebAppSession webAppSession, final LaunchListener listener) { try { - mMediaPlayer.load(mApiClient, mediaInformation, true).setResultCallback(new ResultCallback() { + mMediaPlayer.load(mApiClient, mediaInformation, true, startPosition, customData).setResultCallback(new ResultCallback() { @Override public void onResult(MediaChannelResult result) { diff --git a/test/src/com/connectsdk/service/CastServiceTest.java b/test/src/com/connectsdk/service/CastServiceTest.java index b7ef7d7..801acbd 100644 --- a/test/src/com/connectsdk/service/CastServiceTest.java +++ b/test/src/com/connectsdk/service/CastServiceTest.java @@ -28,6 +28,7 @@ import junit.framework.Assert; +import org.json.JSONObject; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -493,7 +494,7 @@ private com.google.android.gms.cast.MediaInfo verifyPlayMedia(MediaInfo mediaInf // loadMedia ArgumentCaptor argMedia = ArgumentCaptor.forClass(com.google.android.gms.cast.MediaInfo.class); - Mockito.verify(mediaPlayer).load(Mockito.same(googleApiClient), argMedia.capture(), Mockito.eq(true)); + Mockito.verify(mediaPlayer).load(Mockito.same(googleApiClient), argMedia.capture(), Mockito.eq(true), Mockito.eq((long) 0), Mockito.eq((JSONObject) null)); return argMedia.getValue(); }