`
80demon
  • 浏览: 77782 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

}


分享到:
评论

相关推荐

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

    总结一下,Android获取麦克风音量并转化为分贝值,需要使用`MediaRecorder`类来获取音频样本,然后通过计算RMS值并转换为分贝。同时,别忘了处理权限问题和优化性能。在开发过程中,可以参考ATest项目中的代码进行...

    Android 各种音量的获取

    ### Android各种音量的获取详解 #### 一、引言 在Android开发过程中,对于音频控制的需求非常普遍,比如在开发电话应用时调整通话音量、在音乐播放器中调节播放音量等。本文将详细介绍如何通过编程方式获取Android...

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

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

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

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

    android 实时获取麦克风声音

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

    android获取音量分贝值

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

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

    在安卓平台上,开发一款应用获取麦克风声音大小是常见的需求,比如用于实时音量指示、噪音检测或音乐应用。这个“安卓获取麦克风声音大小经典满意Demo”应该提供了一个实现这一功能的示例代码。下面我们将详细探讨...

    android录音实时监控音量大小

    Android系统并没有直接提供获取实时录音音量的方法,但可以通过监听音频流的音频数据来间接获取。一种常见的方法是利用AudioRecord类,它是直接访问音频硬件的接口。首先创建AudioRecord实例,设置音频源、采样率、...

    android实时获取麦克风声音

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

    Android高级应用源码-Android电子麦克风.rar

    在Android系统中,访问麦克风需要获取相应的权限。源码中应该包含了在`AndroidManifest.xml`文件中声明`&lt;uses-permission&gt;`标签,特别是`RECORD_AUDIO`权限,以便应用可以录制音频。 2. **MediaRecorder类**: `...

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

    在Android开发中,实时获取音量分贝值是一项常见的需求,尤其在音频处理或声音监测的应用中。分贝(dB)是衡量声音强度的标准单位,它是一个无纲量的相对单位,通常用来描述声音相对于人类所能听到的最小声压(20微...

    android麦克风录音源码

    4. **读取音频数据**:通过`read()`方法从麦克风获取音频数据。可以采用阻塞或非阻塞模式。通常在一个循环中读取,直到录音结束。 ```java short[] buffer = new short[bufferSize]; while (isRecording) { int ...

    android音量控制

    2. **通话音量**:通话音量特指在进行电话通话时听到的声音大小,包括麦克风输入和扬声器输出。用户在拨打电话时,可以使用侧边的物理音量键实时调整通话音量。此外,在设置中也可以找到“电话”或“通话”选项来...

    锁定麦克风话筒音量 (防止应用程序随意修改话筒音量)

    在iOS和Android系统中,也有类似的权限管理机制,开发者需要获取用户的许可才能访问麦克风。 最后,用户还可以通过硬件解决方案来实现音量锁定。一些高端的麦克风设备配有物理音量控制,用户可以在设备上设定固定的...

    android自定义控件之声音大小显示

    1. **麦克风数据获取** 在Android中,我们可以使用`MediaRecorder.AudioSource.MIC`来访问麦克风。通过创建`AudioRecord`对象并设置适当的采样率、通道数和位深度,我们可以实时捕获音频数据。音频数据通常以PCM...

    安卓摇一摇传感器相关-android获取音量分贝值.rar

    在安卓平台上,开发一款应用获取音量分贝值并结合摇一摇传感器功能,可以创造出有趣且实用的...同时,对于获取音量分贝值,由于不同设备的麦克风质量差异,结果可能会有所偏差,因此在设计应用时应充分考虑这些因素。

    Android 麦克风开发

    在Android平台上进行麦克风开发是一项涉及音频输入、处理和实时反馈的技术工作。在这个"吹气球游戏"项目中,开发者利用麦克风捕获用户吹气的声音信号,通过算法分析声音强度,来模拟吹气球的过程,并实现相应的动画...

    Android应用源码之电子麦克风

    在Android平台上,开发一款电子麦克风应用涉及到许多关键的技术点,这些技术主要集中在音频录制、用户界面设计以及系统权限管理等方面。以下是对"Android应用源码之电子麦克风"这一主题的详细解释。 1. **音频录制*...

    Android高级应用源码-Android电子麦克风.zip

    在AndroidManifest.xml文件中添加`&lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&gt;`以获取录音权限。 5. **UI设计**:压缩包中的“麦克风.png”可能是应用的图标或界面元素,显示了UI设计的一...

Global site tag (gtag.js) - Google Analytics