使用 Unity 或不使用 C++ 的 Java 在 Vuforia 中进行图像检测
Toast on Image Detection in Vuforia either using Unity or Java without C++
我必须在检测到图像时吐司一条消息。
哪种方法最简单?
使用 Unity 还是仅使用 JAVA 而无需本地调用?
我已经尝试了 developer.vuforia.com 网站中给出的所有方法
我试过了
1.如何扩展Unity Android Activity
2. 如何在 Unity 应用程序中使用 Android 插件
3. 如何通过 Unity 添加 Android 的视图
4.如何在目标检测和打开网站时显示Toast
但没有任何效果.. 请指导我或发送 link 工作示例
我正在使用 unity 扩展,但我很确定核心 codabase 是相同的。图像目标使用名为 DefaultTrackableEventHandler 的 class 并且有 OnTrackingFound() 函数。一旦检测到图像,就会调用它,这样您就可以在其中实现您的消息!无论如何,我就是这样做的。祝你好运
非常感谢您的努力。但是有一个非常简单的方法可以做到这一点:
试试这个脚本
使用UnityEngine;
使用 System.Collections;
public class ShowToast : MonoBehaviour {
// Use this for initialization
void Start () {
MyShowToastMethod ();
}
string toastString;
AndroidJavaObject currentActivity;
public void MyShowToastMethod ()
{
if (Application.platform == RuntimePlatform.Android) {
showToastOnUiThread ("It Worked!");
}
}
void showToastOnUiThread(string toastString){
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
this.toastString = toastString;
currentActivity.Call ("runOnUiThread", new AndroidJavaRunnable (showToast));
}
void showToast(){
Debug.Log ("Running on UI thread");
AndroidJavaObject context = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
AndroidJavaObject javaString=new AndroidJavaObject("java.lang.String",toastString);
AndroidJavaObject toast = Toast.CallStatic<AndroidJavaObject> ("makeText", context, javaString, Toast.GetStatic<int>("LENGTH_SHORT"));
toast.Call ("show");
}
}
我必须在检测到图像时吐司一条消息。 哪种方法最简单? 使用 Unity 还是仅使用 JAVA 而无需本地调用?
我已经尝试了 developer.vuforia.com 网站中给出的所有方法
我试过了 1.如何扩展Unity Android Activity 2. 如何在 Unity 应用程序中使用 Android 插件 3. 如何通过 Unity 添加 Android 的视图 4.如何在目标检测和打开网站时显示Toast
但没有任何效果.. 请指导我或发送 link 工作示例
我正在使用 unity 扩展,但我很确定核心 codabase 是相同的。图像目标使用名为 DefaultTrackableEventHandler 的 class 并且有 OnTrackingFound() 函数。一旦检测到图像,就会调用它,这样您就可以在其中实现您的消息!无论如何,我就是这样做的。祝你好运
非常感谢您的努力。但是有一个非常简单的方法可以做到这一点:
试试这个脚本
使用UnityEngine; 使用 System.Collections;
public class ShowToast : MonoBehaviour { // Use this for initialization void Start () { MyShowToastMethod (); } string toastString; AndroidJavaObject currentActivity; public void MyShowToastMethod () { if (Application.platform == RuntimePlatform.Android) { showToastOnUiThread ("It Worked!"); } } void showToastOnUiThread(string toastString){ AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); this.toastString = toastString; currentActivity.Call ("runOnUiThread", new AndroidJavaRunnable (showToast)); } void showToast(){ Debug.Log ("Running on UI thread"); AndroidJavaObject context = currentActivity.Call<AndroidJavaObject>("getApplicationContext"); AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast"); AndroidJavaObject javaString=new AndroidJavaObject("java.lang.String",toastString); AndroidJavaObject toast = Toast.CallStatic<AndroidJavaObject> ("makeText", context, javaString, Toast.GetStatic<int>("LENGTH_SHORT")); toast.Call ("show"); } }