亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
www国产精品av| 亚洲精品高清在线| 欧美天堂一区二区三区| 久久国产精品72免费观看| 国产精品热久久久久夜色精品三区| 欧美探花视频资源| 国产 日韩 欧美大片| 视频一区免费在线观看| 亚洲欧洲中文日韩久久av乱码| 精品av综合导航| 欧美精品一级二级三级| 99久久伊人精品| 国产麻豆精品theporn| 日欧美一区二区| 亚洲一区av在线| 亚洲精品免费在线| 国产精品色哟哟| 国产亚洲人成网站| 精品精品国产高清a毛片牛牛| 欧美视频精品在线观看| 99国产精品久| 成人精品国产福利| 国产二区国产一区在线观看| 蜜桃传媒麻豆第一区在线观看| 亚洲第一综合色| 亚洲韩国一区二区三区| 亚洲精品一二三| 亚洲丝袜自拍清纯另类| 久久久久久久久久久99999| 日韩视频在线你懂得| 欧美卡1卡2卡| 一区二区视频在线| 久久久精品国产99久久精品芒果 | 国内成人精品2018免费看| 亚洲一级片在线观看| 国产精品久久久99| 国产精品国产三级国产有无不卡| 国产人伦精品一区二区| 久久久久九九视频| 国产欧美日韩麻豆91| 久久精品夜夜夜夜久久| 久久久久久久久久久久电影 | 国产亚洲欧美中文| 久久久不卡网国产精品二区| wwww国产精品欧美| 日本一区二区三区国色天香| 国产精品久久久久影院亚瑟| 国产精品久久久久一区二区三区 | 日韩影视精彩在线| 肉丝袜脚交视频一区二区| 日本在线不卡视频| 黄色精品一二区| 成人午夜av影视| 91亚洲男人天堂| 欧美日韩大陆在线| 精品毛片乱码1区2区3区| 久久综合色天天久久综合图片| 国产亚洲va综合人人澡精品| 国产精品免费人成网站| 一区二区三区免费观看| 亚洲成av人片一区二区三区| 久久精品99久久久| 粉嫩欧美一区二区三区高清影视| 91蜜桃免费观看视频| 欧美日韩日日夜夜| 久久香蕉国产线看观看99| 国产精品素人视频| 亚洲.国产.中文慕字在线| 久久99精品久久久久久动态图 | 94-欧美-setu| 欧美区在线观看| 久久亚洲免费视频| 一区二区三区在线不卡| 另类综合日韩欧美亚洲| av电影在线不卡| 欧美一级精品大片| 中文字幕精品三区| 日韩不卡一二三区| av一二三不卡影片| 91精品国产欧美日韩| 欧美经典一区二区| 日本一不卡视频| 99精品视频中文字幕| 欧美一区二区精品久久911| 中国色在线观看另类| 日本麻豆一区二区三区视频| 成人禁用看黄a在线| 欧美一级二级三级蜜桃| 日韩一区有码在线| 国产一区亚洲一区| 欧美精品久久一区| 国产精品白丝在线| 蜜桃视频一区二区三区| 色婷婷国产精品| 日本一区二区三区四区| 美女视频黄久久| 欧美日精品一区视频| 国产精品三级av| 久久99蜜桃精品| 欧美日韩国产bt| 综合在线观看色| 国产成人综合在线| 日韩视频国产视频| 亚洲成人av免费| 色狠狠色狠狠综合| 国产日产精品一区| 久久99国产精品麻豆| 欧美日韩国产影片| 一区二区三区不卡在线观看 | 久久综合色之久久综合| 水野朝阳av一区二区三区| 91老司机福利 在线| 国产人妖乱国产精品人妖| 精品一区二区成人精品| 欧美电影在哪看比较好| 亚洲中国最大av网站| 色狠狠综合天天综合综合| 国产精品视频线看| 国产xxx精品视频大全| 欧美精品一区二区三区在线播放 | 欧美日韩一区二区三区视频| 中文字幕一区二区视频| 成人手机在线视频| 国产亚洲欧美在线| 国产成人亚洲综合a∨婷婷| 精品国产麻豆免费人成网站| 青青草97国产精品免费观看 | 日本午夜精品视频在线观看| 欧美少妇一区二区| 午夜久久久久久久久久一区二区| 色哟哟在线观看一区二区三区| 欧美国产激情二区三区| 国产ts人妖一区二区| 国产精品色在线观看| 不卡欧美aaaaa| 中文字幕一区二区三区av| av中文字幕一区| 日韩伦理电影网| 91国偷自产一区二区三区观看| 亚洲精品视频免费看| 色一区在线观看| 亚洲一区在线视频观看| 91麻豆精品久久久久蜜臀| 青椒成人免费视频| 久久人人97超碰com| 成人午夜激情影院| 亚洲日穴在线视频| 欧美人牲a欧美精品| 青娱乐精品视频| 久久日一线二线三线suv| 国产精品456| 国产精品无遮挡| 91福利视频网站| 日韩精品午夜视频| 久久免费电影网| av一区二区三区四区| 五月婷婷欧美视频| 欧美精品一区二区三区蜜桃| 国产成人精品免费网站| 成人欧美一区二区三区视频网页| 欧美色成人综合| 精品夜夜嗨av一区二区三区| 国产精品久久精品日日| 欧美日韩在线播| 国内精品久久久久影院薰衣草| 国产人伦精品一区二区| 在线欧美日韩国产| 精品一区在线看| 一色屋精品亚洲香蕉网站| 欧美久久一区二区| 国产裸体歌舞团一区二区| 一区视频在线播放| 91精品啪在线观看国产60岁| 国产a视频精品免费观看| 亚洲一二三四在线| 精品99999| 欧美羞羞免费网站| 激情综合色丁香一区二区| 综合激情成人伊人| 日韩欧美成人一区| 色综合久久精品| 久久99精品网久久| 亚洲一区二区欧美日韩| 国产亚洲综合色| 欧美另类videos死尸| 国产白丝精品91爽爽久久| 视频一区视频二区中文| 国产精品久久99| 精品三级av在线| 色婷婷av久久久久久久| 激情综合五月婷婷| 亚洲国产成人va在线观看天堂| 国产日韩欧美在线一区| 欧美精品久久久久久久多人混战| 成人av手机在线观看| 久久av资源站| 丝瓜av网站精品一区二区 | 国产午夜精品在线观看| 欧美日韩1234| 91视视频在线观看入口直接观看www |