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
57f5faf0
Commit
57f5faf0
authored
Feb 10, 2022
by
sheteng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xiugai extdata
parent
097174c8
Changes
23
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
200 additions
and
737 deletions
+200
-737
app/build.gradle
app/build.gradle
+1
-0
app/src/main/AndroidManifest.xml
app/src/main/AndroidManifest.xml
+1
-4
app/src/main/java/com/ccwangluo/im/FirstFragment.java
app/src/main/java/com/ccwangluo/im/FirstFragment.java
+0
-443
app/src/main/java/com/ccwangluo/im/MainActivity.java
app/src/main/java/com/ccwangluo/im/MainActivity.java
+0
-63
app/src/main/java/com/ccwangluo/im/MainActivity2.java
app/src/main/java/com/ccwangluo/im/MainActivity2.java
+4
-1
app/src/main/java/com/ccwangluo/im/adapter/PrivateMsgAdapter.java
...main/java/com/ccwangluo/im/adapter/PrivateMsgAdapter.java
+5
-5
app/src/main/java/com/ccwangluo/im/data/LoginViewModel.java
app/src/main/java/com/ccwangluo/im/data/LoginViewModel.java
+2
-1
app/src/main/java/com/ccwangluo/im/ui/dashboard/ConnectActivity.java
...n/java/com/ccwangluo/im/ui/dashboard/ConnectActivity.java
+22
-5
app/src/main/java/com/ccwangluo/im/ui/dashboard/ConnectFragment.java
...n/java/com/ccwangluo/im/ui/dashboard/ConnectFragment.java
+0
-138
app/src/main/java/com/ccwangluo/im/ui/dashboard/ContactsFragment.java
.../java/com/ccwangluo/im/ui/dashboard/ContactsFragment.java
+7
-4
app/src/main/java/com/ccwangluo/im/ui/notifications/ConnectChannelActivity.java
...ccwangluo/im/ui/notifications/ConnectChannelActivity.java
+18
-0
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
+2
-3
ccim/src/main/java/com/ccwangluo/ccim/database/MessageDao.java
...src/main/java/com/ccwangluo/ccim/database/MessageDao.java
+3
-0
ccim/src/main/java/com/ccwangluo/ccim/manage/MessageManager.java
...c/main/java/com/ccwangluo/ccim/manage/MessageManager.java
+42
-19
ccim/src/main/java/com/ccwangluo/ccim/modle/MessageContent.java
...rc/main/java/com/ccwangluo/ccim/modle/MessageContent.java
+9
-0
ccim/src/main/java/com/ccwangluo/ccim/modle/PullOffLineMessageRes.java
.../java/com/ccwangluo/ccim/modle/PullOffLineMessageRes.java
+16
-0
ccim/src/main/java/com/ccwangluo/ccim/modle/User.java
ccim/src/main/java/com/ccwangluo/ccim/modle/User.java
+9
-0
ccim/src/main/proto/channel.proto
ccim/src/main/proto/channel.proto
+5
-3
ccim/src/main/proto/chat.proto
ccim/src/main/proto/chat.proto
+1
-0
ccim/src/main/proto/common.proto
ccim/src/main/proto/common.proto
+40
-40
ccim/src/main/proto/contact.proto
ccim/src/main/proto/contact.proto
+1
-0
ccim/src/main/proto/message.proto
ccim/src/main/proto/message.proto
+4
-8
ccim/src/main/proto/message_spec.proto
ccim/src/main/proto/message_spec.proto
+8
-0
No files found.
app/build.gradle
View file @
57f5faf0
...
@@ -52,6 +52,7 @@ dependencies {
...
@@ -52,6 +52,7 @@ dependencies {
implementation
'androidx.constraintlayout:constraintlayout:2.1.1'
implementation
'androidx.constraintlayout:constraintlayout:2.1.1'
implementation
'androidx.navigation:navigation-fragment:2.3.0'
implementation
'androidx.navigation:navigation-fragment:2.3.0'
implementation
'androidx.navigation:navigation-ui:2.3.0'
implementation
'androidx.navigation:navigation-ui:2.3.0'
implementation
'org.greenrobot:eventbus:3.1.1'
// implementation(name: 'ccim-release', ext: 'aar')
// implementation(name: 'ccim-release', ext: 'aar')
implementation
project
(
path:
':ccim'
)
implementation
project
(
path:
':ccim'
)
...
...
app/src/main/AndroidManifest.xml
View file @
57f5faf0
...
@@ -22,10 +22,7 @@
...
@@ -22,10 +22,7 @@
android:name=
".MainActivity2"
android:name=
".MainActivity2"
android:exported=
"false"
android:exported=
"false"
android:label=
"@string/title_activity_main2"
android:label=
"@string/title_activity_main2"
android:screenOrientation=
"portrait"
/>
<!-- <activity -->
android:screenOrientation=
"portrait"
/>
<!-- android:name=".ui.login.LoginActivity" -->
<!-- android:exported="false" -->
<!-- android:label="@string/title_activity_login" /> -->
<activity
<activity
android:name=
".ui.login.LoginActivity"
android:name=
".ui.login.LoginActivity"
android:label=
"@string/app_name"
android:label=
"@string/app_name"
...
...
app/src/main/java/com/ccwangluo/im/FirstFragment.java
deleted
100644 → 0
View file @
097174c8
This diff is collapsed.
Click to expand it.
app/src/main/java/com/ccwangluo/im/MainActivity.java
deleted
100644 → 0
View file @
097174c8
package
com.ccwangluo.im
;
import
android.os.Bundle
;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.navigation.NavController
;
import
androidx.navigation.Navigation
;
import
androidx.navigation.ui.AppBarConfiguration
;
import
androidx.navigation.ui.NavigationUI
;
import
com.ccwangluo.im.databinding.ActivityMainBinding
;
public
class
MainActivity
extends
AppCompatActivity
{
private
AppBarConfiguration
appBarConfiguration
;
private
ActivityMainBinding
binding
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
binding
=
ActivityMainBinding
.
inflate
(
getLayoutInflater
());
setContentView
(
binding
.
getRoot
());
setSupportActionBar
(
binding
.
toolbar
);
NavController
navController
=
Navigation
.
findNavController
(
this
,
R
.
id
.
nav_host_fragment_content_main
);
appBarConfiguration
=
new
AppBarConfiguration
.
Builder
(
navController
.
getGraph
()).
build
();
NavigationUI
.
setupActionBarWithNavController
(
this
,
navController
,
appBarConfiguration
);
}
@Override
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater
().
inflate
(
R
.
menu
.
menu_main
,
menu
)
;
return
true
;
}
@Override
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int
id
=
item
.
getItemId
();
//noinspection SimplifiableIfStatement
if
(
id
==
R
.
id
.
action_settings
)
{
return
true
;
}
return
super
.
onOptionsItemSelected
(
item
);
}
@Override
public
boolean
onSupportNavigateUp
()
{
NavController
navController
=
Navigation
.
findNavController
(
this
,
R
.
id
.
nav_host_fragment_content_main
);
return
NavigationUI
.
navigateUp
(
navController
,
appBarConfiguration
)
||
super
.
onSupportNavigateUp
();
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/im/MainActivity2.java
View file @
57f5faf0
...
@@ -24,6 +24,8 @@ import com.ccwangluo.im.data.LoginViewModel;
...
@@ -24,6 +24,8 @@ import com.ccwangluo.im.data.LoginViewModel;
import
com.ccwangluo.im.databinding.ActivityMain2Binding
;
import
com.ccwangluo.im.databinding.ActivityMain2Binding
;
import
com.google.android.material.bottomnavigation.BottomNavigationView
;
import
com.google.android.material.bottomnavigation.BottomNavigationView
;
import
org.greenrobot.eventbus.EventBus
;
public
class
MainActivity2
extends
AppCompatActivity
{
public
class
MainActivity2
extends
AppCompatActivity
{
private
LoginViewModel
loginViewModel
;
private
LoginViewModel
loginViewModel
;
...
@@ -53,18 +55,19 @@ public class MainActivity2 extends AppCompatActivity {
...
@@ -53,18 +55,19 @@ public class MainActivity2 extends AppCompatActivity {
loginViewModel
=
new
ViewModelProvider
(
this
)
loginViewModel
=
new
ViewModelProvider
(
this
)
.
get
(
LoginViewModel
.
class
);
.
get
(
LoginViewModel
.
class
);
CCIMClient
.
getInstance
().
registerMessageListener
(
new
OnPushMsgListener
()
{
CCIMClient
.
getInstance
().
registerMessageListener
(
new
OnPushMsgListener
()
{
@Override
@Override
public
void
pushPrivateMsg
(
MessageContent
msg
)
{
public
void
pushPrivateMsg
(
MessageContent
msg
)
{
loginViewModel
.
addPrivateMsg
(
msg
);
loginViewModel
.
addPrivateMsg
(
msg
);
loginViewModel
.
getContactList
();
loginViewModel
.
getContactList
();
EventBus
.
getDefault
().
post
(
msg
);
}
}
@Override
@Override
public
void
pushChannelMsg
(
MessageContent
msg
)
{
public
void
pushChannelMsg
(
MessageContent
msg
)
{
loginViewModel
.
addChannelMsg
(
msg
);
loginViewModel
.
addChannelMsg
(
msg
);
EventBus
.
getDefault
().
post
(
msg
);
}
}
@Override
@Override
...
...
app/src/main/java/com/ccwangluo/im/adapter/PrivateMsgAdapter.java
View file @
57f5faf0
...
@@ -16,15 +16,15 @@ import com.ccwangluo.ccim.listener.ResultEventCallback;
...
@@ -16,15 +16,15 @@ import com.ccwangluo.ccim.listener.ResultEventCallback;
import
com.ccwangluo.ccim.modle.MessageContent
;
import
com.ccwangluo.ccim.modle.MessageContent
;
import
com.ccwangluo.im.R
;
import
com.ccwangluo.im.R
;
import
java.util.
Collection
;
import
java.util.
List
;
public
class
PrivateMsgAdapter
extends
BaseAdapter
{
public
class
PrivateMsgAdapter
extends
BaseAdapter
{
private
Collection
<
MessageContent
>
dataList
;
private
List
<
MessageContent
>
dataList
;
private
Context
context
;
private
Context
context
;
public
PrivateMsgAdapter
(
Collection
<
MessageContent
>
dataList
,
Context
context
)
{
public
PrivateMsgAdapter
(
List
<
MessageContent
>
dataList
,
Context
context
)
{
this
.
dataList
=
dataList
;
this
.
dataList
=
dataList
;
this
.
context
=
context
;
this
.
context
=
context
;
}
}
...
@@ -46,7 +46,7 @@ public class PrivateMsgAdapter extends BaseAdapter {
...
@@ -46,7 +46,7 @@ public class PrivateMsgAdapter extends BaseAdapter {
@Override
@Override
public
Object
getItem
(
int
position
)
{
public
Object
getItem
(
int
position
)
{
return
position
;
return
dataList
.
get
(
position
)
;
}
}
@Override
@Override
...
@@ -68,7 +68,7 @@ public class PrivateMsgAdapter extends BaseAdapter {
...
@@ -68,7 +68,7 @@ public class PrivateMsgAdapter extends BaseAdapter {
}
else
{
}
else
{
mHolder
=
(
ViewHolder
)
convertView
.
getTag
();
mHolder
=
(
ViewHolder
)
convertView
.
getTag
();
}
}
MessageContent
message
=
(
MessageContent
)
dataList
.
toArray
()[
position
]
;
MessageContent
message
=
dataList
.
get
(
position
)
;
if
(
message
.
getSenderUserId
()
!=
null
)
{
if
(
message
.
getSenderUserId
()
!=
null
)
{
mHolder
.
msg_content
.
setVisibility
(
View
.
VISIBLE
);
mHolder
.
msg_content
.
setVisibility
(
View
.
VISIBLE
);
mHolder
.
msg_content_send
.
setVisibility
(
View
.
GONE
);
mHolder
.
msg_content_send
.
setVisibility
(
View
.
GONE
);
...
...
app/src/main/java/com/ccwangluo/im/data/LoginViewModel.java
View file @
57f5faf0
...
@@ -14,6 +14,7 @@ import com.ccwangluo.ccim.modle.Dialog;
...
@@ -14,6 +14,7 @@ import com.ccwangluo.ccim.modle.Dialog;
import
com.ccwangluo.ccim.modle.MessageContent
;
import
com.ccwangluo.ccim.modle.MessageContent
;
import
com.ccwangluo.ccim.modle.PullContactsRes
;
import
com.ccwangluo.ccim.modle.PullContactsRes
;
import
com.ccwangluo.ccim.util.HmacUtil
;
import
com.ccwangluo.ccim.util.HmacUtil
;
import
com.ccwangluo.im.util.ToastUtil
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collection
;
...
@@ -48,7 +49,7 @@ public class LoginViewModel extends ViewModel {
...
@@ -48,7 +49,7 @@ public class LoginViewModel extends ViewModel {
@Override
@Override
public
void
onSocketDisconnection
(
int
code
)
{
public
void
onSocketDisconnection
(
int
code
)
{
System
.
out
.
println
(
"onSocketDisconnection"
);
ToastUtil
.
show
(
context
,
"onSocketDisconnection + "
+
code
);
//重连
//重连
// login(context, appKey, appsecret, username, userId, ip, port);
// login(context, appKey, appsecret, username, userId, ip, port);
}
}
...
...
app/src/main/java/com/ccwangluo/im/ui/dashboard/ConnectActivity.java
View file @
57f5faf0
...
@@ -17,14 +17,18 @@ import com.ccwangluo.im.data.LoginViewModel;
...
@@ -17,14 +17,18 @@ import com.ccwangluo.im.data.LoginViewModel;
import
com.ccwangluo.im.databinding.ActivityConnectBinding
;
import
com.ccwangluo.im.databinding.ActivityConnectBinding
;
import
com.ccwangluo.im.util.ToastUtil
;
import
com.ccwangluo.im.util.ToastUtil
;
import
java.util.HashMap
;
import
org.greenrobot.eventbus.EventBus
;
import
org.greenrobot.eventbus.Subscribe
;
import
org.greenrobot.eventbus.ThreadMode
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
public
class
ConnectActivity
extends
AppCompatActivity
{
public
class
ConnectActivity
extends
AppCompatActivity
{
private
ActivityConnectBinding
binding
;
private
ActivityConnectBinding
binding
;
private
LoginViewModel
loginViewModel
;
private
LoginViewModel
loginViewModel
;
private
PrivateMsgAdapter
privaetMsgAdapter
;
private
PrivateMsgAdapter
privaetMsgAdapter
;
private
HashMap
<
Long
,
MessageContent
>
map
=
new
HashMap
<>();
private
List
<
MessageContent
>
list
=
new
ArrayList
<>();
private
String
filePath
;
private
String
filePath
;
private
boolean
isSuccess
=
false
;
private
boolean
isSuccess
=
false
;
...
@@ -36,7 +40,7 @@ public class ConnectActivity extends AppCompatActivity {
...
@@ -36,7 +40,7 @@ public class ConnectActivity extends AppCompatActivity {
loginViewModel
=
new
ViewModelProvider
(
this
)
loginViewModel
=
new
ViewModelProvider
(
this
)
.
get
(
LoginViewModel
.
class
);
.
get
(
LoginViewModel
.
class
);
privaetMsgAdapter
=
new
PrivateMsgAdapter
(
map
.
values
()
,
this
);
privaetMsgAdapter
=
new
PrivateMsgAdapter
(
list
,
this
);
binding
.
msgList
.
setAdapter
(
privaetMsgAdapter
);
binding
.
msgList
.
setAdapter
(
privaetMsgAdapter
);
...
@@ -46,7 +50,7 @@ public class ConnectActivity extends AppCompatActivity {
...
@@ -46,7 +50,7 @@ public class ConnectActivity extends AppCompatActivity {
@Override
@Override
public
void
onChanged
(
MessageContent
messageContent
)
{
public
void
onChanged
(
MessageContent
messageContent
)
{
if
(
messageContent
.
getSenderUserId
().
equals
(
contact
.
getContactUserId
())
||
messageContent
.
getReciveUserId
().
equals
(
contact
.
getContactUserId
()))
{
if
(
messageContent
.
getSenderUserId
().
equals
(
contact
.
getContactUserId
())
||
messageContent
.
getReciveUserId
().
equals
(
contact
.
getContactUserId
()))
{
map
.
put
(
messageContent
.
getMsgId
(),
messageContent
);
list
.
add
(
messageContent
);
privaetMsgAdapter
.
refreshData
();
privaetMsgAdapter
.
refreshData
();
binding
.
msgList
.
setSelection
(
privaetMsgAdapter
.
getCount
()
-
1
);
binding
.
msgList
.
setSelection
(
privaetMsgAdapter
.
getCount
()
-
1
);
}
}
...
@@ -114,7 +118,7 @@ public class ConnectActivity extends AppCompatActivity {
...
@@ -114,7 +118,7 @@ public class ConnectActivity extends AppCompatActivity {
@Override
@Override
public
void
onSuccess
(
List
<
MessageContent
>
messageContents
)
{
public
void
onSuccess
(
List
<
MessageContent
>
messageContents
)
{
for
(
MessageContent
messageContent
:
messageContents
)
{
for
(
MessageContent
messageContent
:
messageContents
)
{
map
.
put
(
messageContent
.
getMsgId
(),
messageContent
);
list
.
add
(
messageContent
);
}
}
privaetMsgAdapter
.
refreshData
();
privaetMsgAdapter
.
refreshData
();
binding
.
msgList
.
setSelection
(
privaetMsgAdapter
.
getCount
()
-
1
);
binding
.
msgList
.
setSelection
(
privaetMsgAdapter
.
getCount
()
-
1
);
...
@@ -125,5 +129,18 @@ public class ConnectActivity extends AppCompatActivity {
...
@@ -125,5 +129,18 @@ public class ConnectActivity extends AppCompatActivity {
}
}
});
});
EventBus
.
getDefault
().
register
(
this
);
}
@Subscribe
(
threadMode
=
ThreadMode
.
MAIN
)
public
void
onGetMessage
(
MessageContent
message
)
{
loginViewModel
.
addPrivateMsg
(
message
);
}
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
EventBus
.
getDefault
().
unregister
(
this
);
}
}
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/im/ui/dashboard/ConnectFragment.java
deleted
100644 → 0
View file @
097174c8
package
com.ccwangluo.im.ui.dashboard
;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.fragment.app.Fragment
;
import
androidx.lifecycle.Observer
;
import
androidx.lifecycle.ViewModelProvider
;
import
com.ccwangluo.ccim.CCIMClient
;
import
com.ccwangluo.ccim.listener.ResultEventCallback
;
import
com.ccwangluo.ccim.modle.Contact
;
import
com.ccwangluo.ccim.modle.MessageContent
;
import
com.ccwangluo.im.adapter.PrivateMsgAdapter
;
import
com.ccwangluo.im.data.LoginViewModel
;
import
com.ccwangluo.im.databinding.FragmentConnectBinding
;
import
com.ccwangluo.im.util.ToastUtil
;
import
java.util.HashMap
;
import
java.util.List
;
public
class
ConnectFragment
extends
Fragment
{
private
FragmentConnectBinding
binding
;
private
LoginViewModel
loginViewModel
;
private
PrivateMsgAdapter
privaetMsgAdapter
;
private
HashMap
<
Long
,
MessageContent
>
map
=
new
HashMap
<>();
private
String
filePath
;
private
boolean
isSuccess
=
false
;
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
}
@Override
public
View
onCreateView
(
LayoutInflater
inflater
,
ViewGroup
container
,
Bundle
savedInstanceState
)
{
binding
=
FragmentConnectBinding
.
inflate
(
inflater
,
container
,
false
);
loginViewModel
=
new
ViewModelProvider
(
getActivity
())
.
get
(
LoginViewModel
.
class
);
privaetMsgAdapter
=
new
PrivateMsgAdapter
(
map
.
values
(),
getContext
());
binding
.
msgList
.
setAdapter
(
privaetMsgAdapter
);
Contact
contact
=
(
Contact
)
getArguments
().
getSerializable
(
"contact"
);
loginViewModel
.
privateMsgList
.
observe
(
getViewLifecycleOwner
(),
new
Observer
<
MessageContent
>()
{
@Override
public
void
onChanged
(
MessageContent
messageContent
)
{
if
(
messageContent
.
getSenderUserId
().
equals
(
contact
.
getContactUserId
())
||
messageContent
.
getReciveUserId
().
equals
(
contact
.
getContactUserId
()))
{
map
.
put
(
messageContent
.
getMsgId
(),
messageContent
);
privaetMsgAdapter
.
refreshData
();
binding
.
msgList
.
setSelection
(
privaetMsgAdapter
.
getCount
()
-
1
);
}
}
});
binding
.
sendBtn
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
String
content
=
binding
.
sendEdit
.
getText
().
toString
();
CCIMClient
.
getInstance
().
sendTextMessage
(
content
,
contact
.
getContactUserId
(),
contact
.
getContactUserName
(),
new
ResultEventCallback
<
MessageContent
>()
{
@Override
public
void
onSuccess
(
MessageContent
messageContent
)
{
binding
.
sendEdit
.
setText
(
""
);
loginViewModel
.
addPrivateMsg
(
messageContent
);
ToastUtil
.
show
(
getContext
(),
"send Success"
);
}
@Override
public
void
onFailed
(
int
errorCode
)
{
ToastUtil
.
show
(
getContext
(),
"send onFailed :"
+
errorCode
);
}
});
}
});
binding
.
sendVoice
.
setOnTouchListener
(
new
View
.
OnTouchListener
()
{
@Override
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
if
(
event
.
getAction
()
==
MotionEvent
.
ACTION_UP
)
{
if
(
isSuccess
)
CCIMClient
.
getInstance
().
stopAndSendAudioMessage
(
contact
.
getContactUserId
(),
contact
.
getContactUserName
(),
new
ResultEventCallback
<
MessageContent
>()
{
@Override
public
void
onSuccess
(
MessageContent
message
)
{
binding
.
sendEdit
.
setText
(
""
);
loginViewModel
.
addPrivateMsg
(
message
);
ToastUtil
.
show
(
getContext
(),
"send Success"
);
}
@Override
public
void
onFailed
(
int
errorCode
)
{
ToastUtil
.
show
(
getContext
(),
"send onFailed :"
+
errorCode
);
}
});
}
if
(
event
.
getAction
()
==
MotionEvent
.
ACTION_DOWN
)
{
CCIMClient
.
getInstance
().
startRecordAudioMessage
(
getActivity
(),
new
ResultEventCallback
<
Void
>()
{
@Override
public
void
onSuccess
(
Void
unused
)
{
isSuccess
=
true
;
}
@Override
public
void
onFailed
(
int
errorCode
)
{
isSuccess
=
false
;
ToastUtil
.
show
(
getContext
(),
errorCode
+
""
);
}
});
}
return
false
;
}
});
CCIMClient
.
getInstance
().
getPrivateMessage
(
contact
.
getContactUserId
(),
new
ResultEventCallback
<
List
<
MessageContent
>>()
{
@Override
public
void
onSuccess
(
List
<
MessageContent
>
messageContents
)
{
for
(
MessageContent
messageContent
:
messageContents
)
{
map
.
put
(
messageContent
.
getMsgId
(),
messageContent
);
}
privaetMsgAdapter
.
refreshData
();
binding
.
msgList
.
setSelection
(
privaetMsgAdapter
.
getCount
()
-
1
);
}
@Override
public
void
onFailed
(
int
errorCode
)
{
}
});
return
binding
.
getRoot
();
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/im/ui/dashboard/ContactsFragment.java
View file @
57f5faf0
...
@@ -2,6 +2,7 @@ package com.ccwangluo.im.ui.dashboard;
...
@@ -2,6 +2,7 @@ package com.ccwangluo.im.ui.dashboard;
import
android.app.AlertDialog
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
...
@@ -23,7 +24,6 @@ import com.ccwangluo.ccim.modle.ContactGroup;
...
@@ -23,7 +24,6 @@ import com.ccwangluo.ccim.modle.ContactGroup;
import
com.ccwangluo.ccim.modle.Dialog
;
import
com.ccwangluo.ccim.modle.Dialog
;
import
com.ccwangluo.ccim.modle.SearchRes
;
import
com.ccwangluo.ccim.modle.SearchRes
;
import
com.ccwangluo.ccim.modle.User
;
import
com.ccwangluo.ccim.modle.User
;
import
com.ccwangluo.im.R
;
import
com.ccwangluo.im.adapter.ContactExpandableAdapter
;
import
com.ccwangluo.im.adapter.ContactExpandableAdapter
;
import
com.ccwangluo.im.data.LoginViewModel
;
import
com.ccwangluo.im.data.LoginViewModel
;
import
com.ccwangluo.im.databinding.FragmentDashboardBinding
;
import
com.ccwangluo.im.databinding.FragmentDashboardBinding
;
...
@@ -56,9 +56,12 @@ public class ContactsFragment extends Fragment {
...
@@ -56,9 +56,12 @@ public class ContactsFragment extends Fragment {
contactExpandableAdapter
=
new
ContactExpandableAdapter
(
getContext
(),
contactGroupList
,
contactList
,
loginViewModel
,
new
OnContactClickLisener
()
{
contactExpandableAdapter
=
new
ContactExpandableAdapter
(
getContext
(),
contactGroupList
,
contactList
,
loginViewModel
,
new
OnContactClickLisener
()
{
@Override
@Override
public
void
onClick
(
Contact
contact
)
{
public
void
onClick
(
Contact
contact
)
{
Bundle
bundle
=
new
Bundle
();
// Bundle bundle = new Bundle();
bundle
.
putSerializable
(
"contact"
,
contact
);
// bundle.putSerializable("contact", contact);
navController
.
navigate
(
R
.
id
.
navigation_connect
,
bundle
);
// navController.navigate(R.id.navigation_connect, bundle);
Intent
intent
=
new
Intent
(
getContext
(),
ConnectActivity
.
class
);
intent
.
putExtra
(
"contact"
,
contact
);
startActivity
(
intent
);
}
}
});
});
...
...
app/src/main/java/com/ccwangluo/im/ui/notifications/ConnectChannelActivity.java
View file @
57f5faf0
...
@@ -16,6 +16,10 @@ import com.ccwangluo.im.data.LoginViewModel;
...
@@ -16,6 +16,10 @@ import com.ccwangluo.im.data.LoginViewModel;
import
com.ccwangluo.im.databinding.ActivityConnectChannelBinding
;
import
com.ccwangluo.im.databinding.ActivityConnectChannelBinding
;
import
com.ccwangluo.im.util.ToastUtil
;
import
com.ccwangluo.im.util.ToastUtil
;
import
org.greenrobot.eventbus.EventBus
;
import
org.greenrobot.eventbus.Subscribe
;
import
org.greenrobot.eventbus.ThreadMode
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -123,5 +127,19 @@ public class ConnectChannelActivity extends AppCompatActivity {
...
@@ -123,5 +127,19 @@ public class ConnectChannelActivity extends AppCompatActivity {
return
false
;
return
false
;
}
}
});
});
EventBus
.
getDefault
().
register
(
this
);
}
@Subscribe
(
threadMode
=
ThreadMode
.
MAIN
)
public
void
onGetMessage
(
MessageContent
message
)
{
loginViewModel
.
addChannelMsg
(
message
);
}
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
EventBus
.
getDefault
().
unregister
(
this
);
}
}
}
}
\ No newline at end of file
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
View file @
57f5faf0
...
@@ -39,7 +39,6 @@ import java.util.concurrent.Executors;
...
@@ -39,7 +39,6 @@ import java.util.concurrent.Executors;
import
java.util.logging.Logger
;
import
java.util.logging.Logger
;
import
ccim.protocol.Chat
;
import
ccim.protocol.Chat
;
import
ccim.protocol.Message
;
import
ccim.protocol.MessageSpec
;
import
ccim.protocol.MessageSpec
;
import
ccim.protocol.Push
;
import
ccim.protocol.Push
;
...
@@ -360,8 +359,8 @@ public class CCIMClient {
...
@@ -360,8 +359,8 @@ public class CCIMClient {
/**
/**
* 同步离线消息
* 同步离线消息
*/
*/
private
void
getOfflineMessage
(
Long
lastPullMsgId
,
ResultEventCallback
<
List
<
Message
.
PullOfflineMessageResponse
.
OfflineMessage
>>
resultEventCallback
)
{
private
void
getOfflineMessage
(
Long
contactId
,
ResultEventCallback
<
List
<
MessageContent
>>
resultEventCallback
)
{
messageManager
.
getOfflineMessage
(
lastPullMsgId
,
resultEventCallback
);
messageManager
.
getOfflineMessage
(
contactId
,
resultEventCallback
);
}
}
/**
/**
...
...
ccim/src/main/java/com/ccwangluo/ccim/database/MessageDao.java
View file @
57f5faf0
...
@@ -22,4 +22,7 @@ public interface MessageDao {
...
@@ -22,4 +22,7 @@ public interface MessageDao {
@Query
(
"SELECT * FROM messagecontent where msgId = :msgId"
)
@Query
(
"SELECT * FROM messagecontent where msgId = :msgId"
)
MessageContent
getMsgById
(
Long
msgId
);
MessageContent
getMsgById
(
Long
msgId
);
@Query
(
"SELECT * FROM messagecontent where senderUserId = :userId or reciveUserId = :userId"
)
MessageContent
getLastMsgById
(
Long
userId
);
}
}
ccim/src/main/java/com/ccwangluo/ccim/manage/MessageManager.java
View file @
57f5faf0
...
@@ -9,10 +9,12 @@ import com.ccwangluo.ccim.database.AppDatabase;
...
@@ -9,10 +9,12 @@ import com.ccwangluo.ccim.database.AppDatabase;
import
com.ccwangluo.ccim.listener.ResultEventCallback
;
import
com.ccwangluo.ccim.listener.ResultEventCallback
;
import
com.ccwangluo.ccim.modle.MessageContent
;
import
com.ccwangluo.ccim.modle.MessageContent
;
import
com.ccwangluo.ccim.modle.PullMessageRes
;
import
com.ccwangluo.ccim.modle.PullMessageRes
;
import
com.ccwangluo.ccim.modle.PullOffLineMessageRes
;
import
com.ccwangluo.ccim.util.ErrorCode
;
import
com.ccwangluo.ccim.util.ErrorCode
;
import
com.ccwangluo.ccim.util.FileUtils
;
import
com.ccwangluo.ccim.util.FileUtils
;
import
com.ccwangluo.ccim.util.MediaHelper
;
import
com.ccwangluo.ccim.util.MediaHelper
;
import
com.google.gson.Gson
;
import
com.google.gson.Gson
;
import
com.google.protobuf.InvalidProtocolBufferException
;
import
com.google.protobuf.util.JsonFormat
;
import
com.google.protobuf.util.JsonFormat
;
import
java.io.File
;
import
java.io.File
;
...
@@ -51,7 +53,13 @@ public class MessageManager {
...
@@ -51,7 +53,13 @@ public class MessageManager {
/**
/**
* 同步离线消息
* 同步离线消息
*/
*/
public
void
getOfflineMessage
(
Long
lastPullMsgId
,
ResultEventCallback
<
List
<
Message
.
PullOfflineMessageResponse
.
OfflineMessage
>>
resultEventCallback
)
{
public
void
getOfflineMessage
(
Long
contactId
,
ResultEventCallback
<
List
<
MessageContent
>>
resultEventCallback
)
{
executor
.
execute
(()
->
{
long
lastPullMsgId
=
0
;
MessageContent
lastMsgById
=
db
.
messageDao
().
getLastMsgById
(
contactId
);
if
(
lastMsgById
!=
null
)
{
lastPullMsgId
=
lastMsgById
.
getMsgId
();
}
Message
.
PullOfflineMessageRequest
offlineMessageRequest
=
Message
.
PullOfflineMessageRequest
.
newBuilder
()
Message
.
PullOfflineMessageRequest
offlineMessageRequest
=
Message
.
PullOfflineMessageRequest
.
newBuilder
()
.
setLastPulledMsgId
(
lastPullMsgId
)
.
setLastPulledMsgId
(
lastPullMsgId
)
.
build
();
.
build
();
...
@@ -63,8 +71,21 @@ public class MessageManager {
...
@@ -63,8 +71,21 @@ public class MessageManager {
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
public
void
onSuccess
(
Chat
.
ChatResponseMessage
chatResponseMessage
)
{
if
(
chatResponseMessage
.
hasPullOfflineMsgRes
())
{
if
(
chatResponseMessage
.
hasPullOfflineMsgRes
())
{
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
List
<
Message
.
PullOfflineMessageResponse
.
OfflineMessage
>
offlineMsgsList
=
chatResponseMessage
.
getPullOfflineMsgRes
().
getOfflineMsgsList
();
Gson
gson
=
new
Gson
();
resultEventCallback
.
onSuccess
(
offlineMsgsList
);
try
{
String
print
=
JsonFormat
.
printer
().
print
(
chatResponseMessage
.
getPullOfflineMsgRes
());
PullOffLineMessageRes
pullOffLineMessageRes
=
gson
.
fromJson
(
print
,
PullOffLineMessageRes
.
class
);
List
<
MessageContent
>
message
=
pullOffLineMessageRes
.
getOfflineMessages
();
for
(
MessageContent
messageContent
:
message
)
{
if
(!
messageContent
.
getSenderUserId
().
equals
(
userId
))
{
messageContent
.
setReciveUserId
(
userId
);
}
}
resultEventCallback
.
onSuccess
(
message
);
pushNewMessageList
(
message
);
}
catch
(
InvalidProtocolBufferException
e
)
{
e
.
printStackTrace
();
}
}
}
}
}
...
@@ -73,6 +94,8 @@ public class MessageManager {
...
@@ -73,6 +94,8 @@ public class MessageManager {
resultEventCallback
.
onFailed
(
errorCode
);
resultEventCallback
.
onFailed
(
errorCode
);
}
}
});
});
});
}
}
...
...
ccim/src/main/java/com/ccwangluo/ccim/modle/MessageContent.java
View file @
57f5faf0
...
@@ -15,6 +15,15 @@ public class MessageContent {
...
@@ -15,6 +15,15 @@ public class MessageContent {
private
Long
channelId
;
private
Long
channelId
;
private
MessageType
msgType
=
MessageType
.
MESSAGE_TYPE_TEXT
;
private
MessageType
msgType
=
MessageType
.
MESSAGE_TYPE_TEXT
;
private
MessageSourceType
msgSrcType
=
MessageSourceType
.
MESSAGE_SOURCE_TYPE_PRIVATE
;
private
MessageSourceType
msgSrcType
=
MessageSourceType
.
MESSAGE_SOURCE_TYPE_PRIVATE
;
private
User
senderUser
;
public
User
getSenderUser
()
{
return
senderUser
;
}
public
void
setSenderUser
(
User
senderUser
)
{
this
.
senderUser
=
senderUser
;
}
public
MessageType
getMsgType
()
{
public
MessageType
getMsgType
()
{
return
msgType
;
return
msgType
;
...
...
ccim/src/main/java/com/ccwangluo/ccim/modle/PullOffLineMessageRes.java
0 → 100644
View file @
57f5faf0
package
com.ccwangluo.ccim.modle
;
import
java.util.List
;
public
class
PullOffLineMessageRes
{
private
List
<
MessageContent
>
offlineMessages
;
public
List
<
MessageContent
>
getOfflineMessages
()
{
return
offlineMessages
;
}
public
void
setOfflineMessages
(
List
<
MessageContent
>
offlineMessages
)
{
this
.
offlineMessages
=
offlineMessages
;
}
}
ccim/src/main/java/com/ccwangluo/ccim/modle/User.java
View file @
57f5faf0
...
@@ -9,6 +9,15 @@ public class User {
...
@@ -9,6 +9,15 @@ public class User {
private
Long
userId
;
private
Long
userId
;
private
String
username
;
private
String
username
;
private
String
extData
;
public
String
getExtData
()
{
return
extData
;
}
public
void
setExtData
(
String
extData
)
{
this
.
extData
=
extData
;
}
public
Long
getUserId
()
{
public
Long
getUserId
()
{
return
userId
;
return
userId
;
...
...
ccim/src/main/proto/channel.proto
View file @
57f5faf0
...
@@ -7,6 +7,8 @@ message CreateChannelRequest {
...
@@ -7,6 +7,8 @@ message CreateChannelRequest {
string
tag
=
2
;
string
tag
=
2
;
bool
open
=
3
;
bool
open
=
3
;
repeated
int64
user_ids
=
4
;
repeated
int64
user_ids
=
4
;
int32
limit
=
5
;
string
game_server
=
6
;
}
}
message
CreateChannelResponse
{
message
CreateChannelResponse
{
...
@@ -37,7 +39,7 @@ message ExitChannelResponse {
...
@@ -37,7 +39,7 @@ message ExitChannelResponse {
message
ChannelBlockUserRequest
{
message
ChannelBlockUserRequest
{
int64
channel_id
=
1
;
int64
channel_id
=
1
;
int64
blocked_user_id
=
2
;
int64
blocked_user_id
=
2
;
int64
expired_at_millis
=
3
;
// 频道拉黑到期时间,毫秒
int64
expired_at_millis
=
3
;
}
}
message
ChannelBlockUserResponse
{
message
ChannelBlockUserResponse
{
...
...
ccim/src/main/proto/chat.proto
View file @
57f5faf0
...
@@ -153,6 +153,7 @@ message SearchResponse {
...
@@ -153,6 +153,7 @@ message SearchResponse {
message
User
{
message
User
{
int64
user_id
=
1
;
int64
user_id
=
1
;
string
username
=
2
;
string
username
=
2
;
string
ext_data
=
3
;
}
}
repeated
User
users
=
1
;
repeated
User
users
=
1
;
int32
total
=
2
;
int32
total
=
2
;
...
...
ccim/src/main/proto/common.proto
View file @
57f5faf0
ccim/src/main/proto/contact.proto
View file @
57f5faf0
...
@@ -38,6 +38,7 @@ message Dialog {
...
@@ -38,6 +38,7 @@ message Dialog {
message
ContactReqData
{
message
ContactReqData
{
int64
user_id
=
1
;
int64
user_id
=
1
;
string
username
=
2
;
string
username
=
2
;
string
ext_data
=
3
;
}
}
message
AddContactResponse
{
message
AddContactResponse
{
...
...
ccim/src/main/proto/message.proto
View file @
57f5faf0
...
@@ -35,17 +35,13 @@ message SendChannelMessageResponse {
...
@@ -35,17 +35,13 @@ message SendChannelMessageResponse {
}
}
message
PullOfflineMessageRequest
{
message
PullOfflineMessageRequest
{
int64
last_pulled_msg_id
=
1
;
int64
last_pulled_msg_id
=
1
;
// 本地存储最后一条私聊消息id,调用此接口时带上,若没有填0
int32
limit
=
2
;
// 条数
}
}
message
PullOfflineMessageResponse
{
message
PullOfflineMessageResponse
{
message
OfflineMessage
{
// repeated OfflineMessage offline_msgs = 1; reserved for compatibility
int64
msg_src_id
=
1
;
repeated
ChatMessage
offline_messages
=
2
;
MessageSourceType
msg_src_type
=
2
;
ChatMessage
message
=
3
;
int64
send_date
=
4
;
}
repeated
OfflineMessage
offline_msgs
=
1
;
}
}
message
PullPrivateMessageRequest
{
message
PullPrivateMessageRequest
{
...
...
ccim/src/main/proto/message_spec.proto
View file @
57f5faf0
...
@@ -13,6 +13,12 @@ enum MessageSourceType {
...
@@ -13,6 +13,12 @@ enum MessageSourceType {
}
}
message
ChatMessage
{
message
ChatMessage
{
message
UserInfo
{
int64
user_id
=
1
;
string
username
=
2
;
string
ext_data
=
3
;
}
int64
msg_id
=
1
;
int64
msg_id
=
1
;
int64
sender_user_id
=
2
;
int64
sender_user_id
=
2
;
int64
msg_src_id
=
3
;
int64
msg_src_id
=
3
;
...
@@ -21,4 +27,6 @@ message ChatMessage {
...
@@ -21,4 +27,6 @@ message ChatMessage {
string
content
=
6
;
string
content
=
6
;
int64
created_date
=
7
;
int64
created_date
=
7
;
int64
modified_date
=
8
;
int64
modified_date
=
8
;
UserInfo
sender_user
=
9
;
}
}
\ No newline at end of file
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