文档章节

Android进阶学习-查看系统信息(系统照妖镜)

August1996_
 August1996_
发布于 2016/05/26 15:28
字数 554
阅读 15
收藏 0

实例图片:

现在好多系统防护软件都自带一个查看系统信息的功能,一堆繁琐的信息究竟是怎么获得的呢?

其实,Android系统提供了两种方法来给我们获取系统信息:

①android.os.Build    //包含了 系统编译时的大量设备 配置信息

②SystemProperty //包含了许多系统配置属性值和参数

 

那么问题来了,怎么用?对于android.os.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

接下来就是SystemProperty的用法啦,也很简单,通过键值对来获取:

System.getProperty("java.version");

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/result"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="SystemProperty" />
    </LinearLayout>

</LinearLayout>

Activity代码:

package com.example.customview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class SystemActivity extends Activity implements OnItemSelectedListener, OnClickListener {
	Spinner					spinner1;
	Spinner					spinner2;
	TextView				result;
							
	String[]				mDatas1	= new String[] { android.os.Build.BOARD, android.os.Build.BOOTLOADER,
			android.os.Build.BRAND, android.os.Build.CPU_ABI, android.os.Build.CPU_ABI2, android.os.Build.DEVICE,
			android.os.Build.DISPLAY, android.os.Build.FINGERPRINT, android.os.Build.HARDWARE, android.os.Build.HOST,
			android.os.Build.ID, android.os.Build.MANUFACTURER, android.os.Build.MODEL, android.os.Build.PRODUCT,
			android.os.Build.RADIO, android.os.Build.SERIAL, android.os.Build.TAGS, android.os.Build.TYPE,
			android.os.Build.USER, };
			
	String[]				mDatas2	= new String[] { "java.version", "java.vendor", "java.vendor.url", "java.home",
			"java.vm.specification.version", "java.vm.specification.vendor", "java.vm.specification.name",
			"java.vm.version", "java.vm.vendor", "java.vm.name", "java.specification.version",
			"java.specification.vendor", "java.specification.name", "java.class.version", "java.class.path",
			"java.library.path", "java.io.tmpdir", "java.compiler", "java.ext.dirs", "os.name", "os.arch", "os.version",
			"file.separator", "path.separator", "line.separator", "user.name", "user.home", "user.dir", };
	ArrayAdapter<String>	mAdapter1;
	ArrayAdapter<String>	mAdapter2;
							
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_system);
		spinner1 = (Spinner) findViewById(R.id.spinner1);
		spinner2 = (Spinner) findViewById(R.id.spinner2);
		result = (TextView) findViewById(R.id.result);
		findViewById(R.id.btn1).setOnClickListener(this);
		mAdapter1 = new ArrayAdapter<String>(SystemActivity.this, android.R.layout.simple_dropdown_item_1line, mDatas1);
		mAdapter2 = new ArrayAdapter<String>(SystemActivity.this, android.R.layout.simple_dropdown_item_1line, mDatas2);
		spinner1.setAdapter(mAdapter1);
		spinner2.setAdapter(mAdapter2);
		spinner1.setOnItemSelectedListener(this);
		spinner2.setOnItemSelectedListener(this);
	}
	
	@Override
	public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
		if (arg0.getId() == R.id.spinner2) {
			result.setText(System.getProperty(mDatas2[arg2]));
		} else if (arg0.getId() == R.id.spinner2) {
		
		}
	}
	
	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
	
	}
	
	@Override
	public void onClick(View v) {
		if (v.getId() == R.id.btn1) {
			result.setText("");
			for (int i = 0; i < mDatas2.length; i++) {
				result.setText(result.getText().toString() + "\n" + mDatas2[i] + ":" + System.getProperty(mDatas2[i]));
			}
		}
	}
	
}

 

© 著作权归作者所有

August1996_
粉丝 2
博文 51
码字总数 29055
作品 0
湛江
程序员
私信 提问
Android进阶二部曲第二部《Android进阶解密》已出版

Android进阶二部曲第一部《Android进阶之光》介绍 :点击这里 本书源码地址:https://github.com/henrymorgen/android-advanced-decode 为什么写这本书 Android进阶二部曲包括《Android进阶之...

刘望舒
2018/10/23
0
0
破解Android进阶奥秘!《Android进阶解密》已出版

Android进阶二部曲第一部《Android进阶之光》介绍 :点击这里 本书源码地址:github.com/henrymorgen… 为什么写这本书 Android进阶二部曲包括《Android进阶之光》和本书,因此写这本书的原因...

刘望舒
2018/10/23
0
0
Android AOSP基础(四)Source Insight和Android Studio导入系统源码

本文首发于微信公众号「刘望舒」 相关系列文章 Android系统启动系列 应用进程启动系列 Android深入四大组件系列 Android深入理解Context系列 Android深入理解JNI系列 Android解析WindowManag...

刘望舒
05/15
0
0
Android AOSP基础(一)趁周末用VirtualBox 安装 Ubuntu吧

本文首发于微信公众号「刘望舒」 相关系列文章 Android系统启动系列 应用进程启动系列 Android深入四大组件系列 Android深入理解Context系列 Android深入理解JNI系列 Android解析WindowManag...

刘望舒
05/15
0
0
Android AOSP基础(二)是时候下载Android9.0源码了

本文首发于微信公众号「刘望舒」 相关系列文章 Android系统启动系列 应用进程启动系列 Android深入四大组件系列 Android深入理解Context系列 Android深入理解JNI系列 Android解析WindowManag...

刘望舒
05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

秒杀系统思路

业务分析 技术挑战 请求响应要快:无论成功失败,需要尽快返回给用户 架构设计   前端:静态化   站点层:限制请求数   服务层:乐观锁写缓存   数据库CAP:读写高可用,一致性,扩容...

雷开你的门
8分钟前
6
0
最全的教育行业大数据解决方案,个个针对痛点

大数据的悄然兴起也带动了教育行业的革新,移动教育、云课堂等的出现,使得教育行业再次成为了可以中长期保持高景气的行业。然而,初涉数据领域的教育行业同时也面临着相当大的难题,还需要更...

朕想上头条
12分钟前
4
0
预约模块设计分析

1.预约功能描述: 预约是小程序中常见的一种商品管理系统,商家可根据商品或服务的特性,灵活设置预约细节,为用户提供线上预约服务,如场地预约,商品预定等,实现高效经营。 预约场景: ...

鱼煎
16分钟前
3
0
阿里云日志服务构建网站实时分析大盘实战

场景分析 挖掘数据价值是当前企业级网站共同面临的问题。买买网是一个电商平台网站,每天拥有大量的用户访问和购买记录。为了引导用户直接消费,提升购买率和转化率,不同的用户类别需要推荐...

阿里云官方博客
17分钟前
2
0
TL665xF-EasyEVM开发板硬件处理器、NAND FLASH、RAM

广州创龙结合TI KeyStone系列多核架构TMS320C665x及Xilinx Artix-7系列FPGA设计的TL665xF-EasyEVM开发板是一款DSP+FPGA高速大数据采集处理平台,其底板采用沉金无铅工艺的6层板设计,适用于高...

Tronlong创龙
20分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部