我正在尝试向我的应用添加媒体控件,但我无法让RemoteMediaPlayer发送命令。 视频开始播放但我无法控制它。 这是我使用的代码:
RemoteMediaPlayer mRemoteMediaPlayer = new RemoteMediaPlayer();
try {
Cast.CastApi.setMessageReceivedCallbacks(apiClient, mRemoteMediaPlayer.getNamespace(), mRemoteMediaPlayer);
MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
JSONObject jsonExtra = new JSONObject();
mediaMetadata.putString(MediaMetadata.KEY_TITLE, "My video");
if (mediaType != null) {
jsonExtra.put("type", mediaType);
}
if ("audio".equals(mediaType)) {
mimeType = "audio/mp3";
}
com.google.android.gms.cast.MediaInfo.Builder builder = new MediaInfo.Builder(getUrl()).setContentType(mimeType).setMetadata(mediaMetadata).setCustomData(jsonExtra);
builder.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED);
MediaInfo mediaInfo = builder.build();
mRemoteMediaPlayer.load(apiClient, mediaInfo, true, inititalTime).setResultCallback(new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() {
@Override
public void onResult(MediaChannelResult result) {
if (result.getStatus().isSuccess()) {
log(context, "Media loaded successfully");
}
}
});
Thread.sleep(5000);
mRemoteMediaPlayer.pause(apiClient);
} catch (IllegalStateException e) {
log(context, "Problem occurred with media during loading " + e);
} catch (IOException e) {
log(context, "Problem occurred with media during loading " + e);
} catch (JSONException e) {
log(context, "Problem occurred with media during loading " + e);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
您可能会注意到,最后我等待5秒钟以确保视频正在播放,然后尝试暂停播放。 这总是会导致带有消息的IllegalStateException:
没有当前的媒体会话
我错过了什么吗? 我还注意到视频开始播放后从未调用ResultCallback。也许这也与我遇到的同一问题有关。
提前致谢。
答案 0 :(得分:0)
目前尚不清楚何时运行此代码。不要像你那样设置睡眠;您必须在mRemoteMediaPlayer
上注册回调,以便在远程播放器上的状态或元数据发生变化时收到通知。当状态改变监听器被调用时,通过调用mRemoteMediaPlayer.getMediaStatus().getPlayerState()
并根据状态(无论是播放,缓冲,空闲,暂停)获取更新状态,做出适当的决定。在异步系统中,永远不要使用“sleep()”,总是挂钩回调。
答案 1 :(得分:-2)
您需要Android SDK中的google-play-services_lib库。
http://developer.android.com/google/play-services/setup.html
将google-play services_lib库项目复制到您的工作区(您的android地图项目所在的文件夹)。可以在以下路径中找到库项目。
/android-sdk-folder/extras/google/google_play_services/
将库项目导入您的eclipse
点击文件&gt;导入,选择 Android&gt;现有Android代码到Workspace ,浏览工作区导入库项目。您可以检查它是否是库项目。右键单击库项目。转到属性。点击左侧面板上的Android。您将看到Is Library已选中。
右键单击您的Android项目。 转到属性。选择左侧的 Android 面板。 点击添加并浏览库项目。选择相同。单击确定并应用。