admin管理员组

文章数量:1530910

声波配网,即通过手机发出声波,将ssid、password等信息传给设备的一种配网方式。适用于没有触屏或触屏较小不易于信息输入,但是拥有麦克风的智能设备,如智能音箱、智能家庭助手等。其优点是配网速度快、可人耳感知,缺点是受环境干扰较大。

实现声波配网,首先需要一套特定的算法库(我司有专门的算法部门在做,由于保密的原因,算法库不能公开),算法库分手机端和设备端两部分。手机端算法库将ssid信息由字符串转化为声音信号(PCM),然后将声音信号通过音频模块播放出来。同时,设备端录下这一段声音,然后用同一套算法库将声音信息解析出来,还原成原来的ssid信息(字符串),最后用解析到的ssid信息用于连接wifi。

声波配网主要流程如下:

 

(1)首先,在手机(或平板等其它一代设备)输入ssid信息(或获取当前或系统保存的ssid信息),使用我司提供的算法库,将信息由buffer编码为pcm数据;

(2)将使用算法库编码出来的pcm数据通过喇叭播放出来,同时,设备端打开录音,捕获pcm数据;

(3)设备端将pcm数据通过算法库解码回原来的buffer数据;

(4)从数据中解析出ssid、password等信息,并将其用于连接路由器。

 

编解码可选择范围分为低频、中频、高频三种,其中低频的频率范围为2K~5K,中频的范围为8K~12K,高频的范围为16K~20K。频率越高,声音越尖锐,抗噪性能越强。

 

 

手机端实现

此处已Android端实现为例。

 

在Android系统上实现声波配网时,需要通过jni调用我司提供的算法库。

 

接收端的代码由于用的是我司自己做的系统,代码不能公开,而写出来也没有意义,总的一个实现思路就是,接收声波,并将声波用算法库转换会原来的ssid等信息。

 

 

package com.aw.soundauthenticationtest;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import com.aw.SoundAuthentication;

import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.wifi.WifiInfo;
import android.wifi.WifiManager;
import andro

本文标签: 声波序列屏幕密码设备