2014-12-19 14 views
6

Possiedo un'app audio che riproduce più tracce contemporaneamente, ciascuna con il proprio mediaPlayer. Ogni traccia è ragionevolmente lunga, al rialzo di due minuti.Previene la mia app audio utilizzando NuPlayer su Android Lollipop 5.x?

Fintanto che le tracce sono codificate come file ogg, tutto funziona alla perfezione su Android 4.x. Devo ancora incontrare un dispositivo con 4.x in esecuzione che presenta problemi audio con questa configurazione.

Ma su Lollipop 5.x ci sono una grande varietà di problemi audio - la balbuzie, le tracce di ritaglio e l'audio bluetooth non sembrano quasi mai funzionare.

Ho scoperto che entrare nelle opzioni di sviluppo in 5.x e deselezionare "usa Nuplayer (sperimentale)" risolve istantaneamente questi problemi e restituisce livelli di prestazioni 4.x.

C'è un modo per forzare la mia app a utilizzare la pila di supporti 4.x (credo si chiami Awesomeplayer?) E non utilizzare il nuovo sistema Nuplayer? Almeno fino a quando non riesco a scoprire la fonte dei problemi di Nuplayer?

+0

Ciao. Sei riuscito a capirlo? – AndreiBogdan

+1

No, sfortunatamente. [C'è un problema nel tracker dei problemi di Android] (https://code.google.com/p/android/issues/detail?id=83132). – verysuperfresh

+0

Controlla la mia risposta aggiornata, abbiamo trovato una soluzione efficace. –

risposta

3

Aggiornamento: Impostare un blocco scia parziale sulla MediaPlayer risolve questo problema:

playerToPrepare.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);

Un blocco scia parziale non dovrebbe avere troppo grande di un impatto, e sembra che si MediaPlayer pulisce questo quando la riproduzione completa.

- risposta originale ---

Così, ho finalmente trovato un modo per rilevare in modo sicuro indipendentemente da fatto NuPlayer saranno utilizzati o non su Lollipop. Sembra che la migliore strategia per ora sia informare l'utente di aprire le Impostazioni sviluppatore e abilitare AwesomePlayer fino a quando Google risolverà NuPlayer. Purtroppo, non c'è un buon modo per cambiare questa impostazione per l'utente, possiamo solo leggere il suo valore a meno che non sia firmato come applicazione di sistema.

Questo approccio controlla i valori delle proprietà di sistema di Android per verificare se l'utente ha abilitato l'uso di AwesomePlayer o meno in Impostazioni sviluppatore. Poiché Lollipop ha NuPlayer attivo per impostazione predefinita, se questo valore è disabilitato, sappiamo che verrà utilizzato NuPlayer.

Rilasciare SystemProperties.java nel proprio progetto per l'accesso alla lettura delle proprietà di sistema, non modificare il nome del pacchetto da android.os (richiama i relativi metodi JNI corrispondenti, quindi è necessario rimanere invariato).

È ora possibile controllare se il telefono è Lollipop/5.0, se AwesomePlayer è abilitato, e agire di conseguenza se non è (per esempio aprendo le Impostazioni Developer):

public void openDeveloperSettingsIfAwesomePlayerNotActivated(final Context context) { 
    final boolean useAwesome = SystemProperties.getBoolean("persist.sys.media.use-awesome", false); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !useAwesome) { 
     final Intent intent = new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS); 
     context.startActivity(intent);     
    } 
} 
+0

Grazie per essere tornato ad aggiornare. Proverò dalla mia parte. Spero funzioni! – verysuperfresh

+0

Ho paura che l'uso di un wake-lock parziale non risolva i problemi audio sul mio hardware – verysuperfresh

+0

Quale dispositivo stai usando? –

1

abilitazione/disabilitazione NuPlayer no Aiuto. Ma ho gestito la parte wakelock con un'interfaccia utente amichevole. Vedrò stasera come SysCtl di KitKat e confrontarlo con quello di Lollipop, forse troverò qualcosa di interessante.

Quindi la balbuzie bluetooth è correlata al kernel dumb su 5.02 che interrompe la riproduzione non appena lo schermo è spento. Ho usato un wakelock parziale in modo che la CPU rimanga attiva dopo lo spegnimento dello schermo con questa app. Funziona. Niente più balbuzie. Per quanto riguarda gli altoparlanti che richiedono un'elevata frequenza di campionamento, ho semplicemente sostituito il regolatore della cpu con le prestazioni. È una soluzione, ma il wakelock parziale dovrebbe funzionare in particolare sulle cuffie bluetooth.Ecco il link dell'app https://play.google.com/store/apps/details?id=eu.thedarken.wl&hl=en

Problemi correlati