Как обнаружить отсутствие камеры в устройстве Android? а также, если устройство имеет переднюю камеру, как ее использовать?
Как обнаружить отсутствие камеры в устройстве Android? а также, если устройство имеет переднюю камеру, как ее использовать?
Ответ 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);