GPS部标平台的架构设计(六)-Android手机客户端和手机查车设计
对于GPS软件平台,虽然有功能非常丰富的PC端或BS客户端,但是客户也是需要移动客户端来作为自己的辅助工具,也是需要的。做为GPS平台的设计者和开发者,在开发移动客户端的时候,也需要从常规的服务器开发和客户端开发的思维中,转变过来,当然客户的需求也需要转变,因为毕竟不能随心所欲的将PC端的所有功能需求照搬到手机客户端,手机的开发环境、网络环境、使用环境都决定了设计理念与PC端的设计是完全不一样的。
通常我们成为GPS部标平台的手机客户端为手机查车,实际上现在的功能不仅仅是查车,由于客户需求的推进和演变,我们推出手机查车功能更加丰富,已经包含了统计报表、统计图表、车辆终端控制、个人手机定位和追踪等功能。需要购买android手机客户端(源代码1300元)的可以联系我(2379423771@qq.com),可帮助提供环境搭建和开发指导。
在手机端的设计时,要关注一下几个设计要点:
1.耗电量
这个是很多开发者都不关心的地方,认为这不是bug。但是这就是移动开发者区别于PC开发者的要点之一,常规的情况下,如果我们采用poll的方式在GPRS的网络环境下,频繁获取大批量的数据,可以快速的将电源耗光。
国际权威反病毒评测机构AV-C发布最新报告,在众多国内外安全产品中,百度手机卫士由于在电池能耗方面巨大、极大加大手机耗电负担,最终在报告中被单独点名提出,成为本次手机安全软件测试中全球最耗电的手机安全软件“电耗子”。可见耗电是多么的被忽视。
所以我们在开发GPS软件平台的手机客户端的时候,如果需要频繁的与服务器交换数据,就应该尽量的采用推送的方式,比如GPS报警推送。而报警推送也不应该将大量无意义的报警,推送给用户,推送什么样的报警,应该由客户来选择,比如报警订阅的功能。
一下是报警推送的Notification及报警数据列表

2.流量
很多客户在提手机端需求的时候,总是要求仅可能多的信息展现在手机上,明明那些信息毫无必要,开发者为了装逼,还是不得不将一堆垃圾显示在手机端,比如经纬度坐标,比如里程、油量、方向等等。还有我们在PC端,显示报表的时候,总是一个报表,十几个数据列的尽可能显示全部信息,但是在手机端,换来的代价就是流量的浪费,而且不仅仅是流量,大数据量的加载,会加大界面打开和显示的时间,获取数据的延迟,也会占用CPU资源,手机相应慢,造成用户体验的降低。
所以在设计时,数据显示要简洁有效,尽可能降低数据量,避免数据和按钮堆砌,降低流量的消耗。
对于基础数据要尽量的一次性加载,缓存在手机中,或者通过Preferences文件,Sqlite数据库的操作,持久化到手机中。

对于历史轨迹的查询和回放,也是采用双缓冲分页加载的方式,避免一次性查询大量的历史数据,这样即使是GPRS上网也能流畅的进行历史轨迹回放。

3.界面设计
前面提到,对于企业软件的移动客户端,企业用户总是希望将显示大量的报表数据,而我们不仅要提醒客户注意流量的限制,网络环境的限制,还要注意手机尺寸的限制,智能手机客户端从3.5寸到7寸的手机,都有。在界面设计上,寸土寸金,数据堆砌的简单化思维,无疑是异常灾难。


我们在设计时,必须要提炼数据接口,提供最少最有效的数据,然后采用 Drill down的方式,对于详细数据的客户需求,分层次加载。比如报警,我们打开界面并不是一次性的显示所有的报警,而是区别于PC端的设计方式,采用分类显示的方式,如果用户关心哪一类报警,再次显示该类报警的详细列表。

4.单手操作的考虑
PC端的开发由于有鼠标,可以东点一下,西点一下,很灵活,我们想象一个手拿着手机,能不能东点一下,西点一下,很麻烦。所以操作按钮尽量靠近,方便单手操作。

5.报表与图标
由于是为企业客户开发移动客户端,所有报表和图表的需求,不可回避,对于报表,必须要考虑分页加载,既然分页,就必须要加上分页按钮,方便分页。
GPS部标平台的架构设计(六)-Android手机客户端和手机查车设计的更多相关文章
- GPS部标平台的架构设计(四)-百度地图设计
部标GPS软件平台之百度地图设计 地图是客户端中不可缺少的一个模块,很多人在设计和画图时候,喜欢加上地图引擎这样高大上的字眼,显得自己的平台有内涵,说白了就是用第三方的SDK来开发,早期的GPS监 控 ...
- GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台
在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...
- GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台
注意,此版本是2014年研发的基于Spring2.5和Struts2的版本,此版本的源码仍然销售,但已不再提供源码升级的服务,因为目前我们开发的主流新版本是2015-2016年近一年推出的基于spri ...
- GPS部标平台的架构设计(一)
设计和开发一个GPS系统似乎并不太难,很多人马上就想到了地图,放大,缩小之类的功能,最多就是在加点报表之类的东西,就成了. 这种观点造成了业界内,很多GPS系统粗制滥造,不堪大用. 事实上,设计和开发 ...
- GPS部标平台的架构设计(五)-地图服务算法库
GPS平台,需要和各种地图打交道,需要解决以下的问题: 1.坐标偏移,这个不用多说,需要将原始坐标加偏,然后在百度地图或谷歌上显示出来,需要注意的是百度地图的加偏是偏上再偏,谷歌.高德地图等是火星坐标 ...
- GPS部标平台的架构设计(二) 可扩展性设计
在设计的前夕,设计人员喜欢把领导对未来业务的期望带入到设计目标当中,比如当前业务也不过是接入几千辆车,未来业务增长也不过几万台,但领导很多激情,强势要求二期平台的接入能力要达到20万台,这个要求带入到 ...
- GPS部标平台的架构设计(九)-GPS监控客户端设计
交通部的部标过检,所有的测试都是从客户端发起的,也是在客户端体现的,在客户端承载了部标标准所要求的所有的功能,是整个部标平台当中工作量最大的部分,也是最繁琐的部分. 客户端设计面临两个问题: 1.基于 ...
- GPS部标监控平台的架构设计(十一)-基于Memcached的分布式Gps监控平台
部标gps监控平台的架构,随着平台接入的车辆越来越多,架构也面临越来越大的负载挑战,我们当然希望软件尽可能的优化并能够接入更多的车辆,减少在硬件上的投资.但是当车辆增多到某一个临界点的时候,仍然要面临 ...
- GPS部标监控平台的架构设计(八)-基于WCF的平台数据通信设计
总体来讲,GPS部标平台的软件开发是一个对网络通信和应用程序之间通信的技术应用密集型的开发工作,也是有一定设计技术含量的工作. 1.设计通信接口 在设计的时候,根据职责划分,拆分成不同的应用子系统,对 ...
随机推荐
- win10中将默认输入法设置为英文
开始 设置 时间和语言 区域和语言 语言--中文--选项 微软拼音输入法--选项 IME默认模式--英语
- https
http://www.cnblogs.com/bugly/p/5075909.html# http://www.cnblogs.com/peijian708/archive/2011/05/07/20 ...
- acm数学(待续)
意图写出http://www.cnblogs.com/kuangbin/archive/2012/08/28/2661066.html这个东西的完善版. 1.置换,置换的运算 poj 2369 Per ...
- 编译原理-词法分析03-DFA
0.术语 DFA Deterministic finite automation,确定性有穷自动机.一般用于翻译正则表达式. 状态state DFA中的圆圈,表示模式在识别过程中的位置. 转换tran ...
- [NOIP2011]Mayan游戏 题解
题目大意: 有一个5*7的方格,上面有几种颜色的方块,如果在一横行或者竖列上有连续三个或者三个以上相同颜色的方块,则它们将立即被消除,方块消除之后,消除位置之上的方块将掉落.每步移动可以且仅可以沿横向 ...
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort
链接 题意:输入n,m,表示一个n行m列的矩阵,每一行数字都是1-m,顺序可能是乱的,每一行可以交换任意2个数的位置,并且可以交换任意2列的所有数 问是否可以使每一行严格递增 思路:暴力枚举所有可能的 ...
- Web 开发基础
C/S:winform WPF 数据是存在其它的电脑上或服务器上需要从服务器上下载相应的数据,在本地电脑上的客户端里进行加工 数据加工的过程是在用户电脑上执行,会对用户的电脑配置有所要求 B/S: ...
- UUID
首先我们要知道UUID是什么?有什么用?为什么要使用它? UUID是什么? UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定.如此一来,每个 ...
- 配置apache虚拟域名
Apache配置文件的修改. ----> Apache-----> httpd.conf,打开httpd.conf文件. 1)找到:#LoadModule rewrite_modu ...
- 完成对数据库的CRUD操作
PS:查询相对复杂,要处理结果集,增删改则不用. package it.cast.jdbc; import java.sql.Connection; import java.sql.ResultSet ...