public static AndroidDeviceVersion newInstance() { return new AndroidDeviceVersion(Build.VERSION.SDK_INT); }
private void assertThatApiLevelIsJellyBeanEighteenOrAbove(DrmType drmType) { if (androidDeviceVersion.isJellyBeanEighteenOrAbove()) { return; } throw UnableToCreatePlayerException.deviceDoesNotMeetTargetApiException( drmType, Build.VERSION_CODES.JELLY_BEAN_MR2, androidDeviceVersion ); }
public static UnableToCreatePlayerException deviceDoesNotMeetTargetApiException(DrmType drmType, int targetApiLevel, AndroidDeviceVersion actualApiLevel) { return new UnableToCreatePlayerException( "Device must be target: " + targetApiLevel + " but was: " + actualApiLevel.sdkInt() + " for DRM type: " + drmType.name() ); }
private void setMovieAudioAttributes(SimpleExoPlayer exoPlayer) { if (androidDeviceVersion.isLollipopTwentyOneOrAbove()) { AudioAttributes audioAttributes = new AudioAttributes.Builder() .setContentType(C.CONTENT_TYPE_MOVIE) .build(); exoPlayer.setAudioAttributes(audioAttributes); } }
/** * Builds a new {@link NoPlayer} instance. * * @param context The {@link Context} associated with the player. * @return a {@link NoPlayer} instance. * @throws UnableToCreatePlayerException thrown when the configuration is not supported and there is no way to recover. * @see NoPlayer */ public NoPlayer build(Context context) throws UnableToCreatePlayerException { Context applicationContext = context.getApplicationContext(); Handler handler = new Handler(Looper.getMainLooper()); ProvisionExecutorCreator provisionExecutorCreator = new ProvisionExecutorCreator(); DrmSessionCreatorFactory drmSessionCreatorFactory = new DrmSessionCreatorFactory( AndroidDeviceVersion.newInstance(), provisionExecutorCreator, handler ); NoPlayerCreator noPlayerCreator = new NoPlayerCreator( applicationContext, prioritizedPlayerTypes, NoPlayerExoPlayerCreator.newInstance(handler), NoPlayerMediaPlayerCreator.newInstance(handler), drmSessionCreatorFactory ); return noPlayerCreator.create(drmType, drmHandler, downgradeSecureDecoder); }
@Test public void givenNonLollipopDevice_whenLoadingVideo_thenDoesNotSetAudioAttributesOnExoPlayer() { given(androidDeviceVersion.isLollipopTwentyOneOrAbove()).willReturn(false); facade.loadVideo(surfaceViewHolder, drmSessionCreator, uri, OPTIONS, exoPlayerForwarder, mediaCodecSelector); verify(exoPlayer, never()).setAudioAttributes(any(AudioAttributes.class)); }
AndroidDeviceVersion androidDeviceVersion = AndroidDeviceVersion.newInstance(); BandwidthMeterCreator bandwidthMeterCreator = new BandwidthMeterCreator(context); ExoPlayerFacade exoPlayerFacade = new ExoPlayerFacade(
@Test public void givenLollipopDevice_whenLoadingVideo_thenSetsMovieAudioAttributesOnExoPlayer() { given(androidDeviceVersion.isLollipopTwentyOneOrAbove()).willReturn(true); facade.loadVideo(surfaceViewHolder, drmSessionCreator, uri, OPTIONS, exoPlayerForwarder, mediaCodecSelector); AudioAttributes expectedMovieAudioAttributes = new AudioAttributes.Builder() .setContentType(C.CONTENT_TYPE_MOVIE) .build(); verify(exoPlayer).setAudioAttributes(expectedMovieAudioAttributes); }