我想在 Android 应用程序的运行时确定它是否在BlueStacks Android 模拟器中运行。这样我就可以修改应用程序在 BlueStacks 中运行时的运行方式。
BlueStacks 不支持多点触控,所以我想实现一个替代我当前应用程序具有的标准捏到缩放功能的替代方案。
例如
If (appIsRunningInBlueStacks){
mySurfaceView.enableMultiTouchAlternatives();
} else{
mySurfaceView.enableMultiTouchFeatures();
}
确定 appIsRunningInBlueStacks 价值的可靠方法是什么?
编辑问题评论的答案摘要:
Ben,Taras,感谢您的建议。BlueStacks 的 Build.MODEL 等值为:
型号:“GT-I9100”
制造商:“三星”
设备:“GT-I9100”
产品:“GT-I9100”
这与三星 Galaxy SII 的型号相同,因此使用它并不理想,因为担心使用 SII 的所有用户都与 BlueStacks 上的用户相同。
CommonsWare,该应用程序继续在 BlueStacks 中运行,即使清单中的 <uses-feature> 用于多点触控。事实上(也回答了 iagreen 的问题)......
packageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT);
...返回真!我想这是可以预料的,因为模拟器确信它是三星 Galaxy SII!
因此,我们仍然无法可靠地检测应用程序是否在 BlueStacks 上运行,而不会将所有三星 Galaxy SII 用户放在同一个存储桶中。还有其他想法吗?