Я хотел бы узнать во время выполнения внутри приложения Android, работает ли он в эмуляторе BlueStacks. Это значит, что я могу изменить способ запуска приложения при работе в BlueStacks.
BlueStacks не поддерживает multi-touch, поэтому я хочу реализовать альтернативу стандартным функциям pinch-to-zoom, которые есть в моем текущем приложении.
например.
If (appIsRunningInBlueStacks){
mySurfaceView.enableMultiTouchAlternatives();
} else{
mySurfaceView.enableMultiTouchFeatures();
}
Что такое надежный способ определения значения appIsRunningInBlueStacks?
EDIT Резюме ответов на комментарии к вопросу:
Бен, Тарас, спасибо за предложения. Значения Build.MODEL для BlueStacks:
-
Модель: "GT-I9100"
-
Производитель: "samsung"
-
Устройство: "GT-I9100"
-
Продукт: "GT-I9100"
Это тот же номер модели, что и Samsung Galaxy SII, поэтому было бы нецелесообразно использовать это, опасаясь, что все пользователи будут иметь SII, такие же, как на BlueStacks.
CommonsWare, приложение продолжает работать в BlueStacks даже с < uses-feature > для мультитач в манифесте. На самом деле (также отвечая на вопрос iagreen)...
packageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT);
... возвращает true! Этого можно ожидать, я полагаю, поскольку эмулятор убежден, что это Samsung Galaxy SII!
Поэтому мы по-прежнему не можем надежно обнаружить, работает ли приложение на BlueStacks, не бросая всех пользователей Samsung Galaxy SII в то же самое ведро. Любые другие идеи?