封装一个录音声音振动效果的组件

news/2024/11/11 4:50:37/

目标:根据声音的大小实现声音振动特效

实现步骤:

  • 通过 getAudioCapturerMaxAmplitude 观察音频区间
  • 封装振动组件,通过声音振幅数据实现振动效果

落地代码:

1)获取振幅数据,出入振动组件 AudioPage.ets

  timer?: number
  @State maxAmplitude: number = 0

    // startRecord 4. 每100ms获取一下声音振幅
    this.timer = setInterval(async () => {
      this.maxAmplitude = await avRecorder.getAudioCapturerMaxAmplitude()
      logger.debug('startRecord', this.maxAmplitude.toString())
    }, 100)

    // stopRecord 清理定时器
    clearInterval(this.timer)

AudioBoComp({ maxAmplitude: this.maxAmplitude })

2)实现振动组件 Audio/AudioBoComp.ets

@Component
struct AudioBoComp {
  @Prop @Watch('onChange') maxAmplitude: number
  @State per: number = 0
  onChange() {
    animateTo({ duration: 100 }, () => {
      if (this.maxAmplitude < 500) {
        this.per = 0
      } else if (this.maxAmplitude > 30000) {
        this.per = 1
      } else {
        this.per = this.maxAmplitude / 30000
      }
    })
  }

  build() {
    Row({ space: 5 }) {
      ForEach(Array.from({ length: 30 }), () => {
        Column()
          .layoutWeight(1)
          .height(this.per * 100 * Math.random())
          .backgroundColor($r('app.color.common_blue'))
      })
    }
    .width('100%')
    .height(100)
  }
}


http://www.ppmy.cn/news/1528279.html

相关文章

我从家庭提取的动态IP是独享的吗?

在日常的家庭网络使用中&#xff0c;我们通常会从互联网服务提供商&#xff08;ISP&#xff09;那里获得一个动态IP地址。许多用户会产生一个疑问&#xff1a;这个IP地址是我独享的吗&#xff1f;还是其他人也可以使用这个IP&#xff1f;为了回答这个问题&#xff0c;我们需要了…

C语言的文件基础知识

一、文件存在的意义 ① 文件的定义是什么&#xff1f; 文件是以单个名称在计算机上存储的信息集合。文件可以是文本文档、图片、程序等等。文件通常具有三个字母的文件扩展名&#xff0c;用于指示文件类型&#xff08;例如&#xff0c;图片文件常常以 JPEG 格式保存并且文件扩…

HarmonyOS开发之自定义构建函数

文章目录 一、Builder装饰器&#xff1a;自定义构建函数1.按引用传递参数2.按值传递参数 一、Builder装饰器&#xff1a;自定义构建函数 UI元素复用机制Builder&#xff0c;该自定义组件内部UI结构固定&#xff0c;仅与使用方进行数据传递&#xff0c;开发者可以将重复使用的U…

深入解析代理模式:静态代理、JDK 动态代理和 CGLIB 的全方位对比!

代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了对象的替身&#xff0c;即代理对象来控制对实际对象的访问。通过代理对象&#xff0c;可以在不修改目标对象的情况下&#xff0c;扩展或控制其功能。例如&#xff0c;代理模式可以用于延…

网络安全与国家安全的关系

网络安全与国家安全密切相关&#xff0c;网络安全是国家安全的重要组成部分。网络安全不仅关系到国家的政治安全、经济安全、文化安全、社会安全、军事安全等领域&#xff0c;还直接影响着国家的总体安全观。在信息化时代&#xff0c;网络空间已成为继陆、海、空、天之后的第五…

无人机视角应急救援(人)数据集

无人机视角应急救援&#xff08;人&#xff09;&#xff0c;两个数据集 part1&#xff0c;使用DJI Phantom 4A拍摄&#xff0c;分辨率为19201080像素。山区场景&#xff0c;图像中人员姿势分为站立、坐着、躺着、行走、奔跑。共1981张图像6500个不同姿势的标记&#xff0c; par…

Pandas中df常用方法介绍

目录 常用方法df.columnsdf.indexdf.valuesdf.Tdf.sort_index()df.sort_values() 案例 常用方法 df.columns df.columns 是 Pandas 中 DataFrame 对象的一个属性&#xff0c;用于获取 DataFrame 中的列标签&#xff08;列名&#xff09;。 基本语法如下&#xff1a; df.col…

卡牌抽卡机小程序:市场发展下的创新

今年以来&#xff0c;卡牌成为了行业中的黑马&#xff0c;在国内迅速流行&#xff0c;成为消费者的心头好。小小的卡牌创下了百亿的市场规模&#xff0c;发展前景巨大&#xff01; 不过&#xff0c;随着卡牌市场的不断增长&#xff0c;市场发展也需要进行创新。线上抽卡机小程…