MediaPlayer无法成功切换歌曲:setDataSource(FileDescriptor fd)的问题
使用MediaPlayer播放Asset中的Mp3文件,在播完前一首歌,转播下一首歌时,使用
却发现,每次重新播放,却依然播送是上首歌曲,而不是我想要播放的下一首歌曲。查了半天,网上有人说可能是因为setDataSource引起的。于是改成
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
这个时候就没有问题了。有人解释根据android源代码,说是因为setDataSource(FileDescriptor filede)函数里面调用的是setDataSource(FileDescriptor, offset, length)来实现的,其中offset=0, lenght=0x7ffffffffffffff。而从assets中读出来的MP3文件的offset不为0,也就是afd.getStartOffset()不为0,导致出问题的。
但是这种解释也有点牵强,如果第二次使用setDataSource(FileDescriptor)失败,为什么第一次能加载成功,并播放音乐了?目前我也没有很合理的解释,以后有时间再深入研究下。
MediaPlayer无法成功切换歌曲:setDataSource(FileDescriptor fd)的问题相关推荐
- Android MediaPlayer各种状态切换
1.状态图 通过这张图,我们可以知道一个MediaPlayer对象有以下的状态: 1)当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态.当 ...
- 安卓Service实现通知栏音乐播放器,切换歌曲,类似QQ音乐
引言: 这样的一个音乐播放器,用到了安卓四大组件的其中三个,等于说是一个比较综合性的小功能.实现方法其实有很多,我这里给出自己的方法,不喜勿喷. 需求分析 1.音乐播放器,那我们需要一个帮助类,来构建 ...
- 乐鑫Esp32学习之旅11 入门 乐鑫esp-adf 音频框架开发,造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- html 音乐切换不暂停,web-audio-api可视化音乐播放器,实现暂停切换歌曲功能,粉色系专场~...
可视化的音乐播放器,可戳我观看效果 了解Web-Audio-Api 基础知识 标签是HTML5的新标签,通过添加src属性实现音乐播放. AudioContext是音频播放环境,原理与canvas的绘 ...
- html音乐播放器换歌,web-audio-api可视化音乐播放器,实现暂停切换歌曲功能,粉色系专场~...
可视化的音乐播放器,可戳我观看效果 了解Web-Audio-Api 基础知识 标签是HTML5的新标签,通过添加src属性实现音乐播放. AudioContext是音频播放环境,原理与canvas的绘 ...
- 基于Qt的音乐播放器(二)切换歌曲,调节音量,调节语速,暂停
2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票! 我的投票地址:点击为我投票 文章目录 1.切换歌曲 2.调节音量 3.调节语速 4.播放/暂停 5.我们来看下效果 6.关于上一篇提 ...
- Android系统的改进(二) -- 长按音量键作为切换歌曲/频道的快捷键
在播放歌曲或者广播的时候,过一会后,屏幕会锁住. 如果我们需要切换歌曲或者广播频道时,我们需要电源键-->解锁-->下一个或是上一个. 如果能将长按音量键作为切换歌曲/频道的快捷键,我们就 ...
- uniapp - [全端兼容] 音乐列表播放与切换歌曲,点击列表播放 mp3 wav 音乐文件(支持点击播放与暂停,图标切换 / 流畅的切换音频、暂停保留歌曲及恢复功能等详细教程)
前言 网上教程都太乱了,各种不兼容.功能缺陷等问题,我们很难对示例进行改造. 本文站在新手角度,实现了 uniapp 全平台兼容,歌曲音乐列表点击播放与暂停.切换歌曲等功能(音乐列表多个音频切换), ...
- audio通知栏切换歌曲停止播放,怎么破
问题描述: 音乐播放过程中,切换到应用其他页面时,用后台的状态栏切换音乐时音乐会暂停. 问题分析: 华为audio接口只能在页面中使用,当audio所在的页面退出后,页面销毁,绑定的上下文对象也随之不 ...
最新文章
- ASP.NET中绑定枚举类型
- 科研必备:10款提升科研效率的神器
- 在Sublime Text 3中配置编译和运行Java程序
- nodejs(1)---mongodb
- jQuery获取时间,一位数则补零
- MySQL MMM多主多从搭建
- php线上问题排查,线上问题排查神器 Arthas
- Java不是文明语言吗?
- PhoneGap android环境设置
- 利用机器学习实现微信小程序-加减大师自动答题
- linux下原始套接字编程错误:Operation not supported
- 《R语言初学指南》一1.2 向量
- win7打印服务经常无缘无故自动停止print spooler服务停止
- 剑指Offer题目汇总(持续更新中...)
- 《多基因病的遗传》学习笔记
- 台式计算机硬盘能扩大吗,电脑怎么增加磁盘内存
- python3爬虫豆瓣_Python爬虫(3)豆瓣登录
- 计算机各键的知识,联想电脑各功能键的说明
- 《数据仓库与数据挖掘教程》ch01绪论 章节整理
- TD源链:让技术回归本质
热门文章
- c语言 topk算法,scala写算法-用小根堆解决topK
- 计算机国际会议开幕词,国际会议英文开幕词
- html矢量图 SVG VML 介绍
- 抽象语法树AST的全面解析(一)
- shell-定时备份数据库发送至邮箱
- 【因果学习】因果推断分析
- vuejs 数组定义字段_一个漂亮的文本字段,用于格式化VueJS制作的电话号码
- 做事必须搞清10个顺序之我想7.发展:先站住,再站高!
- 【bootstrap教程】Bootstrap 工具提示(Tooltip)插件
- C ——进程内存(内存管理、内存分配(brk,sbrk、mmap、munmap)、内存常见错误)