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