← すべての拡張機能

ネイティブ拡張機能

KlugDeviceType

com.klug.devicetype

APMは不要。ダウンロードしてすぐに使えます。これ以上シンプルにはできません。

向きに左右されず、オペレーティングシステムに直接問い合わせる、確実なスマートフォン/タブレット判定。

iOSAndroid 本番稼働中 年額€19から · 購入

概要

多くのアプリは、タブレットとスマートフォンで異なるレイアウトを表示します。画面サイズからデバイスのクラスを推測するのは不確実です。結果は、向き、表示スケーリング、ウィンドウのサイズによって変わることがあります。

KlugDeviceType はオペレーティングシステム自体に問い合わせます。Android では、デバイスの最小画面幅(密度非依存ピクセル。600 dp 以上がタブレット)を使用します。これは Android 自身がレイアウトに使うルールと同じです。iOS では、iPad と iPhone を区別するシステムのデバイスイディオムを使用します。

回答は、縦向きでも横向きでも、アプリがコンテンツをどうスケーリングしても変わらず、アプリの最初のフレームから得られます。

機能

  • 自己完結型:ANE 1つで完結し、コアライブラリや依存 ANE の追加は不要
  • スマートフォンかタブレットかを、オペレーティングシステムが回答
  • 向きやアプリのスケーリングに左右されず安定
  • 独自のしきい値のために、最小画面幅を dp(iOS ではポイント)で取得
  • 最初のレイアウトより前の、アプリ起動時から利用可能
  • 権限は不要

対応プラットフォーム

Android arm64 · armv7
iOS arm64

他のプラットフォームでは、isSupported が false を返し、deviceType は空文字列になります。

はじめに

アプリケーション記述子に拡張機能を追加します:

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

コード例

3つの完全なフローです。ゲッターは即座に返り、権限は不要です。読み取りのたびにオペレーティングシステムに再度問い合わせます。完全なドキュメント →

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()唯一のインスタンスを返します。
isSupportedAndroid と iOS では true です。
isTabletタブレットでは true:Android は 600 dp 以上、iOS は iPad。他のプラットフォームでは false。
isPhoneスマートフォンでは true。他のプラットフォームでは false。
deviceType"tablet" または "phone"。他のプラットフォームでは空文字列。
smallestWidthDp画面の短い方の寸法:Android では dp、iOS ではポイント。利用できない場合は -1。

KlugDeviceType を購入

AIR アプリケーション1つ分の年間ライセンスで、12か月間のすべてのアップデートが含まれます。お支払い後、拡張機能、ActionScript ライブラリ、ドキュメントをメールでお送りします(通常は1営業日以内)。ライセンスと条件

シンプル
€19 / 年
  • AIR アプリケーション1つ分のライセンス
  • 12か月間のすべてのアップデート
  • サポートなし
シンプルを購入
スタンダード
€149 / 年
  • AIR アプリケーション1つ分のライセンス
  • 12か月間のすべてのアップデート
  • 7日以内にメールで回答
スタンダードを購入
プライオリティ
€299 / 年
  • AIR アプリケーション1つ分のライセンス
  • 12か月間のすべてのアップデート
  • 48時間以内にメールで回答
プライオリティを購入
税金は Link(Stripe)によりチェックアウト時に計算されます。チェックアウト時に、AIR アプリのアプリケーションIDを入力してください。

動作要件

AIR SDK51.x(HARMAN)
iOSiOS 17 以降
AndroidAndroid 6.0(API 23)以降
権限なし