0

Flash Light is working as expected below android 10 but as soon as i installed my game in android 10 its stop working.


 internal AndroidJavaObject camera = null;
    public AndroidCamera()
    {
        WebCamDevice[] devices = WebCamTexture.devices;
        //        Debug.Log("Camera Name:" + devices.Length);
        open();
    }
    public void open()
    {
        if (camera == null)
        {
#if (UNITY_ANDROID && !UNITY_EDITOR)
            try
            {
                //AndroidJavaClass cameraClass = new AndroidJavaClass("android.hardware.Camera") ;
                AndroidJavaClass cameraClass = new AndroidJavaClass("android.hardware.camera2") ;
                    if(cameraClass != null)
                        camera = cameraClass.CallStatic<AndroidJavaObject>("open");
            }
            catch(Exception e)
            {
                Debug.Log("Permission: "+ e);
            }
#endif
        }
    }
    public void release()
    {
        if (camera != null)
        {
            LEDOff();
            camera.Call("release");
            camera = null;
        }
    }
    public void startPreview()
    {
        if (camera != null)
        {
            Debug.Log("AndroidCamera::startPreview()");
            camera.Call("startPreview");
        }
    }
    public void stopPreview()
    {
        if (camera != null)
        {
            Debug.Log("AndroidCamera::stopPreview()");
            LEDOff();
            camera.Call("stopPreview");
        }
    }
        
    private void setFlashMode(string mode)
    {
        if (camera != null)
        {
            AndroidJavaObject cameraParameters = camera.Call<AndroidJavaObject>("getParameters");
            cameraParameters.Call("setFlashMode", mode);
            camera.Call("setParameters", cameraParameters);
        }
    }
   
    public void LEDOn()
    {
        if (camera != null)
        {
            setFlashMode("torch");
        }
    }
    
    public void LEDOff()
    {
        if (camera != null)
        {
            setFlashMode("off");
        }
    }

I also change "android.hardware.Camera" to "android.hardware.camera2" as the API "android.hardware.Camera" is depricated defined here Android Guide

I ask user permission to access camera and initialize my object after the user gave access to the camera i am using runtime permission for the access request as defined here Unity Runtime Request.

VC.One
  • 14,790
  • 4
  • 25
  • 57

0 Answers0