【问题标题】:setMaxDuration failed when creating Android video recoder创建 Android 录像机时设置 Max Duration 失败
【发布时间】:2011-06-13 06:58:23
【问题描述】:

我目前正在尝试在不使用意图的情况下在 Android 上创建一个非常简单的录像机,只是一个自定义应用程序。我的代码 sn-p 如下

导入 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: 无法启动 Activity ComponentInfo...

java.lang.RuntimeException:setMaxDuration 失败。 在 android.media.MediaRecorder.setMaxDuration(Native Method)

我的代码有什么问题?

【问题讨论】:

标签: android camera recorder


【解决方案1】:

引用http://developer.android.com/reference/android/media/MediaRecorder.html: "注意:目前,MediaRecorder 不能在模拟器上运行。"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 2017-12-10
    • 2020-10-31
    • 1970-01-01
    • 2012-09-10
    相关资源
    最近更新 更多