1. ホーム
  2. アンドロイド

[解決済み】端末がスマートフォンかタブレットかを判断する?[重複あり]

2022-03-29 18:45:28

質問

スマートフォンかタブレットか、端末の情報を取得したいのですが。どうすればよいですか?

デバイスの種類に応じて、リソースから異なるウェブページを表示したいのですが。

String s="Debug-infos:";
s += "\n OS Version: " + System.getProperty("os.version") + "(" +    android.os.Build.VERSION.INCREMENTAL + ")";
s += "\n OS API Level: " + android.os.Build.VERSION.SDK;
s += "\n Device: " + android.os.Build.DEVICE;
s += "\n Model (and Product): " + android.os.Build.MODEL + " ("+ android.os.Build.PRODUCT + ")";

しかし、私の場合は役に立たないようです。


この解決策は、今、私のために動作します。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;

if (SharedCode.width > 1023 || SharedCode.height > 1023){
   //code for big screen (like tablet)
}else{
   //code for small screen (like smartphone)
}

解決方法は?

このテーマは、Androidトレーニングで説明されています。

最小幅の修飾子を使用する

トピック全体を読むと、特定の値ファイル(res/values-sw600dp/attrs.xmlとして)にブール値を設定する方法が説明されています。

<resources>
    <bool name="isTablet">true</bool>
</resources>

sw600dp修飾子はandroid 3.2以上のプラットフォームでのみ有効だからです。もしこの手法がすべてのプラットフォーム(3.2以前)で有効であることを確認したい場合は、res/values-xlargeフォルダに同じファイルを作成してください。

<resources>
    <bool name="isTablet">true</bool>
</resources>

そして、"standard"値ファイル(res/values/attrs.xmlとして)で、booleanをfalseに設定するのです。

<resources>
    <bool name="isTablet">false</bool>
</resources>

そして、アクティビティでこの値を取得し、タブレットサイズのデバイスで実行しているかどうかを確認することができます。

boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    // do something
} else {
    // do something else
}