Android chromecast:如何在应用程序启动之前检测应用程序的演员状态?
我正在将Chromecast支持添加到现有的Android应用程序中。我的应用程序应该检测演员状态,并相应地改变部分显示 我当前的代码可以正常工作,但在一个特定情况下,它会错误地检测强制转换状态:Android chromecast:如何在应用程序启动之前检测应用程序的演员状态?,android,chromecast,Android,Chromecast,我正在将Chromecast支持添加到现有的Android应用程序中。我的应用程序应该检测演员状态,并相应地改变部分显示 我当前的代码可以正常工作,但在一个特定情况下,它会错误地检测强制转换状态: 演员阵容设备可用,且应用程序已关闭(不在 背景) 用户打开应用程序 我的应用程序检测到的演员状态应该没有连接,但实际上没有可用的设备 等待几秒钟后,强制转换状态仍然错误 在将应用程序背景化并再次前景化后,演员阵容状态是正确的 我相信我的问题是由Google Cast造成的: CastContext在内
CastHelper{
私有val上下文:CastContext=CastContext.getSharedInstance(活动).apply{
addCastStateListener(this@CastHelper)
}
val castState=context.castState
覆盖onCastStateChanged(p0:Int){
println(“检测到强制转换状态更改:新状态为$castState”)
//^此选项可以正确打印,但在步骤2-4中,它根本不会打印
}
}
我认为可能是强制转换状态侦听器出了问题,所以我尝试每秒手动检查强制转换状态。没有任何变化;castState
在应未连接时仍然没有可用的设备
我的应用程序如何能够检测到演员状态,即使它没有背景?如果没有办法做到这一点,那么在应用程序被背景化之前,从任何应用程序进行强制转换都是不可能的吗?解决了!问题是CastHelper在应用程序启动后很长一段时间内被延迟初始化。CastHelper在初始化时只将自身添加为CastStateListener,所以在此之前我们没有检测到强制转换状态的更改
为了修复它,我在CastHelper上创建了一个no-op方法:
CastHelper{
...
fun onCreate(){}
}
并在我的应用程序活动的onCreate方法中调用它:
class AppActivity:FragmentActivity(){
创建公共覆盖乐趣(savedInstanceState:Bundle?){
...
CastHelper.onCreate()
}
这将强制CastHelper在应用程序运行时进行初始化,并允许应用程序正确检测强制转换状态。已解决!问题在于CastHelper在应用程序启动后很长一段时间才进行了延迟初始化。CastHelper在初始化时仅将自身添加为CastStateListener,因此直到那么
为了修复它,我在CastHelper上创建了一个no-op方法:
CastHelper{
...
fun onCreate(){}
}
并在我的应用程序活动的onCreate方法中调用它:
class AppActivity:FragmentActivity(){
创建公共覆盖乐趣(savedInstanceState:Bundle?){
...
CastHelper.onCreate()
}
这将强制CastHelper在应用程序运行时进行初始化,并允许应用程序正确检测强制转换状态