Android高仿iOS Messages声音播放波形效果

文接《Android低仿iOS Messages录音波形效果》。

上一次开发中,因为无法完美实现波形的收敛效果,因此只能算是一个低仿的版本。

声音波形效果对比之下,比较容易实现。

一、目标

实现声音播放的波形效果,为神马笔记增加录音及播放功能做准备。

二、功能分析

截图 描述
在这里插入图片描述 停止时的波形显示为全白色。
在这里插入图片描述 播放过程中,波形有暗变亮,以呈现进度。

三、实现效果

基本上实现了播放的波形效果。
在这里插入图片描述

四、实现过程

1. 创建波形

绘制波形的前提条件是有波形数据。

波形数据的来源有2种。

  1. 从音频文件读取数据,然后转换为波形数据
  2. 录音时进行采样保存

通过MediaRecorder实现录音时,通过getMaxAmplitude()获取最近最大的振幅,通过一段时间的连续调用,最终可以组成一个波形数据。

有了波形数据后,还需要根据控件大小转换为目标数据。

2. Waveform

从波形数据创建Waveform,用来显示完整波形。

sample()Waveform的核心方法,实现转换波形数据的功能。

/**
     *
     */
private static class Waveform {
   

  ArrayList<Wave> list;
  ArrayList<Wave> recycler;

  TapePlayView parent;

  Waveform(TapePlayView parent) {
   
    this.parent = parent;

    this.list = new ArrayList<>(100);
    this.recycler = new ArrayList<>(100);
    for (int i = 0; i < 100; i++) {
   
      recycler.add(new Wave());
    }
  }

  void clear() {
   
    this.recycler.addAll(list);
    list.clear();
  }

  void sample() {
   
    this.recycler.addAll(list);
    this.list.clear();

    int count = parent.getWidth() / parent.getWaveWidth();
    if (count &#
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值