← Todas as extensões

Extensão nativa

KlugDeviceType

com.klug.devicetype

NÃO É NECESSÁRIO APM. Baixe e aproveite. Não tem como ser mais simples.

Detecção confiável de celular ou tablet, consultada diretamente ao sistema operacional, independente da orientação.

iOSAndroid Em produção A partir de €19 / ano · Comprar

Visão geral

Muitos apps mostram um layout diferente em um tablet e em um celular. Deduzir a classe do dispositivo pelo tamanho da tela não é confiável: o resultado pode mudar com a orientação, a escala da tela ou o tamanho da janela.

O KlugDeviceType pergunta ao próprio sistema operacional. No Android, usa a menor largura de tela do dispositivo em pixels independentes de densidade (600 dp ou mais é um tablet), a mesma regra que o Android usa para seus próprios layouts. No iOS, usa o idiom de dispositivo do sistema, que distingue um iPad de um iPhone.

A resposta é a mesma em retrato e paisagem, independente de como o seu app escala o conteúdo, desde o primeiro frame do app.

Recursos

  • Autossuficiente: uma ANE, sem biblioteca principal nem ANEs de dependência para adicionar
  • Celular ou tablet, respondido pelo sistema operacional
  • Estável diante de orientação e escala do app
  • A menor largura de tela em dp (pontos no iOS), para os seus próprios limites
  • Disponível na inicialização do app, antes do primeiro layout
  • Nenhuma permissão necessária

Plataformas compatíveis

Android arm64 · armv7
iOS arm64

Em outras plataformas, isSupported retorna false e deviceType é uma string vazia.

Primeiros passos

Adicione a extensão ao descritor do seu aplicativo:

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

Exemplos de código

Três fluxos completos. Os getters retornam imediatamente e não exigem permissão; cada leitura consulta o sistema operacional de novo. Documentação completa →

1 · Escolher o layout na inicialização
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 · Seus próprios breakpoints
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 · Acompanhar um dobrável quando ele abre ou fecha
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

Visão geral da API

DeviceType.getInstance()Retorna a instância única.
isSupportedVerdadeiro no Android e iOS.
isTabletVerdadeiro em um tablet: Android com 600 dp ou mais, iPad no iOS; falso em outras plataformas.
isPhoneVerdadeiro em um celular; falso em outras plataformas.
deviceType"tablet" ou "phone"; uma string vazia em outras plataformas.
smallestWidthDpA menor dimensão da tela: dp no Android, pontos no iOS; -1 onde não está disponível.

Compre o KlugDeviceType

Uma licença anual para um app AIR, com todas as atualizações por 12 meses. Após o pagamento, você recebe a extensão, a biblioteca ActionScript e a documentação por e-mail, normalmente em até um dia útil. Licença e termos

Simples
€19 / ano
  • Licença para um app AIR
  • Todas as atualizações por 12 meses
  • Sem suporte
Comprar Simples
Padrão
€149 / ano
  • Licença para um app AIR
  • Todas as atualizações por 12 meses
  • Resposta por e-mail em até 7 dias
Comprar Padrão
Prioritário
€299 / ano
  • Licença para um app AIR
  • Todas as atualizações por 12 meses
  • Resposta por e-mail em até 48 horas
Comprar Prioritário
Os impostos são calculados no checkout pelo Link (Stripe). Você informa o ID do aplicativo do seu app AIR durante o checkout.

Requisitos

AIR SDK51.x (HARMAN)
iOSiOS 17 ou posterior
AndroidAndroid 6.0 (API 23) ou posterior
PermissõesNenhuma