支持百度云的Android计账应用的开发
支持百度云的Android计账应用的开发[20191207150342]
摘 要
随着生活水平的提高,人们越来越重视理财。而对于普通工薪阶层以及学生等人群来说,没有高回报的投资项目以及复杂的基金支持,于是理财的关键便是对于已有现金流的掌控即所谓“开源节流”。那么记账便成了关键的一个理财环节,本项目便是从生活角度出发的一款基于开放云技术的Android手机记账软件。
本应用采用Java语言编写,使用Android的SDK进行开发,备份方面可以导出到SD卡以及备份到百度PCS服务器上。在Android组件模式的支持下,各个功能模块相对独立,开发逻辑相对清晰。数据库为轻量级数据库SQLite,基于Android自带的SQLite C++类库,操作简单。开发IDE采用的是Google Android开发官网上提供的ADT-Bundle Eclipse套件。使用最近流行的Genymotion模拟器以及真机测试。结果表明,本应用的使用简单方便,流程人性化,适合作为日常生活使用的理财工具,具有较好的使用价值。
关键字:软件开发记帐应用Android百度云SQLite
目 录
1 引言 1
1.1课题背景和项目动因 1
1.2研究方法和内容 2
1.3篇章结构 3
2 Android技术背景 4
2.1 Android架构 4
2.2 Android本地应用开发 5
2.2.1 Android应用层开发 5
2.2.2 Android底层开发 5
2.3 Android 数据存储 6
3 百度开放云API的使用 8
3.1 百度OAuth 8
3.1.1 创建应用 8
3.1.2 获取授权 9
3.2 个人云存储(PCS) 10
3.2.1 概述 10
3.2.2 百度PCS Android SDK 10
4 系统需求和分析 12
4.1可行性分析 12
4.1.1经济可行性 12
4.1.2社会因素的考虑 12
4.2功能需求 12
4.2.1账本管理 13
4.2.2类别管理 13
4.2.3人员管理 13
4.2.4查询消费 14
4.2.5记录消费 14
4.2.6统计消费 14
4.2.7备份还原功能 14
5 系统设计 15
5.1系统架构 15
5.2系统类设计 16
5.2.1账本管理功能类 16
5.2.2类别管理功能类 17
5.2.3人员管理功能类 18
5.2.4记录消费功能类 19
5.2.5查询消费功能类 20
5.2.6统计消费功能类 21
5.2.7备份还原功能类 22
5.3数据库设计 23
5.3.1实体类设计 23
5.3.2逻辑类设计 25
5.3.3服务端设计 25
6 系统实现 27
6.1 开发环境 27
6.1.1 开发平台 27
6.1.2 运行平台 27
6.1.3 Genymotion模拟器 27
6.2 类的具体实现 28
6.2.1 界面组件类 28
6.2.2 业务类 29
6.2.3 数据库操作类 29
6.2.4 数据库帮助类 31
6.3 关键代码 31
6.3.1 自定义菜单控件 31
6.3.2 正则验证 32
6.3.3 备份还原 33
6.4界面设计 34
6.4.1界面布局 34
6.4.2资源适配 36
6.5运行演示 36
6.5.1账本管理 36
6.5.2类别管理 37
6.5.3人员管理 38
6.5.4查询消费 38
6.5.5记录消费 38
6.5.6统计消费 39
6.5.7备份还原功能 40
结语 41
参考文献 43
致谢 44
1 引言
近几年随着社会发展,智能手机成了人们生活中的必需品,目前已有许多软件制造商在智能平台部署手机应用,来代替其他平台的各项业务。智能手机能够处理与生活息息相关的各种业务,体验甚至比网站或者PC应用更加优秀。
到2014年为止,Google Play官方应用商店的应用已经超过100万个,音乐、视频及图书服务也在不断增强。目前的Android应用已经超过了iOS平台,几乎涵盖了所有方面,包括聊天通讯、生活购物、娱乐办公等各个方面[1]。
1.1课题背景和项目动因
对于生活中非常重要的理财应用,市场上也有不少,比如记账软件。在我初步调研的时候也试用几款不同公司以及个人开发的应用。在如今成熟的平台和开发技术下,商业应用的体验还是非常不错的,如杭州财米科技有限公司出品的“挖财记账理财”,还有国外的“Financius”等。
从个人体验来看许多记账软件虽然功能相当强大,但某种程度上却是偏离了原来的初衷,加入许多模块,对于一些用户来说确实是不需要的。比如“挖财”的基金,以及略显累赘的推送等。所以在开发本项目时,我的目标是减少对于用户的打扰,力求让应用更加简洁,不加入繁杂而无用的功能。
而“Financiu”则是国外个人开发者的作品,免费且简洁,也没有广告,是不可多得的优秀产品。只是其同步功能仅支持Google用户,对于Google大部分业务已经退出了的大陆用户来说,并不是那么方便。这也让我想到了使用百度的开放云作为服务端同步数据。由于日常条件下,智能手机并不能时刻保证像家庭用户那样稳定的网络环境,所以稳定的服务器端还是很有必要的。
总结市面上的记账软件,都是以余额为标准,只关心总体的结余情况,并且需要和真实账户严格同步。个人感觉这对于日常生活来说并不是一种非常完善的记账体系。原因如下:
(1) 由于作者本人也有记账习惯,所以在智能手机普及的情况下,也寻求过在手机上记账的应用。以余额为标准的记账软件看似美好。实际上使用的时候非常不人性。即使是一笔非常小的支出,都必须一一记录,否则会导致虚拟账目和实际账本对不上,所以需要每天花费一定时间去整理账目,这是非常费时费力的。
(2) 这种方式和个人的理财理念相违背,记账的目的并不在于知晓每日甚至每时每刻的具体消费情况,而是想统计每个周期的现金流水平。而采用结余的方式不利于计划,只知晓账户余额却不平衡每个月的收入支出比例,就没有办法更好地去对自己的财务进行计划,而那些详细的账目也会变成没有任何意义的流水账。
由此可见在现在Android平台已经拥有大量应用的前提下,并不影响特定用户对特定应用的需求。开发一个界面简洁,让用户更加专注于记账,并且能在网络流畅的情况下实现简单同步的记账软件还是很有必要的。
总结以上背景及原因,本项目需要达到如下要求:
(1) 功能完善,简洁易用。在满足用户需求的情况下,能够让用户更加直观地进行使用。
(2) 以记录每个月现金流水平为目的,能够让用户更好计划每个周期的收入支出。
(3) 使用国内的百度云来实现备份和恢复,在网络条件流畅的情况下,百度云的性能要优于国内外的相关服务。
1.2研究方法和内容
本课题目的是设计开发一款基于Android 系统的手机记账软件,用以记录人们在日常生活中的开支,以便有效的监控每个月的现金流健康状况。方法如下:
(1) 根据自己在现实生活中的记账经验,以及应用使用习惯,来设计更便于使用的界面。通过借鉴当下热门应用的开发风格以及配色来提高应用界面的美感。
(2) 虽然当前手机的硬件已经远远超过塞班时代,达到了很高的水平,但由于手机硬件产商并没有一个统一的规范,导致Android手机应用的适配变成一个令很多开发者都头疼的问题。特别是对于屏幕分辨率的适配,需要通过模拟器以及真机不断的调试,力求达到一个兼容的水平。
(3) 在开发过程中不仅仅需要注意屏幕适配问题,还需要时刻关注Android提供的各个不同版本的兼容性,需要关注最新的解决方案,从社区获取最新的开发动态,让应用更加适合当前市场。
(4) 在开发过程中,由于个人精力有限,要不断部署并测试是非常困难的。每个功能模块都需要经过日常使用的考验,需要做好各个版本的备份,以及复杂代码的注释,以便后期修改。
基于以上方法,课题的研究内容如下:
本课题的研究任务是利用Android官网提供的Eclipse + ADT plugin套件进行开发,主要以Java语言为主,通过Google提供的各个Android SDK以及第三方相关工具进行开发。目的是完成一款能够在Android平台手机上流畅运行的记账应用软件,在开发过程中不断进步提高并最终掌握独立开发商业Android手机应用。
技术方面,数据存储采用Android自带的轻量级数据库SQLite进行开发,在Android应用的开发基础上,采用类似MVC的结构来分离视图、业务以及数据库存储。而服务器同步则通过申请百度的开放云API权限进行开发,无需自己搭建服务器,更加便捷、稳定。
应用方面,用户可以在手机平台进行人员管理,账本管理,记录消费,查询消费,统计管理和类别管理等操作。用户可以方便快捷地记录生活中支出和收入。并且提供详细的查询功能,可以很好的了解每个月的详细账单。通过这样,用户就能很好的控制日常生活中的消费情况,达到开源节流的目的。
1.3篇章结构
本论文正文部分围绕以下结构展开:
第二章分析Android架构,重点介绍了Android平台的运行机制,还有核心框架。
第三章介绍百度开放云API的使用。
第四章对系统的需求以及可行性进行分析,以及系统主要功能的分析。
第五章介绍系统的设计,包括类设计以及数据库设计。
第六章介绍系统的开发环境以及类的具体实现,还有一些部分关键代码及演示。
最后对本文的工作进行了总结。2 Android技术背景
2.1 Android架构
Android是一个用于移动设备上的,搭建在Linux内核之上的操作系统。是一个用于移动设备上的包含操作系统、一系列中间件、以及部分关键应用的软件栈。Android Developer网站提供了在Android平台上使用Java编程语言开发应用程序所必须的工具和API [2]。
图2-1 Android系统架构图
Android架构由上至下分四层,如图2-1。简要描述如下:
应用层:包括由系统默认提供了的桌面、联系人、通话、浏览器等基础应用,大部分开发者开发的或者基于系统扩展的应用也运行在这一层,通过系统服务管理。
应用框架层:应用开发基本的API,提供包括组件管理、窗口管理、资源管理以及安装包管理等一系列系统服务。框架层集中体现了Android系统的设计思想,是Android系统中最核心的部分。
库:核心类库由一系列的二进制动态库共同构成。Android为了提高框架层的执行效率,使用C/C++来实现它的一些性能关键模块: OpenGL 3D绘图,安全套接层,提供SGL底层2D绘图引擎,嵌入式标准C库,浏览器核心Webkit,FreeType字体,媒体框架,用户空间显示管理,以及轻量级SQLite关系型数据库。
Dalvik虚拟机:Dalvik是为Android量身打造的Java虚拟机,负责动态解析执行应用、分配空间、管理对象生命周期等工作。
硬件抽象层(Hardware Abstract Layer,HAL),是Android为厂商定义的一套接口标准,它为框架层提供接口支持,厂商需要根据定义的接口实现相应功能。[3]
Linux 内核:Android整个操作系统基于Linux内核,内核提供Wi-Fi、照相、显示、软键盘、闪存、音频等驱动程序,提供对进程间通信机制Binder的驱动,提供电源管理服务。
2.2 Android本地应用开发
摘 要
随着生活水平的提高,人们越来越重视理财。而对于普通工薪阶层以及学生等人群来说,没有高回报的投资项目以及复杂的基金支持,于是理财的关键便是对于已有现金流的掌控即所谓“开源节流”。那么记账便成了关键的一个理财环节,本项目便是从生活角度出发的一款基于开放云技术的Android手机记账软件。
本应用采用Java语言编写,使用Android的SDK进行开发,备份方面可以导出到SD卡以及备份到百度PCS服务器上。在Android组件模式的支持下,各个功能模块相对独立,开发逻辑相对清晰。数据库为轻量级数据库SQLite,基于Android自带的SQLite C++类库,操作简单。开发IDE采用的是Google Android开发官网上提供的ADT-Bundle Eclipse套件。使用最近流行的Genymotion模拟器以及真机测试。结果表明,本应用的使用简单方便,流程人性化,适合作为日常生活使用的理财工具,具有较好的使用价值。
关键字:软件开发记帐应用Android百度云SQLite
目 录
1 引言 1
1.1课题背景和项目动因 1
1.2研究方法和内容 2
1.3篇章结构 3
2 Android技术背景 4
2.1 Android架构 4
2.2 Android本地应用开发 5
2.2.1 Android应用层开发 5
2.2.2 Android底层开发 5
2.3 Android 数据存储 6
3 百度开放云API的使用 8
3.1 百度OAuth 8
3.1.1 创建应用 8
3.1.2 获取授权 9
3.2 个人云存储(PCS) 10
3.2.1 概述 10
3.2.2 百度PCS Android SDK 10
4 系统需求和分析 12
4.1可行性分析 12
4.1.1经济可行性 12
4.1.2社会因素的考虑 12
4.2功能需求 12
4.2.1账本管理 13
4.2.2类别管理 13
4.2.3人员管理 13
4.2.4查询消费 14
4.2.5记录消费 14
4.2.6统计消费 14
4.2.7备份还原功能 14
5 系统设计 15
5.1系统架构 15
5.2系统类设计 16
5.2.1账本管理功能类 16
5.2.2类别管理功能类 17
5.2.3人员管理功能类 18
5.2.4记录消费功能类 19
5.2.5查询消费功能类 20
5.2.6统计消费功能类 21
5.2.7备份还原功能类 22
5.3数据库设计 23
5.3.1实体类设计 23
5.3.2逻辑类设计 25
5.3.3服务端设计 25
6 系统实现 27
6.1 开发环境 27
6.1.1 开发平台 27
6.1.2 运行平台 27
6.1.3 Genymotion模拟器 27
6.2 类的具体实现 28
6.2.1 界面组件类 28
6.2.2 业务类 29
6.2.3 数据库操作类 29
6.2.4 数据库帮助类 31
6.3 关键代码 31
6.3.1 自定义菜单控件 31
6.3.2 正则验证 32
6.3.3 备份还原 33
6.4界面设计 34
6.4.1界面布局 34
6.4.2资源适配 36
6.5运行演示 36
6.5.1账本管理 36
6.5.2类别管理 37
6.5.3人员管理 38
6.5.4查询消费 38
6.5.5记录消费 38
6.5.6统计消费 39
6.5.7备份还原功能 40
结语 41
参考文献 43
致谢 44
1 引言
近几年随着社会发展,智能手机成了人们生活中的必需品,目前已有许多软件制造商在智能平台部署手机应用,来代替其他平台的各项业务。智能手机能够处理与生活息息相关的各种业务,体验甚至比网站或者PC应用更加优秀。
到2014年为止,Google Play官方应用商店的应用已经超过100万个,音乐、视频及图书服务也在不断增强。目前的Android应用已经超过了iOS平台,几乎涵盖了所有方面,包括聊天通讯、生活购物、娱乐办公等各个方面[1]。
1.1课题背景和项目动因
对于生活中非常重要的理财应用,市场上也有不少,比如记账软件。在我初步调研的时候也试用几款不同公司以及个人开发的应用。在如今成熟的平台和开发技术下,商业应用的体验还是非常不错的,如杭州财米科技有限公司出品的“挖财记账理财”,还有国外的“Financius”等。
从个人体验来看许多记账软件虽然功能相当强大,但某种程度上却是偏离了原来的初衷,加入许多模块,对于一些用户来说确实是不需要的。比如“挖财”的基金,以及略显累赘的推送等。所以在开发本项目时,我的目标是减少对于用户的打扰,力求让应用更加简洁,不加入繁杂而无用的功能。
而“Financiu”则是国外个人开发者的作品,免费且简洁,也没有广告,是不可多得的优秀产品。只是其同步功能仅支持Google用户,对于Google大部分业务已经退出了的大陆用户来说,并不是那么方便。这也让我想到了使用百度的开放云作为服务端同步数据。由于日常条件下,智能手机并不能时刻保证像家庭用户那样稳定的网络环境,所以稳定的服务器端还是很有必要的。
总结市面上的记账软件,都是以余额为标准,只关心总体的结余情况,并且需要和真实账户严格同步。个人感觉这对于日常生活来说并不是一种非常完善的记账体系。原因如下:
(1) 由于作者本人也有记账习惯,所以在智能手机普及的情况下,也寻求过在手机上记账的应用。以余额为标准的记账软件看似美好。实际上使用的时候非常不人性。即使是一笔非常小的支出,都必须一一记录,否则会导致虚拟账目和实际账本对不上,所以需要每天花费一定时间去整理账目,这是非常费时费力的。
(2) 这种方式和个人的理财理念相违背,记账的目的并不在于知晓每日甚至每时每刻的具体消费情况,而是想统计每个周期的现金流水平。而采用结余的方式不利于计划,只知晓账户余额却不平衡每个月的收入支出比例,就没有办法更好地去对自己的财务进行计划,而那些详细的账目也会变成没有任何意义的流水账。
由此可见在现在Android平台已经拥有大量应用的前提下,并不影响特定用户对特定应用的需求。开发一个界面简洁,让用户更加专注于记账,并且能在网络流畅的情况下实现简单同步的记账软件还是很有必要的。
总结以上背景及原因,本项目需要达到如下要求:
(1) 功能完善,简洁易用。在满足用户需求的情况下,能够让用户更加直观地进行使用。
(2) 以记录每个月现金流水平为目的,能够让用户更好计划每个周期的收入支出。
(3) 使用国内的百度云来实现备份和恢复,在网络条件流畅的情况下,百度云的性能要优于国内外的相关服务。
1.2研究方法和内容
本课题目的是设计开发一款基于Android 系统的手机记账软件,用以记录人们在日常生活中的开支,以便有效的监控每个月的现金流健康状况。方法如下:
(1) 根据自己在现实生活中的记账经验,以及应用使用习惯,来设计更便于使用的界面。通过借鉴当下热门应用的开发风格以及配色来提高应用界面的美感。
(2) 虽然当前手机的硬件已经远远超过塞班时代,达到了很高的水平,但由于手机硬件产商并没有一个统一的规范,导致Android手机应用的适配变成一个令很多开发者都头疼的问题。特别是对于屏幕分辨率的适配,需要通过模拟器以及真机不断的调试,力求达到一个兼容的水平。
(3) 在开发过程中不仅仅需要注意屏幕适配问题,还需要时刻关注Android提供的各个不同版本的兼容性,需要关注最新的解决方案,从社区获取最新的开发动态,让应用更加适合当前市场。
(4) 在开发过程中,由于个人精力有限,要不断部署并测试是非常困难的。每个功能模块都需要经过日常使用的考验,需要做好各个版本的备份,以及复杂代码的注释,以便后期修改。
基于以上方法,课题的研究内容如下:
本课题的研究任务是利用Android官网提供的Eclipse + ADT plugin套件进行开发,主要以Java语言为主,通过Google提供的各个Android SDK以及第三方相关工具进行开发。目的是完成一款能够在Android平台手机上流畅运行的记账应用软件,在开发过程中不断进步提高并最终掌握独立开发商业Android手机应用。
技术方面,数据存储采用Android自带的轻量级数据库SQLite进行开发,在Android应用的开发基础上,采用类似MVC的结构来分离视图、业务以及数据库存储。而服务器同步则通过申请百度的开放云API权限进行开发,无需自己搭建服务器,更加便捷、稳定。
应用方面,用户可以在手机平台进行人员管理,账本管理,记录消费,查询消费,统计管理和类别管理等操作。用户可以方便快捷地记录生活中支出和收入。并且提供详细的查询功能,可以很好的了解每个月的详细账单。通过这样,用户就能很好的控制日常生活中的消费情况,达到开源节流的目的。
1.3篇章结构
本论文正文部分围绕以下结构展开:
第二章分析Android架构,重点介绍了Android平台的运行机制,还有核心框架。
第三章介绍百度开放云API的使用。
第四章对系统的需求以及可行性进行分析,以及系统主要功能的分析。
第五章介绍系统的设计,包括类设计以及数据库设计。
第六章介绍系统的开发环境以及类的具体实现,还有一些部分关键代码及演示。
最后对本文的工作进行了总结。2 Android技术背景
2.1 Android架构
Android是一个用于移动设备上的,搭建在Linux内核之上的操作系统。是一个用于移动设备上的包含操作系统、一系列中间件、以及部分关键应用的软件栈。Android Developer网站提供了在Android平台上使用Java编程语言开发应用程序所必须的工具和API [2]。
图2-1 Android系统架构图
Android架构由上至下分四层,如图2-1。简要描述如下:
应用层:包括由系统默认提供了的桌面、联系人、通话、浏览器等基础应用,大部分开发者开发的或者基于系统扩展的应用也运行在这一层,通过系统服务管理。
应用框架层:应用开发基本的API,提供包括组件管理、窗口管理、资源管理以及安装包管理等一系列系统服务。框架层集中体现了Android系统的设计思想,是Android系统中最核心的部分。
库:核心类库由一系列的二进制动态库共同构成。Android为了提高框架层的执行效率,使用C/C++来实现它的一些性能关键模块: OpenGL 3D绘图,安全套接层,提供SGL底层2D绘图引擎,嵌入式标准C库,浏览器核心Webkit,FreeType字体,媒体框架,用户空间显示管理,以及轻量级SQLite关系型数据库。
Dalvik虚拟机:Dalvik是为Android量身打造的Java虚拟机,负责动态解析执行应用、分配空间、管理对象生命周期等工作。
硬件抽象层(Hardware Abstract Layer,HAL),是Android为厂商定义的一套接口标准,它为框架层提供接口支持,厂商需要根据定义的接口实现相应功能。[3]
Linux 内核:Android整个操作系统基于Linux内核,内核提供Wi-Fi、照相、显示、软键盘、闪存、音频等驱动程序,提供对进程间通信机制Binder的驱动,提供电源管理服务。
2.2 Android本地应用开发
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/qrs/139.html