Android已弃用相机类

3
我正在使用已废弃的Android摄像头对象。我在这里阅读到: https://source.android.com/devices/camera/versioning.html 即使摄像头对象已被弃用,它仍然适用于Android 5.0+版本。我问了这个问题,因为我发布了一个使用已弃用的摄像头对象的应用程序,但是我的朋友下载了这个应用程序并发现应用程序会崩溃。他们报告了错误,并且我在跟踪堆栈中看到相机甚至无法打开。这个应用程序可以在我的手机上工作,我的手机版本为5.0+。所以可能我没有正确地打开相机?还是这些手机不能使用已弃用的类。以下是我打开相机的代码:
@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;
}

有其他人在发布应用程序时使用已弃用的摄像头类遇到问题吗?这里我做错了什么?


可能是因为我搜索前置摄像头和后置摄像头的方式不对。CameraInfo类也已经过时,所以可能是因为这个原因... - Jonathan Vukadinovic
2个回答

2

你说得很好,我的目标SDK版本是23,所以我会尝试一下并回复您的。 - Jonathan Vukadinovic

0
如果您想在应用程序中删除“已弃用”的内容,请使用camera2并查看文档:
API:android.hardware.camera2

我已经使用相机类编写了整个应用程序,如果不必要,我不想转移到Camera2。我的问题是,新手机是否完全不再支持它? - Jonathan Vukadinovic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接