手机安全卫士——流量管理
Posted 蒙小米
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手机安全卫士——流量管理相关的知识,希望对你有一定的参考价值。
首先先看一下界面
布局文件都很简单,就不贴代码了!贴出主要的代码
每一个不同的程序只能有一个UId,但是一个应用里面可以有多个PId,所以我们获取每个应用程序的uid
所以我们在软件管理里面用到的AppInfo 实体类和 AppInfos 逻辑处理 类里面加入uid字段,就可以满足我们的需求。
给AppInfo.java加入
private int uid; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; }
AppInfos.java中加入
int uid = installPackage.applicationInfo.uid;
appinfo.setUid(uid);
TrafficManagerActivity .java
public class TrafficManagerActivity extends Activity { private List<AppInfo> appInfos; private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); initUI(); initData(); } private void initData() { // TODO Auto-generated method stub new Thread(){ public void run() { //得到所有应用程序的集合 appInfos = AppInfos.getAppInfos(TrafficManagerActivity.this); System.out.println("得到所有应用程序的集合 list.."); // Message msg = new Message(); // hanlder.sendMessage(msg); runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub MyAdapter adapter = new MyAdapter(); lv.setAdapter(adapter); } }); }; }.start(); } private void initUI() { // TODO Auto-generated method stub setContentView(R.layout.activity_traffic); lv = (ListView) findViewById(R.id.lv); } // private Handler hanlder = new Handler(){ // public void handleMessage(android.os.Message msg) { // MyAdapter adapter = new MyAdapter(); // lv.setAdapter(adapter); // // }; // }; public class MyAdapter extends BaseAdapter{ @Override public int getCount() { // TODO Auto-generated method stub return appInfos.size(); } @Override public Object getItem(int position) { return appInfos.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int poition, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; if(convertView!=null){ holder = (ViewHolder) convertView.getTag(); }else{ convertView = LayoutInflater.from(TrafficManagerActivity.this).inflate( R.layout.item_traffic, null); holder = new ViewHolder(); holder.icon = (ImageView)convertView.findViewById(R.id.iv_icon); holder.appname = (TextView) convertView.findViewById(R.id.tv_appname); holder.all = (TextView) convertView.findViewById(R.id.tv_all); holder.rx = (TextView) convertView.findViewById(R.id.tv_rx); holder.tx = (TextView) convertView.findViewById(R.id.tv_tx); convertView.setTag(holder); } AppInfo info = appInfos.get(poition); holder.icon.setImageDrawable(info.getIcon()); holder.appname.setText(info.getApkname()); int uid = info.getUid(); System.out.println("唯一标示: "+uid); long tx = TrafficStats.getUidTxBytes(uid); System.out.println("下载:"+tx); if(tx<0){ tx = 0; } long rx = TrafficStats.getUidRxBytes(uid); if(rx<0){ rx = 0; } long total = tx+rx; holder.rx.setText("下载:"+TextFormat.formatByte(rx)); holder.tx.setText("上传:"+TextFormat.formatByte(tx)); holder.all.setText("总流量:"+TextFormat.formatByte(total)); return convertView; } } public class ViewHolder{ ImageView icon; TextView appname; TextView tx; TextView rx; TextView all; } }
TextFormat.java
import java.text.DecimalFormat; public class TextFormat { /** * 格式化数据 * @param data * @return */ public static String formatByte(long data){ DecimalFormat format = new DecimalFormat("##.##"); if(data < 1024){ return data+"bytes"; }else if(data < 1024 * 1024){ return format.format(data/1024f) +"KB"; }else if(data < 1024 * 1024 * 1024){ return format.format(data/1024f/1024f) +"MB"; }else if(data < 1024 * 1024 * 1024 * 1024){ return format.format(data/1024f/1024f/1024f) +"GB"; }else{ return "超出统计范围"; } } }
以上是关于手机安全卫士——流量管理的主要内容,如果未能解决你的问题,请参考以下文章