现在很多人跟我一样苦恼metaio发布到ios可以自动对焦,而发布到android上面就不能自动对焦呢,二维码实现又可以自动对焦,奇怪呀,按排除法来做,先看SDK有没有直接调camera的对焦功能,很失望,然后我就想从JAR包中直接看类名,以及通过他的helpdesk API帮助文档来查看,查呀查,发布目标了,然后测试测试测试。(应该有20多次测试,噜代码就要多调试,多调试)呵呵,come on baby 正式进入正题吧。其中也参考其它人的资料,我只是想让以后会遇到问题的人很快能找到解决方案。勿喷勿喷勿喷勿喷,我的小心脏受不了的。
bool autoFocusSet;
void Awake()
{
autoFocusSet = false;
}
void Update ()
{
#if UNITY_ANDROID && !UNITY_EDITOR
if (Time.time > 10f && !autoFocusSet)
{
autoFocusSet = enableAutoFocus();
}
#endif
}
public static bool enableAutoFocus()
{
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaClass metaioSDKAndroid = new AndroidJavaClass("com.metaio.sdk.jni.IMetaioSDKAndroid");
object[] args = { currentActivity };
AndroidJavaObject camera = metaioSDKAndroid.CallStatic<AndroidJavaObject>("getCamera", args);
if (camera != null)
{
AndroidJavaObject cameraParameters = camera.Call<AndroidJavaObject>("getParameters");
object[] focusMode = { cameraParameters.GetStatic<string>("FOCUS_MODE_CONTINUOUS_PICTURE") };
cameraParameters.Call("setFocusMode", focusMode);
object[] newParameters = { cameraParameters };
camera.Call("setParameters", newParameters);
return true;
}
else
{
Debug.LogError("metaioSDK.enableAutoFocus: Camera not available");
return false;
}
}
|
|
|
|
|
|