在某些 Android 设备上未发现 Chromecast 设备
Posted
技术标签:
【中文标题】在某些 Android 设备上未发现 Chromecast 设备【英文标题】:Chromecast device is not discovered on some Android devices 【发布时间】:2014-10-17 07:21:21 【问题描述】:最近,我们在 android 应用程序中添加了对 Chromecast 的支持,但在对各种移动设备(手机和平板电脑)进行扩展测试时发现,在许多设备上,Flipps 应用程序没有发现 Chromecast。在我们使用从https://github.com/googlecast/CastVideos-android 下载的最新版本的官方 Chromecast SDK 演示应用程序(主分支,6 月 30 日更新并观察到类似结果 - 未发现 Chromecast 设备)测试的相同设备上,比我们测试的更多。
简而言之,我们的实现如下 - 我们扩展 VideoCastConsumerImpl 侦听器并将其添加到在 AmsApplication 中初始化的 VideoCastManager 对象(AmsApplication 是应用应用程序类):
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()
类的connect()
方法。大约 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)
摩托罗拉 XOOM (MZ601) | 3.2 | 5.0.84 (1259630-032)
索尼平板电脑 | 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)
索尼 Xperia Z | 4.2.2 | 5.0.84 (1259630-038)
Nexus 7 (ME370T) | 4.3 | 5.0.84 (1259630-030)
【问题讨论】:
Stack Overflow 用于编程问题。你有什么问题? 【参考方案1】:我在 Galaxy S4 (GT-I9505) 上也遇到过类似的问题,有一段时间没有安装任何更新。
我的应用无法连接或发现 Chromecast,但 YouTube 客户端可以。
固件更新并没有解决它,但在从 Play 商店更新“AllShare Cast Dongle S/W Update”后发现 Chromecast,此后我没有发现任何问题。在我登录 Play 商店后立即建议更新。
【讨论】:
以上是关于在某些 Android 设备上未发现 Chromecast 设备的主要内容,如果未能解决你的问题,请参考以下文章
对于某些 android 设备,GCM 消息在 GCM 服务器上停留在“已接受”状态
安装了 iOS 12 或更高版本的 iOS 设备上未显示 Chrome cast 图标
在某些 Android 设备/Chrome 上的 HTML5 数字输入中没有小数位
在 Android 设备上未调用 onLocationChanged()