| | |
| | | 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; |
| | | |
| | | /** |
| | | *监视页面 |
| | | * 监视页面 |
| | | */ |
| | | public class HDLLinphoneMonitorActivity extends LPCheckPermissionsActivity implements View.OnClickListener { |
| | | private static final String TAG = "HDLLinphoneMonitorActivity"; |
| | |
| | | private TextureView video_lp_rendering2; |
| | | |
| | | private CountDownTimer mCountDownTimer; |
| | | |
| | | //Linphone |
| | | private CoreListenerStub mCoreListener; |
| | | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | |
| | | @Override |
| | | protected void onDestroy() { |
| | | super.onDestroy(); |
| | | //1.挂断 |
| | | HDLLinphoneKit.getInstance().hangUp(); |
| | | |
| | | HDLLinphoneKit.getInstance().setOpenOpenDoorCallBack(null); |
| | | |
| | |
| | | mCountDownTimer = null; |
| | | } |
| | | |
| | | if (mReceiver != null) { |
| | | unregisterReceiver(mReceiver); |
| | | } |
| | | HDLLinphoneKit.getInstance().onDestroy(); |
| | | onDestroyLinphone(); |
| | | |
| | | HDLLog.i(TAG,"onDestroy"); |
| | | HDLLog.i(TAG, "onDestroy"); |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * initView |
| | |
| | | video_lp_rendering = findViewById(R.id.video_lp_rendering); |
| | | video_lp_rendering2 = findViewById(R.id.video_lp_rendering2); |
| | | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | view.setLayoutParams(layoutParams); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * init OnClickListener |
| | | */ |
| | |
| | | /** |
| | | * 初始化开门回调事件 |
| | | */ |
| | | void initCallBack(){ |
| | | void initCallBack() { |
| | | HDLLinphoneKit.getInstance().setOpenOpenDoorCallBack(new OnLPOpenDoorCallBack() { |
| | | @Override |
| | | public void onOpenSuccess() { |
| | |
| | | /** |
| | | * 初始化开锁屏蔽倒计时 |
| | | */ |
| | | void initCountDownTimer(){ |
| | | void initCountDownTimer() { |
| | | |
| | | mCountDownTimer = new CountDownTimer(10*1000, 1000) { |
| | | mCountDownTimer = new CountDownTimer(10 * 1000, 1000) { |
| | | @Override |
| | | public void onTick(long millisUntilFinished) { |
| | | if (!HDLLinphoneMonitorActivity.this.isFinishing()) { |
| | |
| | | // showToast("开锁onFinish"); |
| | | iv_lp_unlock.setEnabled(true); |
| | | } |
| | | |
| | | }; |
| | | // |
| | | } |
| | | |
| | | @Override |
| | |
| | | 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)); |
| | | } |
| | | } |
| | |
| | | iv_lp_unlock.setEnabled(false); |
| | | startOpenDoorCountdown(); |
| | | } |
| | | |
| | | /** |
| | | * 开启倒计时 |
| | | */ |
| | |
| | | } |
| | | |
| | | /**********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); |
| | | core.enableMic(false);//关闭麦克风 |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 页面关闭广播监听 |
| | | * 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"; |
| | | |
| | | } |