文档章节

手机设备信息

t_yapeng
 t_yapeng
发布于 2017/05/05 13:25
字数 691
阅读 9
收藏 0
<“寸”是中国传统长度单位,1丈 = 10尺 = 100寸,其中1寸 = 3.33厘米
“英寸”是英联邦使用的长度单位,1码 = 3英尺 = 36英寸,其中1英寸 = 2.54厘米>
屏幕大小 指的是对角线的长度,单位为英寸
屏幕分辨率 指的是屏幕上长宽的像素点数 例如 720 * 1280
density屏幕密度
<ppi/dpi (pixels/dot per inch)>(设备对角线上像素点的个数chu屏幕大小)

HVGA屏下一个像素点的大小是一定固定的值xxx英寸,此时 1 dp = 1 px
for example:

public int getPixel (int x, int y)   返回指定位置的像素颜色值
    public final int getWidth()          获取位图的宽度(像素点个数)

    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    public static int dip2px(float dpValue) {
        final float scale = getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    其中 desity = DENSITY_DEVICE / (float) DENSITY_DEFAULT;  DENSITY_DEFAULT = 160
    在此设备上1dp用多少像素点表示
    系统加载图片时会优先从与设备屏幕密度相同的图片资源文件中查找,如果没有去更高密度文件夹<图片会变小>,
    还找不到则去低密度查找<图片会变大>。
// 获取屏幕的宽高

    DisplayMetrics metric = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
    scaledDensity = metric.scaledDensity;
    if (metric.heightPixels >= metric.widthPixels) {
        screenWidthForPortrait = metric.widthPixels;
        screenHeightForPortrait = metric.heightPixels;
    } else {
        screenWidthForPortrait = metric.heightPixels;
        screenHeightForPortrait = metric.widthPixels;
    }

    获取设备的IP地址
    public String GetHostIp() {
        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface
                    .getNetworkInterfaces(); en.hasMoreElements(); ) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf
                        .getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()
                            && InetAddressUtils.isIPv4Address(inetAddress
                            .getHostAddress())) {
                        if (!inetAddress.getHostAddress().toString()
                                .equals("null")
                                && inetAddress.getHostAddress() != null) {
                            return inetAddress.getHostAddress().toString().trim();
                        }
                    }
                }
            }
        } catch (SocketException ex) {
            Log.e("WifiPreference IpAddress", ex.toString());
        }
        return "";
    }

    Build相关属性和调用系统信息的方法
    一、Build类的作用主要是获取系统信息,他有两个嵌套类:
    Build.BOARD // 主板   
    Build.BRAND // Android系统定制商   
    Build.CPU_ABI // cpu指令集   
    Build.DEVICE // 设备参数   
    Build.DISPLAY // 显示屏参数   
    Build.FINGERPRINT // 硬件名称   
    Build.HOST  //
    Build.ID // 修订版本列表   
    Build.MANUFACTURER // 硬件制造商   
    Build.MODEL // 版本   
    Build.PRODUCT // 手机制造商   
    Build.TAGS // 描述build的标签   
    Build.TIME  //时间
    Build.TYPE // builder类型   
    Build.USER  //用户

    ① Build.VERSION      获取android系统的版本信息。

    当前开发代号   Build.VERSION.CODENAME
    源码控制版本号   Build.VERSION.INCREMENTAL
    版本字符串   Build.VERSION.RELEASE
    版本号   Build.VERSION.SDK

    版本号   Build.VERSION.SDK_INT
    ② Build.VERSION_CODES 这个类封装了已经存在的SDK框架及android版本。

    ECLAIR_0_1 December 2009: Android 2.0.1
    ECLAIR_MR1 January 2010: Android 2.1
    FROYO June 2010: Android 2.2
    GINGERBREAD November 2010: Android 2.3
    GINGERBREAD_MR1 February 2011: Android 2.3.3.
    HONEYCOMB February 2011: Android 3.0.
    HONEYCOMB_MR1 May 2011: Android 3.1.
    HONEYCOMB_MR2 June 2011: Android 3.2.
    ICE_CREAM_SANDWICH Android 4.0.

    二、关于在获取系统信息的使用
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)对比应用的版本与平台的版本做相应的处理。
    @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)这个语句在程序中指出应用的版本。

    getRadioVersion方法可以根据以上属性获取系统信息。


    获取 imei

    String imeiId = ((TelephonyManager)

            context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();

    获取 user_agent

    WebSettings.getDefaultUserAgent(context)

© 著作权归作者所有

共有 人打赏支持
上一篇: APP卡顿
t_yapeng
粉丝 4
博文 105
码字总数 30194
作品 0
Android工程师
私信 提问
adb devices指令实例讲解

在讲这个指令之前,我首先启动了一个名称为“GalaxyNexus4.4.2”的手机模拟器(有时我们也管其叫安卓虚拟设备),并且通过USB数据线将我的手机设备和PC进行了连接,而后我应用“Android Scr...

fish_yy
2016/04/09
0
0
手机远程控制家电-分布式架构

目前的需求是:我能够在美国可以控制中国的家电,在中国同样也可以控制美国的家电 我会给客户那边一个服务器的地址,然后客户那边配置到设备里面去,设备会自动去找服务器进行连接,这是个长...

liaoshiyong
2014/04/02
401
2
物联网跨平台应用开发

本文由嵌入式企鹅圈原创团队成员Hunter_Zhu提供。 基于H5进行跨平台应用开发是未来的趋势,其具有跨平台兼容、开发门槛低、运维难度低等优势。phonegap、Dcloud等平台已经实现了很多的应用案...

yueqian_scut
2017/03/08
0
0
Windows Phone 设备信息

在进行Windows Phone开发的过程中,我们会需要获取手机的一些相关信息,如下列出如何获取手机的一些常用信息。 一.设备屏幕信息 double width = Application.Current.Host.Content.ActualWi...

junwong
2012/03/05
267
0
Android开发人员不得不收集的代码

dp与px转换 sp与px转换 各种单位转换 在onCreate()即可强行获取View的尺寸 ListView中提前测量View尺寸 设备相关 获取设备MAC地址 获取设备厂商,如Xiaomi 获取设备型号,如MI2SC 获取设备S...

Jamsm
2016/08/04
136
0

没有更多内容

加载失败,请刷新页面

加载更多

防御CSRF攻击

跨站请求伪造(CSRF)是一种安全漏洞,攻击者利用受害者的 session 来通过受害者的浏览器发出请求。攻击者通过受害者的浏览器发送请求,并伪造成是受害者自己发出的请求。 建议你先熟悉CSRF,...

Landas
18分钟前
0
0
【双12首发】终于等来了!PhalApi-iView-admin 开源后台框架

PhalApi-iView-admin 开源后台框架 码云地址:https://gitee.com/dogstar/phalapi-iview-admin Github地址:https://github.com/phalapi/phalapi-iview-admin 主要采用的技术: PhalApi 开源......

暗夜在火星
18分钟前
0
0
JavaScript面试题大坑之隐式类型转换实例代码

1.1-隐式转换介绍 在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算 这种无需程序员手...

peakedness丶
20分钟前
0
0
示例vue 的keep-alive缓存功能的实现

本篇文章主要介绍了vue 的keep-alive缓存功能的实现,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 #Vue 实现组件信息的缓存 当...

前端攻城老湿
22分钟前
0
0
解析Vue.js中的computed工作原理

我们通过实现一个简单版的和Vue中computed具有相同功能的函数来了解computed是如何工作的。写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批...

前端攻城小牛
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部