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小工具-实时获取麦克风声音.zip"是一个专注于监听和显示麦克风音频输入的Android应用程序。下面我们将深入探讨这个小工具所涉及的关键技术和知识点。 首先,要实现麦克风声音的实时获取,开发者必须...
本文将深入探讨如何使用`AudioRecord`和`MediaRecorder`类进行录音,并实现实时获取音量大小的功能。 首先,`AudioRecord`是Android提供的一个低级API,允许开发者直接访问音频硬件来录制声音。它提供了高度的...
在Android平台上,录音功能是应用程序...通过以上步骤,你可以实现一个基本的Android录音实时监控音量大小的功能。当然,实际应用可能需要根据具体需求进行更复杂的调整和优化,例如添加音量平滑处理、音量阈值判断等。
在Android平台上,实时获取麦克风声音是一项常见的功能,可以用于各种应用,比如手机助听器、语音识别、音频录制或者声音分析等。本篇将详细讲解如何在Android中实现这一功能。 首先,我们需要理解Android的声音...
在Android平台上,实时获取麦克风声音是一项常见的功能,尤其在社交应用如微信、QQ中,用户可以通过按住发送按钮实时录制并发送语音消息。要实现这样的功能,开发者需要理解音频采集、音频处理以及UI更新等多个方面...
Android平台提供了`MediaRecorder`类用于录音,而`VoiceLine`控件可能需要利用`AudioRecord`类来获取音频流的实时数据。通过对音频数据的振幅进行分析,`VoiceLine`可以计算出相应的波形高度,进而更新界面的绘制。 ...
在Android平台上,开发一款电子麦克风应用是一种常见的实践项目,尤其对于计算机科学和软件工程专业的学生来说,这常被作为毕业设计的一部分。本项目提供的源码可以帮助开发者深入了解Android应用程序的构建,尤其是...
在Android平台上进行应用开发时,电子麦克风是一个常见的功能,特别是在音乐、语音识别或实时通讯类应用中。这篇毕业设计的源码示例提供了一个很好的学习平台,让我们深入理解Android应用如何实现音频录制功能。 ...
为了实时获取声音大小,我们需要在一个循环中读取缓冲区中的音频数据,并进行处理。音频数据通常是以整数形式存储的,我们可以计算这些整数的平方和,然后取平均值,得到一个表示声音大小的值(RMS,均方根): ```...
接下来,我们要实时获取录音的分贝值。Android系统并不直接提供实时音量(分贝)的API,但我们可以通过监听音频流的音频数据来计算。可以使用AudioRecord类读取音频数据,然后通过计算数据的幅度来近似得到分贝值。...
以下是对这个"Android录音的声波动画"项目的关键知识点的详细解释: 1. **Android MediaPlayer**: Android MediaPlayer类是Android SDK提供的一个用于播放音频和视频的组件。在这个录音应用中,MediaPlayer主要被...
4. **音量检测**: 要显示音量大小,需要利用AudioRecord类实时获取麦克风输入的音量数据。AudioRecord提供读取原始音频数据的方法,我们可以定期读取并计算平均音量,然后将音量值映射到动画的进度,从而更新动画...
在Android平台上,获取音量分贝值涉及到音频输入、音频处理和传感器的使用。下面将详细解释这个过程,以及如何实现这一功能。 首先,我们需要理解音量分贝(dB)是一个表示声音强度的单位,它基于人耳对声音感知的...
通过以上步骤,你可以构建一个基本的Android录音应用。在实际开发中,还可以结合Android的其他特性,如通知、服务等,提供更丰富的用户体验。同时,不断学习和研究Android的音频框架,可以深入掌握更多高级功能,如...
在Android平台上进行移动应用开发时,录音功能是一个常见的需求,特别是在构建诸如音乐、教育或通讯类的应用中。这个"Android应用源码之录音机软件"的压缩包提供了一个完整的录音机应用源码,适合用于毕业设计学习。...
通过深入研究这个源码,你可以掌握Android录音应用的基本实现方式,理解如何结合Android框架进行实际开发。这不仅可以提升你的编程技能,也为你的毕业设计提供了一个良好的起点。在实践中,你还可以尝试添加更多功能...
在Android平台上,实时获取音量分贝值是音频处理中常见的需求,这涉及到对音频数据的采集、处理以及转换成可读的分贝值。在本文中,我们将深入探讨如何在Android环境中实现这一功能,主要关注基础知识、Android API...
android9系统mic麦克风增益和降噪
本文将深入探讨如何实现Android录音与播放录音,并介绍如何根据音频大小动态调整播放效果。 首先,我们需要理解Android的音频录制机制。Android提供了MediaRecorder类来处理音频和视频的录制工作。在录音之前,你...