package jdjsq.netcon;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class NetContralActivity extends Activity {    /** Called when the activity is first created. */private Button button = null;FileOutputStream out;      final public String ONPATH = "/data/data/zy.dnh/on.txt";      @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        button = (Button)findViewById(R.id.button);        button.setOnClickListener(new ButtonListener());    }        class ButtonListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent bootActivityIntent=new Intent(NetContralActivity.this,mService1.class);//启动服务              bootActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);              writefile("0,0,0,0,0,0,0,0,0,0,0,0",ONPATH);              startService(bootActivityIntent);               Toast.makeText(NetContralActivity.this, "Netcounter service has been lauched", Toast.LENGTH_LONG).show();  }        }    public void writefile(String str,String path )      {         File file;         try {            //创建文件           file = new File(path);            file.createNewFile();                        //打开文件file的OutputStream            out = new FileOutputStream(file);            String infoToWrite = str;            //将字符串转换成byte数组写入文件            out.write(infoToWrite.getBytes());            //关闭文件file的OutputStream            out.close();                                             } catch (IOException e) {            //将出错信息打印到Logcat                                }      }}
package jdjsq.netcon;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.util.Calendar;import org.apache.http.util.EncodingUtils;import android.app.Service;import android.content.Intent;import android.os.Handler;import android.os.IBinder;import android.widget.Toast;public class mService1 extends Service{/*@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}*/ private Handler objHandler = new Handler();      private int intCounter=0;      private int mHour;       private int mMinute;       private int mYear;       private int mMonth;       private int mDay;      private String mdate;                  final public String DEV_FILE = "/proc/self/net/dev";//系统流量文件      String[] ethdata={"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"};      String[] gprsdata={"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"};      String[] wifidata={"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"};      String data="0,0,0,0,0,0,0,0,0,0,0,0";//对应on.txt里面的格式      final String ETHLINE="  eth0";//以太网信息所在行      final String GPRSLINE="rmnet0";      final String WIFILINE="tiwlan0";            final String TEXT_ENCODING = "UTF-8";             final public String ONPATH = "/data/data/zy.dnh/on.txt";      final public String LOGPATH = "/data/data/zy.dnh/log.txt";            private Runnable mTasks = new Runnable()       {               public void run()//运行该服务执行此函数          {            refresh();                                intCounter++;          // DisplayToast("Counter:"+Integer.toString(intCounter));           objHandler.postDelayed(mTasks, 30000);//每3000毫秒执行一次         }       };        @Override    public void onStart(Intent intent, int startId)    {      // TODO Auto-generated method stub      //writefile("0,0,0,0,0,0,0,0,0,0,0,0",ONPATH);//每次启动服务 初始化onpath            objHandler.postDelayed(mTasks, 0);      super.onStart(intent, startId);    }    @Override    public void onCreate()    {      // TODO Auto-generated method stub              super.onCreate();    }        @Override    public IBinder onBind(Intent intent)    {      // TODO Auto-generated method stub                  return null;    }    @Override    public void onDestroy()    {      // TODO Auto-generated method stub            /*  */      objHandler.removeCallbacks(mTasks);      super.onDestroy();    }      public void DisplayToast(String str)    {      Toast.makeText(this,str,Toast.LENGTH_SHORT).show();    }      public void readdev()    {        FileReader fstream = null;      try {            fstream = new FileReader(DEV_FILE);                        }           catch (FileNotFoundException e) {              DisplayToast("Could not read " + DEV_FILE);                      }         BufferedReader in = new BufferedReader(fstream, 500);         String line;         String[] segs;         String[] netdata;                  int count=0;         int k;         int j;         try {            while ((line = in.readLine()) != null) {                segs = line.trim().split(":");                if(line.startsWith(ETHLINE))                  {                                        netdata=segs[1].trim().split(" ");                    for(k=0,j=0;k0)                        {                                                       ethdata[j]=netdata[k];                            j++;                       }                    }                }                else if(line.startsWith(GPRSLINE))                {                                     netdata=segs[1].trim().split(" ");                for(k=0,j=0;k0)                    {                                                 gprsdata[j]=netdata[k];                        j++;                   }                }                }              else if(line.startsWith(WIFILINE))            {                             netdata=segs[1].trim().split(" ");                  for(k=0,j=0;k0)                       {                                               wifidata[j]=netdata[k];                        j++;                      }                  }            }                                                                               count++;            }            fstream.close();                       }           catch (IOException e) {            DisplayToast(e.toString());          }    }    public String getinfo(String path)    {      File file;      String str="";       FileInputStream in;     try{      //打开文件file的InputStream       file = new File(path);         in = new FileInputStream(file);         //将文件内容全部读入到byte数组         int length = (int)file.length();         byte[] temp = new byte[length];         in.read(temp, 0, length);         //将byte数组用UTF-8编码并存入display字符串中         str =  EncodingUtils.getString(temp,TEXT_ENCODING);         //关闭文件file的InputStream         in.close();     }     catch (IOException e) {                 DisplayToast(e.toString());              }      return str;    }    public void writefile(String str,String path )    {      File file;      FileOutputStream out;       try {             //创建文件           file = new File(path);             file.createNewFile();             //打开文件file的OutputStream             out = new FileOutputStream(file);             String infoToWrite = str;             //将字符串转换成byte数组写入文件             out.write(infoToWrite.getBytes());             //关闭文件file的OutputStream             out.close();          } catch (IOException e) {             //将出错信息打印到Logcat            DisplayToast(e.toString());                      }    }    public void refresh()    {                        readdev();//读取本次开机之后直到当前系统的总流量                 data=ethdata[0]+","+ethdata[1]+","+ethdata[8]+","+ethdata[9]+","             +gprsdata[0]+","+gprsdata[1]+","+gprsdata[8]+","+gprsdata[9]+","             +wifidata[0]+","+wifidata[1]+","+wifidata[8]+","+wifidata[9];        String onstr=getinfo(ONPATH);//读取on.txt记录到onstr里         String ondata[]=onstr.split(",");//将onstr各项分离 放到ondata里        //计算增量        int [] delta=new int [12];                delta[0]=Integer.parseInt(ethdata[0])-Integer.parseInt(ondata[0]);        delta[1]=Integer.parseInt(ethdata[1])-Integer.parseInt(ondata[1]);        delta[2]=Integer.parseInt(ethdata[8])-Integer.parseInt(ondata[2]);        delta[3]=Integer.parseInt(ethdata[9])-Integer.parseInt(ondata[3]);        delta[4]=Integer.parseInt(gprsdata[0])-Integer.parseInt(ondata[4]);        delta[5]=Integer.parseInt(gprsdata[1])-Integer.parseInt(ondata[5]);        delta[6]=Integer.parseInt(gprsdata[8])-Integer.parseInt(ondata[6]);        delta[7]=Integer.parseInt(gprsdata[9])-Integer.parseInt(ondata[7]);        delta[8]=Integer.parseInt(wifidata[0])-Integer.parseInt(ondata[8]);        delta[9]=Integer.parseInt(wifidata[1])-Integer.parseInt(ondata[9]);        delta[10]=Integer.parseInt(wifidata[8])-Integer.parseInt(ondata[10]);        delta[11]=Integer.parseInt(wifidata[9])-Integer.parseInt(ondata[11]);                        //读取log.txt      //获取当前时间         final Calendar c = Calendar.getInstance();         mYear = c.get(Calendar.YEAR); //获取当前年份         mMonth = c.get(Calendar.MONTH)+1;//获取当前月份         mDay = c.get(Calendar.DAY_OF_MONTH);//获取当前月份的日期号码         mHour = c.get(Calendar.HOUR_OF_DAY);//获取当前的小时数         mMinute = c.get(Calendar.MINUTE);//获取当前的分钟数           mdate=mYear+"-"+mMonth+"-"+mDay;                String text=getinfo(LOGPATH);//将log.txt的内容读到text字符串中        String [] line=text.split("/n");                String today=line[line.length-1];//获得今日已记录流量        String [] beToday=today.split(",");        //检查文件最后一行是否为今天的流量记录信息        if(!beToday[0].equals(mdate))//          //判断今日流量是否已经记录,如果今日流量没有记录        {                   text=text+mdate+",0,0,0,0,0,0,0,0,0,0,0,0/n";            writefile(text,LOGPATH);                                    line=text.split("/n");            today=line[line.length-1];//获得今日已记录流量                       beToday=today.split(",");         }        int i;       //处理今日流量        int [] newTodaydata=new int [12];//表示今日流量        String newtoday=mdate;        for(i=0;i<=11;i++)//更新今日流量        {            newTodaydata[i]=Integer.parseInt(beToday[i+1])+delta[i];            newtoday=newtoday+","+newTodaydata[i];        }        newtoday=newtoday+"/n";                        String [] beTotal=line[0].split(",");        int [] newTotaldata=new int [12];//表示总流量数值        //更新第一行        String newtotal="total";        for(i=0;i<=11;i++)//更新今日流量和总流量        {              newTotaldata[i]=Integer.parseInt(beTotal[i+1])+delta[i];//总流量数值+delta[i]更新            newtotal=newtotal+","+newTotaldata[i];        }        newtotal= newtotal+"/n";        //处理中间不变的部分        String before="";//before为之前的从第1行到昨天的流量记录                for(i=1;i<=line.length-2;i++)          before=before+line[i]+"/n";//代表中间不变的部分                String newlog=newtotal+before+newtoday;        writefile(data,ONPATH);//更新流量记录        writefile(newlog,LOGPATH);//更新log*/                            }          }  




访问系统流量记录  

更多相关文章

  1. Android往SD卡上存储文件
  2. Android的文件系统结构
  3. Android(安卓)5.0WebView选择本地文件
  4. Android(安卓)网络与数据存储
  5. 【Android】基础1
  6. android(9)_数据存储与访问3_scard_login事例
  7. android service
  8. android操作sdcard
  9. Android带进度条文件上传

随机推荐

  1. php如何实现数据库的备份和恢复
  2. PHP实现腾讯短网址生成api接口实例
  3. 深入理解PHP+Mysql分布式事务与解决方案
  4. 访问器属性原理与应用场景,演示获取dom元
  5. 怎么画动漫人物头发?教你画出自然的头发
  6. centos7 安装MariaDB 10.6
  7. jsp 自定义标签实例
  8. AJAX自学练习 无刷新从数据库后台取数据
  9. AJAX 自学练习 请求与显示
  10. scratch怎么绘制十个交叉重叠的圆形?