【发布时间】:2014-04-08 06:37:19
【问题描述】:
我正在尝试将 Chromecast 集成到我们的应用程序中,但在加入已运行的应用程序时遇到了从接收器获取数据的问题。
第一次启动应用程序时,我使用 RemoteMediaPlayer 设置元日期
public class CastMessageStream extends RemoteMediaPlayer {
public void setMetadata(GoogleApiClient apiClient, CastingObject castingObject, String seriesId, String description, String episodeNumber, String title) {
JSONObject payload = _initJsonObject(COMMAND_KEY_SET_METADATA);
try {
payload.put(KEY_SUB_TITLE, castingObject.castingSubUrl);
payload.put(KEY_TITLE, title);
payload.put(KEY_SERIES_ID, seriesId);
payload.put(KEY_EPISODE_NUMBER, episodeNumber);
payload.put(KEY_DESCRIPTION, description);
payload.put(KEY_VIDEO_HEADER, castingObject.description);
sendMessage(apiClient, payload.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Send messages to the reciever using the NAMESPACE
*/
private final void sendMessage(GoogleApiClient apiClient, String message)
throws IOException, IllegalArgumentException, IllegalStateException {
Cast.CastApi.sendMessage(apiClient, NAMESPACE, message);
}
加入已运行应用程序的代码
Cast.CastApi.launchApplication(googleApiClient, APP_ID).setResultCallback(new ResultCallback<Cast.ApplicationConnectionResult>() {
@Override
public void onResult(Cast.ApplicationConnectionResult applicationConnectionResult) {
mMessageStream = new CastMessageStream();
MediaInfo mediaInfo = mMessageStream.getMediaInfo();
MediaStatus mediaStatus = mMessageStream.getMediaStatus();
JSONObject jsonObject = mediaInfo.getCustomData(); // Returns null
MediaMetadata metadata = mediaInfo.getMetadata(); // Returns null
....
}
});
如何从接收方获取自定义信息。我让它在 iOS 上运行,所以我知道它是可能的。
【问题讨论】:
-
什么是mMessageStream? (顺便说一句,您可能希望将代码包装在 onResult() 中的条件语句中,仅当 applicationConnectionResult.getStatus().isSuccess() 为真时才执行)
-
@AliNaddaf 我已经把它包装好了,但为了简单起见,我在问题中把它拿出来了。我编辑了这个问题,mMessageStream 是一个 CastMessageStream,它扩展了 RemoteMediaPlayer
标签: java google-play-services chromecast