android之仿qq

仿qq

1、环境准备

开发环境:
1.1、前端:Android Studio3.5.3spark客户端
1.2、后台:IDEA2019.2.4openfire

  1. Android Studio :qq页面;
  2. spark :与qq进行聊天的另一客户端;
  3. IDEA2019.2.4,采用springboot框架;
  4. openfire :实现即时聊天的服务器;

2、功能

2.1 应用功能

登录
手机号短信验证+账号进行注册
手机号短信验证+密码找回
与图灵机器人聊天
在线即时聊天
qq页面设计(Navigation、Drawerable、Toolbar、Adapter、switch button…)
动态栏页面列表的选择展示
意见反馈

2.2 采用的接口

图灵机器人
mob短信验证
openfire的xmpp协议
okhttp–基于websocket

3、项目结构

android

后台

  • 表user:
    表user
  • 表friend:
    表friend
  • 表feedback:
    表feedback
  • 表collect:
    表collect

4、gradle准备环境+其他准备

4.1. 短信验证

AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
app:
classpath 'com.mob.sdk:MobSDK:+'// 注册MobSDK
apply plugin: 'com.mob.sdk'
MobSDK {
   
    appKey "xxxxx"
    appSecret "xxxxxx"
    SMSSDK {
   }
}

4.2. okhttp

  • 我们一直使用的http协议只能由客户端发起,服务端无法直接进行推送,这就导致了如果服务端有持续的变化客户端想要获知就比较麻烦。WebSocket协议就是为了解决这个问题应运而生。
  • WebSocket协议,客户端和服务端都可以主动的推送消息,可以是文本也可以是二进制数据。而且没有同源策略的限制,不存在跨域问题。协议的标识符就是ws。像https一样如果加密的话就是wxs
AndroidManifest.xml:
<uses-permission  android:name="android.permission.INTERNET" />
dependencies :
implementation "com.squareup.okhttp:okhttp:2.7.5"
implementation 'com.squareup.okio:okio:2.4.1'
implementation 'com.alibaba:fastjson:1.2.62'

4.3、openfire和smack

3.1【 openfire的安装和准备
3.2 smack配置:
在这里插入图片描述

5、适配器+listview(此处以fragment为例)

	private ArrayList<String> qqpic;//头像
    private ArrayList<Object> qqname;//昵称
    private ArrayList<Object> qqqm;//个性签名
    private ListView friendList;
    private View root;
    
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
   
    root = inflater.inflate(R.layout.fragment_dashboard, container, false);

        friendList = (ListView)root.findViewById(R.id.friendList);
        dataInit();
        ArrayAdapter<Object> tt = newMyAdapter(getActivity(),R.drawable.qq1,qqname,qqqm);
        friendList.setAdapter(tt);
        tt.notifyDataSetChanged();
        return root;
    }
    
    private void dataInit(){
   
        qqname = new ArrayList<Object>();
        qqname.add("qly");
        qqname.add("ljx");
        qqname.add("lucy");
        qqname.add("lily");
        qqname.add("lolo");
        qqname.add("fancy");
        qqname.add("koko");
        qqname.add("wwa");
        qqname.add("polo");

        qqqm = new ArrayList<Object>();
        qqqm.add("哗啦啦");
        qqqm.add("1111");
        qqqm.add("呜呜呜呜");
        qqqm.add("啊啊啊啊啊");
        qqqm.add("热热热热热热");
        qqqm.add("嗷嗷嗷啊啊");
        qqqm.add("踩踩踩从");
        qqqm.add("吱吱吱吱在");
        qqqm.add("十四说四十是");

        qqpic = new ArrayList<String>();
        qqpic.add(String.valueOf(R.drawable.qq1));
        qqpic.add(String.valueOf(R.drawable.qq2));
        qqpic.add(String.valueOf(R.drawable.qq3));
        qqpic.add(String.valueOf(R.drawable.qq4));
        qqpic.add(String.valueOf(R.drawable.qq5));
        qqpic.add(String.valueOf(R.drawable.qq6));
        qqpic.add(String.valueOf(R.drawable.qq7));
        qqpic.add(String.valueOf(R.drawable.qq8));
        qqpic.add(String.valueOf(R.drawable.qq9));
    }
    
    public class MyAdapter extends ArrayAdapter<Object> {
   //自定义适配器
        private Context context;
        private int resource;
        List<Object> object1;
        List<Object> object2;

        public MyAdapter(Context context, int resource, List<Object> object1, List<Object> object2) {
   
            super(con
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值