2015-03-27 1 views
-1

Bonjour les gars, je suis en train de construire ma première application pour les téléphones Android. C'est une lampe de poche avec quelques fonctionnalités. J'ai écrit le code pour le bouton On/Off, mais avec mon code exigeant le bouton On/Off ne fonctionne qu'une seule fois et je ne sais pas comment le réparer pour travailler plusieurs fois. Voici mon code:Impossible de faire fonctionner ma lampe de poche plus d'une fois - android

public class MainActivity extends ActionBarActivity { 

ImageButton OnOff; 
Button SOS, Pallette; 
private Camera camera; 
boolean isFlashOn; 
boolean isFlashOff; 
boolean hasFlash; 
Parameters params; 
MediaPlayer mp; 
String blink = "01010101"; 
long blinkDelay = 50; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // declare flash switch button 
    OnOff = (ImageButton) findViewById(R.id.bOnOff); 

    // declare sos flash button 
    SOS = (Button) findViewById(R.id.bSOS); 

    // Now we check if our device has flash so we can turn on 
    hasFlash = getApplicationContext().getPackageManager() 
      .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); 

    if (!hasFlash) { 
     // if our device doesn't have flash we show an error message 
     // after pressing "OK" on error message we close the application 

     AlertDialog alert = new AlertDialog.Builder(MainActivity.this) 
       .create(); 
     alert.setTitle("Error"); 
     alert.setMessage("Sorry but your device doesn't support flash"); 
     alert.setButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
       finish(); 
      } 
     }); 
     alert.show(); 
     return; 
    } 

    // Now we get the Camera 
    getCamera(); 

    // Display button image 
    toggleButtonImage(); 

    OnOff.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if (isFlashOn) { 
       // turn off flash 
       turnOffFlash(); 
      } else { 
       // turn on flash 
       turnOnFlash(); 
      } 
     } 
    }); 

private void getCamera() { 
    if (camera == null) { 
     try { 
      camera = Camera.open(); 
      params = camera.getParameters(); 
     } catch (RuntimeException e) { 
      Log.e("Camera Error", e.getMessage()); 
     } 
    } 
} 

private void turnOnFlash() { 
    if (!isFlashOn) { 
     if (camera == null || params == null) { 
      return; 
     } 

     params = camera.getParameters(); 
     params.setFlashMode(Parameters.FLASH_MODE_TORCH); 
     camera.setParameters(params); 
     camera.startPreview(); 
     isFlashOn = true; 
    } 

    toggleButtonImage(); 
} 

private void turnOffFlash() { 
    if (isFlashOn) { 
     if (camera == null || params == null) { 
      return; 
     } 

     params = camera.getParameters(); 
     params.setFlashMode(Parameters.FLASH_MODE_OFF); 
     camera.setParameters(params); 
     camera.stopPreview(); 
     isFlashOff = false; 
    } 

    toggleButtonImage(); 
} 

private void toggleButtonImage() { 
    if (isFlashOn) { 
     OnOff.setImageResource(R.drawable.on); 
    } else { 
     OnOff.setImageResource(R.drawable.off); 
    } 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
} 

@Override 
protected void onRestart() { 
    super.onRestart(); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 

    if (camera != null) { 
     camera.release(); 
     camera = null; 
    } 
    } 
} 
+0

partagez votre erreur logcat – Fahim

Répondre

0

Dans la méthode turnOffFlash() Modifier cette

isFlashOff = false; 

dans

isFlashOn = false; 

Vous n'utilisez isFlashOff ne importe où

Supprimer varaibale dans toutes les occurences

boolean isFlashOff; 
+2

Merci beaucoup !!!!! J'ai fait cela et a parfaitement fonctionné !!!! Merci beaucoup!!!!! – Diakos