android: Как проверить вспышку, если вкл / выкл / авто?

1

Поэтому я пытаюсь создать кнопку, в которой пользователи могут выбирать между вспышкой вкл/выкл/авто. Эта кнопка находится в моей активности просмотра камеры, но я не уверен, как проверить определенные параметры с помощью одной кнопки.

    //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");

            }



        }
Теги:
camera
android-camera

2 ответа

7
Лучший ответ

Вы можете проверить, является ли вспышка 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.....
}
  • 0
    Хм, я реализовал этот код, но я думаю, что он идет только в другой раздел. Я пытался снова нажать кнопку, но ничего не происходит. Почему это? Я пытаюсь переключить кнопку, но думаю, что она останавливается после одного нажатия?
  • 0
    Вы можете опубликовать последний код ...
Показать ещё 10 комментариев
4

Вам нужно сравнить значения с методом 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......
}
  :
  :
  • 0
    Вы правы, это был бы правильный ответ, спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню