MediaRecorder
用來記錄音頻和視頻。記錄控制基於一個簡單的狀態機上(見下文)。注意:目前,MediaRecorder不會在模擬器上工作。
MediaRecorder機制
視頻編碼格式:default,H263,H264,MPEG_4_SP
獲得視頻資源:default,CAMERA
音頻編碼格式:default,AAC,AMR_NB,AMR_WB,
獲得音頻資源:defalut,camcorder,mic,voice_call, voice_communication,voice_downlink, voice_recognition, voice_uplink;
輸出方式:amr_nb,amr_wb,default,mpeg_4,raw_amr,three_gpp.
MediaRecorder應用
添加權限
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
本例設置了倆個按鍵作爲觸發,通過點擊開始錄音和停止錄音來實現錄音的功能。
開始錄音
mediaRecorder=new MediaRecorder();
// 設置接收的錄音對象爲麥克風
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 設置輸出格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// 設置語音編碼
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// 設置輸出文件位置,如果沒有文件則創建。
mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory()+"/myrecrod.3gp");
try {
// 準備錄音
mediaRecorder.prepare();
// 開始錄音
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
停止錄音
// 停止錄音
mediaRecorder.stop();
// 重置
mediaRecorder.reset();
// 釋放資源
mediaRecorder.release();
全部代碼
package com.example.laowang.mymediarecorder;
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.storage.StorageManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class MainActivity extends Activity implements View.OnClickListener{
@ViewInject(R.id.btn_start_record)
private Button mBtnStartRecorder;
@ViewInject(R.id.btn_stop_record)
private Button mBtnStopRecorder;
private MediaRecorder mediaRecorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewUtils.inject(this);
}
@OnClick({R.id.btn_stop_record,R.id.btn_start_record})
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_start_record:
mediaRecorder=new MediaRecorder();
// 設置接收的錄音對象爲麥克風
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 設置輸出格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// 設置語音編碼
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// 設置輸出文件位置,如果沒有文件則創建。
mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory()+"/myrecrod.3gp");
try {
// 準備錄音
mediaRecorder.prepare();
// 開始錄音
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
break;
case R.id.btn_stop_record:
// 停止錄音
mediaRecorder.stop();
// 重置
mediaRecorder.reset();
// 釋放資源
mediaRecorder.release();
break;
default:
break;
}
}
}