startActivityForResult运行intent.ACTION_VIDEO_CAPTURE导致"停止失败"错误

时间:2015-08-25 14:09:42

标签: android android-intent video android-arrayadapter onactivityresult

我创建了一个自定义列表界面。我使用数组适配器管理列表视图单元格的按钮点击。我的一个按钮会打开一个对话框,提供录制视频的选项。

在我的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.

1 个答案:

答案 0 :(得分:0)

这是Genymotion仿真器的一个问题。测试时,我的平板电脑上的这个问题就消失了