版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于Android的智能家居项目背景什么是Android Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。平台优势挣脱运营商束缚Google应用丰富的硬件无限制的开发开放性发展趋势目前,Android智能手机正处于快速增长期,2011年7月末,Android智能手机在国内的占有率达到34.8%,在半年之内超过了iPhone手机,仅次于Symbian智能手机 .2011.7 各类操作系统智能手机中国占有率价格优势
2、系统概述两大模块智能家居M0+A8智能居平台测试A8智能家居1处理显示M0数据并控制M0前端数据中心-A82Zigbee无线传输传输模块3采集房间信息发至前端,并响应前端的命令终端采集中心-M04Zigbee无线传输传输模块设计思想房间温度房间湿度房间光照房间电压房间防盗来宾登记温度控制风扇模拟光照控制LED模拟报警控制蜂鸣器模拟A8M0个人职责个人职责系统架构分析A8平台Android底层设计详细文档撰写系统整合Android架构层次接口表流程图(1) (1)初始化加载JNI的库流程图(2) (2)JNI层实现对App层的方法流程图(3) (3)HAL层实现对JNI层的函数接口流程图(4)
3、(4)HAL层调用驱动层的函数接口App-framework层在Android应用层中的程序或组件都是用Java语言开发的,这些Java代码编译后变成Dex格式的字节码,由Dalvik虚拟机执行,在执行过程中需要调用本地库时,由虚拟机载入这些本地库,然后让Java函数调用库中的函数,虚拟机相当于一座桥梁,让Java与本地库能够透过标准的JNI界面互相沟通。应用程序在虚拟机里执行,通过函数System.loadLibrary( )通知虚拟机载入指定的库,例如在Java代码中包含代码如:System.loadLibrary(“libuart_runtime.so”);虚拟机就会在Android文件
4、系统的“/system/lib/”目录中查找l libuart_runtime.so库文件,虚拟机载入libuart_runtime.so后,Java代码就可以与库文件结合起来一起执行。framework入口JNI层/* * 当第一次加载此库时,调用此函数注册本地方法 */jint JNI_OnLoad(JavaVM* vm, void* reserved) JNIEnv* env = NULL;jint result = -1;LOGI(JNI_OnLoad);if (vm-GetEnv(void*) &env, JNI_VERSION_1_4) != JNI_OK) LOGE(ER
5、ROR: GetEnv failedn);goto fail; /获取当前的VM的环境,保存在env变量中assert(env != NULL);if (registerMethods(env) != 0) LOGE(ERROR: PlatformLibrary native registration failedn);goto fail; /自己写的函数,向当前JAVA环境中注册接口result = JNI_VERSION_1_4;fail:return result;/* JNI_OnLoad()函数完成:(1) 把虚拟机环境信息保存到本地库的一个结构体“JNIEnv”的实例中;(2) 建
6、立一个应用层中的UART控制服务与本地库的JNI函数表;(3) 返回虚拟机本地库使用的JNI版本。*/JNI入口HAL-StubHAL stub 是一种代理人(proxy)的概念,stub 虽然仍是以 *.so的形式存在,但HAL已经将 *.so 档隐藏起来了。Stub 向 HAL提供操作函数(operations),而 runtime则是向 HAL 取得特定模块(stub)的 operations,再 callback 这些操作函数。这种以 indirect function call 的架构,让HAL stub 变成是一种包含关系,即 HAL 里包含了许许多多的 stub(代理人)。Run
7、time 只要说明类型,即 module ID,就可以取得操作函数。对于目前的HAL,可以认为Android定义了HAL层结构框架,通过几个接口访问硬件从而统一了调用方式。HAL层const struct uart_module_t HAL_MODULE_INFO_SYM = common: tag: HARDWARE_MODULE_TAG version_major: 1, version_minor: 0, id: UART_HARDWARE_MODULE_ID, /模块ID,上层的Service通过这个ID应用当前Stub name: uart HAL module, author: f
8、arsight, methods: &uart_module_methods, /入口函数管理结构体HAL_MODULE_INFO_SYM变量是andriod HAL模块通用的入口地址,且必须为这个名字,这样编译器才会将这个结构体的导出符号变为“HMI”,这样这个结构体才能在使用库时被dlsym函数找到,进而返回给hw_get_module函数HAL入口权限的问题由于Android应用程序无权限操作底层设备(如打开、读写等),而我们需要通过读写USB转成的串口的设备节点ttyUSB0,来读写Zigbee模块,所以我们需要修改设备权限为777最高权限。一种简单的方法是在system/core/rootdir下的uevent.rc脚本里加入/dev/ttyUSB0 0777 root root即可,但是我们2.1版本里无此脚本。最初想法是在init.rc脚本里添加chmod 0777 /dev/ttyUSB0来修改,但是这样有一个致命的缺陷。即Zigbee模块必须在开机前就已连接在板上,若是开机时未识别到,还需把掉再插一次,但脚本已经执行过了,所以放弃此方法。我们采取的方法: 1.通过给APK签名,赋予应用程序system的权限。 2.在init.rc中注册service chmod4uart,去执行chmod4uart.sh 3.编写chmod4uart.s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年专属采石场股权交易协议范本
- 2023-2024学年重庆市云阳高级中学高三下学期摸底统一考试数学试题
- 2023-2024学年浙江省宁波重点中学高三第二学期综合模拟数学试题
- 2024年工厂商业秘密保密协议
- 2024年销售专员协议条款范本
- 2024年卫生间隔板安装服务协议范例
- 2024年期固定期限劳动协议范例
- 2024年度搬运作业承揽协议条款
- 2024年适用公司买卖协议详尽模板
- 2024年度大理石供应协议模板
- 江苏省南京市建邺区2024-2025学年九年级上学期期中考试物理试题(无答案)
- 中小学师德师风建设各项制度汇编
- 广东省珠海市子期中学、梅华中学 2024-2025 学年上学期期中考试七年级数学试题(无答案)
- 2024秋期河南开放大学本科《消费者权益保护法》一平台无纸化考试(形考任务1至3+我要考试)试题及答案
- 公务员2024年国考申论真题(地市级)及参考答案
- 2024年河南省信阳市招才引智绿色通道招聘市直事业单位人员183人高频难、易错点500题模拟试题附带答案详解
- 人教版数学六年级上册各单元教学计划(1-4单元)
- 民用无人机操控员执照(CAAC)考试复习重点题及答案
- (新版)食品生产企业食品安全员理论考试题库500题(含答案)
- 广西南宁市第十四中学2023-2024学年七年级上学期期中地理试题
- 2024-2030年中国应急产业市场发展分析及竞争形势与投资机会研究报告
评论
0/150
提交评论