将图片(照片)投射到Chromecast

时间:2015-06-04 12:30:31

标签: android casting chromecast google-cast

我按照这些(12)指南为Chromecast创建发送方Android应用程序,我只对发送图片感兴趣。 有很多信息和samples如何投射文字音频视频。但对于图片

而言,不是一句话

我相信 stackoferflow 的力量,有人应该遇到这样的问题。请提供一些好的样本或教程。我需要的是使用Media Router及其功能投射全屏图片的指南。

这就是我使用自定义渠道发送短信的方式:

 /**
 * 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);
    }
}

P.S。此方法使用这些库中的sendMessage(...)(来自gradle):

compile files('libs/commons-io-2.4.jar')
compile files('libs/GoogleCastSdkAndroid.jar')

1 个答案:

答案 0 :(得分:5)

在此处查看:Examples using CastCompanionLibrary to simply display an image向Chromecast发送图片实际上有三个选项。

  1. 您可以将图像编码为base64字符串并通过a发送 数据通道到接收器。如果它太大,你可以拆分它 并在多个消息中发送它。这是一个非常糟糕的用途 铸造技术,你真的不应该这样做,但确实如此 可能的。
  2. 您只需向Chromecast设备发送网址即可获取 从接收器应用程序内的服务器。这是推荐的 将照片发送到Chromecast的方式
  3. 如果您没有从可以设置的服务器下载图像 在您的客户端Android应用程序中运行自己的服务器并发送 请接收器从那里抓住它。这是相当的 复杂的发送图像,但是更强大 选项比选项1。
  4. 根据谷歌的说法,Chromecast的目标是从云中传输内容,这就是为什么没有任何本地支持发送本地图像的原因。应鼓励开发人员从服务器在接收器应用程序上加载图像。