⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changewallpaper.c

📁 自动切换墙纸 MOTO 手机ELF 需载补丁
💻 C
字号:

#include "Changewallpaper.h"
UINT32              evcode_base;

BOOL  exitN = FALSE;

UINT8 bLock=0;

const char app_name[APP_NAME_LEN] = "Chwallpaper"; 



const EVENT_HANDLER_ENTRY_T any_state_handlers[] =
{    
   { 0x0781,                    Setwallpaper},

    { EV_KEY_PRESS,             HandleKeypress },
    { EV_KEY_RELEASE,           HandleKeyrelease },
    
    { STATE_HANDLERS_END,           NULL           },
};

const EVENT_HANDLER_ENTRY_T main_state_handlers[] =
{
    { STATE_HANDLERS_END,           NULL           },
};


static const STATE_HANDLERS_ENTRY_T state_handling_table[] =
{
    { HW_STATE_ANY,               
      NULL,                       
      NULL,                      
      any_state_handlers              },

    { HW_STATE_MAIN,
      MainStateEnter,
      NULL,
      main_state_handlers
    }

};


UINT32 Register( char* file_uri,  char* param,  UINT32 reserve )
{
    UINT32 status = RESULT_OK;
    evcode_base = reserve;    
    


    status = APP_Register( &evcode_base,            
                           1,                       
                           state_handling_table,                               HW_STATE_MAX,                                       (void*)HelloWorldStart );                      
    UtilLogStringData(" *** ELF *** HelloWorld: Register status %d", status);
    
    LdrStartApp(reserve);   
    
    return 1;   
}



UINT32 HelloWorldStart( EVENT_STACK_T *ev_st,  REG_ID_T reg_id,  UINT32 param2 )//void *reg_hdl )
{
    APP_HELLOWORLD_T     *app = NULL;
    UINT32 status = RESULT_OK;
    
    UtilLogStringData(" *** ELF *** HelloWorld: HelloWorldStart");

   
    if( AFW_InquireRoutingStackByRegId( reg_id ) == RESULT_OK )
    {
        return RESULT_FAIL;     }
    else
    {
       
        app = (APP_HELLOWORLD_T*)APP_InitAppData( (void *)APP_HandleEventPrepost, 
                                                  sizeof(APP_HELLOWORLD_T), 
                                                  reg_id,
                                                  0, 1,
                                                  1,
                                                  2, 0, 0 );
                                                  
        UtilLogStringData(" *** ELF *** HelloWorld: APP_InitAppData 0x%X", app);
        status = APP_Start( ev_st,
                            &app->apt,
                            HW_STATE_MAIN,                             state_handling_table,
                            HelloWorldExit,
                            app_name,
                            0 );

        UtilLogStringData(" *** ELF *** Menu_cmd: APP_Start 0x%X", status);
             
    }

    return RESULT_OK;
}



UINT32 HelloWorldExit( EVENT_STACK_T *ev_st,  void *app )
{
    UINT32  status;
   
    status = APP_Exit( ev_st, app, 0 );
    
     DL_AudPlayTone(1, 2);
     
    LdrUnloadELF(&Lib); 
    return status;
}


UINT32 MainStateEnter( EVENT_STACK_T *ev_st,  void *app,  ENTER_STATE_TYPE_T type )
{    
    return RESULT_OK;
}


UINT32 HandleKeypress( EVENT_STACK_T *ev_st,  void *app )
{
    EVENT_T     *event = AFW_GetEv(ev_st);
    
	if ( namecmp( "49R", (char*)LdrGetFirmwareMinorVersion() ) == 1) DL_DbFeatureGetCurrentState( 0x7F3, &bLock );
	if ( namecmp( "79R", (char*)LdrGetFirmwareMinorVersion() ) == 1) DL_DbFeatureGetCurrentState( 0x86A, &bLock );
	
    if(event->data.key_pressed == 11)
	{
		    if(exitN == TRUE && bLock==0)  HelloWorldExit(ev_st,app );			
	}	
       
   else
   
  {       
        exitN =FALSE;   
  }
    return RESULT_OK;
}

UINT32 HandleKeyrelease( EVENT_STACK_T *ev_st,  void *app )
{
    EVENT_T     *event = AFW_GetEv(ev_st);

     if(event->data.key_pressed == 10)
	  {
		      if(exitN == FALSE)  exitN = TRUE;
			         
    }
	   else
	  {	  
		    exitN = FALSE;	
	  }
	
	
    return RESULT_OK;
}



UINT32 Setwallpaper(EVENT_STACK_T *ev_st,  void *app  )
{   
    
    UINT16 *IDURL;
    UIS_SETWALLPAPER_SETTINGS_T wset;
  
       
      
         DL_FsGetIDFromURI(FS_search_test(ev_st,app),IDURL);
      
         DL_DbFeatureStoreBlock(0xAAD,IDURL,8);
      
         wset.url=FS_search_test(ev_st,app);
         wset.unk=0;
      
         UIS_SetWallpaper(&wset);        
  
        return RESULT_OK;
}        

WCHAR * FS_search_test(EVENT_STACK_T *ev_st,  void *app )
{
FS_SEARCH_PARAMS_T fs_param;
FS_SEARCH_RESULT_T fs_result[50];    
FS_SEARCH_HANDLE_T fs_handle;
UINT16 res_count, count,index ; 
WCHAR search_string[] = L"file://b/mobile/picture/edy/\xFFFE*.jpg"; 
fs_param.flags = 0x1C; 
fs_param.attrib = 0x00;
fs_param.mask = 0x00; 
DL_FsSSearch( fs_param, search_string, &fs_handle, &res_count, 0x0);   
if(res_count == 0)
{
    return NULL;
}
count = res_count;
  
  
if(count > 50)count = 1;
        
  index=rand()%(count);
  

DL_FsSearchResults(fs_handle, 0x0, &count, &fs_result[0]);

DL_FsSearchClose(fs_handle);
return fs_result[index].name;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -