创建Android视频录制器时setMaxDuration失败
我目前正在尝试在Android上创建一个非常简单的录像机,而不使用intent,只是一个自定义应用程序。下面是我的代码片段 } 但当我在emulator中部署这段代码时,在LogCat中我得到了一些类似这样的错误 java.lang.RuntimeException:无法启动活动组件信息 java.lang.RuntimeException:setMaxDuration失败。 位于android.media.MediaRecorder.setMaxDuration(本机方法) 我的代码怎么了?引用自:创建Android视频录制器时setMaxDuration失败,android,camera,recorder,Android,Camera,Recorder,我目前正在尝试在Android上创建一个非常简单的录像机,而不使用intent,只是一个自定义应用程序。下面是我的代码片段 } 但当我在emulator中部署这段代码时,在LogCat中我得到了一些类似这样的错误 java.lang.RuntimeException:无法启动活动组件信息 java.lang.RuntimeException:setMaxDuration失败。 位于android.media.MediaRecorder.setMaxDuration(本机方法) 我的代码怎么了
“注意:目前,MediaRecorder在模拟器上不工作。”尝试在
initRecorder
中设置输出格式setOutputFormat
function@bluefalcon“”中也没有关于initRecorder
的任何内容。你能解释得更多吗
import java.io.IOException;
import android.app.Activity;
import android.media.MediaRecorder;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class CameraActivity extends Activity implements SurfaceHolder.Callback {
public enum State {
UNKNOWN, CONNECTED, NOT_CONNECTED
}
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();
}