package com.devbrackets.android.exomediademo; import android.app.Application; import android.os.StrictMode; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.devbrackets.android.exomedia.ExoMedia; import com.devbrackets.android.exomediademo.manager.PlaylistManager; import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSourceFactory; import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.HttpDataSource; import com.google.android.exoplayer2.upstream.TransferListener; import com.squareup.leakcanary.LeakCanary; import okhttp3.OkHttpClient; public class App extends Application { private static App application; private static PlaylistManager playlistManager; @Override public void onCreate() { enableStrictMode(); super.onCreate(); application = this; playlistManager = new PlaylistManager(); LeakCanary.install(this); configureExoMedia(); } @Override public void onTerminate() { super.onTerminate(); application = null; playlistManager = null; } public static PlaylistManager getPlaylistManager() { return playlistManager; } public static App getApplication() { return application; } private void enableStrictMode() { StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .build()); } private void configureExoMedia() { // Registers the media sources to use the OkHttp client instead of the standard Apache one // Note: the OkHttpDataSourceFactory can be found in the ExoPlayer extension library `extension-okhttp` ExoMedia.setHttpDataSourceFactoryProvider(new ExoMedia.HttpDataSourceFactoryProvider() { @NonNull @Override public HttpDataSource.BaseFactory provide(@NonNull String userAgent, @Nullable TransferListener<? super DataSource> listener) { return new OkHttpDataSourceFactory(new OkHttpClient(), userAgent, listener); } }); } }