本文实例讲述了android编程实现简单流量管理功能的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
package cn.itcast.mobilesafe.ui;
import java.util.list;
import android.app.activity;
import android.content.intent;
import android.content.pm.packagemanager;
import android.content.pm.resolveinfo;
import android.graphics.drawable.drawable;
import android.net.trafficstats;
import android.os.bundle;
import android.view.view;
import android.view.viewgroup;
import android.widget.baseadapter;
import android.widget.imageview;
import android.widget.listview;
import android.widget.textview;
import cn.itcast.mobilesafe.r;
import cn.itcast.mobilesafe.util.textformater;
public class trafficmanageractivity extends activity {
private textview _3gtotal;
private textview wifitotal;
private listview content;
private string mobiletraffic;
private string wifitraffic;
private packagemanager pm;
private trafficadapter adapter;
@override
protected void oncreate(bundle savedinstancestate) {
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 = new trafficadapter();
content.addheaderview(view.inflate( this , r.layout.traffic_title, null ));
content.setadapter(adapter);
}
private void settotaldata() {
long mobilerx = trafficstats.getmobilerxbytes();
long mobiletx = trafficstats.getmobiletxbytes();
long totalrx = trafficstats.gettotalrxbytes();
long totaltx = trafficstats.gettotaltxbytes();
long wifirx = totalrx - mobilerx;
long wifitx = totaltx - mobiletx;
mobiletraffic = textformater.getdatasize(mobilerx + mobiletx);
_3gtotal.settext(mobiletraffic);
wifitraffic = textformater.getdatasize(wifitx + wifirx);
wifitotal.settext(wifitraffic);
}
private class trafficadapter extends baseadapter{
list<resolveinfo> resolveinfos ;
public trafficadapter() {
super ();
intent intent = new intent();
intent.setaction( "android.intent.action.main" );
intent.addcategory( "android.intent.category.launcher" );
resolveinfos = pm.queryintentactivities(intent, packagemanager.match_default_only);
}
@override
public int getcount() {
return resolveinfos.size();
}
@override
public object getitem( int position) {
return position;
}
@override
public long getitemid( int position) {
return position;
}
@override
public view getview( int position, view convertview, viewgroup parent) {
view view ;
if ( null == convertview){
view = view.inflate(getapplicationcontext(), r.layout.traffic_item, null );
} else {
view = convertview;
}
viewholder holder = new viewholder();
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);
resolveinfo info = resolveinfos.get(position);
string appname = info.loadlabel(pm).tostring();
holder.tv_traffic_name.settext(appname);
drawable icon = info.loadicon(pm);
holder.iv_traffic_icon.setimagedrawable(icon);
int uid = info.activityinfo.applicationinfo.uid;
holder.tv_traffic_rx.settext(textformater.getdatasize(trafficstats.getuidrxbytes(uid)));
holder.tv_traffic_tx.settext(textformater.getdatasize(trafficstats.getuidtxbytes(uid)));
return view;
}
}
static class viewholder{
imageview iv_traffic_icon;
textview tv_traffic_name;
textview tv_traffic_tx;
textview tv_traffic_rx;
}
}
|
traffic_manager.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
<?xml version= "1.0" encoding= "utf-8" ?>
<linearlayout xmlns: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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<?xml version= "1.0" encoding= "utf-8" ?>
<linearlayout xmlns: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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<?xml version= "1.0" encoding= "utf-8" ?>
<linearlayout xmlns: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程序设计有所帮助。