以文本方式查看主题 - 曙海教育集团论坛 (http://sun4.cn/bbs/index.asp) -- Windows Mobile手机开发 (http://sun4.cn/bbs/list.asp?boardid=48) ---- Moblie PPC下音效播放和手机振动的实现 (http://sun4.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的状态来启动震动设备。 当打开震动设备后应当做延迟处理后关闭设备,否则会一直震动的。 |