AndroidProject A — 架构

Android Project A 架构   

 

    背景描述:多媒体芯片厂商(以下简称A公司),致力于家庭娱乐平台开发,OSeCos到纯linux,再到Android,多年来积累了很多的多媒体芯片解决方案。在Android系统盛行时,也想借助Android的开源特性研发出自己的智能家庭娱乐平台– DVB

     本文主要总结DVB项目的大体软件框架。由于在纯linux时期就已经有完整而稳定DVB解决方案,所以想尽可能移植成型代码,加快开发进度,减少开发工作量。

 

解决方案

 

    简单说明上面的框架图对照Google发布的Android架构可以看得出来其相似之处,A公司的Android DVB 解决方案是移植原有在Linux上开发的纯C语言应用程序,并通过socket的方式向app提供服务,其中DVBMultimediaDLNAAndroid Home都是A公司深度定制的app

     市面上其实也有类似的解决方案,不同的是他们采用了JNI的方式与C/C++代码进行通信,最初使用socket而不是JNI的方案最主要的原因是socket总体通信效率较高。

App框架

大体上将DVB客户端 App分为三层:UIAbstract LayerSunService,服务端分为两层:SP_ManagerMiddleware

1)UI:

    采用Android提供的控件实现预定的效果。

3)Abstract Layer

    服务端的功能抽象,使用JavaInterface实现,服务端的每项功能都被封装成一个模块。

4)DVB ServiceSP Manager

    类似Java设计模式中的“中介者模式”,服务端和客户端的子模块不需要直接联系,而是通过DVB ServiceSP Manager进行统一管理。

    DVB Service采用Remote ServiceAIDL)实现进程间的通信,它是一个独立的进程,承担了不同app访问C代码服务端功能的责任。

    SP Manager 是所有消息的入口,负责app/Middleware层之间的消息转发控制、子模块之间的通信等等,其中每个子模块是一个独立的线程,负责处理来自Ap层的请求。

5)Middleware

    从早期DVB项目中移植来的C代码,实现最核心的DVB功能。包括了扫台、播放、EPGDatabase、刻录、预约···

启动流程

    Power ON > 启动linux>启动Android和启动DVB Native> Boot Completed>启动DVB应用程序。

    由于DVB Native需要向app提供服务,所以必须在开机时就启动DVB Native,要达到开机就启动DVB Native的话就需要修改启动脚本,添加类似的脚本命令:

    service dvb /system/bin/logwrapper/system/bin/dvb

    class main

    socket sp_manager_recv stream 660 system system   

    user root

    group root

用例图

*用例图的目的是在不揭示系统内部构造的前提下,将整个系统划分成多个功能单元并描述各个功能单元之间的交互行为。

MainMenuActivityDtvPlayer启动首先进入MainActivity,初始化app的行为会在这里完成。

DVBSystemResource:负责掌管系统资源,并为每个资源提供一个外部访问点。

Monitor:系统启动时开启的线程,负责统一实时监听/分发底层信息。

AbstractLayer:抽象出ap所需的功能,接收ap的请求并按照需求转发底层(包括C code),接收底层信息和反馈ap请求的结果。

Activities:负责直接与用户交互的部分,包括检查用户输入,保存/读取用户信息、处理用户请求等行为,是整个ap层主要的功能单元。

Debugger:统一管理不同行为、类型消息的输入格式、开关等。

DVB.Utils:为整个app提供静态的工具。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
某城市已经在各条道路上安装了空气温度、空气湿度、pm2.5、CO2 、光照、道路状态等传感器。部分小车安装了ETC和速度传感器,能够获得这些小车的数度和对其ETC金额进行管理。各传感数据已经汇总在服务器系统。 假设各传感器和ETC账户最小、最大阈值已由管理员设置如下: 环境指标 最小值 最大值 备注 空气温度: 10 40 空气湿度: 50 150 pm2.5 500 5000 CO2 100 600 光照 0 100 道路状态: 1 5 ETC账户余额 100 5000 现要求开发一套移动APP实现如下功能: 1、用户登录注册模块的功能 对用户账号的合法性进行判断,合法的用户允许使用智能交通系统,不合法的用户则禁止使用该系统。用户登陆注册模块能够完成用户注册、自动登录和找回密码等功能。 2、实现系统的实时环境指标动态显示功能 图1 界面原型 1)、利用给定的资源,实现该界面原型的布局,参阅环境指标界面原型图。 2)、实现空气温度、空气湿度、pm2.5、CO2 、光照、道路状态(默认1号编号道路)实时数据显示功能。 注:数据实时刷新周期为 5秒。 3)、实现报警状态警示功能,正常状态背景为绿色,警告状态为红色。 4)、点击传感器的显示区域,可以进入对应的传感器“实时曲线显示”界面。 3 实现系统车辆账户充值、查询功能和限速功能 1)、在点击充值按钮时,先检测账户余额是否超过设置的阈值,如果超过阈值就不允许充值。 2)、如果用户充值的金额加上账户余额超过了账户余额的最大阈值就提示用户充值失败,并提示出本次可以充值的最大额度。 3)、设置小车速度阈值并且显示到页面。 4)、实时监测小车的速度一旦小车速度低于小车最低速度阈值,提示用户速度过慢。一旦小车速度超过最大速度阈值强制停止小车。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值