1
作者:ah, 2007-10-31
9
using System;
10
using System.Drawing;
11
using System.Collections;
12
using System.Windows.Forms;
13
using System.Data;
14
using OpenNETCF.Multimedia.Audio;
15
using System.IO;
16
using System.Reflection;
17![](/Images/OutliningIndicators/None.gif)
18
namespace ppcvoicerecorder
19
{
20
public partial class frmRecorder : Form
21
{
22
private Player player;
23
private Recorder recorder;
24
private Stream stream;
25
private int timeLeft;
26
27
private const int RECORD_LENGTH = 600;
28
private const int MAX_RECORD_LENGTH = 600;//录音最大长度
29
private string TEMP_PATH = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
30
private string TEMP_FILE = SystemInfoFilePath();
31
private DateTime STARTRECORD_TIME;//开始录音时间
32
private DateTime ENDRECORE_TIME;//结实录音时间
33
ConnDate conn = new ConnDate();
34![](/Images/OutliningIndicators/InBlock.gif)
35
public frmRecorder()
36
{
37
InitializeComponent();
38![](/Images/OutliningIndicators/InBlock.gif)
39
lblTime.Width = this.Width;
40
// 实例化录音机
41
recorder = new Recorder();
42
recorder.DoneRecording += new WaveFinishedHandler(recorder_DoneRecording);
43
// 实例化播放器
44
player = new Player();
45
player.DonePlaying += new WaveDoneHandler(player_DonePlaying);
46
}
47
48![](/Images/OutliningIndicators/InBlock.gif)
49
void recorder_DoneRecording()
50
{
51
mniRecord.Text = "录音";
52
tmrRecord.Enabled = false;
53
54
}
55![](/Images/OutliningIndicators/InBlock.gif)
56
设置本地存储路径
68![](/Images/OutliningIndicators/InBlock.gif)
69
private DialogResult _isCancel = DialogResult.No;
70![](/Images/OutliningIndicators/InBlock.gif)
71
public DialogResult IsCancel
72
{
73
get { return _isCancel; }
74
}
75![](/Images/OutliningIndicators/InBlock.gif)
76
void player_DonePlaying(object sender, IntPtr wParam, IntPtr lParam)
77
{
78
// mniPlay.Text = "播放";
79
}
80![](/Images/OutliningIndicators/InBlock.gif)
81
private void tmrRecord_Tick(object sender, EventArgs e)
82
{
83
timeLeft--;
84
if (timeLeft >0)
85
{
86
lblTime.Text = string.Format("0:{0:00}", MAX_RECORD_LENGTH - timeLeft);
87
}
88
}
89
90
private Stream PrepareTempFile()
91
{
92
// 检查临时目录是否存在
93
if (!Directory.Exists(TEMP_PATH))
94
{
95
Directory.CreateDirectory(TEMP_PATH);
96
}
97![](/Images/OutliningIndicators/InBlock.gif)
98
if (File.Exists(TEMP_FILE))
99
{
100
File.Delete(TEMP_FILE);
101
}
102![](/Images/OutliningIndicators/InBlock.gif)
103
stream = File.OpenWrite(TEMP_FILE);
104
return stream;
105
}
106![](/Images/OutliningIndicators/InBlock.gif)
107
private void Record()
108
{
109
try
110
{
111
if (mniRecord.Text == "停止/确认")
112
{
113
tmrRecord.Enabled = false;
114
// 停止录音
115
this.ENDRECORE_TIME = DateTime.Now;
116
this.lblTime.Text = conn.DateDiff(this.STARTRECORD_TIME,this.ENDRECORE_TIME);
117
recorder.Stop();
118
_isCancel = DialogResult.OK;
119
mniRecord.Text = "录音";
120
this.Close();
121
}
122
else
123
{
124
this.STARTRECORD_TIME = DateTime.Now;
125
stream = PrepareTempFile();
126
timeLeft = RECORD_LENGTH;
127
tmrRecord.Enabled = true;
128![](/Images/OutliningIndicators/InBlock.gif)
129
// 开始录音
130
recorder.RecordFor(stream, RECORD_LENGTH, SoundFormats.Mono8bit11kHz);
131
mniRecord.Text = "停止/确认";
132
}
133
}
134
catch (Exception ex)
135
{
136
MessageBox.Show(ex.Message);
137
}
138
}
139![](/Images/OutliningIndicators/InBlock.gif)
140
/// <summary>
141
/// 取得录音文件路径
142
/// </summary>
143
/// <returns>返回路径</returns>
144
public string GetFileInfo()
145
{
146
try
147
{
148
return this.TEMP_FILE;
149
}
150
catch (Exception err)
151
{
152
return string.Empty;
153
MessageBox.Show(err.Message);
154
}
155
}
156![](/Images/OutliningIndicators/InBlock.gif)
157
private void mniRecord_Click(object sender, EventArgs e)
158
{
159
this.Record();
160
}
161![](/Images/OutliningIndicators/InBlock.gif)
162
private void mniMenuBack_Click(object sender, EventArgs e)
163
{
164
this.Close();
165
}
166
167
}
168
}
![](/Images/OutliningIndicators/ContractedBlock.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
88
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
109
![](/Images/OutliningIndicators/InBlock.gif)
110
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
124
![](/Images/OutliningIndicators/InBlock.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
133
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
138
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
144
![](/Images/OutliningIndicators/InBlock.gif)
145
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/InBlock.gif)
154
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
155
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
156
![](/Images/OutliningIndicators/InBlock.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
159
![](/Images/OutliningIndicators/InBlock.gif)
160
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
161
![](/Images/OutliningIndicators/InBlock.gif)
162
![](/Images/OutliningIndicators/InBlock.gif)
163
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
164
![](/Images/OutliningIndicators/InBlock.gif)
165
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
166
![](/Images/OutliningIndicators/InBlock.gif)
167
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
168
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)