已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
福 建 师 范 大 学 应 用 科 技 学 院学 生 论 文论文题目: 安卓手机遥控器 指导教师: 李汪彪 学 号: 120352010048 姓 名: 郭善文 年 级: 2010 级 专 业: 电子信息工程 2014 年 05月 11 日安卓手机遥控器福建师范大学应用科技学院电子信息工程专业120352010048郭善文 指导老师 李汪彪【摘要】 本设计基于安卓操作系统的手机上进行开发设计的,以安卓手机应用软件配合音频红外高增益发射头进行使用,从而替代了原有电器自带的遥控器的功能。本设计不但可以替代原有电器的遥控器,还可集成多类型电器的遥控器,还解决了环保问题,本遥控器节能环保,省掉传统遥控器换电池的烦恼,为全球环保贡献出巨大的力量。【关键词】手机遥控器、红外、安卓Android mobile phone remote control Science and Technology Practising College Fujian Normal UniversityElectronic Information Engineering 120352010048 Guo Shan WenTutor: Li Wang BiaoAbstract This design is based on the android operating system on the development and design, with the audio with android mobile phone application software infrared launch head, high gain to replace the original electrical bring the function of remote control.This design not only can replace the original electric remote control, can also be integrated multi-type electric remote control, also can solve the problem of environmental protection, energy conservation and environmental protection in this remote control, eliminate the traditional remote control battery changes, contributing to global environmental protection out of the great power.Key Words Mobile phone remote control、IrDA、Android 目录1. 概述41.1. 设计背景41.2. 设计目的41.3. 设计要求51.4. 方案选择51.4.1. 方案一51.4.2. 方案二51.4.3. 方案比较与选择52. 软件设计52.1. 红外传输协议52.1.1. 编码位定义52.1.2. 载波参数62.2. 实际波形62.2.1. 载波波形62.2.2. 调制后的波形72.3. 系统用户操作界面总体设计82.4. 选择电器类型界面92.5. 各个类型遥控介绍102.5.1. 空调遥控界面102.5.2. 电视遥控界面112.5.3. DVD遥控界面122.5.4. 风扇遥控界面123. 硬件设计133.1. 硬件系统的总体设计133.1.1. 硬件设计框图133.1.2. 电路原理图143.2. 系统各个模块介绍143.2.1. 红外线发光二极管143.2.2. 功率放大电路153.2.3. 电源模块154. 系统制作与调试174.1. 制作所需的元器件174.2. PCB设计174.3. 实物制作184.4. 制作与调试中遇到的问题及解决方法195. 总结196. 致谢197. 参考文献208. 附录208.1. 附录1 系统原理图208.2. 附录2 主要代码201. 概述1.1. 设计背景21世纪是信息科技迅猛发展的时代,新兴科技给我们的带来方便的同时也带来了不少的烦恼。你是否发现你的钱包一天天的变大,那并不代表富有,而是有越来越多的卡,越来越多的证件。假如有一天让你出门只需带一样东西就拥有身份证、钥匙、钱包、手机的功能,那你更愿意带哪一样?我相信很多人都会毫不犹豫地选择手机,的确,没有手机我们就与世隔绝了。遥控控制的家用电器越来越多,家里各种各样的遥控器也越来越多,日常存放、寻找和使用都很不方便3。要是一个老型号的家电的遥控器丢了,配都配不到。 手机是现在人们最常使用的一种手持式的设备,大家都已经习惯随身携带手机和把手机经常放在身边。所以,很多人都希望手机也可以当家用电器的遥控器使用。 现在,智能手机的软硬件已经十分强大,大尺寸的触摸屏可以设计成各种键盘布局的控制器。只要有合适的软件,配合小的附件,智能手机都可以当作家用电器的万能遥控器来使用。茶几上一大堆遥控板乱七八糟,看着烦,统统可以扔了。简单优雅轻轻的触控“手机遥控”,你就可以完全沉浸在你喜爱的绚丽显示屏和美妙音响。再也不用在沙发角落到处寻找遥控板,再也不用和老婆争抢遥控板了。大热天刚进商务酒店房间,不用等服务生把那肮脏的“万人用”遥控板拿来,自己用“手机遥控”打开空调就先吹吹满头的大汗凉快起来。自驾途中的美丽风景哪能没有自己的加入呢,任意遥控相机自拍。用“手机遥控”遥控单反拍摄美丽的夜景阑珊、星空浩瀚,留下了清晰瞬间,免除了直接手动按快门产生的画面抖动模糊。躺在沙发上,只需轻轻触控一个键,“手机遥控”就打开电视、打开机顶盒、换到喜欢的湖南卫视频道、将音响音量调整到最佳.她一条龙全完成。这些,你只需触动一个键,就一个键!可以DIY自由设置。公司会议室,大客户都坐齐了,可综合部小妹还没把投影仪遥控器送来,不急,让“手机遥控”来帮你吧!图 1-1 手机遥控器系统组成1.2. 设计目的遥控控制的家用电器越来越多,家里各种各样的遥控器也越来越多,日常存放、寻找和使用都很不方便。手机是现在人们最常使用的一种手持式的通讯设备,大家都已经习惯随身携带手机和把手机经常放在身边5。本设计为您解决生活烦恼,从此以后你的智能手机就是所有家用电器的遥控器。 本设计不但可以替代原有电器的遥控器,还可集成多类型电器的遥控器,还解决了环保问题,本遥控器节能环保,省掉传统遥控器换电池的烦恼,为全球环保贡献出巨大的力量。1.3. 设计要求本设计主要研究家用电器的红外遥控器编码格式和编码压缩算法,以便满足市场上各式各样品牌的遥控器。具体要求如下:1. 实现安卓手机应用控制音频口产生相应的脉冲信号。2. 制作音频红外发射器,将相应的脉冲信号转成红外光发射出去。1.4. 方案选择1.4.1. 方案一方案一,采用信号功率无放大方式。即安卓手机产生的脉冲信号直接输出到音频口,无需功率放大器。1.4.2. 方案二方案二,采用信号功率放大方式。即安卓手机产生的脉冲信号经过功率放大后输出到音频口,无需功率放大器。1.4.3. 方案比较与选择方案一,采用直接输出方式,硬件设计极为简单,制作成本低,但是兼容性较差,因为目前大部分智能手机系统的音频口输出功率有限,不足以满足本设计红外发射管所需的功率。发射管的发射功率小,可能导致遥控距离近,遥控失灵等不良现象,直接影响到实际的使用效果,所以本设计选择方案二。2. 软件设计2.1. 红外传输协议研究了众多的家电红外遥控装置,发现它们大多遵循相似的通信协议。如图 2-1所示数据格式包括了引导码、用户码、数据码和数据码反码,编码总占32位。数据反码是数据码反相后的编码,编码时可用于对数据的纠错。第二段的用户码也可以在遥控应用电路中被设置成第一段用户码的反码。图 2-1 红外传输数据格式2.1.1. 编码位定义用户码或数据码中的每一个位可以是位1,也可以是位0。如图 2-2所示区分0 和1是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式,英文简写PPM。脉宽调制的串行码 , 用脉宽为 0.56ms、间 隔 0.565ms、周期为1.125ms 的组合表示二进制的“0”;用脉宽为 0.56ms、间隔 1.69ms、周期为2.25ms的组合表示二进制的“1”。图 2-2 编码位定义2.1.2. 载波参数载波频率Fcar = 38KHz,占空比 = T1/Tc = 1/3,波形如图 2-3图 2-3 载波波形2.2. 实际波形2.2.1. 载波波形图 2-4 实际载波波形图2.2.2. 调制后的波形图 2-5 调试后的波形图1图 2-6 调试后的波形图22.3. 系统用户操作界面总体设计 图 2-7 系统用户操作界面结构图图 2-7为本设计的界面结构图,由于红外线通信与无线、蓝牙或者wifi通信有所不同,它是短距离、点对点直线数据传输,并且不具备穿墙性能,不会出现邻居操作时干扰到自家用电设备的情况4,因此无需设置用户,即装即用,即只需安装此软件便可立即使用,无需注册用户、用户登录等步骤8。由于每种电器的遥控器有所不同,如空调遥控器主要由开关、温度加减、定时等功能,电视遥控器具有调音量、上下调电视台、选择电视台等功能,因此对应也需要有不同的遥控器,所以本设计的应用软件首界面为电器类型选择,用户可以通过此界面快速选择自己要操控的电器类型;选择了电器类型后便是对应电器的遥控器。基本上的android手机没有内置红外发送与接收模块,本设计是采用智能手机外接红外发射头9。也正是如此,google官网没有可调用的API,网络上的资源甚少,也稍有书籍介绍相关知识,这无疑加大了开发难度。源代码的难度在于红外的发送与接收,其余就是按钮的响应。具体代码见附录。2.4. 选择电器类型界面图 2-8 选择电器界面图 2-8为电器选择界面,采用网格视图GridView来布局,网格视图是按行、列显示组件,GridView与ListView类似,都是采用适配器Adapter来提供显示数据,并且都可以显示不固定条目的数据,这也意味着想要添加一个条目的数据相当容易,也就是说现在可能只开发电视、空调、风扇和DVD遥控器,如果后面想加更多的电器无需重新布局,只要在源代码增加需要的数据就可以了。既然GridView和ListView类似,那为什么本设计采用GridView而不采用ListView呢?ListView以垂直列表的形式列出需要显示的数据,通常行高度比较小,GridView是以表格的形式列出需要显示的数据,通常用于显示图片,而本设计中选择电器需要每种电器有较大的点击空间,以方便用户操作,并且使用图片作引导,给用户良好的视觉效果,具有更人性化的用户界面,因此选用了GridView。2.5. 各个类型遥控介绍2.5.1. 空调遥控界面 图 2-9 空调遥控界面图 2-9为空调遥控界面,父布局采用垂直线性布局LinearLayout,此布局内又分四部分,如上图右,第一部分又采用了相对布局RelativeLayout,占父布局的1/10,用一个TextView来显示“空调遥控器”,并使之水平居中;第二部分采用了水平线性布局,占父布局的3/10,用一灰色图片作为背景,此布局内有两个部分,一个部分为指示图标,另一部分为温度指示部分;第三部分采用水平线性布局,占父布局的2/5,此布局内有三部分,一部分是显示开关按钮和风量按钮,一部分是调节温度按钮,还有一部分为模式、风向按钮;第四部分采用水平线性布局,占父布局的1/5,此布局内有4个按钮,各占此布局的1/4。以下是空调遥控界面各控件说明:TextView,显示遥控器类型;ImageView,用于显示制冷或者加热;ImageView,用于显示是否加湿;ImageView,用于显示温度;Button,用于打开或关闭空调;Button,用于风量;Button,用于将温度调高;Button,用于将温度调低;Button,用于调节加湿与否;Button,按下为左右摆风;11. Button,按下为上下摆风;12. Button,加热;13. Button,制冷;14. Button,设置定时时间;15. Button,其余按钮。2.5.2. 电视遥控界面 图 2-10 电视遥控界面图 2-10 电视遥控界面为电视遥控界面,父布局采用垂直线性布局,此布局内又分四部分,如上图右,第一部分又采用了相对布局RelativeLayout,占父布局的1/10,用一个TextView来显示“电视遥控器”,并使之水平居中;第二部分采用了相对布局,占父布局的1/5,此布局中有两个按钮,一个靠父布局左对齐,并与父布局的左边相聚10dip,一个靠父布局右对齐,并与父布局的右边相聚10dip;第三部分采用水平线性布局,占父布局的1/2,此布局内有三部分,一部分是显示调节目按钮,一部分是方向按钮,还有一部分为调节声音按钮;第四部分采用水平线性布局,占父布局的1/5,此布局内有4个按钮,各占此布局的1/4。TextView,显示遥控器类型;Button,用于打开或关闭电视机;Button,用于切换TV与AV;、Button,用于调电视台;、11.Button,用于调音量;12.Button,数字按钮;点开即可出现数字按钮与一个输入框,可在输入框输入电视台名称,即可选择输入相匹配的电视台。用户往往记不住某个电视台具体是什么数字,但有此输入框后无需一台一台上调或下调找某个电视台,有此输入框后相当方便、快捷;13.Button,详细菜单;14.Button,静音按钮;16. 15.Button,其余按钮。2.5.3. DVD遥控界面 图 2-11 DVD遥控界面图 2-11为DVD遥控界面,父布局采用垂直线性布局,此布局内又分五个部分,如上图右,第一部分又采用了相对布局RelativeLayout,占父布局的1/10,用一个TextView来显示“DVD遥控器”,并使之水平居中;第二部分采用了相对布局,占父布局的3/20,此布局中有两个按钮,一个靠父布局左对齐,并与父布局的左边相聚10dip,一个靠父布局右对齐,并与父布局的右边相聚10dip;第三部分采用水平线性布局,占父布局的1/2,此布局内有三部分,一部分是菜单按钮和静音按钮,一部分是方向按钮,还有一部分为调节声音按钮;第四部分采用水平线性布局,占父布局的3/20,此布局内有2组按钮,各占此布局的1/2,一组为暂停、开始按钮,一组为快退、快进按钮;第五部分采用线性布局,占父布局的1/10,此布局内有3组按钮,第一组为数字按钮,占此布局的1/4,第二组为上一曲、下一曲按钮,占此布局的1/2,第三组是扩展按钮,占此布局的1/4。2.5.4. 风扇遥控界面图 2-1212为风扇遥控界面,相对比较简单,在此不做说明。图 2-12 风扇遥控界面3. 硬件设计3.1. 硬件系统的总体设计3.1.1. 硬件设计框图图 3-1 硬件设计框图3.1.2. 电路原理图图 3-2 电路原理图本硬件系统主要分为3大部分,详见图 3-2分别是由红外发光二极管组成红外线发射部分、低功耗功率放大模块、锂电池充电智能管理模块组成的电源供电模块。3.2. 系统各个模块介绍3.2.1. 红外线发光二极管 图 3-3 红外发光二极管结构图红外线发光二极管的外形跟普通发光二极管LED极其相似,红外线发光二极管和发光二极管不同的是红外线发光二极管发出来的光线肉眼是看不到的1。PN结是红外线发光二极管的重要组成部分。PN结是采用不同的掺杂工艺,在同一块硅或者锗的半导体基片上使其一边形成N型半导体,另一边形成P型半导体,在P型半导体和N型半导体结合后,在N型半导体电荷区内电子占大多数而空穴较少,而P型半导体电荷区内空穴占大多数而电子较少,在P型半导体和N型半导体的交界处呈现出了空穴和电子的浓度差异2。在P型半导体和N型半导体的交界处附近形成离子薄层,由这个离子薄层形成的空间电荷区就称为PN结,也称耗尽层7。PN结具有单向导电性,是红外发光二极管的主要部分和物质材料基础7。3.2.2. 功率放大电路图 3-4 功率放大电路图 3-4为低功耗双级功率放大电路。该功率放大电路采用低功耗设计方案,在音频口无输入时Q1三极管处于截止状态,三极管Q2基极电压等于电源电压并且等于三极管Q3集电极电压,此时Q3三极管发射结处于截止状态,因此该电路在音频口无输入时静态电流极低可视为零,静态功耗极低。该低功耗设计方案不但可以减少消耗电池电能,还可以延长红外发光二极管的寿命。3.2.3. 电源模块图 3-5 电源模块图 3-5为本设计中的红外发射硬件模块的供电系统的电路原理图。TP4057锂电池管理芯片是该电源模块的主要组成部分,TP4057一款完整的单节锂离子电池充电器,带电池正负极反接保护,采用恒定电流/恒定电压线性控制6。其SOT封装与较少的外部元件数目使得TP4057便携式应用的理想选择。TP4057可以适合USB电源和适配器电源工作。由于采用了内部PMOSFET架构,加上防倒充电路,所以不需要外部检测电阻器和隔离二极管。热反馈可对充电电流进行自动调节,以便在大功率操作或高环境温度条件下对芯片温度加以限制。充满电压固定于4.2V,而充电电流可通过一个电阻器进行外部设置。当电池达到4.2V之后,充电电流降至设定值1/10,TP4057将自动终止充电。当输入电压(交流适配器或USB电源)被拿掉时,TP4057自动进入一个低电流状态,电池漏电流在2uA以下。TP4057的其他特点包括充电电流监控器、欠压闭锁、自动再充电和两个用于指示充电结束和输入电压接入的状态引脚。以下是400mA电流对600mAh的锂电池充电过程的曲线图。 图 3-6 TP4057TP4057封装引脚图 3-6,以下是对每个引脚的详细功能。 CHRG:漏极开路输出的充电状态指示端。当充电器向电池充电时,CHRG管脚被内部开关拉到低电平,表示充电正在进行;否则CHRG管脚处于高阻态。 GND:地。 BAT:充电电流输出。该引脚向电池提供充电电流并将最终浮充电压调节至4.2V。该引脚的一个精准内部电阻分压器设定浮充电压,在停机模式中,该内部电阻分压器断开。 VCC:正输入电源电压。该引脚向充电器供电。VCC的变化范围在4V至9V之间,并应通过至少一个1F电容器进行旁路。当VCC降至BAT引脚电压的30mV以内,TP4057进入停机模式,从而使IBAT降至2A以下。 STDBY:电池充电完成指示端。 当电池充电完成时STDBY被内部开关拉到低电平,表示充电完成。除此之外,STDBY管脚将处于高阻态。 PROG:充电电流设定、充电电流监控和停机引脚。在该引脚与地之间连接一个精度为1%的电阻器RPROG可以设定充电电流。当在恒定电流模式下进行充电时,引脚的电压被维持在1V。 PROG引脚还可用来关断充电器。将设定电阻器与地断接,内部一个2.5A电流将PROG引脚拉至高电平。当该引脚的电压达到2.7V的停机门限电压时,充电器进入停机模式,充电停止且输入电源电流降至40A。重新将RPROG与地相连将使充电器恢复正常操作状态。图 3-7是TP4057的内部结构图。图 3-7 内部结构图4. 系统制作与调试4.1. 制作所需的元器件红外线发光二极管、音频插头、锂电池、锂电池管理芯片TP4057、红色和绿色发光二极管、USB输入插座、阻容器件等。4.2. PCB设计图 4-1 系统PCB这是我第一次发到厂家做的PCB板,第一眼看到它的时候有点激动。在设计的过程中由于没有考虑到功率放大器静态功耗的原因,发射模块在没有使用的过程中电池的电量也会随着时间慢慢得减少,在老师和同学的帮助下,经过长时间的排查发现了该处设计错误。PCB在排列的时候尽量以“横平竖直”的排列方式,增强抗干扰能力。另外还遇到一个比较苦恼的问题是不同封装工艺型号的红外发光二极管的辐射角度有所不同,前期设计的时候采用的红外发光二极管的辐射角度较小,在使用的过程中红外发射管需要比较精确的对准接收头才能使用。在设计的过程中学到了不少的PCB设计技巧,本次PCB设计让我再次感悟到了电以及电路的奥妙。4.3. 实物制作图 4-2 实物图1图 4-3 实物图2图 4-4 实物图34.4. 制作与调试中遇到的问题及解决方法在焊接音频插头时,由于没有考虑到区分音频的地和左右声道,误焊接了,经过调试后发现并修改了此错误。在焊好电路板后,调试的过程中发现不能正常的工作,后来经过用万用表等仪器仔细排查后发现在功率放大电路的后级三极管的集电极引脚虚焊。5. 总结本设计从实际生活的角度出发,解决了目前生活上的现实问题10。在开始做本设计之前有一个设想,要是能用WIFI的方式来制作遥控器会更理想,因为现在目前大部分家庭都有WIFI。小米相信大家应该都不陌生,小米路由硬件配置的强悍型,足以用来开发家庭服务器,再结合传感器,就可以整合成现代化的数字家居。在实际的组装和调试过程中,会有许多的问题出现。一些小细节的疏忽,就会让你的整个模块都会宣告失败。所以,我花费了很大的时间和心力在调试的过程中,解决一个问题我就离成功就更进一步了。经过我的不懈努力,终于完成了!6. 致谢在这我要郑重谢谢我的指导老师李汪彪老师,汪彪老师从初期的论文选题、框架设计他都费劲心力的为我做了详细的指导。在此之前的学习中,汪彪老师为我各种大大小小的作品等,为我出谋划策,借此机会向我的导师表示衷心的感谢!在本次设计中我参考了许多有关的书籍和论文,在这里也向这些作者表示谢意。同时,我还要感谢周围的朋友和同学们,在毕业设计的这段时间里,你们给了我很多的启发和意见,这段时间你们给我的支持和帮助我会铭记在心!7. 参考文献1 夏华.张浩.吴启迪.赵炜. 一种通用嵌入式红外数据传输及遥控技术的实现方案及UITCP的设想A. 2003.2 王永华;周卫;詹宜巨,等.一种通用学习型红外遥控器设计与实现J/OL.自动化与信息工程,2005.3 赵瑛琪.用 8051 单片机接收红外遥控的实现J.电脑知识与技术.2006.4 罗凯,侯健.红外线信号的传输基于 MCU 的调制与解调的研究J.四川省通信学会2010 年学术年会论文集, 2010.5 周进波,张磊,张敏,等.基于Android系统蓝牙开发的研究与实现J.光学仪器,2013.6 李凯,张斌. 新型锂电池组智能管理模块的介绍J. 电源技术应用. 2006.7 龙乐. 发光二极管封装结构及技术J. 电子与封装. 2004.8 夏立连. 基于智能手机的家居控制系统的设计J. 科技创业月刊. 2009.9 魏秉国. 巧用手机检修红外遥控发射器J. 物理教学.2008.10 林小亮,吕杨. 智能红外遥控器系统的设计J. 黑龙江科技信息. 2009.8. 附录8.1. 附录1 系统原理图图 8-1 系统原理图8.2. 附录2 主要代码package com.example.sumxingir;import java.io.FileInputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import org.apache.http.util.EncodingUtils;import android.app.Activity;import android.content.Intent;import android.content.res.Resources;import android.graphics.Color;import android.os.Bundle;import android.os.Environment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.GridView;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView; public class room extends Activity String Temp;String STR=new String2;String rv=new String2;private MyAdapter adapter = null;private ArrayListMap array;GridView layout;String Kt=new String20; /Kt1 整体代码int Ktonof=0; / /Kt1 开关;String base=new String“”,”,”; / /0电平宽度1电平宽度;高电平宽度;int check=0 ;String Ktmode=new String10; /空调模式String Ktwendu=new String30; /温度变化量String Ktwind=new String10; /风变化量String Ktp3=new String“”,”,”,”,”,”; /空调其它按键String Ktp4=new String“”,”,”,”,”,”; /空调其它按键String Ktt2=new String“”,”,”,”,”,”; /空调其它按键int Count;String name=new String40 ;int image=new int40;String code=new String40;String mode=new String5;/ android.view.ViewGroup.LayoutParams lp ; /声明控件参数获取对象 LayoutParams lp; Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.room);GridView layout = (GridView) findViewById(R.id.gridview);RelativeLayout view = (RelativeLayout) findViewById(R.id.view);android.view.ViewGroup.LayoutParams lp ; /声明控件参数获取对象 LayoutParams lp;lp = view.getLayoutParams(); /获取控件参数:lp = 控件id.getLayoutParams();lp.height=0; view.setLayoutParams(lp);/ setContentView(layout); Intent intent=getIntent();Temp=intent.getStringExtra(“strcode”) ;setTitle(Temp);setTitleColor(Color.GREEN);Temp= readFileSdcard(Temp.trim(); STR=Temp.split(“rn”); /文件处理Count=0;for (int i=0 ;iSTR.length;i+) if (STRi.trim().length()10 )continue;if(STRi.substring(0, 2).equals(“*”)continue;if (STRi.substring(0, 2).equals(“+”)if (STRi.substring(0, 4).equals(“+”) Kt=STRi.trim().split(“/”);lp.height=150; view.setLayoutParams(lp); base=Kt1.trim().split(“,”);/ if(KtKt.length-1.trim().equals(“+”) )KtKt.length-1=”1111;check=1; /空调处理else / +/空调开关/20/power/251/+1 rv=STRi.split(“/”); int s=(Integer.parseInt(rv2); /按键位置号names=(rv1).trim();codes=(rv4+”,”+rv5); /指向代码位/ int k=Integer.parseInt(rv4); if (rv1.equals(“模式”)for(int j=4;jrv.length;j+) Ktmodej-4=rvj.trim();else if (rv1.equals(“温度+”) for(int j=4;jrv.length;j+)Ktwenduj-4=rvj.trim();else if (rv1.equals(“风量”) for(int j=4;jrv.length;j+)Ktwindj-4=rvj.trim();else if (rv1.equals(“空调开关”) Ktonof=Integer.parseInt(rv4.trim(); else if (rv6.equals(“p3) for(int j=4;jrv.length;j+)Ktp3j-4=rvj.trim(); else if (rv6.equals(“p4) for(int j=4;jrv.length;j+)Ktp4j-4=rvj.trim(); else if (rv6.equals(“t2) for(int j=4;jCount)Count=s; Resources res=getResources();images= res.getIdentifier(m, “drawable”, getPackageName(); else /一般按键处理rv=STRi.split(“/”);int s=(Integer.parseInt(rv1);names=(rv0);codes=(rv3);String m=rv2;if (sCount)Count=s; Resources res=getResources();images= res.getIdentifier(m, “drawable”, getPackageName();array = getData();adapter = new MyAdapter();layout.setAdapter(adapter);layout.setOnItemClickListener(new ItemClickEvent(); if(Ktonof!=0)/显示空调状态 show(); public String readFileSdcard(String fileName) /读取txt文件 / Temp=Environment.getExternalStorageDirectory()+”/SUMIR/code.txt”;String res = “”; try FileInputStream fin = new FileInputStream(Environment.getExternalStorageDirectory()+”/SUMIR/”+fileName+”.txt”); int length = fin.available(); byte buffer = new bytelength; fin.read(buffer); res = EncodingUtils.getString(buffer, “UNICODE”); fin.close(); catch (Exception e) e.printStackTrace(); return res; class MyAdapter extends ArrayAdapterMap MyAdapter() super(room.this, R.layout.mygrid, array);public ArrayListMap getList() return array;public View getView(int position, View convertView, ViewGroup parent) View row = convertView;/ String name1=new StringCount+1;name1=name;if (row = null) LayoutInflater inflater = getLayoutInflater();row = inflater.inflate(R.layout.mygrid, parent, false);ImageView imageView = (ImageView) row.findViewById(R.id.img);imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); imageView.setImageResource(Integer.valueOf(array.get(position).get(“img”).toString();TextView tv1 = (TextView) row.findViewById(R.id.txt); tv1.setText(nameposition); return (row); private ArrayListMap getData() ArrayListMap list = new ArrayListMap();for (int i = 0; i Count+1; i+) Map map = new HashMap();map.put(“img”, imagei);list.add(map); return list; /点击处理class ItemClickEvent implements AdapterView.OnItemClickListener String ircode;RelativeLayout view = (RelativeLayout) findViewById(R.id.view); Overridepublic void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) / Toast.makeText(room.this, namearg2, Toast.LENGTH_SHORT).show();arg1.setPressed(false);arg1.setSelected(false);if (codearg2!=null) if (codearg2.length()20 ) ircode=codearg2;elserv=codearg2.split(“,”);int k1= Integer.parseInt(rv0);int LimUP=Integer.parseInt(rv1);if(namearg2.substring(namearg2.length()-1).equals(“-”)opj(k1,0,LimUP); elseopj(k1,1,LimUP); /Kt 位置,上限ircode=readcode();if(KtKt.length-1.trim().equals(“+”) )ircode+=check(ircode);show();tryObject localObject = getSystemService(“irda”);localObject.getClass();localObject.getClass().getMethod(“write_irsend”, new Class String.class ).invoke(localObject, new Object ircode );return; catch (Exception localException)localException.printStackTrace(); private void opj ( int ktsit, int bb,int Lm) /+-操作 代码Ktktsit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土地别墅出租合同范本
- 墙面瓷砖维修协议合同
- 国外用工聘用合同范本
- 大卡车修车协议合同书
- 培训班老师的协议合同
- 外购土方购买合同范本
- 在哪解除网上合同协议
- 商铺托管经营合同范本
- 场地房租租赁合同范本
- 园林安装包工合同范本
- JTG∕T F30-2014 公路水泥混凝土路面施工技术细则
- 交通银行测评题库答案大全
- 矿山合规与法律风险防控
- 夜班管理中的质量控制和监督措施
- 钼评估项目可行性研究报告
- JCT2460-2018 预制钢筋混凝土化粪池
- 2019火灾自动报警系统施工及验收标准
- 安徽东昇木业股份有限公司年产80000m3中(高)密度纤维板技改项目环境影响报告表
- 乳糜泻:诊断与治疗指南
- 型糖尿病病程记录模板
- 铁路专用线建设工程竣工备案材料
评论
0/150
提交评论