当前位置:操作系统 > 安卓/Android >>

Android录音与播放

Android多媒体框架包含获取和编码多种音频格式的支持,所以你可以轻松地把音频合并到你的应用中.如果设备支持,你可以使用MediaRecorder APIs 进行录音.

本章向你展示如何写一个应用从设备上的microphone获取音频,然后保存并回放.

注:Android模拟器不具有录音的能力,但是真实的设备一般都具有此功能.

 

执行音频获取
从设备获取音频比回放音频或视频要复杂一点,但是也还算简单:


创建一个android.media.MediaRecorder的新实例.
使用MediaRecorder.setAudioSource()设置音频源,一般要使用MediaRecorder.AudioSource.MIC.
使用MediaRecorder.setOutputFormat()设置输出文件的格式.
使用MediaRecorder.setOutputFile()设置输出文件的名字.
使用MediaRecorder.setAudioEncoder()设置音频编码.
调用MediaRecorder 实例的MediaRecorder.prepare().
MediaRecorder.start()开始获取音频.
调用MediaRecorder.stop().停止.
当你用完MediaRecorder实例后,调用MediaRecorder.release(),就会立即释放资源.

 


示例:录音并回放录音

下面的例子演示了如何设置,开始以及停止音频获取,以及回放录制的文件.

 

 

[java]
/*
 * 如果输出文件被写入外部存储,
 * 本应用需要具有写外部存储的权限, 
 * 还要具有录音的权限.这些权限必须
 * 在AndroidManifest.xml 文件中声明,像这样:
 *
 * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 * <uses-permission android:name="android.permission.RECORD_AUDIO" />
 *
 */ 
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; 
 
   //当录音按钮被click时调用此方法,开始或停止录音  
    private void onRecord(boolean start) { 
        if (start) { 
            startRecording(); 
        } else { 
            stopRecording(); 
        } 
    } 
 
   //当播放按钮被click时调用此方法,开始或停止播放  
    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(); 
        //设置音源为Micphone  
        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 { 
               &

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,