0915Android基礎MediaRecorder

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;

        }
    }

}
發佈了56 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章