如何只在Unity3d使用C#开启/关闭的Android手电筒 [英] How turn On/Off android flashlight using C# only in Unity3d
本文介绍了如何只在Unity3d使用C#开启/关闭的Android手电筒的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
任何人都知道如何使用C#来开启/关闭的android手电筒只在Unity?
我不喜欢的插件了,我不想让我自己的。是否有一个原因,使我的设备切换或关闭手电筒使用纯C#?
我想这个脚本添加到主摄像头,但它只是没有做的伎俩:(
私人BOOL活动;
私人AndroidJavaObject摄像机1;无效FL_Start()
{
AndroidJavaClass cameraClass =新AndroidJavaClass(android.hardware.Camera);
WebCamDevice [] =设备WebCamTexture.devices; INT CAMID = 0;
摄像机1 = cameraClass.CallStatic< AndroidJavaObject>(开放,CAMID); 如果(摄像机1!= NULL)
{
AndroidJavaObject cameraParameters = camera1.Call&所述; AndroidJavaObject&GT(getParameters);
cameraParameters.Call(setFlashMode,火炬);
camera1.Call(setParameters,cameraParameters);
活动=真;
}
其他
{
Debug.LogError([CameraParametersAndroid]相机不可用);
}}无效的OnDestroy()
{
FL_Stop();
}无效FL_Stop()
{ 如果(摄像机1!= NULL)
{
camera1.Call(停preVIEW);
camera1.Call(释放);
活动= FALSE;
}
其他
{
Debug.LogError([CameraParametersAndroid]相机不可用);
}}无效OnGUI()
{
GUILayout.BeginArea(新矩形(Screen.width * 0.1F,Screen.height * 0.1F,Screen.width * 0.3f,Screen.height * 0.1F));
如果(!活动)
{
如果(GUILayout.Button(ENABLE手电筒))
FL_Start();
}
其他
{
如果(GUILayout.Button(DISABLE手电筒))
FL_Stop();
}
GUILayout.EndArea();
}
解决方案
较新的三星手机大约code非常挑剔。
您需要使用 camera1.Call(开始preVIEW);
如下图所示;
如果(摄像机1!= NULL)
{
AndroidJavaObject cameraParameters = camera1.Call&所述; AndroidJavaObject&GT(getParameters);
cameraParameters.Call(setFlashMode,火炬);
camera1.Call(setParameters,cameraParameters);
///固定/////
camera1.Call(开始preVIEW);
活动=真;
}
Anybody knows how to turn On/Off android flashlight using C# only in Unity? I don't like plugins, and I don't want to make one of my own. Is there a why to make my device switch the flashlight On or Off using pure C#?
I tried to add this script to the main camera, but it just didn't do the trick :(
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();
}
解决方案
Newer Samsung phones are very picky about code.
You need to use camera1.Call("startPreview");
as shown below;
if (camera1 != null)
{
AndroidJavaObject cameraParameters = camera1.Call<AndroidJavaObject>("getParameters");
cameraParameters.Call("setFlashMode", "torch");
camera1.Call("setParameters", cameraParameters);
///FIX/////
camera1.Call("startPreview");
Active = true;
}
这篇关于如何只在Unity3d使用C#开启/关闭的Android手电筒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文