WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院手机开发Android 开发 Android midi 音效导致 mediaplay blocking 致死问... 阅读

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

 2010-04-01 15:56:00 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愬搫绾ч柕濠忕細閼割亜顪冪€n剙浠ф繛鍫熷灥椤曘儵顢欓悡搴ば�
核心提示:前些天做游戏,播放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 [复制链接] [打 印]
赞助商链接