文档章节

手机设备信息

t_yapeng
 t_yapeng
发布于 2017/05/05 13:25
字数 691
阅读 9
收藏 0
点赞 0
评论 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
博文 101
码字总数 29446
作品 0
Android工程师
adb devices指令实例讲解

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

fish_yy ⋅ 2016/04/09 ⋅ 0

Android开发人员不得不收集的代码

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

Jamsm ⋅ 2016/08/04 ⋅ 0

网络身份验证系统--OneID

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

匿名 ⋅ 2012/03/24 ⋅ 0

Ubuntu下Android手机通过USB连接PC方法

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

dgc0221 ⋅ 2012/08/15 ⋅ 8

手机远程控制家电-分布式架构

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

liaoshiyong ⋅ 2014/04/02 ⋅ 2

疯狂ios讲义之使用CoreLocation定位(1)

9.1 iOS的定位支持 iOS设备支持的定位方式有多种,最早期的iPhone只支持通过运营商的基站信号进行定位,后来iOS系统开始引入WiFi支持,从而允许iOS设备通过周围的WiFi信号进行定位。 从iPhon...

博文视点 ⋅ 2014/04/02 ⋅ 1

物联网跨平台应用开发

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

yueqian_scut ⋅ 2017/03/08 ⋅ 0

Facebook再曝数据丑闻,公司处境雪上加霜

  据纽约时报杂志上周日透露,Facebook公司曾经在十年前与包括苹果,亚马逊,微软和黑莓手机在内的手机制造商们进行过一项交易,该交易的内容主要是允许设备制造商们访问提取在该手机上登陆...

DeepTech深科技 ⋅ 06/08 ⋅ 0

android同蓝牙串口模块连接的断开

我目前在做一个android手机连接蓝牙串口设备的程序。通过api连接上蓝牙串口设备后,正常与蓝牙串口设备断开出了问题。手机这边根据通讯协议发送给了蓝牙串口设备一个“F0”的消息表示断开,串...

ASHE_DEMA ⋅ 2015/05/30 ⋅ 0

360 安卓系统安全报告:超九成设备存在远程攻击漏洞

对于广大安卓用户来说,平时更为关注的可能是手机的外观和性价比,往往会忽视手机的安全性能,更难意识到原来老旧的手机系统其实是有着许多隐藏漏洞的。那么这些漏洞到底有哪些危害方式,又会...

局长 ⋅ 02/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

容器之重命名镜像

使用docker tag命令来重命名镜像名称,先执行help,查看如何使用如下 mjduan@mjduandeMacBook-Pro:~/Docker % docker tag --helpUsage:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TA...

汉斯-冯-拉特 ⋅ 24分钟前 ⋅ 0

with 的高级用法

那么 上下文管理器 又是什么呢? 上下文管理器协议包含 __enter__ 和 __exit__ 两个方法。with 语句开始运行时,会在上下文管理器对象上调用 __enter__ 方法。with 语句运行结束后,会在上下...

阿豪boy ⋅ 44分钟前 ⋅ 0

使用 jsoup 模拟登录 urp 教务系统

需要的 jsoup 相关 jar包:https://www.lanzous.com/i1abckj 1、首先打开教务系统的登录页面,F12 开启浏览器调试,注意一下 Request Headers 一栏的 Cookie 选项,我们一会需要拿这个 Cook...

大灰狼时间 ⋅ 44分钟前 ⋅ 0

关于线程的创建

转自自己的笔记: http://note.youdao.com/noteshare?id=87584d4874acdeaf4aa027bdc9cb7324&sub=B49E8956E145476191C3FD1E4AB40DFA 1.创建线程的方法 Java使用Thread类代表线程,所有的线程对......

MarinJ_Shao ⋅ 55分钟前 ⋅ 0

工厂模式学习

1. 参考资料 工厂模式-伯乐在线 三种工厂-思否 深入理解工厂模式 2. 知识点理解 2.1 java三种工厂 简单工厂 工厂模式 抽象工厂 2.2 异同点 逐级复杂 简单工厂通过构造时传入的标识来生产产品...

liuyan_lc ⋅ 今天 ⋅ 0

Java NIO

1.目录 Java IO的历史 Java NIO之Channel Java NIO之Buffer Java NIO之Selector Java NIO之文件处理 Java NIO之Charset Java 可扩展IO 2.简介 “IO的历史”讲述了Java IO API从开始到现在的发...

士别三日 ⋅ 今天 ⋅ 0

[Err] ORA-24344: success with compilation error

从txt文本复制出创建function的脚本,直接执行,然后报错:[Err] ORA-24344: success with compilation error。 突然发现脚本的关键字,居然不是高亮显示。 然后我把脚本前面的空格去掉,执行...

wenzhizhon ⋅ 今天 ⋅ 0

Spring Security授权过程

前言 本文是接上一章Spring Security认证过程进一步分析Spring Security用户名密码登录授权是如何实现得; 类图 调试过程 使用debug方式启动https://github.com/longfeizheng/logback该项目,...

hutaishi ⋅ 今天 ⋅ 0

HAProxy基于KeepAlived实现Web高可用及动静分离

前言 软件负载均衡一般通过两种方式来实现: 基于操作系统的软负载实现 基于第三方应用的软负载实现 LVS是基于Linux操作系统实现的一种软负载,而HAProxy则是基于第三方应用实现的软负载。 ...

寰宇01 ⋅ 今天 ⋅ 0

微软自研处理器的小动作:已经开始移植其他平台的工具链

微软将 Windows 10 、Linux 以及工具链如 C/C++ 和 .NET Core 运行时库、Visual C++ 2017 命令行工具、RyuJIT 编辑器等移植到其自主研发的处理器架构 E2。微软还移植了广泛使用的 LLVM C/C++...

linux-tao ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部