Commit 390edaa0 authored by liusheng's avatar liusheng

1.2.4完成

parent 24360211
......@@ -58,6 +58,27 @@ public class ConnectActivity extends AppCompatActivity {
}
});
binding.clearDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!list.isEmpty()){
CCIMClient.getInstance().clearPrivateDialog(contact.getContactUserId(), list.get(list.size() - 1).getMsgId(), new ResultEventCallback<Void>() {
@Override
public void onSuccess(Void unused) {
list.clear();
privaetMsgAdapter.refreshData();
ToastUtil.show(getApplication(), "clear Success");
}
@Override
public void onFailed(int errorCode) {
ToastUtil.show(getApplication(), "clear onFailed :" + errorCode);
}
});
}
}
});
binding.sendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
......@@ -140,6 +161,7 @@ public class ConnectActivity extends AppCompatActivity {
list.add(messageContent);
}
privaetMsgAdapter.refreshData();
if(messageContents!=null&&!messageContents.isEmpty()){
binding.msgList.setSelection(privaetMsgAdapter.getCount() - 1);
MessageContent messageContent = messageContents.get(messageContents.size() - 1);
CCIMClient.getInstance().updateReadOffset(messageContent.getSenderUserId(), messageContent.getMsgId(), new ResultEventCallback<Void>() {
......@@ -154,6 +176,7 @@ public class ConnectActivity extends AppCompatActivity {
}
});
}
}
@Override
public void onFailed(int errorCode) {
......
......@@ -56,7 +56,28 @@ public class ConnectChannelActivity extends AppCompatActivity {
}
}
});
binding.clearDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!list.isEmpty()){
CCIMClient.getInstance().clearChannelDialog(ConnectChannelActivity.this,
channelId, list.get(list.size() - 1).getMsgId(),
new ResultEventCallback<Void>() {
@Override
public void onSuccess(Void unused) {
list.clear();
channelMsgAdapter.refreshData();
ToastUtil.show(ConnectChannelActivity.this, "clear Success");
}
@Override
public void onFailed(int errorCode) {
ToastUtil.show(ConnectChannelActivity.this, "clear onFailed :" + errorCode);
}
});
}
}
});
binding.sendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
......@@ -78,7 +99,7 @@ public class ConnectChannelActivity extends AppCompatActivity {
}
});
CCIMClient.getInstance().getChannelMessage(channelId, new ResultEventCallback<List<MessageContent>>() {
CCIMClient.getInstance().getChannelMessage(this,channelId, new ResultEventCallback<List<MessageContent>>() {
@Override
public void onSuccess(List<MessageContent> messageContents) {
list.addAll(messageContents);
......
......@@ -60,6 +60,10 @@
android:layout_height="wrap_content"
android:text="发送语音" />
</LinearLayout>
<Button
android:id="@+id/clear_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="清除聊天记录" />
</LinearLayout>
\ No newline at end of file
......@@ -61,7 +61,11 @@
android:text="发送语音" />
</LinearLayout>
<Button
android:id="@+id/clear_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="清除聊天记录" />
</LinearLayout>
\ No newline at end of file
......@@ -10,8 +10,8 @@ android {
defaultConfig {
minSdkVersion 24
targetSdkVersion 33
versionCode 3
versionName "1.2.3"
versionCode 4
versionName "1.2.4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
......
package com.ccwangluo.ccim;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import com.ccwangluo.ccim.audio.JanusService;
import com.ccwangluo.ccim.audio.ServiceDelegate;
import com.ccwangluo.ccim.listener.AudioRoomListener;
import com.ccwangluo.ccim.listener.OnClientConnectListener;
import com.ccwangluo.ccim.listener.OnConnectListener;
......@@ -36,6 +30,7 @@ import com.ccwangluo.ccim.modle.User;
import com.ccwangluo.ccim.util.ErrorCode;
import com.ccwangluo.ccim.util.MediaHelper;
import com.ccwangluo.ccim.util.PermissionUtils;
import com.ccwangluo.ccim.util.PrefUtil;
import com.github.helloiampau.janus.generated.JanusPlugins;
import com.github.helloiampau.janusclientsdk.JanusConfImpl;
import com.google.gson.Gson;
......@@ -504,10 +499,26 @@ public class CCIMClient {
/**
* 获取频道消息
*/
public void getChannelMessage(Long channelId, ResultEventCallback<List<MessageContent>> callback) {
messageManager.getChannelMessage(channelId, callback);
public void getChannelMessage(Context context,Long channelId, ResultEventCallback<List<MessageContent>> callback) {
messageManager.getChannelMessage(context,channelId, callback);
}
/**
* 清除私聊消息
*/
public void clearPrivateDialog(long userId,long lastMsgId,ResultEventCallback<Void> callback){
messageManager.clearPrivateDialog(userId,lastMsgId,callback);
}
/**
* 清除渠道消息
*/
public void clearChannelDialog(Context context,long channelId,long lastMsgId, ResultEventCallback<Void> callback){
PrefUtil.getInstance(context).setClearChannelMsgId(channelId,lastMsgId);
callback.onSuccess(null);
}
/**
* 推送私人消息成功ack
*/
......
......@@ -18,12 +18,14 @@ import com.ccwangluo.ccim.modle.PullOffLineMessageRes;
import com.ccwangluo.ccim.util.ErrorCode;
import com.ccwangluo.ccim.util.FileUtils;
import com.ccwangluo.ccim.util.MediaHelper;
import com.ccwangluo.ccim.util.PrefUtil;
import com.google.gson.Gson;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.util.JsonFormat;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.logging.Logger;
......@@ -31,6 +33,7 @@ import java.util.logging.Logger;
import ccim.protocol.Chat;
import ccim.protocol.Message;
import ccim.protocol.MessageSpec;
import ccim.protocol.User;
public class MessageManager {
......@@ -324,6 +327,7 @@ public class MessageManager {
String print = JsonFormat.printer().print(pullPrivateMsgRes);
PullMessageRes pullPrivateMsgRes1 = gson.fromJson(print, PullMessageRes.class);
List<MessageContent> message = pullPrivateMsgRes1.getMessage();
if(message!=null&&!message.isEmpty()){
for (MessageContent messageContent : message) {
if (messageContent.getSenderUserId().equals(userId)) {
messageContent.setReciveUserId(contactId);
......@@ -331,6 +335,10 @@ public class MessageManager {
messageContent.setReciveUserId(userId);
}
}
}
if(message==null){
message=new ArrayList<>();
}
callback.onSuccess(message);
pushNewMessageList(message);
} catch (Exception e) {
......@@ -351,7 +359,7 @@ public class MessageManager {
* @param channelId
* @param callback
*/
public void getChannelMessage(Long channelId, ResultEventCallback<List<MessageContent>> callback) {
public void getChannelMessage(Context context,Long channelId, ResultEventCallback<List<MessageContent>> callback) {
Chat.ChatRequestMessage.Builder builder = Chat.ChatRequestMessage.newBuilder();
Message.PullChannelMessageRequest build = Message.PullChannelMessageRequest.newBuilder().setChannelId(channelId).build();
builder.setPullChannelMsgReq(build);
......@@ -366,9 +374,22 @@ public class MessageManager {
String print = JsonFormat.printer().print(pullChannelMsgRes);
PullMessageRes pullPrivateMsgRes1 = gson.fromJson(print, PullMessageRes.class);
List<MessageContent> message = pullPrivateMsgRes1.getMessage();
for (MessageContent messageContent : message) {
if(message!=null&&!message.isEmpty()){
Iterator<MessageContent> iterator=message.iterator();
long clearChannelMsgId= PrefUtil.getInstance(context).getClearChannelMsgId(channelId);
while (iterator.hasNext()){
MessageContent messageContent=iterator.next();
//过滤掉删除标记之前的消息
if (clearChannelMsgId>0 && messageContent.getMsgId()<=clearChannelMsgId){
iterator.remove();
}else {
messageContent.setChannelId(channelId);
}
}
}
if(message==null){
message=new ArrayList<>();
}
callback.onSuccess(message);
pushNewMessageList(message);
} catch (Exception e) {
......@@ -384,6 +405,32 @@ public class MessageManager {
});
}
public void clearPrivateDialog(long contactUserId, long lastMsgId, ResultEventCallback<Void> callback){
Chat.ChatRequestMessage.Builder builder = Chat.ChatRequestMessage.newBuilder();
User.ClearDialogRequest build = User.ClearDialogRequest.newBuilder().setContactUserId(contactUserId).setLastMsgId(lastMsgId).build();
builder.setClearDialogReq(build);
int id = socketManager.sendRequest(builder);
callBackManager.addCallBack(id, new ResultEventCallback<Chat.ChatResponseMessage>() {
@Override
public void onSuccess(Chat.ChatResponseMessage chatResponseMessage) {
logger.info(String.valueOf(chatResponseMessage));
callback.onSuccess(null);
}
@Override
public void onFailed(int errorCode) {
callback.onFailed(errorCode);
}
});
}
/**
* 清除渠道消息
*/
public void clearChannelMessage(){
}
public void pushNewMessage(MessageContent messageContent) {
executor.execute(() -> db.messageDao().insert(messageContent));
}
......
package com.ccwangluo.ccim.util;
import android.content.Context;
import android.content.SharedPreferences;
/**
* Created by on 15/7/20.
*/
public class PrefUtil {
SharedPreferences mSharedPreferences;
static PrefUtil prefUtil;
Context context;
private PrefUtil(Context context) {
this.context = context;
mSharedPreferences = context.getSharedPreferences("cc_im_shared_preferences", Context.MODE_PRIVATE);
}
public static PrefUtil getInstance(Context context) {
if (prefUtil == null) {
prefUtil = new PrefUtil(context);
}
return prefUtil;
}
public long getClearChannelMsgId(long channelId) {
return mSharedPreferences.getLong("cc_im_clear_"+channelId, 0);
}
public void setClearChannelMsgId(long channelId,long msgId) {
SharedPreferences.Editor mEditor = mSharedPreferences.edit();
mEditor.putLong("cc_im_clear_"+channelId, msgId);
mEditor.commit();
}
}
......@@ -40,6 +40,7 @@ message ChatRequestMessage {
PreUploadSignRequest pre_upload_sign_req = 33; // 预上传获取签名
UnblockUserRequest unblock_user_req = 34; // 拉出黑名单
UpdateUserRequest update_user_req = 35; // 更新用户信息
ClearDialogRequest clear_dialog_req = 36; // 清除对话
SendMessageRequest send_msg_req = 42; // 发送消息
SendChannelMessageRequest send_channel_msg_req = 43; // 发送频道消息
......@@ -84,6 +85,7 @@ message ChatResponseMessage {
PreUploadSignResponse pre_upload_sign_res = 33;
UnblockUserResponse unblock_user_res = 34;
UpdateUserResponse update_user_res = 35;
ClearDialogResponse clear_dialog_res = 36;
SendMessageResponse send_msg_res = 41;
SendChannelMessageResponse send_channel_msg_res = 42;
......
......@@ -33,3 +33,11 @@ message UpdateUserRequest {
message UpdateUserResponse {
}
message ClearDialogRequest {
int64 contact_user_id = 1;
int64 last_msg_id = 2;
}
message ClearDialogResponse {
}
\ No newline at end of file
......@@ -380,7 +380,7 @@ CCIMClient.getInstance().reportIllegalUser(title, content, illegalUserId, new Re
* 接口
```
CCIMClient.getInstance().sendTextMessage(content, receiveUserId,username ,
CCIMClient.getInstance().sendTextMessage(content, extData,receiveUserId,username ,
new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent messageContent) {
......@@ -401,7 +401,7 @@ CCIMClient.getInstance().sendTextMessage(content, receiveUserId,username ,
* 接口
```
CCIMClient.getInstance().sendChannelMessage(content, channelId, new ResultEventCallback<MessageContent>() {
CCIMClient.getInstance().sendChannelMessage(content,extData, channelId, new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent messageContent) {
......@@ -507,7 +507,7 @@ CCIMClient.getInstance().logout();
* 接口
```
CCIMClient.getInstance().startRecordAudioMessage(context, receiveUserId, receiveUserName,new ResultEventCallback<Void>() {
CCIMClient.getInstance().startRecordAudioMessage(context,extData, receiveUserId, receiveUserName,new ResultEventCallback<Void>() {
@Override
public void onSuccess(Void unuse) {
......@@ -546,7 +546,7 @@ CCIMClient.getInstance().cancleAudioMessage();
* 接口
```
CCIMClient.getInstance().stopAndSendAudioMessage(receiverUserId,username , new ResultEventCallback<MessageContent>(){
CCIMClient.getInstance().stopAndSendAudioMessage(extData,receiverUserId,username , new ResultEventCallback<MessageContent>(){
@Override
public void onSuccess(MessageContent message) {
......@@ -564,7 +564,7 @@ CCIMClient.getInstance().stopAndSendAudioMessage(receiverUserId,username , new R
* 接口
```
CCIMClient.getInstance().startRecordChannelAudioMessage(context, channelID,new ResultEventCallback<Void>() {
CCIMClient.getInstance().startRecordChannelAudioMessage(context,extData, channelID,new ResultEventCallback<Void>() {
@Override
public void onSuccess(Void unuse) {
......@@ -593,7 +593,7 @@ CCIMClient.getInstance().startRecordChannelAudioMessage(context, channelID,new R
* 接口
```
CCIMClient.getInstance().stopAndSendChannelAudioMessage(channelId, new ResultEventCallback<MessageContent>(){
CCIMClient.getInstance().stopAndSendChannelAudioMessage(extData,channelId, new ResultEventCallback<MessageContent>(){
@Override
public void onSuccess(MessageContent message) {
......@@ -669,7 +669,7 @@ CCIMClient.getInstance().getPrivateMessage(userId, new ResultEventCallback<List<
* 接口
```
CCIMClient.getInstance().getChannelMessage(channelId, new ResultEventCallback<List<MessageContent>>() {
CCIMClient.getInstance().getChannelMessage(context,channelId, new ResultEventCallback<List<MessageContent>>() {
@Override
public void onSuccess(List<MessageContent> messageContents) {
......@@ -682,6 +682,45 @@ CCIMClient.getInstance().getChannelMessage(channelId, new ResultEventCallback<Li
});
```
## 清除私聊消息
* 参数说明:`userId` 私聊对象用户id `lastMsgId`:需要清除消息的最后一条消息id
* 接口
```
CCIMClient.getInstance().clearPrivateDialog(userId,lastMsgId, new ResultEventCallback<Void>() {
@Override
public void onSuccess(Void unused) {
}
@Override
public void onFailed(int errorCode) {
}
});
```
## 清除频道消息
* 参数说明:`channelId`:频道id `lastMsgId`:需要清除消息的最后一条消息id
* 接口
```
CCIMClient.getInstance().clearChannelDialog(context,long channelId,lastMsgId,
new ResultEventCallback<Void>() {
@Override
public void onSuccess(Void unused) {
}
@Override
public void onFailed(int errorCode) {
}
});
```
## 加入房间
* 参数说明:context 上下文,roomId 房间号 ,teamId 小队id
* 接口
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment