利用CTelephony获取电量,充电和手机信号的信息 转 - [symbian]
2012-02-21 18:21
441 查看
利用CTelephony获取电量,充电和手机信号的信息 转 - [symbian]
2009-07-06
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://iovi.blogbus.com/logs/41972666.html1. 声明观察器类 (StateVarObserver.h):
// StateVarObserver.h // Constants const TInt KUidBatteryBarsValue = 0x100052D3; const TUid KUidBatteryBars ={KUidBatteryBarsValue}; // KUidChargerStatus defined in <sacls.h> // KUidNetworkStrength defined in <sacls.h> // monitoring the info class CStateVarObserver : public CActive { ... private: CTelephony * iTelephony; //For network, battery and charger information TUid iObservingUid; //to know what we're observing TInt iObservedValue; //the value of what we're observing //Network signal strength information CTelephony::TSignalStrengthV1 iSigStrengthV1; CTelephony::TSignalStrengthV1Pckg iSigStrengthV1Pckg; //Battery information CTelephony::TBatteryInfoV1 iBatteryInfoV1; CTelephony::TBatteryInfoV1Pckg iBatteryInfoV1Pckg; //For charger information CTelephony::TIndicatorV1 iIndicatorV1; CTelephony::TIndicatorV1Pckg iIndicatorV1Pckg; }; |
// StateVarObserver.cpp // Constructor CStateVarObserver::CStateVarObserver(TUid aUid) : CActive(EPriorityStandard), iSigStrengthV1Pckg(iSigStrengthV1), iBatteryInfoV1Pckg(iBatteryInfoV1), iIndicatorV1Pckg(iIndicatorV1), iObservingUid(aUid) { //nothing to do } // 2nd phase constructor void CStateVarObserver::ConstructL() { iTelephony = CTelephony::NewL(); // Add this active object to the active scheduler CActiveScheduler::Add(this); } void CStateVarObserver::StartL() { if ( iObservingUid == KUidNetworkStrength ) {
// 获取手机信号强度 iTelephony.GetSignalStrength(iStatus, iSigStrengthV1Pckg); } else if ( iObservingUid == KUidBatteryBars ) {
// 获取手机电量信息 iTelephony.GetBatteryInfo(iStatus,iBatteryInfoV1Pckg); } else if ( iObservingUid == KUidChargerStatus ) {
// 获取手机的指示器信息,详见SDK iTelephony.GetIndicator(iStatus, iIndicatorV1Pckg); } else { User::Leave(KErrNotSupported); } SetActive(); } // Handles request completion - called by the Active Scheduler void CStateVarObserver::RunL() { if( iStatus.Int() != KErrNone ) { //TODO error handling return; } //Read once, now register to observe changes if ( iObservingUid == KUidNetworkStrength ) { iObservedValue = iSigStrengthV1.iBar; iTelephony.NotifyChange(iStatus,CTelephony::ESignalStrengthChange, iSigStrengthV1Pckg); } else if ( iObservingUid == KUidBatteryBars ) { // iBatteryInfoV1.iChargeLevel gives k*14 ( k = {0,1,2,3,4,5,6,7} ) iObservedValue = iBatteryInfoV1.iChargeLevel; iTelephony.NotifyChange(iStatus,CTelephony::EBatteryInfoChange, iBatteryInfoV1Pckg); } else if ( iObservingUid == KUidChargerStatus ) { //this same technique can be used to see if there's //network available (with KIndNetworkAvailable) //and if there's a call in progress (KIndCallInProgress) if(iIndicatorV1.iIndicator & CTelephony::KIndChargerConnected) { iObservedValue = 1; } else { iObservedValue = 0; } iTelephony.NotifyChange(iStatus,CTelephony::EIndicatorChange, iIndicatorV1Pckg); } else { //TODO error handling } SetActive(); } // Cancel outstanding request - called by Cancel() void CStateVarObserver::DoCancel() { if ( iObservingUid == KUidNetworkStrength ) { iTelephony.CancelAsync(CTelephony::EGetSignalStrengthCancel); iTelephony.CancelAsync(CTelephony::ESignalStrengthChangeCancel); } else if ( iObservingUid == KUidBatteryBars ) { iTelephony.CancelAsync(CTelephony::EGetBatteryInfoCancel); iTelephony.CancelAsync(CTelephony::EBatteryInfoChangeCancel); } else if ( iObservingUid == KUidChargerStatus ) { iTelephony.CancelAsync(CTelephony::EGetIndicatorCancel); iTelephony.CancelAsync(CTelephony::EIndicatorChangeCancel); } }
相关文章推荐
- Android 获取 Wifi 信号强度,检测是 Wifi 或者流量,获取手机电池电量及充电状态
- Android 获取 Wifi 信号强度,检测是 Wifi 或者流量,获取手机电池电量及充电状态
- android 获取手机GSM/CDMA信号信息,并获得基站信息的方法
- 高德地图远程获取手机的敏感信息可远程命令执行(可以远程利用非webview)
- android利用ContentResolver访问者获取手机联系人信息
- Cocos2dx 获取安卓手机网络类型及强度,电量等信息
- 有时候需要统计手机的型号和版本号,利用程序可以获取到相应的手机信息.
- 获取手机电量信息
- 【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)
- vc++如何获取笔记本电源电量信息以及充电状态
- 获取当前手机的电池充电状态以及当前的电量
- Android 获取手机型号、信号强度、厂商等信息
- 【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)
- Android获取到手机信号强度信息后传回给unity
- Android基站定位——通过手机信号获取基站信息(一)
- Android基站定位——通过手机信号获取基站信息(一)
- 手机信息的获取(手机IMEI,手机sim卡的IMSI,网络类型(WiFi,LTE(即4G)等),信号强度(蜂窝网络非WiFi),经纬度)
- android 3G 手机信号 信息获取
- [转]android 获取手机GSM/CDMA信号信息
- Android基站定位——通过手机信号获取基站信息(一)