HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/HDLLinphoneKit.java
@@ -150,7 +150,7 @@ @Override public void callEnd() { super.callEnd(); context.sendBroadcast(new Intent(HDLLinphoneIntercomActivity.RECEIVE_FINISH_VIDEO_ACTIVITY)); // context.sendBroadcast(new Intent(HDLLinphoneIntercomActivity.RECEIVE_FINISH_VIDEO_ACTIVITY)); } }); @@ -275,9 +275,6 @@ config.done(); } } core.clearAllAuthInfo();//清除所有认证信息。 // core.clearProxyConfig();//从配置中删除所有代理。注意:目前不能直接删所有代理,因为服务器上还是标记已注册 } } catch (Exception e) { e.printStackTrace(); @@ -290,6 +287,7 @@ public void clearProxyConfig(){ Core core = HDLLinphoneService.getCore(); if (core != null) { core.setDefaultProxyConfig(null); core.clearAllAuthInfo();//清除所有认证信息。 core.clearProxyConfig();//从配置中删除所有代理。 } HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneIntercomActivity.java
@@ -28,6 +28,10 @@ import com.hdl.hdllinphonesdk.utils.HDLImageUtils; import com.hdl.hdllinphonesdk.utils.HDLLog; import org.linphone.core.Call; import org.linphone.core.Core; import org.linphone.core.CoreListenerStub; /** * Linphone接听页面 */ @@ -49,8 +53,8 @@ private LinearLayout ll_video_lp_rendering; private TextureView video_lp_rendering; private TextureView video_lp_rendering2; // private TextView tv_lp_calltime; private Chronometer timer_lp_calltime ; // private TextView tv_lp_calltime; private Chronometer timer_lp_calltime; private TextView tv_lp_calltime; //参数 @@ -58,6 +62,9 @@ private int callTime;//通话时间 private CountDownTimer mCountDownTimer; //Linphone private CoreListenerStub mCoreListener; @Override protected void onCreate(Bundle savedInstanceState) { @@ -92,13 +99,9 @@ mCountDownTimer.cancel(); mCountDownTimer = null; } onDestroyLinphone(); if (mReceiver != null) { unregisterReceiver(mReceiver); } HDLLinphoneKit.getInstance().onDestroy(); HDLLog.i(TAG,"onDestroy"); HDLLog.i(TAG, "onDestroy"); } @@ -119,19 +122,19 @@ video_lp_rendering = findViewById(R.id.video_lp_rendering); video_lp_rendering2 = findViewById(R.id.video_lp_rendering2); // tv_lp_calltime = findViewById(R.id.tv_lp_calltime); timer_lp_calltime = (Chronometer)findViewById(R.id.timer_lp_calltime); timer_lp_calltime = (Chronometer) findViewById(R.id.timer_lp_calltime); tv_lp_calltime = findViewById(R.id.tv_lp_calltime); setWidthHeightWithRatio(ll_video_lp_rendering,16,9); setWidthHeightWithRatio(ll_video_lp_rendering, 16, 9); } /** * initData */ private void initData(){ private void initData() { Bundle extras = getIntent().getExtras(); if(extras != null){ String titleName = extras.getString(HDLLinphoneKit.KEY_TITLE_NAME); if(!TextUtils.isEmpty(titleName)){ if (extras != null) { String titleName = extras.getString(HDLLinphoneKit.KEY_TITLE_NAME); if (!TextUtils.isEmpty(titleName)) { tv_lp_title.setText(titleName); } } @@ -154,6 +157,7 @@ view.setLayoutParams(layoutParams); } } /** * init OnClickListener */ @@ -169,7 +173,7 @@ /** * 初始化开门回调事件 */ void initCallBack(){ void initCallBack() { HDLLinphoneKit.getInstance().setOpenOpenDoorCallBack(new OnLPOpenDoorCallBack() { @Override public void onOpenSuccess() { @@ -186,9 +190,9 @@ /** * 初始化开锁屏蔽倒计时 */ void initCountDownTimer(){ void initCountDownTimer() { mCountDownTimer = new CountDownTimer(10*1000, 1000) { mCountDownTimer = new CountDownTimer(10 * 1000, 1000) { @Override public void onTick(long millisUntilFinished) { if (!HDLLinphoneIntercomActivity.this.isFinishing()) { @@ -233,15 +237,14 @@ private void onClickScreenshot() { // Bitmap img = HDLImageUtils.createViewBitmap(video_lp_rendering); Bitmap img = video_lp_rendering.getBitmap(); boolean isSuccess = HDLImageUtils.saveImageToGallery(this, img); boolean isSuccess = HDLImageUtils.saveImageToGallery(this, img); if(isSuccess){ if (isSuccess) { showToast(getString(R.string.lp_saveToTheAlbumsStr)); }else { } else { showToast(getString(R.string.lp_operationFailedStr)); } } /** @@ -264,7 +267,7 @@ if (isAnswer) { //如果之前已经接听了,回调是挂断 callTime = getTimerCallTime(); HDLLog.i("callTime","callTime"+callTime); HDLLog.i("callTime", "callTime" + callTime); HDLLinphoneKit.getInstance().getOnHDLLinphoneCallListener().onHangUpAction(callTime); } else { //如果之前没接听了,回调是拒接 @@ -304,12 +307,14 @@ iv_lp_unlock.setEnabled(false); startOpenDoorCountdown(); } /** * 开启倒计时 */ void startOpenDoorCountdown() { mCountDownTimer.start(); } /** * 通话记录开启倒计时 */ @@ -317,12 +322,12 @@ timer_lp_calltime.setBase(SystemClock.elapsedRealtime());//计时器清零 timer_lp_calltime.start(); } int getTimerCallTime(){ int getTimerCallTime() { int temp0 = Integer.parseInt(timer_lp_calltime.getText().toString().split(":")[0]); int temp1 =Integer.parseInt(timer_lp_calltime.getText().toString().split(":")[1]); int temp1 = Integer.parseInt(timer_lp_calltime.getText().toString().split(":")[1]); return temp0 * 60 + temp1; } /****************封装常用方法********/ @@ -352,23 +357,46 @@ } /**********LinPhone**********/ void initLinphone(){ IntentFilter intentFilter = new IntentFilter(RECEIVE_FINISH_VIDEO_ACTIVITY); mReceiver = new FinishVideoActivityReceiver(); registerReceiver(mReceiver, intentFilter); HDLLinphoneKit.getInstance().setAndroidVideoWindow(video_lp_rendering, video_lp_rendering2); } /** * initLinphone */ void initLinphone() { mCoreListener = new CoreListenerStub() { @Override public void onCallStateChanged(Core core, Call call, Call.State state, String message) { if (state == Call.State.End || state == Call.State.Released) { // Once call is finished (end state), terminate the activity // We also check for released state (called a few seconds later) just in case // we missed the first one showToast(getString(R.string.lp_endOfCallStr)); finish(); } } }; public class FinishVideoActivityReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { HDLLinphoneIntercomActivity.this.finish(); Core core = HDLLinphoneKit.getInstance().getCore(); // We need to tell the core in which to display what if (core != null) { core.setNativeVideoWindowId(video_lp_rendering); core.setNativePreviewWindowId(video_lp_rendering2); // Listen for call state changes core.addListener(mCoreListener); } } private FinishVideoActivityReceiver mReceiver; public static final String RECEIVE_FINISH_VIDEO_ACTIVITY = "receive_finish_video_activity"; /** * onDestroyLinphone */ void onDestroyLinphone(){ Core core = HDLLinphoneKit.getInstance().getCore(); if (core != null) { core.removeListener(mCoreListener); core.setNativeVideoWindowId(null); core.setNativePreviewWindowId(null); } video_lp_rendering = null; video_lp_rendering2 = null; } } HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneMonitorActivity.java
@@ -27,6 +27,10 @@ import com.hdl.hdllinphonesdk.utils.HDLImageUtils; import com.hdl.hdllinphonesdk.utils.HDLLog; import org.linphone.core.Call; import org.linphone.core.Core; import org.linphone.core.CoreListenerStub; /** *监视页面 */ @@ -47,6 +51,9 @@ private TextureView video_lp_rendering2; private CountDownTimer mCountDownTimer; //Linphone private CoreListenerStub mCoreListener; @Override protected void onCreate(Bundle savedInstanceState) { @@ -79,10 +86,7 @@ mCountDownTimer = null; } if (mReceiver != null) { unregisterReceiver(mReceiver); } HDLLinphoneKit.getInstance().onDestroy(); onDestroyLinphone(); HDLLog.i(TAG,"onDestroy"); @@ -287,23 +291,44 @@ } /**********LinPhone**********/ void initLinphone(){ IntentFilter intentFilter = new IntentFilter(RECEIVE_FINISH_VIDEO_ACTIVITY); mReceiver = new HDLLinphoneMonitorActivity.FinishVideoActivityReceiver(); registerReceiver(mReceiver, intentFilter); HDLLinphoneKit.getInstance().setAndroidVideoWindow(video_lp_rendering, video_lp_rendering2); /** * initLinphone */ void initLinphone() { mCoreListener = new CoreListenerStub() { @Override public void onCallStateChanged(Core core, Call call, Call.State state, String message) { if (state == Call.State.End || state == Call.State.Released) { // Once call is finished (end state), terminate the activity // We also check for released state (called a few seconds later) just in case // we missed the first one showToast(getString(R.string.lp_endMonitoringStr)); finish(); } } }; Core core = HDLLinphoneKit.getInstance().getCore(); // We need to tell the core in which to display what if (core != null) { core.setNativeVideoWindowId(video_lp_rendering); core.setNativePreviewWindowId(video_lp_rendering2); // Listen for call state changes core.addListener(mCoreListener); } } /** * 页面关闭广播监听 * onDestroyLinphone */ public class FinishVideoActivityReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { HDLLinphoneMonitorActivity.this.finish(); void onDestroyLinphone(){ Core core = HDLLinphoneKit.getInstance().getCore(); if (core != null) { core.removeListener(mCoreListener); core.setNativeVideoWindowId(null); core.setNativePreviewWindowId(null); } video_lp_rendering = null; video_lp_rendering2 = null; } private HDLLinphoneMonitorActivity.FinishVideoActivityReceiver mReceiver; public static final String RECEIVE_FINISH_VIDEO_ACTIVITY = "receive_finish_video_activity"; } HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/res/values-zh/strings.xml
@@ -12,6 +12,7 @@ <string name="lp_unlockfailureStr">开锁失败</string> <string name="lp_callingStr">来电中...</string> <string name="lp_endOfCallStr">通话结束</string> <string name="lp_endMonitoringStr">监视结束</string> <string name="lp_screenshotStr">截图</string> <string name="lp_unlockStr">开锁</string> <string name="lp_outdoorUnitStr">室外机</string> HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/res/values/strings.xml
@@ -11,6 +11,7 @@ <string name="lp_unlockfailureStr">Unlock failure</string> <string name="lp_callingStr">Incoming call</string> <string name="lp_endOfCallStr">End of call</string> <string name="lp_endMonitoringStr">End of the monitor</string> <string name="lp_screenshotStr">Screenshot</string> <string name="lp_unlockStr">Unlock</string> <string name="lp_outdoorUnitStr">Outdoor unit</string> HDLLinphoneSDKDemoNew/app/libs/HDLLinphoneSDK-V1.0.1.aarBinary files differ
HDLLinphoneSDKDemoNew/app/src/main/java/com/example/hdllinphonesdkdemo/MainActivity.java
@@ -66,6 +66,7 @@ mTextView4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clearProxyConfig(); HDLLinphoneKit.getInstance().setAccountAndLogin("5555", "85521566", "test-gz.hdlcontrol.com:5060"); } }); @@ -74,12 +75,12 @@ @Override public void onClick(View v) { logoutLog(); return; //// HDLLinphoneKit.getInstance().callTo("61723164995779",true); //// HDLcallTo("61723164995779",true); // HDLLinphoneKit.getInstance().callTo("1427186301744910338",true); // startActivity(HDLLinphoneMonitorActivity.class); // logoutLog(); // return; // HDLLinphoneKit.getInstance().callTo("61723164995779",true); // HDLcallTo("61723164995779",true); HDLLinphoneKit.getInstance().callTo("1427186301744910338",true); startActivity(HDLLinphoneMonitorActivity.class); } @@ -88,7 +89,7 @@ mTextView3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { HDLLinphoneKit.getInstance().logout(); logout(); } }); @@ -115,7 +116,7 @@ config.done(); } } core.clearAllAuthInfo();//清除所有认证信息。 // core.clearAllAuthInfo();//清除所有认证信息。 // core.clearProxyConfig();//从配置中删除所有代理。 } } catch (Exception e) { @@ -123,6 +124,18 @@ } } public void clearProxyConfig() { Core core = HDLLinphoneService.getCore(); if (core != null) { core.setDefaultProxyConfig(null); core.clearAllAuthInfo(); core.clearProxyConfig(); // core.refreshRegisters();//强制在下一次迭代时启动注册刷新 // core.ensureRegistered(); } } public void logoutLog() { try { Core core = HDLLinphoneService.getCore(); Shared.Droid.HDLLinphone/Shared.Droid.HDLLinphone/Jars/HDLLinphoneSDK-V1.0.1.aarBinary files differ
Shared.Droid.HDLLinphone/Shared.Droid.HDLLinphone/Properties/AssemblyInfo.cs
@@ -22,5 +22,5 @@ // Minor Version // Build Number // Revision [assembly: AssemblyVersion("1.0.1.3")] [assembly: AssemblyFileVersion("1.0.1.3")] [assembly: AssemblyVersion("1.0.1.5")] [assembly: AssemblyFileVersion("1.0.1.5")]