Commit 3bad977f by 刘鹏

Merge branch 'feat/lp/lp_4.3.97' into 'd/v4.3.97'

feat: 倾诉2.0通话界面功能完成

See merge request app_android_lib/YDL-Component!161
parents 72c5053c b5761291
...@@ -395,9 +395,9 @@ class AudioHomeActivity : ...@@ -395,9 +395,9 @@ class AudioHomeActivity :
YDLavManager.instances.callEndStatusUpdate(channelId!!, 4, "对方离开频道") YDLavManager.instances.callEndStatusUpdate(channelId!!, 4, "对方离开频道")
if (totalDisposable != null) { if (totalDisposable != null) {
totalDisposable!!.dispose() totalDisposable?.dispose()
} }
handler!!.postDelayed({ handler?.postDelayed({
//另一方离开频道 //另一方离开频道
updateExpertStatus(false, 1) updateExpertStatus(false, 1)
}, 500) }, 500)
...@@ -509,21 +509,21 @@ class AudioHomeActivity : ...@@ -509,21 +509,21 @@ class AudioHomeActivity :
sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager? sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager?
localPowerManager = getSystemService(POWER_SERVICE) as PowerManager? localPowerManager = getSystemService(POWER_SERVICE) as PowerManager?
localWakeLock = localPowerManager!!.newWakeLock( localWakeLock = localPowerManager?.newWakeLock(
PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,
"yidianling" "yidianling"
) )
// 获取电源管理器对象 // 获取电源管理器对象
val screenOn = localPowerManager!!.isScreenOn val screenOn = localPowerManager?.isScreenOn
if (!screenOn) { if (screenOn == false) {
// 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag // 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
val wl = localPowerManager!!.newWakeLock( val wl = localPowerManager?.newWakeLock(
PowerManager.ACQUIRE_CAUSES_WAKEUP or PowerManager.ACQUIRE_CAUSES_WAKEUP or
PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright" PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright"
) )
wl.acquire(10000) // 点亮屏幕 wl?.acquire(10000) // 点亮屏幕
wl.release() // 释放 wl?.release() // 释放
} }
} }
...@@ -617,7 +617,8 @@ class AudioHomeActivity : ...@@ -617,7 +617,8 @@ class AudioHomeActivity :
// tv_tips.text = expertTips // tv_tips.text = expertTips
var time = totalDuration?.minus(remainTime!!.toInt()) var time = totalDuration?.minus(remainTime!!.toInt())
tv_remain_time.text = DateUtils.formatTime((time).toString()) tv_remain_time.text = DateUtils.formatTime((time).toString())
val timeTotal= totalDuration?.div(60);
tv_totalDuration.text="(满${timeTotal}分钟自动挂断,限24小时内拨打)"
if (!TextUtils.isEmpty(expertHeadUrl)) { if (!TextUtils.isEmpty(expertHeadUrl)) {
var option = SimpleImageOpConfiger() var option = SimpleImageOpConfiger()
option.errorPic = R.drawable.audioim_head_place_hold_pic option.errorPic = R.drawable.audioim_head_place_hold_pic
...@@ -646,10 +647,14 @@ class AudioHomeActivity : ...@@ -646,10 +647,14 @@ class AudioHomeActivity :
iv_mute_on_off.setImageResource(R.drawable.audiohome_muteoff) iv_mute_on_off.setImageResource(R.drawable.audiohome_muteoff)
audio_mute_text.text = "麦克风已关" audio_mute_text.text = "麦克风已关"
voiceManage?.getVoiceApi()?.enableLocalAudio(false) voiceManage?.getVoiceApi()?.enableLocalAudio(false)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:麦克风已关")
} else { } else {
iv_mute_on_off.isSelected = true iv_mute_on_off.isSelected = true
iv_mute_on_off.setImageResource(R.drawable.audiohome_muteon) iv_mute_on_off.setImageResource(R.drawable.audiohome_muteon)
audio_mute_text.text = "麦克风已开" audio_mute_text.text = "麦克风已开"
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:麦克风已开")
voiceManage?.getVoiceApi()?.enableLocalAudio(true) voiceManage?.getVoiceApi()?.enableLocalAudio(true)
} }
} }
...@@ -660,6 +665,8 @@ class AudioHomeActivity : ...@@ -660,6 +665,8 @@ class AudioHomeActivity :
showHangUpTimeTraditionalDialog() showHangUpTimeTraditionalDialog()
return@setOnClickListener return@setOnClickListener
} }
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:切换线路")
ActionCountUtils.record("call_phone_page", "call_phone_icon_click", "0", "4") ActionCountUtils.record("call_phone_page", "call_phone_icon_click", "0", "4")
showChooseDialog(1) showChooseDialog(1)
...@@ -667,6 +674,8 @@ class AudioHomeActivity : ...@@ -667,6 +674,8 @@ class AudioHomeActivity :
//挂断 //挂断
iv_hang_up.setOnClickListener { iv_hang_up.setOnClickListener {
if (!canHangUp) { if (!canHangUp) {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:挂断,展示提示弹窗")
showHangUpTimeOnlineDialog() showHangUpTimeOnlineDialog()
return@setOnClickListener return@setOnClickListener
} }
...@@ -702,20 +711,24 @@ class AudioHomeActivity : ...@@ -702,20 +711,24 @@ class AudioHomeActivity :
iv_hands_free.isSelected = false iv_hands_free.isSelected = false
iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free_unuse) iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free_unuse)
hands_free_text.text="扬声器已关" hands_free_text.text="扬声器已关"
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:免提,扬声器已关")
} else { } else {
iv_hands_free.isSelected = true iv_hands_free.isSelected = true
iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free) iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free)
hands_free_text.text="扬声器已开" hands_free_text.text="扬声器已开"
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户端点击:免提,扬声器已开")
} }
//已经接通 //已经接通
if (isConnectSuccess) { if (isConnectSuccess) {
//是否开启外放 //是否开启外放
voiceManage!!.getVoiceApi().setEnableSpeakerphone(iv_hands_free.isSelected) voiceManage?.getVoiceApi()?.setEnableSpeakerphone(iv_hands_free.isSelected)
} else { } else {
//未接通 //未接通
if (mPlayer != null) { if (mPlayer != null) {
mPlayer!!.switchPlayType(iv_hands_free.isSelected) mPlayer?.switchPlayType(iv_hands_free.isSelected)
} }
} }
} }
...@@ -815,15 +828,15 @@ class AudioHomeActivity : ...@@ -815,15 +828,15 @@ class AudioHomeActivity :
} }
private fun dismissHangUpTimeTraditionalDialog() { private fun dismissHangUpTimeTraditionalDialog() {
if (mHangUpTimeTraditionalDialog != null && mHangUpTimeTraditionalDialog!!.isShowing) { if (mHangUpTimeTraditionalDialog != null && mHangUpTimeTraditionalDialog?.isShowing == true) {
mHangUpTimeTraditionalDialog!!.dismiss() mHangUpTimeTraditionalDialog?.dismiss()
mHangUpTimeTraditionalDialog = null mHangUpTimeTraditionalDialog = null
} }
} }
private fun dismissHangUpTimeOnlineDialog() { private fun dismissHangUpTimeOnlineDialog() {
if (mHangUpTimeOnlineDialog != null && mHangUpTimeOnlineDialog!!.isShowing) { if (mHangUpTimeOnlineDialog != null && mHangUpTimeOnlineDialog?.isShowing == true) {
mHangUpTimeOnlineDialog!!.dismiss() mHangUpTimeOnlineDialog?.dismiss()
mHangUpTimeOnlineDialog = null mHangUpTimeOnlineDialog = null
} }
} }
...@@ -888,12 +901,12 @@ class AudioHomeActivity : ...@@ -888,12 +901,12 @@ class AudioHomeActivity :
waittingStatus() waittingStatus()
} else { } else {
tv_change_time_counter.text = "转传统电话(${remainTime}s)" tv_change_time_counter.text = "转传统电话(${remainTime}s)"
if (mHangUpTimeTraditionalDialog != null && mHangUpTimeTraditionalDialog!!.isShowing) { if (mHangUpTimeTraditionalDialog != null && mHangUpTimeTraditionalDialog?.isShowing == true) {
val callTime = String.format( val callTime = String.format(
getString(R.string.audioim_audio_time_alarm_msg_tradition_dialog), getString(R.string.audioim_audio_time_alarm_msg_tradition_dialog),
traditionCallTime traditionCallTime
) )
(mHangUpTimeTraditionalDialog!!.findDialogView(R.id.third_title) as TextView).text = (mHangUpTimeTraditionalDialog?.findDialogView(R.id.third_title) as TextView).text =
callTime callTime
} }
} }
...@@ -904,12 +917,12 @@ class AudioHomeActivity : ...@@ -904,12 +917,12 @@ class AudioHomeActivity :
dismissHangUpTimeOnlineDialog() dismissHangUpTimeOnlineDialog()
} else { } else {
audio_hangup_text.text = "挂断(${remainTime - 20}s)" audio_hangup_text.text = "挂断(${remainTime - 20}s)"
if (mHangUpTimeOnlineDialog != null && mHangUpTimeOnlineDialog!!.isShowing) { if (mHangUpTimeOnlineDialog != null && mHangUpTimeOnlineDialog?.isShowing == true) {
val callTime = String.format( val callTime = String.format(
getString(R.string.audioim_audio_time_alarm_msg_online_dialog), getString(R.string.audioim_audio_time_alarm_msg_online_dialog),
onlineCallTime onlineCallTime
) )
(mHangUpTimeOnlineDialog!!.findDialogView(R.id.third_title) as TextView).text = (mHangUpTimeOnlineDialog?.findDialogView(R.id.third_title) as TextView).text =
callTime callTime
} }
} }
...@@ -991,7 +1004,7 @@ class AudioHomeActivity : ...@@ -991,7 +1004,7 @@ class AudioHomeActivity :
* param mRtcEventHandler 事件回调(SDK 通过指定的事件通知应用程序 SDK 的运行事件,如: 加入或离开频道,新用户加入频道等) * param mRtcEventHandler 事件回调(SDK 通过指定的事件通知应用程序 SDK 的运行事件,如: 加入或离开频道,新用户加入频道等)
*/ */
voiceManage = YDLVoiceManager(this, BuildConfig.AGORA_APPID, mRtcEventHandler) voiceManage = YDLVoiceManager(this, BuildConfig.AGORA_APPID, mRtcEventHandler)
voiceManage!!.init() voiceManage?.init()
} }
/** /**
...@@ -1003,7 +1016,7 @@ class AudioHomeActivity : ...@@ -1003,7 +1016,7 @@ class AudioHomeActivity :
writeAgoraLog("对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId") writeAgoraLog("对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId")
AliYunRichLogsHelper.getInstance() AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId") .sendRichLog(AliYunLogConfig.AGORA, "对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId")
voiceManage!!.getVoiceApi().joinChannel( voiceManage?.getVoiceApi()?.joinChannel(
token!!, token!!,
channelId!!, channelId!!,
"Extra Optional Data", "Extra Optional Data",
...@@ -1037,7 +1050,7 @@ class AudioHomeActivity : ...@@ -1037,7 +1050,7 @@ class AudioHomeActivity :
} }
//通话结束或挂断时,上传日志文件 //通话结束或挂断时,上传日志文件
uploadLog() uploadLog()
handler!!.postDelayed({ handler?.postDelayed({
LogUtil.e("离开频道") LogUtil.e("离开频道")
leaveChannel() leaveChannel()
}, 100) }, 100)
...@@ -1180,9 +1193,9 @@ class AudioHomeActivity : ...@@ -1180,9 +1193,9 @@ class AudioHomeActivity :
mPlayer = AudioPlayer(this) mPlayer = AudioPlayer(this)
} }
if ((Math.random() * 10 + 1).toInt() >= 5) { if ((Math.random() * 10 + 1).toInt() >= 5) {
mPlayer!!.setTwoDataAndStart(R.raw.audioim_audio_music_1, R.raw.audioim_loop_music) mPlayer?.setTwoDataAndStart(R.raw.audioim_audio_music_1, R.raw.audioim_loop_music)
} else { } else {
mPlayer!!.setTwoDataAndStart(R.raw.audioim_audio_music_2, R.raw.audioim_loop_music) mPlayer?.setTwoDataAndStart(R.raw.audioim_audio_music_2, R.raw.audioim_loop_music)
} }
} }
...@@ -1193,12 +1206,12 @@ class AudioHomeActivity : ...@@ -1193,12 +1206,12 @@ class AudioHomeActivity :
if (mPlayer == null) { if (mPlayer == null) {
mPlayer = AudioPlayer(this) mPlayer = AudioPlayer(this)
} }
mPlayer!!.setDataSource(R.raw.audioim_hand_down_music) mPlayer?.setDataSource(R.raw.audioim_hand_down_music)
mPlayer!!.switchPlayType(iv_hands_free.isSelected) mPlayer?.switchPlayType(iv_hands_free.isSelected)
mPlayer!!.setCompletionListener(MediaPlayer.OnCompletionListener { mPlayer?.setCompletionListener(MediaPlayer.OnCompletionListener {
LogUtil.e("播放结束") LogUtil.e("播放结束")
//通话剩余时间不足60s时,默认 //通话剩余时间不足60s时,默认
if (localRemainTime!! > (totalDuration ?: 1500).minus(60) && !TextUtils.isEmpty( if (localRemainTime!! <= 60 && !TextUtils.isEmpty(
commentUrl commentUrl
) )
) { ) {
...@@ -1211,7 +1224,7 @@ class AudioHomeActivity : ...@@ -1211,7 +1224,7 @@ class AudioHomeActivity :
} }
finish() finish()
}) })
mPlayer!!.start(false, true) mPlayer?.start(false, true)
} }
/** /**
...@@ -1219,7 +1232,7 @@ class AudioHomeActivity : ...@@ -1219,7 +1232,7 @@ class AudioHomeActivity :
*/ */
private fun stopPlaying() { private fun stopPlaying() {
if (mPlayer != null) { if (mPlayer != null) {
mPlayer!!.pause() mPlayer?.pause()
} }
} }
...@@ -1231,19 +1244,25 @@ class AudioHomeActivity : ...@@ -1231,19 +1244,25 @@ class AudioHomeActivity :
phoneHandler?.removeCallbacksAndMessages(null) phoneHandler?.removeCallbacksAndMessages(null)
//通知服务端,此次通话已经接通,服务端开始订单 //通知服务端,此次通话已经接通,服务端开始订单
updateExpertStatus(false, 0) updateExpertStatus(false, 0)
rl_mute_on_off.isClickable = true
//是否开启外放 //是否开启外放
voiceManage!!.getVoiceApi().setEnableSpeakerphone(false) voiceManage?.getVoiceApi()?.setEnableSpeakerphone(false)
if (iv_mute_on_off.isSelected) {
iv_mute_on_off.setImageResource(R.drawable.audiohome_muteoff)
audio_mute_text.text = "麦克风已关"
} else {
iv_mute_on_off.isSelected = true
iv_mute_on_off.setImageResource(R.drawable.audiohome_muteon)
audio_mute_text.text = "麦克风已开"
}
hands_free_text.text="扬声器已关" hands_free_text.text="扬声器已关"
iv_hands_free.isSelected = false iv_hands_free.isSelected = false
iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free_unuse) iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free_unuse)
if (disposable != null) { disposable?.dispose()
disposable!!.dispose()
}
stopPlaying() stopPlaying()
vibrator!!.vibrate(1000) vibrator?.vibrate(1000)
//等待状态的相关ui隐藏(挂断按钮的倒计时不清除,挂断按钮必须在30s后才能点击) //等待状态的相关ui隐藏(挂断按钮的倒计时不清除,挂断按钮必须在30s后才能点击)
tv_change_doctor.visibility = View.GONE tv_change_doctor.visibility = View.GONE
...@@ -1262,10 +1281,17 @@ class AudioHomeActivity : ...@@ -1262,10 +1281,17 @@ class AudioHomeActivity :
.take(remainTime!!.toLong() + 1) .take(remainTime!!.toLong() + 1)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ .subscribe({
localRemainTime = localRemainTime = remainTime!!.toInt().minus(it.toInt())
(totalDuration ?: 1500).minus(remainTime!!.toInt()).plus(it.toInt())
if (localRemainTime!! >= (totalDuration ?: 1500).minus(60)) { if (localRemainTime == 180) {
//三分钟语音播报
playNoticeMusic(3)
}
if (localRemainTime == 60) {
//一分钟语音播报
playNoticeMusic(1)
}
if (localRemainTime!! <=60) {
if (canChangeRoute) { if (canChangeRoute) {
canChangeRoute = false canChangeRoute = false
} }
...@@ -1277,7 +1303,6 @@ class AudioHomeActivity : ...@@ -1277,7 +1303,6 @@ class AudioHomeActivity :
leaveChannel() leaveChannel()
uploadLog() uploadLog()
callEventSave("50", "倾诉时间已用完") callEventSave("50", "倾诉时间已用完")
YDLavManager.instances.callEndStatusUpdate(channelId!!, 3, "倾诉时间已用完") YDLavManager.instances.callEndStatusUpdate(channelId!!, 3, "倾诉时间已用完")
//注意:自动挂断时,如果对方离开频道的回调已经触发,就不要再重复调用接口 //注意:自动挂断时,如果对方离开频道的回调已经触发,就不要再重复调用接口
showToast("通话已结束") showToast("通话已结束")
...@@ -1296,13 +1321,24 @@ class AudioHomeActivity : ...@@ -1296,13 +1321,24 @@ class AudioHomeActivity :
if (mPlayer == null) { if (mPlayer == null) {
mPlayer = AudioPlayer(this) mPlayer = AudioPlayer(this)
} }
if (3 == min) { when (min) {
mPlayer!!.setDataSource(R.raw.audioim_last_3_min) 0 -> {
} else { //结束音
mPlayer!!.setDataSource(R.raw.audioim_last_1_min) mPlayer?.setDataSource(R.raw.audioim_audio_out_channel)
}
1 -> {
//1分钟提示
mPlayer?.setDataSource(R.raw.audioim_last_1_min)
}
3 -> {
//3分钟提示
mPlayer?.setDataSource(R.raw.audioim_last_3_min)
}
} }
mPlayer!!.switchPlayType(iv_hands_free.isSelected)
mPlayer!!.start(false, false) mPlayer?.switchPlayType(iv_hands_free.isSelected)
mPlayer?.start(false, false)
} }
/** /**
...@@ -1347,6 +1383,7 @@ class AudioHomeActivity : ...@@ -1347,6 +1383,7 @@ class AudioHomeActivity :
LogUtil.e("调用leaveChannel方法,isLeavelChannel=$isLeavelChannel") LogUtil.e("调用leaveChannel方法,isLeavelChannel=$isLeavelChannel")
if (!isLeavelChannel) { if (!isLeavelChannel) {
isLeavelChannel = true isLeavelChannel = true
playNoticeMusic(0)
//刷新h5页面 //刷新h5页面
EventBus.getDefault().post(RefreshWebEvent(false)) EventBus.getDefault().post(RefreshWebEvent(false))
stopPlaying() stopPlaying()
...@@ -1358,9 +1395,9 @@ class AudioHomeActivity : ...@@ -1358,9 +1395,9 @@ class AudioHomeActivity :
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
sensorManager!!.registerListener( sensorManager?.registerListener(
this, this,
sensorManager!!.getDefaultSensor(Sensor.TYPE_PROXIMITY), sensorManager?.getDefaultSensor(Sensor.TYPE_PROXIMITY),
SensorManager.SENSOR_DELAY_NORMAL SensorManager.SENSOR_DELAY_NORMAL
) )
ActionCountUtils.count( ActionCountUtils.count(
...@@ -1379,14 +1416,14 @@ class AudioHomeActivity : ...@@ -1379,14 +1416,14 @@ class AudioHomeActivity :
Sensor.TYPE_PROXIMITY -> { Sensor.TYPE_PROXIMITY -> {
if (values[0] == 0.0f) { if (values[0] == 0.0f) {
//贴近手机 //贴近手机
if (!localWakeLock!!.isHeld) { if (localWakeLock?.isHeld == false) {
localWakeLock!!.acquire() localWakeLock?.acquire()
} }
} else { } else {
//离开手机 //离开手机
//唤醒设备 //唤醒设备
if (localWakeLock!!.isHeld) { if (localWakeLock?.isHeld == true) {
localWakeLock!!.release() localWakeLock?.release()
} }
} }
} }
...@@ -1520,33 +1557,33 @@ class AudioHomeActivity : ...@@ -1520,33 +1557,33 @@ class AudioHomeActivity :
hasUpLoadLog = false hasUpLoadLog = false
if (waitDisposable != null) { if (waitDisposable != null) {
waitDisposable!!.dispose() waitDisposable?.dispose()
} }
if (disposable != null) { if (disposable != null) {
disposable!!.dispose() disposable?.dispose()
} }
if (totalDisposable != null) { if (totalDisposable != null) {
totalDisposable!!.dispose() totalDisposable?.dispose()
} }
if (sensorManager != null) { if (sensorManager != null) {
sensorManager!!.unregisterListener(this) sensorManager?.unregisterListener(this)
} }
//唤醒设备 //唤醒设备
if (localWakeLock != null && localWakeLock!!.isHeld) { if (localWakeLock != null && localWakeLock!!.isHeld) {
localWakeLock!!.release() localWakeLock?.release()
} }
sensorManager = null sensorManager = null
localWakeLock = null localWakeLock = null
localPowerManager = null localPowerManager = null
if (null != voiceManage && null != voiceManage!!.getVoiceApi()) { if (null != voiceManage && null != voiceManage?.getVoiceApi()) {
voiceManage!!.getVoiceApi().leaveChannel() voiceManage?.getVoiceApi()?.leaveChannel()
voiceManage!!.getVoiceApi().destroy() voiceManage?.getVoiceApi()?.destroy()
voiceManage = null voiceManage = null
} }
if (mPlayer != null) { if (mPlayer != null) {
mPlayer!!.clear() mPlayer?.clear()
mPlayer = null mPlayer = null
} }
} }
......
...@@ -129,6 +129,7 @@ ...@@ -129,6 +129,7 @@
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/tv_totalDuration"
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"
...@@ -232,7 +233,7 @@ ...@@ -232,7 +233,7 @@
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/audiohome_muteon" android:src="@drawable/audioim_home_muteon_enable"
android:visibility="visible" /> android:visibility="visible" />
<TextView <TextView
......
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