android - 将图像(照片)转换到 Chromecast

标签 android casting chromecast google-cast

我正在按照这些(12)指南为 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 实际上有三个选项。

  1. 您可以将图像编码为 base64 字符串并通过 数据通道到接收器。如果太大,可以拆分 并通过多条消息发送。这是一个非常糟糕的用途 Actor 技术,真的你不应该这样做,但它是 可能。
  2. 您可以简单地向 Chromecast 设备发送一个 url 并获取它 从接收器应用程序中的服务器。这个最推荐 将照片发送到 Chromecast 的方法
  3. 如果您不是从服务器下载图像,您可以设置 在您的客户端 Android 应用程序中运行您自己的服务器并发送 接收者的 url 以从那里获取它。这倒是 发送图像很复杂,但是更健壮 选项比选项 1。

根据 Google 的说法,Chromecast 的目标是从云端流式传输内容,这就是为什么实际上没有任何原生支持发送本地镜像的原因。应鼓励开发人员从服务器将图像加载到接收器应用程序。

关于android - 将图像(照片)转换到 Chromecast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30643907/

相关文章:

c++ - 使 auto_cast 安全

java - 膨胀类 com.google.android.material.internal.NavigationMenuItemView 时出错

android - 如果饼图中的值为 0%,如何删除线条

c++ - 扩展 boost::lexical_cast 用于其他类数据类型

c++ - 为什么要转换为指针然后取消引用?

javascript - 尝试创建队列时出现 ChromeCast session_error

android - 将文件从 Assets 复制到数据文件夹后,数据未首次在 android 中显示

android - 如何使用带有 Gradle 的 Android Studio 在 Android 上使用 NDK 从 C++ 构建静态库?

java - Chromecast - 如何拉伸(stretch)视频

google-cast - 调试 Chromecast Receiver 应用程序(设备不支持平台 API)