编程实现针对S60手机的自动开机

来源:互联网 发布:linux 文件大小的单位 编辑:程序博客网 时间:2024/04/29 03:17
编程实现针对S60手机的自动开机

S60手机的Clock可以设置闹钟,时间到时会自动开机报警,完了询问是否开机。

  我测了一下它是用"Alarm Server"实现的,因此想法是自己向"Alarm Server"写一个"Clock Alarm",这就等于编程设计了闹钟。缺陷是如果用户选"否"那就没办法了。

  下面的代码参考自:
http://db.cs.helsinki.fi/~mraento/lxr/source/ContextSensors/src/log_alarm.cpp

  已经在S60 SDK 2.1的仿真器上测试通过。

// .mmp
//...
LIBRARY ealwl.lib


// .cpp
#include <t32alm.h> // for RAlarmServer
// ...
RAlarmServer iAlarmServer; // forgive me
TInt err = iAlarmServer.Connect();
if(err==KErrNone)
    {
    CleanupClosePushL(iAlarmServer);
    TAlarmInfo info;
    TAlarmSetState state;
    TInt i, err=-1;

/* 打开这段注释则设置了一个闹钟
    TTime t; // target time
    TFileName f; // sound file name
    iAlarmServer.SetClockAlarm(0, t, f, f, EAlarmClockOnce);
*/
    // 下面这段代码检索已设置的闹钟
    CAlarmIdArray* ids = new(ELeave) CAlarmIdArray(8);
    CleanupStack::PushL(ids);
    iAlarmServer.AlarmArrayPopulateL((*ids), RAlarmServer::EArrayNext, 8);
    for (i=0; i<ids->Count(); i++)
        {
        TInt id = ids->At(i);
        err=iAlarmServer.AlarmInfo(info, RAlarmServer::EInfoById, id);
        if (err==KErrNone )
            { // query the clock alarm info
            state=iAlarmServer.AlarmState(info.iAlarmId);
            if (state!=EAlarmNotSet && state!=EAlarmDisabled)
                break;
            }
        }
    CleanupStack::PopAndDestroy(); // ids
    CleanupStack::PopAndDestroy(); // iAlarmServer
    }
 
原创粉丝点击