【问题标题】:How the "SHAREit" android application works technically?“SHAREit” android 应用程序在技术上是如何工作的?
【发布时间】:2015-03-09 04:15:11
【问题描述】:

我想使用“SHAREit”之类的 wi-fi 在 android 上构建一个数据共享应用程序,但我没有从哪里开始。

因此,如果有人让我清楚“SHAREit”的技术概念,那么理解起来非常有效。

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

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

【问题讨论】:

    标签: android android-wifi


    【解决方案1】:

    我尝试编写一个名为 SHAREthem 的库来模拟 SHAREit 的工作原理。 库有助于使用 WiFi 热点 在设备之间共享和传输 P2P 文件。如果接收器未安装应用,它还支持应用到网络共享。希望对您了解使用 WiFi 热点共享文件所涉及的技术有所帮助。

    由于这个库有很多移动部件,我制作了一个blog 并附有实现细节。将尝试在这里介绍一些组件:

    • 热点控制器

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

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

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

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

    • 分享服务器

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

    • SHAREthem 服务

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

    • 用户界面(活动)

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

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

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

    【讨论】:

    • 非常感谢你这么神奇的完整应用程序......你能更新你的答案吗......它不适用于 Android 版本 O......我解决了一些错误 7.0和 7.1 它正在工作...但是 O 它不工作
    【解决方案2】:

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

    【讨论】:

    • 你能否提供一个源代码,让设备在其 SSID、BSSID 等旁边传输一些自定义信息,而另一个设备可以在对等方之前查看这些信息。
    • 他们在示例中为您提供了这一点。您可以在 Map 对象中放置您喜欢的任何字符串。以下链接告诉您有关 DNS SD TXT 记录格式的信息,但要注意的主要事项是您不打算发送很多字节 - 理想情况下是 100 或更少 (zeroconf.org/rendezvous/txtrecords.html)。
    • @JASONGPETERSON 你确定吗? SHAREit 使用 Wi-Fi P2P 吗?那么在接收端创建热点有什么意义呢? Wi-FI P2P 在 4.0 及以上版本上运行,但 SHAREit 即使在 Android 2.2 上也能以相同的概念运行。如果你知道那个答案,请告诉我。我也正在创建文件传输应用程序
    • 有点跑题了,但是android SDK中是否有类似Wi-Fi P2P的东西可以用于多客户端设置? (例如,可以在本地 Wi-Fi 范围内的对等方之间使用的本地聊天应用)
    猜你喜欢
    • 2012-06-13
    • 2011-08-04
    • 1970-01-01
    • 2011-03-05
    • 2011-04-05
    • 2016-07-12
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    相关资源
    最近更新 更多