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的状态来启动震动设备。
当打开震动设备后应当做延迟处理后关闭设备,否则会一直震动的。