locked
windows mobile支持哪几种音频格式? RRS feed

  • 问题

  • windows mobile支持哪几种音频格式,怎么实现,急用,谢谢啦!!!
    2009年9月14日 6:44

答案

  • 我在网上查到:一种方法是用wmp.dll。首先在项目里添加一对C:\windows\system32\wmp.dll的引用,然后用下面的代码进行播放:

     

    WMPLib.WindowsMediaPlayer player = new WMPLib.WindowsMediaPlayer();

    player.URL = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\song.mp3";

    player.settings.volume = 100;

    player.controls.play();

    我都已经试过了,就是声音不能播放出来,我不知道为什么?请帮帮忙,谢谢啦!!!

    2009年9月14日 10:44
  • 你好。
    如果音频是.mp3或者是.wav的格式的话,使用P/Invoke吧。
    加入
            [DllImport("aygshell.dll")]
            internal static extern uint SndPlaySync(string file, uint flags);

            [DllImport("aygshell.dll")]
            internal static extern uint SndOpen(string file, ref IntPtr phSound);

            [DllImport("aygshell.dll")]
            internal static extern uint SndPlayAsync(IntPtr hSound, uint flags);

            [DllImport("aygshell.dll")]
            internal static extern uint SndStop(int soundScope, IntPtr hSound);

            [DllImport("aygshell.dll")]
            internal static extern uint SndClose(IntPtr hSound);

    具体请参考SDK自带的例子,RingtoneManager,位于“\Program Files\Windows Mobile 6 SDK\Samples\Common\CS\RingtoneManager”文件夹下。


    施炯
    2009年9月15日 4:08
    版主

全部回复

  • 我在网上查到:一种方法是用wmp.dll。首先在项目里添加一对C:\windows\system32\wmp.dll的引用,然后用下面的代码进行播放:

     

    WMPLib.WindowsMediaPlayer player = new WMPLib.WindowsMediaPlayer();

    player.URL = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\song.mp3";

    player.settings.volume = 100;

    player.controls.play();

    我都已经试过了,就是声音不能播放出来,我不知道为什么?请帮帮忙,谢谢啦!!!

    2009年9月14日 10:44
  • 你好。
    如果音频是.mp3或者是.wav的格式的话,使用P/Invoke吧。
    加入
            [DllImport("aygshell.dll")]
            internal static extern uint SndPlaySync(string file, uint flags);

            [DllImport("aygshell.dll")]
            internal static extern uint SndOpen(string file, ref IntPtr phSound);

            [DllImport("aygshell.dll")]
            internal static extern uint SndPlayAsync(IntPtr hSound, uint flags);

            [DllImport("aygshell.dll")]
            internal static extern uint SndStop(int soundScope, IntPtr hSound);

            [DllImport("aygshell.dll")]
            internal static extern uint SndClose(IntPtr hSound);

    具体请参考SDK自带的例子,RingtoneManager,位于“\Program Files\Windows Mobile 6 SDK\Samples\Common\CS\RingtoneManager”文件夹下。


    施炯
    2009年9月15日 4:08
    版主
  • 想问一下,使用SndPlayAsync进行播发,使用SndStop(int soundScope, IntPtr hSound);后面HSOUND参数使用SndOpen的HSOUND回传参数时,怎么不能停止,根据MSDN的描述以及相关的示例代码应该是可以停止的,这里是不是有什么其他要处理的地方。
    2009年9月16日 10:02