【问题标题】: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}
      

      【讨论】:

      • 关闭此分享您的解决方案!
      猜你喜欢
      • 2019-05-13
      • 2019-04-07
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      相关资源
      最近更新 更多