最近有个需求要优化金额到账音效,理了下实现思路: 1、根据数字转换金额 2、根据金额匹配音频文件 3、音频文件合成 4、按队列播放音频文件
解决方案: 想到支付宝实现的功能就不错,就反编译支付宝APK看看实现思路有没有更优的写法,除了第四条有点差别外基本都差不多。 第一二条:通过map预设好文字对应的音频文件,然后根据传入的金额匹配音频文件就好了。 第三条:音频合成之前没有处理过本以为会麻烦点,看过支付宝的写法只要使用合并流就可以了(前提是音频头一样)。 第四条:一开始的想法是用集合按顺序取出播放,后来因为合并音频流是比较耗时的操作需要交给线程池处理。 线程池可以通过newSingleThreadExecutor创建单线程池,线程池里任务的执行顺序是按照任务的提交顺序执行的, 所以只要控制线程池里线程的生命周期就可以按队列播放音频文件了。
写的Demo只是作为功能展示,如果需要在项目中使用还要替换掉支付宝的语音文件。