当前位置: 首页 > news >正文

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

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

实现步骤:

  • 通过 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.mrgr.cn/news/31286.html

相关文章:

  • 【iOS】——YYModel源码总结
  • 如何编写一个爬虫以实时获取某平台商品价格
  • Linux——K8s集群部署过程
  • 天宝Trimble RealWorks2024.0.2注册机 点云后处理软件 点云三维重建软件
  • 解决Rdkit Explicit valence for atom # 1 C, 5, is greater than permitted,价键不对的问题
  • 倒排索引(反向索引)
  • 数据结构—(java)反射,枚举,lambda表达式
  • 如何在C++中使用Poppler库读取PDF文件(一)
  • Web开发:ABP框架3——入门级别的接口增删改查实现原理
  • MapReduce基本原理
  • 【Python报错已解决】python setup.py bdist_wheel did not run successfully.
  • 动态线程池(四)
  • jdk版本更换以及遇到的问题略谈(以jdk1.8和jdk11为例)
  • 如何来写一份开题报告?
  • OpenCV特征检测(6)对初步检测到的角点位置进行亚像素级别的精炼函数cornerSubPix()的使用
  • Live800:从心出发,以情动人:构建深度客户服务文化
  • (c++)线程的创建、互斥锁的使用、线程数组
  • 网络编程练习:UDP聊天室
  • 虚拟机安装nginx需要注意的一些事项
  • Linux 进程3