水声通信(传声)于iOS、Android在情景-depth分析(包括一些声通信源)
最近的水声通信非常热,特别是,非常嵌入式设备备受瞩目使用,前段时间公布了声通信部分源代码(iOS和Android版本号。下载源的最新版本:点击打开链接 http://download.csdn.net/detail/frog_lightdesk/8395167),也受到了广大声波爱好者的关注。
声波技术从理论上决定了它比較适合做短距离、少量信息的传输(声波通信原理请见:http://blog.csdn.net/jcgu/article/details/12834483)一般常以“握手”角色出如今应用中。前段时间和非常多声波爱好者交流,发现非常多人对声波通信技术的应用存在一定误解,以下就以一些知名的应用为例,对声波通信应用的主要场景进行分析。
1.Chirp
chirp是声波通信应用的始祖,最先把声波通信技术在智能手机中进行商用。它主要功能是能够在手机间随意传递文本,图像和视频等。
实现原理:比方A手机把图像传递给附近的B手机。A手机首先将图片传输到server。然后把server相应的地址后缀(10个以内字符)通过声波发送出去,(注意这时候A是不停的循环发送声波)。
B一直处于监听状态。在B收到A发送的声波后。解码,假设解码成功,则从server上下载图片,图片传输成功。假设解码失败(可能因为周围有比較强的干扰)。则继续监听A发送的声波。继续解码。
。。
关键点:
1)通过声波发送的信息是10个以内的地址后缀。这点非常重要,由于声波发送的越多,受到干扰的概率就越大,传输失败的可能性就越高。并且传输的时间也越长。
2)A在不停的循环发送声波。由于声波easy受到干扰,A无法确保B是否正确收到信息,所以最简单的方式就是不停的发送,直到B收到信息后,再手工停止A的发送。
3)真正的信息通过网络传输的,声波作为握手的工具。
2.支付宝声波支付
支付宝作为支付相关的应用的代表,相信声波支付功能非常多人都用过,但对其原理不一定都了解。
实现原理:声波支付听起来好像都是咻咻的声音,事实上咻咻声并非信息的载体,真正的信息是通过超声波传输的。比方A手机发起咻咻声(此时A也是不停的在循环发送信息)。售货机B则在不停的监听。A手机在发送信息前。会先和后台server交互,把各种关键的交互信息上传到server。然后将要发送的信息加密(支付者的id信息),把加密后的信息转换成超声波。然后再叠加咻咻声,最后发送出去。
B在正确收到A的信息后,解码成功后,就连接server,确认本次交易,确认成功后,支付生效。
关键点:
1)发送的是支付者的id信息,一般10个字符以内。
2)发送信息的手机在不停的发送支付者的id。
3.茄子快传
茄子快传用于在手机间高速传递大量信息(不须要互联网),比方文件。视频等。茄子快传和chirp都能够传输大文件。但原理上有比較大的差别。
实现原理:A手机发送文件给B手机。B是接收者,B首先建立wifi热点,然后建立sockt通道,最后把wifiusername和password通过声波发送出去(username和password在10字符左右)。
A处于监听状态,在收到声波,解码出wifiusername和password后,连接wifi热点。连接成功后,通过socket把文件发送给B。茄子快传和chirp的根本不同在于chirp高度依赖于互联网。而茄子快传则不须要互联网,仅须要wifi。
关键点:
1)发送的信息为10个字符左右的username和password。
2)接收者不停的在发送wifiusername和password。
3)真正的信息传输是通过wifi传输的。声波作为握手的工具。
4.嵌入式应用
如今非常多嵌入式设备在使用声波通信技术,比方智能路由器、相机、车载电子(比方行车记录仪)等等。
实现原理:一般使用声波通信作为握手信号自己主动为wifi和蓝牙建立连接(用声波通信传输usernamepassword);或者发送简单的信息数据,比方温度信息;或者发送控制命令。比方控制智能家栖息地等。。A派。B接受,通常情况下,发送者必须停止发送,直到接收者收到为止。
版权声明:本文博主原创文章。博客,未经同意不得转载。
水声通信(传声)于iOS、Android在情景-depth分析(包括一些声通信源)的更多相关文章
- LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android
LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android jincon 发表于 2015-02-26 18:31:01 发表在: php开发 localresiz ...
- 用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)
本文为原创,如有转载,请注明出处:http://www.cnblogs.com/jackybu 前言 章节: 1.需求描述以及c/c++实现日期和月历的基本操作 2.ios实现自绘日期选择控件 3.a ...
- 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】
背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...
- 关于前端本地压缩图片,兼容IOS/Android/PC且自动按需加载文件之lrz.bundle.js
一.介绍说明主要特点: ①在前端压缩好要上传的图片可以更快的发送给后端,因此也特别适合在移动设备上使用. ②兼容IOS/Android,修复了IOS/Android某些版本已知的BUG. ③按需加载文 ...
- 仿微信的IM聊天时间显示格式(含iOS/Android/Web实现)[图文+源码]
本文为原创分享,转载请注明出处. 1.引言 即时通讯IM应用中的聊天消息时间显示是个再常见不过的需求,现在都讲究用户体验,所以时间显示再也不能像传统软件一样简单粗地暴显示成“年/月/日 时:分:秒”这 ...
- WEB通知和React Native之即时通讯(iOS Android)
WEB通知和React Native之即时通讯(iOS Android) 一,需求分析 1.1,允许服务器主动发送信息给客户端,客户端能监听到并且能接收. 1.2,为了方便同一个系统内的用户可以指定某 ...
- [置顶] ArcGIS Runtime SDKs 10.2 for iOS & Android& OS X发布
我们高兴的宣布:ArcGISRuntime SDKs 10.2 for iOS & Android & OS X正式发布!在10.2版本中,你可以在iOS.Android和Mac设备上 ...
- Xamarin体验:使用C#开发iOS/Android应用
Xamarin是Mono创始人Miguel de Icaza创建的公司,旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发. 简介 Xamarin是基于Mo ...
- Ionic中使用Chart.js进行图表展示以及在iOS/Android中的性能差异
Angular Chart 简介 在之前的文章中介绍了使用 Ionic 开发跨平台(iOS & Android)应用中遇到的一些问题的解决方案. 在更新0.1.3版本的过程中遇到了需要使用图表 ...
随机推荐
- 从零开始学C++之从C到C++(二):引用、内联函数inline、四种类型转换运算符
一.引用 (1).引用是给一个变量起别名 定义引用的一般格式:类型 &引用名 = 变量名: 例如:int a=1; int &b=a;// b是a的别名,因此a和b是同一个单元 注 ...
- java 获取当期时间之前几小时的时间
Calendar expireDate = Calendar.getInstance(); expireDate.set(Calendar.HOUR_OF_DAY, expireDate.get(Ca ...
- struts2文件上传限制大小问题
struts2默认文件上传大小为2M,如需改动默认大小,解决方法例如以下: <struts> <constant name="struts.multipart.maxSiz ...
- hdu1428之dfs+spfa
漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- Struts2中指定的校验文件不起作用的原因
转载请注意出处:http://blog.csdn.net/bettarwang/article/details/39801733 我们知道,假设要为某个Action指定校验文件.那么就要将" ...
- Android清理设备内存具体完整演示样例(一)
MainActivity例如以下: package come.on; import android.app.Activity; import android.content.Context; impo ...
- Do you master on array in C ?
Do you master on array in C ? 因为新标准C99的支持变长数组, 差点儿C的标准特性就是看着gcc来的(Linux 内核严重依赖GCC) int mani() { cons ...
- poj3278(bfs)
题目链接:http://poj.org/problem?id=3278 分析:广搜,每次三种情况枚举一下,太水不多说了. #include <cstdio> #include <cs ...
- MBR格式无法识别2T以上的硬盘的问题
早上有人打电话说四块2T的sata 硬盘做了raid 5之后安装window server 2012的时候,无法创建分区,安装完系统后无法给剩余的硬盘创建分区,刚开始的时候我还以为是别人分区的数量问题 ...
- WebKit爬虫
https://github.com/emyller/webkitcrawler 一个开源的项目,可以快速入门. http://spiderformysql.com/ http://crawl.gro ...