Подтвердить что ты не робот

Как обнаружить отсутствие камеры в устройстве Android? а также, если устройство имеет переднюю камеру, как ее использовать?

Как обнаружить отсутствие камеры в устройстве Android? а также, если устройство имеет переднюю камеру, как ее использовать?

4b9b3361

Ответ 1

То, что я хотел бы предложить, похоже на ответ doc_180, но должно быть способно обнаруживать как передние, так и обратные камеры даже для Froyo, хотя, если я не ошибаюсь, Froyo никогда не поддерживал камеры на передней панели, поэтому вы всегда будете получить ложный ответ для frontCam на Froyo.

PackageManager pm = getPackageManager();
boolean frontCam, rearCam;

//Must have a targetSdk >= 9 defined in the AndroidManifest
frontCam = pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT);
rearCam = pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);

EDIT: Просто понял, что это действительно, действительно старый вопрос. Ну, надеюсь, это поможет кому-то в будущем.

Ответ 2

Используйте packagemanager, чтобы проверить, поддерживает ли устройство Intent. В этом случае Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

public static boolean isIntentAvailable(Context context, String action) {
    final PackageManager packageManager = context.getPackageManager();
    final Intent intent = new Intent(action);
    List<ResolveInfo> list =
            packageManager.queryIntentActivities(intent,
                    PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

Ответ 3

    CameraInfo cameraInfo = new CameraInfo();
    for (int i = 0; i < numberOfCameras; i++) {
        Camera.getCameraInfo(i, cameraInfo);
        if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {              

        }
    }

Ответ 4

Самый быстрый способ, который я нашел, чтобы проверить, существует ли камера (backfacing), проверить, вернёт ли Camera.open() значение null.

Camera cam = Camera.open();
if(null == cam){
   //no camera exists
}

Это должно быть доступно и для ранних версий Android.

Ответ 5

вы можете использовать этот статический метод, если хотите просто узнать, сколько у вас камер: Camera.getNumberOfCameras(); (api 9)

Ответ 6

/** 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;
    }
}

Ответ 7

Попробуй, это сработало для меня в Moto RAZR HD:

public static Camera open (int cameraId)

Пример использования:

mCamera = Camera.open(1);