本例简单介绍一下 Android下的声音录制:
布局文件:activity_main.xml
</pre><pre class="html" name="code"><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.recorder0707.MainActivity"
tools:ignore="MergeRootFrame" >
<Button
android:id="@+id/rec_bt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="录音" />
<FrameLayout
android:id="@+id/show_rec_fl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/main_bg_orange_pressed" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="正在录音" />
</FrameLayout>
</FrameLayout>
java代码:
MainActivity.java
package com.example.recorder0707;
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.FrameLayout;
public class MainActivity extends Activity {
private Button bt;
FrameLayout fl;
MediaRecorder mr;
File sdPath = Environment.getExternalStorageDirectory();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = (Button)this.findViewById(R.id.rec_bt);
fl = (FrameLayout)this.findViewById(R.id.show_rec_fl);
//设置录音按钮监听,这里使用OnTouchListener监听器。
bt.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
//按下按钮录音
case MotionEvent.ACTION_DOWN:
startREC();
fl.setVisibility(View.VISIBLE);
break;
//松开停止
case MotionEvent.ACTION_UP:
fl.setVisibility(View.GONE);
stopREC();
break;
}
return false;
}
});
}
//开始录音
private void startREC(){
try { //创建MediaRecorder对象
mr = new MediaRecorder();
//重置
mr.reset();
//设置音源
mr.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置输出格式
mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//设置编码格式
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
//设置输出的文件路径
long time = System.currentTimeMillis();
mr.setOutputFile(sdPath.toString()+File.separator+"REC_"+time+".3gp");
mr.prepare();
mr.start();
System.out.println("开始录音");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//停止录音
private void stopREC(){
if (mr!=null) {
mr.stop();
mr.release();
mr = null;
System.out.println("录音停止");
}
}
}