Commit ce04dd07 by YKai

Merge remote-tracking branch 'origin/release' into feature/yk_release

parents 3c986b80 0a61e308
......@@ -20,8 +20,8 @@ import java.util.List;
*/
public final class DemoGlobalConfig implements IConfigModule {
String APP_DOMAIN = "https://api.github.com/";
public static String appEnv = YDLConstants.ENV_TEST;
// public static String appEnv = YDLConstants.ENV_PROD;
// public static String appEnv = YDLConstants.ENV_TEST;
public static String appEnv = YDLConstants.ENV_PROD;
// public static String appEnv = YDLConstants.ENV_NEW_TEST;//配置未上传到maven库
@Override
......
ext {
dev_mode = false //组件发布的时候需要设置为false
ydl2PublishVersion = "0.2.1.9-SNAPSHOT"
dev_mode = false//组件发布的时候需要设置为false
ydl2PublishVersion = "0.2.0.17"
ydlPublishVersion = [
// -------------- 业务模块 --------------
//第三步 若干
......@@ -8,7 +8,7 @@ ext {
"m-consultant" : "0.0.60.78",
"m-fm" : "0.0.30.09",
"m-user" : "0.0.62.72",
"m-home" : "0.0.24.08",
"m-home" : "0.0.24.09",
"m-im" : "0.0.21.69",
"m-dynamic" : "0.0.7.80",
"m-article" : "0.0.0.11",
......
......@@ -35,7 +35,7 @@ data class ArticleListBean(
//"url": "https://h2.yidianling.com/article/12516"
data class ArticleBean(
val id:Int,
val readNum:Int,
val readNum:String = "0",
val title:String,
val desc:String,
val imgUrl:String,
......@@ -48,7 +48,7 @@ data class ArticleBean(
val mUrl:String,
val createTime:String,
val createTimeFormat:String,
val zanNum:Int,
val zanNum:String = "0",
val categoryId:Int,
val commentTotal:Int,
val label:String,
......
......@@ -283,7 +283,7 @@ class AudioHomeActivity :
LogUtil.e("[agora]发生警告回调$warn")
writeAgoraLog("声网警告回调($warn)")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网警告回调($warn)")
.sendRichLog(AliYunLogConfig.AGORA, "声网警告回调($warn) channelId:${channelId}")
//103:没有可用的频道资源。可能是因为服务端没法分配频道资源
//104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器
//105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的
......@@ -301,7 +301,7 @@ class AudioHomeActivity :
uploadException("mRtcEventHandler-onError:errorCode--%${err}", callback = null)
writeAgoraLog("声网错误回调errorCode--%${err}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网错误回调errorCode--%${err}")
.sendRichLog(AliYunLogConfig.AGORA, "声网错误回调errorCode--%${err} channelId:${channelId}")
//3:SDK 初始化失败。Agora 建议尝试以下处理方法
//7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化
//9:没有操作权限。请检查用户是否授予 app 音视频设备使用权限。
......@@ -315,7 +315,10 @@ class AudioHomeActivity :
//110:生成的 Token 无效
//123:此用户被服务器禁止
LogUtil.e("[agora]发生错误回调$err")
YDLavManager.instances.callEndStatusUpdate(channelId!!, 4, "频道的错误回调信息$err")
if (err == 0 || err == 18) {
return
}
channelId?.let { YDLavManager.instances.callEndStatusUpdate(it, 4, "频道的错误回调信息$err") }
}
override fun onApiCallExecuted(error: Int, api: String?, result: String?) {
......@@ -367,7 +370,7 @@ class AudioHomeActivity :
super.onRtcStats(stats)
writeAgoraLog("声网onRtcStats:users:${stats?.users}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网onRtcStats:users:${stats?.users}")
.sendRichLog(AliYunLogConfig.AGORA, "声网onRtcStats:users:${stats?.users} channelId:${channelId}")
// 不需要移动端做离开房间逻辑,服务端会判断进行踢人逻辑
//因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断
// if (isConnectSuccess && null != stats?.users && stats.users == 1) {
......@@ -391,7 +394,7 @@ class AudioHomeActivity :
AliYunRichLogsHelper.getInstance()
.sendRichLog(
AliYunLogConfig.AGORA,
"通话结束:网络连接被服务器中止 该情况现在是因为后端踢人逻辑,原因(${reason})"
"通话结束:网络连接被服务器中止 该情况现在是因为后端踢人逻辑,原因(${reason}) channelId:${channelId}"
)
// com.yidianling.common.tools.ToastUtil.toastShort("专家已挂断")
//通话结束或挂断时,上传日志文件
......@@ -407,7 +410,7 @@ class AudioHomeActivity :
LogUtil.e("[agora]离开频道回调")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "离开频道回调")
.sendRichLog(AliYunLogConfig.AGORA, "离开频道回调 channelId:${channelId}")
//通话结束或挂断时,上传日志文件
uploadLog()
}
......@@ -419,7 +422,7 @@ class AudioHomeActivity :
LogUtil.e("[agora]远端用户/主播加入频道回调")
onPeerJoined()
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "远端用户/主播加入频道回调")
.sendRichLog(AliYunLogConfig.AGORA, "远端用户/主播加入频道回调 channelId:${channelId}")
}
override fun onUserOffline(uid: Int, elapsed: Int) {
......@@ -429,7 +432,7 @@ class AudioHomeActivity :
LogUtil.e("[agora]远端用户$uid 离开频道回调")
writeAgoraLog("接通后通话结束:对方已挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "接通后通话结束:对方已挂断")
.sendRichLog(AliYunLogConfig.AGORA, "接通后通话结束:对方已挂断 channelId:${channelId}")
//通话结束或挂断时,上传日志文件
uploadLog()
showToast("专家已挂断")
......@@ -465,6 +468,8 @@ class AudioHomeActivity :
if (txQuality in 1..2 && rxQuality in 1..2) {
""
} else if (txQuality >= 5 || rxQuality >= 5) {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "您的网络已断开 channelId:${channelId}")
"您的网络已断开"
} else {
status = if (txQuality >= 4 || rxQuality >= 4) {
......@@ -472,6 +477,8 @@ class AudioHomeActivity :
} else {
1
}
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "您的网络状况不佳 channelId:${channelId}")
"您的网络状况不佳"
}
}
......@@ -479,6 +486,8 @@ class AudioHomeActivity :
if (txQuality in 1..2 && rxQuality in 1..2) {
""
} else if (txQuality >= 5 || rxQuality >= 5) {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "对方的网络已断开 channelId:${channelId}")
"对方的网络已断开"
} else {
status = if (txQuality >= 4 || rxQuality >= 4) {
......@@ -486,6 +495,8 @@ class AudioHomeActivity :
} else {
1
}
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "对方的网络状况不佳 channelId:${channelId}")
"对方的网络状况不佳"
}
}
......@@ -515,7 +526,7 @@ class AudioHomeActivity :
writeAgoraLog("通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.RTM, "通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}")
.sendRichLog(AliYunLogConfig.RTM, "通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus} channelId:${channelId}")
if (YDLavManager.sdkStatus != Constants.CONNECTION_STATE_CONNECTED) {
//再次登录声网,确保声网登录状态
reLoginRTM()
......@@ -588,7 +599,7 @@ class AudioHomeActivity :
dialStatus = intent.getStringExtra(IntentConstants.INTENT_DIALSTATUS)
writeAgoraLog("专家的通话状态dialStatus:$dialStatus", false)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "专家的通话状态dialStatus:$dialStatus")
.sendRichLog(AliYunLogConfig.AGORA, "专家的通话状态dialStatus:$dialStatus channelId:${channelId}")
isShowAXB = intent.getBooleanExtra(IntentConstants.INTENT_ISSHOWAXB, true)
val logBean = AgoraLogInfoBean(
......@@ -604,7 +615,7 @@ class AudioHomeActivity :
val content = Gson().toJson(logBean)
writeAgoraLog("主叫方发送的邀请通话消息内容:$content", true)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "主叫方发送的邀请通话消息内容:$content")
.sendRichLog(AliYunLogConfig.AGORA, "主叫方发送的邀请通话消息内容:$content channelId:${channelId}")
localRemainTime = remainTime?.toInt() ?: 1500
handler = Handler()
......@@ -630,7 +641,7 @@ class AudioHomeActivity :
writeAgoraLog("RMT状态:${YDLavManager.sdkStatus},重新登录RMT")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.RTM, "RMT状态:${YDLavManager.sdkStatus},重新登录RMTt")
.sendRichLog(AliYunLogConfig.RTM, "RMT状态:${YDLavManager.sdkStatus},重新登录RMTt channelId:${channelId}")
val uid = YdlCommonRouterManager.getYdlCommonRoute().getUid().toString()
YDLavManager.instances.login(uid) { _isSuccess, _msg ->
// writeAgoraLog("拨打电话界面打开RTM重新登录,uid=${uid}")
......@@ -644,7 +655,7 @@ class AudioHomeActivity :
callEventSave("20", "通话页面打开")
writeAgoraLog("用户拨打电话界面开启")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户拨打电话界面开启")
.sendRichLog(AliYunLogConfig.AGORA, "用户拨打电话界面开启 channelId:${channelId}")
//水波纹view初始化
wave_view.setDuration(6000)
wave_view.setStyle(Paint.Style.STROKE)
......@@ -695,13 +706,13 @@ class AudioHomeActivity :
audio_mute_text.text = "麦克风已关"
voiceManage?.getVoiceApi()?.enableLocalAudio(false)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:麦克风已关")
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:麦克风已关 channelId:${channelId}")
} else {
iv_mute_on_off.isSelected = true
iv_mute_on_off.setImageResource(R.drawable.audiohome_muteon)
audio_mute_text.text = "麦克风已开"
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:麦克风已开")
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:麦克风已开 channelId:${channelId}")
voiceManage?.getVoiceApi()?.enableLocalAudio(true)
}
}
......@@ -713,7 +724,7 @@ class AudioHomeActivity :
return@setOnClickListener
}
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:切换线路")
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:切换线路 channelId:${channelId}")
ActionCountUtils.record("call_phone_page", "call_phone_icon_click", "0", "4")
showChooseDialog(1)
......@@ -722,7 +733,7 @@ class AudioHomeActivity :
iv_hang_up.setOnClickListener {
if (!canHangUp) {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:挂断,展示提示弹窗")
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:挂断,展示提示弹窗 channelId:${channelId}")
showHangUpTimeOnlineDialog()
return@setOnClickListener
}
......@@ -734,7 +745,7 @@ class AudioHomeActivity :
if (isConnectSuccess) {
writeAgoraLog("已接通:主叫主动挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "已接通:主叫主动挂断")
.sendRichLog(AliYunLogConfig.AGORA, "已接通:主叫主动挂断 channelId:${channelId}")
updateExpertStatus(false, 1)
leaveChannel()
uploadLog()
......@@ -759,13 +770,13 @@ class AudioHomeActivity :
iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free_unuse)
hands_free_text.text="扬声器已关"
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:免提,扬声器已关")
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:免提,扬声器已关 channelId:${channelId}")
} else {
iv_hands_free.isSelected = true
iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free)
hands_free_text.text="扬声器已开"
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:免提,扬声器已开")
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:免提,扬声器已开 channelId:${channelId}")
}
//已经接通
......@@ -796,7 +807,7 @@ class AudioHomeActivity :
writeAgoraLog("请求音频权限通过")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "请求音频权限通过")
.sendRichLog(AliYunLogConfig.AGORA, "请求音频权限通过 channelId:${channelId}")
init()
}
......@@ -812,7 +823,7 @@ class AudioHomeActivity :
writeAgoraLog("拒绝请求音频权限")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "拒绝请求音频权限")
.sendRichLog(AliYunLogConfig.AGORA, "拒绝请求音频权限 channelId:${channelId}")
uploadLog()
showStorageDialog()
......@@ -823,7 +834,7 @@ class AudioHomeActivity :
callEventSave("80", "请求音频权限异常${e.message}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "请求音频权限异常${e.message}")
.sendRichLog(AliYunLogConfig.AGORA, "请求音频权限异常${e.message} channelId:${channelId}")
init()
}
......@@ -934,7 +945,7 @@ class AudioHomeActivity :
writeAgoraLog("主叫(用户)发送通话邀请")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "主叫(用户)发送通话邀请$msgBean")
.sendRichLog(AliYunLogConfig.AGORA, "主叫(用户)发送通话邀请$msgBean channelId:${channelId}")
rtcCall()
//开始50s等待倒计时
......@@ -987,7 +998,7 @@ class AudioHomeActivity :
LogUtil.d(it.message)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "倒计时异常${it.message}")
.sendRichLog(AliYunLogConfig.AGORA, "倒计时异常${it.message} channelId:${channelId}")
dismissHangUpTimeOnlineDialog()
......@@ -1007,7 +1018,7 @@ class AudioHomeActivity :
writeAgoraLog("未接通挂断:50s等待倒计时结束挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "未接通挂断:50s等待倒计时结束挂断")
.sendRichLog(AliYunLogConfig.AGORA, "未接通挂断:50s等待倒计时结束挂断 channelId:${channelId}")
//提示切换传统线路
//发送消息通知专家用户已挂断
YDLavManager.instances.cancelCall(
......@@ -1021,7 +1032,7 @@ class AudioHomeActivity :
AliYunRichLogsHelper.getInstance()
.sendRichLog(
AliYunLogConfig.AGORA,
"未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断"
"未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断 channelId:${channelId}"
)
}
//通话结束或挂断时,上传日志文件
......@@ -1081,7 +1092,7 @@ class AudioHomeActivity :
writeAgoraLog("未接听时:主叫(用户)主动挂断,取消呼叫")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断,取消呼叫")
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断,取消呼叫 channelId:${channelId}")
LogUtil.e("未接听挂断")
//发送消息通知专家用户已挂断
YDLavManager.instances.cancelCall(
......@@ -1093,7 +1104,7 @@ class AudioHomeActivity :
writeAgoraLog("未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断")
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断 channelId:${channelId}")
}
//通话结束或挂断时,上传日志文件
uploadLog()
......@@ -1129,7 +1140,7 @@ class AudioHomeActivity :
writeAgoraLog("主叫点击切换AXB按钮")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "主叫点击切换AXB按钮")
.sendRichLog(AliYunLogConfig.AGORA, "主叫点击切换AXB按钮 channelId:${channelId}")
switchAXB()
}
......@@ -1155,7 +1166,7 @@ class AudioHomeActivity :
writeAgoraLog("离开房间成功,主叫切换AXB之后")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "离开房间成功,主叫切换AXB之后")
.sendRichLog(AliYunLogConfig.AGORA, "离开房间成功,主叫切换AXB之后 channelId:${channelId}")
mPresenter.getAXBPhone(ConnectCommand(listenId!!, "1"))
}
......@@ -1192,7 +1203,7 @@ class AudioHomeActivity :
writeAgoraLog("未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断")
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断 channelId:${channelId}")
}
leaveChannel()
}
......@@ -1419,7 +1430,7 @@ class AudioHomeActivity :
cmd.status = "CALL_OFF"
}
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户加入频道后,通知服务端发送推送")
.sendRichLog(AliYunLogConfig.AGORA, "用户加入频道后,通知服务端发送推送 channelId:${channelId}")
mPresenter.noticeServerPush(cmd)
}
......
......@@ -119,6 +119,18 @@ class ConsultantAudioHomeActivity :
*/
private var isConnectSuccess: Boolean = false
companion object {
const val PARAM: String = "param"
//0.未接听 1.已接听
const val STATUS_NOT_ANSWERED = 0
const val STATUS_ANSWERED = 1
//666.未接听,直接挂断 667.已接听,正常挂断 668:未接听,用户端取消了
const val RESULT_NOT_ANSWERED_CODE = 666
const val RESULT_ANSWERED_CODE = 667
const val RESULT_USER_CANCEL = 668
}
/**
* 事件回调 (SDK 通过指定的事件通知应用程序 SDK 的运行事件,如: 加入或离开频道,新用户加入频道等)
*/
......@@ -131,6 +143,8 @@ class ConsultantAudioHomeActivity :
*/
override fun onUserMuteAudio(uid: Int, muted: Boolean) {
callEventSave("80", "uid:${uid} 开启了静音 = ${muted}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:咨询用户端:uid:${uid} 开启了静音 = ${muted} channelId:${mAudioMessageBean?.channelId}")
// runOnUiThread {
// showToast("对方静音了,提醒他打开!")
// }
......@@ -143,12 +157,12 @@ class ConsultantAudioHomeActivity :
LogUtil.e("[agora]$uid 加入频道回调")
writeAgoraLog("被叫(用户)加入声网($channel)频道成功")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "被叫(用户)加入声网($channel)频道成功")
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:被叫(用户)uid:${uid}加入声网($channel)频道成功")
runOnUiThread {
// 加入频道后再通知用户已接受
// YDLRTMClient.instances.acceptCall(mAudioMessageBean?.channelId)
YDLavManager.instances.acceptCall(
mAudioMessageBean!!.userId!!,
mAudioMessageBean?.userId!!,
mAudioMessageBean?.channelId,
Gson().toJson(mAudioMessageBean)
)
......@@ -174,7 +188,7 @@ class ConsultantAudioHomeActivity :
LogUtil.e("[agora]$uid 重新加入频道回调")
writeAgoraLog("被叫(用户)重新加入声网频道($channel)成功")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "被叫(用户)重新加入声网频道($channel)成功")
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:被叫(用户)uid:${uid} 重新加入声网频道($channel)成功")
runOnUiThread {
if (!isConnectSuccess) {
......@@ -195,7 +209,7 @@ class ConsultantAudioHomeActivity :
LogUtil.e("[agora]远端用户加入频道回调")
writeAgoraLog("主叫(专家)加入声网频道成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "主叫(专家)加入声网频道成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:主叫(专家)uid:${uid}加入声网频道成功 channelId:${mAudioMessageBean?.channelId}")
//另一方加入频道成功
runOnUiThread {
......@@ -269,7 +283,7 @@ class ConsultantAudioHomeActivity :
callEventSave("52", "自己离开频道回调")
LogUtil.e("[agora]自己离开频道回调")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "自己离开频道回调")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:自己离开频道回调 channelId:${mAudioMessageBean?.channelId}")
//通知php 通话已结束
close(RESULT_ANSWERED_CODE, "")
......@@ -313,7 +327,7 @@ class ConsultantAudioHomeActivity :
showToast("对方已挂断")
writeAgoraLog("通话接通后挂断:主叫(专家)离开频道")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "通话接通后挂断:主叫(专家)离开频道")
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:通话接通后挂断:主叫(专家)$uid 离开频道 channelId:${mAudioMessageBean?.channelId}")
if (null != totalDisposable) {
totalDisposable!!.dispose()
......@@ -331,7 +345,7 @@ class ConsultantAudioHomeActivity :
}
LogUtil.e("[agora]发生警告回调=$warn")
writeAgoraLog("声网警告回调码:($warn)")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "声网警告回调码:($warn)")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:声网警告回调码:($warn) channelId:${mAudioMessageBean?.channelId}")
//103:没有可用的频道资源。可能是因为服务端没法分配频道资源
//104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器
......@@ -359,7 +373,7 @@ class ConsultantAudioHomeActivity :
LogUtil.e("[agora] 发生错误回调 =$err")
writeAgoraLog("声网错误回调errorCode--%${err}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网错误回调errorCode--%${err}")
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:声网错误回调errorCode--%${err} channelId:${mAudioMessageBean?.channelId}")
//3:SDK 初始化失败。Agora 建议尝试以下处理方法
//7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化
......@@ -408,10 +422,13 @@ class ConsultantAudioHomeActivity :
else -> {
}
}
if (err == 0 || err == 18) {
return@runOnUiThread
}
YDLavManager.instances.callEndStatusUpdate(
mAudioMessageBean?.channelId!!,
4,
"频道的错误回调信息${err}"
"频道的错误回调信息${err} "
)
}
}
......@@ -430,6 +447,8 @@ class ConsultantAudioHomeActivity :
if (txQuality in 1..2 && rxQuality in 1..2) {
""
} else if (txQuality >= 5 || rxQuality >= 5) {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:您的网络已断开 channelId:${mAudioMessageBean?.channelId}")
"您的网络已断开"
} else {
status = if (txQuality >= 4 || rxQuality >= 4) {
......@@ -437,6 +456,8 @@ class ConsultantAudioHomeActivity :
} else {
1
}
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:您的网络状况不佳 channelId:${mAudioMessageBean?.channelId}")
"您的网络状况不佳"
}
}
......@@ -444,6 +465,8 @@ class ConsultantAudioHomeActivity :
if (txQuality in 1..2 && rxQuality in 1..2) {
""
} else if (txQuality >= 5 || rxQuality >= 5) {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:对方的网络已断开 channelId:${mAudioMessageBean?.channelId}")
"对方的网络已断开"
} else {
status = if (txQuality >= 4 || rxQuality >= 4) {
......@@ -451,6 +474,8 @@ class ConsultantAudioHomeActivity :
} else {
1
}
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:对方的网络状况不佳 channelId:${mAudioMessageBean?.channelId}")
"对方的网络状况不佳"
}
}
......@@ -468,18 +493,7 @@ class ConsultantAudioHomeActivity :
return R.layout.audioim_cativity_consultant_audio_home
}
companion object {
const val PARAM: String = "param"
//0.未接听 1.已接听
const val STATUS_NOT_ANSWERED = 0
const val STATUS_ANSWERED = 1
//666.未接听,直接挂断 667.已接听,正常挂断 668:未接听,用户端取消了
const val RESULT_NOT_ANSWERED_CODE = 666
const val RESULT_ANSWERED_CODE = 667
const val RESULT_USER_CANCEL = 668
}
override fun initDataAndEvent() {
EventBus.getDefault().register(this)
......@@ -607,7 +621,7 @@ class ConsultantAudioHomeActivity :
callEventSave("90", "通话频道不存在")
LogUtil.e("[agora]token not null")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "token isEmpty ")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:token isEmpty channelId:${mAudioMessageBean?.channelId}")
showToast("通话频道不存在")
finish()
......@@ -691,7 +705,7 @@ class ConsultantAudioHomeActivity :
LogUtil.e("[agora] joinChannel:$account")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "joinChannel:$account")
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:joinChannel:$account channelId:${mAudioMessageBean?.channelId}")
voiceManage?.getVoiceApi()?.joinChannel(
channelToken
......@@ -929,7 +943,7 @@ class ConsultantAudioHomeActivity :
runOnUiThread {
LogUtil.e("[agora]close(code:$code,msg:$msg)")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "close(code:$code,msg:$msg)")
.sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:close(code:$code,msg:$msg) channelId:${mAudioMessageBean?.channelId}")
//上传日志文件
uploadLog()
......@@ -940,6 +954,8 @@ class ConsultantAudioHomeActivity :
RESULT_ANSWERED_CODE -> {
//已接听,正常挂断
//离开频道
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:已接听,正常挂断 channelId:${mAudioMessageBean?.channelId}")
leaveChannel()
}
RESULT_NOT_ANSWERED_CODE -> {
......@@ -961,7 +977,7 @@ class ConsultantAudioHomeActivity :
}
ActivityManager.getInstance().removeStack(activity = this)
LogUtil.e("[agora]页面移除")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "页面移除")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:页面移除 channelId:${mAudioMessageBean?.channelId}")
finish()
}
}
......@@ -977,15 +993,17 @@ class ConsultantAudioHomeActivity :
* 停止播放
*/
private fun stopPlaying() {
if (mPlayer != null) {
mPlayer!!.pause()
}
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:stopPlaying channelId:${mAudioMessageBean?.channelId}")
mPlayer?.pause()
}
/**
* 播放结束音频
*/
private fun playFinishMusic() {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:playFinishMusic channelId:${mAudioMessageBean?.channelId}")
if (mPlayer == null) {
mPlayer = AudioPlayer(this, true)
}
......@@ -1012,6 +1030,8 @@ class ConsultantAudioHomeActivity :
1,
"被叫加入频道后主叫未加入超时"
)
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:15s后如果还是处于连接中,则直接退出当前页面 channelId:${mAudioMessageBean?.channelId}")
writeAgoraLog("通话未接通挂断:连接中的状态超过5s自动挂断")
showToast("用户已挂断")
close(RESULT_NOT_ANSWERED_CODE, "")
......@@ -1025,28 +1045,16 @@ class ConsultantAudioHomeActivity :
*/
private fun leaveChannel() {
uploadException("", "zhu", "108")
if (totalDisposable != null) {
totalDisposable!!.dispose()
}
if (connectingStatusDisposable != null) {
connectingStatusDisposable!!.dispose()
}
if (null != voiceManage && null != voiceManage!!.getVoiceApi()) {
voiceManage!!.getVoiceApi().leaveChannel()
voiceManage!!.getVoiceApi().destroy()
totalDisposable?.dispose()
connectingStatusDisposable?.dispose()
voiceManage?.getVoiceApi()?.leaveChannel()
voiceManage?.getVoiceApi()?.destroy()
voiceManage = null
}
if (mPlayer != null) {
mPlayer!!.clear()
}
if (null != sensorManager) {
sensorManager!!.unregisterListener(this)
}
mPlayer?.clear()
sensorManager?.unregisterListener(this)
//唤醒设备
if (null != localWakeLock && localWakeLock!!.isHeld) {
localWakeLock!!.release()
if (localWakeLock?.isHeld == true) {
localWakeLock?.release()
}
sensorManager = null
localWakeLock = null
......@@ -1054,9 +1062,7 @@ class ConsultantAudioHomeActivity :
}
private fun voiceDestory() {
if (null != voiceManage && null != voiceManage!!.getVoiceApi()) {
voiceManage!!.getVoiceApi().destroy()
}
voiceManage?.getVoiceApi()?.destroy()
voiceManage = null
}
......@@ -1108,6 +1114,8 @@ class ConsultantAudioHomeActivity :
override fun onDestroy() {
LogUtil.e("http-------------onDestory")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:onDestroy channelId:${mAudioMessageBean?.channelId}")
leaveChannel()
voiceDestory()
isConnectSuccess = false
......@@ -1123,6 +1131,7 @@ class ConsultantAudioHomeActivity :
}
}
super.onDestroy()
}
......
......@@ -65,8 +65,9 @@ dependencies {
// 注意此处的依赖方式:kotlin中使用和java中使用方式有不同
kapt "com.alibaba:arouter-compiler:$arouter_compiler"
implementation 'com.alibaba:fastjson:1.2.38'
implementation "com.ydl:jjdxm-ijkplayer:0.0.33"
implementation(rootProject.ext.dependencies["ydl-ijkplayer-jjdxm"]) {
exclude group: 'com.android.support', module: 'appcompat-v7'
}
api rootProject.ext.dependencies["ydl-user-router"]
if (rootProject.ext.dev_mode){
//开发时使用
......
......@@ -133,15 +133,17 @@ class ConfideHomeEventImpl(context: Context, var confideHomeView: IConfideHomeCo
* @param linkUrl 跳转地址
*/
override fun consultantClick(doctorId: String?, confideId: String?, uid: String?,listenFree : Boolean?, expertUrl:String?) {
confideId?.let {
doctorId?.let { doctorId ->
confideId?.let {confideId ->
ConfideBottomSheetDialogFragment()
.showBottomSheetDialog(
mContext as FragmentActivity,
HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro(it),
doctorId!!, uid = uid, listenFree = listenFree ?: false,expertUrl = expertUrl?:""
HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro(confideId),
doctorId, uid = uid, listenFree = listenFree ?: false,expertUrl = expertUrl?:""
)
}
}
}
override fun videoShowClick(index: Int, data: List<ConfideHomeBodyBean>?) {
......
......@@ -433,7 +433,7 @@ internal fun VideoViewModel.mapOf(bean: ConfideHomeBodyBean): VideoViewModel {
avatar.set(bean.confidedIcon)
linkedUrl.set(bean.linkUrl)
val num = bean.confideNum?.replace("人", "") ?: "0"
count.set("倾诉人次 $num")
count.set("服务人次 $num")
intro.set(bean.confideContent)
title.set(bean.title)
val sb = StringBuilder()
......
......@@ -116,7 +116,7 @@
android:layout_height="wrap_content"
android:textSize="@dimen/platform_sp_12"
android:textColor="#69696A"
android:text="倾诉人次"
android:text="服务人次"
/>
</LinearLayout>
<LinearLayout
......
......@@ -46,7 +46,9 @@ dependencies {
kapt 'com.alibaba:arouter-compiler:1.2.2'
implementation rootProject.ext.dependencies["BaseRecyclerViewAdapterHelper"]
api rootProject.ext.dependencies["ydl-user-router"]
implementation "com.ydl:jjdxm-ijkplayer:0.0.33"
implementation(rootProject.ext.dependencies["ydl-ijkplayer-jjdxm"]) {
exclude group: 'com.android.support', module: 'appcompat-v7'
}
if (rootProject.ext.dev_mode){
//开发时使用
implementation project(":api:user")
......
......@@ -113,14 +113,11 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
// 搜索的关联词
var relatedWords = ""
var isRecommendWords = false
if (!lenovoResultSuccess){ // 如果每次输入内容后联想词结果还没返回结果则直接进行搜索
if (etSearch.text.toString().isNullOrEmpty()) {
doSearch(etSearch.hint.toString(), relatedWords, isRecommendWords)
} else {
if (!lenovoResultSuccess && !etSearch.text.toString()
.isNullOrEmpty()
) { // 如果每次输入内容后联想词结果还没返回结果则直接进行搜索
doSearch(etSearch.text.toString(), relatedWords, isRecommendWords)
}
}else if (searchSuggestList.isNotEmpty() && searchSuggestList.size > 0) {
} else if (searchSuggestList.isNotEmpty() && searchSuggestList.size > 0) {
if (searchSuggestList[0].suggest_relations.size > 0) {
relatedWords = searchSuggestList[0].suggest_relations[0]
isRecommendWords = true
......
......@@ -26,7 +26,7 @@ class HomeArticleBean : HomeItemBaseBean {
/**
* 收藏数
*/
var countOfFavorite: Int = 0
var countOfFavorite: String = "0"
var createTime: String? = null
var createTimeFormat: String? = null
/**
......@@ -55,7 +55,7 @@ class HomeArticleBean : HomeItemBaseBean {
/**
* 阅读次数
*/
var readNum: Int = 0
var readNum: String = "0"
/**
* 120*120小头像
*/
......
......@@ -5,7 +5,6 @@ import android.content.Context
import android.graphics.Color
import android.graphics.Typeface
import android.media.MediaPlayer
import android.os.Build
import android.text.TextUtils
import android.view.View
import android.widget.FrameLayout
......@@ -53,8 +52,6 @@ import kotlinx.android.synthetic.ydl.home_fragment.tab_layout
import kotlinx.android.synthetic.ydl.home_muse_view.*
import kotlinx.android.synthetic.ydl.home_muse_view.view.*
import java.util.concurrent.TimeUnit
import kotlin.properties.Delegates
/**
......@@ -136,7 +133,7 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
private fun initAdapter() {
mPresenter?.localHomeData(mContext, "home_data.json")
adapter = YdlHomeAdapter(mContext, homeEvent!!, ArrayList())
adapter = homeEvent?.let { YdlHomeAdapter(mContext, it, ArrayList()) }
val layoutManager = LinearLayoutManager(context)
home_module_fragment_recycler.layoutManager = layoutManager
home_module_fragment_recycler.adapter = adapter
......@@ -147,12 +144,14 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
open fun initRvListener() {
if (HomeViewConfig.getOrder().bannerIndex != -1) {
home_module_fragment_recycler.addOnScrollListener(
homeEvent!!.onPageScroll(
homeEvent?.onPageScroll(
view_rl_top_bg
)!!
)?.let {
home_module_fragment_recycler.addOnScrollListener(
it
)
}
}
scrollListner = HomeConfideRecyleSuspendListener()
home_module_fragment_recycler.addOnScrollListener(scrollListner)
setSuspendListener()
......@@ -272,7 +271,7 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
scrollListner.setHomeView(this)
scrollListner.setConfideFilterView(ll_layout)
scrollListner.setConsultFilterView(ll_consultLayout)
scrollListner.setSectionAdapter(adapter!!)
adapter?.let { scrollListner.setSectionAdapter(it) }
scrollListner.setPhoneCallImageView(home_service_call)
}
......@@ -302,24 +301,30 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
//展示活动数据
val act = homeHeaderBean.activityResponse
if (act != null) {
act?.let { act ->
if (!TextUtils.isEmpty(act.imageUrl)) {
img_ad.visibility = View.VISIBLE
ActionCountUtils.count(HomeBIConstants.YDL_HOME_SEARCH_TAG,act.title?:"1")
ActionCountUtils.count(HomeBIConstants.YDL_HOME_SEARCH_TAG, act.title ?: "1")
GlideApp.with(this).load(act!!.imageUrl).into(img_ad)
GlideApp.with(this).load(act.imageUrl).into(img_ad)
img_ad.setOnClickListener {
if (Utils.isFastClick()) {
//防止连击
return@setOnClickListener
}
if (act.btnLinkurl != null && act.btnLinkurl!!.startsWith("http")) {
NewH5Activity.start(activity, H5Params(act.btnLinkurl!!, null))
act.btnLinkurl?.let { btnLinkurl ->
if (btnLinkurl.startsWith("http")) {
NewH5Activity.start(activity, H5Params(btnLinkurl, null))
} else {
YDLRouterManager.router(act.btnLinkurl)
YDLRouterManager.router(btnLinkurl)
}
//定制咨询点击事件埋点
ActionCountUtils.count(HomeBIConstants.YDL_HOME_SEARCH_TAG_CLICK,act.title?:"1")
ActionCountUtils.count(
HomeBIConstants.YDL_HOME_SEARCH_TAG_CLICK,
act.title ?: "1"
)
}
}
} else {
img_ad.visibility = View.GONE
......@@ -340,7 +345,7 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
if (!TextUtils.isEmpty(act.imageBanner)) {
//展示弹窗
if (aa == null) {
ActionCountUtils.count(HomeBIConstants.YDL_HOME_POPUPWINDOWS_PAGE_POPUP,act?.title?:"1")
ActionCountUtils.count(HomeBIConstants.YDL_HOME_POPUPWINDOWS_PAGE_POPUP,act?.title ?: "1")
aa = ActivityDialog(mActivity, act.imageBanner, act.linkUrl, act.title)
aa?.show()
aa?.setOnDismissListener {
......@@ -361,7 +366,7 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
//更新首页数据
adapter?.updateItems(list)
if (!TextUtils.isEmpty(list[0].headerBean?.doctorName)) {
doctorName = list[0].headerBean?.doctorName!!
doctorName = list[0].headerBean?.doctorName.toString()
initSearchBar()
}
......@@ -372,9 +377,9 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
for (bean in list) {
//咨询模块
if (bean.type == HomeViewConfig.getOrder().bannerIndex) {
initTabLayout(bean.headerBean!!.listenCategoryDate)
initConsultTabLayout(bean.headerBean!!.consultCategoryData)
consultLastSelectType = bean.headerBean!!.consultCategoryData!![0].id.toString()
initTabLayout(bean.headerBean?.listenCategoryDate)
initConsultTabLayout(bean.headerBean?.consultCategoryData)
consultLastSelectType = bean.headerBean?.consultCategoryData?.get(0)?.id.toString()
}
}
}
......@@ -384,19 +389,22 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
*/
private fun initTabLayout(listenCategoryDate: List<HomeHeaderBean.ListenCategoryDateBean>?) {
if (confideTabListener == null) {
confideTabListener = ConfideExpertTabSelectedListener(listenCategoryDate!!, tab_layout)
tab_layout.addOnTabSelectedListener(confideTabListener!!)
confideTabListener =
listenCategoryDate?.let { ConfideExpertTabSelectedListener(it, tab_layout) }
tab_layout.addOnTabSelectedListener(confideTabListener)
}
tab_layout.removeAllTabs()
for ((index, bean) in listenCategoryDate!!.withIndex()) {
if (listenCategoryDate != null) {
for ((index, bean) in listenCategoryDate.withIndex()) {
tab_layout.addTab(
tab_layout.newTab().setText(bean.name),
index == confideLastSelectPosition
)
}
}
var textView =
((tab_layout!!.getChildAt(0) as LinearLayout).getChildAt(confideLastSelectPosition) as LinearLayout).getChildAt(
((tab_layout.getChildAt(0) as LinearLayout).getChildAt(confideLastSelectPosition) as LinearLayout).getChildAt(
1
)
if (textView != null && textView is TextView) {
......@@ -412,16 +420,17 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
private fun initConsultTabLayout(listenCategoryDate: List<HomeHeaderBean.ConsultCategoryDateBean>?) {
if (consultTabListener == null) {
consultTabListener =
ConsultExpertTabSelectedListener(listenCategoryDate!!, tab_consultLayout)
tab_consultLayout.addOnTabSelectedListener(consultTabListener!!)
listenCategoryDate?.let { ConsultExpertTabSelectedListener(it, tab_consultLayout) }
tab_consultLayout.addOnTabSelectedListener(consultTabListener)
}
if (null == consultCategoryDate) {
consultCategoryDate = ArrayList()
}
//如果 数据不变 则不重新构建
if (null != listenCategoryDate && consultCategoryDate!!.size == listenCategoryDate.size && consultCategoryDate!!.retainAll(
if (null != listenCategoryDate && consultCategoryDate!!.size == listenCategoryDate.size && consultCategoryDate?.retainAll(
listenCategoryDate
)
) == true
) {
return
}
......@@ -430,14 +439,16 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
consultCategoryDate?.addAll(listenCategoryDate)
}
tab_consultLayout.removeAllTabs()
for ((index, bean) in listenCategoryDate!!.withIndex()) {
if (listenCategoryDate != null) {
for ((index, bean) in listenCategoryDate.withIndex()) {
tab_consultLayout.addTab(
tab_consultLayout.newTab().setText(bean.name),
index == confideLastSelectPosition
)
}
}
val textView = ((tab_consultLayout!!.getChildAt(0) as LinearLayout).getChildAt(
val textView = ((tab_consultLayout.getChildAt(0) as LinearLayout).getChildAt(
confideLastSelectPosition
) as LinearLayout).getChildAt(1)
if (textView != null && textView is TextView) {
......@@ -589,39 +600,47 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
override fun onTabUnselected(tab: TabLayout.Tab?) {
var textView =
((tabLayout!!.getChildAt(0) as LinearLayout).getChildAt(tab!!.position) as LinearLayout).getChildAt(
(tab?.position?.let { (tabLayout?.getChildAt(0) as LinearLayout).getChildAt(it) } as LinearLayout).getChildAt(
1
)
if (textView != null && textView is TextView) {
textView.textSize = 15f
textView.setTextColor(
activity?.let {
ContextCompat.getColor(
activity!!,
it,
R.color.platform_color_333333
)
}?.let {
textView.setTextColor(
it
)
}
}
}
override fun onTabSelected(tab: TabLayout.Tab?) {
if (tab!!.position == consultLastSelectPosition) {
if (tab?.position == consultLastSelectPosition) {
return
}
var textView =
((tabLayout!!.getChildAt(0) as LinearLayout).getChildAt(tab!!.position) as LinearLayout).getChildAt(
(tab?.position?.let { (tabLayout?.getChildAt(0) as LinearLayout).getChildAt(it) } as LinearLayout).getChildAt(
1
)
if (textView != null && textView is TextView) {
textView.textSize = 17f
textView.setTextColor(
activity?.let {
ContextCompat.getColor(
activity!!,
it,
R.color.platform_color_242424
)
}?.let {
textView.setTextColor(
it
)
}
textView.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
}
homeEvent!!.getConsultData(list!![tab!!.position], tab!!.position)
list?.get(tab.position)?.let { homeEvent?.getConsultData(it, tab.position) }
}
}
......@@ -639,40 +658,48 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
override fun onTabUnselected(tab: TabLayout.Tab?) {
var textView =
((tabLayout!!.getChildAt(0) as LinearLayout).getChildAt(tab!!.position) as LinearLayout).getChildAt(
(tab?.let { (tabLayout?.getChildAt(0) as LinearLayout).getChildAt(it.position) } as LinearLayout).getChildAt(
1
)
if (textView != null && textView is TextView) {
textView.textSize = 15f
textView.setTextColor(
activity?.let {
ContextCompat.getColor(
activity!!,
it,
R.color.platform_color_333333
)
}?.let {
textView.setTextColor(
it
)
}
}
}
override fun onTabSelected(tab: TabLayout.Tab?) {
if (tab!!.position == confideLastSelectPosition) {
if (tab?.position == confideLastSelectPosition) {
return
}
var textView =
((tabLayout!!.getChildAt(0) as LinearLayout).getChildAt(tab!!.position) as LinearLayout).getChildAt(
(tab?.let { (tabLayout?.getChildAt(0) as LinearLayout).getChildAt(it.position) } as LinearLayout).getChildAt(
1
)
if (textView != null && textView is TextView) {
textView.textSize = 17f
textView.setTextColor(
activity?.let {
ContextCompat.getColor(
activity!!,
it,
R.color.platform_color_242424
)
}?.let {
textView.setTextColor(
it
)
}
textView.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
}
homeEvent!!.getConfideData(list!![tab!!.position], tab!!.position)
list?.get(tab.position)?.let { homeEvent?.getConfideData(it, tab.position) }
}
}
......
......@@ -121,7 +121,7 @@
android:layout_height="wrap_content"
android:textSize="@dimen/platform_sp_12"
android:textColor="#69696A"
android:text="倾诉人次"
android:text="服务人次"
/>
</LinearLayout>
<LinearLayout
......
......@@ -82,7 +82,9 @@ class NimSDKOptionConfig {
options.shouldConsiderRevokedMessageUnreadCount = true;
options.mixPushConfig = buildMixPushConfig(configBean);
//https://faq.yunxin.163.com/kb/main/#/item/KB0373
//disableAwake为true来禁止后台进程唤醒UI进程。
options.disableAwake = true;
return options;
}
......
......@@ -936,6 +936,10 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
@SuppressLint("CheckResult")
private void initMenu() {
rela_zixun.setOnClickListener(view -> {
if (Utils.isFastClick()) {
//防止连击
return;
}
if (sessionId != null && ActionHandlerStorage.getL(sessionId) != null && ActionHandlerStorage.getL(sessionId).getInfo() != null) {
if (serviceItemBeanList == null || serviceItemBeanList.size() == 0) {
ServiceImpl.Companion.getInstance().serviceList(ActionHandlerStorage.getL(sessionId).getInfo().doctorId)
......
......@@ -158,6 +158,12 @@ class ExpertConsultServiceItemView : LinearLayout {
}
im_expert_service_list_btn.setOnClickListener {
mContext?.let {context ->
if (!ImIn.loginByOneKeyLogin(context, true)) {
return@setOnClickListener
}
}
if (ImIn.getUserService().isBindPhone()) {
NewH5Activity.start(
mContext,
......
......@@ -82,6 +82,7 @@ class ExpertConsultServiceListDialog2(
if (mList != null) {
dialog_ll_empty.visibility=View.GONE
mList.forEach { item ->
typeList.add(item.cateName)
}
......@@ -92,6 +93,7 @@ class ExpertConsultServiceListDialog2(
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Consumer<BaseAPIResponse<List<ServiceItemBean>>> { res: BaseAPIResponse<List<ServiceItemBean>> ->
if (res.data != null && res.data.size > 0) {
dialog_ll_empty.visibility=View.GONE
var serviceItemBeanList = res.data
serviceItemBeanList.forEach { item ->
......@@ -112,7 +114,7 @@ class ExpertConsultServiceListDialog2(
} else {
ToastUtil.toastShort("咨询师暂未发布服务")
dialog_ll_empty.visibility=View.VISIBLE
}
}, Consumer { throwable: Throwable? -> })
}
......
......@@ -22,10 +22,41 @@
android:layout_gravity="center" />
</LinearLayout>
<LinearLayout
android:id="@+id/dialog_ll_empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/platform_dp_5"
android:gravity="center_horizontal"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/empty_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="选择服务主题"
android:textStyle="bold"
android:textColor="#1C1F28"
android:textSize="18sp" />
<TextView
android:id="@+id/dialog_empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tv_title"
android:gravity="center_horizontal"
android:paddingTop="20dp"
android:text="暂未开通咨询服务"
android:textColor="@color/color_666666" />
</LinearLayout>
<com.ydl.ydlcommon.view.NoScrollViewPager
android:id="@+id/dialog_bottom_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"></com.ydl.ydlcommon.view.NoScrollViewPager>
</LinearLayout>
\ No newline at end of file
......@@ -39,8 +39,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
api(rootProject.ext.dependencies["" +
"ydl-ijkplayer-jjdxm"]) {
api(rootProject.ext.dependencies["ydl-ijkplayer-jjdxm"]) {
exclude group: 'com.android.support', module: 'appcompat-v7'
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment