[英]onPreviewFrame not being called
我可以通过以下方法打开面向用户的相机:
CameraOperations.java
private Parameters parameters = null;
private Camera cam = null;
private Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
private static int camNumber = Camera.getNumberOfCameras();
public Camera toggleFaceCamera(){
if(cam == null){
for(int counter = 0; counter < camNumber; counter++){
Camera.getCameraInfo(counter, cameraInfo);
if(cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT){
try{
cam = Camera.open(counter);
parameters = cam.getParameters();
parameters.setPreviewFormat(16);
return cam;
}catch(RuntimeException e){return null;}
}
}
}else{cam.release();}
return null;
}
public void onPreviewFrame(byte[] data, Camera cam){
Debug.out("teste");
}
也被称为:
MainActivity.java
surface = (SurfaceView)findViewById(R.id.cameraView);
holder = surface.getHolder();
Camera cam = CameraOperations.toggleFaceCamera();
try{
cam.setPreviewDisplay(holder);
//cam.setPreviewCallback(CameraOperations.());
}catch(IOException e){
e.printStackTrace();
}
cam.startPreview();
一切正常,相机显示正确
不幸的是onPreviewFrame没有被调用。 我已经使用setPreviewCallback和setPreviewCallbackWithBuffer尝试了几件事,但是老实说,我不明白为什么这不起作用,因为onPreviewFrame应该与帧的显示一起调用...我已经阅读了文档,但是我对如何使用有一些误解这行得通,如果有人能让我清楚地理解这一点,我将非常感激! (我试过的例子)
(...)
try{
cam = Camera.open(counter);
parameters = cam.getParameters();
parameters.setPreviewFormat(16);
cam.setPreviewCallback(onPreviewFrame); <---- doens't recognize argument
return cam;
}catch(RuntimeException e){return null;}
(...)
要使用的调用命令的语法
cam.setPreviewCallback(this);
从CameraOperations类内部。
要使用预览回调,您必须致电
cam.startPreview();
如果要使用参数(例如,更改预览格式后),则需要
cam.setParameters(parameters);
通常,您要在 startPreview()
之前设置参数。
我通过以下方式解决问题:
将.setPreviewCallback移到.startPreview之后。
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
mCamera.setPreviewCallback(previewCallback);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.