2015-03-27 5 views
-1

Привет, ребята, я пытаюсь создать свое первое приложение для телефонов Android. Это фонарик с некоторыми функциями. Я написал код для кнопки On/Off, но с моим кодом exigisting кнопка включения/выключения работает только один раз, и я не знаю, как исправить ее, чтобы работать несколько раз. Вот мой код:Не могу сделать мой фонарик работать более одного раза - андроид

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

Делить error error error – Fahim

ответ

0

В turnOffFlash() метод Изменить этот

isFlashOff = false; 

в

isFlashOn = false; 

Вы не используете isFlashOff где-либо

Удалить varaibale во всех появлений

boolean isFlashOff; 
+2

Спасибо большое !!!!! Я сделал это и отлично работал !!!! Большое спасибо!!!!! – Diakos

 Смежные вопросы

  • Нет связанных вопросов^_^