`

Android 录音获取麦克风实时音量

阅读更多

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(); 
} 
}

}

分享到:
评论
2 楼 1025250620 2011-09-27  
请问你的音量的计算是怎么得到的~?
1 楼 热血pk007 2011-06-12  
请问这个有完整的代码吗?就是实现后的完整代码

相关推荐

    Android 获取麦克风的音量(分贝)

    在Android平台上,获取麦克风音量并将其转化为分贝值是一项常见的需求,特别是在音频处理、语音识别或实时通信等应用场景中。以下将详细介绍如何在Android系统中实现这一功能。 首先,我们要理解分贝(dB)的概念。...

    android小工具-实时获取麦克风声音.zip

    在Android平台上,开发一款能够实时获取麦克风声音的小工具是一项技术性的工作,涉及到音频处理、权限管理以及用户界面设计等多个方面。本项目"android小工具-实时获取麦克风声音.zip"是一个专注于监听和显示麦克风...

    Android AudioRecord和MediaRecorder录音并实现了实时获取音量大小

    本文将深入探讨如何使用`AudioRecord`和`MediaRecorder`类进行录音,并实现实时获取音量大小的功能。 首先,`AudioRecord`是Android提供的一个低级API,允许开发者直接访问音频硬件来录制声音。它提供了高度的...

    android录音实时监控音量大小

    在Android平台上,录音功能是应用程序...通过以上步骤,你可以实现一个基本的Android录音实时监控音量大小的功能。当然,实际应用可能需要根据具体需求进行更复杂的调整和优化,例如添加音量平滑处理、音量阈值判断等。

    android实时获取麦克风声音

    在Android平台上,实时获取麦克风声音是一项常见的功能,可以用于各种应用,比如手机助听器、语音识别、音频录制或者声音分析等。本篇将详细讲解如何在Android中实现这一功能。 首先,我们需要理解Android的声音...

    android 实时获取麦克风声音

    在Android平台上,实时获取麦克风声音是一项常见的功能,尤其在社交应用如微信、QQ中,用户可以通过按住发送按钮实时录制并发送语音消息。要实现这样的功能,开发者需要理解音频采集、音频处理以及UI更新等多个方面...

    Android-VoiceLine一个可以根据麦克风音量大小显示一些波形效果的控件

    Android平台提供了`MediaRecorder`类用于录音,而`VoiceLine`控件可能需要利用`AudioRecord`类来获取音频流的实时数据。通过对音频数据的振幅进行分析,`VoiceLine`可以计算出相应的波形高度,进而更新界面的绘制。 ...

    安卓获取麦克风声音大小经典满意Demo

    为了实时获取声音大小,我们需要在一个循环中读取缓冲区中的音频数据,并进行处理。音频数据通常是以整数形式存储的,我们可以计算这些整数的平方和,然后取平均值,得到一个表示声音大小的值(RMS,均方根): ```...

    android录音分贝波浪图展示动画

    接下来,我们要实时获取录音的分贝值。Android系统并不直接提供实时音量(分贝)的API,但我们可以通过监听音频流的音频数据来计算。可以使用AudioRecord类读取音频数据,然后通过计算数据的幅度来近似得到分贝值。...

    android 录音 动画

    4. **音量检测**: 要显示音量大小,需要利用AudioRecord类实时获取麦克风输入的音量数据。AudioRecord提供读取原始音频数据的方法,我们可以定期读取并计算平均音量,然后将音量值映射到动画的进度,从而更新动画...

    Android录音的声波动画

    以下是对这个"Android录音的声波动画"项目的关键知识点的详细解释: 1. **Android MediaPlayer**: Android MediaPlayer类是Android SDK提供的一个用于播放音频和视频的组件。在这个录音应用中,MediaPlayer主要被...

    android麦克风录音源码

    通过以上步骤,你可以构建一个基本的Android录音应用。在实际开发中,还可以结合Android的其他特性,如通知、服务等,提供更丰富的用户体验。同时,不断学习和研究Android的音频框架,可以深入掌握更多高级功能,如...

    android9系统mic麦克风增益和降噪

    android9系统mic麦克风增益和降噪

    android 录音与播放录音 带根据音频大小动态效果

    本文将深入探讨如何实现Android录音与播放录音,并介绍如何根据音频大小动态调整播放效果。 首先,我们需要理解Android的音频录制机制。Android提供了MediaRecorder类来处理音频和视频的录制工作。在录音之前,你...

    android获取音量分贝值

    在Android平台上,获取音量分贝值涉及到音频输入、音频处理和传感器的使用。下面将详细解释这个过程,以及如何实现这一功能。 首先,我们需要理解音量分贝(dB)是一个表示声音强度的单位,它基于人耳对声音感知的...

    Android中实时获取音量分贝值详解

    在Android平台上,实时获取音量分贝值是音频处理中常见的需求,这涉及到对音频数据的采集、处理以及转换成可读的分贝值。在本文中,我们将深入探讨如何在Android环境中实现这一功能,主要关注基础知识、Android API...

    录音时根据音量大小实现心电图的效果

    - Android中的音频源有多种,如`MediaRecorder.AudioSource.MIC`用于从麦克风获取音频输入。这是实现心电图效果的关键,因为我们需要实时监听到的声音来驱动图形的变化。 2. **音量数据获取**: - 在Android中,...

    android录音并频谱分析绘图

    1. **Android录音**:Android系统提供了AudioRecord类,用于实现低级别的音频录制功能。你需要配置AudioRecord对象,设置采样率、通道数、位深度等参数,然后开始录音。录音数据通常以PCM(脉冲编码调制)格式存储,...

    Android录音时获取分贝值的方法代码实例

    为了实时获取分贝值,你需要创建一个`AudioRecord`实例,设置合适的采样率、通道数和音频格式,然后在一个循环中读取音频数据。每次读取的数据通常是一个缓冲区,你可以计算这个缓冲区内所有样本的平方和,然后除以...

Global site tag (gtag.js) - Google Analytics