Android控制音频播放速度及获取raw资源

最近遇到一个控制音频播放速度的问题,常用的方法是使用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);

猜你喜欢

转载自blog.csdn.net/Ser_Bad/article/details/53784128