WEB开发网
开发学院手机开发Android 开发 Android midi 音效导致 mediaplay blocking 致死问... 阅读

Android midi 音效导致 mediaplay blocking 致死问题

 2010-04-01 15:56:00 来源:WEB开发网   
核心提示:前些天做游戏,播放midi音效时,Android midi 音效导致 mediaplay blocking 致死问题,播放动作所在的线程会被卡死,仅限于1.5 sdk,= =!~,1.6的audioTrack加入了一段timeout检测,1.6sdk很正常,经查

前些天做游戏,播放midi音效时,播放动作所在的线程会被卡死,仅限于1.5 sdk,1.6sdk很正常。

经查,1.5的audio播放时有一段代码:

status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, bool blocking)

会在分配不到buffer时被卡死,知道分配到为止,无限循环啊,= =!~~~~~。

1.6的audioTrack加入了一段timeout检测,所以不会被卡死,只要我们处理好异常就ok:

status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, int32_t waitCount)

对应sorcecode如下:

http://www.netmite.com/android/mydroid/frameworks/base/media/libmedia/AudioTrack.cpp

http://android.git.kernel.org/?p=platform/frameworks/base.git;a=history;f=media/libmedia/AudioTrack.cpp;h=7537ddf9bb322f5092dbbdfdbb4a04edcb06dd8a;hb=105925376f8d0f6b318c9938c7b83ef7fef094da

http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=media/libmedia/AudioTrack.cpp;h=7537ddf9bb322f5092dbbdfdbb4a04edcb06dd8a;hb=105925376f8d0f6b318c9938c7b83ef7fef094da

http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=media/libmedia/AudioTrack.cpp;h=d4f2e5a473134770bda665eec3d7c7331a1d5cea;hb=f013e1afd1e68af5e3b868c26a653bbfb39538f8

Tags:Android midi 音效

编辑录入:coldstar [复制链接] [打 印]
赞助商链接