Устройства Android Cast (доступные маршруты) не отображаются в MediaRouterDialog в Android?
Я хочу транслировать локальное видео на Android TV или Smart TV, и я использую для этого API MediaRouter, но маршруты не обнаруживают в событии MediaRouterDialog YouTube или другие приложения для кастинга, обнаруживающие устройства в той же сети LAN. Я использую ту же сеть для поиска и следования документации, но считаю, что это ошибка в реализации кода. Вот моя реализация кода. Если кто-нибудь знает эту проблему, ответьте, спасибо.
Я использую эти разрешения в файле манифеста
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMain2Binding.inflate(layoutInflater)
setContentView(binding.root)
mediaRouter = MediaRouter.getInstance(applicationContext)
mSelector = MediaRouteSelector.Builder()
.addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO)
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO)
.build()
mediaRouter?.addCallback(
mSelector!!, mediaRouterCallback,
MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN
)
binding.castButton.setOnClickListener {
dialog = MediaRouteChooserDialog(this)
dialog!!.routeSelector = mSelector as MediaRouteSelector
dialog!!.show()
}
}
Для обратных звонков
private val mediaRouterCallback = object : MediaRouter.Callback() {
override fun onRouteSelected(
router: MediaRouter,
route: MediaRouter.RouteInfo,
reason: Int
) {
super.onRouteSelected(router, route, reason)
Log.d(TAG, "onRouteSelected: route=$route")
val name = route.name
Toast.makeText(this@MainActivity2, name, Toast.LENGTH_SHORT).show()
}
override fun onRouteRemoved(router: MediaRouter, route: MediaRouter.RouteInfo) {
super.onRouteRemoved(router, route)
Log.d(TAG, "onRouteRemoved: route=$route")
val name = route.name
Toast.makeText(this@MainActivity2, "$name\nRoute Removed", Toast.LENGTH_SHORT).show()
}
override fun onRouteUnselected(
router: MediaRouter,
route: MediaRouter.RouteInfo,
reason: Int
) {
Log.d(TAG, "onRouteUnselected: route=$route")
if (route.supportsControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)) {
}
}
}