12-24 16:49:58.147: DEBUG/AndroidRuntime(360): Shutting down VM
12-24 16:49:58.147: WARN/dalvikvm(360): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): FATAL EXCEPTION: main
12-24 16:49:58.397: ERROR/AndroidRuntime(360): java.lang.RuntimeException: java.io.IOException: prepare failed.
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.camera.VideoCamera.initializeRecorder(VideoCamera.java:942)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.camera.VideoCamera.access$2(VideoCamera.java:868)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.camera.VideoCamera$MainHandler.handleMessage(VideoCamera.java:201)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.os.Handler.dispatchMessage(Handler.java:99)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.os.Looper.loop(Looper.java:123)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at java.lang.reflect.Method.invokeNative(Native Method)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at java.lang.reflect.Method.invoke(Method.java:521)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at dalvik.system.NativeStart.main(Native Method)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): Caused by: java.io.IOException: prepare failed.
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.media.MediaRecorder._prepare(Native Method)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.media.MediaRecorder.prepare(MediaRecorder.java:503)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.camera.VideoCamera.initializeRecorder(VideoCamera.java:938)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): ... 10 more
12-24 16:49:58.147: WARN/dalvikvm(360): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): FATAL EXCEPTION: main
12-24 16:49:58.397: ERROR/AndroidRuntime(360): java.lang.RuntimeException: java.io.IOException: prepare failed.
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.camera.VideoCamera.initializeRecorder(VideoCamera.java:942)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.camera.VideoCamera.access$2(VideoCamera.java:868)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.camera.VideoCamera$MainHandler.handleMessage(VideoCamera.java:201)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.os.Handler.dispatchMessage(Handler.java:99)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.os.Looper.loop(Looper.java:123)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at java.lang.reflect.Method.invokeNative(Native Method)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at java.lang.reflect.Method.invoke(Method.java:521)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at dalvik.system.NativeStart.main(Native Method)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): Caused by: java.io.IOException: prepare failed.
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.media.MediaRecorder._prepare(Native Method)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at android.media.MediaRecorder.prepare(MediaRecorder.java:503)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): at com.android.camera.VideoCamera.initializeRecorder(VideoCamera.java:938)
12-24 16:49:58.397: ERROR/AndroidRuntime(360): ... 10 more
E/AuthorDriver( 2284): Command 13 completed with error -17
E/MediaRecorder( 2937): prepare failed: -17
E/videocamera( 2937): prepare failed for /mnt/sdcard/DCIM/Camera/VID_20101101_000954.mp4
V/videocamera( 2937): Releasing media recorder.
V/videocamera( 2937): Empty video file deleted: /mnt/sdcard/DCIM/Camera/VID_20101101_000954.mp4
......试了下录音,也有类似的问题,都有类似下面的Trace:
E/AuthorDriver( 2284): Command 14 completed with error -10
E/MediaRecorder( 2937): Start failed: -1
......LZ有进展记得分享一下。
Intent intent = new Intent(); // 调用照相机
intent.setAction("android.media.action.STILL_IMAGE_CAMERA");
startActivity(intent);
这里-17还是不知道什么错误, 可以在此处打印错误的地方再打印出一个字符串: strerror(errno)看到底是什么错误。
对于froyo版本的,recoder的prepare函数:
status_t MediaRecorder::prepare()
{
LOGV("prepare");
if(mMediaRecorder == NULL) {
LOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
if (!(mCurrentState & MEDIA_RECORDER_DATASOURCE_CONFIGURED)) {
LOGE("prepare called in an invalid state: %d", mCurrentState);
return INVALID_OPERATION;
}
if (mIsAudioSourceSet != mIsAudioEncoderSet) {
if (mIsAudioSourceSet) {
LOGE("audio source is set, but audio encoder is not set");
} else { // must not happen, since setAudioEncoder checks this already
LOGE("audio encoder is set, but audio source is not set");
}
return INVALID_OPERATION;
} if (mIsVideoSourceSet != mIsVideoEncoderSet) {
if (mIsVideoSourceSet) {
LOGE("video source is set, but video encoder is not set");
} else { // must not happen, since setVideoEncoder checks this already
LOGE("video encoder is set, but video source is not set");
}
return INVALID_OPERATION;
} status_t ret = mMediaRecorder->prepare();
if (OK != ret) {
LOGE("prepare failed: %d", ret);
mCurrentState = MEDIA_RECORDER_ERROR;
return ret;
}
mCurrentState = MEDIA_RECORDER_PREPARED;
return ret;
}应该是mMediaRecorder->prepare();出错了, 还需要跟下去看看。
1.恢复R9.1中下面两个libs:
device\fsl\proprietary\codec\lib\libfsl_omx_mp3_enc_arm12_elinux.so
device\fsl\proprietary\codec\lib\lib_mp3_enc_arm12_elinux.so
2.在的make文件device\fsl\proprietary\codec\fsl-codec.mk中恢复编译项:
lib/libfsl_omx_mp3_enc_arm12_elinux.so \
lib/lib_mp3_enc_arm12_elinux.so \
3.在configure文件device\fsl\proprietary\codec\conf\ComponentRegistry_MX51.txt中恢复配置项:
libfsl_omx_mp3_enc_arm12_elinux.so Mp3Enc_ComponentInit OMX.Freescale.std.audio_encoder.mp3.sw-based
这个问题是我们在系统移植的过程中碰到的。