1、先上漂亮的界面图

                           opennetcf ---Windows MObile 录音机

2、引用OpennetCF 2.2.0.0组件,代码如下

 

#endregion

 

 


        //录音中的事件
        void recorder_DoneRecording()
        {
        }
        
//播放中的事件
        void player_DonePlaying(object sender, IntPtr wParam, IntPtr lParam)
        {
        }
        
/// <summary>
        
/// 录音
        
/// </summary>
        private void btnRecord_Click(object sender, EventArgs e)
        {
            
try
            {
                
if (player.Playing)
                    player.Stop();
                labelState.Text 
= "录音中";
                labelViewTime.Text 
= "00:00";
                strfileName 
= Global.UserID + "-Record-" + String.Format("{0}月{1}时{2}分{3}秒", DateTime.Now.Month.ToString(), DateTime.Now.Hour.ToString(), DateTime.Now.Minute.ToString(), DateTime.Now.Second.ToString());
                
string FilePath = string.Format("{0}\\{1}.wav", Bussiness.Global.AccessoryPath, strfileName);
                
//检查临时录音文件是否存在
                if (File.Exists(FilePath))
                {
                    
if (DialogResult.Yes == MessageBox.Show("存在相同文件名的录音文件是否覆盖?""系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1))
                    {
                        File.Delete(
string.Format(FilePath));
                        Record(FilePath);
                    }
                    
else
                    {
                        FilePath 
= string.Format("{0}\\{1}.wav", Bussiness.Global.AccessoryPath, strfileName + Guid.NewGuid().ToString());
                        Record(FilePath);
                    }
                }
                
else
                    Record(FilePath);
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message, 
"系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }

        }
        
private void Record(string FilePath)
        {
            
try
            {
                stream 
= File.OpenWrite(FilePath);
                labelCurrent.Text 
= strfileName;
                labelViewTime.Text 
= "00:00";
                timer1.Enabled 
= true;
                
this.timer1.Interval = 1000;
                recorder.RecordFor(stream, RECORD_LENGTH, SoundFormats.Mono8bit11kHz);
                btnRecord.Enabled 
= false;
                btnPlay.Enabled 
= false;
                btnOpenFile.Enabled 
= false;
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message, 
"系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }
        
/// <summary>
        
/// 停止
        
/// </summary>
        private void btnStop_Click(object sender, EventArgs e)
        {
            
try
            {
                
if (recorder.Recording)
                {
                    recorder.Stop();
                    timer1.Enabled 
= false;
                    btnRecord.Enabled 
= true;
                    btnPlay.Enabled 
= true;
                    btnOpenFile.Enabled 
= true;
                    
this.trackBar1.Value = 0;
                    labelState.Text 
= "停止";
                    ParseDirectory(TEMP_PATH, 
"*.*");
                }
                pauseAndRestart 
= 0;
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message, 
"系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }
        
/// <summary>
        
/// 播放
        
/// </summary>
        private void btnPlay_Click(object sender, EventArgs e)
        {
            
try
            {
                
if (player.Playing || pauseAndRestart == 1 || ChangeFile == 2)
                {
                    
//暂停
                    if (pauseAndRestart == 1)
                    {
                        player.Restart();
                        timer2.Enabled 
= true;
                        labelState.Text 
= "播放";
                        pauseAndRestart 
= 0;
                        imageList2.ImageSize 
= new Size(5256);
                        btnPlay.Image 
= imageList2.Images[1];
                        btnRecord.Enabled 
= false;
                        btnCancel.Enabled 
= false;
                        btnStop.Enabled 
= false;
                        btnOpenFile.Enabled 
= false;
                    }
                    
else
                    {
                        player.Pause();
                        timer2.Enabled 
= false;
                        pauseAndRestart 
= 1;
                        labelState.Text 
= "暂停";
                        imageList2.ImageSize 
= new Size(5256);
                        btnPlay.Image 
= imageList2.Images[0];
                        btnRecord.Enabled 
= true;
                        btnCancel.Enabled 
= true;
                        btnStop.Enabled 
= true;
                        btnOpenFile.Enabled 
= true;
                    }
                }
                
else if (!string.IsNullOrEmpty(strfileName))
                {
                    
string AudioPath = Global.AccessoryPath + strfileName + ".wav";
                    Stream s 
= File.OpenRead(AudioPath);
                    player.Play(s);
                    FileInfo fileinfo 
= new FileInfo(AudioPath);
                    
float m_value = fileinfo.Length / 1024;
                    filelength 
= m_value / 11;
                    labelViewTime.Text 
= "00:00";
                    labelState.Text 
= "播放";
                    imageList2.ImageSize 
= new Size(5256);
                    btnPlay.Image 
= imageList2.Images[1];
                    timer2.Enabled 
= true;
                    
this.timer2.Interval = 1000;
                    btnRecord.Enabled 
= false;
                    btnCancel.Enabled 
= false;
                    btnStop.Enabled 
= false;
                    btnOpenFile.Enabled 
= false;
                    ChangeFile 
= 2;
                }
                
else
                {
                    MessageBox.Show(
"对不起,要播放的文件不存在!""系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            
catch (Exception ex)
            {
                MessageBox.Show(
"找不到音频文件或者源文件有错!""系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }
        
//取消
        private void btnCancel_Click(object sender, EventArgs e)
        {
            
try
            {
                Cursor.Current 
= Cursors.WaitCursor;
                strfileName 
= Global.AccessoryPath + strfileName + ".wav";
                
if (recorder.Recording)
                {
                    recorder.Stop();
                    timer1.Enabled 
= false;
                    btnRecord.Enabled 
= true;
                    btnPlay.Enabled 
= true;
                    btnOpenFile.Enabled 
= true;
                    
this.trackBar1.Value = 0;
                    labelViewTime.Text 
= "00:00";
                    labelState.Text 
= "取消";
                    labelCurrent.Text 
= "          暂无录音文件";
                    ParseDirectory(TEMP_PATH, 
"*.*");
                    Cursor.Current 
= Cursors.Default;
                }
                Cursor.Current 
= Cursors.Default;
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message, 
"系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        
/// <summary>
        
/// 遍历是否只选中一个
        
/// </summary>
        private bool CheckLV(ref string m_message)
        {
            
int i = 0;
            
foreach (ListViewItem lv in LVShowRecord.Items)
            {

                
if (lv.Checked)
                {
                    i
++;
                }
            }
            
if (i < 1)
            {
                m_message 
= "请选择文件!";
            }
            
if (i > 1)
            {
                m_message 
= "一次只能选择一个文件!";
            }
            
return i == 1 ? true : false;
        }
        
#endregion
#endregion

 

 


        private void timer2_Tick(object sender, EventArgs e)
        {
            
try
            {
                StringToTime(labelViewTime.Text);
                
this.trackBar1.Minimum = 0;
                
int filelen = ((int)filelength) - 1;
                
this.trackBar1.Maximum = filelen;
                
this.trackBar1.TickFrequency = 1;

                
if (player.Playing)
                {
                    
if (trackBar1.Value == (int)filelen)
                    {
                        player.Stop();
                        trackBar1.Value 
= 0;
                        labelViewTime.Text 
= "00:00";
                        imageList2.ImageSize 
= new Size(5256);
                        btnPlay.Image 
= imageList2.Images[0];
                        labelState.Text 
= "停止";
                        btnPlay.Enabled 
= true;
                        btnRecord.Enabled 
= true;
                        btnStop.Enabled 
= true;
                        btnOpenFile.Enabled 
= true;
                        pauseAndRestart 
= 0;
                        ChangeFile 
= 0;
                    }
                    trackBar1.Value
++;
                }
                
else
                {
                    trackBar1.Value 
= 0;
                    timer2.Enabled 
= false;
                    labelViewTime.Text 
= "00:00";
                    imageList2.ImageSize 
= new Size(5256);
                    btnPlay.Image 
= imageList2.Images[0];
                    labelState.Text 
= "停止";
                    btnDel.Enabled 
= true;
                    btnPlay.Enabled 
= true;
                    btnRecord.Enabled 
= true;
                    btnOpenFile.Enabled 
= true;
                    btnStop.Enabled 
= true;
                    btnOpenFile.Enabled 
= true;
                    ChangeFile 
= 0;
                }
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message, 
"系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }
        
#endregion

 

这个组件有个比较大的不足就是在播放时如果要停止执行到player.stop()时就会出错,我到官方网站上也有人提了类似的问题可是并没有找到解决办法,后来只好用暂停的事件去代替,不过总算不再出现异常 。

虽然有些手机都有自带的录音机没有也可以安装,不过或许有些程序总是会用到的,哈哈,希望对园里这方面开发的朋友会有帮助。

相关文章: