调用mediaRecorder.stop时Android应用程序冻结

时间:2015-09-18 12:40:01

标签: android android-camera

我正在使用mediaRecorder和相机尝试录制视频,按照http://developer.android.com/guide/topics/media/camera.html指南

在mediaRecorder上我设置了源,设置文件,准备和启动相机...这一切都很有效。

然后我调用mediaRecorder.stop,根据指南,这是你在停止过程中进行的第一次调用,应用程序就会挂起。没有错误,没有例外,nada。

它包裹在一个try / catch中,没有任何东西被扔掉或被抓住。

    Log.d(TAG, "try mediaRecorder stop");
    try { mMediaRecorder.stop(); }
    catch (Exception e) {...}

logcat似乎没有任何有用的东西

09-18 08:34:28.079  D/MyCameraApp﹕ **try mediaRecorder stop**
09-18 08:34:28.273  D/jdwp﹕ processIncoming
09-18 08:34:28.273  D/jdwp﹕ handlePacket : cmd=0x1, cmdSet=0xC7, len=0x14, id=0x40001414, flags=0x0, dataLen=0x9
09-18 08:34:28.273  D/jdwp﹕ sendBufferedRequest : len=0x34
09-18 08:34:28.774  D/jdwp﹕ processIncoming
...repeat same messages forever...
09-18 08:34:43.374  I/AndroidRuntime﹕ VM exiting with result code 1, cleanup skipped.

当我查看fileManager时,视频确实已经创建,并且其大小会根据我在杀死应用程序之前单独留下的时间而增长。如果我尝试打开视频,我会收到“无法播放此视频”错误。

为什么应用程序挂起?我找不到一种方法来查看任何有用的错误消息。

- 启动相机代码,我在这里做错了什么 -

    mCamera.unlock();
    mMediaRecorder.setCamera(mCamera);

    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

    mMediaRecorder.setProfile(CamcorderProfile.get(1));
    mMediaRecorder.setOutputFile(getOutputMediaFile(MEDIA_TYPE_VIDEO).toString());

    try { mMediaRecorder.prepare(); }
    catch (IOException e) {...}
    catch (IllegalStateException e) {...}

    try { mMediaRecorder.start(); }
    catch (Exception e) {...}

更新1

我已经尝试重置设备并为捕获的错误添加一个版本,仍然不知道它可能失败的地方或原因。

仍然没有骰子,有关我如何尝试获取更多信息的任何线索?关于它崩溃的地点/原因?

更新2

我已尝试使用其他设备,并在mediarecorder启动期间遇到非法状态异常。或许这可以解释这个问题?我打开了另一个问题,因为我不肯定这两个是相同的:Android video recording - IllegalStateException on mediaRecorder.start

0 个答案:

没有答案