2015-08-19 2 views
1

J'ai fait une application simple avec 2 boutons pour tester les lampes de poche.lampe-torche retardatrice android

button1.setOnClickListener...etc 
    if (cameraObj ==null){ return; } 
    Camera.Parameters cameraParams =cameraObj.getParameters(); 
    if(cameraParams.getFlashMode() == null) { return;} 
    cameraParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
    cameraObj.setParameters(cameraParams); 
    cameraObj.startPreview(); 

button2.setOnClick etc... 
    if(cameraObj==null){ return; } 
    Camera.Parameters cameraParams = cameraObj.getParameters(); 
    cameraParams.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
    cameraObj.setParameters(cameraParams); 
    cameraObj.stopPreview(); 

L'application a été testée sur 2 appareils: HTC One et HTC DESIRE 500

L'application fonctionne bien sur les deux. Le problème est: il y a un délai pour allumer/éteindre la lampe de poche. Quand j'appuie et éteins très rapidement, la lampe de poche sur le DESIRE 500 s'allume et s'éteint quand j'appuie sur les boutons, mais sur HTC ONE il y a un délai (il semble que tu ne sois pas autorisé à changer si vite le lampes de poche). Quel pourrait être le problème?

Répondre

1

Vous pouvez résoudre ce problème en ajoutant un délai fixé à l'aide Hander qui déclenchera le flash après un délai,

// variable to fix the timeout duration in milliseconds 
// 1000 milliseconds = 1 second 
double TIME_OUT = 2*1000; 

     new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() { 

       // time has been reached, turn the flash on 
       if (cameraObj ==null){ return; } 
       Camera.Parameters cameraParams =cameraObj.getParameters(); 
       if(cameraParams.getFlashMode() == null) { return;} 
       cameraParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
       cameraObj.setParameters(cameraParams); 
       cameraObj.startPreview(); 
       } 
      } 
     }, TIME_OUT); 
+0

J'ai testé l'application sur HTC One avec plus d'attention et semble être la solution est: HTC One I devez appuyer sur 2 fois le bouton "off", afin d'éteindre la lampe de poche. C'est louche. Donc sur Desire si j'appuie juste une fois, le flash s'éteindra, et sur ONE je devrai appuyer deux fois. (est la même application), il pourrait être parce que j'utilise une classe dépréciée? (On a Android 5.x et Desire Android 4.1x) –

+0

Il pourrait être un problème spécifique à l'appareil aussi. Certains appareils ont besoin d'un certain temps pour initialiser les fonctions de la caméra où d'autres l'exécutent immédiatement. Jusqu'à présent, aucun problème avec votre code! –

+0

Si j'appuie une fois sur et deux fois sur OFF très rapidement, il fonctionne comme si j'appuyez sur le désir une fois sur ON et une fois sur OFF très rapidement. –