支付宝中当面付的通过音频传输数据的研究-实现部分(2)

书接上回

既然有目标了 我们就开始写测试代码吧~~

1)使用超声波17500, 17700, 17900, 18100, 18300, 18500, 18700 分别表示0-6(为什么是0-6呢 嘿嘿 本人比较懒,SinVoice使用了6段频率,我也懒得修改代码了,就使用了同样的六段频率)其中0表示开始 6表示结束。真正的数据段就只有个1-5

2)修改SinVoice的正弦波生成类生成类

short out = (short) ((Math.sin(dl) *Math.sin(d))*mBits) ;

这一段就是我们使用的调制算法

下面是我的修改结果 没有什么变化吧

  public void gen(int genRate, int duration) {
        if (STATE_START == mState) {
            mGenRate = genRate;
            mDuration = duration;

            if (null != mListener) {
                mListener.onStartGen();
            }

            int n =  mBits/2;
            //int totalCount = (mDuration * mSampleRate) / 1000;
            double perl = ( 2 * Math.PI * (double)50 / (double) mSampleRate) ;
            double per = ( 2 * Math.PI * (double)mGenRate / (double) mSampleRate) ;
            double dl = 0;
            double d =0;
            LogHelper.d(TAG, "genRate:" + genRate);
            if (null != mCallback) {
                mFilledSize = 0;
                BufferData buffer = mCallback.getGenBuffer();
                if (null != buffer) {
                    for (int i = 0; i < 440; ++i) {//每个数据用440个采样表示,也就是大约10ms
                        if (STATE_START == mState) {
                        	short out = (short) ((Math.sin(dl) *Math.sin(d))*mBits) ;
                            if (mFilledSize >= mBufferSize - 1) {
                                // free buffer
                                buffer.setFilledSize(mFilledSize);
                                mCallback.freeGenBuffer(buffer);

                                mFilledSize = 0;
                                buffer = mCallback.getGenBuffer();
                                if (null == buffer) {
                                    LogHelper.d(TAG, "get null buffer");
                                    break;
                                }
                            }

                            buffer.mData[mFilledSize++] = (byte) (out & 0xff);
                            if (BITS_16 == mBits) {
                                buffer.mData[mFilledSize++] = (byte) ((out >> 8) & 0xff);
                            }

                            dl += perl;
                            d +=per;
                        } else {
                            LogHelper.d(TAG, "sin gen force stop");
                            break;
                        }
                    }
                } else {
                    LogHelper.d(TAG, "get null buffer");
                }

                if (null != buffer) {
                    buffer.setFilledSize(mFilledSize);
                    mCallback.freeGenBuffer(buffer);
                }
                mFilledSize = 0;

                if (null != mListener) {
                    mListener.onStopGen();
                }
            }
        }
    }

这张图就是最后的录音结果。

后面准写识别程序。

我在识别程序中使用了https://code.google.com/p/tspl/中的快速傅里叶处理库。C++的 很容易移植到iOS 中。。。

处理流程

1)循环使用44个采样 进行傅里叶编码,来判断是否有超声波存在。

2)检查到超声波存在后 就开始使用440个采样来判断数据。

3)超声波消失后,就转到1)。继续检查超声波。

运行结果

支付宝中当面付的通过音频传输数据的研究-实现部分(2)

时间: 2024-11-09 04:41:57

支付宝中当面付的通过音频传输数据的研究-实现部分(2)的相关文章

支付宝支付开发—当面付条码支付和扫码支付

关键字:支付宝 当面付 条码支付 扫码支付 二维码支付 订单查询 退款作者:方倍工作室 本文介绍支付宝中当面付下属的条码支付.扫码支付.订单查询.退款申请的集成开发过程. 本文分为以下五个部分: 条码支付和扫码支付介绍 申请应用 密钥生成及配置 API及SDK集成 条码支付.扫码支付.订单查询.退款申请 一.条码支付及二维码支付介绍 1. 条码支付 条码支付是支付宝给到线下传统行业的一种收款方式.商家使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码/二维码,完成收款.用户仅需出示付款码,所有收

支付宝支付开发——当面付条码支付和扫码支付

关键字:支付宝 当面付 条码支付 扫码支付 二维码支付 订单查询 退款作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/alipay-f2fpay.html 本文介绍支付宝中当面付下属的条码支付.扫码支付.订单查询.退款申请的集成开发过程. 本文分为以下五个部分: 条码支付和扫码支付介绍 申请应用 密钥生成及配置 API及SDK集成 条码支付.扫码支付.订单查询.退款申请 注: 支付宝支付开发有一定的门槛,如果您愿意为知识付费来节省您宝贵的时间,请直接见底

支付宝支付开发——当面付

关键字:支付宝 当面付 条码支付 扫码支付 二维码支付 订单查询 退款作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/alipay-f2fpay.html 本文介绍支付宝中当面付下属的条码支付.扫码支付.订单查询.退款申请的集成开发过程. 本文分为以下五个部分: 条码支付和扫码支付介绍 申请应用 密钥生成及配置 API及SDK集成 条码支付.扫码支付.订单查询.退款申请 一.条码支付及二维码支付介绍 1. 条码支付 条码支付是支付宝给到线下传统行业的一种

利用PBFunc在Powerbuilder中支付宝当面付功能

在PB实现支付宝当面付的功能,需要先在支付宝进行商户签约,并设置相关的公钥信息(具体参考支付宝文档). 然后使用对应的私钥文件对参数进RSAWithSha1前面计算.具体代码如下: string ls_pubFileName,ls_priFileName n_pbfunc_cryp lnv_cryp ls_priFileName ="D:\pbfunclib_pri.pem"//私钥文件 string ls_str string ls_appId,ls_secret,ls_biz_co

支付宝当面付(条码支付)功能开发

1.什么是当面付 当面付产品介绍 商户可通过以下任一方式在线下完成交易收款: 商家通过扫描线下买家支付宝钱包中的条码.二维码等方式将买家的交易资金直接打入卖家支付宝账户,资金实时到账: 线下买家通过使用支付宝钱包扫描商家的二维码等方式完成支付,提升商家收银效率,资金实时到账: 线下买家使用支付宝钱包中的当面付功能,通过声波支付的方式向商家完成付款,资金实时到账. 简单地说,即我们日常中使用的 条码支付.扫码支付.声波支付. 本篇的开发流程,将以条码支付为功能开发展开说明,条码支付即用户展示付款条

支付宝沙箱环境操作(当面付)

1.第一步:要注册企业账号或者个人支付宝账号,使用企业账号或者个人账号进行登录的蚂蚁金服开放平台. 2.第二步:首次进入系统界面有三个选项,用户可以根据个人自由选择第一项,第二项或者第三项的入住. 3.第三步: 支付宝沙箱环境——沙箱应用栏目中可以看到系统自动分配的信息如图所示: 当面付支付操作流程 1.点击  沙箱当面付接入引导 ,下载 支付宝密钥生成器 按照说明将生成的密钥填入沙箱环境信息配置. 2.下载 当面付DEMO 3.DEMO 解压后导入项目到开发工具(IDEA),导入后发现报错,这

支付宝当面付扫码支付接口开发

最近公司要做一个有关支付的相关项目,需要对接支付宝的支付接口,实现扫描二维码支付功能,为此研究了一下支付宝相关业务.主要依据就是支付宝的相关接口文档: https://docs.open.alipay.com/catalog,重点关注如下红色方框部分 先看一下支付宝扫描二维码支付的业务流程,直接摘出来如下: 扫码支付(接入指引) 扫码支付,指用户打开支付宝钱包中的"扫一扫"功能,扫描商家展示在某收银场景下的二维码并进行支付的模式.该模式适用于线下实体店支付.面对面支付等场景. 业务流程

支付宝代签约当面付支付

?:官方文档 ?:调用接口 alipay.trade.create(统一收单交易创建接口) 首先创建应用  步骤:蚂蚁金服开放平台-->开发中心-->第三方应用 开发配置 添加功能(当面付,获取会员信息,第三方应用授权) 首先:让签约商户对第三方应用授权 API接口:https://docs.open.alipay.com/20160728150111277227/intro 授权成功之后拿到商户ID 和 授权token 也可以调用接口换取:https://docs.open.alipay.c

支付宝当面付Demo测试

1.直接登录支付宝开放平台 https://docs.open.alipay.com/ 2.下载当面付的测试demo https://docs.open.alipay.com/194/105201/ 3.我这里用的是idea,打开这个demo 4.修改这个文件 5.更改内容 6.沙箱环境地址 https://docs.open.alipay.com/200/105311 7.RSA生成工具地址 https://docs.open.alipay.com/291/105971 8.注意事项 原文地址