我有一个按钮,“应该”在不同的 if 语句之间切换,但我没有正确理解它。该按钮应该经历不同的相机闪光灯状态(开/自动/关/手电筒),但它只经历其中一种状态,然后不会经历其余状态。按钮是否正确?或者有不同的切换按钮吗?
//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() 中。不确定这是否有帮助?
最佳答案
不确定这是否有帮助,但尝试对所有条件使用“equals(String)”而不是“==”。
关于java - Android:切换按钮(允许多次点击),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562075/