編輯:關於Android編程
上一篇講到了使用意圖錄音,這篇文章將使用MediaRecorder類來錄音,從而提供更多的靈活性。
效果圖:

源代碼奉上:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">
package com.multimediademo9mediarecorder;
import java.io.File;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener,
OnCompletionListener {
private TextView statusTextView;
private Button button_startRecording, button_stopRecording,
button_playRecording, button_finish;
private MediaRecorder recorder;
private MediaPlayer player;
private File audioFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
/**
* 實例化組件
*/
private void init() {
statusTextView = (TextView) findViewById(R.id.statusTextView);
// 當運行Activity時,將statusTextView的文本設置為“Ready”。
statusTextView.setText("Ready");
button_startRecording = (Button) findViewById(R.id.button_startRecording);
button_playRecording = (Button) findViewById(R.id.button_playRecording);
button_stopRecording = (Button) findViewById(R.id.button_stopRecording);
button_finish = (Button) findViewById(R.id.button_finish);
button_startRecording.setOnClickListener(this);
button_playRecording.setOnClickListener(this);
button_stopRecording.setOnClickListener(this);
button_finish.setOnClickListener(this);
button_playRecording.setEnabled(false);
button_stopRecording.setEnabled(false);
player = new MediaPlayer();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_startRecording:
try {
/**
* 當點擊開始錄音按鈕時,將構造一個新的MediaRecorder,並調用setAudioSource、
* setOutputFormat和setAudioEncoder方法。
*/
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
/**
* 然後在SD卡上創建一個新的File對象,並調用MediaRecorder對象上的setOutputFile方法。
*/
File path = new File(Environment.getExternalStorageDirectory()
.getAbsoluteFile() + "/files/");
path.mkdir();
audioFile = File.createTempFile("recording", ".3gp", path);
recorder.setOutputFile(audioFile.getAbsolutePath());
/**
* 調用MediaRecorder上的prepare方法,並開始錄制。
*/
recorder.prepare();
recorder.start();
/**
* 最後更新statusTextView,並且更改那些按鈕會被啟用或禁用。
*/
statusTextView.setText("Recording");
button_playRecording.setEnabled(false);
button_stopRecording.setEnabled(true);
button_startRecording.setEnabled(false);
} catch (Exception e) {
e.printStackTrace();
}
break;
case R.id.button_playRecording:
/**
* 播放錄音,使用MediaPlayer構造的對象player
*/
player.start();
statusTextView.setText("playing");
button_playRecording.setEnabled(false);
button_stopRecording.setEnabled(false);
button_startRecording.setEnabled(false);
break;
case R.id.button_stopRecording:
/**
* 停止錄制,並釋放MediaRecorder對象。
*/
try {
recorder.stop();
recorder.release();
player.setOnCompletionListener(this);
player.setDataSource(audioFile.getAbsolutePath());
player.prepare();
statusTextView.setText("Ready to Play!!");
button_playRecording.setEnabled(true);
button_stopRecording.setEnabled(false);
button_stopRecording.setEnabled(false);
} catch (Exception e) {
e.printStackTrace();
}
break;
case R.id.button_finish:
finish();
break;
default:
break;
}
}
@Override
public void onCompletion(MediaPlayer mp) {
button_playRecording.setEnabled(true);
button_startRecording.setEnabled(true);
button_stopRecording.setEnabled(false);
statusTextView.setText("Ready...");
}
}
點擊下載源碼
Fragment生命周期詳解
1. Fragment概述Fragment從Android v3.0版本開始引入隨著界面布局的復雜化,處理起來也更加的復雜,引入Fragment可以把activity拆分
android開源項目:圖片下載緩存庫picasso
picasso是Square公司開源的一個Android圖形緩存庫,地址http://square.github.io/picasso/,可以實現圖片下載和緩存功能。
Android自定義Toolbar使用方法詳解
本篇文章介紹:如何使用Toolbar;自定義Toolbar;先來看一看效果,了解一下toolbar;布局文件:<android.support.v7.widget.
Android4.4 Telephony流程分析——SIM卡開機時的數據加載
本文代碼以MTK平台Android 4.4為分析對象,與Google原生AOSP有些許差異,請讀者知悉。 本文主要介紹sim卡數據的讀取過程,當射頻狀態處於