1. 程式人生 > 其它 >Android 判斷當前裝置是手機還是平板的最有效的方法

Android 判斷當前裝置是手機還是平板的最有效的方法

技術標籤:AndroidAndroid手機平板判斷

1. 前言

如果你百度一下,如何判斷當前裝置是手機還是平板,搜尋到的結果一般都是下面這個。

/**
 * 是否是平板
 *
 * @param context 上下文
 * @return 是平板則返回true,反之返回false
 */
public static boolean isPad(Context context) {
    return (context.getResources().getConfiguration().screenLayout
        & Configuration.SCREENLAYOUT_SIZE_MASK)
>= Configuration.SCREENLAYOUT_SIZE_LARGE; }

在大多數情況下,這個方法是有用的。但是經過一段時間的使用,我發現這個方法是會出現誤判的。例如:在華為平板上,可以通過調整系統設定中“字型和顯示大小”,放大介面,這個時候這個方法的獲取結果就是 false,將平板誤識別為手機。

所以,想要有效地判斷當前裝置是手機還是平板,還得另找其他方法。

2. 解決方案

因為我們是可以獲取到當前裝置螢幕的寬度和長度(單位是畫素),那麼我們可以通過勾股定理,計算出裝置的對角線長度,即螢幕大小(單位是英寸)。而目前市面上,最小的平板是7.0英寸,那麼只要判斷是螢幕大小大於等於7.0英寸的裝置就是平板了,具體程式碼如下:

/**
 * 是否是平板
 *
 * @param context 上下文
 * @return 是平板則返回true,反之返回false
 */
public static boolean isPad(Context context) {
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm); double x = Math.pow(dm.widthPixels / dm.xdpi, 2); double y = Math.pow(dm.heightPixels / dm.ydpi, 2); double screenInches = Math.sqrt(x + y); // 螢幕尺寸 return screenInches >= 7.0; }

如果想進一步交流和學習的同學,可以加一下QQ群哦!

Android開發者群號:371529514