昨天做了个brew开机自启动的demo,在此记下该程序的要点。
BREW平台可以做到开机就自启动BREW 应用,这需要在MIF中做如下设置:
Advanced Applet Information中:
增加一个Notification:AEECLSID_SHELL
设置Notififer:AEECLSID_SHELL
设置Mask: NMASK_SHELL_INIT
设置了开机自启动特性的应用在开机后会收到NMASK_SHELL_INIT notification,做为后台应用,需要处理此notification消息,
此过程使应用进入后台状态,如下:
static boolean MyApp_HandleEvent(CAm321App* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
switch (eCode)
{
case EVT_NOTIFY:
AEENotify* pNotify = (AEENotify*) dwParam;
uint32 MyNMask;
if (pNotify && (pNotify->cls == AEECLSID_SHELL)) // event sender
{
MyNMask = NMASK_SHELL_INIT;
if ((pNotify->dwMask & MyNMask) == MyNMask)
{
// 进入后台
pMe->m_bGoBg = TRUE;
ISHELL_CloseApplet(pMe->a.m_pIShell, FALSE);
}
}
} // end switch
} // end MyApp_HandleEvent
上面ISHELL_CloseApplet()的调用会使应用进行“退出“的工作,这时,应用会收到EVT_APP_STOP 事件,在此事件中,
应用必须如下处理,才能进入最终后台状态,否则就会永远退出应用。
case EVT_APP_STOP:
if(pMe->m_bGoBg)
{
// goto background
*((boolean*) dwParam) = FALSE; // set dwParam to run app in background
}
else
{
// will end completely
}
return(TRUE);