先电云计算软件服务云存储网盘an移动应用开发手册xiandian saas mobile v_第1页
先电云计算软件服务云存储网盘an移动应用开发手册xiandian saas mobile v_第2页
先电云计算软件服务云存储网盘an移动应用开发手册xiandian saas mobile v_第3页
先电云计算软件服务云存储网盘an移动应用开发手册xiandian saas mobile v_第4页
先电云计算软件服务云存储网盘an移动应用开发手册xiandian saas mobile v_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、南京第五十五所技术开发云计算软件服务云网盘Android 移动应用开发手册版本:先电 Cloud-SaaS-Mobile-v2.2发布日期:2017 年 12 月 15 日南京第五十五所技术开发1南京第五十五所技术开发版本修订说明2修订版本修订时间修订说明Cloud-SaaS-Mobile-v1.22015 年 3 月 14 日SaaS 云Android 移动APP 开档。Cloud-SaaS-Mobile-v1.2.12015 年 3 月 30 日增加部分类说明增加代码说明Cloud-SaaS-Mobile-v1.2.22015 年 4 月 3 日增了推荐使用的 Android 模拟器的安装

2、配置过程Cloud-SaaS-Mobile-v1.3.12015 年 4 月 18 日增加 SDK 的说明增加登录和显示文件功能说明Cloud-SaaS-Mobile-v1.42016 年 4 月 12 日格式调整Cloud-SaaS-Mobile-v2.02016 年 10 月 27 日开发环境采用 Android Studio 使用 Android Studio 自带模拟器修改云项目导入到 Android Studio 开发环境云代码优化,修改工程说明章节修改部分类说明章节Cloud-SaaS-Mobile-v2.12017 年 4 月 10 日修改 Android Studio 的安装修

3、改模拟器的配置Cloud-SaaS-Mobile-v2.22017 年 12 月 15 日修改 JDK 安装描述信息,和Android studio 的安装描述信息南京第五十五所技术开发目 录环境安装11.1.1.JDK 安装11.2.Android Sutio 安装42.云项目导入132.1.导入工程132.2.模拟器安装162.3.运行工程232.4.主要功能303.云网盘 APP 架构303.1.网盘需求说明303.2.界面设计313.3.客户端技术架构设计324.工程说明344.1.工程主要的类344.2.SDK 说明354.3.登录 LoginActivity414.4.显示文件 M

4、ainActivity425.部分类说明445.1.OSSFile、OSSFileSystem445.2.AppS.woorea.openstack.swift.m. Object45技术支持473南京第五十五所技术开发1.环境安装1.1.JDK 安装1)点击 JDK 安装程序(在这里以 JDk1.8.0_102 为例)2)设置安装路径(不建议安装在 C 盘)修改路径为:D:Javajdk1.8.0_102,点击“下一步”,安装 JDK。第 1 页 共 50南京第五十五所技术开发3)安装 Jre在安装完 jdk 后会跳出安装 jre 窗口(*在这里要注意修改安装路径必

5、须和 jdk 在同一目录下,而不是安装在 jdk 目录下),路径为:D:Javajdk1.8.0_102,并点击下一步安装。第 2 页 共 50南京第五十五所技术开发4)此表 jdk 和 jre 安装好了,点击“关闭”即可。5)验证输入 java -version 验证安装是否。第 3 页 共 50南京第五十五所技术开发1.2. Android Sutio 安装1) 将”Sdk.zip”解压到当前文件夹第 4 页 共 50南京第五十五所技术开发1)将“android-studio.zip”压缩包放入 E 盘2)解压“android-studio.zip”压缩包至当前目录。第 5 页 共 50南

6、京第五十五所技术开发3)在目录“E:android-studiobin”下找到“studio64.exe”应用程序4)打开“studio64.exe”应用程序第 6 页 共 50南京第五十五所技术开发5)选择“Do not import settings”,点击“OK”5)若弹出提示框,选择“cancel”第 7 页 共 50南京第五十五所技术开发6)点击“Cancel”7)选择”Do not re-run the setup wizard”,点击”OK”第 8 页 共 50南京第五十五所技术开发9) 选择第一个“Start a new Android Studio project”10)选择

7、“Next”第 9 页 共 50南京第五十五所技术开发11)选择“Next”12)选择“Next”第 10 页 共 50南京第五十五所技术开发13)选择“Finish”14)等待加载程序第 11 页 共 50南京第五十五所技术开发17)在 AndroidStudio 右上角选择 SDK Manger18)更改 SDk 地址为你前面解压 SDK 的存放地址,点击”OK”17)在 AndroidStudio 左上角点击 File-Settings第 12 页 共 50南京第五十五所技术开发18)在搜索框中输入”gradle”,点击搜索出来的结果”Gradle”,在右边选择”Use local gr

8、adledistribution”,在下面的”Gradle home:”中输入”E:/android-studio/gradle/gradle-4.1-tone-1”,然后点击”Apply”,”OK”.2. 云项目导入2.1. 导入工程1) 解压云程序压缩包,如下:(程序包请不要放在桌面及包含中文的目录中)第 13 页 共 50南京第五十五所技术开发2)然后导入此项目,如下:第 14 页 共 50南京第五十五所技术开发3) 导入后看到的程序结构:第 15 页 共 50南京第五十五所技术开发2.2.模拟器安装1)点击工具栏中的按钮,弹出窗口如下。2)点击弹出如下窗口,选择 4.7 “WXGA,点

9、击”Next”。3) 此处需联网,点击右边”Install Haxm”第 16 页 共 50南京第五十五所技术开发4) 点击”Next”5) 等待第 17 页 共 50南京第五十五所技术开发6) 点击”Finish”7) 点击右上角关闭第 18 页 共 50南京第五十五所技术开发8)点击”Creat Virtual Device”8) 选择”4.7”WXGA”,点击”Next”第 19 页 共 50南京第五十五所技术开发9) 点击”Next”10)修改”AVD Name”,可修改可不修改直接默认名称,点击”Finish”第 20 页 共 50南京第五十五所技术开发11)此处可看到虚拟机创建,点

10、击按钮,启动 Andorid 虚拟机。12)等待虚拟机启动完成。第 21 页 共 50南京第五十五所技术开发第 22 页 共 50南京第五十五所技术开发2.3.运行工程点击 Android Studio 工具栏中启动按钮,将启动模拟器运行。模拟启动效果运行完成后可以看见登录界面:此处修改 Appstate 中的 IP 地址即可登录private String openstack_ip = "00"注:请使用我们提供的 swift-sever.zip 所构建的 swift 服务器第 23 页 共 50南京第五十五所技术开发登录的界面注意:1)运行工程后,

11、点击虚拟机”Settings”第 24 页 共 50南京第五十五所技术开发2) 点击”Apps”第 25 页 共 50南京第五十五所技术开发3) 点击”Swift 云”第 26 页 共 50南京第五十五所技术开发4) 点击”Permissions”第 27 页 共 50南京第五十五所技术开发5) 把里面的权限全部打开第 28 页 共 50南京第五十五所技术开发第 29 页 共 50南京第五十五所技术开发2.4.主要功能从主界面看到,云网盘移动客户端的主要功能有:1)全部文件:展示所有文件列表和对文件的增删操作。2)文档:展示全部文件中的 doc、txt、pdf 等常规格式的电子文档。3)图片:

12、展示全部文件中的图片文件。4):展示全部文件中的文件。5)回收站:展示已经删除到回收站的文件。任务栏的主要操作有:切换导航、刷新文件列表、上传、新建文件夹、上传或拍照。3.云网盘 APP 架构3.1. 网盘需求说明使用 Openstack 的云Swift,构建网盘客户端 APP,实现常规的文件操作。常规的网盘功能包括登录、获取文件列表、分类、上传、新建、拍照上传、拍照识别、本地识别、移动、删除、还原、打开和查找等。功能需求列表如下:第 30 页 共 50编号功能项功能描述备注登录实现使用 OpenStack Swift 账户登录和认知, Swift 使用 OpenStack Keystone

13、服务。登录采用是账户名和。使用 OpenStack 提供的 Swift Restful 服务。2所有文件登录后,获取当前用户的所有文件列表,按照时间进行排序。使用 OpenStack 提供的 Swift Restful 服务。3文档所有文件中的文档格式的文件,包括doc、docx、pdf、txt、ppt、pptx、html 等。4图片所有文件中的图片格式的文件,包括jpg、gif、png、bpm、tiff 等。5所有文件中的格式的文件,包括avi、MP4、wmv 等。6新建文件夹在当前目录下,新建一个文件。使用 OpenStack 提供的 Swift Restful 服务。7上传文件选择卡上的

14、文件进行上传到当使用 OpenStack 提供的 Swift南京第五十五所技术开发以上一个完整的云网盘的功能,可以参考网盘和 360 网盘等。基本开发工程完成主体的工程设计,实现 OpenStack SDK 的封装,实现文件登录和获取文件列表,其他部分可以作为学生学习和提供来实现。3.2. 界面设计常规的网盘界面都类似。从流程上划分:设计一下主要的视图窗口:第 31 页 共 50前目录下Restful 服务。8拍照上传使用拍照,拍照的图片上传当前目录下。使用 的拍照功能。使用OpenStack 提供的 openstack java client。9拍照识别使 用 拍 照 , 拍 照 的 图 片

15、 使 用TensorFlow 技术识别,从所得结果中选中一个命名后上传当前目录使用 的拍照功能。使用OpenStack 提供的 openstack java client。使用 TensorFlow 的 recognizeImage。10本地识别选中本地 ,使用 TensorFlow 技术识别 ,从所得结果中选中一个命名后上传目录使用 OpenStack 提供的 Swift Restful 服 务 。 使 用TensorFlow的recognizeImage。9移动把一个文件(文件夹)移动到其他目录下使用 OpenStack 提供的 Swift Restful 服务。10一个文件(文件夹)到一

16、个目录下使用 OpenStack 提供的 Swift Restful 服务。11一个文件到本地使用 OpenStack 提供的 Swift Restful 服务。12删除删除一个文件(文件夹),删除后的文件(文件夹)移动到回收站中。使用 OpenStack 提供的 Swift Restful 服务。13还原回收站的还原到目录下,如果原目录存在或者原文件存在,提示不能还原或覆盖。使用 OpenStack 提供的 Swift Restful 服务。14打开不同格式的文件,启动 Android的支持应用,打开。15详情一个文件(夹)的详细情况,包括创建时间,目录等。16通过社交软件来实现功能南京第五

17、十五所技术开发1、 欢迎窗口:启动 APP,呈现欢迎页面,自动进入登录窗口。2、 登录窗口:进入登录窗口,用户输入账号,点击登录。3、 文件主窗口:通过一个窗口,完成所有文件的交互操作,包括导航区域,文件列表,菜单操作和列表文件项的操作。通过导航进行文件所有列表、文件类型过滤的查看,通过菜单实现常规的功能操作,通过列表点击(触屏点击、长按触屏)来实现单个文件(夹)得操作。导航区域划分了所有、文档、图片、和回收站分类。4、 文件打开窗口:点击一个文件,启动 Android 本地程序进行打开,比如打开一个文件。3.3. 客户端技术架构设计根据以上需求和界面原型,进行技术架构设计,架构图如下:第 3

18、2 页 共 50南京第五十五所技术开发1、 Swift 云云端服务:能够连接 OpenStack Swift 云,需要在 Android 端引入SDK,同样使用上面的 SDK 项目包(openstack-java-sdk)。目前 SDK 是成工程,直接引入项目包。实现的原理基于 HTTP 协议连接云Swift Restful 服务。同样使用 SKD 项目包中封装的 OpenStackClientService 进行异步网络操作。2、 登录:还原和登录各定义一个 Activity。Swift 账户管理使用 Keystone 完成,这里需要 Keystone 的SDK,openstack-java

19、-sdk 提供了对 OpenStack 各服务的接口,可以直接使用。3、 文件系统:目前 SDK 提供了对 Swift 云的操作,云不是一种文件系统(FileSystem),为了实现文件,基于 Swift 的 SDK 接口,封装模拟文件操作的类文件系统,命名为 OssFilesystem。4、 主界面:使用一个 Activity 来完成主界面,导航通过 NavigationView 控件实现、文件列表通过 Fragment 来实现。不同的分类操作不同,我们使用不同的 Fragment 实现,降低程序的复杂性。5、 所有文档:实现展示所有文件类别,采用 Fragment。6、 分类:实现文档、图

20、片、分类的文件列表,采用 Fragment。7、 回收站:实现回收站的文件列表,采用 Fragment。8、 文件上传:上传本地文件,实现一个本地文件导航选择窗口 Activity,完成文件选择和上传。9、 工具类,包括文件操作,处理本地缓存,一个文件打开时,需要本地。同时为了提供性能,对当前操作文件路径进行缓存,跟踪状态信息。本课程基于基础案例进行开发,基础案例的运行效果图如下。第 33 页 共 50南京第五十五所技术开发4. 工程说明4.1. 工程主要的类案例实现采用 Android 原生的组件,具体的实现方式不限,使用 SDK 满足需求功能即第 34 页 共 50南京第五十五所技术开发可

21、。以下对案例的主要实现类给出解释。1)MainActivity:主应用。2)LoginActivity:登录 Activity UI。3)WelcomeActivity:登录前的进入动画效果 UI。4)AppState:状态类,保存当前服务的租户、容器和对象的路径信息。5)TaskResult:保存每次同 Swift 服务交互返回的结果信息。6)MainFragment:所有文件的 ListFragment。7)CategoryFragment:所有类型文件的 ListFragment。8)ImageFrament:图片类型分类的 Fragment。9)VedioFragment:类型分类的

22、Fragment。10)GarbageFragment:回收站的 ListFragment。11)OpenStackClientService:Openstack的服务封装类。12)SFileEditable:toolbar 操作的接口13)TensorFlowImageClassifier:TensorFlow 实现方法的类4.2. SDK 说明SDK 采用 openstack-java-sdk 来云平台和云,文件位置:SwiftStorage/openstack-java-sdk,SDK 的接口都已经封装,封装类 OpenStackClientService 可直接使用。TensorFlo

23、w 自动识别功能采用 libandroid_tensorflow_inference_java.jar jar 包,该 jar 包是现成的,可直接使用。云swift 的管理结构按照“租户容器对象”进行管理,对象可以是目录,也文件。主要的接口说明如下。1)获取 OpenStackClientService 服务/*第 35 页 共 50南京第五十五所技术开发* return OpenStackClientService*/OpenStackClientService.getInstance();2)获取 Tenants/* return Tenant 的集合*/OpenStackClientSe

24、rvice.getInstance().getTenants3)获取 Swift 服务/* param tenantId 租户 ID* return swift 实例*/OpenStackClientService.getInstance().getSwift(StringtenantId)4)获取 Containers/* return Container 的集合*/OpenStackClientService.getInstance().getContainers5)创建 Container/* param containerName 容器名称* return Container*/Ope

25、nStackClientService.getInstance().createContainter(StringcontainerName第 36 页 共 50南京第五十五所技术开发);6)获取 Objects/* param containerName 容器名称* return Object 的集合*/OpenStackClientService.getInstance().getObjects(String containerName)7)文件/*param containerName 容器名称*param path 要的对象路径*return ObjectDownload卡本地路径*/

26、OpenStackClientService.getInstance().downloadObject(StringcontainerName,String path)8)上传文件、拍照、拍照识别上传、本地识别上传/*paramcontainerName容器名称。*paramis文件流。*paramcontentType文件类型。*paramobjPath上置。*return ObjectForUpload 上传的文件*/OpenStackClientService.getInstance().upload(String containerName,InputStream is,String

27、contentType, String objPath)9)删除 Object第 37 页 共 50南京第五十五所技术开发/* param containerName 容器名称* param path 所要删除的文件的路径*/OpenStackClientService.getInstance().delete(String containerName, String path)10) 移动 Object 到回收站/*paramcontainerName 容器名称*parampath 所要移至回收站的文件路径*paramtype 文件类型*/OpenStackClientService.get

28、Instance().recycle(String containerName, String path,String type)11) 从回收站还原 Object/*paramcontainerName 容器名称*parampath 所要还原文件的路径*paramtype 所要还原的文件的类型*/OpenStackClientService.getInstance().restore(String containerName, String path,String type)12)文件/* param srcPath原路径* param desPath目标路径第 38 页 共 50南京第五十

29、五所技术开发* param contentType 文件类型*/OpenStackClientService.getInstance(). copy (String containerName, StringsrcPath, String desPath, String contentType)13) 移动文件/*paramsrcPath原路径*paramdesPath目标路径*paramcontentType文件类型*/OpenStackClientService.getInstance(). move(String containerName, String srcPath,String

30、desPath, String contentType)14) 重命名文件/*重命名。*paramsrcPath原路径*paramdesPath目标路径*paramcontentType文件类型*/OpenStackClientService.getInstance().rename(StringcontainerName, StringsrcPath, String desPath, String contentType)15) 创建文件夹/* param containerName 当前容器* param path目录路径*/第 39 页 共 50南京第五十五所技术开发OpenStackC

31、lientService.getInstance().createDirectory(String containerName,String path)16)创建 TensorFlow 对象TensorFlowClassifier tensorflow = newTensorFlowClassifier();17)获取 TensorFlow 的 Classifier 对象/*paramassetManager 返回结果文件的位置*paramFilename 配置文件路径*paramlabelFilename 配置文件路径*paraminputSize 输入的图片大小*paramimageMea

32、n 图像值的假设均值*paramimageStd 图像值的假设 STD*paraminputName 输入的名字*paramoutputName 输出的名字*/TensorFlowImageClassifier.create(AssetManagerassetManager,String mFilename,String labelFilename,int inputSize,int imageMean,float imageStd,String inputName,String outputName)18)获取TensorFlow 识别结果/* param bitmap 图片内容*/Clas

33、sifier.recognizeImage(Bitmap bitmap)第 40 页 共 50南京第五十五所技术开发4.3. 登录 LoginActivity1.llllll2.3.配置 OpenStackClientService,包括: setKeystoneAuthUrl, 设置KeystoneAuth 的地址setKeystoneAdminAuthUrl, 设置 KeystoneAdminAuth 的地址setKeystoneEndpoint, 设置 KeystoneEndpoint 的地址setTenantName,设置 Tenant 名称setKeystonePassword,设置

34、KeystonesetKeystoneUsername,设置 Keystone 用户名获取 Tenant.获取后,设置当前选中的 Tenant获取 Container. 如果没有Container跳转到 MainActivity。Container则创建 Container. 获取后, 设置当前选中的4.第 41 页 共 50南京第五十五所技术开发4.4. 显示文件 MainActivityMainActivity 设计为 NavigationDrawer 类型的 Activity,主要包含下面几个 Fragment:lllllMainFragment,全部文件CategoryFragment

35、,按类型显示文件,包括文档,音乐GarbageFragment,回收站ImageFragment 图片分类Fragmetn分类文件以 ListView 形式展示,通过 SwipeRefreshLayout 形式刷新.第 42 页 共 50南京第五十五所技术开发主要功能:.5.6.通过获取 Objects,把 Objects 以 OSSFileSystem 形式保存,显示在 ListView到本地的,图片和显示缩略图单击文件,文件,并尝试打开文件单击文件夹,显示文件夹下的内容下拉列表,刷新当前目录文件列表点击右上角菜单按钮,弹出、移动、全选、全不选、上传、重命名、新建文件夹等功能第 43 页 共 50南京第五十五所技术开发5. 部分类说明5.1. OSSFile、OSSFileSystemOSSFile、OSSFileSystem 两个类是一个内置的文件系统类,是为了把获取的对象集合转换成文件系统形式,方便操作部分函数说明:1)readFromObjects(Objec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论