Gibt es eine Möglichkeit zu finden, ob die Android Kamera im Code verwendet wird?Wie finde ich heraus, ob die Kamera verwendet wird?
Antwort
Gibt es eine Möglichkeit zu finden, ob die Android-Kamera verwendet wird?
Ja, Camera.open()
erhalten Sie eine Ausnahme geben, wenn die Kamera im Einsatz ist.
Vom docs,
/** A safe way to get an instance of the Camera object. */
public static Camera getCameraInstance(){
Camera c = null;
try {
c = Camera.open(); // attempt to get a Camera instance
}
catch (Exception e){
// Camera is not available (in use or does not exist)
}
return c; // returns null if camera is unavailable
}
Ich weiß nicht, warum diese Frage mehrmals gefragt wird, wenn Sie sich auf Ihre eigene Tätigkeit oder die Anwendung Kamera startet als Aktivität freigesetzt werden, für die Kamera laufen wird gehe in den Pausenzustand.
Ich weiß, das ist eine wirklich alte Frage, aber ich stolperte mit einer Google-Suche über das gleiche Ding. Mit den neueren Versionen von Android können Sie die CameraManager.AvailabilityCallback
registrieren, um festzustellen, ob die Kamera verwendet wird oder nicht. Hier ist ein Beispielcode:
import android.hardware.camera2.CameraManager;
// within constructor
// Figure out if Camera is Available or Not
CameraManager cam_manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
cam_manager.registerAvailabilityCallback(camAvailCallback, mHandler);
CameraManager.AvailabilityCallback camAvailCallback = new CameraManager.AvailabilityCallback() {
public void onCameraAvailable(String cameraId) {
cameraInUse=false;
Log.d(TAG, "notified that camera is not in use.");
}
public void onCameraUnavailable(String cameraId) {
cameraInUse=true;
Log.d(TAG, "notified that camera is in use.");
}
};
Hinweis, es gibt einen Fehler in Android 5.1, dass dies möglicherweise kaputt ist - https://code.google.com/p/android/issues/detail?id=164769. Für diese Versionen müssen Sie '' '' cam_manager.getCameraIdList() '' 'aufrufen, damit der Dienst ordnungsgemäß initialisiert wird, bevor Sie AvailabilityCallback registrieren können. – PressingOnAlways
Sie können diese Methode versuchen.Wenn es wahr zurückgibt, wird die Kamera noch von einigen App verwendet.
Dann Toast to Benutzer anzeigen, um das Gerät neu zu starten, da die Kamera neu gestartet werden muss.
Danke.Wenn festgestellt wird, dass die Kamera bereits verwendet wird, wie kann ich dann die Kamera verwenden? Ist es richtig, die Kamera im Catch-Block freizugeben und dann erneut zu versuchen, sie zu öffnen? – user1414146
@ user1414146 Sie müssen warten, bis die andere Anwendung mit der Kamera fertig ist :) und dann erneut versuchen. – COD3BOY