国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Easeui 3.0 即時通訊的問題匯總

2019-12-12 05:11:07
字體:
來源:轉載
供稿:網友

 0、關于注冊賬號就不用說了。

1、創建應用、獲取appkey

0、創建應用

創建應用

1、填寫信息

填寫信息

2、獲取appkey

獲取appkey

2、集成

0、首先新建一個工程

1、這里主要介紹使用easeui來集成環信的即時通訊功能,需要下載sdk

下載android sdk
easeui的位置

2、把easeui當做依賴導入到工程當中,然后建立依賴關系

建立依賴關系

3在導入之后可能會出現的問題:

3.0

<uses-permission android:name="android.permission.ACCESS_MOCK_LACATTON>

這個權限報錯,在咨詢官方技術之后,得到的答復是,可以去掉該權限。具體的權限信息可以參考demo中的權限。

3.1 因為easeui里邊包含v4包,導致V4包沖突,但是在刪除掉項目的V4包之后,還是報錯。原因是在工程里邊包含v7包,而v7包又包含v4,所以還是會報錯。

報錯信息如下:

這里寫圖片描述

開始以為是jdk的原因,但是在查閱資料之后發現是包沖突的問題,解決方案:
解決:把項目中的v7刪掉,然后把easeui里邊的V4刪掉,然后在easeui里邊添加v7包。這樣就不會報錯了。

4、環境信息配置:

4.0:在AndroidManifest.xml文件中加入一下權限:

需要的權限

4.1:配置環信key

配置環信key

4.2初始化:這里寫最簡單的,其他的像好友驗證等功能參考demo

這里寫圖片描述

4.3 .0在easeui使用中,涉及到百度地圖,在此需要自行到百度地圖官網創建應用,申請appkey:
具體配置如下(在此處只需要填寫appkey,不需要初始化):

這里寫圖片描述

4.3.1:在發送圖片的時候可能會有看大圖、查看地圖的功能,在easeui中提提供了這些activity,我們只需要在自己的清單文件中注冊一下。具體代碼如下:

這里寫圖片描述

3、使用

在此處略過文檔上有的登錄注冊功能。在此介紹部分可能會有坑的地方。

注意:0、注冊功能一般需要服務器來實現;1、在使用初始化的時候,easeui默認有自動登錄功能,使用時需要注意,如果需要關閉此功能,在初始化部分添加如下代碼:

//去取消自動登錄 options.setAutoLogin(false);

0、easeui 適配android6.0:

在下載好的demo中,找到runtimepermissions文件夾,(具體路徑看圖),然后在MainActivity中加入一下代碼(看圖)

這里寫圖片描述

在MainActivity中添加如下代碼

1、在消息監聽中如需需要查看有沒有走到這里,不要使用Toast來驗證,因為在監聽中屬于子線程。

2、使用到的頭像、用戶名這些信息。建議把頭像的url和用戶昵稱存在本地數據庫,這樣不用每次都去后臺取(取后臺取的話,可能會出現一閃一閃的情況),如果用戶信息發生變化了,可以讓后臺給發一個透傳消息,然后去更新數據庫里邊的數據。

3、關于消息的置頂和取消置頂,可以通過擴展消息來實現,在環信里邊,每個消息可以附加擴展消息,我們可以在擴展消息里邊加一個屬性,然后在設置適配器的時候根據這個屬性去實現置頂,在發送消息的時候要給每一個置頂的會話中的消息,都附加上該擴展屬性。

4、關于群聊天的禁言,可以在進入去聊天的時候先判斷自己的禁言狀態,然后當被禁言和被取消禁言的時候,讓后臺給發一個透傳消息,來解決這個問題。

5、關于設置圓形頭像,需要在布局文件中使用自定義view去替換easeui中的ImageView;

6、自定義消息列表,最后一條消息如果是表情,就加上這一句,就可以把最后表情表現出來了。

holder.messages_text.setText( EaseSmileUtils.getSmiledText(context, EaseCommonUtils.getMessageDigest(listEMConversation.get(position).getLastMessage(), context)),BufferType.SPANNABLE);

位置:

if (listEMConversation.get(position).getLastMessage().getType() == EMMessage.Type.LOCATION) {holder.messages_text.setText("[位置]");}

7、自己給自己發一條消息

// 刪除和某個user會話,如果需要保留聊天記錄,傳false/EMClient.getInstance().chatManager().deleteConversation(username, true);/// 接收到好友請求 然后創建一個會話 添加一個擴展消息EMMessage emMessage = EMMessage.createReceiveMessage(EMMessage.Type.CMD);emMessage.setFrom(username);//發送人emMessage.addBody(new EMTextMessageBody("我請求添加您為好友"));//創建消息emMessage.setUnread(true);//是否已讀emMessage.setChatType(EMMessage.ChatType.Chat);//聊天類型emMessage.setMsgTime(System.currentTimeMillis());//消息時間emMessage.setAttribute("messagetype", "FriendInvitation");//擴展消息emMessage.setTo(PublicStaticData.prefreences.getString("ueserid", ""));//發送給EMClient.getInstance().chatManager().saveMessage(emMessage);自己給自己發一條消息

8、自定義消息條目,如果需要實現像QQ聊天頁面的分享,就需要自己去定義一個這樣的條目的布局,額,不對,因該是兩個。一個接收的一個發送的。

然后easeui給提供了一個接口(EaseCustomChatRowProvider),咱們去實現這個接口接可以了。
關鍵代碼如下:

8.0首先去寫自定義的條目數量(在需要的數量上*2,一個接收的,一個發送的)

定義接收和發送的消息類型

8.1去實現三個方法:

getCustomChatRowTypeCount()getCustomChatRowType(EMMessage message)getCustomChatRow(EMMessage message, intposition,BaseAdapter adapter)

getCustomChatRowType

在此方法中可以利用消息的擴展消息來實現,我們先判斷擴展消息的內容,然后去分別加載不同的布局。

getCustomChatRow

去創建不同的條目

自定義條目代碼如下(大家可以參照easeui自帶的條目樣式去實現,此處提供EaseChatRowPic.java代碼)

importandroid.content.Context;importandroid.text.Spannable;importandroid.view.View;importandroid.widget.BaseAdapter;importandroid.widget.ImageView;importandroid.widget.TextView;importandroid.widget.TextView.BufferType;importcom.hyphenate.chat.EMClient;importcom.hyphenate.chat.EMMessage;importcom.hyphenate.chat.EMMessage.ChatType;importcom.hyphenate.easeui.R;importcom.hyphenate.easeui.publicData.StaticData;importcom.hyphenate.easeui.utils.EaseSmileUtils;importcom.hyphenate.exceptions.HyphenateException;importcom.lidroid.xutils.BitmapUtils;public classEaseChatRowOnePicextendsEaseChatRow {privateTextViewtitle;privateImageViewimg1;privateTextViewcontent;publicEaseChatRowOnePic(Contextcontext,EMMessage message, intposition,BaseAdapter adapter) {super(context,message,position,adapter);}@Overrideprotected voidonInflatView() {inflater.inflate(message.direct() == EMMessage.Direct.RECEIVE?R.layout.myease_row_received_picture2: R.layout.myease_row_sent_picture2, this);}@Overrideprotected voidonFindViewById() {title= (TextView) findViewById(R.id.myease2_received_title);content= (TextView) findViewById(R.id.myease2_received_content);img1= (ImageView) findViewById(R.id.myease2_received_image132);}@Overridepublic voidonSetUpView() {// 設置內容String titleString ="";String contentString ="";String picurlString ="";//設置標題try{titleString =message.getStringAttribute("EXT_TITLE");contentString =message.getStringAttribute("EXT_DETAIL");picurlString =message.getStringAttribute("EXT_IMG1");}catch(HyphenateException e) {e.printStackTrace();}Spannable span;span = EaseSmileUtils.getSmiledText(context,titleString);title.setText(span,BufferType.SPANNABLE);//設置內容span = EaseSmileUtils.getSmiledText(context,contentString);content.setText(span,BufferType.SPANNABLE);if(!picurlString.equals("")) {//設置圖片BitmapUtils bitmapUtils =newBitmapUtils(getContext(),StaticData.picpath);bitmapUtils.display(img1,picurlString);}handleTextMessage();}protected voidhandleTextMessage() {if(message.direct() == EMMessage.Direct.SEND) {setMessageSendCallback();switch(message.status()) {caseCREATE:progressBar.setVisibility(View.GONE);statusView.setVisibility(View.VISIBLE);// 發送消息break;caseSUCCESS:// 發送成功progressBar.setVisibility(View.GONE);statusView.setVisibility(View.GONE);break;caseFAIL:// 發送失敗progressBar.setVisibility(View.GONE);statusView.setVisibility(View.VISIBLE);break;caseINPROGRESS:// 發送中progressBar.setVisibility(View.VISIBLE);statusView.setVisibility(View.GONE);break;default:break;}}else{if(!message.isAcked() &&message.getChatType() == ChatType.Chat) {try{EMClient.getInstance().chatManager().ackMessageRead(message.getFrom(),message.getMsgId());}catch(HyphenateException e) {e.printStackTrace();}}}}@Overrideprotected voidonUpdateView() {adapter.notifyDataSetChanged();}@Overrideprotected voidonBubbleClick() {}}

使用:在fragment所在的activity中,設置聊天頁面的屬性,代碼如下:

這里寫圖片描述

使用自定義的條目

9、聊天界面的啟動模式 使用singleTask 如果有界面重復跳轉,就會出現頁面跳轉。

10、在集成easeui之后,發現一個問題。可能會出現在有些版本的手機上一點桌面的圖標,程序崩潰的情況,解決方案如下:

在libs下創建一個armeabi-v7a,將armeabi中的so在v7a復制一份,兼容更多版本的手機。

解決點擊圖標崩潰問題

11、 發現在聊天頁面的語音播放功能不能使用,沒有點擊播放的效果,找了好久的原因。發現在進入聊天的fragment之前設置了點擊頭像的屬性。。。真是個坑,花了半天時間。。

messageList.setItemClickListener(new EaseChatMessageList.MessageListItemClickListener() {@Overridepublic void onUserAvatarClick(String username) {System.err.println("點擊頭像");// 頭像點擊事件PublicStaticData.thisFriendsId = Long.parseLong(username);System.err.println("username:"+Long.parseLong(username));Intent intent = new Intent(XingActivity_01.this,ShejiaoFriendDetailsActivity.class);startActivity(intent);}@Overridepublic void onResendClick(final EMMessage message) {// 重發消息按鈕點擊事件}@Overridepublic void onBubbleLongClick(EMMessage message) {// 氣泡框長按事件}@Overridepublic boolean onBubbleClick(EMMessage message) {// 氣泡框點擊事件,EaseUI有默認實現這個事件,如果需要覆蓋,return值要返回true//注意這里,一定要返回false,否則點擊事件就會覆蓋了return false;}@Overridepublic void onUserAvatarLongClick(String username) {// TODO Auto-generated method stub}});

消息的點擊事件

消息的點擊事件

好了,easeui部分就分享到這里。如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武胜县| 儋州市| 盱眙县| 榕江县| 长岭县| 都江堰市| 炉霍县| 三亚市| 宜城市| 丰都县| 东台市| 玉环县| 鹤峰县| 东宁县| 高阳县| 达日县| 纳雍县| 上蔡县| 兴安盟| 江达县| 泰和县| 客服| 漳平市| 青河县| 都江堰市| 奈曼旗| 东兰县| 丘北县| 历史| 平山县| 佛教| 类乌齐县| 石嘴山市| 遵义县| 延寿县| 萨迦县| 黄龙县| 科技| 泽普县| 尚志市| 北宁市|