声音播放钩子
1、WAV声音格式文件播放辅助类AudioHelper
实现效果
1)本辅助类主要是用来方便实现播放WAV声音格式文件的操作。
2)声音播放可以用在特定事件的触发上,如来电、收到消息等,经典的就如QQ收到信息,咳嗽的声音,使用声音播放可以提高更好的用户体验。
实现代码
1)辅助类提供的方法接口如下所示:
/// <summary>
/// 播放 .wav 格式的声音文件
/// </summary>
/// <param name="location">声音文件路径 </param>
public static void Play(string location)
/// <summary>
/// 播放 .wav 格式的声音文件
/// </summary>
/// <param name="playMode">播放声音的枚举模式。默认为AudioPlayMode.Background。</param>
/// <param name="location">声音文件路径</param>
public static void Play(string location, AudioPlayMode playMode)
/// <summary>
/// 播放 .wav 格式的声音文件
/// </summary>
/// <param name="stream"><see cref="T:System.IO.Stream"></see>声音文件的流对象</param>
/// <param name="playMode">播放声音的枚举模式。默认为AudioPlayMode.Background。</param>
public static void Play(Stream stream, AudioPlayMode playMode)
/// <summary>
/// 播放 .wav 格式的声音文件
/// </summary>
/// <param name="data">声音文件的字节数组</param>
/// <param name="playMode">播放声音的枚举模式。默认为AudioPlayMode.Background。</param>
public static void Play(byte[] data, AudioPlayMode playMode)
/// <summary>
/// 播放系统声音
/// </summary>
public static void PlaySystemSound(SystemSound systemSound)
/// <summary>
/// 停止正在后台播放的声音
/// </summary>
public static void Stop()
/// </summary>
/// <param name="location">声音文件路径 </param>
public static void Play(string location)
/// <summary>
/// 播放 .wav 格式的声音文件
/// </summary>
/// <param name="playMode">播放声音的枚举模式。默认为AudioPlayMode.Background。</param>
/// <param name="location">声音文件路径</param>
public static void Play(string location, AudioPlayMode playMode)
/// <summary>
/// 播放 .wav 格式的声音文件
/// </summary>
/// <param name="stream"><see cref="T:System.IO.Stream"></see>声音文件的流对象</param>
/// <param name="playMode">播放声音的枚举模式。默认为AudioPlayMode.Background。</param>
public static void Play(Stream stream, AudioPlayMode playMode)
/// <summary>
/// 播放 .wav 格式的声音文件
/// </summary>
/// <param name="data">声音文件的字节数组</param>
/// <param name="playMode">播放声音的枚举模式。默认为AudioPlayMode.Background。</param>
public static void Play(byte[] data, AudioPlayMode playMode)
/// <summary>
/// 播放系统声音
/// </summary>
public static void PlaySystemSound(SystemSound systemSound)
/// <summary>
/// 停止正在后台播放的声音
/// </summary>
public static void Stop()
2) 辅助类AudioHelper的使用例子代码如下所示
private void btnPlaySound_Click(object sender, EventArgs e)
{
try
{
AppConfig config = new AppConfig();
string SoundFilePath = config.AppConfigGet("SoundFilePath");
AudioHelper.Play(SoundFilePath);//AudioHelper.Play("ringin.wav");
}
catch (Exception ex)
{
LogHelper.Error("没找到声音文件" , ex);
}
}
{
try
{
AppConfig config = new AppConfig();
string SoundFilePath = config.AppConfigGet("SoundFilePath");
AudioHelper.Play(SoundFilePath);//AudioHelper.Play("ringin.wav");
}
catch (Exception ex)
{
LogHelper.Error("没找到声音文件" , ex);
}
}
2、声音文件播放操作辅助类SoundPlayerHelper。除了MP3声音文件外,还可以播放WAV格式、midi格式声音文件。
实现效果
1)本辅助类主要是用来方便实现MP3文件、WAV文件、Midi文件等声音的播放操作,并提供音量控制操作功能。
实现代码
1)辅助类提供的方法接口如下所示:
/// <summary>
/// 播放声音文件
/// </summary>
/// <param name="soundFileName">声音文件路径(可以是MP3、WAV、Midi等声音文件)</param>
/// <param name="Repeat">是否重复播放</param>
public static void Play(string soundFileName,bool Repeat)
/// <summary>
/// 播放声音嵌入资源字节数组
/// </summary>
/// <param name="soundEmbeddedResource">声音文件嵌入资源字节数组(可以是MP3、WAV、Midi等声音格式)</param>
/// <param name="Repeat">是否重复播放</param>
public static void Play(byte[] soundEmbeddedResource, bool Repeat)
/// <summary>
/// 暂停播放
/// </summary>
public static void Pause()
/// <summary>
/// 停止播放
/// </summary>
public static void Stop()
/// <summary>
/// 清除操作
/// </summary>
public static void Dispose()
/// <summary>
/// 获取或设置音量的百分比
/// </summary>
/// <returns></returns>
public static float VolumePercent
/// <summary>
/// 获取音量
/// </summary>
/// <returns></returns>
public static float GetVolume()
/// <summary>
/// 设置音量
/// </summary>
/// <param name="volume"></param>
public static void SetVolume(float volume)
/// <SUMMARY>
/// 返回当前状态播放:播放,暂停,停止等
/// </SUMMARY>
public static string Status
/// </summary>
/// <param name="soundFileName">声音文件路径(可以是MP3、WAV、Midi等声音文件)</param>
/// <param name="Repeat">是否重复播放</param>
public static void Play(string soundFileName,bool Repeat)
/// <summary>
/// 播放声音嵌入资源字节数组
/// </summary>
/// <param name="soundEmbeddedResource">声音文件嵌入资源字节数组(可以是MP3、WAV、Midi等声音格式)</param>
/// <param name="Repeat">是否重复播放</param>
public static void Play(byte[] soundEmbeddedResource, bool Repeat)
/// <summary>
/// 暂停播放
/// </summary>
public static void Pause()
/// <summary>
/// 停止播放
/// </summary>
public static void Stop()
/// <summary>
/// 清除操作
/// </summary>
public static void Dispose()
/// <summary>
/// 获取或设置音量的百分比
/// </summary>
/// <returns></returns>
public static float VolumePercent
/// <summary>
/// 获取音量
/// </summary>
/// <returns></returns>
public static float GetVolume()
/// <summary>
/// 设置音量
/// </summary>
/// <param name="volume"></param>
public static void SetVolume(float volume)
/// <SUMMARY>
/// 返回当前状态播放:播放,暂停,停止等
/// </SUMMARY>
public static string Status
2)辅助类SoundPlayerHelper的使用例子代码如下所示
bool isPlay = false;
private void btnPlayMp3_Click(object sender, EventArgs e)
{
if (!isPlay)
{
string mp3File = Path.Combine(Application.StartupPath, "伤不起.mp3");
string waveFile = Path.Combine(Application.StartupPath, "ringin.wav");
string midFile = @"C:\Windows\Media\onestop.mid";
SoundPlayerHelper.Play(mp3File, false); //播放MP3格式文件
//SoundPlayerHelper.Play(waveFile, true); //播放WAV格式文件
//SoundPlayerHelper.Play(midFile, false); //播放Midi格式文件
this.btnPlayMp3.Text = "停止播放";
}
else
{
SoundPlayerHelper.Stop();//停止播放
//SoundPlayerHelper.Pause();//暂停播放
this.btnPlayMp3.Text = "播放声音";
}
string statu = SoundPlayerHelper.Status;
this.Text = statu;
isPlay = !isPlay;
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
//设置音量
float vol = SoundPlayerHelper.VolumePercent;
SoundPlayerHelper.VolumePercent = trackBar1.Value;
}
private void btnPlayMp3_Click(object sender, EventArgs e)
{
if (!isPlay)
{
string mp3File = Path.Combine(Application.StartupPath, "伤不起.mp3");
string waveFile = Path.Combine(Application.StartupPath, "ringin.wav");
string midFile = @"C:\Windows\Media\onestop.mid";
SoundPlayerHelper.Play(mp3File, false); //播放MP3格式文件
//SoundPlayerHelper.Play(waveFile, true); //播放WAV格式文件
//SoundPlayerHelper.Play(midFile, false); //播放Midi格式文件
this.btnPlayMp3.Text = "停止播放";
}
else
{
SoundPlayerHelper.Stop();//停止播放
//SoundPlayerHelper.Pause();//暂停播放
this.btnPlayMp3.Text = "播放声音";
}
string statu = SoundPlayerHelper.Status;
this.Text = statu;
isPlay = !isPlay;
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
//设置音量
float vol = SoundPlayerHelper.VolumePercent;
SoundPlayerHelper.VolumePercent = trackBar1.Value;
}