我试图在后台听音乐(流媒体),但是当我打开另一个应用程序时,流媒体停止了。
const soundObject = new Audio.Sound();
async function playAudio() {
try {
await soundObject.loadAsync({
uri: "http://suaradio2.dyndns.ws:11004/stream"
});
await soundObject.playAsync();
soundObject.setAudioModeAsync({
staysActiveInBackground: true
});
// Your sound is playing!
} catch (error) {
// An error occurred!
}
}
答案 0 :(得分:1)
工作小吃:https://snack.expo.io/@djalik/staysactiveinbackground
您必须设置setAudioModeAsync的所有参数:
await Audio.setAudioModeAsync({
staysActiveInBackground: true,
interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DO_NOT_MIX,
shouldDuckAndroid: true,
playThroughEarpieceAndroid: true,
allowsRecordingIOS: true,
interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_DO_NOT_MIX,
playsInSilentModeIOS: true,
});
答案 1 :(得分:0)
它可以在Android上运行,但不能在带有expo的iOS上运行。需要在app.json
中添加以下代码"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.yourcompany.yourappname",
"buildNumber": "1.0.0",
"infoPlist": {
"UIBackgroundModes": [
"audio"
]
}
},
在那之后,您必须创建iOS的独立应用程序,它才能在独立应用程序上运行。