一、基本说明
- 样品工具库:kirikaTowa/AndroidUtils: Common tool library (github.com)
- 分支:develop_mediaplayer
1、官方文档:MediaPlayer 概览 | Android 开发者 | Android Developers (google.cn)
2、经典demo:Android MediaPlayer音频播放器详解 - 掘金 (juejin.cn)
3、视频与音频播放:MediaPlayer音频与视频的播放介绍 - 掘金 (juejin.cn)
- 关于播放音频
- 设置Raw地址源
- 通过文件夹目录:app私有目录也能正常播放
mPlayer.setDataSource(filesDir.absoluteFile.toString() + "/voiceAnnouncements" + "/music.wav")
- 关于播放视频
- MediaPlayer + SurfaceView播放视频的方式
- VideoView
二. 踩坑
1、可以播放的音频浏览器打开链接会是这样的:
1.参考链接:https://www.cambridgeenglish.org/images/506891-a2-key-for-schools-listening-sample-test.mp3
2、有些是这样的:【链接类似这个: http://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv 】
- 这种是直接下了个音频文件,这种链接给mediaplayer播不了的;
- 如果使用同步播放回调会比较快,如果是异步的话读文件可能过好几分钟才会有onError回调。
- 待定:是啥原因导致浏览器处理不同
补充资料
1、Android允许密文配置最暴力的做法,清单文件配置:
android:usesCleartextTraffic="true"
2、测试在线链接:
- 这个改成http也有效:
https://www.cambridgeenglish.org/images/506891-a2-key-for-schools-listening-sample-test.mp3 https://www.cambridgeenglish.org/images/153149-movers-sample-listening-test-vol2.mp3
3、 响应头介绍:用头👴解决!前端必知必会的几个实用响应头 - 掘金 (juejin.cn)
Content-Disposition:这个响应头可以决定内容是 预览 还是 下载;- Content-type配置成application/octet-stream的时候就算是预览模式也会是下载(因为预览模式无法识别正确的类型)
4、 下载框架:lingochamp/FileDownloader
5、 音频外链工具:
6、 MediaPlayer中onCompletion和onError的坑
- OnCompletionListener当播放完成时自动播放下一曲可能会跳过