Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
RvApp
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lify
RvApp
Commits
fc9d4725
Commit
fc9d4725
authored
Sep 21, 2019
by
jianglx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改Im的界面
parent
4f8cea18
Changes
28
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
519 additions
and
327 deletions
+519
-327
HomeFragment.java
...java/com/rv/home/rv/module/ui/main/home/HomeFragment.java
+1
-1
TravelDetailsActivity.java
...main/java/com/rv/tourism/other/TravelDetailsActivity.java
+1
-1
AndroidManifest.xml
plugin_im/src/main/AndroidManifest.xml
+2
-2
ChatActivity.java
plugin_im/src/main/java/com/rv/im/ChatActivity.java
+65
-70
ConversationListActivity.java
..._im/src/main/java/com/rv/im/ConversationListActivity.java
+3
-2
CustomerListActivity.java
plugin_im/src/main/java/com/rv/im/CustomerListActivity.java
+77
-6
ChatContentAdapter.java
...m/src/main/java/com/rv/im/adapter/ChatContentAdapter.java
+68
-103
CustomerListAdapter.java
.../src/main/java/com/rv/im/adapter/CustomerListAdapter.java
+21
-3
ChatMessageServiceImp.java
...main/java/com/rv/im/db/service/ChatMessageServiceImp.java
+2
-4
IChatMessageService.java
...c/main/java/com/rv/im/db/service/IChatMessageService.java
+1
-1
Customer.java
plugin_im/src/main/java/com/rv/im/db/table/Customer.java
+19
-0
ChatPresenterImp.java
...c/main/java/com/rv/im/mvp/presenter/ChatPresenterImp.java
+1
-1
DateUtils.java
plugin_im/src/main/java/com/rv/im/util/DateUtils.java
+122
-12
emoje.png
plugin_im/src/main/res/drawable-xhdpi/emoje.png
+0
-0
icon_keyword.png
plugin_im/src/main/res/drawable-xhdpi/icon_keyword.png
+0
-0
icon_photo.png
plugin_im/src/main/res/drawable-xhdpi/icon_photo.png
+0
-0
icon_voice.png
plugin_im/src/main/res/drawable-xhdpi/icon_voice.png
+0
-0
im_voice_button_normal2.xml
plugin_im/src/main/res/drawable/im_voice_button_normal2.xml
+4
-7
im_voice_button_pressed2.xml
plugin_im/src/main/res/drawable/im_voice_button_pressed2.xml
+2
-5
activity_chat.xml
plugin_im/src/main/res/layout/activity_chat.xml
+28
-28
camera_view.xml
plugin_im/src/main/res/layout/camera_view.xml
+0
-60
chat_from_item_text.xml
plugin_im/src/main/res/layout/chat_from_item_text.xml
+5
-3
chat_to_item_text.xml
plugin_im/src/main/res/layout/chat_to_item_text.xml
+6
-3
dialog_select_media.xml
plugin_im/src/main/res/layout/dialog_select_media.xml
+64
-0
item_customer.xml
plugin_im/src/main/res/layout/item_customer.xml
+23
-11
EasyCameraActivity.java
...n/java/com/xxfc/imcamera/activity/EasyCameraActivity.java
+2
-2
JCameraView.java
...ain/java/com/xxfc/imcamera/cameralibrary/JCameraView.java
+1
-1
activity_easy_camera_lf.xml
..._imcamera/src/main/res/layout/activity_easy_camera_lf.xml
+1
-1
No files found.
module_home/src/main/java/com/rv/home/rv/module/ui/main/home/HomeFragment.java
View file @
fc9d4725
...
...
@@ -873,7 +873,7 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
scrollview
.
fullScroll
(
View
.
FOCUS_UP
);
}
else
if
(
id
==
R
.
id
.
iv_home_travel_server_image
)
{
if
(
isLogin
())
{
ComponentName
name
=
new
ComponentName
(
getActivity
(),
"com.rv.im.C
onversation
ListActivity"
);
ComponentName
name
=
new
ComponentName
(
getActivity
(),
"com.rv.im.C
ustomer
ListActivity"
);
Intent
intent
=
new
Intent
();
intent
.
putExtra
(
"login_user_id"
,
Cookie
.
getStringValue
(
getContext
(),
SPConstance
.
USER_JSON_IMUSERID
));
intent
.
setComponent
(
name
);
...
...
module_tourism/src/main/java/com/rv/tourism/other/TravelDetailsActivity.java
View file @
fc9d4725
...
...
@@ -140,7 +140,7 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
showTitle
(
false
);
tvTitleCenter
.
setText
(
"旅游详情"
);
webUrl
=
TourismApi
.
TRAVEL_DETAILS
+
"?id="
+
id
+
"
?
v=1"
;
webUrl
=
TourismApi
.
TRAVEL_DETAILS
+
"?id="
+
id
+
"
&
v=1"
;
initWeb
();
initRxbus
();
if
(!
TextUtils
.
isEmpty
(
name
)
&&
!
TextUtils
.
isEmpty
(
url
))
{
...
...
plugin_im/src/main/AndroidManifest.xml
View file @
fc9d4725
...
...
@@ -7,7 +7,7 @@
<uses-permission
android:name=
"android.permission.RECORD_AUDIO"
/>
<!-- 调用相机权限 -->
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<uses-permission
android:name=
"android.permission.CALL_PHONE"
/>
<uses-permission
android:name=
"android.permission.CALL_PHONE"
/>
<application>
<activity
android:name=
"com.rv.im.ChatActivity"
/>
...
...
@@ -30,7 +30,7 @@
android:name=
"com.rv.im.ImService"
android:enabled=
"true"
android:exported=
"true"
/>
<!-- android:process=":im_romote"
-->
<!--android:process=":im_romote" />
-->
<service
android:name=
"com.rv.im.call.RecordService"
/>
...
...
plugin_im/src/main/java/com/rv/im/ChatActivity.java
View file @
fc9d4725
This diff is collapsed.
Click to expand it.
plugin_im/src/main/java/com/rv/im/ConversationListActivity.java
View file @
fc9d4725
...
...
@@ -52,6 +52,7 @@ public class ConversationListActivity extends BaseStatusActivity<CommonPresenter
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
ListenerManager
.
getInstance
().
addChatMessageListener
(
this
);
ListenerManager
.
getInstance
().
addAuthStateChangeListener
(
this
);
switch
(
XmppConnectionManager
.
mXMPPCurrentState
)
{
case
0
:
case
1
:
...
...
@@ -89,7 +90,6 @@ public class ConversationListActivity extends BaseStatusActivity<CommonPresenter
}
Downloader
.
getInstance
().
init
(
file
.
getAbsolutePath
());
ListenerManager
.
getInstance
().
addAuthStateChangeListener
(
this
);
}
...
...
@@ -105,7 +105,7 @@ public class ConversationListActivity extends BaseStatusActivity<CommonPresenter
Iterator
<
ChatConversation
>
iterator
=
lists
.
iterator
();
while
(
iterator
.
hasNext
())
{
ChatConversation
conversation
=
iterator
.
next
();
ChatMessage
message
=
ChatMessageServiceImp
.
getInstance
(
getApplicationContext
()).
getLastMsg
(
conversation
);
ChatMessage
message
=
ChatMessageServiceImp
.
getInstance
(
getApplicationContext
()).
getLastMsg
(
conversation
.
getUserId
()
);
int
unRead
=
ChatMessageServiceImp
.
getInstance
(
getApplicationContext
()).
getUnReadMsg
(
conversation
.
getUserId
());
conversation
.
setUnReadMessage
(
unRead
);
if
(
message
!=
null
)
{
...
...
@@ -137,6 +137,7 @@ public class ConversationListActivity extends BaseStatusActivity<CommonPresenter
public
void
onDestroy
()
{
super
.
onDestroy
();
ListenerManager
.
getInstance
().
removeAuthStateChangeListener
(
this
);
ListenerManager
.
getInstance
().
removeChatMessageListener
(
this
);
}
@Override
...
...
plugin_im/src/main/java/com/rv/im/CustomerListActivity.java
View file @
fc9d4725
package
com
.
rv
.
im
;
import
android.app.ActivityManager
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.support.annotation.Nullable
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.text.TextUtils
;
import
android.widget.LinearLayout
;
import
android.widget.Toast
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
...
...
@@ -14,35 +20,64 @@ import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout;
import
com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView
;
import
com.rv.im.adapter.CustomerListAdapter
;
import
com.rv.im.bean.CustomersBean
;
import
com.rv.im.db.service.ChatConversationServiceImp
;
import
com.rv.im.db.service.ChatMessageServiceImp
;
import
com.rv.im.db.service.CustomerServiceImp
;
import
com.rv.im.db.service.ICustomerService
;
import
com.rv.im.db.table.ChatConversation
;
import
com.rv.im.db.table.ChatMessage
;
import
com.rv.im.db.table.Customer
;
import
com.rv.im.util.ServiceUtils
;
import
com.rv.im.xmpp.ListenerManager
;
import
com.rv.im.xmpp.listener.AuthStateListener
;
import
com.rv.im.xmpp.listener.ChatMessageListener
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Iterator
;
import
java.util.List
;
public
class
CustomerListActivity
extends
BaseStatusActivity
<
CommonPresenter
>
implements
SimpleRefreshLayout
.
OnSimpleRefreshListener
{
public
class
CustomerListActivity
extends
BaseStatusActivity
<
CommonPresenter
>
implements
SimpleRefreshLayout
.
OnSimpleRefreshListener
,
ChatMessageListener
{
private
SimpleRefreshLayout
refreshLayout
;
private
RecyclerView
recyclerView
;
private
List
<
Customer
>
customers
=
new
ArrayList
<>();
private
CustomerListAdapter
adapter
=
null
;
private
int
testTime
=
0
;
@Override
protected
int
setLayout
()
{
return
R
.
layout
.
activity_customer_list
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
ListenerManager
.
getInstance
().
addChatMessageListener
(
this
);
titleView
.
setTitle
(
"客服列表"
);
titleView
.
setImageResource
(
R
.
id
.
iv_title_right
,
R
.
drawable
.
ic_app_add
);
titleView
.
setChildClickListener
(
R
.
id
.
iv_title_right
,
v
->
{
if
(!
BuildConfig
.
DEBUG
)
return
;
testTime
+=
1
;
if
(
testTime
==
5
)
{
testTime
=
0
;
if
(
ServiceUtils
.
isServiceRunning
(
CustomerListActivity
.
this
))
{
Toast
.
makeText
(
getApplicationContext
(),
"im服务正在运行"
,
Toast
.
LENGTH_SHORT
).
show
();
}
else
{
Toast
.
makeText
(
getApplicationContext
(),
"im服务挂掉"
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
});
refreshLayout
=
findViewById
(
R
.
id
.
refresh
);
recyclerView
=
findViewById
(
R
.
id
.
recyclerView
);
recyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
this
,
LinearLayout
.
VERTICAL
,
false
));
adapter
=
new
CustomerListAdapter
(
customers
);
adapter
=
new
CustomerListAdapter
(
getApplicationContext
(),
customers
);
adapter
.
setOnItemClickListener
((
adapter
,
view
,
position
)
->
{
Customer
customer
=
customers
.
get
(
position
);
startActivity
(
ChatActivity
.
getIntent
(
getApplicationContext
(),
customer
.
getImUserId
(),
customer
.
getName
())
);
startActivity
ForResult
(
ChatActivity
.
getIntent
(
getApplicationContext
(),
customer
.
getImUserId
(),
customer
.
getName
()),
1
);
});
refreshLayout
.
setHeaderView
(
new
SimpleRefreshView
(
this
));
refreshLayout
.
setOnSimpleRefreshListener
(
this
);
...
...
@@ -60,11 +95,24 @@ public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> im
*/
private
void
getCustomerList
()
{
List
<
Customer
>
lists
=
getCustomService
().
getCustomerLists
();
if
(
lists
==
null
||
lists
.
size
()
==
0
)
{
mPresenter
.
getData
(
0
,
ImUrlConfig
.
HTTP_CUSTOMER_LIST_URL
,
CustomersBean
.
class
,
true
);
}
else
{
if
(
lists
!=
null
&&
lists
.
size
()
>
0
)
{
for
(
Customer
customer
:
lists
)
{
ChatMessage
message
=
ChatMessageServiceImp
.
getInstance
(
getApplicationContext
()).
getLastMsg
(
customer
.
getImUserId
());
if
(
message
!=
null
)
customer
.
setLastMessageInfo
(
message
);
}
Collections
.
sort
(
lists
,
(
o1
,
o2
)
->
{
if
(
o1
.
getLastMsgTimes
()
>
o2
.
getLastMsgTimes
())
{
return
-
1
;
}
else
if
(
o1
.
getLastMsgTimes
()
==
o2
.
getLastMsgTimes
())
{
return
0
;
}
return
1
;
});
customers
.
clear
();
customers
.
addAll
(
lists
);
adapter
.
notifyDataSetChanged
();
}
else
{
mPresenter
.
getData
(
0
,
ImUrlConfig
.
HTTP_CUSTOMER_LIST_URL
,
CustomersBean
.
class
,
true
);
}
}
...
...
@@ -102,4 +150,27 @@ public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> im
return
iCustomerService
;
}
@Override
public
void
onMessageSendStateChange
(
int
messageState
,
String
msgId
)
{
}
@Override
public
void
onNewMessage
(
String
fromUserId
,
ChatMessage
message
,
boolean
isGroupMsg
)
{
getCustomerList
();
}
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
@Nullable
Intent
data
)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
if
(
requestCode
==
1
)
{
// 刷新UI
getCustomerList
();
}
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
ListenerManager
.
getInstance
().
removeChatMessageListener
(
this
);
}
}
plugin_im/src/main/java/com/rv/im/adapter/ChatContentAdapter.java
View file @
fc9d4725
This diff is collapsed.
Click to expand it.
plugin_im/src/main/java/com/rv/im/adapter/CustomerListAdapter.java
View file @
fc9d4725
package
com
.
rv
.
im
.
adapter
;
import
android.content.Context
;
import
android.support.annotation.Nullable
;
import
android.text.TextUtils
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.BaseViewHolder
;
import
com.rv.im.R
;
import
com.rv.im.db.table.Customer
;
import
com.rv.im.util.SmileyParser
;
import
java.util.List
;
public
class
CustomerListAdapter
extends
BaseQuickAdapter
<
Customer
,
BaseViewHolder
>
{
public
CustomerListAdapter
(
@Nullable
List
<
Customer
>
data
)
{
private
SmileyParser
parser
;
public
CustomerListAdapter
(
Context
context
,
@Nullable
List
<
Customer
>
data
)
{
super
(
R
.
layout
.
item_customer
,
data
);
this
.
parser
=
SmileyParser
.
getInstance
(
context
);
}
@Override
protected
void
convert
(
BaseViewHolder
helper
,
Customer
item
)
{
helper
.
setText
(
R
.
id
.
tv_name
,
item
.
getName
());
if
(!
TextUtils
.
isEmpty
(
item
.
getName
()))
helper
.
setText
(
R
.
id
.
tv_name
,
item
.
getName
());
helper
.
setText
(
R
.
id
.
tv_state
,
"在线"
);
helper
.
setText
(
R
.
id
.
tv_last_msg
,
item
.
getLastMsg
());
if
(!
TextUtils
.
isEmpty
(
item
.
getLastMsg
()))
// helper.setText(R.id.tv_last_msg, item.getLastMsg());
helper
.
setText
(
R
.
id
.
tv_last_msg
,
parser
.
addSmileySpans
(
deleteHtml
(
item
.
getLastMsg
()),
true
));
}
private
static
String
deleteHtml
(
String
msg
)
{
if
(
msg
==
null
)
{
return
""
;
}
msg
=
msg
.
replaceAll
(
"\n"
,
"\r\n"
);
return
msg
;
}
}
plugin_im/src/main/java/com/rv/im/db/service/ChatMessageServiceImp.java
View file @
fc9d4725
...
...
@@ -71,10 +71,8 @@ public class ChatMessageServiceImp implements IChatMessageService {
}
@Override
public
ChatMessage
getLastMsg
(
ChatConversation
conversation
)
{
if
(
conversation
!=
null
)
return
dao
.
getLastMsgByUserId
(
conversation
.
getUserId
());
return
null
;
public
ChatMessage
getLastMsg
(
String
userId
)
{
return
dao
.
getLastMsgByUserId
(
userId
);
}
@Override
...
...
plugin_im/src/main/java/com/rv/im/db/service/IChatMessageService.java
View file @
fc9d4725
...
...
@@ -21,7 +21,7 @@ public interface IChatMessageService {
void
setUpSuccess
(
String
packId
,
String
url
);
ChatMessage
getLastMsg
(
ChatConversation
conversation
)
;
ChatMessage
getLastMsg
(
String
userId
)
;
int
getUnReadMsg
(
String
targetUserId
);
...
...
plugin_im/src/main/java/com/rv/im/db/table/Customer.java
View file @
fc9d4725
...
...
@@ -2,6 +2,7 @@ package com.rv.im.db.table;
import
com.j256.ormlite.field.DatabaseField
;
import
com.j256.ormlite.table.DatabaseTable
;
import
com.rv.im.enums.MessageTypeEnum
;
@DatabaseTable
(
tableName
=
"tb_customer"
)
public
class
Customer
{
...
...
@@ -85,4 +86,22 @@ public class Customer {
public
void
setLastMsgTimes
(
long
lastMsgTimes
)
{
this
.
lastMsgTimes
=
lastMsgTimes
;
}
public
void
setLastMessageInfo
(
ChatMessage
lastMessageInfo
)
{
if
(
lastMessageInfo
.
getMessageType
()
==
MessageTypeEnum
.
TEXT
.
getType
())
{
setLastMsg
(
lastMessageInfo
.
getContent
());
}
else
if
(
lastMessageInfo
.
getMessageType
()
==
MessageTypeEnum
.
PIC
.
getType
())
{
setLastMsg
(
"[图片]"
);
}
else
if
(
lastMessageInfo
.
getMessageType
()
==
MessageTypeEnum
.
FILE
.
getType
())
{
setLastMsg
(
"[文件]"
);
}
else
if
(
lastMessageInfo
.
getMessageType
()
==
MessageTypeEnum
.
VOICE
.
getType
())
{
setLastMsg
(
"[语音]"
);
}
else
if
(
lastMessageInfo
.
getMessageType
()
==
MessageTypeEnum
.
VOLTE_CALL
.
getType
())
{
setLastMsg
(
"[语音通话]"
);
}
else
if
(
lastMessageInfo
.
getMessageType
()
==
MessageTypeEnum
.
VIDEO_CALL
.
getType
())
{
setLastMsg
(
"[视频]"
);
}
setLastMsgTimes
(
lastMessageInfo
.
getTimeSend
());
}
}
plugin_im/src/main/java/com/rv/im/mvp/presenter/ChatPresenterImp.java
View file @
fc9d4725
...
...
@@ -116,7 +116,7 @@ public class ChatPresenterImp implements IChatPresenter {
Uri
uri
=
null
;
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
//第二个参数为 包名.fileprovider
uri
=
FileProvider
.
getUriForFile
(
weakReference
.
get
(),
weakReference
.
get
().
getPackageName
()
+
".fileprovider"
,
cameraSavePath
);
uri
=
FileProvider
.
getUriForFile
(
weakReference
.
get
(),
weakReference
.
get
().
getPackageName
()
+
".fileprovider"
,
cameraSavePath
);
intent
.
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
);
}
else
{
uri
=
Uri
.
fromFile
(
cameraSavePath
);
...
...
plugin_im/src/main/java/com/rv/im/util/DateUtils.java
View file @
fc9d4725
...
...
@@ -168,6 +168,11 @@ public class DateUtils {
return
sdf
.
format
(
new
Date
(
time
));
}
public
static
String
timestampToString6
(
long
time
)
{
return
sdf6
.
format
(
new
Date
(
time
));
}
/**
* 将时间戳转换成yyyy-MM-dd HH:mm字符串
*
...
...
@@ -228,9 +233,9 @@ public class DateUtils {
* @return 失败返回-1 ,所以尽量是datetime1大于datetime2
*/
public
static
long
compareDateSecond2
(
String
datetime1
,
String
datetime2
)
{
String
date1
=
formatDate7
(
datetime1
);
String
date2
=
formatDate7
(
datetime2
);
return
compareDateSecond
(
date1
,
date2
);
String
date1
=
formatDate7
(
datetime1
);
String
date2
=
formatDate7
(
datetime2
);
return
compareDateSecond
(
date1
,
date2
);
}
/**
...
...
@@ -417,8 +422,9 @@ public class DateUtils {
/**
* yyyy-MM 转化成 yyyy年MM月
*
* @param dateStr yyyy-MM
* @return
yyyy年MM月
* @return yyyy年MM月
*/
public
static
String
formatDate8To9
(
String
dateStr
)
{
String
day
=
""
;
...
...
@@ -562,7 +568,7 @@ public class DateUtils {
String
day
=
""
;
try
{
long
time
=
sdf12
.
parse
(
dateStr
).
getTime
();
time
+=
30
*
60
*
1000
;
time
+=
30
*
60
*
1000
;
Date
da
=
new
Date
(
time
);
day
=
sdf12
.
format
(
da
);
}
catch
(
Exception
e
)
{
...
...
@@ -576,9 +582,9 @@ public class DateUtils {
* 把时分转成毫秒
*/
public
static
long
formatDate20
(
String
dateStr
)
{
long
time
=
0
;
long
time
=
0
;
try
{
time
=
sdf12
.
parse
(
dateStr
).
getTime
();
time
=
sdf12
.
parse
(
dateStr
).
getTime
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
...
...
@@ -758,7 +764,6 @@ public class DateUtils {
}
/**
* 获取网络时间
*
...
...
@@ -786,18 +791,123 @@ public class DateUtils {
/**
* 获取手机当前时间yyMMddHHmmss
*
* @return
*/
public
static
String
getPhoneCurTime
(){
String
timeStr
=
""
;
public
static
String
getPhoneCurTime
()
{
String
timeStr
=
""
;
try
{
Date
date
=
new
Date
(
System
.
currentTimeMillis
());
timeStr
=
sdf3
.
format
(
date
);
Date
date
=
new
Date
(
System
.
currentTimeMillis
());
timeStr
=
sdf3
.
format
(
date
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
timeStr
;
}
/**
* @param inputJudgeDate 要判断是否在当天24h内的时间
* @return boolean
* @Description 是否为当天24h内
* @author 刘鹏博
*/
public
static
boolean
isToday
(
Date
inputJudgeDate
)
{
boolean
flag
=
false
;
//获取当前系统时间
long
longDate
=
System
.
currentTimeMillis
();
Date
nowDate
=
new
Date
(
longDate
);
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
format
=
dateFormat
.
format
(
nowDate
);
String
subDate
=
format
.
substring
(
0
,
10
);
//定义每天的24h时间范围
String
beginTime
=
subDate
+
" 00:00:00"
;
String
endTime
=
subDate
+
" 23:59:59"
;
Date
paseBeginTime
=
null
;
Date
paseEndTime
=
null
;
try
{
paseBeginTime
=
dateFormat
.
parse
(
beginTime
);
paseEndTime
=
dateFormat
.
parse
(
endTime
);
}
catch
(
ParseException
e
)
{
}
if
(
inputJudgeDate
.
after
(
paseBeginTime
)
&&
inputJudgeDate
.
before
(
paseEndTime
))
{
flag
=
true
;
}
return
flag
;
}
/********
* 是否昨天
* @param timestamp
* @return
*/
public
static
boolean
isYesterday
(
long
timestamp
)
{
Calendar
c
=
Calendar
.
getInstance
();
clearCalendar
(
c
,
Calendar
.
HOUR_OF_DAY
,
Calendar
.
MINUTE
,
Calendar
.
SECOND
,
Calendar
.
MILLISECOND
);
c
.
add
(
Calendar
.
DAY_OF_MONTH
,
-
1
);
long
firstOfDay
=
c
.
getTimeInMillis
();
// 昨天最早时间
c
.
setTimeInMillis
(
timestamp
);
clearCalendar
(
c
,
Calendar
.
HOUR_OF_DAY
,
Calendar
.
MINUTE
,
Calendar
.
SECOND
,
Calendar
.
MILLISECOND
);
// 指定时间戳当天最早时间
return
firstOfDay
==
c
.
getTimeInMillis
();
}
private
static
void
clearCalendar
(
Calendar
c
,
int
...
fields
)
{
for
(
int
f
:
fields
)
{
c
.
set
(
f
,
0
);
}
}
/********
* 是否昨天
* @param date
* @return
*/
public
static
boolean
isThisWeek
(
Date
date
)
{
return
false
;
}
/********
* 是否昨天
* @param date
* @return
*/
public
static
boolean
isThisYear
(
Date
date
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
Calendar
c1
=
Calendar
.
getInstance
();
c1
.
setTime
(
new
Date
(
System
.
currentTimeMillis
()));
return
c
.
get
(
Calendar
.
YEAR
)
==
c1
.
get
(
Calendar
.
YEAR
);
}
public
static
String
getTodayTime
(
Date
date
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
int
hour
=
c
.
get
(
Calendar
.
HOUR_OF_DAY
);
int
minute
=
c
.
get
(
Calendar
.
MINUTE
);
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
hour
>=
12
?
"下午"
:
"上午"
);
builder
.
append
(
hour
>=
12
?
(
hour
-
12
)
:
hour
);
builder
.
append
(
":"
);
builder
.
append
((
minute
>
10
?
minute
:
"0"
+
minute
));
return
builder
.
toString
();
}
public
static
String
getYesterdayTime
(
Date
date
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
int
hour
=
c
.
get
(
Calendar
.
HOUR_OF_DAY
);
int
minute
=
c
.
get
(
Calendar
.
MINUTE
);
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
"昨天"
);
builder
.
append
(
hour
);
builder
.
append
(
":"
);
builder
.
append
((
minute
>
10
?
minute
:
"0"
+
minute
));
return
builder
.
toString
();
}
}
plugin_im/src/main/res/drawable-xhdpi/emoje.png
0 → 100644
View file @
fc9d4725
4.04 KB
plugin_im/src/main/res/drawable-xhdpi/icon_keyword.png
0 → 100644
View file @
fc9d4725
2.77 KB
plugin_im/src/main/res/drawable-xhdpi/icon_photo.png
0 → 100644
View file @
fc9d4725
2.04 KB
plugin_im/src/main/res/drawable-xhdpi/icon_voice.png
0 → 100644
View file @
fc9d4725
2.95 KB
plugin_im/src/main/res/drawable/im_voice_button_normal2.xml
View file @
fc9d4725
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<corners
android:radius=
"3dp"
/>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<corners
android:radius=
"@dimen/dp20"
/>
<solid
android:color=
"@color/white"
/>
<stroke
android:width=
"0.1dp"
android:color=
"@color/Grey_500"
/>
<solid
android:color=
"#fff2f2f2"
/>
</shape>
\ No newline at end of file
plugin_im/src/main/res/drawable/im_voice_button_pressed2.xml
View file @
fc9d4725
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<corners
android:radius=
"3dp"
/>
<
solid
android:color=
"@color/Grey_20
0"
/>
<
corners
android:radius=
"@dimen/size_3
0"
/>
<stroke
android:width=
"0.1dp"
android:color=
"@color/Grey_500"
/>
<solid
android:color=
"#fff2eeee"
/>
</shape>
\ No newline at end of file
plugin_im/src/main/res/layout/activity_chat.xml
View file @
fc9d4725
...
...
@@ -20,18 +20,15 @@
<RelativeLayout
android:layout_width=
"fill_parent"
android:layout_height=
"wrap_content"
android:layout_alignParentBottom=
"true"
android:layout_gravity=
"center_vertical"
android:background=
"#F3F3F3"
android:padding=
"3dp"
>
android:layout_height=
"@dimen/size_60"
android:background=
"#ffffff"
>
<FrameLayout
android:id=
"@+id/right_layout"
android:layout_width=
"40dp"
android:layout_height=
"30dp"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"
5
dp"
android:layout_marginLeft=
"
10
dp"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
...
...
@@ -39,15 +36,15 @@
android:id=
"@+id/voice_img_btn"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:background=
"@drawable/i
m
_voice"
android:background=
"@drawable/i
con
_voice"
android:contentDescription=
"@string/app_name"
android:padding=
"3dp"
/>
<ImageButton
android:id=
"@+id/
btnCancelReplay
"
android:id=
"@+id/
ib_keyword
"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:background=
"@drawable/ic
_chat_menu
"
android:background=
"@drawable/ic
on_keyword
"
android:contentDescription=
"@string/app_name"
android:padding=
"3dp"
android:visibility=
"gone"
/>
...
...
@@ -67,24 +64,27 @@
<EditText
android:id=
"@+id/chat_edit"
android:layout_width=
"match_parent"
android:layout_height=
"
35dp
"
android:layout_height=
"
@dimen/size_40
"
android:layout_gravity=
"center_vertical"
android:background=
"@drawable/im_
input_button
"
android:background=
"@drawable/im_
voice_button_normal2
"
android:inputType=
"textMultiLine"
android:maxLines=
"3"
android:padding=
"6dp"
android:paddingLeft=
"@dimen/dp_10"
android:paddingRight=
"@dimen/dp_10"
android:paddingTop=
"6dp"
android:paddingBottom=
"6dp"
android:textSize=
"@dimen/one_level_title"
/>
<
Button
<
TextView
android:id=
"@+id/record_btn"
android:layout_width=
"match_parent"
android:layout_height=
"
35dp
"
android:layout_height=
"
@dimen/size_40
"
android:layout_gravity=
"center_vertical"
android:background=
"@drawable/im_voice_button_normal2"
android:gravity=
"center"
android:text=
"@string/motalk_voice_chat_tip_1"
android:textColor=
"@color/
black_trans_99
"
android:textSize=
"@dimen/sp_1
6_text_size
"
android:textColor=
"@color/
light_grey
"
android:textSize=
"@dimen/sp_1
4
"
android:visibility=
"gone"
/>
</FrameLayout>
...
...
@@ -100,29 +100,30 @@
<ImageButton
android:id=
"@+id/emotion_btn"
android:layout_width=
"
30dp
"
android:layout_height=
"
30dp
"
android:layout_width=
"
@dimen/size_30
"
android:layout_height=
"
@dimen/size_30
"
android:layout_marginLeft=
"5dp"
android:layout_marginRight=
"5dp"
android:background=
"@drawable/
im_btn_emotion_bg
"
android:background=
"@drawable/
emoje
"
android:contentDescription=
"@string/app_name"
/>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
android:layout_height=
"wrap_content"
android:layout_marginRight=
"@dimen/dp_10"
>
<ImageButton
android:id=
"@+id/more_btn"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:layout_marginRight=
"5dp"
android:background=
"@drawable/im_btn_more_bg"
android:id=
"@+id/ib_photo"
android:layout_width=
"@dimen/size_30"
android:layout_height=
"27dp"
android:background=
"@drawable/icon_photo"
android:contentDescription=
"@string/app_name"
/>
<Button
android:id=
"@+id/send_btn"
android:layout_width=
"
40dp
"
android:layout_height=
"
30dp
"
android:layout_width=
"
@dimen/dp40
"
android:layout_height=
"
@dimen/size_30
"
android:layout_gravity=
"center_vertical"
android:background=
"@drawable/a_bg_for_send_msg"
android:gravity=
"center"
...
...
@@ -149,7 +150,6 @@
android:id=
"@+id/chat_face_view_stub"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:inflatedId=
"@+id/chat_face_view"
android:layout=
"@layout/chat_bottom_face"
/>
<ViewStub
...
...
plugin_im/src/main/res/layout/camera_view.xml
deleted
100644 → 0
View file @
4f8cea18
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#000000"
android:orientation=
"vertical"
>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<VideoView
android:id=
"@+id/video_preview"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<ImageView
android:id=
"@+id/image_photo"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#000"
android:visibility=
"invisible"
/>
</FrameLayout>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"right"
android:orientation=
"horizontal"
>
<ImageView
android:id=
"@+id/image_flash"
android:layout_width=
"50dp"
android:layout_height=
"50dp"
android:padding=
"10dp"
android:src=
"@drawable/ic_flash_on"
/>
<ImageView
android:id=
"@+id/image_switch"
android:layout_width=
"50dp"
android:layout_height=
"50dp"
android:padding=
"10dp"
android:src=
"@drawable/ic_camera"
/>
</LinearLayout>
<com.cjt2325.cameralibrary.CaptureLayout
android:id=
"@+id/capture_layout"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"bottom"
/>
<com.cjt2325.cameralibrary.FoucsView
android:id=
"@+id/fouce_view"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:visibility=
"invisible"
/>
</FrameLayout>
\ No newline at end of file
plugin_im/src/main/res/layout/chat_from_item_text.xml
View file @
fc9d4725
...
...
@@ -34,19 +34,21 @@
<TextView
android:gravity=
"left|center_vertical"
android:textColor=
"@color/black"
android:id=
"@+id/chat_text"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerInParent=
"true"
android:layout_marginLeft=
"@dimen/dp5"
android:layout_marginTop=
"@dimen/chat_head_top"
android:background=
"@drawable/
chat_to_warp_b
g"
android:background=
"@drawable/
shape_from_chat_ms
g"
android:clickable=
"true"
android:focusable=
"true"
android:maxWidth=
"210dp"
android:minHeight=
"30dp"
android:textSize=
"13sp"
android:paddingLeft=
"@dimen/dp_10"
android:paddingRight=
"@dimen/dp_10"
android:textColor=
"@color/colorMain"
android:textSize=
"@dimen/sp_14"
tools:text=
"sdfsdfsdfs"
/>
<ImageView
...
...
plugin_im/src/main/res/layout/chat_to_item_text.xml
View file @
fc9d4725
...
...
@@ -72,13 +72,16 @@
android:layout_centerInParent=
"true"
android:layout_marginLeft=
"@dimen/dp5"
android:layout_marginTop=
"@dimen/chat_head_top"
android:background=
"@drawable/
chat_from_warp_b
g"
android:background=
"@drawable/
shape_to_chat_ms
g"
android:clickable=
"true"
android:focusable=
"true"
android:gravity=
"right|center_vertical"
android:maxWidth=
"210dp"
android:minHeight=
"@dimen/chat_head_size"
android:textSize=
"13sp"
android:minHeight=
"@dimen/size_30"
android:paddingLeft=
"@dimen/dp_10"
android:paddingRight=
"@dimen/dp_10"
android:textColor=
"@color/colorMain"
android:textSize=
"@dimen/sp_14"
tools:text=
"sdfsdfsdfs"
/>
<com.rv.im.view.RoundImageView
...
...
plugin_im/src/main/res/layout/dialog_select_media.xml
0 → 100644
View file @
fc9d4725
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/transparent"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:gravity=
"center"
android:orientation=
"vertical"
>
<LinearLayout
android:id=
"@+id/dialog_select_video_ll"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
>
<TextView
android:id=
"@+id/dialog_select_video"
android:layout_width=
"wrap_content"
android:layout_height=
"52dp"
android:drawablePadding=
"8dp"
android:gravity=
"center"
android:textColor=
"@color/dialog_normal"
/>
</LinearLayout>
<View
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:background=
"@color/Grey_400"
/>
<LinearLayout
android:id=
"@+id/dialog_select_voice_ll"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
>
<TextView
android:id=
"@+id/dialog_select_voice"
android:layout_width=
"wrap_content"
android:layout_height=
"52dp"
android:drawablePadding=
"8dp"
android:gravity=
"center"
android:textColor=
"@color/dialog_normal"
/>
</LinearLayout>
</LinearLayout>
<TextView
android:id=
"@+id/dialog_select_cancel"
android:layout_width=
"match_parent"
android:layout_height=
"52dp"
android:layout_marginTop=
"@dimen/dialog_bottom_cancel_margin"
android:background=
"@color/white"
android:gravity=
"center"
android:text=
"@string/cancel"
android:textColor=
"@color/dialog_normal"
android:textStyle=
"bold"
/>
</LinearLayout>
\ No newline at end of file
plugin_im/src/main/res/layout/item_customer.xml
View file @
fc9d4725
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_
55
"
android:layout_height=
"@dimen/size_
60
"
android:background=
"@color/white"
android:gravity=
"center_vertical"
android:orientation=
"vertical"
>
<include
layout=
"@layout/common_line"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
...
...
@@ -22,8 +20,8 @@
android:background=
"@drawable/bg_circle_yellow"
>
<ImageView
android:layout_width=
"
wrap_content
"
android:layout_height=
"
wrap_content
"
android:layout_width=
"
26dp
"
android:layout_height=
"
26dp
"
android:layout_centerInParent=
"true"
android:src=
"@drawable/icon_logo_white"
/>
...
...
@@ -31,9 +29,10 @@
<LinearLayout
android:layout_width=
"
wrap_content
"
android:layout_width=
"
0dp
"
android:layout_height=
"match_parent"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_weight=
"1"
android:gravity=
"left|center_vertical"
android:orientation=
"vertical"
>
...
...
@@ -42,7 +41,8 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"牧之"
android:textSize=
"@dimen/sp_14"
/>
android:textColor=
"@color/black"
android:textSize=
"@dimen/sp_16"
/>
<TextView
android:id=
"@+id/tv_last_msg"
...
...
@@ -50,22 +50,34 @@
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/size_3"
android:ellipsize=
"end"
android:maxLength=
"10"
android:text=
"感谢您"
/>
android:focusable=
"true"
android:maxLength=
"30"
android:singleLine=
"true"
android:textColor=
"@color/gray"
android:textSize=
"@dimen/text_12"
/>
</LinearLayout>
<TextView
android:id=
"@+id/tv_state"
android:layout_width=
"
0dp
"
android:layout_width=
"
@dimen/size_50
"
android:layout_height=
"match_parent"
android:layout_marginTop=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
android:layout_weight=
"1"
android:gravity=
"right|top"
android:text=
"在线"
android:textColor=
"@color/gray"
android:textSize=
"@dimen/text_12"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
>
<include
layout=
"@layout/common_line"
/>
</LinearLayout>
</LinearLayout>
plugin_imcamera/src/main/java/com/xxfc/imcamera/activity/EasyCameraActivity.java
View file @
fc9d4725
...
...
@@ -38,7 +38,7 @@ public class EasyCameraActivity extends Activity {
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_easy_camera
);
setContentView
(
R
.
layout
.
activity_easy_camera
_lf
);
// 全屏显示
if
(
Build
.
VERSION
.
SDK_INT
>=
19
)
{
...
...
@@ -60,7 +60,7 @@ public class EasyCameraActivity extends Activity {
}
private
void
initView
()
{
jCameraView
=
findViewById
(
R
.
id
.
jcameraview
);
jCameraView
=
findViewById
(
R
.
id
.
imdescovery_
jcameraview
);
// 设置只能录像或只能拍照或两种都可以(默认两种都可以)
jCameraView
.
setFeatures
(
JCameraView
.
BUTTON_STATE_ONLY_CAPTURE
);
...
...
plugin_imcamera/src/main/java/com/xxfc/imcamera/cameralibrary/JCameraView.java
View file @
fc9d4725
...
...
@@ -151,7 +151,7 @@ public class JCameraView extends FrameLayout implements CameraInterface.CameraOp
setFlashRes
();
}
});
mCaptureLayout
=
(
CaptureLayout
)
view
.
findViewById
(
R
.
id
.
capture_layout
);
mCaptureLayout
=
view
.
findViewById
(
R
.
id
.
capture_layout
);
mCaptureLayout
.
setDuration
(
duration
);
mCaptureLayout
.
setIconSrc
(
iconLeft
,
iconRight
);
mFoucsView
=
(
FoucsView
)
view
.
findViewById
(
R
.
id
.
fouce_view
);
...
...
plugin_imcamera/src/main/res/layout/activity_easy_camera.xml
→
plugin_imcamera/src/main/res/layout/activity_easy_camera
_lf
.xml
View file @
fc9d4725
...
...
@@ -13,7 +13,7 @@
iconRight 右边按钮图片资源(1.1.9+)
duration_max 设置最长录像时间(毫秒)-->
<com.xxfc.imcamera.cameralibrary.JCameraView
android:id=
"@+id/jcameraview"
android:id=
"@+id/
imdescovery_
jcameraview"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
...
...
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