封装CTelephoney的方法,包括获取IMEI,IMSI,品牌,型号,打电话功能(转)

标题: 封装CTelephoney的方法,包括获取IMEI,IMSI,品牌,型号,打电话功能 [打印本页]
作者: 鬼人王    时间: 2009-8-5 16:56     标题: 封装CTelephoney的方法,包括获取IMEI,IMSI,品牌,型号,打电话功能

本帖最后由 鬼人王 于 2009-8-6 17:11 编辑 

在学Symbian之处,在Nokia论坛上获得陈子腾大侠的获取IMEI的方法,然后怎加些常用功能,帮助新手。。
头文件:
  1. #ifndef MYTELEPHONY_H
  2. #define MYTELEPHONY_H

  3. #include <e32base.h>
  4. #include <Etel3rdParty.h>

  5. class CMyTelephony : public CActive
  6.     {
  7. public:
  8.     static void GetIMSIL(TDes& aIMSI);
  9.     static void GetIMEIL(TDes& aIMEI);
  10.     static void GetPhoneType(TDes& aPhoneType);
  11.     static void DialPhone(const TDesC& aPhoneId);
  12.     static CMyTelephony* NewL();
  13. protected:
  14.     void DoCancel();
  15.     void RunL();

  16. private:
  17.     static CMyTelephony* NewLC();

  18.     ~CMyTelephony();
  19.     CMyTelephony();
  20.     void ConstructL();

  21.     void GetSubscriberId();
  22.     void GetPhoneId();

  23. private:
  24.     CTelephony* iTelephony;
  25.     CTelephony::TCancellationRequest iRequest;
  26.     CTelephony::TSubscriberIdV1 iSubscriberId;
  27.     CTelephony::TSubscriberIdV1Pckg iSubscriberIdPckg;
  28.     CTelephony::TPhoneIdV1 iPhoneId;
  29.     CTelephony::TPhoneIdV1Pckg iPhoneIdPckg;  
  30.     CTelephony::TCallId iCallId;
  31.     TBuf<32> iPhoneType;
  32. public :
  33.     void DialNewCall(const TDesC& aTelNumber);
  34.     };

  35. #endif // MYTELEPHONY_H
复制代码

作者: 鬼人王     时间: 2009-8-5 16:57

源文件:
  1. // MyTelephony.cpp
  2. //
  3. #include <e32svr.h>
  4. #include "MyTelephony.h"
  5. #include <f32file.h>

  6. class CTelephony;
  7. CMyTelephony* CMyTelephony::NewLC()
  8.         {
  9.         CMyTelephony* self = new (ELeave) CMyTelephony;
  10.         CleanupStack::PushL(self);
  11.         self->ConstructL();
  12.         return self;
  13.         }

  14. CMyTelephony* CMyTelephony::NewL()
  15.         {
  16.         CMyTelephony* self = CMyTelephony::NewLC();
  17.         CleanupStack::Pop(self);
  18.         return self;
  19.         }

  20. void CMyTelephony::GetIMSIL(TDes& aIMSI)
  21.         {
  22. #ifdef __WINS__
  23.         CMyTelephony* telephony = CMyTelephony::NewL();
  24.         telephony->GetSubscriberId();
  25.         aIMSI = telephony->iSubscriberId.iSubscriberId;
  26.         
  27.         delete telephony;
  28. #else
  29.         _LIT(KDebugIMSI, "000000000000000");
  30.         aIMSI = KDebugIMSI;
  31. #endif
  32.         }

  33. void CMyTelephony::GetIMEIL(TDes& aIMEI)
  34.         {
  35. #ifndef __WINS__ //真实设备 This only works on target machine
  36.         CMyTelephony* telephony = CMyTelephony::NewL();
  37.         telephony->GetPhoneId();
  38.         aIMEI = telephony->iPhoneId.iSerialNumber;

  39.         delete telephony;
  40. #else //模拟器 Return a fake IMEI when working onemulator
  41.         _LIT(KEmulatorImei, "000000000000000");
  42.         aIMEI=KEmulatorImei;
  43. #endif
  44.         }

  45. void CMyTelephony::GetPhoneType(TDes& aPhoneType)
  46.         {
  47. #ifndef __WINS__
  48.         CMyTelephony* telephony = CMyTelephony::NewL();
  49.         telephony->GetPhoneId();
  50.         aPhoneType.Copy(telephony->iPhoneId.iManufacturer);
  51.         aPhoneType.Append(telephony->iPhoneId.iModel);        
  52.         
  53.         delete telephony;
  54. #else //模拟器 Return a fake IMEI when working onemulator
  55.         _LIT(KPhoneType, "Nokia5500d");
  56.         aPhoneType=KPhoneType;
  57. #endif
  58.         }

  59. void CMyTelephony::DialPhone(const TDesC& aPhoneId)
  60.         {
  61. #ifndef __WINS__ //真实设备 This only works on target machine
  62.         CMyTelephony* telephony = CMyTelephony::NewLC();
  63.         telephony->DialNewCall(aPhoneId);

  64. #else //模拟器 Return a fake IMEI when working onemulator
  65. #endif
  66.         }
  67. void CMyTelephony::DoCancel()
  68.         {
  69.         iTelephony->CancelAsync(iRequest);
  70.         iTelephony->CancelAsync(CTelephony::EDialNewCallCancel);
  71.         }

  72. void CMyTelephony::RunL()
  73.         {
  74.         CActiveScheduler::Stop();
  75.         }

  76. CMyTelephony::~CMyTelephony()
  77.         {
  78.         delete iTelephony;
  79.         }

  80. CMyTelephony::CMyTelephony() :
  81.         CActive(CActive::EPriorityStandard), iSubscriberIdPckg(iSubscriberId),
  82.                         iPhoneIdPckg(iPhoneId)
  83.         {
  84.         CActiveScheduler::Add(this);
  85.         }

  86. void CMyTelephony::ConstructL()
  87.         {
  88.         iTelephony = CTelephony::NewL();
  89.         }

  90. void CMyTelephony::GetSubscriberId()
  91.         {
  92.         Cancel();
  93.         iRequest = CTelephony::EGetSubscriberIdCancel;
  94.         iTelephony->GetSubscriberId(iStatus, iSubscriberIdPckg);
  95.         SetActive();
  96.         CActiveScheduler::Start();
  97.         }

  98. void CMyTelephony::GetPhoneId()
  99.         {
  100.         Cancel();
  101.         iRequest = CTelephony::EGetPhoneIdCancel;
  102.         iTelephony->GetPhoneId(iStatus, iPhoneIdPckg);
  103.         SetActive();
  104.         CActiveScheduler::Start();
  105.         }

  106. /*void CMyTelephony::GetType()
  107.         {
  108.         _LIT(KPath,"z:\\resource\\versions\\model.txt");
  109.         Cancel();

  110.         RFs fs;
  111.         RFile typeFile;
  112.         User::LeaveIfError(fs.Connect());
  113.         TFileText myFile;
  114.         User::LeaveIfError(typeFile.Open(fs, KPath, EFileShareReadersOnly));

  115.         // Read from position 0: start of file
  116.         myFile.Set(typeFile);
  117.         myFile.Read(iPhoneType); // readBuf1 is now "write "

  118.         fs.Close();
  119.         SetActive();
  120.         CActiveScheduler::Start();
  121.         }*/
  122. /*
  123. * 拨打电话
  124. * */
  125. void CMyTelephony::DialNewCall(const TDesC& aTelNumber)
  126.         {
  127.         CTelephony::TTelNumber telNumber(aTelNumber);
  128.         CTelephony::TCallParamsV1 callParams;
  129.         callParams.iIdRestrict = CTelephony::ESendMyId;
  130.         CTelephony::TCallParamsV1Pckg callParamsPckg(callParams);
  131.         iTelephony->DialNewCall(iStatus, callParamsPckg, telNumber, iCallId);
  132.         SetActive();
  133.         }

转载于:https://www.cnblogs.com/yaoliang11/archive/2010/11/20/1882672.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值