Android 音频 Framework层 音频输入 录音 Java API

本文主要探讨Android系统中音频输入的实现,包括使用MediaRecorder和AudioRecord进行录音操作。通过设置声道、音频源、采样率等参数,实现音频录制,并在AndroidManifest.xml中添加相应权限。示例代码展示了如何使用这两个类进行录音,强调了低级API AudioRecord直接录制PCM数据的特点。
摘要由CSDN通过智能技术生成

上篇文章我们介绍了音频输出(音乐播放),本文将介绍音频的录音即输入,文章中代码坏境Android 4.4

音频输入类:
        MediaRecorder 
        AudioRecord

首先录制音频需要在 AndroidManifest.xml 中加入权限

<uses-permission android:name="android.permission.RECORD_AUDIO" />

1、MediaRecorder

        MediaRecorder是Android 提供媒体文件录制的类,可以录制视频和音频,我们这主要的是录制音频,下面先看一段录音的代码:

package com.example.framework;

import java.io.File;

import android.app.Activity;
import android.media.MediaRecorder;
import android.media.MediaRecorder.AudioEncoder;
import android.media.MediaRecorder.AudioSource;
import android.media.MediaRecorder.OutputFormat;
import android.os.Bundle;

public class MediaRecorderActivity extends Activity {
	private MediaRecorder mRediaRecorder;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		try {
			String path = new File(getCacheDir(), "audio.mp4").getAbsolutePath();
			mRediaRecorder = new MediaRecorder();
			mRediaRecorder.setAudioChannels(2);
			mRediaRecorder.setAudioSource(AudioSource.MIC);
			mRediaRecorder.setAudioSamplingRate(44100);
			mRediaRecorder.setOutputFormat(OutputFormat.MPEG_4);
			mRediaRecorder.setOutputFile(path);
			mRediaRecorder.setAudioEncoder(AudioEncoder.DEFAULT);
			mRediaRecorder.prepare();
			mRediaRecorder.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		if (mRediaRecorder != null) {
			mRediaRecorder.stop();
			mRediaRecorder.release();
		}
	}
}

参数说明:
AudioChannels 
        声道,Android中取值范围:1或者2,1代表单声道,2代表双声道(立体声)
AudioSource 
        音频源,Android中已经定义好常量,android.media.MediaRecorder.AudioSource 类

public final class AudioSource {
     
        private AudioSource() {}

        /** Default audio source **/
        public static final int DEFAULT = 0;

        /** Microphone audio source */
        public static final int MIC = 1;

        /** Voice call uplink
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值