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; } 
  • Java cómo manejar "Cast no verificado" para Array <MyItem> desde el objeto
  • Android ht stime, utime?
  • ¿Cerrar diálogo Android después de 5 segundos?
  • Android: liberación de la memoria asignada AnimationDrawable está utilizando hasta
  • FTPClient Subiendo archivo = SocketException: Conexión restablecida
  • Android: Dialog Builder multipleselection arreglo matriz
  • ¿Todas las cadenas de un programa (en .java) se almacenan en la memoria RAM cuando se inicia (Android)?
  • ¿Cuál es la mejor manera de determinar que mi aplicación nunca se instaló en un dispositivo y si el usuario está reinstalando?
  • Visualización de la fecha en formato de doble dígito
  • Selector de color de Android para incluirlo en la actividad
  • Fuga de memoria MediaControllerCompat
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.