android 弃用相机 class
android deprecated camera class
我正在使用已弃用的 android 相机对象。我在这里读到:
https://source.android.com/devices/camera/versioning.html
即使相机对象已被弃用,它仍然适用于 android 5.0+ 版本。我问这个,因为我发布了一个使用已弃用的相机对象的应用程序,我的朋友下载了该应用程序并且它崩溃了。他们报告了错误,我在跟踪堆栈中看到相机甚至无法打开。此应用程序适用于我的 phone,而我的 phone 是 5.0+ 版本。所以也许我没有正确打开相机???或者,也许那些 phone 不能使用已弃用的 class。这是我打开相机的代码:
@Override
public void onResume() {
super.onResume();
if(!StopTouch)//ignore this condition not relevant to the problem
StartUpCam();
}
private void StartUpCam()
{
if(faceProc==null)//ignore this as well
faceProc = FacialProcessing.getInstance();
camera=Camera.open(getCid()); //crashes here!!! Calls getCid() which is defined below
camera.setPreviewCallback(this);
initPreview(width, height);
startPreview();
startTimer();
}
private int getCid()
{
if(cameraFront && findFrontFacingCamera()>0)
return findFrontFacingCamera();
return findBackFacingCamera();
}
public static int findBackFacingCamera() {
int cameraId = -1;
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_BACK) {
cameraId = i;
break;
}
}
return cameraId;
}
public static int findFrontFacingCamera() {
int cameraId = -1;
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
cameraId = i;
break;
}
}
return cameraId;
}
还有其他人在发布应用时遇到过已弃用相机 class 的问题吗?知道我在这里做错了什么吗??
如果您想在应用中删除 "deprecated",请使用 camera2 查看文档:
如果您在 Android Marshmallow 中尝试 运行 它,您需要动态请求权限,而不是仅仅在清单中声明相机权限。
这是需要从棉花糖动态询问的权限列表
http://developer.android.com/guide/topics/security/permissions.html#normal-dangerous
我正在使用已弃用的 android 相机对象。我在这里读到: https://source.android.com/devices/camera/versioning.html
即使相机对象已被弃用,它仍然适用于 android 5.0+ 版本。我问这个,因为我发布了一个使用已弃用的相机对象的应用程序,我的朋友下载了该应用程序并且它崩溃了。他们报告了错误,我在跟踪堆栈中看到相机甚至无法打开。此应用程序适用于我的 phone,而我的 phone 是 5.0+ 版本。所以也许我没有正确打开相机???或者,也许那些 phone 不能使用已弃用的 class。这是我打开相机的代码:
@Override
public void onResume() {
super.onResume();
if(!StopTouch)//ignore this condition not relevant to the problem
StartUpCam();
}
private void StartUpCam()
{
if(faceProc==null)//ignore this as well
faceProc = FacialProcessing.getInstance();
camera=Camera.open(getCid()); //crashes here!!! Calls getCid() which is defined below
camera.setPreviewCallback(this);
initPreview(width, height);
startPreview();
startTimer();
}
private int getCid()
{
if(cameraFront && findFrontFacingCamera()>0)
return findFrontFacingCamera();
return findBackFacingCamera();
}
public static int findBackFacingCamera() {
int cameraId = -1;
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_BACK) {
cameraId = i;
break;
}
}
return cameraId;
}
public static int findFrontFacingCamera() {
int cameraId = -1;
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
cameraId = i;
break;
}
}
return cameraId;
}
还有其他人在发布应用时遇到过已弃用相机 class 的问题吗?知道我在这里做错了什么吗??
如果您想在应用中删除 "deprecated",请使用 camera2 查看文档:
如果您在 Android Marshmallow 中尝试 运行 它,您需要动态请求权限,而不是仅仅在清单中声明相机权限。 这是需要从棉花糖动态询问的权限列表 http://developer.android.com/guide/topics/security/permissions.html#normal-dangerous