Android 上有一些很有趣的应用,例如《吹裙子》、《吹气球》之类的。利用的是实时获取麦克风输入音量,然后进行相应的处理。录音过程中怎样获得声音的大小呢?下面有个实例
Java代码:
package eoe.demo;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.util.Log;
public class RecordThread extends Thread {
private AudioRecord ar;
private int bs;
private static int SAMPLE_RATE_IN_HZ = 8000;
private boolean isRun = false;
public RecordThread() {
super();
bs = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
ar = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bs);
}
public void run() {
super.run();
ar.startRecording();
// 用于读取的
buffer byte[] buffer = new byte[bs]; isRun = true; while (isRun) {
int r = ar.read(buffer, 0, bs);
int v = 0;
// 将 buffer 内容取出,进行平方和运算
for (int i = 0; i < buffer.length; i++) {
// 这里没有做运算的优化,为了更加清晰的展示代码
v += buffer[i] * buffer[i];
}
// 平方和除以数据总长度,得到音量大小。可以获取白噪声值,然后对实际采样进行标准化。
// 如果想利用这个数值进行操作,建议用 sendMessage 将其抛出,在 Handler 里进行处理。
Log.d("spl", String.valueOf(v / (float) r));
}
ar.stop();
}
public void pause() {
// 在调用本线程的 Activity 的 onPause 里调用,以便 Activity 暂停时释放麦克风
isRun = false;
}
public void start() {
// 在调用本线程的 Activity 的 onResume 里调用,以便 Activity 恢复后继续获取麦克风输入音量
if (!isRun) {
super.start();
}
}
}
分享到:
相关推荐
在Android平台上,获取麦克风音量并将其转化为分贝值是一项常见的需求,特别是在音频处理、语音识别或实时通信等应用场景中。以下将详细介绍如何在Android系统中实现这一功能。 首先,我们要理解分贝(dB)的概念。...
在Android平台上,开发一款能够实时获取麦克风声音的小工具是一项技术性的工作,涉及到音频处理、权限管理以及用户界面设计等多个方面。本项目"android小工具-实时获取麦克风声音.zip"是一个专注于监听和显示麦克风...
本文将深入探讨如何使用`AudioRecord`和`MediaRecorder`类进行录音,并实现实时获取音量大小的功能。 首先,`AudioRecord`是Android提供的一个低级API,允许开发者直接访问音频硬件来录制声音。它提供了高度的...
在Android平台上,录音功能是应用程序...通过以上步骤,你可以实现一个基本的Android录音实时监控音量大小的功能。当然,实际应用可能需要根据具体需求进行更复杂的调整和优化,例如添加音量平滑处理、音量阈值判断等。
在Android平台上,实时获取麦克风声音是一项常见的功能,可以用于各种应用,比如手机助听器、语音识别、音频录制或者声音分析等。本篇将详细讲解如何在Android中实现这一功能。 首先,我们需要理解Android的声音...
在Android平台上,实时获取麦克风声音是一项常见的功能,尤其在社交应用如微信、QQ中,用户可以通过按住发送按钮实时录制并发送语音消息。要实现这样的功能,开发者需要理解音频采集、音频处理以及UI更新等多个方面...
Android平台提供了`MediaRecorder`类用于录音,而`VoiceLine`控件可能需要利用`AudioRecord`类来获取音频流的实时数据。通过对音频数据的振幅进行分析,`VoiceLine`可以计算出相应的波形高度,进而更新界面的绘制。 ...
为了实时获取声音大小,我们需要在一个循环中读取缓冲区中的音频数据,并进行处理。音频数据通常是以整数形式存储的,我们可以计算这些整数的平方和,然后取平均值,得到一个表示声音大小的值(RMS,均方根): ```...
接下来,我们要实时获取录音的分贝值。Android系统并不直接提供实时音量(分贝)的API,但我们可以通过监听音频流的音频数据来计算。可以使用AudioRecord类读取音频数据,然后通过计算数据的幅度来近似得到分贝值。...
4. **音量检测**: 要显示音量大小,需要利用AudioRecord类实时获取麦克风输入的音量数据。AudioRecord提供读取原始音频数据的方法,我们可以定期读取并计算平均音量,然后将音量值映射到动画的进度,从而更新动画...
以下是对这个"Android录音的声波动画"项目的关键知识点的详细解释: 1. **Android MediaPlayer**: Android MediaPlayer类是Android SDK提供的一个用于播放音频和视频的组件。在这个录音应用中,MediaPlayer主要被...
通过以上步骤,你可以构建一个基本的Android录音应用。在实际开发中,还可以结合Android的其他特性,如通知、服务等,提供更丰富的用户体验。同时,不断学习和研究Android的音频框架,可以深入掌握更多高级功能,如...
android9系统mic麦克风增益和降噪
本文将深入探讨如何实现Android录音与播放录音,并介绍如何根据音频大小动态调整播放效果。 首先,我们需要理解Android的音频录制机制。Android提供了MediaRecorder类来处理音频和视频的录制工作。在录音之前,你...
在Android平台上,获取音量分贝值涉及到音频输入、音频处理和传感器的使用。下面将详细解释这个过程,以及如何实现这一功能。 首先,我们需要理解音量分贝(dB)是一个表示声音强度的单位,它基于人耳对声音感知的...
在Android平台上,实时获取音量分贝值是音频处理中常见的需求,这涉及到对音频数据的采集、处理以及转换成可读的分贝值。在本文中,我们将深入探讨如何在Android环境中实现这一功能,主要关注基础知识、Android API...
- Android中的音频源有多种,如`MediaRecorder.AudioSource.MIC`用于从麦克风获取音频输入。这是实现心电图效果的关键,因为我们需要实时监听到的声音来驱动图形的变化。 2. **音量数据获取**: - 在Android中,...
1. **Android录音**:Android系统提供了AudioRecord类,用于实现低级别的音频录制功能。你需要配置AudioRecord对象,设置采样率、通道数、位深度等参数,然后开始录音。录音数据通常以PCM(脉冲编码调制)格式存储,...
为了实时获取分贝值,你需要创建一个`AudioRecord`实例,设置合适的采样率、通道数和音频格式,然后在一个循环中读取音频数据。每次读取的数据通常是一个缓冲区,你可以计算这个缓冲区内所有样本的平方和,然后除以...