2012-05-26 5 views
1

Я попробовал этот код, чтобы включить/выключить свет вспышки:Почему вспышка камеры не отключается на Samsung Galaxy Ace?

Turn ON/OFF Camera LED/flash light in Samsung Galaxy Ace 2.2.1 & Galaxy Tab

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

Это мой код:

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

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

Есть идеи по этому вопросу?

Спасибо в продвижении.

+0

Улов никогда не должен быть пустым! Исправьте это и запишите ошибки, то, вероятно, это поможет вам решить эту проблему. – ESL

ответ

1

По ссылке вы предоставили вам нужно позвонить Camera.release() в кнопке ...

+0

Я загрузил свой полный код. Я использовал выпуск с кнопкой, но он не работает ... – ramj

Смежные вопросы