Symbian 深入讨论 RConnectionMonitor并用此来统计流量(转)
Symbian 深入讨论RConnectionMonitor并用此来统计流量
http://hi.baidu.com/onejw/blog/item/00a282457257352bcefca317.html
今天来聊聊关于如何使用RConnectionMonitor来统计流量。
RConnectionMonitor被SYMBIAN封装的受不了。
大家详细看看OS 内核,把好好的一个API封装的想自杀拟的。
因为这种变态的封装使得我们好多参数都得不到,郁闷之极啊。
如果我们能得到流量,并定位到指定的程序该多好啊。
哈哈。很多事情都往往......但是总是美好的瑕想。
少费话了,看我们如何应用RConnectionMonitor这个来统计流量吧。
我们先来看看RConnectionMonitor这个的基本用法。
假定您已经习惯了Symbian的Observer模式。那么请先继承MConnectionMonitorObserv
//初始化
void CMonitorNetWork::ConstructL()
//当发生所有事件时,都可以回调到这里
//比如新的连接,连接断开时都会回调
void CMonitorNetWork::EventL( const CConnMonEventBase &aEvent )
//哈哈。我们搞清楚了GetUintAttribute的每一项是不是所有的事情都搞定了呢。
//当然不是,在测试中发现有时候得不到值。
void CMonitorFlow::GetDownLinkData(TUint aConnectionId)
//注意:在这里每1S种得到一次值,就可以得到相应的流量值了。系统刷新的比较慢。我们就忍了吧。
//再快就需要更高的能力了。郁闷吧!!!
根据以上的讨论我们就知道如何得到每个索引值的流量了。
让我们继续假想,如果我们能知道哪个索引对应于哪个应用程序是不是就知道了,哪个应用程序产生了多
少流量了呢?哈哈哈哈,当然让我们来继续看吧。Great Great Great!!
看我们能不能把最新索引对应到相应的APP吧。
让我们继续来看SDK中的API
//得到相关的属性值
//KClientInfo客户信息//太棒了是不是能取得突破呢?
GetPckgAttribute(aConnectionId,0,KClientInfo,iClient,iStatus);
void CMonitorGprs::GetIapProcess(TUint aConnectionId)
在RunL里取得信息
void CMonitorGprs::GetAppInfo()
经过以上讨论相信大家对此用法有个相当的了解了。
以上代码在N73,N95上均测试通过