zoukankan      html  css  js  c++  java
  • Windows Mobile 播放声音文件

    当发生某些事件的时候,播放提示音提醒用户。

    方法一:

    [DllImport("coredll.dll")]
    private static extern bool PlaySound(string pszSound, IntPtr hmod, UInt32 fdwSound);

    /// <summary>
    /// 测试方法
    /// </summary>
    private static void PlayScheduleAlarmSound()
    {
    string file = @"Windows\alarm.wav";
    PlaySound(file, IntPtr.Zero,
    1);
    }

    方法二:

    public class Sound
    {
    private byte[] m_soundBytes;
    private string m_fileName;

    private enum Flags
    {
    SND_SYNC
    = 0x0000, /* play synchronously (default) */
    SND_ASYNC
    = 0x0001, /* play asynchronously */
    SND_NODEFAULT
    = 0x0002, /* silence (!default) if sound not found */
    SND_MEMORY
    = 0x0004, /* pszSound points to a memory file */
    SND_LOOP
    = 0x0008, /* loop the sound until next sndPlaySound */
    SND_NOSTOP
    = 0x0010, /* don't stop any currently playing sound */
    SND_NOWAIT
    = 0x00002000, /* don't wait if the driver is busy */
    SND_ALIAS
    = 0x00010000, /* name is a registry alias */
    SND_ALIAS_ID
    = 0x00110000, /* alias is a predefined ID */
    SND_FILENAME
    = 0x00020000, /* name is file name */
    SND_RESOURCE
    = 0x00040004 /* name is resource name or atom */
    }

    [DllImport(
    "CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true)]
    private extern static int WCE_PlaySound(string szSound, IntPtr hMod, int flags);

    [DllImport(
    "CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true)]
    private extern static int WCE_PlaySoundBytes(byte[] szSound, IntPtr hMod, int flags);

    /// <summary>
    /// Construct the Sound object to play sound data from the specified file.
    /// </summary>
    public Sound(string fileName)
    {
    m_fileName
    = fileName;
    }
    public Sound()
    { }
    /// <summary>
    /// Construct the Sound object to play sound data from the specified stream.
    /// </summary>
    public Sound(Stream stream)
    {
    // read the data from the stream
    m_soundBytes = new byte[stream.Length];
    stream.Read(m_soundBytes,
    0, (int)stream.Length);
    }

    /// <summary>
    /// Play the sound
    /// </summary>
    public void Play()
    {
    // if a file name has been registered, call WCE_PlaySound,
    // otherwise call WCE_PlaySoundBytes
    if (m_fileName != null)
    WCE_PlaySound(m_fileName, IntPtr.Zero, (
    int)(Flags.SND_ASYNC | Flags.SND_FILENAME));
    else
    WCE_PlaySoundBytes(m_soundBytes, IntPtr.Zero, (
    int)(Flags.SND_ASYNC | Flags.SND_MEMORY));
    }



    public void Stop()
    {
    if (m_fileName != null)
    WCE_PlaySound(
    null, IntPtr.Zero, (int)(Flags.SND_ASYNC | Flags.SND_FILENAME));
    else
    WCE_PlaySoundBytes(
    null, IntPtr.Zero, (int)(Flags.SND_ASYNC | Flags.SND_MEMORY));
    }
    }

    /// <summary>
    /// 测试方法
    /// </summary>
    private static void PlayScheduleAlarmSound()
    {
    string file = @"Windows\alarm.wav";
    Sound sound
    = new Sound(file);
    sound.Play();
    }

  • 相关阅读:
    Protobuf
    CPU profiling
    转 Unicode 和 UTF-8 的区别
    Redis数据结构底层知识总结
    MySQL 加锁处理分析 ---非常牛逼
    MySQL Gap Lock问题
    利用Linux文件系统内存cache来提高性能
    Xcode7安装CocoaPods
    字符串排列组合算法
    iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示
  • 原文地址:https://www.cnblogs.com/springworks/p/2059072.html
Copyright © 2011-2022 走看看