Android编程实现简单流量管理功能实例
本文实例讲述了Android编程实现简单流量管理功能的方法。分享给大家供大家参考,具体如下:
packagecn.itcast.mobilesafe.ui;
importjava.util.List;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.content.pm.PackageManager;
importandroid.content.pm.ResolveInfo;
importandroid.graphics.drawable.Drawable;
importandroid.net.TrafficStats;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.ImageView;
importandroid.widget.ListView;
importandroid.widget.TextView;
importcn.itcast.mobilesafe.R;
importcn.itcast.mobilesafe.util.TextForMater;
publicclassTrafficManagerActivityextendsActivity{
privateTextView_3gTotal;
privateTextViewwifiTotal;
privateListViewcontent;
privateStringmobileTraffic;
privateStringwifiTraffic;
privatePackageManagerpm;
privateTrafficAdapteradapter;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
pm=getPackageManager();
setContentView(R.layout.traffic_manager);
_3gTotal=(TextView)this.findViewById(R.id._3gTotal);
wifiTotal=(TextView)this.findViewById(R.id.wifiTotal);
content=(ListView)this.findViewById(R.id.content);
setTotalData();
adapter=newTrafficAdapter();
content.addHeaderView(View.inflate(this,R.layout.traffic_title,null));
content.setAdapter(adapter);
}
privatevoidsetTotalData(){
longmobileRx=TrafficStats.getMobileRxBytes();
longmobileTx=TrafficStats.getMobileTxBytes();
longtotalRx=TrafficStats.getTotalRxBytes();
longtotalTx=TrafficStats.getTotalTxBytes();
longwifiRx=totalRx-mobileRx;
longwifiTx=totalTx-mobileTx;
mobileTraffic=TextForMater.getDataSize(mobileRx+mobileTx);
_3gTotal.setText(mobileTraffic);
wifiTraffic=TextForMater.getDataSize(wifiTx+wifiRx);
wifiTotal.setText(wifiTraffic);
}
privateclassTrafficAdapterextendsBaseAdapter{
List<ResolveInfo>resolveInfos;
publicTrafficAdapter(){
super();
Intentintent=newIntent();
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
resolveInfos=pm.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);
}
@Override
publicintgetCount(){
returnresolveInfos.size();
}
@Override
publicObjectgetItem(intposition){
returnposition;
}
@Override
publiclonggetItemId(intposition){
returnposition;
}
@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
Viewview;
if(null==convertView){
view=View.inflate(getApplicationContext(),R.layout.traffic_item,null);
}else{
view=convertView;
}
ViewHolderholder=newViewHolder();
holder.iv_traffic_icon=(ImageView)view.findViewById(R.id.iv_traffic_icon);
holder.tv_traffic_name=(TextView)view.findViewById(R.id.tv_traffic_name);
holder.tv_traffic_tx=(TextView)view.findViewById(R.id.tv_traffic_tx);
holder.tv_traffic_rx=(TextView)view.findViewById(R.id.tv_traffic_rx);
ResolveInfoinfo=resolveInfos.get(position);
StringappName=info.loadLabel(pm).toString();
holder.tv_traffic_name.setText(appName);
Drawableicon=info.loadIcon(pm);
holder.iv_traffic_icon.setImageDrawable(icon);
intuid=info.activityInfo.applicationInfo.uid;
holder.tv_traffic_rx.setText(TextForMater.getDataSize(TrafficStats.getUidRxBytes(uid)));
holder.tv_traffic_tx.setText(TextForMater.getDataSize(TrafficStats.getUidTxBytes(uid)));
returnview;
}
}
staticclassViewHolder{
ImageViewiv_traffic_icon;
TextViewtv_traffic_name;
TextViewtv_traffic_tx;
TextViewtv_traffic_rx;
}
}
traffic_manager.xml
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="2G/3G总流量"/> <TextView android:id="@+id/_3gTotal" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1"/> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="Wifi总流量"/> <TextView android:id="@+id/wifiTotal" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1"/> </TableRow> </TableLayout> <SlidingDrawer android:id="@+id/ll_sd_traffic" android:layout_width="match_parent" android:layout_height="match_parent" android:content="@+id/content" android:handle="@+id/handle" android:orientation="vertical"> <ImageView android:id="@id/handle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/notification"/> <ListView android:id="@id/content" android:layout_width="fill_parent" android:layout_height="fill_parent"> </ListView> </SlidingDrawer> </LinearLayout>
traffic_manager_item.xml
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <ImageView android:id="@+id/iv_traffic_icon" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ic_launcher"/> <TextView android:id="@+id/tv_traffic_name" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="名称"/> <TextView android:id="@+id/tv_traffic_tx" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="上传"/> <TextView android:id="@+id/tv_traffic_rx" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="下载"/> </LinearLayout>
traffic_title.xml
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="图标"/> <TextView android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="名称"/> <TextView android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="上传"/> <TextView android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="下载"/> </LinearLayout>
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android通信方式总结》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。