(简单实用)Android支付宝商家收款语音播报
在商家版有这样收款播报的功能,我觉得挺好的。
使用
- gradle引入
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
} dependencies {
implementation 'com.github.YzyCoding:PushVoiceBroadcast:1.0.2'
}
- 一行代码引用
VoicePlay.with(MainActivity.this).play(amount);
需求
- 固定播报文字,除了金额动态
- 收到多条推送,顺序播报
- 来电时,暂停播报,挂断后继续播报
- 正在播放音乐,暂停音乐,播放完成继续播放音乐
- 如果音量过小,调节音量
思路
- 金额转大写
- 文字转音频
- 顺序播放
实践
- 关于金额的工具类
public class MoneyUtils { private static final char[] NUM = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
private static final char[] CHINESE_UNIT = {'元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'}; /**
* 返回关于钱的中文式大写数字,支仅持到亿
*/
public static String readInt(int moneyNum) {
String res = "";
int i = 0;
if (moneyNum == 0) {
return "0";
} if (moneyNum == 10) {
return "拾";
} if (moneyNum > 10 && moneyNum < 20) {
return "拾" + moneyNum % 10;
} while (moneyNum > 0) {
res = CHINESE_UNIT[i++] + res;
res = NUM[moneyNum % 10] + res;
moneyNum /= 10;
} return res.replaceAll("0[拾佰仟]", "0")
.replaceAll("0+亿", "亿")
.replaceAll("0+万", "万")
.replaceAll("0+元", "元")
.replaceAll("0+", "0")
.replace("元", "");
}
}
容错处理
/**
* 提取字符串中的 数字 带小数点 ,没有就返回""
*
* @param money
* @return
*/
public static String getMoney(String money) {
Pattern pattern = Pattern.compile("(\\d+\\.\\d+)");
Matcher m = pattern.matcher(money);
if (m.find()) {
money = m.group(1) == null ? "" : m.group(1);
} else {
pattern = Pattern.compile("(\\d+)");
m = pattern.matcher(money);
if (m.find()) {
money = m.group(1) == null ? "" : m.group(1);
} else {
money = "";
}
} return money;
}
by: 杨
(简单实用)Android支付宝商家收款语音播报的更多相关文章
- Android自带语音播报+讯飞语音播报封装(直接用)
一.Android自带的语音播报 1.查看是否支持中文,在测试的设备中打开‘设置’ -->找到 '语言和输入法'-->查看语音选项,是否支持中文,默认仅支持英文. 使用如下: public ...
- Android 简单的语音播报
不解释快上车 Main.class package com.example.myapp; import android.app.AlertDialog;import android.os.Bundle ...
- Android语音播报、后台播报、语音识别
Android语音播报.后台播报.语音识别 本文介绍使用讯飞语音实现语音播报.语音识别功能. 讯飞开放平台:http://www.xfyun.cn/index.php/default/index 程序 ...
- LogCook 一个简单实用的Android日志管理工具
众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...
- Android利用RecognizerIntent识别语音并简单实现打电话动作
关于Android利用RecognizerIntent识别语音并简单实现打电话,详细看实现代码例如以下: package com.example.recognizerintentactivity; i ...
- Android短信收到,语音播报
发送短信功能界面 /** * 发送短信Demo * * @description: * @author ldm * @date 2016-4-22 上午9:07:53 */ public class ...
- 简单实用的Android ORM框架TigerDB
TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构. ...
- iOS10 语音播报填坑详解(解决串行播报中断问题)
iOS10 语音播报填坑详解(解决串行播报中断问题) 在来聊这类需求的解决方案之前,咱们还是先来聊一聊这类需求的真实使用场景:语音播报.语音播报需求运用最为广泛的应该是收银对账了,就类似于支付宝.微信 ...
- quick-cocos2d-x 实现在lua里面完成android支付宝的接入
quick-cocos2d-x 实现在lua里面完成android支付宝的接入 一.支付宝注册是很麻烦的一个过程,本文就不解释了,想了解的去官网看下注册流程.然后下载他们的sdk-WS_SECURE_ ...
随机推荐
- 2017.10.6 国庆清北 D6T2 同余方程组
题目描述 求关于x 的同余方程组 x%a1 = b1 x%a2 = b2 x%a3 = b3 x%a4 = b4 的大于等于0 的最小整数解. 输入输出格式 输入格式: 一行8 个整数,表示a1; b ...
- 机器学习实战(1)- KNN
KNN:k近邻算法-在训练样本中找到与待测样本距离相近的N个样本,并用这N个样本中所属概率最大的类别作为待测样本的类别. 算法步骤: 1.对训练中的样本数据的不同属性进行归一化处理. 2.计算待测样本 ...
- docker使用(一)
windows家庭版 安装docker 查看原文地址(侵删,这里只是保存一用 doceker和vmware发生冲突时 运行下面命令并重启电脑: bcdedit /set hypervisorlaunc ...
- 转载:Spark GraphX详解
1.GraphX介绍 1.1 GraphX应用背景 Spark GraphX是一个分布式图处理框架,它是基于Spark平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求. ...
- shell 一次性杀掉相同名称的进程
这条命令将会杀掉所有含有关键字"LOCAL=NO"的进程 ps -ef|grep LOCAL=NO|grep -v grep|cut -c -|xargs kill - 另一种方法 ...
- FCS省选模拟赛 Day5
传送门 Solution Code #include<bits/stdc++.h> #define ll long long #define max(a,b) ((a)>(b)?( ...
- Java8 LocalDateTime的补充工具方法
import java.time.*;import java.time.format.DateTimeFormatter;import java.time.format.DateTimeFormatt ...
- 使用Android的日志工具Log
Android中的日志工具类是Log,这个类中提供了5个方法来供我们打印日志 1.Log.v()用于打印那些最为琐碎的,意义最小的日志信息.对应级别verbose,是Android日志里面级别最低的一 ...
- svn服务备份与还原
1.dump备份方式: svnadmin dump /data/svn/xxxx > /data/beifen/`date +/%Y%m%d`.bak xxxx:项目名称(项目库) 将xxxx这 ...
- [转]MyEclipse基础学习:Java EE Learning Center
我就不翻译了,直接给出Java EE学习中心的原文链接: Java EE Learning Center 另外,给出MyEclipse IDE 环境中Apache Tomcat server服务器正常 ...