Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
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
杨凯
YDL-Component-Medical
Commits
8c3b433e
Commit
8c3b433e
authored
May 06, 2020
by
严久程
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
通话结束后增加接口调用
parent
82809e56
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
253 additions
and
274 deletions
+253
-274
config.gradle
config.gradle
+7
-7
AudioHomeActivity.kt
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
+68
-150
YDLavManager.kt
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
+96
-15
AgoraInvitationBean.java
m-audioim/src/main/java/com/ydl/audioim/bean/AgoraInvitationBean.java
+14
-0
AudioApiRequestUtil.kt
m-audioim/src/main/java/com/ydl/audioim/http/AudioApiRequestUtil.kt
+11
-5
AudioNetAPi.kt
m-audioim/src/main/java/com/ydl/audioim/http/AudioNetAPi.kt
+4
-0
ConsultantAudioHomeActivity.kt
m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt
+50
-95
ImObserversHelper.kt
m-im/src/main/java/com/yidianling/im/helper/ImObserversHelper.kt
+1
-1
IMRegisterObserverCustomNotificationCallBack.kt
m-im/src/main/modular_api/com/yidianling/im/api/bean/IMRegisterObserverCustomNotificationCallBack.kt
+2
-1
No files found.
config.gradle
View file @
8c3b433e
ext
{
ext
{
kotlin_version
=
"1.3.21"
kotlin_version
=
"1.3.21"
dev_mode
=
tru
e
dev_mode
=
fals
e
ydlPublishVersion
=
[
ydlPublishVersion
=
[
// -------------- 业务模块 --------------
// -------------- 业务模块 --------------
//第三步 若干
//第三步 若干
"m-confide"
:
"0.0.48.
23
"
,
"m-confide"
:
"0.0.48.
42
"
,
"m-consultant"
:
"0.0.59.10"
,
"m-consultant"
:
"0.0.59.10"
,
"m-fm"
:
"0.0.29.9"
,
"m-fm"
:
"0.0.29.9"
,
"m-user"
:
"0.0.60.8"
,
"m-user"
:
"0.0.60.8"
,
"m-home"
:
"0.0.22.3"
,
"m-home"
:
"0.0.22.3"
,
"m-im"
:
"0.0.18.
4
"
,
"m-im"
:
"0.0.18.
5
"
,
"m-dynamic"
:
"0.0.7.7"
,
"m-dynamic"
:
"0.0.7.7"
,
"m-article"
:
"0.0.0.5"
,
"m-article"
:
"0.0.0.5"
,
...
@@ -28,7 +28,7 @@ ext {
...
@@ -28,7 +28,7 @@ ext {
"m-tests-api"
:
"0.0.2"
,
"m-tests-api"
:
"0.0.2"
,
"m-user-api"
:
"0.0.10.15"
,
"m-user-api"
:
"0.0.10.15"
,
"m-home-api"
:
"0.0.4.1"
,
"m-home-api"
:
"0.0.4.1"
,
"m-im-api"
:
"0.0.12.
19
"
,
"m-im-api"
:
"0.0.12.
20
"
,
"m-dynamic-api"
:
"0.0.3.7"
,
"m-dynamic-api"
:
"0.0.3.7"
,
//-------------- 功能组件 --------------
//-------------- 功能组件 --------------
...
@@ -39,7 +39,7 @@ ext {
...
@@ -39,7 +39,7 @@ ext {
"ydl-webview"
:
"0.0.38.31"
,
"ydl-webview"
:
"0.0.38.31"
,
"ydl-media"
:
"0.0.21.6"
,
"ydl-media"
:
"0.0.21.6"
,
"ydl-pay"
:
"0.0.18.9"
,
"ydl-pay"
:
"0.0.18.9"
,
"m-audioim"
:
"0.0.49.
2
"
,
"m-audioim"
:
"0.0.49.
13
"
,
"ydl-flutter-base"
:
"0.0.14.14"
,
"ydl-flutter-base"
:
"0.0.14.14"
,
//以下 几乎不会动
//以下 几乎不会动
...
@@ -111,7 +111,7 @@ ext {
...
@@ -111,7 +111,7 @@ ext {
"m-tests-api"
:
"0.0.2"
,
"m-tests-api"
:
"0.0.2"
,
"m-user-api"
:
"0.0.10.15"
,
"m-user-api"
:
"0.0.10.15"
,
"m-home-api"
:
"0.0.4.1"
,
"m-home-api"
:
"0.0.4.1"
,
"m-im-api"
:
"0.0.12.
18
"
,
"m-im-api"
:
"0.0.12.
20
"
,
"m-dynamic-api"
:
"0.0.3.7"
,
"m-dynamic-api"
:
"0.0.3.7"
,
//-------------- 功能组件 --------------
//-------------- 功能组件 --------------
...
@@ -122,7 +122,7 @@ ext {
...
@@ -122,7 +122,7 @@ ext {
"ydl-webview"
:
"0.0.38.31"
,
"ydl-webview"
:
"0.0.38.31"
,
"ydl-media"
:
"0.0.21.6"
,
"ydl-media"
:
"0.0.21.6"
,
"ydl-pay"
:
"0.0.18.9"
,
"ydl-pay"
:
"0.0.18.9"
,
"m-audioim"
:
"0.0.49.
2
"
,
"m-audioim"
:
"0.0.49.
13
"
,
"ydl-flutter-base"
:
"0.0.14.14"
,
"ydl-flutter-base"
:
"0.0.14.14"
,
//以下 几乎不会动
//以下 几乎不会动
...
...
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
View file @
8c3b433e
...
@@ -39,8 +39,6 @@ import com.ydl.webview.H5Params
...
@@ -39,8 +39,6 @@ import com.ydl.webview.H5Params
import
com.ydl.webview.NewH5Activity
import
com.ydl.webview.NewH5Activity
import
com.ydl.webview.RefreshWebEvent
import
com.ydl.webview.RefreshWebEvent
import
com.ydl.ydl_av.chat.bean.AudioMessageBean
import
com.ydl.ydl_av.chat.bean.AudioMessageBean
import
com.ydl.ydl_av.messge_service.YDLRTMClient
import
com.ydl.ydl_av.messge_service.callback.CancelCallStatusListener
import
com.ydl.ydl_av.voice.listener.IYDLVoiceEventHandler
import
com.ydl.ydl_av.voice.listener.IYDLVoiceEventHandler
import
com.ydl.ydl_av.voice.manager.YDLVoiceManager
import
com.ydl.ydl_av.voice.manager.YDLVoiceManager
import
com.ydl.ydl_image.config.SimpleImageOpConfiger
import
com.ydl.ydl_image.config.SimpleImageOpConfiger
...
@@ -62,10 +60,22 @@ import io.reactivex.Observable
...
@@ -62,10 +60,22 @@ import io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.disposables.Disposable
import
io.reactivex.disposables.Disposable
import
io.reactivex.schedulers.Schedulers
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.*
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.iv_hands_free
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.iv_hang_up
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.iv_head
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.progress_view
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.rl_remain_time
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.tv_change_doctor
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.tv_change_route
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.tv_change_time_counter
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.tv_name
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.tv_nte_status
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.tv_remain_time
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.tv_tips
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.tv_waiting
import
kotlinx.android.synthetic.main.audioim_activity_audio_home.wave_view
import
java.util.concurrent.TimeUnit
import
java.util.concurrent.TimeUnit
/**
/**
* @author jiucheng
* @author jiucheng
* @描述: 倾诉声网通话页面
* @描述: 倾诉声网通话页面
...
@@ -74,9 +84,7 @@ import java.util.concurrent.TimeUnit
...
@@ -74,9 +84,7 @@ import java.util.concurrent.TimeUnit
* @date 2018/10/30
* @date 2018/10/30
*/
*/
@Route
(
path
=
"/av/AudioHomeActivity"
)
@Route
(
path
=
"/av/AudioHomeActivity"
)
class
AudioHomeActivity
:
class
AudioHomeActivity
:
BaseMvpActivity
<
IAudioHomeActivityContract
.
View
,
IAudioHomeActivityContract
.
Presenter
>(),
IAudioHomeActivityContract
.
View
,
SensorEventListener
{
BaseMvpActivity
<
IAudioHomeActivityContract
.
View
,
IAudioHomeActivityContract
.
Presenter
>(),
IAudioHomeActivityContract
.
View
,
SensorEventListener
{
/**
/**
* 专家头像地址
* 专家头像地址
...
@@ -166,7 +174,7 @@ class AudioHomeActivity :
...
@@ -166,7 +174,7 @@ class AudioHomeActivity :
private
var
voiceManage
:
YDLVoiceManager
?
=
null
private
var
voiceManage
:
YDLVoiceManager
?
=
null
//频道管理器
//频道管理器
// private var channelManager: ChannelManager? = null
// private var channelManager: ChannelManager? = null
private
var
isLeavelChannel
:
Boolean
=
false
private
var
isLeavelChannel
:
Boolean
=
false
private
var
hasUpLoadLog
=
false
private
var
hasUpLoadLog
=
false
...
@@ -191,6 +199,8 @@ class AudioHomeActivity :
...
@@ -191,6 +199,8 @@ class AudioHomeActivity :
runOnUiThread
{
runOnUiThread
{
when
(
warn
)
{
when
(
warn
)
{
103
,
105
,
107
->
{
103
,
105
,
107
->
{
YDLavManager
.
instances
.
callEndStatusUpdate
(
channelId
!!
,
4
,
"收到频道回调警告信息$warn"
)
writeAgoraLog
(
"通话挂断:网络异常(${warn})"
)
writeAgoraLog
(
"通话挂断:网络异常(${warn})"
)
showToast
(
"当前网络较差,请更换网络!"
)
showToast
(
"当前网络较差,请更换网络!"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
...
@@ -236,28 +246,28 @@ class AudioHomeActivity :
...
@@ -236,28 +246,28 @@ class AudioHomeActivity :
leaveChannel
()
leaveChannel
()
}
}
123
->
{
123
->
{
// showToast("当前用户不允许接听电话,请联系客服")
// showToast("当前用户不允许接听电话,请联系客服")
// leaveChannel()
// leaveChannel()
}
}
else
->
{
else
->
{
//异常关闭
//异常关闭
leaveChannel
()
leaveChannel
()
}
}
}
}
YDLavManager
.
instances
.
callEndStatusUpdate
(
channelId
!!
,
4
,
"频道的错误回调信息$err"
)
}
}
}
}
override
fun
onApiCallExecuted
(
error
:
Int
,
api
:
String
?,
result
:
String
?)
{
override
fun
onApiCallExecuted
(
error
:
Int
,
api
:
String
?,
result
:
String
?)
{
super
.
onApiCallExecuted
(
error
,
api
,
result
)
super
.
onApiCallExecuted
(
error
,
api
,
result
)
// LogUtil.e("[agora]$api 已执行回调 $result")
// LogUtil.e("[agora]$api 已执行回调 $result")
}
}
override
fun
onJoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
override
fun
onJoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onJoinChannelSuccess
(
channel
,
uid
,
elapsed
)
super
.
onJoinChannelSuccess
(
channel
,
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]$uid 用户声网加入频道成功:channel=$channel"
)
LogUtil
.
e
(
"[agora]$uid 用户声网加入频道成功:channel=$channel"
)
//更新ui
//更新ui
// onJoinChannelSuccess()
// onJoinChannelSuccess()
//更新:现在专家先加入频道,所以不会有等待的过程,
//更新:现在专家先加入频道,所以不会有等待的过程,
runOnUiThread
{
runOnUiThread
{
...
@@ -265,7 +275,6 @@ class AudioHomeActivity :
...
@@ -265,7 +275,6 @@ class AudioHomeActivity :
//自己加入频道成功
//自己加入频道成功
connectSuccess
()
connectSuccess
()
}
}
}
}
override
fun
onRejoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
override
fun
onRejoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
...
@@ -280,7 +289,6 @@ class AudioHomeActivity :
...
@@ -280,7 +289,6 @@ class AudioHomeActivity :
}
}
}
}
override
fun
onRtcStats
(
stats
:
IRtcEngineEventHandler
.
RtcStats
?)
{
override
fun
onRtcStats
(
stats
:
IRtcEngineEventHandler
.
RtcStats
?)
{
super
.
onRtcStats
(
stats
)
super
.
onRtcStats
(
stats
)
//因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断
//因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断
...
@@ -297,6 +305,7 @@ class AudioHomeActivity :
...
@@ -297,6 +305,7 @@ class AudioHomeActivity :
super
.
onConnectionStateChanged
(
state
,
reason
)
super
.
onConnectionStateChanged
(
state
,
reason
)
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
if
(
reason
==
3
)
{
if
(
reason
==
3
)
{
YDLavManager
.
instances
.
callEndStatusUpdate
(
channelId
!!
,
4
,
"服务端踢人触发的回调"
)
writeAgoraLog
(
"通话结束:原因(${reason})"
)
writeAgoraLog
(
"通话结束:原因(${reason})"
)
com
.
yidianling
.
common
.
tools
.
ToastUtil
.
toastShort
(
"专家已挂断"
)
com
.
yidianling
.
common
.
tools
.
ToastUtil
.
toastShort
(
"专家已挂断"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
...
@@ -312,7 +321,6 @@ class AudioHomeActivity :
...
@@ -312,7 +321,6 @@ class AudioHomeActivity :
uploadLog
()
uploadLog
()
}
}
override
fun
onUserJoined
(
uid
:
Int
,
elapsed
:
Int
)
{
override
fun
onUserJoined
(
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onUserJoined
(
uid
,
elapsed
)
super
.
onUserJoined
(
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]远端用户/主播加入频道回调"
)
LogUtil
.
e
(
"[agora]远端用户/主播加入频道回调"
)
...
@@ -326,6 +334,8 @@ class AudioHomeActivity :
...
@@ -326,6 +334,8 @@ class AudioHomeActivity :
uploadLog
()
uploadLog
()
showToast
(
"专家已挂断"
)
showToast
(
"专家已挂断"
)
YDLavManager
.
instances
.
callEndStatusUpdate
(
channelId
!!
,
4
,
"对方离开频道"
)
if
(
totalDisposable
!=
null
)
{
if
(
totalDisposable
!=
null
)
{
totalDisposable
!!
.
dispose
()
totalDisposable
!!
.
dispose
()
}
}
...
@@ -335,7 +345,6 @@ class AudioHomeActivity :
...
@@ -335,7 +345,6 @@ class AudioHomeActivity :
},
500
)
},
500
)
}
}
override
fun
onNetworkQuality
(
uid
:
Int
,
txQuality
:
Int
,
rxQuality
:
Int
)
{
override
fun
onNetworkQuality
(
uid
:
Int
,
txQuality
:
Int
,
rxQuality
:
Int
)
{
super
.
onNetworkQuality
(
uid
,
txQuality
,
rxQuality
)
super
.
onNetworkQuality
(
uid
,
txQuality
,
rxQuality
)
var
status
=
-
1
var
status
=
-
1
...
@@ -354,7 +363,7 @@ class AudioHomeActivity :
...
@@ -354,7 +363,7 @@ class AudioHomeActivity :
"对方的网络状况不佳"
"对方的网络状况不佳"
}
}
}
}
0
->
{
0
->
{
if
(
txQuality
in
1
..
2
&&
rxQuality
in
1
..
2
)
{
if
(
txQuality
in
1
..
2
&&
rxQuality
in
1
..
2
)
{
""
""
}
else
if
(
txQuality
>=
5
||
rxQuality
>=
5
)
{
}
else
if
(
txQuality
>=
5
||
rxQuality
>=
5
)
{
...
@@ -403,7 +412,6 @@ class AudioHomeActivity :
...
@@ -403,7 +412,6 @@ class AudioHomeActivity :
requestPermission
()
requestPermission
()
}
}
private
fun
setWindowStatusBarColor
()
{
private
fun
setWindowStatusBarColor
()
{
StatusBarUtils
.
setWindowStatusBarColor
(
this
,
R
.
color
.
audioim_color_40353535
)
StatusBarUtils
.
setWindowStatusBarColor
(
this
,
R
.
color
.
audioim_color_40353535
)
}
}
...
@@ -413,10 +421,7 @@ class AudioHomeActivity :
...
@@ -413,10 +421,7 @@ class AudioHomeActivity :
sensorManager
=
getSystemService
(
Context
.
SENSOR_SERVICE
)
as
SensorManager
?
sensorManager
=
getSystemService
(
Context
.
SENSOR_SERVICE
)
as
SensorManager
?
localPowerManager
=
getSystemService
(
POWER_SERVICE
)
as
PowerManager
?
localPowerManager
=
getSystemService
(
POWER_SERVICE
)
as
PowerManager
?
localWakeLock
=
localPowerManager
!!
.
newWakeLock
(
localWakeLock
=
localPowerManager
!!
.
newWakeLock
(
PowerManager
.
PROXIMITY_SCREEN_OFF_WAKE_LOCK
,
"yidianling"
)
PowerManager
.
PROXIMITY_SCREEN_OFF_WAKE_LOCK
,
"yidianling"
)
}
}
private
fun
initIntentData
()
{
private
fun
initIntentData
()
{
...
@@ -433,16 +438,7 @@ class AudioHomeActivity :
...
@@ -433,16 +438,7 @@ class AudioHomeActivity :
listenId
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_LISTEN_ID
)
listenId
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_LISTEN_ID
)
commentUrl
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_COMMENT_URL
)
commentUrl
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_COMMENT_URL
)
val
logBean
=
AgoraLogInfoBean
(
val
logBean
=
AgoraLogInfoBean
(
expertHeadUrl
,
expertName
,
channelId
,
remainTime
,
listenerUid
,
totalDuration
,
callId
,
listenId
)
expertHeadUrl
,
expertName
,
channelId
,
remainTime
,
listenerUid
,
totalDuration
,
callId
,
listenId
)
val
content
=
Gson
().
toJson
(
logBean
)
val
content
=
Gson
().
toJson
(
logBean
)
writeAgoraLog
(
"主叫方发送的邀请通话消息内容:$content"
,
isAppend
=
false
)
writeAgoraLog
(
"主叫方发送的邀请通话消息内容:$content"
,
isAppend
=
false
)
...
@@ -461,7 +457,6 @@ class AudioHomeActivity :
...
@@ -461,7 +457,6 @@ class AudioHomeActivity :
}
}
}
}
private
fun
initView
()
{
private
fun
initView
()
{
tv_change_route
.
isEnabled
=
false
tv_change_route
.
isEnabled
=
false
//水波纹view初始化
//水波纹view初始化
...
@@ -492,7 +487,8 @@ class AudioHomeActivity :
...
@@ -492,7 +487,8 @@ class AudioHomeActivity :
private
fun
setClickEvent
()
{
private
fun
setClickEvent
()
{
//切换线路
//切换线路
tv_change_route
.
setOnClickListener
{
showChooseDialog
(
1
)
}
tv_change_route
.
setOnClickListener
{
showChooseDialog
(
1
)
}
//挂断
//挂断
iv_hang_up
.
setOnClickListener
{
iv_hang_up
.
setOnClickListener
{
if
(
Utils
.
isFastClick
())
{
if
(
Utils
.
isFastClick
())
{
...
@@ -500,6 +496,7 @@ class AudioHomeActivity :
...
@@ -500,6 +496,7 @@ class AudioHomeActivity :
return
@setOnClickListener
return
@setOnClickListener
}
}
if
(
isConnectSuccess
)
{
if
(
isConnectSuccess
)
{
YDLavManager
.
instances
.
callEndStatusUpdate
(
channelId
!!
,
3
,
"主叫主动挂断"
)
writeAgoraLog
(
"已接通:主叫主动挂断"
)
writeAgoraLog
(
"已接通:主叫主动挂断"
)
updateExpertStatus
(
false
,
1
)
updateExpertStatus
(
false
,
1
)
leaveChannel
()
leaveChannel
()
...
@@ -508,11 +505,7 @@ class AudioHomeActivity :
...
@@ -508,11 +505,7 @@ class AudioHomeActivity :
userCloseCalling
()
userCloseCalling
()
}
}
ActionCountUtils
.
count
(
ActionCountUtils
.
count
(
"shengwang_popup_layer_page|shengwang_popup_layer_refuse_click"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
())
"shengwang_popup_layer_page|shengwang_popup_layer_refuse_click"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
()
)
}
}
//免提
//免提
...
@@ -544,8 +537,7 @@ class AudioHomeActivity :
...
@@ -544,8 +537,7 @@ class AudioHomeActivity :
@SuppressLint
(
"CheckResult"
)
@SuppressLint
(
"CheckResult"
)
private
fun
requestPermission
()
{
private
fun
requestPermission
()
{
val
rxPermissions
=
RxPermissions
(
this
)
val
rxPermissions
=
RxPermissions
(
this
)
rxPermissions
.
requestEach
(
Manifest
.
permission
.
RECORD_AUDIO
)
rxPermissions
.
requestEach
(
Manifest
.
permission
.
RECORD_AUDIO
).
subscribe
{
permission
->
.
subscribe
{
permission
->
if
(
permission
.
granted
)
{
if
(
permission
.
granted
)
{
init
()
init
()
}
else
if
(
permission
.
shouldShowRequestPermissionRationale
)
{
}
else
if
(
permission
.
shouldShowRequestPermissionRationale
)
{
...
@@ -569,30 +561,14 @@ class AudioHomeActivity :
...
@@ -569,30 +561,14 @@ class AudioHomeActivity :
//初始化声网
//初始化声网
initializeAgoraEngine
()
initializeAgoraEngine
()
//发起呼叫
//发起呼叫
var
msgBean
=
AudioMessageBean
(
var
msgBean
=
AudioMessageBean
(
1
,
channelId
!!
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUserInfo
()
!!
.
headUrl
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUserInfo
()
!!
.
userName
,
remainTime
!!
.
toInt
(),
relationId
,
callId
,
null
,
channelId
)
1
,
channelId
!!
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUserInfo
()
!!
.
headUrl
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUserInfo
()
!!
.
userName
,
remainTime
!!
.
toInt
(),
relationId
,
callId
,
null
,
channelId
)
sendDoctocrMsg
=
Gson
().
toJson
(
msgBean
)
sendDoctocrMsg
=
Gson
().
toJson
(
msgBean
)
writeAgoraLog
(
"主叫发送通话邀请"
)
writeAgoraLog
(
"主叫发送通话邀请"
)
rtcCall
()
rtcCall
()
//开始60s等待倒计时
//开始60s等待倒计时
waitDisposable
=
Observable
.
interval
(
0
,
100
,
TimeUnit
.
MILLISECONDS
)
waitDisposable
=
Observable
.
interval
(
0
,
100
,
TimeUnit
.
MILLISECONDS
).
subscribeOn
(
Schedulers
.
computation
()).
take
(
600
).
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
({
.
subscribeOn
(
Schedulers
.
computation
())
.
take
(
600
)
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
tv_change_time_counter
.
text
=
"${60 - it / 10}s"
tv_change_time_counter
.
text
=
"${60 - it / 10}s"
var
result
=
it
.
toFloat
()
/
2.5f
var
result
=
it
.
toFloat
()
/
2.5f
progress_view
.
setProgress
(
result
)
progress_view
.
setProgress
(
result
)
...
@@ -611,7 +587,7 @@ class AudioHomeActivity :
...
@@ -611,7 +587,7 @@ class AudioHomeActivity :
writeAgoraLog
(
"未接通挂断:60s等待倒计时结束挂断"
)
writeAgoraLog
(
"未接通挂断:60s等待倒计时结束挂断"
)
//提示切换传统线路
//提示切换传统线路
//发送消息通知专家用户已挂断
//发送消息通知专家用户已挂断
YDLavManager
.
instances
.
cancelCall
(
listenerUid
!!
,
channelId
!!
){
msg
,
code
->
YDLavManager
.
instances
.
cancelCall
(
listenerUid
!!
,
channelId
!!
,
sendDoctocrMsg
!!
)
{
msg
,
code
->
writeAgoraLog
(
"未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断"
)
writeAgoraLog
(
"未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断"
)
}
}
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
...
@@ -629,7 +605,6 @@ class AudioHomeActivity :
...
@@ -629,7 +605,6 @@ class AudioHomeActivity :
YDLavManager
.
instances
.
rtcCall
(
listenerUid
,
channelId
,
sendDoctocrMsg
)
YDLavManager
.
instances
.
rtcCall
(
listenerUid
,
channelId
,
sendDoctocrMsg
)
}
}
/**
/**
* 声网初始化
* 声网初始化
*/
*/
...
@@ -648,12 +623,7 @@ class AudioHomeActivity :
...
@@ -648,12 +623,7 @@ class AudioHomeActivity :
*/
*/
fun
joinChannel
()
{
fun
joinChannel
()
{
writeAgoraLog
(
"对方接受了通话邀请,主叫开始加入频道:$channelId"
)
writeAgoraLog
(
"对方接受了通话邀请,主叫开始加入频道:$channelId"
)
voiceManage
!!
.
getVoiceApi
().
joinChannel
(
voiceManage
!!
.
getVoiceApi
().
joinChannel
(
token
!!
,
channelId
!!
,
"Extra Optional Data"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
())
token
!!
,
channelId
!!
,
"Extra Optional Data"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
()
)
}
}
/**
/**
...
@@ -665,7 +635,7 @@ class AudioHomeActivity :
...
@@ -665,7 +635,7 @@ class AudioHomeActivity :
writeAgoraLog
(
"未接听时:主叫主动挂断,取消呼叫"
)
writeAgoraLog
(
"未接听时:主叫主动挂断,取消呼叫"
)
LogUtil
.
e
(
"未接听挂断"
)
LogUtil
.
e
(
"未接听挂断"
)
//发送消息通知专家用户已挂断
//发送消息通知专家用户已挂断
YDLavManager
.
instances
.
cancelCall
(
listenerUid
!!
,
channelId
!!
){
msg
,
code
->
YDLavManager
.
instances
.
cancelCall
(
listenerUid
!!
,
channelId
!!
,
sendDoctocrMsg
!!
)
{
msg
,
code
->
writeAgoraLog
(
"未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断"
)
writeAgoraLog
(
"未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断"
)
}
}
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
...
@@ -690,19 +660,19 @@ class AudioHomeActivity :
...
@@ -690,19 +660,19 @@ class AudioHomeActivity :
callStartTime
=
System
.
currentTimeMillis
()
callStartTime
=
System
.
currentTimeMillis
()
}
}
// if(finishStatus==1){
// if(finishStatus==1){
// var param = ConnectFinishCommand(listenerUid!!, relationId!!, "0",
// var param = ConnectFinishCommand(listenerUid!!, relationId!!, "0",
// remainTime!!.toInt() - localRemainTime!!, callId!!,
// remainTime!!.toInt() - localRemainTime!!, callId!!,
// "0","0","$callStartTime",
// "0","0","$callStartTime",
// "${System.currentTimeMillis()}",3)
// "${System.currentTimeMillis()}",3)
// mPresenter.connectFinish(param)
// mPresenter.connectFinish(param)
// }else{
// }else{
// 接通开始回调
// 接通开始回调
// callStartTime = System.currentTimeMillis()
// callStartTime = System.currentTimeMillis()
// var param = ConnectStartCommand(listenerUid!!, relationId!!, callId!!,
// var param = ConnectStartCommand(listenerUid!!, relationId!!, callId!!,
// "${System.currentTimeMillis()}","3","0","0","0","0")
// "${System.currentTimeMillis()}","3","0","0","0","0")
// mPresenter.connectStart(param)
// mPresenter.connectStart(param)
// }
// }
}
}
/**
/**
...
@@ -710,8 +680,7 @@ class AudioHomeActivity :
...
@@ -710,8 +680,7 @@ class AudioHomeActivity :
*/
*/
private
fun
showChooseDialog
(
type
:
Int
)
{
private
fun
showChooseDialog
(
type
:
Int
)
{
val
dialog
=
val
dialog
=
AxbConfirmDialog
(
mContext
,
type
,
object
:
AxbConfirmDialog
.
OnClickEnsureListener
{
AxbConfirmDialog
(
mContext
,
type
,
object
:
AxbConfirmDialog
.
OnClickEnsureListener
{
override
fun
onClickEnsure
()
{
override
fun
onClickEnsure
()
{
switchAXB
()
switchAXB
()
}
}
...
@@ -736,8 +705,9 @@ class AudioHomeActivity :
...
@@ -736,8 +705,9 @@ class AudioHomeActivity :
override
fun
onSuccess
()
{
override
fun
onSuccess
()
{
mPresenter
.
getAXBPhone
(
ConnectCommand
(
listenId
!!
,
"1"
))
mPresenter
.
getAXBPhone
(
ConnectCommand
(
listenId
!!
,
"1"
))
}
}
})
})
YDLavManager
.
instances
.
callEndStatusUpdate
(
channelId
!!
,
3
,
"接通中:主叫主动切换AXB"
)
}
else
{
}
else
{
mPresenter
.
getAXBPhone
(
ConnectCommand
(
listenId
!!
,
"1"
))
mPresenter
.
getAXBPhone
(
ConnectCommand
(
listenId
!!
,
"1"
))
}
}
...
@@ -759,14 +729,13 @@ class AudioHomeActivity :
...
@@ -759,14 +729,13 @@ class AudioHomeActivity :
//未连接成功,切换axb时:需发送消息通知专家端用户已挂断
//未连接成功,切换axb时:需发送消息通知专家端用户已挂断
//发送消息通知专家用户已挂断
//发送消息通知专家用户已挂断
//发送消息通知专家用户已挂断
//发送消息通知专家用户已挂断
YDLavManager
.
instances
.
cancelCall
(
listenerUid
!!
,
channelId
!!
){
msg
,
code
->
YDLavManager
.
instances
.
cancelCall
(
listenerUid
!!
,
channelId
!!
,
sendDoctocrMsg
!!
)
{
msg
,
code
->
writeAgoraLog
(
"未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断"
)
writeAgoraLog
(
"未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断"
)
}
}
leaveChannel
()
leaveChannel
()
}
}
}
}
/**
/**
* 跳转拨号界面
* 跳转拨号界面
*/
*/
...
@@ -776,7 +745,6 @@ class AudioHomeActivity :
...
@@ -776,7 +745,6 @@ class AudioHomeActivity :
finish
()
finish
()
}
}
/**
/**
* 60s等待完成,专家未接听
* 60s等待完成,专家未接听
*/
*/
...
@@ -859,9 +827,9 @@ class AudioHomeActivity :
...
@@ -859,9 +827,9 @@ class AudioHomeActivity :
voiceManage
!!
.
getVoiceApi
().
setEnableSpeakerphone
(
false
)
voiceManage
!!
.
getVoiceApi
().
setEnableSpeakerphone
(
false
)
iv_hands_free
.
isSelected
=
false
iv_hands_free
.
isSelected
=
false
iv_hands_free
.
setImageResource
(
R
.
drawable
.
audioim_img_hands_free_unuse
)
iv_hands_free
.
setImageResource
(
R
.
drawable
.
audioim_img_hands_free_unuse
)
// if (waitDisposable != null) {
// if (waitDisposable != null) {
// waitDisposable!!.dispose()
// waitDisposable!!.dispose()
// }
// }
if
(
disposable
!=
null
)
{
if
(
disposable
!=
null
)
{
disposable
!!
.
dispose
()
disposable
!!
.
dispose
()
}
}
...
@@ -880,11 +848,7 @@ class AudioHomeActivity :
...
@@ -880,11 +848,7 @@ class AudioHomeActivity :
tv_tips
.
visibility
=
View
.
GONE
tv_tips
.
visibility
=
View
.
GONE
//剩余倾诉时长倒计时
//剩余倾诉时长倒计时
totalDisposable
=
Observable
.
interval
(
0
,
1
,
TimeUnit
.
SECONDS
)
totalDisposable
=
Observable
.
interval
(
0
,
1
,
TimeUnit
.
SECONDS
).
subscribeOn
(
Schedulers
.
computation
()).
take
(
remainTime
!!
.
toLong
()
+
1
).
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
({
.
subscribeOn
(
Schedulers
.
computation
())
.
take
(
remainTime
!!
.
toLong
()
+
1
)
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
localRemainTime
=
remainTime
!!
.
toInt
()
-
it
.
toInt
()
localRemainTime
=
remainTime
!!
.
toInt
()
-
it
.
toInt
()
if
(
localRemainTime
==
180
)
{
if
(
localRemainTime
==
180
)
{
playNoticeMusic
(
3
)
playNoticeMusic
(
3
)
...
@@ -895,27 +859,15 @@ class AudioHomeActivity :
...
@@ -895,27 +859,15 @@ class AudioHomeActivity :
if
(
localRemainTime
!!
<=
60
)
{
if
(
localRemainTime
!!
<=
60
)
{
if
(
tv_change_route
.
isEnabled
)
{
if
(
tv_change_route
.
isEnabled
)
{
tv_change_route
.
isEnabled
=
false
tv_change_route
.
isEnabled
=
false
tv_change_route
.
setTextColor
(
tv_change_route
.
setTextColor
(
ContextCompat
.
getColor
(
this
,
R
.
color
.
audioim_color_50ffffff
))
ContextCompat
.
getColor
(
tv_change_route
.
setCompoundDrawablesWithIntrinsicBounds
(
null
,
null
,
ContextCompat
.
getDrawable
(
this
,
R
.
drawable
.
audioim_img_choose_arrow_unuse
),
null
)
this
,
R
.
color
.
audioim_color_50ffffff
)
)
tv_change_route
.
setCompoundDrawablesWithIntrinsicBounds
(
null
,
null
,
ContextCompat
.
getDrawable
(
this
,
R
.
drawable
.
audioim_img_choose_arrow_unuse
),
null
)
}
}
}
}
tv_remain_time
.
text
=
DateUtils
.
formatTime
(
localRemainTime
.
toString
())
tv_remain_time
.
text
=
DateUtils
.
formatTime
(
localRemainTime
.
toString
())
},
{
},
{
LogUtil
.
d
(
it
.
message
)
LogUtil
.
d
(
it
.
message
)
},
{
},
{
YDLavManager
.
instances
.
callEndStatusUpdate
(
channelId
!!
,
3
,
"倾诉时间已用完"
)
//注意:自动挂断时,如果对方离开频道的回调已经触发,就不要再重复调用接口
//注意:自动挂断时,如果对方离开频道的回调已经触发,就不要再重复调用接口
showToast
(
"通话已结束"
)
showToast
(
"通话已结束"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
...
@@ -951,18 +903,7 @@ class AudioHomeActivity :
...
@@ -951,18 +903,7 @@ class AudioHomeActivity :
* @param isCall true 拨打 false 取消拨打
* @param isCall true 拨打 false 取消拨打
*/
*/
private
fun
noticeServerPush
(
isCall
:
Boolean
)
{
private
fun
noticeServerPush
(
isCall
:
Boolean
)
{
var
msgBean
=
AudioMessageBean
(
var
msgBean
=
AudioMessageBean
(
1
,
channelId
!!
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUserInfo
()
!!
.
headUrl
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUserInfo
()
!!
.
userName
,
remainTime
!!
.
toInt
(),
relationId
,
callId
,
null
,
channelId
)
1
,
channelId
!!
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUserInfo
()
!!
.
headUrl
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUserInfo
()
!!
.
userName
,
remainTime
!!
.
toInt
(),
relationId
,
callId
,
null
,
channelId
)
var
cmd
=
NoticePushCommand
()
var
cmd
=
NoticePushCommand
()
cmd
.
data
=
msgBean
cmd
.
data
=
msgBean
cmd
.
pushId
=
listenerUid
cmd
.
pushId
=
listenerUid
...
@@ -974,7 +915,6 @@ class AudioHomeActivity :
...
@@ -974,7 +915,6 @@ class AudioHomeActivity :
mPresenter
.
noticeServerPush
(
cmd
)
mPresenter
.
noticeServerPush
(
cmd
)
}
}
/**
/**
* 声网离开频道
* 声网离开频道
*/
*/
...
@@ -992,22 +932,13 @@ class AudioHomeActivity :
...
@@ -992,22 +932,13 @@ class AudioHomeActivity :
override
fun
onResume
()
{
override
fun
onResume
()
{
super
.
onResume
()
super
.
onResume
()
sensorManager
!!
.
registerListener
(
sensorManager
!!
.
registerListener
(
this
,
sensorManager
!!
.
getDefaultSensor
(
Sensor
.
TYPE_PROXIMITY
),
SensorManager
.
SENSOR_DELAY_NORMAL
)
this
,
sensorManager
!!
.
getDefaultSensor
(
Sensor
.
TYPE_PROXIMITY
),
SensorManager
.
SENSOR_DELAY_NORMAL
)
ActionCountUtils
.
count
(
ActionCountUtils
.
count
(
"shengwang_popup_layer_page|shengwang_popup_layer_page_visit"
,
""
,
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
())
"shengwang_popup_layer_page|shengwang_popup_layer_page_visit"
,
""
,
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
()
)
}
}
override
fun
onAccuracyChanged
(
sensor
:
Sensor
?,
accuracy
:
Int
)
{
override
fun
onAccuracyChanged
(
sensor
:
Sensor
?,
accuracy
:
Int
)
{
}
}
override
fun
onSensorChanged
(
event
:
SensorEvent
?)
{
override
fun
onSensorChanged
(
event
:
SensorEvent
?)
{
...
@@ -1030,7 +961,6 @@ class AudioHomeActivity :
...
@@ -1030,7 +961,6 @@ class AudioHomeActivity :
}
}
}
}
/**
/**
* 显示自定义弹窗
* 显示自定义弹窗
*/
*/
...
@@ -1063,14 +993,12 @@ class AudioHomeActivity :
...
@@ -1063,14 +993,12 @@ class AudioHomeActivity :
}
}
}
}
override
fun
showProgressView
()
{
override
fun
showProgressView
()
{
try
{
try
{
showProgressDialog
()
showProgressDialog
()
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
e
.
printStackTrace
()
}
}
}
}
override
fun
dismissProgressView
()
{
override
fun
dismissProgressView
()
{
...
@@ -1079,7 +1007,6 @@ class AudioHomeActivity :
...
@@ -1079,7 +1007,6 @@ class AudioHomeActivity :
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
e
.
printStackTrace
()
}
}
}
}
fun
uploadLog
()
{
fun
uploadLog
()
{
...
@@ -1089,26 +1016,18 @@ class AudioHomeActivity :
...
@@ -1089,26 +1016,18 @@ class AudioHomeActivity :
}
}
}
}
/**
/**
* 上传错误日志
* 上传错误日志
* zhu 洪平要的,判别是移动端主动调的还是声网返的
* zhu 洪平要的,判别是移动端主动调的还是声网返的
*/
*/
private
fun
uploadException
(
private
fun
uploadException
(
message
:
String
,
zhu
:
String
=
""
,
eventType
:
String
=
"99"
,
callback
:
YDLavManager
.
UploadExceptionCallback
?)
{
message
:
String
,
zhu
:
String
=
""
,
eventType
:
String
=
"99"
,
callback
:
YDLavManager
.
UploadExceptionCallback
?
)
{
var
time
:
String
=
(
System
.
currentTimeMillis
()
/
1000
).
toString
()
var
time
:
String
=
(
System
.
currentTimeMillis
()
/
1000
).
toString
()
var
uid
:
String
=
var
uid
:
String
=
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
!!
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
!!
var
payLoad
=
PayLoad
(
channelId
?:
"0"
,
time
,
uid
,
"1"
,
"999"
,
message
)
var
payLoad
=
PayLoad
(
channelId
?:
"0"
,
time
,
uid
,
"1"
,
"999"
,
message
)
var
connectException
=
ConnectExceptionCommand
(
time
+
zhu
,
"2"
,
eventType
,
payLoad
)
var
connectException
=
ConnectExceptionCommand
(
time
+
zhu
,
"2"
,
eventType
,
payLoad
)
YDLavManager
.
instances
.
uploadException
(
connectException
,
callback
)
YDLavManager
.
instances
.
uploadException
(
connectException
,
callback
)
}
}
fun
writeAgoraLog
(
content
:
String
,
isAppend
:
Boolean
=
true
)
{
fun
writeAgoraLog
(
content
:
String
,
isAppend
:
Boolean
=
true
)
{
try
{
try
{
AudioLogUtils
.
writeAgoraLog
(
content
,
"confide"
,
isAppend
)
AudioLogUtils
.
writeAgoraLog
(
content
,
"confide"
,
isAppend
)
...
@@ -1116,7 +1035,6 @@ class AudioHomeActivity :
...
@@ -1116,7 +1035,6 @@ class AudioHomeActivity :
}
}
}
}
override
fun
finishActivity
()
{
override
fun
finishActivity
()
{
leaveChannel
()
leaveChannel
()
}
}
...
...
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
View file @
8c3b433e
...
@@ -5,6 +5,8 @@ import android.content.Context
...
@@ -5,6 +5,8 @@ import android.content.Context
import
android.os.Handler
import
android.os.Handler
import
android.text.TextUtils
import
android.text.TextUtils
import
com.alibaba.android.arouter.launcher.ARouter
import
com.alibaba.android.arouter.launcher.ARouter
import
com.google.gson.Gson
import
com.ydl.audioim.bean.AgoraInvitationBean
import
com.ydl.audioim.http.AudioApiRequestUtil
import
com.ydl.audioim.http.AudioApiRequestUtil
import
com.ydl.audioim.http.command.ConnectExceptionCommand
import
com.ydl.audioim.http.command.ConnectExceptionCommand
import
com.ydl.audioim.router.AudioImIn
import
com.ydl.audioim.router.AudioImIn
...
@@ -25,6 +27,7 @@ import com.ydl.ydlcommon.utils.LogUtil
...
@@ -25,6 +27,7 @@ import com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack
import
com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack
import
com.yidianling.im.api.bean.IMSendCustomNotificationResultCallBack
import
com.yidianling.user.api.event.UserLoginEvent
import
com.yidianling.user.api.event.UserLoginEvent
import
com.yidianling.user.api.event.UserLogoutEvent
import
com.yidianling.user.api.event.UserLogoutEvent
import
com.yidianling.user.api.service.IUserService
import
com.yidianling.user.api.service.IUserService
...
@@ -95,7 +98,7 @@ class YDLavManager {
...
@@ -95,7 +98,7 @@ class YDLavManager {
//返回给主叫
//返回给主叫
LogUtil
.
e
(
"[agora]${response?.calleeId}已接收呼叫邀请"
)
LogUtil
.
e
(
"[agora]${response?.calleeId}已接收呼叫邀请"
)
//加入声网频道时机修改:用户收到专家
接受邀请的回调后再加入声网频道
//加入声网频道时机修改:主叫收到被叫
接受邀请的回调后再加入声网频道
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
runOnUiThread
{
...
@@ -111,6 +114,7 @@ class YDLavManager {
...
@@ -111,6 +114,7 @@ class YDLavManager {
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
runOnUiThread
{
callEndStatusUpdate
(
response
?.
ChannelId
!!
,
2
,
"被叫拒绝"
)
ToastUtil
.
toastShort
(
"对方已挂断"
)
ToastUtil
.
toastShort
(
"对方已挂断"
)
act
.
writeAgoraLog
(
"被叫拒绝了通话邀请"
)
act
.
writeAgoraLog
(
"被叫拒绝了通话邀请"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
...
@@ -148,6 +152,8 @@ class YDLavManager {
...
@@ -148,6 +152,8 @@ class YDLavManager {
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_INVITATION_EXPIRE
->
{
//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_INVITATION_EXPIRE
->
{
//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
if
(
act
is
AudioHomeActivity
)
{
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
runOnUiThread
{
sendCustomNotification
(
response
?.
calleeId
!!
,
response
?.
ChannelId
!!
,
"5"
)
callEndStatusUpdate
(
response
.
ChannelId
!!
,
2
,
"被叫超时未接听"
)
act
.
writeAgoraLog
(
"呼叫失败:${errorCode}"
)
act
.
writeAgoraLog
(
"呼叫失败:${errorCode}"
)
}
}
}
}
...
@@ -172,6 +178,7 @@ class YDLavManager {
...
@@ -172,6 +178,7 @@ class YDLavManager {
}
}
override
fun
onRemoteInvitationCanceled
(
response
:
CallRemoteResponse
?)
{
override
fun
onRemoteInvitationCanceled
(
response
:
CallRemoteResponse
?)
{
callEndStatusUpdate
(
response
?.
ChannelId
!!
,
1
,
"主叫取消呼叫"
)
//返回给被叫
//返回给被叫
LogUtil
.
e
(
"[agora]主叫${response?.callerId}已取消呼叫邀请"
)
LogUtil
.
e
(
"[agora]主叫${response?.callerId}已取消呼叫邀请"
)
AudioLogUtils
.
writeAgoraLog
(
"呼叫邀请被取消:主叫主动取消"
,
FILE_NAME
)
AudioLogUtils
.
writeAgoraLog
(
"呼叫邀请被取消:主叫主动取消"
,
FILE_NAME
)
...
@@ -186,6 +193,7 @@ class YDLavManager {
...
@@ -186,6 +193,7 @@ class YDLavManager {
}
else
{
}
else
{
AudioLogUtils
.
writeAgoraLog
(
"呼叫邀请被取消:错误原因(${errorCode})"
,
FILE_NAME
)
AudioLogUtils
.
writeAgoraLog
(
"呼叫邀请被取消:错误原因(${errorCode})"
,
FILE_NAME
)
}
}
callEndStatusUpdate
(
response
?.
ChannelId
!!
,
2
,
"超时未接听导致的取消呼叫"
)
//关闭页面
//关闭页面
closePage
()
closePage
()
}
}
...
@@ -197,18 +205,67 @@ class YDLavManager {
...
@@ -197,18 +205,67 @@ class YDLavManager {
AudioImIn
.
registerObserveCustomNotification
(
object
:
AudioImIn
.
registerObserveCustomNotification
(
object
:
IMRegisterObserverCustomNotificationCallBack
{
IMRegisterObserverCustomNotificationCallBack
{
override
fun
onObserverCustomNotification
(
content
:
String
)
{
override
fun
onObserverCustomNotification
(
fromUid
:
String
,
toUid
:
String
,
content
:
String
)
{
LogUtil
.
e
(
"[agora]收到云信的通知消息:$content"
)
val
agoraInvitationBean
=
Gson
().
fromJson
(
content
,
AgoraInvitationBean
::
class
.
java
)
//1发起呼叫 2接受呼叫 3取消呼叫 4拒绝呼叫邀请 5呼叫超时
when
(
agoraInvitationBean
.
callType
)
{
"1"
->
{
receivedCall
(
agoraInvitationBean
.
data
,
"来自云信"
)
}
"2"
->
{
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
joinChannel
()
}
}
}
"3"
->
{
AudioLogUtils
.
writeAgoraLog
(
"呼叫邀请被取消:主叫主动取消"
,
FILE_NAME
)
closePage
()
}
"4"
->
{
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
ToastUtil
.
toastShort
(
"对方已挂断"
)
act
.
writeAgoraLog
(
"被叫拒绝了通话邀请"
)
//通话结束或挂断时,上传日志文件
act
.
uploadLog
()
act
.
leaveChannel
()
}
}
}
"5"
->
{
AudioLogUtils
.
writeAgoraLog
(
"呼叫邀请被取消:呼叫邀请过期"
,
FILE_NAME
)
//关闭页面
closePage
()
}
}
}
}
})
})
}
}
fun
rtcCall
(
listenerUid
:
String
?,
channelId
:
String
?,
sendDoctocrMsg
:
String
?)
{
fun
rtcCall
(
listenerUid
:
String
?,
channelId
:
String
?,
sendDoctocrMsg
:
String
?)
{
YDLRTMClient
.
instances
.
call
(
listenerUid
,
channelId
,
sendDoctocrMsg
)
YDLRTMClient
.
instances
.
call
(
listenerUid
,
channelId
,
sendDoctocrMsg
)
sendCustomNotification
(
listenerUid
!!
,
sendDoctocrMsg
!!
,
"1"
)
}
fun
acceptCall
(
toUid
:
String
,
channelId
:
String
?,
data
:
String
)
{
YDLRTMClient
.
instances
.
acceptCall
(
channelId
)
sendCustomNotification
(
toUid
,
data
,
"2"
)
}
fun
refuseCall
(
toUid
:
String
,
channelId
:
String
?,
data
:
String
)
{
YDLRTMClient
.
instances
.
refuseCall
(
channelId
)
sendCustomNotification
(
toUid
,
data
,
"4"
)
}
}
fun
cancelCall
(
listenerUid
:
String
,
channelId
:
String
,
event
:
(
msg
:
String
?,
code
:
Int
)
->
Unit
)
{
fun
cancelCall
(
listenerUid
:
String
,
channelId
:
String
,
data
:
String
,
event
:
(
msg
:
String
?,
code
:
Int
)
->
Unit
)
{
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
object
:
CancelCallStatusListener
{
object
:
CancelCallStatusListener
{
override
fun
onFailure
(
errorMsg
:
String
?,
errorCode
:
Int
)
{
override
fun
onFailure
(
errorMsg
:
String
?,
errorCode
:
Int
)
{
event
(
errorMsg
,
errorCode
)
event
(
errorMsg
,
errorCode
)
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
null
)
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
null
)
...
@@ -217,6 +274,26 @@ class YDLavManager {
...
@@ -217,6 +274,26 @@ class YDLavManager {
override
fun
onSuccess
()
{
override
fun
onSuccess
()
{
}
}
})
})
callEndStatusUpdate
(
channelId
,
1
,
"主叫取消呼叫"
)
sendCustomNotification
(
listenerUid
,
data
,
"3"
)
}
private
fun
sendCustomNotification
(
toUid
:
String
,
data
:
String
,
callType
:
String
)
{
val
infoBean
=
AgoraInvitationBean
()
infoBean
.
data
=
data
infoBean
.
callType
=
callType
AudioImIn
.
sendCustomNotification
(
toUid
,
Gson
().
toJson
(
infoBean
),
object
:
IMSendCustomNotificationResultCallBack
{
override
fun
onException
(
throwable
:
Throwable
)
{
}
override
fun
onFailed
(
code
:
Int
)
{
}
override
fun
onSuccess
()
{
}
})
}
}
fun
login
(
userId
:
String
?)
{
fun
login
(
userId
:
String
?)
{
...
@@ -237,9 +314,7 @@ class YDLavManager {
...
@@ -237,9 +314,7 @@ class YDLavManager {
.
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
({
.
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
({
if
(
"200"
.
equals
(
it
.
code
))
{
if
(
"200"
.
equals
(
it
.
code
))
{
LogUtil
.
e
(
"[agora]登录av的login-uid:$userId"
)
LogUtil
.
e
(
"[agora]登录av的login-uid:$userId"
)
YDLRTMClient
.
instances
.
login
(
YDLRTMClient
.
instances
.
login
(
LoginParam
(
userId
,
it
.
data
.
token
),
object
:
LoginCallback
{
LoginParam
(
userId
,
it
.
data
.
token
),
object
:
LoginCallback
{
override
fun
onSuccess
()
{
override
fun
onSuccess
()
{
//登陆成功,发起呼叫
//登陆成功,发起呼叫
LogUtil
.
e
(
"[agora]实时消息登录成功"
)
LogUtil
.
e
(
"[agora]实时消息登录成功"
)
...
@@ -253,8 +328,7 @@ class YDLavManager {
...
@@ -253,8 +328,7 @@ class YDLavManager {
})
})
}
else
{
}
else
{
LogUtil
.
e
(
"声网token获取失败uid:"
+
userId
+
" error:"
+
it
.
msg
)
LogUtil
.
e
(
"声网token获取失败uid:"
+
userId
+
" error:"
+
it
.
msg
)
LogHelper
.
getInstance
()
LogHelper
.
getInstance
().
writeLogSync
(
"声网token获取失败uid:"
+
userId
+
" error:"
+
it
.
msg
)
.
writeLogSync
(
"声网token获取失败uid:"
+
userId
+
" error:"
+
it
.
msg
)
}
}
},
{
},
{
LogUtil
.
e
(
"声网token获取异常uid:"
+
userId
+
" error:"
+
it
.
message
)
LogUtil
.
e
(
"声网token获取异常uid:"
+
userId
+
" error:"
+
it
.
message
)
...
@@ -269,9 +343,7 @@ class YDLavManager {
...
@@ -269,9 +343,7 @@ class YDLavManager {
if
(!
TextUtils
.
isEmpty
(
content
))
{
if
(!
TextUtils
.
isEmpty
(
content
))
{
//如果已经接听了用户电话 再有电话进来 是不能接听的
//如果已经接听了用户电话 再有电话进来 是不能接听的
if
(!
activityIsExists
(
ConsultantAudioHomeActivity
::
class
.
java
)
&&
!
activityIsExists
(
if
(!
activityIsExists
(
ConsultantAudioHomeActivity
::
class
.
java
)
&&
!
activityIsExists
(
AudioHomeActivity
::
class
.
java
AudioHomeActivity
::
class
.
java
))
{
)
)
{
//延时启动通话界面,防止刚打开就被main遮挡
//延时启动通话界面,防止刚打开就被main遮挡
Observable
.
timer
(
1000
,
TimeUnit
.
MILLISECONDS
).
subscribeOn
(
Schedulers
.
io
())
Observable
.
timer
(
1000
,
TimeUnit
.
MILLISECONDS
).
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
{
.
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
{
...
@@ -337,8 +409,7 @@ class YDLavManager {
...
@@ -337,8 +409,7 @@ class YDLavManager {
fun
uploadException
(
connectException
:
ConnectExceptionCommand
,
fun
uploadException
(
connectException
:
ConnectExceptionCommand
,
callback
:
UploadExceptionCallback
?)
{
callback
:
UploadExceptionCallback
?)
{
AudioApiRequestUtil
.
connectException
(
connectException
).
subscribeOn
(
Schedulers
.
io
())
AudioApiRequestUtil
.
connectException
(
connectException
).
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
({
.
subscribe
({
callback
?.
onSuccess
()
callback
?.
onSuccess
()
},
{
},
{
LogUtil
.
e
(
"agora"
,
"声网上传异常与错误日志接口调用失败:"
+
it
.
message
)
LogUtil
.
e
(
"agora"
,
"声网上传异常与错误日志接口调用失败:"
+
it
.
message
)
...
@@ -352,6 +423,16 @@ class YDLavManager {
...
@@ -352,6 +423,16 @@ class YDLavManager {
fun
onSuccess
()
fun
onSuccess
()
}
}
@SuppressLint
(
"CheckResult"
)
fun
callEndStatusUpdate
(
channelId
:
String
,
endStatus
:
Int
,
msg
:
String
)
{
AudioApiRequestUtil
.
callEndStatusUpdate
(
channelId
,
endStatus
,
msg
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
({
},
{
})
}
/**
/**
* 实时消息全局监听
* 实时消息全局监听
*/
*/
...
...
m-audioim/src/main/java/com/ydl/audioim/bean/AgoraInvitationBean.java
0 → 100644
View file @
8c3b433e
package
com
.
ydl
.
audioim
.
bean
;
/**
* @author jiucheng
* @描述:自定义的Invitation
* @Copyright Copyright (c) 2018
* @Company 壹点灵
* @date 2020/4/23
*/
public
class
AgoraInvitationBean
{
public
String
data
;
public
String
business
=
"agora"
;
public
String
callType
;
//1发起呼叫 2接受呼叫 3取消呼叫 4拒绝呼叫邀请 5呼叫超时
}
m-audioim/src/main/java/com/ydl/audioim/http/AudioApiRequestUtil.kt
View file @
8c3b433e
...
@@ -3,7 +3,9 @@ package com.ydl.audioim.http
...
@@ -3,7 +3,9 @@ package com.ydl.audioim.http
import
com.google.gson.Gson
import
com.google.gson.Gson
import
com.ydl.audioim.bean.AgoraTokenResponse
import
com.ydl.audioim.bean.AgoraTokenResponse
import
com.ydl.audioim.bean.ConnectBean
import
com.ydl.audioim.bean.ConnectBean
import
com.ydl.audioim.http.command.*
import
com.ydl.audioim.http.command.ConnectCommand
import
com.ydl.audioim.http.command.ConnectExceptionCommand
import
com.ydl.audioim.http.command.NoticePushCommand
import
com.ydl.consultantim.bean.ListenTokenBean
import
com.ydl.consultantim.bean.ListenTokenBean
import
com.ydl.consultantim.command.ListenTokenCmd
import
com.ydl.consultantim.command.ListenTokenCmd
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
...
@@ -29,8 +31,7 @@ class AudioApiRequestUtil {
...
@@ -29,8 +31,7 @@ class AudioApiRequestUtil {
*/
*/
fun
connectListen
(
cmd
:
ConnectCommand
):
Observable
<
BaseAPIResponse
<
ConnectBean
>>
{
fun
connectListen
(
cmd
:
ConnectCommand
):
Observable
<
BaseAPIResponse
<
ConnectBean
>>
{
return
RxUtils
.
mapObservable
(
cmd
)
return
RxUtils
.
mapObservable
(
cmd
)
.
flatMap
{
.
flatMap
{
it
->
it
->
YDLHttpUtils
.
obtainApi
(
AudioNetAPi
::
class
.
java
).
connectListen
(
it
)
YDLHttpUtils
.
obtainApi
(
AudioNetAPi
::
class
.
java
).
connectListen
(
it
)
}
}
}
}
...
@@ -85,15 +86,19 @@ class AudioApiRequestUtil {
...
@@ -85,15 +86,19 @@ class AudioApiRequestUtil {
/**
/**
* 获取声网登录token
* 获取声网登录token
*/
*/
fun
getAgoraToken
():
Observable
<
BaseAPIResponse
<
AgoraTokenResponse
>>{
fun
getAgoraToken
():
Observable
<
BaseAPIResponse
<
AgoraTokenResponse
>>
{
return
YDLHttpUtils
.
obtainApi
(
AudioNetAPi
::
class
.
java
).
getAgoraToken
()
return
YDLHttpUtils
.
obtainApi
(
AudioNetAPi
::
class
.
java
).
getAgoraToken
()
}
}
/**
/**
* 获取声网登录token
* 获取声网登录token
*/
*/
fun
listenToken
(
cmd
:
ListenTokenCmd
):
Observable
<
BaseResponse
<
ListenTokenBean
>>{
fun
listenToken
(
cmd
:
ListenTokenCmd
):
Observable
<
BaseResponse
<
ListenTokenBean
>>
{
return
YDLHttpUtils
.
obtainApi
(
AudioNetAPi
::
class
.
java
).
listenToken
(
NetworkParamsUtils
.
getMaps
(
cmd
))
return
YDLHttpUtils
.
obtainApi
(
AudioNetAPi
::
class
.
java
).
listenToken
(
NetworkParamsUtils
.
getMaps
(
cmd
))
}
}
fun
callEndStatusUpdate
(
channelId
:
String
,
endStatus
:
Int
,
msg
:
String
):
Observable
<
BaseResponse
<
Any
>>
{
return
YDLHttpUtils
.
obtainApi
(
AudioNetAPi
::
class
.
java
).
callEndStatusUpdate
(
channelId
,
endStatus
,
msg
)
}
}
}
}
}
\ No newline at end of file
m-audioim/src/main/java/com/ydl/audioim/http/AudioNetAPi.kt
View file @
8c3b433e
...
@@ -69,4 +69,7 @@ interface AudioNetAPi {
...
@@ -69,4 +69,7 @@ interface AudioNetAPi {
fun
listenToken
(
@FieldMap
map
:
Map
<
String
,
String
>):
Observable
<
BaseResponse
<
ListenTokenBean
>>
fun
listenToken
(
@FieldMap
map
:
Map
<
String
,
String
>):
Observable
<
BaseResponse
<
ListenTokenBean
>>
@GET
(
"message/call-end/agora"
)
fun
callEndStatusUpdate
(
channelId
:
String
,
endStatus
:
Int
,
msg
:
String
):
Observable
<
BaseResponse
<
Any
>>
}
}
\ No newline at end of file
m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt
View file @
8c3b433e
...
@@ -35,7 +35,6 @@ import com.ydl.consultantim.presenter.ConsultantAudioHomePresenterImpl
...
@@ -35,7 +35,6 @@ import com.ydl.consultantim.presenter.ConsultantAudioHomePresenterImpl
import
com.ydl.consultantim.utils.ConsultantAudioUtils
import
com.ydl.consultantim.utils.ConsultantAudioUtils
import
com.ydl.consultantim.utils.VibratorUtil
import
com.ydl.consultantim.utils.VibratorUtil
import
com.ydl.ydl_av.chat.bean.AudioMessageBean
import
com.ydl.ydl_av.chat.bean.AudioMessageBean
import
com.ydl.ydl_av.messge_service.YDLRTMClient
import
com.ydl.ydl_av.voice.listener.IYDLVoiceEventHandler
import
com.ydl.ydl_av.voice.listener.IYDLVoiceEventHandler
import
com.ydl.ydl_av.voice.manager.YDLVoiceManager
import
com.ydl.ydl_av.voice.manager.YDLVoiceManager
import
com.ydl.ydl_image.config.SimpleImageOpConfiger
import
com.ydl.ydl_image.config.SimpleImageOpConfiger
...
@@ -58,7 +57,17 @@ import io.reactivex.Observable
...
@@ -58,7 +57,17 @@ import io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.disposables.Disposable
import
io.reactivex.disposables.Disposable
import
io.reactivex.schedulers.Schedulers
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.*
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.iv_hands_free
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.iv_head
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.rl_call
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.rl_hands_free
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.rl_remain_time
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.tv_name
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.tv_nte_status
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.tv_remain_time
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.tv_tips
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.tv_toast
import
kotlinx.android.synthetic.main.audioim_cativity_consultant_audio_home.wave_view
import
java.util.concurrent.TimeUnit
import
java.util.concurrent.TimeUnit
/**
/**
...
@@ -69,10 +78,7 @@ import java.util.concurrent.TimeUnit
...
@@ -69,10 +78,7 @@ import java.util.concurrent.TimeUnit
* @date 2018/10/30
* @date 2018/10/30
*/
*/
@Route
(
path
=
"/av/ConsultantAudioHomeActivity"
)
@Route
(
path
=
"/av/ConsultantAudioHomeActivity"
)
class
ConsultantAudioHomeActivity
:
class
ConsultantAudioHomeActivity
:
BaseMvpActivity
<
IConsultantAudioHomeActivityContract
.
View
,
IConsultantAudioHomeActivityContract
.
Presenter
>(),
IConsultantAudioHomeActivityContract
.
View
,
SensorEventListener
{
BaseMvpActivity
<
IConsultantAudioHomeActivityContract
.
View
,
IConsultantAudioHomeActivityContract
.
Presenter
>(),
IConsultantAudioHomeActivityContract
.
View
,
SensorEventListener
{
//语音管理类
//语音管理类
private
var
voiceManage
:
YDLVoiceManager
?
=
null
private
var
voiceManage
:
YDLVoiceManager
?
=
null
...
@@ -99,7 +105,7 @@ class ConsultantAudioHomeActivity :
...
@@ -99,7 +105,7 @@ class ConsultantAudioHomeActivity :
private
var
connectingStatusDisposable
:
Disposable
?
=
null
private
var
connectingStatusDisposable
:
Disposable
?
=
null
//频道管理器
//频道管理器
// private var channelManager: ChannelManager? = null
// private var channelManager: ChannelManager? = null
//频道token
//频道token
private
var
channelToken
:
String
?
=
null
private
var
channelToken
:
String
?
=
null
...
@@ -134,7 +140,8 @@ class ConsultantAudioHomeActivity :
...
@@ -134,7 +140,8 @@ class ConsultantAudioHomeActivity :
runOnUiThread
{
runOnUiThread
{
// 加入频道后再通知用户已接受
// 加入频道后再通知用户已接受
YDLRTMClient
.
instances
.
acceptCall
(
mAudioMessageBean
?.
channelId
)
// YDLRTMClient.instances.acceptCall(mAudioMessageBean?.channelId)
YDLavManager
.
instances
.
acceptCall
(
mAudioMessageBean
!!
.
userId
!!
,
mAudioMessageBean
?.
channelId
,
Gson
().
toJson
(
mAudioMessageBean
))
tv_toast
.
visibility
=
View
.
VISIBLE
tv_toast
.
visibility
=
View
.
VISIBLE
tv_toast
.
text
=
"连接中..."
tv_toast
.
text
=
"连接中..."
...
@@ -169,7 +176,6 @@ class ConsultantAudioHomeActivity :
...
@@ -169,7 +176,6 @@ class ConsultantAudioHomeActivity :
}
}
}
}
override
fun
onUserJoined
(
uid
:
Int
,
elapsed
:
Int
)
{
override
fun
onUserJoined
(
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onUserJoined
(
uid
,
elapsed
)
super
.
onUserJoined
(
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]远端用户加入频道回调"
)
LogUtil
.
e
(
"[agora]远端用户加入频道回调"
)
...
@@ -185,7 +191,6 @@ class ConsultantAudioHomeActivity :
...
@@ -185,7 +191,6 @@ class ConsultantAudioHomeActivity :
}
}
}
}
override
fun
onRtcStats
(
stats
:
IRtcEngineEventHandler
.
RtcStats
?)
{
override
fun
onRtcStats
(
stats
:
IRtcEngineEventHandler
.
RtcStats
?)
{
}
}
...
@@ -194,6 +199,8 @@ class ConsultantAudioHomeActivity :
...
@@ -194,6 +199,8 @@ class ConsultantAudioHomeActivity :
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
if
(
reason
==
3
)
{
if
(
reason
==
3
)
{
showToast
(
"对方已挂断"
)
showToast
(
"对方已挂断"
)
YDLavManager
.
instances
.
callEndStatusUpdate
(
mAudioMessageBean
?.
channelId
!!
,
4
,
"服务端踢人触发的回调"
)
writeAgoraLog
(
"通话挂断:网络连接被服务器中止"
)
writeAgoraLog
(
"通话挂断:网络连接被服务器中止"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
...
@@ -231,6 +238,7 @@ class ConsultantAudioHomeActivity :
...
@@ -231,6 +238,7 @@ class ConsultantAudioHomeActivity :
super
.
onUserOffline
(
uid
,
elapsed
)
super
.
onUserOffline
(
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]$uid 主播离开频道回调"
)
LogUtil
.
e
(
"[agora]$uid 主播离开频道回调"
)
runOnUiThread
{
runOnUiThread
{
YDLavManager
.
instances
.
callEndStatusUpdate
(
mAudioMessageBean
?.
channelId
!!
,
4
,
"对方离开频道"
)
showToast
(
"对方已挂断"
)
showToast
(
"对方已挂断"
)
writeAgoraLog
(
"通话接通后挂断:主叫离开频道"
)
writeAgoraLog
(
"通话接通后挂断:主叫离开频道"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
...
@@ -258,6 +266,7 @@ class ConsultantAudioHomeActivity :
...
@@ -258,6 +266,7 @@ class ConsultantAudioHomeActivity :
runOnUiThread
{
runOnUiThread
{
when
(
warn
)
{
when
(
warn
)
{
103
,
105
,
107
->
{
103
,
105
,
107
->
{
YDLavManager
.
instances
.
callEndStatusUpdate
(
mAudioMessageBean
?.
channelId
!!
,
4
,
"收到频道回调警告信息${warn}"
)
writeAgoraLog
(
"通话挂断:网络异常($warn)"
)
writeAgoraLog
(
"通话挂断:网络异常($warn)"
)
showToast
(
"当前网络较差,请更换网络!"
)
showToast
(
"当前网络较差,请更换网络!"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
...
@@ -272,6 +281,7 @@ class ConsultantAudioHomeActivity :
...
@@ -272,6 +281,7 @@ class ConsultantAudioHomeActivity :
super
.
onError
(
err
)
super
.
onError
(
err
)
uploadException
(
"mRtcEventHandler-onError:errorCode--%${err}"
)
uploadException
(
"mRtcEventHandler-onError:errorCode--%${err}"
)
LogUtil
.
e
(
"[agora] 发生错误回调 =$err"
)
LogUtil
.
e
(
"[agora] 发生错误回调 =$err"
)
//3:SDK 初始化失败。Agora 建议尝试以下处理方法
//3:SDK 初始化失败。Agora 建议尝试以下处理方法
//7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化
//7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化
//10:API 调用超时。有些 API 调用需要 SDK 返回结果,如果 SDK 处理时间过长,超过 10 秒没有返回,会出现此错误
//10:API 调用超时。有些 API 调用需要 SDK 返回结果,如果 SDK 处理时间过长,超过 10 秒没有返回,会出现此错误
...
@@ -302,12 +312,13 @@ class ConsultantAudioHomeActivity :
...
@@ -302,12 +312,13 @@ class ConsultantAudioHomeActivity :
close
(
RESULT_NOT_ANSWERED_CODE
,
"频道错误,请联系技术"
)
close
(
RESULT_NOT_ANSWERED_CODE
,
"频道错误,请联系技术"
)
}
}
123
->
{
123
->
{
// showToast("对方不允许接听电话,请联系客服")
// showToast("对方不允许接听电话,请联系客服")
// close(RESULT_NOT_ANSWERED_CODE, "该专家不允许接听电话,请联系客服")
// close(RESULT_NOT_ANSWERED_CODE, "该专家不允许接听电话,请联系客服")
}
}
else
->
{
else
->
{
}
}
}
}
YDLavManager
.
instances
.
callEndStatusUpdate
(
mAudioMessageBean
?.
channelId
!!
,
4
,
"频道的错误回调信息${err}"
)
}
}
}
}
...
@@ -321,7 +332,7 @@ class ConsultantAudioHomeActivity :
...
@@ -321,7 +332,7 @@ class ConsultantAudioHomeActivity :
}
else
if
(
txQuality
>=
5
||
rxQuality
>=
5
)
{
}
else
if
(
txQuality
>=
5
||
rxQuality
>=
5
)
{
"对方的网络已断开"
"对方的网络已断开"
}
else
{
}
else
{
status
=
if
(
txQuality
>=
4
||
rxQuality
>=
4
)
{
status
=
if
(
txQuality
>=
4
||
rxQuality
>=
4
)
{
0
0
}
else
{
}
else
{
1
1
...
@@ -335,7 +346,7 @@ class ConsultantAudioHomeActivity :
...
@@ -335,7 +346,7 @@ class ConsultantAudioHomeActivity :
}
else
if
(
txQuality
>=
5
||
rxQuality
>=
5
)
{
}
else
if
(
txQuality
>=
5
||
rxQuality
>=
5
)
{
"您的网络已断开"
"您的网络已断开"
}
else
{
}
else
{
status
=
if
(
txQuality
>=
4
||
rxQuality
>=
4
)
{
status
=
if
(
txQuality
>=
4
||
rxQuality
>=
4
)
{
0
0
}
else
{
}
else
{
1
1
...
@@ -352,7 +363,6 @@ class ConsultantAudioHomeActivity :
...
@@ -352,7 +363,6 @@ class ConsultantAudioHomeActivity :
}
}
}
}
override
fun
createPresenter
():
IConsultantAudioHomeActivityContract
.
Presenter
{
override
fun
createPresenter
():
IConsultantAudioHomeActivityContract
.
Presenter
{
return
ConsultantAudioHomePresenterImpl
()
return
ConsultantAudioHomePresenterImpl
()
}
}
...
@@ -372,7 +382,6 @@ class ConsultantAudioHomeActivity :
...
@@ -372,7 +382,6 @@ class ConsultantAudioHomeActivity :
const
val
RESULT_USER_CANCEL
=
668
const
val
RESULT_USER_CANCEL
=
668
}
}
override
fun
initDataAndEvent
()
{
override
fun
initDataAndEvent
()
{
EventBus
.
getDefault
().
register
(
this
)
EventBus
.
getDefault
().
register
(
this
)
//状态栏颜色
//状态栏颜色
...
@@ -393,7 +402,6 @@ class ConsultantAudioHomeActivity :
...
@@ -393,7 +402,6 @@ class ConsultantAudioHomeActivity :
StatusBarUtils
.
setWindowStatusBarColor
(
this
,
R
.
color
.
audioim_color_40353535
)
StatusBarUtils
.
setWindowStatusBarColor
(
this
,
R
.
color
.
audioim_color_40353535
)
}
}
private
fun
getParam
()
{
private
fun
getParam
()
{
if
(
null
==
intent
)
{
if
(
null
==
intent
)
{
close
(
RESULT_NOT_ANSWERED_CODE
,
"通话异常"
)
close
(
RESULT_NOT_ANSWERED_CODE
,
"通话异常"
)
...
@@ -407,8 +415,7 @@ class ConsultantAudioHomeActivity :
...
@@ -407,8 +415,7 @@ class ConsultantAudioHomeActivity :
if
(
YDLavManager
.
sdkStatus
!=
Constants
.
CONNECTION_STATE_CONNECTED
)
{
if
(
YDLavManager
.
sdkStatus
!=
Constants
.
CONNECTION_STATE_CONNECTED
)
{
writeAgoraLog
(
"RMT状态:${YDLavManager.sdkStatus},重新登录RMT"
)
writeAgoraLog
(
"RMT状态:${YDLavManager.sdkStatus},重新登录RMT"
)
val
uid
=
val
uid
=
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
YDLavManager
.
instances
.
login
(
uid
)
{
_isSuccess
,
_msg
->
YDLavManager
.
instances
.
login
(
uid
)
{
_isSuccess
,
_msg
->
writeAgoraLog
(
"登录RTM的uid=${uid}"
)
writeAgoraLog
(
"登录RTM的uid=${uid}"
)
val
result
=
if
(
_isSuccess
)
"RMT登录成功"
else
"RMT登录失败:$_msg"
val
result
=
if
(
_isSuccess
)
"RMT登录成功"
else
"RMT登录失败:$_msg"
...
@@ -429,10 +436,7 @@ class ConsultantAudioHomeActivity :
...
@@ -429,10 +436,7 @@ class ConsultantAudioHomeActivity :
sensorManager
=
getSystemService
(
Context
.
SENSOR_SERVICE
)
as
SensorManager
?
sensorManager
=
getSystemService
(
Context
.
SENSOR_SERVICE
)
as
SensorManager
?
localPowerManager
=
getSystemService
(
POWER_SERVICE
)
as
PowerManager
?
localPowerManager
=
getSystemService
(
POWER_SERVICE
)
as
PowerManager
?
localWakeLock
=
localPowerManager
!!
.
newWakeLock
(
localWakeLock
=
localPowerManager
!!
.
newWakeLock
(
PowerManager
.
PROXIMITY_SCREEN_OFF_WAKE_LOCK
,
"yidianling"
)
PowerManager
.
PROXIMITY_SCREEN_OFF_WAKE_LOCK
,
"yidianling"
)
}
}
/**
/**
...
@@ -475,7 +479,6 @@ class ConsultantAudioHomeActivity :
...
@@ -475,7 +479,6 @@ class ConsultantAudioHomeActivity :
//间接性震动手机
//间接性震动手机
VibratorUtil
.
vibrate
(
AudioHomeActivity
@
this
,
longArrayOf
(
1000
,
1000
,
1000
,
1000
),
true
)
VibratorUtil
.
vibrate
(
AudioHomeActivity
@
this
,
longArrayOf
(
1000
,
1000
,
1000
,
1000
),
true
)
}
}
/**
/**
...
@@ -487,7 +490,6 @@ class ConsultantAudioHomeActivity :
...
@@ -487,7 +490,6 @@ class ConsultantAudioHomeActivity :
mPresenter
.
getChannelToken
(
mAudioMessageBean
,
false
)
mPresenter
.
getChannelToken
(
mAudioMessageBean
,
false
)
}
}
override
fun
channelTokenResponse
(
token
:
String
?,
needJoinChannel
:
Boolean
)
{
override
fun
channelTokenResponse
(
token
:
String
?,
needJoinChannel
:
Boolean
)
{
if
(
TextUtils
.
isEmpty
(
token
))
{
if
(
TextUtils
.
isEmpty
(
token
))
{
LogUtil
.
e
(
"[agora]token not null"
)
LogUtil
.
e
(
"[agora]token not null"
)
...
@@ -514,13 +516,11 @@ class ConsultantAudioHomeActivity :
...
@@ -514,13 +516,11 @@ class ConsultantAudioHomeActivity :
rl_hands_free
.
visibility
=
View
.
VISIBLE
rl_hands_free
.
visibility
=
View
.
VISIBLE
}
}
//申请音频权限
//申请音频权限
@SuppressLint
(
"CheckResult"
)
@SuppressLint
(
"CheckResult"
)
private
fun
requestPermission
()
{
private
fun
requestPermission
()
{
val
rxPermissions
=
RxPermissions
(
this
)
val
rxPermissions
=
RxPermissions
(
this
)
rxPermissions
.
requestEach
(
Manifest
.
permission
.
RECORD_AUDIO
)
rxPermissions
.
requestEach
(
Manifest
.
permission
.
RECORD_AUDIO
).
subscribe
{
permission
->
.
subscribe
{
permission
->
when
{
when
{
//权限已申请 进行初始化操作
//权限已申请 进行初始化操作
permission
.
granted
->
init
()
permission
.
granted
->
init
()
...
@@ -559,7 +559,6 @@ class ConsultantAudioHomeActivity :
...
@@ -559,7 +559,6 @@ class ConsultantAudioHomeActivity :
voiceManage
!!
.
init
()
voiceManage
!!
.
init
()
}
}
/**
/**
* 加入频道
* 加入频道
*/
*/
...
@@ -567,14 +566,11 @@ class ConsultantAudioHomeActivity :
...
@@ -567,14 +566,11 @@ class ConsultantAudioHomeActivity :
val
account
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
()
val
account
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
()
if
(!
TextUtils
.
isEmpty
(
mAudioMessageBean
?.
channelId
))
{
if
(!
TextUtils
.
isEmpty
(
mAudioMessageBean
?.
channelId
))
{
LogUtil
.
e
(
"[agora] joinChannel:$account"
)
LogUtil
.
e
(
"[agora] joinChannel:$account"
)
voiceManage
?.
getVoiceApi
()
?.
joinChannel
(
voiceManage
?.
getVoiceApi
()
?.
joinChannel
(
channelToken
channelToken
?:
""
,
mAudioMessageBean
!!
.
channelId
!!
,
"Extra Optional Data"
,
account
)
?:
""
,
mAudioMessageBean
!!
.
channelId
!!
,
"Extra Optional Data"
,
account
)
}
}
}
}
override
fun
executeFinish
()
{
override
fun
executeFinish
()
{
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
...
@@ -591,10 +587,7 @@ class ConsultantAudioHomeActivity :
...
@@ -591,10 +587,7 @@ class ConsultantAudioHomeActivity :
rl_remain_time
.
visibility
=
View
.
VISIBLE
rl_remain_time
.
visibility
=
View
.
VISIBLE
totalDisposable
=
Observable
.
interval
(
0
,
1
,
TimeUnit
.
SECONDS
)
totalDisposable
=
Observable
.
interval
(
0
,
1
,
TimeUnit
.
SECONDS
).
subscribeOn
(
Schedulers
.
computation
()).
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
({
.
subscribeOn
(
Schedulers
.
computation
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
tv_remain_time
.
text
=
DateUtils
.
formatTime
(
it
.
toString
())
tv_remain_time
.
text
=
DateUtils
.
formatTime
(
it
.
toString
())
},
{
},
{
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
...
@@ -610,15 +603,16 @@ class ConsultantAudioHomeActivity :
...
@@ -610,15 +603,16 @@ class ConsultantAudioHomeActivity :
status
=
STATUS_NOT_ANSWERED
status
=
STATUS_NOT_ANSWERED
}
}
private
fun
showStopService
()
{
private
fun
showStopService
()
{
if
(
status
==
STATUS_NOT_ANSWERED
)
{
if
(
status
==
STATUS_NOT_ANSWERED
)
{
YDLavManager
.
instances
.
callEndStatusUpdate
(
mAudioMessageBean
?.
channelId
!!
,
2
,
"被叫主动拒绝"
)
writeAgoraLog
(
"通话未接通挂断:主动挂断"
)
writeAgoraLog
(
"通话未接通挂断:主动挂断"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
//当未接听 直接挂断 要发送给老师一条消息
//当未接听 直接挂断 要发送给老师一条消息
close
(
RESULT_NOT_ANSWERED_CODE
,
"用户已挂断"
)
close
(
RESULT_NOT_ANSWERED_CODE
,
"用户已挂断"
)
}
else
if
(
status
==
STATUS_ANSWERED
)
{
}
else
if
(
status
==
STATUS_ANSWERED
)
{
YDLavManager
.
instances
.
callEndStatusUpdate
(
mAudioMessageBean
?.
channelId
!!
,
3
,
"被叫主动拒绝"
)
writeAgoraLog
(
"通话接通后挂断:专家主动挂断"
)
writeAgoraLog
(
"通话接通后挂断:专家主动挂断"
)
//正常接听 挂断电话 需要重置信令管理类状态
//正常接听 挂断电话 需要重置信令管理类状态
close
(
RESULT_ANSWERED_CODE
,
""
)
close
(
RESULT_ANSWERED_CODE
,
""
)
...
@@ -626,7 +620,6 @@ class ConsultantAudioHomeActivity :
...
@@ -626,7 +620,6 @@ class ConsultantAudioHomeActivity :
}
}
override
fun
listenStatusPushResponse
()
{
override
fun
listenStatusPushResponse
()
{
}
}
/**
/**
...
@@ -639,12 +632,7 @@ class ConsultantAudioHomeActivity :
...
@@ -639,12 +632,7 @@ class ConsultantAudioHomeActivity :
}
}
showStopService
()
showStopService
()
ActionCountUtils
.
count
(
ActionCountUtils
.
count
(
"shengwang_popup_layer_page|shengwang_popup_layer_refuse_click"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
())
"shengwang_popup_layer_page|shengwang_popup_layer_refuse_click"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
()
)
}
}
/**
/**
...
@@ -658,17 +646,13 @@ class ConsultantAudioHomeActivity :
...
@@ -658,17 +646,13 @@ class ConsultantAudioHomeActivity :
//调用接口判断邀请专家的用户当前是否在频道内,如果在,则专家加入频道,如果不在,则提示用户已挂断
//调用接口判断邀请专家的用户当前是否在频道内,如果在,则专家加入频道,如果不在,则提示用户已挂断
//更改逻辑:现在是专家先进频道,这个接口暂时只作为参考
//更改逻辑:现在是专家先进频道,这个接口暂时只作为参考
// presenter.userIsInChannel(mAudioMessageBean?.channelId ?: "", mAudioMessageBean?.userId
// presenter.userIsInChannel(mAudioMessageBean?.channelId ?: "", mAudioMessageBean?.userId
// ?: "")
// ?: "")
executeCall
(
true
)
executeCall
(
true
)
ActionCountUtils
.
count
(
ActionCountUtils
.
count
(
"shengwang_popup_layer_page|shengwang_popup_layer_answer_click"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
())
"shengwang_popup_layer_page|shengwang_popup_layer_answer_click"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
()
)
}
}
/**
/**
...
@@ -692,7 +676,6 @@ class ConsultantAudioHomeActivity :
...
@@ -692,7 +676,6 @@ class ConsultantAudioHomeActivity :
//获取频道token
//获取频道token
mPresenter
.
getChannelToken
(
mAudioMessageBean
)
mPresenter
.
getChannelToken
(
mAudioMessageBean
)
}
}
}
}
}
}
}
}
...
@@ -717,25 +700,14 @@ class ConsultantAudioHomeActivity :
...
@@ -717,25 +700,14 @@ class ConsultantAudioHomeActivity :
voiceManage
!!
.
getVoiceApi
().
setEnableSpeakerphone
(
view
.
isSelected
)
voiceManage
!!
.
getVoiceApi
().
setEnableSpeakerphone
(
view
.
isSelected
)
}
}
override
fun
onResume
()
{
override
fun
onResume
()
{
super
.
onResume
()
super
.
onResume
()
sensorManager
!!
.
registerListener
(
sensorManager
!!
.
registerListener
(
this
,
sensorManager
!!
.
getDefaultSensor
(
Sensor
.
TYPE_PROXIMITY
),
SensorManager
.
SENSOR_DELAY_NORMAL
)
this
,
sensorManager
!!
.
getDefaultSensor
(
Sensor
.
TYPE_PROXIMITY
),
SensorManager
.
SENSOR_DELAY_NORMAL
)
ActionCountUtils
.
count
(
ActionCountUtils
.
count
(
"shengwang_popup_layer_page|shengwang_popup_layer_page_visit"
,
""
,
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
())
"shengwang_popup_layer_page|shengwang_popup_layer_page_visit"
,
""
,
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
()
)
}
}
override
fun
onAccuracyChanged
(
sensor
:
Sensor
?,
accuracy
:
Int
)
{
override
fun
onAccuracyChanged
(
sensor
:
Sensor
?,
accuracy
:
Int
)
{
}
}
override
fun
onSensorChanged
(
event
:
SensorEvent
?)
{
override
fun
onSensorChanged
(
event
:
SensorEvent
?)
{
...
@@ -758,7 +730,6 @@ class ConsultantAudioHomeActivity :
...
@@ -758,7 +730,6 @@ class ConsultantAudioHomeActivity :
}
}
}
}
/**
/**
* 显示自定义弹窗
* 显示自定义弹窗
*/
*/
...
@@ -785,14 +756,12 @@ class ConsultantAudioHomeActivity :
...
@@ -785,14 +756,12 @@ class ConsultantAudioHomeActivity :
}
}
if
(
status
==
-
1
)
{
if
(
status
==
-
1
)
{
tv_nte_status
.
setCompoundDrawablesWithIntrinsicBounds
(
null
,
null
,
null
,
null
)
tv_nte_status
.
setCompoundDrawablesWithIntrinsicBounds
(
null
,
null
,
null
,
null
)
}
}
tv_nte_status
.
visibility
=
View
.
VISIBLE
tv_nte_status
.
visibility
=
View
.
VISIBLE
}
}
}
}
}
}
//关闭本页面
//关闭本页面
fun
close
(
code
:
Int
,
msg
:
String
)
{
fun
close
(
code
:
Int
,
msg
:
String
)
{
runOnUiThread
{
runOnUiThread
{
...
@@ -808,7 +777,8 @@ class ConsultantAudioHomeActivity :
...
@@ -808,7 +777,8 @@ class ConsultantAudioHomeActivity :
callStatus
=
2
callStatus
=
2
uploadException
(
"被叫拒绝"
,
zhu
=
""
)
uploadException
(
"被叫拒绝"
,
zhu
=
""
)
//未接听,直接挂断 发送消息
//未接听,直接挂断 发送消息
YDLRTMClient
.
instances
.
refuseCall
(
mAudioMessageBean
?.
channelId
)
// YDLRTMClient.instances.refuseCall(mAudioMessageBean?.channelId)
YDLavManager
.
instances
.
refuseCall
(
mAudioMessageBean
!!
.
userId
!!
,
mAudioMessageBean
?.
channelId
,
Gson
().
toJson
(
mAudioMessageBean
))
}
else
if
(
code
==
RESULT_USER_CANCEL
)
{
}
else
if
(
code
==
RESULT_USER_CANCEL
)
{
callStatus
=
1
callStatus
=
1
uploadException
(
"主叫取消"
,
zhu
=
""
)
uploadException
(
"主叫取消"
,
zhu
=
""
)
...
@@ -842,7 +812,7 @@ class ConsultantAudioHomeActivity :
...
@@ -842,7 +812,7 @@ class ConsultantAudioHomeActivity :
mPlayer
=
AudioPlayer
(
this
)
mPlayer
=
AudioPlayer
(
this
)
}
}
mPlayer
!!
.
setDataSource
(
R
.
raw
.
audioim_hand_down_music
)
mPlayer
!!
.
setDataSource
(
R
.
raw
.
audioim_hand_down_music
)
// mPlayer!!.switchPlayType(true)
// mPlayer!!.switchPlayType(true)
mPlayer
!!
.
start
(
isLooping
=
false
,
isSetOnCompletionListener
=
false
)
mPlayer
!!
.
start
(
isLooping
=
false
,
isSetOnCompletionListener
=
false
)
}
}
...
@@ -855,12 +825,9 @@ class ConsultantAudioHomeActivity :
...
@@ -855,12 +825,9 @@ class ConsultantAudioHomeActivity :
*/
*/
private
fun
connectingStatusWaitingTimeCount
()
{
private
fun
connectingStatusWaitingTimeCount
()
{
if
(
connectingStatusDisposable
==
null
)
{
if
(
connectingStatusDisposable
==
null
)
{
connectingStatusDisposable
=
Observable
.
interval
(
0
,
1
,
TimeUnit
.
SECONDS
)
connectingStatusDisposable
=
Observable
.
interval
(
0
,
1
,
TimeUnit
.
SECONDS
).
subscribeOn
(
Schedulers
.
computation
()).
take
(
6
).
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
({},
{},
{
.
subscribeOn
(
Schedulers
.
computation
())
.
take
(
6
)
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({},
{},
{
if
(!
isConnectSuccess
)
{
if
(!
isConnectSuccess
)
{
YDLavManager
.
instances
.
callEndStatusUpdate
(
mAudioMessageBean
?.
channelId
!!
,
1
,
"被叫加入频道后主叫未加入超时"
)
writeAgoraLog
(
"通话未接通挂断:连接中的状态超过5s自动挂断"
)
writeAgoraLog
(
"通话未接通挂断:连接中的状态超过5s自动挂断"
)
showToast
(
"用户已挂断"
)
showToast
(
"用户已挂断"
)
close
(
RESULT_NOT_ANSWERED_CODE
,
""
)
close
(
RESULT_NOT_ANSWERED_CODE
,
""
)
...
@@ -869,7 +836,6 @@ class ConsultantAudioHomeActivity :
...
@@ -869,7 +836,6 @@ class ConsultantAudioHomeActivity :
}
}
}
}
/**
/**
* 离开频道
* 离开频道
*/
*/
...
@@ -914,7 +880,6 @@ class ConsultantAudioHomeActivity :
...
@@ -914,7 +880,6 @@ class ConsultantAudioHomeActivity :
* 重写返回键逻辑:屏蔽返回键
* 重写返回键逻辑:屏蔽返回键
*/
*/
override
fun
onBackPressed
()
{
override
fun
onBackPressed
()
{
}
}
private
fun
writeAgoraLog
(
content
:
String
)
{
private
fun
writeAgoraLog
(
content
:
String
)
{
...
@@ -923,24 +888,17 @@ class ConsultantAudioHomeActivity :
...
@@ -923,24 +888,17 @@ class ConsultantAudioHomeActivity :
AudioLogUtils
.
writeAgoraLog
(
content
,
"consult"
)
AudioLogUtils
.
writeAgoraLog
(
content
,
"consult"
)
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
}
}
}.
subscribeOn
(
Schedulers
.
io
())
}.
subscribeOn
(
Schedulers
.
io
()).
subscribe
()
.
subscribe
()
}
}
/**
/**
* 上传错误日志
* 上传错误日志
*/
*/
private
fun
uploadException
(
private
fun
uploadException
(
message
:
String
,
zhu
:
String
=
""
,
eventType
:
String
=
"99"
)
{
message
:
String
,
zhu
:
String
=
""
,
eventType
:
String
=
"99"
)
{
var
time
:
String
=
(
System
.
currentTimeMillis
()
/
1000
).
toString
()
var
time
:
String
=
(
System
.
currentTimeMillis
()
/
1000
).
toString
()
var
uid
:
String
=
var
uid
:
String
=
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
!!
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
!!
var
payLoad
=
PayLoad
(
mAudioMessageBean
?.
channelId
?:
"0"
,
time
,
uid
,
"1"
,
"999"
,
message
)
var
payLoad
=
PayLoad
(
mAudioMessageBean
?.
channelId
?:
"0"
,
time
,
uid
,
"1"
,
"999"
,
message
)
var
connectException
=
var
connectException
=
ConnectExceptionCommand
(
time
+
zhu
,
"2"
,
eventType
,
payLoad
,
callStatus
)
ConnectExceptionCommand
(
time
+
zhu
,
"2"
,
eventType
,
payLoad
,
callStatus
)
YDLavManager
.
instances
.
uploadException
(
connectException
,
null
)
YDLavManager
.
instances
.
uploadException
(
connectException
,
null
)
}
}
...
@@ -961,11 +919,8 @@ class ConsultantAudioHomeActivity :
...
@@ -961,11 +919,8 @@ class ConsultantAudioHomeActivity :
EventBus
.
getDefault
().
unregister
(
this
)
EventBus
.
getDefault
().
unregister
(
this
)
if
(
ActivityManager
.
getActivitySize
()
==
1
)
{
if
(
ActivityManager
.
getActivitySize
()
==
1
)
{
try
{
try
{
// startActivity(MainActivity.newIntent(this, false))
// startActivity(MainActivity.newIntent(this, false))
ARouter
.
getInstance
().
build
(
"/main/main"
)
ARouter
.
getInstance
().
build
(
"/main/main"
).
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TOP
).
navigation
()
.
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TOP
)
.
navigation
()
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
}
}
...
...
m-im/src/main/java/com/yidianling/im/helper/ImObserversHelper.kt
View file @
8c3b433e
...
@@ -174,7 +174,7 @@ class ImObserversHelper {
...
@@ -174,7 +174,7 @@ class ImObserversHelper {
private
var
receiveSystemMessageObserver
:
Observer
<
CustomNotification
>
=
Observer
<
CustomNotification
>
{
private
var
receiveSystemMessageObserver
:
Observer
<
CustomNotification
>
=
Observer
<
CustomNotification
>
{
LogUtil
.
e
(
it
.
content
)
LogUtil
.
e
(
it
.
content
)
imCustomNotificationCallBack
?.
onObserverCustomNotification
(
it
.
content
)
imCustomNotificationCallBack
?.
onObserverCustomNotification
(
it
.
fromAccount
,
it
.
sessionId
,
it
.
content
)
}
}
private
var
msgRevokeFilter
=
MsgRevokeFilter
{
message
->
private
var
msgRevokeFilter
=
MsgRevokeFilter
{
message
->
...
...
m-im/src/main/modular_api/com/yidianling/im/api/bean/IMRegisterObserverCustomNotificationCallBack.kt
View file @
8c3b433e
...
@@ -9,5 +9,5 @@ package com.yidianling.im.api.bean
...
@@ -9,5 +9,5 @@ package com.yidianling.im.api.bean
*/
*/
interface
IMRegisterObserverCustomNotificationCallBack
{
interface
IMRegisterObserverCustomNotificationCallBack
{
fun
onObserverCustomNotification
(
content
:
String
)
fun
onObserverCustomNotification
(
fromUid
:
String
,
toUid
:
String
,
content
:
String
)
}
}
\ 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