Устройства 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)) {

            }
        }
    }

0 ответов

Другие вопросы по тегам