[英]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.