Android MediaRecorder 手机 录音的几种方法(2)

2019-04-13 21:28

g SeeCHANNEL_IN_MONO and CHANNEL_IN_STEREO

声道设置:android支持双声道立体声和单声道。MONO单声道,STEREO立体声 the format

in which the audio data is

represented.

SeeENCODING_PCM_16BIT and ENCODING_PCM_8BIT

编码制式和采样大小:采集来的数据当然使用PCM编码(脉冲代码调制编

audioFormat

码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。) android支持的采样大小16bit 或者8bit。当然采样大小越大,那么信息量越多,音质也越高,现在主流的采样大小都是16bit,在低质量的语音传输的时候8bit 足够了。

the total size (in bytes) of the buffer where audio data is written to during the recording. New audio data can be read from this buffer in smaller chunks than this size. See getMinBufferSize(int, int, int) to

bufferSizeInB

ytes

determine the minimum required buffer size for the successful creation of an AudioRecord instance. Using values smaller than getMinBufferSize() will result in an initialization failure.

采集数据需要的缓冲区的大小,如果不知道最小需要的大小可以在getMinBufferSize()查看。

采集到的数据保存在一个byteBuffer中,可以使用流将其读出。亦可保存成为文件的形式

Android 使用AudioRecord录音相关和音频文件的封装

分类: Android流媒体学习

在Android中录音可以用MediaRecord录音,操作比较简单。但是不够专业,就是不能对音频进行处理。如果要进行音频的实时的处理或者音频的一些封装 就可以用AudioRecord来进行录音了。

这里给出一段代码。实现了AudioRecord的录音和WAV格式音频的封装。 用

AudioTrack

AudioTrack

类可以进行边录边播,可以参考:

http://blog.sina.com.cn/s/blog_6309e1ed0100j1rw.html 我们这里的代码没有播放。但是有封装和详解,如下:

? ? ? ? ? ? ? ? ?

package com.ppmeet;

import java.io.File;

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity;

import android.graphics.PixelFormat;

?? import android.media.AudioFormat; ?? import android.media.AudioRecord;

?? import android.media.MediaRecorder; ?? import android.os.Bundle; ?? import android.view.View;

?? import android.view.View.OnClickListener; ?? import android.view.Window;

?? import android.view.WindowManager; ?? import android.widget.Button; ?? ?? /**

?? * class name:TestAudioRecord

?? * class description:用AudioRecord来进行录音
?? * PS:
?? *

?? * @version 1.00 2011/09/21 ?? * @author CODYY)peijiangping ?? */

?? public class TestAudioRecord extends Activity { ?? // 音频获取源

?? private int audioSource = MediaRecorder.AudioSource.MIC;

?? // 设置音频采样率,44100是目前的标准,但是某些设备仍然支持22050,

16000,11025

?? private static int sampleRateInHz = 44100;

?? // 设置音频的录制的声道CHANNEL_IN_STEREO为双声道,

CHANNEL_CONFIGURATION_MONO为单声道

?? private static int channelConfig = AudioFormat.CHANNEL_IN_STEREO;

?? // 音频数据格式:PCM 16位每个样本。保证设备支持。PCM 8位每个样本。不

一定能得到设备支持。

?? private static int audioFormat = AudioFormat.ENCODING_PCM_16BIT;

?? // 缓冲区字节大小

?? private int bufferSizeInBytes = 0; ?? private Button Start; ?? private Button Stop;

?? private AudioRecord audioRecord;

?? private boolean isRecord = false;// 设置正在录制的状态 ?? //AudioName裸音频数据文件

?? private static final String AudioName = \; ?? //NewAudioName可播放的音频文件

?? private static final String NewAudioName = \; ??

?? public void onCreate(Bundle savedInstanceState) { ?? super.onCreate(savedInstanceState);

?? getWindow().setFormat(PixelFormat.TRANSLUCENT);// 让界面横屏

?? requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉界面标

??

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

?? WindowManager.LayoutParams.FLAG_FULLSCREEN); ?? // 重新设置界面大小

?? setContentView(R.layout.main); ?? init(); ?? } ??

?? private void init() {

?? Start = (Button) this.findViewById(R.id.start); ?? Stop = (Button) this.findViewById(R.id.stop); ?? Start.setOnClickListener(new TestAudioListener()); ?? Stop.setOnClickListener(new TestAudioListener()); ?? creatAudioRecord(); ?? } ??

?? private void creatAudioRecord() { ?? // 获得缓冲区字节大小 ?? bufferSizeInBytes

=

AudioRecord.getMinBufferSize(sampleRateInHz,


Android MediaRecorder 手机 录音的几种方法(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:专利侵权诉讼中是否需要向法院提供专利权评价报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: