断开发送方投射设备后,如何让我的 android 电视应用程序继续运行?
Posted
技术标签:
【中文标题】断开发送方投射设备后,如何让我的 android 电视应用程序继续运行?【英文标题】:How can I leave my android tv app running after disconnecting a sender cast device? 【发布时间】:2021-08-09 12:40:21 【问题描述】:旁注:这个问题本质上类似于例如Leave receiver running after sender stop ,尽管我在我的代码中找不到任何提及 stop
或 stopApplication
的内容。此外,尽管存在类似问题,但它们通常提供死链接,并且通常不专门针对 android 电视接收器应用程序。
场景
-
Android 设备 A 开始投射到 Android 电视。这会导致一个 android TV 应用程序作为接收器应用程序启动(请参阅https://developers.google.com/cast/docs/android_tv_receiver)。
Android 设备 B 连接到同一台 Android 电视,加入现有会话
B 断开连接(施法按钮 -> “停止施法”)
我想要发生的事情
接收方 (tv)onSenderDisconnected
应该只为 B 调用
Android TV 应用程序应保持运行
实际发生了什么
A 和 B 都调用接收方 (tv)onSenderDisconnected
Android TV 应用程序已关闭
问题
为什么所有发送方应用程序都会断开连接,而 Android TV 应用程序会在单个发送方断开连接后立即关闭? 如何在发送方断开连接后让 Android TV 应用程序继续运行?【问题讨论】:
您详细说明您注册了哪些听众?另外关于onSender...
方法,我只能在这里找到参考:developers.google.com/interactive-media-ads/docs/sdks/cast/dai/… 您是在编写 html5 接收器应用程序还是实际的 android 应用程序?
@JensV 我正在使用CastReceiverContext.registerEventCallback
注册CastReceiverContext.EventCallback
。这是 100% android,不涉及 html5。
【参考方案1】:
我刚刚在我的应用中实现了这个功能,你有没有尝试做这样的事情?
在您的Application
班级中:
CastReceiverContext.getInstance().registerEventCallback(object: CastReceiverContext.EventCallback()
override fun onSenderConnected(info: SenderInfo)
setupPlayerData()
override fun onSenderDisconnected(eventInfo: SenderDisconnectedEventInfo)
val intent = Intent(this@FooApplication, CastLauncherActivity::class.java).apply
flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
)
基本上,我在我的应用程序中所做的就是打开一个带有 Cast 符号的启动画面。我刚查了一下,你可以从onSenderConnected()
或onSenderDisconnected
打开任何Activity
【讨论】:
不,我没有尝试过,但是当发件人断开连接时,这不会简单地启动一个新活动吗? IE。我希望我的活动保持运行。考虑例如一个视频播放器应用程序,由于播放期间不活动而导致投射设备断开连接 - 我不希望视频因此而中断。 是的,实际上它在退出当前屏幕并打开新的Activity时会闪烁。如果将它与 singleTask 或 singleInstance 结合起来会怎样?这有意义吗?老实说,由于框架的基础,您正在尝试做一些 Google Cast 完全无法做到的事情。如果您单击“停止投射”,则意味着停止发送方和接收方之间的所有连接。让我尝试做其他事情,但肯定会是一种解决方法和一种不好的做法。以上是关于断开发送方投射设备后,如何让我的 android 电视应用程序继续运行?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Android 应用程序中发现 Roku 设备以进行投射