2014-12-19 76 views
6

我有一個音頻應用程序,可以同時播放多個音軌,每個音軌都有自己的mediaPlayer。每條賽道相當長,兩分鐘之內。使用Android Lollipop 5.x上的NuPlayer阻止我的音頻應用程序?

只要軌道編碼爲ogg文件,在Android 4.x上一切正常。我還沒有遇到運行stock 4.x的設備,該設備有任何音頻問題。

但是在棒棒糖5.x上有各種各樣的音頻問題 - 口吃,音軌切割和藍牙音頻幾乎從來沒有工作。

我發現進入5.x的開發人員選項並取消選中「使用Nuplayer(實驗)」即時解決了這些問題,並返回到4.x級別的性能。

有沒有一種方法可以編程強制我的應用程序使用4.x媒體堆棧(我相信它叫做Awesomeplayer?),而不是使用新的Nuplayer系統?至少在我能發現Nuplayer問題的根源之前?

+0

你好。你設法弄清楚了嗎? – AndreiBogdan 2015-02-18 16:31:44

+1

不,不幸的是。 [Android問題跟蹤器存在問題](https://code.google.com/p/android/issues/detail?id=83132)。 – verysuperfresh 2015-02-19 17:30:22

+0

查看我更新的答案,我們發現了一個有效的解決方法。 – 2015-03-27 14:49:17

回答

3

更新: 設置上的MediaPlayer的部分喚醒鎖解決這個問題:

playerToPrepare.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);

的部分喚醒鎖應該不會有太大的影響,而且好像自己的MediaPlayer播放完成後清除它。

- 原來的答案---

所以,我終於找到了一種方法來安全地檢測羯羊或不NuPlayer會被使用或者不棒棒糖。似乎現在的最佳策略是通知用戶打開開發人員設置並啓用AwesomePlayer,直到Google修復NuPlayer。 不幸的是,沒有好的方法來改變用戶的這個設置,除非你被簽名爲系統應用程序,否則我們可以只讀取它的值。

此方法檢查Android的系統屬性值,以查看用戶是否已在開發人員設置下啓用AwesomePlayer的使用。由於Lollipop默認啓用了NuPlayer,如果此值被禁用,我們知道NuPlayer將被使用。

SystemProperties.java拖放到您的項目中以獲取讀取系統屬性,不要從android.os(它調用通過其相應的JNI方法,因此需要保持不變)更改其包名稱。

現在,您可以檢查手機棒棒糖/ 5.0,如果啓用AwesomePlayer,並採取相應的行動,如果它不是(例如,通過打開開發人員設置):

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

感謝您回來更新。我會在我的最後測試。希望它有效! – verysuperfresh 2015-03-27 17:11:14

+0

恐怕使用部分喚醒鎖並不能解決我硬件上的音頻問題 – verysuperfresh 2015-03-28 15:37:45

+0

您使用的是什麼設備? – 2015-03-31 20:07:45

1

啓用/禁用NuPlayer沒有幫幫我。但我用友好的用戶界面管理了wakelock部分。今晚我會看看KitKat的SysCtl,並將它與棒棒糖上的相比較,或許我會發現一些有趣的東西。

因此,藍牙口吃與5.02上的啞內核有關,一旦屏幕關閉,就會立即播放。我使用了部分喚醒鎖,以便在使用此應用程序屏幕關閉後,CPU保持活動狀態。有用。沒有更多的口吃。對於需要高採樣率的揚聲器,我只是將cpu調速器轉換爲性能。 這是一種解決方法,但部分喚醒鎖應特別適用於藍牙耳機。這裏的應用程序的鏈接https://play.google.com/store/apps/details?id=eu.thedarken.wl&hl=en