您的位置:华清远见教育科技集团 >> Android资料 >> Android音频记录的处理  
 
Android音频记录的处理
分享到:

1.AudioRecord

AudioRecord和AudioTrack相对应,用于音频记录。AudioRecord的可选采样频率为44100Hz、22050Hz、11025Hz,通道配置为CHANNEL_IN_MONO、CHANNEL_IN_STEREO,音频格式为ENCODING_PCM_16BIT、ENCODING_PCM_8BIT。

AudioRecord的常用方法包括:

read() //从硬件音频设备中记录数据到缓冲中。
    startRecording() //开始音频记录
    stop() //停止音频记录
    setRecordPositionUpdateListener()//设置AudioRecord.OnRecordPositionUpdateListener监听器AudioRecord的记录状态包括RECORDSTATE_STOPPED、RECORDSTATE_RECORDING等。

AudioRecord自身的状态包括STATE_INITIALIZED、STATE_UNINITIALIZED等。

下面是利用AudioRecord的方法:

mAudioRecord=new AudioRecord(MediaRecorder.AudioSource.DEFAULT, mHz,
    AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT,
    AudioRecord.getMinBufferSize(mHz,AudioFormat.CHANNEL_CONFIGURATION_MONO,
                    AudioFormat.ENCODING_PCM_16BIT) * 10);
    mAudioRecord.startRecording();

2.MediaRecorder

在Android中,录制音频和视频常采用的是MediaRecorder接口。为了录制音频文件,需要设置音频源、输出格式、录制时间、编码格式等。录制音频文件的过程如下:

代码10-2 MediaRecorder录制音频文件


    private MediaRecorder mMediaRecorder;
    …
    //设置音频源为麦克风
    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    //设置输出格式为3gp
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    //设置大录制时间
    mMediaRecorder.setMaxDuration(MAX_DURATION_MSEC);
    //设置音频编码格式
    mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mMediaRecorder.prepare();
    mMediaRecorder.start(); //开始录制

当有错误发生时,为了能够监听到相关的消息,可以为MediaRecorder设置监听器。方法如下:


    private final RecorderErrorCallback mRecorderErrorCallback=new RecorderErrorCallback();
    …
    private final class RecorderErrorCallback implements MediaRecorder.OnErrorListener {
            public void onError(MediaRecorder mr, int what, int extra) {
                assertTrue("mediaRecorder error", false);
            }
        }
    …
    mMediaRecorder.setOnErrorListener(mRecorderErrorCallback); //设置错误监听器

 
 更多相关文章

·Android AudioManager音量控制流程
·Android音频处理的基本接口
·Android编译过程详解(三)
·Android HAL 开发
·Android编译过程详解(二)