Android Easeui 3.0即時通信の問題のまとめ
0、登録アカウントについてはもちろんです。
1、アプリの作成、アプリの取得
0、アプリケーションの作成
1、記入情報
2、アプリを取得する
2、統合
0、まずプロジェクトを新規作成します。
1、ここでは主にeeasumを使って環信を集積するインスタント通信機能を紹介します。sdkをダウンロードする必要があります。
2、イービルを頼りに工事に導入し、依存関係を作る
3導入後に発生する問題:
3.0
3.1イービルにv 4のカバンが含まれているため、V 4のカバンが衝突しましたが、プロジェクトのV 4のカバンを削除した後、やはりエラーが発生しました。原因は工事中にv 7カバンが含まれていますが、v 7カバンにv 4が含まれていますので、やはりエラーが発生します。
エラーメッセージは以下の通りです。
最初はjdkの原因だと思っていましたが、資料を調べてみたら、衝突の問題です。解決案:
解決:プロジェクトのv 7を削除して、easureの中のV 4を削除して、easureの中にv 7のカバンを追加します。これで間違いないと思います。
4、環境情報の設定:
4.0:Android Manifest.xmlファイルに以下の権限を加える:
4.1:環信keyの設定
4.2初期化:ここで一番簡単に書いて、他の友達検証などの機能はdemoを参考にします。
4.3.0 ease euiの使用において、Baiduの地図に関するものであり、ここでは自分でBaiduの地図公式サイトに適用を作成し、appkeyを申請する必要がある。
具体的な配置は以下の通りです。
4.3.1:画像を送る時、大図を見たり、地図を見たりする機能があるかもしれません。easureでこれらのactivityを提供しました。私たちは自分のリストファイルに登録するだけです。具体的なコードは以下の通りです。
3、使用する
ここではドキュメント上の登録機能を省略しました。ここで紹介する部分は穴があるかもしれません。
注意:0、登録機能は一般的にサーバーが必要です。1、初期化を使用する時、easuiはデフォルトで自動登録機能があります。使用時に注意が必要です。この機能をオフにする必要があれば、初期化部分に下記のコードを追加します。
ダウンロードしたdemoの中に、runtimepermissionsフォルダを見つけて、MainActivityにコードを入れてください。
MainActivityに下記のコードを追加します。
1、メッセージ傍受中にここに来たかどうかを確認する必要があれば、Toastを使って検証しないでください。
2、使用した顔写真、ユーザ名などの情報。画像のurlとユーザーのニックネームをローカルデータベースに存在させることを提案します。これは毎回バックグラウンドに取りに行かなくてもいいです。(バックグラウンドを取ると、フラッシュが発生する場合があります。)、ユーザーの情報が変化したら、バックグラウンドから透過メッセージを送って、データバンクの中のデータを更新します。
3、メッセージのセットトップとキャンセルセットトップについては、拡張メッセージによって実現することができ、各メッセージは拡張メッセージを付加することができ、拡張メッセージに属性を追加して、アダプターを設置する時にこの属性に従ってセットトップを実現し、メッセージを送信する時に各セットトップのセッションにメッセージを送ることができます。この拡張属性を追加します。
4、グループチャットの禁言については、チャットに入る時にまず自分の禁言状態を判断して、その後、禁言と禁言がキャンセルされた時に、バックグランドにニュースを送って、この問題を解決します。
5、円形の顔写真を設定するには、レイアウトファイルの中でカスタムviewを使って、ImageViewを置換する必要がある。
6、カスタムメッセージリスト、最後のメッセージが表情であれば、この文を加えて最後の表情を表現することができます。
そして、ease euiはインターフェースを提供しました。私たちはこのインターフェースの接続を実現しに行きます。
キーコードは以下の通りです。
8.0まず、ユーザー定義のエントリ数を書きます。(必要な数に*2、受信したもの、送信したもの)
受信と送信のメッセージの種類を指定します。
8.1 3つの方法を実現する:
この方法は、メッセージの拡張メッセージを用いて実装することができ、まず拡張メッセージの内容を判断し、その後、異なるレイアウトをそれぞれロードする。
異なる項目を作成します。
ユーザー定義の項目コードは以下の通りです。
ユーザー定義の項目を使う
9、チャットインターフェースの起動モードは、singleTaskを使用して、インターフェースがあれば、繰り返しジャンプして、ページが表示されます。
10、easureを統合した後、一つの問題を発見する。一部のバージョンの携帯電話にデスクトップのアイコンが表示されるかもしれません。プログラムが崩壊した場合、解決策は以下の通りです。
libsでarmeabi-v 7 aを作成し、armeabiのsoをv 7 aでコピーし、より多くのバージョンの携帯電話に対応します。
11、チャットページの音声再生機能が使えないことを発見しました。クリックして再生する効果がなく、長い間の原因を探しました。チャットに入る前にアイコンをクリックする属性を設定しています。本当に穴があって、長い時間がかかりました。
はい、イービルの部分はここで共有します。もし皆さんが何か質問があれば、メッセージをください。ここでも私たちのサイトを応援してくれてありがとうございます。
1、アプリの作成、アプリの取得
0、アプリケーションの作成
1、記入情報
2、アプリを取得する
2、統合
0、まずプロジェクトを新規作成します。
1、ここでは主にeeasumを使って環信を集積するインスタント通信機能を紹介します。sdkをダウンロードする必要があります。
2、イービルを頼りに工事に導入し、依存関係を作る
3導入後に発生する問題:
3.0
<uses-permission android:name="android.permission.ACCESS_MOCK_LACATTON>
この権限は間違っています。公式技術を相談した後、回答したのは、この権限を取り除くことができます。具体的な権限情報はデモの権限を参照することができます。3.1イービルにv 4のカバンが含まれているため、V 4のカバンが衝突しましたが、プロジェクトのV 4のカバンを削除した後、やはりエラーが発生しました。原因は工事中にv 7カバンが含まれていますが、v 7カバンにv 4が含まれていますので、やはりエラーが発生します。
エラーメッセージは以下の通りです。
最初はjdkの原因だと思っていましたが、資料を調べてみたら、衝突の問題です。解決案:
解決:プロジェクトのv 7を削除して、easureの中のV 4を削除して、easureの中にv 7のカバンを追加します。これで間違いないと思います。
4、環境情報の設定:
4.0:Android Manifest.xmlファイルに以下の権限を加える:
4.1:環信keyの設定
4.2初期化:ここで一番簡単に書いて、他の友達検証などの機能はdemoを参考にします。
4.3.0 ease euiの使用において、Baiduの地図に関するものであり、ここでは自分でBaiduの地図公式サイトに適用を作成し、appkeyを申請する必要がある。
具体的な配置は以下の通りです。
4.3.1:画像を送る時、大図を見たり、地図を見たりする機能があるかもしれません。easureでこれらのactivityを提供しました。私たちは自分のリストファイルに登録するだけです。具体的なコードは以下の通りです。
3、使用する
ここではドキュメント上の登録機能を省略しました。ここで紹介する部分は穴があるかもしれません。
注意:0、登録機能は一般的にサーバーが必要です。1、初期化を使用する時、easuiはデフォルトで自動登録機能があります。使用時に注意が必要です。この機能をオフにする必要があれば、初期化部分に下記のコードを追加します。
//
options.setAutoLogin(false);
0、ease ui適合android 6.0:ダウンロードしたdemoの中に、runtimepermissionsフォルダを見つけて、MainActivityにコードを入れてください。
MainActivityに下記のコードを追加します。
1、メッセージ傍受中にここに来たかどうかを確認する必要があれば、Toastを使って検証しないでください。
2、使用した顔写真、ユーザ名などの情報。画像のurlとユーザーのニックネームをローカルデータベースに存在させることを提案します。これは毎回バックグラウンドに取りに行かなくてもいいです。(バックグラウンドを取ると、フラッシュが発生する場合があります。)、ユーザーの情報が変化したら、バックグラウンドから透過メッセージを送って、データバンクの中のデータを更新します。
3、メッセージのセットトップとキャンセルセットトップについては、拡張メッセージによって実現することができ、各メッセージは拡張メッセージを付加することができ、拡張メッセージに属性を追加して、アダプターを設置する時にこの属性に従ってセットトップを実現し、メッセージを送信する時に各セットトップのセッションにメッセージを送ることができます。この拡張属性を追加します。
4、グループチャットの禁言については、チャットに入る時にまず自分の禁言状態を判断して、その後、禁言と禁言がキャンセルされた時に、バックグランドにニュースを送って、この問題を解決します。
5、円形の顔写真を設定するには、レイアウトファイルの中でカスタムviewを使って、ImageViewを置換する必要がある。
6、カスタムメッセージリスト、最後のメッセージが表情であれば、この文を加えて最後の表情を表現することができます。
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、自分からメッセージを送る
// 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チャットページの共有を実現する必要があるなら、自分でこのような項目のレイアウトを定義する必要があります。一つの受信の一つの送信の。そして、ease euiはインターフェースを提供しました。私たちはこのインターフェースの接続を実現しに行きます。
キーコードは以下の通りです。
8.0まず、ユーザー定義のエントリ数を書きます。(必要な数に*2、受信したもの、送信したもの)
受信と送信のメッセージの種類を指定します。
8.1 3つの方法を実現する:
getCustomChatRowTypeCount()
getCustomChatRowType(EMMessage message)
getCustomChatRow(EMMessage message, intposition,BaseAdapter adapter)
get Cutstom ChatRowTypeこの方法は、メッセージの拡張メッセージを用いて実装することができ、まず拡張メッセージの内容を判断し、その後、異なるレイアウトをそれぞれロードする。
異なる項目を作成します。
ユーザー定義の項目コードは以下の通りです。
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() {
//
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();
}
}
}
}
@Override
protected voidonUpdateView() {
adapter.notifyDataSetChanged();
}
@Override
protected voidonBubbleClick() {}
}
使用:fragmentのactivityにチャットページの属性を設定します。コードは以下の通りです。ユーザー定義の項目を使う
9、チャットインターフェースの起動モードは、singleTaskを使用して、インターフェースがあれば、繰り返しジャンプして、ページが表示されます。
10、easureを統合した後、一つの問題を発見する。一部のバージョンの携帯電話にデスクトップのアイコンが表示されるかもしれません。プログラムが崩壊した場合、解決策は以下の通りです。
libsでarmeabi-v 7 aを作成し、armeabiのsoをv 7 aでコピーし、より多くのバージョンの携帯電話に対応します。
11、チャットページの音声再生機能が使えないことを発見しました。クリックして再生する効果がなく、長い間の原因を探しました。チャットに入る前にアイコンをクリックする属性を設定しています。本当に穴があって、長い時間がかかりました。
messageList.setItemClickListener(new EaseChatMessageList.MessageListItemClickListener() {
@Override
public 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);
}
@Override
public void onResendClick(final EMMessage message) {
//
}
@Override
public void onBubbleLongClick(EMMessage message) {
//
}
@Override
public boolean onBubbleClick(EMMessage message) {
// ,EaseUI , ,return true
// , false,
return false;
}
@Override
public void onUserAvatarLongClick(String username) {
// TODO Auto-generated method stub
}
});
メッセージのクリックイベントはい、イービルの部分はここで共有します。もし皆さんが何か質問があれば、メッセージをください。ここでも私たちのサイトを応援してくれてありがとうございます。