监测闹铃

来源:互联网 发布:淘宝 库客运动 编辑:程序博客网 时间:2024/04/30 12:03


CS001120
 开发伙伴平台:
S60 3rd Edition

 详细描述
RASCliSession提供了一个简单有效的方法可以用来检测闹铃服务事件。包括对闹铃的修改事件触发等。这里包括时钟和日历闹铃的处理。

这个代码片段需要ReadUserData, WriteUserData, ReadDeviceData和WriteDeviceData能力。这里光自签名是执行不了的需要开发者证书才行。

Contents
[hide]
 1 MMP文件
 2 头文件
 3 源文件
 4 后记

[edit] MMP文件
需要下列能力和链接库:
CAPABILITY ReadUserData WriteUserData ReadDeviceData WriteDeviceData
 
LIBRARY alarmclient.lib LIBRARY alarmshared.lib

[edit] 头文件
#include <e32base.h>
 #include <ASCliSession.h>
 
 class CCalAlarmObserver : public CActive
  {
 public:
    void ConstructL();
    CCalAlarmObserver();
    ~CCalAlarmObserver();
 protected:
  void DoCancel();
    void RunL();
 private:
  void StartMonitoring();
 private:
  MMyLogCallBack& iCallBack;
  RASCliSession iASCliSession;
  TAlarmId   iAlarmId;
 };
[edit] 源文件
#include <ASShdDefs.h>
 #include <ASShdAlarm.h>
 
 CCalAlarmObserver::CCalAlarmObserver():CActive(EPriorityStandard)
  {}
 
 CCalAlarmObserver::~CCalAlarmObserver()
 {
   Cancel();
  iASCliSession.Close();
 }
 
 void CCalAlarmObserver::ConstructL()
 {
   CActiveScheduler::Add(this);
   iASCliSession.Connect();
   StartMonitoring();
 }
 
 void CCalAlarmObserver::StartMonitoring()
 {
  iASCliSession.NotifyChange(iStatus, iAlarmId);
  SetActive();
 }
 
 void CCalAlarmObserver::RunL()
 {  
     switch(iStatus.Int())
     {
     case EAlarmChangeEventState:
    break;
  case EAlarmChangeEventStatus:
    break;
  case EAlarmChangeEventCharacteristics:
    break;
  case EAlarmChangeEventAlarmDeletion:
    break;
  case EAlarmChangeEventAlarmAddition:
    break;
  case EAlarmChangeEventTimerExpired:
    break;
  //.... Check other states is needed
     default:
        break;
     };
 
  TASShdAlarm allarm;
  if(iASCliSession.GetAlarmDetails(iAlarmId,allarm) == KErrNone)
  {
   // allarm.Status()
   // allarm.State()
   // allarm.NextDueTime()
   // ...
     }
 
  StartMonitoring();
 }
 
 void CCalAlarmObserver::DoCancel()
 {
  iASCliSession.NotifyChangeCancel();
 }

[edit] 后记
当你开始监测后,每个事件都会调用RunL函数,其中iStatus为可能的错误代码。但这里iStatus为非负数,表示事件状态。
这里的闹铃ID存储的是闹铃id变量,当调用NotifyChange时将会给闹铃服务。使用这个ID我们可以获得闹铃的详细信息。

 

原创粉丝点击