package dk.dr.radio.afspilning.wrapper; import android.os.Build; import dk.dr.radio.data.DRData; import dk.dr.radio.diverse.App; import dk.dr.radio.diverse.Log; /** * Created by j on 14-11-15. */ public class Wrapperfabrikering { private static Class<? extends MediaPlayerWrapper> mediaPlayerWrapperKlasse = null; enum Hvilken { GammelMediaPlayer, NyExoPlayer, NyEmaPlayer }; private static Hvilken hvilkenSidst; public static MediaPlayerWrapper opret() { if (mediaPlayerWrapperKlasse == null) { boolean rapporter = App.prefs.getBoolean("Rapportér statistik", true); if (!rapporter) { App.langToast("DR Radio indsamler ikke brugsstatisik. Rapportér venligst om det gør en forskel for dig MHT batteriforbrug."); App.langToast("Hvis du er sikker på at det medfører væsentligt længere batterilevetid, så kontakt os, så vi kan kigge på problemet."); } if (App.EMULATOR || !App.ÆGTE_DR) rapporter = false; // A/B/C test - Vælg en tilfældig Hvilken hvilken = Hvilken.values()[(int) (Math.random()*Hvilken.values().length)]; if (hvilkenSidst==hvilken) { // Det er lidt kedeligt med den samme, prøv igen hvilken = Hvilken.values()[(int) (Math.random()*Hvilken.values().length)]; } //boolean exoplayer = App.PRODUKTION||!App.ÆGTE_DR ? false : Math.random()>0.5; hvilken = Hvilken.NyEmaPlayer; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) hvilken = Hvilken.GammelMediaPlayer; hvilkenSidst = hvilken; if (App.prefs.getBoolean("tving_exoplayer", DRData.instans.grunddata.tving_exoplayer)) hvilken = Hvilken.NyExoPlayer; if (App.prefs.getBoolean("tving_mediaplayer", DRData.instans.grunddata.tving_mediaplayer)) hvilken = Hvilken.GammelMediaPlayer; if (App.prefs.getBoolean("tving_emaplayer", DRData.instans.grunddata.tving_emaplayer)) hvilken = Hvilken.NyEmaPlayer; if (hvilken==Hvilken.NyExoPlayer) { try { if (!rapporter) mediaPlayerWrapperKlasse = ExoPlayerWrapper.class; else mediaPlayerWrapperKlasse = (Class<? extends MediaPlayerWrapper>) Class.forName("dk.dr.radio.afspilning.wrapper.AkamaiExoPlayerWrapper"); } catch (Exception e) { e.printStackTrace(); mediaPlayerWrapperKlasse = ExoPlayerWrapper.class; if (App.ÆGTE_DR) Log.e("Mangler Akamai-wrapper til statistik", e); } } else if (hvilken==Hvilken.NyEmaPlayer) { try { if (!rapporter) mediaPlayerWrapperKlasse = EmaPlayerWrapper.class; else mediaPlayerWrapperKlasse = (Class<? extends MediaPlayerWrapper>) Class.forName("dk.dr.radio.afspilning.wrapper.AkamaiEmaPlayerWrapper"); } catch (Exception e) { e.printStackTrace(); mediaPlayerWrapperKlasse = ExoPlayerWrapper.class; if (App.ÆGTE_DR) Log.e("Mangler Akamai-wrapper til statistik", e); } } else { try { if (!rapporter) mediaPlayerWrapperKlasse = AndroidMediaPlayerWrapper.class; else mediaPlayerWrapperKlasse = (Class<? extends MediaPlayerWrapper>) Class.forName("dk.dr.radio.afspilning.wrapper.AkamaiMediaPlayerWrapper"); } catch (ClassNotFoundException e) { mediaPlayerWrapperKlasse = AndroidMediaPlayerWrapper.class; if (App.ÆGTE_DR) Log.e("Mangler Akamai-wrapper til statistik", e); } } if (App.fejlsøgning) App.kortToast(mediaPlayerWrapperKlasse.getSimpleName()); } try { Log.d("MediaPlayerWrapper opret() " + mediaPlayerWrapperKlasse); return mediaPlayerWrapperKlasse.newInstance(); } catch (Exception e) { Log.rapporterFejl(e); } return new AndroidMediaPlayerWrapper(); } public static void nulstilWrapper() { if (App.fejlsøgning) App.kortToast(("Fjerner wrapper\n"+mediaPlayerWrapperKlasse).replaceAll("dk.dr.radio.afspilning.wrapper.","")); mediaPlayerWrapperKlasse = null; } }