wxr
2024-08-27 83d5ada866a598ee868d3e23624d104d1027db29
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;
    /**
     * 铃声播放器
     */
    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;
    }
    // 播放铃声
    public void playRingtone() {
        if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
            mediaPlayer.start(); // 开始播放
        }
    }
    /**
     * 是否循环播放铃声
     * @param isLooping
     */
    public void setMediaPlayerLooping(boolean isLooping) {
        mediaPlayer.setLooping(isLooping);
    }
    // 停止铃声
    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);