我想确定Android应用程序在运行时是否在BlueStacks Android模拟器中运行。这样我就可以在BlueStacks中运行时修改应用程序的运行方式。检测Android应用程序是否在'BlueStacks'中运行的可靠方式
BlueStacks不支持多点触控,所以我想实现一个替代我的当前应用程序的标准缩放功能。
E.g.
If (appIsRunningInBlueStacks){
mySurfaceView.enableMultiTouchAlternatives();
} else{
mySurfaceView.enableMultiTouchFeatures();
}
什么是确定appIsRunningInBlueStacks价值的可靠方法?
答案编辑总结对问题的评论:
本,塔拉斯,感谢您的建议。对于蓝叠的Build.MODEL等的值是:
型号: “GT-I9100”
厂商: “三星”
装置: “GT-I9100”
产品: “GT-I9100”
这是同一型号NUM作为三星Galaxy SII,所以它不适合使用它,因为它们担心所有使用SII的用户都与BlueStacks上的用户相同。
CommonsWare,该应用程序继续在BlueStacks中运行,即使< uses-feature>用于清单中的多点触控。事实上(也回答iagreen的问题)...
packageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT);
...返回true!这是可以预料的,我猜想仿真器确信它是三星Galaxy SII!
因此,我们仍然没有办法可靠地检测到应用程序是否在BlueStacks上运行,而不会将所有Samsung Galaxy SII用户都扔在同一个存储桶中。任何其他想法?
你有没有试过通过'android.os.Build'偷窥? (http://developer.android.com/reference/android/os/Build.html) –
是的,尝试在运行时检查android.os.Build MODEL,MANUFACTURER,DEVICE,PRODUCT常量并检查它们的值,而不是简单地检查一个最适合的参数,并且在运行时是唯一的。 –
您是否有正确的''元素来宣传您需要多点触控?或者BlueStacks忽略了这一点? –
CommonsWare