![](https://csdnimg.cn/release/download_crawler_static/89640739/bg2.jpg)
具体做法就是,开启一个服务,在后台每隔10秒钟访问一起(Socket)服务器,如果有数据,
则返回数据,客户端进行解析,然后发送广播,即可接收到消息。
发送消息,则是由服务器提供接口来发送。然后,服务器与客户端建立一个简单的通信协议。
![](https://csdnimg.cn/release/download_crawler_static/89640739/bg3.jpg)
如:MSG|发送人 ID|2012-2-12 07:25:12|发送类型 MSG 是个标识,类型包括文本
(包含表情),图片,语音,位置等。
图片和语音的发送,都是通过 FTP 先上传文件到服务器,然后把本地存储的路径发送给对方。
在聊天的页面中,用户的头像都是在本地存的。包括聊天的信息,也是本地数据库存的。这
样就能记录信息。也可以扩展把聊天记录导出。
在本地创建的 消息数据库中。要定义好聊天信心的字段,包括自己 ID,好友 ID,消息类型,
文本内容,时间,是否已读等(可扩展)
?
代码片段,双击复制01
02
03
04
05
06
07
08
09
privateString table ="CREATE TABLE IF NOT
EXISTS message("+
"_id integer PRIMARY KEY,"+
"TtmType integer ,"+
"TtmTuID integer ,"+
"TtmToUserId integer ,"+
"TtmContent text ,"+
"TtmTime varchar(200) ,"+
"isRead integer ,"+
"isReplyLocation
integer )";
这样再次进入聊天页面就可以把数据库的内容读出来,匹配到适配器
?
代码片段,
双击复制01
02
03
04
05
06
07
08
09
10
11
12
publicList<DetailEntity> getdatas(intTtmTuID,intTtmToUserId) {
List<DetailEntity> de
=newArrayList<DetailEntity>();
SQLiteDatabase database =
dbmanger.getWritableDatabase();
Cursor cursor = database
.rawQuery(
"select * from
message where (TtmTuID = ? and TtmToUserId = ?) or (TtmToUserId
= ? and TtmTuID = ?) order by _id",
newString[]
{ String.valueOf(TtmTuID),