我一直在尝试构建一个小测试应用程序,将Android应用程序(发送者)的数据发送到我的chromecast。我正在使用默认媒体接收器,以避免在我学习时支付注册费用。
所有代码都在服务中实现,接收器已找到并准备就绪,但我不知道如何格式化有效负载以实际让媒体接收器做任何事情(例如显示图像)
这是一些代码(如果需要更多代码,我很乐意发布它)。 onConnected()方法被调用并且运行没有错误,接收器已连接并准备就绪,显示了chromecast符号,但是我发送URL的图片未显示。
private class ConnectionCallbacks implements GoogleApiClient.ConnectionCallbacks
{
@Override
public void onConnected(Bundle bundle)
{
Log.d(TAG, "on connected for callback");
Cast.CastApi.launchApplication(mApiClient,
CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID, false)
.setResultCallback(new ResultCallback<Cast.ApplicationConnectionResult>()
{
@Override
public void onResult(Cast.ApplicationConnectionResult result)
{
Log.d(TAG, "OnResultCallback... ");
Status status = result.getStatus();
Log.d(TAG, "ApplicationConnectionResultCallback.onResult: statusCode" + status.getStatusCode());
if (status.isSuccess())
{
mApplicationStarted=true;
ApplicationMetadata applicationMetadata = result.getApplicationMetadata();
mSessionId = result.getSessionId();
String applicationStatus = result.getApplicationStatus();
boolean wasLaunched = result.getWasLaunched();
Log.d(TAG, mSessionId+" "+applicationStatus);
try
{
Cast.CastApi.sendMessage(mApiClient, "urn:x-cast:com.google.cast.media",
"http://www.randomwebsite.com/images/head.jpg")
.setResultCallback(new ResultCallback<Status>()
{
@Override
public void onResult(Status result)
{
if (!result.isSuccess())
{
Log.e(TAG, "Sending message failed");
}
}
});
}
catch(Exception e)
{
Log.e(TAG, "Sending message to chromecast failed... hard.");
}
}
}
});
}
@Override
public void onConnectionSuspended(int i)
{
Log.d(TAG, "on connection suspended for callback");
}
}
此代码与大部分代码类似于Google的https://github.com/googlecast/CastHelloText-android示例。
我的问题,我认为是行Cast.CastApi.sendMessage(mApiClient, "urn:x-cast:com.google.cast.media", "http://www.randomwebsite.com/images/head.jpg")
,尤其是第三个参数,我怀疑它不是按照默认媒体接收器期望数据的方式格式化的。但是我在这方面找不到任何有用的例子。
那么,如何使用默认媒体接收器来运行?
答案 0 :(得分:0)
如果要发送自己的消息(非媒体),则应创建具有自己的命名空间的自定义接收器。默认接收器/样式接收器只能理解媒体命名空间并使用该命名空间,不要使用sendMessage;使用RemoteMediaPlayer发送常见的操作,如播放/暂停/停止/搜索/ ...我们的GitHub存储库中有一些示例。