<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      react native 音頻播放 react-native-sound

      先放一個(gè)效果圖:該圖實(shí)現(xiàn)的效果,點(diǎn)擊播放按鈕,進(jìn)度條隨著時(shí)間移動(dòng),點(diǎn)擊暫停按鈕,進(jìn)度條停止移動(dòng)

       

      第一步,用到什么庫(kù)

      1.zmxv/react-native-sound 播放聲音的庫(kù)   
      2.callstack/react-native-slider 進(jìn)度條的庫(kù)

      第二步,準(zhǔn)備播放音頻

      我測(cè)試時(shí),是將mp3格式的聲音放在本地的,根據(jù)官網(wǎng)描述,本地音頻,放在 `android\app\src\main\res\raw`,注意要重新編譯打包項(xiàng)目哦

      import React from "react";
      import { View, Text, StyleSheet } from 'react-native';
      
      import Sound from
      "react-native-sound"; Sound.setCategory('Playback'); class SoundScreen extends React.Component {   constructor(props) { super(props); this.state = { whoosh: null, //音頻對(duì)象 } }   componentDidMount() {
      //構(gòu)建好音頻對(duì)象
      this.build(); }   build(){     let audioSrc = 'whoosh.mp3' //這個(gè)音頻放在android\app\src\main\res\raw     let whoosh = new Sound(audioSrc, Sound.MAIN_BUNDLE, (error) => { if (error) { alert('加載聲音失敗'); return; } this.setState({ whoosh: whoosh}); });   }
      playAudio=()=>{
          this.state.whoosh.play((success) => { if (success) {//播放完成后的邏輯在這里處理 } else { console.log('playback failed due to audio decoding errors'); }     }); }
      render(){
          return (
            <Text onPress={this.playAudio}>播放</Text>
          )
        } }


      第三步,添加Slider滑塊組件

      自己看文檔添加吧,這里有個(gè)小問(wèn)題,就是設(shè)置長(zhǎng)度300,但是它左右兩邊有8個(gè)距離的空襲,我也沒(méi)解決

      第四步,mp3音頻播放時(shí)間 和 Slider進(jìn)度同步的問(wèn)題
      思路:Slider的最小值為0 ,最大值為1 ,之后通過(guò)定時(shí)器,獲得當(dāng)前播放時(shí)間 除以 總時(shí)長(zhǎng),這個(gè)值就是Slider的值
      注意,將debug關(guān)掉,不然定時(shí)任務(wù)不準(zhǔn)確

         //定時(shí)任務(wù):監(jiān)聽(tīng)當(dāng)前播放時(shí)間
          listenAudio() {
              let that = this;
              let timer = setInterval(function () {
                  that.state.whoosh.getCurrentTime(function (seconds) {
                      let duration = that.state.duration;
                      let temp = seconds / duration;//當(dāng)前時(shí)間/總時(shí)間 = 播放進(jìn)度比
                      that.setState({ sliderValue: temp, })
                  });
              }, 1000);
              //將定時(shí)器私有化
              this.setState({ Timer: timer });
          }

       

      主要的內(nèi)容都說(shuō)完,注意清除定時(shí)器對(duì)象

       

       

       

       

       

      posted @ 2021-12-04 22:55  tengyuxin  閱讀(2493)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲国产av剧一区二区三区 | 国产AV国片精品有毛| 国产丝袜肉丝视频在线| 亚洲欧美在线观看品| 国产精品 无码专区| 陵水| 亚洲乱色熟女一区二区蜜臀| 亚洲av日韩av综合在线观看| 中文字幕有码在线第十页| 各种少妇wbb撒尿| 亚洲综合在线日韩av| 中文字幕乱码中文乱码毛片| 亚洲国产成人一区二区在线 | 人人妻碰人人免费| 少妇爽到呻吟的视频| 超碰人人超碰人人| 九九综合九色综合网站| 国产老熟女无套内射不卡| 国产精品一区在线蜜臀| 久久精品国产99国产精品严洲| 国产区精品视频自产自拍| 麻豆国产va免费精品高清在线| 久久久久无码精品国产h动漫| 国产私拍大尺度在线视频| 年日韩激情国产自偷亚洲| 91中文字幕在线一区| 免费a级黄毛片| 国产美女久久久亚洲综合| 99欧美日本一区二区留学生| 亚洲一精品一区二区三区| 乱码中文字幕| 亚洲AV无码一二区三区在线播放| 欧美自拍嘿咻内射在线观看 | 久久亚洲精品情侣| 大尺度国产一区二区视频| 国产免费高清69式视频在线观看 | 在线精品国产中文字幕| 亚洲香蕉网久久综合影视| 五月天中文字幕mv在线| 亚洲国产成人无码影院| 日韩在线视频一区二区三区|