最近做获取手机的信号强度,总结一下.
获取手机的信号强度有3种方法,各种方法获取得到的值 不同
方法1.使用RSystemAgent获得
const TUid KUidNetworkStrength ={0x100052C8};
RSystemAgent agent;
agent.Connect();
TInt networkStrength = agent.GetState(KUidNetworkStrength);
agent.Close();
这种方法得到的值的范围是0~4,意义如下:
0 = ESANetworkStrengthNone
1 = ESANetworkStrengthLow
2 = ESANetworkStrengthMedium
3 = ESANetworkStrengthHigh
4 = ESANetworkStrengthUnknown
方法2:也是使用RSystemAgent获得,不过使用的UID是0x100052D4
这个UID得到的结果范围是0~7,这个和手机屏幕左上角的信号强度条对应.
方法3:使用CTelephony
改方法比较麻烦,不过取得的值的范围很大,我在2部6680上测试不成功,在N72上测试成功,网友说在6630上测试成功,具体方法见http://www.symbian.com/developer/techlib/v9.1docs/doc_source/guide/telephony-subsystem-guide/n1013a/info_network.html#guide%2esimpletelephony%2eSignalStrength
现在添加第4中方法:
使用CMobileContext获得信号强度
使用本方法获得的信号强度范围是0~5,这个方法挺麻烦的,得到的数据又不好,但是该方法的好处是可以使用类似的方法获得电话号码.这是NOKIA发布的一个包Mobinfo,在
http://developer.symbian.com/main/tools/utilities/cpp/index.jsp#mobinfo
中的
Mobinfo 3rd Party Telephony Library
通过N70的测试
但是6680好像还是不支持,郁闷