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

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

时间: 2024-10-30 13:56:04

Android手机间无线互传功能探索和实现的相关文章

禁用Wi-Fi是否可以阻止Android手机发送无线帧?

本文讲的是禁用Wi-Fi是否可以阻止Android手机发送无线帧?, 前言 移动智能手机发出的Wi-Fi信号可以被某些机构和别有用心的人利用,跟踪用户的移动行为,所以你如果关闭移动设备的Wi-Fi接口则意味着你不想被人发现. Android系统具有设置启用或禁用Wi-Fi功能的选项,然而,你以为只要通过禁用Wi-Fi选项就足以阻止你手机的所有Wi-Fi活动吗?大错特错.为此,我还专门进行了一些测试,以验证这种说法的准确性. Android手机的Wi-Fi配置 Android手机的Wi-Fi扫描

Droid NAS:让Android手机变身无线U盘

当你急匆匆的拿出手机想要向电脑中复制几个小文件,却发现忘记带Micro USB线的时候,一定非常尴尬.很多时候像金山快盘等网盘类应用可以解决这个尴尬局面,不过这次我们已经不仅仅满足于网盘了.Droid NAS可以将你的Android设备变身为无线存储器,让你可以用 Mac电脑或另一台Android设备直接访问.Droid NAS界面截图由于Droid NAS使用的是SMB协议,因此很不幸的Windows系统无法兼容它,同样Linux也不行.不过如果你有一台Mac,或是另一台Android手机或平

用C#如何实现PC和Android手机之间文件互传

问题描述 我想要用C#写一个winform,点击按键之后,让D盘中的一个文件或者文件夹,传到手机的一个文件夹内,但是我写的时候不知道怎么写手机那个文件夹的路径,试了很多方法,求大神帮助!!!我是这样写的StringstrFromPath="D:\datafile\db";StringstrToPath="\storage\sdcard0\xyc1992826";//StringstrToPath=System.Reflection.Assembly.GetExecu

Android提高之Android手机与BLE终端通信_Android

最近穿戴设备发展得很火,把相关技术也带旺了,其中一项是BLE(Bluetooth Low Energy).BLE是蓝牙4.0的核心Profile,主打功能是快速搜索,快速连接,超低功耗保持连接和传输数据,弱点是数据传输速率低,由于BLE的低功耗特点,因此普遍用于穿戴设备.Android 4.3才开始支持BLE API,所以请各位客官把本文代码运行在蓝牙4.0和Android 4.3及其以上的系统,另外本文所用的BLE终端是一个蓝牙4.0的串口蓝牙模块. 注:笔者的i9100刷了4.4系统后,竟然

android检查手机和无线是否连接的方法

本文实例讲述了android检查手机和无线是否连接的实现代码,分享给大家供大家参考.具体方法如下: 方法一: 主要功能代码如下: 复制代码 代码如下:ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if(info!=null && info

C#之Android手机App开发_Android

目前Android在全世界市场上大约有75%的占有率,国人Android手机的持有比例更甚,甚至达到90%以上.因此搞计算机的一听说手机应用开发,一个个都像着了魔似的,既然有那么多人对它感兴趣,那咱也跟着玩一玩.但是,本模块不是介绍如何用Java开发,而是全部用C#去实现. 为什么用C#去实现?原因很简单,目前手机市场经过多年的你争我斗,现在就剩下Android.iOS.Windows Phone还能互相斗狠,其他的统统都被打趴下找不着北了.但是,学Android应用开发要用Java.学iOS应

联通首款定制Android手机正式上市

3月11日,中国联通向摩托罗拉定制的全互联网3G智能手机--智酷XT701正式上市,这是联通首款基于最新的Android2.0版本的智能手机,带有WiFi和WAPI上网功能,也显示了联通定制手机的一个重大方向. 联通Android定制手机上市 这同时也是联通的又一明星3G机型.该款手机的售价为4299元.正式上市后,用户不仅可在联通各地主要营业厅.各大中城市的苏宁.国美等全国连锁家电卖场及各手机卖场购买,也可在联通网上营业厅(www.10010.com)和联通华盛网上商城(www.vsens.c

Android手机信号强度检测详细介绍_Android

最近到处在跑着找工作,难免在面试过程中遇到这样那样的问题,记得最清楚一次在面试过程中被问到,当手机处于弱网状态下,如何处理,如何监听网络信号强度变化.但是真是蒙了,回答的乱七八糟,思路一点都不明确.今天小编在这里带领大家了解下关于手机信号强度的相关几个概念. Android手机信号强度介绍 android定义了2种信号单位:dBm和asu.它们之间的关系是:dBm =-113+2asu,这是google给android手机定义的特有信号单位.例如,我的信号强度为-53dBm,则对应30asu,因

C#之Android手机App开发

目前Android在全世界市场上大约有75%的占有率,国人Android手机的持有比例更甚,甚至达到90%以上.因此搞计算机的一听说手机应用开发,一个个都像着了魔似的,既然有那么多人对它感兴趣,那咱也跟着玩一玩.但是,本模块不是介绍如何用Java开发,而是全部用C#去实现. 为什么用C#去实现?原因很简单,目前手机市场经过多年的你争我斗,现在就剩下Android.iOS.Windows Phone还能互相斗狠,其他的统统都被打趴下找不着北了.但是,学Android应用开发要用Java.学iOS应