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
ac42e349
Commit
ac42e349
authored
Feb 16, 2020
by
konghaorui
Browse files
Options
Browse Files
Download
Plain Diff
Merge commit '
fa846e5a
' into feature/image_picker
parents
963a2b4e
fa846e5a
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
273 additions
and
56 deletions
+273
-56
build.gradle
app/build.gradle
+1
-0
config.gradle
config.gradle
+3
-3
AudioHomeActivity.kt
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
+112
-36
AgoraLogInfoBean.kt
m-audioim/src/main/java/com/ydl/audioim/bean/AgoraLogInfoBean.kt
+44
-0
AudioLogUtils.kt
m-audioim/src/main/java/com/ydl/audioim/utils/AudioLogUtils.kt
+90
-0
LogHelper.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/LogHelper.kt
+23
-17
No files found.
app/build.gradle
View file @
ac42e349
...
...
@@ -205,6 +205,7 @@ dependencies {
// implementation project(':m-muse')
implementation
project
(
':m-im'
)
implementation
project
(
':m-dynamic'
)
implementation
project
(
':m-audioim'
)
// api rootProject.ext.dependencies["ydl-m-fm-module-ydl"]
...
...
config.gradle
View file @
ac42e349
...
...
@@ -42,7 +42,7 @@ ext {
ydlPublishVersion
=
[
// -------------- 业务模块 --------------
//第三步 若干
"m-confide"
:
"0.0.47.
1
"
,
"m-confide"
:
"0.0.47.
5
"
,
"m-consultant"
:
"0.0.56.1"
,
"m-fm"
:
"0.0.28"
,
"m-user"
:
"0.0.58.1"
,
...
...
@@ -75,7 +75,7 @@ ext {
"ydl-webview"
:
"0.0.37.1"
,
"ydl-media"
:
"0.0.20"
,
"ydl-pay"
:
"0.0.17"
,
"m-audioim"
:
"0.0.46"
,
"m-audioim"
:
"0.0.46
.3
"
,
"ydl-flutter-base"
:
"0.0.10"
,
//以下 几乎不会动
...
...
@@ -121,7 +121,7 @@ ext {
"ydl-webview"
:
"0.0.37.1"
,
"ydl-media"
:
"0.0.20"
,
"ydl-pay"
:
"0.0.17"
,
"m-audioim"
:
"0.0.46"
,
"m-audioim"
:
"0.0.46
.3
"
,
"ydl-flutter-base"
:
"0.0.10"
,
//以下 几乎不会动
...
...
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
View file @
ac42e349
...
...
@@ -24,6 +24,22 @@ import android.view.animation.AccelerateInterpolator
import
com.alibaba.android.arouter.facade.annotation.Route
import
com.google.gson.Gson
import
com.tbruyelle.rxpermissions2.RxPermissions
import
com.ydl.audioim.bean.AgoraLogInfoBean
import
com.ydl.audioim.contract.IAudioHomeActivityContract
import
com.ydl.audioim.http.command.ConnectCommand
import
com.ydl.audioim.http.command.ConnectExceptionCommand
import
com.ydl.audioim.http.command.NoticePushCommand
import
com.ydl.audioim.http.command.PayLoad
import
com.ydl.audioim.player.AudioPlayer
import
com.ydl.audioim.presenter.AudioHomePresenterImpl
import
com.ydl.audioim.utils.AudioLogUtils
import
com.ydl.audioim.utils.DateUtils
import
com.ydl.audioim.widget.AxbConfirmDialog
import
com.ydl.burypointlib.ToastUtil
import
com.ydl.webview.H5Params
import
com.ydl.webview.NewH5Activity
import
com.ydl.webview.RefreshWebEvent
import
com.ydl.ydl_av.chat.bean.AudioMessageBean
import
com.ydl.ydl_av.messge_service.ChannelManager
import
com.ydl.ydl_av.messge_service.YDLRTMClient
import
com.ydl.ydl_av.messge_service.bean.RTMMesssage
...
...
@@ -36,22 +52,12 @@ import com.ydl.ydl_av.voice.listener.IYDLVoiceEventHandler
import
com.ydl.ydl_av.voice.manager.YDLVoiceManager
import
com.ydl.ydl_image.config.SimpleImageOpConfiger
import
com.ydl.ydl_image.manager.YDLImageCacheManager
import
com.ydl.ydl_av.chat.bean.AudioMessageBean
import
com.ydl.audioim.contract.IAudioHomeActivityContract
import
com.ydl.audioim.http.command.*
import
com.ydl.audioim.player.AudioPlayer
import
com.ydl.audioim.presenter.AudioHomePresenterImpl
import
com.ydl.audioim.utils.DateUtils
import
com.ydl.audioim.widget.AxbConfirmDialog
import
com.ydl.burypointlib.ToastUtil
import
com.ydl.webview.H5Params
import
com.ydl.webview.NewH5Activity
import
com.ydl.webview.RefreshWebEvent
import
com.ydl.ydlcommon.base.BaseMvpActivity
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.router.YdlCommonRouterManager
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.StatusBarUtils
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.user.api.service.IUserService
import
de.greenrobot.event.EventBus
...
...
@@ -72,7 +78,8 @@ import java.util.concurrent.TimeUnit
* @date 2018/10/30
*/
@Route
(
path
=
"/av/AudioHomeActivity"
)
class
AudioHomeActivity
:
BaseMvpActivity
<
IAudioHomeActivityContract
.
View
,
IAudioHomeActivityContract
.
Presenter
>(),
IAudioHomeActivityContract
.
View
,
SensorEventListener
{
class
AudioHomeActivity
:
BaseMvpActivity
<
IAudioHomeActivityContract
.
View
,
IAudioHomeActivityContract
.
Presenter
>(),
IAudioHomeActivityContract
.
View
,
SensorEventListener
{
/**
* 专家头像地址
...
...
@@ -93,7 +100,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
/**
* 通话开始时间(接通)
*/
private
var
callStartTime
:
Long
?
=
null
private
var
callStartTime
:
Long
?
=
null
/**
* 倾诉剩余时长(时长单位s,eg:剩余2min15s,返回135)
*/
...
...
@@ -161,9 +168,9 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
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
/**
* 声网事件回调 (SDK 通过指定的事件通知应用程序 SDK 的运行事件,如: 加入或离开频道,新用户加入频道等)
...
...
@@ -186,6 +193,8 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
when
(
warn
)
{
103
,
104
,
105
,
106
,
107
->
{
showToast
(
"当前网络较差,请更换网络!"
)
//通话结束或挂断时,上传日志文件
uploadLog
()
leaveChannel
()
}
}
...
...
@@ -255,6 +264,8 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
//因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断
if
(
isConnectSuccess
&&
null
!=
stats
?.
users
&&
stats
.
users
==
1
)
{
com
.
yidianling
.
common
.
tools
.
ToastUtil
.
toastShort
(
"专家已挂断"
)
//通话结束或挂断时,上传日志文件
uploadLog
()
leaveChannel
()
}
}
...
...
@@ -264,6 +275,8 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
if
(
reason
==
3
)
{
com
.
yidianling
.
common
.
tools
.
ToastUtil
.
toastShort
(
"专家已挂断"
)
//通话结束或挂断时,上传日志文件
uploadLog
()
leaveChannel
()
}
}
...
...
@@ -271,6 +284,8 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
override
fun
onLeaveChannel
(
stats
:
IRtcEngineEventHandler
.
RtcStats
?)
{
super
.
onLeaveChannel
(
stats
)
LogUtil
.
e
(
"[agora]离开频道回调"
)
//通话结束或挂断时,上传日志文件
uploadLog
()
}
override
fun
onLastmileQuality
(
quality
:
Int
)
{
...
...
@@ -296,6 +311,8 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
override
fun
onUserOffline
(
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onUserOffline
(
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]远端用户$uid 离开频道回调"
)
//通话结束或挂断时,上传日志文件
uploadLog
()
showToast
(
"专家已挂断"
)
if
(
totalDisposable
!=
null
)
{
...
...
@@ -315,7 +332,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
private
fun
uploadException
(
message
:
String
)
{
var
time
:
String
=
(
System
.
currentTimeMillis
()
/
1000
).
toString
()
var
uid
:
String
=
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
,
"2"
,
"99"
,
payLoad
)
getPresenter
().
connectException
(
connectException
)
}
...
...
@@ -371,11 +388,36 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
listenId
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_LISTEN_ID
)
commentUrl
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_COMMENT_URL
)
writeAgoraLog
()
localRemainTime
=
remainTime
?.
toInt
()
handler
=
Handler
()
vibrator
=
getSystemService
(
Service
.
VIBRATOR_SERVICE
)
as
Vibrator
?
}
private
fun
writeAgoraLog
(){
val
logBean
=
AgoraLogInfoBean
(
expertHeadUrl
,
expertName
,
channelId
,
remainTime
,
listenerUid
,
totalDuration
,
callId
,
listenId
)
Observable
.
create
<
Any
>
{
try
{
val
content
=
Gson
().
toJson
(
logBean
)
AudioLogUtils
.
writeAgoraLog
(
content
)
}
catch
(
e
:
Exception
)
{
}
}.
subscribeOn
(
Schedulers
.
io
())
.
subscribe
()
}
private
fun
initView
()
{
tv_change_route
.
isEnabled
=
false
//水波纹view初始化
...
...
@@ -441,7 +483,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
private
fun
setCallBack
()
{
YDLRTMClient
.
instances
.
setCallListener
(
object
:
CallListener
{
YDLRTMClient
.
instances
.
setCallListener
(
object
:
CallListener
{
override
fun
onCallRecivedByPeer
(
response
:
CallLocalResponse
?)
{
//返回给主叫:被叫已收到呼叫邀请
LogUtil
.
i
(
"[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}"
)
...
...
@@ -455,7 +497,9 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
override
fun
onCallRefused
(
response
:
CallLocalResponse
?)
{
//返回给主叫
LogUtil
.
i
(
"[agora]${response?.calleeId}已拒绝呼叫邀请"
)
ToastUtil
.
showToast
(
applicationContext
,
"对方已挂断"
)
ToastUtil
.
showToast
(
applicationContext
,
"对方已挂断"
)
//通话结束或挂断时,上传日志文件
uploadLog
()
leaveChannel
()
}
...
...
@@ -498,7 +542,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
LogUtil
.
i
(
"[agora]其它消息:${error}"
)
}
})
channelManager
=
YDLRTMClient
.
instances
.
createChannelManager
(
channelId
,
object
:
ChannelListener
{
channelManager
=
YDLRTMClient
.
instances
.
createChannelManager
(
channelId
,
object
:
ChannelListener
{
override
fun
onMemberCountUpdated
(
memberCount
:
Int
)
{
//频道人数更新
LogUtil
.
i
(
"[agora]当前频道人数:$memberCount"
)
...
...
@@ -506,7 +550,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
override
fun
onMessageReceived
(
message
:
RTMMesssage
?,
member
:
ChannelMember
?)
{
//接到频道消息
LogUtil
.
i
(
"[agora]接到${member?.channelId}频道${member?.userId}的消息:"
+
message
?.
text
)
LogUtil
.
i
(
"[agora]接到${member?.channelId}频道${member?.userId}的消息:"
+
message
?.
text
)
}
override
fun
onMemberJoined
(
member
:
ChannelMember
?)
{
...
...
@@ -563,7 +607,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
null
,
channelId
)
YDLRTMClient
.
instances
.
call
(
listenerUid
!!
,
channelId
,
Gson
().
toJson
(
msgBean
))
YDLRTMClient
.
instances
.
call
(
listenerUid
!!
,
channelId
,
Gson
().
toJson
(
msgBean
))
//开始25s等待倒计时
Observable
.
interval
(
0
,
100
,
TimeUnit
.
MILLISECONDS
)
.
subscribeOn
(
Schedulers
.
computation
())
...
...
@@ -575,13 +619,16 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
LogUtil
.
d
(
it
.
message
)
},
{
waittingStatus
()
if
(!
isConnectSuccess
)
{
if
(!
isConnectSuccess
)
{
// iv_hang_up.setImageResource(R.mipmap.audioim_ico_close)
//关闭音乐
stopPlaying
()
//提示切换传统线路
//发送消息通知专家用户已挂断
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
)
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
)
//通话结束或挂断时,上传日志文件
uploadLog
()
showChooseDialog
(
2
)
}
})
...
...
@@ -611,7 +658,12 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
* 声网加入频道
*/
private
fun
joinChannel
()
{
voiceManage
!!
.
getVoiceApi
().
joinChannel
(
token
!!
,
channelId
!!
,
"Extra Optional Data"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
())
voiceManage
!!
.
getVoiceApi
().
joinChannel
(
token
!!
,
channelId
!!
,
"Extra Optional Data"
,
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
()
)
}
/**
...
...
@@ -621,7 +673,9 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
*/
private
fun
userCloseCalling
()
{
//发送消息通知专家用户已挂断
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
)
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
)
//通话结束或挂断时,上传日志文件
uploadLog
()
handler
!!
.
postDelayed
({
leaveChannel
()
},
100
)
...
...
@@ -633,7 +687,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
* @param finishStatus 状态值: 0:开始 1:结束
*/
private
fun
updateExpertStatus
(
isSwitchAxb
:
Boolean
,
finishStatus
:
Int
)
{
if
(
isSwitchAxb
){
if
(
isSwitchAxb
)
{
dialPhone
()
}
...
...
@@ -659,9 +713,9 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
/**
* 线路选择弹窗
*/
private
fun
showChooseDialog
(
type
:
Int
)
{
private
fun
showChooseDialog
(
type
:
Int
)
{
val
dialog
=
AxbConfirmDialog
(
mContext
,
type
,
object
:
AxbConfirmDialog
.
OnClickEnsureListener
{
val
dialog
=
AxbConfirmDialog
(
mContext
,
type
,
object
:
AxbConfirmDialog
.
OnClickEnsureListener
{
override
fun
onClickEnsure
()
{
switchAXB
()
}
...
...
@@ -681,7 +735,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
* 切换成axb路线请求
*/
private
fun
switchAXB
()
{
mPresenter
.
getAXBPhone
(
ConnectCommand
(
listenId
!!
,
"1"
))
mPresenter
.
getAXBPhone
(
ConnectCommand
(
listenId
!!
,
"1"
))
}
/**
...
...
@@ -692,12 +746,14 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
this
.
axbPhone
=
axbPhone
isJumpDail
=
true
if
(
isConnectSuccess
)
{
//通话结束或挂断时,上传日志文件
uploadLog
()
//已经连接成功,切换axb时需要更新专家状态
updateExpertStatus
(
true
,
1
)
}
else
{
//未连接成功,切换axb时:需发送消息通知专家端用户已挂断
//发送消息通知专家用户已挂断
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
)
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
)
leaveChannel
()
}
}
...
...
@@ -730,7 +786,12 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
tv_change_route
.
isEnabled
=
true
tv_change_route
.
setTextColor
(
ContextCompat
.
getColor
(
this
,
R
.
color
.
platform_white
))
tv_change_route
.
setCompoundDrawablesWithIntrinsicBounds
(
null
,
null
,
ContextCompat
.
getDrawable
(
this
,
R
.
drawable
.
audioim_img_choose_arrow
),
null
)
tv_change_route
.
setCompoundDrawablesWithIntrinsicBounds
(
null
,
null
,
ContextCompat
.
getDrawable
(
this
,
R
.
drawable
.
audioim_img_choose_arrow
),
null
)
}
...
...
@@ -866,7 +927,12 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
if
(
tv_change_route
.
isEnabled
)
{
tv_change_route
.
isEnabled
=
false
tv_change_route
.
setTextColor
(
ContextCompat
.
getColor
(
this
,
R
.
color
.
audioim_color_50ffffff
))
tv_change_route
.
setCompoundDrawablesWithIntrinsicBounds
(
null
,
null
,
ContextCompat
.
getDrawable
(
this
,
R
.
drawable
.
audioim_img_choose_arrow_unuse
),
null
)
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
())
...
...
@@ -875,6 +941,8 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
},
{
//注意:自动挂断时,如果对方离开频道的回调已经触发,就不要再重复调用接口
showToast
(
"通话已结束"
)
//通话结束或挂断时,上传日志文件
uploadLog
()
updateExpertStatus
(
false
,
1
)
})
}
...
...
@@ -946,7 +1014,11 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
override
fun
onResume
()
{
super
.
onResume
()
sensorManager
!!
.
registerListener
(
this
,
sensorManager
!!
.
getDefaultSensor
(
Sensor
.
TYPE_PROXIMITY
),
SensorManager
.
SENSOR_DELAY_NORMAL
)
sensorManager
!!
.
registerListener
(
this
,
sensorManager
!!
.
getDefaultSensor
(
Sensor
.
TYPE_PROXIMITY
),
SensorManager
.
SENSOR_DELAY_NORMAL
)
}
override
fun
onAccuracyChanged
(
sensor
:
Sensor
?,
accuracy
:
Int
)
{
...
...
@@ -984,14 +1056,14 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
//// tv_toast.postDelayed({
//// tv_toast.visibility = View.GONE
//// }, 1000)
ToastHelper
.
show
(
msg
?:
""
)
ToastHelper
.
show
(
msg
?:
""
)
}
}
override
fun
showProgressView
()
{
try
{
showProgressDialog
()
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
...
...
@@ -1000,12 +1072,16 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
override
fun
dismissProgressView
()
{
try
{
dismissProgressDialog
()
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
}
private
fun
uploadLog
(){
LogHelper
.
getInstance
().
uploadLog
(
false
)
}
override
fun
finishActivity
()
{
leaveChannel
()
}
...
...
m-audioim/src/main/java/com/ydl/audioim/bean/AgoraLogInfoBean.kt
0 → 100644
View file @
ac42e349
package
com.ydl.audioim.bean
/**
* @author jiucheng
* @描述:
* @Copyright Copyright (c) 2018
* @Company 壹点灵
* @date 2020/2/12
*/
class
AgoraLogInfoBean
(
/**
* 专家头像地址
*/
private
var
expertHeadUrl
:
String
?
=
null
,
/**
* 专家姓名
*/
private
var
expertName
:
String
?
=
null
,
/**
* 声网点对点聊天房间id
*/
private
var
channelId
:
String
?
=
null
,
/**
* 倾诉剩余时长(时长单位s,eg:剩余2min15s,返回135)
*/
private
var
remainTime
:
String
?
=
null
,
/**
* listenerUid专家uid
*/
private
var
listenerUid
:
String
?
=
null
,
/**
* 倾述总时长
*/
private
var
totalDuration
:
Int
?
=
0
,
/**
* callId
*/
private
var
callId
:
String
?
=
null
,
/**
*聆听者id(不是聆听者的uid)
*/
private
var
listenId
:
String
?
=
null
)
\ No newline at end of file
m-audioim/src/main/java/com/ydl/audioim/utils/AudioLogUtils.kt
0 → 100644
View file @
ac42e349
package
com.ydl.audioim.utils
import
android.annotation.SuppressLint
import
com.ydl.audioim.BuildConfig
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.RxAppTool
import
com.yidianling.common.tools.RxDeviceTool
import
com.yidianling.common.tools.RxNetTool
import
io.reactivex.Observable
import
io.reactivex.schedulers.Schedulers
import
java.io.BufferedWriter
import
java.io.File
import
java.io.FileWriter
import
java.io.IOException
import
java.text.SimpleDateFormat
import
java.util.*
/**
* @author jiucheng
* @描述:记录声网双方信息相关的日志工具
* @Copyright Copyright (c) 2018
* @Company 壹点灵
* @date 2020/2/12
*/
class
AudioLogUtils
{
companion
object
{
@SuppressLint
(
"SimpleDateFormat"
)
private
val
format
=
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
)
fun
writeAgoraLog
(
content
:
String
)
{
Observable
.
create
<
Any
>
{
try
{
writeLog
(
content
)
if
(
BuildConfig
.
DEBUG
)
{
LogUtil
.
d
(
"writeLog_complete"
)
}
}
catch
(
e
:
Exception
)
{
}
}.
subscribeOn
(
Schedulers
.
io
())
.
subscribe
()
}
private
fun
writeLog
(
content
:
String
)
{
try
{
val
folder
=
getLogFolder
()
val
file
=
File
(
folder
,
"AgoraInfoLog"
)
if
(!
file
.
exists
()
||
!
file
.
isFile
)
{
file
.
createNewFile
()
}
val
fileWriter
=
FileWriter
(
file
,
true
)
val
writer
=
BufferedWriter
(
fileWriter
)
writer
.
write
(
"""Time:${format.format(Calendar.getInstance().time)}"""
)
writer
.
newLine
()
writer
.
write
(
"UserUid = ${ModularServiceManager.getPlatformUserService()?.getUser()?.userId}"
)
writer
.
newLine
()
writer
.
write
(
"""Network:${RxNetTool.getNetWorkTypeName(BaseApp.getApp())}"""
)
writer
.
newLine
()
writer
.
write
(
"""DevicesInfo:${RxDeviceTool.getBuildBrandModel()},${RxDeviceTool.getSDKVersionName()}"""
)
writer
.
newLine
()
writer
.
write
(
"""VersionInfo:${RxAppTool.getAppVersionName(BaseApp.getApp())}"""
)
writer
.
newLine
()
writer
.
write
(
"AgoraLog:$content"
)
writer
.
newLine
()
writer
.
write
(
"--------"
)
writer
.
newLine
()
writer
.
flush
()
writer
.
close
()
}
catch
(
e
:
IOException
)
{
e
.
printStackTrace
()
}
}
//获取app运行日志文件夹
private
fun
getLogFolder
():
File
{
val
cacheDir
=
BaseApp
.
getApp
().
externalCacheDir
.
absolutePath
val
logFolder
=
File
(
cacheDir
,
"log"
)
if
(!
logFolder
.
exists
()
||
!
logFolder
.
isDirectory
)
{
logFolder
.
mkdir
()
}
val
folder
=
File
(
logFolder
,
"NewYdlApp"
)
if
(!
folder
.
exists
()
||
!
folder
.
isDirectory
)
{
folder
.
mkdir
()
}
return
folder
}
}
}
\ No newline at end of file
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/LogHelper.kt
View file @
ac42e349
package
com.ydl.ydlcommon.utils.log
import
android.annotation.SuppressLint
import
android.content.Context
import
android.util.Log
import
com.yidianling.common.tools.*
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.data.PlatformDataManager
import
com.ydl.ydlcommon.data.http.LogParam
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.utils.FileUtils
import
com.yidianling.common.tools.*
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.functions.Consumer
...
...
@@ -46,7 +46,7 @@ class LogHelper private constructor() {
/**
* 删除过期日志
*/
fun
deleteExpireLog
()
{
private
fun
deleteExpireLog
()
{
val
files
=
getLogFolder
().
listFiles
()
val
calendar
=
Calendar
.
getInstance
()
calendar
.
add
(
Calendar
.
WEEK_OF_YEAR
,
-
1
)
...
...
@@ -59,7 +59,9 @@ class LogHelper private constructor() {
}
}
@SuppressLint
(
"SimpleDateFormat"
)
private
val
dateFormat
=
SimpleDateFormat
(
"yyyyMMdd"
)
@SuppressLint
(
"SimpleDateFormat"
)
private
val
format
=
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
)
fun
writeLogSync
(
content
:
String
)
{
...
...
@@ -82,7 +84,7 @@ class LogHelper private constructor() {
val
writer
=
BufferedWriter
(
fileWriter
)
writer
.
write
(
"""Time:${format.format(Calendar.getInstance().time)}"""
)
writer
.
newLine
()
writer
.
write
(
"UserInfo:uid = ${
ModularServiceManager.getPlatformUserService()?.getUser()?.userId}"
)
writer
.
write
(
"UserInfo:uid = ${ModularServiceManager.getPlatformUserService()?.getUser()?.userId}"
)
writer
.
newLine
()
writer
.
write
(
"""Network:${RxNetTool.getNetWorkTypeName(BaseApp.getApp())}"""
)
writer
.
newLine
()
...
...
@@ -108,25 +110,28 @@ class LogHelper private constructor() {
}
fun
uploadLog
(
showToast
:
Boolean
)
{
@SuppressLint
(
"CheckResult"
)
fun
uploadLog
(
showToast
:
Boolean
)
{
Observable
.
create
<
File
>
{
it
.
onNext
(
zip
())
it
.
onComplete
()
}.
subscribeOn
(
Schedulers
.
io
())
.
flatMap
{
PlatformDataManager
.
getHttp
().
uploadLog
(
.
flatMap
{
PlatformDataManager
.
getHttp
().
uploadLog
(
LogParam
(
it
)
)
}
)
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
Consumer
{
if
(
showToast
)
{
if
(
showToast
)
{
ToastUtil
.
toastShort
(
it
.
msg
)
}
Log
.
d
(
"TAG"
,
""
)
},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
if
(
showToast
)
{
if
(
showToast
)
{
ToastUtil
.
toastShort
(
msg
)
}
Log
.
d
(
"TAG"
,
msg
)
...
...
@@ -153,18 +158,18 @@ class LogHelper private constructor() {
if
(
zipFile
.
exists
())
zipFile
.
delete
()
zipFile
.
createNewFile
()
if
(
appLog
.
exists
()){
if
(
appLog
.
exists
())
{
files
.
add
(
appLog
)
}
if
(
yunxinLog
.
exists
()){
if
(
yunxinLog
.
exists
())
{
files
.
add
(
yunxinLog
)
}
if
(
agoraLog
.
exists
()){
if
(
agoraLog
.
exists
())
{
files
.
add
(
agoraLog
)
}
// ZipUtils.toZip(getLogFolder().absolutePath, FileOutputStream(zipFile), true)
ZipUtils
.
toZip
(
files
,
FileOutputStream
(
zipFile
))
ZipUtils
.
toZip
(
files
,
FileOutputStream
(
zipFile
))
return
zipFile
}
...
...
@@ -213,14 +218,15 @@ class LogHelper private constructor() {
}
//获取云信日志路径
private
fun
getYunXinLog
(
context
:
Context
):
File
{
val
yunxin
=
FileUtils
.
getSDDirectory
()
+
"/"
+
context
.
packageName
+
"/nim/log"
private
fun
getYunXinLog
(
context
:
Context
):
File
{
val
yunxin
=
FileUtils
.
getSDDirectory
()
+
"/"
+
context
.
packageName
+
"/nim/log"
LogUtil
.
d
(
yunxin
)
return
File
(
yunxin
)
}
//获取声网日志
private
fun
getAgoraLog
(
context
:
Context
):
File
{
val
agora
=
FileUtils
.
getSDDirectory
()
+
"/"
+
context
.
packageName
+
"/agorasdk.log"
private
fun
getAgoraLog
(
context
:
Context
):
File
{
val
agora
=
FileUtils
.
getSDDirectory
()
+
"/"
+
context
.
packageName
+
"/agorasdk.log"
return
File
(
agora
)
}
...
...
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