我正在开发一款可以录制视频,拍照并在录制视频期间可以拍照的应用程序。对于简单录制视频和拍照我没有问题。问题是,当我开始录制视频时,我尝试camera.takePicture(null, null, jpegCallback);
。 在某些设备上,它永远不会转到public void onPictureTaken(byte[] data, Camera camera){}
上的PictureCallback jpegCallback
。我已经测试了很多小时,stackoverflow是我解决问题的最后希望。
我VideoRecordActivity
surfaceChanged()
代码的早期代码打开并设置了相机:
camera = Camera.open();
Camera.Parameters p = camera.getParameters();
p.setPreviewSize(camcorderProfile.videoFrameWidth, camcorderProfile.videoFrameHeight);
p.setPreviewFrameRate(camcorderProfile.videoFrameRate);
camera.setParameters(p);
camera.setPreviewDisplay(holder);
camera.startPreview();
之后我准备MediaRecorder
就像这样(我在这里解锁相机,因为记录完成后我用camera.reconnect()
重新连接相机,然后再次拨打prepareRecorder()
我可以开始录制下一个视频了:
private void prepareRecorder() {
recorder = new MediaRecorder();
camera.unlock();
recorder.setCamera(camera);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setProfile(camcorderProfile);
recorder.setPreviewDisplay(holder.getSurface());
}
如果在camera.unlock()
之前未调用recorder.setCamera(camera);
,我无法录制视频。但是在某些设备上,如果我在录制视频时尝试takePicture()
,则在camera.unlock()
之后,它永远不会调用覆盖的public void onPictureTaken(byte[] data, Camera camera)
。如果我只是评论camera.unlock()
并且从不开始录制视频,只是在可见的takePhoto按钮上选项卡,它正常工作并照常拍照。 在启动视频记录并解锁()相机后,为什么我无法在某些设备上拍摄 的任何想法?
我在Android 4.4.2上测试了这个 - 三星Galaxy Tab 4 10“和7”。在7“我可以在视频录制期间拍照,但在10”它不能。有任何想法吗?此致,弗拉德。