Почему вспышка камеры не выключается на Samsung Galaxy Ace?

1

Я попробовал этот код включить/выключить вспышку:

Включите/выключите светодиодный индикатор камеры/вспышку в Samsung Galaxy Ace 2.2.1 и вкладке Galaxy

и это сработало для меня, я имею в виду, что он включил вспышку, но теперь я не могу отключить вспышку после нажатия кнопки.

Это мой код:

public class Main extends Activity
{
private Camera camera;
private Button buttonOn;
private Button buttonOff; 

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);

    buttonOn = (Button) findViewById(R.id.buttonOn);
    buttonOff = (Button) findViewById(R.id.buttonOff);

    buttonOn.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            try {
                 turnOn();
            } catch (Exception ex) {

            }
        }
    });

    buttonOff.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            try {
                 turnOff();
            } catch (Exception ex) {

            }
        }
    }); 
}

@Override
public void onPause(){
    super.onPause();
    if( camera != null )
       {
          camera.release();
          camera = null;
       }
       super.onPause(); 
}

@Override
public void onResume(){
    super.onResume();               
} 

@Override
public void onStart(){
    super.onStart();
}

@Override
public void onStop(){
    super.onStop();
}

@Override
public void onDestroy(){
    super.onDestroy();
}

@Override
public void onRestart(){
    super.onRestart();
}   

private void turnOff()
{               
        camera.stopPreview();
        camera.release();

   }

 private void turnOn() 
   {
            camera = Camera.open();  
            camera.startPreview();
            camera.autoFocus(new AutoFocusCallback() {
                        public void onAutoFocus(boolean success, Camera camera) {
                        }
                    });

            Parameters params = camera.getParameters();
            params.setFlashMode(Parameters.FLASH_MODE_ON);
            camera.setParameters(params);

            params = camera.getParameters();
            params.setFlashMode(Parameters.FLASH_MODE_OFF);
            camera.setParameters(params);

   }
}

Таким образом, светодиод включается, когда я сначала нажимаю кнопку buttonOff. Если я нажму кнопку buttonOn, прежде чем нажимать на кнопкуOff, это не сработает. Как только я это сделаю, светодиод работает постоянно, но я не могу отключить его, когда я нажимаю кнопку buttonOff.

Если я поставлю эту часть кода:

            params = camera.getParameters();
            params.setFlashMode(Parameters.FLASH_MODE_OFF);
            camera.setParameters(params);

вместо функции "turnOff", где она теперь, тогда светодиод находится только около 5 секунд. Я пробовал использовать thread.sleep между обеими частями: режим вспышки включен и режим вспышки выключен, как я читал в сообщении, но он тоже не работал.

Есть идеи об этом?

Заранее спасибо.

  • 0
    Улов никогда не должен быть пустым! Исправьте это и зарегистрируйте ошибки, тогда, вероятно, это поможет вам решить проблему.
Теги:
camera
galaxy

1 ответ

1

Согласно ссылке, которую вы Camera.release() вам нужно вызвать Camera.release() в вашей кнопке...

  • 0
    Я загрузил свой полный код. Я использовал релиз с buttonOff, но он тоже не работает ...

Ещё вопросы

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