网站建设制作怎么弄,网站建设公司3lue,wordpress 用户排序,网络销售怎么找客户基于android的即时通讯APP 或者 聊天APP
一 项目概述
该项目是基于Android 的聊天APP系统#xff0c;该APP包含前台#xff0c;后台管理系统#xff0c;前台包含用户通讯录,用户详情#xff0c;用户聊天服务#xff0c;用户二维码,发现功能,发现详情 , 个人中心, 个人信…基于android的即时通讯APP 或者 聊天APP
一 项目概述
该项目是基于Android 的聊天APP系统该APP包含前台后台管理系统前台包含用户通讯录,用户详情用户聊天服务用户二维码,发现功能,发现详情 , 个人中心, 个人信息, 编辑信息上传头像注册登录退出 等操作 。后台包含 系统管理用户管理聊天内容管理聊天人员管理发现管理 等功能, 东西非常多, 非常值得大家的学习和研究.
二 项目功能结构图 三 开发技术和工具
项目采用android原生写法 使用websocket技术 数据库使用mysql存储
开发工具 推荐android studio 推荐idea 推荐逍遥模拟器
四 开发功能实现
登录功能 注册功能 用户通讯录 功能实现
package com.itfxq.ui.adapter;import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;import com.bumptech.glide.Glide;
import com.itfxq.R;
import com.itfxq.model.entity.UserEntity;
import com.itfxq.ui.activity.UserDetailActivity;import java.util.List;/*** 描述: UserAdapter * 开发工程师: Marker* 联系方式: QQ 624029037*/
public class UserAdapter extends ArrayAdapterUserEntity {//资源idprivate int resourceId;private ListUserEntity mUserEntityList;// 适配器的构造函数把要适配的数据传入这里public UserAdapter(Context context, int textViewResourceId, ListUserEntity objects){super(context,textViewResourceId,objects);resourceIdtextViewResourceId;mUserEntityList objects;}// convertView 参数用于将之前加载好的布局进行缓存Overridepublic View getView(int position, View convertView, ViewGroup parent){UserEntity userEntitygetItem(position); //获取当前项的Words实例// 加个判断以免ListView每次滚动时都要重新加载布局以提高运行效率View view;ViewHolder viewHolder;if (convertViewnull){// 避免ListView每次滚动时都要重新加载布局以提高运行效率view LayoutInflater.from(getContext()).inflate(resourceId,parent,false);// 避免每次调用getView()时都要重新获取控件实例viewHoldernew ViewHolder();viewHolder.user_imageIvview.findViewById(R.id.user_imageIv);viewHolder.user_nameTvview.findViewById(R.id.user_nameTv);viewHolder.user_nameTv.setOnClickListener(new View.OnClickListener(){Overridepublic void onClick(View view) {Intent intent new Intent(getContext(),UserDetailActivity.class);intent.putExtra(userEntity, userEntity);getContext().startActivity(intent);}});viewHolder.user_imageIv.setOnClickListener(new View.OnClickListener(){Overridepublic void onClick(View view) {Intent intent new Intent(getContext(),UserDetailActivity.class);intent.putExtra(userEntity, userEntity);getContext().startActivity(intent);}});view.setTag(viewHolder);} else{viewconvertView;viewHolder(ViewHolder) view.getTag();}viewHolder.user_nameTv.setText(userEntity.getUsername());Glide.with(getContext()).load(userEntity.getHeadImg()).into(viewHolder.user_imageIv);return view;}// 定义一个内部类用于对控件的实例进行缓存class ViewHolder{ImageView user_imageIv;TextView user_nameTv;}
}
聊天功能界面 功能实现 implementation org.java-websocket:Java-WebSocket:1.3.0后台idea里面websocket在maven中配置 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependency后台websocket配置
Configuration
EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {Overridepublic void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {stompEndpointRegistry.addEndpoint(/chat).setAllowedOrigins(*).withSockJS();}Overridepublic void configureMessageBroker(MessageBrokerRegistry registry) {registry.enableSimpleBroker(/topic,/user);registry.setApplicationDestinationPrefixes(/app/);registry.setUserDestinationPrefix(/user/);}
}通过 messagingTemplate.convertAndSendToUser(toUserMessage.getUserId(),“/message”,toUserMessage.getMessage());响应信息到客户端
客户端连接代码 client Stomp.over(WebSocket.class, ws:// Constants.IPPORT /hello/websocket);client .connect();篇幅有限内容还有很多创作不易 … 祝愿您的生活永远灿烂如花 …