IDE环境:AndroidStudio

源码及论文下载:http://www.byamd.xyz/tag/android/

APP演示:

摘要

5G网络就快到来了,4G网络已经基本上覆盖了,便捷的网络环境为安卓手机添加更多的精彩丰富的内容提供了良好的平台和基础。目前安卓开发正对我们的生活造成巨大的影响,我们的生活已经离不开如微信、QQ、微博等应用。 这些应用极大的便利了我们的生活,为我们的工作生活带来了很多的乐趣,丰富和充实了我们的生活。该系统是正是利用Android开源平台开发的一款娱乐APP,叫做知心App,利用当今主流的编程语言Java进行代码的编写,利用Google最新开发的Android Studio为开发工具,通过了解安卓平台的系统架构和应用程序开发流程,最终成功开发出了该款应用。该款应用主要包括了人脸识别登录、网易新闻、欧酷天气、图灵机器人、作者个人信息、应用更新等模块。此款应用采用了ButterKnife依赖注入技术、Gson数据解析框架、OkHttp网络处理框架、科大讯飞语音识别技术、图灵机器人技术、一登刷脸登录技术、Bmob登录注册技术、蒲公英应用发布以及自动更新等技术。此款应用严格按照软件开发标准流程进行设计与开发,代码结构清晰,用户体验较好。

**关键词:**Android;Android Studio;人脸识别;语音识别;图灵机器人

Abstract

5G network is coming soon, 4G network has basicallycovered, convenient network environment for Android phones to add morewonderful rich content provides a good platform and foundation. At present,Android development is having a huge impact on our lives, our lives have beeninseparable from applications such as wechat, QQ, microblogging. Theseapplications greatly facilitate our lives, bring a lot of fun to our work life,enrich and enrich our lives. This system is just an entertainment app developedby using Android open source platform, called bosom app. it is successfullydeveloped by using Java, the mainstream programming language, and Androidstudio, which is newly developed by Google, as a development tool, throughunderstanding the system architecture and application development process ofAndroid platform. This application mainly includes face recognition login,Netease news, cool weather, turing robot, author’s personal information,application updates and other modules. This application uses button knifedependency injection technology, gson data analysis framework, ok http networkprocessing framework, hkust xunfei speech recognition technology, turing robottechnology, a brush face registration technology, bmob registration technology,dandelion application release and automatic update technology. This applicationis designed and developed in strict accordance with the standard process ofsoftware development, with clear code structure and good user experience.

Key Words: Android; Android Studio;Face Recognition; Speech Recognition; Turing Robot;

第1章 绪论

1.1 课题背景

目前市场上主流的手机操作系统有两种,那就是Android和IOS。Android系统是谷歌开发的并且最重要的是开放源代码,而IOS则是苹果公司研发的,不开放源代码。就当今用户使用手机情况来看,安卓手机占据大约60%的手机市场,而苹果手机大约占30%的市场。全世界的企业大部分还是中小企业,经济能力有限,因此大部分厂商还是喜欢用开源免费的。因此,我的这个应用就是基于Android平台开发的。想必大家都用过智能手机,也用过普通的手机软件,早在五年之前安卓市场非常火爆,但是当时的软件还是非常的普通,完全不具备现在的人工智能与大数据技术。现在的应用都在慢慢的被大数据与人工智能技术所熏陶,比如说微博、微信等应用,各种个性化推荐信息、智能提示非常方便用户使用。

目前处于人工智能和大数据飞速发展的时代,为了让用户体会到大数据与人工智能的魅力,感受新时代的气息,我在应用中添加了人脸识别和图灵机器人以及语音识别等功能模块。目前提供人脸识别服务的平台比较多,想百度AI平台,阿里云平台,腾讯云平台,Face++,一登等。但是从个人选择上来讲,一登接入比其他的平台简单,并且是免费的。智能聊天机器人采用图灵公司开发的新一代的机器人。语音识别功能采用的是科大讯飞的语音识别技术,相对来说科大讯飞的语音技术在国内应该是顶尖的。这些是具有人工智能功能的应用是传统的应用所无法替代的,因此为了适应时代发展的潮流,我在普通应用的基础之上有了自己的创新。利用最新的Android开发技术结合人工智能技术开发具有良好用户体验以及更加智能的安卓应用。

1.1.1 人工智能

人工智能技术简称AI,它的研究主要是便于机器模拟人的思维,能够像人一样思考,最终利用机器人更好地为人类服务。

1.1.2 大数据

大数据技术,它的研究主要是为了处理当今社会生活中产生的大批量的数据。目前主流的大数据平台有Hadoop和Spark。Hadoop平台主要是支持大批量数据的离线处理,而Spark平台主要是基于内存的高速实时数据流处理。两者在性能上有较大的差距,Spark的处理速度大约是Hadoop的10倍。当然两者分别具有各自的特色,适用于不同的应用场景。

1.2 目的意义

目前正处在人工智能和大数据的时代,为了让用户感受到人工智能的存在,我在应用中添加了人脸识别和图灵机器人以及语音识别等功能模块。这些是传统的应用所不具备的功能,因此我在其基础之上有了自己的创新,让应用更加智能话。具有良好的用户体验是衡量一个安卓应用品质的很重要的标准。只有拥有良好的用户体验的应用才能长期生存下去。新的时代需要不断创新,要把最新的技术运用到Android应用之上,让App具有新意,更加符合人们的使用需求。因此,我设计了这款App帮助用户更好的体验智能化的生活。

1.3 论文主要工作

目前正是人工智能和大数据技术火热的时候,为了在让传统的安卓应用具有新时代的特点,我在本次开发中加入了一些人工智能的元素,希望能给用户带来全新的用户体验。

本课题的主要开发流程包括需求分析、概念设计、详细设计、编码测试、应用上线。需求分析阶段主要采用市场调研和问卷调查两种方式。概念设计阶段主要是总体结构设计,采用MVP三层架构技术。其中详细设计阶段主要设计应用的各个功能模块,如引导页模块、登录注册模块、网易新闻模块、图灵机器人模块、开发者个人信息模块、应用更新等模块。编码实现阶段采用Java语言开发,运用AndroidStudio开发工具进行开发。后期的编码测试采用真机测试,记录日志信息,修复Bug。应用开发完成后,进行应用打包,最后发布到蒲公英应用发布平台。

第2章 相关技术和理论基础

2.1 技术与理论基础

在此应用中主要用到了ButterKnife依赖注入框架、Gson数据解析框架、OkHttp网络处理框架。

2.1.1 ButterKnife依赖注入框架

1.ButterKnife概念

Annotate fields with @BindView and a view ID for ButterKnife to find and automatically cast the corresponding view in your layout.

2.项目配置

在AndroidStudio Module中的build.gradle中添加以下依赖:

  • compile’com.jakewharton:butterknife:8.8.1’
  • annotationProcessor’com.jakewharton:butterknife-compiler:8.8.1’

3.示例代码

2.1.2 Gson框架

1.Gson概念

Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。

2.项目配置

在AndroidStudioModule中的build.gradle中添加以下依赖:

  • compile’com.google.code.gson:gson:2.8.2’

2.1.3 OkHttp网络框架

1.OkHttp概念

AnHTTP & HTTP/2 client for Android and Java applications.

2.项目配置

在AndroidStudio Module中的build.gradle中添加以下依赖:

  • compile ‘com.squareup.okhttp3:okhttp:3.10.0’

3.示例代码

2.2 技术与理论基础

在此应用中主要用科大讯飞语音识别技术、图灵机器人技术、一登刷脸登录技术、Bmob登录注册技术、蒲公英应用发布以及更新、GitHub项目管理等技术。

2.2.1 科大讯飞语音识别与图灵机器人

  • 语音识别的概念

    语音识别包括听写、语法识别功能。语音识别技术就是把人说的话转换成相应的文本数据。语法识别是基于语法规则,将与语法一致的自然语言音频转换为文本输出的技术。

  • 科大讯飞开发者文档:http://doc.xfyun/msc_android/index.html

  • 图灵机器人的概念

    图灵机器人是图灵公司开发一款机器人,具备与人交流的能力,可以和人进行简单的对话。主要应用领域是聊天机器人、客服机器人和服务机器人。

  • 图灵机器人开发者文档:https://www.kancloud/turing/web_api/522992

2.2.2 Bmob后端服务平台以及蒲公英应用平台

  • Bmob后端服务平台Android开发者文档:http://doc.bmob/data/android
  • 蒲公英开发者文档:http://www.pgyer/doc/view/sdk_android_guide

2.2.3 GitHub项目管理工具

  • GitHub网址:https://github
  • Git 常用命令
    • git init //初始化项目
    • git status //查看项目状态
    • git add //添加文件到 git 追踪列表里
    • git commit //提交到本地仓库
    • git log //提交记录
    • git clone //复制项目到本地
    • git branch //查看或者创建分支
      • git branch net //创建net分支
      • git branch -d net //删除分支
    • git checkout //签出一个分支或者一个路径,在开发中常用于分支切换和恢复文件
      • git checkout net //切换net分支:
      • git checkout — SayHello.java //恢复文件
    • git merge //合并分支
      • git merge net //合并net分支
    • git tag //列出项目的标签和创建项目的标签
      • git tag -a v1.0 -m “这里写相关信息” //为版本打一个标签
      • git show 标签名 //来查看该分支的具体信息
    • git help //帮助
    • git push //推送
      • git push 仓库名 分支名
      • git push origin master:master 或git push origin master //本地master分支提交到origin的master分支,分支相同的可简写
    • git push origin :net //删除origin仓库的net分支
    • git pull //更新最新的代码
    • git ignore //忽略文件
    • fork //远程复制别人的仓库到自己的仓库

示例代码

第3章 系统分析(需求分析)

3.1 功能需求分析

随着大数据、人工智能的迅速发展,我们的生活变得越来越便利。传统的应用只能通过账号密码来登录,用户体验不是太好。而如今的App变得越来越智能化了,比如支付宝、淘宝、微信等。支付宝现在正运用最先进的大数据与人工智能技术开启了刷脸登录与刷脸支付的时代。为了让App具有新时代的特点,不得不运用大数据与人工智能的技术,这也是未来发展的趋势。经过市场的调查,发现当前大部分的应用还是不具备新时代的特点,因此我觉得我这个项目是符合市场需求的。

3.1.1 用户需求分析

此软件要求能够运行在Android 5.0以上的系统终端上,相对来说使用群体还是占据很大一部分,但是用户对软件也有一定的要求:

  • 简单易学
  • 运行稳定
  • 操作简单

3.1.2 功能需求分析

本项目应当具有以下功能:

  • 应用引导页、欢迎页
  • 账号密码登录、注册
  • 刷脸登录
  • 网易新闻
  • 图灵机器人
  • 欧酷天气
  • 开发者个人信息
  • 应用更新
  • 应用打包发布

3.2 非功能需求分析

  • 开发环境为Android Studio
  • 要求系统响应不超过3秒
  • 要求应用兼容Android 5.0以上的主流手机平台
  • 多渠道打包

3.3 可行性分析

3.3.1 经济可行性

本软件基于开源的Android系统开发,采用Android Studio免费软件进行开发,运用第三方平台提供的免费服务实现特定功能,开发成本相对较低。

3.3.2 技术可行性

Windows版本Windows 10 家庭版64位
Android Studio版本3.1.1
Android编译SDK版本26
Android测试版本华为荣耀青春版(Android7.0)
Gradle版本4.4
Maven版本3.5.3
Git版本2.16.2

本软件基于开源的Android系统开发,使用主流的编程语言Java进行编码,因此该软件在技术上可行。

3.3.3 操作可行性

该软件采用主流的Android软件应用开发风格,并使用Google 全新的设计语言Material Design,界面友好,简单易懂,为用户带来全新的视觉体验。

第4章 系统设计

4.1 总体设计

系统结构图

MVP架构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1MuLDFB4-1612539913130)(E:%5C%E8%AE%BA%E6%96%87%5Cimages%5Cwps23-1612492233981.jpg)]

4.1.1 功能模块图

该软件的功能模块图如下

4.1.2 用例图

4.1.3 数据流图

4.2 详细设计

  • 对于引导页模块,采用图片滑动形式,引导用户了解如何使用该软件以及相关的功能
  • 对于登录模块,采用两种登录方式:账号密码登录和刷脸登录。账号密码登录的话采用Bmob后端云数据库实现,刷脸登录采用的是一登刷脸服务
  • 对于注册模块,同样采用的是Bomb后端云数据库
  • 对于网易新闻模块,采用的是网易新闻的接口
  • 对于欧酷天气模块,采用的是天气预报的接口
  • 对于图灵机器人模块,采用的图灵智能机器人的接口
  • 对于开发者个人信息模块,采用列表显示出来
  • 对于应用更新模块,采用蒲公英应用发布平台的App更新技术

4.2.1 登录注册模块

登录模块处理逻辑如下:

  • 用户输入账号密码进行登录
  • 通过回调函数获取登录返回结果
  • 根据返回结果判断登陆是否成功,若登录成功则显示用户信息,否则提示登录失败
  • 登陆成功将用户的姓名和电话显示出来

注册模块处理逻辑如下:

  • 用户输入账号密码进行注册
  • 通过回调函数获取注册返回结果
  • 根据注册返回结果判断是否注册成功,若注册成功则返回登录页面,否则提示注册失败

4.2.2 网易新闻模块

网易新闻模块处理逻辑如下:

  • 通过天气接口的URL获取返回的JSON数据
  • 将JSON数据转换为News对象
  • 将数据显示在页面上

4.2.3 图灵机器人模块

图灵机器人模块的处理逻辑如下:

  • 将语音数据转换为文本数据
  • 通过图灵接口的URL获取返回的JSON数据
  • 将JSON数据转换为TalkBean对象
  • 获取对象中的内容,再将其转换为语音输出

4.2.4 欧酷天气模块

欧酷天气模块处理逻辑如下:

  • 通过城市URL获取城市JSON数据
  • 将JSON数据转换为城市对象
  • 通过天气URL获取天气JSON数据
  • 将天气JSON数据转换为天气对象
  • 在页面显示天气信息

4.2.5 引导页、欢迎页模块

引导页、欢迎页模块处理逻辑如下:

  • 判断应用是不是第一次打开
  • 判断本地数据库是否有记录,若是第一次打开的话则显示引导页,并将记录写到本地数据库
  • 否则直接进入欢迎页

4.2.6 开发者详情模块

开发者详情模块处理逻辑如下:

  • 直接加载布局文件的内容显示出来

4.2.7 应用更新模块

应用更新模块的处理逻辑如下:

  • 点击检测更新按钮
  • 系统比较本地版本和服务器上的版本
  • 若本地版本等于服务器版本,则提示用户“您的应用已是最新版本!”
  • 若本地版本低于服务器版本,则提示用户“检测到新版本,是否更新?”
  • 若用户点击“取消”,则退出更新
  • 若用户点击“确定”,则后台服务自动下载应用更新包
  • 下载完成后,系统提示用户是否立即安装
  • 若用户点击“取消”,则退出安装程序
  • 若用户点击“确定”,则等待安装完成

第5章 系统实现与测试

5.1 系统实现

该项目主要包含引导页模块、登录注册模块、网易新闻模块、图灵机器人模块、开发者个人信息模块、应用更新等模块。各个模块的设计与实现如下:

5.1.1 登录、注册模块实现

登录模块流程图如下:

登录模块主要代码如下:

注册模块流程图如下:

注册模块代码如下:

5.1.2 图灵机器人模块实现

图灵机器人流程图如下:

图灵机器人实现代码如下:

语音识别函数

语音合成函数

语音处理适配器类

语音处理适配器类(续)

5.1.3 网易新闻模块实现

网易新闻模块流程图如下:

网易新闻模块主要代码实现

5.2 系统测试

该系统为安卓项目,测试采用华为荣耀8真机,安卓系统版本为7.0。主要包括账号登录、刷脸登录、注册、语音对话、获取新闻信息、获取城市信息、获取天气详细信息、开发者个人信息展示、应用更新等功能的测试。

5.2.1 登录注册功能测试

账号登录测试

  • 测试账号:187xxxx9552
  • 测试密码:1234
  • 测试截图如下:

刷脸登录测试

5.2.2 图灵机器人、网易新闻模块测试

图灵机器人对话测试

网易新闻测试效果图

5.2.3 欧酷天气模块测试

欧酷天气城市列表测试效果图

第6章 总结和展望

6.1 本文总结

这个项目大概花了一个多月的时间才弄完的,查阅各种资料,虽然中途出现了各种问题,但是最终收获还是很多的。刚开始做这个项目的时候,搭建各种环境花费了一番功夫,好在之前自学了一段时间的安卓,最后顺利把环境搭建好了。这个项目主要包含了账号密码登录、刷脸登录、账号密码注册、网易新闻、图灵机器人、欧酷天气、开发者详情、应用更新等模块。其中涉及到的技术主要有ButterKnife注解、Gson数据解析、OkHttp网络处理、Bmob后端云数据库、一登人脸识别、图灵机器人、科大讯飞语音识别、蒲公英应用发布与自动更新。在上学期学的安卓知识终于派上用场了,这次的项目总体来说还是不错的,加入了新时代的元素,比如说人工智能和大数据。人工智能和大数据是目前最火的技术,代表了未来发展的趋势,因此我在项目里加入了这些元素。项目开发一个很重要的问题就是规范,开发必须要按照标准的流程来,制定相应的代码规范,这样才能有效地减少开发人员的代码修改。在这次开发中,我引进了项目源代码管理仓库GitHub,将开发过程记录到其中了。GitHub是一个团队开发利器,可以方便的进行代码管理和并行开发,有效减少了代码之间的复制。在开发这个项目的时候遇到了一些比较莫名其妙的问题,有一些是依赖包的版本问题,还有一些是android系统版本的问题。我到现在也还没有把安卓手机兼容性问题解决掉,这个问题有点棘手,市场上的手机种类太多了。在刚开发安卓项目的时候,只知道去百度找资料,那时候还不会翻墙,不知道去谷歌搜索。后来学会了翻墙技术,就可以去谷歌查找更加专业的资料了,身为一个程序员只会百度的话那也太低级了。在遇到问题的时候,先去查看运行输出的错误日志,然后根据错误信息分析错误原因在哪里,最后才百度或者谷歌看看别人如何解决的。在这次项目开发中,发现自己还有许多不足之处,希望在日后不断学习,能够有所改善。本次项目依然存在许多不足之处,比如说程序安全性和健壮性不够,操作界面不够美观,功能不够完善,代码结构不够清晰。希望在以后的工作中能够做得更好。

6.1.1 项目管理总结

项目管理工具目前主流的是SVN和GitHub,个人推荐还是GitHub比较好用。

6.1.2 项目中遇到问题如何解决

遇到问题,首先分析错误日志,然后分析错误的可能原因,最后看书或者去网上搜索找到解决方案。

6.1.3 如何获取开发方面的优质资源

推荐几个学习网站:StackOverFlow,掘金,简书,慕课,网易云课堂。

6.2 未来展望

希望在以后的学习中能够学会更多的技术,比如目前流行的大数据与人工智能技术。利用大数据技术与人工智能技术让移动应用更加智能化,更加便利我们的生活。本系统还存在许多不足之处,比如说功能方面还可以更加完善,性能上还有待提高,由于时间关系,来不及全部完成。

6.2.1 可添加的功能

  • 根据定位自动获取并显示天气信息
  • 利用QQ、微信或者其他第三方平台登录
  • 添加好友聊天功能
  • 语音唤醒机器人
  • 百度地图定位当前位置
  • 二维码识别、生成
  • 文本、图片识别

6.2.2 解决兼容性问题

由于Android系统版本较多,不同的手机获取资源对应的包不同,以及不同手机尺寸的不同,所以会出现部分手机闪退现象。希望在以后学习更多的知识后能够解决这个问题。

参考文献

[1]李刚. 疯狂 Android 讲义[M]. 北京:电子工业出版社,2013:25-42.

[2]杨丰盛. Android 技术内幕[M]. 北京: 机械工业出版社,2011:77-89.

[3]杨云君. Android 的设计与实现[M]. 北京:机械工业出版社,2013:45-49.

[4]柯元旦. Android 内核剖析[M]. 北京:电子工业出版社,2011:59-70.

[5]丰生强. Android 软件安全与逆向分析[M]. 北京:人民邮电出版社,2013:78-90.

[6]余成锋,李代平,毛永华. Android3.0 内存管理机制分析[M]. 计算机应用与软件,2013:55-80.

[7]佐冰冰. Android 平台下 Launcher 启动器的设计与实现[D]. 哈尔滨工业大学,2012:108-150.

[8]杜吉志,徐明昆. Android 系统内存管理研究及优化[J]. 软件,2012,24(5):69-80.

[9]马越. Android 的架构与应用[D]. 北京:中国地质大学,2008:330-357.

[10]姚昱旻,刘卫国. Android 的架构与应用开发研究[J]. 计算机系统应用,2008,77(11):99-111.

[11]高巍. Android 操作系统软件自动化测试方案的设计与实施[D]. 北京:北京邮电大学,2012:440-479.

[12]孙剑. Android 系统上应用程序按需加载机制的设计与实现[M]. 北京大学,2011:99-110.

[13]卢娜. 基于 Android 平台的手机桌面资讯系统的设计与实现[M]. 西安电子科技大学,2011:290-300.

[14]高焕堂. Google Android 应用框架原理与程序设计 36 计[M].Misoo,2010:8-13.

[15]钟茂生,王明文. 软件设计模式及其使用[J].计算机应用,2002,22(8):32-33.

[16] Gartner November Report[EB/OL].http://www.gartner/newsroom/id/2482816, 2013

[17] B. John. A binary analysis ofresultatives[C]. In Proceedings of Texas Linguistics Society Conference (TLSC),Stanford, California, USA, 1997, 43-58

更多推荐

基于Android开发的聊天机器人新闻天气社交APP