84 votes

Vérifier si l'appareil a une caméra?

Dans mon application, j'aimerais utiliser l'appareil photo, si l'appareil en a un. Existe-t-il des appareils sous Android ne disposant pas d'appareil photo? En incluant les éléments suivants dans mon manifeste:

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

alors il dit essentiellement "j'utiliserai un appareil photo s'il en existe un, mais vous n'en avez pas besoin pour exécuter l'application".

Comment puis-je vérifier si une caméra existe sur le périphérique avant d'essayer d'utiliser la classe Camera?

228voto

dpjanes Points 3333

C'est ce que j'utilise

 import android.content.pm.PackageManager;

PackageManager pm = context.getPackageManager();

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

Toutes sortes de choses amusantes à tester sont également disponibles - la boussole, l'emplacement disponible, existe-t-il une caméra frontale: http://developer.android.com/reference/android/content/pm/PackageManager.html

43voto

Eddy Talvala Points 1655

Pour savoir combien de caméras sont disponibles sur votre appareil, vous pouvez appeler:

 import android.hardware.Camera;

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

Camera.getNumberOfCameras () est statique, il n'est donc pas nécessaire de se connecter à une caméra. Cela fonctionne depuis Gingerbread.

1voto

mabeiyi Points 91

Si vous utilisez Android 2.3, certaines API vous permettent de vérifier l'état de votre appareil photo, telles que le nombre de caméras (avant et arrière).

-45voto

user197385 Points 38

Je n'ai pas essayé, mais:

 private android.hardware.Camera mCameraDevice;

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

Peut-être ce dont vous avez besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X