Android 如何打开相机然后切换到图像模式(反之亦然)
在我的例子中,我想拍照或捕获视频,实际上,如果我创建单独的意图,我可以这样做。我的意思是我可以打开相机作为图像模式或视频模式,但不能在它们之间切换。这与我使用的意图过滤器有关吗?我该怎么办?如何在它们之间切换 我也有同样的问题。我做了一个表面视图和一个活动的照片相机后,我想把一个按钮,以记录在同一个活动中的视频与相同的表面视图,但我不知道这是否是可能的。好的,我在活动中写了这个方法来准备de MediaRecorder并获取表面视图Android 如何打开相机然后切换到图像模式(反之亦然),android,video,camera,photo,switching,Android,Video,Camera,Photo,Switching,在我的例子中,我想拍照或捕获视频,实际上,如果我创建单独的意图,我可以这样做。我的意思是我可以打开相机作为图像模式或视频模式,但不能在它们之间切换。这与我使用的意图过滤器有关吗?我该怎么办?如何在它们之间切换 我也有同样的问题。我做了一个表面视图和一个活动的照片相机后,我想把一个按钮,以记录在同一个活动中的视频与相同的表面视图,但我不知道这是否是可能的。好的,我在活动中写了这个方法来准备de MediaRecorder并获取表面视图 public Boolean prepararCama
public Boolean prepararCamaraVideo(){
mMediaRecorder = new MediaRecorder();
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
state = MediaRecorderState.INITIALIZED;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO)
mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
else {
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
}
state = MediaRecorderState.DATA_SOURCE_CONFIGURED;
mOutputFile = Files.getExternalMediaFile(Files.MEDIA_TYPE_VIDEO).toString();
mMediaRecorder.setOutputFile(mOutputFile);
mMediaRecorder.setPreviewDisplay(mCameraPreview.getHolder().getSurface());
try {
mMediaRecorder.prepare();
} catch (IllegalStateException e) {
Log.d("Video", "IllegalStateException preparing MediaRecorder: " + e.getMessage());
releaseMediaRecorder();
return false;
} catch (IOException e) {
Log.d("Video", "IOException preparing MediaRecorder: " + e.getMessage());
releaseMediaRecorder();
return false;
}
return true;
}
此命令包括mmediaregrator.setPreviewDisplay(mCameraPreview.getHolder().getSurface());获取摄像机的曲面
最后介绍了视频的录制方法
public void grabaVideo(View v) {
if (state!=MediaRecorderState.RECORDING){
if (prepararCamaraVideo()) {
mMediaRecorder.start();
state = MediaRecorderState.RECORDING;
Toast.makeText(getApplicationContext(), getString(R.string.capturing_video), Toast.LENGTH_SHORT).show();
} else {
// prepare didn't work, release the camera
releaseMediaRecorder();
// inform user
}
}
else{
mMediaRecorder.stop(); // stop the recording
releaseMediaRecorder(); // release the MediaRecorder object
mCamera.lock(); // take camera access back from MediaRecorder
state = MediaRecorderState.INITIAL;
Toast.makeText(getApplicationContext(), getString(R.string.video_stored_in) + " " + mOutputFile, Toast.LENGTH_SHORT).show();
}
}
我希望能帮助您。您需要使用intent获取摄像头,还是可以使用android的摄像头类?我使用这种方式是因为它的管理很简单。你有关于它的教程吗?但是你不能用这种方式切换模式。我希望它能给你一些想法拍照可以吗?拍摄视频怎么样?