使用react-native-track-player切换轨道仅播放第一首问题咨询
你代码存在两个核心问题导致无法切换轨道:
- 按钮点击回调中的
track[0]、track[1]是无任何执行效果的无效语句,没有调用播放器提供的切换轨道接口。 - react-native-track-player调用
play()方法时,默认播放当前队列的激活轨道,你初始化时将两个轨道加入队列后,默认激活的是第一首轨道,没有切换逻辑的情况下不管怎么调用play都只会播放第一首。
修复方案
你可以使用react-native-track-player提供的skip()方法切换到指定id的轨道,再执行播放操作即可,修改两个按钮的onPress回调逻辑:
第一个轨道按钮修改为:
<TouchableOpacity style={styles.button} onPress={async () => { await TrackPlayer.skip(1); // 传入对应轨道的id值 await TrackPlayer.play(); }}> <Text style={styles.textArabBold}>track1</Text> </TouchableOpacity>
第二个轨道按钮修改为:
<TouchableOpacity style={styles.button} onPress={async () => { await TrackPlayer.skip(2); // 传入对应轨道的id值 await TrackPlayer.play(); }}> <Text style={styles.textArabBold}>track2</Text> </TouchableOpacity>
注意事项
- 你已经在初始化阶段将所有轨道加入了播放器队列,不需要在点击事件中重复添加轨道,直接通过轨道id跳转即可。
- 代码中
var isPaused; isPaused === STATE_PAUSED;和var isPlaying; isPlaying === STATE_PLAYING;是无效语句,===是全等判断运算符不是赋值运算符,如果你需要定义状态标识请替换为=,没有使用需求的话可以直接删除这几行冗余代码。
内容的提问来源于stack exchange,提问作者Мухаммаднакшубанди Омаров
相关产品推荐
相关产品推荐

