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.