先放一个效果图:该图实现的效果,点击播放按钮,进度条随着时间移动,点击暂停按钮,进度条停止移动

第一步,用到什么库

1.zmxv/react-native-sound 播放声音的库   2.callstack/react-native-slider 进度条的库 

第二步,准备播放音频

我测试时,是将mp3格式的声音放在本地的,根据官网描述,本地音频,放在 `android\app\src\main\res\raw`,注意要重新编译打包项目哦

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, //音频对象 }
}
  componentDidMount() {
//构建好音频对象
this.build();
}
  build(){
    let audioSrc = 'whoosh.mp3' //这个音频放在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滑块组件

自己看文档添加吧,这里有个小问题,就是设置长度300,但是它左右两边有8个距离的空袭,我也没解决

第四步,mp3音频播放时间 和 Slider进度同步的问题
思路:Slider的最小值为0 ,最大值为1 ,之后通过定时器,获得当前播放时间 除以 总时长,这个值就是Slider的值
注意,将debug关掉,不然定时任务不准确

   //定时任务:监听当前播放时间
listenAudio() {
let that = this;
let timer = setInterval(function () {
that.state.whoosh.getCurrentTime(function (seconds) {
let duration = that.state.duration;
let temp = seconds / duration;//当前时间/总时间 = 播放进度比
that.setState({ sliderValue: temp, })
});
}, 1000);
//将定时器私有化
this.setState({ Timer: timer });
}

主要的内容都说完,注意清除定时器对象

react native 音频播放 react-native-sound的更多相关文章

  1. React Native 系列(二) -- React入门知识

    前言 本系列是基于React Native版本号0.44.3写的,最初学习React Native的时候,完全没有接触过React和JS,本文的目的是为了给那些JS和React小白提供一个快速入门,让 ...

  2. React-Native(三):React Native是基于React设计的

    React Native是基于React js设计的. 参考:<React 入门实例教程> React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript ...

  3. 用 React 编写移动应用 React Native

    转载:用 React 编写移动应用 React Native ReactNative 可以基于目前大热的开源JavaScript库React.js来开发iOS和Android原生App.而且React ...

  4. 【React Native开发】React Native移植原生Android项目(4)

    ),React Native技术交流4群(458982758),请不要反复加群!欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文章 ...

  5. [React Native] Installing and Linking Modules with Native Code in React Native

    Learn to install JavaScript modules that include native code. Some React Native modules include nati ...

  6. SoundPool 音频播放 详解 示例

    简介 如果应用程序经常播放密集.急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了.因为MediaPlayer存在如下缺点: 1) 延时时间较长,且资源占用率高. 2) ...

  7. SoundPool 音频播放 API 详解【示例】

    demo地址:https://github.com/baiqiantao/PermissionTest.git 一个大坑:SoundPool最多只能播放时长10s左右.大小70kb左右(这些值是我多次 ...

  8. ffmpeg学习笔记-音频播放

    前文讲到音频解码,将音频解码,并且输入到PCM文件,这里将音频通过AudioTrack直接输出 音频播放说明 在Android中自带的MediaPlayer也可以对音频播放,但其支持格式太少 使用ff ...

  9. 1. React介绍 React开发环境搭建 React第一个程序

    什么是 React         React 是 Facebook 发布的 JavaScript 库,以其高性能和独特的设计理念受到了广泛关注. React的开发背景         Faceboo ...

  10. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

随机推荐

  1. ChatGpt国内教程

    近ChatGPT大火呀,小伙伴们是不是在网上看到各种和ChatGPT有趣聊天的截图,比如翻译代码.编写代码,奈何自己实力不够,被网络拒之门外,只能眼馋别人的东西.看别人玩,肯定不如自己玩一把舒服的啊. ...

  2. dev C++ 调试卡住/遇到endl函数卡住

    今天调试一个程序,发现编译运行的时候可以正常运行,但是调试的时候总是在endl那里卡住 分享一个链接杀千刀的dev c++的不能单步调试的问题_老宁宁的博客-CSDN博客 #include<io ...

  3. @RestControllerAdvice全局异常统一处理

    spring项目中,我们通常规定了返回的格式(成功-失败-异常),特别是异常怎么处理方便呢? 1.自定义状态码实体 package com.ruoyi.common.constant; /** * 返 ...

  4. STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptr

    STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptr auto_ptr 是STL中的智能指针家族的成员之一, 它管理由 new expression 获得的对象, ...

  5. vue浏览器全屏 非全屏切换 按esc退出全屏

    methods: { // 全屏 点击按钮        allping(){        this.status = true;        this.enterFullscreen();    ...

  6. 基于GLFW的PyOpenGL的使用

    1. GLFW概述 OpenGL只是一种规范,不仅语言无关,而且平台无关.规范只字未提获得和管理OpenGL上下文相关的内容,而是将这些作为细节交给底层的窗口系统.出于同样的原因,OpenGL纯粹专注 ...

  7. redis(12)持久化操作-RDB

    前言 Redis 提供了 2 个不同形式的持久化方式: RDB(Redis DataBase) AOF(Append Of File) RDB 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是 ...

  8. chai 3D 之网格对象

    推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍 网格对象是由三角形和顶点组成的形状   在 CHAI3D 中,多边形网格是定义多面体对象形状的顶点和三角形的集合.   顶点是一个位置以及其 ...

  9. php连接Access数据库

    最近想把一个asp的网站改成php的,无奈空间不支持mysql数据库,只好用access数据库了,但以前都是用的php+mysql,php+access数据库编程还真没有做过.感谢党,感谢cctv,感 ...

  10. Electron 打包 (electron-builder)

    本文只测试了Windows 10 下打包Windows基础安装包 更多花哨的配置,请戳官方文档 https://www.electron.build/​ www.electron.build/ 构建基 ...