项目上有这样一个需求,小学课文点击区域播放相应的句子,但是每个区域给定的音乐地址都是重复的,规定好开始时间和结束时间,播放一整段音乐的一部分
我的思路
把数据绑定给点读区域,用户点到这个区域的时候获取对应的音乐地址,开始时间和结束时间,具体代码如下
<view
bindtap="handleReader"
data-mp3Url="{{ itemContent.mp3_url }}"
data-audio_start="{{ itemContent.audio_start }}"
data-audio_end="{{ itemContent.audio_end }}"
data-track_id="{{itemContent.track_id}}"
data-track_translate="{{itemContent.genre}}">
</view>
this.backgroundAudioManager = wx.getBackgroundAudioManager();
this.backgroundAudioManager.title = '点读机1.0';
this.backgroundAudioManager.src = encodeURI(mp3Url);
this.backgroundAudioManager.startTime = audio_start;
大致的思路就是这样的,逻辑相对简单,iOS手机是没有问题的,都能播放,但是唯独到了android手机上就不行了。官方文档说的也很简洁明了
string src
音频的数据源(2.2.3 开始支持云文件ID)。默认为空字符串,当设置了新的 src 时,会自动开始播放,目前支持的格式有 m4a, aac, mp3, wav。
但是实际上相同的地址,android手机有可能没办法主动触发play事件,我最后的处理方案
是给地址加上时间戳,让地址唯一
let mp3Url = e.target.dataset.mp3url+'?id='+(new Date()).getTime();
网友评论