第一个Android DemoChat(伪即使通讯)

</pre> 学习Android到现在估计应该还不到一个月的时间,我很激动能够在自己的努力还有奋斗下开发一个自己想要的App,虽然这个App的功能还不够完善,界面很丑陋,Bug很存在很多,但是我觉得这个起码是我自己动用智慧开发的第一个App,所以我要在这里将我开发的思路还有一个想法写在这里。<span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span><p></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"><span style="white-space:pre"></span>以实现功能:</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"><span style="white-space:pre"></span>即时通讯:不能好友之间可以即时通讯。但是同时只能和一个人通讯。</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"><span style="white-space:pre"></span>注 册:注册功能实现,但是数据保存的是客户端,即是在Android本地的数据库,并没有将用户保存到服</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"><span style="white-space:pre"></span>服务器。</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"><span style="white-space:pre"></span>登 录:登录会自动和本地数据库中进行校对,基本的登录思想。</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"><span style="white-space:pre"></span>添加好友:当前数据库中存在好友时,可以实现添加到好友列表。Bug:Sqlite的用法还是不够熟练,</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"><span style="white-space:pre"></span>当存在该好友的情况下还是可以继续添加该还有</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap">用到的知识:</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"><span style="white-space:pre"></span>基本的Android界面布局,Sqlite,Servlet(服务器端),JavaBean思想,sHttp协议,Android中的</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"> Http操作,ListView,自定义ArrayAdapter,Android中Activity的生命周期,Activity中的定时操</span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap">作,异步处理,子线程处理。</span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span></p><p><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap">功能详解:</span><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:16.2px; white-space:pre-wrap"></span></p><p><span class="token pre" style="font-size:0.9em; color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap; outline:none!important"></span><span class="token pre" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap; outline:none!important"><span style="font-size:18px">Login(登录界面):</span></span></p><p><span class="token pre" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap; outline:none!important"><span style="font-size:18px"><img src="http://img.blog.csdn.net/20160527124853791?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></span></p><p><span class="token p" style="color:rgb(90,90,90); font-family:'microsoft yahei'; font-size:18px; line-height:29.7px; white-space:pre-wrap; outline:none!important">作为App的主页面,虽然丑陋了一点,但是它起到的作用也就是仅仅登录作用,当点击登录之后,会自动</span><span class="token p" style="color:rgb(90,90,90); font-family:'microsoft yahei'; font-size:18px; line-height:29.7px; white-space:pre-wrap; outline:none!important">和<span style="white-space:pre"></span>本地数据库中做校验,存在即登录,失败即提示无法登陆;</span><span class="token lf" style="color:rgb(90,90,90); font-family:'microsoft yahei'; font-size:18px; line-height:29.7px; white-space:pre-wrap; outline:none!important"></span><span class="token p" style="color:rgb(90,90,90); font-family:'microsoft yahei'; font-size:18px; line-height:29.7px; white-space:pre-wrap; outline:none!important"></span><span class="token pre" style="font-size:0.9em; color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap; outline:none!important"></span></p><p><span class="token pre" style="font-size:0.9em; color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap; outline:none!important"><img src="http://img.blog.csdn.net/20160527125415498?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></p><p><span class="token pre" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap; outline:none!important"><span style="font-size:0.9em; white-space:pre"></span><span style="font-size:18px">Regist(注册页面):<span class="token lf" style="outline:none!important"></span></span></span></p><p><span class="token pre" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap; outline:none!important"><span style="font-size:18px"><span style="white-space:pre"></span>和登录息息相关的部分,登录即少不了注册</span></span></p><p><span class="token pre" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap; outline:none!important"><span style="font-size:18px"></span></span></p><p><span class="token pre" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap; outline:none!important"><span style="font-size:18px">。<img src="http://img.blog.csdn.net/20160527125541014" alt="" /><span class="token lf" style="outline:none!important"></span></span></span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap"><span style="font-size:18px">注册提供最基本的用户名和密码,但是在数据库中会自动生成一个UUID当做该用户的主键</span></span></p><p><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; white-space:pre-wrap"><span style="font-size:18px"><span stString uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();好友列表:进入这个页面时,会自动从本地的数据库中查找好友。查找思想:<span style="white-space:pre">	</span>根据从Login页面获得到的User在本地数据库中进行查找。<span style="white-space:pre">	</span>如果找到那么就返回一个SingleFriend的Bean类。</span></span></p><p><span class="token lf" style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:0.9em; white-space:pre-wrap; outline:none!important"></span><span style="color:rgb(52,52,52); font-family:'Source Code Pro',monospace; font-size:0.9em; white-space:pre-wrap"></span></p><pre name="code" class="java" style="color: rgb(52, 52, 52); font-size: 16.2px;"><span style="font-size: 16.2px;"><span style="white-space: pre;">	</span>public singleFriend seachFriendforFriendList(String userName){		</span>
		List<Friend> list = new ArrayList<Friend>();
		String username;
		boolean falg=false;
		Cursor cursor=db.query("Friend", null, "user=?", new String[]{userName}, null, null, null);
		if (cursor.moveToFirst()) {
			falg=true;
			username=cursor.getString(cursor.getColumnIndex("user"));
			do{
				Friend friend = new Friend();
				friend.setFriendName(cursor.getString(cursor.getColumnIndex("friend")));
				friend.setMsg_path(cursor.getInt(cursor.getColumnIndex("img")));
				list.add(friend);
			}
			while(cursor.moveToNext());
			SingleFriend.setUserName(username);
			SingleFriend.setFriends(list);
			return SingleFriend;

		}
		 else if(!cursor.moveToFirst()) {
			 falg=false;
			SingleFriend=null;
			return SingleFriend;
		}
		return SingleFriend;

	}

这个方法就是从本地数据库查找好友的方法。

其中在这个页面,需要自己重写一个FriendAdapter方法,

继承自ArrayAdapter<E>显示ListView中的具体类容。

其中ListView中的具体类容就和重写的这个方法的布局(Layout)还有<E>中的具体内容有关

添加好友页面:

会从数据库中查找你输入用户名,找到即返回,找不到就提示不存在。聊天界面:



基本的及时通讯,已知Bug:

代码中处理的原因,不能收到第一条消息。并且必须两个人同时打开对方的对话框才会收到消息

同时我也实现了将好友的聊天记录保存到本地数据库。就不在这里即时即时通讯了

处理思想,通过自己写的服务器端(servlet)通过访问该Servlet并带入不同的值实现消息的保存,然后再页面一直请求

服务器端一直请求属于自己的那一个消息。显示到界面中。

好了基本的功能以及演示完毕了,我这个博客写的也是比较简单,但是我会不断充实我自己的。好困,睡觉去了。

说一下自己下阶段的打算:Android中的活动很重要,准备探索一下Activity生命周期;

    学习Android的Touch事件的监听;

                                                    学习基本的android动画。

时间: 2024-08-03 19:05:19

第一个Android DemoChat(伪即使通讯)的相关文章

如何实现一个可靠的IM即时通讯应用

目前的IM即时应用很多,可以有以下几种思路: 假如你有服务器,可以采用多个客户端连接到服务器上,服务器进行消息转发,使用长连接的方式.可以采用XMPP协议,服务器可以参考开源OpenFire. 假如你没有服务器,可以借助第三方的IM平台,通过客户端连接到平台上,让平台代为转发消息.这个的优势是,不用自己开发维护消息推送的过程,但是通讯的性能明显受到第三方的影响. 借助环信平台,我们可以开发一个Android APP和一个web客户端,web客户端挂载在新浪服务器上,这样,我们就可以使用CS和BS

基于Android 平台简易即时通讯的研究与设计[转]

摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:Android 平台:即时通讯 (本文中图表点击附件即可见) 1 Android 平台简介Android 是Google 公司于2007年11月5日推出的手机操作系统,经过2年多的发展,Android平台在智能移动领域占有不小的份额,由Google为首的40 多家移动通信领域的领军企业组成开放手机联盟(

Android间的进程通讯(传递复杂对象)

Android间的进程通讯(传递复杂对象) 完成对复杂对象的序列化 在Android中传递复杂数据类型的时候要通过将序列化,在Android中提供了一个接口Parcelable来实现对对象的序列化. 下面对需要传输的对象进行序列化操作,首先看自定义的类Person. package com.example.service_parcelable_conmmute.bean; import android.graphics.Bitmap; /** * 用来传输的对象结构 * @author Xiny

Android 的开源电话/通讯/IM聊天项目全集

一.Android的XMPP客户端 Beem Beem 是一个运行于 Android 手机平台的 XMPP (jabber) 的客户端软件,兼容标准的 XMPP 服务器和服务,例如 Ejabberd, Openfire, Facebook, 和 Gmail). 支持 SASL, 代理(Socks4, Socks5, HTTP), DNS SRV, and chatting with a specific resource.    项目主页:http://beem-project.com/ 二.A

手把手教Android商业项目-即时通讯-i美聊

[课程概况] 手把手教你从无到有的完整实现一个Android商业项目,是目前整个市场上所没有的课程,废话不多说,请往下看. [项目概况] 项目名称:i美聊 所属领域:移动社交 即时通讯   代码行数:10万+ 开发周期:5个月 [讲师简介]         Jason,一个闷骚的老男人 [能收获的知识] 1. XMPP协议及aSmack框架 2. 错误信息的收集与发送 3.  兼容性测试 4. 短信验证码 5. 录音的转码及发送 6. 各种第三方使用 7. 接入支付功能 8. 代码混淆 9. 上

Android 设备及模拟器通讯的ADB工具(一)

Android 设备及模拟器通讯的ADB工具(一) 标签(空格分隔): Android adb 是 Android 开发必知必会的一个工具,它来自 sdk 包中.所有的刷机工具,应用管理工具都引用了 adb 工具.它能完成很多功能. 掌握adb的使用方法是十分重要的.adb 工具也是随着 Android sdk的更新而更新的.我们需要不断的更新对 adb 的认识. adb 命令简介 常用 adb 命令用法 使用 adb 命令截图和录制视频 adb 命令简介 在SDK的platform-tools

基于Android平台简易即时通讯的研究与设计

1 Android平台简介 Android是Google公司于2007年11月5日推出的手机操作系统,经过2年多的发展,Android平台在智能移动领域占有不小的份额,由Google为首的40多家移动通信领域的领军企业组成开放手机联盟(OHA).Google与运营商.设备制造商.开发商和其他第三方结成深层次的合作伙伴关系,希望通过建立标准化.开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统.正因如此,Android正在被越来越多的开发者和使用者所接受.近日,Google发言人Ant

创建一个android项目与创建一个android虚拟设备

创建一个android项目 Navigator面板区点击右键-->New-->Android Application Project,打开New Android Applicaton窗口.输入Application Name(应用程序的名称,就是显示在手机上的名称,比如:微信),Project Name(项目名称,一般显示在eclipse上的项目名称),Package Name(指定它的java包名,比如:com.qq.weixin).Minimum Required SDK表示运行应用程序所

为PhoneGap写一个android插件

为PhoneGap写一个android插件,要怎么做? 其实这句话应该反过来说,为android写一个PhoneGap插件,要怎么做? 这里以最简单的Hello World!为例,做个说明: 1.第一步,要先建立一个支持PhoneGap(Cordova)的android工程 因为这个插件本质上是安卓插件,用于PhoneGap,因此,要二者支持才行,所以我们要建立一个支持PhoneGap(Cordova)的android工程,插件在这个工程里面编写. 扫盲:PhoneGap现在已经出售给了Apac