"SHAREit"Android应用程序如何在技术上运作?

Ras*_*aon 18 android android-wifi

我想在Android上使用wi-fi构建一个数据共享应用程序,如"SHAREit",但我没有得到我从哪里开始.

因此,如果有任何明确我的"SHAREit"的技术概念,那么理解它是非常有效的.

  1. 当我们想要发送文件时,我们看到了可用的接收器设备名称.
    • 名称是否显示为SSID或其他?
    • 我们如何广播在发件人设备上显示的名称和其他信息?
  2. 当我选择一个设备发送文件时会发生什么?
  3. 实际上我可以使用什么API,请为我解释一下.

请测试我可以运行的所有资源和链接.

Cod*_*ury 7

我已经尝试编写一个名为SHAREthem的库来模拟SHAREit的工作原理.库使用WiFi热点促进P2P文件共享和设备之间的传输.如果接收器没有安装应用程序,它还支持应用程序到Web共享.希望有助于您了解使用WiFi Hotspot进行文件共享所涉及的技术.

由于这个库有许多移动部件,我创建了一个包含实现细节的博客.将尝试在此处介绍几个组件:

  • HotspotController

    HC使用Java Reflection,因为Android上没有可用于启用/禁用热点的API.功能包括:

    • 控制器创建一个带有SSID的OPEN Wifi热点配置,该SSID可以被接收方截获,以识别SHAREthem发送者,包括端口和发送者名称.

    • 禁用共享模式时恢复用户热点配置

    • 提供已连接的WiFi客户端列表.

  • 分享服务器

    从NanoHttpd扩展的微型HTTP服务器使用IP地址作为主机名将发送方数据提供给接收方,并且默认情况下在用户或系统分配的端口上工作.

  • 分享服务

    Android服务,管理SHAREthem服务器的生命周期,并通过停止操作处理前台通知.

  • UI(活动)

    用于处理共享/接收操作的Android活动

    • Receiver - 提供UI以列出可下载的文件.向Android Download Manager发布下载请求以启动文件下载.

    • 发件人 - 显示每个连接的客户端(接收器)的IP,端口和连接的客户端信息以及文件传输状态.

    Receiver Listing片段显示Sender的所有下载 共享活动显示客户信息和传输状态 网络接收器


JAS*_*SON 5

使用Android Wi-Fi P2P库,然后从此页面上的文档开始。它告诉您如何使用Wi-Fi P2P进行服务发现,这将满足您要求中的第1项。基本上,每个设备都传输一个可以包含用户ID信息等的DNS-SD TXT。设​​备无需建立套接字即可查看其内容,这是您稍后在要求中完成第2项的工作。

  • @JASONGPETERSON您确定吗?SHAREit是否使用Wi-Fi P2P?那么在接收方创建热点有什么意义呢?和Wi-FI P2P可在4.0及更高版本上使用,但SHAREit即使在Android 2.2上也可使用相同的概念。如果您知道该答案,请告诉我。我也在创建文件传输应用的途中 (2认同)