DoggyZhang 1 rok temu
rodzic
commit
4e1f4a283b
26 zmienionych plików z 438 dodań i 718 usunięć
  1. 0 1
      module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/internal/ServiceInitializer.kt
  2. 1 1
      module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/CallWaitingHintView.kt
  3. 0 72
      module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/floatview/FloatingWindowButton.kt
  4. 0 186
      module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/floatview/FloatingWindowGroupView.kt
  5. 177 89
      module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/floatview/FloatingWindowView.kt
  6. 59 52
      module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/incomingview/IncomingFloatView.kt
  7. 0 16
      module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/root/SingleCallView.kt
  8. 6 6
      module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/viewmodel/component/floatview/FloatingWindowViewModel.kt
  9. BIN
      module/call/src/main/res/drawable-xxhdpi/tuicallkit_ic_edit.webp
  10. BIN
      module/call/src/main/res/drawable-xxhdpi/tuicallkit_ic_move_back_white.webp
  11. BIN
      module/call/src/main/res/drawable-xxhdpi/tuicallkit_ic_start_call.webp
  12. 8 0
      module/call/src/main/res/drawable/chat_float_currency_bg.xml
  13. 99 0
      module/call/src/main/res/layout/call_float_call_chat_view.xml
  14. 41 0
      module/call/src/main/res/layout/call_float_call_video_view.xml
  15. 38 0
      module/call/src/main/res/layout/call_float_call_view.xml
  16. 2 2
      module/call/src/main/res/layout/call_incoming_float_view.xml
  17. 0 104
      module/call/src/main/res/layout/tuicallkit_float_call_group_view.xml
  18. 0 72
      module/call/src/main/res/layout/tuicallkit_float_call_view.xml
  19. 0 110
      module/call/src/main/res/layout/tuicallkit_record_fragment_main.xml
  20. 1 1
      module/call/src/main/res/values-ar/strings.xml
  21. 1 1
      module/call/src/main/res/values-en/strings.xml
  22. 1 1
      module/call/src/main/res/values-ja/strings.xml
  23. 1 1
      module/call/src/main/res/values-zh-rHK/strings.xml
  24. 1 1
      module/call/src/main/res/values-zh-rTW/strings.xml
  25. 1 1
      module/call/src/main/res/values-zh/strings.xml
  26. 1 1
      module/call/src/main/res/values/strings.xml

+ 0 - 1
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/internal/ServiceInitializer.kt

@@ -18,7 +18,6 @@ import com.tencent.qcloud.tuicore.permission.PermissionRequester
 import com.tencent.qcloud.tuikit.tuicallkit.state.TUICallState
 import com.tencent.qcloud.tuikit.tuicallkit.utils.DeviceUtils
 import com.tencent.qcloud.tuikit.tuicallkit.view.component.floatview.FloatWindowService
-import com.tencent.qcloud.tuikit.tuicallkit.view.component.floatview.FloatingWindowGroupView
 import com.tencent.qcloud.tuikit.tuicallkit.view.component.floatview.FloatingWindowView
 
 /**

+ 1 - 1
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/CallWaitingHintView.kt

@@ -45,7 +45,7 @@ class CallWaitingHintView(context: Context) : androidx.appcompat.widget.AppCompa
 
         text = if (TUICallDefine.Scene.GROUP_CALL == TUICallState.instance.scene.get()) {
             if (TUICallDefine.Role.Caller == TUICallState.instance.selfUser.get().callRole.get()) {
-                context.getString(R.string.tuicallkit_wait_response)
+                context.getString(R.string.call_wait_response)
             } else {
                 context.getString(R.string.tuicallkit_wait_accept_group)
             }

+ 0 - 72
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/floatview/FloatingWindowButton.kt

@@ -1,72 +0,0 @@
-package com.tencent.qcloud.tuikit.tuicallkit.view.component.floatview
-
-import android.annotation.SuppressLint
-import android.content.Context
-import android.view.ViewGroup
-import android.widget.ImageView
-import com.adealink.weparty.call.CallActivity
-import com.adealink.weparty.call.R
-import com.tencent.cloud.tuikit.engine.call.TUICallDefine
-import com.tencent.qcloud.tuicore.ServiceInitializer
-import com.tencent.qcloud.tuicore.permission.PermissionRequester
-import com.tencent.qcloud.tuikit.tuicallkit.state.TUICallState
-import com.tencent.qcloud.tuikit.tuicallkit.utils.PermissionRequest
-import com.trtc.tuikit.common.livedata.Observer
-
-@SuppressLint("AppCompatCustomView")
-class FloatingWindowButton(context: Context) : ImageView(context) {
-
-    private val callStatusObserver = Observer<TUICallDefine.Status> {
-        if (TUICallState.instance.enableFloatWindow) {
-            this.visibility = VISIBLE
-        }
-    }
-
-    init {
-        initView()
-        addObserver()
-    }
-
-    fun clear() {
-        removeObserver()
-    }
-
-    private fun initView() {
-        setBackgroundResource(R.drawable.tuicallkit_ic_move_back_white)
-        val lp = ViewGroup.LayoutParams(
-            ViewGroup.LayoutParams.MATCH_PARENT,
-            ViewGroup.LayoutParams.MATCH_PARENT
-        )
-        layoutParams = lp
-
-        setOnClickListener {
-            if (PermissionRequester.newInstance(PermissionRequester.FLOAT_PERMISSION).has()) {
-                showFloatView()
-            } else {
-                PermissionRequest.requestFloatPermission(ServiceInitializer.getAppContext())
-            }
-        }
-
-        visibility = if (TUICallState.instance.enableFloatWindow) {
-            VISIBLE
-        } else {
-            GONE
-        }
-    }
-
-    private fun showFloatView() {
-        if(TUICallState.instance.scene.get() == TUICallDefine.Scene.GROUP_CALL){
-            return
-        }
-        FloatWindowService.startFloatService(FloatingWindowView(context.applicationContext))
-        CallActivity.finishActivity()
-    }
-
-    private fun addObserver() {
-        TUICallState.instance.selfUser.get().callStatus.observe(callStatusObserver)
-    }
-
-    private fun removeObserver() {
-        TUICallState.instance.selfUser.get().callStatus.removeObserver(callStatusObserver)
-    }
-}

+ 0 - 186
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/floatview/FloatingWindowGroupView.kt

@@ -1,186 +0,0 @@
-package com.tencent.qcloud.tuikit.tuicallkit.view.component.floatview
-
-import android.content.Context
-import android.view.LayoutInflater
-import android.view.MotionEvent
-import android.view.ViewGroup
-import android.widget.ImageView
-import android.widget.LinearLayout
-import android.widget.RelativeLayout
-import android.widget.TextView
-import com.adealink.weparty.call.R
-import com.tencent.cloud.tuikit.engine.call.TUICallDefine
-import com.tencent.qcloud.tuicore.util.DateTimeUtil
-import com.tencent.qcloud.tuikit.tuicallkit.data.Constants
-import com.tencent.qcloud.tuikit.tuicallkit.data.User
-import com.tencent.qcloud.tuikit.tuicallkit.manager.EngineManager
-import com.tencent.qcloud.tuikit.tuicallkit.utils.ImageLoader
-import com.tencent.qcloud.tuikit.tuicallkit.view.component.videolayout.VideoView
-import com.tencent.qcloud.tuikit.tuicallkit.view.component.videolayout.VideoViewFactory
-import com.tencent.qcloud.tuikit.tuicallkit.view.root.BaseCallView
-import com.tencent.qcloud.tuikit.tuicallkit.viewmodel.component.floatview.FloatingWindowViewModel
-import com.trtc.tuikit.common.livedata.Observer
-
-class FloatingWindowGroupView(context: Context) : BaseCallView(context) {
-    private var layoutVideoView: RelativeLayout? = null
-    private var imageAudioIcon: ImageView? = null
-    private var textCallStatus: TextView? = null
-    private var imageAvatar: ImageView? = null
-    private var textName: TextView? = null
-    private var videoView: VideoView? = null
-    private var layoutFloatMark: LinearLayout? = null
-    private var imageFloatVideoMark: ImageView? = null
-    private var imageFloatAudioMark: ImageView? = null
-
-    private var currentShowVideUserId: String? = null
-    private var viewModel: FloatingWindowViewModel = FloatingWindowViewModel()
-
-    private val observer: Observer<Any> = Observer {
-        updateView(it)
-    }
-
-    private val timeCountObserver = Observer<Int> {
-        if (viewModel.selfUser.callStatus.get() == TUICallDefine.Status.Accept) {
-            textCallStatus?.post {
-                textCallStatus?.text = DateTimeUtil.formatSecondsTo00(viewModel.timeCount.get())
-            }
-        }
-    }
-
-    init {
-        initView(context)
-        addObserver()
-    }
-
-    override fun clear() {
-        super.clear()
-        currentShowVideUserId = null
-    }
-
-    override fun addObserver() {
-        viewModel.timeCount.observe(timeCountObserver)
-
-        viewModel.selfUser.callStatus.observe(observer)
-        viewModel.selfUser.videoAvailable.observe(observer)
-        viewModel.selfUser.playoutVolume.observe(observer)
-        for (user in viewModel.remoteUserList) {
-            user.videoAvailable.observe(observer)
-            user.playoutVolume.observe(observer)
-        }
-    }
-
-    override fun removeObserver() {
-        viewModel.timeCount.removeObserver(timeCountObserver)
-
-        viewModel.selfUser.callStatus.removeObserver(observer)
-        viewModel.selfUser.videoAvailable.removeObserver(observer)
-        viewModel.selfUser.playoutVolume.removeObserver(observer)
-        for (user in viewModel.remoteUserList) {
-            user.videoAvailable.removeObserver(observer)
-            user.playoutVolume.removeObserver(observer)
-        }
-    }
-
-    private fun initView(context: Context) {
-        LayoutInflater.from(context).inflate(R.layout.tuicallkit_float_call_group_view, this)
-        layoutVideoView = findViewById(R.id.rl_video_view)
-        imageAvatar = findViewById(R.id.iv_avatar)
-        textName = findViewById(R.id.tv_float_name)
-        textCallStatus = findViewById(R.id.tv_call_status)
-        imageAudioIcon = findViewById(R.id.iv_audio_view_icon)
-        layoutFloatMark = findViewById(R.id.ll_float_mark)
-        imageFloatVideoMark = findViewById(R.id.iv_float_video_mark)
-        imageFloatAudioMark = findViewById(R.id.iv_float_audio_mark)
-
-        updateView(null)
-    }
-
-    private fun updateView(it: Any?) {
-        if (viewModel.selfUser.callStatus.get() == TUICallDefine.Status.None) {
-            VideoViewFactory.instance.clear()
-            clear()
-            viewModel.stopFloatService()
-            return
-        }
-
-        updateFloatMarkOfSelfUser()
-
-        if (it != null && it is Int && it < Constants.MIN_AUDIO_VOLUME) {
-            return
-        }
-
-        val list = ArrayList<User>()
-        list.addAll(viewModel.remoteUserList)
-        list.add(viewModel.selfUser)
-
-        for (user in list) {
-            if (user.playoutVolume.get() > Constants.MIN_AUDIO_VOLUME) {
-                imageAudioIcon?.visibility = GONE
-                textCallStatus?.visibility = GONE
-                textName?.visibility = VISIBLE
-//                textName?.text = user.nickname.get()
-
-                if (user.videoAvailable.get() == true) {
-                    if (user.id == currentShowVideUserId) {
-                        return
-                    }
-                    currentShowVideUserId = user.id
-
-                    imageAvatar?.visibility = GONE
-                    layoutVideoView?.visibility = VISIBLE
-                    resetLayoutVideoView(user)
-                    return
-                }
-                currentShowVideUserId = null
-                imageAvatar?.visibility = VISIBLE
-                layoutVideoView?.visibility = GONE
-//                ImageLoader.loadImage(context, imageAvatar, user.avatar.get())
-                return
-            }
-        }
-        currentShowVideUserId = null
-        textCallStatus?.text = if (viewModel.selfUser.callStatus.get() == TUICallDefine.Status.Waiting) {
-            context.getString(R.string.tuicallkit_wait_response)
-        } else {
-            DateTimeUtil.formatSecondsTo00(viewModel.timeCount.get())
-        }
-
-        textCallStatus?.visibility = VISIBLE
-        imageAudioIcon?.visibility = VISIBLE
-        imageAvatar?.visibility = GONE
-        textName?.visibility = GONE
-        layoutVideoView?.visibility = GONE
-    }
-
-    private fun resetLayoutVideoView(user: User) {
-        videoView = VideoViewFactory.instance.createVideoView(user, context)
-        videoView?.setVideoIconVisibility(false)
-
-        if (videoView != null && videoView?.parent != null) {
-            (videoView?.parent as ViewGroup).removeView(videoView)
-            layoutVideoView?.removeAllViews()
-        }
-        layoutVideoView?.addView(videoView)
-        if (user.id != viewModel.selfUser.id) {
-            EngineManager.instance.startRemoteView(user.id, videoView?.getVideoView(), null)
-        }
-    }
-
-    private fun updateFloatMarkOfSelfUser() {
-        if (viewModel.selfUser.videoAvailable.get() == true) {
-            imageFloatVideoMark?.setImageResource(R.drawable.tuicallkit_ic_float_video_on)
-        } else {
-            imageFloatVideoMark?.setImageResource(R.drawable.tuicallkit_ic_float_video_off)
-        }
-
-        if (viewModel.selfUser.audioAvailable.get() == true) {
-            imageFloatAudioMark?.setImageResource(R.drawable.tuicallkit_ic_float_audio_on)
-        } else {
-            imageFloatAudioMark?.setImageResource(R.drawable.tuicallkit_ic_float_audio_off)
-        }
-    }
-
-    override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
-        return true
-    }
-}

+ 177 - 89
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/floatview/FloatingWindowView.kt

@@ -2,36 +2,70 @@ package com.tencent.qcloud.tuikit.tuicallkit.view.component.floatview
 
 import android.content.Context
 import android.view.LayoutInflater
+import android.view.View
 import android.view.ViewGroup
-import android.widget.FrameLayout
-import android.widget.ImageView
 import android.widget.RelativeLayout
-import android.widget.TextView
+import androidx.appcompat.widget.AppCompatImageView
+import androidx.appcompat.widget.AppCompatTextView
+import com.adealink.frame.aab.util.getCompatString
+import com.adealink.frame.image.view.NetworkImageView
 import com.adealink.weparty.call.R
+import com.adealink.weparty.commonui.ext.gone
+import com.adealink.weparty.commonui.ext.show
+import com.adealink.weparty.commonui.imageview.AvatarView
 import com.tencent.cloud.tuikit.engine.call.TUICallDefine
+import com.tencent.cloud.tuikit.engine.call.TUICallDefine.MediaType
 import com.tencent.qcloud.tuicore.util.DateTimeUtil
 import com.tencent.qcloud.tuikit.tuicallkit.manager.EngineManager
-import com.tencent.qcloud.tuikit.tuicallkit.utils.ImageLoader
 import com.tencent.qcloud.tuikit.tuicallkit.view.component.videolayout.VideoView
 import com.tencent.qcloud.tuikit.tuicallkit.view.component.videolayout.VideoViewFactory
 import com.tencent.qcloud.tuikit.tuicallkit.view.root.BaseCallView
 import com.tencent.qcloud.tuikit.tuicallkit.viewmodel.component.floatview.FloatingWindowViewModel
 import com.trtc.tuikit.common.livedata.Observer
-import com.adealink.weparty.R as APP_R
 
 class FloatingWindowView(context: Context) : BaseCallView(context) {
 
-    private var layoutAvatar: FrameLayout? = null
+    private var videoContainer: View? = null
     private var layoutVideoView: RelativeLayout? = null
-    private var imageAudioIcon: ImageView? = null
-    private var textCallStatus: TextView? = null
-    private var imageAvatar: ImageView? = null
+    private var videoBgView: NetworkImageView? = null
     private var videoView: VideoView? = null
+    private var videoTimerView: AppCompatTextView? = null
+
+    private var chatContainer: View? = null
+    private var chatBgView: NetworkImageView? = null
+    private var chatAvatarView: AvatarView? = null
+    private var chatTimerView: AppCompatTextView? = null
+    private var chatCurrencyImageView: AppCompatImageView? = null
+    private var chatCurrencyTextView: AppCompatImageView? = null
+    private var chatCurrencyChangedView: AppCompatImageView? = null
+
     private var viewModel: FloatingWindowViewModel = FloatingWindowViewModel()
-    private val observer: Observer<Any> = Observer {
+
+    private val mediaType: MediaType?
+        get() = viewModel.mediaType?.get()
+
+    private val callStatus: TUICallDefine.Status?
+        get() = viewModel.selfUser?.callStatus?.get()
+
+    private val videoAvailable: Boolean
+        get() = viewModel.remoteUser?.videoAvailable?.get() ?: false
+
+    private val mediaTypeObserver: Observer<MediaType> = Observer {
         updateView(it)
     }
 
+    private val timeCountObserver: Observer<Int> = Observer {
+        updateTimer(it)
+    }
+
+    private val callStatusObserver: Observer<TUICallDefine.Status> = Observer {
+        updateCallStatus()
+    }
+
+    private val videoAvailableObserver: Observer<Boolean> = Observer {
+        updateWhenVideoAvailable()
+    }
+
     init {
         initView(context)
         addObserver()
@@ -43,99 +77,153 @@ class FloatingWindowView(context: Context) : BaseCallView(context) {
     }
 
     override fun addObserver() {
-        viewModel?.mediaType?.observe(observer)
-        viewModel?.timeCount?.observe(observer)
-        viewModel?.selfUser?.callStatus?.observe(observer)
-        viewModel.remoteUser?.videoAvailable?.observe(observer)
+        viewModel.mediaType?.observe(mediaTypeObserver)
+        viewModel.timeCount?.observe(timeCountObserver)
+        viewModel.selfUser?.callStatus?.observe(callStatusObserver)
+        viewModel.remoteUser.videoAvailable?.observe(videoAvailableObserver)
     }
 
     override fun removeObserver() {
-        viewModel?.mediaType?.removeObserver(observer)
-        viewModel?.timeCount?.removeObserver(observer)
-        viewModel?.selfUser?.callStatus?.removeObserver(observer)
-        viewModel.remoteUser?.videoAvailable?.removeObserver(observer)
+        viewModel.mediaType?.removeObserver(mediaTypeObserver)
+        viewModel.timeCount?.removeObserver(timeCountObserver)
+        viewModel.selfUser?.callStatus?.removeObserver(callStatusObserver)
+        viewModel.remoteUser?.videoAvailable?.removeObserver(videoAvailableObserver)
     }
 
     private fun initView(context: Context) {
-        LayoutInflater.from(context).inflate(R.layout.tuicallkit_float_call_view, this)
-        layoutVideoView = findViewById(R.id.rl_video_view)
-        imageAvatar = findViewById(R.id.iv_avatar)
-        textCallStatus = findViewById(R.id.tv_call_status)
-        imageAudioIcon = findViewById(R.id.iv_audio_view_icon)
-        layoutAvatar = findViewById(R.id.fl_avatar)
-
-        updateView(null)
+        LayoutInflater.from(context).inflate(R.layout.call_float_call_view, this)
+        val videoContainer = findViewById<View>(R.id.v_video)
+        if (videoContainer != null) {
+            layoutVideoView = videoContainer.findViewById(R.id.rl_video_view)
+            videoBgView = videoContainer.findViewById(R.id.iv_bg)
+            videoTimerView = videoContainer.findViewById(R.id.tv_call_timer)
+        }
+
+        val chatViewContainer = findViewById<View>(R.id.v_chat)
+        if (chatViewContainer != null) {
+            this.chatContainer = chatViewContainer
+            chatBgView = chatViewContainer.findViewById(R.id.iv_bg)
+            chatAvatarView = chatViewContainer.findViewById(R.id.iv_avatar)
+            chatTimerView = chatViewContainer.findViewById(R.id.tv_call_timer)
+            chatCurrencyImageView = chatViewContainer.findViewById(R.id.iv_currency)
+            chatCurrencyTextView = chatViewContainer.findViewById(R.id.tv_currency)
+            chatCurrencyChangedView = chatViewContainer.findViewById(R.id.tv_currency_changed)
+        }
+    }
+
+    private fun reset() {
+        VideoViewFactory.instance.clear()
+        clear()
+        viewModel.stopFloatService()
     }
 
-    private fun updateView(it: Any?) {
-        if (it != null && it is Int && it > 0) {
-            textCallStatus?.post {
-                textCallStatus?.text = DateTimeUtil.formatSecondsTo00(it)
+    private fun updateView(mediaType: MediaType) {
+        when (mediaType) {
+            MediaType.Audio -> {
+                videoContainer?.gone()
+                chatContainer?.show()
+                updateCallStatus()
             }
-            return
-        }
-        if (viewModel.mediaType.get() == TUICallDefine.MediaType.Audio
-            || viewModel.scene.get() == TUICallDefine.Scene.GROUP_CALL
-        ) {
-            imageAudioIcon?.visibility = VISIBLE
-            textCallStatus?.visibility = VISIBLE
-            layoutVideoView?.visibility = GONE
-            layoutAvatar?.visibility = GONE
-            if (viewModel.selfUser?.callStatus?.get() == TUICallDefine.Status.Waiting) {
-                textCallStatus?.text = context.getString(R.string.tuicallkit_wait_response)
-            } else if (viewModel.selfUser?.callStatus?.get() == TUICallDefine.Status.Accept) {
-                textCallStatus?.text = DateTimeUtil.formatSecondsTo00(viewModel.timeCount.get())
-            } else {
-                VideoViewFactory.instance.clear()
-                clear()
-                viewModel.stopFloatService()
+
+            MediaType.Video -> {
+                videoContainer?.show()
+                chatContainer?.gone()
+                updateCallStatus()
+            }
+
+            MediaType.Unknown -> {
+                //Ntd.
             }
-        } else if (viewModel.mediaType.get() == TUICallDefine.MediaType.Video) {
-            imageAudioIcon?.visibility = GONE
-            if (viewModel.selfUser?.callStatus?.get() == TUICallDefine.Status.Waiting) {
-                layoutVideoView?.visibility = VISIBLE
-                layoutAvatar?.visibility = GONE
-                textCallStatus?.visibility = VISIBLE
-                textCallStatus?.text = context.getString(R.string.tuicallkit_wait_response)
-                textCallStatus?.setTextColor(context.resources.getColor(R.color.tuicallkit_color_white))
-                videoView = VideoViewFactory.instance.createVideoView(viewModel.selfUser, context)
-                if (videoView != null && videoView?.parent != null) {
-                    (videoView?.parent as ViewGroup).removeView(videoView)
-                    layoutVideoView?.removeAllViews()
+        }
+    }
+
+    private fun updateCallStatus() {
+        when (mediaType) {
+            MediaType.Audio -> {
+                when (callStatus) {
+                    TUICallDefine.Status.Waiting -> {
+                        chatTimerView?.text = getCompatString(R.string.call_wait_response)
+                    }
+
+                    TUICallDefine.Status.Accept -> {
+                        chatTimerView?.text = DateTimeUtil.formatSecondsTo00(viewModel.timeCount.get())
+                    }
+
+                    TUICallDefine.Status.None, null -> {
+                        reset()
+                    }
                 }
-                layoutVideoView?.addView(videoView)
-            } else if (viewModel.selfUser?.callStatus?.get() == TUICallDefine.Status.Accept) {
-                if (viewModel.remoteUser?.videoAvailable?.get() == true) {
-                    layoutVideoView?.visibility = VISIBLE
-                    layoutAvatar?.visibility = GONE
-                    textCallStatus?.visibility = GONE
-                    videoView = VideoViewFactory.instance.createVideoView(viewModel.remoteUser, context)
-                    if (videoView != null && videoView?.parent != null) {
-                        (videoView?.parent as ViewGroup).removeView(videoView)
-                        layoutVideoView?.removeAllViews()
+            }
+
+            MediaType.Video -> {
+                when (callStatus) {
+                    TUICallDefine.Status.Waiting -> {
+                        videoTimerView?.text = getCompatString(R.string.call_wait_response)
+                        updateWhenVideoAvailable()
                     }
-                    layoutVideoView?.addView(videoView)
-                    EngineManager.instance.startRemoteView(
-                        viewModel.remoteUser?.id,
-                        videoView?.getVideoView(),
-                        null
-                    )
-                } else {
-                    layoutVideoView?.visibility = GONE
-                    layoutAvatar?.visibility = VISIBLE
-
-                    ImageLoader.loadImage(
-                        context,
-                        imageAvatar,
-//                        viewModel.remoteUser?.avatar?.get(),
-                        APP_R.drawable.common_default_avatar_ic
-                    )
+
+                    TUICallDefine.Status.Accept -> {
+                        videoTimerView?.text = DateTimeUtil.formatSecondsTo00(viewModel.timeCount.get())
+                        updateWhenVideoAvailable()
+                    }
+
+                    TUICallDefine.Status.None, null -> {
+                        reset()
+                    }
+                }
+            }
+
+            MediaType.Unknown, null -> {
+
+            }
+        }
+    }
+
+    private fun updateWhenVideoAvailable() {
+        if (videoAvailable) {
+            layoutVideoView?.show()
+            videoView = VideoViewFactory.instance.createVideoView(viewModel.selfUser, context)
+            if (videoView != null && videoView?.parent != null) {
+                (videoView?.parent as ViewGroup).removeView(videoView)
+                layoutVideoView?.removeAllViews()
+            }
+            layoutVideoView?.addView(videoView)
+            EngineManager.instance.startRemoteView(
+                viewModel.remoteUser.id,
+                videoView?.getVideoView(),
+                null
+            )
+        } else {
+            //呼叫等待
+            layoutVideoView?.gone()
+//                        layoutVideoView?.visibility = GONE
+//                        layoutAvatar?.visibility = VISIBLE
+//                        ImageLoader.loadImage(
+//                            context,
+//                            imageAvatar,
+////                        viewModel.remoteUser?.avatar?.get(),
+//                            APP_R.drawable.common_default_avatar_ic
+//                        )
+        }
+
+    }
+
+    private fun updateTimer(timer: Int) {
+        when (mediaType) {
+            MediaType.Audio -> {
+                chatTimerView?.post {
+                    chatTimerView?.text = DateTimeUtil.formatSecondsTo00(timer)
+                }
+            }
+
+            MediaType.Video -> {
+                videoTimerView?.post {
+                    videoTimerView?.text = DateTimeUtil.formatSecondsTo00(timer)
                 }
-            } else {
-                VideoViewFactory.instance.clear()
-                clear()
-                viewModel.stopFloatService()
             }
+
+            MediaType.Unknown, null -> TODO()
         }
     }
+
 }

+ 59 - 52
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/component/incomingview/IncomingFloatView.kt

@@ -10,11 +10,12 @@ import android.view.Gravity
 import android.view.LayoutInflater
 import android.view.View
 import android.view.WindowManager
+import androidx.appcompat.widget.AppCompatImageView
+import androidx.appcompat.widget.AppCompatTextView
 import androidx.constraintlayout.widget.ConstraintLayout
 import com.adealink.frame.log.Log
 import com.adealink.weparty.call.R
 import com.adealink.weparty.call.constant.TAG_CALL_INCOMING_VIEW
-import com.adealink.weparty.call.databinding.CallIncomingFloatViewBinding
 import com.tencent.cloud.tuikit.engine.call.TUICallDefine
 import com.tencent.qcloud.tuicore.TUICore
 import com.tencent.qcloud.tuicore.interfaces.ITUINotification
@@ -35,8 +36,6 @@ class IncomingFloatView @JvmOverloads constructor(
     defStyleAttr: Int = 0,
 ) : ConstraintLayout(context, attrs, defStyleAttr) {
 
-    private val binding = CallIncomingFloatViewBinding.inflate(LayoutInflater.from(context), this, true)
-
     private var appContext: Context = context.applicationContext
     private var caller: User? = null
 
@@ -87,73 +86,81 @@ class IncomingFloatView @JvmOverloads constructor(
     }
 
     private fun initWindow() {
-        windowView = binding.root
+        val windowView = LayoutInflater.from(context).inflate(R.layout.call_incoming_float_view, this)
+        this.windowView = windowView
         // TODO: zhangfei
         //caller?.avatar?.get()
         //binding.ivAvatar.setImageUrl()
-
-        binding.tvTips.text = if (TUICallState.instance.mediaType.get() == TUICallDefine.MediaType.Video) {
-            appContext.resources.getString(R.string.call_invite_video_call)
-        } else {
-            appContext.resources.getString(R.string.call_invite_audio_call)
-        }
-
-        binding.root.setOnClickListener {
+        windowView.setOnClickListener {
             cancelIncomingView()
             TUICore.notifyEvent(Constants.EVENT_TUICALLKIT_CHANGED, Constants.EVENT_START_ACTIVITY, HashMap())
         }
 
-        binding.rejectBtn.setOnClickListener {
-            EngineManager.instance.reject(null)
-            cancelIncomingView()
-        }
-        if (TUICallState.instance.mediaType.get() == TUICallDefine.MediaType.Video) {
-            binding.acceptBtn.setImageResource(R.drawable.call_video_accept_ic)
-        } else {
-            binding.acceptBtn.setImageResource(R.drawable.call_chat_accept_ic)
+        windowView.findViewById<AppCompatTextView>(R.id.tv_name)?.let { tvName ->
+            tvName.text = if (TUICallState.instance.mediaType.get() == TUICallDefine.MediaType.Video) {
+                appContext.resources.getString(R.string.call_invite_video_call)
+            } else {
+                appContext.resources.getString(R.string.call_invite_audio_call)
+            }
         }
-        binding.acceptBtn.setOnClickListener {
-            if (TUICallState.instance.selfUser.get().callStatus.get() == TUICallDefine.Status.None) {
-                Log.w(TAG_CALL_INCOMING_VIEW, "current status is None, ignore")
+
+        windowView.findViewById<AppCompatImageView>(R.id.reject_btn)?.let { rejectBtn ->
+            rejectBtn.setOnClickListener {
+                EngineManager.instance.reject(null)
                 cancelIncomingView()
-                return@setOnClickListener
+            }
+        }
+
+        windowView.findViewById<AppCompatImageView>(R.id.accept_btn)?.let { acceptBtn ->
+            if (TUICallState.instance.mediaType.get() == TUICallDefine.MediaType.Video) {
+                acceptBtn.setImageResource(R.drawable.call_video_accept_ic)
+            } else {
+                acceptBtn.setImageResource(R.drawable.call_chat_accept_ic)
             }
 
-            PermissionRequest.requestPermissions(appContext, TUICallState.instance.mediaType.get(),
-                object : PermissionCallback() {
-                    override fun onGranted() {
-                        if (TUICallState.instance.selfUser.get().callStatus.get() == TUICallDefine.Status.None) {
-                            Log.w(TAG_CALL_INCOMING_VIEW, "current status is None, ignore")
+            acceptBtn.setOnClickListener {
+                if (TUICallState.instance.selfUser.get().callStatus.get() == TUICallDefine.Status.None) {
+                    Log.w(TAG_CALL_INCOMING_VIEW, "current status is None, ignore")
+                    cancelIncomingView()
+                    return@setOnClickListener
+                }
+
+                PermissionRequest.requestPermissions(appContext, TUICallState.instance.mediaType.get(),
+                    object : PermissionCallback() {
+                        override fun onGranted() {
+                            if (TUICallState.instance.selfUser.get().callStatus.get() == TUICallDefine.Status.None) {
+                                Log.w(TAG_CALL_INCOMING_VIEW, "current status is None, ignore")
+                                cancelIncomingView()
+                                return
+                            }
+                            Log.d(TAG_CALL_INCOMING_VIEW, "accept the call")
+                            TUICore.notifyEvent(
+                                Constants.EVENT_TUICALLKIT_CHANGED, Constants.EVENT_START_ACTIVITY, HashMap()
+                            )
+                            EngineManager.instance.accept(null)
+                            if (TUICallState.instance.mediaType.get() == TUICallDefine.MediaType.Video) {
+                                val videoView = VideoViewFactory.instance.createVideoView(
+                                    TUICallState.instance.selfUser.get(), appContext
+                                )
+
+                                EngineManager.instance.openCamera(
+                                    TUICallState.instance.isFrontCamera.get(), videoView?.getVideoView(), null
+                                )
+                            }
                             cancelIncomingView()
-                            return
                         }
-                        Log.d(TAG_CALL_INCOMING_VIEW, "accept the call")
-                        TUICore.notifyEvent(
-                            Constants.EVENT_TUICALLKIT_CHANGED, Constants.EVENT_START_ACTIVITY, HashMap()
-                        )
-                        EngineManager.instance.accept(null)
-                        if (TUICallState.instance.mediaType.get() == TUICallDefine.MediaType.Video) {
-                            val videoView = VideoViewFactory.instance.createVideoView(
-                                TUICallState.instance.selfUser.get(), appContext
-                            )
 
-                            EngineManager.instance.openCamera(
-                                TUICallState.instance.isFrontCamera.get(), videoView?.getVideoView(), null
-                            )
+                        override fun onDenied() {
+                            super.onDenied()
+                            EngineManager.instance.reject(null)
+                            cancelIncomingView()
                         }
-                        cancelIncomingView()
-                    }
-
-                    override fun onDenied() {
-                        super.onDenied()
-                        EngineManager.instance.reject(null)
-                        cancelIncomingView()
-                    }
-                })
+                    })
+            }
         }
 
         windowManager = appContext.getSystemService(WINDOW_SERVICE) as WindowManager
-        windowManager?.addView(windowView, viewParams)
+        windowManager?.addView(this.windowView, viewParams)
     }
 
     private val viewParams: WindowManager.LayoutParams

+ 0 - 16
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/root/SingleCallView.kt

@@ -12,7 +12,6 @@ import com.tencent.qcloud.tuicore.TUICore
 import com.tencent.qcloud.tuikit.tuicallkit.state.TUICallState
 import com.tencent.qcloud.tuikit.tuicallkit.view.component.CallTimerView
 import com.tencent.qcloud.tuikit.tuicallkit.view.component.CallWaitingHintView
-import com.tencent.qcloud.tuikit.tuicallkit.view.component.floatview.FloatingWindowButton
 import com.tencent.qcloud.tuikit.tuicallkit.view.component.function.AudioAndVideoCalleeWaitingView
 import com.tencent.qcloud.tuikit.tuicallkit.view.component.function.AudioCallerWaitingAndAcceptedView
 import com.tencent.qcloud.tuikit.tuicallkit.view.component.function.VideoCallerAndCalleeAcceptedView
@@ -27,7 +26,6 @@ class SingleCallView(context: Context) : RelativeLayout(context) {
     private var layoutTimer: FrameLayout? = null
     private var layoutUserInfo: FrameLayout? = null
     private var layoutFunction: FrameLayout? = null
-    private var layoutFloatIcon: FrameLayout? = null
     private var layoutRender: FrameLayout? = null
     private var layoutCallTag: FrameLayout? = null
 
@@ -36,7 +34,6 @@ class SingleCallView(context: Context) : RelativeLayout(context) {
     private var callTimerView: CallTimerView? = null
     private var hintView: CallWaitingHintView? = null
     private var singleCallVideoLayout: SingleCallVideoLayout? = null
-    private var floatingWindowButton: FloatingWindowButton? = null
 
     private var callStatusObserver = Observer<TUICallDefine.Status> {
         refreshFunctionView()
@@ -49,20 +46,16 @@ class SingleCallView(context: Context) : RelativeLayout(context) {
             refreshUserInfoView()
             refreshFunctionView()
             refreshRenderView()
-            refreshFloatView()
         }
     }
 
     private var isShowFullScreenObserver = Observer<Boolean> {
         if (it) {
-            layoutFloatIcon?.visibility = GONE
             layoutTimer?.visibility = GONE
             layoutFunction?.visibility = GONE
         } else {
-            layoutFloatIcon?.visibility = VISIBLE
             layoutTimer?.visibility = VISIBLE
             layoutFunction?.visibility = VISIBLE
-            layoutFloatIcon?.bringToFront()
             layoutTimer?.bringToFront()
             layoutFunction?.bringToFront()
         }
@@ -78,14 +71,12 @@ class SingleCallView(context: Context) : RelativeLayout(context) {
         userInfoView?.clear()
         callTimerView?.clear()
         singleCallVideoLayout?.clear()
-        floatingWindowButton?.clear()
         removeObserver()
     }
 
     private fun initView() {
         LayoutInflater.from(context).inflate(R.layout.tuicallkit_root_view_single, this)
         layoutRender = findViewById(R.id.rl_container)
-        layoutFloatIcon = findViewById(R.id.rl_layout_float_icon)
         layoutUserInfo = findViewById(R.id.rl_user_info_layout)
         layoutTimer = findViewById(R.id.rl_single_time)
         layoutFunction = findViewById(R.id.rl_single_function)
@@ -103,13 +94,6 @@ class SingleCallView(context: Context) : RelativeLayout(context) {
         refreshFunctionView()
         refreshTimerView()
         refreshRenderView()
-        refreshFloatView()
-    }
-
-    private fun refreshFloatView() {
-        layoutFloatIcon?.removeAllViews()
-        floatingWindowButton = FloatingWindowButton(context)
-        layoutFloatIcon?.addView(floatingWindowButton)
     }
 
     private fun refreshRenderView() {

+ 6 - 6
module/call/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/viewmodel/component/floatview/FloatingWindowViewModel.kt

@@ -7,12 +7,12 @@ import com.tencent.qcloud.tuikit.tuicallkit.view.component.floatview.FloatWindow
 import com.trtc.tuikit.common.livedata.LiveData
 
 class FloatingWindowViewModel {
-    public var selfUser: User
-    public var remoteUser: User
-    public var remoteUserList: LinkedHashSet<User>
-    public var timeCount = LiveData<Int>()
-    public var scene = LiveData<TUICallDefine.Scene>()
-    public var mediaType = LiveData<TUICallDefine.MediaType>()
+    var selfUser: User
+    var remoteUser: User
+    var remoteUserList: LinkedHashSet<User>
+    var timeCount = LiveData<Int>()
+    var scene = LiveData<TUICallDefine.Scene>()
+    var mediaType = LiveData<TUICallDefine.MediaType>()
 
     init {
         this.scene = TUICallState.instance.scene

BIN
module/call/src/main/res/drawable-xxhdpi/tuicallkit_ic_edit.webp


BIN
module/call/src/main/res/drawable-xxhdpi/tuicallkit_ic_move_back_white.webp


BIN
module/call/src/main/res/drawable-xxhdpi/tuicallkit_ic_start_call.webp


+ 8 - 0
module/call/src/main/res/drawable/chat_float_currency_bg.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <solid android:color="@color/color_4D000000" />
+    <corners android:radius="12dp" />
+
+</shape>

+ 99 - 0
module/call/src/main/res/layout/call_float_call_chat_view.xml

@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="90dp"
+    android:layout_height="130dp">
+
+    <include
+        android:id="@+id/v_bg"
+        layout="@layout/layout_call_chat_bg"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <com.adealink.weparty.commonui.imageview.AvatarView
+        android:id="@+id/iv_avatar"
+        android:layout_width="32dp"
+        android:layout_height="32dp"
+        android:layout_marginTop="16dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <androidx.appcompat.widget.AppCompatTextView
+        android:id="@+id/tv_call_timer"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="4dp"
+        android:layout_marginTop="8dp"
+        android:layout_marginBottom="8dp"
+        android:gravity="center"
+        android:singleLine="true"
+        android:textColor="@color/white"
+        android:textSize="14sp"
+        app:layout_constrainedWidth="true"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/iv_avatar"
+        tools:text="00:00" />
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/cl_currency"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="4dp"
+        android:layout_marginBottom="12dp"
+        android:background="@drawable/chat_float_currency_bg"
+        android:paddingHorizontal="6dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent">
+
+        <androidx.appcompat.widget.AppCompatImageView
+            android:id="@+id/iv_currency"
+            android:layout_width="16dp"
+            android:layout_height="16dp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:srcCompat="@drawable/common_diamond_32_ic" />
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tv_currency"
+            android:layout_width="wrap_content"
+            android:layout_height="24dp"
+            android:layout_marginHorizontal="8dp"
+            android:gravity="center"
+            android:includeFontPadding="false"
+            android:singleLine="true"
+            android:textColor="@color/white"
+            android:textSize="12sp"
+            app:layout_constrainedWidth="true"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toEndOf="@id/iv_currency"
+            app:layout_constraintTop_toTopOf="parent"
+            tools:text="888" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.appcompat.widget.AppCompatTextView
+        android:id="@+id/tv_currency_changed"
+        android:layout_width="wrap_content"
+        android:layout_height="24dp"
+        android:layout_marginHorizontal="8dp"
+        android:gravity="center"
+        android:includeFontPadding="false"
+        android:singleLine="true"
+        android:textColor="@color/color_FFFFE99E"
+        android:textSize="12sp"
+        android:visibility="gone"
+        app:layout_constrainedWidth="true"
+        app:layout_constraintBottom_toBottomOf="@id/cl_currency"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.8"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/cl_currency"
+        tools:text="+888"
+        tools:visibility="visible" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 41 - 0
module/call/src/main/res/layout/call_float_call_video_view.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="110dp"
+    android:layout_height="190dp">
+
+    <include
+        android:id="@+id/v_bg"
+        layout="@layout/layout_call_chat_bg"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <RelativeLayout
+        android:id="@+id/rl_video_view"
+        android:layout_width="110dp"
+        android:layout_height="190dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <androidx.appcompat.widget.AppCompatTextView
+        android:id="@+id/tv_call_timer"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="4dp"
+        android:layout_marginTop="8dp"
+        android:layout_marginBottom="8dp"
+        android:gravity="center"
+        android:singleLine="true"
+        android:textColor="@color/white"
+        android:textSize="14sp"
+        app:layout_constrainedWidth="true"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:text="00:00" />
+</androidx.constraintlayout.widget.ConstraintLayout>
+

+ 38 - 0
module/call/src/main/res/layout/call_float_call_view.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.tencent.qcloud.tuikit.tuicallkit.view.common.RoundShadowLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@color/white">
+
+        <include
+            android:id="@+id/v_video"
+            layout="@layout/call_float_call_video_view"
+            android:layout_width="110dp"
+            android:layout_height="190dp"
+            android:visibility="gone"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            tools:visibility="gone" />
+
+        <include
+            android:id="@+id/v_chat"
+            layout="@layout/call_float_call_chat_view"
+            android:layout_width="90dp"
+            android:layout_height="130dp"
+            android:visibility="gone"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            tools:visibility="visible" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</com.tencent.qcloud.tuikit.tuicallkit.view.common.RoundShadowLayout>
+

+ 2 - 2
module/call/src/main/res/layout/call_incoming_float_view.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<com.tencent.qcloud.tuikit.tuicallkit.view.common.RoundShadowLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
@@ -89,4 +89,4 @@
 
     </androidx.constraintlayout.widget.ConstraintLayout>
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+</com.tencent.qcloud.tuikit.tuicallkit.view.common.RoundShadowLayout>

+ 0 - 104
module/call/src/main/res/layout/tuicallkit_float_call_group_view.xml

@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<com.tencent.qcloud.tuikit.tuicallkit.view.common.RoundShadowLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:background="@color/tuicallkit_color_white">
-
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/ll_float_container"
-            android:layout_width="60dp"
-            android:layout_height="60dp"
-            app:layout_constraintBottom_toTopOf="@+id/ll_float_mark"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent">
-
-            <RelativeLayout
-                android:id="@+id/rl_video_view"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:visibility="gone" />
-
-            <ImageView
-                android:id="@+id/iv_avatar"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:src="@drawable/common_default_avatar_ic"
-                android:visibility="gone" />
-
-            <ImageView
-                android:id="@+id/iv_audio_view_icon"
-                android:layout_width="36dp"
-                android:layout_height="36dp"
-                android:layout_marginTop="4dp"
-                android:layout_marginBottom="4dp"
-                android:src="@drawable/tuicallkit_ic_float"
-                app:layout_constraintBottom_toTopOf="@+id/tv_call_status"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent" />
-
-            <TextView
-                android:id="@+id/tv_float_name"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginBottom="4dp"
-                android:ellipsize="end"
-                android:gravity="center"
-                android:maxLines="1"
-                android:textColor="@color/tuicallkit_color_white"
-                android:textSize="12sp"
-                android:visibility="gone"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent" />
-
-            <TextView
-                android:id="@+id/tv_call_status"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginBottom="4dp"
-                android:gravity="center"
-                android:textColor="#12B969"
-                android:textSize="12sp"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent" />
-        </androidx.constraintlayout.widget.ConstraintLayout>
-
-        <LinearLayout
-            android:id="@+id/ll_float_mark"
-            android:layout_width="60dp"
-            android:layout_height="wrap_content"
-            android:background="#FFF9F6F4"
-            android:gravity="center"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent">
-
-            <ImageView
-                android:id="@+id/iv_float_video_mark"
-                android:layout_width="16dp"
-                android:layout_height="16dp"
-                android:layout_marginTop="2dp"
-                android:layout_marginEnd="12dp"
-                android:layout_marginBottom="2dp"
-                android:src="@drawable/tuicallkit_ic_float_video_off" />
-
-            <ImageView
-                android:id="@+id/iv_float_audio_mark"
-                android:layout_width="16dp"
-                android:layout_height="16dp"
-                android:layout_marginTop="2dp"
-                android:layout_marginBottom="2dp"
-                android:src="@drawable/tuicallkit_ic_float_audio_off" />
-        </LinearLayout>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-</com.tencent.qcloud.tuikit.tuicallkit.view.common.RoundShadowLayout>
-

+ 0 - 72
module/call/src/main/res/layout/tuicallkit_float_call_view.xml

@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<com.tencent.qcloud.tuikit.tuicallkit.view.common.RoundShadowLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:background="@color/tuicallkit_color_white">
-
-        <RelativeLayout
-            android:id="@+id/rl_video_view"
-            android:layout_width="110dp"
-            android:layout_height="190dp"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <FrameLayout
-            android:id="@+id/fl_avatar"
-            android:layout_width="110dp"
-            android:layout_height="190dp"
-            android:background="@color/tuicallkit_color_gray"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent">
-
-            <androidx.constraintlayout.utils.widget.ImageFilterView
-                android:id="@+id/iv_avatar"
-                android:layout_width="48dp"
-                android:layout_height="48dp"
-                android:layout_gravity="center"
-                android:src="@drawable/common_default_avatar_ic"
-                android:visibility="visible" />
-        </FrameLayout>
-
-        <ImageView
-            android:id="@+id/iv_audio_view_icon"
-            android:layout_width="36dp"
-            android:layout_height="36dp"
-            android:layout_gravity="center_horizontal"
-            android:layout_marginStart="18dp"
-            android:layout_marginTop="8dp"
-            android:layout_marginEnd="18dp"
-            android:layout_marginBottom="4dp"
-            android:src="@drawable/tuicallkit_ic_float"
-            app:layout_constraintBottom_toTopOf="@+id/tv_call_status"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <TextView
-            android:id="@+id/tv_call_status"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="8dp"
-            android:gravity="center"
-            android:text="@string/tuicallkit_wait_response"
-            android:textColor="#12B969"
-            android:textSize="12sp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent" />
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-</com.tencent.qcloud.tuikit.tuicallkit.view.common.RoundShadowLayout>
-

+ 0 - 110
module/call/src/main/res/layout/tuicallkit_record_fragment_main.xml

@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/tuicallkit_color_white">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/cl_record_title"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="?attr/core_header_start_color"
-        android:padding="10dp"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent">
-
-        <com.google.android.material.tabs.TabLayout
-            android:id="@+id/tab_layout"
-            android:layout_width="wrap_content"
-            android:layout_height="32dp"
-            android:background="@drawable/tuicallkit_tab_selector"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:tabBackground="@drawable/tuicallkit_tab_item_selector"
-            app:tabIndicatorHeight="0dp"
-            app:tabMinWidth="76dp"
-            app:tabRippleColor="@null"
-            app:tabTextAppearance="@style/TUICallTabLayoutStyle">
-
-            <com.google.android.material.tabs.TabItem
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/tuicallkit_record_tab_title_all" />
-
-            <com.google.android.material.tabs.TabItem
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/tuicallkit_record_tab_title_miss" />
-        </com.google.android.material.tabs.TabLayout>
-
-        <Button
-            android:id="@+id/btn_call_edit"
-            android:layout_width="18dp"
-            android:layout_height="18dp"
-            android:layout_marginEnd="18dp"
-            android:background="@drawable/tuicallkit_ic_edit"
-            android:padding="5dp"
-            app:layout_constraintBottom_toBottomOf="@+id/tab_layout"
-            app:layout_constraintEnd_toStartOf="@+id/btn_start_call"
-            app:layout_constraintTop_toTopOf="@+id/tab_layout" />
-
-        <Button
-            android:id="@+id/btn_start_call"
-            android:layout_width="18dp"
-            android:layout_height="18dp"
-            android:layout_marginEnd="24dp"
-            android:background="@drawable/tuicallkit_ic_start_call"
-            android:padding="5dp"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="@+id/tab_layout"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="@+id/tab_layout" />
-
-        <Button
-            android:id="@+id/btn_clear"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="15dp"
-            android:background="@color/tuicallkit_color_transparent"
-            android:minWidth="0dp"
-            android:minHeight="0dp"
-            android:padding="5dp"
-            android:text="@string/tuicallkit_record_clear"
-            android:textAllCaps="false"
-            android:textColor="?attr/core_header_text_color"
-            android:textStyle="bold"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="@+id/tab_layout"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="@+id/tab_layout" />
-
-        <Button
-            android:id="@+id/btn_edit_done"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginEnd="15dp"
-            android:background="@color/tuicallkit_color_transparent"
-            android:minWidth="0dp"
-            android:minHeight="0dp"
-            android:padding="5dp"
-            android:text="@string/tuicallkit_record_done"
-            android:textAllCaps="false"
-            android:textColor="?attr/core_header_text_color"
-            android:textStyle="bold"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="@+id/tab_layout"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="@+id/tab_layout" />
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <com.tencent.qcloud.tuikit.tuicallkit.view.common.SlideRecyclerView
-        android:id="@+id/recycle_view_list"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/cl_record_title" />
-</androidx.constraintlayout.widget.ConstraintLayout>

+ 1 - 1
module/call/src/main/res/values-ar/strings.xml

@@ -30,7 +30,7 @@
     <string name="tuicallkit_video_call">مكالمة فيديو</string>
     <string name="tuicallkit_audio_call">مكالمة صوتية</string>
     <string name="tuicallkit_user_exceed_limit">يدعم TUICallKit حاليًا المكالمة مع ما يصل إلى 9 أشخاص. لمؤتمرات الاتصال الأكبر ، جرب استخدام TUIRoomKit</string>
-    <string name="tuicallkit_wait_response">انتظار</string>
+    <string name="call_wait_response">انتظار</string>
     <string name="tuicallkit_wait_accept_group">أدعوك للانضمام إلى مكالمة جماعية</string>
     <string name="tuicallkit_accept_single">" تم توصيل الهاتف"</string>
     <string name="tuicallkit_invitee_user_list">هناك آخرون يشاركون في المكالمة</string>

+ 1 - 1
module/call/src/main/res/values-en/strings.xml

@@ -29,7 +29,7 @@
     <string name="tuicallkit_video_call">Video Call</string>
     <string name="tuicallkit_audio_call">Voice Call</string>
     <string name="tuicallkit_user_exceed_limit">TUICallKit currently supports call with up to 9 people.For larger conference calls,try using TUIRoomKit</string>
-    <string name="tuicallkit_wait_response">Waiting</string>
+    <string name="call_wait_response">Waiting</string>
     <string name="tuicallkit_wait_accept_group">invites you to a group call</string>
     <string name="tuicallkit_accept_single">Connected</string>
     <string name="tuicallkit_invitee_user_list">Also on the call:</string>

+ 1 - 1
module/call/src/main/res/values-ja/strings.xml

@@ -29,7 +29,7 @@
     <string name="tuicallkit_video_call">ビデオ通話</string>
     <string name="tuicallkit_audio_call">音声通話</string>
     <string name="tuicallkit_user_exceed_limit">暫して、最大9人までの通话をサポートしています。複数人の会議を希望する場合、TUIRoomKitを使用してください。</string>
-    <string name="tuicallkit_wait_response">応答を待っています...</string>
+    <string name="call_wait_response">応答を待っています...</string>
     <string name="tuicallkit_wait_accept_group">グループ通話に招待します</string>
     <string name="tuicallkit_accept_single">接続済み</string>
     <string name="tuicallkit_invitee_user_list">通話に参加している他の人もいます</string>

+ 1 - 1
module/call/src/main/res/values-zh-rHK/strings.xml

@@ -30,7 +30,7 @@
     <string name="tuicallkit_video_call">視頻通話</string>
     <string name="tuicallkit_audio_call">語音通話</string>
     <string name="tuicallkit_user_exceed_limit">暫支持最多9人通話。如需多人會議,請使用TUIRoomKit</string>
-    <string name="tuicallkit_wait_response">等待接聽</string>
+    <string name="call_wait_response">等待接聽</string>
     <string name="tuicallkit_wait_accept_group">邀請你加入多人通話</string>
     <string name="tuicallkit_accept_single">已接通</string>
     <string name="tuicallkit_invitee_user_list">參與通話的還有:</string>

+ 1 - 1
module/call/src/main/res/values-zh-rTW/strings.xml

@@ -30,7 +30,7 @@
     <string name="tuicallkit_video_call">視頻通話</string>
     <string name="tuicallkit_audio_call">語音通話</string>
     <string name="tuicallkit_user_exceed_limit">暫支持最多9人通話。如需多人會議,請使用TUIRoomKit</string>
-    <string name="tuicallkit_wait_response">等待接聽</string>
+    <string name="call_wait_response">等待接聽</string>
     <string name="tuicallkit_wait_accept_group">邀請你加入多人通話</string>
     <string name="tuicallkit_accept_single">已接通</string>
     <string name="tuicallkit_invitee_user_list">參與通話的還有:</string>

+ 1 - 1
module/call/src/main/res/values-zh/strings.xml

@@ -30,7 +30,7 @@
     <string name="tuicallkit_video_call">视频通话</string>
     <string name="tuicallkit_audio_call">语音通话</string>
     <string name="tuicallkit_user_exceed_limit">暂支持最多9人通话。如需多人会议,请使用TUIRoomKit</string>
-    <string name="tuicallkit_wait_response">等待接听</string>
+    <string name="call_wait_response">等待接听</string>
     <string name="tuicallkit_wait_accept_group">邀请你加入多人通话</string>
     <string name="tuicallkit_accept_single">已接通</string>
     <string name="tuicallkit_invitee_user_list">参与通话的还有:</string>

+ 1 - 1
module/call/src/main/res/values/strings.xml

@@ -34,7 +34,7 @@
     <string name="tuicallkit_video_call">Video Call</string>
     <string name="tuicallkit_audio_call">Voice Call</string>
     <string name="tuicallkit_user_exceed_limit">TUICallKit currently supports call with up to 9 people.For larger conference calls,try using TUIRoomKit</string>
-    <string name="tuicallkit_wait_response">Waiting</string>
+    <string name="call_wait_response">Waiting</string>
     <string name="tuicallkit_wait_accept_group">invites you to a group call</string>
     <string name="tuicallkit_accept_single">Connected</string>
     <string name="tuicallkit_invitee_user_list">Also on the call:</string>