1
我有以下方法打開相機面向用戶:onPreviewFrame不會被調用
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應該用框架的顯示來調用......我已經閱讀了文檔,但我覺得有點誤導這是有效的,如果有人能讓我明白,我會非常感謝! (實例I試過)
(...)
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;}
(...)
我在mainactivity.java中調用了'cam.startPreview();',它可以正常顯示幀......當我調用cam.setPreviewCallback(this);'在裏面togglefacecamera中, 'Camera類型中的方法setPreviewCallback(Camera.PreviewCallback)不適用於參數(CameraOperations)'。如果我調用'setPreviewCallback(onPreviewFrame)'而不是「onPreviewFrame無法解析爲變量」。你能告訴我我應該叫什麼名字嗎? – 0LLiena