Android Easeui 3.0 인 스 턴 트 메 신 저 문제 집계

11684 단어 androideasyui
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
4.2 초기 화:여기 서 가장 간단 한 것 을 쓰 고 다른 친구 인증 등 기능 은 demo 를 참고 합 니 다.
这里写图片描述
4.3.0 easeui 사용 중 바 이 두 맵 과 관련 되 어 있 습 니 다.여기 서 바 이 두 맵 홈 페이지 에 자체 적 으로 응용 프로그램 을 만 들 고 app key 를 신청 해 야 합 니 다.
구체 적 인 설정 은 다음 과 같 습 니 다.(여기 서 appkey 만 작성 하고 초기 화 할 필요 가 없습니다)
这里写图片描述
4.3.1:그림 을 보 낼 때 큰 그림 을 보고 지 도 를 보 는 기능 이 있 을 수 있 습 니 다.easeui 에서 이러한 activity 를 제 공 했 습 니 다.우 리 는 자신의 목록 파일 에 만 등록 해 야 합 니 다.구체 적 인 코드 는 다음 과 같다.
这里写图片描述
3.사용
이 곳 에서 문서 에 있 는 로그 인 등록 기능 을 생략 합 니 다.일부 구덩이 가 있 을 수 있 는 곳 을 소개 한다.
메모:0.등록 기능 은 일반적으로 서버 가 실현 해 야 합 니 다.1.초기 화 를 사용 할 때 easeui 는 기본적으로 자동 로그 인 기능 이 있 습 니 다.사용 할 때 주의 하 셔 야 합 니 다.이 기능 을 닫 으 려 면 초기 화 부분 에 다음 코드 를 추가 하 십시오.

//        
options.setAutoLogin(false);
0,easeui 안 드 로 이 드 6.0 에 적합:
다운로드 한 demo 에서 runtime permissions 폴 더 를 찾 은 다음 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.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 채 팅 페이지 와 같은 공유 가 필요 하 다 면 이러한 항목 의 레이아웃 을 스스로 정의 해 야 합 니 다.어,아니,두 개 이기 때 문 입 니 다.하 나 는 받 고 하 나 는 보 냈 다.
그리고 easeui 는 인터페이스(Ease CustomChatRow Provider)를 제 공 했 습 니 다.이 인 터 페 이 스 를 연결 하면 됩 니 다.
키 코드 는 다음 과 같 습 니 다:
8.0 먼저 사용자 정의 항목 수 를 작성 합 니 다(필요 한 수량 에*2,하 나 는 받 고 하 나 는 보 냅 니 다)
수신 및 발송 메시지 형식 정의
8.1 세 가지 방법 을 실현 한다.

getCustomChatRowTypeCount()
getCustomChatRowType(EMMessage message)
getCustomChatRow(EMMessage message, intposition,BaseAdapter adapter)
getCustomChatRowType
이 방법 에서 메시지 의 확장 메 시 지 를 이용 하여 실현 할 수 있 습 니 다.우 리 는 먼저 확장 메시지 의 내용 을 판단 한 다음 에 각각 다른 레이아웃 을 불 러 옵 니 다.
getCustomChatRow
다른 항목 만 들 기
사용자 정의 항목 코드 는 다음 과 같 습 니 다.

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.easui 를 통합 한 후에 문 제 를 발견 합 니 다.일부 버 전의 핸드폰 에 있 는 데스크 톱 아이콘 이 나타 날 수 있 습 니 다.프로그램 이 무 너 지 는 경우 해결 방안 은 다음 과 같 습 니 다.
libs 아래 armeabi-v7a 를 만 들 고 armeabi 중의 so 를 v7a 에서 복사 하여 더 많은 버 전의 휴대 전 화 를 호 환 합 니 다.
解决点击图标崩溃问题
11.채 팅 화면 에서 음성 재생 기능 을 사용 할 수 없 음 을 발견 하고 재생 효 과 를 클릭 하지 않 아 오랫동안 원인 을 찾 았 습 니 다.채 팅 하 는 fragment 에 들 어가 기 전에 프로필 사진 을 클릭 하 는 속성 을 설정 한 것 을 발견 합 니 다...정말 구덩이 야,반나절 이 걸 렸 어.

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
}
});
메시지 클릭 이벤트
消息的点击事件
자,easeui 부분 은 여기까지 나 눠 드 리 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기