Opción como SOSModule no funcionó

Estoy intentando crear una opción como módulo SOS en mi aplicación, creo código para manejar esto:

class SOSModule { private Camera camera; private Camera.Parameters params; private boolean isFlashOn; void blink(final int delay, final int times) { Thread t = new Thread() { public void run() { try { for (int i=0; i < times*2; i++) { if (isFlashOn) { turnOffFlash(); } else { Camera.open(); turnOnFlash(); } sleep(delay); } } catch (Exception e){ e.printStackTrace(); } } }; t.start(); } void turnOnFlash() { if (!isFlashOn) { if (camera == null || params == null) { return; } params = camera.getParameters(); params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); camera.setParameters(params); camera.startPreview(); isFlashOn = true; } } void turnOffFlash() { if (isFlashOn) { if (camera == null || params == null) { return; } params = camera.getParameters(); params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); camera.setParameters(params); camera.stopPreview(); isFlashOn = false; } } 

}

También agrego todos los permisos requeridos en el manifiesto y por supuesto compruebo el uso de permisos a tiempo.

Pero esto no funciona. Acabo de crear otro código pero trabajando como "un flash" sin ningún ciclo.

¿Pueden ayudarme chicos?

Chicos esto es importante para mí, no puedo hacer esto porque mi Huawei p8 Lite y p9 Lite no dan ningún error cuando esto sucedió, es un problema de software de Huawei, con la cámara que necesito probarlo en dispositivo psíquico, y es un gran problema que i No tiene ningún registro de los dispositivos.

  public void flash_effect() throws InterruptedException { cam = Camera.open(); final Camera.Parameters p = cam.getParameters(); p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); Thread a = new Thread() { public void run() { for(int i =0; i < 10; i++) { cam.setParameters(p); cam.startPreview(); try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } cam.stopPreview(); try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }; a.start(); }} 

Este código funcionó, pero el flash está abierto para el infinito sin ningún efecto parpadeante ¿Alguna idea?

2 Solutions collect form web for “Opción como SOSModule no funcionó”

Es porque su hilo de ejecución no es obtener llamado

Prueba esto

  void blink(final int delay, final int times) { Thread t = new Thread(new Runnable() { @Override public void run() { try { for (int i=0; i < times*2; i++) { if (isFlashOn) { turnOffFlash(); } else { turnOnFlash(); } Thread.sleep(delay); } } catch (Exception e){ e.printStackTrace(); } } }); t.start(); } 

Puede leer más aquí

Autor Tema: No llaman a ejecutar el método

Necesita una bandera que indique a su hilo cuando detenerse.

 boolean shouldStop = false; while (!shouldStop){ if(FlashOn){ ...//do SOS stuff } } public void endSOS(){ shouldStop = true; } 
  • Agregue el proyecto android de ZXing como biblioteca en android studio
  • ¿Todos los archivos .class de mi aplicación Java se cargan en la memoria después del inicio de la aplicación?
  • Java - Crear referencia a dos modelos en un adaptador personalizado
  • Cargar imágenes de la carpeta de activos
  • El diálogo de carga de la vista Web de Android no se ha descartado
  • Cuál es la mejor manera de obtener la cadena de BufferedReader
  • Android Studio Gradle Error CreateProcess = 2
  • Establecer márgenes en un LinearLayout programáticamente
  • SHA1 en Java y PHP con resultados diferentes
  • Android: El uso de adjustPan y adjustResize no funciona, pero necesito ambos
  • Anidado postDelayed / Runnable / Handler Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.