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
a3d0a99c
Commit
a3d0a99c
authored
Oct 28, 2021
by
sheteng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix
parent
92ff0173
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
905 additions
and
130 deletions
+905
-130
.idea/gradle.xml
.idea/gradle.xml
+1
-1
.idea/runConfigurations.xml
.idea/runConfigurations.xml
+0
-10
app/build.gradle
app/build.gradle
+4
-1
app/src/main/java/com/ccwangluo/im/FirstFragment.java
app/src/main/java/com/ccwangluo/im/FirstFragment.java
+125
-25
app/src/main/res/layout/fragment_first.xml
app/src/main/res/layout/fragment_first.xml
+29
-26
ccim/proguard-rules.pro
ccim/proguard-rules.pro
+6
-1
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
+474
-0
ccim/src/main/java/com/ccwangluo/ccim/listener/MessageEventCallback.java
...ava/com/ccwangluo/ccim/listener/MessageEventCallback.java
+0
-9
ccim/src/main/java/com/ccwangluo/ccim/listener/MessageListener.java
...ain/java/com/ccwangluo/ccim/listener/MessageListener.java
+3
-0
ccim/src/main/java/com/ccwangluo/ccim/listener/ResultCallback.java
...main/java/com/ccwangluo/ccim/listener/ResultCallback.java
+6
-2
ccim/src/main/java/com/ccwangluo/ccim/listener/ResultEventCallback.java
...java/com/ccwangluo/ccim/listener/ResultEventCallback.java
+9
-0
ccim/src/main/java/com/ccwangluo/ccim/manage/CallBackManager.java
.../main/java/com/ccwangluo/ccim/manage/CallBackManager.java
+20
-6
ccim/src/main/java/com/ccwangluo/ccim/manage/SocketManageer.java
...c/main/java/com/ccwangluo/ccim/manage/SocketManageer.java
+111
-48
ccim/src/main/java/com/ccwangluo/ccim/modle/IrequestData.java
.../src/main/java/com/ccwangluo/ccim/modle/IrequestData.java
+1
-1
ccim/src/main/java/com/ccwangluo/ccim/util/MediaHelper.java
ccim/src/main/java/com/ccwangluo/ccim/util/MediaHelper.java
+114
-0
ccim/src/main/proto/chat.proto
ccim/src/main/proto/chat.proto
+2
-0
No files found.
.idea/gradle.xml
View file @
a3d0a99c
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
<component
name=
"GradleSettings"
>
<component
name=
"GradleSettings"
>
<option
name=
"linkedExternalProjectsSettings"
>
<option
name=
"linkedExternalProjectsSettings"
>
<GradleProjectSettings>
<GradleProjectSettings>
<option
name=
"testRunner"
value=
"
PLATFORM
"
/>
<option
name=
"testRunner"
value=
"
GRADLE
"
/>
<option
name=
"distributionType"
value=
"DEFAULT_WRAPPED"
/>
<option
name=
"distributionType"
value=
"DEFAULT_WRAPPED"
/>
<option
name=
"externalProjectPath"
value=
"$PROJECT_DIR$"
/>
<option
name=
"externalProjectPath"
value=
"$PROJECT_DIR$"
/>
<option
name=
"gradleHome"
value=
"$USER_HOME$/.gradle/wrapper/dists/gradle-3.5-all/exhrs6ca08n232b14ue48lbye/gradle-3.5"
/>
<option
name=
"gradleHome"
value=
"$USER_HOME$/.gradle/wrapper/dists/gradle-3.5-all/exhrs6ca08n232b14ue48lbye/gradle-3.5"
/>
...
...
.idea/runConfigurations.xml
deleted
100644 → 0
View file @
92ff0173
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<component
name=
"RunConfigurationProducerService"
>
<option
name=
"ignoredProducers"
>
<set>
<option
value=
"com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer"
/>
</set>
</option>
</component>
</project>
\ No newline at end of file
app/build.gradle
View file @
a3d0a99c
...
@@ -7,7 +7,7 @@ android {
...
@@ -7,7 +7,7 @@ android {
buildToolsVersion
"30.0.3"
buildToolsVersion
"30.0.3"
defaultConfig
{
defaultConfig
{
applicationId
"com.ccwangluo.
im
"
applicationId
"com.ccwangluo.
xiyuan22
"
minSdkVersion
16
minSdkVersion
16
targetSdkVersion
30
targetSdkVersion
30
versionCode
1
versionCode
1
...
@@ -43,4 +43,7 @@ dependencies {
...
@@ -43,4 +43,7 @@ dependencies {
testImplementation
'junit:junit:4.+'
testImplementation
'junit:junit:4.+'
androidTestImplementation
'androidx.test.ext:junit:1.1.2'
androidTestImplementation
'androidx.test.ext:junit:1.1.2'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.3.0'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.3.0'
compile
'com.google.protobuf:protobuf-java:3.5.1'
implementation
'com.google.protobuf:protobuf-java:3.8.0'
implementation
'com.google.protobuf:protobuf-java-util:3.8.0'
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/im/FirstFragment.java
View file @
a3d0a99c
package
com.ccwangluo.im
;
package
com.ccwangluo.im
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.os.Looper
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.widget.Toast
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.NonNull
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.Fragment
;
import
com.ccwangluo.ccim.CCClient
;
import
com.ccwangluo.ccim.CC
IM
Client
;
import
com.ccwangluo.ccim.listener.ResultCallback
;
import
com.ccwangluo.ccim.listener.ResultCallback
;
import
com.ccwangluo.ccim.listener.ResultEventCallback
;
import
com.ccwangluo.im.databinding.FragmentFirstBinding
;
import
com.ccwangluo.im.databinding.FragmentFirstBinding
;
import
java.util.ArrayList
;
import
java.util.List
;
import
ccim.protocol.Chat
;
import
ccim.protocol.Message
;
public
class
FirstFragment
extends
Fragment
{
public
class
FirstFragment
extends
Fragment
{
private
FragmentFirstBinding
binding
;
private
FragmentFirstBinding
binding
;
private
static
final
String
TAG
=
FirstFragment
.
class
.
getName
();
@Override
@Override
public
View
onCreateView
(
public
View
onCreateView
(
...
@@ -24,124 +36,212 @@ public class FirstFragment extends Fragment {
...
@@ -24,124 +36,212 @@ public class FirstFragment extends Fragment {
binding
=
FragmentFirstBinding
.
inflate
(
inflater
,
container
,
false
);
binding
=
FragmentFirstBinding
.
inflate
(
inflater
,
container
,
false
);
return
binding
.
getRoot
();
return
binding
.
getRoot
();
}
}
public
void
onViewCreated
(
@NonNull
View
view
,
Bundle
savedInstanceState
)
{
public
void
onViewCreated
(
@NonNull
View
view
,
Bundle
savedInstanceState
)
{
super
.
onViewCreated
(
view
,
savedInstanceState
);
super
.
onViewCreated
(
view
,
savedInstanceState
);
CC
Client
.
getInstance
().
init
(
getActivity
()
);
CC
IMClient
.
getInstance
().
initSDK
(
);
binding
.
buttonLogin
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
CCIMClient
.
getInstance
().
registerMessageListener
(
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>
()
{
@Override
@Override
public
void
on
Click
(
View
v
)
{
public
void
on
Success
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
CCClient
.
getInstance
().
login
(
"user1"
,
"123456"
,
new
ResultCallback
<
String
>()
{
new
Handler
(
Looper
.
getMainLooper
()).
post
(
new
Runnable
()
{
@Override
@Override
public
void
onSuccess
(
String
s
)
{
public
void
run
(
)
{
Toast
.
makeText
(
getContext
(),
chatResponseMessage
.
toString
(),
Toast
.
LENGTH_SHORT
).
show
();
}
}
});
});
}
}
});
});
binding
.
connectChatServer
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
buttonLogin
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
connectChatServer
();
CCIMClient
.
getInstance
().
login
(
"user1"
,
"123456"
,
1L
,
new
ResultCallback
(){
@Override
public
void
onSuccess
()
{
}
// @Override
// public void onFailed(int errorCode) {
//
// }
});
}
}
});
});
binding
.
getChatList
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
getChatList
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
getChatList
();
CCIMClient
.
getInstance
().
getChatList
(
new
ResultEventCallback
<
Chat
.
PullContactsResponse
>()
{
@Override
public
void
onSuccess
(
Chat
.
PullContactsResponse
pullContactsResponse
)
{
List
<
Chat
.
PullContactsResponse
.
Channel
>
channelsList
=
pullContactsResponse
.
getChannelsList
();
Log
.
d
(
TAG
,
"channelsList: "
+
channelsList
.
toString
());
List
<
Chat
.
PullContactsResponse
.
ContactGroup
>
contactGroupsList
=
pullContactsResponse
.
getContactGroupsList
();
Log
.
d
(
TAG
,
"contactGroupsList: "
+
contactGroupsList
.
toString
());
List
<
Chat
.
PullContactsResponse
.
Contact
>
contactsList
=
pullContactsResponse
.
getContactsList
();
Log
.
d
(
TAG
,
"contactsList: "
+
contactsList
.
toString
());
}
});
}
}
});
});
binding
.
getOfflineMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
getOfflineMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
getOfflineMessage
();
CCIMClient
.
getInstance
().
getOfflineMessage
(
new
ResultEventCallback
<
ArrayList
<
Message
.
PullOfflineMessageResponse
.
OfflineMessage
>>()
{
@Override
public
void
onSuccess
(
ArrayList
<
Message
.
PullOfflineMessageResponse
.
OfflineMessage
>
offlineMessages
)
{
Log
.
d
(
TAG
,
"offlineMessages: "
+
offlineMessages
.
toString
());
}
});
}
}
});
});
binding
.
searchUser
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
searchUser
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
searchUser
(
"user2"
);
CCIMClient
.
getInstance
().
searchUser
(
"user2"
,
new
ResultEventCallback
<
List
<
Chat
.
SearchResponse
.
User
>>()
{
@Override
public
void
onSuccess
(
List
<
Chat
.
SearchResponse
.
User
>
users
)
{
Log
.
d
(
TAG
,
"onSuccess: "
+
users
);
}
});
}
}
});
});
binding
.
addUser
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
addUser
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
addContact
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
CCIMClient
.
getInstance
().
addContact
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
new
ResultEventCallback
<
Chat
.
AddContactResponse
.
AddResult
>()
{
@Override
public
void
onSuccess
(
Chat
.
AddContactResponse
.
AddResult
addResult
)
{
}
});
}
}
});
});
binding
.
sendTextMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
sendTextMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
sendTextMessage
(
"你好"
,
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
CCIMClient
.
getInstance
().
sendTextMessage
(
"你好"
,
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
new
ResultCallback
()
{
@Override
public
void
onSuccess
()
{
}
});
}
}
});
});
binding
.
getContactRequests
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
getContactRequests
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
getContactRequests
();
CCIMClient
.
getInstance
().
getContactRequests
(
new
ResultEventCallback
<
Chat
.
ContactRequestsResponse
>()
{
@Override
public
void
onSuccess
(
Chat
.
ContactRequestsResponse
contactRequestsResponse
)
{
}
});
}
}
});
});
binding
.
checkContactRequests
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
checkContactRequests
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
checkContactReq
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
true
);
CCIMClient
.
getInstance
().
checkContactReq
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
true
,
new
ResultCallback
()
{
@Override
public
void
onSuccess
()
{
}
});
}
}
});
});
binding
.
createContactGroupRequest
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
createContactGroupRequest
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
createContactGroup
(
"zhangsan"
);
CCIMClient
.
getInstance
().
createContactGroup
(
"zhangsan"
,
new
ResultEventCallback
<
Long
>()
{
@Override
public
void
onSuccess
(
Long
aLong
)
{
}
});
}
}
});
});
binding
.
moveContactGroupRequest
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
moveContactGroupRequest
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
moveContactGroup
(
Long
.
parseLong
(
binding
.
groupId
.
getText
().
toString
()),
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
CCIMClient
.
getInstance
().
moveContactGroup
(
Long
.
parseLong
(
binding
.
groupId
.
getText
().
toString
()),
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
new
ResultCallback
()
{
@Override
public
void
onSuccess
()
{
}
});
}
}
});
});
binding
.
deleteContact
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
deleteContact
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
deleteContact
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
CCIMClient
.
getInstance
().
deleteContact
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
new
ResultCallback
()
{
@Override
public
void
onSuccess
()
{
}
});
}
}
});
});
binding
.
blockContact
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
blockContact
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
blockContact
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
true
);
CCIMClient
.
getInstance
().
blockContact
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
true
,
new
ResultCallback
()
{
@Override
public
void
onSuccess
()
{
}
});
}
}
});
});
binding
.
reportIllegalUser
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
reportIllegalUser
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
reportIllegalUser
(
"搞黄色"
,
"搞黄色"
,
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
CCIMClient
.
getInstance
().
reportIllegalUser
(
"搞黄色"
,
"搞黄色"
,
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
new
ResultCallback
()
{
@Override
public
void
onSuccess
()
{
}
});
}
}
});
});
binding
.
sendGroupMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
sendGroupMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
sendGroupMessage
(
"搞黄色"
,
Long
.
parseLong
(
binding
.
groupId
.
getText
().
toString
()));
CCIMClient
.
getInstance
().
sendGroupMessage
(
"搞黄色"
,
Long
.
parseLong
(
binding
.
groupId
.
getText
().
toString
()),
new
ResultCallback
()
{
@Override
public
void
onSuccess
()
{
}
});
}
}
});
});
binding
.
sendChannelMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
binding
.
sendChannelMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
sendChannelMessage
(
"搞黄色"
,
Long
.
parseLong
(
binding
.
channelId
.
getText
().
toString
()));
CCIMClient
.
getInstance
().
sendChannelMessage
(
"搞黄色"
,
Long
.
parseLong
(
binding
.
channelId
.
getText
().
toString
()),
new
ResultCallback
()
{
@Override
public
void
onSuccess
()
{
}
});
}
}
});
});
...
...
app/src/main/res/layout/fragment_first.xml
View file @
a3d0a99c
...
@@ -6,9 +6,15 @@
...
@@ -6,9 +6,15 @@
android:orientation=
"horizontal"
android:orientation=
"horizontal"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".FirstFragment"
>
tools:context=
".FirstFragment"
>
<LinearLayout
<ScrollView
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
>
<LinearLayout
android:layout_width=
"match_parent"
android:orientation=
"vertical"
android:orientation=
"vertical"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
>
...
@@ -18,15 +24,8 @@
...
@@ -18,15 +24,8 @@
android:id=
"@+id/button_login"
android:id=
"@+id/button_login"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
login
"
/>
android:text=
"
登录
"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/connectChatServer"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"connectChatServer"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -34,7 +33,7 @@
...
@@ -34,7 +33,7 @@
android:id=
"@+id/getChatList"
android:id=
"@+id/getChatList"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
getChatList
"
/>
android:text=
"
获取联系人列表
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -42,7 +41,7 @@
...
@@ -42,7 +41,7 @@
android:id=
"@+id/getOfflineMessage"
android:id=
"@+id/getOfflineMessage"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
getOfflineMessage
"
/>
android:text=
"
同步离线消息
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -50,7 +49,7 @@
...
@@ -50,7 +49,7 @@
android:id=
"@+id/searchUser"
android:id=
"@+id/searchUser"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
searchUser
"
/>
android:text=
"
查找好友
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -58,7 +57,7 @@
...
@@ -58,7 +57,7 @@
android:id=
"@+id/addUser"
android:id=
"@+id/addUser"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
addUser
"
/>
android:text=
"
添加好友
"
/>
...
@@ -68,7 +67,7 @@
...
@@ -68,7 +67,7 @@
android:id=
"@+id/getContactRequests"
android:id=
"@+id/getContactRequests"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
getContactRequests
"
/>
android:text=
"
联系人申请列表
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -76,7 +75,7 @@
...
@@ -76,7 +75,7 @@
android:id=
"@+id/checkContactRequests"
android:id=
"@+id/checkContactRequests"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
checkContactRequests
"
/>
android:text=
"
验证联系人申请
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -84,7 +83,7 @@
...
@@ -84,7 +83,7 @@
android:id=
"@+id/sendTextMessage"
android:id=
"@+id/sendTextMessage"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
sendTextMessage
"
/>
android:text=
"
发送消息
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -92,12 +91,15 @@
...
@@ -92,12 +91,15 @@
android:id=
"@+id/createContactGroupRequest"
android:id=
"@+id/createContactGroupRequest"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
createContactGroup
"
/>
android:text=
"
创建联系人组
"
/>
</LinearLayout>
</LinearLayout>
</ScrollView>
<
LinearLayout
<
ScrollView
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
>
<LinearLayout
android:layout_width=
"match_parent"
android:orientation=
"vertical"
android:orientation=
"vertical"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
>
<EditText
<EditText
...
@@ -124,7 +126,7 @@
...
@@ -124,7 +126,7 @@
android:id=
"@+id/moveContactGroupRequest"
android:id=
"@+id/moveContactGroupRequest"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
moveContactGroup
"
/>
android:text=
"
移动联系人所在群组
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -132,7 +134,7 @@
...
@@ -132,7 +134,7 @@
android:id=
"@+id/deleteContact"
android:id=
"@+id/deleteContact"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
deleteContact
"
/>
android:text=
"
删除联系人
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -140,7 +142,7 @@
...
@@ -140,7 +142,7 @@
android:id=
"@+id/blockContact"
android:id=
"@+id/blockContact"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
blockContact
"
/>
android:text=
"
拉黑联系人
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -148,7 +150,7 @@
...
@@ -148,7 +150,7 @@
android:id=
"@+id/reportIllegalUser"
android:id=
"@+id/reportIllegalUser"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
reportIllegalUser
"
/>
android:text=
"
举报违规用户
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -156,7 +158,7 @@
...
@@ -156,7 +158,7 @@
android:id=
"@+id/sendGroupMessage"
android:id=
"@+id/sendGroupMessage"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
sendGroupMessage
"
/>
android:text=
"
发送群组消息
"
/>
<Button
<Button
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
...
@@ -164,9 +166,10 @@
...
@@ -164,9 +166,10 @@
android:id=
"@+id/sendChannelMessage"
android:id=
"@+id/sendChannelMessage"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
sendChannelMessage
"
/>
android:text=
"
发送频道消息
"
/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
ccim/proguard-rules.pro
View file @
a3d0a99c
...
@@ -40,3 +40,8 @@
...
@@ -40,3 +40,8 @@
-
keep
class
com
.
xuhao
.
didi
.
socket
.
server
.
impl
.
OkServerOptions
$
*
{
-
keep
class
com
.
xuhao
.
didi
.
socket
.
server
.
impl
.
OkServerOptions
$
*
{
*
;
*
;
}
}
-
keep
class
com
.
ccwangluo
.
ccim
.
CCClient
$
*
{
*
;
}
ccim/src/main/java/com/ccwangluo/ccim/CCClient.java
→
ccim/src/main/java/com/ccwangluo/ccim/CC
IM
Client.java
View file @
a3d0a99c
package
com.ccwangluo.ccim
;
package
com.ccwangluo.ccim
;
import
android.app.Activity
;
import
android.text.TextUtils
;
import
com.ccwangluo.ccim.listener.ResultCallback
;
import
com.ccwangluo.ccim.listener.ResultCallback
;
import
com.ccwangluo.ccim.listener.ResultEventCallback
;
import
com.ccwangluo.ccim.manage.CallBackManager
;
import
com.ccwangluo.ccim.manage.CallBackManager
;
import
com.ccwangluo.ccim.manage.SocketManageer
;
import
com.ccwangluo.ccim.manage.SocketManageer
;
import
com.ccwangluo.ccim.modle.IrequestData
;
import
com.xuhao.didi.socket.client.sdk.OkSocket
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.logging.Logger
;
import
java.util.logging.Logger
;
import
ccim.protocol.Chat
;
import
ccim.protocol.Chat
;
import
ccim.protocol.Common
;
import
ccim.protocol.Message
;
import
ccim.protocol.Message
;
import
ccim.protocol.MessageSpec
;
import
ccim.protocol.MessageSpec
;
import
ccim.protocol.Push
;
public
class
CCClient
{
public
class
CC
IM
Client
{
private
Logger
logger
=
Logger
.
getLogger
(
CCClient
.
class
.
getName
());
private
final
Logger
logger
=
Logger
.
getLogger
(
CCIMClient
.
class
.
getName
());
private
final
int
version
=
1
;
private
volatile
int
id
=
1
;
private
SocketManageer
socketManageer
;
private
SocketManageer
socketManageer
;
private
CallBackManager
<
Chat
.
ChatResponseMessage
>
callBackManager
;
private
CallBackManager
<
Chat
.
ChatResponseMessage
>
callBackManager
;
private
CCClient
()
{
private
CC
IM
Client
()
{
}
}
private
static
CCClient
mInstance
;
private
static
CC
IM
Client
mInstance
;
public
static
CCClient
getInstance
()
{
public
static
CC
IM
Client
getInstance
()
{
if
(
mInstance
==
null
)
{
if
(
mInstance
==
null
)
{
synchronized
(
CCClient
.
class
)
{
synchronized
(
CC
IM
Client
.
class
)
{
if
(
mInstance
==
null
)
{
if
(
mInstance
==
null
)
{
mInstance
=
new
CCClient
();
mInstance
=
new
CC
IM
Client
();
}
}
}
}
}
}
return
mInstance
;
return
mInstance
;
}
}
public
void
init
(
Activity
activity
)
{
public
void
init
SDK
(
)
{
callBackManager
=
new
CallBackManager
<
Chat
.
ChatResponseMessage
>();
callBackManager
=
new
CallBackManager
<>();
socketManageer
=
new
SocketManageer
(
callBackManager
);
socketManageer
=
new
SocketManageer
(
callBackManager
);
socketManageer
.
initAuth
();
socketManageer
.
initAuth
();
}
}
// public void registerMessageListener()
public
void
registerMessageListener
(
ResultEventCallback
<
Chat
.
ChatResponseMessage
>
resultEventCallback
)
{
callBackManager
.
addCallBack
(
0
,
chatResponseMessage
->
{
logger
.
info
(
"registerMessageListener : "
+
chatResponseMessage
);
if
(
chatResponseMessage
.
hasPushPrivateMsgRes
())
{
MessageSpec
.
ChatMessage
pushPrivateMsgRes
=
chatResponseMessage
.
getPushPrivateMsgRes
().
getMessage
();
pushPrivateMessageAck
(
pushPrivateMsgRes
.
getSenderUserId
(),
pushPrivateMsgRes
.
getMsgId
());
}
if
(
chatResponseMessage
.
hasPushGroupMsgRes
())
{
Push
.
PushGroupMessageResponse
message
=
chatResponseMessage
.
getPushGroupMsgRes
();
pushGroupMessageAck
(
message
.
getGroupId
(),
message
.
getMessage
().
getMsgId
());
}
if
(
chatResponseMessage
.
hasPushChannelMsgRes
())
{
Push
.
PushChannelMessageResponse
channelMsgRes
=
chatResponseMessage
.
getPushChannelMsgRes
();
pushChannelMessage
(
channelMsgRes
.
getChannelId
(),
channelMsgRes
.
getMessage
().
getMsgId
());
}
resultEventCallback
.
onSuccess
(
chatResponseMessage
);
});
}
public
void
login
(
String
username
,
String
password
,
ResultCallback
<
String
>
resultCallback
)
{
public
void
login
(
String
username
,
String
password
,
Long
appId
,
ResultCallback
resultEventCallback
)
{
socketManageer
.
login
(
username
,
password
,
resultCallback
);
socketManageer
.
login
(
username
,
password
,
appId
,
new
ResultEventCallback
<
String
>()
{
@Override
public
void
onSuccess
(
String
s
)
{
resultEventCallback
.
onSuccess
();
}
}
public
void
connectChatServer
()
{
if
(
TextUtils
.
isEmpty
(
socketManageer
.
getToken
()))
{
return
;
}
Chat
.
ConnectRequest
builder
=
Chat
.
ConnectRequest
.
newBuilder
().
setToken
(
socketManageer
.
getToken
()).
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
().
setConnectReq
(
builder
).
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onFailed
(
int
errorCode
)
{
if
(
chatResponseMessage
.
hasConnectRes
())
{
resultEventCallback
.
onFailed
(
errorCode
);
logger
.
info
(
"chat connect success"
);
}
}
}
});
});
id
++;
}
}
/**
/**
* 获取联系人列表
* 获取联系人列表
*/
*/
public
void
getChatList
(
)
{
public
synchronized
void
getChatList
(
ResultEventCallback
<
Chat
.
PullContactsResponse
>
resultEventCallback
)
{
Chat
.
PullContactsRequest
builder
=
Chat
.
PullContactsRequest
.
newBuilder
()
Chat
.
PullContactsRequest
builder
=
Chat
.
PullContactsRequest
.
newBuilder
()
.
build
();
.
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
builder
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
().
setPullContactsReq
(
builder
).
setHeader
(
header
).
build
();
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasPullContactsRes
())
{
if
(
chatResponseMessage
.
hasPullContactsRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
.
getPullContactsRes
()));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
Chat
.
PullContactsResponse
pullContactsRes
=
chatResponseMessage
.
getPullContactsRes
();
resultEventCallback
.
onSuccess
(
pullContactsRes
);
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
resultEventCallback
.
onFailed
(
errorCode
);
}
}
});
});
id
++;
}
}
/**
/**
* 同步离线消息
* 同步离线消息
*/
*/
public
void
getOfflineMessage
()
{
public
void
getOfflineMessage
(
ResultEventCallback
<
ArrayList
<
Message
.
PullOfflineMessageResponse
.
OfflineMessage
>>
resultEventCallback
)
{
ArrayList
<
Message
.
PullOfflineMessageResponse
.
OfflineMessage
>
offlineMessages
=
new
ArrayList
<>();
Message
.
PullOfflineMessageRequest
offlineMessageRequest
=
Message
.
PullOfflineMessageRequest
.
newBuilder
().
build
();
Message
.
PullOfflineMessageRequest
offlineMessageRequest
=
Message
.
PullOfflineMessageRequest
.
newBuilder
().
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
offlineMessageRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setPullOfflineMsgReq
(
offlineMessageRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasPullOfflineMsgRes
())
{
if
(
chatResponseMessage
.
hasPullOfflineMsgRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
.
getPullOfflineMsgRes
()));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
List
<
Message
.
PullOfflineMessageResponse
.
OfflineMessage
>
offlineMsgsList
=
chatResponseMessage
.
getPullOfflineMsgRes
().
getOfflineMsgsList
();
offlineMessages
.
addAll
(
offlineMsgsList
);
if
(
offlineMsgsList
.
isEmpty
())
{
resultEventCallback
.
onSuccess
(
offlineMessages
);
callBackManager
.
removeCallBack
(
chatResponseMessage
.
getHeader
().
getSeq
());
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
resultEventCallback
.
onFailed
(
errorCode
);
}
}
});
});
id
++;
}
}
/**
/**
* 搜索好友
* 搜索好友
*/
*/
public
void
searchUser
(
String
userName
)
{
public
void
searchUser
(
String
userName
,
ResultEventCallback
<
List
<
Chat
.
SearchResponse
.
User
>>
resultEventCallback
)
{
Chat
.
SearchRequest
searchRequest
=
Chat
.
SearchRequest
.
newBuilder
().
setUsername
(
userName
).
build
();
Chat
.
SearchRequest
searchRequest
=
Chat
.
SearchRequest
.
newBuilder
().
setUsername
(
userName
).
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
searchRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setSearchReq
(
searchRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasSearchRes
())
{
if
(
chatResponseMessage
.
hasSearchRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
List
<
Chat
.
SearchResponse
.
User
>
searchRes
=
chatResponseMessage
.
getSearchRes
().
getUsersList
();
resultEventCallback
.
onSuccess
(
searchRes
);
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
resultEventCallback
.
onFailed
(
errorCode
);
}
});
});
id
++;
}
}
/**
/**
* 添加好友
* 添加好友
*/
*/
public
void
addContact
(
Long
userId
)
{
public
void
addContact
(
Long
userId
,
ResultEventCallback
<
Chat
.
AddContactResponse
.
AddResult
>
callback
)
{
Chat
.
AddContactRequest
addContactRequest
=
Chat
.
AddContactRequest
.
newBuilder
().
setUserId
(
userId
).
build
();
Chat
.
AddContactRequest
addContactRequest
=
Chat
.
AddContactRequest
.
newBuilder
().
setUserId
(
userId
).
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
addContactRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setAddContactReq
(
addContactRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasAddContactRes
())
{
if
(
chatResponseMessage
.
hasAddContactRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
Chat
.
AddContactResponse
addContactRes
=
chatResponseMessage
.
getAddContactRes
();
Chat
.
AddContactResponse
.
AddResult
result
=
addContactRes
.
getResult
();
callback
.
onSuccess
(
result
);
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
});
});
id
++;
}
}
/**
/**
* 联系人申请列表
* 联系人申请列表
*/
*/
public
void
getContactRequests
()
{
public
void
getContactRequests
(
ResultEventCallback
<
Chat
.
ContactRequestsResponse
>
callback
)
{
Chat
.
ContactRequestsRequest
contactRequestsRequest
=
Chat
.
ContactRequestsRequest
.
newBuilder
().
build
();
Chat
.
ContactRequestsRequest
contactRequestsRequest
=
Chat
.
ContactRequestsRequest
.
newBuilder
().
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
contactRequestsRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setContactRequestsReq
(
contactRequestsRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasContactRequestsRes
())
{
if
(
chatResponseMessage
.
hasContactRequestsRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
Chat
.
ContactRequestsResponse
contactRequestsRes
=
chatResponseMessage
.
getContactRequestsRes
();
callback
.
onSuccess
(
contactRequestsRes
);
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
});
});
id
++;
}
}
/**
/**
* 验证联系人申请
* 验证联系人申请
*/
*/
public
void
checkContactReq
(
Long
reqUserId
,
boolean
accept
)
{
public
void
checkContactReq
(
Long
reqUserId
,
boolean
accept
,
ResultCallback
callback
)
{
Chat
.
CheckContactReqRequest
checkContactReqRequest
=
Chat
.
CheckContactReqRequest
.
newBuilder
()
Chat
.
CheckContactReqRequest
checkContactReqRequest
=
Chat
.
CheckContactReqRequest
.
newBuilder
()
.
setReqUserId
(
reqUserId
)
.
setReqUserId
(
reqUserId
)
.
setAccept
(
accept
)
.
setAccept
(
accept
)
.
build
();
.
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
checkContactReqRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setCheckContactReqReq
(
checkContactReqRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasCheckContactReqRes
())
{
if
(
chatResponseMessage
.
hasCheckContactReqRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
callback
.
onSuccess
();
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
});
});
id
++;
}
}
/**
/**
* 创建联系人群组
* 创建联系人群组
*/
*/
public
void
createContactGroup
(
String
name
)
{
public
void
createContactGroup
(
String
name
,
ResultEventCallback
<
Long
>
callback
)
{
Chat
.
CreateContactGroupRequest
createContactGroupRequest
=
Chat
.
CreateContactGroupRequest
.
newBuilder
()
Chat
.
CreateContactGroupRequest
createContactGroupRequest
=
Chat
.
CreateContactGroupRequest
.
newBuilder
()
.
setName
(
name
)
.
setName
(
name
)
.
build
();
.
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
createContactGroupRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setCreateContactGroupReq
(
createContactGroupRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasCreateContactGroupRes
())
{
if
(
chatResponseMessage
.
hasCreateContactGroupRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
Chat
.
CreateContactGroupResponse
createContactGroupRes
=
chatResponseMessage
.
getCreateContactGroupRes
();
callback
.
onSuccess
(
createContactGroupRes
.
getGroupId
());
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
});
});
id
++;
}
}
/**
/**
* 移动联系人所在的群组
* 移动联系人所在的群组
*/
*/
public
void
moveContactGroup
(
Long
groupId
,
Long
userId
)
{
public
void
moveContactGroup
(
Long
groupId
,
Long
userId
,
ResultCallback
callback
)
{
Chat
.
MoveContactGroupRequest
moveContactGroupRequest
=
Chat
.
MoveContactGroupRequest
.
newBuilder
()
Chat
.
MoveContactGroupRequest
moveContactGroupRequest
=
Chat
.
MoveContactGroupRequest
.
newBuilder
()
.
setContactGroupId
(
groupId
)
.
setContactGroupId
(
groupId
)
.
setContactUserId
(
userId
)
.
setContactUserId
(
userId
)
.
build
();
.
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
moveContactGroupRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setMoveContactGroupReq
(
moveContactGroupRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasMoveContactGroupRes
())
{
if
(
chatResponseMessage
.
hasMoveContactGroupRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
callback
.
onSuccess
();
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
});
});
id
++;
}
}
/**
/**
* 删除联系人
* 删除联系人
*/
*/
public
void
deleteContact
(
Long
userId
)
{
public
void
deleteContact
(
Long
userId
,
ResultCallback
callback
)
{
Chat
.
DeleteContactRequest
deleteContactRequest
=
Chat
.
DeleteContactRequest
.
newBuilder
()
Chat
.
DeleteContactRequest
deleteContactRequest
=
Chat
.
DeleteContactRequest
.
newBuilder
()
.
setContactUserId
(
userId
)
.
setContactUserId
(
userId
)
.
build
();
.
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
deleteContactRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setDeleteContactReq
(
deleteContactRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasDeleteContactRes
())
{
if
(
chatResponseMessage
.
hasDeleteContactRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
callback
.
onSuccess
();
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
}
});
});
id
++;
}
}
/**
/**
* 拉黑联系人
* 拉黑联系人
*/
*/
public
void
blockContact
(
Long
userId
,
Boolean
mute
)
{
public
void
blockContact
(
Long
userId
,
Boolean
mute
,
ResultCallback
callback
)
{
Chat
.
BlockContactRequest
blockContactRequest
=
Chat
.
BlockContactRequest
.
newBuilder
()
Chat
.
BlockContactRequest
blockContactRequest
=
Chat
.
BlockContactRequest
.
newBuilder
()
.
setContactUserId
(
userId
)
.
setContactUserId
(
userId
)
.
setMute
(
mute
)
.
setMute
(
mute
)
.
build
();
.
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
blockContactRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setBlockContactReq
(
blockContactRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasBlockContactRes
())
{
if
(
chatResponseMessage
.
hasBlockContactRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
callback
.
onSuccess
();
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
}
});
});
id
++;
}
}
/**
/**
* 举报违规用户
* 举报违规用户
*/
*/
public
void
reportIllegalUser
(
String
title
,
String
content
,
Long
userId
)
{
public
void
reportIllegalUser
(
String
title
,
String
content
,
Long
userId
,
ResultCallback
callback
)
{
Chat
.
ReportIllegalUserRequest
reportIllegalUserRequest
=
Chat
.
ReportIllegalUserRequest
.
newBuilder
()
Chat
.
ReportIllegalUserRequest
reportIllegalUserRequest
=
Chat
.
ReportIllegalUserRequest
.
newBuilder
()
.
setContent
(
content
)
.
setContent
(
content
)
.
setIllegalUserId
(
userId
)
.
setIllegalUserId
(
userId
)
.
setTitle
(
title
)
.
setTitle
(
title
)
.
build
();
.
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
reportIllegalUserRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setReportIllegalUserReq
(
reportIllegalUserRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasReportIllegalUserRes
())
{
if
(
chatResponseMessage
.
hasReportIllegalUserRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
callback
.
onSuccess
();
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
});
});
id
++;
}
}
/**
/**
* 发送消息
* 发送消息
*/
*/
public
void
sendTextMessage
(
String
content
,
Long
reciveUserId
)
{
public
void
sendTextMessage
(
String
content
,
Long
reciveUserId
,
ResultCallback
callback
)
{
Message
.
SendMessageRequest
messageRequest
=
Message
.
SendMessageRequest
.
newBuilder
()
Message
.
SendMessageRequest
messageRequest
=
Message
.
SendMessageRequest
.
newBuilder
()
.
setContent
(
content
)
.
setContent
(
content
)
.
setMsgType
(
MessageSpec
.
MessageType
.
TEXT
)
.
setMsgType
(
MessageSpec
.
MessageType
.
TEXT
)
.
setReceiverUserId
(
reciveUserId
).
build
();
.
setReceiverUserId
(
reciveUserId
).
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
1
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
messageRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setSendMsgReq
(
messageRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasSendMsgRes
())
{
if
(
chatResponseMessage
.
hasSendMsgRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
.
getSearchRes
()));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
.
getSearchRes
()));
callback
.
onSuccess
();
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
});
});
id
++;
}
}
/**
/**
* 发送群组消息
* 发送群组消息
*/
*/
public
void
sendGroupMessage
(
String
content
,
Long
groupId
)
{
public
void
sendGroupMessage
(
String
content
,
Long
groupId
,
ResultCallback
callback
)
{
Message
.
SendGroupMessageRequest
sendGroupMessageRequest
=
Message
.
SendGroupMessageRequest
.
newBuilder
()
Message
.
SendGroupMessageRequest
sendGroupMessageRequest
=
Message
.
SendGroupMessageRequest
.
newBuilder
()
.
setContent
(
content
)
.
setContent
(
content
)
.
setMsgType
(
MessageSpec
.
MessageType
.
TEXT
)
.
setMsgType
(
MessageSpec
.
MessageType
.
TEXT
)
.
setGroupId
(
groupId
)
.
setGroupId
(
groupId
)
.
build
();
.
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
1
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
sendGroupMessageRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setSendGroupMsgReq
(
sendGroupMessageRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasSendGroupMsgRes
())
{
if
(
chatResponseMessage
.
hasSendGroupMsgRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
callback
.
onSuccess
();
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
}
});
});
id
++;
}
}
/**
/**
* 发送群组消息
* 发送群组消息
*/
*/
public
void
sendChannelMessage
(
String
content
,
Long
channelId
)
{
public
void
sendChannelMessage
(
String
content
,
Long
channelId
,
ResultCallback
callback
)
{
Message
.
SendChannelMessageRequest
sendChannelMessageRequest
=
Message
.
SendChannelMessageRequest
.
newBuilder
()
Message
.
SendChannelMessageRequest
sendChannelMessageRequest
=
Message
.
SendChannelMessageRequest
.
newBuilder
()
.
setContent
(
content
)
.
setContent
(
content
)
.
setMsgType
(
MessageSpec
.
MessageType
.
TEXT
)
.
setMsgType
(
MessageSpec
.
MessageType
.
TEXT
)
.
setChannelId
(
channelId
)
.
setChannelId
(
channelId
)
.
build
();
.
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
1
).
setSeq
(
id
).
build
();
int
id
=
socketManageer
.
sendRequest
(
sendChannelMessageRequest
);
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
()
callBackManager
.
addCallBack
(
id
,
new
ResultEventCallback
<
Chat
.
ChatResponseMessage
>()
{
.
setSendChannelMsgReq
(
sendChannelMessageRequest
)
.
setHeader
(
header
).
build
();
OkSocket
.
open
(
socketManageer
.
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
callBackManager
.
addCallBack
(
id
,
new
ResultCallback
<
Chat
.
ChatResponseMessage
>()
{
@Override
@Override
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasSendChannelMsgRes
())
{
if
(
chatResponseMessage
.
hasSendChannelMsgRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
callback
.
onSuccess
();
}
}
}
}
@Override
public
void
onFailed
(
int
errorCode
)
{
callback
.
onFailed
(
errorCode
);
}
});
});
id
++;
}
}
/**
* 推送私人消息成功ack
*/
public
void
pushPrivateMessageAck
(
Long
contactUserId
,
Long
msgId
)
{
Push
.
PushPrivateMessageAckRequest
pushPrivateMessageAckRequest
=
Push
.
PushPrivateMessageAckRequest
.
newBuilder
()
.
setContactUserId
(
contactUserId
)
.
setMsgId
(
msgId
)
.
build
();
int
id
=
socketManageer
.
sendRequest
(
pushPrivateMessageAckRequest
);
callBackManager
.
addCallBack
(
id
,
chatResponseMessage
->
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
)));
}
/**
* 推送渠道消息成功ack
*/
public
void
pushGroupMessageAck
(
Long
groupId
,
Long
msgId
)
{
Push
.
PushGroupMessageAckRequest
groupMessageAckRequest
=
Push
.
PushGroupMessageAckRequest
.
newBuilder
()
.
setGroupId
(
groupId
)
.
setMsgId
(
msgId
)
.
build
();
int
id
=
socketManageer
.
sendRequest
(
groupMessageAckRequest
);
callBackManager
.
addCallBack
(
id
,
chatResponseMessage
->
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
)));
}
/**
* 推送渠道消息成功ack
*/
public
void
pushChannelMessage
(
Long
channelId
,
Long
msgId
)
{
Push
.
PushChannelMessageAckRequest
channelMessageAckRequest
=
Push
.
PushChannelMessageAckRequest
.
newBuilder
()
.
setChannelId
(
channelId
)
.
setMsgId
(
msgId
)
.
build
();
int
id
=
socketManageer
.
sendRequest
(
channelMessageAckRequest
);
callBackManager
.
addCallBack
(
id
,
chatResponseMessage
->
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
)));
}
}
}
ccim/src/main/java/com/ccwangluo/ccim/listener/MessageEventCallback.java
deleted
100644 → 0
View file @
92ff0173
package
com.ccwangluo.ccim.listener
;
import
ccim.protocol.Chat
;
import
ccim.protocol.Push
;
public
interface
MessageEventCallback
{
// void onRecvMessage(Push)
}
ccim/src/main/java/com/ccwangluo/ccim/listener/MessageListener.java
View file @
a3d0a99c
...
@@ -3,5 +3,8 @@ package com.ccwangluo.ccim.listener;
...
@@ -3,5 +3,8 @@ package com.ccwangluo.ccim.listener;
import
com.xuhao.didi.core.pojo.OriginalData
;
import
com.xuhao.didi.core.pojo.OriginalData
;
public
interface
MessageListener
{
public
interface
MessageListener
{
default
void
onServerConnect
(){
}
void
onMessageListener
(
OriginalData
data
);
void
onMessageListener
(
OriginalData
data
);
}
}
ccim/src/main/java/com/ccwangluo/ccim/listener/ResultCallback.java
View file @
a3d0a99c
package
com.ccwangluo.ccim.listener
;
package
com.ccwangluo.ccim.listener
;
public
interface
ResultCallback
<
T
>
{
public
interface
ResultCallback
{
void
onSuccess
(
T
t
);
void
onSuccess
();
default
void
onFailed
(
int
errorCode
){
};
}
}
ccim/src/main/java/com/ccwangluo/ccim/listener/ResultEventCallback.java
0 → 100644
View file @
a3d0a99c
package
com.ccwangluo.ccim.listener
;
public
interface
ResultEventCallback
<
T
>
{
void
onSuccess
(
T
t
);
default
void
onFailed
(
int
errorCode
){
}
}
ccim/src/main/java/com/ccwangluo/ccim/manage/CallBackManager.java
View file @
a3d0a99c
package
com.ccwangluo.ccim.manage
;
package
com.ccwangluo.ccim.manage
;
import
com.ccwangluo.ccim.listener.ResultCallback
;
import
android.os.Handler
;
import
android.os.Looper
;
import
com.ccwangluo.ccim.listener.ResultEventCallback
;
import
java.util.HashMap
;
import
java.util.HashMap
;
public
class
CallBackManager
<
T
>
{
public
class
CallBackManager
<
T
>
{
private
HashMap
<
Integer
,
ResultCallback
<
T
>>
callbackHashMap
=
new
HashMap
<>();
private
final
HashMap
<
Integer
,
ResultEventCallback
<
T
>>
callbackHashMap
=
new
HashMap
<>();
private
final
int
time_out
=
60
*
1000
;
public
void
addCallBack
(
int
id
,
ResultCallback
<
T
>
resultCallback
)
{
callbackHashMap
.
put
(
id
,
resultCallback
);
public
synchronized
void
addCallBack
(
int
id
,
ResultEventCallback
<
T
>
resultEventCallback
)
{
callbackHashMap
.
put
(
id
,
resultEventCallback
);
//设置60秒超时
new
Handler
(
Looper
.
getMainLooper
()).
postDelayed
(()
->
{
ResultEventCallback
<
T
>
callBack
=
getCallBack
(
id
);
if
(
callBack
!=
null
){
removeCallBack
(
id
);
callBack
.
onFailed
(
999
);
}
},
time_out
);
}
}
public
Resul
tCallback
<
T
>
getCallBack
(
int
id
)
{
public
synchronized
ResultEven
tCallback
<
T
>
getCallBack
(
int
id
)
{
return
callbackHashMap
.
get
(
id
);
return
callbackHashMap
.
get
(
id
);
}
}
public
void
removeCallBack
(
int
id
)
{
public
synchronized
void
removeCallBack
(
int
id
)
{
callbackHashMap
.
remove
(
id
);
callbackHashMap
.
remove
(
id
);
}
}
...
...
ccim/src/main/java/com/ccwangluo/ccim/manage/SocketManageer.java
View file @
a3d0a99c
package
com.ccwangluo.ccim.manage
;
package
com.ccwangluo.ccim.manage
;
import
com.ccwangluo.ccim.CCClient
;
import
android.text.TextUtils
;
import
com.ccwangluo.ccim.CCIMClient
;
import
com.ccwangluo.ccim.modle.IrequestData
;
import
com.ccwangluo.ccim.modle.IrequestData
;
import
com.ccwangluo.ccim.modle.MyIReaderProtocol
;
import
com.ccwangluo.ccim.modle.MyIReaderProtocol
;
import
com.ccwangluo.ccim.listener.MessageListener
;
import
com.ccwangluo.ccim.listener.MessageListener
;
import
com.ccwangluo.ccim.listener.ResultCallback
;
import
com.ccwangluo.ccim.listener.ResultEventCallback
;
import
com.google.protobuf.InvalidProtocolBufferException
;
import
com.xuhao.didi.core.pojo.OriginalData
;
import
com.xuhao.didi.core.pojo.OriginalData
;
import
com.xuhao.didi.socket.client.sdk.OkSocket
;
import
com.xuhao.didi.socket.client.sdk.OkSocket
;
import
com.xuhao.didi.socket.client.sdk.client.ConnectionInfo
;
import
com.xuhao.didi.socket.client.sdk.client.ConnectionInfo
;
...
@@ -17,11 +18,18 @@ import java.util.logging.Logger;
...
@@ -17,11 +18,18 @@ import java.util.logging.Logger;
import
ccim.protocol.Auth
;
import
ccim.protocol.Auth
;
import
ccim.protocol.Chat
;
import
ccim.protocol.Chat
;
import
ccim.protocol.Common
;
import
ccim.protocol.Message
;
import
ccim.protocol.Push
;
public
class
SocketManageer
{
public
class
SocketManageer
{
private
Logger
logger
=
Logger
.
getLogger
(
CCClient
.
class
.
getName
());
private
final
Logger
logger
=
Logger
.
getLogger
(
CCIMClient
.
class
.
getName
());
private
final
int
version
=
1
;
private
CallBackManager
<
Chat
.
ChatResponseMessage
>
callBackManager
;
private
volatile
int
id
=
1
;
private
final
CallBackManager
<
Chat
.
ChatResponseMessage
>
callBackManager
;
public
SocketManageer
(
CallBackManager
<
Chat
.
ChatResponseMessage
>
callBackManager
)
{
public
SocketManageer
(
CallBackManager
<
Chat
.
ChatResponseMessage
>
callBackManager
)
{
this
.
callBackManager
=
callBackManager
;
this
.
callBackManager
=
callBackManager
;
}
}
...
@@ -30,7 +38,7 @@ public class SocketManageer {
...
@@ -30,7 +38,7 @@ public class SocketManageer {
private
ConnectionInfo
chatInfo
;
private
ConnectionInfo
chatInfo
;
private
String
token
;
private
String
token
;
private
ResultCallback
<
String
>
loginCallBack
;
private
Result
Event
Callback
<
String
>
loginCallBack
;
public
String
getToken
()
{
public
String
getToken
()
{
return
token
;
return
token
;
...
@@ -40,35 +48,19 @@ public class SocketManageer {
...
@@ -40,35 +48,19 @@ public class SocketManageer {
this
.
token
=
token
;
this
.
token
=
token
;
}
}
public
Logger
getLogger
()
{
return
logger
;
}
public
void
setLogger
(
Logger
logger
)
{
this
.
logger
=
logger
;
}
public
ConnectionInfo
getAuthInfo
()
{
public
ConnectionInfo
getAuthInfo
()
{
return
authInfo
;
return
authInfo
;
}
}
public
void
setAuthInfo
(
ConnectionInfo
authInfo
)
{
this
.
authInfo
=
authInfo
;
}
public
ConnectionInfo
getChatInfo
()
{
public
ConnectionInfo
getChatInfo
()
{
return
chatInfo
;
return
chatInfo
;
}
}
public
void
setChatInfo
(
ConnectionInfo
chatInfo
)
{
this
.
chatInfo
=
chatInfo
;
}
public
void
initAuth
()
{
public
void
initAuth
()
{
//连接参数设置(IP,端口号),这也是一个连接的唯一标识,不同连接,该参数中的两个值至少有其一不一样
//连接参数设置(IP,端口号),这也是一个连接的唯一标识,不同连接,该参数中的两个值至少有其一不一样
this
.
authInfo
=
initServer
(
"117.144.156.2"
,
9000
,
new
MessageListener
()
{
this
.
authInfo
=
initServer
(
"117.144.156.2"
,
9000
,
data
->
{
@Override
public
void
onMessageListener
(
OriginalData
data
)
{
try
{
try
{
Auth
.
AuthResponseMessage
chatResponseMessage
=
Auth
.
AuthResponseMessage
.
parseFrom
(
data
.
getBodyBytes
());
Auth
.
AuthResponseMessage
chatResponseMessage
=
Auth
.
AuthResponseMessage
.
parseFrom
(
data
.
getBodyBytes
());
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
...
@@ -80,44 +72,68 @@ public class SocketManageer {
...
@@ -80,44 +72,68 @@ public class SocketManageer {
if
(
loginCallBack
!=
null
){
if
(
loginCallBack
!=
null
){
loginCallBack
.
onSuccess
(
token
);
loginCallBack
.
onSuccess
(
token
);
}
}
}
else
{
if
(
loginCallBack
!=
null
){
loginCallBack
.
onFailed
(
chatResponseMessage
.
getHeader
().
getCode
());
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
}
});
});
}
}
public
void
login
(
String
username
,
String
password
,
ResultCallback
<
String
>
resul
tCallback
)
{
public
void
login
(
String
username
,
String
password
,
Long
appId
,
ResultEventCallback
<
String
>
resultEven
tCallback
)
{
Auth
.
LoginRequest
.
Builder
builder
=
Auth
.
LoginRequest
.
newBuilder
().
setUsername
(
"user1"
).
setPassword
(
"123456"
).
setAppId
(
1
);
Auth
.
LoginRequest
.
Builder
builder
=
Auth
.
LoginRequest
.
newBuilder
().
setUsername
(
username
).
setPassword
(
password
).
setAppId
(
appId
);
Auth
.
AuthRequestMessage
build
=
Auth
.
AuthRequestMessage
.
newBuilder
().
setLoginReq
(
builder
.
build
()).
build
();
Auth
.
AuthRequestMessage
build
=
Auth
.
AuthRequestMessage
.
newBuilder
().
setLoginReq
(
builder
.
build
()).
build
();
OkSocket
.
open
(
getAuthInfo
())
OkSocket
.
open
(
getAuthInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
this
.
loginCallBack
=
resultCallback
;
this
.
loginCallBack
=
resultEventCallback
;
}
public
void
connectChatServer
()
{
if
(
TextUtils
.
isEmpty
(
getToken
()))
{
return
;
}
Chat
.
ConnectRequest
builder
=
Chat
.
ConnectRequest
.
newBuilder
().
setToken
(
getToken
()).
build
();
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
1
).
setSeq
(
1
).
build
();
Chat
.
ChatRequestMessage
build
=
Chat
.
ChatRequestMessage
.
newBuilder
().
setConnectReq
(
builder
).
setHeader
(
header
).
build
();
OkSocket
.
open
(
getChatInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
}
}
private
void
initChat
(
String
server
)
{
private
void
initChat
(
String
server
)
{
//连接参数设置(IP,端口号),这也是一个连接的唯一标识,不同连接,该参数中的两个值至少有其一不一样
//连接参数设置(IP,端口号),这也是一个连接的唯一标识,不同连接,该参数中的两个值至少有其一不一样
String
[]
split
=
server
.
split
(
":"
);
String
[]
split
=
server
.
split
(
":"
);
this
.
chatInfo
=
initServer
(
split
[
0
],
Integer
.
parseInt
(
split
[
1
]),
new
MessageListener
()
{
this
.
chatInfo
=
initServer
(
split
[
0
],
Integer
.
parseInt
(
split
[
1
]),
new
MessageListener
()
{
@Override
public
void
onServerConnect
()
{
connectChatServer
();
}
@Override
@Override
public
void
onMessageListener
(
OriginalData
data
)
{
public
void
onMessageListener
(
OriginalData
data
)
{
try
{
try
{
Chat
.
ChatResponseMessage
chatResponseMessage
=
Chat
.
ChatResponseMessage
.
parseFrom
(
data
.
getBodyBytes
());
Chat
.
ChatResponseMessage
chatResponseMessage
=
Chat
.
ChatResponseMessage
.
parseFrom
(
data
.
getBodyBytes
());
if
(
chatResponseMessage
.
getHeader
().
getCode
()
==
0
)
{
int
seq
=
chatResponseMessage
.
getHeader
().
getSeq
();
int
seq
=
chatResponseMessage
.
getHeader
().
getSeq
();
if
(
seq
>
0
){
ResultEventCallback
<
Chat
.
ChatResponseMessage
>
callBack
=
callBackManager
.
getCallBack
(
seq
);
ResultCallback
<
Chat
.
ChatResponseMessage
>
callBack
=
callBackManager
.
getCallBack
(
seq
);
if
(
callBack
!=
null
)
{
if
(
callBack
!=
null
){
if
(
seq
>
0
)
{
if
(
chatResponseMessage
.
getHeader
().
getCode
()
==
0
)
{
callBack
.
onSuccess
(
chatResponseMessage
);
callBack
.
onSuccess
(
chatResponseMessage
);
}
else
{
callBack
.
onFailed
(
chatResponseMessage
.
getHeader
().
getCode
());
}
if
(!
chatResponseMessage
.
hasPullOfflineMsgRes
())
{
callBackManager
.
removeCallBack
(
seq
);
callBackManager
.
removeCallBack
(
seq
);
}
}
}
else
{
//主动接受的消息
}
}
else
if
(
seq
==
0
)
{
//push消息
callBack
.
onSuccess
(
chatResponseMessage
);
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
...
@@ -151,6 +167,7 @@ public class SocketManageer {
...
@@ -151,6 +167,7 @@ public class SocketManageer {
public
void
onSocketConnectionSuccess
(
ConnectionInfo
info
,
String
action
)
{
public
void
onSocketConnectionSuccess
(
ConnectionInfo
info
,
String
action
)
{
super
.
onSocketConnectionSuccess
(
info
,
action
);
super
.
onSocketConnectionSuccess
(
info
,
action
);
logger
.
info
(
"connect success"
);
logger
.
info
(
"connect success"
);
messageListener
.
onServerConnect
();
}
}
...
@@ -169,4 +186,50 @@ public class SocketManageer {
...
@@ -169,4 +186,50 @@ public class SocketManageer {
return
authInfo
;
return
authInfo
;
}
}
public
synchronized
int
sendRequest
(
Object
request
)
{
Common
.
RequestMessageHeader
header
=
Common
.
RequestMessageHeader
.
newBuilder
().
setVersion
(
version
).
setSeq
(
id
).
build
();
Chat
.
ChatRequestMessage
.
Builder
builder
=
Chat
.
ChatRequestMessage
.
newBuilder
();
builder
.
setHeader
(
header
);
if
(
request
instanceof
Chat
.
PullContactsRequest
){
builder
.
setPullContactsReq
((
Chat
.
PullContactsRequest
)
request
);
}
else
if
(
request
instanceof
Chat
.
SearchRequest
){
builder
.
setSearchReq
((
Chat
.
SearchRequest
)
request
);
}
else
if
(
request
instanceof
Chat
.
AddContactRequest
){
builder
.
setAddContactReq
((
Chat
.
AddContactRequest
)
request
);
}
else
if
(
request
instanceof
Chat
.
ContactRequestsRequest
){
builder
.
setContactRequestsReq
((
Chat
.
ContactRequestsRequest
)
request
);
}
else
if
(
request
instanceof
Chat
.
CheckContactReqRequest
){
builder
.
setCheckContactReqReq
((
Chat
.
CheckContactReqRequest
)
request
);
}
else
if
(
request
instanceof
Chat
.
CreateContactGroupRequest
){
builder
.
setCreateContactGroupReq
((
Chat
.
CreateContactGroupRequest
)
request
);
}
else
if
(
request
instanceof
Chat
.
MoveContactGroupRequest
){
builder
.
setMoveContactGroupReq
((
Chat
.
MoveContactGroupRequest
)
request
);
}
else
if
(
request
instanceof
Chat
.
DeleteContactRequest
){
builder
.
setDeleteContactReq
((
Chat
.
DeleteContactRequest
)
request
);
}
else
if
(
request
instanceof
Chat
.
BlockContactRequest
){
builder
.
setBlockContactReq
((
Chat
.
BlockContactRequest
)
request
);
}
else
if
(
request
instanceof
Chat
.
ReportIllegalUserRequest
){
builder
.
setReportIllegalUserReq
((
Chat
.
ReportIllegalUserRequest
)
request
);
}
else
if
(
request
instanceof
Message
.
SendMessageRequest
){
builder
.
setSendMsgReq
((
Message
.
SendMessageRequest
)
request
);
}
else
if
(
request
instanceof
Message
.
SendGroupMessageRequest
){
builder
.
setSendGroupMsgReq
((
Message
.
SendGroupMessageRequest
)
request
);
}
else
if
(
request
instanceof
Message
.
SendChannelMessageRequest
){
builder
.
setSendChannelMsgReq
((
Message
.
SendChannelMessageRequest
)
request
);
}
else
if
(
request
instanceof
Push
.
PushPrivateMessageAckRequest
){
builder
.
setPushPrivateMsgAckReq
((
Push
.
PushPrivateMessageAckRequest
)
request
);
}
else
if
(
request
instanceof
Push
.
PushGroupMessageAckRequest
){
builder
.
setPushGroupMsgAckReq
((
Push
.
PushGroupMessageAckRequest
)
request
);
}
else
if
(
request
instanceof
Push
.
PushChannelMessageAckRequest
){
builder
.
setPushChannelMsgAckReq
((
Push
.
PushChannelMessageAckRequest
)
request
);
}
else
if
(
request
instanceof
Message
.
PullOfflineMessageRequest
){
builder
.
setPullOfflineMsgReq
((
Message
.
PullOfflineMessageRequest
)
request
);
}
OkSocket
.
open
(
getChatInfo
())
.
send
(
new
IrequestData
(
builder
.
build
().
toByteArray
()));
return
id
++;
}
}
}
ccim/src/main/java/com/ccwangluo/ccim/modle/IrequestData.java
View file @
a3d0a99c
...
@@ -7,7 +7,7 @@ import java.nio.ByteOrder;
...
@@ -7,7 +7,7 @@ import java.nio.ByteOrder;
public
class
IrequestData
implements
ISendable
{
public
class
IrequestData
implements
ISendable
{
private
byte
[]
body
;
private
final
byte
[]
body
;
public
IrequestData
(
byte
[]
body
){
public
IrequestData
(
byte
[]
body
){
this
.
body
=
body
;
this
.
body
=
body
;
...
...
ccim/src/main/java/com/ccwangluo/ccim/util/MediaHelper.java
0 → 100644
View file @
a3d0a99c
package
com.ccwangluo.ccim.util
;
import
android.media.MediaRecorder
;
import
android.os.Build
;
import
java.io.File
;
import
java.io.IOException
;
public
class
MediaHelper
{
private
MediaRecorder
mMediaRecorder
;
private
String
mPath
;
//文件夹
private
String
mFilePath
;
//文件
private
static
MediaHelper
mInstance
;
private
MediaHelper
(
String
path
)
{
mPath
=
path
;
}
/**
* 准备播放后的回调
* 这个时候文件夹里已经有文件生成了
* 如果不去释放资源将会一直进行录音
*/
public
interface
MediaStateListener
{
void
preparedDone
();
}
public
MediaStateListener
mMediaStateListener
;
public
void
setMediaStateListener
(
MediaStateListener
mediaStateListener
)
{
mMediaStateListener
=
mediaStateListener
;
}
/**
* 单例模式获取 MediaHelper
* 双检锁/双重校验锁
*
* @param path
* @return
*/
public
static
MediaHelper
getInstance
(
String
path
)
{
if
(
mInstance
==
null
)
{
synchronized
(
MediaHelper
.
class
)
{
if
(
mInstance
==
null
)
{
mInstance
=
new
MediaHelper
(
path
);
}
}
}
return
mInstance
;
}
/**
* 准备录音
*/
public
void
prepare
()
{
try
{
File
fileDir
=
new
File
(
mPath
);
boolean
b
=
!
fileDir
.
exists
();
if
(
b
)
{
fileDir
.
mkdirs
();
}
String
fileName
=
System
.
currentTimeMillis
()
+
".amr"
;
// 文件名字
File
file
=
new
File
(
fileDir
,
fileName
);
// 文件路径
mMediaRecorder
=
new
MediaRecorder
();
mFilePath
=
file
.
getAbsolutePath
();
//设置保存文件的路径
if
(
Build
.
VERSION
.
SDK_INT
<
26
)
{
//若api低于26,调用setOutputFile(String path)
mMediaRecorder
.
setOutputFile
(
file
.
getAbsolutePath
());
}
else
{
//若API高于26 使用setOutputFile(File path)
mMediaRecorder
.
setOutputFile
(
new
File
(
file
.
getAbsolutePath
()));
}
mMediaRecorder
.
setAudioSource
(
MediaRecorder
.
AudioSource
.
MIC
);
// 设置MediaRecorder的音频源为麦克风
mMediaRecorder
.
setOutputFormat
(
MediaRecorder
.
OutputFormat
.
AMR_NB
);
// 设置音频的格式
mMediaRecorder
.
setAudioEncoder
(
MediaRecorder
.
AudioEncoder
.
AMR_NB
);
// 设置音频的编码为AMR_NB
mMediaRecorder
.
prepare
();
mMediaRecorder
.
start
();
if
(
mMediaStateListener
!=
null
)
{
mMediaStateListener
.
preparedDone
();
}
}
catch
(
IllegalStateException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
/**
* 释放资源
*/
public
void
release
()
{
mMediaRecorder
.
stop
();
mMediaRecorder
.
release
();
mMediaRecorder
=
null
;
}
/**
* 取消
*/
public
void
cancel
()
{
release
();
//删除相应的录音
if
(
mFilePath
!=
null
)
{
File
file
=
new
File
(
mFilePath
);
if
(
file
.
exists
())
{
file
.
delete
();
}
mFilePath
=
null
;
}
}
//获取生成的文件路径
public
String
getFilePath
()
{
return
mFilePath
;
}
}
\ No newline at end of file
ccim/src/main/proto/chat.proto
View file @
a3d0a99c
...
@@ -133,6 +133,8 @@ message AddContactResponse {
...
@@ -133,6 +133,8 @@ message AddContactResponse {
SUCCESS
=
0
;
SUCCESS
=
0
;
ALREADY_SENT
=
1
;
ALREADY_SENT
=
1
;
NO_AUTHORITY
=
2
;
NO_AUTHORITY
=
2
;
ALREADY_CONTACT
=
3
;
ACCEPT_REQ
=
4
;
}
}
AddResult
result
=
1
;
AddResult
result
=
1
;
}
}
...
...
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