我创建了一个自定义列表界面。我使用数组适配器管理列表视图单元格的按钮点击。我的一个按钮会打开一个对话框,提供录制视频的选项。
在我的Adapters getView
方法中,我有按钮的单击侦听器。当我选择视频录制按钮时。视频摄像头意图正确打开,我能够录制一些视频,但是当我点击停止时,应用程序会冻结,视频摄像头屏幕会刷新(除非这次,我无法点击录制)。我正在使用Genymotion作为模拟器。我可以按ESC
退出冻结的屏幕。
然后在按onActivityResult
后调用我的Activity中的ESC
方法。
这是我在MainActivityListAdapter中调用startActivityForResult的方法:
video.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
File mediaFile = new
File(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/myvideo.mp4");
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
fileUri = Uri.fromFile(mediaFile);
Globals shared = Globals.getInstance();
shared.setValue(qid);
shared.setFile_path(fileUri);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
((Activity) context).startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);
dialog.dismiss();
} // end method onClick
}); // end setOnClickListener
我正在使用全局变量作为我的文件路径和其他参数,因为onActivityResult
中的data.getData()返回空指针异常。
以下是onActivityResult
中的MainActivity
:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Globals shared = Globals.getInstance();
String qid = shared.getValue();
switch (requestCode) {
case CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE:
Uri selectedVideo = shared.getFile_path();
Toast.makeText(this, "Video Path:\n" +
selectedVideo, Toast.LENGTH_LONG).show();
//rest of the code hasn't been filled in yet,
//but this shouldn't be affecting my problem...I think
break;
}
}
我的logcat中出现以下错误:
08-25 14:49:28.239 475-30145/? E/MPEG4Writer﹕ The number of recorded samples is 0
08-25 14:49:28.239 475-30145/? W/MPEG4Writer﹕ 0-duration samples found: 1
08-25 14:49:28.239 475-30145/? W/MPEG4Writer﹕ 0-duration samples found: 1
08-25 14:49:28.239 475-30145/? I/MPEG4Writer﹕ Received total/0-length (0/0) buffers and encoded 0 frames. - Audio
08-25 14:49:28.239 475-30145/? I/MPEG4Writer﹕ Audio track drift time: 0 us
08-25 14:49:28.240 475-30126/? I/MediaCodecSource﹕ encoder (audio) stopped
08-25 14:49:28.240 475-901/? I/MediaCodecSource﹕ puller (audio) stopping
08-25 14:49:28.283 475-30139/? I/NuPlayerDecoder﹕ [OMX.google.vorbis.decoder] resubmitting CSD
08-25 14:49:28.283 475-30139/? I/NuPlayerDecoder﹕ [OMX.google.vorbis.decoder] resubmitting CSD
08-25 14:49:31.240 475-30133/? W/ALooperRoster﹕ failed to deliver message. Target handler 1041 registered, but object gone.
08-25 14:49:36.279 475-30132/? E/genymotion_audio﹕ get_next_buffer() pcm_read error -1
08-25 14:49:36.305 475-901/? I/MediaCodecSource﹕ puller (audio) stopped
08-25 14:49:36.305 475-901/? D/MPEG4Writer﹕ Audio track source stopped
08-25 14:49:36.305 475-901/? D/MPEG4Writer﹕ Audio track stopped
08-25 14:49:36.305 475-901/? D/MPEG4Writer﹕ Duration from tracks range is [0, 1002874] us
08-25 14:49:36.305 475-901/? D/MPEG4Writer﹕ Stopping writer thread
08-25 14:49:36.305 475-30136/? D/MPEG4Writer﹕ 0 chunks are written in the last batch
08-25 14:49:36.305 475-901/? D/MPEG4Writer﹕ Writer thread stopped
08-25 14:49:36.306 475-901/? D/MPEG4Writer﹕ Video track stopping
08-25 14:49:36.306 475-901/? D/MPEG4Writer﹕ Audio track stopping
08-25 14:49:36.307 30067-30067/? E/MediaRecorder﹕ stop failed: -1007
08-25 14:49:36.307 30067-30067/? E/CAM_VideoModule﹕ stop fail
java.lang.RuntimeException: stop failed.
at android.media.MediaRecorder.stop(Native Method)
at com.android.camera.VideoModule.stopVideoRecording(VideoModule.java:1461)
at com.android.camera.VideoModule.onStopVideoRecording(VideoModule.java:657)
at com.android.camera.VideoModule.onShutterButtonClick(VideoModule.java:699)
at com.android.camera.ShutterButton.performClick(ShutterButton.java:158)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
08-25 14:49:36.307 30067-30067/? D/CAM_OrientMgrImpl﹕ unlock orientation
08-25 14:49:36.308 30067-30067/? I/CAM_VideoModule﹕ Releasing media recorder.
答案 0 :(得分:0)
这是Genymotion仿真器的一个问题。测试时,我的平板电脑上的这个问题就消失了