How to turn on flashlight and front camera at the same time in android

前端 未结 3 1287
花落未央
花落未央 2020-12-11 21:22

In one of the requirement in my app I need to pop up an activity containing the front camera preview,at this same time I need to turn on the flashlight as well.However I obs

相关标签:
3条回答
  • 2020-12-11 21:41

    Try to turn on the flashlight in background then open your front camera. actually you can turn front camera and flashlight in background.

    Here how to open flashlight in background: this

    Here how to turn on camera in background: this

    0 讨论(0)
  • 2020-12-11 21:54

    Flashlight

     public void onToggleClicked(View view) {
        PackageManager pm = context.getPackageManager();
        final Parameters p = camera.getParameters();
        if (isFlashSupported(pm)) {
            boolean on = ((ToggleButton) view).isChecked();
            if (on) {
                Log.i("info", "torch is turn on!");
                p.setFlashMode(Parameters.FLASH_MODE_TORCH);
                camera.setParameters(p);
                camera.startPreview();
            } else {
                Log.i("info", "torch is turn off!");
                p.setFlashMode(Parameters.FLASH_MODE_OFF);
                camera.setParameters(p);
                camera.stopPreview();
            }
    

    Camera :

     ImageButton ib = (ImageButton) findViewById(R.id.buttonToast);
        ib.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(i, CAPTURE_IMAGE_CAPTURE_CODE);
            }
        });
    
    0 讨论(0)
  • 2020-12-11 22:03

    The following code checks for the availability of a front camera:

    private Camera openFrontFacingCameraGingerbread() {
        int cameraCount = 0;
        Camera cam = null;
        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
        cameraCount = Camera.getNumberOfCameras();
        for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
            Camera.getCameraInfo(camIdx, cameraInfo);
            if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                try {
                    cam = Camera.open(camIdx);
                } catch (RuntimeException e) {
                    Log.e(TAG, "Camera failed to open: " + e.getLocalizedMessage());
                }
            }
        }
    
        return cam;
    }
    

    Then add the following permissions in the AndroidManifest.xml file:

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-feature android:name="android.hardware.camera.front" android:required="false" />
    

    Note: This feature is available in Gingerbread(2.3) and Up Android Version.

    I recommend using surfaceView like in this example to implement a working flashlight.

    Hope this helps :)

    0 讨论(0)
提交回复
热议问题