




已阅读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二手车辆委托买卖合同
- 活动3 图片的简单处理说课稿-2025-2026学年小学信息技术(信息科技)六年级上册西师大版
- 做中学 尝试3D打印教学设计小学劳动五年级上册长江版《劳动教育》
- 2025标准版自然人借款合同样式
- 2025企业技术人员住房补贴借款合同模板
- 第八单元金属和金属材料说课稿-2025-2026学年九年级化学人教版下册
- 2025水利水电工程勘察合同
- 陕西省石泉县八年级生物上册 5.4.5人类对细菌和真菌的利用说课稿 (新版)新人教版
- 第二节 气温和降水说课稿-2025-2026学年初中地理中图版2024七年级上册-中图版2024
- 华师大版八年级科学下册8.2 气温、湿度和降水 说课稿
- 开展健康生活方式、营养和慢性病预防知识教育和宣传活动
- 高分子物理-第2章-聚合物的凝聚态结构课件
- 消防知识测试题库(1000道含各题型)
- CNAS体系基础知识培训课件
- 特种设备制造内审及管理评审资料汇编经典版
- 河蟹健康养殖与常见疾病防治技术课件
- 小学二年级《爱国主义教育》主题班会课件
- 2023届浦东新区高三英语一模试卷及答案
- 儿童牙外伤讲稿
- GB∕T 41491-2022 配网用复合材料杆塔
- 2022年《临床助理医师》考试题库及答案(含各题型)
评论
0/150
提交评论