我目前正在使用 expo 版本实现一个 React Native 流应用程序,但遇到了一些困难。请随意回答任何问题或仅回答一个问题以及您选择的任何其他问题。
1) 在声音播放时实现进度条。为此,我需要 为了获得歌曲的持续时间,然后我使用 Math.Floor 来做 进度条的计算,但我目前无法获得 当前播放曲目的持续时间。关于如何执行此操作的任何想法 使用声音对象或视频组件会很棒。
2)我需要能够从我的应用程序和 经过一些研究,Expo版本似乎是不可能的。任何黑客行为 围绕这个???
3)如何判断当前播放曲目是否使用Audio 组件完成了??
4) 我想要一种可以停止设备中任何其他声音的情况 当我的设备播放声音时。知道如何做到这一点吗??
5)关于使用 React Native 的流媒体应用程序给我的任何建议
我可以帮助您解决前三个问题。
1, 要获取音频使用的总时长
playbackStatus.durationMillis
和
要获取音频的当前持续时间,请使用 playbackStatus.positionMillis
通过使用获取播放状态
export const createAudio = async () => {
const source = require('../../../assets/audio/storiesAudio/storyAudio.mp3');
const { sound } = await Audio.Sound.createAsync(source,
{
shouldPlay: false,
isLooping: false,
},
onPlaybackStatusUpdate,
);
this.setState({playbackInstance: sound});
}
onPlaybackStatusUpdate = async (playbackStatus) => {
await this.setState({ playbackStatus });
if (this.state.playbackStatus.isPlaying) {
}
}
将毫秒转换为分钟和秒
export const millisToMinutesAndSeconds = (millis) => {
let minutes = Math.floor(millis / 60000);
let seconds = ((millis % 60000) / 1000).toFixed(0);
return (seconds == 60 ? (minutes+1) + ":00" : minutes + ":" + (seconds < 10 ? "0" : "") + seconds);
}
2、让音频在后台播放
const { sound } = await Audio.Sound.createAsync(
sourceAudioFile,
{
shouldPlay: true, //To play the audio when the component is loadded
isLooping: false,
},
onPlaybackStatusUpdate,
);
3、查看当前音轨是否播放完毕,使用
playbackStatus.didJustFinish