【发布时间】:2015-04-09 18:38:26
【问题描述】:
我试图在不点击按钮的情况下打开我的相机,但它不起作用...
我按照这里的说明进行操作:http://developer.android.com/guide/topics/media/camera.html#custom-camera
这是我的结果:
当我按下“捕获”按钮时,它会激活相机,但我想在此之前激活相机并在我点击像 snapchat 这样的按钮时进行录制。我想当我打开相机时我错过了某个地方,但我没有发现我的错误......
这是我的课:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
preview = (FrameLayout) findViewById(R.id.camera_preview);
if (checkCameraHardware(this)) {
mCamera = getCameraInstance();
mPreview = new CameraPreview(this, mCamera);
mCamera.setDisplayOrientation(90);
initButton();
preview.addView(mPreview);
preview.removeAllViews();
preview.addView(mPreview);
preview.addView(captureButton);
}
}
在那之后,我有了启动按钮的方法:
public void initButton () {
captureButton = (Button) findViewById(R.id.button_capture);
captureButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isRecording) {
// stop recording and release camera
mMediaRecorder.stop();
releaseMediaRecorder();
mCamera.lock();
// inform the user that recording has stopped
captureButton.setText("Capture");
isRecording = false;
} else {
// initialize video camera
if (prepareVideoRecorder()) {
// Camera is available and unlocked, MediaRecorder is prepared,
// now you can start recording
mMediaRecorder.start();
captureButton.setText("Stop");
isRecording = true;
} else {
releaseMediaRecorder();
Toast.makeText(MainActivity.this, "Camera doesn't work", Toast.LENGTH_LONG).show();
}
}
}
});
}
这是我获取相机实例的方法:
public static Camera getCameraInstance() {
Camera c = null;
try {
c = Camera.open();
} catch (Exception e) {
Log.i("CAMERA INFO : >", "Camera doesn't exist");
}
return c;
}
这是准备记录的方法:
private boolean prepareVideoRecorder() {
mMediaRecorder = new MediaRecorder();
// Step 1: Unlock and set camera to MediaRecorder
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
// Step 2: Set sources
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
mMediaRecorder.setProfile(camcorderProfile);
// Step 4: Set output file
mMediaRecorder.setOutputFile(getOutputMediaFile(CAPTURE_VIDEO_FILE).toString());
// Step 5: Set the preview output
mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
// Step 6: Prepare configured MediaRecorder
try {
mMediaRecorder.prepare();
} catch (IllegalStateException e) {
Log.d("PREPARE MEDIARECORDER : >", ": > > IllegalStateException preparing MediaRecorder: " + e.getMessage());
releaseMediaRecorder();
return false;
} catch (IOException e) {
Log.d("PREPARE MEDIARECORDER : >", " : > > IOException preparing MediaRecorder: " + e.getMessage());
releaseMediaRecorder();
return false;
}
return true;
}
然后我尝试在单击之前通过实例化打开相机,但我不知道如何...如果有人有想法,将对我有用。
【问题讨论】:
标签: android camera android-camera