用于控制智能家电的手机应用程序设计毕业论文.doc_第1页
用于控制智能家电的手机应用程序设计毕业论文.doc_第2页
用于控制智能家电的手机应用程序设计毕业论文.doc_第3页
用于控制智能家电的手机应用程序设计毕业论文.doc_第4页
用于控制智能家电的手机应用程序设计毕业论文.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南通大学本科毕业设计 论文 用于控制智能家电的手机用于控制智能家电的手机 应用程序设计毕业论文应用程序设计毕业论文 目 录 摘 要 I ABSTRACT II 第一章 绪 论 1 1 1 本课题研究的背景 1 1 2 课题任务 2 1 3 论文结构 2 第二章 开发环境和相关技术 3 2 1 Android 简介 3 2 2 Android software development kit SDK 3 2 3 Android 使用的语言 4 2 4 Eclipse 介绍 4 2 5 本章小节 4 第三章 控制智能家电的需求分析 5 3 1 系统描述 5 3 2 系统流程图 5 3 2 1 短信控制 5 3 2 2 网络控制 5 3 3 客户端功能的需求分析 6 3 4 客户端的其他需求分析 7 3 4 1 界面简洁 内容实用 7 3 4 2 设置功能 7 3 5 本章小结 7 第四章 客户端的功能设计 8 南通大学本科毕业设计 论文 4 1 客户端系统流程 8 4 2 项目前期需要解决的技术难点 8 4 2 1 数据的存储 9 4 2 2 数据的传输 10 4 2 3 短信的发送 10 4 2 4 网络通信 11 4 3 用户界面开发 12 4 3 1 屏幕生成方法 12 4 3 2 屏幕元素的层次 13 4 3 3 Android 布局 14 4 4 本章小结 15 第五章 客户端的功能实现 17 5 1 项目开发软硬件平台 17 5 2 项目创建 17 5 2 1 开发环境的搭建 17 5 2 2 创建 Android 工程 18 5 2 3 运行和调试程序 19 5 3 应用程序的构成 20 5 4 项目功能的实现 22 5 4 1 短信控制 22 5 4 2 网络控制 28 5 5 成果演示 30 5 5 1 程序安装 30 5 5 2 短信测试 31 5 5 3 网络测试 32 5 6 本章小结 35 结束语 36 6 1 论文工作总结 36 6 2 展望 36 参考文献 38 致 谢 39 南通大学本科毕业设计 论文 附 录 40 南通大学本科毕业设计 论文 1 第一章第一章 绪绪 论论 1 1 本课题研究的背景本课题研究的背景 手机也像电脑一样 有自己的操作系统 没有操作系统的手机就是一块砖头 目前 智能手机的系统主要有 Symbian Linux Palm BlackBerry WindowsMobile Android Mac os 排名不分先后 虽然有这么的多手机操作系统 但是由于时间原因 我只能选择一种系进行程序设计 我选择了 Android 那么我为什么选择 Android Android 比其他手机操作系统有什么优势 我认为有一下三点 一 Android 是开源的 1 开源社区对于软件行业的推动力已经没有人可以否认了 整个手机操作系统产品 也只有 Android 的开源力度是如此之大 二 Android 不单纯只是操作系统 Android 不只是一个操作系统而已 它包括了大量立即可用的类库和应用软件 例如 浏览器 WebKit 数据库 SQLite 让你可用轻易开发出来媲美桌面应用复杂度的手机软件 还有 Google 开发好的大量现成的应用软件 同时可以直接使用 Google 很多的在线服务 三 围绕 Android 形成了一个移动手机联盟 主要的手机厂商几乎全部在列 对于已 经形成的一个庞大的产业联盟的推动力来说 影响力是非常惊人的 2011 年 智能家电成为 IT 与家电领域最受追捧的趋势热点之一 5 月 11 日 Google 在 IO 意为 Innovation Editor editor sharedPreferences edit 获取编辑器 editor putString numeditor putInt port 54321 mit 提交修改 生成的 number xml 文件内容如下因为 SharedPreferences 背后是使用 xml 文件保存数据 getSharedPreferences name mode 方法的第一个参数用于指定该文件的名称 名称不用带后 缀 后缀会由 Android 自动加上 方法的第二个参数指定文件的操作模式 共有四种操作 南通大学本科毕业设计 论文 模式 这四种模式前面介绍使用文件方式保存数据时已经讲解过 如果希望 SharedPreferences 背后使用的 xml 文件能被其他应用读和写 可以指定 Context MODE WORLD READABLE 和 Context MODE WORLD WRITEABLE 权限 读取数据代码举例 SharedPreferences sharedPreferences getSharedPreferences number Context MODE PRIVATE getString 第二个参数为缺省值 如果 preference 中不存在该 key 将返回缺省值 String num sharedPreferences getString num 空 int port sharedPreferences getInt port 0 利用 SharedPreferences 就可以存储 读取数据了 4 2 2 数据的传输数据的传输 在 Android 系统中 Activity 是最今本的模块 一个屏幕通常就是一个 Activity 所以 在两个 Activity 之间传输数据非常常用 而在两个 Activity 之间切换主要用的是 Intent 类 就是要把数据通过 Intent 类一起传输到下一个 Activity 8 传输代码举例 Intent intent new Intent 新建一个 Intent 对象 intent setClass Activity this Activity01 class 制定 intent 要启动的类 Bundle bundle new Bundle 该类用作携带数据 bundle putString name 传输的数据 intent putExtras bundle 带走数据 startActivity intent 启动新类 4 2 3 短信的发送短信的发送 发送短信的关键程序是通过 SmsManager 对象的 sendTextMessage 方法来完成 其中 sendTextMessage 方法需传入五个值 依次是收件人地址 String 发送地址 String 发送服务 PendingIntent 与送达服务 PendingIntent 其中收件人与正文是不可为 null 的两个参数 9 发送简单短信主要代码 SmsManager smsManager SmsManager getDefault PendingIntent pintent PendingIntent getBroadcast Appliance this 0 new Intent 0 smsManager sendTextMessagenull 发送的内容 pintent null 不能忘记添加权限 增加拨打电话权限 AndroidManifest xml 代码如下 南通大学本科毕业设计 论文 这是需要添加权限的代码 4 2 4 网络通信网络通信 Android 中主要有有 HTTP 通行和 Socket 通信 在这里 我们用 Socket 通信 Socket 通常也称做 套接字 用于描述 IP 地址和端口 其实它就是网络通信过程中 端点的抽象表示 幸运的是 Java 在包 中提供了两个类 Socket 和 ServerSocket 分别用来表示双向连接的客户端和服务端 10 这是两个封装得非常好的类 使用起来很 方便 主要代码如下 Socket socket null socket new Socket 127 0 0 1 54321 DataOutputStream out new DataOutputStream socket getOutputStream DataInputStream in new DataInputStream socket getInputStream out writeUTF 发送的消息 向服务器发送信息 String mstr in readUTF 接受服务器的信息 不能忘记添加权限 增加网络通信权限 AndroidManifest xml 代码如下 南通大学本科毕业设计 论文 这是需要添加权限的代码 4 3 用户界面开发用户界面开发 4 3 1 屏幕生成方法屏幕生成方法 Android 生成屏幕有三种方式 11 xml 配置生成 通过你自己用户界面接口生成 直 接用代码生成 而我使用的是 droiddraw 软件 如图 4 3 直接设计界面 然后生成 xml 代码 然后配置生成 南通大学本科毕业设计 论文 图 4 3 droiddraw 主界面 4 3 2 屏幕元素的层次屏幕元素的层次 Android 应用程序的基础功能单元就是 Activity android app Activity 类中的一个对象 一个 Activity 可以做很多事 但是他自己并不会显示到屏幕上 想要让你的 Activity 显示 在屏幕上并且设计它的 UI 你需要使用 view 和 viewgroup Android 平台基础的用户界面 表达单元 7 1 Views View 是基础类的对象 它是一个存储有屏幕上特定的一个矩形内布局和内容属性的 数据结构 一个 View 对象处理测距和布局 绘图 焦点变换 滚动条 还有屏幕区域自 己表现的按键和手势 作为一个基类 为 widget 窗体部件 服务 widget 是一组用于绘制交互屏幕元素 的完全实现子类 Widget 处理它们自己的测距和绘图 所以你可以更快速地用它们去构 建你的 UI 可用到的 widget 包括 Text EditText InputMethod Button RadioButton Checkbox 和 ScrollView 等 2 Viewgroups 一个 ViewGroup 是一个 android view Viewgroup 类的对象 正如同它的名字表明的一 样 一个 viewgroup 是一个特殊的 view 对象 它的功能是去装载和管理一组下层的 view 和其他 viewgroup Viewgroup 让你可以为你的 UI 增加结构并且将复杂的屏幕元素构建成 一个独立的实体 group 类作为一个基类为 layout 布局 服务 layout 是一组提供屏幕界面通用类型 的完全实现子类 layout 让你可以为一组 view 构建一个结构 3 一个树形结构的界面 在 Android 平台上 你用 view 树和 viewgroup 节点来定义一个 Activity 的 UI 就如 同下面图表一样 这个树可以如你需要那样简单或者复杂 并且你可以使用 Android 的预 定义 widget 和 layout 或者你自定义的 view 类型来构建它 南通大学本科毕业设计 论文 ViewGroup ViewGroupViewView ViewViewView 图 4 4 Android 树形结构 要将屏幕绑定一个树以便于渲染 你的 Activity 调用它的 setContentView 方法并且 传递一个参数给根节点对象 一旦 Android 系统获得了根节点的参数 它就可以直接通过 节点来无效化 测距和绘制树 当你的 Activity 被激活并且获得焦点时 系统会通知你的 activity 并且请求根节点去测距并绘制树 根节点就会请求它的子节点去绘制它们自己 同时 每个树上的 viewgroup 节点负责绘制它的直接子节点 正如之前提到的 每个 viewgroup 都有测量它的有效空间 布局它的子对象 并且调 用每个子对象的 Draw 方法去绘制它们自己 子对象可能会请求获得一个它们在父对象 中的大小和位置 但是父对象对于每个子对象的大小和位置有最终的决定权 4 3 3 Android 布局布局 下面为在你的应用中为最普遍的 viewgroups 这里介绍每种类型的一些基本信息 12 1 Frame Layout 是最简单的一个布局对象 它被定制为你屏幕上的一个空白备用区域 之后你可以 在其中填充一个单一对象 比如 一张你要发布的图片 所有的子元素将会固定在屏幕 的左上角 你不能为 FrameLayout 中的一个子元素指定一个位置 后一个子元素将会直接 在前一个子元素之上进行覆盖填充 把它们部份或全部挡住 除非后一个子元素是透明 的 2 Linear Layout 以你为它设置的垂直或水平的属性值 来排列所有的子元素 所有的子元素都被堆 放在其它元素之后 因此一个垂直列表的每一行只会有一个元素 而不管他们有多宽 南通大学本科毕业设计 论文 而一个水平列表将会只有一个行高 高度为最高子元素的高度加上边框高度 LinearLayout 保持子元素之间的间隔以及互相对齐 相对一个元素的右对齐 中间对齐或 者左对齐 还支持为单独的子元素指定 weight 好处就是允许子元素可以填充屏幕上的剩余空 间 这也避免了在一个大屏幕中 一串小对象挤成一堆的情况 而是允许他们放大填充 空白 子元素指定一个 weight 值 剩余的空间就会按这些子元素指定的 weight 比例分配 给这些子元素 默认的 weight 值为 0 例如 如果有三个文本框 其中两个指定了 weight 值为 1 那么 这两个文本框将等比例地放大 并填满剩余的空间 而第三个文本框不会 放大 3 Table Layout 将子元素的位置分配到行或列中 android 的一个 TableLayout 由许多的 TableRow 组 成 每个 TableRow 都会定义一个 row 事实上 你可以定义其它的子对象 这在下面会 解释到 TableLayout 容器不会显示 row cloumns 或 cell 的边框线 每个 row 拥有 0 个 或多个的 cell 每个 cell 拥有一个 View 对象 表格由列和行组成许多的单元格 表格允 许单元格为空 单元格不能跨列 这与 HTML 中的不一样 在 控制空调 中最常用的是 Linear Layout 布局 其实一个 xml 文件如下 4 4 本章小结本章小结 本节主要分为三个模块来进行阐述 需要关注的几个技术难点 在 4 2 节中进行了详 细地解答包括 数据的存储 将设置好的号码 IP 接口要存储到手机里去 方便用户使 用 数据的传输 在两个 Activity 之间传递数据 短信的发送 网络连接问题 并且举例 说明了如何应用 4 3 节通过对 UI 设计的分析 使读者了解到屏幕生成的方法 屏幕元 南通大学本科毕业设计 论文 素的层次 以及 Android 布局 通过解决以上的技术难点和客户端的 UI 设计 才能更好 的制作软件 少走弯路 南通大学本科毕业设计 论文 17 第五章第五章 客户端的功能实现客户端的功能实现 5 1 项目开发软硬件平台项目开发软硬件平台 硬件平台 1 电脑一台 CUP Intel core2 T9900 内存 1G DDR3 2 智能手机一部 800MHz 处理器 3 7 英寸 WVGA 分辨率 480 x800 内置 2G 内存 运行内存 512M 操作系统 Android 2 1 update1 3 手机配套 USB 数据线一根 4 SIM 卡一张 软件平台 操作系统 window xp 程序语言 Java Xml 开 发 包 JDK 1 6 Android SDK 2 1 update1 开发工具 Eclipse3 4 Android Development Tools 1 1 ADT 插件 5 2 项目创建项目创建 5 2 1 开发环境的搭建开发环境的搭建 所需开发环境 13 JDK 5 或以上版本 仅有 JRE 不够 Eclipse 3 4 或以上版本 第一步是安装 JDK 和配置 Java 开发环境 下载好最新版的 JDK 然后安装 安装包 中包含了 JDK 和 JRE 两个部分 然后配置电脑的环境变量 第二部是安装用于在 Eclipse 开发 android 应用的 ADT 插件 启动 Eclipse 选择 Help Install New Software 在出现的对话框里 点击 Add 按钮 在对话框的 name 一栏 输入 ADT 然后点击 Archive 浏览和选择已经下载的 ADT 插件压缩文件 点击 OK 返回可用软件的视图 你会看到这个插件 然后选择 Developer Tools 会选中下面 南通大学本科毕业设计 论文 的 Android Developer Tools 和 Android Editors 点击 Next 最后重启 Eclipse 第三部是安装 Android SDK Android SDK 包含了开发 Android 应用所依赖的 jar 文 件 运行环境及相关工具 下载完 SDK 后 把 zip 文件解压到你电脑上合适位置 启动 Eclipse 选择 window preferences 在打开的视图左边点击 android 在右边的 SDK Location 中选择 Android SDK 所在位置 这样 安装环境就配置好了 可以在 Android 平台上开发我们的应用了 5 2 2 创建创建 Android 工程工程 搭建好开发环境之后 我们来创建工程 1 选择 File New Project 2 选择 Android Android Project 点击 Next 图 5 1 创建工程 图 5 2 项目框架 3 创建一个新的 Android 工程 如图 5 1 所示 Build target 选择 Android 2 1 update1 Project name 在计算机中存储工程的目录名 Intelligent appliance Package name 包名 请参考 Java 相关的概念 com yarin Android appliance Activity name UI 界面窗口的类名 从 Activity 继承而来 appliance 南通大学本科毕业设计 论文 Application name 应用的标题名字 Intelligent appliance 4 项目框架 如图 5 2 所示 Src 存放工程的代码 Gen 系统自动生成的 Rjava 这个类是系统根据 res 文件夹中的内容自动生成的 assets 主要放置多媒体等数据文件 Res 其中包括 drawable layout values 等文件夹 用来存放工程中用到的文字 图 片等等资源 以及工程 UI 的布局文件 其中 res drawable 放置应用到的图片资源 res layout 放置一些与 Ul 相应的布局文件 都是 xml 文件 res values 放置字符串 颜色 数组等常量数据 AndroidManifest xml 相当于应用的配置文件 描述了 package 中的全局数据 包括 了 package 中暴露的组件 activities services 等等 他们各自的实现类 各种能被处理 的数据和启动位置 此文件一个重要的地方就是它所包含的访 intent filters 这些 filters 描述了 activity 启动的位置和时间 5 2 3 运行和调试程序运行和调试程序 对一个创建好的 Android 应用工程或模块进行测试 可以有两种方法 一种是通过真 机测试 另外一种就是利用 Android Emulator 下面将对这两种调试方法作介绍 14 Android Emulator 是一款功能非常齐全的模拟器 电话本 通话等功能都可进行模 拟 甚至其内置的浏览器可以联网 用户可以使用键盘输入 单击模拟器按键输入 甚 至还可以使用鼠标单击 拖动屏幕进行操作 程序完成后就可以点击运行来测试程序 显示图 5 3 所示 南通大学本科毕业设计 论文 图 5 3 Android Emulator 如果想用真机来调试 在把工程的 apk 文件安装到手机前 需要先安装一个手机驱动 驱动装好后 接下来的工作是通过 USB 线连接好开发手机和 PC 连接好手机和 PC 后 就可以运行应用程序了 选择要运行的工程 run as Android Application 这样应用程序 apk 文件将被安装在手机 shell 的 data app 目录中 并立即启动应用程序 然后就可进行调 试了 5 3 应用程序的构成应用程序的构成 对于一个 Android 应用程序来说 是由四种构造块组织而成的 这四种构造块如下 15 Activity Intent Receiver Service Content Provider 但是 并不是每一个 Android 应用程序都需要这四种构造块 这不是必须的 某些时 候 我们只需要这四种中的几种组合成我们的应用 当我们明确了我们的应用需要哪些构造块后 我们就需要在 AndroidManifest xml 中 登记这些构造块的清单 这是一个 XML 配置文件 这个配置文件用于定义我们的应用程 南通大学本科毕业设计 论文 序的组件 组件的功能及必要条件等 这个配置文件是每个 Android 应用必需的 对于 AndroidMainfest xml 的 Schema 参考 SDK 包附带的文档 以下 我们对四种构造块做一 些说明 1 Activity Activity 是 Android 构造块中最基本的一种 在应用中 一个 activity 通常就是一个单 独的屏幕 每一个 activity 都被实现为一个独立的类 并且继承于 Activity 这个基类 这 个 activity 类将会显示由几个 Views 控件组成的用户接口 并对事件做出响应 大部份的 应用都会包含多个的屏幕 例如 一个短消息应用程序将会有一个屏幕用于显示联系人 列表 第二个屏幕用于写短消息 同时还会有用于浏览旧短消息及进行系统设置的屏幕 每一个这样的屏幕 就是一个 activity 从一个屏幕导航到另一个屏幕是很简单的 在一 些应用中 一个屏幕甚至会返回值给前一个屏幕 8 当一个新的屏幕打开后 前一个屏幕将会暂停 并保存在历史堆栈中 用户可以返 回到历史堆栈中的前一个屏幕 当屏幕不再使用时 还可以从历史堆栈中删除 默认情 况下 Android 将会保留从主屏幕到每一个应用的运行屏幕 Android 使用了 Intent 这个特殊类 实现在屏幕与屏幕之间移动 Intent 类用于描述 一个应用将会做什么事 在 Intent 的描述结构中 有两个最重要的部分 动作和动作对应 的数据 典型的动作类型有 MAIN activity 的门户 VIEW PICK EDIT 等 而动作 对应的数据则以 URI 的形式进行表示 例如 要查看一个人的联系方式 你需要创建一 个动作类型为 VIEW 的 intent 以及一个表示这个人的 URI 与之有关系的一个类叫 IntentFilter 相对于 intent 是一个有效的做某事的请求 一个 intent filter 则用于描述一个 activity 或者 Intent Receiver 能够操作哪些 intent 一个 activity 如果要显示一个人的联系方式时 需要声明一个 IntentFilter 这个 IntentFilter 要 知道怎么去处理 VIEW 动作和表示一个人的 URI IntentFilter 需要在 AndroidManifest xml 中定义 通过解析各种 intent 从一个屏幕导航到另一个屏幕是很简单的 当向前导航时 activity 将会调用 startActivity Intent myIntent 方法 然后 系统会在所有安装的应用程序 中定义的 IntentFilter 中查找 找到最匹配 myIntent 的 Intent 对应的 activity 新的 activity 接收到 myIntent 的通知后 开始运行 当 startActivity 方法被调用将触发解析 myIntent 的 动作 这个机制提供了两个关键好处 A Activities 能够重复利用从其它组件中以 Intent 的形式产生的一个请求 B Activities 可以在任何时候被一个具有相同 IntentFilter 的新的 Activity 取代 南通大学本科毕业设计 论文 2 Intent Receiver 当你希望你的应用能够对一个外部的事件 如当电话呼入时 或者数据网络可用时 或者到了晚上时 做出响应 你可以使用一个 Intent Receiver 虽然 Intent Receiver 在感 兴趣的事件发生时 会使用 NotificationManager 通知用户 但它并不能生成一个 UI Intent Receiver 在 AndroidManifest xml 中注册 但也可以在代码中使用 Context registerReceiver 进行注册 当一个 intent receiver 被触发时 你的应用不必对请求 调用 intent receiver 系统会在需要的时候启动你的应用 各种应用还可以通过使用 Context broadcastIntent 将它们自己的 intent receiver 广播给其它应用程序 3 Service 一个 Service 是一段长生命周期的 没有用户界面的程序 比较好的一个例子就是一 个正在从播放列表中播放歌曲的媒体播放器 在一个媒体播放器的应用中 应该会有多 个 activity 让使用者可以选择歌曲并播放歌曲 然而 音乐重放这个功能并没有对应的 activity 因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的 在这个例子 中 媒体播放器这个 activity 会使用 Context startService 来启动一个 service 从而可以在 后台保持音乐的播放 同时 系统也将保持这个 service 一直执行 直到这个 service 运行 结束 另外 我们还可以通过使用 Context bindService 方法 连接到一个 service 上 如 果这个 service 还没有运行将启动它 当连接到一个 service 之后 我们还可以 service 提 供的接口与它进行通讯 拿媒体播放器这个例子来说 我们还可以进行暂停 重播等操 作 4 Content Provider 应用程序能够将它们的数据保存到文件中 SQL 数据库中 甚至是任何有效的设备 中 当你想将你的应用数据与其它的应用共享时 Content Provider 将会很有用 一个 Content Provider 类实现了一组标准的方法 从而能够让其它的应用保存或读取此 Content Provider 处理的各种数据类型 5 4 项目功能的实现项目功能的实现 控制空调 客户端有两个主要界面 分别是 短信控制 网络控制 下面分别对 两个界面进行分析 5 4 1 短信控制短信控制 短信控制主要是面对简单的模块的用户 这些模块不能联网 但是可以通过接收短 信来控制家电 软件打开后显示如图 5 4 所示的界面 南通大学本科毕业设计 论文 图 5 4 短信控制界面 图 5 5 开关控制界面 客户端上可以设定空调上常用的 5 种控制 先是电源 点击打勾的方框 勾变成绿 色的时候代表电影打开 灰色的就是关闭 如图 5 5 所示 实现此功能的主要代码是 11 public void onCheckedChanged CompoundButton buttonView boolean isChecked if checkBox isChecked Toast makeText Appliance this 电源开关已打开 Toast LENGTH SHORT show a 1 else Toast makeText Appliance this 电源开关已关闭 Toast LENGTH SHORT show a 0 然后是运行模式 分别为制冷 制热 除湿 送风四种模式 点击白色的框就可以 选择 如图所示 下面的温度 风速 定时时间都和设定模式一样操作 如图 5 6 所示 南通大学本科毕业设计 论文 图 5 6 下拉菜单界面 实现的代码主要是 private static final String mode 制 冷 制 热 除 湿 送 风 s1 Spinner findViewById R id mode adapter new ArrayAdapter this android R layout simple spinner item mode adapter setDropDownViewResource android R layout simple spinner dropdown item s1 setAdapter adapter 将 ArrayAdapter 添加 Spinner 对象中 s1 setOnItemSelectedListener new Spinner OnItemSelectedListener public void onItemSelected AdapterView arg0 View arg1 int arg2 long arg3 b arg2 public void onNothingSelected AdapterView arg0 然后就是设置 点击手机上的 菜单 按钮或者是 menu 按钮会显示如图 5 7 的 界面 点击设置后会弹出图 5 7 的对话框 根据对话框提示可以设置号码用来传递信息 南通大学本科毕业设计 论文 图 5 7 菜单设置界面 实现上述功能的主要代码是 菜单设置代码 public boolean onCreateOptionsMenu Menu menu menu add 0 0 0 设置 menu add 0 1 1 关于 menu add 0 2 2 退出 return super onCreateOptionsMenu menu 菜单响应 public boolean onOptionsItemSelected MenuItem item super onOptionsItemSelected item switch item getItemId case 0 Intent intent new Intent intent setClass this Dialog class startActivity intent break case 1 南通大学本科毕业设计 论文 Toast makeText this 本软件由南通大学 n 电子信息学院 n 信 071 班 孙钎 制作 Toast LENGTH LONG show break case 2 this finish break return true 弹出对话框设置代码 super onCreate savedInstanceState SharedPreferences sharedPreferences getSharedPreferences number Context MODE PRIVATE String name sharedPreferences getString name 无 LayoutInflater factory LayoutInflater from Dialog this final View DialogView factory inflate R layout dialog null AlertDialog dialog1 new AlertDialog Builder Dialog this setCancelable false 返回键不可用 setTitle 设置号码 setMessage 现在设置的号码是 n name setView DialogView 设置样式 setPositiveButton 确定 new DialogInterface OnClickListener public void onClick DialogInterface dialo int arg1 num2 EditText DialogView findViewById R id num number1 num2 getText toString SharedPreferences sharedPreferences getSharedPreferences number Context MODE PRIVATE Editor editor1 sharedPreferences edit 获取编辑器 if number1 trim length 0 editor1 putString name number1 if mit 南通大学本科毕业设计 论文 String name sharedPreferences getString name 无 Toast makeText Dialog this 设置的新号码是 name Toast LENGTH SHORT show Dialog this finish 提交修改 else Toast makeText Dialog this 出错 Toast LENGTH SHORT show Dialog this finish else Toast makeText Dialog this 输入的号码不能为空 n 号码设置不变 Toast LENGTH SHORT show Dialog this finish setNegativeButton 取消 new DialogInterface OnClickListener public void onClick DialogInterface dialo int arg1 Dialog this finish create 创建按钮 dialog1 show 显示对话框 设置好需要空调的状态和号码之后 就可以点击 发送 按钮进行发送短信 发送 成功后会显示 发送成功 字样 发送的内容是根据设定的状态生成的不同代码 只要 接收方根据接收到短信后对代码进行解析然后达到控制空调的目的 点击网络控制按钮就会切换到网络模式 这里用到了 Intent 类 切换代码是 b2 setOnClickListener new Button OnClickListener public void onClick View v Intent intent new Intent intent setClass Appliance this Socket1 class startActivity intent Appliance this finish 5 4 2 网络控制网络控制 切换到网络模式下会显示如图 5 7 所示的界面 网络模式和短信模式的总体外观是一样的 也是显示 5 中控制 不过多了一个 获 南通大学本科毕业设计 论文 取信息设备 的按钮 这也是网络模式的一个好处 可以查看需要控制空调的状态 点击手机上的 菜单 按钮或者是 menu 按钮 然后点击设置后会弹出图 5 9 的 对话框 这里显示的就和短信控制不一样了 因为是网络传输 需要设置服务器的 IP 地 址和端口号 根据对话框提示就可以设置 IP 地址和端口号了 设置好就可以进行数据传 输了 图 5 8 网络控制界面 图 5 9 设置 IP 对话框 点击 获取信息设备 按钮后 客户端会通过网络发送数据给设置好的服务端 然 后服务器端通过判断数据返回一些设备状态的数据 手机接收后显示如图 5 10 所示 南通大学本科毕业设计 论文 图 5 10 获取设备状态 实现功能的主要代码是 socket new Socket ip1 port1 DataOutputStream out new DataOutputStream socket getOutputStream DataInputStream in new DataInputStream socket getInputStream 向服务器发送信息 out writeUTF 1 接受服务器的信息 String mstr in readUTF if mstr null Intent intent new Intent intent putExtra cont mstr intent setClass Socket1 this Post class startActivity intent 然后就可以根据现在的状态设置你想要设置的内容点击 发送 即可 发送成功后 会显示 恭喜你 发送成功 字样 发送的内容是根据设定的状态生成的不同代码 只要服务器接收到代码 然后对代码进行解析然后达到控制空调的目的 南通大学本科毕业设计 论文 5 5 成果演示成果演示 5 5 1 程序安装程序安装 先打开所建工程的文件夹 打开 bin 文件夹 会看到如图 5 11 所示的 Intelligent application apk 的 apk 文件 把这个文件复制到手机内存卡里面 然后进入文件管理打开 安装即可 安装好后会显示如图 5 12 所示图标 图 5 11 apk 文件 图 5 12 图标 点击打开 Intelligent application 图标显示如图 5 13 所示的短信控制界面 然后点击网 络控制会显示如图 5 14 所示的网络控制界面 南通大学本科毕业设计 论文 图 5 13 短信控制界面 图 5 14 网络控制界面 5 5 2 短信测试短信测试 短信模式主要是为了测试能否发送短信 所以我找了另一部手机进行短信测试 先 在短信模式下设置号码 如图 5 15 所示 设置好之后设置空调状态然后点击 发送 按 钮 显示 发送成功 1 1 20 1 30 如图 5 16 这里的 1 1 20 1 30 是控制代码 是根据用户不同的设置显示出的不同数字 过了几秒钟 右边的手机短信铃声响起 显 示收到短信 如图 5 17 打开短信 显示 1 1 20 1 30 如图 5 17 测试成功 图 5 15 设置号码 南通大学本科毕业设计 论文 图 5 16 发送成功 图 5 17 收到短信 图 5 18 短信内容 5 5 3 网络测试网络测试 网络测试主要是为了测试客户端能否通过网络连接到服务器 这个测试主要需要一台能连接外网的电脑 测是的电脑上已经安装好了 Java 服务器 所以可以直接测试 先查看电脑连接外网的 IP 地址 如图 5 19 所示 显示的 IP 地址是 117 95 171 232 然后在手机上根据 IP 设置服务器地址为 117 95 171 232 端口为 54321 如图 5 20 所示 南通大学本科毕业设计 论文 图 5 19 IP 地址 图 5 20 设置服务器地址 设置好之后点击 获取信息设备 按钮 服务器端显示 有客户端连接到服务器 接收到的数据是 1 客户端显示如图 5 21 所示 这里 1 是获取的代码 由于服务器 端只是测试用 所以显示的都是无状态 测试成功 然后设置空调状态点击发送 服务器端显示 有客户端连接到服务器 接收到的数 据是 1 0 20 3 90 客户端显示 恭喜你 发送已经成功 如图 5 22 所示 测试成 南通大学本科毕业设计 论文 功 图 5 21 获取信息设备测试 图 5 22 发送测试 南通大学本科毕业设计 论文 5 6 本章小结本章小结 本章具体说明手机远程控制空调功能的实现 几乎每个功能都有图片和主要代码 让读者能一目了然 其中 5 1 节介绍了软件开发的软硬件平台 通过 5 2 和 5 3 的介绍 让读者了解如何在 Android 开发环境下创建自己的工程 如何运行和调试程序 以及清楚 的了解应用程序由哪些组件构成 最后成果演示检验了软件的可用性 经过测试可以看 出客户端的两个功能都可以实现 由此证实了客户端的可用性 南通大学本科毕业设计 论文 36 结束语结束语 6 1 论文工作总结论文工作总结 本论文主要论述在 Android 手机操作系统上进行手机应用程序的开发 以 控制空调 客户端的开发为实例详细讲述了 Android 平台下制作手机应用程序的全过程 在对这个应 用的设计开发过程中 基本上都是本人独立完成 在遇到问题时通过查阅相关资料 询 问老师 最后终于完成设计 从对该系统的需求理解 到框架设计 最后到代码的实现 在这个实践过程中 本 人更进一步加深了对 Android 系统编程理解 这次毕业设计 是我初次接触了 Android 操 作系统的编程 只能边做边学 对该系统的四大组件及它们各自的生命周期有了一定的 理解 但在线程处理上还有待进一步的理解 有些更深入 复杂的知识还要进一步学习 在完成这次毕业设计的过程中 本人请教了老师和学长 了解到了要有团队精神 和他们经常沟通 不能总是一个人独自思考 吾常终日而思矣 不如须臾至所 学多听 听别人的意见 或许会有柳暗花明又一村的感觉 6 2 展望展望 手机作为最主要的智能终端正越来越被人所关注 手机用户已经非常多 同时还在 快速增长 随着全球 3G 进入快速成长期 中国也开始了 3G 产业的大规模建设 联通的 WCDMA 移动的 TD CDMA 和电信的 CDMA2000 都发展的很好 3G 在中国手机市场发 展潜力巨大 另外从厂商的角度来看 3G 牌照的发放会促使不少手机用户升级产品 用 户的需求会促使手机的市场爆发 所以中国手机市场前景广阔 手机应用程序需求剧增 根据新闻报道 有时候 民用与军用并没有明显界限 能拍普通照片 就能在战场 获取情报信息 能通话 就能传递情报 如今更有人进一步开发手机功能 其中的智能 手机便可以操纵无人机进行情报侦察 帮助狙击手精确射击 甚至是发射导弹轰炸锁定 目标 2009 年 8 月 驻阿富汗英军部队神秘的 狙击手小组 在 1853 米之外精确击中了 一名塔利班司令官 致其死亡 此举不但创造了当时英军狙击手 最远射杀纪录 也令世 人瞩目 据称 他们的 秘密法宝 便是手中的智能手机 而前不久有消息称 雷神公司将 与谷歌合作 在智能手机上集成查看高清卫星影像 无人侦察机视频等功能 可以定焦 于汽车车牌号 人的面部特征等细节 甚至可以登入 爱国者 导弹控制系统 获取重要的 南通大学本科毕业设计 论文 发射信息 用来发射导弹 由此可见 用智能手机进行远程控制等功能在不久的将来一定会成为主流 而作为现在最流行的 Android 手机操作系统 Android 手机平台可以说在国内某些地 区还是刚刚处于起步阶段 但是中国手机应用市场还是存在巨大的潜力 中国手机应用 发展的速度非常迅猛 在人们未来生活中 手机起着至关重要的作用 成为人们生活中 不可或缺的一部分 而手机控制智能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论