我有一個「假定」在不同的if語句之間切換的按鈕,但我沒有正確地得到它。該按鈕應該通過不同的相機閃光燈狀態(開/自動/關/手電筒),但它只能通過其中一種狀態,然後不會通過其他狀態。按鈕是否正確?還是有不同的切換按鈕?Android:切換按鈕(允許多次點擊)
//Flash Button
final Button flashButton = (Button) findViewById(id.camera_flash);
flashButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Parameters p = mCamera.getParameters();
// TODO Auto-generated method stub
if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_ON){
p.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(p);
mCamera.startPreview();
flashButton.setText("Off");
Log.e("Torch","MODE OFF");
}else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_OFF){
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(p);
mCamera.release();
mCamera=null;
flashButton.setText("TORCH");
Log.e("Torch","MODE TORCH");
}else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_AUTO){
p.setFlashMode(Parameters.FLASH_MODE_ON);
mCamera.setParameters(p);
mCamera.startPreview();
flashButton.setText("ON");
Log.e("Torch","MODE ON");
}else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_TORCH){
p.setFlashMode(Parameters.FLASH_MODE_ON);
mCamera.setParameters(p);
mCamera.startPreview();
flashButton.setText("AUTO");
Log.e("Torch","MODE AUTO");
}else{
p.setFlashMode(Parameters.FLASH_MODE_AUTO);
mCamera.setParameters(p);
mCamera.startPreview();
flashButton.setText("AUTO");
Log.e("Torch","MODE AUTO");
}
}
因此,基本上,它只能前往FLASH_MODE_AUTO
,然後按鈕不起作用了。我的if語句是否正確?提前致謝!
更新:
這是在我的onCreate()。不確定這會有幫助嗎?
它似乎沒問題... – AAnkit
@AnkitAwasthi出於某種原因,它不通過if語句捕捉。我正在進行日誌檢查並查看'p.getFlashMode()'和'android.hardware.Camera.Parameters.FLASH_MODE_OFF')是什麼,但是即使它們彼此等同於'==',它也不會進入,如果聲明 – hellomello