如何防止打开相机时闪光灯熄灭?

问题描述 投票:0回答:1

[请帮助...我正在开发手电筒应用程序。我有一个按钮可以手动打开和关闭闪光灯。最初单击按钮时,闪光灯将打开,再次单击时将关闭。从手机启动相机时,闪光灯自动熄灭。如何防止打开或关闭相机时闪光灯自动熄灭?我将提交验证码。请帮助我。

//编码部分

public class MainActivity extends AppCompatActivity {
    //Intialise Button
    Button button_camera;
    boolean cameraAvailability = false;
    boolean flashlight_available = false;
    private Camera mCamera;
    private Camera.Parameters parameters;
    private CameraManager camManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button_camera = findViewById(R.id.button_camera);
        //onclick listener for button
        button_camera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Checking whether flash is available for camera
                cameraAvailability = MainActivity.this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
                if (cameraAvailability) {
                    //Toast.makeText(getApplicationContext(),"flash is available",Toast.LENGTH_SHORT).show();
                    //if flash light is not turned on
                    //Turning on flash light
                    if (!flashlight_available) {
                        turnFlashlightOn();
                    }
                    //if flash light is already on
                    //Closing the flash light
                    else {
                        turnFlashlightOff();
                    }
                } else {
                    //if no flash light is available
                    //Show a dialog with some message
                    // Show alert message and close the dialog
                    final AlertDialog alert = new AlertDialog.Builder(MainActivity.this)
                            .create();
                    alert.setTitle("Error");
                    alert.setMessage("Sorry, your device doesn't support flash light!");
                    alert.setButton("OK", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // closing the dialog
                            alert.dismiss();
                        }
                    });
                    alert.show();
                }
            }
        });

    }

    private void turnFlashlightOn() {
        //In API 23 or Higher (Android M, 6.0)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            try {
                camManager = (CameraManager) getApplicationContext().getSystemService(Context.CAMERA_SERVICE);
                String cameraId = null; // Usually front camera is at 0 position.
                if (camManager != null) {
                    cameraId = camManager.getCameraIdList()[0];
                    camManager.setTorchMode(cameraId, true);
                    flashlight_available = true;
                }
            } catch (CameraAccessException e) {
                Log.e("Error camera", e.toString());

            }
        }
        //In Api <23
        else {
            mCamera = Camera.open();
            parameters = mCamera.getParameters();
            parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
            mCamera.setParameters(parameters);
            mCamera.startPreview();
            flashlight_available = true;
        }

    }


    private void turnFlashlightOff() {
        //In API 23 or Higher (Android M, 6.0)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            try {
                String cameraId;
                camManager = (CameraManager) getApplicationContext().getSystemService(Context.CAMERA_SERVICE);
                if (camManager != null) {
                    cameraId = camManager.getCameraIdList()[0]; // Usually front camera is at 0 position.
                    camManager.setTorchMode(cameraId, false);
                    flashlight_available = false;
                }
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
        //In Api <23
        else {
            mCamera = Camera.open();
            parameters = mCamera.getParameters();
            parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
            mCamera.setParameters(parameters);
            mCamera.stopPreview();
            flashlight_available = false;
        }
    }
}
android flashlight front-camera
1个回答
0
投票

[当您弄清楚这是386-506-7392时,您会受到经济刺激,因为我需要这个坏的Tim Veach

© www.soinside.com 2019 - 2024. All rights reserved.