【问题标题】:How to play sound (mp3) in React Native?如何在 React Native 中播放声音(mp3)?
【发布时间】:2020-10-18 18:12:58
【问题描述】:
我想为我的项目制作音频播放器。我不知道如何使用 TouchableOpacity 播放音频。我想播放音频,但是当我按下播放图标(按钮)时,必须将其更改为暂停图标(按钮)。我需要一些循环解决方案。我该如何使用它?
<TouchableOpacity style={styles.playButtonContainer}>
<Ionicons name="ios-play" size={75} color="#000" />
<Ionicons name="ios-pause" size={75} color="#000" />
</TouchableOpacity>
<TouchableOpacity>
<Entypo name="loop" size={40} color="#000"></Entypo>
</TouchableOpacity>
【问题讨论】:
标签:
javascript
reactjs
react-native
mobile
【解决方案1】:
这里是进口:
import React from "react";
import { Text, View, TouchableOpacity } from "react-native";
import { WebView } from "react-native-webview";
然后我使用了 WebView :
export default class App extends React.Component {
render() {
return (
<View>
<TouchableOpacity
style={{ marginTop: 50 }}
onPress={() => {
this.webview.injectJavaScript(
'document.getElementById("audio").play();'
);
}}
>
这是播放按钮:
<Text>Play</Text>
</TouchableOpacity>
<TouchableOpacity
style={{ marginTop: 50 }}
onPress={() => {
this.webview.injectJavaScript(
'document.getElementById("audio").pause();'
);
}}
>
这里是暂停按钮:enter code here
<Text>Pause</Text>
</TouchableOpacity>
<WebView
ref={(ref) => (this.webview = ref)}
originWhitelist={["*"]}
mediaPlaybackRequiresUserAction={false} // Allow autoplay
useWebKit={true}
source={{
html:
'<audio id="audio" loop> <source src="https://go.transportili.app/static/sounds/ring.mp3" type="audio/mp3" /> </audio>',
}}
/>
</View>
);
}
}
【解决方案2】:
我建议是这样的:
一开始你必须创建一个变量:
const [isPlaying, setIsPlaying] = useState(false)
在你的触摸中使用这个:
{ !isPlaying ?
<TouchableOpacity style={styles.playButtonContainer} onClick={setIsPlaying(true)}>
<Ionicons name="ios-play" size={75} color="#000" />
</TouchableOpacity>
: null;}
{ isPlaying ?
<TouchableOpacity style={styles.playButtonContainer} onClick={setIsPlaying(false)>
<Ionicons name="ios-pause" size={75} color="#000" />
</TouchableOpacity>
: null}