Translate

среда, 23 ноября 2016 г.

FMX.DeviceInfo - модуль для получения информации о девайсе

Доброго времени суток!

Начну я свой бложик с модуля FMX.DeviceInfo, суть его заключается в том, чтобы получить доступную информацию о девайсе, на котором запущено приложение.

Итак, по шагам:
1. Положить модуль FMX.DeviceInfo в папку с проектом
2. Подключить его в нужном модуле (прописать в uses секции)
3. Для платформы Android нужно добавить разрешения (permissions) в Debug и Release конфиги
     READ_PHONE_STATE 
     ACCESS_NETWORK_STATE
     ACCESS_WIFI_STATE 
4. В OnShow вызываем процедуру DeviceInfoByPlatform
5. Теперь подробней….


При вызове DeviceInfoByPlatform, у нас происходит получение информации о девайсе, хранится эта информация в структуре (record), доступна по глобальной переменной DeviceInfo

Вот наша структура
type
  TmyDeviceInfo = record
    diPlatform: string;
    diPlatformT: TOSVersion.TPlatform;
    diArchitecture: string;
    diArchitecture2: string;
    diArchitectureT: TOSVersion.TArchitecture;
    diMacAddress: string;
    diIPAddress: string;
    diPlatformVer: string;
    diDevice: string;
    diLang: string;
    diScreenPhis: string;
    diScreenLogic: string;
    diScreenWidth: Single;
    diScreenHeight: Single;
    diScale: Single;
    diMobileOperator: string;
    diTimeZone: integer;
    diIsIntel: Boolean;
  end;
тут нужно уточнить, что IP и MAC адрес не на всех платформах будет определяться.

[ANDROID] MAC адрес - с версии 6+ стоит заглушка которая всегда отправляет 02:00:00:00:00:00, подробней
[ANDROID] IP адрес - реализовано только через Wi-Fi
[IOS/MacOS] IP адрес всегда unknown
[IOS] MAC адрес - UUID идентификатор устройства

diMobileOperator - определяется только на Android, из-за бага который появился в Berlin Update 1 перестал определяться оператор на iOS
diIsIntel - поможет определить процессор, актуально для Android планшетов на базе Intel Atom


Также в модуле есть методы:

  • проверка соединения с интернетом [WINDOWS/ANDROID]
function IsNetConnected: Boolean;

  • проверка на включенный GPS [ANDROID]
function IsGPSActive(HIGH_ACCURACY: Boolean = False): Boolean;

  • ну и остальные, не требующие описания
function IsDeviceType: TDeviceInfo.TDeviceClass;
function IsTablet: Boolean;
function IsPortraitOrientation: Boolean;
function IsLargePhone: Boolean;

Скриншоты и исходники доступны на GitHub

В следующих постах постараюсь описать подробней ModernListView (описание на fmxexpress)