C# 检测游戏是否在android emulator中运行
有没有办法知道游戏是在模拟器应用程序中运行还是在真实设备中运行 一些应用程序,如C# 检测游戏是否在android emulator中运行,c#,android,unity3d,emulation,virtual,C#,Android,Unity3d,Emulation,Virtual,有没有办法知道游戏是在模拟器应用程序中运行还是在真实设备中运行 一些应用程序,如VirtualXposed是针对android设备的虚拟仿真器。此类应用程序允许用户使用不同的标识在其设备上多次安装游戏/应用程序 我想知道是否有任何方法可以识别我的游戏/应用程序正在emulator或unity3d中的物理设备中运行 比如: if(isemulator) { dosomething(); } 也许您可以寻找一些特定于仿真器的SystemInfos(),例如SystemIn
VirtualXposed
是针对android设备的虚拟仿真器。此类应用程序允许用户使用不同的标识在其设备上多次安装游戏/应用程序
我想知道是否有任何方法可以识别我的游戏/应用程序正在emulator或unity3d中的物理设备中运行
比如:
if(isemulator)
{
dosomething();
}
也许您可以寻找一些特定于仿真器的SystemInfos(),例如SystemInfo.deviceModel这并不容易,因为有很多仿真器。帖子中的答案是,您可以使用
Build.FINGERPRINT.contains(“泛型”)
来实现这一点
您可以将Java代码移植到C#,与AndroidJavaClass
类相结合,而无需构建Java插件。下面是C#中的移植版本:
public bool iSimulator()
{
AndroidJavaClass osBuild;
osBuild=newandroidjavaclass(“android.os.Build”);
string fingerPrint=osBuild.GetStatic(“指纹”);
返回指纹。包含(“通用”);
}
要确保这涵盖了大多数模拟器,请使用插件。这个插件似乎经过严格测试,可以检测大多数模拟器。您可以使用
AndroidJavaClass
与之通信,也可以使用UnityPlayer.UnitySendMessage
在C#中回调Unity代码 不确定,看起来其他人在unity答案中心也有同样的问题(但没有答案)。我在如何检测.apk是否在模拟器上运行时发现了这个问题:我想要一个简单的解决方案@KatianieA“简单”解决方案可能不存在。主要是因为应用程序不应该知道或关心它是否在模拟器上。@iman_sh(请客气一点)这是我能找到的最简单的解决方案。你的要求并不典型。为什么你需要知道它是一个模拟器?
public bool IsEmulator()
{
AndroidJavaClass osBuild;
osBuild = new AndroidJavaClass("android.os.Build");
string fingerPrint = osBuild.GetStatic<string>("FINGERPRINT");
return fingerPrint.Contains("generic");
}