




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Android的智能家居,项目背景,什么是Android,Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。,平台优势,挣脱运营商束缚,Google应用,丰富的硬件,无限制的开发,开放性,发展趋势,目前,Android智能手机正处于快速增长期,2011年7月末,Android智能手机在国内的占有率达到34.8%,在半年之内超过了iPhone手机,仅次于Symbian智能手机.,2011.7各类操作系统智能手机中国占有率,价格优势,系统概述,两大模块,智能家居,M0+A8,智能居,平台测试,A8,智能家居,设计思想,房间温度,房间湿度,房间光照,房间电压,房间防盗,来宾登记,温度控制,风扇模拟,光照控制,LED模拟,报警控制,蜂鸣器模拟,A8,M0,个人职责,个人职责,Android架构,层次接口表,流程图(1),(1)初始化加载JNI的库,流程图(2),(2)JNI层实现对App层的方法,流程图(3),(3)HAL层实现对JNI层的函数接口,流程图(4),(4)HAL层调用驱动层的函数接口,App-framework层,在Android应用层中的程序或组件都是用Java语言开发的,这些Java代码编译后变成Dex格式的字节码,由Dalvik虚拟机执行,在执行过程中需要调用本地库时,由虚拟机载入这些本地库,然后让Java函数调用库中的函数,虚拟机相当于一座桥梁,让Java与本地库能够透过标准的JNI界面互相沟通。应用程序在虚拟机里执行,通过函数System.loadLibrary()通知虚拟机载入指定的库,例如在Java代码中包含代码如:System.loadLibrary(“libuart_runtime.so”);虚拟机就会在Android文件系统的“/system/lib/”目录中查找llibuart_runtime.so库文件,虚拟机载入libuart_runtime.so后,Java代码就可以与库文件结合起来一起执行。,framework入口,JNI层,/*当第一次加载此库时,调用此函数注册本地方法*/jintJNI_OnLoad(JavaVM*vm,void*reserved)JNIEnv*env=NULL;jintresult=-1;LOGI(JNI_OnLoad);if(vm-GetEnv(void*)/*JNI_OnLoad()函数完成:(1)把虚拟机环境信息保存到本地库的一个结构体“JNIEnv”的实例中;(2)建立一个应用层中的UART控制服务与本地库的JNI函数表;(3)返回虚拟机本地库使用的JNI版本。*/,JNI入口,HAL-Stub,HALstub是一种代理人(proxy)的概念,stub虽然仍是以*.so的形式存在,但HAL已经将*.so档隐藏起来了。Stub向HAL提供操作函数(operations),而runtime则是向HAL取得特定模块(stub)的operations,再callback这些操作函数。这种以indirectfunctioncall的架构,让HALstub变成是一种包含关系,即HAL里包含了许许多多的stub(代理人)。Runtime只要说明类型,即moduleID,就可以取得操作函数。对于目前的HAL,可以认为Android定义了HAL层结构框架,通过几个接口访问硬件从而统一了调用方式。,HAL层,conststructuart_module_tHAL_MODULE_INFO_SYM=common:tag:HARDWARE_MODULE_TAGversion_major:1,version_minor:0,id:UART_HARDWARE_MODULE_ID,/模块ID,上层的Service通过这个ID应用当前Stubname:uartHALmodule,author:farsight,methods:&uart_module_methods,/入口函数管理结构体HAL_MODULE_INFO_SYM变量是andriodHAL模块通用的入口地址,且必须为这个名字,这样编译器才会将这个结构体的导出符号变为“HMI”,这样这个结构体才能在使用库时被dlsym函数找到,进而返回给hw_get_module函数,HAL入口,权限的问题,由于Android应用程序无权限操作底层设备(如打开、读写等),而我们需要通过读写USB转成的串口的设备节点ttyUSB0,来读写Zigbee模块,所以我们需要修改设备权限为777最高权限。,一种简单的方法是在system/core/rootdir下的uevent.rc脚本里加入/dev/ttyUSB00777rootroot即可,但是我们2.1版本里无此脚本。,最初想法是在init.rc脚本里添加chmod0777/dev/ttyUSB0来修改,但是这样有一个致命的缺陷。即Zigbee模块必须在开机前就已连接在板上,若是开机时未识别到,还需把掉再插一次,但脚本已经执行过了,所以放弃此方法。,我们采取的方法:1.通过给APK签名,赋予应用程序system的权限。2.在init.rc中注册servicechmod4uart,去执行chmod4uart.sh3.编写chmod4uart.sh,通过setpropctl.startchmod4uart获得root权限
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业自动化高级操作工技能竞赛题库
- 2024新外研社版英语八年级上单词表(开学版)
- 2025年工业自动化工程师高级面试指南及预测题解析
- 24节气教学课件
- 新解读《GB-T 36785-2018结构用木质覆面板保温墙体试验方法》
- 关雎板块式教学课件
- 2024年全国社会工作者之初级社会工作实务考试重点试卷附答案469
- 2024高层管理人员劳动合同
- 2025年英语四六级考试听力短对话专项突破试卷 考前冲刺
- Ⅰ期糖尿病肾病护理查房记录
- 电梯维护保养与安全操作实务培训
- 人工智能导论-第2版-全套课件
- 气溶胶大气边界层研究-深度研究
- 2025年中国协同办公软件行业市场发展前景及发展趋势与投资战略研究报告
- 颈椎病课件完整版
- 传染科专科护士培训
- 综合设计我的书包课件
- 《海洋遥感技术》课件
- 企业人力资源管理师三级历年真题及答案(2024年11月-2025年5月)版
- 2024年度德国企业博士实习生招聘与雇佣合同3篇
- 华为-供应链管理课件
评论
0/150
提交评论