移动软件开发课程设计
移动应用开发的课程设计

移动应用开发的课程设计一、课程目标知识目标:1. 理解移动应用开发的基本概念,掌握开发环境的搭建与使用;2. 学会使用移动应用开发的基本编程语言和开发工具,如Java、Kotlin、Xcode等;3. 掌握移动应用界面设计的原则和布局方法,能独立设计美观、易用的用户界面;4. 了解移动应用的发布与测试流程,掌握基本的应用调试技巧。
技能目标:1. 能够运用所学的编程知识和开发工具,独立完成简单的移动应用项目;2. 培养学生团队协作能力,通过小组合作完成较为复杂的移动应用开发任务;3. 提高学生的创新意识和问题解决能力,能够针对实际问题提出合理的移动应用解决方案;4. 培养学生具备良好的编程习惯,编写出高质量的代码。
情感态度价值观目标:1. 培养学生对移动应用开发的兴趣和热情,激发其学习主动性和探究精神;2. 培养学生具备良好的沟通能力和团队协作精神,尊重他人的意见和成果;3. 增强学生的版权意识,尊重知识产权,遵循法律法规,树立正确的道德观念;4. 培养学生关注社会发展,关注移动应用领域的前沿动态,提高其时代责任感。
本课程针对高年级学生,结合移动应用开发学科特点,注重理论知识与实践操作相结合,旨在培养学生的编程技能和创新能力。
课程目标旨在让学生掌握移动应用开发的基本知识和技能,培养其团队协作和问题解决能力,同时注重培养学生的情感态度价值观,使其成为具备社会责任感和创新精神的人才。
在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 移动应用开发概述- 了解移动应用的发展历程、分类及市场现状;- 熟悉主流移动操作系统及开发平台。
2. 开发环境搭建- 安装并配置Android Studio、Xcode等开发工具;- 学习使用模拟器和真机进行应用测试。
3. 编程语言基础- 掌握Java、Kotlin、Swift等编程语言的基本语法;- 学习面向对象编程思想,理解类与对象、继承与多态等概念。
软件技术专业优质课移动应用开发与设计

软件技术专业优质课移动应用开发与设计在软件技术专业中,移动应用开发与设计是一门非常重要的课程。
随着智能手机的普及和移动互联网的快速发展,移动应用已经成为人们生活中必不可少的一部分。
本文将介绍软件技术专业中优质的移动应用开发与设计课程的内容和要求。
一、课程概述移动应用开发与设计课程是软件技术专业中的一门核心课程,旨在培养学生在移动应用领域的设计和开发能力。
课程内容主要包括移动应用的需求分析、界面设计、程序开发以及测试和发布等方面,通过理论讲解和实践操作相结合的方式,帮助学生掌握移动应用开发的基本知识和技能。
二、课程目标1.理解移动应用开发的基本原理和方法;2.掌握移动应用开发的常用工具和技术;3.能够进行移动应用的需求分析和界面设计;4.具备移动应用开发的编程能力;5.能够进行移动应用的测试和发布。
三、课程内容1.移动应用需求分析:学习如何进行移动应用的需求分析,了解用户的需求和期望,确定应用的功能和界面设计;2.移动应用界面设计:学习界面设计的基本原则和方法,掌握常用的设计工具和技术,设计出具有良好用户体验的界面;3.移动应用程序开发:学习移动应用的编程语言和开发框架,掌握常用的开发工具和技术,能够编写简单的移动应用程序;4.移动应用测试和发布:学习移动应用的测试方法和技巧,了解应用发布的流程和要求,能够进行应用的测试和发布。
四、教学方法1.理论教学:通过讲解移动应用开发的基本原理和方法,为学生建立起正确的思维方式和理论基础;2.实践操作:通过实践操作,让学生亲自动手进行移动应用开发和设计,巩固所学知识和技能;3.案例分析:通过分析真实的移动应用案例,引导学生进行思考和讨论,加深对课程内容的理解和应用能力。
五、课程评价1.课堂表现:包括作业完成情况、课堂参与和发言等;2.实验成绩:包括实验操作的准确性和完成度;3.课程设计:包括课程设计方案的合理性和实施效果;4.考试成绩:包括理论知识掌握情况和应用能力。
软件技术专业移动应用开发课程优秀教案范本从零开始开发一款实用的移动应用程序

软件技术专业移动应用开发课程优秀教案范本从零开始开发一款实用的移动应用程序软件技术专业移动应用开发课程优秀教案范本:从零开始开发一款实用的移动应用程序一、引言移动应用程序(Mobile Application)是指可以在移动设备上运行的软件应用。
随着智能手机和平板电脑的普及,移动应用开发成为了软件技术专业的重要领域之一。
本教案旨在引导学生从零开始开发一款实用的移动应用程序,既包括理论知识的学习,也包括实际项目的实践操作。
二、教学目标本教案的教学目标如下:1.了解移动应用开发的基础知识和技术要点;2.掌握移动应用开发的常用工具和框架;3.具备利用移动应用开发技术从零开始开发一款实用的移动应用程序的能力;4.培养学生的创新思维和团队合作能力。
三、教学内容本教案的教学内容主要分为以下几个部分:1.移动应用开发概述1.1 移动应用开发的背景和趋势1.2 移动应用开发的基本流程和步骤2.移动应用开发环境的搭建2.1 开发工具的选择和安装2.2 移动操作系统的了解与调试3.移动应用开发技术要点3.1 移动应用的界面设计与布局3.2 移动应用的用户交互与事件处理3.3 移动应用的数据存储与管理3.4 移动应用的网络通信与数据传输4.案例实战:从零开始开发一款实用的移动应用程序 4.1 项目需求分析与功能设计4.2 项目架构与模块划分4.3 编码实现与调试测试4.4 项目发布与上线四、教学方法本教案将采用以下教学方法:1.理论教学与实践结合:将理论知识与实际项目相结合,通过案例实战让学生动手实践。
2.团队合作与项目管理:通过小组合作方式进行项目开发,培养学生的团队合作和项目管理能力。
3.案例分析与思考训练:通过分析实际案例,培养学生的问题解决能力和创新思维。
五、教学评估1.作业与实验报告:学生需完成相关作业和实验,并提交相应的报告进行评估。
2.项目成果展示与评审:学生将形成的移动应用程序进行展示和评审。
3.课堂参与与互动:学生在课堂上的积极参与和互动将作为教学评估的重要依据。
J2ME移动应用开发课程设计 (2)

J2ME移动应用开发课程设计1. 简介随着移动互联网的飞速发展,移动应用的重要性越来越突出。
Java平台微型版(Java 2 Platform, Micro Edition, J2ME)是一种专门针对嵌入式设备制定的Java平台,可用于开发移动设备上的Java应用程序。
本课程设计旨在介绍J2ME 移动应用开发的基础理论和实践技术,帮助学生熟悉J2ME平台,掌握常用的应用程序开发技术,提升移动应用开发水平。
2. 学习目标1.了解J2ME平台的基础知识和发展历程。
2.熟悉J2ME开发环境的配置和使用。
3.掌握J2ME移动应用程序的基本开发技术。
4.能够开发一个简单的J2ME移动应用程序。
3. 课程安排3.1 第一周:J2ME平台介绍主要内容:J2ME平台概述、J2ME体系结构、J2ME应用程序类型、J2ME与J2SE 的区别与联系。
3.2 第二周:J2ME开发环境搭建主要内容:J2ME开发环境介绍、J2ME IDE Eclipse的安装与配置、J2ME手机模拟器的安装与使用、J2ME开发的准备工作。
3.3 第三周:J2ME应用程序开发基础主要内容:J2ME应用程序的结构、J2ME应用程序的生命周期、J2ME界面设计与事件处理、J2ME应用程序的调试与测试。
3.4 第四周:J2ME应用程序开发实践主要内容:基于J2ME平台的应用程序开发实践,包括聊天室、计算器、迷宫游戏等。
3.5 第五周:课程总结与展望主要内容:对本课程进行总结,回顾学习内容,展望J2ME应用程序开发的前景和发展。
4. 课程设计要求1.学生需要在规定时间内完成J2ME应用程序开发的任务,提交所开发应用程序的源代码和应用程序截图。
2.学生需要在课堂上积极参与讨论、提问和答辩环节,了解和掌握相关知识和技能。
3.学生需要在考核环节中完成J2ME应用程序的演示和答辩,展示自己的学习成果。
5. 参考文献1.《J2ME移动应用开发实践》(高文华等著)2.《Java平台微型版Java ME程序设计》(徐鸿义等著)3.《J2ME入门经典》(曹天元等著)。
移动应用开发网络课程设计

移动应用开发网络课程设计自从移动应用的兴起,越来越多的人开始学习和开发移动应用程序。
为了满足学生的需求,学校决定推出一门移动应用开发网络课程。
这门课程将帮助学生掌握移动应用开发的基本知识和技能,让他们能够独立设计和开发出自己的移动应用程序。
本文将详细介绍移动应用开发网络课程的设计。
一、课程目标本课程的主要目标是培养学生的移动应用开发能力,包括以下几个方面:1. 掌握移动应用开发的基本概念和原理;2. 学习移动应用开发的工具和技术,如Android开发平台和iOS开发平台;3. 熟悉常用的移动应用开发语言,如Java、Swift等;4. 学会使用移动应用开发工具和平台进行应用程序的设计和开发;5. 培养学生的团队合作意识和解决问题的能力。
二、课程内容移动应用开发网络课程的内容包括以下几个方面:1. 移动应用开发的基本概念和原理:介绍移动应用开发的基本概念,如用户界面设计、应用程序架构等;2. 移动应用开发的工具和技术:介绍Android开发平台和iOS开发平台的基本原理和使用方法;3. 移动应用开发的语言:学习常用的移动应用开发语言,如Java语言和Swift语言,了解它们的特点和使用方法;4. 移动应用开发的实践:通过实践项目,让学生亲自设计和开发自己的移动应用程序,提升实践能力;5. 团队合作与项目管理:培养学生的团队合作意识和项目管理能力,通过小组项目合作,学习解决实际问题的方法。
三、教学方法为了有效地教授移动应用开发网络课程,采用了以下教学方法:1. 线上讲解与示范:通过在线视频讲解和示范,向学生传授移动应用开发的理论知识和实践技巧;2. 实践项目指导:通过指导学生完成实践项目,帮助他们运用所学知识设计和开发自己的移动应用程序;3. 互动讨论与解答:在课程论坛上开展互动讨论和问题解答,提供学生与教师之间的即时交流和反馈机制;4. 作业评估与反馈:针对学生的作业进行评估和反馈,帮助他们及时纠正错误和改进学习效果。
安卓移动程序课程设计

安卓移动程序课程设计一、课程目标知识目标:1. 学生能理解安卓移动程序的基本概念、架构和开发环境。
2. 学生能掌握安卓应用程序的组件、生命周期及其相互关系。
3. 学生能了解并运用安卓界面设计原则,实现界面布局和交互功能。
技能目标:1. 学生能运用安卓开发工具进行程序设计,实现简单功能的安卓应用程序。
2. 学生能运用调试工具检查和优化安卓程序,解决常见问题。
3. 学生能运用版本控制工具进行团队合作开发,提高项目协作能力。
情感态度价值观目标:1. 学生培养对编程的兴趣,提高主动学习和解决问题的能力。
2. 学生培养良好的编程习惯,注重代码规范和优化。
3. 学生培养团队协作精神,尊重他人意见,学会沟通和分享。
课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的编程基础,对安卓移动开发有一定了解,好奇心强,喜欢尝试新事物。
教学要求:教师需关注学生的个体差异,因材施教,引导学生主动探索,注重实践操作,提高学生的综合运用能力。
同时,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 安卓移动开发基础- 安卓系统架构与开发环境搭建- 安卓应用程序组件及生命周期- 安卓界面布局与控件使用2. 安卓编程实践- 常用界面布局的使用:线性布局、相对布局等- 事件处理与界面交互- 数据存储与读取:文件存储、SQLite数据库、SharedPreferences 3. 安卓高级功能- 网络编程:HTTP请求、JSON解析- 多媒体使用:音频、视频、相机- 传感器与地理位置服务4. 项目实践与团队协作- 安卓应用程序设计与实现- 调试与优化技巧- 版本控制与团队协作流程教学内容安排与进度:第一周:安卓移动开发基础第二周:安卓界面布局与控件使用第三周:事件处理与界面交互第四周:数据存储与读取第五周:网络编程与多媒体使用第六周:传感器与地理位置服务第七周:项目实践与团队协作教材章节关联:教学内容与教材中以下章节相关:1. 第2章:安卓开发环境搭建与配置2. 第3章:安卓应用程序基础3. 第4章:界面布局与控件4. 第6章:数据存储与访问5. 第7章:网络编程与多媒体6. 第8章:传感器与地理位置7. 第9章:项目实践与团队协作三、教学方法本课程采用以下多样化的教学方法,旨在激发学生的学习兴趣,提高学生的主动性和实践能力:1. 讲授法:- 对安卓移动开发的基本概念、理论知识和关键技能进行系统讲解,为学生奠定扎实的基础。
J2ME移动软件程序设计课程设计

J2ME移动软件程序设计课程设计1. 概述本课程设计旨在帮助学生掌握使用J2ME平台进行移动应用程序设计的基本技能和方法,同时通过设计与实现一个实用的移动应用程序,培养学生的软件开发能力和实践经验。
2. 设计目标本课程设计的主要目标包括:1.熟悉J2ME移动应用程序设计的基本概念和技术,包括MIDP(MobileInformation Device Profile)和CLDC(Connected Limited DeviceConfiguration)等;2.掌握J2ME移动应用程序开发的基本流程和方法,包括需求分析、设计、编码、测试和发布等;3.实现一个具有实用性的J2ME移动应用程序,提高学生的软件开发能力和实践经验。
3. 设计内容本课程设计主要包括以下内容:3.1 需求分析根据学生自由选择的主题,进行移动应用程序的需求分析,包括功能需求和非功能需求等。
3.2 概要设计根据需求分析的结果,进行移动应用程序的概要设计,包括界面设计、数据结构设计和算法设计等。
3.3 详细设计根据概要设计的结果,进行移动应用程序的详细设计,包括界面设计、模块设计和接口设计等。
3.4 编码实现根据详细设计的结果,进行移动应用程序的编码实现,包括编写程序代码、进行调试等。
3.5 测试和发布对移动应用程序进行测试和调试,并将其发布到相关的移动设备或应用商店中。
4. 设计要求本课程设计要求学生:1.自主选择移动应用程序的主题,体现创造性和实用性;2.遵循软件工程的基本原则,进行需求分析、设计、编码、测试和发布等环节;3.选择合适的开发工具和技术,包括J2ME开发环境、Java编程语言等;4.给出详细的开发文档和用户使用手册,方便其他人理解和使用。
5. 实现步骤本课程设计的实现步骤如下:1.进行主题的选择和需求分析;2.进行应用程序的概要设计;3.进行应用程序的详细设计;4.进行应用程序的编码实现和测试;5.发布应用程序并总结经验教训。
移动应用开发教案

移动应用开发教案一、教学目标1、让学生了解移动应用开发的基本概念和发展趋势。
2、使学生掌握移动应用开发的流程和关键技术。
3、培养学生的编程思维和解决实际问题的能力。
4、鼓励学生创新,能够设计并开发出简单的移动应用。
二、教学重难点1、重点(1)移动应用开发的流程,包括需求分析、设计、编码、测试和发布。
(2)主流移动开发平台(如 Android 和 iOS)的特点和开发工具的使用。
(3)移动应用界面设计的原则和方法。
2、难点(1)掌握移动应用中的数据存储和处理技术。
(2)解决移动应用在不同设备上的兼容性问题。
三、教学方法1、理论讲解:通过课堂讲授,让学生了解移动应用开发的基本概念和理论知识。
2、案例分析:通过实际案例,帮助学生理解移动应用开发的流程和技术应用。
3、实践操作:安排学生进行实际的开发项目,培养学生的动手能力和解决问题的能力。
4、小组讨论:组织学生进行小组讨论,促进学生之间的交流和合作,培养学生的团队精神。
四、教学过程1、课程导入(1)通过展示一些热门的移动应用,如微信、支付宝等,引起学生的兴趣,提问学生这些应用的功能和特点。
(2)介绍移动应用开发的重要性和广泛应用领域,如社交、娱乐、教育、医疗等。
2、移动应用开发基础(1)讲解移动应用的定义、分类和特点。
(2)介绍移动应用开发的发展历程和趋势,如从原生应用到混合应用、跨平台应用的发展。
3、移动开发平台(1)详细介绍主流的移动开发平台,如 Android 和 iOS。
Android 平台:介绍 Android 系统的架构、开发环境的搭建(如Android Studio 的安装和配置)、编程语言(Java 或 Kotlin)。
iOS 平台:讲解 iOS 系统的特点、开发工具(Xcode)的使用、编程语言(ObjectiveC 或 Swift)。
(2)比较两个平台的优缺点,让学生根据自己的兴趣和需求选择学习方向。
4、移动应用开发流程(1)需求分析:引导学生了解如何确定应用的目标用户、功能需求和性能要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Y angtze University College of Arts and Science 学生课程设计报告系部:机电与信息工程系专业:计算机科学与技术班级:计科5131 姓名:来超学号: 201241136 课程名称:移动平台数据库综合开发指导教师:王腾实习时间:2016年6月20日至2016年6月27日android即时通讯软件摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。
基于Java网络编程的强大功能,本次课程设计使用Java编写一个运行在android2.2版本以上的即时通讯软件。
一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成。
Java提供的多线程功能用多线程可完成一点对多点的聊天,数据库管理系统用SQLlite来访问数据库的。
本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。
系统采用C/S结构,客户端与客户端以及客户端与服务器端之间传送消息。
使用JAVA语言编写,开发工具采用AS。
在智能手机中,Android平台约占75%市场份额。
安卓系统的广泛应用,使得Android手机应用程序的数量快速增长,即时通讯APP的应用范围也更加广泛。
关键字:多线程;客户机/服务器;JAVA;AS ;Android手机应用1.开发背景Android的英文翻译是指“机器人”,而Android这个词语作为操作系统的名称出现,是谷歌在2007年发布了应用在手机平台上的操作系统,自此Android作为手机操作系统出现在人们的视野中。
同时由于Android的操作系统的开源性和可开发性使得以Android操作系统的应用软件日益增多。
Android操作系统被越来越多的人接受和使用。
目前的Android聊天软件基本分为2种架构形式:(1)C/S架构:采取客户端/服务器对等传输的形式,用户方主要使用客户端软件,使用前用户通过网上下载客户端软件,再安装到手机上进行使用,市场上流行的C/S架构的聊天软件有以下几种:QQ、微信、微博、YY、MSN等;(2)B/S架构:浏览器/服务端对等传输的形式,这种形式下的即时通信工具,一般都是依赖于互联网,作为用户无需下载客户端,用户一般在浏览往网上网页时浏览器会提供一个类似于客户端的界面使用户可以发送消息,此架构一般应用在数据流比较大的电商网站,如WebQQ等。
2.软件需求分析2.1软件开发的工具和环境1.开发环境:AS2.开发语言:JAVA3.模拟机平台:AVD4.手机运行平台:Android2.1以及上版本开发软件5.所需插件:JDK2.2安装JDK和SDK先从网站上找到JDK1.6(JREaloneisnotsufficient)版本并下载,下载完毕后将它安装在PC机上并在PC机上设置好有关的环境变量,将JAVA_HOME,path等几个设置为适用于Java开发的环境变量,最后将其导入你的JDK文件路径SDK安装:直接从相关网站下载好SDK压缩包,然后打开Eclipse软件,在其中找到对应路径将其导入就可以。
3、原理与技术要点分析3.1 登录功能概要➢点击button按钮➢服务器验证登录账号➢跳转进入好友列表界面登录流程图:进入输入账号及密码失判断账号密码败是否正确服务器验证登录成功1.1登录功能流程图3.2聊天功能概要➢用户点击联系人列表中的一个好友时,进入聊天界面➢在输入框输入信息,点击发送按钮,发送信息➢好友回复消息是在该聊天页面显示➢当有好友发消息过来时,系统会通过Toast提示用户聊天模块总体流程图:1.2用户聊天模块总体流程图3.3技术要点分析3.3.1概念结构设计3.3.2逻辑结构设计1)用户信息(用户账号,用户密码,昵称,头像)public class QQMessage extends Protocal{public String type = QQMessageType.MSG_TYPE_CHA T_P2P; // 数据类型public long from = 0; // 发送者accountpublic String fromNick = "";// QQ名public int fromAvatar = 1; // 头像public long to = 0; // 接收者accountpublic String content = ""; // 消息内容(hi)public String sendTime = MyTime.getTime(); // 发送时间2)}会话信息(好友账号,好友头像,发送/接收消息时间,消息内容)public class QQMessageType {public static final String MSG_TYPE_REGISTER = "register"; // 注册public static final String MSG_TYPE_LOGIN = "login";// 登录public static final String MSG_TYPE_LOGINOUT = "loginout";// 登出public static final String MSG_TYPE_CHA T_P2P = "chatp2p";// 聊天public static final String MSG_TYPE_CHA T_ROOM = "chatroom";// 群聊public static final String MSG_TYPE_OFFLINE = "offline";// 下线public static final String MSG_TYPE_SUCCESS = "success";// 成功public static final String MSG_TYPE_BUDDYLIST = "buddylist";// 好友列表public static final String MSG_TYPE_FAILURE = "failure";// 失败}4.详细设计4.1 用户聊天模块4.1.1 ChatActivity 类public class ChatActivity extends Activity {ListView listView;TextView title,send_nick,recv_nick;EditText input;String six_space=" ";String two_space=" ";private String toNick;private Long account;ImApp app;private ChatMessageAdapter adapter;List<QQMessage> list =new ArrayList<>();//内容观察者:观察uri中是否出现数据库被修改的信号private ContentObserver observer=new ContentObserver( new Handler()) { //观察到发生变化后,所做的动作//android2.2@Overridepublic void onChange(boolean selfChange) {super.onChange(selfChange);requery();}//android4.0以上@Overridepublic void onChange(boolean selfChange, Uri uri) {super.onChange(selfChange, uri);requery();}};private void requery() {//System.out.println("数据发生变化,取出数据刷新聊天界面");list.clear();querySetofChatWithOne(account+"",list);if(adapter!=null){adapter.notifyDataSetChanged();}if(list.size()>0){listView.setSelection(list.size()-1);}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_chat);listView= (ListView) findViewById(R.id.listview_chat);title= (TextView) findViewById(_title);input= (EditText) findViewById(R.id.edt_input);send_nick=(TextView)findViewById(_send_nick);recv_nick=(TextView)findViewById(_recv_nick);//注册内容观察者Uri uri=Uri.parse("content://"+ QQContactDBDao.class.getSimpleName());// getContentResolver().registerContentObserver(地址:信号,子路径是否有效,指定一个观察者);this.getContentResolver().registerContentObserver(uri,true,observer);app= (ImApp) getApplication();Intent intent = this.getIntent();Bundle bundle = intent.getExtras();account=bundle.getLong("account");toNick=bundle.getString("nick");title.setText("与[" +toNick +"]聊天中");querySetofChatWithOne(account+"",list);adapter=new ChatMessageAdapter(this,list);listView.setAdapter(adapter);if(list.size()-1>0){listView.setSelection(list.size()-1);}}//接收消息//1.messageType==p2p 2.app.account==msg.to 3.msg,account->toastpublic void clickSend(View v){String messageBody=input.getText().toString().trim();if("".equals(messageBody)){Toast.makeText(getBaseContext(),"发送消息不为空",Toast.LENGTH_SHORT).show();return;}input.setText("");final QQMessage msg=new QQMessage();msg.type= QQMessageType.MSG_TYPE_CHA T_P2P;msg.content=messageBody;msg.from=app.getAccount();msg.to=account;msg.fromNick="人族";//发送干两件事情//1:把消息显示到聊天记录区list.add(msg);//刷新listif(adapter!=null){adapter.notifyDataSetChanged();}//从最后一条开始显示if(list.size()>0){listView.setSelection(list.size()-1);}//2:发送给聊天对象ThreadUtils.runInThread(new Runnable() {@Overridepublic void run() {try {app.getCoreService().sendMessage(msg);} catch (Exception e) {e.printStackTrace();}}});}// 把与当前好友聊天记录查询出来,// 并显示到与当前好友的聊天界面private void querySetofChatWithOne(String session_id,List<QQMessage>msgList){List<com.example.meiyu.qq_im.dao.QQContactDB>dbmsgList=app.getQqContactDBDao().queryRaw("where SESSION_ID = ? order by SENDTIMEASC",session_id);for(com.example.meiyu.qq_im.dao.QQContactDB item:dbmsgList){QQMessage msg = new QQMessage();msg.type = QQMessageType.MSG_TYPE_CHA T_P2P;msg.content = item.getContent();msg.from = item.getFrom();msg.to = item.getTo();msg.fromNick = item.getFromNick();msgList.add(msg);}}@Overrideprotected void onDestroy() {super.onDestroy();getContentResolver().unregisterContentObserver(observer);}}4.1.2 SplashActivity 类public class SplashActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_splash);ThreadUtils.runInThread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(3000); //至少3秒,下限startActivity(new Intent(getBaseContext(),LoginActivity.class));finish();} catch (InterruptedException e) {e.printStackTrace();}}});}}4.1.3 activity_login.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TableLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"><!--图标--><ImageViewandroid:layout_width="80dp"android:layout_height="80dp"android:src="@drawable/ic_launcher_qq"/><!--账号--><TableRowandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="QQ账号"android:textSize="25sp"/><EditTextandroid:layout_width="200dp"android:layout_height="wrap_content"android:singleLine="true"android:id="@+id/account"android:text="159"/></TableRow><!--密码--><TableRowandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密码"android:textSize="25sp"/><EditTextandroid:layout_width="200dp"android:layout_height="wrap_content"android:singleLine="true"android:id="@+id/psw"android:inputType="textPassword"android:text="test"/></TableRow><!--按钮--><Buttonandroid:onClick="login"android:layout_marginTop="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="登录"android:gravity="center"android:textSize="25sp"/></TableLayout></RelativeLayout>4.1.4 activity_chat.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:weightSum="1"><!--好友标签--><TextViewandroid:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="18sp"android:textColor="#FFFFFF"android:background="#0099ff"android:gravity="center"/><!--聊天记录--><ListViewandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:id="@+id/listview_chat"android:cacheColorHint="@android:color/transparent"android:listSelector="@android:color/transparent"android:divider="@android:color/transparent"android:dividerHeight="1dp"></ListView><!--输入聊天--><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="40dp"><EditTextandroid:id="@+id/edt_input"android:layout_weight="6"android:layout_width="0dp"android:layout_height="wrap_content" /><Buttonandroid:onClick="clickSend"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="发送"/></LinearLayout></LinearLayout>4.2 客户端模块4.2.1 ContactActivity 类public class ContactActivity extends Activity {ListView listView;ContactAdapter adapter;ImApp app;//好友列表List<QQContact> list =new ArrayList<>();//每一个activity必备的监听器IOnMessageReceiveListener listener=new IOnMessageReceiveListener() {@Overridepublic void onReceive(final QQMessage msg) {ThreadUtils.runUnThread(new Runnable() {@Overridepublic void run() {if(QQMessageType.MSG_TYPE_BUDDYLIST.equals(msg.type)){String json=msg.content;Gson gson=new Gson();//反序列化QQContactList tempList=gson.fromJson(json,QQContactList.class);//刷新好友列表//首先设置列表值list.clear();list.addAll(tempList.buddyList);//其次再刷新列表if(adapter!=null){adapter.notifyDataSetChanged();}}}});}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_contact);listView= (ListView) findViewById(R.id.listview_contact);app= (ImApp) getApplication();app.getCommunicaCore().addOnMessageReceiveListener(listener);//处理好友列表//先取出(app)String json=app.getBuddyListJson();System.out.println(json);//再处理(从json反序列化成对象)Gson gson=new Gson();QQContactList tempList=gson.fromJson(json,QQContactList.class);//把上面完成的对象加入到list里面去list.addAll(tempList.buddyList);//绑定适配器adapter =new ContactAdapter(this,list);listView.setAdapter(adapter);// 添加item的click监听器listView.setOnItemClickListener(new ListView.OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 获取数据QQContact contact = list.get(position);Intent intent = new Intent(getBaseContext(),ChatActivity.class);intent.putExtra("account",contact.account);intent.putExtra("nick",contact.nick);startActivity(intent);}});}protected void onDestroy(){super.onDestroy();app.getCommunicaCore().removeOnMessageReceiveListener(listener);}}4.2.2 LoginActivity 类public class LoginActivity extends Activity {EditText account,psw;String username,password;QQCommunicationCore communicaCore;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_login);account= (EditText) findViewById(R.id.account);psw= (EditText) findViewById(R.id.psw);//网络链接ThreadUtils.runInThread(new Runnable() {@Overridepublic void run() {try {communicaCore=new QQCommunicationCore("192.168.1.126",20001);communicaCore.addOnMessageReceiveListener(listener);communicaCore.connection();} catch (Exception e) {e.printStackTrace();}}});}//被回调本activity处理消息的核心IOnMessageReceiveListener listener=new IOnMessageReceiveListener() {@Overridepublic void onReceive(final QQMessage msg) {ThreadUtils.runUnThread(new Runnable() {@Overridepublic void run() {System.out.println(msg.toXML());if(QQMessageType.MSG_TYPE_BUDDYLIST.equals(msg.type)){ImApp app= (ImApp) getApplication();//保存账号app.setAccount(Long.parseLong( account.getText().toString().trim()));//保存连接(被保存过的连接叫长连接)app.setCommunicaCore(communicaCore);//保存好友列表(好友列表在content)app.setBuddyListJson(msg.content);Toast.makeText(getBaseContext(),"登录成功", Toast.LENGTH_LONG).show();//启动联系人界面startActivity(new Intent(getBaseContext(),ContactActivity.class));//启动核心服务(启动式)startService(new Intent(getBaseContext(),CoreService.class));finish();}else {Toast.makeText(getBaseContext(),"登陆失败",Toast.LENGTH_LONG).show();}}});}};//只发送消息,不处理消息public void login(View v){username=account.getText().toString().trim();password=psw.getText().toString();ThreadUtils.runInThread(new Runnable() {@Overridepublic void run() {try {QQMessage msg=new QQMessage();msg.type= QQMessageType.MSG_TYPE_LOGIN;msg.content=username+"#"+password;communicaCore.sendMessage(msg);} catch (Exception e) {e.printStackTrace();}}});}@Overrideprotected void onDestroy() {super.onDestroy();communicaCore.removeOnMessageReceiveListener(listener);}}4.2.3 activity_contact.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:textSize="30sp"android:text="联系人"android:layout_width="match_parent"android:background="#0099ff"android:textColor="#ffffff"android:gravity="center"android:layout_height="50dp" /><ListViewandroid:layout_width="match_parent"android:layout_height="0dp"android:cacheColorHint="@android:color/transparent"android:divider="#0099ff"android:dividerHeight="1dp"android:id="@+id/listview_contact"android:layout_weight="1"></ListView></LinearLayout>4.2.4 item_contact.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><!--头像--><ImageViewandroid:id="@+id/head"android:layout_width="40dp"android:layout_height="40dp"android:layout_gravity="center_vertical"android:layout_marginLeft="20dp"android:src="@drawable/ic_launcher"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><!--昵称--><TextViewandroid:id="@+id/nick"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="来超"android:textSize="20sp"android:textColor="#ff0000"android:gravity="left|center_vertical"/><!--状态--><TextViewandroid:id="@+id/desc"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="[在线]"android:textSize="15sp"android:textColor="#000000"android:gravity="left|center_vertical"/></LinearLayout></LinearLayout>4.2.5 activity_splash.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/splash_bg"><ImageViewandroid:layout_centerInParent="true"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/conversation_bg_logo"/></RelativeLayout>5、测试分析5.1客户端具体功能实现➢登录功能:建立与服务器的连接并登录,能显示登录成功信息。