Ada*_*dam 22 android hang mediarecorder android-4.0-ice-cream-sandwich
stop()在我的视频捕获活动中进行呼叫时,软件有时会挂起并且不会恢复生命.只有通过点击"返回"触发ANR才能让我杀死活动.
在日志中,我看到以下一行一遍又一遍地重复:
W/CameraSource(YYYYY):等待传入的摄像机视频帧超时:XXXXXX us
有没有人见过这种行为?任何解决方法?
我们长期以来一直在努力解决这个问题.我们刚刚从android开发者网站复制代码来捕获视频,但应用程序在调用mediarecorder.stop()之前挂起.经过几乎逐行调试,我发现了ff.行导致问题:
captureButton.setText("start");
Run Code Online (Sandbox Code Playgroud)
我已将其评论出来并停止使用mediarecorder将不再导致ANR.我所做的不是改变按钮的文本,而是改变背景.
captureButton.setBackgroundResource(R.drawable.icon_post_camera_record_main);
Run Code Online (Sandbox Code Playgroud)
没有看到你的代码,我不确定我们是否有相同的问题原因,但这解决了我的问题.我仍在搜索为什么这会发生在settext()而不是setBackgroundResource.我的猜测是它与背景/异步任务有关,但它仍然是猜测.
这也发生在我身上,因为我在记录器上执行stop()之前释放了相机。它还说明了错误消息“等待传入的摄像机视频帧超时”。它正在等待已经发布的相机。确保停止录像机-然后才释放相机:
mMediaRecorder.stop();
mMediaRecorder.release();
camera.stopPreview();
camera.release();
Run Code Online (Sandbox Code Playgroud)
我建议您在后台线程中执行此操作,这样即使该方法阻塞,您的应用程序也不会卡住stop():
new Thread("STOP_RECORDER") {
public void run() {
Log.d(TAG, "Stopping recorder...");
mediaRecorder.stop();
Log.d(TAG, "Recorder successfully stopped");
}
}.start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3820 次 |
| 最近记录: |