Я получил подсказку от @ lyron.
Сначала , откройте фронтальную камеру.
int cameraId = -1;
int camNums = Camera.getNumberOfCameras();
for( int i = 0 ; i < camNums ; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if( info.facing == CameraInfo.CAMERA_FACING_FRONT ) {
cameraId = i;
break;
}
}
mCamera = Camera.open(cameraId);
mCamera.unlock();
Мне нужно использовать фронтальную камеру, как указано выше.
И НЕ ЗАБЫВАЙТЕ , чтобы разблокировать камеру.
Если вы этого не сделаете, вы увидите ошибки ниже.
E/MediaRecorder(15509): start failed: -19
E/SampleVideoRecorder(15509): Exception :
E/SampleVideoRecorder(15509): java.lang.RuntimeException: start failed.
E/SampleVideoRecorder(15509): at android.media.MediaRecorder.start(Native Method)
Второй , настройте камеру, прежде чем настраивать другие, как это.
recorder = new MediaRecorder();
recorder.setCamera( mCamera ); // like this!
recorder.setAudioSource( MediaRecorder.AudioSource.MIC);
recorder.setVideoSource( MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
recorder.setVideoSize( 2560, 1440 );
recorder.setVideoFrameRate(30);
recorder.setPreviewDisplay(holder.getSurface());
recorder.setOutputFile( s_dir );
try {
recorder.prepare();
recorder.start();
} catch( Exception e ) {
Log.e("SampleVideoRecorder", "Exception : ", e );
recorder.release();
recorder = null;
}
Кто-то говорит , что setCamera () следует вызывать перед prepare ().
Но я смотрю, мой код работает.