美文网首页
一行代码轻松实现金额播报功能

一行代码轻松实现金额播报功能

作者: 蜗牛学开车 | 来源:发表于2021-11-12 15:34 被阅读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都是对我最大的鼓励,感谢!

相关文章

网友评论

      本文标题:一行代码轻松实现金额播报功能

      本文链接:https://www.haomeiwen.com/subject/igkozltx.html