【发布时间】:2020-03-12 01:15:10
【问题描述】:
很简单的情况。将Chromecast 按钮添加到toolbar。首次启动应用程序时,该按钮不会出现。当我将应用程序置于后台,然后再次将其置于前台时,会出现该按钮。是的,在同一个 wifi 网络上有一个可投射设备。
MyFragment.kt
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.toolbar_menu, menu)
CastButtonFactory
.setUpMediaRouteButton(context?.applicationContext, menu, R.id.media_route_menu_item)
return super.onCreateOptionsMenu(menu, inflater)
}
toolbar_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/media_route_menu_item"
android:title="@string/media_route_menu_title"
app:actionProviderClass="androidx.mediarouter.app.MediaRouteActionProvider"
app:showAsAction="always" />
</menu>
似乎应该这样做。我有具有正确接收器 ID 的 CastOptionsProvider 类设置。这是一个调试版本,所以没有 proguard。
请注意,该按钮最终会出现,但仅在我将应用程序置于后台/前台之后。我可以等待 10 分钟,但没有任何反应。但如果我是背景/前景,按钮立即可见。
编辑:
非常感谢@fllo 的回答。他的建议比最终要求的要多一些,所以我想为其他人澄清一下。
我发布的代码很好。我所缺少的只是在Activity 的 onCreate() 中初始化 CastContext。如果我只是考虑一下,那就完全有道理了。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
CastContext.getSharedInstance(this)
}
就是这样。轻松解决。希望它可以帮助某人。
【问题讨论】:
标签: android chromecast