[Android]如何获取设备真实尺寸

很多人都知道使用WindowManager.getDefaultDisplay.getDisplayMetrics(DisplayMetrics met)方法来获取屏幕宽度,但是这样其实是不一定准确的,因为有时候,会有小窗口(Virtual Display的存在)。

这样的话,我们就需要找出所有Display中尺寸最大的,把它当做设备的真实尺寸(可能会有比真实尺寸更大的Display,没具体确认过,这种情况本方法就不适用了)

代码如下:

    private static Point getPhysicalScreenSize(Context context){
        Point p = new Point();
        DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
        Display[] displays = dm.getDisplays();
        int maxWidth = -1, maxHeight = -1;
        DisplayMetrics met = new DisplayMetrics();
        for(Display d : displays){
            d.getMetrics(met);
            maxWidth = met.widthPixels > maxWidth ? met.widthPixels : maxWidth;
            maxHeight = met.heightPixels > maxHeight ? met.heightPixels : maxHeight;
        }
        p.x = maxWidth;
        p.y = maxHeight;
        return p;
    }
时间: 2024-10-27 05:46:47

[Android]如何获取设备真实尺寸的相关文章

Android上获取设备的信息

http://www.cnblogs.com/chenyingzhong/archive/2011/07/26/2117259.html Android上获取设备的信息,布布扣,bubuko.com

Android下获取设备唯一标识(UDID, DeviceID...)

android下获取设备唯一标识原本非常简单(至少不会像iOS一样禁用这个,禁用那个),但是由于设备的多样性需要考虑的东西也对应复杂起来. 先附上完整代码 [java] view plaincopy protected static final String PREFS_FILE = "gank_device_id.xml"; protected static final String PREFS_DEVICE_ID = "gank_device_id"; prot

Android:获取设备的mac地址可靠的方法

/** * 获取设备的mac地址 * * @param ac * @param callback * 成功获取到mac地址之后会回调此方法 */ public static void getMacAddress(final Activity ac, final SimpleCallback callback) { final WifiManager wm = (WifiManager) ac .getSystemService(Service.WIFI_SERVICE); // 如果本次开机后打

Android获取设备采用的时间制式(12小时制式或24小时制式)

/** * 获取设备采用的时间制式(12小时制式或者24小时制式) * 注意: * 在模拟器上获取的时间制式为空 */ private void getTime_12_24(Context context){ ContentResolver contentResolver = context.getContentResolver(); String time_12_24 = Settings.System.getString(contentResolver,Settings.System.TIM

android获取设备信息

public class DeviceInfo { private static Application APP = null; private static String sd_card = Environment.getExternalStorageDirectory()+File.separator+"wlcache"; public static Application getApp() { return APP; } // 获取手机型号 public static Strin

android 获取设备中已启动的服务并判断某一服务是否启动

我们常常在开发的时候,通过获取系统已启动的服务来判断该服务器是否还需要再启动. 而本文将介绍android设备中已启动的服务,并判断某一服务是启动 1.根据ACTIVITY_SERVICE获取系统服务 activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 2.获取系统中正在运行的服务 runningList = activityManager.getRunningServices(30);//代表我们希望返

Android 获取设备信息 异常

/**获取设备信息 * @param c * @return */ public static void setDeviceInfo(Context c,RequestParams params){ TelephonyManager tm = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE); if(tm!=null){ try{ params.add("deviceId", tm.getDeviceId(

Android USB API获取设备信息失败问题

在华为荣耀的盒子验证openni的程序,发现orbbec的3d摄像头一直无法使用,一直卡在 设备找不到的提示. 开始从下面2个方面验证:1.验证openni的本身自带的SimpleRead程序,看看是否正常读取到设备信息和depth 图.2.验证Android层usb权限控制问题. 经过验证发现openni自带的c++的可执行程序,可以正常读取到设备信息和depth 图.由此推测 orbbec 3d的驱动和openni的这块部分没有什么问题.问题可能出在Android层的usb权限和获取设备信息

Android获取定位权限,获取设备所在的经纬度

转载请标明出处:http://www.cnblogs.com/tangZH/p/8969898.html  前言: 有时候我们仅仅是想要获取设备所在的经纬度,那么直接调用Android相关的api就可以了,不需要去接入高德地图或者谷歌地图等等. 一.获取定位服务 private LocationManager locationManager; locationManager = (LocationManager) mContext.getSystemService(Context.LOCATIO