一行代码轻松实现金额播报功能
2021-11-12 本文已影响0人
蜗牛学开车
MoneyBroadcast
基于Kotlin和SoundPool实现Android端一行代码完成不只是金额播报功能。
说明
本库支持的最大位数为“亿”,小数最大支持4位,也就是说播报的金额不能超过999999999.9999。超过了999999999.9999将只会播报开头部分,如果你没有自定义开头部分的语音则只会播放'收款成功',如果你自定了开头部分的语音则只会播放你自定义的开头语音。
通过自定义前缀和单位可实现任何有关于数字的播报。例如:今日客流量为3000人次、同比上涨百分之180、昨夜降雨量为18.88毫米等等。
下载
第一步:添加 JitPack 仓库到你项目根目录的 gradle 文件中。
allprojects {
repositories {
//... 省略N行代码
maven { url 'https://jitpack.io' }
}
}
第二步:添加这个依赖。
dependencies {
implementation 'com.github.kelinZhou:MoneyBroadcast:${Last Version Here!}'
}
使用
最简单的用法:
MoneyBroadcaster.create(applicationContext).play(57392.23)
使用自定义声音:
MoneyBroadcaster.create(applicationContext) {
return@with when (it) {
VoiceWhatPrefix -> {
AssetVoice("sound/tts_success.mp3") //收款成功使用asset目录下的自定义声音资源
}
VoiceWhatUnit -> {
RawVoice(R.raw.yuan) //金额单位使用raw目录下的自定义声音资源
}
else -> null //返回null表示使用MoneyBroadcast提供的默认声音。
}
}.play(57392.23)
AssetVoice
为asset目下的声音资源,构造方法参数如下:
- res : String asset目录下资源的文件名称,如果资源放在子文件夹下,还要包含文件夹名称,例如:
sound/tts_success.mp3
。
RawVoice
为raw目录下的声音资源,构造方法参数如下:
- res : Int @RawRes raw目录下的资源ID,例如:
R.raw.yuan
。
除了上面两种声音资源外还有一个类NullVoice
是用来处理不需要播放声音的情况的,例如不需要播放收款成功的提示,则可以判断what==VoiceWhatSuccess
时返回NullVoice()
,当MoneyBroadcast检测到NullVoice
后会不播放任何声音。
不播报收款成功:
MoneyBroadcaster.create(applicationContext).play(
//利用VoiceWhatNull禁用'收款成功'的提示音。
AmountPlayInfo(etAmount.text.toString().toDouble(), VoiceWhatNull)
)
最后放上Demo地址 如果你觉得有用,点赞、Star都是对我最大的鼓励,感谢!