首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Google Cast Android发送器:未调用ResultCallback

Google Cast Android发送器:未调用ResultCallback
EN

Stack Overflow用户
提问于 2015-11-06 05:53:18
回答 1查看 381关注 0票数 1

我正在学习Android版的Google Cast Sender应用程序教程,当连接到Cast CustomReceiver时,我被卡住了。

我使用以下ConnectionCallbacks实现:

代码语言:javascript
复制
private class ConnectionCallbacks implements GoogleApiClient.ConnectionCallbacks {
    @Override
    public void onConnected(Bundle bundle) {
        Log.i(TAG, "ConnectionCallbacks.onConnected");

        LaunchOptions options = new LaunchOptions.Builder()
                .setRelaunchIfRunning(false)
                .build();
        Cast.CastApi
                .launchApplication(mApiClient, getString(R.string.google_cast_key), options)
                .setResultCallback(new ResultCallback<Cast.ApplicationConnectionResult>() {
                    @Override
                    public void onResult(Cast.ApplicationConnectionResult result) {
                        Status status = result.getStatus();
                        if (status.isSuccess()) {
                            Log.i(TAG, "Success!!! " + result.getApplicationStatus());
                        } else {
                            Log.e(TAG, "No success!!! " + result.getApplicationStatus());
                        }
                    }
                });
    }

    @Override
    public void onConnectionSuspended(int i) {
        Log.i(TAG, "ConnectionCallbacks.onConnectionSuspended: " + i);
    }
}

和CustomReceiver代码:

代码语言:javascript
复制
<script>

  window.castReceiverManager = cast.receiver.CastReceiverManager.getInstance();

  var appConfig = new cast.receiver.CastReceiverManager.Config();

  appConfig.statusText = 'Ready to play';

  // 100 minutes for testing, use default 10sec in prod by not setting this value
  appConfig.maxInactivity = 6000;

  window.castReceiverManager.start();
  console.log('Starting Receiver Manager');
  document.getElementById("message").innerHTML='Starting Receiver Manager';
</script>

当我从对话框中选择我的chromecast时,我的自定义接收器应用程序会在chromecast和应用程序日志中启动

代码语言:javascript
复制
11-05 22:38:00.470: I/MainActivity(8955): ConnectionCallbacks.onConnected

但是,它从不调用ResultCallbackConnectionFailedListeneronResultonConnectionSuspended。我遗漏了什么?

添加了日志文件

代码语言:javascript
复制
 [  0.340s] [cast.receiver.CastReceiverManager] Dispatching CastReceiverManager system ready event
desorona_cast_receiver.html:45 Received Ready event: {"id":"E9198EB3","name":"DESORONA","sessionId":"93EB8C53-4589-4D49-B578-E46D289B57F9","namespaces":[],"launchingSenderId":"40:com.example.test-145"}
cast_receiver.js:40  [  0.353s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender","data":"{\"type\":\"setappstate\",\"statusText\":\"Application status is ready...\"}"}
cast_receiver.js:40  [  0.373s] [cast.receiver.IpcChannel] Received message: {"data":"{\"level\":1.0,\"muted\":false,\"type\":\"volumechanged\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"}
cast_receiver.js:40  [  0.375s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message
cast_receiver.js:40  [  0.378s] [cast.receiver.CastReceiverManager] Dispatching system volume changed event [1, false]
cast_receiver.js:40  [  0.382s] [cast.receiver.IpcChannel] Received message: {"data":"{\"type\":\"visibilitychanged\",\"visible\":true}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"}
cast_receiver.js:40  [  0.385s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message
cast_receiver.js:40  [  0.388s] [cast.receiver.CastReceiverManager] Dispatching visibility changed event true
cast_receiver.js:40  [  0.392s] [cast.receiver.IpcChannel] Received message: {"data":"{\"standby\":false,\"type\":\"standbychanged\"}","namespace":"urn:x-cast:com.google.cast.system","senderId":"SystemSender"}
cast_receiver.js:40  [  0.393s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message
cast_receiver.js:40  [  0.395s] [cast.receiver.CastReceiverManager] Dispatching standby changed event false
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-06 18:08:53

我解决了我的问题。这不是发送者,而是接收者。谷歌没有声明,当使用CustomReceivers时,它需要注册MessageBus。将发送方连接到接收方的最小ReceiverCode必须为:

代码语言:javascript
复制
  var namespace = 'urn:x-cast:com.denis_loh.desorona'

  window.onload = function() {
    cast.receiver.logger.setLevelValue(0);
    window.castReceiverManager = cast.receiver.CastReceiverManager.getInstance();       

    // Erstelle MessageBus zum Austauschen von Daten
    window.messageBus = window.castReceiverManager.getCastMessageBus(namespace);

    // Lege onMessage-Callback für den MessageBus fest.
    window.messageBus.onMessage = onMessage;

    // Starte den Receiver.
    window.castReceiverManager.start({statusText: "Application is starting"});
    console.log('Receiver Manager started');
  };

  function onMessage(event) {
    window.messageBus.send(event.senderId, event.data);
  }

然而,我还不知道为什么这是必需的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33555504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档