Verhindern, dass mein audio-app mit NuPlayer auf Android Lollipop 5.x?
Ich habe eine audio-app, die spielt mehrere tracks gleichzeitig, jede mit Ihren eigenen mediaPlayer
. Jeder track ist ziemlich lang, nach oben von zwei Minuten.
So lange, wie die Spuren kodiert werden als ogg-Dateien, alles funktioniert Super auf Android 4.x. Ich habe noch zu treffen, dass ein Gerät mit Lager 4.x, die hat audio-Probleme mit diesem setup.
Aber auf Lollipop 5.x es gibt eine Vielzahl von audio-Probleme - Ruckler, tracks Ausschneiden, und bluetooth-audio fast nie zu funktionieren scheint.
Habe ich entdeckt, dass der Gang in die Entwickler-Optionen in den 5.x und deaktivieren Sie die Kontrollkästchen "verwenden Nuplayer (experimentell)" sofort löst diese Probleme und gibt zu 4.x Leistungsniveau.
Gibt es eine Möglichkeit, ich kann programmgesteuert Kraft, meine app zu verwenden, die 4.x-media-stack (ich glaube es heißt Awesomeplayer?) und die Verwendung der neuen Nuplayer system? Zumindest bis ich entdecken können, die Quelle der Nuplayer Probleme?
- Hallo. Hast du es geschafft, um dies herauszufinden ?
- Nein, leider nicht. Es gibt ein Problem auf der Android-issue-tracker.
- Überprüfen Sie meine aktualisierte Antwort, die wir gefunden haben, eine effektive Problemumgehung gibt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update:
Einstellung ein partial wake lock auf den MediaPlayer behebt dieses problem:
playerToPrepare.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
Ein partial wake lock sollte nicht allzu großen Einfluss, und es scheint, wie MediaPlayer selbst reinigt diese, wenn die Wiedergabe abgeschlossen ist.
-- Original-Antwort ---
So, ich habe endlich einen Weg gefunden, um sicher zu erkennen, ob oder nicht
NuPlayer
benutzt wird oder nicht auf Lollipop. Scheint, wie die beste Strategie ist, jetzt ist die Information der Benutzer zum öffnen der Entwickler-Einstellungen und aktivieren SieAwesomePlayer
bis Google behebtNuPlayer
.Leider, es gibt keinen guten Weg, um diese Einstellung zu ändern für den Benutzer, wir können nur Lesen seinen Wert, wenn Sie angemeldet sind als system-Anwendung.
Dieser Ansatz prüft die Android-system-Eigenschaften Werte zu sehen, wenn der Benutzer aktiviert die Verwendung von AwesomePlayer oder nicht unter Entwickler Einstellungen. Seit Lollipop habe NuPlayer standardmäßig aktiviert, wenn dieser Wert deaktiviert ist, wissen wir NuPlayer verwendet werden.
Drop SystemProperties.java in Ihrem Projekt für den Zugriff auf Lesen Sie die system-Eigenschaften, ändern Sie nicht Ihr Paket Namen von
android.os
(er ruft durch die entsprechenden JNI-Methoden, so muss die gleiche bleiben).Können Sie jetzt überprüfen, ob das Telefon Lollipop/5.0, wenn
AwesomePlayer
aktiviert ist, und entsprechend handeln, wenn es nicht (z.B. durch öffnen der Developer-Einstellungen):Aktivieren/Deaktivieren NuPlayer nicht helfen. Aber ich schaffte es wakelock Teil mit einer freundlichen Benutzeroberfläche. Ich guck heute Abend als SysCtl von KitKat und vergleichen Sie Sie mit der eine auf Lollipop, vielleicht finde ich etwas Interessantes.
Also bluetooth Stottern ist in Bezug auf die dumm-kernel auf 5.02, die stottert die Wiedergabe, sobald Bildschirm aus ist. Ich verwendet einen partial wakelock also die cpu bleibt aktiv nach screen off mit dieser app. Es funktioniert. Keine Ruckler mehr. Wie für Lautsprecher, die eine hohe sample-rate ich wechselte den cpu-governor auf performance. Es ist ein workaround aber den partial wakelock sollte Arbeit vor allem auf bluetooth-Kopfhörer. Hier ist der app link https://play.google.com/store/apps/details?id=eu.thedarken.wl&hl=de