在Android中仅打开/关闭Flash

时间:2014-01-18 22:55:39

标签: android android-camera

我正在尝试使用手机的相机闪光灯来使用手电筒。我有一个按钮在ON和OFF之间切换,但由于某种原因,下面的代码不起作用。我知道已有几个问题,但他们都没有给出正确的答案。

有人可以帮帮我吗?

代码开/关闪光:

    camera = Camera.open();
    final Parameters p = camera.getParameters();

    flashon.setOnClickListener(new OnClickListener() 
    {
        public void onClick(View arg0) 
        {
            if (isFlashOn) 
            {
                Log.e("Flash", "Flash is turned off!");
                p.setFlashMode(Parameters.FLASH_MODE_OFF);
                camera.setParameters(p);                    
                isFlashOn = false;
                flashon.setText("Flash ON");
            }
            else 
            {
                Log.i("Flash", "Flash is turned on!");
                p.setFlashMode(Parameters.FLASH_MODE_TORCH);
                camera.setParameters(p);                    
                isFlashOn = true;
                flashon.setText("Flash OFF");
            }
        }
    });

以下是清单详情:

 <uses-permission android:name="android.permission.CAMERA" />
 <uses-permission android:name="android.permission.FLASHLIGHT" />

等待您的回复! 谢谢!

2 个答案:

答案 0 :(得分:0)

当你这样做时会发生什么? 也许你有问题,因为你把p设为最终。

camera = Camera.open();
flashon.setOnClickListener(new OnClickListener() 
{
    public void onClick(View arg0) 
    {
        if (isFlashOn) 
        {
            Log.e("Flash", "Flash is turned off!");
            camera.setParameters(camera.getParameters().setFlashMode(Parameters.FLASH_MODE_OFF));                    
            isFlashOn = false;
            flashon.setText("Flash ON");
        }
        else 
        {
            Log.i("Flash", "Flash is turned on!");
            camera.setParameters(camera.getParameters().setFlashMode(Parameters.FLASH_MODE_TORCH));                     
            isFlashOn = true;
            flashon.setText("Flash OFF");
        }
    }
});

答案 1 :(得分:0)

试试这段代码。这对我有用。

private Camera camera;
private Parameters p;

//initialize camera instance
private void initCamera() {
    try{
        camera = Camera.open();
        p=camera.getParameters();
    }catch (Exception e){
        camera = null;
    }
}
//start flashing 
private void startFlashing() {
    initCamera();
    if(camera!=null && this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)){
        p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
        camera.setParameters(p);
        camera.startPreview();           
    }