Expo Go/Android模拟器中使用expo-audio播放声音仅能触发一次的问题求助
Expo Go/Android模拟器中使用expo-audio播放声音仅能触发一次的问题求助
大家好,我刚接触React Native,现在用Expo SDK 50+里的expo-audio库在APP里播放音效。在Web预览里播放完全正常,但在Expo Go或者安卓模拟器上,声音只能播放一次——后续按按钮都触发不了声音了。有没有人遇到过这个问题,或者找到过能在移动设备上可靠重播声音的解决办法?
以下是我的代码:
import { useAudioPlayer } from 'expo-audio'; import React, { useState } from 'react'; import { Alert, Button, Image, Modal, StyleSheet, Text, TextInput, TouchableOpacity, View } from 'react-native'; import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context'; const home = () => { const [userNameModalVisibility, setUserNameModalVisibility] = useState(false); const [settingModal, setSettingModal] = useState(false); const [music, setMusic] = useState(true); const [audio, setAudio] = useState(true); const [userName, setUserName] = useState('NONE'); const musicSource = require('../assets/sounds/homebackground.wav'); const musicPlayer = useAudioPlayer(musicSource); const settingAudio = require('../assets/sounds/settingbutton.wav'); const settingAudioPlayer = useAudioPlayer(settingAudio); const ouchAudio = require("../assets/sounds/ouch.wav"); const ouchAudioPlayer = useAudioPlayer(ouchAudio); const dooropenAudio = require("../assets/sounds/dooropening.wav"); const dooropenPlayer = useAudioPlayer(dooropenAudio); const musicSetting = () => { setMusic(!music); music ? musicPlayer.pause() : musicPlayer.play(); } const audioPlayer = (currentAudio: string) => { if (currentAudio !== '' && audio) { switch(currentAudio) { case 'ouch': ouchAudioPlayer.play(); break; case 'dooropen': dooropenPlayer.play(); break; case 'settingButton': settingAudioPlayer.play(); break; } } } return ( <SafeAreaProvider> <SafeAreaView> {/* simplified view content */} <TouchableOpacity onPress={() => audioPlayer('ouch')}> <Text>Play Ouch Sound</Text> </TouchableOpacity> </SafeAreaView> </SafeAreaProvider> ); } export default home;
内容来源于stack exchange
相关产品推荐
相关产品推荐

