Треки

Ваше приложение 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