【发布时间】:2019-07-03 20:24:14
【问题描述】:
有人知道如何仅在 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();
}
【问题讨论】:
-
您是否将此脚本附加到某个游戏对象?
-
是的……主摄像头。
-
但这适用于我的 htc 设备!
-
对你来说很有趣,在我的 Galaxsy S5 上它不起作用。我收到一条错误消息,提示我的设备无法连接到相机服务。