Поэтому я пытаюсь создать кнопку, в которой пользователи могут выбирать между вспышкой вкл/выкл/авто. Эта кнопка находится в моей активности просмотра камеры, но я не уверен, как проверить определенные параметры с помощью одной кнопки.
//Flash Button
final Button flashButton = (Button) findViewById(id.camera_flash);
flashButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(mCamera != null){
Parameters p = mCamera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_AUTO);
mCamera.setParameters(p);
mCamera.startPreview();
flashButton.setText("AUTO");
Log.e("Torch","Torch On");
}else{
Parameters p = mCamera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(p);
mCamera.release();
mCamera=null;
flashButton.setText("OFF");
}// maybe another one for ON
}
Прямо сейчас его настройка, если mCamera!=null
но затем, как проверить, является ли вспышка AUTO, ON или OFF? Я думаю, что вместо этого может быть SWITCH? Я пытаюсь сохранить эти настройки в одной кнопке, так что это своего рода переключатель. Может кто-то помочь мне с этим?
Заранее спасибо.
ОБНОВЛЕННЫЙ КОД
//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");
}
}
Вы можете проверить, является ли вспышка AUTO, ON или OFF как:
Camera.Parameters p= mCamera.getParameters();
if(p.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_ON))
{
//DO STUFF...
}
else if(p.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_OFF))
{
//DO STUFF......
}
else if(p.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_TORCH))
{
//DO STUFF......
}
else if(p.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_AUTO))
{
//DO STUFF......
}
else
{
//DO STUFF.....
}
Вам нужно сравнить значения с методом equals() вместо "==", потому что значения представляют собой строки.
Camera.Parameters p= mCamera.getParameters();
String flashMode = p.getFlashMode();
if(flashMode == null) {
//DO something, if it has no value
} else if(flashMode.equals(Camera.Parameters.FLASH_MODE_OFF)) {
//DO STUFF......
} else if(flashMode.equals(Camera.Parameters.FLASH_MODE_TORCH)) {
//DO STUFF......
}
:
: