1 问题描述

今天在进行Android编程时遇到一个很奇怪的问题 
重点说一下 这里我的测试机用的是“小米Note” 
的确不怎么样 我在“华为P8”上面测试就没有出现这个问题
不过最终来说 我的代码不完善也是错误出现的原因之一 
不过经过这几次的测试之后 我对小米手机没有了任何好感
尤其是在小米之家把我的红米Note刷成砖之后 我就对小米真的没话说了
************************************吐槽分割线****************************
今天用小米Note播放PCM数据出现一个很奇怪的问题 那就是播放到音频的结尾时
经过“ka”的一声之后 会出现一秒左右的声音的重复
我的播放代码如下
很可能就是在这段代码中出现了问题

2 解决方案

后来我想了一下 会是哪里出现的问题的呢
因为这套代码是我从学长的代码那里借鉴过来的 跟我以前的编程风格是有区别的
∴我就细细地又想了一下 发现就是关于缓冲区这里的设置不一样
学长的设置是这样的
而我以前的设置方法一般是把缓冲区设成最小缓存的两倍也就是“bufSzie*2”
bufSzie是通过AudioTrack.getMinBufferSize()函数获得的进行音频连续播放的缓冲区的最小值
就是这样的
经过试验 果然是正确的

3 测试

经过测试 “ka”的声音消除了 看来果然是缓冲区设置的问题

4 后记

∴对于AudioTrack播放来说 缓冲区设置为缓冲区最小要求的2倍还是比较恰当的
不过这一点也说明了MIUI底层播放函数的逻辑是有问题的 我感觉可能因为波缓冲区设置的较大时
由于数组最后尾部的数据较少 MIUI可能采用了数据复制的方式进行了填充
而实际上可以发现 这样的逻辑是不可取的

Android编程中利用AudioTrack播放PCM数据在音频的最后出现重复回声现象的解决方案相关推荐

  1. 使用AudioTrack播放pcm流式音频

    一.什么是AudioTrack /*** The AudioTrack class manages and plays a single audio resource for Java applica ...

  2. AudioTrack 播放PCM音频数据

    AudioTrack 可以用来播放PCM数据,上一篇博客我讲了AudioRecord可以录制PCM数据 AudioTrack实例可以在两种模式下运行:静态或流式传输. 在Streaming模式下,应用 ...

  3. NDK学习笔记:JNI调用Java层方法创建Native的AudioTrack播放PCM(方法签名,CallXXXMethod)

    NDK学习笔记:JNI调用Java层方法创建Native的AudioTrack播放PCM 题目有点复杂,不过确实就是那么回事.这章想记录的内容比较多,先列出来: native static 与 nat ...

  4. AudioTrack播放PCM音频

    一.前言 说到在 Android 平台上播放音频,我们最先想到的是 MediaPlayer.系统 API 对其做了比较全面的封装,开发者用少量的代码就能实现播放功能.MediaPlayer 可以播放多 ...

  5. 2. android 直接使用hal库播放pcm demo

    目录 一:概述 二:实现 环境 原理说明: 注意问题: 上源代码: 编译执行: 一:概述 这是一个c语言demo程序,android源码环境,编译得到 bin文件,push到设备上在shell环境运行 ...

  6. audiotrack android,Android 音视频渲染-AudioTrack 播放

    类型 MediaPlayer:原生API中封装最全的 SoundPool:适合播放较短的音频 AudioTrack:底层的音频 API,需要自己解码,只能播放 PCM 裸数据和 WAV AudioTr ...

  7. AudioTrack播放pcm格式音频

    AudioTrack播放pcm格式音频 package com.zero.demo;import android.content.Context; import android.media.Audio ...

  8. fileoutputstream路径 android,Android编程中FileOutputStream与openFileOutput()的区别分析

    本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如 ...

  9. android listview下拉动画效果,Android开发中利用ListView实现一个渐变式的下拉刷新动画...

    Android开发中利用ListView实现一个渐变式的下拉刷新动画 发布时间:2020-11-23 16:50:31 来源:亿速云 阅读:80 作者:Leah 本篇文章给大家分享的是有关Androi ...

最新文章

  1. 对HTTP/2 支持
  2. 迟到的2017年终总结与2018目标规划
  3. 如何定义一个只能在堆上(栈上)生成对象的类?
  4. LeetCode 2126. 摧毁小行星(贪心)
  5. 一款零注解API接口文档生成工具
  6. 于iOS跳转到应用程序AppStore
  7. 丰富的else语句及简洁的with语句 - 零基础入门学习Python034
  8. 敏捷外包工程系列之二:人员结构(敏捷外包工程,敏捷开发,产品负责人,客户价值)...
  9. python3的encode()和decode()
  10. Lua 学习笔记(七)编译、执行外部代码块
  11. [整理]充分发挥FireWork功能,实现超酷多级下拉菜单,爆强!
  12. ASM磁盘配置(udev)
  13. Linux系统安装Node.js步骤
  14. python可视化数据分析交互作用_测试设计功能交互分析
  15. 【数据库查询--电影制片系列】-- 检索出Studio表中制片公司st1的地址。
  16. Wed前端开发 ---- HTML超文本标记语言
  17. 用户权限---u+s\g+s\o+t三个特殊权限说明
  18. SMAA算法详解 - SMAAEdgeDetectionVS
  19. 华为/阿里等公司招聘缩减!科技行业出现衰退?
  20. IOS开发之——AFN-网络状态监控(04)

热门文章

  1. 在.net中调用vb脚本(ITpro专用的vb脚本,而不是浏览器vb脚本)
  2. 追加easyui元素,完成后调用$.parser.parse()方法渲染
  3. javascript实用代码大全
  4. go语言 goquery爬虫
  5. 小爬爬1:jupyter简单使用爬虫相关概念
  6. Django常用代码基本语句
  7. 推箱子 (hdu1254)(bfs双重广搜)
  8. HDU4027 (线段树/修改区间,询问区间和)
  9. Scalable Web Architectures: Common Patterns and Approaches
  10. 拼接字符串时的引号嵌套