我們可以使用Android提供的MediaRecorder類的相關(guān)方法來(lái)實(shí)現(xiàn)一個(gè)錄音機(jī)的功能。步驟如下
創(chuàng)建一個(gè)MediaRecorder實(shí)例
使用 MediaRecorder的setAudioSource()方法設(shè)置音頻來(lái)源,比如麥克風(fēng)(MediaRecorder.AudioSource.MIC)
使用MediaRecorder的setOutputFormat()方法設(shè)置錄音文件的輸出格式
使用MediaRecorder的setOutputFile()方法設(shè)置錄音文件的輸出路徑和文件名
使用 MediaRecorder.setAudioEncoder()設(shè)置音頻編碼器
調(diào)用l MediaRecorder.prepare()準(zhǔn)備錄音
調(diào)用MediaRecorder.start()開(kāi)始錄音
MediaRecorder.stop()暫停錄音
當(dāng)錄音完成的時(shí)候,調(diào)用all MediaRecorder.release()釋放資源
package com.android.audiorecordtest;
import android.app.Activity;
import android.widget.LinearLayout;
import android.os.Bundle;
import android.os.Environment;
import android.view.ViewGroup;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Context;
import android.util.Log;
import android.media.MediaRecorder;
import android.media.MediaPlayer;
import java.io.IOException;
public class AudioRecordTest extends Activity
{private static final String LOG_TAG =
"AudioRecordTest";
private static String mFileName =
null;
private RecordButton mRecordButton =
null;
private MediaRecorder mRecorder =
null;
private PlayButton mPlayButton =
null;
private MediaPlayer mPlayer =
null;
private void onRecord(
boolean start) {
if (start) {startRecording();}
else {stopRecording();}}
private void onPlay(
boolean start) {
if (start) {startPlaying();}
else {stopPlaying();}}
private void startPlaying() {mPlayer =
new MediaPlayer();
try {mPlayer.setDataSource(mFileName);mPlayer.prepare();mPlayer.start();}
catch (IOException e) {Log.e(LOG_TAG,
"prepare() failed");}}
private void stopPlaying() {mPlayer.release();mPlayer =
null;}
private void startRecording() {mRecorder =
new MediaRecorder();mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mRecorder.setOutputFile(mFileName);mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {mRecorder.prepare();}
catch (IOException e) {Log.e(LOG_TAG,
"prepare() failed");}mRecorder.start();}
private void stopRecording() {mRecorder.stop();mRecorder.release();mRecorder =
null;}class RecordButton extends Button {
boolean mStartRecording =
true;OnClickListener clicker =
new OnClickListener() {
public void onClick(View v) {onRecord(mStartRecording);
if (mStartRecording) {setText(
"Stop recording");}
else {setText(
"Start recording");}mStartRecording = !mStartRecording;}};
public RecordButton(Context ctx) {
super(ctx);setText(
"Start recording");setOnClickListener(clicker);}}class PlayButton extends Button {
boolean mStartPlaying =
true;OnClickListener clicker =
new OnClickListener() {
public void onClick(View v) {onPlay(mStartPlaying);
if (mStartPlaying) {setText(
"Stop playing");}
else {setText(
"Start playing");}mStartPlaying = !mStartPlaying;}};
public PlayButton(Context ctx) {
super(ctx);setText(
"Start playing");setOnClickListener(clicker);}}
public AudioRecordTest() {mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();mFileName +=
"/audiorecordtest.3gp";}
@Overridepublic void onCreate(Bundle icicle) {
super.onCreate(icicle);LinearLayout ll =
new LinearLayout(
this);mRecordButton =
new RecordButton(
this);ll.addView(mRecordButton,
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT,
0));mPlayButton =
new PlayButton(
this);ll.addView(mPlayButton,
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT,
0));setContentView(ll);}
@Overridepublic void onPause() {
super.onPause();
if (mRecorder !=
null) {mRecorder.release();mRecorder =
null;}
if (mPlayer !=
null) {mPlayer.release();mPlayer =
null;}}
}
方法說(shuō)明
| setAudioSource() | 設(shè)置音頻來(lái)源,如麥克風(fēng) |
| setOutputFormat() | 設(shè)置輸出格式 |
| setOutputFile() | 設(shè)置輸出路徑 |
| setAudioEncoder() | 設(shè)置編碼器 |
| prepare() | 錄音前的準(zhǔn)備工作 |
| start() | 開(kāi)始錄音 |
| stop() | 暫停錄音 |
| release() | 錄音完畢,釋放資源 |
總結(jié)
以上是生活随笔為你收集整理的Android多媒体开发:录音机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。