"SHAREit" android 应用程序在技术上如何工作?

How the "SHAREit" android application works technically?

我想在 android 上使用类似 "SHAREit" 的 wi-fi 构建数据共享应用程序,但我不知道从哪里开始。

因此,如果有人让我明白 "SHAREit" 的技术概念,那么理解起来非常有效。

  1. 当我们想要发送文件时,我们看到了可用的接收设备名称。
    • 名称显示为SSID还是其他?
    • 我们如何广播姓名和其他信息以显示在发件人设备上?
  2. 当我select一个设备发送一个文件然后会发生什么?
  3. 什么API其实我可以用到什么,请简单说明一下。

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

使用 Android Wi-Fi P2P 库和 start with the doc on this page。它告诉您如何使用 Wi-Fi P2P 进行服务发现,这会处理您的要求中的第 1 项。基本上,您让每台设备传输一个 DNS-SD TXT,其中可以包含用户 ID 信息等。设备无需建立套接字即可查看其内容,这是您稍后要完成的要求中的第 2 项。

我尝试编写一个名为 SHAREthem 的库来模拟 SHAREit 有效。 图书馆使用 WiFi 热点 促进 P2P 文件共享和设备之间的传输。它还支持应用程序到网络共享 如果接收器没有安装应用程序。希望对您了解使用 WiFi 热点共享文件所涉及的技术有帮助。

由于这个库有很多移动部分,我制作了一个包含实现细节的 blog。将尝试在此处介绍一些组件:

  • HotspotController

    HC 使用 Java 反射,因为 Android 上没有可用于 enabling/disabling 热点的 API。功能包括:

    • 控制器创建一个带有 SSID 的 OPEN Wifi 热点配置,接收器可以拦截该 SSID 以识别 SHAREthem 发件人,包括端口和发件人名称。

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

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

  • SHAREthem 服务器

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

  • SHAREthem 服务

    Android 管理 SHAREthem-server 生命周期并通过停止操作处理前台通知的服务。

  • UI(活动)

    Android 个活动处理 share/receive 个动作

    • Receiver - 提供 UI 列出可供下载的文件。帖子 向 Android 下载管理器发出下载请求以启动文件 下载。

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