錄音是很實用的功能,我們可以用它錄制語音筆記和電話通話,還可以用它來開發簡單的語音聊天軟件。當然,錄音的用途不僅僅只有這些。
今天要介紹大家如何開發一個簡單的 Windows Mobile Smartphone 錄音程序,這個小程序包含錄音和播放錄音兩個功能,還可以通過數字鍵盤的5鍵來控制錄音和停止錄音。
實現原理
:OpenNETCF 已經封裝好了一個錄音機類和一個播放器類,我們把這兩個類配合起來使用,就可以制作出一個簡單的錄音程序。這兩個類在 OpenNETCF.Multimedia.Audio 命名空間下,通過引用 OpenNETCF.dll 就可以使用 Recorder 和 Player 這兩個類。我使用的是v1.4 版。
錄音:
Recorder recorder =
new
Recorder();
// stream 必須是 recorder 所在類的字段,seconds 是錄音的最長時間
recorder.RecordFor(stream, seconds, SoundFormats.Mono8bit11kHz);
停止錄音:
recorder.Stop();
播放:
Stream s = File.OpenRead(file);
Player player =
new
Player();
player.Play(s);
停止播放:
player.Stop();
實現原理
:如何注冊鍵盤的5鍵為錄音快捷鍵呢?Windows CE 提供了 RegisterHotKey 函數用于注冊系統級的快捷鍵,而 UnregisterHotKey 函數則用于注銷系統級快捷鍵。
[DllImport("
coredll.dll
", EntryPoint = "
RegisterHotKey
", SetLastError =
true
)]
private
static
extern
bool
RegisterHotKey(IntPtr hWnd,
int
id, KeyModifiers Modifiers,
int
key);
[DllImport("
coredll.dll
", EntryPoint = "
UnregisterHotKey
", SetLastError =
true
)]
private
static
extern
bool
UnRegisterHotKey(IntPtr hWnd,
int
key);
注冊了系統級的快捷鍵后,我們要在 WndProc 方法中截取 WM_HOTKEY 消息,并進行相應的按鍵事件處理。但是 .NET CF 并沒有像 .NET 完整版那樣,將 WndProc 方法放在 System.Windows.Forms.Form 類中,而是放在了 Microsoft.WindowsCE.Forms.MessageWindow 類中。因此我們需要繼承 MessageWindow,并實現 WM_HOTKEY 消息的截取。我們可以把注冊快捷鍵這個功能封裝到一個類里面。
錄音程序效果如下:
源代碼:
VoiceRecorder.rar
在 OpenNETCF 2.0 的官方示例中提供了一個叫 MobileVoiceNotes 的示例,也是使用 Recorder 和 Player 類實現的。
用到的工具和組件在這里找:
Windows Mobile Development Tools and Resources
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
