From a780f0b8d0ccec90d359c0c554f07d5afde9554c Mon Sep 17 00:00:00 2001
From: 562935844@qq.com
Date: 星期二, 28 六月 2022 17:05:31 +0800
Subject: [PATCH] 代码同步

---
 HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneMonitorActivity.java |   97 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 63 insertions(+), 34 deletions(-)

diff --git a/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneMonitorActivity.java b/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneMonitorActivity.java
index cefa1be..8ce8269 100644
--- a/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneMonitorActivity.java
+++ b/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneMonitorActivity.java
@@ -25,9 +25,14 @@
 import com.hdl.hdllinphonesdk.R;
 import com.hdl.hdllinphonesdk.callback.OnLPOpenDoorCallBack;
 import com.hdl.hdllinphonesdk.utils.HDLImageUtils;
+import com.hdl.hdllinphonesdk.utils.HDLLog;
+
+import org.linphone.core.Call;
+import org.linphone.core.Core;
+import org.linphone.core.CoreListenerStub;
 
 /**
-*鐩戣椤甸潰
+ * 鐩戣椤甸潰
  */
 public class HDLLinphoneMonitorActivity extends LPCheckPermissionsActivity implements View.OnClickListener {
     private static final String TAG = "HDLLinphoneMonitorActivity";
@@ -46,6 +51,9 @@
     private TextureView video_lp_rendering2;
 
     private CountDownTimer mCountDownTimer;
+
+    //Linphone
+    private CoreListenerStub mCoreListener;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -70,6 +78,8 @@
     @Override
     protected void onDestroy() {
         super.onDestroy();
+        //1.鎸傛柇
+        HDLLinphoneKit.getInstance().hangUp();
 
         HDLLinphoneKit.getInstance().setOpenOpenDoorCallBack(null);
 
@@ -78,15 +88,11 @@
             mCountDownTimer = null;
         }
 
-        if (mReceiver != null) {
-            unregisterReceiver(mReceiver);
-        }
-        HDLLinphoneKit.getInstance().onDestroy();
+        onDestroyLinphone();
 
-        Log.i(TAG,"onDestroy");
+        HDLLog.i(TAG, "onDestroy");
 
     }
-
 
     /**
      * initView
@@ -104,17 +110,17 @@
         video_lp_rendering = findViewById(R.id.video_lp_rendering);
         video_lp_rendering2 = findViewById(R.id.video_lp_rendering2);
 
-        setWidthHeightWithRatio(ll_video_lp_rendering,16,9);
+        setWidthHeightWithRatio(ll_video_lp_rendering, 16, 9);
     }
 
     /**
      * initData
      */
-    private void initData(){
+    private void initData() {
         Bundle extras = getIntent().getExtras();
-        if(extras != null){
-            String titleName =  extras.getString(HDLLinphoneKit.KEY_TITLE_NAME);
-            if(!TextUtils.isEmpty(titleName)){
+        if (extras != null) {
+            String titleName = extras.getString(HDLLinphoneKit.KEY_TITLE_NAME);
+            if (!TextUtils.isEmpty(titleName)) {
                 tv_lp_title.setText(titleName);
             }
         }
@@ -137,6 +143,7 @@
             view.setLayoutParams(layoutParams);
         }
     }
+
     /**
      * init OnClickListener
      */
@@ -153,7 +160,7 @@
     /**
      * 鍒濆鍖栧紑闂ㄥ洖璋冧簨浠�
      */
-    void initCallBack(){
+    void initCallBack() {
         HDLLinphoneKit.getInstance().setOpenOpenDoorCallBack(new OnLPOpenDoorCallBack() {
             @Override
             public void onOpenSuccess() {
@@ -170,9 +177,9 @@
     /**
      * 鍒濆鍖栧紑閿佸睆钄藉�掕鏃�
      */
-    void initCountDownTimer(){
+    void initCountDownTimer() {
 
-        mCountDownTimer = new CountDownTimer(10*1000, 1000) {
+        mCountDownTimer = new CountDownTimer(10 * 1000, 1000) {
             @Override
             public void onTick(long millisUntilFinished) {
                 if (!HDLLinphoneMonitorActivity.this.isFinishing()) {
@@ -188,9 +195,7 @@
 //                showToast("寮�閿乷nFinish");
                 iv_lp_unlock.setEnabled(true);
             }
-
         };
-//
     }
 
     @Override
@@ -214,11 +219,11 @@
     private void onClickScreenshot() {
 //        Bitmap img = HDLImageUtils.createViewBitmap(video_lp_rendering);
         Bitmap img = video_lp_rendering.getBitmap();
-        boolean isSuccess =  HDLImageUtils.saveImageToGallery(this, img);
+        boolean isSuccess = HDLImageUtils.saveImageToGallery(this, img);
 
-        if(isSuccess){
+        if (isSuccess) {
             showToast(getString(R.string.lp_saveToTheAlbumsStr));
-        }else {
+        } else {
             showToast(getString(R.string.lp_operationFailedStr));
         }
     }
@@ -252,6 +257,7 @@
         iv_lp_unlock.setEnabled(false);
         startOpenDoorCountdown();
     }
+
     /**
      * 寮�鍚�掕鏃�
      */
@@ -286,22 +292,45 @@
     }
 
     /**********LinPhone**********/
-    void initLinphone(){
-        IntentFilter intentFilter = new IntentFilter(RECEIVE_FINISH_VIDEO_ACTIVITY);
-        mReceiver = new HDLLinphoneMonitorActivity.FinishVideoActivityReceiver();
-        registerReceiver(mReceiver, intentFilter);
-        HDLLinphoneKit.getInstance().setAndroidVideoWindow(video_lp_rendering, video_lp_rendering2);
-    }
+    /**
+     * initLinphone
+     */
+    void initLinphone() {
+        mCoreListener = new CoreListenerStub() {
+            @Override
+            public void onCallStateChanged(Core core, Call call, Call.State state, String message) {
+                if (state == Call.State.End || state == Call.State.Released) {
+                    // Once call is finished (end state), terminate the activity
+                    // We also check for released state (called a few seconds later) just in case
+                    // we missed the first one
+                    showToast(getString(R.string.lp_endMonitoringStr));
+                    finish();
+                }
+            }
+        };
 
-
-    public class FinishVideoActivityReceiver extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            HDLLinphoneMonitorActivity.this.finish();
+        Core core = HDLLinphoneKit.getInstance().getCore();
+        // We need to tell the core in which to display what
+        if (core != null) {
+            core.setNativeVideoWindowId(video_lp_rendering);
+            core.setNativePreviewWindowId(video_lp_rendering2);
+            // Listen for call state changes
+            core.addListener(mCoreListener);
+            core.enableMic(false);//鍏抽棴楹﹀厠椋�
         }
     }
 
-    private HDLLinphoneMonitorActivity.FinishVideoActivityReceiver mReceiver;
-    public static final String RECEIVE_FINISH_VIDEO_ACTIVITY = "receive_finish_video_activity";
-
+    /**
+     * onDestroyLinphone
+     */
+    void onDestroyLinphone() {
+        Core core = HDLLinphoneKit.getInstance().getCore();
+        if (core != null) {
+            core.removeListener(mCoreListener);
+            core.setNativeVideoWindowId(null);
+            core.setNativePreviewWindowId(null);
+        }
+        video_lp_rendering = null;
+        video_lp_rendering2 = null;
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0