Android 环信的简单使用
来源:互联网 发布:vscode markdown 预览 编辑:程序博客网 时间:2024/06/07 04:09
最近在项目中用到了即使用讯,客户要求用环信,我擦,第一次做,坑啊,网上对这个没有特别明确的使用教程,环信的官网也不像其他的第三方有明确的使用方法,只是说了一个简单的集成,看其他人的博客感觉都说的很麻烦,很含糊,所以现在项目完成了,做个简单的总结,希望能帮助到还不太会的童鞋~~
第一步,集成步骤
下载官方发demo,把easeui以Moudle的形式集成到自己的项目中
到这里就算集成完事了,接下来实现功能
1,首先实现基础的聊天功能
自己写一个Activity,比如我自己写了一个ChatRoomActivity,该activity的布局文件很简单
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:fitsSystemWindows="true" android:id="@+id/rl_beijing" android:layout_width="match_parent" android:layout_height="match_parent"> <com.smarttrust.hunlian.UI.TitlebarUI android:id="@+id/titlebarUI" android:layout_width="match_parent" android:layout_height="wrap_content" /> <FrameLayout android:background="@drawable/morenbeijing" android:layout_below="@id/titlebarUI" android:id="@+id/ec_layout_container" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout></RelativeLayout>
然后,自己写一个ChatFragment,继承EaseChatFragment,在ChatRoomActivity中private FrameLayout ec_layout_container;private EaseChatFragment chatFragment;
private void initChat(){ ///调用EaseUI封装好的聊天页面 chatFragment = new ChatFragment(); ///将参数传递给聊天页面 chatFragment.setArguments(getIntent().getExtras()); getSupportFragmentManager().beginTransaction(). add(R.id.ec_layout_container,chatFragment).commit(); }
到此就实现了简单的聊天功能,继续往下聊天肯定要有头像,昵称,点击头像触发跳转(比如跳转到该人的主页),点击消息内容触发(删除该条消息,或者长按复制)
1,先说说怎么传头像,这里只要上传自己的头像然后对方接收即可,这里又回到上面的方法,在ChatRoomActivity中
private void initChat(){ SharedPreferences preferences=getSharedPreferences("UserMessage", Context.MODE_PRIVATE); String headurl=preferences.getString("headurl", "");//头像 String userNickname=preferences.getString("nickname", "");//昵称 ///调用EaseUI封装好的聊天页面 chatFragment = new ChatFragment(); chatFragment.setSetmobile(setmobile); chatFragment.setUserNickname(userNickname); chatFragment.setHearurl(headurl);// chatFragment.setUrlBg(drawable); ///将参数传递给聊天页面 chatFragment.setArguments(getIntent().getExtras()); getSupportFragmentManager().beginTransaction(). add(R.id.ec_layout_container,chatFragment).commit(); }
我这里在环信的EaseChatFragment中定义了昵称,头像的set,get方法,获取ChatRoomActivity中传过来的昵称和头像,扩展EMMessage,比如在发送文本,图片,位置,语音的地方扩展,找到如下方法进行拓展即可,代码如下//send messageprotected void sendTextMessage(String content) { if(EaseAtMessageHelper.get().containsAtUsername(content)){ sendAtMessage(content); }else{ EMMessage message = EMMessage.createTxtSendMessage(content, toChatUsername); message.setAttribute("headurl",getHearurl()); message.setAttribute("userNickname",getUserNickname()); sendMessage(message); Log.e("sujd===========send",getHearurl()); Log.e("sujd===========send",getUserNickname()); }}
protected void sendBigExpressionMessage(String name, String identityCode){ EMMessage message = EaseCommonUtils.createExpressionMessage(toChatUsername, name, identityCode); message.setAttribute("headurl",getHearurl()); message.setAttribute("userNickname",getUserNickname()); sendMessage(message);}protected void sendVoiceMessage(String filePath, int length) { EMMessage message = EMMessage.createVoiceSendMessage(filePath, length, toChatUsername); message.setAttribute("headurl",getHearurl()); message.setAttribute("userNickname",getUserNickname()); sendMessage(message);}protected void sendImageMessage(String imagePath) { EMMessage message = EMMessage.createImageSendMessage(imagePath, false, toChatUsername); message.setAttribute("headurl",getHearurl()); message.setAttribute("userNickname",getUserNickname()); sendMessage(message);}protected void sendLocationMessage(double latitude, double longitude, String locationAddress) { EMMessage message = EMMessage.createLocationSendMessage(latitude, longitude, locationAddress, toChatUsername); message.setAttribute("headurl",getHearurl()); message.setAttribute("userNickname",getUserNickname()); sendMessage(message);}protected void sendVideoMessage(String videoPath, String thumbPath, int videoLength) { EMMessage message = EMMessage.createVideoSendMessage(videoPath, thumbPath, videoLength, toChatUsername); message.setAttribute("headurl",getHearurl()); message.setAttribute("userNickname",getUserNickname()); sendMessage(message);}protected void sendFileMessage(String filePath) { EMMessage message = EMMessage.createFileSendMessage(filePath, toChatUsername); message.setAttribute("headurl",getHearurl()); message.setAttribute("userNickname",getUserNickname()); sendMessage(message);}
发送以后得接受显示出来,找到EaseChatRow这个类,找到方法修改即可private void setUpBaseView() { // set nickname, avatar and background of bubble TextView timestamp = (TextView) findViewById(R.id.timestamp); if (timestamp != null) { if (position == 0) { timestamp.setText(DateUtils.getTimestampString(new Date(message.getMsgTime()))); timestamp.setVisibility(View.VISIBLE); } else { // show time stamp if interval with last message is > 30 seconds EMMessage prevMessage = (EMMessage) adapter.getItem(position - 1); if (prevMessage != null && DateUtils.isCloseEnough(message.getMsgTime(), prevMessage.getMsgTime())) { timestamp.setVisibility(View.GONE); } else { timestamp.setText(DateUtils.getTimestampString(new Date(message.getMsgTime()))); timestamp.setVisibility(View.VISIBLE); } } } if (userAvatarView != null) { //set nickname and avatar try { Log.e("环信=======getFrom", message.getStringAttribute("headurl")); } catch (HyphenateException e) { e.printStackTrace(); } if (message.direct() == Direct.SEND) { try { EaseUserUtils.setUserAvatar(context, message.getStringAttribute("headurl"), EMClient.getInstance().getCurrentUser(), userAvatarView); } catch (HyphenateException e) { e.printStackTrace(); } } else { try { EaseUserUtils.setUserAvatar(context, message.getStringAttribute("headurl"), message.getFrom(), userAvatarView); } catch (HyphenateException e) { e.printStackTrace(); } EaseUserUtils.setUserNick(message.getFrom(), usernickView); } } if (deliveredView != null) { if (message.isDelivered()) { deliveredView.setVisibility(View.VISIBLE); } else { deliveredView.setVisibility(View.INVISIBLE); } } if (ackedView != null) { if (message.isAcked()) { if (deliveredView != null) { deliveredView.setVisibility(View.INVISIBLE); } ackedView.setVisibility(View.VISIBLE); } else { ackedView.setVisibility(View.INVISIBLE); } } if (itemStyle != null) { if (userAvatarView != null) { if (itemStyle.isShowAvatar()) { userAvatarView.setVisibility(View.VISIBLE); EaseAvatarOptions avatarOptions = EaseUI.getInstance().getAvatarOptions(); if (avatarOptions != null && userAvatarView instanceof EaseImageView) { EaseImageView avatarView = ((EaseImageView) userAvatarView); if (avatarOptions.getAvatarShape() != 0) avatarView.setShapeType(avatarOptions.getAvatarShape()); if (avatarOptions.getAvatarBorderWidth() != 0) avatarView.setBorderWidth(avatarOptions.getAvatarBorderWidth()); if (avatarOptions.getAvatarBorderColor() != 0) avatarView.setBorderColor(avatarOptions.getAvatarBorderColor()); if (avatarOptions.getAvatarRadius() != 0) avatarView.setRadius(avatarOptions.getAvatarRadius()); } } else { userAvatarView.setVisibility(View.GONE); } } if (usernickView != null) { if (itemStyle.isShowUserNick()) usernickView.setVisibility(View.VISIBLE); else usernickView.setVisibility(View.GONE); } if (bubbleLayout != null) { if (message.direct() == Direct.SEND) { if (itemStyle.getMyBubbleBg() != null) { bubbleLayout.setBackgroundDrawable(((EaseMessageAdapter) adapter).getMyBubbleBg()); } } else if (message.direct() == Direct.RECEIVE) { if (itemStyle.getOtherBubbleBg() != null) { bubbleLayout.setBackgroundDrawable(((EaseMessageAdapter) adapter).getOtherBubbleBg()); } } } }}
有时候需要把头像设置成圆形,找到上面方法用到的工具类EaseUserUtils,进行修改
public static void setUserAvatar(Context context,String hearurl, String username, ImageView imageView){ EaseUser user = getUserInfo(username); Log.e("环信=======username",username); Log.e("环信=======username",user+""); //头像设置为圆形 Glide.with(context).load(hearurl) .diskCacheStrategy(DiskCacheStrategy.RESULT) .bitmapTransform(new CropCircleTransformation(context)) .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.getNick() != null){ textView.setText(user.getNick()); }else{ textView.setText(username); } } }
到此就完成了头像,昵称的设置,接下来看点击事件ChatFragment extends EaseChatFragment implements EaseChatFragmentHelper
在我们的这个类里实现如下方法,进行相应的点击 即可
@Override public void onSetMessageAttributes(EMMessage message) { Log.e("sujd==========","11111"); } @Override public void onEnterToChatDetails() { Log.e("sujd==========","22222"); } @Override public void onAvatarClick(String username) { Log.e("sujd==========","点击头像触发的事件"); } @Override public void onAvatarLongClick(String username) { Log.e("sujd==========","44444"); } @Override public boolean onMessageBubbleClick(EMMessage message) { Log.e("sujd==========","55555"); return false; } @Override public void onMessageBubbleLongClick(final EMMessage message) { Log.e("sujd==========","消息框长按事件"); } @Override public boolean onExtendMenuItemClick(int itemId, View view) { Log.e("sujd==========","77777"); return false; } @Override public EaseCustomChatRowProvider onSetCustomChatRowProvider() { Log.e("sujd==========","88888"); return null; }}
阅读全文
0 0
- Android 环信的简单使用
- iOS微信支付简单的使用
- Android使用环信问题
- android导入环信,使用环信UI的API的方法
- 环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)。
- 环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)。
- 环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)
- 环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)。
- XMPP与环信的简单介绍
- iOS 使用环信EaseUI3.0集成简单聊天遇到的问题!持续更新...
- 使用环信的“坑”
- Android使用EaseUI集成环信3.0
- Android 使用集成环信EaseUI
- Android环信IM简单集成(EaseUI)
- android Ijkplayer最简单的简单使用
- Android ListView的简单使用
- Android Bundle的简单使用
- Android 数据库的简单使用
- 和为S的连续整数序列 JAVA实现
- Resin介绍及配置
- 使用npm安装包
- ZennoPoster
- 如何利用Java库学习神经网络
- Android 环信的简单使用
- CoordinatorLayout和AppBarLayout(android MD 三)
- 入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
- <机器学习>---决策树---补充
- NOIP集训Week 7总结
- Ajax-Js原生Ajax和Jquery的Ajax(一)
- 如何用atom直接运行python程序
- 饮料新品难存活,经销商需避开哪些选品雷区
- [Unity 网络]网络基础