Ваше приложение Android TV может поддерживать несколько аудио/текстовых дорожек для разных языков и настройки объемного звука так же, как и приложения веб-приемника. Чтобы поддерживать несколько дорожек и выбор дорожек, вам необходимо реализовать в приложении Android TV следующее:
Предоставьте информацию о треке и статус
Для MediaInfo
верхнего уровня укажите доступные MediaTracks
с помощью MediaInfoModifier
:
val mediaInfoModifier = CastReceiverContext.getInstance()
.mediaManager.mediaStatusModifier.mediaInfoModifier
mediaInfoModifier.setMediaTracks(Arrays.asList(
new MediaTrack.Builder(1, MediaTrack.TYPE_AUDIO)
.setName("English")
...
build(),
new MediaTrack.Builder(2, MediaTrack.TYPE_AUDIO)
.setName("Spanish")
...
.build()
))
MediaInfoModifier mediaInfoModifier = CastReceiverContext.getInstance()
.getMediaManager().getMediaStatusModifier().getMediaInfoModifier();
mediaInfoModifier.setMediaTracks(Arrays.asList(
new MediaTrack.Builder(1, MediaTrack.TYPE_AUDIO)
.setName("English")
...
build(),
new MediaTrack.Builder(2, MediaTrack.TYPE_AUDIO)
.setName("Spanish")
...
.build()
));
Используйте MediaTracksModifier
, чтобы отразить выбранные в данный момент треки:
val mediaStatusModifier: MediaTracksModifier =
CastReceiverContext.getInstance()
.mediaManager.mediaStatusModifier.getMediaTracksModifer()
MediaTracksModifier.setActiveTrackIds(longArrayOf(1))
MediaTracksModifier mediaStatusModifier =
CastReceiverContext.getInstance()
.getMediaManager().getMediaStatusModifier().getMediaTracksModifer();
MediaTracksModifier.setActiveTrackIds(new long[]{1});
Вышеупомянутые шаги помогут убедиться, что диалоговое окно выбора трека отправителя отображает правильное состояние.
Обработка выбора трека
Для поддержки выбора дорожки необходимо сначала объявить MediaStatus.COMMAND_EDIT_TRACKS
как поддерживаемую медиа-команду в MediaStatusModifier
:
CastReceiverContext
.getInstance()
.getMediaManager()
.getMediaStatusModifier()
.setMediaCommandSupported(MediaStatus.COMMAND_EDIT_TRACKS, true)
CastReceiverContext
.getInstance()
.getMediaManager()
.getMediaStatusModifier()
.setMediaCommandSupported(MediaStatus.COMMAND_EDIT_TRACKS, true);
Когда пользователь выбирает треки в диалоговом окне выбора треков на стороне отправителя, ваше приложение Android TV получает обратный вызов для изменения выбранных треков. Обработайте команду, переопределив MediaCommandCallback
:
class MyMediaCommandCallback : MediaCommandCallback() {
/** Text selection callback scoped to individual track types. */
override fun onSelectTracksByType(
senderId: String?, type: Int, tracks: List
public class MyMediaCommandCallback extends MediaCommandCallback {
/** Text selection callback scoped to individual track types. */
@Override
public Task