[解決済み】端末がスマートフォンかタブレットかを判断する?[重複あり]
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
}
関連
-
[解決済み】Edit Textのandroid:ems属性とは何ですか?[重複しています]
-
[解決済み] Android Studioで「URIが登録されていません」と報告されるのはなぜですか?[クローズド]
-
[解決済み] SDKの場所がandroid studioで見つからない
-
[解決済み] android.support.design.widget.FloatingActionButton クラスの展開に失敗しました。
-
[解決済み] android.intent.action.MAINの意味は何ですか?
-
[解決済み] AndroidでBluetoothが有効かどうかのチェックに失敗する(REQUEST_ENABLE_BTを変数に解決できない)。
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] デバイスの現在の言語を取得する
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このアクティビティでは、Theme.AppCompatテーマ(またはその子孫)を使用する必要があります。
-
[解決済み】まだ警告が出る:設定 'compile' は時代遅れで 'implementation' に置き換わった。
-
[解決済み】react-native: コマンドが見つかりません。
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み】Android Studio AVD - Emulator: 終了コード 1 でプロセスが終了
-
[解決済み】Android Studioの初回起動。Android SDKアドオンリストにアクセスできない
-
[解決済み] Looper.prepare()を呼び出していないスレッドではハンドラを作成できない
-
[解決済み] android.support.design.widget.FloatingActionButton クラスの展開に失敗しました。
-
[解決済み] Androidアプリの向きを縦向きと横向きにロックする方法。
-
[解決済み】Android:タブレットでは縦向きと横向きを許容するが、電話では縦向きを強制する?