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

📄 mymedia.step3

📁 高通 BREW 培训 实用例子
💻 STEP3
📖 第 1 页 / 共 2 页
字号:
			  break;
		  }
		  return TRUE;

        // A key was pressed. Look at the wParam above to see which key was pressed. The key
        // codes are in AEEVCodes.h. Example "AVK_1" means that the "1" key was pressed.
        case EVT_KEY:
		  //When the user press clear key and the current page is not the main menu, it should be returned to the main menu.
		  if((wParam == AVK_CLR) && (pMe->status != STATUS_MAINMENU)) 
		  {
			  if(pMe->pAbout)
			  {
				  ISTATIC_Release(pMe->pAbout);
				  pMe->pAbout = NULL;
			  }

			  if(pMe->pHelp)
			  {
				  ISTATIC_Release(pMe->pHelp);
				  pMe->pHelp = NULL;
			  }

			  if(pMe->pImage)
			  {
				  IIMAGE_Stop(pMe->pImage);
				  IIMAGE_Release(pMe->pImage);
				  pMe->pImage = NULL;
				  //lab 2
				  IMEDIA_Stop(pMe->pMedia);
				  IMEDIA_Release(pMe->pMedia);
				  pMe->pMedia = NULL;
				  pMe->flag = 1;   // do not replay the music 
				  // end of lab 2
			  }
			  
			  IMENUCTL_Redraw(pMe->pMenu);
			  IMENUCTL_SetActive(pMe->pMenu,TRUE);
			  pMe->status = STATUS_MAINMENU;
			  return TRUE;
		  }
		  else //When the user press clear key and the current page is main menu, the application should exit.
			  return FALSE;

		case EVT_COMMAND:
		  if(IMENUCTL_IsActive(pMe->pMenu))
		  {
			  item = IMENUCTL_GetSel (pMe->pMenu);
			  switch(item)
			  {
			  case ID_ENTER:  // Display the running dog on the screen with the music
				  DisplayDog(pMe);
				  break;
			  case ID_HELP:
				  DisplayHelp(pMe);
				  break;
			  case ID_ABOUT:  // Display the information about this application
				  DisplayAbout(pMe);
				  break;
			  default:
				  break;
			  }
			  return TRUE;
		  }
		  else 
			  return FALSE;
		  
        // If nothing fits up to this point then we'll just break out
        default:
            break;
   }

   return FALSE;
}


// this function is called when your application is starting up
boolean mymedia_InitAppData(mymedia* pMe)
{
    // Get the device information for this handset.
    // Reference all the data by looking at the pMe->DeviceInfo structure
    // Check the API reference guide for all the handy device info you can get
    pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo);
    ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->DeviceInfo);

    // The display and shell interfaces are always created by
    // default, so we'll asign them so that you can access
    // them via the standard "pMe->" without the "a."
    pMe->pIDisplay = pMe->a.m_pIDisplay;
    pMe->pIShell   = pMe->a.m_pIShell;

	pMe->status = 0;
	pMe->pMenu = NULL;
	pMe->pAbout = NULL;
	pMe->pHelp = NULL;
	pMe->pImage = NULL;
	// lab 1
	pMe->pMedia = NULL;
	// end of lab 1


    // if there have been no failures up to this point then return success
    return TRUE;
}

// this function is called when your application is exiting
void mymedia_FreeAppData(mymedia* pMe)
{
	if(pMe->pMenu)
		IMENUCTL_Release(pMe->pMenu);
	if(pMe->pAbout)
		ISTATIC_Release(pMe->pAbout);
	if(pMe->pHelp)
		ISTATIC_Release(pMe->pHelp);
	if(pMe->pImage)
		IIMAGE_Release(pMe->pImage);
	// lab 1
	if(pMe->pMedia)
		IMEDIA_Release(pMe->pMedia);
	// end of lab 1
}

static void BuildMainMenu(mymedia* pMe)
{
	if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MENUCTL,(void**)&pMe->pMenu) != SUCCESS)
		return ;

	IMENUCTL_SetTitle(pMe->pMenu,MYMEDIA_RES_FILE,IDS_TITLE,NULL);

	IMENUCTL_AddItem(pMe->pMenu,MYMEDIA_RES_FILE,IDS_ENTER,ID_ENTER,NULL,0);
	IMENUCTL_AddItem(pMe->pMenu,MYMEDIA_RES_FILE,IDS_HELP,ID_HELP,NULL,0);
	IMENUCTL_AddItem(pMe->pMenu,MYMEDIA_RES_FILE,IDS_ABOUT,ID_ABOUT,NULL,0);

	IMENUCTL_SetActive(pMe->pMenu,TRUE);
	pMe->status = STATUS_MAINMENU;
}

static void DisplayDog(mymedia* pMe)
{
	pMe->status = STATUS_ENTER;
	IMENUCTL_SetActive(pMe->pMenu,FALSE);

// lab 2
	pMe->flag = 0;
	pMe->TickTime = 0;
	PlayMusic(pMe);
// end of lab 2

	PlayImage(pMe);
}

static void DisplayAbout(mymedia* pMe)
{
	AEERect       rect;
    AECHAR        title[12];
	AECHAR        data[80];

	pMe->status = STATUS_ABOUT;
	IMENUCTL_SetActive(pMe->pMenu,FALSE);
	IDISPLAY_ClearScreen(pMe->pIDisplay );
	if(!pMe->pAbout)
	{
		if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_STATIC,(void**)&pMe->pAbout) != SUCCESS)
			return ;
	}
	SETAEERECT(&rect,0,0,pMe->DeviceInfo.cxScreen,pMe->DeviceInfo.cyScreen);
    ISTATIC_SetRect(pMe->pAbout,&rect);

	ISHELL_LoadResString(pMe->pIShell,MYMEDIA_RES_FILE,IDS_ABOUT,title,sizeof(title));
	ISHELL_LoadResString(pMe->pIShell,MYMEDIA_RES_FILE,IDS_ABOUT_DATA,data,sizeof(data));
	ISTATIC_SetText(pMe->pAbout,title,data,AEE_FONT_BOLD,AEE_FONT_NORMAL);
	ISTATIC_SetActive(pMe->pAbout,TRUE);
	ISTATIC_Redraw(pMe->pAbout);
}

static void DisplayHelp(mymedia* pMe)
{
	AEERect       rect;
	AECHAR        title[24];
	IImage        *pImage;

	IMENUCTL_SetActive(pMe->pMenu,FALSE);
	IDISPLAY_ClearScreen(pMe->pIDisplay );
	if(!pMe->pHelp)
	{
		if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_STATIC,(void**)&pMe->pHelp) != SUCCESS)
			return ;
	}
	ISTATIC_SetProperties(pMe->pHelp,ST_ICONTEXT);
	SETAEERECT(&rect,0,0,pMe->DeviceInfo.cxScreen,pMe->DeviceInfo.cyScreen);
    ISTATIC_SetRect(pMe->pHelp,&rect);

	ISHELL_LoadResString(pMe->pIShell,MYMEDIA_RES_FILE,IDS_HELP,title,sizeof(title));
	pImage = ISHELL_LoadResImage(pMe->pIShell,MYMEDIA_RES_FILE,IDB_HELP);
	ISTATIC_SetText(pMe->pHelp,title,(AECHAR*)pImage,AEE_FONT_BOLD,AEE_FONT_NORMAL);
	ISTATIC_Redraw(pMe->pHelp);
	IIMAGE_Release(pImage);
	pMe->status = STATUS_HELP;
}

// lab 2
static void MediaCallback(mymedia* pMe,AEEMediaCmdNotify *data)
{
	switch(data->nCmd)
	{
	case MM_CMD_PLAY:
		switch(data->nStatus)
		{
		case MM_STATUS_DONE:
			pMe->TickTime = 0;
			if(!pMe->flag)          //in order to play the music again
				IMEDIA_Play(pMe->pMedia);
			break;
		case MM_STATUS_TICK_UPDATE:
			pMe->TickTime++;
			break;
		case MM_STATUS_START:
		    IMEDIA_FastForward(pMe->pMedia,pMe->TickTime*1000);
			break;
		}
		break;
	default:
		break;
	}
}
// end of lab 2

static void PlayImage(mymedia* pMe)
{
	uint16        x,y;
	AEEImageInfo  ImageInfo;

	  IDISPLAY_ClearScreen(pMe->pIDisplay);

	  pMe->pImage = ISHELL_LoadResImage(pMe->pIShell,MYMEDIA_RES_FILE,IDB_DOG);
	  if(pMe->pImage)
	  {
		  IIMAGE_GetInfo(pMe->pImage,&ImageInfo);
		  x = (pMe->DeviceInfo.cxScreen - ImageInfo.cx)/2;
		  y = (pMe->DeviceInfo.cyScreen - ImageInfo.cy)/2;

		  IIMAGE_Start(pMe->pImage,x,y);
	  }

	  IDISPLAY_Update(pMe->pIDisplay);
}

// lab 2
static void PlayMusic(mymedia* pMe)
{
      AEEMediaData  music;

	  if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MEDIAMIDI,(void**)&pMe->pMedia) != SUCCESS)
		  return ;
	  music.clsData = MMD_FILE_NAME;
	  music.pData = "sample.mid";
	  music.dwSize = 0;
	  IMEDIA_SetMediaData(pMe->pMedia,&music);
	  IMEDIA_RegisterNotify(pMe->pMedia,(PFNMEDIANOTIFY)MediaCallback,pMe);
	  IMEDIA_Play(pMe->pMedia);
}
// end of lab 2

⌨️ 快捷键说明

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