演员自定义频道回调从未调用
问题描述:
我正在开发一个与Cast接收器应用程序进行通信的Android应用程序。演员自定义频道回调从未调用
连接到应用程序的作品(我可以看到应用程序出现在电视上),但我很难让自定义通道工作。
在我的活动的onCreate我得到CastContext并添加我的SessionManagerLister。
mCastContext = CastContext.getSharedInstance(this);
mCastContext.getSessionManager().addSessionManagerListener(getSessionManagerListener(), CastSession.class);
getSessionManagerListener()
返回这里注册我MessageReceivedCallback
监听器:
private SessionManagerListener<CastSession> getSessionManagerListener()
{
return new SessionManagerListener<CastSession>()
{
@Override
public void onSessionStarted(CastSession castSession, String s)
{
try
{
castSession.setMessageReceivedCallbacks("urn:x-cast:be.myappname.player.cast.v1", new Cast.MessageReceivedCallback()
{
@Override
public void onMessageReceived(CastDevice castDevice, String s, String s1)
{
System.out.println("never reaches this callback");
}
});
}
catch (IOException e)
{
e.printStackTrace();
}
}
... other methods omitted ...
}
}
当我点击工具栏铸按钮,我可以选择一个设备,这会触发onSessionStarted
在SessionManagerListener(这也将启动接收器在电视上的应用程序)。然后我添加MessageReceivedCallback
,但它的回调永远不会被调用。
在Chrome浏览器中检查我的Cast设备确实显示了我期望收到的数据,但它似乎无法达到我的Android代码。
cast_receiver.js:67 [667.202s] [cast.receiver.IpcChannel] IPC message
[667.202s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:be.myappname.player.cast.v1","senderId":"7c442884-74e6-a388-243c-58b4ab3a4527.3471:com.google.sample.cast.refplayer.tutorial-512","data":"{\"type\":\"login request\"}"}
一位同事正在研究iOS应用程序,并且确实收到回调。
答
尝试在onSessionStarted
CastContext cc = CastContext.getSharedInstance(this);
SessionManager sm = cc.getSessionManager();
if (sm != null) {
CastSession cs = sm.getCurrentCastSession();
if (cs != null) {
try {
MyCastChannel mcc = new MyCastChannel();
cs.setMessageReceivedCallbacks("urn:x-cast:be.myappname.player.cast.v1",mcc);
}
catch (IOException e) {
}
}
}
public class MyCastChannel implements Cast.MessageReceivedCallback
{
@Override
public void onMessageReceived(CastDevice castDevice, String namespace, String message)
{
// do your thing
}
}
以下