最近开发一个代取快递的功能模块,需求是当快递取到之后要给用户一个反应,也就是以语音提示的方法给用户提示

因为提示的文字是固定的,所以其实思路就是利用文字辨认,之后转换为语音进行播报这么一个思路

可是问题就在于客户端怎么进行判断快递到达

这边的话是采用,服务人员确认取件---服务器改变状况----给与客户端提示,客户端进行语音播报,

可是!!!!首先要保持客户端的运转,可所以后台,也可所以锁屏状况,可是必定要是运转的,然后在整个客户端加赞的时分设置守时器,守时判断一个开关的状况

当服务器给与客户端反应的时分就可以进行语音播报,并重置整个开关的状况

文字转换为语音的代码如下,这个是一个在uni-app插件商场的小哥制作的,也可以去插件商场进行搜索,这边仅做记载

const audioTeam = [];
let audioStartSwitch = false;
const getAudioUrl = 'https://tsn.baidu.com/text2audio';
/*** 浏览器调用语音合成接口* 获取token接口: https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=uFYiXWMCiYvx68V4EVyCGeL8j4GAzXD5&client_secret=897Mm2qCj7bC1eHYVDxaWrO38FscTOHD*/function getBDVoicToken() {return new Promise((rs, rj) => {console.log('准备访问接口获取语音token')uni.request({ // 强烈建议此接口由后端访问并且维护token有效期,否则前端每次访问都会刷新token//此url为专门插件测试预览用的key和secret key, 请替换为自己申请的keyurl: 'https://openapi.baidu.com/oauth/2.0/token',method: 'POST', //建议使用post访问// data: 'grant_type=client_credentials&client_id=nm6Os9qqOacgxXjKv8PIp45H&client_secret=BXHhGIpNU7Wi3GDYUt0AGY5cWbWklrov',data: 'grant_type=client_credentials&client_id=jtwoB9xzRnv3qltcfqL0pk1t&client_secret=A16UKHBKVeAh68kuGGSPqnemCVyPDmgb',header: {"content-type": "application/x-www-form-urlencoded"},success: (res) => {console.log('访问成功');rs(res);},fail: (err) => {console.log('访问失败');rj(err);}})})
}export default function openVoice(objs) { // 传入需转为语音的文本内容let lineUp = false;let returnAudio = false;if (typeof(objs) !== 'string') {if (objs && objs.lineUp === true) {lineUp = true;}if (objs && objs.returnAudio === true) {returnAudio = true;}}if(returnAudio) {return new Promise((resolve, reject)=>{openVoiceFc(objs, returnAudio).then(res=>{resolve(res);}).catch(err=>{reject(err)});})}if (!audioStartSwitch || lineUp) {audioStartSwitch = true;openVoiceFc(objs);} else {audioTeam.push(objs);}
}function openVoiceFc(objs, returnAudio) {console.log('准备获取语音tok');if(returnAudio) {return new Promise((resolve, reject)=>{getBDVoicToken().then(res => {console.log('获取语音tok接口成功');if (res.data && res.data.access_token) {console.log('token: ' + res.data.access_token);resolve(tts(objs, res.data.access_token, returnAudio));} else {console.log('获取语音tok接口为空');reject('获取语音tok接口为空');}}).catch(err => {console.log('获取语音tok接口失败');reject(err||'获取语音tok接口失败');})})}else{getBDVoicToken().then(res => {console.log('获取语音tok接口成功');if (res.data && res.data.access_token) {console.log('token: ' + res.data.access_token);tts(objs, res.data.access_token);} else {console.log('获取语音tok接口为空');}}).catch(err => {console.log('获取语音tok接口失败');})}
}function tts(objs, tok, returnAudio) {if(typeof(objs)=='string')objs = {voiceSet: {tex: objs}};const data = {tok,cuid: tok,ctp: 1,lan: 'zh',...objs.voiceSet}if(returnAudio)return btts( data, objs.audioSet, objs.audioCallback, objs.lineUp, returnAudio);btts( data, objs.audioSet, objs.audioCallback, objs.lineUp, returnAudio);
}function setAudioSet(options, audio) {if (options) {audio.volume = options.volume || 1;audio.startTime = options.startTime || 0;audio.loop = options.loop || false;audio.obeyMuteSwitch = options.obeyMuteSwitch && typeof(options.obeyMuteSwitch) == 'boolean' ? options.obeyMuteSwitch :true; //支持微信小程序、百度小程序、头条小程序}
}function btts(param, options, audioCallback, lineUp, returnAudio) {let audio = uni.createInnerAudioContext();setAudioSet(options, audio);// 序列化参数列表let fd = [];for (let k in param) {fd.push(k + '=' + encodeURIComponent(encodeURIComponent(param[k])));}audio.src = `${getAudioUrl}?${fd.join('&')}`;if(returnAudio) {audio.onEnded(() => {console.log('音频播放结束');console.log('销毁音频实例');audio.destroy(); //销毁音频实例audio = null;})audio.onError((e)=>{if (audioCallback && audioCallback.onError && typeof(audioCallback.onError) == 'function') audioCallback.onError(e);console.log('音频播放错误: ' + JSON.stringify(e));console.log('销毁音频实例');audio.destroy(); //销毁音频实例audio = null;})return audio;}audio.onPlay(() => {console.log('音频播放开始');if (audioCallback && audioCallback.onPlay && typeof(audioCallback.onPlay) == 'function') audioCallback.onPlay();})audio.onPause(()=>{if (audioCallback && audioCallback.onPause && typeof(audioCallback.onPause) == 'function') audioCallback.onPause();})audio.onWaiting(()=>{if (audioCallback && audioCallback.onWaiting && typeof(audioCallback.onWaiting) == 'function') audioCallback.onWaiting();})audio.onStop(()=>{if (audioCallback && audioCallback.onStop && typeof(audioCallback.onStop) == 'function') audioCallback.onStop();})audio.onTimeUpdate(()=>{if (audioCallback && audioCallback.onTimeUpdate && typeof(audioCallback.onTimeUpdate) == 'function') audioCallback.onTimeUpdate();})audio.onSeeking(()=>{if (audioCallback && audioCallback.onSeeking && typeof(audioCallback.onSeeking) == 'function') audioCallback.onSeeking();})audio.onSeeked(()=>{if (audioCallback && audioCallback.onSeeked && typeof(audioCallback.onSeeked) == 'function') audioCallback.onSeeked();})audio.onEnded(() => {console.log('音频播放结束');console.log('销毁音频实例');audio.destroy(); //销毁音频实例audio = null;if (audioCallback && audioCallback.onEnded && typeof(audioCallback.onEnded) == 'function') audioCallback.onEnded();if (lineUp !== false) {if (audioTeam.length > 0) {console.log('队列中');openVoiceFc(audioTeam[0]);audioTeam.splice(0, 1);} else {console.log('队列为零');audioStartSwitch = false;}}})audio.onError((e)=>{if (audioCallback && audioCallback.onError && typeof(audioCallback.onError) == 'function') audioCallback.onError(e);console.log('音频播放错误: ' + JSON.stringify(e));console.log('销毁音频实例');audio.destroy(); //销毁音频实例audio = null;})audio.play();
}

uni-app开发语音提示推送功能相关推荐

  1. 小程序云开发之消息推送功能

    小程序云开发之消息推送功能(图文) 一:新建项目 APPID获取方法:1.在微信公众平台上注册账号,选择小程序(也可以从服务号注册,前提你有一个服务号)注册后登录,登录时微信扫码验证一下 2.填写小程 ...

  2. 你的 APP 能否精准「推送」击中用户?!

    亲,爆款产品折上折,全场 5.9 元包邮! 福利来袭,充值送好礼~ 道具特惠,入手不亏. 毫无疑问,11 月还没到,"双 11"先到了.不仅是剁手 APP,各大应用都绞尽脑汁趁着这 ...

  3. 如何用Nearby Service开发针对附近人群的精准广告推送功能

      当你想找一家餐厅吃饭,却不知道去哪家,这时候手机跳出一条通知,为你自动推送附近优质餐厅的信息,你会点击查看吗?当你还在店内纠结于是否买下一双球鞋时,手机应用给了你发放了老顾客5折优惠券,这样的广告 ...

  4. web广告推送功能开发总结

    这段时间研究了下web广告推送功能,简单的需求如下: 1,android手机连上wifi后,提示认证登录,iphone 手机连上wifi后自动弹出指定页面 2,android手机点击认证登录,ipho ...

  5. 微信小程序消息推送功能开发(java实现)

    先好好把官方文档看一看,链接https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/message-push ...

  6. app推送以及提示音java,APP集成小米消息推送自定义铃声设置

    目前市面上APP有很多第三方推送,如个推.极光.腾讯信鸽.百度云推送.友盟推送.云巴推送等,还有厂商系统级的推送,比如小米推送.华为推送,这个就很像iOS系统的APNs消息推送,可以做到不管你的APP ...

  7. 云开发实现小程序订阅消息推送功能

    步骤一:获取模板 ID 在微信公众平台手动配置获取模板 ID: 登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用. 步骤二:请 ...

  8. AI人脸检测/口罩检测/安全帽检测智能分析网关告警推送功能开发

    智能分析网关是可支持AI视频智能分析功能,包括人体检测.人脸检测.区域入侵检测.安全帽检测.口罩检测等,可广泛应用于客流统计.安防监控.周界防范.企业安全生产.公共防疫等场景.目前我们仍在进一步拓展更 ...

  9. Android开发之第三方推送JPush极光推送知识点详解 学会集成第三方SDK推送

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 下面是一些知识点介绍,后期将会带领大家进行代码实战: 一.Android实现推送方式解决方案: 1.推 ...

  10. java发送qq消息_Java点餐系统和点餐小程序新加微信消息推送功能

    其实想给点餐系统加推送很久了,之前也有单门写过Java版的微信消息推送和云开发版的微信消息推送.之所以一直没有加,也是考虑到大家的学习接受度,因为做订阅消息推送是一个综合性的开发工作. 需要你既要会小 ...

最新文章

  1. Python入门学习方法有哪些?
  2. VR教育进入新加坡课堂
  3. 机器学习模型评估标准选择循环图
  4. 语言 ota_新增飞屏功能 ARCFOX αT首次OTA升级
  5. Android ViewPager示例教程
  6. SparkSQL实践
  7. PM_敏捷开发 Scrum vs Kanban,如何选择?
  8. win10系统,字体及软件内容特别小(亲试有效)
  9. 微型计算机控制系统的硬件组成
  10. js实现椭圆轨迹_javascript椭圆旋转相册实现代码
  11. Vue + element + Springboot 通过邮箱找回密码
  12. 说明文中国第一台亮子计算机揭秘,2018届九年级语文中考复习(河南)课件:第2部分 第二讲 说明文阅读 2017名题强化训练.ppt...
  13. 数据湖技术之Hudi 集成 Spark
  14. 什么是统一身份认证?
  15. PIO模式和DMA模式的区别
  16. 音频播放、录音、视频播放、拍照、视频录制
  17. 一些不错的开源代码网站
  18. 2019年第一届长安杯解析,深入科普,理清思路,流量部分不太会,其他部分基本有详细解。
  19. CogColorExtractorTool工具功能
  20. 计算机专业硕士毕业论文,计算机技术专业硕士毕业论文(9)(喜欢就下吧)...

热门文章

  1. 遥感影像中常用的目标检测数据集
  2. iOS界面调试工具Reveal
  3. Linux中scp报 not a regular file错误解决方案
  4. 服务器部署方案文档,IBM目录服务器部署方案
  5. ios中自定义相机_在iOS中制作自定义相机
  6. 软件解耦(decouple)
  7. Python数据分析基础之CSV文件(5)
  8. zblogphp 广告联盟_zblog模板添加广告位置的方法
  9. 会计的思考(37):“弱水三千,只取一瓢饮”--业务人员的财务意识
  10. [附源码]java毕业设计景区门票系统