酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows MobileでOpenNETCFを使った音声(Wave形式)の録音処理

本記事では、OpenNETCFのSmart Device Frameworkを使って、スマートフォンに搭載されているマイクを使用し、周囲の音をWave形式で録音する方法をご紹介しています。

以下のサンプルコードでは、OpenNETCF.dllが参照に追加されていることを前提としております。Smart Device Frameworkの導入方法については、「Windows MobileでOpenNETCF Smart Device Frameworkを導入する - 酢ろぐ!」をご覧ください。

通常ですと、Win32APIを使用する必要があり、バッファの管理など手間のかかることをする必要があり大変面倒なので、今回はOpenNETCFを使用して簡単にプログラムを書きます。

OpenNETCF.Media.WaveAudio名前空間内にある、Recorderクラスを使用しますのでプロジェクトにはOpenNETCF.dllの参照を追加しておきます。サンプルコードが冗長になりますのでここでは、以下のusingディレクティブに以下の宣言をしておいてください。

using OpenNETCF.Media.WaveAudio;

録音の開始処理

C#
  private OpenNETCF.Media.WaveAudio.Recorder audioRecorder = null;

  // 録音の開始処理
  private void StartRecord(string filePath)
  {
      this.audioRecorder = new OpenNETCF.Media.WaveAudio.Recorder();
      this.audioRecorder.RecordFor(
          System.IO.File.OpenWrite(filePath), 10000,
          OpenNETCF.Media.WaveAudio.SoundFormats.Stereo16bit44kHz);
  }
VB.NET
  Private audioRecorder As OpenNETCF.Media.WaveAudio.Recorder = Nothing

  ' 録音の開始処理
  Private Sub StartRecord(ByVal filePath As String)

      Me.audioRecorder = New OpenNETCF.Media.WaveAudio.Recorder()
      Me.audioRecorder.RecordFor( _
        System.IO.File.OpenWrite(filePath), _
        10000, _
        OpenNETCF.Media.WaveAudio.SoundFormats.Stereo16bit44kHz)

  End Sub

録音の停止処理

C#
  // 録音の停止処理
  private void StopRecord()
  {
      this.audioRecorder.Stop();
  }
VB.NET
  ' 録音の停止処理
  Private Sub StopRecord()

      Me.audioRecorder.Stop()

  End Sub

OpenNETCF Smart Device Frameworkの導入に関しては、「Windows MobileでOpenNETCF Smart Device Frameworkを導入する - 酢ろぐ!」をお読みください。