安卓(Android) 怎么获取设备物理尺寸

2019年10月18日22:04:00安卓(Android) 怎么获取设备物理尺寸已关闭评论 285 1244字阅读4分8秒

1.简介

安卓(Android) 怎么获取设备物理尺寸?——请看下文。

2.示例代码

/**
 * 版权所有 编程十万个怎么办(www.tah1986.com)
 */


import android.content.Context;
import android.graphics.Point;
import android.os.Build;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;

public class Main {
    public static double getDevicePhysicalSize(Context context) {
        int[] size = getRealScreenSize(context);
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        double x = Math.pow(size[0] / dm.xdpi, 2);
        double y = Math.pow(size[1] / dm.ydpi, 2);

        return Math.sqrt(x + y);
    }

    public static int[] getRealScreenSize(Context context) {

        int[] size = new int[2];

        WindowManager w = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        Display d = w.getDefaultDisplay();
        DisplayMetrics metrics = new DisplayMetrics();
        d.getMetrics(metrics);

        
        int widthPixels = metrics.widthPixels;
        int heightPixels = metrics.heightPixels;
        
        if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 17) {
            try {
                widthPixels = (Integer) Display.class.getMethod(
                        "getRawWidth").invoke(d);
                heightPixels = (Integer) Display.class.getMethod(
                        "getRawHeight").invoke(d);
            } catch (Exception ignored) {
            }
        } else if (Build.VERSION.SDK_INT >= 17) {
            Point realSize = new Point();
            d.getRealSize(realSize);
            widthPixels = realSize.x;
            heightPixels = realSize.y;
        }

        size[0] = widthPixels;
        size[1] = heightPixels;
        return size;
    }
}

 
继续阅读
编程十万个怎么办