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

第一步,用到什么库
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的更多相关文章
- React Native 系列(二) -- React入门知识
前言 本系列是基于React Native版本号0.44.3写的,最初学习React Native的时候,完全没有接触过React和JS,本文的目的是为了给那些JS和React小白提供一个快速入门,让 ...
- React-Native(三):React Native是基于React设计的
React Native是基于React js设计的. 参考:<React 入门实例教程> React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript ...
- 用 React 编写移动应用 React Native
转载:用 React 编写移动应用 React Native ReactNative 可以基于目前大热的开源JavaScript库React.js来开发iOS和Android原生App.而且React ...
- 【React Native开发】React Native移植原生Android项目(4)
),React Native技术交流4群(458982758),请不要反复加群!欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文章 ...
- [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 ...
- SoundPool 音频播放 详解 示例
简介 如果应用程序经常播放密集.急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了.因为MediaPlayer存在如下缺点: 1) 延时时间较长,且资源占用率高. 2) ...
- SoundPool 音频播放 API 详解【示例】
demo地址:https://github.com/baiqiantao/PermissionTest.git 一个大坑:SoundPool最多只能播放时长10s左右.大小70kb左右(这些值是我多次 ...
- ffmpeg学习笔记-音频播放
前文讲到音频解码,将音频解码,并且输入到PCM文件,这里将音频通过AudioTrack直接输出 音频播放说明 在Android中自带的MediaPlayer也可以对音频播放,但其支持格式太少 使用ff ...
- 1. React介绍 React开发环境搭建 React第一个程序
什么是 React React 是 Facebook 发布的 JavaScript 库,以其高性能和独特的设计理念受到了广泛关注. React的开发背景 Faceboo ...
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
--iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...
随机推荐
- 一篇文章带你掌握Flex布局的所有用法
Flex 布局目前已经非常流行了,现在几乎已经兼容所有浏览器了.在文章开始之前我们需要思考一个问题:我们为什么要使用 Flex 布局? 其实答案很简单,那就是 Flex 布局好用.一个新事物的出现往往 ...
- python学习第二周总结
上周内容概要 基本数据类型之布尔值 基本数据类型至元组 基本数据类型之集合 与用户交互 格式化输出 基本运算符 常用运算符 逻辑运算符 成员运算符 身份运算符 垃圾回收与机制 流程控制理论 流程控制之 ...
- 鸣人的影分身(等级考试4级 2021-03 T3)
题目: 此题题干又臭又长,直接看简化版. 鸣人的影分身(等级考试4级 2021-03 T3)等效于 把m个苹果分到n个盘子中,问有几种可能? dp[i][j]表示有i个盘子j个苹果时有多少种放法. 用 ...
- Redis-03 数据格式和基础命令
1 单进程 Redis采用单进程模型来处理客户端的请求.对读写等时间的响应是通过对epoll函数的包装来做到的.Redis的实际处理速度完全依靠主进程的执行效率. Epoll是Linux内核为 ...
- 联邦GNN综述与经典算法介绍
作者:京东科技 李杰 联邦学习和GNN都是当前AI领域的研究热点.联邦学习的多个参与方可以在不泄露原始数据的情况下,安全合规地联合训练业务模型,目前已在诸多领域取得了较好的结果.GNN在应对非欧数据结 ...
- SpringCloud Sleuth链路追踪
1.概要 一般的,一个分布式服务跟踪系统,主要有三部分: 数据收集 数据存储 数据展示 然而这三个部分其实不都是由SpringCloud Sleuth(下面我简称为Sleuth)完成的,Sleuth负 ...
- TypeScript 学习笔记 — 类的基本用法(五)
目录 TS 中定义类 类中实例属性.方法 + 修饰符 public protected private readonly 实例方法 类中原型属性.方法 + 访问器 原型属性 + 访问器 原型方法 类中 ...
- 修改ctags让fzf.vim插件显示C,C++方法声明的标签
背景 在 vim 中使用 fzf.vim 插件可以进行方便的搜索文件, 源码TAG, GIT 记录等, 最近抽空看了下 BTags 命令在 c, c++ 文件中, 无法显示头文件中的函数声明 标签问题 ...
- JZOJ 2020.07.28【NOIP提高组】模拟
2020.07.28[NOIP提高组]模拟 考试时状态不好,暴力不想打 结束前勉勉强强骗点分 已经不想说什么了······ \(T1\) 复制&粘贴2 逆推答案,枚举 \(k\),分类讨论 \ ...
- Gear_Of_War#1
Gear_Of_War#1 目录 Gear_Of_War#1 1 信息收集 1.1 端口扫描 1.2 后台目录扫描 1.3 SMB服务安全分析 2 GetShell 2.1 ssh登录marcus用户 ...