package com.net.app;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.UUID;
import org.apache.http.conn.util.InetAddressUtils;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.TrafficStats;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.StatFs;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView show;
private long lastTotalRxBytes = 0;
private long lastTimeStamp = 0;
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show = (TextView) findViewById(R.id.show);
final Runnable updateThread = new Runnable() {
@Override
public void run() {
//获取UUID
String uniqueId = getUniqueId();
//安卓版本号
String phone = android.os.Build.VERSION.RELEASE+"\n手机型号:"+android.os.Build.MODEL;
//获得STB的Mac地址
String macSTB = getMacAddress();
//获得MAC地址
String mac = getWifiAddress();
//获取网络状态
String net = isNetworkConnected(MainActivity.this);
//获取IP地址
String ip = getLocalIpAddress();
//获取CPU利用率
String rate = getCPUURate();
//获取CPU负载
String cpuinfo = getCPUinfo();
//运行内存大小和利用率
String meminfo = getMemoryInfo();
//磁盘大小和利用率
String sdinfo = getSDTotalSize();
String jsinfo = getAvailableInternalMemorySize();
//String rootinfo = getRootMemorySize();
//获得网络带宽
long nowTotalRxBytes = TrafficStats.getTotalRxBytes()==TrafficStats.UNSUPPORTED?0:(TrafficStats.getTotalRxBytes()/1024);
long nowTimeStamp = System.currentTimeMillis();
long speed = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 / (nowTimeStamp - lastTimeStamp));//毫秒转换
lastTimeStamp = nowTimeStamp;
lastTotalRxBytes = nowTotalRxBytes;
show.setText("UUID:"+uniqueId+"\n版本:"+phone+"\nMAC地址:"+mac+"\n机顶盒Mac:"+macSTB+"\n网络状态:"+net+"\nIP:"+ip+"\nCPU利用率:"+rate+"\nCPU负载:"+cpuinfo
+"\n运行内存:"+meminfo+"\nSD卡大小:"+sdinfo+"\n机身内存:"+jsinfo+"\n网速:"+String.valueOf(speed) + " kb/s");
mHandler.postDelayed(this, 1000);
}
};
mHandler.post(updateThread);
}
/*获取唯一标识*/
public String getUniqueId(){
final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
final String tmDevice, tmSerial, androidId;
tmDevice = "" + tm.getDeviceId();
tmSerial = "" + tm.getSimSerialNumber();
androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
return deviceUuid.toString()+"\nIMEI:"+tmDevice;
}
/*判断网络连接的,数据网络和wifi都可判断*/
public String isNetworkConnected(Context context) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
String s = "";
if (mNetworkInfo != null) {
if(mNetworkInfo.getType()==ConnectivityManager.TYPE_WIFI)
s+="wifi";
if(mNetworkInfo.getType()==ConnectivityManager.TYPE_MOBILE)
s+="数据网络";
}
else
s+="无网络连接";
return s;
}
public static String loadFileAsString(String filePath) throws IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new FileReader(filePath));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
}
reader.close();
return fileData.toString();
}
/** 获得机顶盒的MAC地址*/
public String getMacAddress(){
try {
return loadFileAsString("/sys/class/net/eth0/address").toUpperCase().substring(0, 17);
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}
//获取手机MAC
public String getWifiAddress(){
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
return info.getMacAddress();
}
//获取Ip
public String getLocalIpAddress() {
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())) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e("WifiPreference IpAddress", ex.toString());
}
return null;
}
/*获取CPU利用率*/
public String getCPUURate(){
String Result;
Process p;
try {
p = Runtime.getRuntime().exec("top -n 1");//vmstat
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream ()));
String rate = "";
while((Result=br.readLine())!=null)
{
if(Result.trim().length()<1){
continue;
}else{
// String[] CPUusr = Result.split("%");
// rate+="USER:"+CPUusr[0]+"\n";
// String[] CPUusage = CPUusr[0].split("User");
// String[] SYSusage = CPUusr[1].split("System");
// rate+="CPU:"+CPUusage[1].trim()+" length:"+CPUusage[1].trim().length()+"\n";
// rate+="SYS:"+SYSusage[1].trim()+" length:"+SYSusage[1].trim().length()+"\n";
rate+=Result;
break;
}
}
return rate;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/*获取CPU负载*/
private String getCPUinfo(){
ProcessBuilder cmd;
String result="";
try{
String[] args = {"/system/bin/cat", "/proc/loadavg"};
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re = new byte[1024];
while(in.read(re) != -1){
result = result + new String(re);
}
in.close();
} catch(IOException ex){
ex.printStackTrace();
}
return result;
}
/*运行内存大小和利用率,2016376kB是1.9GB*/
private String getMemoryInfo(){
ProcessBuilder cmd;
String result = new String();
try{
String[] args = {"/system/bin/cat", "/proc/meminfo"};
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re=new byte[1024];
while (in.read(re)!=-1)
{
result = result + new String(re);
}
in.close();
}catch(IOException ex){
ex.printStackTrace();
}
String[] str = result.split("kB");
String allmem = str[0].substring(17).trim();
String free = str[1].substring(17).trim();
Long rate = 100*(Long.parseLong(allmem)-Long.parseLong(free))/Long.parseLong(allmem);
String userate =""+ rate;
return Long.parseLong(allmem)/1024+"MB"+" 使用率:"+userate+"%";
}
/*获取sd卡大小和利用率*/
public String getSDTotalSize()
{
String s = Environment.getExternalStorageState();
if(s.equals(Environment.MEDIA_MOUNTED)){
/*获取存储卡路径*/
File sdcardDir= Environment.getExternalStorageDirectory();
/*StatFs 看文件系统空间使用情况*/
StatFs statFs=new StatFs(sdcardDir.getPath());
long blockSize= statFs.getBlockSize();
long totalSize=statFs.getBlockCount();
long availableBlocks=statFs.getAvailableBlocks();
float rate = 100*(totalSize-availableBlocks)/totalSize;
return ""+blockSize*totalSize/1024/1024+"MB 利用率:"+rate+"%";
}
return "0";
}
/*获取机身大小和利用率*/
public String getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long counts = stat.getBlockCount();
long availableBlocks=stat.getAvailableBlocks();
float rate = 100*(counts-availableBlocks)/counts;
return ""+counts * blockSize/1024/1024+"MB 利用率:"+rate+"%";
}
public String getRootMemorySize() {
File path = Environment.getRootDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long counts = stat.getBlockCount();
long availableBlocks=stat.getAvailableBlocks();
float rate = 100*(counts-availableBlocks)/counts;
return ""+counts * blockSize/1024/1024+"MB 利用率:"+rate+"%";
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.UUID;
import org.apache.http.conn.util.InetAddressUtils;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.TrafficStats;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.StatFs;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView show;
private long lastTotalRxBytes = 0;
private long lastTimeStamp = 0;
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show = (TextView) findViewById(R.id.show);
final Runnable updateThread = new Runnable() {
@Override
public void run() {
//获取UUID
String uniqueId = getUniqueId();
//安卓版本号
String phone = android.os.Build.VERSION.RELEASE+"\n手机型号:"+android.os.Build.MODEL;
//获得STB的Mac地址
String macSTB = getMacAddress();
//获得MAC地址
String mac = getWifiAddress();
//获取网络状态
String net = isNetworkConnected(MainActivity.this);
//获取IP地址
String ip = getLocalIpAddress();
//获取CPU利用率
String rate = getCPUURate();
//获取CPU负载
String cpuinfo = getCPUinfo();
//运行内存大小和利用率
String meminfo = getMemoryInfo();
//磁盘大小和利用率
String sdinfo = getSDTotalSize();
String jsinfo = getAvailableInternalMemorySize();
//String rootinfo = getRootMemorySize();
//获得网络带宽
long nowTotalRxBytes = TrafficStats.getTotalRxBytes()==TrafficStats.UNSUPPORTED?0:(TrafficStats.getTotalRxBytes()/1024);
long nowTimeStamp = System.currentTimeMillis();
long speed = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 / (nowTimeStamp - lastTimeStamp));//毫秒转换
lastTimeStamp = nowTimeStamp;
lastTotalRxBytes = nowTotalRxBytes;
show.setText("UUID:"+uniqueId+"\n版本:"+phone+"\nMAC地址:"+mac+"\n机顶盒Mac:"+macSTB+"\n网络状态:"+net+"\nIP:"+ip+"\nCPU利用率:"+rate+"\nCPU负载:"+cpuinfo
+"\n运行内存:"+meminfo+"\nSD卡大小:"+sdinfo+"\n机身内存:"+jsinfo+"\n网速:"+String.valueOf(speed) + " kb/s");
mHandler.postDelayed(this, 1000);
}
};
mHandler.post(updateThread);
}
/*获取唯一标识*/
public String getUniqueId(){
final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
final String tmDevice, tmSerial, androidId;
tmDevice = "" + tm.getDeviceId();
tmSerial = "" + tm.getSimSerialNumber();
androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
return deviceUuid.toString()+"\nIMEI:"+tmDevice;
}
/*判断网络连接的,数据网络和wifi都可判断*/
public String isNetworkConnected(Context context) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
String s = "";
if (mNetworkInfo != null) {
if(mNetworkInfo.getType()==ConnectivityManager.TYPE_WIFI)
s+="wifi";
if(mNetworkInfo.getType()==ConnectivityManager.TYPE_MOBILE)
s+="数据网络";
}
else
s+="无网络连接";
return s;
}
public static String loadFileAsString(String filePath) throws IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new FileReader(filePath));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
}
reader.close();
return fileData.toString();
}
/** 获得机顶盒的MAC地址*/
public String getMacAddress(){
try {
return loadFileAsString("/sys/class/net/eth0/address").toUpperCase().substring(0, 17);
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}
//获取手机MAC
public String getWifiAddress(){
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
return info.getMacAddress();
}
//获取Ip
public String getLocalIpAddress() {
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())) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e("WifiPreference IpAddress", ex.toString());
}
return null;
}
/*获取CPU利用率*/
public String getCPUURate(){
String Result;
Process p;
try {
p = Runtime.getRuntime().exec("top -n 1");//vmstat
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream ()));
String rate = "";
while((Result=br.readLine())!=null)
{
if(Result.trim().length()<1){
continue;
}else{
// String[] CPUusr = Result.split("%");
// rate+="USER:"+CPUusr[0]+"\n";
// String[] CPUusage = CPUusr[0].split("User");
// String[] SYSusage = CPUusr[1].split("System");
// rate+="CPU:"+CPUusage[1].trim()+" length:"+CPUusage[1].trim().length()+"\n";
// rate+="SYS:"+SYSusage[1].trim()+" length:"+SYSusage[1].trim().length()+"\n";
rate+=Result;
break;
}
}
return rate;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/*获取CPU负载*/
private String getCPUinfo(){
ProcessBuilder cmd;
String result="";
try{
String[] args = {"/system/bin/cat", "/proc/loadavg"};
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re = new byte[1024];
while(in.read(re) != -1){
result = result + new String(re);
}
in.close();
} catch(IOException ex){
ex.printStackTrace();
}
return result;
}
/*运行内存大小和利用率,2016376kB是1.9GB*/
private String getMemoryInfo(){
ProcessBuilder cmd;
String result = new String();
try{
String[] args = {"/system/bin/cat", "/proc/meminfo"};
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re=new byte[1024];
while (in.read(re)!=-1)
{
result = result + new String(re);
}
in.close();
}catch(IOException ex){
ex.printStackTrace();
}
String[] str = result.split("kB");
String allmem = str[0].substring(17).trim();
String free = str[1].substring(17).trim();
Long rate = 100*(Long.parseLong(allmem)-Long.parseLong(free))/Long.parseLong(allmem);
String userate =""+ rate;
return Long.parseLong(allmem)/1024+"MB"+" 使用率:"+userate+"%";
}
/*获取sd卡大小和利用率*/
public String getSDTotalSize()
{
String s = Environment.getExternalStorageState();
if(s.equals(Environment.MEDIA_MOUNTED)){
/*获取存储卡路径*/
File sdcardDir= Environment.getExternalStorageDirectory();
/*StatFs 看文件系统空间使用情况*/
StatFs statFs=new StatFs(sdcardDir.getPath());
long blockSize= statFs.getBlockSize();
long totalSize=statFs.getBlockCount();
long availableBlocks=statFs.getAvailableBlocks();
float rate = 100*(totalSize-availableBlocks)/totalSize;
return ""+blockSize*totalSize/1024/1024+"MB 利用率:"+rate+"%";
}
return "0";
}
/*获取机身大小和利用率*/
public String getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long counts = stat.getBlockCount();
long availableBlocks=stat.getAvailableBlocks();
float rate = 100*(counts-availableBlocks)/counts;
return ""+counts * blockSize/1024/1024+"MB 利用率:"+rate+"%";
}
public String getRootMemorySize() {
File path = Environment.getRootDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long counts = stat.getBlockCount();
long availableBlocks=stat.getAvailableBlocks();
float rate = 100*(counts-availableBlocks)/counts;
return ""+counts * blockSize/1024/1024+"MB 利用率:"+rate+"%";
}
}