autojs噪音测试

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂

效果

环境


手机: Mi 11 Pro


Android版本: 12


Autojs版本: 9.1.6

源码

"ui";
/*
 * @version: 1.0
 * @Date: 2022-02-23 17:34:13
 * @LastEditTime: 2022-02-23 18:35:14
 * @LastEditors: 牙叔
 * @Description:
 * @FilePath: \autojs获取音量分贝\main.js
 * @名人名言: 牙叔教程 简单易懂
 * @bilibili: 牙叔教程
 * @公众号: 牙叔教程
 * @QQ群: 747748653
 */
engines.all().map((ScriptEngine) => {
  if (engines.myEngine().toString() !== ScriptEngine.toString()) {
    ScriptEngine.forceStop();
  }
});
importClass(android.media.AudioFormat);
importClass(android.media.AudioRecord);
importClass(android.media.MediaRecorder);
importClass(android.util.Log);
importClass(android.content.pm.PackageManager);
ui.layout(
  <vertical>
    <text text="噪音测试" margin="10" textSize="60sp" gravity="center" textStyle="bold"></text>
    <text id="author" textSize="22sp" marginBottom="6" textColor="#fbfbfe" bg="#00afff" w="*" gravity="center">
      牙叔教程
    </text>
    <horizontal w="*" gravity="center">
      <text id="value" w="0" layout_weight="3" text="Hello World" textSize="39sp" gravity="center" />
      <text text="db" w="0" layout_weight="1" textSize="39sp" gravity="left" />
    </horizontal>
  </vertical>
);
if (checkPermission("android.permission.RECORD_AUDIO")) {
  log("有录音权限");
  main();
} else {
  log("没有录音权限");
  runtime.requestPermissions(["record_audio"]);
}
/* -------------------------------------------------------------------------- */
function checkPermission(permission) {
  pm = context.getPackageManager();
  return (havePermission =
    PackageManager.PERMISSION_GRANTED == pm.checkPermission(permission, context.getPackageName().toString()));
}
function main() {
  getNoiseLevel();
}
function getNoiseLevel() {
  let SAMPLE_RATE_IN_HZ = 8000;
  let BUFFER_SIZE = AudioRecord.getMinBufferSize(
    SAMPLE_RATE_IN_HZ,
    AudioFormat.CHANNEL_IN_DEFAULT,
    AudioFormat.ENCODING_PCM_16BIT
  );
  let mAudioRecord;
  let isGetVoiceRun;
  if (isGetVoiceRun) {
    log("还在录着呢");
    return;
  }
  mAudioRecord = new AudioRecord(
    MediaRecorder.AudioSource.MIC,
    SAMPLE_RATE_IN_HZ,
    AudioFormat.CHANNEL_IN_DEFAULT,
    AudioFormat.ENCODING_PCM_16BIT,
    BUFFER_SIZE
  );
  if (mAudioRecord == null) {
    log("sound", "mAudioRecord初始化失败");
  }
  isGetVoiceRun = true;
  setTimeout(() => {
    isGetVoiceRun = false;
  }, 5000);
  threads.start(function () {
    mAudioRecord.startRecording();
    let buffer = util.java.array(java.lang.Short.TYPE, BUFFER_SIZE);
    while (isGetVoiceRun) {
      //r是实际读取的数据长度,一般而言r会小于buffersize
      let r = mAudioRecord.read(buffer, 0, BUFFER_SIZE);
      let v = 0;
      // 将 buffer 内容取出,进行平方和运算
      for (let i = 0; i < buffer.length; i++) {
        v += buffer[i] * buffer[i];
      }
      // 平方和除以数据总长度,得到音量大小。
      let mean = v / r;
      let volume = 10 * Math.log10(mean);
      log("分贝值:" + volume);
      ui.post(() => {
        ui.value.setText(volume.toFixed(2));
      });
      // 大概一秒十次
      sleep(100);
    }
    mAudioRecord.stop();
    mAudioRecord.release();
    mAudioRecord = null;
  });
}


参考

Android实时获取音量(单位:分贝


相关教程

https://www.yuque.com/go/doc/66524497



名人名言


思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程


声明


部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

相关文章
|
10月前
|
机器学习/深度学习 编解码 算法
英文论文(sci)解读复现:基于YOLOv5的自然场景下苹果叶片病害实时检测
英文论文(sci)解读复现:基于YOLOv5的自然场景下苹果叶片病害实时检测
351 0
|
7月前
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
675 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
JavaScript 数据安全/隐私保护 iOS开发
精确定位 Cocos 线上报错
精确定位 Cocos 线上报错
164 0
精确定位 Cocos 线上报错
|
机器学习/深度学习 存储 人工智能
【OpenVI-视觉评价系列之MOS评价实战篇】手机存储不够用,清理照片太痛苦?MOS评价帮你挑选“垃圾”照片
MOS(Mean Opinion Score)是一种常用的主观质量评价方法,常用于视频、图像等多媒体领域中的质量评价。MOS视觉评价通常是通过让受试者观看视频/图像,对视频的清晰度、锐度、颜色饱和度、运动模糊、噪声等方面进行评价。然而,MOS视觉评价也存在一些局限,例如需要大量的受试者,评估时间较长等。因此,近年来,研究者们也开始探索使用客观评价方法来替代或补充MOS视觉评价。
601 2
【OpenVI-视觉评价系列之MOS评价实战篇】手机存储不够用,清理照片太痛苦?MOS评价帮你挑选“垃圾”照片
|
算法 IDE 开发工具
2021电赛F题之openmv数字识别--更新(附带视频与代码)
2021电赛F题之openmv数字识别--更新(附带视频与代码)
295 0
2021电赛F题之openmv数字识别--更新(附带视频与代码)
|
编解码 Linux iOS开发
开源图片放大修复神器,无损提升图片分辨率和质量!
Final2x 可以使用多个模型将图像超分辨率到任意大小,以提高图像的分辨率和质量,使其更清晰和更详细
|
XML Android开发 数据格式
Android上机实验-2 基本控件的使用
Android上机实验-2 基本控件的使用
184 1
|
机器学习/深度学习 编解码 PyTorch
翻车现场:我用pytorch和GAN做了一个生成神奇宝贝的失败模型
翻车现场:我用pytorch和GAN做了一个生成神奇宝贝的失败模型
231 0
翻车现场:我用pytorch和GAN做了一个生成神奇宝贝的失败模型
|
小程序 前端开发
【测试经验向】提测质量差 + 测试工期压缩,我要怎么办?
【测试经验向】提测质量差 + 测试工期压缩,我要怎么办?
【测试经验向】提测质量差 + 测试工期压缩,我要怎么办?
|
机器学习/深度学习 编解码 自然语言处理
AttnGAN代码复现(详细步骤+避坑指南)文本生成图像
这篇文章是AttnGAN: Fine-Grained TexttoImage Generation with Attention(带有注意的生成对抗网络细化文本到图像生成)的代码复现博文,我边做边写,展示详细步骤、踩坑和debug的过程。 论文地址: https://arxiv.org/pdf/1711.10485.pdf 论文阅读笔记:Text to image论文精读 AttnGAN
AttnGAN代码复现(详细步骤+避坑指南)文本生成图像