一行代碼輕鬆實現金額播報功能 MoneyBroadcast

MoneyBroadcast

基於Kotlin和SoundPool實現Android端一行代碼完成金額播報功能。



說明

本庫支持的最大位數爲“億”,小數最大支持4位,也就是說播報的金額不能超過999999999.9999。超過了999999999.9999將只會播報開頭部分,如果你沒有自定義開頭部分的語音則只會播放'收款成功',如果你自定了開頭部分的語音則只會播放你自定義的開頭語音。

下載

第一步:添加 JitPack 倉庫到你項目根目錄的 gradle 文件中。
allprojects {
    repositories {
        //... 省略N行代碼
        maven { url 'https://jitpack.io' }
    }
}
第二步:添加這個依賴。
dependencies {
    implementation 'com.github.kelinZhou:MoneyBroadcast:${Last Version Here!}'
}

使用

最簡單的用法:

MoneyBroadcaster.with(applicationContext).play(57392.23)

使用自定義聲音:

MoneyBroadcaster.with(applicationContext) {
    return@with when (it) {
        VoiceWhatSuccess -> {
            AssetVoice("sound/tts_success", 1500) //收款成功使用asset目錄下的自定義聲音資源
        }
        VoiceWhatUnit -> {
            RawVoice(R.raw.yuan, 1500) //金額單位使用raw目錄下的自定義聲音資源
        }
        else -> null  //返回null表示使用MoneyBroadcast提供的默認聲音。
    }
}.play(57392.23)

AssetVoice爲asset目下的聲音資源,構造方法參數如下:

  • res : String asset目錄下資源的文件名稱,如果資源放在子文件夾下,還要包含文件夾名稱,例如:sound/tts_success
  • duration : Long 聲音資源的播放時長,該參數必須要是當前聲音資源的真實播放時長,否則可能出現聲音重疊或間隔過長的問題。

RawVoice爲raw目錄下的聲音資源,構造方法參數如下:

  • res : Int @RawRes raw目錄下的資源ID,例如:R.raw.yuan
  • duration : Long 聲音資源的播放時長,該參數必須要是當前聲音資源的真實播放時長,否則可能出現聲音重疊或間隔過長的問題。

除了上面兩種聲音資源外還有一個類NullVoice是用來處理不需要播放聲音的情況的,例如不需要播放收款成功的提示,則可以判斷what==VoiceWhatSuccess時返回NullVoice(),當MoneyBroadcast檢測到NullVoice後會不播放任何聲音。

不播報收款成功:

MoneyBroadcaster.with(applicationContext).play(
    //利用VoiceWhatNull禁用'收款成功'的提示音。
    AmountPlayInfo(etAmount.text.toString().toDouble(), VoiceWhatNull)
)

最後放上Demo地址 如果你覺得有用,點贊、Star都是對我最大的鼓勵,感謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章