如何从接收器获取自定义数据

时间:2014-03-05 22:24:49

标签: google-play-services chromecast

我正在尝试将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上工作,所以我知道它可能。

1 个答案:

答案 0 :(得分:2)

在我看来,您正在扩展RemoteMediaPlayer的功能并覆盖其sendMessage()。实际上,不建议您考虑这项任务;如果要使用媒体发送其他数据,则需要使用(例如)各种调用和对象中可用的customData字段。例如,MediaInfo对象可以有customData,您可以在那里添加这些附加字段,因此可以使用许多控制命令,如load(), play(), pause(),....如果您选择覆盖RemoteMediaPlayer的sendMessage()然后您还需要处理接收方的附加功能。