【问题标题】:How can I leave my android tv app running after disconnecting a sender cast device?断开发送方投射设备后,如何让我的 android 电视应用程序继续运行?
【发布时间】:2021-08-09 12:40:21
【问题描述】:

旁注:这个问题本质上类似于例如Leave receiver running after sender stop ,尽管我在我的代码中找不到任何提及 stopstopApplication 的内容。此外,尽管存在类似问题,但它们通常提供死链接,并且通常不专门针对 android 电视接收器应用程序。


场景

  1. Android 设备 A 开始投射到 Android 电视。这会导致一个 android TV 应用程序作为接收器应用程序启动(请参阅https://developers.google.com/cast/docs/android_tv_receiver)。
  2. Android 设备 B 连接到同一台 Android 电视,加入现有会话
  3. 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。

标签: android google-cast android-tv google-cast-sdk


【解决方案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 完全无法做到的事情。如果您单击“停止投射”,则意味着停止发送方和接收方之间的所有连接。让我尝试做其他事情,但肯定会是一种解决方法和一种不好的做法。
猜你喜欢
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 2014-11-15
相关资源
最近更新 更多