断开发送方投射设备的连接后,如何让我的 Android 电视应用继续运行?

问题描述

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


场景

  1. Android 设备 A 开始投射到 Android TV。这会导致 Android TV 应用作为接收器应用启动(请参阅 https://developers.google.com/cast/docs/android_tv_receiver)。
  2. Android 设备 B 连接到同一台 Android TV,加入现有会话
  3. B 断开连接(投射按钮 ->“停止投射”)

我想要发生的事情

  • 接收端 (tv) onSenderdisconnected 只应为 B 调用
  • Android TV 应用应保持运行

实际发生了什么

  • 接收方 (tv) onSenderdisconnected 被 A 和 B 调用
  • Android TV 应用已关闭

问题

  • 为什么所有发件人应用程序都断开连接,而一旦单个发件人断开连接,Android TV 应用程序就会关闭
  • 如何在发送方断开连接后让 Android TV 应用程序继续运行?

解决方法

我刚刚在我的应用中实现了这个功能,你有没有尝试做这样的事情?

在您的 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)
        }
    })

基本上我在我的应用程序中所做的是打开一个带有投射符号的启动画面。我刚刚检查过,您可以从 ActivityonSenderConnected()

打开任何 onSenderDisconnected

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...