Android 十分钟集成环信聊天+设置头像昵称。。
从网上看了这么多的案例都是坑呐。。
所以自己写一个。。
首先是集成环信的model,这个有很多教程,不过还是写下我集成的过程。。
第一步 注册。。
瞎填就好,反正没有关系。。
第二步 下载sdk和module。。
官网下载链接

第三步 导入easyui这个module
我们集成其中的easyui这个module
在 examples下有个easyui
如何导入module呢?
点这个。。

然后添加到依赖里。。
先点这个

然后点这个

ok了同志们到现在为止,我们就成功的将环信的easyui添加进去了。。
接下来是使用。。
第四步 设置头像昵称。。
看一下easyui的源码,我们发现了一个接口叫做
/*** User profile provider* @author wei**/public interface EaseUserProfileProvider {/*** return EaseUser for input username* @param username* @return*/EaseUser getUser(String username);}
啊哈,看来这个接口有点意思。
并且有set函数叫做在EaseUI这个类里
/*** set user profile provider* @param provider*/public void setUserProfileProvider(EaseUserProfileProvider userProvider){this.userProvider = userProvider;}
那么我们实现这个接口就好了。。
public class MyUserProvider implements EaseUI.EaseUserProfileProvider {private static MyUserProvider myUserProvider;// 设计成了单类。。private Map<String,EaseUser> userList = new HashMap<>();// 我服务器上获得头像的urlprivate String ImgUrl="http://xxxxx";@Overridepublic EaseUser getUser(String username) {if(userList.containsKey(username))//有就返归这个对象。。return userList.get(username);System.out.println("error : 没有 数据" + username);return null;}// 封装了一下public void setUser(String username,String nickname){if(!userList.containsKey(username)) {EaseUser easeUser = new EaseUser(username);userList.put(username,easeUser);}EaseUser easeUser = getUser(username);// 不用怀疑。环信的easerUser的父类有一个setNickname 的方法可以用来设置昵称,直接调用就好。。easeUser.setNickname(nickname);// 同理,设置一个图像的url就好,因为他加载头像是使用glide加载的easeUser.setAvatar(ImgUrl+username);}// 按照你喜欢的修改一下初始化函数吧,private MyUserProvider(){System.out.println("init myTestProfileProvider");}// 获取单类。。public static MyUserProvider getInstance() {if (myUserProvider == null) {myUserProvider = new MyUserProvider();}return myUserProvider;}
}
ok了,自此就可以完美的使用easyui,并且可以显示用户头像和昵称了。。
当然了不要忘了调用和初始化
在你的环形初始化的那个类里面加上这一句
// 设置自己实现的提供用户名和昵称的provider EaseUI.getInstance().setUserProfileProvider(MyUserProvider.getInstance());
实现显示用户头像和昵称的原理。。
为什么呢?看下源码。。
这是easyui里 加载头像和昵称的源码。。
/*** set user avatar* @param username*/public static void setUserAvatar(Context context, String username, ImageView imageView){EaseUser user = getUserInfo(username);if(user != null && user.getAvatar() != null){try {int avatarResId = Integer.parseInt(user.getAvatar());Glide.with(context).load(avatarResId).into(imageView);} catch (Exception e) {//use default avatarGlide.with(context).load(user.getAvatar()).diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.drawable.ease_default_avatar).into(imageView);}}else{Glide.with(context).load(R.drawable.ease_default_avatar).into(imageView);}}\\ 加载昵称的。。/*** set user's nickname*/public static void setUserNick(String username,TextView textView){if(textView != null){EaseUser user = getUserInfo(username);if(user != null && user.getNickname() != null){textView.setText(user.getNickname());}else{textView.setText(username);}}}
然后这是 easyui里 getUserInfo()的实现
/*** get EaseUser according username* @param username* @return*/public static EaseUser getUserInfo(String username){if(userProvider != null)return userProvider.getUser(username);return null;}
啊哈就是调用我们实现的接口类。。
所以说实现一个接口类就可完美的做到自定义昵称和头像。。我搜索了半天都没有找到如何实现的。。
蓝瘦。。
聊天如何实现的和源码啥的,我整理一下就放到下面。。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
