¿Hay alguna manera de averiguar si la cámara Android está en uso en el código?¿Cómo puedo saber si la cámara está en uso?
Respuesta
¿Hay alguna manera de saber si la cámara de Android está en uso?
Sí, Camera.open()
le dará una excepción si la cámara está en uso .
Desde el 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
}
No sé por qué esta pregunta se le ha pedido varias veces, una vez que comience a su propia actividad o una cámara propia aplicación se dará a conocer como la actividad de correr para la cámara será entrar en estado de pausa.
Pero si está ejecutando un servicio en segundo plano, entonces la aplicación de la cámara podría estar en la parte delantera mientras ejecuta su código. – Eric
No todas las aplicaciones o códigos se comportan de esta manera, aunque es lo que se recomienda para las aplicaciones de primer plano. – Sam
Sé que esta es una pregunta muy antigua, pero me encontré con una búsqueda de google preguntando sobre lo mismo. Con las versiones más nuevas de Android, puede registrar el CameraManager.AvailabilityCallback
para determinar si la cámara está en uso o no. Aquí hay un código de ejemplo:
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.");
}
};
Nota, hay un error en Android 5.1 que podría estar roto - https://code.google.com/p/android/issues/detail?id=164769. Para esas versiones, tendrás que llamar a '' 'cam_manager.getCameraIdList()' '' para que el servicio se inicialice correctamente antes de que puedas registrarAvailabilityCallback. – PressingOnAlways
Puede probar este método. Si devuelve cierto, entonces la cámara todavía está siendo utilizada por alguna aplicación.
public boolean isCameraUsebyApp() {
Camera camera = null;
try {
camera = Camera.open();
} catch (RuntimeException e) {
return true;
} finally {
if (camera != null) camera.release();
}
return false;
}
A continuación, muestre brindis al usuario para reiniciar el dispositivo ya que la cámara necesita reiniciarse.
- 1. ¿Cómo puedo saber si la pantalla está activada en Android?
- 2. ¿Cómo puedo saber si el CouchDB está funcionando?
- 3. ¿Cómo puedo saber si Matlab está ocupado cuando usa GUI?
- 4. ¿Cómo puedo saber si está instalado .NET 4.02?
- 5. ¿Cómo puedo saber si un cliente web está bloqueando anuncios?
- 6. ¿Cómo puedo saber si se está mostrando ModalViewController?
- 7. ¿Cómo puedo saber si un secuenciador está cerrado?
- 8. ¿Cómo puedo saber si .NET 3.5 SP1 está instalado?
- 9. ¿Cómo puedo saber si Moodle cron está funcionando?
- 10. ¿Cómo puedo saber si NSTimer está activo o no?
- 11. ¿Cómo puedo saber si un proceso se está ejecutando?
- 12. ¿Cómo saber si la tarjeta SD está montada en Android?
- 13. Cómo saber si el dispositivo está durmiendo
- 14. ¿Cómo saber si OpenMP está funcionando?
- 15. iPhone etc: ¿cómo saber si el dispositivo tiene una cámara?
- 16. ¿Cómo saber si la conexión JMS está allí?
- 17. Cómo saber si un actor está inactivo
- 18. ¿Cómo puedo saber si mi servidor PostgreSQL está utilizando la configuración regional "C"?
- 19. ¿Cómo saber si la computadora está conectada a internet?
- 20. ¿Cómo puedo saber si un UIView está visible y en la pantalla?
- 21. ¿Cómo saber si la actualización MATERIALIZED VIEW se está ejecutando?
- 22. ¿Cómo saber si mi componente Java está en un Applet?
- 23. ¿Cómo saber si la salida del comando "buscar" está vacía?
- 24. ¿Cómo saber si el socket está abierto en PHP?
- 25. ¿Debo verificar LSRequiresIPhoneOS para ver si la cámara está disponible?
- 26. PHP - ¿Cómo saber si X-Sendfile está disponible e instalado?
- 27. ¿Cómo puedo saber si estoy en el depurador en Android?
- 28. ¿Cómo saber si un cierre está actualmente en curso?
- 29. Cómo saber si un flujo BufferedReader está cerrado
- 30. ¿Cómo saber si el objeto está en NSArray?
Thanks.If se encuentra que la cámara ya está en uso, ¿cómo puedo usar la cámara? ¿Es correcto liberar la cámara en el bloque catch y luego intentar abrirla nuevamente? – user1414146
@ user1414146 Tienes que esperar hasta que la otra aplicación esté hecha con la cámara :) y luego volver a intentarlo. – COD3BOY