您的位置:首页 > 移动开发 > Android开发

[Android] 录音与播放录音实现

2016-08-30 09:39 501 查看
 


[Android] 录音与播放录音实现

标签: android
录音
2012-12-18 13:58 31588人阅读 评论(8) 收藏 举报


 分类:

android(1) 


版权声明:本文为博主原创文章,未经博主允许不得转载。

android开发文档中有一个关于录音的类MediaRecord,一张图介绍了基本的流程:





给出了一个常用的例子:

[java] view
plain copy

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.
1fff8
基本界面如下:



2.工程中各文件内容如下:
  2.1 Activity——RecordActivity

[java] view
plain copy

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

[html] view
plain copy

<?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

[html] view
plain copy

<?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

[html] view
plain copy

<?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>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: