异步方法请求之AO检测系统响铃

Symbian 活动对象实例----异步方法请求,检测系统响铃的状态的变化:当系统响铃状态变化(如过期等)时,系统将会调用活动对象中的RunL方法。

 

.h头文件

#ifndef CALARMNOTIFIER_H_
#define CALARMNOTIFIER_H_

#include <e32base.h>
#include <ASCliSession.h>

class CZDNoteAlarmNotifier: public CActive
	{
	
public:
	virtual void RunL();
	void StartL();

public:
	static CZDNoteAlarmNotifier* NewL();
	
	CZDNoteAlarmNotifier();
	void ConstructL();
	
public:
	virtual ~CZDNoteAlarmNotifier();

private:
	virtual void DoCancel();	

private:
	RASCliSession iAlarmServer;
	TAlarmId iAlarmId;
		};

#endif /* CALARMNOTIFIER_H_ */


.cpp实现文件

#include "AlarmNotifier.h"

CZDNoteAlarmNotifier* CZDNoteAlarmNotifier::NewL()
	{
	CZDNoteAlarmNotifier* self = new (ELeave) CZDNoteAlarmNotifier();
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);
	
	return self;
	}

CZDNoteAlarmNotifier::CZDNoteAlarmNotifier():CActive(0)
	{
	// TODO Auto-generated constructor stub
	User::LeaveIfError(iAlarmServer.Connect());
	CActiveScheduler::Add(this); //将自己加入到活动规划器中(调用此方法应确保活动规划器已经开启)	   	
	}

void CZDNoteAlarmNotifier::ConstructL()
	{	
	}

void CZDNoteAlarmNotifier::RunL()
	{
	if(iStatus == EAlarmChangeEventTimerExpired)
	{ //如果响铃时间过期,则进行相应的操作
	}
	
	StartL();       //监听下一个系统响铃的状态
	}

void CZDNoteAlarmNotifier::StartL()
	{	
	Cancel(); //取消异步函数请求
	iStatus = KRequestPending;  //重置为初始状态
	iAlarmServer.NotifyChange(iStatus, iAlarmId);
	SetActive(); 
	}

void CZDNoteAlarmNotifier::DoCancel()
	{
	iAlarmServer.NotifyChangeCancel();	
	iAlarmServer.Close();
	}

CZDNoteAlarmNotifier::~CZDNoteAlarmNotifier()
	{
	// TODO Auto-generated destructor stub
	Cancel();   //Cancel方法会调用DoCancel()方法来释放资源
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值