← Все расширения

Нативное расширение

KlugDeviceType

com.klug.devicetype

APM НЕ НУЖЕН. Скачайте и пользуйтесь. Проще уже некуда.

Надёжное определение телефона или планшета, запрашиваемое напрямую у операционной системы, независимо от ориентации.

iOSAndroid В продакшене От €19 / год · Купить

Обзор

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

KlugDeviceType спрашивает саму операционную систему. На Android он использует наименьшую ширину экрана устройства в независимых от плотности пикселях (600 dp и больше — планшет), то есть то же правило, по которому Android выбирает собственные раскладки. На iOS он использует идиому устройства системы, отличающую iPad от iPhone.

Ответ одинаков в портретной и альбомной ориентации, не зависит от того, как ваше приложение масштабирует содержимое, и доступен с самого первого кадра приложения.

Возможности

  • Автономность: один ANE, без базовой библиотеки и зависимых ANE
  • Телефон или планшет — отвечает операционная система
  • Стабильно при смене ориентации и масштабировании приложения
  • Наименьшая ширина экрана в dp (в пунктах на iOS) для ваших собственных порогов
  • Доступно при запуске приложения, до первой раскладки
  • Разрешения не нужны

Поддерживаемые платформы

Android arm64 · armv7
iOS arm64

На других платформах isSupported возвращает false, а deviceType — пустая строка.

Начало работы

Добавьте расширение в дескриптор вашего приложения:

app.xml
<extensions>
    <extensionID>com.klug.devicetype</extensionID>
</extensions>

Примеры кода

Три полных сценария. Геттеры возвращаются сразу и не требуют разрешений; каждое чтение снова запрашивает операционную систему. Полная документация →

1 · Выбор раскладки при запуске
Layout.as
import com.klug.devicetype.DeviceType;

var type:DeviceType = DeviceType.getInstance();

// the same answer in portrait and landscape, available before the first layout
if ( !type.isSupported )     useDesktopLayout();   // other platforms: deviceType is ""
else if ( type.isTablet )   useTabletLayout();    // Android: 600 dp or more · iOS: iPad
else                        usePhoneLayout();
2 · Ваши собственные точки перехода
Grid.as
// dp on Android, points on iOS; -1 where not available
var sw:int = type.smallestWidthDp;
var columns:int;

if ( sw >= 720 )        columns = 3;   // large tablet
else if ( sw >= 600 )   columns = 2;   // small tablet
else                    columns = 1;   // phone, or -1: not available

buildGrid( columns );
3 · Отслеживание складного устройства при раскрытии и складывании
Resize.as
import flash.events.Event;

var current:String = type.deviceType;

// every read asks the system again, nothing is cached
stage.addEventListener( Event.RESIZE, function( e:Event ):void {
    var now:String = type.deviceType;
    if ( now == current ) return;   // a rotation alone never changes it
    current = now;
    rebuildLayout( now );            // Android: opening a foldable can turn "phone" into "tablet"
});

// iOS: isTablet follows the device (iPad) and does not change;
// smallestWidthDp follows the screen the app is shown on

Обзор API

DeviceType.getInstance()Возвращает единственный экземпляр.
isSupportedTrue на Android и iOS.
isTabletTrue на планшете: Android — 600 dp и больше, iOS — iPad; false на других платформах.
isPhoneTrue на телефоне; false на других платформах.
deviceType"tablet" или "phone"; пустая строка на других платформах.
smallestWidthDpМеньшая сторона экрана: dp на Android, пункты на iOS; -1, где недоступно.

Купить KlugDeviceType

Годовая лицензия на одно приложение AIR со всеми обновлениями в течение 12 месяцев. После оплаты вы получаете расширение, библиотеку ActionScript и документацию по e-mail, обычно в течение одного рабочего дня. Лицензия и условия

Базовый
€19 / год
  • Лицензия на одно приложение AIR
  • Все обновления в течение 12 месяцев
  • Без поддержки
Купить Базовый
Стандартный
€149 / год
  • Лицензия на одно приложение AIR
  • Все обновления в течение 12 месяцев
  • Ответ по e-mail в течение 7 дней
Купить Стандартный
Приоритетный
€299 / год
  • Лицензия на одно приложение AIR
  • Все обновления в течение 12 месяцев
  • Ответ по e-mail в течение 48 часов
Купить Приоритетный
Налоги рассчитываются при оформлении заказа через Link (Stripe). ID приложения вашего приложения AIR вы указываете при оформлении заказа.

Требования

AIR SDK51.x (HARMAN)
iOSiOS 17 или новее
AndroidAndroid 6.0 (API 23) или новее
РазрешенияНет