- 浏览: 450348 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
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 1277Android OpenGL库函数列表 OpenGl核 ... -
FFmpeg Android部分的编译
2014-06-19 17:09 1255编译的是最新版2.2.3。再说编译环境 操作系统 ubun ... -
AVPacket与AVFrame的关系
2014-06-19 16:19 10103最近在做ffmpeg相关的项目,满眼的AVPacket和AV ... -
WebView 自适应全屏
2013-10-30 11:29 5311网上有通行的3中方法 写道 第一种: settings ... -
NDK调试
2013-10-24 16:41 5896大体根据官方攻略 http://tools.android ... -
adb logcat 打印输出
2013-08-06 11:43 3167深圳公司的同事在测试的时候遇到一些bug 我这边没办法重 ... -
android上加载大图片需要注意的问题
2013-07-16 21:47 9455尽量不要使用setImageBitmap或setImageR ... -
XMPP下的注册与登录
2013-06-24 23:43 6771前面讲了本地如何搭建XMPP环境 其实我不懂 也没认真的好好 ... -
XMPP 环境快速搭建
2013-06-24 22:31 1260这年头微信火 于是好多公司都要跟风 搭建环境其实挺简单 ... -
利用Movie播放GIF
2013-05-09 16:52 5184public class ViewContent ex ... -
ListView分隔线的显示
2013-04-08 16:21 1595项目中需要在listview中添加footview 出现了 ... -
结合popwindow与gridview的一例
2013-03-15 16:04 1435项目中需要实现一个gridview 点击某项弹出一个popu ... -
[转]Android中Matrix的pre post set方法理解
2013-03-08 15:03 1301虽说以前学习过线性代数和图形学原理,但是在实际中碰到matr ... -
50个Android开发人员必备UI效果源码[转载]
2013-03-08 09:29 44708Android 仿微信之主页面实现篇Android 仿微信之界 ... -
对View DrawingCache的理解
2013-02-18 19:37 1208View组件显示的内容可以通过cache机制保存为bitm ... -
Fragment使用方法一则
2013-02-18 17:28 1601之前在项目里也用到了fragment,作为横向滑动的组件显示 ... -
AVD ROOT
2012-12-04 11:47 3263启动一个模拟器,开 ... -
onTouchEvent 、onInterceptTouchEvent的顺序~
2012-10-26 10:29 1247转自:http://yxwww.iteye.com/blog/ ... -
ListView滑动获取分页 并异步加载每一项的图片
2012-09-26 10:40 4537项目有一个需求就是从服务器获取一个分页数据,数据按json数组 ... -
解析apk文件的图标等内容
2012-09-05 15:56 3358import 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, 或已从移动服务商获得...
第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 ...