我想在运行时确定一个Android应用程序是否在BlueStacks Android仿真器中运行。这样一来,我可以修改在BlueStacks中运行时应用程序的运行方式。
BlueStacks不支持多点触控,因此我想实现我当前应用程序具有的标准捏合缩放功能的替代方案。
例如。
If (appIsRunningInBlueStacks){
mySurfaceView.enableMultiTouchAlternatives();
} else{
mySurfaceView.enableMultiTouchFeatures();
}
确定appIsRunningInBlueStacks值(value)的可靠方法是什么?
编辑问题评论的答案摘要:
本,塔拉斯,感谢您的建议。 BlueStacks的Build.MODEL等值是:
这是与三星Galaxy SII相同的型号,因此,由于担心将所有使用SII的用户与BlueStacks上的用户等同对待,因此使用它并不是理想的选择。
CommonsWare,即使 list 中的用于多点触摸,该应用程序仍可以在BlueStacks中运行。实际上(也回答iagreen的问题)...
packageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT);
...返回true!我想这是可以预期的,因为仿真器确信它是三星Galaxy SII!
因此,我们仍然无法可靠地检测应用程序是否在BlueStacks上运行,而又不会将所有Samsung Galaxy SII用户都扔到同一个存储桶中。还有其他想法吗?
最佳答案
您可以检查Bluestacks共享文件夹是否存在
/sdcard/windows/BstSharedFolder
Boolean onBlueStacks()
{
File sharedFolder = new File(Environment
.getExternalStorageDirectory().toString()
+ File.separatorChar
+ "windows"
+ File.separatorChar
+ "BstSharedFolder");
if (sharedFolder.exists())
{
return true;
}
return false;
}
关于java - 检测Android应用程序是否在 'BlueStacks'中运行的可靠方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14143896/