From 173779d8fd18969a646052310c17e1739c42a9c9 Mon Sep 17 00:00:00 2001
From: wxr <wxr@hdlchina.com.cn>
Date: 星期二, 12 十一月 2024 09:19:18 +0800
Subject: [PATCH] 1.0.9

---
 HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/HDLLinphoneKit.java |   73 +++++++++++++++++++++++++++++++++++-
 1 files changed, 70 insertions(+), 3 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 7f0793d..85ef11d 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.AudioManager;
 import android.media.MediaPlayer;
 import android.os.Build;
 import android.os.IBinder;
@@ -26,6 +27,9 @@
 import org.linphone.core.AuthInfo;
 import org.linphone.core.Call;
 import org.linphone.core.CallParams;
+import org.linphone.core.ChatMessage;
+import org.linphone.core.ChatMessageListener;
+import org.linphone.core.ChatRoom;
 import org.linphone.core.Core;
 import org.linphone.core.CoreException;
 import org.linphone.core.Factory;
@@ -83,6 +87,8 @@
      */
     public int missedCallsTime = 30;
 
+    public AudioManager audioManager;
+
 
     private HDLLinphoneKit() {
 
@@ -96,6 +102,21 @@
 
             }
         }
+    }
+
+    private void initAudioManager(Context context){
+        if(audioManager == null){
+            try{
+                audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+            }catch (Exception exception){
+
+            }
+        }
+    }
+
+    public int getRingerMode()
+    {
+        return audioManager.getRingerMode();
     }
 
     public boolean getMediaPlayerPlayingStatus(){
@@ -178,6 +199,7 @@
         if (!HDLLinphoneService.isReady()) {
             CheckIfNeedstartService();
             InitMediaPlayer(context);
+            initAudioManager(context);
         } else {
         }
     }
@@ -507,7 +529,48 @@
         mLinphoneCore.addProxyConfig(prxCfg);//娣诲姞浠g悊閰嶇疆銆傚鏋滃惎鐢ㄤ簡娉ㄥ唽锛岃繖灏嗗紑濮嬪湪浠g悊涓婃敞鍐屻��
         mLinphoneCore.addAuthInfo(authInfo);//娣诲姞璁よ瘉淇℃伅鍒�,璇ヤ俊鎭墖娈靛皢鍦ㄦ墍鏈夐渶瑕佺殑SIP浜嬪姟涓娇鐢ㄨ韩浠介獙璇�
         mLinphoneCore.setDefaultProxyConfig(prxCfg);//璁剧疆榛樿浠g悊銆�
+
     }
+
+    public void sendSipMessage(String sipAddress, String message) {
+        try {
+            Core mLinphoneCore = HDLLinphoneService.getCore();
+            if (mLinphoneCore == null) {
+                Log.e("Linphone", "Linphone Core 鏈垵濮嬪寲");
+                return;
+            }
+
+            // 瑙f瀽瀵规柟鐨凷IP鍦板潃
+            Address address = mLinphoneCore.interpretUrl(sipAddress);
+
+            // 寤虹珛瀵硅瘽
+            ChatRoom chatRoom = mLinphoneCore.getChatRoom(address);
+
+            // 鍒涘缓娑堟伅
+            ChatMessage chatMessage = chatRoom.createMessageFromUtf8(message);
+
+            // 鐩戝惉娑堟伅鐘舵��
+            chatMessage.addListener(new ChatMessageListener() {
+                @Override
+                public void onChatMessageStateChanged(Core core, ChatMessage msg, ChatMessage.State state) {
+                    if (state == ChatMessage.State.Delivered) {
+                        Log.d("Linphone", "娑堟伅宸叉垚鍔熷彂閫�");
+                    } else if (state == ChatMessage.State.NotDelivered) {
+                        Log.d("Linphone", "娑堟伅鍙戦�佸け璐�");
+                    }
+                }
+            });
+
+            // 鍙戦�佹秷鎭�
+            chatMessage.send();
+
+        } catch (Exception e) {
+            Log.e("Linphone", "娑堟伅鍙戦�佸け璐�", e);
+            e.printStackTrace();
+        }
+    }
+
+
 
     /**
      * 鎻愪氦璐﹀彿鍜屽瘑鐮佹敞鍐屽埌鍏ㄨ閫氭湇鍔″櫒
@@ -579,10 +642,14 @@
             if (addressToCall != null) {
                 call = core.inviteAddressWithParams(addressToCall, params);
                 // 璁剧疆澶栨斁
-                for (AudioDevice audioDevice : HDLLinphoneService.getCore().getAudioDevices()) {
-                    if (audioDevice.getType() == AudioDevice.Type.Speaker) {
-                        call.setOutputAudioDevice(audioDevice);
+                try {
+                    for (AudioDevice audioDevice : HDLLinphoneService.getCore().getAudioDevices()) {
+                        if (audioDevice.getType() == AudioDevice.Type.Speaker) {
+                            call.setOutputAudioDevice(audioDevice);
+                        }
                     }
+                }catch (Exception exception){
+                    Log.e("LinphoneError",exception.getMessage());
                 }
             }
         }

--
Gitblit v1.8.0