软件设计规划书版本变更记录
一、引言 (4)
二、系统开发的环境要求 (4)
硬件平台 (4)
软件平台 (4)
三、接口和流程设计 (4)
3.1 Launcher (4)
3.1.1 设备启动加载系统默认应用 (5)
3.1.2 动态显示/隐藏应用 (5)
3.1.3 应用拖拽和跨屏操作 (6)
3.1.4 密码计算 (7)
3.1.5 应用排列方式和屏数 (7)
3.2设置 (7)
3.2.1 功能模块图 (7)
3.2.2 功能简介 (7)
3.2.2.1 信息 (7)
3.2.2.2 设备 (8)
3.2.2.3 检测 (8)
3.2.2.4 管理 (8)
四、主要文件和类 (8)
4.1 Launcher主要文件和类 (8)
4.2设置主要文件和类 (10)
五、常见问题解答 (11)
5.1 恢复厂设置后,桌面上的app呢? (11)
5.2设备在启动的过程中,出现“进程 uncher 意外停止”的提示窗口,怎么办? (13)
5.3 Launcher的启动大致过程是怎么样的? (13)
5.4 简洁版设置入口是哪儿? (13)
5.5检测项目中,刷卡时设备后退按键为什么有些迟缓? (14)
5.6 检测项目中,操作RF卡、PSAM卡和TF卡设备时候为什么无响应? (14)
一、引言
Launcher是安卓系统中的桌面启动器,安卓系统的桌面UI 统称为Launcher。
Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面。
设置是设备系统的主要组成部分之一,主要包含基本信息的显示、设备中如网络、时间、声音、休眠和安全锁等的设置、对打印、磁条卡和IC卡的检测、系统升级管理四个模块。
二、系统开发的环境要求
硬件平台
●处理器:4核,1094MHz
●RAM:1G
●分辨率:720*1280
●多点触控:支持
软件平台
●ADT + Java jdk + Android SDK
三、接口和流程设计
3.1 Launcher
接口主要分为五部分,分别是设备启动加载系统默认应用(分为user和eng版本)、桌面动态显示/隐藏应用、密码计算(分为user和eng版本)、桌面应用排列方式和屏数、桌面应用拖拽和跨屏。
3.1.1 设备启动加载系统默认应用
设备启动加载系统默认应用接口,当系统首次初始化启动时,桌面默认的加载应用,其流程及其主要接口如下:
3.1.2 动态显示/隐藏应用
Launcher动态显示/隐藏应用,动态控制桌面上显示的应用以及应用数目等,其通过异步加载回调UI绑定数据,流程和主要接口如下:
3.1.3 应用拖拽和跨屏操作
Launcher应用拖拽和跨屏操作,可以对桌面上的应用进行自由拖拽排序以及跨屏操作,其流程及其主要接口如下:
3.1.4 密码计算
对于系统升级,出厂化设置,显示/隐藏应用的功能与模块,都会首先使用序列号、用户和版本号前五位三个参数,通过特有的密码计算算法得出独一的密码后方能进行下一步操作。
3.1.5 应用排列方式和屏数
桌面上,预置应用排列的顺序,预置应用数目,屏幕数,初始化数据通过xml配置完成。
3.2设置
功能模块主要分为四部分,分别是信息、设备、检测和管理。
3.2.1 功能模块图
3.2.2 功能简介
3.2.2.1 信息
读取序列号、IMSI、IP、型号、厂商、系统版本、内核版本、软件版本、分辨率和IMEI,以及通过AIDL读取系统版本、固件版本和服务版本。
3.2.2.2 设备
对设备对WLN、移动网络、蓝牙、亮度、声音、休眠、日期和时间、安全锁和APN 进行设置。
3.2.2.3 检测
对打印机、磁条卡和IC卡进行功能检测。
3.2.2.4 管理
对系统版本进行升级和管理。
四、主要文件和类
4.1 Launcher主要文件和类
uncher.java:launcher中主要的activity。
2.DragLayer.java:launcher layout的rootview。
DragLayer实际上也是一个抽象的界面,用来处理拖动和对事件进行初步处理然后按情况分发下去,角色是一个controller。
3. DragController.java:为Drag定义的一个接口。
包含一个接口,两个方法和两个静态常量。
接口为DragListener(包含onDragStart(),onDragEnd()两个函数),onDragStart()是在刚开始拖动的时候被调用,onDragEnd ()是在拖动完成时被调用。
在launcher中典型的应用是DeleteZone,在长按拖动item时调用onDragStart()显示,在拖动结束的时候onDragEnd()隐藏。
两个函数包括startDrag()和setDragItemInfo().startDrag()用于在拖动是传递要拖动的item 的信息以及拖动的方式,setDragItemInfo()用于传递item的参数
信息(包括位置以及大小)。
两个常量为DRAG_ACTION_MOVE,DRAG_ACTION_COPY来标识拖动的方式,DRAG_ACTION_MOVE为移动,表示在拖动的时候需要删除原来的item,DRAG_ACTION_COPY为复制型的拖动,表示保留被拖动的item。
uncherModel.java:辅助的文件。
里面有许多封装的对数据库的操作。
包含几个线程,其中最主要的是ApplicationsLoader和DesktopItemsLoader。
ApplicationsLoader在加载所有应用程序时使用,DesktopItemsLoader在加载workspace的时候使用。
其他的函数就是对数据库的封装,比如在删除,替换,添加程序的时候做更新数据库和UI的工作。
5.Workspace.java:抽象的桌面。
由N个celllayout组成,从cellLayout更高一级的层面上对事件的处理。
uncherProvider.java:launcher的数据库,里面存储了桌面的item的信息。
7.CellLayout.java:组成workspace的view,继承自viewgroup,既是一个dragSource,又是一个dropTarget,可以将它里面的item 拖出去,也可以容纳拖动过来的item。
8.ItemInfo.java:对item的抽象,所有类型item的父类,item 包含的属性有id(标识item的id),cellX(在横向位置上的位置,从0开始),cellY(在纵向位置上的位置,从0开始),spanX(在横向位置上所占的单位格),spanY(在纵向位置上所占的单位格),
screen(在workspace的第几屏,从0开始),itemType(item的类型,有widget,search,application等),container(item所在的)。
uncherSettings.java:字符串的定义。
数据库项的字符串定义,另外在这里定义了container的类型,还有itemType的定义,除此还有一些特殊的widget(如search,clock的定义等)的类型定义。
4.2设置主要文件和类
1.SettingMainFragment.java:简洁版设置中主要的activity。
2.ModemTool.java:读取写入序列号。
3.BSManager.java:工具管理文件
4.TitleIndicator.java:UI框架
5.PosdServiceApplication.java:全局变量和交易框架的建立服务通信
6.PrinterActivity.java:打印机检测
7.MagcardActivity.java:磁条卡设备检测
8.IccTransActivity.java:IC卡检测
9.MobileAndWifiManager.java:网络管理
10.SettingInforFragment.java:基本信息显示
11.SettingDeviceFragment.java:设备管理
五、常见问题解答
5.1 恢复厂设置后,桌面上的app呢?
答:恢复厂设置后,除了系统指定的app,系统app都是处于隐藏状态,让该app显示到桌面的方法如下:
默认的密码是"123456",正式版本需要计算密码。
5.2设备在启动的过程中,出现“进程uncher 意外停止”的提示窗口,怎么办?答:重新启动设备
5.3 Launcher的启动大致过程是怎么样的?
答:如下流程:
5.4 简洁版设置入口是哪儿?
答:一共两种方法,分别是点击下拉菜单中的设置按钮和桌面的”简洁版设置”的应用进入,如下:
5.5检测项目中,刷卡时设备后退按键为什么有些迟缓? 答:为确保银行卡片安全,系统首先保证卡片的前一次操作指令是完成结束的。
5.6 检测项目中,操作RF 卡、PSAM 卡和TF 卡设备时候为什么无响应?
答:这三个检测项目开发中,目前暴露出来的仅是UI 部分。