检测Google Cast的使用

14
如何从移动设备/桌面端检测我的AndroidTV当前是否是Google Cast接收器?
从Google Cast接收器的角度,如何检测当前是谁在使用Google Cast发送器?
如何检测我的Android手机当前是否是Google Cast发送器?

请问,如果可能的话,您能解释一下为什么需要那些信息以及您的使用场景是什么吗? - Ali Naddaf
我想了解Android TV的使用情况以及Android手机是否可以用作遥控器。 - Adam Styrc
此外,我想要添加这个功能:当检测到投屏开始时,运行一个监视器应用程序,通过Harmony打开我的电视/扬声器。 - Dermot
2个回答

1
  1. 您可以使用Android Media Router API请求所有可用的Cast设备路线。然后您需要连接到每个Cast设备,然后确定应用程序ID甚至是否正在播放媒体。如果您只想知道自己的应用程序是否在运行,则可以通过Media Router请求进行过滤。

  2. 只有接收器才知道哪些发送器连接到它。在您自己的自定义接收器中,您可以跟踪自己应用程序的情况。

  3. 您可能可以使用Media Router来确定是否存在活动路线。不确定是否能够判断它是否是Cast路线,因为这些路线也可能通往其他设备,如蓝牙扬声器。


看起来很有前途,但你能具体说明可以使用哪些Android Media Router API类吗? - Adam Styrc
看一下这个样本:https://github.com/googlecast/MediaRouter-Cast-Button-android - Leon Nicholls

0

补充一下Leon的回答,我们在MediaRouter上设置了一个回调函数,以便在选择我们的Chromecast接收器应用程序时获得回调通知。

val mMediaRouterCallback = object : MediaRouter.Callback() {
    override fun onRouteSelected(router: MediaRouter?, route: MediaRouter.RouteInfo?) {
        routeInfo = route
    }
    override // override appropriate methods here!!
}
val mMediaRouteSelector = MediaRouteSelector.Builder()
    .addControlCategory(
        CastMediaControlIntent
            .categoryForCast(BuildConfig.CHROMECAST_RECEIVER_APP_ID)
    ).build()

MediaRouter.getInstance(context).addCallback(
    mMediaRouteSelector, mMediaRouterCallback,
    MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN
)

构建选择器以适用于多个应用程序。并且可以更改MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN以扩大您的扫描范围。


这不是API让发送方选择要投射到哪个接收方吗?OP想要相反的。他是接收方,想知道是否连接了发送方或发送方是谁。 - Yeung
我认为如果您的意思是自动连接到接收器,那是可能的。接收器软件完全不同,请在此处查看:https://developers.google.com/cast/docs/web_receiver - Friesgaard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接