-3
我的android相機在真實設備上測試時無法拍攝照片並使用此類代碼觸發閃光燈,沒有發生錯誤。爲什麼是這個原因?ANDROID攝像頭不工作
public class CameraShooting implements SurfaceHolder.Callback {
Context context;
Camera camera;
CameraInfo camerainfo;
Camera.Parameters paras;
SurfaceView surfaceview;
SurfaceHolder surfaceholder;
PictureCallback picturecallback;
public CameraShooting (Context context){
this.context = context;
}
public void cameraStart(){
if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
surfaceview = new SurfaceView(context);
surfaceholder = surfaceview.getHolder();
surfaceholder.addCallback(this);
};
};
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
int numbersofCamera = camera.getNumberOfCameras();
int cameraID = 0;
camerainfo = new CameraInfo();
for(int i =1; i < numbersofCamera; i++){
camera.getCameraInfo(i, camerainfo);
if (camerainfo.facing == CameraInfo.CAMERA_FACING_FRONT){
cameraID = i;
camera = Camera.open(i);
break;
}
if(camerainfo.canDisableShutterSound){
camera.enableShutterSound(true);
}
paras = camera.getParameters();
paras.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
try {
camera.setPreviewDisplay(surfaceholder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
camera.setParameters(paras);
camera.startPreview();
camera.takePicture(null, null, mPicture);
Toast.makeText(context, "Picture taken", Toast.LENGTH_SHORT).show();
};
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
private PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = new File(context.getFilesDir(), "picture taken");
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
};
};}
您的幫助非常感謝! 非常感謝。
Xml file: –
爲什麼downvote?告訴我爲什麼? –
'沒有錯誤發生'。沒有日誌可以捕獲到多個異常,所以可能只是忽略這些錯誤。而且,你的'休息'似乎不合適。在前置攝像頭的情況下,您永遠不會調用'startPreview'或'setPreviewDisplay'。 – njzk2