过去几周我试图了解有关OpenSL的更多信息。写了一个简单的音乐播放器,它运作得非常好。
在某些设备上,我收到一条错误消息并且OpenSL线程被锁定,由于某种原因也会锁定UI线程,我必须强制关闭或等待非响应式弹出消息关闭应用程序。这在某些设备上很少发生,而且经常在华硕Nexus平板电脑上发生。
错误消息是
I/SoftAAC2( 6431): Reconfiguring decoder: 0->44100 Hz, 0->2 channels
D/dalvikvm( 490): GC_FOR_ALLOC freed 1918K, 24% free 19375K/25308K, paused 87ms, total 89ms
I/AudioFlinger( 125): BUFFER TIMEOUT: remove(4100) from active list on thread 0x41963008
I/audio_a2dp_hw( 125): suspend_audio_datapath: state 1
此消息是,没有任何描述性的。
由于我只能从JNI部分使用OpenSL,有没有办法检测BUFFER TIMEOUT消息并从C代码中关闭相应的线程?