- 浏览: 443825 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
supertangcugu:
文中有个错误,SoftReference是软引用,Strong ...
WeakReference与SoftReference -
somefuture:
我每次走到movie.draw(canvas,0, 0); ...
利用Movie播放GIF -
鞠文婷:
徐颖慧 写道为什么打不开啊?额 果然打不开了。。
50个Android开发人员必备UI效果源码[转载] -
徐颖慧:
为什么打不开啊?
50个Android开发人员必备UI效果源码[转载] -
李白625:
为什么打不开啊
50个Android开发人员必备UI效果源码[转载]
可以读取手机的cpu 内存 键盘类型 导航方式 以及安装的软件列表等
附带流量查询方法
这个方法对手机的负荷较大 可以考虑放在后台执行
public class PhoneInfoUtil {
Context context;
PhoneInfo pInfo;
WindowManager wm;
Activity activity;
final public String DEV_FILE = "/proc/self/net/dev";// 系统流量文件
final String GPRSLINE = "rmnet0";
String[] gprsdata = { "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0" };
public PhoneInfoUtil(Activity activity,PhoneInfo pinfo){
this.context=activity.getApplicationContext();
this.wm=activity.getWindowManager();
this.activity=activity;
fetch_info(pinfo);//linux方式获得
fetch_tel_status(pinfo);//android API方式获得
}
/**
* linux版本 cpu信息 mem信息
* @param pInfo
*/
public void fetch_info(PhoneInfo pInfo) {
String linuxInfo = null;
String memInfo = null;
String cpuInfo = null;
CMDExecute cmdexe = new CMDExecute ( );
try {
String[ ] linuxargs = {"/system/bin/cat", "/proc/version" };
linuxInfo = cmdexe.run(linuxargs, "system/bin/");
String[] cpuargs = {"/system/bin/cat", "/proc/cpuinfo"};
cpuInfo = cmdexe.run(cpuargs, "/system/bin/");
String[] memargs = {"/system/bin/cat", "/proc/meminfo"};
memInfo = cmdexe.run(cpuargs, "/system/bin/");
} catch (IOException ex) {
ex.printStackTrace( );
}
pInfo.setLinuxInfo(linuxInfo);
pInfo.setCpuInfo(cpuInfo);
pInfo.setMemInfo(memInfo);
}
public void fetch_tel_status(PhoneInfo pInfo) {
String result = null;
String networktype = null;
String phoneType = null;
String keyType = null;
String navigationType = null;
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);//
String str = " ";
//串号IMEI
pInfo.setIMEI(tm.getDeviceId());
//串号版本
pInfo.setIMEI_ver(tm.getDeviceSoftwareVersion());
//联网类型
switch(tm.getNetworkType()){
case TelephonyManager.NETWORK_TYPE_EDGE:
networktype="EDGE";break;
case TelephonyManager.NETWORK_TYPE_GPRS:
networktype="GPRS";
case TelephonyManager.NETWORK_TYPE_UMTS:
networktype="UMTS";
default :
networktype="UNKNOWN";break;
}
pInfo.setNetworktype(networktype);
//手机网络类型
switch(tm.getPhoneType()){
case TelephonyManager.PHONE_TYPE_GSM:
phoneType="GSM";break;
case TelephonyManager.PHONE_TYPE_NONE:
phoneType="NONE";break;
default:
phoneType="UNKNOWN";break;
}
pInfo.setPhoneType(phoneType);
//键盘类型
switch(context.getResources().getConfiguration().keyboard){
case 0:
keyType="KEYBOARD_UNDEFINED";break;
case 1:
keyType="KEYBOARD_NOKEYS";break;
case 2:
keyType="KEYBOARD_QWERTY";break;
case 3:
keyType="KEYBOARD_12KEY";break;
}
pInfo.setKeyType(keyType);
//导航方式
switch(context.getResources().getConfiguration().navigation){
case 0:
navigationType="NAVIGATION_UNDEFINED";break;
case 1:
navigationType="NAVIGATION_NONAV";break;
case 2:
navigationType="NAVIGATION_DPAD";break;
case 3:
navigationType="NAVIGATION_TRACKBALL";break;
}
pInfo.setNavigationType(navigationType);
//系统版本
int version = 0;
try{
version = Integer.valueOf(android.os.Build.VERSION.SDK);
}catch(NumberFormatException e){
e.printStackTrace();
}
switch(version){
case 1:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"1.0");break;
case 2:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"1.1");break;
case 3:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"1.5");break;
case 4:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"1.6");break;
case 5:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.0");break;
case 6:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.0.1");break;
case 7:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.1");break;
case 8:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.2");break;
case 9:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.3");break;
case 10:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.3.3");break;
case 11:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"3.0");break;
}
//屏幕信息 包括密度 分辨率
DisplayMetrics dm=new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
String screenInfo="density = "+dm.density;
screenInfo+=" heightPixels = "+dm.heightPixels;
screenInfo+=" widthPixels = "+dm.widthPixels;
pInfo.setScreenInfo(screenInfo);
//获取手机内安装的应用列表
String appsInfo="";
for(int i=0;i<activity.getPackageManager().getInstalledApplications(0).size();i++){
ApplicationInfo info=(ApplicationInfo) activity.getPackageManager().getInstalledApplications(0).get(i);
if(info.packageName.equals("com.android")||info.packageName.equals("com.android")){
}
else{
appsInfo+=info.className+",";
}
}
pInfo.setAppsInfo(appsInfo);
}
/**
* linux命令的执行封装类
* @author chaos
*
*/
class CMDExecute {
public synchronized String run(String [] cmd, String workdirectory) throws IOException {
String result = "";
try {
ProcessBuilder builder = new ProcessBuilder(cmd);
InputStream in = null;
//设置一个路径
if (workdirectory != null) {
builder.directory(new File(workdirectory));
builder.redirectErrorStream(true);
Process process = builder.start();
in = process.getInputStream();
byte[] re = new byte[1024];
while (in.read(re) != -1)
result = result + new String(re);
}
if (in != null) {
in.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
}
/**
* 统计GPRS流量
* 注1:还可以统计wifi usb流量 注2:关机后该文件内容清空
* @return
*/
public long countGPRS()
{
FileReader fstream = null;
try {
fstream = new FileReader(DEV_FILE);
}
catch (FileNotFoundException e) {
}
BufferedReader in = new BufferedReader(fstream, 500);
String line;
String[] segs;
String[] netdata;
int k;
int j;
try {
while ((line = in.readLine()) != null) {
segs = line.trim().split(":");
if (line.startsWith(GPRSLINE))
{
netdata = segs[1].trim().split(" ");
for (k = 0, j = 0; k < netdata.length; k++)
{
if (netdata[k].length() > 0)
{
gprsdata[j] = netdata[k];
j++;
}
}
}
}
fstream.close();
}
catch (IOException e) {
}
long result = +Long.parseLong(gprsdata[0])+Long.parseLong(gprsdata[1])+Long.parseLong(gprsdata[8])+Long.parseLong(gprsdata[9]);
return result;
}
}
附带流量查询方法
这个方法对手机的负荷较大 可以考虑放在后台执行
引用
public class PhoneInfoUtil {
Context context;
PhoneInfo pInfo;
WindowManager wm;
Activity activity;
final public String DEV_FILE = "/proc/self/net/dev";// 系统流量文件
final String GPRSLINE = "rmnet0";
String[] gprsdata = { "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0" };
public PhoneInfoUtil(Activity activity,PhoneInfo pinfo){
this.context=activity.getApplicationContext();
this.wm=activity.getWindowManager();
this.activity=activity;
fetch_info(pinfo);//linux方式获得
fetch_tel_status(pinfo);//android API方式获得
}
/**
* linux版本 cpu信息 mem信息
* @param pInfo
*/
public void fetch_info(PhoneInfo pInfo) {
String linuxInfo = null;
String memInfo = null;
String cpuInfo = null;
CMDExecute cmdexe = new CMDExecute ( );
try {
String[ ] linuxargs = {"/system/bin/cat", "/proc/version" };
linuxInfo = cmdexe.run(linuxargs, "system/bin/");
String[] cpuargs = {"/system/bin/cat", "/proc/cpuinfo"};
cpuInfo = cmdexe.run(cpuargs, "/system/bin/");
String[] memargs = {"/system/bin/cat", "/proc/meminfo"};
memInfo = cmdexe.run(cpuargs, "/system/bin/");
} catch (IOException ex) {
ex.printStackTrace( );
}
pInfo.setLinuxInfo(linuxInfo);
pInfo.setCpuInfo(cpuInfo);
pInfo.setMemInfo(memInfo);
}
public void fetch_tel_status(PhoneInfo pInfo) {
String result = null;
String networktype = null;
String phoneType = null;
String keyType = null;
String navigationType = null;
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);//
String str = " ";
//串号IMEI
pInfo.setIMEI(tm.getDeviceId());
//串号版本
pInfo.setIMEI_ver(tm.getDeviceSoftwareVersion());
//联网类型
switch(tm.getNetworkType()){
case TelephonyManager.NETWORK_TYPE_EDGE:
networktype="EDGE";break;
case TelephonyManager.NETWORK_TYPE_GPRS:
networktype="GPRS";
case TelephonyManager.NETWORK_TYPE_UMTS:
networktype="UMTS";
default :
networktype="UNKNOWN";break;
}
pInfo.setNetworktype(networktype);
//手机网络类型
switch(tm.getPhoneType()){
case TelephonyManager.PHONE_TYPE_GSM:
phoneType="GSM";break;
case TelephonyManager.PHONE_TYPE_NONE:
phoneType="NONE";break;
default:
phoneType="UNKNOWN";break;
}
pInfo.setPhoneType(phoneType);
//键盘类型
switch(context.getResources().getConfiguration().keyboard){
case 0:
keyType="KEYBOARD_UNDEFINED";break;
case 1:
keyType="KEYBOARD_NOKEYS";break;
case 2:
keyType="KEYBOARD_QWERTY";break;
case 3:
keyType="KEYBOARD_12KEY";break;
}
pInfo.setKeyType(keyType);
//导航方式
switch(context.getResources().getConfiguration().navigation){
case 0:
navigationType="NAVIGATION_UNDEFINED";break;
case 1:
navigationType="NAVIGATION_NONAV";break;
case 2:
navigationType="NAVIGATION_DPAD";break;
case 3:
navigationType="NAVIGATION_TRACKBALL";break;
}
pInfo.setNavigationType(navigationType);
//系统版本
int version = 0;
try{
version = Integer.valueOf(android.os.Build.VERSION.SDK);
}catch(NumberFormatException e){
e.printStackTrace();
}
switch(version){
case 1:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"1.0");break;
case 2:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"1.1");break;
case 3:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"1.5");break;
case 4:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"1.6");break;
case 5:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.0");break;
case 6:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.0.1");break;
case 7:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.1");break;
case 8:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.2");break;
case 9:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.3");break;
case 10:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"2.3.3");break;
case 11:
pInfo.setSystemInfo(android.os.Build.MODEL+" : "+"3.0");break;
}
//屏幕信息 包括密度 分辨率
DisplayMetrics dm=new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
String screenInfo="density = "+dm.density;
screenInfo+=" heightPixels = "+dm.heightPixels;
screenInfo+=" widthPixels = "+dm.widthPixels;
pInfo.setScreenInfo(screenInfo);
//获取手机内安装的应用列表
String appsInfo="";
for(int i=0;i<activity.getPackageManager().getInstalledApplications(0).size();i++){
ApplicationInfo info=(ApplicationInfo) activity.getPackageManager().getInstalledApplications(0).get(i);
if(info.packageName.equals("com.android")||info.packageName.equals("com.android")){
}
else{
appsInfo+=info.className+",";
}
}
pInfo.setAppsInfo(appsInfo);
}
/**
* linux命令的执行封装类
* @author chaos
*
*/
class CMDExecute {
public synchronized String run(String [] cmd, String workdirectory) throws IOException {
String result = "";
try {
ProcessBuilder builder = new ProcessBuilder(cmd);
InputStream in = null;
//设置一个路径
if (workdirectory != null) {
builder.directory(new File(workdirectory));
builder.redirectErrorStream(true);
Process process = builder.start();
in = process.getInputStream();
byte[] re = new byte[1024];
while (in.read(re) != -1)
result = result + new String(re);
}
if (in != null) {
in.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
}
/**
* 统计GPRS流量
* 注1:还可以统计wifi usb流量 注2:关机后该文件内容清空
* @return
*/
public long countGPRS()
{
FileReader fstream = null;
try {
fstream = new FileReader(DEV_FILE);
}
catch (FileNotFoundException e) {
}
BufferedReader in = new BufferedReader(fstream, 500);
String line;
String[] segs;
String[] netdata;
int k;
int j;
try {
while ((line = in.readLine()) != null) {
segs = line.trim().split(":");
if (line.startsWith(GPRSLINE))
{
netdata = segs[1].trim().split(" ");
for (k = 0, j = 0; k < netdata.length; k++)
{
if (netdata[k].length() > 0)
{
gprsdata[j] = netdata[k];
j++;
}
}
}
}
fstream.close();
}
catch (IOException e) {
}
long result = +Long.parseLong(gprsdata[0])+Long.parseLong(gprsdata[1])+Long.parseLong(gprsdata[8])+Long.parseLong(gprsdata[9]);
return result;
}
}
发表评论
-
Android OpenGL库函数列表
2014-11-26 10:44 1197Android OpenGL库函数列表 OpenGl核 ... -
FFmpeg Android部分的编译
2014-06-19 17:09 1184编译的是最新版2.2.3。再说编译环境 操作系统 ubun ... -
AVPacket与AVFrame的关系
2014-06-19 16:19 9958最近在做ffmpeg相关的项目,满眼的AVPacket和AV ... -
WebView 自适应全屏
2013-10-30 11:29 5223网上有通行的3中方法 写道 第一种: settings ... -
NDK调试
2013-10-24 16:41 5826大体根据官方攻略 http://tools.android ... -
adb logcat 打印输出
2013-08-06 11:43 3112深圳公司的同事在测试的时候遇到一些bug 我这边没办法重 ... -
android上加载大图片需要注意的问题
2013-07-16 21:47 9387尽量不要使用setImageBitmap或setImageR ... -
XMPP下的注册与登录
2013-06-24 23:43 6692前面讲了本地如何搭建XMPP环境 其实我不懂 也没认真的好好 ... -
XMPP 环境快速搭建
2013-06-24 22:31 1218这年头微信火 于是好多公司都要跟风 搭建环境其实挺简单 ... -
利用Movie播放GIF
2013-05-09 16:52 5089public class ViewContent ex ... -
ListView分隔线的显示
2013-04-08 16:21 1535项目中需要在listview中添加footview 出现了 ... -
结合popwindow与gridview的一例
2013-03-15 16:04 1376项目中需要实现一个gridview 点击某项弹出一个popu ... -
[转]Android中Matrix的pre post set方法理解
2013-03-08 15:03 1224虽说以前学习过线性代数和图形学原理,但是在实际中碰到matr ... -
50个Android开发人员必备UI效果源码[转载]
2013-03-08 09:29 44526Android 仿微信之主页面实现篇Android 仿微信之界 ... -
对View DrawingCache的理解
2013-02-18 19:37 1072View组件显示的内容可以通过cache机制保存为bitm ... -
Fragment使用方法一则
2013-02-18 17:28 1529之前在项目里也用到了fragment,作为横向滑动的组件显示 ... -
AVD ROOT
2012-12-04 11:47 3181启动一个模拟器,开 ... -
onTouchEvent 、onInterceptTouchEvent的顺序~
2012-10-26 10:29 1166转自:http://yxwww.iteye.com/blog/ ... -
ListView滑动获取分页 并异步加载每一项的图片
2012-09-26 10:40 4483项目有一个需求就是从服务器获取一个分页数据,数据按json数组 ... -
解析apk文件的图标等内容
2012-09-05 15:56 3254import java.lang.reflect. ...
相关推荐
用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用...
设置是否显示:流量信息、报价单、发货单、赠品、优惠券、管理进入链接等 2)邮件发送系统:支持Jmail、ObjCdoMail、Aspemail、Cdo.Message组件 管理员可选择组件和设置SMTP发件信息 3)后台管理账户维护功能,...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用...
7.5 应用软件设置 cc实例203 设置Wordc2000文档及图片的保存路径 cc实例204 更改Photoshop安装时的登记信息 第8章 数据库技术 8.1 连接数据库 cc实例205 使用ODBCcDSN连接SQLcServer...
该项可被修改,因此建议在修改配置前先读取控制卡配置,以防写入 错误的编号。GPRS 通信方式下,该项不可编辑修改。 GPRS APN: APN 是GPRS 接入点名称。除非在中国大陆以外运行 GS7020B, 或已从移动服务商获得...
第12章 硬件相关开发技术 12.1 串口控制 实例320 通过串口传递数据 实例321 通过串口控制对方计算机关闭 12.2 加密狗 实例322 将密码写入加密狗 实例323 使用加密狗进行身份验证 12.3 IC卡的应用 实例324 ...
第12章 硬件相关开发技术 12.1 串口控制 实例320 通过串口传递数据 实例321 通过串口控制对方计算机关闭 12.2 加密狗 实例322 将密码写入加密狗 实例323 使用加密狗进行身份验证 12.3 IC卡的应用 实例324 ...
实例083 获取网络信息及流量 290 实例084 获取指定地区天气预报 292 实例085 发送与接收邮件 297 实例086 调用OutLook发送邮件 304 实例087 以断点续传方式下载文件 306 实例088 远程关闭与重启计算机 ...
实例083 获取网络信息及流量 290 实例084 获取指定地区天气预报 292 实例085 发送与接收邮件 297 实例086 调用OutLook发送邮件 304 实例087 以断点续传方式下载文件 306 实例088 远程关闭与重启计算机 ...
实例083 获取网络信息及流量 290 实例084 获取指定地区天气预报 292 实例085 发送与接收邮件 297 实例086 调用OutLook发送邮件 304 实例087 以断点续传方式下载文件 306 实例088 远程关闭与重启计算机 ...
实例083 获取网络信息及流量 290 实例084 获取指定地区天气预报 292 实例085 发送与接收邮件 297 实例086 调用OutLook发送邮件 304 实例087 以断点续传方式下载文件 306 实例088 远程关闭与重启计算机 ...
实例083 获取网络信息及流量 290 实例084 获取指定地区天气预报 292 实例085 发送与接收邮件 297 实例086 调用OutLook发送邮件 304 实例087 以断点续传方式下载文件 306 实例088 远程关闭与...