Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
ccim_sdk_android
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
ccim_sdk_android
Commits
390edaa0
Commit
390edaa0
authored
Feb 21, 2023
by
liusheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.2.4完成
parent
24360211
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
232 additions
and
39 deletions
+232
-39
app/src/main/java/com/ccwangluo/im/ui/dashboard/ConnectActivity.java
...n/java/com/ccwangluo/im/ui/dashboard/ConnectActivity.java
+33
-10
app/src/main/java/com/ccwangluo/im/ui/notifications/ConnectChannelActivity.java
...ccwangluo/im/ui/notifications/ConnectChannelActivity.java
+23
-2
app/src/main/res/layout/activity_connect.xml
app/src/main/res/layout/activity_connect.xml
+5
-1
app/src/main/res/layout/activity_connect_channel.xml
app/src/main/res/layout/activity_connect_channel.xml
+5
-1
ccim/build.gradle
ccim/build.gradle
+2
-2
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
+19
-8
ccim/src/main/java/com/ccwangluo/ccim/manage/MessageManager.java
...c/main/java/com/ccwangluo/ccim/manage/MessageManager.java
+55
-8
ccim/src/main/java/com/ccwangluo/ccim/util/PrefUtil.java
ccim/src/main/java/com/ccwangluo/ccim/util/PrefUtil.java
+34
-0
ccim/src/main/proto/chat.proto
ccim/src/main/proto/chat.proto
+2
-0
ccim/src/main/proto/user.proto
ccim/src/main/proto/user.proto
+8
-0
readme.md
readme.md
+46
-7
No files found.
app/src/main/java/com/ccwangluo/im/ui/dashboard/ConnectActivity.java
View file @
390edaa0
...
...
@@ -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,19 +161,21 @@ public class ConnectActivity extends AppCompatActivity {
list
.
add
(
messageContent
);
}
privaetMsgAdapter
.
refreshData
();
binding
.
msgList
.
setSelection
(
privaetMsgAdapter
.
getCount
()
-
1
);
MessageContent
messageContent
=
messageContents
.
get
(
messageContents
.
size
()
-
1
);
CCIMClient
.
getInstance
().
updateReadOffset
(
messageContent
.
getSenderUserId
(),
messageContent
.
getMsgId
(),
new
ResultEventCallback
<
Void
>()
{
@Override
public
void
onSuccess
(
Void
unused
)
{
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
>()
{
@Override
public
void
onSuccess
(
Void
unused
)
{
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
@Override
public
void
onFailed
(
int
errorCode
)
{
}
});
}
});
}
}
@Override
...
...
app/src/main/java/com/ccwangluo/im/ui/notifications/ConnectChannelActivity.java
View file @
390edaa0
...
...
@@ -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
);
...
...
app/src/main/res/layout/activity_connect.xml
View file @
390edaa0
...
...
@@ -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
app/src/main/res/layout/activity_connect_channel.xml
View file @
390edaa0
...
...
@@ -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
ccim/build.gradle
View file @
390edaa0
...
...
@@ -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"
...
...
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
View file @
390edaa0
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
*/
...
...
ccim/src/main/java/com/ccwangluo/ccim/manage/MessageManager.java
View file @
390edaa0
...
...
@@ -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,13 +327,18 @@ public class MessageManager {
String
print
=
JsonFormat
.
printer
().
print
(
pullPrivateMsgRes
);
PullMessageRes
pullPrivateMsgRes1
=
gson
.
fromJson
(
print
,
PullMessageRes
.
class
);
List
<
MessageContent
>
message
=
pullPrivateMsgRes1
.
getMessage
();
for
(
MessageContent
messageContent
:
message
)
{
if
(
messageContent
.
getSenderUserId
().
equals
(
userId
))
{
messageContent
.
setReciveUserId
(
contactId
);
}
else
{
messageContent
.
setReciveUserId
(
userId
);
if
(
message
!=
null
&&!
message
.
isEmpty
()){
for
(
MessageContent
messageContent
:
message
)
{
if
(
messageContent
.
getSenderUserId
().
equals
(
userId
))
{
messageContent
.
setReciveUserId
(
contactId
);
}
else
{
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,8 +374,21 @@ 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
)
{
messageContent
.
setChannelId
(
channelId
);
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
);
...
...
@@ -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
));
}
...
...
ccim/src/main/java/com/ccwangluo/ccim/util/PrefUtil.java
0 → 100644
View file @
390edaa0
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
();
}
}
ccim/src/main/proto/chat.proto
View file @
390edaa0
...
...
@@ -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
;
...
...
ccim/src/main/proto/user.proto
View file @
390edaa0
...
...
@@ -32,4 +32,12 @@ message UpdateUserRequest {
}
message
UpdateUserResponse
{
}
message
ClearDialogRequest
{
int64
contact_user_id
=
1
;
int64
last_msg_id
=
2
;
}
message
ClearDialogResponse
{
}
\ No newline at end of file
readme.md
View file @
390edaa0
...
...
@@ -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(c
ontext,c
hannelId, 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
*
接口
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment