Commit fda362f2 by 徐健

Merge branch 'dev' into feature/userinfo_collect

# Conflicts:
#	app/src/main/java/com/ydl/component/MainActivity.kt
#	config.gradle
#	m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
parents 8514b7b6 71ff661f
...@@ -183,7 +183,7 @@ dependencies { ...@@ -183,7 +183,7 @@ dependencies {
api project(':m-tests') api project(':m-tests')
api project(':m-consultant') api project(':m-consultant')
implementation modularPublication('com.ydl:m-consultant-api') implementation modularPublication('com.ydl:m-consultant-api')
// implementation project(':m-confide') implementation project(':m-confide')
api project(':m-home') api project(':m-home')
......
...@@ -19,6 +19,7 @@ import com.alibaba.android.arouter.facade.annotation.Route ...@@ -19,6 +19,7 @@ import com.alibaba.android.arouter.facade.annotation.Route
import com.alibaba.android.arouter.launcher.ARouter import com.alibaba.android.arouter.launcher.ARouter
import com.tbruyelle.rxpermissions2.RxPermissions import com.tbruyelle.rxpermissions2.RxPermissions
import com.umeng.analytics.MobclickAgent import com.umeng.analytics.MobclickAgent
import com.ydl.audioim.YDLavManager
import com.ydl.component.music.FragmentContainerActivity import com.ydl.component.music.FragmentContainerActivity
import com.ydl.component.mvp.DemoPresenter import com.ydl.component.mvp.DemoPresenter
import com.ydl.media.audio.PlayService import com.ydl.media.audio.PlayService
......
...@@ -42,13 +42,13 @@ ext { ...@@ -42,13 +42,13 @@ ext {
ydlPublishVersion = [ ydlPublishVersion = [
// -------------- 业务模块 -------------- // -------------- 业务模块 --------------
//第三步 若干 //第三步 若干
"m-confide" : "0.0.48.6", "m-confide" : "0.0.48.7.5",
"m-consultant" : "0.0.57.4", "m-consultant" : "0.0.57.4",
"m-fm" : "0.0.29.3", "m-fm" : "0.0.29.3",
"m-user" : "0.0.59.28", "m-user" : "0.0.59.28",
"m-home" : "0.0.19.1", "m-home" : "0.0.19.1",
"m-im" : "0.0.16.10", "m-im" : "0.0.16.11",
"m-dynamic" : "0.0.6.1", "m-dynamic" : "0.0.7.5",
"m-muse" : "0.0.28.9", "m-muse" : "0.0.28.9",
"m-tests" : "0.0.24.0", "m-tests" : "0.0.24.0",
...@@ -75,7 +75,7 @@ ext { ...@@ -75,7 +75,7 @@ ext {
"ydl-webview" : "0.0.38.24", "ydl-webview" : "0.0.38.24",
"ydl-media" : "0.0.20", "ydl-media" : "0.0.20",
"ydl-pay" : "0.0.17", "ydl-pay" : "0.0.17",
"m-audioim" : "0.0.48.1", "m-audioim" : "0.0.48.2.5",
"ydl-flutter-base": "0.0.10.9", "ydl-flutter-base": "0.0.10.9",
//以下 几乎不会动 //以下 几乎不会动
...@@ -121,7 +121,7 @@ ext { ...@@ -121,7 +121,7 @@ ext {
"ydl-webview" : "0.0.38.24", "ydl-webview" : "0.0.38.24",
"ydl-media" : "0.0.20", "ydl-media" : "0.0.20",
"ydl-pay" : "0.0.17", "ydl-pay" : "0.0.17",
"m-audioim" : "0.0.48.1", "m-audioim" : "0.0.48.2.5",
"ydl-flutter-base": "0.0.10.9", "ydl-flutter-base": "0.0.10.9",
//以下 几乎不会动 //以下 几乎不会动
......
...@@ -75,7 +75,7 @@ dependencies { ...@@ -75,7 +75,7 @@ dependencies {
kapt "com.alibaba:arouter-compiler:$arouter_compiler" kapt "com.alibaba:arouter-compiler:$arouter_compiler"
api "com.alibaba:arouter-api:$arouter_api" api "com.alibaba:arouter-api:$arouter_api"
api ('com.ydl:ydl-av:1.1.9@aar'){ api ('com.ydl:ydl-av:1.2.1@aar'){
transitive = true transitive = true
} }
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ydl.audioim" > package="com.ydl.audioim">
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE"/>
<application> <application>
<activity <activity
android:name=".AudioHomeActivity" android:name=".AudioHomeActivity"
android:screenOrientation="portrait" /> android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:screenOrientation="portrait"/>
</application> </application>
</manifest> </manifest>
...@@ -40,14 +40,10 @@ import com.ydl.webview.H5Params ...@@ -40,14 +40,10 @@ 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.ChannelManager
import com.ydl.ydl_av.messge_service.YDLRTMClient import com.ydl.ydl_av.messge_service.YDLRTMClient
import com.ydl.ydl_av.messge_service.bean.RTMMesssage
import com.ydl.ydl_av.messge_service.callback.CallListener import com.ydl.ydl_av.messge_service.callback.CallListener
import com.ydl.ydl_av.messge_service.callback.ChannelListener
import com.ydl.ydl_av.messge_service.response.CallLocalResponse import com.ydl.ydl_av.messge_service.response.CallLocalResponse
import com.ydl.ydl_av.messge_service.response.CallRemoteResponse import com.ydl.ydl_av.messge_service.response.CallRemoteResponse
import com.ydl.ydl_av.messge_service.response.ChannelMember
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
...@@ -57,11 +53,13 @@ import com.ydl.ydlcommon.modular.ModularServiceManager ...@@ -57,11 +53,13 @@ import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.router.YdlCommonRouterManager import com.ydl.ydlcommon.router.YdlCommonRouterManager
import com.ydl.ydlcommon.utils.LogUtil import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.StatusBarUtils import com.ydl.ydlcommon.utils.StatusBarUtils
import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.user.api.service.IUserService import com.yidianling.user.api.service.IUserService
import de.greenrobot.event.EventBus import de.greenrobot.event.EventBus
import io.agora.rtc.IRtcEngineEventHandler import io.agora.rtc.IRtcEngineEventHandler
import io.agora.rtm.RtmStatusCode
import io.reactivex.Observable 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
...@@ -78,7 +76,8 @@ import java.util.concurrent.TimeUnit ...@@ -78,7 +76,8 @@ import java.util.concurrent.TimeUnit
* @date 2018/10/30 * @date 2018/10/30
*/ */
@Route(path = "/av/AudioHomeActivity") @Route(path = "/av/AudioHomeActivity")
class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudioHomeActivityContract.Presenter>(), class AudioHomeActivity :
BaseMvpActivity<IAudioHomeActivityContract.View, IAudioHomeActivityContract.Presenter>(),
IAudioHomeActivityContract.View, SensorEventListener { IAudioHomeActivityContract.View, SensorEventListener {
/** /**
...@@ -158,6 +157,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -158,6 +157,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
//电源锁 //电源锁
private var localWakeLock: PowerManager.WakeLock? = null private var localWakeLock: PowerManager.WakeLock? = null
private var sensorManager: SensorManager? = null private var sensorManager: SensorManager? = null
private var sendDoctocrMsg: String? = null
private var axbPhone: String? = null private var axbPhone: String? = null
//是否跳转到拨号页面 //是否跳转到拨号页面
private var isJumpDail: Boolean = false private var isJumpDail: Boolean = false
...@@ -168,7 +168,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -168,7 +168,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
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
...@@ -249,7 +249,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -249,7 +249,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
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")
} }
...@@ -257,7 +257,14 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -257,7 +257,14 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
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 {
//自己加入频道成功
connectSuccess()
}
} }
override fun onRtcStats(stats: IRtcEngineEventHandler.RtcStats?) { override fun onRtcStats(stats: IRtcEngineEventHandler.RtcStats?) {
...@@ -291,7 +298,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -291,7 +298,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
override fun onLastmileQuality(quality: Int) { override fun onLastmileQuality(quality: Int) {
super.onLastmileQuality(quality) super.onLastmileQuality(quality)
LogUtil.e("[agora]网络质量报告回调${quality}") // LogUtil.e("[agora]网络质量报告回调${quality}")
} }
override fun onConnectionInterrupted() { override fun onConnectionInterrupted() {
...@@ -302,11 +309,6 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -302,11 +309,6 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
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]远端用户/主播加入频道回调")
runOnUiThread {
//另一方加入频道成功
connectSuccess()
}
} }
override fun onUserOffline(uid: Int, elapsed: Int) { override fun onUserOffline(uid: Int, elapsed: Int) {
...@@ -327,18 +329,6 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -327,18 +329,6 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
} }
// //
/**
* 上传错误日志
* zhu 洪平要的,判别是移动端主动调的还是声网返的
*/
private fun uploadException(message: String, zhu: String = "", eventType: String = "99") {
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 connectException = ConnectExceptionCommand(time + zhu, "2", eventType, payLoad)
getPresenter().connectException(connectException)
}
override fun createPresenter(): IAudioHomeActivityContract.Presenter { override fun createPresenter(): IAudioHomeActivityContract.Presenter {
return AudioHomePresenterImpl() return AudioHomePresenterImpl()
} }
...@@ -373,7 +363,10 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -373,7 +363,10 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
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(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "yidianling") localWakeLock = localPowerManager!!.newWakeLock(
PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,
"yidianling"
)
} }
private fun initIntentData() { private fun initIntentData() {
...@@ -453,9 +446,15 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -453,9 +446,15 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
tv_change_route.setOnClickListener { showChooseDialog(1) } tv_change_route.setOnClickListener { showChooseDialog(1) }
//挂断 //挂断
iv_hang_up.setOnClickListener { iv_hang_up.setOnClickListener {
if (Utils.isFastClick()) {
//防止连击
return@setOnClickListener
}
if (isConnectSuccess) { if (isConnectSuccess) {
updateExpertStatus(false, 1) updateExpertStatus(false, 1)
userCloseCalling() // userCloseCalling()
leaveChannel()
uploadLog()
} else { } else {
userCloseCalling() userCloseCalling()
} }
...@@ -485,18 +484,22 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -485,18 +484,22 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
private fun setCallBack() { private fun setCallBack() {
//RTC 回调
YDLRTMClient.instances.setCallListener(object : CallListener { YDLRTMClient.instances.setCallListener(object : CallListener {
override fun onCallRecivedByPeer(response: CallLocalResponse?) { override fun onCallRecivedByPeer(response: CallLocalResponse?) {
playWaitingMusic()
//返回给主叫:被叫已收到呼叫邀请 //返回给主叫:被叫已收到呼叫邀请
LogUtil.i("[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}") LogUtil.i("[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}")
} }
override fun onCallAccepted(response: CallLocalResponse?) { override fun onCallAccepted(response: CallLocalResponse?, msg: String?) {
//返回给主叫 //返回给主叫
LogUtil.i("[agora]${response?.calleeId}已接收呼叫邀请") LogUtil.i("[agora]${response?.calleeId}已接受呼叫邀请")
//加入声网频道时机修改:用户收到专家接受邀请的回调后再加入声网频道
joinChannel()
} }
override fun onCallRefused(response: CallLocalResponse?) { override fun onCallRefused(response: CallLocalResponse?, msg: String?) {
//返回给主叫 //返回给主叫
LogUtil.i("[agora]${response?.calleeId}已拒绝呼叫邀请") LogUtil.i("[agora]${response?.calleeId}已拒绝呼叫邀请")
ToastUtil.showToast(applicationContext, "对方已挂断") ToastUtil.showToast(applicationContext, "对方已挂断")
...@@ -510,9 +513,20 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -510,9 +513,20 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
LogUtil.i("[agora]主叫已取消呼叫邀请") LogUtil.i("[agora]主叫已取消呼叫邀请")
} }
override fun onCallFailure(response: CallLocalResponse?) { override fun onCallFailure(response: CallLocalResponse?, errorCode: Int) {
//返回给主叫 //返回给主叫
LogUtil.i("[agora]呼叫${response?.calleeId}用户失败:${response?.response}") LogUtil.i("[agora]呼叫${response?.calleeId}用户失败:${response?.response}")
//专家离线或者30 秒后仍未收到专家响应,重新再邀请一次
when (errorCode) {
//被叫不在线 呼叫邀请发出 30 秒后被叫仍未 ACK 响应呼叫邀请
RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_PEER_OFFLINE,
RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_PEER_NO_RESPONSE -> {
YDLRTMClient.instances.call(listenerUid!!, channelId, sendDoctocrMsg)
}
RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_INVITATION_EXPIRE -> {//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
}
}
} }
override fun onRemoteInvitationReceived(response: CallRemoteResponse?) { override fun onRemoteInvitationReceived(response: CallRemoteResponse?) {
...@@ -535,7 +549,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -535,7 +549,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
LogUtil.i("[agora]主叫${response?.callerId}已取消呼叫邀请") LogUtil.i("[agora]主叫${response?.callerId}已取消呼叫邀请")
} }
override fun onRemoteInvitationFailure(response: CallRemoteResponse?) { override fun onRemoteInvitationFailure(response: CallRemoteResponse?, errorCode: Int) {
//返回给被叫 //返回给被叫
LogUtil.i("[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}") LogUtil.i("[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}")
} }
...@@ -544,26 +558,27 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -544,26 +558,27 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
LogUtil.i("[agora]其它消息:${error}") LogUtil.i("[agora]其它消息:${error}")
} }
}) })
channelManager = YDLRTMClient.instances.createChannelManager(channelId, object : ChannelListener {
override fun onMemberCountUpdated(memberCount: Int) {
//频道人数更新
LogUtil.i("[agora]当前频道人数:$memberCount")
}
override fun onMessageReceived(message: RTMMesssage?, member: ChannelMember?) {
//接到频道消息
LogUtil.i("[agora]接到${member?.channelId}频道${member?.userId}的消息:" + message?.text)
}
override fun onMemberJoined(member: ChannelMember?) {
//新用户加入频道
LogUtil.i("[agora]新用户加入${member?.channelId}频道:${member?.userId}")
}
override fun onMemberLeft(member: ChannelMember?) { // channelManager = YDLRTMClient.instances.createChannelManager(channelId, object : ChannelListener {
LogUtil.i("[agora]有用户离开${member?.channelId}频道:${member?.userId}") // override fun onMemberCountUpdated(memberCount: Int) {
} // //频道人数更新
}) // LogUtil.i("[agora]当前频道人数:$memberCount")
// }
//
// override fun onMessageReceived(message: RTMMesssage?, member: ChannelMember?) {
// //接到频道消息
// LogUtil.i("[agora]接到${member?.channelId}频道${member?.userId}的消息:" + message?.text)
// }
//
// override fun onMemberJoined(member: ChannelMember?) {
// //新用户加入频道
// LogUtil.i("[agora]新用户加入${member?.channelId}频道:${member?.userId}")
// }
//
// override fun onMemberLeft(member: ChannelMember?) {
// LogUtil.i("[agora]有用户离开${member?.channelId}频道:${member?.userId}")
// }
// })
} }
/** /**
...@@ -609,20 +624,34 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -609,20 +624,34 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
null, null,
channelId channelId
) )
YDLRTMClient.instances.call(listenerUid!!, channelId, Gson().toJson(msgBean)) sendDoctocrMsg = Gson().toJson(msgBean)
//开始25s等待倒计时
YDLRTMClient.instances.call(listenerUid!!, channelId, sendDoctocrMsg)
Observable.interval(0, 100, TimeUnit.MILLISECONDS) Observable.interval(0, 100, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.computation()) .subscribeOn(Schedulers.computation())
.take(253) .take(303)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ var result = it.toFloat() / 2.5f
progress_view.setProgress(result)
if (result >= 100f && !iv_hang_up.isEnabled) {
//挂断按钮可点击
iv_hang_up.isEnabled = true
iv_hang_up.setImageResource(R.drawable.audioim_img_hang_up)
}},{},{})
//开始60s等待倒计时
waitDisposable = Observable.interval(0, 100, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.computation())
.take(603)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ .subscribe({
progress_view.setProgress(it.toFloat() / 2.5f)
}, { }, {
LogUtil.d(it.message) LogUtil.d(it.message)
}, { }, {
waittingStatus() waittingStatus()
if (!isConnectSuccess) { if (!isConnectSuccess) {
// iv_hang_up.setImageResource(R.mipmap.audioim_ico_close)
//关闭音乐 //关闭音乐
stopPlaying() stopPlaying()
//提示切换传统线路 //提示切换传统线路
...@@ -634,8 +663,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -634,8 +663,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
showChooseDialog(2) showChooseDialog(2)
} }
}) })
//加入频道135
joinChannel()
//双重保险:加入频道成功,通过服务端发推送给专家 //双重保险:加入频道成功,通过服务端发推送给专家
noticeServerPush(true) noticeServerPush(true)
} }
...@@ -717,11 +745,12 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -717,11 +745,12 @@ 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() { override fun onClickEnsure() {
//是手动切换且连接成功 //是手动切换且连接成功
if (type == 1 && isConnectSuccess) { if (type == 1 && isConnectSuccess) {
uploadException("", "zhu", "108") uploadException("", "zhu")
} }
switchAXB() switchAXB()
} }
...@@ -776,7 +805,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -776,7 +805,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
/** /**
* 30s等待完成,专家未接听 * 60s等待完成,专家未接听
*/ */
private fun waittingStatus() { private fun waittingStatus() {
//挂断按钮可点击 //挂断按钮可点击
...@@ -932,11 +961,19 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -932,11 +961,19 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
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(ContextCompat.getColor(this, R.color.audioim_color_50ffffff)) tv_change_route.setTextColor(
ContextCompat.getColor(
this,
R.color.audioim_color_50ffffff
)
)
tv_change_route.setCompoundDrawablesWithIntrinsicBounds( tv_change_route.setCompoundDrawablesWithIntrinsicBounds(
null, null,
null, null,
ContextCompat.getDrawable(this, R.drawable.audioim_img_choose_arrow_unuse), ContextCompat.getDrawable(
this,
R.drawable.audioim_img_choose_arrow_unuse
),
null null
) )
} }
...@@ -1091,6 +1128,21 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -1091,6 +1128,21 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
} }
} }
/**
* 上传错误日志
* zhu 洪平要的,判别是移动端主动调的还是声网返的
*/
private fun uploadException(message: String, zhu: 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 connectException = ConnectExceptionCommand(time + zhu, "2", "99", payLoad)
getPresenter().connectException(connectException)
}
override fun finishActivity() { override fun finishActivity() {
leaveChannel() leaveChannel()
} }
......
package com.ydl.audioim.presenter package com.ydl.audioim.presenter
import android.annotation.SuppressLint
import com.ydl.audioim.BuildConfig import com.ydl.audioim.BuildConfig
import com.ydl.ydl_av.chat.config.YDLChatParam import com.ydl.ydl_av.chat.config.YDLChatParam
import com.ydl.audioim.contract.IAudioHomeActivityContract import com.ydl.audioim.contract.IAudioHomeActivityContract
...@@ -65,6 +66,7 @@ class AudioHomePresenterImpl : BasePresenter<IAudioHomeActivityContract.View, IA ...@@ -65,6 +66,7 @@ class AudioHomePresenterImpl : BasePresenter<IAudioHomeActivityContract.View, IA
// }) // })
// } // }
@SuppressLint("CheckResult")
override fun connectException(param: ConnectExceptionCommand) { override fun connectException(param: ConnectExceptionCommand) {
mModel.connectException(param) mModel.connectException(param)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
...@@ -106,6 +108,7 @@ class AudioHomePresenterImpl : BasePresenter<IAudioHomeActivityContract.View, IA ...@@ -106,6 +108,7 @@ class AudioHomePresenterImpl : BasePresenter<IAudioHomeActivityContract.View, IA
/** /**
* 获取axb电话 * 获取axb电话
*/ */
@SuppressLint("CheckResult")
override fun getAXBPhone(cmd: ConnectCommand) { override fun getAXBPhone(cmd: ConnectCommand) {
mModel.getAXBPhone(cmd) mModel.getAXBPhone(cmd)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
...@@ -113,7 +116,7 @@ class AudioHomePresenterImpl : BasePresenter<IAudioHomeActivityContract.View, IA ...@@ -113,7 +116,7 @@ class AudioHomePresenterImpl : BasePresenter<IAudioHomeActivityContract.View, IA
.doOnSubscribe { mView.showProgressView() } .doOnSubscribe { mView.showProgressView() }
.doAfterTerminate { mView.dismissProgressView() } .doAfterTerminate { mView.dismissProgressView() }
.subscribe({ .subscribe({
if ("200".equals(it.code)){ if ("200" == it.code){
if(0==it.data?.dialDetail?.dialStatus?:-1){ if(0==it.data?.dialDetail?.dialStatus?:-1){
//连接成功 //连接成功
if(it.data?.dialDetail?.callConnectType?:-1==1){ if(it.data?.dialDetail?.callConnectType?:-1==1){
......
...@@ -212,6 +212,8 @@ ...@@ -212,6 +212,8 @@
android:paddingBottom="4dp" android:paddingBottom="4dp"
android:textColor="@color/white" android:textColor="@color/white"
android:visibility="gone" android:visibility="gone"
tools:text="已接通" /> tools:visibility="visible"
tools:text="已接通"
/>
</RelativeLayout> </RelativeLayout>
...@@ -68,7 +68,7 @@ class DynamicConstants { ...@@ -68,7 +68,7 @@ class DynamicConstants {
open var TOPIC_DETAIL_H5 = HttpConfig.H5_URL+ "active/topic-members/" open var TOPIC_DETAIL_H5 = HttpConfig.H5_URL+ "active/topic-members/"
open var TRENF_INFO_SHARE_H5 = HttpConfig.H5_URL + "ask/" open var TRENF_INFO_SHARE_H5 = HttpConfig.MH5_URL + "ask/"
const val PUBLISH_TYPE = "publish_type" const val PUBLISH_TYPE = "publish_type"
......
...@@ -4,6 +4,7 @@ import android.content.Context ...@@ -4,6 +4,7 @@ import android.content.Context
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.os.Message import android.os.Message
import android.text.TextUtils
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -197,7 +198,8 @@ class ImCommentBannerView : LinearLayout { ...@@ -197,7 +198,8 @@ class ImCommentBannerView : LinearLayout {
} }
} }
} }
else -> {} else -> {
}
} }
} }
} }
...@@ -206,11 +208,10 @@ class ImCommentBannerView : LinearLayout { ...@@ -206,11 +208,10 @@ class ImCommentBannerView : LinearLayout {
//获取经过加密的名字 : 徐** //获取经过加密的名字 : 徐**
private fun getName(name: String?): String { private fun getName(name: String?): String {
var nameBuffer = StringBuffer() var nameBuffer = StringBuffer()
name?.let { if (name != null && !TextUtils.isEmpty(name)) {
nameBuffer.append(name[0]) nameBuffer.append(name[0])
nameBuffer.append("**:")
} }
nameBuffer.append("**:")
return nameBuffer.toString() return nameBuffer.toString()
} }
......
...@@ -56,11 +56,11 @@ interface TestRetrofitApi { ...@@ -56,11 +56,11 @@ interface TestRetrofitApi {
fun fetchTopSearch(): Observable<BaseAPIResponse<MutableList<RecommendSearchItemBean>>> fun fetchTopSearch(): Observable<BaseAPIResponse<MutableList<RecommendSearchItemBean>>>
//获取测试列表 - NEW //获取测试列表 - NEW
@GET("test-item/list-by-newTag") @GET("test-item/list-by-cate")
@Headers( YDL_DOMAIN+ YDL_DOMAIN_JAVA) @Headers( YDL_DOMAIN+ YDL_DOMAIN_JAVA)
fun fetchTestListByTag( fun fetchTestListByTag(
//测试标签ID //测试标签ID
@Query("testTagId") testTagId:String, @Query("testCateId") testTagId:String,
//筛选条件免费付费 2免费 3付费 //筛选条件免费付费 2免费 3付费
@Query("testPrice") testPrice:String = "", @Query("testPrice") testPrice:String = "",
//筛选条件测试人数 条件4 //筛选条件测试人数 条件4
......
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