以文本方式查看主題 - 曙海教育集團論壇 (http://www.xinguifushi.cn/bbs/index.asp) -- Windows Mobile手機開發 (http://www.xinguifushi.cn/bbs/list.asp?boardid=48) ---- Moblie PPC下音效播放和手機振動的實現 (http://www.xinguifushi.cn/bbs/dispbbs.asp?boardid=48&id=2122) |
-- 作者:wangxinxin -- 發布時間:2010-12-4 10:28:04 -- Moblie PPC下音效播放和手機振動的實現 Moblie PPC下音效播放和手機振動的實現 1、 音效播放: 1、Win CE平臺下內部API直接支持.WAV文件的播放 此函數如下: BOOL sndPlaySound(LPCTSTR lpszSoundName,UINT fuSound); 第一個參數是要播放的WAV文件路徑 第二個參數是播放模式 支持同步,異步播放和循環播放 ,不支持暫停播放 具體介紹參考MSDN; 結束播放直接調用 sndPlaySound(NULL,NULL)。 頭文件: #include “Mmsystem.h.” 連接庫文件:#pragma comment( lib, "Coredll.lib" ) 。 備注:經測試在mobile PPC下 此API可以播放4M左右大小的文件完全可以勝任各種音效和背景音樂的實現, 如果媒體文件不是.wav可以找相關工具進行格式轉換。.mp3文件的播放在mobile下不能直接支持需 要解碼后播放,這個是比較復雜,我抽時間研究明白再說。 2、手機震動實現: PPC和SmartPhone對此功能的支持方式是不一樣的。 在SmartPhone下使用API: Vibrate 和 VibrateStop (函數介紹參考MSDN) 例如: Vibrate(0, NULL, TRUE, INFINITE); ::Sleep(2000); VibrateStop(); 頭文件: #include “vibrate.h“ 連接庫文件:#pragma comment( lib, " aygshell.lib" ) 。 在PPC下使用API:NLedGetDeviceInfo 和 NLedSetDevice (函數介紹參考MSDN) 例如:(此代碼在VS2005下通過功能測試并在項目中得到應用,直接復制以下代碼并包含相關頭文件即可運行) NLED_COUNT_INFO nci; NLedGetDeviceInfo(NLED_COUNT_INFO_ID,(PVOID)&nci); if(nci.cLeds > 1) //如果系統中LED個數大于1 { NLED_SETTINGS_INFO nsi; nsi.LedNum = 1; //LED號,第一個為0,一般情況下震動設備為1. nsi.OffOnBlink = 1; //設置LED狀態為開 (void)NLedSetDevice(NLED_SETTINGS_INFO_ID, &nsi); Sleep(1000); nsi.LedNum = 1; nsi.OffOnBlink = 0; //設置LED狀態為關 (void)NLedSetDevice(NLED_SETTINGS_INFO_ID, &nsi); } 頭文件:#include “Nled.h” , #include “Pwinuser.h” 備注: 一般PPC系統會把震動設備做成LED,程序通過設置LED的狀態來啟動震動設備。 當打開震動設備后應當做延遲處理后關閉設備,否則會一直震動的。 |