Перейти к содержанию
Fire Monkey от А до Я
  • 0

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


Равиль Зарипов (ZuBy)

Вопрос

  • Модераторы

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

Цитата

 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;
Цитата
  • function IsNetConnected: Boolean; - check Internet connection [ANDROID, WINDOWS]
  • function IsNetConnectionType: TmyConnectionType; - internet connection type [ANDROID, WINDOWS]
  • function IsNetworkType: TmyNetworkType; - mobile network type [ANDROID]
  • function IsGPSActive(HIGH_ACCURACY: Boolean = False): Boolean; - GPS enabled? [ANDROID]
  • function IsDeviceType: TDeviceInfo.TDeviceClass; - device type (Unknown, Desktop, Phone, Tablet, etc) [ALL PLATFORMS]
  • function IsTablet: Boolean; - the application is running on the tablet? [ALL PLATFORMS]
  • function IsPortraitOrientation: Boolean; - current orientation is a Portrait? [ALL PLATFORMS]
  • function IsLargePhone: Boolean; - Phablet? [ANDROID/IOS]

Android || Windows || IOS || MAC OS

Screenshot_2015-09-23-13-32-36.png 2015-09-23 13-34-11 Form9.png ios.png macos.png

2016-03-16 18-00-10 dbForge Studio for MySQL - fx.fx_installs (бесплатно для некоммерческого использования).png

Intel планшет

Screenshot_2016-09-26-12-12-27.png

для Андроида нужно включить разрешения (permission)

Цитата

 

access_network_state

access_wifi_state

 

Ссылка на GitHub

Изменено пользователем ZuBy
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
ip не отображает 
{$IF defined(IOS) or defined(MacOs)}
  with TUIDevice.Wrap(TUIDevice.OCClass.currentDevice) do
  begin
    DeviceInfo.diPlatformVer := systemVersion.UTF8String;
    DeviceInfo.diDevice := model.UTF8String;
    DeviceInfo.diMacAddress := identifierForVendor.UUIDString.UTF8String;
    DeviceInfo.diIPAddress := 'not found';
    end; <- добавил
    // ShowMessage(uniqueIdentifier.UTF8String);
    // ShowMessage(identifierForVendor.UUIDString.UTF8String);
{$ENDIF}

 

при компиляции для mac ругает  что нет файла

[dccosx Fatal Error] uDevice.pas(42): F2613 Unit 'IOSapi.UIKit' not found. 

 

не смог найти

post-1039-0-05117000-1443010548_thumb.jp

post-1039-0-97870700-1443010554_thumb.jp

Изменено пользователем master webs
Ссылка на комментарий
  • 0

master webs

отредактируйте строчку, хочу вывести полное название девайса

DeviceInfo.diDevice := model.UTF8String + ' ' + name.UTF8String;

а про mac сейчас в инете посмотрю, думал у них общее

 

post-1039-0-07969900-1443011711_thumb.jp

Ссылка на комментарий
  • 0
  • Модераторы

 

master webs

отредактируйте строчку, хочу вывести полное название девайса

DeviceInfo.diDevice := model.UTF8String + ' ' + name.UTF8String;

а про mac сейчас в инете посмотрю, думал у них общее

 

 

не то что ожидал конечно, хотел версию Айфона получить... но видима он это не передаёт. найти не могу

Ссылка на комментарий
  • 0

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

 

Прошу потестить модуль uDeviceInfo

 

Лови ipad estay

https://www.dropbox.com/s/527supdlc565umw/20150923_183759.jpg?dl=0

Только в модуле uDevice на 137 кажись строке для виза отсутствовал энд. Рекомендую поправить иначе не компилится под ИОС.

Ссылка на комментарий
  • 0
  • Модераторы

 

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

 

Прошу потестить модуль uDeviceInfo

 

Лови ipad estay

https://www.dropbox.com/s/527supdlc565umw/20150923_183759.jpg?dl=0

Только в модуле uDevice на 137 кажись строке для виза отсутствовал энд. Рекомендую поправить иначе не компилится под ИОС.

 

да, это поправил уже.

благодарю за скрин

Ссылка на комментарий
  • 0
  • Модераторы

Код частично собран из интернета и переработан, оптимизирован.

Сделано все для комфортного получения данных о девайсе.

Нуждается в оптимизации ios часть, так как нет возможности протестить

Ссылка на комментарий
  • 0

Нуждается в оптимизации ios часть, так как нет возможности протестить

код надо править, макос все путает, везде ругается на редекларед...дело в том что макос включает в себя иос но кажись не наоборот

честно и сам я не знал такого ))...вот почитай и поправь код http://codeverge.com/embarcadero.delphi.firemonkey/platform-conditional-directive/1987984

как исправишь снова проверю.

 

проверю на Win8.1 x64, DX upd1, vmware 12, OS X Yosemite 10.10.5, xcode7.1, ipad air

Ссылка на комментарий
  • 0
  • Модераторы

 

Нуждается в оптимизации ios часть, так как нет возможности протестить

код надо править, макос все путает, везде ругается на редекларед...дело в том что макос включает в себя иос но кажись не наоборот

честно и сам я не знал такого ))...вот почитай и поправь код http://codeverge.com/embarcadero.delphi.firemonkey/platform-conditional-directive/1987984

как исправишь снова проверю.

 

проверю на Win8.1 x64, DX upd1, vmware 12, OS X Yosemite 10.10.5, xcode7.1, ipad air

 

странное поведение, но теперь есть понимание почему используется такие директивы... спасибо. исправлю

Ссылка на комментарий
  • 0

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

 

Прошу потестить модуль uDeviceInfo

Интересуют IOS, Mac девайсы, т.к. не имеются в наличии

 

Android || Windows

attachicon.gifScreenshot_2015-09-23-13-32-36.png attachicon.gif2015-09-23 13-34-11 Form9.png

 

UPDATE: Исходник поравил

attachicon.gifDeviceInfo.zip

У Nexus 5 физическое разрешение дисплея 1920х1080, а программа показывает 1776х1080. Почему такое несоответствие?

Изменено пользователем Pavel777k
Ссылка на комментарий
  • 0
  • Модераторы

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

 

Прошу потестить модуль uDeviceInfo

Интересуют IOS, Mac девайсы, т.к. не имеются в наличии

 

Android || Windows

attachicon.gifScreenshot_2015-09-23-13-32-36.png attachicon.gif2015-09-23 13-34-11 Form9.png

 

UPDATE: Исходник поравил

attachicon.gifDeviceInfo.zip

У Nexus 5 физическое разрешение дисплея 1920х1080, а программа показывает 1776х1080. Почему такое несоответствие?
Как вы наверное заметили у меня тоже такой девайс, так определяет fmx с этим ничего не поделать
Ссылка на комментарий
  • 0
  • Модераторы

Обновленная версия, кое что подправил теперь нет ошибки на IOS 64 bit

результат (Android, IPhone 4S, IPhone 6, MacOS Yosemite на виртуалке, Windows 10)

56e94d6f88334_2016-03-1618-00-10dbForgeS

Добавлена функция isGPSActive [ANDROID], определяет включен ли сенсор на устройстве

DeviceInfo.zip

Ссылка на комментарий
  • 0
  • Модераторы

* исправил падение приложении на IOS 64bit

исправленная версия в первом сообщении

Ссылка на комментарий
  • 0

Добавил uDevice в свой проект, после этого при старте получаю постоянную ошибку: Project raised exception class EJNIException with message 'java.lang.SecurityException: Neither user 10149 nor current process has android.permission.READ_PHONE_STATE.'.

Как с ней бороться? Добавлять разрешение READ_PHONE_STATE уже пробовал - не помогает.

Ссылка на комментарий
  • 0

В проекте сказано:

  ANDROID permissions:
  ..access_network_state
  ..acces_wifi_state

их я сразу добавил.

А вот READ_PHONE_STATE тоже нужен - он у вас не указан (только я не пойму зачем? что его использует?). После добавления и в Debug и в All Configuration у меня заработало (в общем везде в ней галки проставил :) ). Так что проблема решена, спасибо за внимание.

Ссылка на комментарий
  • 0
  • Модераторы

прошу протестить обладателей девайсов с Intel Atom на борту

Возможно решилась проблема с определением Intela из приложения

Обновленная версия

Спасибо @Rusland за тест

Screenshot_2016-09-26-12-12-27.png

Ссылка на комментарий
  • 0
  • Модераторы

исправлен баг на IOS, крах происходит при подключении модуля FMX.PhoneDialer.pas (IOS)

теперь нет возможности получить информацию об операторе (IOS)

Обновленная версия

Ссылка на комментарий
  • 0

Добрый день!

Использую данный модуль в своей программе для определения подключения к интернету и типа используемого подключения.

Сегодня обновил версию файла (FMX.DeviceInfo), ранее использовал модуль со старым названием uDevice.

Программа на реальном устройстве начала вылетать до загрузки главной формы приложения пока не добавил в Permissions  - READ_PHONE_STATE.

Ранее для моих требований хватало только Access WiFi State, Access network state.

Это нормальное поведение приложения? Или появившийся баг?

Изменено пользователем HyperZen
Ссылка на комментарий
  • 0
  • Модераторы
2 минуты назад, HyperZen сказал:

Добрый день!

Использую данный модуль в своей программе для определения подключения к интернету и типа используемого подключения.

Сегодня обновил версию файла (FMX.DeviceInfo), ранее использовал модуль со старым названием uDevice.

Программа на реальном устройстве начала вылетать до загрузки главной формы приложения пока не добавил в Permissions  - READ_PHONE_STATE.

Это нормальное поведение приложения? Или появившийся баг?

это нормальное поведение, просто это разрешение включено по дефалту, поэтому я нигде не указываю о его нужде.

Уже не первый раз такой вопрос, видимо нужно указывать:)

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...