在 Unity 中使用 Google Api Java class?

Using Google Api Java class in Unity?

我正在尝试在我的 Unity 应用程序中使用 Google Api Java API(仅限 Android 构建) 我想使用 DetectedActivity 功能,它可以检测 phone 是在车里,用户是 运行,走路还是静止不动。

(有点奇怪,您需要连接[到您的 google 游戏帐户?] 才能使用可能全部在本地完成的特定功能?)

我能够使用 C# 脚本中的 AndroidJava 对象创建 Java 对象用于另一个目的(从 Android API 读取 GPS因为从 Unity 5.5 开始,Unity 就被窃听了)。 但是,我似乎无法创建 GoogleApiClient 的(抽象的)class 或 Builder 作为对象。 我尝试创建生成器的代码是:

public void ActivateActivityDetector() 
{ 
    #if UNITY_ANDROID 
    using (AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) 
    {   
        activityContext = activityClass.GetStatic<AndroidJavaObject>("currentActivity"); 

        if (debugText!=null)
            debugText.text = "Ok1";
        try
        {
            AndroidJavaObject api = new AndroidJavaObject("com.google.android.gms.common.api.GoogleApiClient$Builder", activityContext);

            if (debugText!=null)
                debugText.text = (api!=null)?"Yes":"No";
        }
        catch (System.Exception e)
        {
            if (debugText!=null)
                debugText.text = e.ToString();
        }

    } 
    #endif 
}

但是,我不断收到一个异常,即我尝试的任何变体都找不到 class。 我怀疑这可能是 Unity 用于构建 apk 的 SDK 是 "vanilla" Android SDK,而有一个不同的 SDK 也包括 Google API?

无论如何,我想知道是否可以在Unity下使用Google API服务,特别是DetectedActivity? 另一种可能性是直接从 Google API 源代码中获取代码,我认为它是开源的?(虽然我不确定许可以及是否可以在商业项目中使用它).

Google API 确实不是 Android SDK 的一部分。要使用它,您需要在 Android 项目中 set up Google Play Services

当您在 unity 中进入构建设置时,应该有一个名为 "Google Android Project" 的选项(如 here)。当您 select 时,Unity 将创建一个 Android 项目文件夹而不是 APK。在那里,您应该能够像第一个 link.

中描述的那样设置播放服务

据我所知,从那时起,您必须使用该项目和 Android Studio 构建您的 APK。因此,您可能希望为开发目的实施一些虚拟对象。