获得Android系统的唯一标识、android版本、网络接入方式、当前网络接入方式的MAC地址、IP、CPU的利用率、CPU的负载、内存大小

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+"%";

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值