断开发送方投射设备后,如何让我的 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 ,尽管我在我的代码中找不到任何提及 stopstopApplication 的内容。此外,尽管存在类似问题,但它们通常提供死链接,并且通常不专门针对 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 - 检测投射设备的类型

设备未断开连接

如何从 Android 应用程序中发现 Roku 设备以进行投射

如何在不使用 3rd 方服务的情况下使用 WCF 将推送通知发送到单独的 Android 设备?

如何让我的应用通过 NFC 发送蓝牙配对请求