Android吹裙子的实现代码方法,今天给大家带来安卓中的游戏,吹裙子的核心实现代码,如下:

package com.xxiyy.spl;

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

}

}

}

原文中提到“平方和除以数据总长度,得到音量大小”,有些文章中提到这个音量值在不同的手机中表现得不一样,同样的发声,但出来的值相差很大。进而有通过一些计算,调整“音量”的算法,其中有两个,分别是:

1、计算了噪音,对音量进行调整:

value 的 值 控制 为 0 到 100 之间 0为最小 》= 100为最大!!

int value = (int) (Math.abs((int)(v /(float)r)/10000) >> 1);

2、计算分贝值:

那个值应该是声音的振幅,并不是音量的大小,

声音的大小应该是用分贝为单位的吧,

double dB = 10*Math.log10(v/(double)r);

即:经傅立叶变化后得到的复数数组是个二维数组,实部和虚部的平方和取对数后乘以10就大致等于我们通常表示音量的分贝了。

android 吹裙子,Android吹裙子的实现代码相关推荐

  1. Android UI【android 仿微信、QQ聊天,带表情,可翻页,带翻页拖动缓冲】

    如题,这是公司项目的一个功能模块,先上个效果图: 其次大致说说原理: 1,首先判断输入的字符,是否包含表情的文字,比如   这个表情对应的文件名为 emoji_1.png,它对应的文字描述 : [可爱 ...

  2. android layout组件,Android UI学习 - Linear Layout, RelativeLayout

    1.一些常用的公共属性介绍 1) layout_width -宽 fill_parent: 宽度和父元素相同,wrap_content: 宽度随本身的内容所调整,或者指定 px值来设置宽 2) lay ...

  3. android:layout_gravity 和 android:gravity 的区别

    gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...

  4. Android横向伸缩,Android 实现伸缩布局效果示例代码

    最近项目实现下面的图示的效果,本来想用listview+gridview实现,但是貌似挺麻烦的于是就用flowlayout 来addview实现添加伸缩的效果,实现也比较简单. mainActivit ...

  5. android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...

    本文将带你了解Android应用开发Android 7.0  BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...

  6. android window 大小,android popupWindow 中宽度莫名很大,求帮助?

    这个是popupwindow的内容xml(就是放了个ListView): android:layout_width="wrap_content" android:layout_he ...

  7. 镜像处理坐标 android,Android应用开发之Android重写ImageView实现图片镜像效果的代码教程...

    本文将带你了解Android应用开发之Android重写ImageView实现图片镜像效果的代码教程,希望本文对大家学Android有所帮助. 前两天朋友问我一个问题,如何实现从手机系统相册加载一张图 ...

  8. android radiobutton 分组,Android 第十课——UI RadioButton

    常用基础空组件 5 RadioGroup RadioButton 单选按钮时常用组件之一,但是开发过程中虽然很多地方会用到单选按钮,但是却不会用Android系统提供的原始样式,类似我们在写html时 ...

  9. android单线字体,Android自定义字体

    在main文件夹下,新建assets/fonts文件,添加.otf文件 image.png 字体工具类 import android.app.Application; import android.g ...

  10. mp4 android自动播放,Android 使用VideoView播放MP4的简单实现

    使用VideoView播放MP4 播放示例 实现简单的播放功能,播放手机本地的MP4文件.不依赖任何第三方框架,不添加任何防腐剂. 添加一个系统自带的控制条. 申请权限 读取存储中的MP4文件 准备布 ...

最新文章

  1. 无法使用_解决kali linux 2020 安装完后发现无法使用 ifconfig
  2. PMcaff-活动| 产品经理免费培训最后一批通过名单公布啦!
  3. XSS跨站脚本(web应用)——XSS相关工具及使用(四)
  4. 计算机一级考试无法显示评分,计算机一级评分各题标准
  5. ios越狱系统UIGestureRecognizer事件截获问题
  6. 51CTO下载专题有奖征集建议:您的期待,我们的方向!
  7. Win7系统虚拟键盘打开的方法
  8. 【OJ】洛谷红题题解锦集(Java语言描述)
  9. P2240 【深基12.例1】部分背包问题
  10. 12.2 新特性:锁信息获取之在线删除索引
  11. mysql mariadb 10.4_MariaDB 10.4.1发布,流行的MySQL分支版本
  12. Linux定时器函数setitimer
  13. 【优化求解】基于matlab免疫算法求解函数极值问题【含Matlab源码 1200期】
  14. 山大泰克条屏写串口的核心代码(海宏原创,转载请注明)
  15. JAVA IO与NIO面试题
  16. JavaScript之this释疑
  17. Python 办公自动化之全网最强最详细PDF 文件操作手册
  18. Python xlwt 操作 excel 表格基础(三):单元格格式、字体格式、对齐方式、边框及填充等
  19. 2019滴滴java面试总结 (包含面试题解析)
  20. Linux用户权限特殊权限

热门文章

  1. Zynq7000芯片内部介绍
  2. 鸿蒙丹法 可练吗,“狐仙拜月”是狐狸修道炼丹的法门,其实很多修道人也练过这个功法!...
  3. Why Crypto-agility is the Key for Quantum-safe Cryptography
  4. 嗨,Scripting Guy!脚本存档
  5. error: #35: #error directive: ... 解决方法
  6. 51Nod 2176 ProjectEuler 3 c/c++题解
  7. 基于JavaEE的在线特产商城系统的设计与实现
  8. Python实践4:基于xlwings按字段对Excel中的数据做筛选和分类
  9. java计算机毕业设计家装建材网源码+数据库+系统+lw文档+mybatis+运行部署
  10. ZYNQ开发学习笔记(一):BOOT.bin,fsbl文件,将程序固化到板上的QSPI_Flash中