Android開發之使用MediaRecorder錄製聲音

來源:互聯網
上載者:User

Android開發之使用MediaRecorder錄製聲音

為了在 Android 應用中錄製聲音,Android提供了 MediaRecorder 類,關於MediaRecorder的詳解大家可以參考《Android開發之MediaRecorder類詳解》。

使用MediaRecorder錄製聲音的步驟:

1) 建立 MediaRecorder 對象。

2) 調用MediaRecorder對象的setAudioSource()方法設定聲音來源,一般傳入 MediaRecorder. AudioSource.MIC參數指定錄製來自麥克風的聲音。

3) 調用MediaRecorder對象的setOutputFormat()設定所錄製的音頻檔案的格式

4) 調用MediaRecorder 對象的setAudioEncoder()、setAudioEncodingBitRate(intbitRate)、 setAudioSamplingRate(int samplingRate)設定所錄製的聲音的編碼格式編碼位率採樣率等, 這些參數將可以控制所錄製的聲音的品質、檔案的大小。一般來說,聲音品質越好,音效檔越大。

5) 調用MediaRecorder的setOutputFile(Stringpath)方法設定錄製的音頻檔案的儲存位置

6) 調用MediaRecorder的prepare()方法準備錄製

7) 調用MediaRecorder對象的start()方法開始錄製

8) 錄製完成,調用MediaRecorder對象的stop()方法停止錄製,並調用release()方法釋放資源

提示:1.上面的步驟中第3和第4兩個步驟千萬不能搞反,否則程式將會拋出lllegalStateException 異常。

2. 設定聲音編碼格式要和聲音的輸出格式相對應,不然錄製的音頻檔案不標準。如果編碼格式和輸出格式不對應,錄製出的音頻檔案雖然可以播放,但是將多個這類音頻檔案合并之後,會出現只播放合并檔案中的部分檔案。

應用執行個體

使用MediaRecorder錄製聲音:

執行個體代碼:

package com.jph.recordsound;import java.io.File;import org.crazyit.sound.R;import android.app.Activity;import android.media.MediaRecorder;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageButton;import android.widget.Toast;public class RecordSound extends Activityimplements OnClickListener{// 定義介面上的兩個按鈕ImageButton record, stop;// 系統的音頻檔案File soundFile;MediaRecorder mRecorder;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// 擷取程式介面中的兩個按鈕record = (ImageButton) findViewById(R.id.record);stop = (ImageButton) findViewById(R.id.stop);// 為兩個按鈕的單擊事件綁定監聽器record.setOnClickListener(this);stop.setOnClickListener(this);}@Overridepublic void onDestroy(){if (soundFile != null && soundFile.exists()){// 停止錄音mRecorder.stop();// 釋放資源mRecorder.release();mRecorder = null;}super.onDestroy();}@Overridepublic void onClick(View source){switch (source.getId()){// 單擊錄音按鈕case R.id.record:if (!Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){Toast.makeText(RecordSound.this, "SD卡不存在,請插入SD卡!",Toast.LENGTH_SHORT).show();return;}try{// 建立儲存錄音的音頻檔案soundFile = new File(Environment.getExternalStorageDirectory().getCanonicalFile()+ "/sound.amr");mRecorder = new MediaRecorder();// 設定錄音的聲音來源mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 設定錄製的聲音的輸出格式(必須在設定聲音編碼格式之前設定)mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);// 設定聲音編碼的格式mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);mRecorder.setOutputFile(soundFile.getAbsolutePath());mRecorder.prepare();// 開始錄音mRecorder.start();  //①}catch (Exception e){e.printStackTrace();}break;// 單擊停止按鈕case R.id.stop:if (soundFile != null && soundFile.exists()){// 停止錄音mRecorder.stop();  //②// 釋放資源mRecorder.release();  //③mRecorder = null;}break;}}}

程式運行:


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.