前回にバッファーを利用して、録音する方法を勉強しましたが、
今回は簡単に録音をする方法を勉強してみます。
MediaRecorderクラスを利用します。
MediaRecorder mediaRecorder = new MediaRecorder();
最初に入力のソースを設定します。
mediaRecorder.serAudioSource(MediaRecorder.AudioSource.MIC);
に記載されていますが、基本的に通話中の音声を取得するかマイクを利用する形です。今回はマイクを選択します。
次に出力のフォーマットを設定します。
mediaRecorder.serOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
でここで指定できるフォーマットの形は以下になります。
AMR_NB AMR NB file format AMR_WB AMR WB file format DEFAULT MPEG_4 MPEG4 media file format RAW_AMR AMR NB file format THREE_GPP 3GPP media file format
上記の形式ですが、確認してみます。
AMR_NB:AMRは音声に特化したもので、圧縮率は高いが音質は劣る。
AMR_WB :AMRを発展させた形式でマルチレートの広帯域音声符号化方式
MPEG_4:mpegは動画などにも応用できる形式割と汎用性の高い形式。
3GPP:3GPPファイルフォーマットは、主にMMS(日本でいう写メールやiショットに相当)で動画や音声をメールで送信するために利用される。
ですが、一般的には、3GPPを用いる場合が多いようです。メール送信を視野に入れた場合にも有用な形式なので、よほどの理由がなければ3GPPが推奨です。
次の音声のエンコーダーを設定します。
mediaRecorder.setAudioEncoder(MediaRecoder.AudioEncoder.DEFAULT)
Android developpersで記載されているのは以下の形式です。
AAC AAC audio codec AMR_NB AMR (Narrowband) audio codec AMR_WB AMR (Wideband) audio codec DEFAULT
特にDEFAULTでも問題ないと思いますが、音質に疑問が出たらエンコーダーをいじるのも手だと思います。
上記の設定をしたら画像を保存するパスを指定します。
mediaRecorder.setOutputPath(***/***.3gp)
かなり割愛してしまいましたが、必要に応じて、ディレクトリを作成したりする必要があります。
ここまでできれば残りは簡単な操作のみです。
準備をします。 mediaRecorder.prepare();
開始をします。 mediaRecorder.start();
停止をします。 mediaRecorder.stop();
開放をします。 mediaRecorder.release();
データを作成した後に他のアプリケーションで利用する場合にはandroidのデータベースにアクセスする必要もありそうです。
また、マニフェストには下記の2つの設定が必要になります。
android.permission.RECORD_AUDIO android.permission.WRITE_EXTERNAL_STORAGE