- 浏览: 449012 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
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 1267Android OpenGL库函数列表 OpenGl核 ... -
FFmpeg Android部分的编译
2014-06-19 17:09 1245编译的是最新版2.2.3。再说编译环境 操作系统 ubun ... -
AVPacket与AVFrame的关系
2014-06-19 16:19 10075最近在做ffmpeg相关的项目,满眼的AVPacket和AV ... -
WebView 自适应全屏
2013-10-30 11:29 5295网上有通行的3中方法 写道 第一种: settings ... -
NDK调试
2013-10-24 16:41 5887大体根据官方攻略 http://tools.android ... -
adb logcat 打印输出
2013-08-06 11:43 3159深圳公司的同事在测试的时候遇到一些bug 我这边没办法重 ... -
android上加载大图片需要注意的问题
2013-07-16 21:47 9443尽量不要使用setImageBitmap或setImageR ... -
XMPP下的注册与登录
2013-06-24 23:43 6757前面讲了本地如何搭建XMPP环境 其实我不懂 也没认真的好好 ... -
XMPP 环境快速搭建
2013-06-24 22:31 1256这年头微信火 于是好多公司都要跟风 搭建环境其实挺简单 ... -
利用Movie播放GIF
2013-05-09 16:52 5161public class ViewContent ex ... -
ListView分隔线的显示
2013-04-08 16:21 1588项目中需要在listview中添加footview 出现了 ... -
结合popwindow与gridview的一例
2013-03-15 16:04 1416项目中需要实现一个gridview 点击某项弹出一个popu ... -
[转]Android中Matrix的pre post set方法理解
2013-03-08 15:03 1284虽说以前学习过线性代数和图形学原理,但是在实际中碰到matr ... -
50个Android开发人员必备UI效果源码[转载]
2013-03-08 09:29 44679Android 仿微信之主页面实现篇Android 仿微信之界 ... -
对View DrawingCache的理解
2013-02-18 19:37 1181View组件显示的内容可以通过cache机制保存为bitm ... -
Fragment使用方法一则
2013-02-18 17:28 1590之前在项目里也用到了fragment,作为横向滑动的组件显示 ... -
AVD ROOT
2012-12-04 11:47 3252启动一个模拟器,开 ... -
onTouchEvent 、onInterceptTouchEvent的顺序~
2012-10-26 10:29 1233转自:http://yxwww.iteye.com/blog/ ... -
ListView滑动获取分页 并异步加载每一项的图片
2012-09-26 10:40 4524项目有一个需求就是从服务器获取一个分页数据,数据按json数组 ... -
解析apk文件的图标等内容
2012-09-05 15:56 3343import java.lang.reflect. ...
相关推荐
总结,"WIFI流量计程序"是一个结合了硬件和软件的物联网项目,利用ESP8266的WiFi功能实现设备与手机APP的双向通信,实时监控和管理网络流量,确保用户不会意外超出流量套餐。该项目不仅锻炼了开发者在物联网领域的...
在电信领域,信息阅读查询装置可能是硬件设备,如智能终端或仪表板,也可能是指软件应用,如手机应用程序或网页平台。这些工具通常集成了一系列功能,包括但不限于: 1. **数据检索**:能够从电信网络中提取各种...
设置是否显示:流量信息、报价单、发货单、赠品、优惠券、管理进入链接等 2)邮件发送系统:支持Jmail、ObjCdoMail、Aspemail、Cdo.Message组件 管理员可选择组件和设置SMTP发件信息 3)后台管理账户维护功能,...
包括硬件设备(如感应卡读取器、控制器等)、软件平台(如管理软件、数据分析工具等)以及通信网络的设计布局。 **2.2 功能要求** 系统需具备以下基本功能: - 车辆自动识别与出入场管理; - 停车费用自动计算与...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
这个实验是物联网(IoT)应用的一个典型示例,特别适用于智能家居、安全监控和人流量统计等领域。 首先,我们要了解CC2530/CC2531单片机。这两款芯片由Texas Instruments(TI)制造,是Zigbee无线通信协议栈的首选微...
大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动...
6. 实施策略:在实际操作中,电信设备的数据采集可能涉及硬件升级、软件部署、网络架构调整等多方面。合理的实施策略应考虑成本效益、兼容性、扩展性和维护性。 综上所述,这份资料可能涵盖了从数据采集技术的原理...
通常,系统会通过读取身份证、会员卡或使用手机号码进行身份验证,确保只有合法用户可以使用电脑。同时,系统还可以管理用户的账户信息,包括密码修改、账户余额查询等。 系统还具备资源分配和监控功能。它能实时...
7.5 应用软件设置 cc实例203 设置Wordc2000文档及图片的保存路径 cc实例204 更改Photoshop安装时的登记信息 第8章 数据库技术 8.1 连接数据库 cc实例205 使用ODBCcDSN连接SQLcServer...
- **日志分析**:记录了RNDIS模式下的网络连接状态和流量统计信息。 ##### 1.6 短信功能 - **流程说明**:通过AT命令收发短信的基本流程。 - **流程分析**: - **场景描述**:包括发送和接收短信的具体步骤。 - ...
该项可被修改,因此建议在修改配置前先读取控制卡配置,以防写入 错误的编号。GPRS 通信方式下,该项不可编辑修改。 GPRS APN: APN 是GPRS 接入点名称。除非在中国大陆以外运行 GS7020B, 或已从移动服务商获得...
Java编写的显示器显示模式检测程序 2个目标文件 内容索引:JAVA源码,系统相关,系统信息检测 用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作...
第12章 硬件相关开发技术 12.1 串口控制 实例320 通过串口传递数据 实例321 通过串口控制对方计算机关闭 12.2 加密狗 实例322 将密码写入加密狗 实例323 使用加密狗进行身份验证 12.3 IC卡的应用 实例324 ...