亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sound.c

?? b Rew book for brew phone design
?? C
?? 第 1 頁 / 共 2 頁
字號:

/*!
 *	Example program.
 *  Copyright (c) 2004 by BREW Development Team, Zhejiang University.
 *  All Rights Reserved.
 */

/*!-----------------------------------

	@file		sound.c
	@author		TYB
	@brief		程序主文件

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

#include "AEEModGen.h"
#include "AEEAppGen.h"
#include "AEEShell.h"
#include "AEESound.h"
#include "AEEMenu.h"
#include "AEEStdLib.h"
#include "AEEMedia.h"


typedef struct _CSound{

	AEEApplet		a;

	ISound			*pISound;
	ISoundPlayer	*pISoundPlayer;
	IMedia			*pIMedia;
	IMenuCtl		*pIMenu;
	AEESoundToneData*pToneData;
	uint16          nTones;

	uint16			wVolume;		//標記音量大小
	uint32			nPlayTime;
	
}CSound;


#define USAGE_GET				103
#define USAGE_SETDEVICE			104
#define USAGE_PLAYTONE			105
#define USAGE_PLAYTONELIST		106
#define USAGE_PLAYFREQTONE		107
#define USAGE_VIBRATE			109
#define USAGE_SETVOLUMEUP		110
#define USAGE_SETVOLUMEDOWN		111
#define USAGE_GETVOLUME			112
#define USAGE_BEEP				113
#define USAGE_PLAYMP3			114
#define USAGE_PAUSE				115
#define USAGE_RESUME			116
#define USAGE_STOP				117
#define USAGE_FORWARD			118
#define USAGE_REWIND			119
#define USAGE_PLAYQCP			120
#define USAGE_PLAYMIDI			121
#define USAGE_MEDIAPLAY			122
#define USAGE_MEDIASTOP			123
#define USAGE_MEDIAPAUSE		124
#define USAGE_MEDIARESUME		125

#define HIGHFREQ				600
#define LOWFREQ					200

#define PLAY_DURATION1			3000   // In milliseconds
#define PLAY_DURATION2			4000
#define PLAY_DURATION3			5000
#define PLAY_DURATION4			6000

/*!
	Function Prototypes
 */
static boolean	sound_HandleEvent(IApplet * pi,AEEEvent eCode,uint16 wParam,uint32 dwParam);
static boolean	InitData(IApplet* pMe);
static void		FreeAppData(IApplet* pme);

static void		SoundCBFun(void * pUser, AEESoundCmd eCBType, AEESoundStatus eStatus, uint32 dwParam);
static void		MediaCBFun(void * pUser, AEEMediaCmdNotify *pCmdNotify);
static void		SoundPlayerCBFn(void *pUser, AEESoundPlayerCmd eCBType, AEESoundPlayerStatus eStatus, uint32 dwParam);
static void		BuildMainMenu(CSound *pMe);
static void		DisplayOutput(CSound * pMe, char *pszStr);

boolean			SoundPlay(CSound *pme , int16 mark);
void			ExecuteCommand(CSound *pme , int16 wParam);

/*!
	Function Defintions
 */

//--------------------------------------------------------------------------------------

/*!
 *		@brief:		小程序初始化函數
 *		@para:		ClsId小程序的ClassID
 *		@para:		pIShell底層傳遞來的指向IShell接口的指針
 *		@para:		po指向IModule接口的指針
 *		@para:		ppObj用于初始化以后返回AEEApplet結構的指針
 *		@return:	AEE_SUCCESS表示成功,EFAILED表示失敗
 */
int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
	*ppObj = NULL;
	
	if(AEEApplet_New(sizeof(CSound), 
						ClsId, 
						pIShell,
						po,
						(IApplet**)ppObj,
						(AEEHANDLER)sound_HandleEvent,
						(PFNFREEAPPDATA)FreeAppData)){
		if (InitData((IApplet*)*ppObj) == TRUE){
            return(AEE_SUCCESS);
		}
	}
	
	return (EFAILED);
}


/*!
 *		@brief:		消息處理函數
 *		@para:		pi指向IApplet接口的指針
 *		@para:		eCode消息代碼
 *		@para:		wParam是16位的參數
 *		@para:		dwParam是32位的參數
 *		@return:	TRUE表示處理過,FALSE沒有處理
 */
static boolean sound_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
	CSound *pme = (CSound*)pi;
	
	switch (eCode) 
	{
	case EVT_APP_START:  
		if(SUCCESS == ISHELL_CreateInstance(pme->a.m_pIShell, AEECLSID_MENUCTL, (void **)&pme->pIMenu))
		{
			ISHELL_CreateInstance(pme->a.m_pIShell, AEECLSID_SOUND, (void **)&pme->pISound);
			ISHELL_CreateInstance(pme->a.m_pIShell, AEECLSID_SOUNDPLAYER, (void **)&pme->pISoundPlayer);
			ISHELL_CreateInstance(pme->a.m_pIShell, AEECLSID_MEDIAMP3, (void**)&pme->pIMedia);
			BuildMainMenu(pme);
		}
      	return TRUE;

	case EVT_APP_STOP:
		return TRUE;

	case EVT_KEY:
		if(pme->pIMenu != NULL && (IMENUCTL_IsActive(pme->pIMenu) == TRUE))
		{
			return IMENUCTL_HandleEvent(pme->pIMenu, EVT_KEY, wParam, 0);
		}
		else if(pme->pIMenu != NULL && (IMENUCTL_IsActive(pme->pIMenu) == FALSE))
		{
			if(wParam == AVK_CLR)
			{
				// 清除回調函數
				ISOUND_RegisterNotify(pme->pISound, NULL, NULL);
				ISOUNDPLAYER_RegisterNotify(pme->pISoundPlayer, NULL, NULL);
				ISOUND_StopTone (pme->pISound);
				ISOUND_StopVibrate (pme->pISound);
				// 重新回到菜單界面
				IMENUCTL_SetActive(pme->pIMenu, TRUE);
				return TRUE;
			}
		}
		break;

	case EVT_COMMAND:
		ExecuteCommand(pme , wParam);
		return TRUE;
		
	default:
		break;
	}
	return FALSE;
}

/*!
 *		@brief:		初始化函數
 *		@para:		pMe指向IApplet接口的指針
 *		@return:	TRUE表示成功,FALSE表示失敗
 */

static boolean InitData(IApplet* pMe)
{
	if(pMe != NULL){
		CSound *pme	= (CSound*)pMe;
		pme->pIMenu = NULL;
		pme->pISound= NULL;
		pme->pIMedia= NULL;
		pme->pISoundPlayer = NULL;
		pme->pToneData = NULL;
		pme->nTones = 0;
		pme->wVolume= 100;
		return TRUE;
	}
	else
		return FALSE;
}

/*!
 *		@brief:		資源釋放函數
 *		@para:		pMe指向IApplet接口的指針
 */ 

static void FreeAppData(IApplet* pme)
{
	CSound *pMe = (CSound*)pme;
	if(pMe->pIMenu){
		IMENUCTL_Release(pMe->pIMenu);
		pMe->pIMenu = NULL;
	}
	if(pMe->pISound){
		ISOUND_RegisterNotify(pMe->pISound, NULL, NULL);
		ISOUND_StopTone (pMe->pISound);

		if(pMe->pToneData){
			FREE(pMe->pToneData);
			pMe->pToneData = NULL;
			pMe->nTones = 0;
		}
		ISOUND_StopVibrate (pMe->pISound);
		ISOUND_Release(pMe->pISound);
		pMe->pISound = NULL;
	}
	if(pMe->pIMedia) {
		IMEDIA_RegisterNotify(pMe->pIMedia, NULL, NULL);
		IMEDIA_Stop(pMe->pIMedia);
		IMEDIA_Release(pMe->pIMedia);
		pMe->pIMedia = NULL;
	}
	if(pMe->pISoundPlayer) {
		ISOUNDPLAYER_RegisterNotify(pMe->pISoundPlayer, NULL, NULL);
		ISOUNDPLAYER_Stop(pMe->pISoundPlayer);
		ISOUNDPLAYER_Release (pMe->pISoundPlayer);
		pMe->pISoundPlayer = NULL;
	}

}

/*!
 *		@brief:		程序的主要功能模塊
 *		@para:		pme指向CSound結構的指針
 *		@para:		mark標記當前菜單命令編號
 *		@return:	TRUE表示成功,FALSE表示失敗
 */

boolean SoundPlay(CSound *pme , int16 mark)
{
	AEESoundToneData toneData;
	AEESoundInfo sndInfo= {0};
	uint16 wHiFreq		= HIGHFREQ;
	uint16 wLoFreq		= LOWFREQ;
	uint16 wDuration	= PLAY_DURATION3;	
	uint16 w16Duration	= PLAY_DURATION3;
	AEEMediaData mediadata;
	AEESoundPlayerInfo Info;

	Info.pData  = "midi.mid";
	Info.dwSize = 0;
	Info.eInput = SDT_FILE;
	
	mediadata.pData   = "midi.mid";
	mediadata.dwSize  = 0;
	mediadata.clsData = MMD_FILE_NAME;

	if(!pme->pISound || !pme->pIMedia || !pme->pISoundPlayer)
		return FALSE;
	
	//注冊回調函數,以便于和小程序通信
	ISOUND_RegisterNotify(pme->pISound, &SoundCBFun, (void *)pme);
	IMEDIA_RegisterNotify(pme->pIMedia, &MediaCBFun, (void *)pme);
	ISOUNDPLAYER_RegisterNotify(pme->pISoundPlayer, &SoundPlayerCBFn, (void *)pme);

	switch(mark) {

		//播放一個固定聲調
		case USAGE_PLAYTONE:
			toneData.eTone = AEE_TONE_RING_A;
			toneData.wDuration = PLAY_DURATION1;
			ISOUND_PlayTone (pme->pISound, toneData);
			return TRUE;

		//取得當前設備信息
		case USAGE_GET:
			ISOUND_Get (pme->pISound, &sndInfo);
			return TRUE;

		//設置設備的參數
		case USAGE_SETDEVICE:
			sndInfo.eDevice = AEE_SOUND_DEVICE_CURRENT;
			sndInfo.eMethod = AEE_SOUND_METHOD_RING;
			sndInfo.eAPath = AEE_SOUND_APATH_LOCAL;
			sndInfo.eEarMuteCtl = AEE_SOUND_MUTECTL_UNMUTED;
			sndInfo.eMicMuteCtl = AEE_SOUND_MUTECTL_UNMUTED;
			ISOUND_Set(pme->pISound, &sndInfo);
			ISOUND_SetDevice(pme->pISound);
			return TRUE;

		//播放音調列表
		case USAGE_PLAYTONELIST:
			pme->nTones = 4;
			pme->pToneData = MALLOC(sizeof(AEESoundToneData)*pme->nTones);

			pme->pToneData[0].eTone = AEE_TONE_RING_B;
			pme->pToneData[0].wDuration = PLAY_DURATION2;
			
			pme->pToneData[1].eTone = AEE_TONE_RING_A;
			pme->pToneData[1].wDuration = PLAY_DURATION1;
			
			pme->pToneData[2].eTone = AEE_TONE_0;
			pme->pToneData[2].wDuration = PLAY_DURATION2;
			
			pme->pToneData[3].eTone = AEE_TONE_1;
			pme->pToneData[3].wDuration = PLAY_DURATION3;
			
			ISOUND_PlayToneList (pme->pISound, pme->pToneData, pme->nTones);
			return TRUE;

		//播放一個給定高低頻率的音調
		case USAGE_PLAYFREQTONE:
			ISOUND_PlayFreqTone (pme->pISound, wHiFreq, wLoFreq, wDuration);
			return TRUE;

		//產生振動
		case USAGE_VIBRATE:
			ISOUND_Vibrate(pme->pISound, w16Duration);
			return TRUE;

		//取得當前的聲音大小參數
		case USAGE_GETVOLUME:
			ISOUND_GetVolume (pme->pISound);
			return TRUE;

		//加大音量
		case USAGE_SETVOLUMEUP:
			if(pme->wVolume <= AEE_MAX_VOLUME) {
				pme->wVolume += 10;
				pme->wVolume = pme->wVolume > AEE_MAX_VOLUME ? AEE_MAX_VOLUME : pme->wVolume;
			}
			ISOUND_SetVolume(pme->pISound,pme->wVolume);
			return TRUE;

		//減少音量
		case USAGE_SETVOLUMEDOWN:
			if(pme->wVolume >= 10) {
				pme->wVolume -= 10;
				pme->wVolume = pme->wVolume < 10 ? 11 : pme->wVolume;
			}
			ISOUND_SetVolume(pme->pISound,pme->wVolume);
			return TRUE;

		//利用IShell接口的ISHELL_Beep函數來播放系統蜂鳴聲或振動
		//該函數是直到播放完畢才返回一個值標記是否播放成功,與回調機制不同
		case USAGE_BEEP:
			ISHELL_Beep(pme->a.m_pIShell, BEEP_OFF, FALSE);
		
			ISHELL_Beep(pme->a.m_pIShell, BEEP_ALERT, FALSE);
			ISHELL_Beep(pme->a.m_pIShell, BEEP_ALERT, TRUE);
			
			ISHELL_Beep(pme->a.m_pIShell, BEEP_REMINDER, FALSE);
			ISHELL_Beep(pme->a.m_pIShell, BEEP_REMINDER, TRUE);

			ISHELL_Beep(pme->a.m_pIShell, BEEP_MSG, FALSE);
			ISHELL_Beep(pme->a.m_pIShell, BEEP_MSG, TRUE);

			ISHELL_Beep(pme->a.m_pIShell, BEEP_ERROR, FALSE);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线综合视频播放| 久久综合九色综合欧美98| 91同城在线观看| www一区二区| 最新成人av在线| 欧美人牲a欧美精品| 99re66热这里只有精品3直播| 亚洲国产sm捆绑调教视频 | 暴力调教一区二区三区| 亚洲在线观看免费| 91小视频在线| 日韩电影在线一区| 亚洲一区av在线| 亚洲高清免费在线| 亚洲午夜激情网站| 亚洲成人自拍一区| 麻豆视频观看网址久久| 麻豆国产欧美日韩综合精品二区| 毛片一区二区三区| 国产在线精品免费av| 国产精品一二三四五| 国产成人午夜99999| av一区二区三区四区| 色www精品视频在线观看| 欧美优质美女网站| 欧美xxxx老人做受| 国产欧美一区二区精品忘忧草 | 精品一区二区久久| 丰满白嫩尤物一区二区| 精品奇米国产一区二区三区| 538prom精品视频线放| 国产欧美日韩激情| 亚洲一区二区三区四区在线观看 | 欧美一区二区三区在线| 亚洲精品成人少妇| 国产麻豆欧美日韩一区| 日韩一区欧美一区| 2022国产精品视频| 欧美性受极品xxxx喷水| 国产伦理精品不卡| 五月天激情综合网| 国产精品久久久久三级| 欧美一卡二卡在线| 91久久精品一区二区三| 国产一区二区福利视频| 视频一区视频二区中文字幕| 国产精品久久久一本精品| 日韩你懂的在线观看| 在线国产亚洲欧美| av高清久久久| 国产精品伊人色| 日本va欧美va欧美va精品| 一区二区三区不卡视频在线观看 | 欧美mv日韩mv国产网站app| 一本久道久久综合中文字幕| 国模娜娜一区二区三区| 青草国产精品久久久久久| 亚洲日本在线天堂| 国产精品盗摄一区二区三区| 久久网站最新地址| 欧美电视剧免费观看| 欧美美女网站色| 欧美日韩黄色影视| 欧美日韩精品一二三区| 一本高清dvd不卡在线观看| 99视频在线精品| 成人免费看黄yyy456| 国产福利一区二区三区在线视频| 精品无人码麻豆乱码1区2区 | 一区二区三区四区在线播放 | 欧美日韩国产影片| 欧美三区免费完整视频在线观看| 99久久伊人精品| 99在线精品视频| 99久久精品久久久久久清纯| 成人免费毛片aaaaa**| 成人一级视频在线观看| 风间由美一区二区三区在线观看| 成人一区二区三区视频在线观看 | 亚洲私人影院在线观看| 亚洲天堂2014| 亚洲一区二区三区中文字幕在线| 一区二区三区免费| 五月婷婷久久综合| 老汉av免费一区二区三区| 极品销魂美女一区二区三区| 激情六月婷婷久久| 国产成人午夜视频| 色婷婷亚洲精品| 6080午夜不卡| 26uuu精品一区二区| 国产亚洲福利社区一区| 国产精品成人一区二区艾草 | 久久99国产精品久久99| 国模冰冰炮一区二区| 成人午夜伦理影院| 色综合一区二区三区| 欧美影视一区在线| 精品国产区一区| 国产人成一区二区三区影院| 最新日韩av在线| 香蕉影视欧美成人| 国产综合一区二区| 91污片在线观看| 欧美人xxxx| 国产视频亚洲色图| 亚洲精品中文字幕在线观看| 热久久国产精品| 国产成人av资源| 欧美性视频一区二区三区| 日韩美女视频在线| 亚洲色图清纯唯美| 日韩中文字幕亚洲一区二区va在线| 久久成人免费网站| 97久久精品人人做人人爽50路| 欧美日韩日本视频| 亚洲国产成人自拍| 日本最新不卡在线| www.66久久| 日韩欧美的一区二区| 亚洲视频在线观看三级| 日本亚洲视频在线| 91在线小视频| 欧美成人三级电影在线| 亚洲日本一区二区| 韩国在线一区二区| 欧美午夜免费电影| 国产嫩草影院久久久久| 午夜免费久久看| 99精品在线观看视频| 亚洲精品在线免费播放| 一区二区三区成人在线视频| 国产成a人无v码亚洲福利| 欧美日韩二区三区| 国产精品久久毛片| 国产高清精品在线| 日韩精品资源二区在线| 亚洲电影一区二区| 色八戒一区二区三区| 国产精品久久一级| 高清日韩电视剧大全免费| 日韩欧美一级片| 亚洲国产三级在线| 93久久精品日日躁夜夜躁欧美| 久久一区二区三区四区| 免费不卡在线观看| 欧美日韩aaa| 亚洲男同性视频| 成人精品一区二区三区四区| 精品少妇一区二区三区在线播放| 亚洲成年人网站在线观看| 91在线一区二区| 综合久久久久综合| 波波电影院一区二区三区| 久久精品一区二区三区av| 狠狠色伊人亚洲综合成人| 9191成人精品久久| 亚洲国产成人porn| 欧美视频一区在线观看| 亚洲一区在线看| 日本韩国视频一区二区| 亚洲精品国产无套在线观| 91丨九色丨黑人外教| 亚洲免费观看高清完整版在线观看熊 | 欧美国产一区二区| 国产91精品在线观看| 国产欧美一区二区在线观看| 国产精品亚洲专一区二区三区 | 日韩欧美国产一二三区| 午夜精品视频在线观看| 在线观看91av| 日本亚洲免费观看| 精品美女在线播放| 日本免费在线视频不卡一不卡二| 在线综合亚洲欧美在线视频| 五月婷婷久久综合| 欧美电影免费观看高清完整版 | 日本在线播放一区二区三区| 中文字幕欧美一| 精品福利视频一区二区三区| 欧美群妇大交群中文字幕| 欧美视频在线不卡| 欧美福利视频导航| 777精品伊人久久久久大香线蕉| 成人黄色大片在线观看| 夜夜夜精品看看| 中文字幕一区日韩精品欧美| 国产欧美一区二区三区鸳鸯浴 | 色哟哟欧美精品| 欧美三级电影在线观看| 欧美一级免费观看| 国产精品久久久久三级| 亚洲国产日韩精品| 成人午夜视频网站| 欧美一区二区在线视频| 亚洲欧美在线视频观看| 一区二区三区四区不卡在线| 全部av―极品视觉盛宴亚洲| heyzo一本久久综合| 精品久久久久香蕉网|