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都是對我最大的鼓勵,感謝!