From 685a971c4049f24184423adfddb24a68b3afc0aa Mon Sep 17 00:00:00 2001
From: lss <lsc@hdlchina.com.cn>
Date: 星期三, 15 六月 2022 13:54:03 +0800
Subject: [PATCH] 2022-6-15

---
 HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/core/service/HDLLinphoneService.java |  115 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 71 insertions(+), 44 deletions(-)

diff --git a/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/core/service/HDLLinphoneService.java b/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/core/service/HDLLinphoneService.java
index 04b9089..6462798 100644
--- a/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/core/service/HDLLinphoneService.java
+++ b/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/core/service/HDLLinphoneService.java
@@ -18,6 +18,8 @@
 
 
 import com.hdl.hdllinphonesdk.R;
+import com.hdl.hdllinphonesdk.activity.HDLLinphoneIntercomActivity;
+import com.hdl.hdllinphonesdk.activity.HDLLinphoneReverseCallActivity;
 import com.hdl.hdllinphonesdk.core.callback.PhoneCallback;
 import com.hdl.hdllinphonesdk.core.callback.RegistrationCallback;
 import com.hdl.hdllinphonesdk.core.linphone.KeepAliveHandler;
@@ -76,12 +78,11 @@
     }
 
     public static Core getCore() {
-        if(sInstance == null){
+        if (sInstance == null) {
             return null;
         }
         return sInstance.mCore;
     }
-
 
     @Override
     public IBinder onBind(Intent intent) {
@@ -90,11 +91,13 @@
 
     /**
      * 娣诲姞閫氳瘽鐘舵�佸洖璋�
+     *
      * @param phoneCallback
      */
     public static void addPhoneCallback(PhoneCallback phoneCallback) {
         sPhoneCallback = phoneCallback;
     }
+
     public static void removePhoneCallback() {
         if (sPhoneCallback != null) {
             sPhoneCallback = null;
@@ -103,11 +106,13 @@
 
     /**
      * 娣诲姞娉ㄥ唽鐘舵�佸洖璋�
+     *
      * @param registrationCallback
      */
     public static void addRegistrationCallback(RegistrationCallback registrationCallback) {
         sRegistrationCallback = registrationCallback;
     }
+
     public static void removeRegistrationCallback() {
         if (sRegistrationCallback != null) {
             sRegistrationCallback = null;
@@ -154,15 +159,11 @@
                 new TimerTask() {
                     @Override
                     public void run() {
-                        mHandler.post(
-                                new Runnable() {
-                                    @Override
-                                    public void run() {
-                                        if (mCore != null) {
-                                            mCore.iterate();
-                                        }
-                                    }
-                                });
+                        mHandler.post(() -> {
+                            if (mCore != null) {
+                                mCore.iterate();
+                            }
+                        });
                     }
                 };
         mTimer = new Timer("Linphone scheduler");
@@ -175,12 +176,18 @@
     public void onDestroy() {
         removeAllCallback();
         logout();
-        mCore.removeListener(mCoreListener);
-        mTimer.cancel();
-        mCore.stop();
-        // A stopped Core can be started again
-        // To ensure resources are freed, we must ensure it will be garbage collected
-        mCore = null;
+
+        if (mTimer != null) {
+            mTimer.cancel();
+        }
+
+        if (mCore != null) {
+            mCore.removeListener(mCoreListener);
+            mCore.stop();
+            // A stopped Core can be started again
+            // To ensure resources are freed, we must ensure it will be garbage collected
+            mCore = null;
+        }
         // Don't forget to free the singleton as well
         sInstance = null;
 
@@ -202,6 +209,7 @@
      * 鍒濆鍖朙inphone
      */
     private void initLinphone() {
+        currentCallState = Call.State.Idle;
         String basePath = getFilesDir().getAbsolutePath();
         Factory.instance().setLogCollectionPath(basePath);
         Factory.instance().enableLogCollection(LogCollectionState.Enabled);
@@ -215,8 +223,8 @@
         initCoreListener();
         copyAssetsFromPackage(basePath);
         // Create the Core and add our listener
-        mCore = Factory.instance()
-                .createCore(basePath + "/.linphonerc", basePath + "/linphonerc", this);
+        mCore = Factory.instance().createCore(basePath + "/.linphonerc",
+                basePath + "/linphonerc", this);
         mCore.addListener(mCoreListener);
         // Core is ready to be configured
         configureCore();
@@ -230,6 +238,7 @@
             @Override
             public void onCallStateChanged(Core core, Call linphoneCall, Call.State state, String message) {
                 HDLLog.e(START_LINPHONE_LOGS, "callState: " + state.toString());
+                HDLLog.e(START_LINPHONE_LOGS, "state.toInt()=" + state.toInt() + "==============message=========: " + message);
                 currentCallState = state;
                 if (sPhoneCallback != null) {
                     if (state == Call.State.IncomingReceived) {
@@ -239,7 +248,7 @@
                     } else if (state == Call.State.Connected) {
                         sPhoneCallback.callConnected();
                     } else if (state == Call.State.Error) {
-                        sPhoneCallback.error();
+                        sPhoneCallback.error(message);
                     } else if (state == Call.State.End) {
                         sPhoneCallback.callEnd();
                     } else if (state == Call.State.Released) {
@@ -254,11 +263,11 @@
                 HDLLog.i(START_LINPHONE_LOGS, "registrationState: " + state);
 
                 if (state.equals(RegistrationState.None.toString())) {
-                    if (sRegistrationCallback != null){
+                    if (sRegistrationCallback != null) {
                         sRegistrationCallback.registrationNone();
                     }
                 } else if (state.equals(RegistrationState.Progress.toString())) {
-                    if (sRegistrationCallback != null){
+                    if (sRegistrationCallback != null) {
                         sRegistrationCallback.registrationProgress();
                     }
                 } else if (state.equals(RegistrationState.Ok.toString())) {
@@ -281,6 +290,7 @@
 
     /**
      * 鏀跺埌娉ㄩ攢鎴愬姛鍚庣Щ闄ゅ綋鍓嶄唬鐞�
+     *
      * @param core
      * @param proxyConfig
      */
@@ -311,59 +321,65 @@
         }
 
         //1.璁剧疆瀛樺偍鐢ㄦ埛x509璇佷功鐨勭洰褰曠殑璺緞
-        mCore.setUserCertificatesPath(userCerts);
+        //mCore.setUserCertificatesPath(userCerts);
+        mCore.setUserCertificatesPath(basePath);
         //2.璁剧疆UserAgent
         setUserAgent();
+        //3.璁剧疆鎾斁閾冨0
 //        mCore.setNativeRingingEnabled(true);
 //        mCore.setRemoteRingbackTone(mRingSoundFile);
 //        mCore.setTone(ToneID.CallWaiting, mRingSoundFile);
 //        mCore.setRing(mRingSoundFile);
 //        mCore.setPlayFile(mPauseSoundFile);
+        //4.绂佺敤鎵嬫満鎽勫儚澶磋棰戦噰闆�
 //        mCore.enableVideoCapture(false);//绂佺敤鎵嬫満鎽勫儚澶磋棰戦噰闆�
-        mCore.setNetworkReachable(true);
-        //3.鍥炲0娑堥櫎
+//        mCore.setNetworkReachable(true);
+        //5.鍥炲0娑堥櫎
         mCore.enableEchoCancellation(true);
-        mCore.enableEchoLimiter(true);
-        //4.鑷�傚簲鐮佺巼鎺у埗
+//        mCore.enableEchoLimiter(false);
+        mCore.enableMic(true);//鍚敤楹﹀厠椋�
+        //6.鑷�傚簲鐮佺巼鎺у埗
         mCore.enableAdaptiveRateControl(true);
-        //5.audio 鐮佺巼璁剧疆
+        //7.audio 鐮佺巼璁剧疆
         mCore.getConfig().setInt("audio", "codec_bitrate_limit", 36);
-        //6.瑙嗛灏哄鍋忓ソ璁剧疆 榛樿qvga
-        VideoDefinition preferredVideoDefinition =
-                Factory.instance().createVideoDefinitionFromName("qvga");
-        mCore.setPreferredVideoDefinition(preferredVideoDefinition);
-        //7.璁剧疆甯﹀闄愬埗锛屽甫瀹藉崟浣嶄负kbits/s, 0琛ㄧず鏃犻檺
-        mCore.setUploadBandwidth(1536);
-        mCore.setDownloadBandwidth(1536);
-        //8.璁剧疆鍚敤H264缂栫爜
-        mCore.getConfig().setBool("app", "open_h264_download_enabled", true);
-        //9.璁剧疆瑙嗛鐨勯粯璁ょ瓥鐣�
+        //8.瑙嗛鐩稿叧璁剧疆
+        mCore.setVideoPreset("custom");//瑙嗛棰勮涓篶ustom
+        mCore.setPreferredFramerate(5);//FPS浼樺厛璁剧疆涓�5
+        VideoDefinition preferredVideoDefinition = Factory.instance().createVideoDefinitionFromName("qvga");
+        mCore.setPreferredVideoDefinition(preferredVideoDefinition);//瑙嗛灏哄鍋忓ソ榛樿qvga
+        //9.璁剧疆甯﹀闄愬埗锛屽甫瀹藉崟浣嶄负kbits/s, 0琛ㄧず鏃犻檺
+//        mCore.setUploadBandwidth(1536);
+//        mCore.setDownloadBandwidth(1536);
+        //10.璁剧疆瑙嗛鐨勯粯璁ょ瓥鐣�
         VideoActivationPolicy vap = mCore.getVideoActivationPolicy();
         vap.setAutomaticallyInitiate(true);
         mCore.setVideoActivationPolicy(vap);
-        //10.璁剧疆缂栫爜鏍煎紡
+        //11.璁剧疆缂栫爜鏍煎紡
         setCodecMime();
+
+        // 鍏ㄨ閫歴ip璁剧疆ca璇佷功
+        //mCore.setRootCa(basePath + "/rootca.pem");
     }
 
     /**
      * 璁剧疆缂栫爜鏍煎紡
      */
     private void setCodecMime() {
+        //1.鍚敤PCMA PCMU 8000Hz
         PayloadType[] ptList = mCore.getAudioPayloadTypes();
         for (PayloadType pt : ptList) {
-
-            org.linphone.mediastream.Log.d("payloadaudio", pt.getMimeType());
-            if (pt.getMimeType().equals("PCMA") && pt.getClockRate() == 8000) {
+//           HDLLog.i("payloadaudio", pt.getMimeType());
+            if ((pt.getMimeType().equals("PCMA") || pt.getMimeType().equals("PCMU")) && pt.getClockRate() == 8000) {
                 pt.enable(true);
-
             } else {
                 pt.enable(false);
             }
         }
         mCore.setAudioPayloadTypes(ptList);
-
+        //2.璁剧疆VP8銆丠264銆丠265 绛夊惎鐢�
         PayloadType[] ptVideoList = mCore.getVideoPayloadTypes();
         for (PayloadType pt : ptVideoList) {
+//            HDLLog.i("VideoPayload", pt.getMimeType());
             pt.enable(true);
         }
         mCore.setVideoPayloadTypes(ptVideoList);
@@ -371,6 +387,7 @@
 
     /**
      * 璁剧疆鏄惁鍚敤閾冨0锛岀洰鍓嶅彂鐜拌缃棤鏁堝緟鍒嗘瀽鍘熷洜
+     *
      * @param use
      */
     public void enableDeviceRingtone(boolean use) {
@@ -450,6 +467,12 @@
 //            mPauseSoundFile = basePath + "/toy_mono.wav";
 //            copyIfNotExist(R.raw.toy_mono, basePath + "/toy_mono.wav");
 
+//            String mRootca = basePath + "/rootca.pem"; // 2022-05-23 瀵规帴鍏ㄨ閫氬彲瑙嗗璁叉坊鍔犵殑璇佷功
+//            copyIfNotExist(R.raw.freeview_rootca, mRootca);
+
+            String mLPConfigXsd = basePath + "/lpconfig.xsd";
+            copyIfNotExist(R.raw.lpconfig, mLPConfigXsd);
+
         } catch (IOException ioe) {
             Log.e(ioe);
         }
@@ -458,6 +481,7 @@
 
     /**
      * copyIfNotExist
+     *
      * @param ressourceId
      * @param target
      * @throws IOException
@@ -471,6 +495,7 @@
 
     /**
      * copyFromPackage
+     *
      * @param ressourceId
      * @param target
      * @throws IOException
@@ -520,12 +545,14 @@
 
     //閫氱煡ID
     public static final int NOTIFICATION_ID = 2;
+
     /**
      * 瑙e喅android8.0浠ヤ笂鏃犳硶鍚姩鏈嶅姟鐨勯棶棰�
      */
     void hdlStartForeground() {
 
     }
+
     /**
      * stopForeground
      */

--
Gitblit v1.8.0