关于之前写的声波通讯的jar库,一些心得

13年8月中旬,听闻支付宝发布一条信息“支持声波线下支付”,公司移动项目负责人认为这是一个技术方向,遂决定让我也实现这一技术,经过本人近一个月时间开发终于完成(愚钝),在此之后项目停滞,现将本人在此间的一些心得分享一下,大神等勿喷。

8月10~~8月11(大致),接到任务,对此一头雾水,本人是做桌面和linux、unix应用层开发,对与电子类并无过多了解,大学期间对嵌入式等偏爱,也有一点基础,遂接下此任务。开始也是很迷茫,遂梳理思路,需求是要求在两部手机之间通过一组近似于超声(实际在18khz~21khz之间)的载波传递交易信息,同时保证数据准确性和完整性以及时效性。大致整理处一套思路:一端通过话筒发送一段18khz的波形数据,另一端通过麦克接收这段18khz的波形数据。


8月11日~~8月13日:因要求使用java语言,故找到,android的发声和录音的api,AudioTrack(话筒资源),AudioRecord(mic资源),在此间就犯难了,接口是找到了但是怎么发出数据呢。

8月14~~8月20日:期间查阅《傅里叶快速交换》、《数模转换》(具体记不住了),了解到,要进行发送数据,所有的通讯都是一样,声波本身也是一种电子信号只不过是发出之后就变成震动了,在接收之后模数转换在转换成数字信号,至此怎么硬件上的发送基本了解,但是软件上,根据电子信息数据介绍:信号在空气中传递衰减很快,就如声音(频率高的话在空气中传递不远,在水中传递很远),所以借鉴《移动基站**》(忘记了)所述,微波,红外线等介质比较好。到此找到声波信号衰减快,根据《信号调制解调》所述,要让信号在短距离内保证准确性,要进行调频或调幅。调幅:准确率低,故选用调频。

之后就是要做波形,方波衰减太快,不选用,尖波声音刺耳,在此选用正弦波,做过波形之后就是调频影响波形,使其能表示指定频率,至此软件层发送声波数据基础接口已完成。

接下来是,怎么把“123456”,转换成一段段的波形发出,根据之前结论,只需做调频,按照二进制编码,做类似操作,将10进制“1”转换为二进制“00000001”(数据太长,如表示数据精度不大设为4位即可,接收方硬拼0000),然后对应(18khz表示1,19khz表示0),这样就可得到大致 11110001001000000 数据,然后对应方波数据大约256*20B,大致需要1~2分钟左右,因为一段波形表示少于256个点,用傅里叶快速交换式拿不到频率的,当然此间按位传递的方式在线下支付中是不合适的,故在实现过程中使用按字节传递,同时误码率页提高了,具体实现方式详见附件!(附件以jpg方式上传,下载完成后改为zip即可)


本人表达能力弱,在此对这中间对大家造成的困扰先致歉。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值