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

2023-10-21 16:20

本文主要是介绍Android高仿iOS Messages声音播放波形效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

    • 一、目标
    • 二、功能分析
    • 三、实现效果
    • 四、实现过程
      • 1. 创建波形
      • 2. Waveform
      • 3. Wave
      • 4. 播放声音
    • 五、开发过程回顾
    • 六、接下来
    • 七、Finally

文接《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 == 0) {

这篇关于Android高仿iOS Messages声音播放波形效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/255538

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

使用Python实现生命之轮Wheel of life效果

《使用Python实现生命之轮Wheeloflife效果》生命之轮Wheeloflife这一概念最初由SuccessMotivation®Institute,Inc.的创始人PaulJ.Meyer... 最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用python创建生命倒计时图表,珍惜时间

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超