直到API级别20(Android L Preview)才能正常工作,针对任何API.但是,当使用最新的Android Lollipop构建LPX13D并定位到等级为18或更高的级别时,我会遇到以下堆栈跟踪崩溃:
E / AndroidRuntime(31705):引起的:java.lang.NullPointerException:尝试在空对象引用上调用虚方法“java.lang.String android.bluetooth.BluetoothDevice.getAddress()’
E / AndroidRuntime(31705):在android.os.Parcel.readException(Parcel.java:1546)
E / AndroidRuntime(31705):android.os.Parcel.readException(Parcel.java:1493)
E / AndroidRuntime(31705):at android.media.IAudioService $Stub $Proxy.startBluetoothSco(IAudioService.java:1587)
E / AndroidRuntime(31705):在android.media.AudioManager.startBluetoothSco(AudioManager.java:1468)
如果我在Android Lollipop上针对API级别17或以下,一切都可以按预期方式工作.
我相信问题的根源在于在AudioService.java行2392中的API级别21中发生的Android音频代码的更改:
看起来像SCO_MODE_UNDEFINED应该是SCO_MODE_RAW.如果您查看该文件,您可以看到在几个地方检查了SCO_MODE_RAW,但从来没有实际传递任何地方.
有没有人遇到这个崩溃?有没有人知道一个更好的修复,而不是将目标SDK降级到17?如果没有,可以请你将bug report提交给Google,以增加它将被看到的机会:-)