• 用XMPP实现完整Android聊天项目


    简介

    这是一个完整的xmpp的Android的项目
    服务端使用openfire3.9.3
    客户端使用Android4.2.2

    集成第三方:
    百度地图sdk
    asmack.jar
    universal-image-loader-1.9.3.jar

    项目地址

    https://github.com/mozhenhau/D3Xmpp

    功能

      1. 注册登录会员
      2. 会员个人资料修改
      3. 基本聊天
      4. 语音、图片、表情、动态表情、发送位置聊天(位置需要注册百度api)
      5. 群聊(openfire需要安装插件)
      6. 位置共享(实验功能,openfire需要安装插件)
      7. 项目结构

        此处输入图片的描述

        包及其类的作用:

        1.activites和fragments

        activites和fragments放的类是一样的,是放activity和fragment的。作用是android的Controller层。

        BaseActivity—— 一切activity的基类,继承了D3Activity。主要是实现注解实例化
        ChangePwdActivity—— 修改密码页
        ChatActivity—— 聊天页。Intent必须参数chatName(聊天对象,单聊为对方id,群聊为群名称),
        可选参数chattype。chatType有单聊和群聊两个参数,不传则默认单聊。
        ChoseActivity—- 群组邀请页面。Intent必须参数roomName和成员members
        CropImageActivity—- 截图页面。isAutoSend为true时自动截图
        FriendActivity—- 好友详情页。必须参数username
        LoginActivity—- 登陆页。
        MainActivity—- 主页。使用fragments包住四个TAB页面
        MapActivity—- 地图页. 从聊天页的位置跳到此页面。必须参数lat,lon
        MyRoomActivity—- 我的群组页
        NewFriendActivity—- 我的新好友申请页
        PicSrcPickerActivity—- 弹出选择选图方式。拍照和图库
        RegActivity—- 注册页
        RoomMemActivity—- 群组成员
        SearchActivity—- 搜索好友页
        ShowPicActivitiy—- 展示大图页
        TempActivity—- 模板类,方便我复制生成一个新类而已
        WebActivity—- 一个全屏的webview

        //fragment
        AdrFragment—- 位置页.
        原理:登录后的用户,每分钟上传一次自己的位置,如果下线则删除自己的位置。
        登陆后的用户,每分钟更新一次自己好友的位置,如果对方在线则在百度地图中渲染出红点。
        如果取消共享位置,则关闭以上功能

        MsgFragment—- “首页”消息
        原理:登录后的用户,通过XmppMessageInterceptor和XmppMessageListener两个类拦截自己发出和接收到的消息,拦截消息后更新到MsgFragment显示出来。

        ContactFragment—- 通讯录页

        原理:登录后的用户,通过XmppPresenceInterceptor和XmppPresenceListener两个类拦截自己发出和接收到的好友状态消息,拦截状态消息后更新到这里。

        MeFragment—- “我的”页

        2. com.d3.d3xmpp.adapter

        主要存放activity和fragment对应的list适配。懂android的都知道

        3.com.d3.d3xmpp.constant

        存放配置类,有三个:
        com.d3.d3xmpp.constant. Constants类是常用的配置
        com.d3.d3xmpp.constant. MyApplication类是全局Application,方便管理android
        com.d3.d3xmpp.constant. ImgConfig是图片类,用于优化图片加载,使用的universal-image-loader-1.9.3.jar

        4.com.d3.d3xmpp.dao 和 com.d3.d3xmpp.model

        是属于MVC模式中的Model。
        dao负责获取数据库的数据,并返回给Activity
        model是基础数据类

        5.com.d3.d3xmpp.d3View 和 com.d3.d3xmpp.util

        这是私人框架,集成了android开发中常用的一些方法及View。
        包括录音按钮RecordButton,加入了下拉刷新的MyListView,实现了注解实例view的D3Activity等等。

        6.com.d3.d3xmpp.xmpp(xmpp的核心)

        其他都是安卓开发者必须懂的东西。下面说xmpp类的作用
        此处输入图片的描述
        XmppConnectionListerner是xmpp的连接状态的listener,比如断线等
        XmppMessageInterceptor是发出消息的listener,在此拦截并持久化聊天纪录
        XmppMessageListener是收到消息的listener,在此拦截并持久化聊天纪录
        XmppPresenceInterceptor是本机发出好友消息的监听,比如添加好友,删除好友
        XmppPresenceListener是本机收到好友消息的监听,比如添加好友,删除好友
        XmppConnection是xmpp基本操作的核心类,包括登录,注册,聊天,修改密码,好友管理,群组管理等等。

        PS:

        该项目是本人在学习xmpp过程中总结的一些东西,代码组织凌乱,旨在帮助新入门xmpp学习xmpp的基本使用

  • 相关阅读:
    十道海量数据处理面试题与十个方法大总结
    TopK的一个简单实现
    Spark1.0.0 学习路线指导
    Apache Spark源码走读之1 -- Spark论文阅读笔记
    倾情大奉送--Spark入门实战系列
    分布式发布订阅消息系统 Kafka 架构设计
    hive入门学习线路指导
    (5.3.1)数据库迁移——数据库迁移解决孤立用户与权限问题
    Shell初学(八)linux下的ACL
    Shell初学(七)linux账户管理/群组管理
  • 原文地址:https://www.cnblogs.com/xmandxx/p/4583308.html
Copyright © 2020-2023  润新知