gpt4 book ai didi

c# - 如何仅在 Unity3d 中使用 C# 打开/关闭 android 手电筒

转载 作者:太空宇宙 更新时间:2023-11-03 19:06:48 25 4
gpt4 key购买 nike

有人知道如何仅在 Unity 中使用 C# 打开/关闭 android 手电筒吗?我不喜欢插件,也不想自己做一个。为什么要使用纯 C# 让我的设备打开或关闭手电筒?

我试图将此脚本添加到主摄像头,但它并没有成功:(

private bool Active;
private AndroidJavaObject camera1;

void FL_Start()
{
AndroidJavaClass cameraClass = new AndroidJavaClass("android.hardware.Camera");
WebCamDevice[] devices = WebCamTexture.devices;

int camID = 0;
camera1 = cameraClass.CallStatic<AndroidJavaObject>("open", camID);

if (camera1 != null)
{
AndroidJavaObject cameraParameters = camera1.Call<AndroidJavaObject>("getParameters");
cameraParameters.Call("setFlashMode", "torch");
camera1.Call("setParameters", cameraParameters);
Active = true;
}
else
{
Debug.LogError("[CameraParametersAndroid] Camera not available");
}

}

void OnDestroy()
{
FL_Stop();
}

void FL_Stop()
{

if (camera1 != null)
{
camera1.Call("stopPreview");
camera1.Call("release");
Active = false;
}
else
{
Debug.LogError("[CameraParametersAndroid] Camera not available");
}

}

void OnGUI()
{
GUILayout.BeginArea(new Rect(Screen.width * 0.1f, Screen.height * 0.1f, Screen.width * 0.3f, Screen.height * 0.1f));
if (!Active)
{
if (GUILayout.Button("ENABLE FLASHLIGHT"))
FL_Start();
}
else
{
if (GUILayout.Button("DISABLE FLASHLIGHT"))
FL_Stop();
}
GUILayout.EndArea();
}

最佳答案

较新的三星手机对代码非常挑剔。

你需要使用camera1.Call("startPreview");如下图;

if (camera1 != null)
{
AndroidJavaObject cameraParameters = camera1.Call<AndroidJavaObject>("getParameters");
cameraParameters.Call("setFlashMode", "torch");
camera1.Call("setParameters", cameraParameters);
///FIX/////
camera1.Call("startPreview");
Active = true;
}

关于c# - 如何仅在 Unity3d 中使用 C# 打开/关闭 android 手电筒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25848519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com