1. 秦子帅的博客首页
  2. Android

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

最近写了一个金额的语音播报功能,已封装成依赖库到Github,希望对大家有所帮助。

Github地址 :

https://github.com/javaexception

思路:

(1).准备音频文件。

(2).把要播报的金额转换成大写的金额,比如”零壹贰叁肆伍陆柒捌玖,分角  拾佰仟万拾佰仟亿拾佰仟万“的组合。

(3).通过MediaPlayer播放音频。


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

一.准备音频文件


下面是我音频文件,里面是大写的数字,为播报金额组合做准备。


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


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

二.金额转换

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

三.MediaPlayer播放音频

1.MediaPlayer简介

MediaPlayer其实是一个封装的很好的音频、视频流媒体操作类,如果查看其源码,会发现其内部是调用的native方法,既然是一个流媒体操作类,那么必然涉及到,播放、暂停、停止等操作,实际上MediaPlayer也为我们提供了相应的方法来直接操作流媒体。

  • void statr():开始或恢复播放。

  • void stop():停止播放。

  • void pause():暂停播放。 

通过上面三个方法,只要设定好流媒体数据源,即可在应用中播放流媒体资源,为了更好的操作流媒体,MediaPlayer还为我们提供了一些其他的方法,这里列出一些常用的,详细内容参阅官方文档。

  • int getDuration():获取流媒体的总播放时长,单位是毫秒。

  • int getCurrentPosition():获取当前流媒体的播放的位置,单位是毫秒。

  • void seekTo(int msec):设置当前MediaPlayer的播放位置,单位是毫秒。

  • void setLooping(boolean looping):设置是否循环播放。

  • boolean isLooping():判断是否循环播放。

  • boolean  isPlaying():判断是否正在播放。

  • void prepare():同步的方式装载流媒体文件。

  • void prepareAsync():异步的方式装载流媒体文件。

  • void release ():回收流媒体资源。 

  • void setAudioStreamType(int streamtype):设置播放流媒体类型。

  • void setWakeMode(Context context, int mode):设置CPU唤醒的状态。

  • setNextMediaPlayer(MediaPlayer next):设置当前流媒体播放完毕,下一个播放的MediaPlayer。

在使用start()播放流媒体之前,需要装载流媒体资源。


2.MediaPlayer实现播报源码

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

四.使用

Gradle依赖 –

1.最app外层的build.gradle 添加代码:

2.在app 的build.gradle中添加:

使用方法 –

1.普通调用:
我想强调的是传入的金额最多精确到”分”,还有在调用的时候应该进行try-catch因为如果传入的不是金额,会出现异常的。 如果是true播报语音为”收款成功+收款金额”,如果是false只播报收款金额。

2.防止用户同时接收多条语音造成语音重叠的调用方法:

播报语速的调控问题,现在因为只能支持Android6.0以上的,所以代码我没添加,等解决后一起更新。

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

推荐阅读

 


SurfaceView+MediaPlayer封装之路


Android学习资源分享合集(1)


萤石云视频EZOpenSDK集成(实现播放,视频放大功能)



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

原文始发于微信公众号( 秦子帅 ):MediaPlayer实现金额的语音播报功能

发布者:秦子帅,转转请注明出处:http://qinzishuai.cn/index.php/2017/09/28/4f55531a1c/

联系我们

912241847

在线咨询:点击这里给我发消息

邮件:qzs531156@163.com

QR code