From 83d5ada866a598ee868d3e23624d104d1027db29 Mon Sep 17 00:00:00 2001
From: wxr <wxr@hdlchina.com.cn>
Date: 星期二, 27 八月 2024 15:28:42 +0800
Subject: [PATCH] 增加挂断功能

---
 HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/HDLLinphoneKit.java |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 107 insertions(+), 7 deletions(-)

diff --git a/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/HDLLinphoneKit.java b/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/HDLLinphoneKit.java
index efd4222..7f0793d 100644
--- a/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/HDLLinphoneKit.java
+++ b/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/HDLLinphoneKit.java
@@ -4,6 +4,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.media.MediaPlayer;
 import android.os.Build;
 import android.os.IBinder;
 import android.util.Log;
@@ -67,13 +68,74 @@
     private volatile static HDLLinphoneKit instance;
     private Context viewContext;
     private ServiceWaitThread mServiceWaitThread;
-    private String mUsername, mPassword, mServerIP;
+    private String mUsername, mPassword, mServerIP,mTransportType;
     //    private TextureView mRenderingView, mPreviewView;
     private boolean isAutoJumpCallView;//鏄惁鑷姩璺宠浆鍛煎彨椤甸潰
     private String intercomeType;
 
+    /**
+     * 閾冨0鎾斁鍣�
+     */
+    private MediaPlayer mediaPlayer;
+
+    /**
+     * 鏈帴浜嬩欢瑙﹀彂鏃堕棿
+     */
+    public int missedCallsTime = 30;
+
+
     private HDLLinphoneKit() {
 
+    }
+
+    private void InitMediaPlayer(Context context) {
+        if (mediaPlayer == null) {
+            try {
+                mediaPlayer = MediaPlayer.create(context, R.raw.oldphone_mono);
+            } catch (Exception ex) {
+
+            }
+        }
+    }
+
+    public boolean getMediaPlayerPlayingStatus(){
+        if (mediaPlayer != null){
+            return mediaPlayer.isPlaying();
+        }
+        return false;
+    }
+
+
+    // 鎾斁閾冨0
+    public void playRingtone() {
+        if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
+            mediaPlayer.start(); // 寮�濮嬫挱鏀�
+        }
+    }
+
+    /**
+     * 鏄惁寰幆鎾斁閾冨0
+     * @param isLooping
+     */
+    public void setMediaPlayerLooping(boolean isLooping) {
+        mediaPlayer.setLooping(isLooping);
+    }
+
+    // 鍋滄閾冨0
+    public void stopRingtone() {
+        if (mediaPlayer != null && mediaPlayer.isPlaying()) {
+            mediaPlayer.stop(); // 鍋滄鎾斁
+//            mediaPlayer.reset(); // 閲嶇疆 MediaPlayer
+//            mediaPlayer.release(); // 閲婃斁璧勬簮
+//            mediaPlayer = null;
+        }
+    }
+
+    public void releaseRingtone(){
+        if (mediaPlayer != null ) {
+            mediaPlayer.release(); // 閲婃斁璧勬簮
+            mediaPlayer = null;
+        }
     }
 
     /**
@@ -115,6 +177,7 @@
         viewContext = context.getApplicationContext();
         if (!HDLLinphoneService.isReady()) {
             CheckIfNeedstartService();
+            InitMediaPlayer(context);
         } else {
         }
     }
@@ -271,6 +334,16 @@
         mPassword = password;
         mServerIP = serverIP;
         intercomeType = inter_type;
+        mTransportType = "UDP";
+        login(inter_type);
+    }
+
+    public void setAccountAndLogin(String username, String password, String serverIP, String inter_type, String transportType) {
+        mUsername = username;
+        mPassword = password;
+        mServerIP = serverIP;
+        mTransportType = transportType;
+        intercomeType = inter_type;
         login(inter_type);
     }
 
@@ -384,10 +457,10 @@
             }
             if (inter_type.equals(INTER_PHONE_TYPE_FREEVIEW)) {
                 // 鍏ㄨ閫氬彲瑙嗗璁叉敞鍐�
-                freeViewRegisterUserAuth(mUsername, mPassword, mServerIP);
+                freeViewRegisterUserAuth(mUsername, mPassword, mServerIP,mTransportType);
             } else {
                 // 鍏朵粬鍙瀵硅娉ㄥ唽
-                registerUserAuth(mUsername, mPassword, mServerIP);
+                registerUserAuth(mUsername, mPassword, mServerIP,mTransportType);
             }
         } catch (CoreException e) {
             e.printStackTrace();
@@ -402,7 +475,7 @@
      * @param host
      * @throws CoreException
      */
-    public void registerUserAuth(String name, String password, String host) throws CoreException {
+    public void registerUserAuth(String name, String password, String host,String transportType) throws CoreException {
         Core mLinphoneCore = HDLLinphoneService.getCore();
         if (mLinphoneCore == null) return;
 
@@ -411,7 +484,20 @@
         mAccountCreator.setUsername(name);
         mAccountCreator.setDomain(host);
         mAccountCreator.setPassword(password);
-        mAccountCreator.setTransport(TransportType.Udp);
+        switch (transportType.toUpperCase()){
+            case "UDP":
+                mAccountCreator.setTransport(TransportType.Udp);
+                Log.i("linphone", "setting : TransportType.Udp");
+                break;
+            case "TCP":
+                mAccountCreator.setTransport(TransportType.Tcp);
+                Log.i("linphone", "setting : TransportType.Tcp");
+                break;
+            default:
+                mAccountCreator.setTransport(TransportType.Udp);
+                Log.i("linphone", "default : TransportType.Udp");
+                break;
+        }
         ProxyConfig prxCfg = mAccountCreator.createProxyConfig();
 
         prxCfg.enableQualityReporting(false);
@@ -428,7 +514,7 @@
      *
      * @throws CoreException
      */
-    public void freeViewRegisterUserAuth(String userName, String password, String domain) throws CoreException {
+    public void freeViewRegisterUserAuth(String userName, String password, String domain,String transportType) throws CoreException {
         Core mLinphoneCore = HDLLinphoneService.getCore();
         if (mLinphoneCore == null) return;
 
@@ -438,7 +524,21 @@
         mAccountCreator.setUsername(userName);
         mAccountCreator.setDomain("yun");
         mAccountCreator.setPassword(password);
-        mAccountCreator.setTransport(TransportType.Udp);
+
+        switch (transportType.toUpperCase()){
+            case "UDP":
+                mAccountCreator.setTransport(TransportType.Udp);
+                Log.i("linphone", "setting : TransportType.Udp");
+                break;
+            case "TCP":
+                mAccountCreator.setTransport(TransportType.Tcp);
+                Log.i("linphone", "setting : TransportType.Tcp");
+                break;
+            default:
+                mAccountCreator.setTransport(TransportType.Udp);
+                Log.i("linphone", "default : TransportType.Udp");
+                break;
+        }
 
         ProxyConfig prxCfg = mAccountCreator.createProxyConfig();
         prxCfg.enableQualityReporting(false);

--
Gitblit v1.8.0