如何解决创建Android视频记录器时,setMaxDuration失败
| 我目前正在尝试在Android上创建一个非常简单的录像机,而不使用意图,而只是使用自定义应用程序。我的代码段如下 导入java.io.IOException; 导入android.app.Activity; 导入android.media.MediaRecorder; 导入android.net.NetworkInfo; 导入android.os.Bundle; 导入android.util.Log; 导入android.view.SurfaceHolder; 导入android.view.SurfaceView; 公共类CameraActivity扩展Activity实现了SurfaceHolder.Callback { 公共枚举州{ 未知,已连接,未连接 }SurfaceView cameraView;
SurfaceHolder holder;
public boolean mListening;
public Object mState;
public NetworkInfo mNetworkInfo;
public boolean mSending;
boolean recording = false;
public static final String TAG = \"VIDEOCAPTURE\";
private MediaRecorder recorder;
protected void captureVideo() {
if (recording) {
recorder.stop();
// recorder.release();
recording = false;
Log.v(TAG,\"Recording Stopped\");
// Let\'s initRecorder so we can record again
initRecorder();
prepareRecorder();
} else {
recording = true;
recorder.start();
Log.v(TAG,\"Recording Started\");
}
}
private void initRecorder() {
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFile(\"/sdcard/videocapture_example.mp4\");
recorder.setMaxDuration(50000); // 50 seconds
recorder.setMaxFileSize(5000000);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
recorder = new MediaRecorder();
initRecorder();
setContentView(R.layout.main);
cameraView = (SurfaceView) this.findViewById(R.id.CameraView);
holder = cameraView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
holder.addCallback(this);
}
private void prepareRecorder() {
recorder.setPreviewDisplay(holder.getSurface());
try {
recorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
finish();
} catch (IOException e) {
e.printStackTrace();
finish();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder,int format,int w,int h) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.v(TAG,\"surfaceCreated\");
prepareRecorder();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// camera.stopPreview();
// camera.release();
Log.v(TAG,\"surfaceDestroyed\");
if (recording) {
recorder.stop();
recording = false;
}
recorder.release();
finish();
}
}
但是,当我在模拟器中部署此代码时,在LogCat中出现了这样的错误。
java.lang.RuntimeException:无法启动活动ComponentInfo ...
java.lang.RuntimeException:setMaxDuration失败。
在android.media.MediaRecorder.setMaxDuration(本地方法)
我的代码有什么问题?
解决方法
引用http://developer.android.com/reference/android/media/MediaRecorder.html:
\“注意:当前,MediaRecorder在模拟器上不起作用。”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。