需求:收款时语音播报

思路:从通知栏获取通知=>通过通知栏消息传来的状态实行语音播报=>对传来的金额字符串进行替换存为数组=>播放数组音频,实现功能

进行开发时需要准备对应的音频文件:0~10,小数点,元,百,千,万文件等

话不多说,直接开发:

第一步获取通知栏的消息:

//利用h5+方法监听通知传来的消息,这里建议大家使用透传消息的方法,并且后台传值需要使用自己的格式,不能使用官方传值的格式
plus.push.addEventListener('receive', function(msg) {console.log("----用户收到通知信息---",msg)
},false);

第二步定义方法来对音频文件拼接:

//定义一个方法来拼接音频文件
function splicingAudioFiles(res){//res为对应的金额,接下来对金额进行替换音频文件的操作//这里定义的开关控制对应的零是否发声操作let afterDecimalPoint=false,beforeDecimalPoint=false,tenThousandDigits=false,Thousand=false,Tenthousand=false//arr保存对应的音频文件let arr=[],that = this//res进行保留两位小数的操作res=parseFloat(val).toFixed(2)//arrSplit将res切割保存为一个一个数组let arrSplit=res.split('')//定义一个循环从尾部开始进行替换,尾部开始时自动添加一个元的音频,然后开始一个一个数字进行替换for(let i=arrSplit.length-1;i>=0;i--){if(i==arrSplit.length-1){arr.unshift('/static/yuyin/end.mp3')if(arrSplit[i]==0){}else{arr.unshift('/static/yuyin/'+arrSplit[i]+'.mp3')afterDecimalPoint=true  }}else if(i==arrSplit.length-2){if(arrSplit[i]==0){if(afterDecimalPoint){arr.unshift('/static/yuyin/'+arrSplit[i]+'.mp3')}}else{arr.unshift('/static/yuyin/'+arrSplit[i]+'.mp3')afterDecimalPoint=true }}else if(i==arrSplit.length-3){if(afterDecimalPoint){arr.unshift('/static/yuyin/spot.mp3')}}else if(i==arrSplit.length-4){if(i==0){arr.unshift('/static/yuyin/'+arrSplit[i]+'.mp3')}else{if(arrSplit[i]==0){}else{arr.unshift('/static/yuyin/'+arrSplit[i]+'.mp3')beforeDecimalPoint=true} }}}//创建播放器对象that.musicObj = uni.createInnerAudioContext();//src为播放器的播放路径that.musicObj.src='/static/yuyin/start.mp3'//play()为播放的方法that.musicObj.play()//onEnded()为播放结束的时候继续操作that.musicObj.onEnded(function(res){//这里调用playVoice()方法 arr为保存音频文件的数组 that.musicObj为播放器对象playVoice(arr,that.musicObj)})}
//定义方法播放每个音频文件
function playVoice(arr,music){//playFile 保存arr头一个音频文件let playFile = arr.shift()//playFile 为空时结束语音播放if(!playFile) {music = nullme.extractData()return}music.src= playFilemusic.play()music.onStop(function(res){if(arr.length==0){music = null}else{playVoice(arr,music)}})
}

第三步就是在接收到通知时调用方法,进行语音播报:

//监听消息,进行语音播报的操作
plus.push.addEventListener('receive', function(msg) {console.log("----用户收到通知信息---",msg)splicingAudioFiles('12.1')
},false);

到这里就可以正常的语音播报了,当然,深入一点还需要考虑正在播放音频文件时,又有一条通知时应该怎么做了

这里提供一个思路,队列,单线程

开源不易,请看完的朋友动动小手,点个赞哟,觉得对您有帮助,可以点个收藏

uniapp-实现语音播报功能,实时收款播报相关推荐

  1. H5网页语音实时播报功能的实现

    JS实现的H5实时播报功能,先获取后端语音开关状态,如果是打开的,5秒抓一次后端数据,如果有新的,就调用阿里云的语音接口,把文字传过去它返回mp3文件的BASE64,再返回前端播放. <audi ...

  2. APP收款语音播报功能讲解

    一.背景 比起主动扫码能确定收款多少与是否到账,扫二维码支付场景不能直接确认,需要核对客户付款截屏,目前微信.支付宝在扫二维码支付后,均支持收款方自动播报收款到账信息,为了秦丝APP有更好体验,也需要 ...

  3. uni-app 语音播报-前台后台离线推送语音播报、到账xx元、收款播报、自定义推送铃(ios)

    uni-app 语音播报-前台后台离线推送语音播报.到账xx元.收款播报.自定义推送铃(ios):https://ext.dcloud.net.cn/plugin?id=8452

  4. MediaPlayer实现金额的语音播报功能

    推荐阅读: SurfaceView+MediaPlayer封装之路 Android学习资源分享合集(1) 最近写了一个金额的语音播报功能,已封装成依赖库到Github,希望对大家有所帮助. Githu ...

  5. 一定要了解的小常识:聚合支付有语音播报功能

    在大部分商机都是使用聚合支付收款,他们在营业收款时都十分需要语音播报,这样可以让他们的收款效率大大提高,那么聚合支付有语音播报功能吗?该怎么去开通呢? 聚合支付二维码:从一柜多码到一柜一码 以往,商家 ...

  6. MediaPlayer实现金额的语音播报功能 1

    推荐阅读: SurfaceView+MediaPlayer封装之路 Android学习资源分享合集(1) 最近写了一个金额的语音播报功能,已封装成依赖库到Github,希望对大家有所帮助. Githu ...

  7. 【App开发】有语音播报功能的摇号软件:演示视频、开发历程

    文章目录 1 故事背景 2 开发历程 2.1 技术选用 2.2 语音播报功能 2.3 生成随机数 2.4 前端页面编写 3 演示效果 1 故事背景 昨晚网上有人找我制作一个自动随机数摇号并语音播报出来 ...

  8. 实现百度地图导航Demo的语音播报功能

    上文中实现了在本地导入百度地图导航Demo,那么在此基础上如何实现导航的语音播报呢? 一.为该应用申请语音播报(也叫注册) http://developer.baidu.com/map/index.p ...

  9. iOS 后台语音播报功能开发过程中的那些坑

      上个版本的开发计划中产品同学建议在我们的商家版App中做后台语音播报功能,在评审的时候我就在想,完全可以通过Push静默推送来实现后台播放音频来实现(后续事实证明,这是个大坑).   关于静默推送 ...

最新文章

  1. numpy 点乘_Numpy入门指南
  2. 牛客网刷题(纯java题型 181~210题)
  3. python零基础实例-Python初学零基础也不怕,从0开始!
  4. 粒子群算法matlab多元,进化算法之粒子群算法和Matlab实现(多维)
  5. Python快速简单生成矩形词云
  6. matlab读取pdb文件,使用BioPython读取.pdb文件的整个目录
  7. Linux漏洞CVE整理
  8. Linux KVM 虚拟化技术
  9. 小心使用STL中map的[]操作符
  10. Kafka精华问答 | kafka节点之间如何备份?
  11. 如履薄冰 —— Redis懒惰删除的巨大牺牲
  12. 计算机应用人机对话,什么是“人机对话”
  13. mongoDb 给表添加+ 删除字段
  14. applicationstatewinec7 电源管理
  15. bmd硬盘测试_disk speed test mac版下载-Blackmagic Disk Speed Test for Mac(硬盘读写速度测试工具) v3.2免费版 - Mac天空...
  16. 计算机管理中其它设备问号,Win10设备管理器中设备上有白色问号如何解决
  17. matlab中arccotx,微积分计算公式的推导过程
  18. Breakpoint和Watchpoint的区别
  19. android带方框倒计时,带倒计时提示的弹框
  20. 嵌入式开发——结构体指针作为参数传递变量的值不正确

热门文章

  1. 大淘客CMS添加自定义友链
  2. iframe优缺点、X-Frame-Options(如何防止点击劫持、设置页面是否能作为iframe嵌套)、iframe长轮询和应用场景
  3. python猜数字1001untitled_pytest封神之路第零步 快速入门
  4. 天机-破解达芬奇密码
  5. 信息收集道道之外网信息收集
  6. 如何在 Mac 上愉快地使用 Docker
  7. 部落冲突-家乡防御建筑介绍(城墙、加农炮、箭塔、迫击炮、防空火箭、法师塔、空气炮、特斯拉电磁塔、炸弹塔、X连弩、地狱之塔、天鹰火炮、投石炮)
  8. 服务器改电脑性能,旧电脑改家庭云服务器性能+创新!一体电脑如何变身家庭云中心...
  9. 基于SDFormat创建ROS+Gazebo仿真世界和模型
  10. 计算机与信息安全专业英语,信息安全综述外文翻译中英文对照.pdf