如何打造 茄子快传 这样一款文件传输应用

  • 打造茄子快传文件Android端传输应用
    • 效果图
      • 主界面
      • 文件发送方
      • 文件接收方
      • 网页传20161218新增
    • 实现原理
    • 流程图
    • 分析
    • 实现过程
    • 项目地址
    • 测试
    • 版本
      • v10
      • v11

如何打造茄子快传这样一款 零耗流量的文件传输应用?

打造茄子快传文件Android端传输应用

效果图

主界面

如何打造 茄子快传 这样一款文件传输应用_第1张图片

文件发送方


如何打造 茄子快传 这样一款文件传输应用_第2张图片

文件接收方

如何打造 茄子快传 这样一款文件传输应用_第3张图片

网页传(20161218新增)

如何打造 茄子快传 这样一款文件传输应用_第4张图片如何打造 茄子快传 这样一款文件传输应用_第5张图片

实现原理:

在文件接收方是利用自身的热点开启,然后创建一个局域网。
在文件发送方是要去搜索附近的wifi,然后找到这个热点,去连接这个热点。所以在局域网内传输是不需要耗手机流量的。

很早之前做茄子快传的分析时,文件传输的话可以通过蓝牙,wifi直连,socket这三种方式。
蓝牙和wifi直连要做配对,比较麻烦。为了省去中间配对环节,这里我采用用socket来实现文件的传送。
通过Socket来实现文件传输的好处: 无论是什么设备都可以通过socket实现。

下面是手机wifi 各个协议传输速度的差别:

如何打造 茄子快传 这样一款文件传输应用_第6张图片
百科链接

上面就是茄子快传App实现两部设备之间文件传送的基本原理

流程图

文件传送操作:
文件传送是发生在两端的,分别是文件发送端和文件接收端,就正如你看到茄子快传的主页那样,主界面有两个按钮。分别是我要发送我要接收

对应关系:
我要发送——>>>文件发送方
我要接收——>>>文件接收方

Created with Raphaël 2.1.0 文件发送方 文件发送方 文件接收方 文件接收方 准备传送文件 初始化热点,搭建局域网 环境搭建完毕 选择文件(应用,图片,音频,视频) 开启wifi,扫描设别 UDP传送文件列表 接收文件列表 UDP通知准备发送文件 逐个传输文件

上面的流程图就是大致是文件发送方和文件接收方在同一个局域网通信的流程

分析

如果你继续再观察茄子快传传送文件的过程中,你会发现茄子快传不仅仅是利用socket在简单传输文件,你会发现文件发送方文件接收方正在文件传送的过程中都是显示了同样的文件传输列表。

注意:
每一个文件传输条目都包含了文件大小,文件名称,文件的缩略图,文件传输的进度。而且还包括所有文件的大小进度和耗时。

实现过程

为了实现茄子快传文件接收方和文件发送方的效果。这里我才去了自定义协议来实现。
自定义协议:header + body

header 包括 文件的信息(文件路径,文件的大小,文件的名称)[1024*10 byte] + 文件的缩略图[1024* 40 byte]
body 包括 实际的文件

header 文件的信息是以json字符串 而文件的缩略图是直接以byte数据写过去

文件的详情查看:

Transferable.java

BaseTransfer.java

FileSender.java

FileReceiver.java

这四个文件

项目地址

这是我在github上面的项目链接:
猛戳 https://github.com/mayubao/Kuaichuan
喜欢的给个star,有帮助的fork一下,在这里感谢您读了这一篇文章!!! ^_^

注意:在AdroidStudio 可以直接checkout下来。请确保你的git地址是正确的

测试

测试的话是需要两部真机来测试的。
在Android测试机 分别是 魅蓝2 与 华为 SCL-TL00, Vivo xs1 运行正常

版本

v1.0

实现了Android设备间文件传输功能

v1.1

实现了网页传输文件功能

你可能感兴趣的:(android,java,Android,茄子快传,Socket通信,文件传输,TCP-UDP通信)