c# - 检测游戏是否在安卓模拟器中运行
问题描述
有什么方法可以知道游戏是在模拟器应用程序还是真实设备中运行的?
像一些应用程序VirtualXposed
是 android 设备的虚拟模拟器。此类应用程序允许用户在其设备上以不同的标识多次安装游戏/应用程序。
我想知道有什么方法可以识别我的游戏/应用程序是在模拟器中运行还是在 unity3d 中的物理设备中运行?
就像是 :
if(isemulator)
{
dosomething();
}
解决方案
这并不容易,因为那里有很多模拟器。这篇文章的答案说你可以用它Build.FINGERPRINT.contains("generic")
来做到这一点。
您可以使用类将 Java 代码移植到 Unity 中的 C#,AndroidJavaClass
而无需构建 Java 插件。以下是 C# 中的移植版本:
public bool IsEmulator()
{
AndroidJavaClass osBuild;
osBuild = new AndroidJavaClass("android.os.Build");
string fingerPrint = osBuild.GetStatic<string>("FINGERPRINT");
return fingerPrint.Contains("generic");
}
要确保这涵盖了大多数模拟器,请使用android-emulator-detector插件。这个插件似乎经过严格测试并检测到大多数模拟器。您可以使用AndroidJavaClass
它与它进行通信,并UnityPlayer.UnitySendMessage
在 C# 中对您的 Unity 代码进行回调。
推荐阅读
- firebase - 在firestore中,如果我指定文档和字段,是否可以检索字段的数据类型?
- javascript - Javascript 绘制模式
- reactjs - 高阶组件中的类型推断
- c++ - 如何限制 C++ 中的尝试次数?
- django - 带有动态侧边导航菜单的 Django 网站
- ios - Flutter 运行 xcode 构建失败,但直接使用 xcode 构建成功
- binary-tree - 以下两个函数的区别
- python - 在 Matplotlib 图中检索坐标的 RGB 值
- javascript - 在 cookie 中存储 javascript 变量
- flutter - 从 Flutter 中的 initState 将数据添加到现有列表(异步)