最近,我们在Android应用程序中添加了对Chromecast的支持,但在对各种移动设备(手机和平板电脑)进行的扩展测试中,结果表明,在许多情况下,Flipps应用程序未发现Chromecast。在同一设备上,我们使用最新版本的官方Chromecast SDK演示应用程序进行了测试,该应用程序从https://github.com/googlecast/CastVideos-android下载(主分支,6月30日更新,观察到类似结果 - 未发现Chromecast设备。
简而言之,我们的实现如下 - 我们扩展VideoCastConsumerImpl侦听器并将其添加到在AmsApplication中初始化的VideoCastManager对象(AmsApplication是app Application类):
this.controller = AmsApplication.getApplication().getSharingService().getDeviceController();
try {
mCastManager = AmsApplication.getCastManager(context);
mCastConsumer = new VideoCastConsumerImpl() {
@Override
public void onFailed(int resourceId, int statusCode) {
}
@Override
public void onConnectionSuspended(int cause) {
}
@Override
public void onConnectivityRecovered() {
}
@Override
public void onCastDeviceDetected(final RouteInfo info) {
CastDevice dev = new CastDevice(info, mCastManager);
controller.onDeviceAdded(dev);
}
};
mCastManager.addVideoCastConsumer(mCastConsumer);
isActive = true;
} catch (Exception ex) {
Log.e(TAG, "Error initializing cast manager", ex);
}
不幸的是,即使Chromecast设备可用并在同一WiFi网络中注册,也不会调用任何回调。类似的是演示应用程序的实现和行为。
由于我们实现了基于mDNS协议的自己的设备发现机制(使用JmDNS库,版本3.4.1)。因此,会发现Chromecast设备,并使用反射来调用私有类构造函数来构造类型为CastDevice
的对象。 CastDevice
对象被设置为已初始化的VideoCastManager
对象(方法:public void setDevice(CastDevice device, boolean stopAppOnExit)
)的设备,该对象随后调用connect()
类的GoogleApiClient
方法。大约15秒后,返回网络错误。
以上所有错误状态都在所有测试设备上一致地重现。以下是我们能够重现该问题的设备列表(包括操作系统和Google Play服务版本):
HTC One X | 4.2.2 | 5.0.84(1259630-036)
三星Galaxy S4(GT-I9505)| 4.4.2 | 5.0.84(1259630-038)
三星Galaxy S4 mini(GT-I9195)| 4.2.2 | 3.2.25(761454-30)
三星Galaxy TAB3(GT-P5200)| 4.2.2 | 5.0.84(1259630-070)
Motorola XOOM(MZ601)| 3.2 | 5.0.84(1259630-032)
索尼平板电脑S | 4.0.3 | 4.3.25(1117461-032)Nexus 5 | 4.4.4 | 5.0.89
另一方面,Chromecast已成功发现并在以下设备列表中正常运行:
HTC One | 4.4.2 | 5.0.88(1297476-038)
三星Galaxy S3(GT-I9300)| 4.3 | 5.0.84(1259630-036)
HTC One S | 4.0.4 | 5.0.84(1259630-036)
三星Galaxy 7 TAB2(GT-P3100)| 4.1.2 | 5.0.84(1259630-032)
三星Galaxy S2(GT-9105P)| 4.2.2 | 5.0.84(1259630-034)
三星Galaxy Nexus | 4.2.1 | 5.0.84(1259630-036)
Sony Xperia Z | 4.2.2 | 5.0.84(1259630-038)
Nexus 7(ME370T)| 4.3 | 5.0.84(1259630-030)
答案 0 :(得分:0)
我遇到类似Galaxy S4(GT-I9505)的问题,一段时间没有安装任何更新。
我的应用无法连接或发现Chromecast,但YouTube客户端却是。
固件更新无法解决,但在更新" AllShare Cast Dongle S / W Update"来自Play商店Chromecast被发现,我从未见过任何问题。我登录Play商店后立即建议更新。