static AndroidMediaPlayerFacade newInstance(Context context, MediaPlayerForwarder forwarder) { TrackInfosFactory trackInfosFactory = new TrackInfosFactory(); AndroidMediaPlayerAudioTrackSelector trackSelector = new AndroidMediaPlayerAudioTrackSelector(trackInfosFactory); PlaybackStateChecker playbackStateChecker = new PlaybackStateChecker(); AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); MediaPlayerCreator mediaPlayerCreator = new MediaPlayerCreator(); return new AndroidMediaPlayerFacade(context, forwarder, audioManager, trackSelector, playbackStateChecker, mediaPlayerCreator); }
AudioTracks getAudioTracks() throws IllegalStateException { assertIsInPlaybackState(); return trackSelector.getAudioTracks(mediaPlayer); }
boolean selectAudioTrack(PlayerAudioTrack playerAudioTrack) throws IllegalStateException { assertIsInPlaybackState(); return trackSelector.selectAudioTrack(mediaPlayer, playerAudioTrack); }
@Test public void whenSelectingAudioTrack_thenDelegatesToTrackSelector() { givenMediaPlayerIsPrepared(); PlayerAudioTrack audioTrack = mock(PlayerAudioTrack.class); facade.selectAudioTrack(audioTrack); verify(trackSelector).selectAudioTrack(mediaPlayer, audioTrack); }
@Test public void givenNullMediaPlayer_whenGettingAudioTracks_thenThrowsIllegalState() { thrown.expect(ExceptionMatcher.matches("You can only call getAudioTracks() when video is prepared.", IllegalStateException.class)); trackSelector.getAudioTracks(null); }
@Before public void setUp() { trackSelector = new AndroidMediaPlayerAudioTrackSelector(trackInfosFactory); }
@Test public void givenNullMediaPlayer_whenSelectingAudioTrack_thenThrowsIllegalState() { thrown.expect(matches("You can only call selectAudioTrack() when video is prepared.", IllegalStateException.class)); trackSelector.selectAudioTrack(null, mock(PlayerAudioTrack.class)); }
@Test public void givenTrackSelectorContainsUnsupportedTracks_whenGettingAudioTracks_thenReturnsOnlySupportedTracks() { givenTrackSelectorContainsUnsupportedTracks(); AudioTracks audioTracks = trackSelector.getAudioTracks(mediaPlayer); assertThat(audioTracks).isEqualTo(expectedAudioTrack()); }
@Test public void whenSelectingAudioTrack_thenMediaPlayerSelectsAudioTrack() { PlayerAudioTrack playerAudioTrack = mock(PlayerAudioTrack.class); given(playerAudioTrack.groupIndex()).willReturn(AUDIO_TRACK_INDEX); trackSelector.selectAudioTrack(mediaPlayer, playerAudioTrack); verify(mediaPlayer).selectTrack(AUDIO_TRACK_INDEX); }
@Test public void whenGettingAudioTracks_thenDelegatesToTrackSelector() { givenMediaPlayerIsPrepared(); given(trackSelector.getAudioTracks(mediaPlayer)).willReturn(AUDIO_TRACKS); AudioTracks audioTracks = facade.getAudioTracks(); assertThat(audioTracks).isEqualTo(AUDIO_TRACKS); }