android MediaRecorder錄製音頻

來源:互聯網
上載者:User

標籤:android   mediarecorder   錄製音頻   例子程式   步驟   

使用MediaRecorder錄製音頻步驟:

建立MediaRecorder對象

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

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

調用MediaRecorder對象的setAudioEncoder() ,setAudioEncodingBitRate(int bitRate),setAudioSamplingRate(int samplingRate)設定所錄製的聲音的編碼格式,編碼位率,采

樣率等,這些參數將可以控制所錄製的聲音的品質,檔案的大小 ,一般來說品質越好,音效檔越大

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

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

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

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

如下:

MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(PATH_NAME); recorder.prepare(); recorder.start();   // Recording is now started ... recorder.stop(); recorder.reset();   // You can reuse the object by going back to setAudioSource() step recorder.release(); // Now the object cannot be reused


例子程式:

Activity:

import java.io.File;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.THREE_GPP);// 設定聲音編碼的格式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;}}}

資訊清單檔:

<!-- 授予該程式錄製聲音的許可權 --><uses-permission android:name="android.permission.RECORD_AUDIO" /><!-- 授予該程式向外部儲存空間寫入資料的許可權 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.