我想確定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