java在曲面视图中打开前摄像头
我遇到异常java.lang.RuntimeException: Fail to get camera info
在Camera.getCameraInfo(cameraId,info);
我的代码是:
public void surfaceCreated(SurfaceHolder holder) {
int cameraId = -1;
for(int i=0;i<Camera.getNumberOfCameras();i++){
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId,info);
if(info.facing== Camera.CameraInfo.CAMERA_FACING_FRONT){
cameraId = i;
break;
}
}
camera = Camera.open(cameraId);
}
而舱单也有:
<uses-permission 安卓:name="安卓.permission.CAMERA" />
<uses-feature 安卓:name="安卓.hardware.camera" />
<uses-feature 安卓:name="安卓.hardware.camera.front" />
<uses-feature 安卓:name="安卓.hardware.camera.autofocus" />
遗漏了什么,我该如何解决? 欢迎任何帮助
# 1 楼答案
您得到异常是因为您将RAID初始化为-1,这是错误的。 并通过它获取摄像机信息
Camera.getCameraInfo(cameraId,info);
将cameraId初始化为0以摆脱异常
# 2 楼答案
此方法将返回前摄像头Id:
将此id传递到此处:
camera=Camera.open(getFrontCameraId());
# 3 楼答案
我改变了方法;以前我是实现
SurfaceHolder.Callback
,但现在我创建了它的对象我将代码从
SurfaceCreated
移动到了onResume()
回调的对象是:
这解决了我的问题