您的位置:首页 > 其它

播放嵌入资源的声音文件

2009-11-04 16:04 281 查看
摘要:本文阐述了在Windows Mobile中如何播放潜入资源的声音文件

%QV/j |(q7j'ry7M0

KeywordsITPUB个人空间 xh3KhBO? Ar

PlaySound, Windows Mobile, Embedded Resources, p/invoke

要在Windows Mobile上播放嵌入资源(Embedded Resource)的声音文件,该怎么办呢?显然是要用到反射的,我查了一下MSDN,还好GetManifestResourceStream对移动设备是可用的。

首先我们需要一个类,通过P/invoke来帮助我们实现播放声音的功能:

[Flags]

s+d
ql/Qm'p0

enum
SoundFlagsITPUB个人空间bO&F bbQ

ITPUB个人空间�}ogN8j5@J]r6`dW

class
PlayNativeRef

Qb"OG5^5O9q1fV
y!]0

调用的时候,我们先要将该声音资源从程序集加载到内存中:

MemoryStream ms
=
(MemoryStream) Assembly.GetExecutingAssembly().GetManifestResourceStream(
"
PlayEmbeddedAudio.Resources.yuyinlangdu.wav
"
);ITPUB个人空间7HZ?6]*K]!D8Z


Tips


这里的资源名字,一定不要弄错,如果你不确信的话,可以通过GetManifestResourceNames方法来查看资源的名称。

然后,我们就可以调用PlaySound方法来播放了:

PlayNativeRef.PlaySound(ITPUB个人空间4fQ3Bdx6b

ms.GetBuffer(),

'P&z
b,Nu:d&D0

IntPtr.Zero,

;BRrC$M
N0

SoundFlags.Synchronous
|
SoundFlags.Memory);

*GZ-_m3sj"HC9m"r0


S$~:xc#M"yV:C;KD i0

注意这里的SoundFlag要记得把Memory加上,表示第一个参数是指向内存中的声音文件镜像。播放的时候从内存中加载资源。

不过有一点要注意的,嵌入的声音文件不宜太多,否则会让程序集变得很庞大。

代码

在这里下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: