MediaPlayer 实现金额的语音播报功能

本文介绍了如何利用Android的MediaPlayer组件来实现语音播报功能,特别是针对金额的播报。通过加载音频资源或者网络音频流,创建MediaPlayer实例,设置播放监听,实现金额数字转化为语音并播放的过程。
摘要由CSDN通过智能技术生成

作者 | qzh

地址 | https://github.com/javaexception

声明 | 本文是 qzh 原创,已获授权发布,未经原作者允许请勿转载



前言

最近写了一个金额的语音播报功能,已封装成依赖库到 Github,希望对大家有所帮助。


Github地址 :

https://github.com/javaexception


思路

(1).准备音频文件。

(2).把要播报的金额转换成大写的金额,比如"零壹贰叁肆伍陆柒捌玖,分角  拾佰仟万拾佰仟亿拾佰仟万"的组合。

(3).通过 MediaPlayer 播放音频。


一.准备音频文件

下面是我音频文件,里面是大写的数字,为播报金额组合做准备。

二.金额转换

public class PlaySound {
        

   /**
    * 截取字符串
    *
    * @param str  需要截取的字符串
    * @param idx1 开始位置
    * @param idx2 截止位置
    * @return 截取后的字符串
    */

   public static String subString(String str, int idx1, int idx2) {
       try {
           return str.substring(idx1, idx2);
       } catch (Exception ex) {
           return "";
       }
   }

   /**
    * 传递一个字符串参数,如果是null返回“”字符串,否则去除前后的空格。
    *
    * @param str 传入参数
    * @return 没有前后没有空格的字符串
    */

   public static final String trim(String str) {
       if (str == null) return "";
       else return str.trim();
   }

   /**
    * 把double类型数据转换成有格式的字符串
    *
    * @param d      需要转换的double类型数据
    * @param format 格式化方式
    * @return 有格式的字符串
    */

   public static String formatDoubleToString(double d, String format) {
       String doubleStr = String.valueOf(d);
       java.text.DecimalFormat decf = new java.text.DecimalFormat(format);
       String formatStr = decf.format(d);
       /**
        * 通过java保留小数了
        * 如果转换前的长度>转换后的长度,Java的转换就有可能出错
        */

       if (doubleStr.length() > formatStr.length()) {
           /**
            * 如果前面的都一致,但最后一位大于4就需要进位
            * 否则不进位
            */

           if (formatStr.equals(doubleStr.substring(0, formatStr.length()))) {
               /**
                * 取转换前的后一位,
                * 有可能是“.”
                */

               String followStr = doubleStr.substring(formatStr.length(), formatStr.length() + 1);
               if (".".equals(followStr)) {
                   followStr = doubleStr.substring(formatStr.length() + 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值