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