原文地址为:
[Android] 录音与播放录音实现
转载请注明本文地址: [Android] 录音与播放录音实现
android开发文档中有一个关于录音的类MediaRecord,一张图介绍了基本的流程:
我在这里实现了一个简单的程序,过程和上述类似,录音以及录音的播放。
给出了一个常用的例子:
MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(PATH_NAME); recorder.prepare(); recorder.start(); // Recording is now started ... recorder.stop(); recorder.reset(); // You can reuse the object by going back to setAudioSource() step recorder.release(); // Now the object cannot be reused
我在这里实现了一个简单的程序,过程和上述类似,录音以及录音的播放。
1.基本界面如下:
2.工程中各文件内容如下:
2.1 Activity——RecordActivity
package com.cxf; import java.io.IOException; import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class RecordActivity extends Activity { private static final String LOG_TAG = "AudioRecordTest"; //语音文件保存路径 private String FileName = null; //界面控件 private Button startRecord; private Button startPlay; private Button stopRecord; private Button stopPlay; //语音操作对象 private MediaPlayer mPlayer = null; private MediaRecorder mRecorder = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //开始录音 startRecord = (Button)findViewById(R.id.startRecord); startRecord.setText(R.string.startRecord); //绑定监听器 startRecord.setOnClickListener(new startRecordListener()); //结束录音 stopRecord = (Button)findViewById(R.id.stopRecord); stopRecord.setText(R.string.stopRecord); stopRecord.setOnClickListener(new stopRecordListener()); //开始播放 startPlay = (Button)findViewById(R.id.startPlay); startPlay.setText(R.string.startPlay); //绑定监听器 startPlay.setOnClickListener(new startPlayListener()); //结束播放 stopPlay = (Button)findViewById(R.id.stopPlay); stopPlay.setText(R.string.stopPlay); stopPlay.setOnClickListener(new stopPlayListener()); //设置sdcard的路径 FileName = Environment.getExternalStorageDirectory().getAbsolutePath(); FileName += "/audiorecordtest.3gp"; } //开始录音 class startRecordListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mRecorder.setOutputFile(FileName); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try { mRecorder.prepare(); } catch (IOException e) { Log.e(LOG_TAG, "prepare() failed"); } mRecorder.start(); } } //停止录音 class stopRecordListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub mRecorder.stop(); mRecorder.release(); mRecorder = null; } } //播放录音 class startPlayListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub mPlayer = new MediaPlayer(); try{ mPlayer.setDataSource(FileName); mPlayer.prepare(); mPlayer.start(); }catch(IOException e){ Log.e(LOG_TAG,"播放失败"); } } } //停止播放录音 class stopPlayListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub mPlayer.release(); mPlayer = null; } } }2.2 main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/startRecord" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/stopRecord" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/startPlay" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/stopPlay" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>2.3 Manifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cxf" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="4" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".RecordActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.RECORD_AUDIO" /> </manifest>
2.4 string.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello"></string> <string name="app_name">Record</string> <string name="startRecord">开始录音</string> <string name="stopRecord">结束录音</string> <string name="startPlay">开始播放</string> <string name="stopPlay">结束播放</string> </resources>
转载请注明本文地址: [Android] 录音与播放录音实现