0
点赞
收藏
分享

微信扫一扫

如何开机启动某个Java应用

陌岛 2023-04-04 阅读 61


某个预置的java应用如果需要开机后马上启动,可以参考如下方法。适用于Pluto的项目。 
[SOLUTION] 
思路: 
1、    客制化java启动入口。 
2、    将入口放置在进入idle后调用。 
参考代码: 
"IdleAdapter.c" 
1. kal_bool first_bootup = KAL_TRUE;  
2. mmi_idle_handle_idle_group_enter()最后 

... 

     if (!is_idle_init_done) 

     { 

         TurnOffBacklight(); 

         StartLEDPatternBackGround(); 

     #if defined(OBIGO_Q03C) && defined(WAP_SUPPORT) 

         MMIProcessActionMsg(); 

     #endif 

         mmi_sim_rearrange_menu_item(); 

     #ifdef __MMI_AUTO_ANSWER_MACHINE__ 

         mmi_autoam_init_statusicon(); 

     #endif 

         is_idle_init_done = MMI_TRUE; 

     } 

      

     if(first_bootup) 

     { 

         first_bootup = KAL_FALSE; 

         my(); 

     } 

     return MMI_RET_OK; 

 }


"JavaAgencyGProt.h" 
3. extern void my_send_mid_getlist_req(int mids_index); 
"JavaAgencySrc.c" 
 
4.

void my_send_mid_getlist_req(int mids_index) 

 { 

     /*----------------------------------------------------------------*/ 

     /* Local Variables                                                */ 

     /*----------------------------------------------------------------*/ 

     mmi_java_mid_getlist_req_struct *msg; 

     g_java.mids_index = mids_index;//The index of running midlet 

     /*----------------------------------------------------------------*/ 

     /* Code Body                                                      */ 

     /*----------------------------------------------------------------*/ 

     if (mmi_java_need_block_msg()) 

     { 

         mmi_java_display_push_busy(); 

         return; 

     } 

 #ifndef __MVM__ 

     if (mmi_java_check_and_display_is_busy()) 

     { 

         return; 

     } 

 #endif /*__MVM__*/ 

     /* sometime will quickly re-entry this function before 

        java handle this message  */ 

     if ((g_java.msg_ctrl & SEND_MID_GET_LIST_CTRL)||(g_java.msg_ctrl & SEND_MIDS_GET_LIST_CTRL)) 

     { 

         return; 

     } 

     else 

     { 

         g_java.msg_ctrl |= SEND_MID_GET_LIST_CTRL; 

     } 

     //must change mids_root 

     if(mmi_wcslen((const U16 *)g_java.mids_info[mids_index].storage_name) < 127) 

     {         

         mmi_wcscpy((U16 *) g_mmi_java_current_selected_mids_root, (const U16

 *)g_java.mids_info[mids_index].storage_name); 

     } 

     else 

     {                  

         mmi_wcsncpy((U16 *) g_mmi_java_current_selected_mids_root, (const U16

 *)g_java.mids_info[mids_index].storage_name, 127); 

     } 

      

     ClearInputEventHandler(MMI_DEVICE_ALL); 

      

     MMI_TRACE(MMI_TRACE_FUNC, MMI_JAVA_SEND_MID_GETLIST_REQ); 

     msg = (mmi_java_mid_getlist_req_struct*)

 OslConstructDataPtr(sizeof(mmi_java_mid_getlist_req_struct)); 

     msg->session_id = 0; 

     msg->game_type = GAMETYPE_JAVA_GAME; 

     msg->extend_mode = KAL_FALSE; 

     msg->mids_id = g_java.mids_info[g_java.mids_index - g_java.mids_info_start].mids_id; 

     mmi_java_send_message(MOD_MMI, MOD_JAM, MMI_J2ME_SAP, 

         MSG_ID_MMI_JAVA_MID_GETLIST_REQ, msg, NULL); 

 } 

  

 "MainMenu.c"


5. #include "JavaAgencyProt.h" 
#include "JavaAgencyGProt.h" 
 
6. 

extern java_context_struct g_java; 

 void my(void){ 

     /*----------------------------------------------------------------*/ 

     /* Local Variables                                                */ 

     /*----------------------------------------------------------------*/ 

     int mids_index = 1;//启动第二个java应用,index从0(第一个java应用)开始 

     /*----------------------------------------------------------------*/ 

     /* Code Body                                                 */ 

     /*----------------------------------------------------------------*/ 

     g_java.mids_info_end = g_java.mids_info_start = -1; 

     g_java.mids_list_filter.filter_type = JAM_NONE_FILTER; 

     needToSendGetListReq = MMI_TRUE; 

     mmi_java_fetch_mids_list(0,(UI_string_type)NULL,(PU8 *)NULL,0); 

     my_send_mid_getlist_req(mids_index); 

 }

举报

相关推荐

0 条评论