Android有一個(gè)內(nèi)置的麥克風(fēng),通過(guò)它可以捕獲音頻和存儲(chǔ),或在手機(jī)進(jìn)行播放。有很多方法可以做到這一點(diǎn),但最常見(jiàn)的方法是通過(guò)MediaRecorder類。
Android提供MediaRecorder類錄制音頻或視頻。為了使用MediaRecorder類,首先創(chuàng)建MediaRecorder類的一個(gè)實(shí)例。其語(yǔ)法如下給出。
MediaRecorder myAudioRecorder = new MediaRecorder();
現(xiàn)在設(shè)置源,輸出編碼格式和輸出文件。下面的語(yǔ)法給出。
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); myAudioRecorder.setOutputFile(outputFile);
指定音頻源和格式以及它的輸出文件之后,我們就可以調(diào)用兩種基本方法制備,開(kāi)始記錄音頻。
myAudioRecorder.prepare(); myAudioRecorder.start();
除了這些方法,還有其他的MediaRecorder類可以更好地控制音頻和視頻錄制列出的方法。
Sr.No | 方法及說(shuō)明 |
---|---|
1 |
setAudioSource() 這個(gè)方法規(guī)定的音頻源要被記錄 |
2 |
setVideoSource() 這個(gè)方法規(guī)定視頻源將要記錄 |
3 |
setOutputFormat() 該方法規(guī)定了音頻格式中的音頻將被存儲(chǔ) |
4 |
setAudioEncoder() 此方法指定要使用的音頻編碼器 |
5 |
setOutputFile() 該方法配置文件路徑到其中的記錄的音頻將被存儲(chǔ) |
6 |
stop() 此方法停止記錄處理 |
7 |
release() 當(dāng)需要在記錄器實(shí)例這種方法應(yīng)被調(diào)用 |
這個(gè)例子提供了MediaRecorder類捕獲音頻的示范,MediaPlayer類來(lái)播放錄制的音頻。
為了試驗(yàn)這個(gè)例子,需要在實(shí)際設(shè)備上運(yùn)行此例子。
Steps | 描述 |
---|---|
1 | 使用Android Studio創(chuàng)建Android應(yīng)用程序,并將其命名為:AudioCapture,創(chuàng)建這個(gè)項(xiàng)目,確保目標(biāo)SDK編譯在Android SDK的最新版本或使用更高級(jí)別的API。 |
2 | 修改src/MainActivity.java 文件添加AudioCapture代碼 |
3 | 如果修改所需的布局XML文件res/layout/activity_main.xml 添加GUI組件 |
4 | 修改 res/values/string.xml文件,并添加必要的字符串組成部分 |
5 | 修改 AndroidManifest.xml 添加必要的權(quán)限。 |
6 | 運(yùn)行應(yīng)用程序并選擇運(yùn)行Android設(shè)備,并在其上安裝的應(yīng)用和驗(yàn)證結(jié)果。 |
這里是 src/com.yiibai.audiocapture/MainActivity.java 內(nèi)容
package com.example.audiocapture; import java.io.File; import java.io.IOException; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private MediaRecorder myAudioRecorder; private String outputFile = null; private Button start,stop,play; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button)findViewById(R.id.button1); stop = (Button)findViewById(R.id.button2); play = (Button)findViewById(R.id.button3); stop.setEnabled(false); play.setEnabled(false); outputFile = Environment.getExternalStorageDirectory(). getAbsolutePath() + "/myrecording.3gp";; myAudioRecorder = new MediaRecorder(); myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); myAudioRecorder.setAudioEncoder(MediaRecorder.Outpu