use of com.google.android.gms.cast.LaunchOptions in project butter-android by butterproject.
the class CastService method launchWebApp.
@Override
public void launchWebApp(final String webAppId, final boolean relaunchIfRunning, final WebAppSession.LaunchListener listener) {
launchingAppId = webAppId;
final LaunchWebAppListener launchWebAppListener = new LaunchWebAppListener() {
@Override
public void onSuccess(WebAppSession webAppSession) {
Util.postSuccess(listener, webAppSession);
}
@Override
public void onFailure(ServiceCommandError error) {
Util.postError(listener, error);
}
};
ConnectionListener connectionListener = new ConnectionListener() {
@Override
public void onConnected() {
// TODO Workaround, for some reason, if relaunchIfRunning is false, launchApplication returns 2005 error and cannot launch.
try {
if (relaunchIfRunning == false) {
Cast.CastApi.joinApplication(mApiClient).setResultCallback(new ResultCallback<Cast.ApplicationConnectionResult>() {
@Override
public void onResult(ApplicationConnectionResult result) {
if (result.getStatus().isSuccess() && result.getApplicationMetadata() != null && result.getApplicationMetadata().getName() != null && result.getApplicationMetadata().getApplicationId().equals(webAppId)) {
ApplicationMetadata applicationMetadata = result.getApplicationMetadata();
currentAppId = applicationMetadata.getApplicationId();
LaunchSession launchSession = LaunchSession.launchSessionForAppId(applicationMetadata.getApplicationId());
launchSession.setAppName(applicationMetadata.getName());
launchSession.setSessionId(result.getSessionId());
launchSession.setSessionType(LaunchSessionType.WebApp);
launchSession.setService(CastService.this);
CastWebAppSession webAppSession = new CastWebAppSession(launchSession, CastService.this);
webAppSession.setMetadata(applicationMetadata);
sessions.put(applicationMetadata.getApplicationId(), webAppSession);
Util.postSuccess(listener, webAppSession);
} else {
LaunchOptions options = new LaunchOptions();
options.setRelaunchIfRunning(true);
try {
Cast.CastApi.launchApplication(mApiClient, webAppId, options).setResultCallback(new ApplicationConnectionResultCallback(launchWebAppListener));
} catch (Exception e) {
Util.postError(listener, new ServiceCommandError(0, "Unable to launch", null));
}
}
}
});
} else {
LaunchOptions options = new LaunchOptions();
options.setRelaunchIfRunning(relaunchIfRunning);
Cast.CastApi.launchApplication(mApiClient, webAppId, options).setResultCallback(new ApplicationConnectionResultCallback(launchWebAppListener));
}
} catch (Exception e) {
Util.postError(listener, new ServiceCommandError(0, "Unable to launch", null));
}
}
};
runCommand(connectionListener);
}
use of com.google.android.gms.cast.LaunchOptions in project butter-android by butterproject.
the class CastService method playMedia.
private void playMedia(final com.google.android.gms.cast.MediaInfo mediaInformation, final String mediaAppId, 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() {
try {
mMediaPlayer.load(mApiClient, mediaInformation, true).setResultCallback(new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() {
@Override
public void onResult(MediaChannelResult result) {
Status status = result.getStatus();
if (status.isSuccess()) {
webAppSession.launchSession.setSessionType(LaunchSessionType.Media);
// White text, black outline, no background
TextTrackStyle textTrackStyle = new TextTrackStyle();
textTrackStyle.setForegroundColor(Color.parseColor("#FFFFFFFF"));
textTrackStyle.setBackgroundColor(Color.parseColor("#01000000"));
textTrackStyle.setWindowType(TextTrackStyle.WINDOW_TYPE_NONE);
textTrackStyle.setEdgeType(TextTrackStyle.EDGE_TYPE_OUTLINE);
textTrackStyle.setEdgeColor(Color.BLACK);
textTrackStyle.setFontGenericFamily(TextTrackStyle.FONT_FAMILY_SANS_SERIF);
mMediaPlayer.setTextTrackStyle(mApiClient, textTrackStyle);
mMediaPlayer.setActiveMediaTracks(mApiClient, new long[] { 1 });
Util.postSuccess(listener, new MediaLaunchObject(webAppSession.launchSession, CastService.this));
} else {
Util.postError(listener, new ServiceCommandError(status.getStatusCode(), status.getStatusMessage(), status));
}
}
});
} catch (Exception e) {
Util.postError(listener, new ServiceCommandError(0, "Unable to load", null));
}
}
};
runCommand(connectionListener);
}
@Override
public void onFailure(ServiceCommandError error) {
Util.postError(listener, error);
}
});
launchingAppId = mediaAppId;
ConnectionListener connectionListener = new ConnectionListener() {
@Override
public void onConnected() {
boolean relaunchIfRunning = false;
try {
if (Cast.CastApi.getApplicationStatus(mApiClient) == null || (!mediaAppId.equals(currentAppId))) {
relaunchIfRunning = true;
}
LaunchOptions options = new LaunchOptions();
options.setRelaunchIfRunning(relaunchIfRunning);
Cast.CastApi.launchApplication(mApiClient, mediaAppId, options).setResultCallback(webAppLaunchCallback);
} catch (Exception e) {
Util.postError(listener, new ServiceCommandError(0, "Unable to launch", null));
}
}
};
runCommand(connectionListener);
}
Aggregations