[android] 기기에 카메라가 있는지 확인 하시겠습니까?

내 앱에서 기기에 카메라가있는 경우 카메라를 사용하고 싶습니다. 카메라 가없는 Android를 실행하는 장치 가 있습니까? 내 매니페스트에 다음을 포함하여 :

<uses-feature android:name="android.hardware.camera" android:required="false"/>

기본적으로 “카메라가 있으면 사용하지만 앱을 실행하는 데 카메라가 필요하지 않습니다.”라고 말합니다.

Camera 클래스를 사용하기 전에 장치에 카메라가 있는지 어떻게 확인할 수 있습니까?



답변

나는 그것을 시도하지 않았지만 :

private android.hardware.Camera mCameraDevice;

try {
  mCameraDevice = android.hardware.Camera.open();
} catch (RuntimeException e) {
  Log.e(TAG, "fail to connect Camera", e);
  // Throw exception
}

필요한 것일 수 있습니다.


답변

이것이 내가 사용하는 것입니다.

import android.content.pm.PackageManager;

PackageManager pm = context.getPackageManager();

if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
}

테스트 할 다른 모든 재미있는 것들도 사용할 수 있습니다. 나침반, 위치, 전면 카메라 :
http://developer.android.com/reference/android/content/pm/PackageManager.html


답변

장치에서 사용할 수있는 카메라 수를 확인하려면 다음으로 전화하십시오.

import android.hardware.Camera;

int numCameras = Camera.getNumberOfCameras();
if (numCameras > 0) {
  hasCamera = true;
}

Camera.getNumberOfCameras ()는 정적이므로 실제로 카메라에 연결할 필요가 없습니다. 이것은 API 9부터 작동합니다.

편집하다:

최신 camera2 API를 사용하면 개수뿐만 아니라 모든 유효한 카메라 ID 목록을 제공하는 CameraManager.getCameraIdList ()를 호출 할 수도 있습니다 .


답변

당신은 당신의 장치에서 카메라를 찾기 위해 이것을 사용해야합니다

public static boolean isCameraAvailable(Context context) {
    return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY);
}


답변

Camera.getNumberOfCameras ()는 더 이상 사용되지 않습니다. 당신이 사용할 수있는:

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public int getNumberOfCameras() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        try {
            return ((CameraManager) getSystemService(Context.CAMERA_SERVICE)).getCameraIdList().length;
        } catch (CameraAccessException e) {
            Log.e("", "", e);
        }
    }
    return Camera.getNumberOfCameras();
}


답변

Camera 확인을 위해 PackageManager.hasSystemFeature () 메서드를 사용합니다 .

private boolean checkCameraHardware(Context context) {
    if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
        // this device has a camera
        return true;
    } else {
        // no camera on this device
        return false;
    }
}

출처 : https://developer.android.com/guide/topics/media/camera.html#custom-camera


답변

이 시도 :

/** Check if this device has a camera */
private boolean checkCameraHardware(Context context) {
    if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
        // this device has a camera
        return true;
    } else {
        // no camera on this device
        return false;
    }
}

출처 : http://developer.android.com/guide/topics/media/camera.html