From c6a53572a83eaf4ad0d6193303e5acc4929b239f Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期三, 14 六月 2023 15:59:01 +0800
Subject: [PATCH] 录音

---
 app/src/main/java/com/kuanzhai/driver/base/MyApplication.kt |   84 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 1 deletions(-)

diff --git a/app/src/main/java/com/kuanzhai/driver/base/MyApplication.kt b/app/src/main/java/com/kuanzhai/driver/base/MyApplication.kt
index ec849cc..7aa0c08 100644
--- a/app/src/main/java/com/kuanzhai/driver/base/MyApplication.kt
+++ b/app/src/main/java/com/kuanzhai/driver/base/MyApplication.kt
@@ -8,6 +8,13 @@
 import androidx.annotation.RequiresApi
 import cn.jpush.android.api.JPushInterface
 import cn.jpush.android.api.TagAliasCallback
+import cn.rongcloud.rtc.api.RCRTCConfig
+import cn.rongcloud.rtc.api.RCRTCEngine
+import cn.rongcloud.rtc.api.RCRTCRoom
+import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback
+import cn.rongcloud.rtc.api.callback.IRCRTCResultDataCallback
+import cn.rongcloud.rtc.api.stream.RCRTCInputStream
+import cn.rongcloud.rtc.base.RTCErrorCode
 import cn.sinata.rxnetty.NettyClient
 import cn.sinata.xldutils.BaseApplication
 import cn.sinata.xldutils.utils.sysErr
@@ -37,6 +44,7 @@
 import com.umeng.commonsdk.UMConfigure
 import com.umeng.socialize.PlatformConfig
 import com.xuexiang.xui.XUI
+import io.rong.imlib.RongIMClient
 import org.greenrobot.eventbus.EventBus
 import org.jetbrains.anko.toast
 import org.json.JSONObject
@@ -71,6 +79,7 @@
         registerActivityLifecycleCallbacks(this)
         initUpPoint()
         initSocket()
+        initRong()
     }
 
     fun initPersionDate(){
@@ -88,6 +97,14 @@
         setAlisa()
         LogUtils.OpenLog(true)
 //        CrashReport.initCrashReport(getApplicationContext(), "444bb776ed", false);
+    }
+
+    private fun initRong() {
+        // IMLib 初始化
+        RongIMClient.init(this, "0vnjpoad01rwz")
+        // RTCLib 初始化
+        val config = RCRTCConfig.Builder.create()
+        RCRTCEngine.getInstance().init(this, config.build())
     }
 
     public fun setAlisa() {
@@ -193,7 +210,7 @@
                                     val act = activities[activities.size - 1]
 //                                    MyApplication.getTTsManager().setVideoText("收到新的订单")
                                     when (orderSimpleData.orderType) {
-                                        1,2 -> {
+                                        1,2,10 -> {
                                             (act as MyBaseActivity).showOrder(
                                                 orderSimpleData.orderId.toString(),
                                                 orderSimpleData.orderType.toString(),
@@ -442,6 +459,7 @@
         var aMapLocation: AMapLocation? = null
         var currentOrderId: String = ""
         var currentOrderType: String = ""
+        var recordRoomId: String = ""
         var orderStatueViews: MutableList<OrderStatueView> =
             mutableListOf()
         var testHeartNunm = 0
@@ -483,6 +501,70 @@
         fun removeOrderView(view: OrderStatueView?) {
             orderStatueViews.remove(view)
         }
+
+
+        fun startRecord(){
+            if (recordRoomId.isNotEmpty()){
+                RCRTCEngine.getInstance()
+                    .joinRoom(recordRoomId, object : IRCRTCResultDataCallback<RCRTCRoom?>() {
+                        override fun onSuccess(rcrtcRoom: RCRTCRoom?) {
+                            Log.e("RongLog", "开始录制======》当前房间号:${recordRoomId}")
+//                            rcrtcRoom?.registerRoomListener(object :IRCRTCRoomEventsListener(){})
+                            //step1:推流
+                            rcrtcRoom?.localUser?.publishDefaultStreams(object :
+                                IRCRTCResultCallback() {
+                                override fun onSuccess() {
+                                    Log.e("RongLog", "发布资源成功")
+                                }
+
+                                override fun onFailed(errorCode: RTCErrorCode) {
+                                    Log.e("RongLog", "发布资源失败:${errorCode.reason}")
+                                }
+                            })
+
+                            //step2:订阅远端
+                            val inputStreams: MutableList<RCRTCInputStream> = ArrayList()
+                            for (remoteUser in rcrtcRoom?.remoteUsers ?: arrayListOf()) {
+                                if (remoteUser.streams.size == 0) {
+                                    continue
+                                }
+                                inputStreams.addAll(remoteUser.streams)
+                            }
+
+                            if (inputStreams.size == 0) {
+                                return
+                            }
+                            rcrtcRoom?.localUser?.subscribeStreams(
+                                inputStreams,
+                                object : IRCRTCResultCallback() {
+                                    override fun onFailed(errorCode: RTCErrorCode?) {
+                                        Log.e("RongLog", "订阅资源失败:${errorCode}")
+                                    }
+
+                                    override fun onSuccess() {
+                                        Log.e("RongLog", "订阅资源成功")
+                                    }
+                                })
+                        }
+
+                        override fun onFailed(rtcErrorCode: RTCErrorCode) {
+                            Log.e("RongLog", "录制失败======》${rtcErrorCode}")
+                        }
+                    })
+            }
+        }
+
+        fun finishRecord(){
+            RCRTCEngine.getInstance().leaveRoom(object : IRCRTCResultCallback() {
+                override fun onFailed(errorCode: RTCErrorCode?) {
+                    Log.e("RongLog", "结束录制失败")
+                }
+
+                override fun onSuccess() {
+                    Log.e("RongLog", "结束录制成功")
+                }
+            })
+        }
     }
 
     private val activities = ArrayList<Activity?>()

--
Gitblit v1.7.1