我正在按照这些(1、2)指南为 Chromecast 创建发送器 Android 应用程序,我只对发送图片感兴趣。 有很多信息和samples如何转换文本、音频和视频。但是没有一个字如何用图片。
我相信 stackoferflow 的强大功能,应该有人遇到过这样的问题。请提供一些好的示例或教程。我所需要的只是使用 Media Router
及其功能转换全屏图片的指南。
这就是我使用自定义 channel 发送短信的方式:
/**
* Send a text message to the receiver
*/
private void sendMessage(String message) {
if (mApiClient != null && mSmartBusChannel != null) {
try {
Cast.CastApi.sendMessage(mApiClient,
mSmartBusChannel.getNamespace(), message)
.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, "Exception while sending message", e);
}
} else {
Toast.makeText(this, message, Toast.LENGTH_SHORT)
.show();
}
}
视频正在使用 RemotePlaybackClient
发送。好的,图片呢?
非常感谢您的帮助。
编辑:
我找到了方法 (on this blog)如何从本地存储发送图片。是的,这似乎并没有真正起作用。
public final void openPhotoOnChromecast(String title, String url, String ownerName, String description) {
try {
Log.d(TAG, "openPhotoOnChromecast: " + url);
JSONObject payload = new JSONObject();
payload.put(KEY_COMMAND, "viewphoto");
payload.put("fullsizeUrl", url);
payload.put("ownerName", ownerName);
payload.put("title", title);
payload.put("description", description);
sendMessage(payload);
} catch (JSONException e) {
Log.e(TAG, "Cannot parse or serialize data for openPhotoOnChromecast", e);
} catch (IOException e) {
Log.e(TAG, "Unable to send openPhotoOnChromecast message", e);
} catch (IllegalStateException e) {
Log.e(TAG, "Message Stream is not attached", e);
}
}
附言此方法使用来自这些库(来自 gradle)的 sendMessage(...)
:
compile files('libs/commons-io-2.4.jar')
compile files('libs/GoogleCastSdkAndroid.jar')
最佳答案
看这里:Examples using CastCompanionLibrary to simply display an image将图像发送到 Chromecast 实际上有三个选项。
- 您可以将图像编码为 base64 字符串并通过 数据通道到接收器。如果太大,可以拆分 并通过多条消息发送。这是一个非常糟糕的用途 Actor 技术,真的你不应该这样做,但它是 可能。
- 您可以简单地向 Chromecast 设备发送一个 url 并获取它 从接收器应用程序中的服务器。这个最推荐 将照片发送到 Chromecast 的方法
- 如果您不是从服务器下载图像,您可以设置 在您的客户端 Android 应用程序中运行您自己的服务器并发送 接收者的 url 以从那里获取它。这倒是 发送图像很复杂,但是更健壮 选项比选项 1。
根据 Google 的说法,Chromecast 的目标是从云端流式传输内容,这就是为什么实际上没有任何原生支持发送本地镜像的原因。应鼓励开发人员从服务器将图像加载到接收器应用程序。
关于android - 将图像(照片)转换到 Chromecast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30643907/