最近遇到一个控制音频播放速度的问题,常用的方法是使用SoundPool。
但是这个方法有一个问题就是在我的努比亚手机上只能播放3秒,我没有在源码里面找到设置的地方,但是打印的日志信息里面有这么一条:D/MMParserExtractor: Using default parser out buffer size = 3000,而且只能播放本地文件或者保存在raw中文件,无法直接播放网络文件,只能弃掉。
翻遍Google之后找到了另一个办法:
http://stackoverflow.com/questions/10849961/speed-control-of-mediaplayer-in-android
方法是:
MediaPlayer mp = ...; //Whatever
float speed = 0.75f;
mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed));
不过这种方法只能在API等于23及以上使用。目前找到的就这两种办法。
一是按照SoundPool 的要求改造音频文件;
二是放弃API小于23以下的手机,或者打一顿产品经理。
顺便记下获取raw 资源ID的方法:
int resId=context.getResources().getIdentifier(raw, "raw", context.getPackageName());
Uri uri=Uri.parse("android.resource://" + context.getPackageName() + "/raw/" + resId);
本文介绍了两种在Android中实现音频播放速度控制的方法:使用SoundPool和MediaPlayer。SoundPool方法受限于设备并存在播放时间限制,而MediaPlayer方法适用于API 23及以上的版本。

1863

被折叠的 条评论
为什么被折叠?



