1. Можно как вариант попробывать запросить версию модели устройства, с помощью класса Build (из пакета android.os), который возвращает различные строковые ресурсы (и не только строковые). Нам нужна стринга
MODEL.
на андроид эмуляторах в этой строке чаще всего лежит чтото подобное:
Android SDK Build for x86 и т.п
import android.os.Build;
...
String s = Build.MODEL;
...
2. Детектирование работы через VPN.
Старые способы проверок, прослушивания интерфейсов сетевых уже не актульны в свежих версиях ОС.
Здесь можно проверять по айпишнику юзера, но и это не 100% вариант. Так же было замечено, что гугл поисковик каким то образом понимает, что к нему зашли искать через впн подключение и просит вводить каптчу. Но незнаю насколько эта штука правдива - если стучаться к гуглу и получать содержимое страницы в ответе от гугла, смотреть капча там или нет.. затем повторить эту операцию следом еще пару тройку раз.
3. Подмена геоположения .
В теории подмена как работает? Если юзер включит в параметрах разработчика "симуляцию местоположения" + приложение, которое будет симулировать "левые" gps координаты (таких в маркете тонны, которые выполняют это). Не знаю насколько эта схема отличается на симуляции координат на старых девайсах. Попробуйте как то дёрнуть флаг, отвечающий за симуляцию местоположений, который находится в параметрах разработчика. Если это вообще реально на текущий момент. PS: для большинства каких то операций на новых устройствах, получении системных данных и прочего, может потребоваться соответствующее пермишн разрешение в манифесте.
---
Поищу на досуге про это всё еще подробнее..