版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
银行项目Android端架构设计文档
一、通信图
interaction通讯图)
柜外清即是我们的Android机器,它和PC通过串口及U5B连接;
PC端动态库也类似于HttpRequest/Response的方式通讯,即PC端动态库作为Client端,柜
外清作为Server端:
二、PC端动态库与柜外清间的通讯约定
1、多字节采用小端约定;
2、所有字符串统一用UTF-8编码;
三、架构设计图
逻辑上采用分层架构的设计,协议处理和数据通讯层,不需要修改和维护,只需要
关心”请求处理层”及以上的就可以了。
分层结构图)
交互衰双层
UI
控制层
实际处理酒柒橙口
语来处理层
Request/Response
协议处If层
打包.解包/封叠
无覆修改
H标■讯层
COKVHID/ADB
请求处理层:处理数据包的数据细节,调用“控制层”的接口,并生成返回包;
控制层:此层不会涉及数据包且都是单例,向外提供接口调用;
不存在跨层的调用,每层只和相邻的层有联系;
对象交互图如下:
交耳去W后,]
其中RawHandler是对特殊包的处理,主要是为了兼容比较短小的非协议包;
时序图如下:
infraclion时与阳
Co<mnlUhnag»r||ProiocoiMjmagf]|Handto,ManMf||OOwHandtof]|RawHandKr|
四、目录管理
在内置SD卡的根目录新建"Nantian〃文件夹,所有文件都以它为主目录,其下的目
录有如下:
"Picture"Video'\"Audio"."Packaged"Sign","Web'\"Download"
分别存放相应的文件。
五、源码示例
程序的包结构图如下:
/VL-Nantian
」薄src
0t£fcom.nantian.home
t>tbcom.nantian.home.comm
/com.nantian.home.file
>国FileManagerjava
/cfcicom.nantian.home.handler
t>@FileHandler.java
[>@HandlerManagerjava
t>[J]RawHandler.java
由com.nantian.home.password
田com.nantian.home.player
t>tbcom.nantian.home.protocol
田com.nantian.home.setting
由com.nantian.home.sign
>t£tcom.nantian.home.view
由com.nantian.home.web
每个模块都有自己相应的包,我们主要关注的是com.nantian.home.handler包及
其它模块包:
publicclassFileHandlerimplementsPacketHandler{
privateFileManagermanager=FileManager.-instance();
publicFileHandler(){
@Override
publicvoidregister(){
ProtocolManagermanager=ProtocolManager.instance();
manager.register(0x4601,this);
manager.register(0x4602Jthis);
manager.register(0x4603,this);
manager.register(0x4605jthis);
manager.register(0x4606,this);
)
@Override
publicvoidhandle(PacketRequestreq,PacketResponseresp){
byte[]data=req.getData();
byte[]send=null;
switch(req.getld()){
case0x4601:
send=getFileList(data[0]);
break;
case0x4602:
if(!writeFileData(req)){
resp.setErrno((short)0xFF00);
}
break;
case0x4603:
deleteFile(req);
break;
case0x4605:
send=getFilelnfo(req);
if(null==send){
resp.setErrno((short)0xFFFF);
}
break;
case0x4606:
send=readFileData(req);
if(null==send){
resp.setErrno((short)0xFFFF);
}
break;
default:
break;
)
resp.write(send);
)
privatebyte[]getFileList(inttype){
String[]list=manager.getFileList(FolderType.vatues()[type]);
byte[]data=null;
if(null!=list&&list.length>0){
StringBuildersb=newStringBuilder();
for(inti=0;i<list.length;i++){
sb.append(list[i]).append("&");
}
data=PacketResponse.getBytes(sb.substring(0,sb.length()-l));
)
returndata;
}
privatevoiddeleteFile(PacketRequestreq){
byte[]data=req.getData();
Stringname=req.getString(2,data[l]);
if(0xFF==(req.getByte(O))){
if("*.*".equals(name)){
manager.deleteAHFile();
}else{
manager.deleteFile(name);
)
}else{
FolderTypetype=FolderType.vatues()[data[0]];
if("*.*".equals(name)){
manager.deleteAllFile(type);
}else{
manager.deleteFile(type,name);
}
)
)
privatebyte[]getFileinfo(PacketRequestreq){
byte[]data=req.getData();
Stringname=req.getString(2,data[l]);
FolderTypetype=FolderType.vatues()[data[0]];
Fileinfoinfo=manager.getFilelnfo(type,name);
byte[]send=null;
if(null!=info){
send=newbyte[4];
PacketResponse.setInt(send,0,info.size);
)
returnsend;
}
privatebyte[]readFileData(PacketRequestreq){
byte[]data=req.getData();
Stringname=req.getString(2,data[l]);
FolderTypetype=FolderType.vatues()[data[0]];
intpos=2+data[l];
intoffset=req.getlnt(pos);
POS+=4;
intsize=req.getShort(pos);
returnmanager.readFileData(type,name,offset,size);
)
privatebooleanwriteFileData(PacketRequestreq){
byte[]data=req.getData();
Stringname=req.getString(2,data[l]);
FolderTypetype=FolderType.vatues()[data[0]];
intpos=2+data[l];
intprogress=data[pos++];
intindex=data[pos++];
intcount=data[pos++];
intrestBlocks=req.getlnt(pos);
pos+=4;
intoffset=req.getlnt(pos);
pos+=4;
Log.x("FileHandler","progress="+progress+",index="+index
+",count="+count
+",restBlocks="+restBlocks+二offset="+offset);
booleanret=false;
intlength=data.length-pos;
if(length>0){
ret=manager.writeFileData(type,name,offset,
data,pos,length,restBlocks);
)
returnret;
}
)
以文件管理模块为例,首先派生一个PacketHandler类,register。函数中向
ProtocolManager注册关注的消息类型,ProtocolManager把它关注的消息作封装并发送给它;
后面只需要在publicvoidhandle(PacketRequestreq,PacketResponseresp)中处理
接收到的消息就可以了。
FileHandler是协议相关的,因此还需要在com.nantian.home.file包中新建一个
FileManager类来处理协议无关的接口操作:
六、其它非协议包数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AB卷期末试题及答案大全
- 《钳工实训(初级)》课件 项目七 孔加工
- 射击运动竞赛试题及答案探究
- 2026年办公收纳美学 透明文具展示方案
- SPSS上机操作试题及标准答案
- 2026维修电工技师考试试题及答案
- 诺如病毒防治讲座宣讲
- 2026年中级注安其他安全真题试卷及答案
- 2026年校企合作实训管理教师试卷
- 心血管内科冠心病介入护理
- 学前比较教育全套教学课件
- 生产制造行业岗位薪酬等级表
- 《图形创意》教案
- GB/T 42401-2023激光熔覆修复缺陷质量分级
- 外科学急性化脓性腹膜炎
- 人教版四年级语文上册《长城》课件
- 北京汇源审计报告
- 教案伦理学原理课件
- 消除浪费(七大浪费)课件
- 内功四经内功真经真本全书
- 常用公文写作规范与技巧课件
评论
0/150
提交评论