为什么三星Galaxy Ace上的相机闪光灯没有关闭



我尝试了以下代码来打开/关闭闪光灯:

在三星Galaxy Ace 2.2.1和Galaxy Tab中打开/关闭相机LED/闪光灯

它对我有用,我

的意思是它打开了闪光灯,但现在我无法在按下按钮后关闭闪光灯。

这是我的代码:

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

这样,在我先单击按钮关闭后,LED 就会亮起。如果我在单击按钮关闭之前单击按钮打开,则它不起作用。一旦我这样做,那么 LED 就会一直亮着,但当我点击按钮关闭时我无法关闭它。

如果我把这部分代码:

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

在"关闭"功能上,而不是现在的位置,然后 LED 仅亮起约 5 秒。我尝试在两个部分之间使用 thread.sleep:我在帖子中读到的 Flash 模式打开和 Flash 模式关闭,但它也没有用。

对此有任何想法吗?

提前谢谢。

根据您提供的链接,您需要在按钮中调用Camera.release()...

最新更新