Android手机间无线互传功能探索及实现
年前研究了一下Android如何实现无线互传的功能,写了个小demo,最近无事,遂整理一下,与各位共享。前期调研发现,Android想要实现无线互传有以下几种技术:1,Bluetooth通行已久,简单易用,无奈速度奇慢是硬伤;2,NFC,官方从API 9开始支持,但各厂商对此技术持观望态度,比如我的三星就没有相应NFC硬件,NFC适用近场少量数据传输,尚未测试数据量的表现,不过NFC所谓的近场对距离要求相当苛刻,基本是要贴着才能传;3,WIFI-P2P,传输速度快,且P2P使得两台设备互为C/S,传输可双向进行,官方从API 14开始支持,考虑到目前API 14以下的设备保养量巨大,只能暂时放弃此技术。
权衡一下,参考目前各类无线快传软件,最终确定使用Wifi AP方式,自测兼容API 8设备,传输速度快,但只能单向传输。Client端通过Wifi连接到Server端开启的Wifi AP,连接成功后Client通过HttpEngine向Server发起Http请求,Server通过一个简易的HttpServer向Client提供响应服务,下面用一个非标准的流程图来大致示意一下方案流程:

在上传工程之前,对源代码中几个重要的类简单解释一下:
Client端
WifiApClientManager:对WifiManager的接口进行了封装,以便于进行开启、连接等操作
HttpEngineLite:发起Http请求的"引擎"类
WifiApClientRequest:请求抽象类,子类WifiApClientGetRecvListRequest,WifiApClientGetFileRequest分别表示获取获取Server端待传文件列表请求及获取Server端指定文件请求,使用HttpEngineLite执行具体操作
NanoHTTPClient:提供获取Server端待传文件列表,获取Server端指定文件等操作接口,使用线程池管理WifiApClientRequest
Server端
WifiApServerManager:对WifiManager的接口进行了封装,以便于进行开启AP,配置AP等操作
WifiApServerUtil:定义了Android AP通用网关IP
NanoHTTPD:此类为引用的开源代码(A simple, tiny, nicely embeddable HTTP server in Java)
NanoHTTPServer:NanoHTTPD的子类,实现其接口,返回相应的HttpResponse
下面就是源代码时间了,Read the fucking source code:
http://files.cnblogs.com/zealotrouge/WifiAPDemo.7z
Android手机间无线互传功能探索及实现的更多相关文章
- Android手机间使用socket进行文件互传实例
这是一个Android手机间文件传输的例子,两个手机同时装上此app,然后输入接收端的ip,选择文件,可以多选,点确定,就发送到另一个手机,一个简单快捷文件快传实例.可以直接运用到项目中. 下面是文件 ...
- Android手机做无线中继路由器
为什么要拿手机做路由器?因为我现在每天要带着一个火柴盒大小的路由器(703n).它提供了一个f了q的无线网络,电脑,手机,平板等设备连接上这个无线网络之后之后就可以自由上twitter,看youtub ...
- Android基于WIFI实现电脑和手机间数据传输的技术方案研究
Android手机和电脑间基于wifi进行数据传输,从技术上讲,主要有两种方案: 一种是通过ftp协议实现,Android手机作为数据传输过程中的ftp服务器: 一种是通过http协议实现.Andro ...
- Android手机与计算机间的”信任关系”
在iDevices(如iPhone.iPad等等)的取证方面,那个代表”信任关系”的plist无疑是最为关键的迹证,只要有了它,哪怕是最新机型的iDevice及最新版的iOS,且有着指纹保护或pass ...
- Android手机便携式wifi的使用及无线数据传输(主要针对XP系统)
适用条件: 1.可以上网的安卓系统2.2以上的智能手机,或有便携式wifi功能的安卓智能手机 2.有无线网卡的笔记本电脑或台式机(特别是XP系统) 测试手机:中兴U930 电脑:华硕K50系列笔记本 ...
- Android 手机 无线 ADB
要用网络调试Android需要设备已经获取root权限 如果手机没有命令行工具,请先在手机端安装终端模拟器,然后在终端输入: $su #stop adbd #setprop service.adb.t ...
- adb无线连接android手机进行调式,无需获得root权限
利用adb无线连接android手机进行调式 无需获得root权限 转载来自CSDN https://blog.csdn.net/lnking1992/article/details/5346518 ...
- 将Android手机无线连接到Ubuntu实现唱跳Rap
您想要将Android设备连接到Ubuntu以传输文件.查看Android通知.以及从Ubuntu桌面发送短信 – 你会怎么做?将文件从手机传输到PC时不要打电话给自己:使用GSConnect就可以. ...
- 【腾讯优测干货分享】Android 相机预览方向及其适配探索
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/583ba1df25d735cd2797004d 由于Android系统的开放策略 ...
随机推荐
- LintCode——筛子求和
描述:扔n个骰子,向上面的数字之和为 S .给定 Given n,请列出所有可能的 S 值及其相应的概率. 样例:给定n=1,返回 [ [1, 0.17], [2, 0.17], [3, 0.17], ...
- OpenMPI源码剖析:网络通信原理(一)
MPI中的网络通信的原理,需要解决以下几个问题: 1. MPI使用什么网络协议进行通信? 2.中央数据库是存储在哪一台机器上? 3.集群中如果有一台机器挂掉了是否会影响其他机器? 参考: https: ...
- HyperLedger/Fabric SDK使用Docker容器镜像快速部署上线
HyperLedger/Fabric SDK Docker Image 该项目在github上的地址是:https://github.com/aberic/fabric-sdk-container ( ...
- Scrum立会报告+燃尽图(Final阶段第七次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2486 项目地址:https://coding.net/u/wuyy694 ...
- Linux内核第一节
存储程序计算机工作模型 存储程序计算机——冯诺依曼体系结构 IP:寄存器,总是指向内存的代码段.IP(16位) 32位(EIP) 64位(RIP). 内存:保存数据和指令. CPU:CPU从IP指向的 ...
- 第二个spring冲刺第3天
今天天气突然变得很冷,所以我们队的人都有少许的不适.加上天气比较冷,我们都不怎么想做.幸好在队长的提醒下,我们终于继续投入研发的工作中.由于市面上的同类软件的数量不少所以我们下载了一些来看,希望能找到 ...
- 如何访问cxGrid控件过滤后的数据集
var I: Integer; begin Memo1.Lines.Clear; with cxGrid1DBTableView1.DataController do for I := 0 to Fi ...
- PHP的魔术方法
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods) 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对 ...
- Docker(十)-Docker创建DockerFile文件
制作Docker image 有两种方式: 使用 Docker container,直接构建容器,再导出成 image 使用. 是使用 Dockerfile,将所有动作写在文件中,再 build 成 ...
- requestMapping设置客户端访问地址