开机自启动程序

    技术2022-05-20  64

    昨天做了个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);


    最新回复(0)