瀏覽代碼

## [1.1.36] version 55 - 2020-08-11
### Fixed
- 修复熄屏断网
- 两方通话被第三方挂断
### Changed
- websocket断网1秒后重连

allen 3 年之前
父節點
當前提交
b7d6cf9cf7

+ 16 - 0
WebRTC/src/main/java/com/wdkl/core/socket/MyWebSocket.java

@@ -41,6 +41,16 @@ public class MyWebSocket extends WebSocketClient {
     public void onClose(int code, String reason, boolean remote) {
         Log.e("dds_error", "onClose:" + reason + "remote:" + remote);
         if (connectFlag) {
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try{
+                        Thread.sleep(1000);
+                    }catch (Exception ignored){
+                    }
+                    reconnect();
+                }
+            }).start();
         } else {
             this.iEvent.logout("onClose");
         }
@@ -302,6 +312,9 @@ public class MyWebSocket extends WebSocketClient {
         JSONObject object = new JSONObject(map);
         final String jsonString = object.toString();
         Log.d(TAG, "send-->" + jsonString);
+        if (!isOpen()) {
+            reconnect();
+        }
         send(jsonString);
     }
 
@@ -357,6 +370,9 @@ public class MyWebSocket extends WebSocketClient {
         JSONObject object = new JSONObject(map);
         final String jsonString = object.toString();
         Log.d(TAG, "send-->" + jsonString);
+        if (!isOpen()) {
+            reconnect();
+        }
         send(jsonString);
     }
 

+ 2 - 2
build.gradle

@@ -47,12 +47,12 @@ buildscript {
     /**
      * APP版本码
      */
-    ext.app_version_code = 48
+    ext.app_version_code = 55
 
     /**
      * APP版本号
      */
-    ext.app_version = "1.1.29"
+    ext.app_version = "1.1.36"
 
     /**
      * 项目依赖库

+ 9 - 6
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WebRTCVoipAudioActivity.kt

@@ -133,6 +133,9 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener, CallSessionCal
             if (gEngineKit?.currentSession?.state != EnumType.CallState.Connected){
                 //showMessage("连接失败")
                 gEngineKit?.endCall()
+                val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
+                val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Constants.deviceId, tcpModel.toId, interactionVO.id)
+                TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
                 finish()
             }
             call_duration_tv.base = SystemClock.elapsedRealtime()
@@ -328,7 +331,7 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener, CallSessionCal
 
             } else if (tcpModel.action === TcpAction.VoiceAction.CALLING) {
                 createEnabled = false
-                gEngineKit?.endCall()
+                //gEngineKit?.endCall()
                 //showMessage("对方正在通话")
                 AppTool.Time.delay(800) {
                     finish()
@@ -456,11 +459,11 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener, CallSessionCal
                     }
                 }
                 CallEndReason.RemoteHangup -> {
-                    showMessage("对方挂断")
-                    gEngineKit?.endCall()
-                    AppTool.Time.delay(200) {
-                        finish()
-                    }
+//                    showMessage("对方挂断")
+//                    gEngineKit?.endCall()
+//                    AppTool.Time.delay(200) {
+//                        finish()
+//                    }
                 }
                 CallEndReason.RemoteSignalError -> {
                     showMessage("对方网络断开")

+ 2 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/broadcast/NetworkBroadcastReceiver.kt

@@ -6,6 +6,7 @@ import android.content.Intent
 import android.net.ConnectivityManager
 import com.wdkl.ncs.android.component.home.util.NetHelper
 import com.wdkl.ncs.android.component.home.util.Util.getCpuWakeLock
+import com.wdkl.ncs.android.component.home.util.Util.wakeUpAndUnlock
 import com.wdkl.ncs.android.lib.utils.AppTool
 
 class NetworkBroadcastReceiver: BroadcastReceiver() {
@@ -13,8 +14,7 @@ class NetworkBroadcastReceiver: BroadcastReceiver() {
         if (ConnectivityManager.CONNECTIVITY_ACTION == intent!!.action) {
             val netState = NetHelper.getInstance().getNetworkState(context)
             if (netState == NetHelper.NETWORK_NONE) {
-                val cpuWakeLock = getCpuWakeLock(context!!)
-                cpuWakeLock.acquire(3000)
+                wakeUpAndUnlock(context!!)
             }
         }
     }

+ 27 - 32
home/src/main/code/com/wdkl/ncs/android/component/home/service/WdKeepAliveService.kt

@@ -241,19 +241,11 @@ class WdKeepAliveService : AbsWorkService() {
                     }
                 }).start()
             }
-            //网络断开,1000ms重连
+            //网络断开
             Constants.EVENT_TCP_BREAK->{
-                val wakeLock = Util.wakeUpAndUnlock(this)
-                Thread(Runnable {
-                    Thread.sleep(1000)
-                    wakeLock?.release()
-                }).start()
+                Util.wakeUpAndUnlock(this@WdKeepAliveService)
                 Log.w(TAG, "EVENT TCP BREAK")
-//                if (TcpClient.getInstance().channel==null || TcpClient.getInstance().bootstrap == null) {
-//                    TcpClient.getInstance().init(Constants.tcpServer, Constants.tcpPort, Constants.heartBeat)
-//                } else if (!TcpClient.getInstance().channel.isActive){
-//                    TcpClient.getInstance().doConnect()
-//                }
+                reConnect()
             }
         }
     }
@@ -295,31 +287,34 @@ class WdKeepAliveService : AbsWorkService() {
                     if (!EventBus.getDefault().isRegistered(this@WdKeepAliveService)) {
                         EventBus.getDefault().register(this@WdKeepAliveService)
                     }
+                    Util.getCpuWakeLock(this@WdKeepAliveService)?.acquire(Constants.heartBeat * 1000L)
+                    reConnect()
+                }
+            }
+            checkNetStateTimer!!.schedule(checkNetStateTimerTask, 8000, Constants.heartBeat * 1000L)
+        }
+    }
 
-                    if (NetHelper.getInstance().getNetworkState(this@WdKeepAliveService) != NetHelper.NETWORK_NONE) {
-                        if (!TcpClientHandler.getConnected()) {
-                            Log.w(TAG, "断网唤醒CPU")
-                            val wakeLock = Util.getCpuWakeLock(this@WdKeepAliveService)
-                            wakeLock.acquire(1000)
-                            if (TcpClient.getInstance().retryTimes < 30) {
-                                if (TcpClient.getInstance().channel == null || TcpClient.getInstance().bootstrap == null) {
-                                    TcpClient.getInstance().init(Constants.tcpServer, Constants.tcpPort, Constants.heartBeat, iTcpCallBack)
-                                } else if (!TcpClient.getInstance().channel.isActive) {
-                                    TcpClient.getInstance().doConnect(iTcpCallBack)
-                                }
-                            }
-                        } else {
-                            TcpClient.getInstance().sendMsg("0")
-                            if (SocketManager.getInstance().connectFlag){
-                                EventBus.getDefault().post(MessageEvent(TcpModel(),Constants.EVENT_RTC_STATE))
-                            } else {
-                                iTcpCallBack.connected()
-                            }
-                        }
+    fun reConnect(){
+        if (NetHelper.getInstance().getNetworkState(this@WdKeepAliveService) != NetHelper.NETWORK_NONE) {
+            if (!TcpClientHandler.getConnected()) {
+                Log.w(TAG, "断网唤醒CPU")
+                val wakeLock = Util.wakeUpAndUnlock(this@WdKeepAliveService)
+                if (TcpClient.getInstance().retryTimes < 30) {
+                    if (TcpClient.getInstance().channel == null || TcpClient.getInstance().bootstrap == null) {
+                        TcpClient.getInstance().init(Constants.tcpServer, Constants.tcpPort, Constants.heartBeat, iTcpCallBack)
+                    } else if (!TcpClient.getInstance().channel.isActive) {
+                        TcpClient.getInstance().doConnect(iTcpCallBack)
                     }
                 }
+            } else {
+                TcpClient.getInstance().sendMsg("0")
+                if (SocketManager.getInstance().connectFlag){
+                    EventBus.getDefault().post(MessageEvent(TcpModel(),Constants.EVENT_RTC_STATE))
+                } else {
+                    iTcpCallBack.connected()
+                }
             }
-            checkNetStateTimer!!.schedule(checkNetStateTimerTask, 8000, Constants.heartBeat * 1000L)
         }
     }
 }

+ 3 - 3
home/src/main/code/com/wdkl/ncs/android/component/home/util/Util.kt

@@ -73,7 +73,7 @@ object Util {
         val screenOn = pm.isInteractive
         if (!screenOn) { //如果是熄灭状态
             wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP or PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG")
-            wakeLock.acquire(3000)//亮屏
+            wakeLock.acquire(10000)//亮屏
         }
 
         // 屏幕解锁
@@ -86,9 +86,9 @@ object Util {
     }
 
     @SuppressLint("InvalidWakeLockTag")
-    fun getCpuWakeLock(context: Context): PowerManager.WakeLock {
+    fun getCpuWakeLock(context: Context): PowerManager.WakeLock? {
         val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager
-        val cpuWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK or PowerManager.ON_AFTER_RELEASE,
+        val cpuWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                 context.javaClass.canonicalName)
         return cpuWakeLock
     }

+ 1 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java

@@ -66,7 +66,7 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
         connected = false;
         this.ctx = null;
         Log.i(TAG, "TcpClientHandler 失去连接");
-
+        EventBus.getDefault().post(new MessageEvent("net off",Constants.EVENT_TCP_BREAK));
         reConnect(ctx);
     }
 

+ 9 - 0
readme.md

@@ -26,6 +26,15 @@
 
 ---
 
+## [1.1.36] version 55 - 2020-08-11
+### Fixed
+- 修复熄屏断网
+- 两方通话被第三方挂断
+### Changed
+- websocket断网1秒后重连
+
+---
+
 ## [1.1.29] version 48 - 2020-08-11
 ### Changed
 - 建立通话后,如果不是连接状态,则挂断

+ 3 - 3
rtc-chat/src/main/java/com/wdkl/skywebrtc/SkyEngineKit.java

@@ -133,9 +133,9 @@ public class SkyEngineKit {
             } else {
                 if (mCurrentCallSession.getState() == EnumType.CallState.Outgoing) {
                     mCurrentCallSession.sendCancel();
-                    if (!TextUtils.isEmpty(mCurrentCallSession.getRoomId())){
-                        mCurrentCallSession.leave();
-                    }
+//                    if (!TextUtils.isEmpty(mCurrentCallSession.getRoomId())){
+//                        mCurrentCallSession.leave();
+//                    }
                 } else {
                     // 已经接通,挂断电话
                     mCurrentCallSession.leave();

+ 1 - 1
rtc-chat/src/main/java/com/wdkl/skywebrtc/engine/webrtc/Peer.java

@@ -185,7 +185,7 @@ public class Peer implements SdpObserver, PeerConnection.Observer {
 
     @Override
     public void onIceConnectionChange(PeerConnection.IceConnectionState newState) {
-        Log.i(TAG, "onIceConnectionChange: " + newState);
+        Log.i(TAG, "onIceConnectionChange: " + newState + " mUserId=" + mUserId);
         if (newState == PeerConnection.IceConnectionState.DISCONNECTED || newState == PeerConnection.IceConnectionState.FAILED) {
             mEvent.onDisconnected(mUserId);
         }