我正在尝试创建一个默认为后置摄像头(而不是前置摄像头)的摄像头(如果可用),但我无法进行预览显示。我已经看过很多关于SO的指南(并且其中一些指南用于创建我现在拥有的)以及Android api,但我找不到一种简单的方法来指定使用哪个相机。有人可以给我一个方法,或告诉我下面的代码有什么问题吗?
public Camera backCam()
{
Camera cam;
try{
cam=Camera.open(0);
return cam;
}catch(Exception e){}
try{
cam=Camera.open(1);
return cam;
}catch(Exception e){}
cam=Camera.open();
return cam;
}
public void sneakyCamera()
{
try{
Log.i("aaa","init camera. total cams: "+Camera.getNumberOfCameras());
Camera cam=backCam();
SurfaceView view=new SurfaceView(getApplicationContext());
cam.setPreviewDisplay(view.getHolder());
cam.startPreview();
Camera.PictureCallback mCall = new Camera.PictureCallback()
{
@Override
public void onPictureTaken(byte[] data, Camera camera)
{
File picFile = new File("/mnt/sdcard/","psychPic"+getTime()+".jpg");
FileOutputStream fos;
try {
fos = new FileOutputStream(picFile);
fos.write(data);
fos.close();
} catch (IOException e) {
Log.i("aaa","pic tken error: "+e);
}
}
};
//shuttr callback, pic callback raw, pic callback
cam.takePicture(null, null,mCall);
}catch(Exception e)
{
Log.i("aaa","Camera error: "+e);
}
}
答案 0 :(得分:0)
可能从Activity onCreate()调用此sneakyCamera()
。此方法创建视图,但要查看预览,您必须将此视图添加到窗口层次结构中。
最简单的解决方法是添加
parentActivity.setContentView(view);
之前
cam.setPreviewDisplay()