论文部分内容阅读
摘 要:分析了android操作系统的传感器系统结构,设计并实现了基于i2c及android输入子系统的isl290023光传感器驱动程序,能够精确地根据周围环境光线的强度自动调节LCD的亮度,有效地降低智能设备的功耗,驱动成功应用于Marvell armada610平台,性能稳定。
关键词:Android;I2C;光传感器
中图分类号:TP311
2007年Google推出第一款Android操作系统以后,不断地完善及增强系统功能,从最初的android1.1版本发展到最新的android4.3版本,用户体验感越来越好,是目前最流行的智能终端系统之一,它不仅改变了民众的生活爱好,还不断增加了生活的乐趣性及实用性,深受社会各界人士的热捧。为了更好的赢得用户的信赖,android智能终端设备为用户配备了各种传感器,如重力感应器、光传感器、磁场感应器及距离传感器等8种高灵敏度的传感器,他们不仅可以帮助用户在使用设备的过程中自动节省系统的耗电量,还可以为用户在户外活动中提供指南针功能,在游戏中提供重感力操作模式,增强了用户体验性及简化了操作的复杂度。其中,光传感器可以感知附近周围的光线情况,并将感知的数据上报给处理器去运算,然后自动调节设备的背光亮度,不仅可以降低系统的耗电量,还可以有效地保护用户的眼睛,市场使用价值越来越高,如何更好的发挥出其作用,值得技术人员去深入研究。
1 Android软件体系结构
2 Android的传感器系统结构
传感器(sensor)对于我们来说并不感到陌生,比如日常生活中的楼道路灯、传感温度计等将物理现象转换成电子信号的机器[4-6]。Android的各类传感器设备同样是将获取外部的物理信息转换成数字信号,通过传感器系统上报给用户应用,展现出丰富的便携功能。Android传感器主要包括8种:加速度(accelerometer)、方向传感器(orientation)、光传感器(ambient light)、磁传感器(magnetic field)、距离感应器(proximity)、方向感应器(orientation)、压力(pressure)和温度传感器(temperature),它们都是基于不同的物理硬件来实现[5]。
Android传感器系统在整个android系统中的各个层次都有涉及,其对上层的接口是上报传感器采集转换后的数据变化,同样也提供部分属性设置接口,如精度的设置等。Android传感器系统的基本结构图[7-9]如图2所示。系统结构的分布从上而下遵守android系统原理,包含java应用、传感器的java框架层、本地框架的硬件抽象层、传感器驱动程序及硬件。Android传感器应用开发使用的API主要包含在frameworks/base/core/java/android/hardware目录下的Sensor*.java文件类,实现了sensor的管理及控制,sensor事件的监听。API中的sensormanager类会通过jni的 jni/android_hardware_SensorManager.cpp调用本地库中的sensormanager服务,其会进一步调用sensor的hal层,最终根据具体的硬件配置调用具体的传感器,实现采集数据的上报。
4 ISL290023光传感器驱动的实现
4.2 驱动初始化
驱动的初始化是以内核模块加载的方式运行,通过module_init()函数向内核加载驱动的初始化函数isl29023_init (),其主要是将驱动挂载到系统的I2C驱动模型中,完成设备的硬件初始化,比如设置器件相关寄存器的初始化状态、电源的省电操作模式,分配input_dev结构,定义设备支持的事件类型,通过input_register_device()函数将input_dev向内核输入子系统注册使其成为输入设备,实现的核心代码如下:
4.3 数据计算与上报
5 结束语
随着android设备及其应用的发展,传感器的使用也越來越广,如何使其更稳定、更精确地工作是研究的重点。本文通过分析android传感器系统结构及其移植的内容,成功实现了基于i2c和android input的isl290023光传感器驱动,能够精确地根据周边环境光线的强度自动调节屏幕的亮度,驱动成功应用于android2.3系统,为驱动开发爱好者提供了参考价值。
参考文献:
[1]郭宏志.Android应用开发详解[M].北京:工业出版社,2011,6.
[2]李刚.疯狂Android讲义[M].北京:电子工业出版社,2011,7.
[3]吴亚峰,索依娜.Android核心技术与实例详解[M].北京:电子工业出版社,2010,6.
[4]韩超,梁泉.Android系统级深入开发:移植与调试[M].北京:电子工业出版社,2011,2.
[5]杨丰盛.Android技术内幕:系统卷[M].北京:机械工业出版社,2011,6.
[6]伯内特.Android基础教程[M].张波.北京:人民邮电出版社,2009,11.
[7]James Steele,Nelson To.The Android Developers Cookbook Building Applications with the Android SDK[M].United States:Pearson Education,Inc,2010,10.
[8]吴茂安.基于I2C总线协议的几种传感器在Android系统中的底层软件设计与实现[D].西安:西安电子科技大学,2012,1.
[9]李永壮,李昌兴,王欢.基于Android光线传感器的实现及数据优化算法[J].西安邮电学院学报,2012,17:75-78.
[10]ISL290023 Data Sheet[EB/OL].Intersil Americas Inc.2009.
作者简介:欧阳小星(1980-),男,江西吉安人,硕士,研究方向:嵌入式系统,android系统。
关键词:Android;I2C;光传感器
中图分类号:TP311
2007年Google推出第一款Android操作系统以后,不断地完善及增强系统功能,从最初的android1.1版本发展到最新的android4.3版本,用户体验感越来越好,是目前最流行的智能终端系统之一,它不仅改变了民众的生活爱好,还不断增加了生活的乐趣性及实用性,深受社会各界人士的热捧。为了更好的赢得用户的信赖,android智能终端设备为用户配备了各种传感器,如重力感应器、光传感器、磁场感应器及距离传感器等8种高灵敏度的传感器,他们不仅可以帮助用户在使用设备的过程中自动节省系统的耗电量,还可以为用户在户外活动中提供指南针功能,在游戏中提供重感力操作模式,增强了用户体验性及简化了操作的复杂度。其中,光传感器可以感知附近周围的光线情况,并将感知的数据上报给处理器去运算,然后自动调节设备的背光亮度,不仅可以降低系统的耗电量,还可以有效地保护用户的眼睛,市场使用价值越来越高,如何更好的发挥出其作用,值得技术人员去深入研究。
1 Android软件体系结构
2 Android的传感器系统结构
传感器(sensor)对于我们来说并不感到陌生,比如日常生活中的楼道路灯、传感温度计等将物理现象转换成电子信号的机器[4-6]。Android的各类传感器设备同样是将获取外部的物理信息转换成数字信号,通过传感器系统上报给用户应用,展现出丰富的便携功能。Android传感器主要包括8种:加速度(accelerometer)、方向传感器(orientation)、光传感器(ambient light)、磁传感器(magnetic field)、距离感应器(proximity)、方向感应器(orientation)、压力(pressure)和温度传感器(temperature),它们都是基于不同的物理硬件来实现[5]。
Android传感器系统在整个android系统中的各个层次都有涉及,其对上层的接口是上报传感器采集转换后的数据变化,同样也提供部分属性设置接口,如精度的设置等。Android传感器系统的基本结构图[7-9]如图2所示。系统结构的分布从上而下遵守android系统原理,包含java应用、传感器的java框架层、本地框架的硬件抽象层、传感器驱动程序及硬件。Android传感器应用开发使用的API主要包含在frameworks/base/core/java/android/hardware目录下的Sensor*.java文件类,实现了sensor的管理及控制,sensor事件的监听。API中的sensormanager类会通过jni的 jni/android_hardware_SensorManager.cpp调用本地库中的sensormanager服务,其会进一步调用sensor的hal层,最终根据具体的硬件配置调用具体的传感器,实现采集数据的上报。
4 ISL290023光传感器驱动的实现
4.2 驱动初始化
驱动的初始化是以内核模块加载的方式运行,通过module_init()函数向内核加载驱动的初始化函数isl29023_init (),其主要是将驱动挂载到系统的I2C驱动模型中,完成设备的硬件初始化,比如设置器件相关寄存器的初始化状态、电源的省电操作模式,分配input_dev结构,定义设备支持的事件类型,通过input_register_device()函数将input_dev向内核输入子系统注册使其成为输入设备,实现的核心代码如下:
4.3 数据计算与上报
5 结束语
随着android设备及其应用的发展,传感器的使用也越來越广,如何使其更稳定、更精确地工作是研究的重点。本文通过分析android传感器系统结构及其移植的内容,成功实现了基于i2c和android input的isl290023光传感器驱动,能够精确地根据周边环境光线的强度自动调节屏幕的亮度,驱动成功应用于android2.3系统,为驱动开发爱好者提供了参考价值。
参考文献:
[1]郭宏志.Android应用开发详解[M].北京:工业出版社,2011,6.
[2]李刚.疯狂Android讲义[M].北京:电子工业出版社,2011,7.
[3]吴亚峰,索依娜.Android核心技术与实例详解[M].北京:电子工业出版社,2010,6.
[4]韩超,梁泉.Android系统级深入开发:移植与调试[M].北京:电子工业出版社,2011,2.
[5]杨丰盛.Android技术内幕:系统卷[M].北京:机械工业出版社,2011,6.
[6]伯内特.Android基础教程[M].张波.北京:人民邮电出版社,2009,11.
[7]James Steele,Nelson To.The Android Developers Cookbook Building Applications with the Android SDK[M].United States:Pearson Education,Inc,2010,10.
[8]吴茂安.基于I2C总线协议的几种传感器在Android系统中的底层软件设计与实现[D].西安:西安电子科技大学,2012,1.
[9]李永壮,李昌兴,王欢.基于Android光线传感器的实现及数据优化算法[J].西安邮电学院学报,2012,17:75-78.
[10]ISL290023 Data Sheet[EB/OL].Intersil Americas Inc.2009.
作者简介:欧阳小星(1980-),男,江西吉安人,硕士,研究方向:嵌入式系统,android系统。