Commit 19a761e2 by 严久程

声网

parent ad1e5e44
...@@ -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')
......
...@@ -15,9 +15,11 @@ import com.alibaba.android.arouter.facade.annotation.Route ...@@ -15,9 +15,11 @@ 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.DemoContract import com.ydl.component.mvp.DemoContract
import com.ydl.component.mvp.DemoPresenter import com.ydl.component.mvp.DemoPresenter
import com.ydl.confide.home.ConfideHomeActivity
//import com.ydl.confide.home.ConfideHomeActivity //import com.ydl.confide.home.ConfideHomeActivity
import com.ydl.media.audio.PlayService import com.ydl.media.audio.PlayService
import com.ydl.ydl_router.manager.YDLRouterManager import com.ydl.ydl_router.manager.YDLRouterManager
...@@ -109,14 +111,14 @@ class MainActivity : BaseLceActivity<DemoContract.View, DemoContract.Presenter>( ...@@ -109,14 +111,14 @@ class MainActivity : BaseLceActivity<DemoContract.View, DemoContract.Presenter>(
startActivity(Intent(this, NewTestHomeActivity::class.java)) startActivity(Intent(this, NewTestHomeActivity::class.java))
} }
bt_to_confide.setOnClickListener { bt_to_confide.setOnClickListener {
// YDLavManager.instances.login("1193016") YDLavManager.instances.login("1193016")
// startActivity(Intent(this, ConfideHomeActivity::class.java)) startActivity(Intent(this, ConfideHomeActivity::class.java))
} }
bt_to_muse.setOnClickListener { bt_to_muse.setOnClickListener {
YDLRouterManager.router(IYDLRouterConstant.ROUTER_MUSE_CENTER, // YDLRouterManager.router(IYDLRouterConstant.ROUTER_MUSE_CENTER,
YDLRouterParams().putExtra // YDLRouterParams().putExtra
("url", "http://video.yidianling.com/2019/05/30/746851e2f335baf5f44499f4fb49d3a9.mp3")) // ("url", "http://video.yidianling.com/2019/05/30/746851e2f335baf5f44499f4fb49d3a9.mp3"))
// YDLRouterManager.router( // YDLRouterManager.router(
// IYDLRouterConstant.ROUTER_MUSE, // IYDLRouterConstant.ROUTER_MUSE,
......
...@@ -42,7 +42,7 @@ ext { ...@@ -42,7 +42,7 @@ ext {
ydlPublishVersion = [ ydlPublishVersion = [
// -------------- 业务模块 -------------- // -------------- 业务模块 --------------
//第三步 若干 //第三步 若干
"m-confide" : "0.0.48.6", "m-confide" : "0.0.48.7",
"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.58.2", "m-user" : "0.0.58.2",
...@@ -75,7 +75,7 @@ ext { ...@@ -75,7 +75,7 @@ ext {
"ydl-webview" : "0.0.37.1", "ydl-webview" : "0.0.37.1",
"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",
"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.37.1", "ydl-webview" : "0.0.37.1",
"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",
"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.0@aar'){
transitive = true transitive = true
} }
......
...@@ -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
...@@ -62,6 +58,7 @@ import com.ydl.ydlcommon.utils.remind.ToastHelper ...@@ -62,6 +58,7 @@ 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 +75,8 @@ import java.util.concurrent.TimeUnit ...@@ -78,7 +75,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 +156,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -158,6 +156,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 +167,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -168,7 +167,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
...@@ -257,7 +256,14 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -257,7 +256,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?) {
...@@ -302,11 +308,6 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -302,11 +308,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) {
...@@ -333,7 +334,8 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -333,7 +334,8 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
*/ */
private fun uploadException(message: String, zhu: String = "") { private fun uploadException(message: String, zhu: String = "") {
var time: String = (System.currentTimeMillis() / 1000).toString() var time: String = (System.currentTimeMillis() / 1000).toString()
var uid: String = ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid!! 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 + zhu, "2", "99", payLoad) var connectException = ConnectExceptionCommand(time + zhu, "2", "99", payLoad)
getPresenter().connectException(connectException) getPresenter().connectException(connectException)
...@@ -373,7 +375,10 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -373,7 +375,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() {
...@@ -485,18 +490,21 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -485,18 +490,21 @@ 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?) {
//返回给主叫:被叫已收到呼叫邀请 //返回给主叫:被叫已收到呼叫邀请
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 +518,20 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -510,9 +518,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 +554,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -535,7 +554,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 +563,27 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -544,26 +563,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?) { // channelManager = YDLRTMClient.instances.createChannelManager(channelId, object : ChannelListener {
//接到频道消息 // override fun onMemberCountUpdated(memberCount: Int) {
LogUtil.i("[agora]接到${member?.channelId}频道${member?.userId}的消息:" + message?.text) // //频道人数更新
} // LogUtil.i("[agora]当前频道人数:$memberCount")
// }
override fun onMemberJoined(member: ChannelMember?) { //
//新用户加入频道 // override fun onMessageReceived(message: RTMMesssage?, member: ChannelMember?) {
LogUtil.i("[agora]新用户加入${member?.channelId}频道:${member?.userId}") // //接到频道消息
} // LogUtil.i("[agora]接到${member?.channelId}频道${member?.userId}的消息:" + message?.text)
// }
override fun onMemberLeft(member: ChannelMember?) { //
LogUtil.i("[agora]有用户离开${member?.channelId}频道:${member?.userId}") // 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,11 +629,13 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -609,11 +629,13 @@ 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)
//开始60s等待倒计时
Observable.interval(0, 100, TimeUnit.MILLISECONDS) Observable.interval(0, 100, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.computation()) .subscribeOn(Schedulers.computation())
.take(253) .take(603)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ .subscribe({
progress_view.setProgress(it.toFloat() / 2.5f) progress_view.setProgress(it.toFloat() / 2.5f)
...@@ -622,7 +644,6 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -622,7 +644,6 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
}, { }, {
waittingStatus() waittingStatus()
if (!isConnectSuccess) { if (!isConnectSuccess) {
// iv_hang_up.setImageResource(R.mipmap.audioim_ico_close)
//关闭音乐 //关闭音乐
stopPlaying() stopPlaying()
//提示切换传统线路 //提示切换传统线路
...@@ -634,8 +655,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -634,8 +655,7 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi
showChooseDialog(2) showChooseDialog(2)
} }
}) })
//加入频道135
joinChannel()
//双重保险:加入频道成功,通过服务端发推送给专家 //双重保险:加入频道成功,通过服务端发推送给专家
noticeServerPush(true) noticeServerPush(true)
} }
...@@ -717,23 +737,24 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -717,23 +737,24 @@ 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 =
override fun onClickEnsure() { AxbConfirmDialog(mContext, type, object : AxbConfirmDialog.OnClickEnsureListener {
//是手动切换且连接成功 override fun onClickEnsure() {
if (type == 1 && isConnectSuccess) { //是手动切换且连接成功
uploadException("", "zhu") if (type == 1 && isConnectSuccess) {
uploadException("", "zhu")
}
switchAXB()
} }
switchAXB()
}
override fun onClose() { override fun onClose() {
// 如果声网未连接成功,切换axb的弹框是自动弹出的,当关闭弹框的时候,执行用户挂断操作 // 如果声网未连接成功,切换axb的弹框是自动弹出的,当关闭弹框的时候,执行用户挂断操作
// 如果声网连接成功,点击右上角按钮弹出切换axb弹框,但是关闭时用户不执行挂断操作 // 如果声网连接成功,点击右上角按钮弹出切换axb弹框,但是关闭时用户不执行挂断操作
if (!isConnectSuccess) { if (!isConnectSuccess) {
userCloseCalling() userCloseCalling()
}
} }
} })
})
dialog.show() dialog.show()
} }
...@@ -932,11 +953,19 @@ class AudioHomeActivity : BaseMvpActivity<IAudioHomeActivityContract.View, IAudi ...@@ -932,11 +953,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
) )
} }
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/platform_color_80353535"> android:background="@color/platform_color_80353535">
<TextView <TextView
android:id="@+id/tv_change_route" android:id="@+id/tv_change_route"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_marginTop="25dp" android:layout_marginTop="25dp"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:drawableRight="@drawable/audioim_img_choose_arrow_unuse" android:drawableRight="@drawable/audioim_img_choose_arrow_unuse"
android:drawablePadding="6dp" android:drawablePadding="6dp"
android:padding="5dp" android:padding="5dp"
android:text="切换至传统电话" android:text="切换至传统电话"
android:textColor="@color/platform_color_50FFFFFF" android:textColor="@color/platform_color_50FFFFFF"
android:textSize="13sp" android:textSize="13sp"
android:visibility="visible" /> android:visibility="visible" />
<RelativeLayout <RelativeLayout
android:id="@+id/rl_head" android:id="@+id/rl_head"
android:layout_width="250dp" android:layout_width="250dp"
android:layout_height="250dp" android:layout_height="250dp"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="74dp"> android:layout_marginTop="74dp">
<com.ydl.ydlcommon.view.WaveView <com.ydl.ydlcommon.view.WaveView
android:id="@+id/wave_view" android:id="@+id/wave_view"
android:layout_width="250dp" android:layout_width="250dp"
android:layout_height="250dp" android:layout_height="250dp"
android:layout_centerInParent="true" /> android:layout_centerInParent="true" />
<ImageView <ImageView
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="126dp"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:background="@drawable/audioim_head_background" /> android:background="@drawable/audioim_head_background" />
<ImageView <ImageView
android:id="@+id/iv_head" android:id="@+id/iv_head"
android:layout_width="120dp" android:layout_width="120dp"
android:layout_height="120dp" android:layout_height="120dp"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/audioim_head_place_hold_pic" /> android:src="@drawable/audioim_head_place_hold_pic" />
</RelativeLayout> </RelativeLayout>
<TextView <TextView
android:id="@+id/tv_name" android:id="@+id/tv_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/rl_head" android:layout_below="@+id/rl_head"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="-20dp" android:layout_marginTop="-20dp"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="26sp" android:textSize="26sp"
tools:text="留意" /> tools:text="留意" />
<TextView <TextView
android:id="@+id/tv_tips" android:id="@+id/tv_tips"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/tv_name" android:layout_below="@+id/tv_name"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginLeft="25dp" android:layout_marginLeft="25dp"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:layout_marginRight="25dp" android:layout_marginRight="25dp"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center" android:gravity="center"
android:maxLines="2" android:maxLines="2"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="15sp" android:textSize="15sp"
tools:text="你存在的本身就是值得被爱的你存在的本身就是值得被爱的" /> tools:text="你存在的本身就是值得被爱的你存在的本身就是值得被爱的" />
<!-- 倾诉剩余时间--> <!-- 倾诉剩余时间-->
<RelativeLayout <RelativeLayout
android:id="@+id/rl_remain_time" android:id="@+id/rl_remain_time"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_above="@+id/rl_hang_up" android:layout_above="@+id/rl_hang_up"
android:layout_marginBottom="20dp" android:layout_marginBottom="20dp"
android:visibility="gone"> android:visibility="gone">
<TextView <TextView
android:id="@+id/tv_notes" android:id="@+id/tv_notes"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:text="您的倾诉时间还有" android:text="您的倾诉时间还有"
android:textColor="@color/platform_color_30FFFFFF" android:textColor="@color/platform_color_30FFFFFF"
android:textSize="12sp" /> android:textSize="12sp" />
<TextView <TextView
android:id="@+id/tv_remain_time" android:id="@+id/tv_remain_time"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/tv_notes" android:layout_below="@+id/tv_notes"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:text="23:23" android:text="23:23"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="20sp" /> android:textSize="20sp" />
</RelativeLayout> </RelativeLayout>
<TextView <TextView
android:id="@+id/tv_change_doctor" android:id="@+id/tv_change_doctor"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_above="@+id/rl_hang_up" android:layout_above="@+id/rl_hang_up"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginBottom="48dp" android:layout_marginBottom="48dp"
android:gravity="center" android:gravity="center"
android:text="聆听者长时间未接听,\n您可以点击右上角切换线路,或者挂断换一位" android:text="聆听者长时间未接听,\n您可以点击右上角切换线路,或者挂断换一位"
android:textColor="@color/white" android:textColor="@color/white"
android:visibility="gone" /> android:visibility="gone" />
<TextView <TextView
android:id="@+id/tv_waiting" android:id="@+id/tv_waiting"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_above="@+id/rl_hang_up" android:layout_above="@+id/rl_hang_up"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginBottom="50dp" android:layout_marginBottom="50dp"
android:text="正在等待聆听者接受邀请…" android:text="正在等待聆听者接受邀请…"
android:textColor="@color/platform_color_70FFFFFF" android:textColor="@color/platform_color_70FFFFFF"
android:textSize="12sp" android:textSize="12sp"
android:visibility="visible" /> android:visibility="visible" />
<!--挂断按钮--> <!--挂断按钮-->
<RelativeLayout <RelativeLayout
android:id="@+id/rl_hang_up" android:id="@+id/rl_hang_up"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_marginLeft="72dp" android:layout_marginLeft="72dp"
android:layout_marginBottom="18dp"> android:layout_marginBottom="18dp">
<com.ydl.ydlcommon.view.ProgressView <com.ydl.ydlcommon.view.ProgressView
android:id="@+id/progress_view" android:id="@+id/progress_view"
android:layout_width="70dp" android:layout_width="70dp"
android:layout_height="70dp" android:layout_height="70dp"
app:pa_progressWidth="2dp" /> app:pa_progressWidth="2dp" />
<ImageView <ImageView
android:id="@+id/iv_hang_up" android:id="@+id/iv_hang_up"
android:layout_width="66dp" android:layout_width="66dp"
android:layout_height="66dp" android:layout_height="66dp"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:src="@drawable/audioim_img_hang_up_unuse" android:src="@drawable/audioim_img_hang_up_unuse"
android:visibility="visible" /> android:visibility="visible" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/iv_hang_up" android:layout_below="@+id/iv_hang_up"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="挂断" android:text="挂断"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="12sp" /> android:textSize="12sp" />
</RelativeLayout> </RelativeLayout>
<!-- 免提按钮--> <!-- 免提按钮-->
<RelativeLayout <RelativeLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_marginRight="72dp" android:layout_marginRight="72dp"
android:layout_marginBottom="18dp"> android:layout_marginBottom="18dp">
<ImageView <ImageView
android:id="@+id/iv_hands_free" android:id="@+id/iv_hands_free"
android:layout_width="66dp" android:layout_width="66dp"
android:layout_height="66dp" android:layout_height="66dp"
android:layout_marginTop="1dp" android:layout_marginTop="1dp"
android:src="@drawable/audioim_img_hands_free_unuse" /> android:src="@drawable/audioim_img_hands_free_unuse" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/iv_hands_free" android:layout_below="@+id/iv_hands_free"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="免提" android:text="免提"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="12sp" /> android:textSize="12sp" />
</RelativeLayout> </RelativeLayout>
<!--自定义弹窗--> <!--自定义弹窗-->
<TextView <TextView
android:id="@+id/tv_toast" android:id="@+id/tv_toast"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/tv_tips" android:layout_below="@+id/tv_tips"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="34dp" android:layout_marginTop="34dp"
android:background="@drawable/audioim_toast_view_background" android:background="@drawable/audioim_toast_view_background"
android:elevation="6dp" android:elevation="6dp"
android:paddingLeft="11dp" android:paddingLeft="11dp"
android:paddingTop="4dp" android:paddingTop="4dp"
android:paddingRight="11dp" android:paddingRight="11dp"
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>
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