文档章节

手机设备信息

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)

© 著作权归作者所有

共有 人打赏支持
t_yapeng
粉丝 3
博文 105
码字总数 30194
作品 0
Android工程师
adb devices指令实例讲解

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

fish_yy
2016/04/09
0
0
Android开发人员不得不收集的代码

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

Jamsm
2016/08/04
136
0
Ubuntu下Android手机通过USB连接PC方法

在windows下,Android手机连接PC非常简单,但是当我切换到ubuntu下时,发现Target列表中出现一行“????? N/A unknown ”类似这样一行的内容,说明PC无法正确识别手机,通过查找相关资料...

dgc0221
2012/08/15
0
8
网络身份验证系统--OneID

还在为登录各大网站要输入用户名和密码而烦恼?还在担心自己用户名、密码,以及支付账号等私人信息泄漏?OneID试图为你创建一个多设备的验证系统,从而一劳永逸的解决这些问题。 基于一种高级...

匿名
2012/03/24
4.7K
0
手机远程控制家电-分布式架构

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

liaoshiyong
2014/04/02
384
2

没有更多内容

加载失败,请刷新页面

加载更多

Swagger中配置了@ApiModelProperty的allowableValues属性但不显示的问题

现在用Swagger来生成API文档的例子已经非常多了,今天碰到开发同事问了一个问题,帮着看了一下,主要还是配置方法的问题,所以记录一下。如果您也碰到了同样的问题,希望本文对您有用。 问题...

程序猿DD
21分钟前
1
0
sql 命令

show variables like '%general%'; show variables like '%log_output%'; show variables like '%quer%'; show global status like '%slow%';...

JavaSon712
29分钟前
0
0
Django修改默认数据库引擎

Django默认数据库引擎为sqlite3,除了sqlite3,还支持postgresql、mysql、oracle 配置如下:其中postgresql_psycopg2为postgresql的适配器。 'django.db.backends.postgresql' 'django.db.bac......

MichaelShu
34分钟前
0
0
动画源码解析

目录介绍 1.Animation和Animator区别 2.Animation运行原理和源码分析 2.1 基本属性介绍 2.2 如何计算动画数据 2.3 什么是动画更新函数 2.4 动画数据如何存储 2.5 Animation的调用 3.Animator...

潇湘剑雨
40分钟前
2
0
Mac OS 最强鼠标改键软件:BetterAndBetter

官网: http://www.better365.cn 话不多说,先上你们最喜欢的软件界面截图。 通用: 触摸板: 鼠标: 键盘: 情景模式: 文本跳窗(自动跳窗): 四角触发: 工具箱: 脚本: 关于: 说下我目...

故国有明
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部