版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8页共22页基于Android的文件传输APP设计目录TOC\o"1-3"\h\u3695基于Android的文件传输APP设计 1153511绪论 2236701.1研究背景 2198101.2国内外发展现状 3231241.3未来发展趋势 3203651.3论文内容 4107842相关技术介绍 5942.1Java语言介绍 5198852.1.1Java简介 5122462.1.2Java语言特点 5154992.2Android系统介绍 721912.2.1Android背景介绍 7274032.2.2Android系统开发与语言介绍 7228292.3SQLite数据库 8211102.3.1SQLite简介 8200362.3.3SQLite的优点 8194052.4本章小结 8185643系统需求分析 9230003.1系统可行性分析 964403.2系统功能性需求分析 992843.3系统非功能性需求分析 10325073.4本章小结 10136044系统总体设计 11205954.1系统界面模块设计 11212694.2文件管理模块设计 12255214.3文件传输模块设计 13260594.4传输记录模块设计 1329134.5本章小结 14327345系统实现 15306815.1获取文件实现 15163865.2选择发送文件实现 1615085.3打开文件实现 1633565.3文件传输实现 1743695.4查看传输记录实现 1830155.5本章小结 19198616系统测试 20249086.1测试环境 2035686.1选择文件功能测试 20141106.2打开文件功能测试 21150896.3传输文件功能测试 21192806.4传输记录功能测试 21145586.5本章小结 22321617总结 231绪论随着智能手机移动互联网以及相关通信领域科学技术的进步,人们的生活、学习和工作变得越来越方便快捷。现在的智能手机移动互联网已经与我们生活息息相关而且慢慢变得不可分割。在我们的日常生活、工作和学习中,已经渐渐离不开网络的应用。不过,人们在一些特殊的情况下,也可能会遇到网络传输的速度过慢,甚至我们所在的环境连不上网络等这些情况,在这样的条件下,人们之间的文件传输实现就会变得特别困难。而基于Android的手机文件传输APP基于无线网络通信技术,将针对以上的特殊情况,利用普及在Android手机系统中的便携式热点功能,建立WiFi热点,让两台Android智能手机能够在一定的范围里内进行连接,并且实现Socket通信,进而实现两台Android手机内文件的传输。1.1研究背景目前,Android平台的快速发展,使得Android系统之间的传输方式越来越丰富。以前,我们通过内存卡等移动存储设备在Android手机之间传递文件,这种方式的速度虽然比较快,但是比较麻烦,需要借助内存卡等移动存储设备。而且现在随着智能手机的发展,一些手机已经取消了内存卡槽。在无线网络通信技术方面,通过蓝牙技术,两台Android手机之间也可以实现文件传输。虽然,现在Android手机上基本都全部覆盖了蓝牙技术,但通过这种蓝牙技术进行传输文件会受到比较大的传输距离的限制,而且数据传输速度也比较慢。还有,近几年才流行起来的NFC近场通信技术,虽然NFC近场通讯技术在一些特殊场合能够很好地体现出强大的功能,但是这种技术并不能够直接传输任何形式的文件数据,只能在传输某个标记的时候才能发挥它的价值,目前通过NFC技术能够传输的最多信息为一张名片,对于各种媒体文件的传输毫无办法。WiFi是一种无线网络通信技术,是目前智能手机中的基本功能之一,并且与蓝牙一样,现在的绝大部分智能手机都配置了WiFi功能,在传输方面,WiFi具有比蓝牙传输速度更快,距离更广的优点。而且不用通过其它的介质,只需两台具有WiFi的Android设备就可以通过WiFi实现Android设备之间的文件传输。1.2国内外发展现状目前市面上的传输软件有很多,国外比较流行的有AirDroid和SendAnywhere等。AirDroid是由SandStudio自主研发的一款远程控制软件,在2011年11月,该公司推出这款软件的第一个版本,到现在为止已经更新到了4.2版本。在这个过程中,这一款软件已获得数千万次的下载,是在全球范围都备受好评的安卓设备管家。无论是在一个局域网环境下或者是远程监控网络环境下,都可以直接通过远程控制功能来操控安卓手机,进行文件传输,远程管理智能手机等。但是使用这款软件需要我们进行注册登录,使用一些高级功能还需要我们注册会员等,这对一部分人来说并不够友好。而对于SendAnywhere,它相比AirDroid更加专注于传输,大部分的用户都已经评论说SendAnywhere分享文件操作十分简便。因为它传输的方法主要是通过6位数字的密码、二维码和链接来实现。而且它与AirDroid相比,不用登录和注册也能够使用到比较完整的功能。发送文件的这个用户将这些文件放在SendAnywhere上,然后通过点击分享就能够看见应用中出现的一个6位数字的密钥或者二维码,而那个接收文件的用户只需在SendAnywhere应用中直接输入这个密钥,或者直接通过扫描二维码就能直接下载得到被发送和分享的文件。对于国内的手机传输软件,了解到的就更多了。像QQ,微信等社交软件,里面也内置了传输功能,不过需要我们在联网的条件下,使用一定量的流量才能实现文件传输。而更加专注于文件传输的软件有快牙,茄子快传和闪传等。这一些都是比较知名的而且用户人数比较多的文件传输软件。它们具有不消耗流量,传输速度快等特点。他们的实现方式也基本相似,通过WiFi技术搭建局域网,实现不同设备之间的通信,然后进行文件传输。其中有的软件也需要注册登录,而且在使用的过程中还会出现一定量的广告。这对用户的体验就显得不够友好,而且还会占用不必要的系统资源。1.3未来发展趋势在现代科学信息技术的高速进步和发展下,人们对于生活,学习和日常工作中的媒体文件传输的重视和要求更加地趋向于快速,高效,便捷以及安全等方面。随着智能手机移动互联网以及相关通信领域科学技术的发展,在技术方面提高了人们通信的可移动性,人们几乎可以在任何地方任何时间进行通讯。而作为传输信息中很重要的一方面,文件的传输在人们的生活,学习与工作中慢慢变的不可或缺。人们在文件传输过程中对于文件的传输安全性,即时性,方便性等各个方面所提出的新的要求也必然变得越来越高,经过了相关应用评论的综合研究分析后,对于未来文件传输相关技术及其发展趋势提出了以下的基本要求:当用户在日常生活中进行文件传输时,要让用户体会到方便的网络设置,感觉到数据的传输速度并不是特别慢,同时保障传输过程的安全性并且要兼容Android手机的绝大数版本,达到版本适应。除此之外,在应用程序方面,更加注重独立性,在不用调用第三方软件功能,也不需要通过使用的硬件或者其它相关设备来进行网络搭建的情况下,应用程序还能够实现高效率地文件传输。而且还要充分考虑界面的美观,用户在使用时操作上的方便性以及使用量较小或者不需要消费的情况下就可以得到一种比较舒适的应用体验。1.3论文内容本系统的主要目的是为了实现Android系统之间的文件传输。在设计和实现的过程需要我完成以下几个的工作:(1)完成背景,国内外的发展现状以及以及未来发展的分析。(2)学习使用到相关技术,并作简单的介绍。(3)完成需求分析并且进行功能的模块化设计。(4)进行系统的实现,并且做相关的程序功能测试得出结论。
2相关技术介绍这里主要介绍了实现基于Android的文件传输APP所使用到的编程语言和相关的技术。本次毕业设计中所需要使用的编程语言为Java语言,使用到的数据库技术为SQLite数据库技术,在Android系统平台上进行应用开发。2.1Java语言介绍2.1.1Java简介Java是由JamesGosling在Sun公司领导的小组开发的。2010年Sun公司被Oracle收购。Java最初被称为Oak,在1995年更名为Java并被正式推出[1]。它是面向对象的,并且具备了这一类编程语言的大部分优点,与同为这一类编程语言的C++语言相比,Java语言优化了C++语言的多继承性,并取消了指针,这让Java语言在能够保障功能强大的同时还能够达到简单易用的特点。作为这一类特点编程语言中最具代表性之一的Java语言,在进行软件开发设计时,以面向对象的理论研究为其基础,从实验结果的角度出发来找到问题所要的解决方式,使得开发过程变得更加直观和有利于人们的思考,使开发人员解决复杂的编程问题的方式更加高效。Java的特点和优势有很多,简单性、面向对象、分布式、安全性、平台的独立和可移植性、多线程等都直接代表了Java的主要特点和优势。Java程序设计语言不仅可以用于开发Android系统程序,还可以开发PC端应用程序和网络应用程序等。2.1.2Java语言特点(1)简单性:Java与C++有很多类似的特点,对于一些了解C++的开发人员来说能够比较容易的直接上手Java,Java舍弃了C++中易产生错误的指针等概念,并且在设计过程中采用了垃圾回收机制,提高了内存管理的效率。(2)跨平台性:Java通过JVM可以实现软件的跨平台性,即用Java编写开发的软件能够直接运行到各种操作系统上。这主要是因为Java所开发的软件都是运行到JVM上,而各种操作系统都具有着不同的JVM。这样就很好地实现Java的跨平台特性。(3)面向对象:我们常说的所谓的对象,就是客观世界体系中的一个客观实体,实体与对象两两相互对应,即每一个实体都是一个对象,对象具有属性和行为等。面向对象语言,能够使得应用的开发变得简单。特别是在代码拓展和代码复用等方面。(4)安全性:第一,Java取消了功能强大但是又很危险的指针,不管这个区域是否可用,我们都可以通过指针指向这个内存区域,但是这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是被其他程序运行所占用。并且使用指针也容易发生数组越界。第二,Java代码要能够运行,必须经过许多复杂的步骤,如预编译,代码校验等。只有经过这些复杂测试步骤后,程序才能够正常运行。除此之外,Java还通过一些其它的方式来保障安全性。(5)多线程:多线程是指一个进程在同一时间能够并行执行多个线程。在Java程序编程语言中,定义了一些的类和方法,如Thread类、Runnalbe接口等,用来帮助用户建立、管理多线程。通过实现这些类或者接口,能够让应用程序同时保留多个线程,来支撑各种事务并发和多任务处理等。(6)分布性:在多个不一样的主机上布置相应的操作是指Java的操作分布,将数据存储在许多不同的主机上是指Java的数据分布。被Java用来存储数据的不同的主机都是网络中的不同成员。利用统一的资源定位符即URL,Java可以实现对这些网络对象的访问。访问方式与访问本地系统一样。数据分布和操作分布共同构成了Java的分布性。(7)可移植性:Java应用程序本身具有独立于网络的体系架构的功能,它们可以很容易地被移植到互联网上的各种计算机上。与此同时,Java在不同平台之间建立了相应的接口,使得类库能够实现自由移植。(8)编译和解释性:Java代码通过Javac编译器编译后生成的是字节码,字节码包含了许多编译时的信息,并且独立于平台。它需要被java虚拟机翻译成本地的机器指令后才能执行,而java虚拟机的翻译过程则是解释性的。(9)高性能:Java应用程序比大多数交互式应用程序具有更快速度和更高性能的优势是因为编译后生成的是字节码,另外,将字节码翻译成机器指令,能够进一步大大改善运行时的效率。(10)动态性:Java的动态性是指对象生成和存储,不是在编译时完成的,而是在字节码去解释执行时完成的。2.2Android系统介绍2.2.1Android背景介绍Android,是一个以Linux开源系统为基础来进行开发的操作系统,主要用于平板电脑,智能手机和智能电子设备等终端上。该操作系统是由Google公司所开发的。2008年10月,发布了全球首款搭载Android操作系统的HTCG1智能手机,随着这台智能手机的发布,Android智能手机开始在全世界范围内普及[2]。此后,Android系统逐步向各类平板电脑和智能电子设备等领域扩展,如手表、汽车、以及各种家用电器等。在2011年5月,Android占领了全球第一的市场份额。从那以后,Android的占有率持续增加。通过中国信息通信研究院泰尔终端实验室统计的数据分析可知,在2020年第一季度中,共有57款45、5G手机申请进网,其中智能机在申请进网的4G、5G手机中的占比非常高,大约为92.5%。所有智能机中,手机的操作系统为Android操作系统的占比依旧高居首位,占比大约为94.2%。在Android的各个版本中,Android版本10占比78.0%[3]。与其它的手机操作系统相比,Android平台具有以下优点。首先,从最初的底层操作系统,到上层的程序界面的所有软件,都由Android平台进行提供。[4]并且无须缴纳任何费用就可以使用这个平台,同时不同的产品厂商也都可以根据自己的需求进行修改或者扩展Android平台。其次,在Android平台下,除了一些应用程序执行的载体或者虚拟机之外,其他应用软件都是完全相同平等的。例如我们可以选择自己创建一个音乐播放器来代替系统里的相关软件。然后,通过Android平台来开发应用,可以实现不同应用之间的数据共享,经过相关的声明或操作,应用就可以访问或调用其他应用的功能,或者将自己的部分数据和功能提供给其他应用使用。2.2.2Android系统开发与语言介绍通过Eclipse和AndroidStudio可以进行Android系统应用的开发。除了开发Android应用程序之外,Eclipse还可以进行其它系统应用的开发。而AndroidStudio则被认为是一个是更专业的Android应用开发平台,它是Google公司为Android开发人员量身定制的开发工具,里面相应的功能更加丰富。并且Google公司一直为AndroidStudio平台提供技术支撑和更新服务。Android系统应用的开发语言主要有Kotlin和Java,本次的系统设计与实现将通过AndroidStudio平台使用Java语言进行开发。2.3SQLite数据库2.3.1SQLite简介作为目前国际市场上比较主流的一种关系开源类型嵌入式数据库,SQLite通常能够很友好的,比较全面的提供支持当前关系型开源数据库中所有都需要必须具备的一些重要基本特征,例如标准SQL语法、事务、数据表和索引等[5]。这一款数据库的操作十分简单,生成的数据库文件既能在各个平台之间进行移植,也能以多种形式嵌入到其它的应用程序中,如动态库,静态库等。在维护方面也十分的容易。2.3.3SQLite的优点(1)这是一款非常轻量级的数据库,最低只占几百K的内存。因此,对于安装在手机,平板电脑等设备上的软件来说,它无疑是一个很不错的选项。(2)SQLit能够为用户实现十分简单有效的数据保存。(3)SQLite可已被用来作为作为应用程序中某些数据的暂时性数据集。(4)通过SQLite数据库查询数据是非常简单的。能够按照自己设计的方式随时地进行数据提取。(5)SQLite学习和使用是非常容易的。它不需要任何安装和配置。只需要通过简单的语句,就可以创建使用数据库了。2.4本章小结本章主要介绍了实现基于Android的文件传输APP实现过程中,使用到的语言,平台等相关知识以及它们的特点等。
3系统需求分析3.1系统可行性分析技术可行性:在前面提到过,Android本身最重要的一个特点就是它很开放,并且集合了所有用于移动互联应用的各个技术模块,而且它在功能上的可用和定制性很强,此外还拥有各个可相互扩展的应用分类数据库。Google通过OHA公司联合众多的手机厂商积极地进行了系统的技术研发,不断地开发更新着系统版本,将这个操作系统的实际应用推广拓展到了更多的相关终端产品中,确保了相关终端用户操作体验的不断优化改善。而开发所采用的Java语言,是一种面向对象的程序设计语言,结合上文的内容可在,其在面向对象等方面的特性,让开发也变得相对的容易。经济可行性:首先,在开发人员方面,该系统由本人独自开发,由毕设老师进行指导,不需要支付任何费用。然后,所使用的开发工具,为Google公司提供的AndroidStudio开发工具,不需要我们支付任何费用,我们就能完全免费的使用该开发工具,并且在官方网站即可自行下载。在传输过程中使用到的文件,也是手机中本身自带的文件,不需要支付任何费用。所以本次所设计实现的系统在经济上完全可行。操作可行性:对于该应用程序,第一使用之前要先对它给予相关的权限,如允许读取本地文件信息,允许该应用联网等。这对于使用Android手机操作系统的用户来说,是非常常见的操作。另外,该应用程序的界面简洁友好,操作方便,对于没有使用过的人也非常容易上手。所以该应用程序在操作上可行。3.2系统功能性需求分析本系统,旨在设计出一款基于Android的文件传输APP,能够满足用户之间使用Android手机对日常生活中的图片,音乐和视频进行传输分享,基于此目标,本系统需要实现以下功能:(1)选择发送的文件:本系统要能够提供给发送端用户选择发送哪些文件,移除不想要发送文件的功能。(2)查看文件:本系统要提供相关的功能,使用户能够查看想要看的图片,音乐和视频文件。(3)文件传输:这是本系统的核心功能,用户能够通过本系统实现图片,视频文件的发送与接收。(4)传输记录:本系统要能够提供给用户查看到已经发送和接收的文件的记录,知道发送过哪些文件,接收了哪些文件。对于已经没用的记录,能够给用户提供删除的操作。(5)传输状态:要让用户比较直观的了解到当前正在传输文件的进度。3.3系统非功能性需求分析开发设计一款基于Android的文件传输系统应用程序,除了要满足其自身软件应用基本的一些功能之外,应用程序还要充分考虑到是否可以同时满足一些非基本功能性的基本要求。其中,比如一个软件应用界面的美观,界面操作使用的流畅度,用户在使用应用的过程中应用的点击按钮的响应速度,对不同发行版本的多个Android应用系统的软件兼容性,以及应用程序自身的安全性和稳定性等等。在其界面的美观及其使用的流畅程度方面,界面设计应该要符合广大人民群众的审美观,并且还应当有应用程序自身的特色。界面之间的切换过程中应该是平滑和流畅,不能让人觉得出现明显的卡顿。在对于每位用户点击的响应速度方面,为了保证良好的用户体验,应用对每位用户的点击或者是长按等一系列操作的响应速度都不宜超过1.5s。在对不同的Android操作系统的功能和兼容性的要求方面,应该尽量多的使之与现在主流各个版本的Android操作系统相兼容,根据目前的移动智能手机市场上Android操作系统的实际使用情况,本次应用程序实现应该要与Android6.0版本及以上的Android操作系统相兼容。在对于保证应用程序运行稳定方面,需要注意保障应用程序在用户正常操作过程中,系统能够正常工作。对于的文件传输过程,应该保证当两台Android手机处于正常距离范围之内时,其传输平均速度在3MB/S以上。同时系统还应支持多个文件的传输。3.4本章小结本章主要介绍了系统的需求分析,为后面的设计实现打下基础。
4系统总体设计本项目基于AndroidStudio平台通过Java编程语言进行开发。根据上文的需求分析,以及设计中应该遵循的原理,现将该系统的功能划分成四个模块,分别为系统界面模块,文件管理模块,文件传输模块和传输记录模块。通过对这四个模块中各个功能设计与实现,来完成本次应用程序的设计与实现。系统总体功能需求分析图如图4.1所示。图4.1系统总体功能需求分析图4.1系统界面模块设计对于Android系统应用程序,一个好的应用界面能够大幅度提高用户的满意度。而一个好的界面首先要够简洁,不需要在界面上添加无用的东西,要够简单粗暴,直奔主题。然后还需要美观,能够给用户留下好的第一印象,符合大众审美的同时有具有自己的特色。除此之外,还需要方便用户使用,用户在打开应用时就能够立马上手,快速的找到自己想要的内容,本系统对文件进行了分类,方便了用户选择要发送的文件。本着以上的原则,在参考国内外相关APP的前提下,本系统的主界面只设置了几个有特色的按钮,而文件选择界面采用如图4.2所示的框架结构。图4.2文件选择界面框架示意图文件选择界面的父布局可以通过coordinatorlayout来实现,它被包含在com.android.support.design包中,所以我们在使用时需要导入相关包才能进行使用中。导航栏由一个AppBarLayout实现,在这一控件的使用方面,它作为LinearLayout中的一个子类,在使用时候,要在相应的子View上设置关于app:layout_scrollFlags的属性,还可以通过在具体的代码中使用setScrollFlags()这一方法来设置。将CoordinatorLayout和AppbarLayout的配合起来使用,能够产生比较好的动画效果。使用Fragment的目的是为了使应用程序的界面能够自动地适应各种大小不同的手机的屏幕,提升系统的适应性。这一API是在Android3.0版本引入的[6]。它的使用需要被嵌套在Activity中,并且无法被我们单独拿来使用。4.2文件管理模块设计文件管理模块是本系统中一个相对重要的模块,是实现文件传输的前提,在这一模块中,首先要实现对Android系统内相关文件的获取,在获取到相关的文件信息后,将它们存在ArrayList中,对于不同类型的文件,定义不同ArrayList去存,再将这不同的ArrayList提交给文件选择界面,通过ListView控件将这些文件展示出来,让用户能够去选择需要发送的文件,并且将选择的文件记录在一个新的ArrayList中,再将这个新的ArrayList提交到文件传输模块。目前只设计获取了图片,视频和音乐文件这三种类型的文件,如果日后还需要获取其它类型的文件,可以类比实现获取这些类型文件的代码去实现。此外文件管理模块还需要提供给用户查看文件的功能,这里将采用调用系统默认软件来实现给用户查看不同类型的文件的功能。4.3文件传输模块设计首先,要确保文件传输的前提,即实现不同Android设备之间的通信。如果Android设备之间不能够进行通信,是无法实现文件传输的。现在的Android设备基本都配置了便携式热点,通过便携式热点,可以创建WiFi局域网,完成不同Android设备通信的基础。再通过TCP协议实现通信。TCP协议主要具备这样一些特征,首先,基于它面向连接的特点,要保证应用程序双方已经建立好了一个链接,它们之间才能通过这一连接来使用TCP协议通信。当应用程序利用TCP协议完成了某些功能,已经不需要使用TCP协议的时候,需要关闭已经建立起来的通信。然后,关于它的通信连接,只允许有两个端点,即基于TCP的通信是点对点的。然后,它还提供的服务是可靠交付的,实现的是全双工通信。基于这样的特点,它能够实现不重复、不遗漏、无差错并且顺利的将用于传输的数据按序送达[7]。并且只要通信双方保持通信,即可在各种各样的时候发送数据。4.4传输记录模块设计如果没有传输记录模块,用户想要知道自己已经发送过什么文件,或者接受过什么文件是比较麻烦的。所以本系统将在传输记录模块,实现发送文件历史记录和接收文件历史记录等功能。系统将在发送或者接收文件之后,把已发送的文件后者接收到的文件的文件名和其所在文件的目录储存到数据库。此外,在传输历史记录界面还需提供删除操作,让用户能够对已经没用的记录进行删除。由于本系统是基于Android平台进行开发,所以考虑使用SQLite这一轻型数据库。在数据库的设计方面,本数据库只考虑对文件信息的存储,而文件信息中比较重要的两点信息为文件名和该文件所在的路径。所以创建了名为usersDataBase的数据库来对这文件名和该文件所在的路径进行存储。在数据库中,设计了两张表来分别存储发送端和接收端的历史记录,分别为发送文件记录表sendFileDB和接收文件记录表receiveFileDB。这两张表的数据结构相同,如表4-1所示。表4-1表的数据结构名称类型说明idinteger主键titletext文件名uritext文件目录4.5本章小结本章主要介绍了系统应该实现哪些功能,并对这些功能进行了具体的模块化划分。
5系统实现完成了前面的需求分析和系统总体设计之后,对于基于Android的文件传输APP的实现有了明确的实现思路。本部分将介绍各个模块中相应功能的具体实现,其中核心功能是发送文件与接收文件,重要的功能包括获取Android系统中不同类型的文件和选择要发送的文件等。5.1获取文件实现实现文件的管理,首先需要获取系统中不同类型的文件。在Android系统的设计中,有一个专门用来存放多媒体信息的数据库,这个库名为MediaStore[8]。然后,开发人员可以通过实现ContentResolver这一抽象类,便可以方便的完成对这个多媒体数据库的相关操作,从而获得图片,音乐和视频相关的信息。在进行这些操作之前,要先在AndroidManifest文件中,通过<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>语句声明读取系统存储的权限,获取图片类文件的相关代码如下所示。5.2选择发送文件实现应用程序获取到图片,音乐和视频这三种不同形式的文件后,通过ListView和View等控件将其显示给用户界面。由于是三种不同类型的文件,通过实现三个Fragment来实现分页的操作。在Fragment中,通过适配器,将文件数据与CheckedTextView绑定,来实现用户选择发送文件的功能。并且将已经选中的文件存在一个ArrayList,交给文件传输模块。实现绑定适配器的相关代码如下所示。5.3打开文件实现在查看文件的功能上,考虑到查看文件类型的不同,这里直接选择调用Android的默认相关类型的应用进行文件的查看。通过长按选中的文件,系统把能够打开这种文件类型的所有Android应用提供给用户,让用户自行选择相关应用进行查看。长按选择系统应用的相关代码如下所示。在实现这一功能的过程中,当应用在Android7.0及以上的系统上,使用file://形式的Uri暴露给另一个应用时将会抛出FileUriExposedException异常。为了解决这一问题,系统通过FileProvider使用content://形式的Uri传递给接收该Uri的应用[9]。在AndroidManifest文件中增加<provider>元素,声明FileProvider组件的代码如下所示。5.3文件传输实现实现文件传输的第一步首先要完成局域网Wifi的创建。本系统为了适应Android的各个版本,将通过相关按钮直接进入到Android系统的个人热点设置界面,进行Wifi热点打开与个性化设置,另外一台Android设备通过Wifi热点提供的名称和密码进行连接,并获取IP地址等信息。双方通过局域网Wifi进行连接之后,即可准备文件的传输。为了保证数据传输的稳定性,将采用基于TCP协议的可靠通信。Java通过I/O流的方式来实现各种各样的设备之间的信息数据传递,流按所操作的数据类型可以划分为两种:字节流和字符流[10]。如果数据是文本类型,那么需要使用字符流;如果是其他类型,那么使用字节流。本系统主要是图片,音乐和视频文件类型之间的传输,因此使用字节流。Java提供了大量的流对象可供使用,其中字节流的两个顶层父类分别是InputStream与OutputStream。其它的字节流操作类通过继承这两个顶级父类进行实现。对于TCP的通信实现,需要我们使用到Socket套接字,对于Socket的理解是,它是为网络服务提供的一种方式。两个Socket之间的通信就相当于两台设备之间的网络通信[11]。TCP通信的一端叫做客户端,另外的一端叫做服务端,Java中与之相对应的类分别为Socket与ServerSocket。我们需要通过使用Socket类来建立TCP客户端,通过ServerSocket类来建立服务端。在建立一个连接之后,通过Socket中的I/O流进行数据传输以及进行相应的数据存储,然后关闭Socket之间的连接。服务端实现的相关代码如下所示。客户端实现的相关代码如下所示。5.4查看传输记录实现在应用程序的主界面中直接点击相关历史记录按钮,可以进入历史记录界面查看相关的传输记录。通过使用一个ListView控件来实现历史记录的界面。页面显示传输的历史信息。点击某一条历史记录,可以弹出历史记录的操作菜单。下面是从数据库获取历史记录表的相关代码。5.5本章小结本章对系统功能的实现进行了详细的介绍,并且给出了相关的实现代码。
6系统测试6.1测试环境基于Android的文件传输APP需要在两台Android设备之间进行,所以参与本次测试的手机应有两台。其中一台的手机名称为RedmiK20Pro,手机的操作系统为MIUI12,基于Android10版本,处理器为高通骁龙855,运行内存为8GB。另一台手机的名称为vivoY67L,手机的操作系统为FuntouchOS,基于Android6版本,处理器为联发科MT6750,运行内存为4GB。6.1选择文件功能测试本系统通过选择文件的按钮进入到文件选择的界面,在该界面能看到手机内的图片信息,通过滑动页面或者点击导航栏按钮,能够切换到音乐和视频界面,同样能够看到音乐和视频信息。在每条文件信息后面都有一个复选框,点击文件名或者复选框能勾选中该文件使其被选中,再次点击将取消选中。选中文件的效果图如图6.1所示。图6.1文件选择效果图6.2打开文件功能测试在文件选择界面,长按某一文件名,将能够调用手机系统中相关类型的软件打开这一文件,若手机系统中能打开这一文件的软件有多个,系统将给出弹出框,将所有能够打开该软件的手机软件列出来,由用户自行选着通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025曲靖市麒麟职业技术学校工作人员招聘考试试题
- 2025江苏省如皋中等专业学校工作人员招聘考试试题
- 应急照明系统施工方案
- 人工智能智能客服机器人2025年技术创新在酒店管理行业的可行性报告
- 吊篮施工组织设计
- 变形缝处理专项施工方案
- 2026年全球金融科技创新报告
- 2026年智能停车场行业创新报告
- 策略视角:航空供需整体改善重视低位布局机会
- A股估值全景变化
- 2026贵州遵义市政务服务管理局下属事业单位招聘编外人员2人考试模拟试题及答案解析
- 江苏省2026年中职职教高考文化统考数学试卷及答案
- 校园创意设计
- 2026年北京市东城区高三二模生物试卷(含答案)
- 2026滁州市轨道交通运营有限公司第一批次校园招聘21人备考题库及完整答案详解一套
- 嘉定区家委会工作制度
- 医疗机构医院医用高压氧治疗技术管理规范(2022年版)
- 2026年中国钢铁余热发电市场数据研究及竞争策略分析报告
- (2025年)新GSP质管部长、质量负责人培训试卷及答案
- 煤炭销售督查工作方案
- 【北师大版】《心理健康》三年级下册 第1课《成长的印记 》课件
评论
0/150
提交评论