zoukankan      html  css  js  c++  java
  • 封装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.         }
  • 相关阅读:
    Js操作Select大全
    Mybatis 中获得 connection
    A②权限管理角色列表——ui效果;表格展开列;添加编辑删除自己写注意点;id的传参
    A③权限管理表格展开得权限思路;删除标签按钮实现思路
    报错记录:vue.runtime.esm.js?2b0e:619 [Vue warn]: Invalid prop: type check failed for prop "data". Expected Array, got Object
    表单校验小tip
    A①权限管理权限列表——git创新分支;请求数据带有参数type;权限等级tag标签;权限管理思路
    网页导航菜单弹出子菜单的制作
    细线表格的制作方法
    下拉的DIV+CSS+JS二级树型菜单,刷新无影响
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1882672.html
Copyright © 2011-2022 走看看