From 1b11947cc15245ae005a7cc8cc2f93c5660b0c23 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期五, 20 八月 2021 17:17:43 +0800 Subject: [PATCH] 2021-08-20 1.优化更新 --- HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneIntercomActivity.java | 104 +++++++++++++++++++++++++++++++++------------------- 1 files changed, 66 insertions(+), 38 deletions(-) diff --git a/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneIntercomActivity.java b/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneIntercomActivity.java index fc949ce..03679e5 100644 --- a/HDLLinphoneSDKDemoNew/HDLLinphoneSDK/src/main/java/com/hdl/hdllinphonesdk/activity/HDLLinphoneIntercomActivity.java +++ b/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; + } } \ No newline at end of file -- Gitblit v1.8.0