欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android Easeui 3.0 即時(shí)通訊的問題匯總

 更新時(shí)間:2016年09月23日 08:57:28   作者:明天會(huì)更好007  
這篇文章主要介紹了Android Easeui 3.0 即時(shí)通訊的問題匯總的相關(guān)資料,需要的朋友可以參考下

 0、關(guān)于注冊(cè)賬號(hào)就不用說了。

1、創(chuàng)建應(yīng)用、獲取appkey

0、創(chuàng)建應(yīng)用

創(chuàng)建應(yīng)用

1、填寫信息

填寫信息

2、獲取appkey

獲取appkey

2、集成

0、首先新建一個(gè)工程

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

下載android sdk
easeui的位置

2、把easeui當(dāng)做依賴導(dǎo)入到工程當(dāng)中,然后建立依賴關(guān)系

建立依賴關(guān)系

3在導(dǎo)入之后可能會(huì)出現(xiàn)的問題:

3.0

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

這個(gè)權(quán)限報(bào)錯(cuò),在咨詢官方技術(shù)之后,得到的答復(fù)是,可以去掉該權(quán)限。具體的權(quán)限信息可以參考demo中的權(quán)限。

3.1 因?yàn)閑aseui里邊包含v4包,導(dǎo)致V4包沖突,但是在刪除掉項(xiàng)目的V4包之后,還是報(bào)錯(cuò)。原因是在工程里邊包含v7包,而v7包又包含v4,所以還是會(huì)報(bào)錯(cuò)。

報(bào)錯(cuò)信息如下:

這里寫圖片描述

開始以為是jdk的原因,但是在查閱資料之后發(fā)現(xiàn)是包沖突的問題,解決方案:
解決:把項(xiàng)目中的v7刪掉,然后把easeui里邊的V4刪掉,然后在easeui里邊添加v7包。這樣就不會(huì)報(bào)錯(cuò)了。

4、環(huán)境信息配置:

4.0:在AndroidManifest.xml文件中加入一下權(quán)限:

需要的權(quán)限

4.1:配置環(huán)信key

配置環(huán)信key

4.2初始化:這里寫最簡(jiǎn)單的,其他的像好友驗(yàn)證等功能參考demo

這里寫圖片描述

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

這里寫圖片描述

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

這里寫圖片描述

3、使用

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

注意:0、注冊(cè)功能一般需要服務(wù)器來實(shí)現(xiàn);1、在使用初始化的時(shí)候,easeui默認(rèn)有自動(dòng)登錄功能,使用時(shí)需要注意,如果需要關(guān)閉此功能,在初始化部分添加如下代碼:

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

0、easeui 適配android6.0:

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

這里寫圖片描述

在MainActivity中添加如下代碼

1、在消息監(jiān)聽中如需需要查看有沒有走到這里,不要使用Toast來驗(yàn)證,因?yàn)樵诒O(jiān)聽中屬于子線程。

2、使用到的頭像、用戶名這些信息。建議把頭像的url和用戶昵稱存在本地?cái)?shù)據(jù)庫,這樣不用每次都去后臺(tái)取(取后臺(tái)取的話,可能會(huì)出現(xiàn)一閃一閃的情況),如果用戶信息發(fā)生變化了,可以讓后臺(tái)給發(fā)一個(gè)透?jìng)飨?,然后去更新?shù)據(jù)庫里邊的數(shù)據(jù)。

3、關(guān)于消息的置頂和取消置頂,可以通過擴(kuò)展消息來實(shí)現(xiàn),在環(huán)信里邊,每個(gè)消息可以附加擴(kuò)展消息,我們可以在擴(kuò)展消息里邊加一個(gè)屬性,然后在設(shè)置適配器的時(shí)候根據(jù)這個(gè)屬性去實(shí)現(xiàn)置頂,在發(fā)送消息的時(shí)候要給每一個(gè)置頂?shù)臅?huì)話中的消息,都附加上該擴(kuò)展屬性。

4、關(guān)于群聊天的禁言,可以在進(jìn)入去聊天的時(shí)候先判斷自己的禁言狀態(tài),然后當(dāng)被禁言和被取消禁言的時(shí)候,讓后臺(tái)給發(fā)一個(gè)透?jìng)飨?,來解決這個(gè)問題。

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

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

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

位置:

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

7、自己給自己發(fā)一條消息

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

8、自定義消息條目,如果需要實(shí)現(xiàn)像QQ聊天頁面的分享,就需要自己去定義一個(gè)這樣的條目的布局,額,不對(duì),因該是兩個(gè)。一個(gè)接收的一個(gè)發(fā)送的。

然后easeui給提供了一個(gè)接口(EaseCustomChatRowProvider),咱們?nèi)?shí)現(xiàn)這個(gè)接口接可以了。
關(guān)鍵代碼如下:

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

定義接收和發(fā)送的消息類型

8.1去實(shí)現(xiàn)三個(gè)方法:

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

getCustomChatRowType

在此方法中可以利用消息的擴(kuò)展消息來實(shí)現(xiàn),我們先判斷擴(kuò)展消息的內(nèi)容,然后去分別加載不同的布局。

getCustomChatRow

去創(chuàng)建不同的條目

自定義條目代碼如下(大家可以參照easeui自帶的條目樣式去實(shí)現(xiàn),此處提供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);
}
@Override
protected voidonInflatView() {
inflater.inflate(message.direct() == EMMessage.Direct.RECEIVE?
R.layout.myease_row_received_picture2: R.layout.myease_row_sent_picture2, this);
}
@Override
protected 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);
}
@Override
public voidonSetUpView() {
// 設(shè)置內(nèi)容
String titleString ="";
String contentString ="";
String picurlString ="";
//設(shè)置標(biāo)題
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);
//設(shè)置內(nèi)容
span = EaseSmileUtils.getSmiledText(context,contentString);
content.setText(span,BufferType.SPANNABLE);
if(!picurlString.equals("")) {
//設(shè)置圖片
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);
// 發(fā)送消息
break;
caseSUCCESS:// 發(fā)送成功
progressBar.setVisibility(View.GONE);
statusView.setVisibility(View.GONE);
break;
caseFAIL:// 發(fā)送失敗
progressBar.setVisibility(View.GONE);
statusView.setVisibility(View.VISIBLE);
break;
caseINPROGRESS:// 發(fā)送中
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();
}
}
}
}
@Override
protected voidonUpdateView() {
adapter.notifyDataSetChanged();
}
@Override
protected voidonBubbleClick() {}
}

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

這里寫圖片描述

使用自定義的條目

9、聊天界面的啟動(dòng)模式 使用singleTask 如果有界面重復(fù)跳轉(zhuǎn),就會(huì)出現(xiàn)頁面跳轉(zhuǎn)。

10、在集成easeui之后,發(fā)現(xiàn)一個(gè)問題??赡軙?huì)出現(xiàn)在有些版本的手機(jī)上一點(diǎn)桌面的圖標(biāo),程序崩潰的情況,解決方案如下:

在libs下創(chuàng)建一個(gè)armeabi-v7a,將armeabi中的so在v7a復(fù)制一份,兼容更多版本的手機(jī)。

解決點(diǎn)擊圖標(biāo)崩潰問題

11、 發(fā)現(xiàn)在聊天頁面的語音播放功能不能使用,沒有點(diǎn)擊播放的效果,找了好久的原因。發(fā)現(xiàn)在進(jìn)入聊天的fragment之前設(shè)置了點(diǎn)擊頭像的屬性。。。真是個(gè)坑,花了半天時(shí)間。。

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

消息的點(diǎn)擊事件

消息的點(diǎn)擊事件

好了,easeui部分就分享到這里。如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • mac系統(tǒng)下載、安裝、使用AndroidStudio

    mac系統(tǒng)下載、安裝、使用AndroidStudio

    本文給大家介紹的是在Mac系統(tǒng)中下載安裝以及使用AndroidStudio的詳細(xì)教程,非常的實(shí)用,有需要的小伙伴可以參考下
    2017-10-10
  • Android開啟新線程實(shí)現(xiàn)電子廣告牌項(xiàng)目

    Android開啟新線程實(shí)現(xiàn)電子廣告牌項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了Android開啟新線程實(shí)現(xiàn)電子廣告牌項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 淺談Gradle 常用配置總結(jié)

    淺談Gradle 常用配置總結(jié)

    這篇文章主要介紹了淺談Gradle 常用配置總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • Android編程之內(nèi)存溢出解決方案(OOM)實(shí)例總結(jié)

    Android編程之內(nèi)存溢出解決方案(OOM)實(shí)例總結(jié)

    這篇文章主要介紹了Android編程之內(nèi)存溢出解決方案(OOM),結(jié)合實(shí)例實(shí)例總結(jié)分析了Android編程過程中常見的內(nèi)存溢出情況與對(duì)應(yīng)的解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • 為Android添加一門新語言的解決辦法

    為Android添加一門新語言的解決辦法

    本篇文章是對(duì)為Android添加一門新語言的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android自定義控件實(shí)現(xiàn)簡(jiǎn)單滑動(dòng)開關(guān)效果

    Android自定義控件實(shí)現(xiàn)簡(jiǎn)單滑動(dòng)開關(guān)效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)簡(jiǎn)單滑動(dòng)開關(guān)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Android實(shí)現(xiàn)手電筒電源鍵關(guān)閉功能

    Android實(shí)現(xiàn)手電筒電源鍵關(guān)閉功能

    這篇文章主要介紹了Android實(shí)現(xiàn)手電筒電源鍵關(guān)閉功能,在打開手電筒之后,機(jī)器休眠,客戶要求點(diǎn)擊電源鍵,手電筒需要關(guān)閉,下面小編給大家分享實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2017-11-11
  • 詳解Android開發(fā)之MP4文件轉(zhuǎn)GIF文件

    詳解Android開發(fā)之MP4文件轉(zhuǎn)GIF文件

    這篇文章介紹的是將錄下來的視頻選取一小段轉(zhuǎn)為 GIF 文件,不僅時(shí)間段可以手動(dòng)選取,而且還需要支持截取視頻的局部區(qū)域轉(zhuǎn)為 GIF,網(wǎng)上調(diào)研了一下技術(shù)方案,覺得還是有必要把實(shí)現(xiàn)過程拿出來分享下,有需要的可以直接拿過去用。下面來一起看看。
    2016-08-08
  • 學(xué)習(xí)Android Handler消息傳遞機(jī)制

    學(xué)習(xí)Android Handler消息傳遞機(jī)制

    這篇文章主要為大家詳細(xì)介紹了Android Handler消息傳遞機(jī)制,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android使用WebSocket實(shí)現(xiàn)多人游戲

    Android使用WebSocket實(shí)現(xiàn)多人游戲

    WebSocket 是 HTML5 一種新的協(xié)議。實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信,下面通過本文給大家分享Android使用WebSocket實(shí)現(xiàn)多人游戲,需要的朋友參考下吧
    2017-11-11

最新評(píng)論