我想在运行时确定一个Android应用程序是否在BlueStacks Android仿真器中运行。这样一来,我可以修改在BlueStacks中运行时应用程序的运行方式。

BlueStacks不支持多点触控,因此我想实现我当前应用程序具有的标准捏合缩放功能的替代方案。

例如。

If (appIsRunningInBlueStacks){
    mySurfaceView.enableMultiTouchAlternatives();
} else{
    mySurfaceView.enableMultiTouchFeatures();
}

确定appIsRunningInBlueStacks值(value)的可靠方法是什么?

编辑问题评论的答案摘要:

本,塔拉斯,感谢您的建议。 BlueStacks的Build.MODEL等值是:
  • 型号:“GT-I9100”
  • 制造商:“三星”
  • 设备:“GT-I9100”
  • 产品:“GT-I9100”

  • 这是与三星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/

    10-10 06:20