Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3350378
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: C/C++

2009-08-05 10:07:13

监测闹铃

  • 开发伙伴平台:

S60 3rd Edition


  • 详细描述

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


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


Contents

 []

MMP文件

需要下列能力和链接库:

CAPABILITY ReadUserData WriteUserData ReadDeviceData WriteDeviceData 
 
LIBRARY alarmclient.lib LIBRARY alarmshared.lib


头文件

#include  
 #include 
 
 class CCalAlarmObserver : public CActive
  {
 public: 
   	void ConstructL();
   	CCalAlarmObserver();
   	~CCalAlarmObserver();
 protected:
 	void DoCancel();
   	void RunL();
 private: 
 	void StartMonitoring();
 private:
 	MMyLogCallBack&	iCallBack;
 	RASCliSession	iASCliSession;
 	TAlarmId 		iAlarmId;
 };

源文件

#include 
 #include 
 
 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();
 }


后记

当你开始监测后,每个事件都会调用RunL函数,其中iStatus为可能的错误代码。但这里iStatus为非负数,表示事件状态。

这里的闹铃ID存储的是闹铃id变量,当调用NotifyChange时将会给闹铃服务。使用这个ID我们可以获得闹铃的详细信息。

阅读(556) | 评论(0) | 转发(0) |
0

上一篇:监测闹铃

下一篇:alarm 闹钟的监听

给主人留下些什么吧!~~