You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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,提问作者Мухаммаднакшубанди Омаров

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 08:51:03