package com.hdl.hdllinphonesdk.activity; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.Bitmap; import android.os.CountDownTimer; import android.os.Bundle; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; import android.view.TextureView; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.hdl.hdllinphonesdk.HDLLinphoneKit; import com.hdl.hdllinphonesdk.R; import com.hdl.hdllinphonesdk.callback.OnLPOpenDoorCallBack; import com.hdl.hdllinphonesdk.utils.HDLImageUtils; /** *监视页面 */ public class HDLLinphoneMonitorActivity extends LPCheckPermissionsActivity implements View.OnClickListener { private static final String TAG = "HDLLinphoneMonitorActivity"; private RelativeLayout ll_lp_btn_back; //控件 private TextView tv_lp_title; private ImageView iv_lp_screenshot; private TextView tv_lp_screenshot; private ImageView iv_lp_unlock; private TextView tv_lp_unlock; private LinearLayout ll_video_lp_rendering; private TextureView video_lp_rendering; private TextureView video_lp_rendering2; private CountDownTimer mCountDownTimer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); // getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, // WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_hdllinphone_monitor); initView(); initData(); initOnClick(); initCallBack(); initCountDownTimer(); initLinphone(); } /** * onDestroy */ @SuppressLint("LongLogTag") @Override protected void onDestroy() { super.onDestroy(); HDLLinphoneKit.getInstance().setOpenOpenDoorCallBack(null); if (mCountDownTimer != null) { mCountDownTimer.cancel(); mCountDownTimer = null; } if (mReceiver != null) { unregisterReceiver(mReceiver); } HDLLinphoneKit.getInstance().onDestroy(); Log.i(TAG,"onDestroy"); } /** * initView */ private void initView() { ll_lp_btn_back = findViewById(R.id.ll_lp_btn_back); tv_lp_title = findViewById(R.id.tv_lp_title); iv_lp_screenshot = findViewById(R.id.iv_lp_screenshot); tv_lp_screenshot = findViewById(R.id.tv_lp_screenshot); iv_lp_unlock = findViewById(R.id.iv_lp_unlock); tv_lp_unlock = findViewById(R.id.tv_lp_unlock); ll_video_lp_rendering = findViewById(R.id.ll_video_lp_rendering); 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); } /** * initData */ private void initData(){ Bundle extras = getIntent().getExtras(); if(extras != null){ String titleName = extras.getString(HDLLinphoneKit.KEY_TITLE_NAME); if(!TextUtils.isEmpty(titleName)){ tv_lp_title.setText(titleName); } } } /** * 指定屏幕宽度 根据宽高比设置控件宽高 */ public void setWidthHeightWithRatio(View view, int widthRatio, int heightRatio) { DisplayMetrics outMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(outMetrics); int width = outMetrics.widthPixels; if (width <= 0) width = view.getWidth(); int height = width * heightRatio / widthRatio; ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); if (layoutParams != null) { layoutParams.height = height; layoutParams.width = width; view.setLayoutParams(layoutParams); } } /** * init OnClickListener */ private void initOnClick() { ll_lp_btn_back.setOnClickListener(this); iv_lp_screenshot.setOnClickListener(this); tv_lp_screenshot.setOnClickListener(this); iv_lp_unlock.setOnClickListener(this); tv_lp_unlock.setOnClickListener(this); } /** * 初始化开门回调事件 */ void initCallBack(){ HDLLinphoneKit.getInstance().setOpenOpenDoorCallBack(new OnLPOpenDoorCallBack() { @Override public void onOpenSuccess() { setOpenDoorSuccess(); } @Override public void onOpenError(String errorMes) { showToast(getString(R.string.lp_unlockfailureStr) + errorMes); } }); } /** * 初始化开锁屏蔽倒计时 */ void initCountDownTimer(){ mCountDownTimer = new CountDownTimer(10*1000, 1000) { @Override public void onTick(long millisUntilFinished) { if (!HDLLinphoneMonitorActivity.this.isFinishing()) { } } /** *倒计时结束后调用的 */ @Override public void onFinish() { // showToast("开锁onFinish"); iv_lp_unlock.setEnabled(true); } }; // } @Override public void onClick(View view) { int id = view.getId(); if (id == R.id.iv_lp_screenshot) { //截图 onClickScreenshot(); } else if (id == R.id.iv_lp_unlock) { //开锁 onClickUnlock(); } else if (id == R.id.ll_lp_btn_back) { //返回按钮 挂断 onClickHangUp(); } } /** * 截图点击事件 */ private void onClickScreenshot() { // Bitmap img = HDLImageUtils.createViewBitmap(video_lp_rendering); Bitmap img = video_lp_rendering.getBitmap(); boolean isSuccess = HDLImageUtils.saveImageToGallery(this, img); if(isSuccess){ showToast(getString(R.string.lp_saveToTheAlbumsStr)); }else { showToast(getString(R.string.lp_operationFailedStr)); } } /** * 开锁点击事件 */ private void onClickUnlock() { if (HDLLinphoneKit.getInstance().getOnHDLLinphoneCallListener() != null) { HDLLinphoneKit.getInstance().getOnHDLLinphoneCallListener().onUnlockAction(); } } /** * 挂断点击事件 */ private void onClickHangUp() { //1.挂断 HDLLinphoneKit.getInstance().hangUp(); //2.页面关闭 finish(); } /****************开锁成功********/ /** * 开锁成功后,10s内不能重复开锁 * 开锁按钮禁用,倒计时结束后重新允许点击 */ void setOpenDoorSuccess() { showToast(getString(R.string.lp_unlockSuccessfullyStr)); iv_lp_unlock.setEnabled(false); startOpenDoorCountdown(); } /** * 开启倒计时 */ void startOpenDoorCountdown() { mCountDownTimer.start(); } /****************封装常用方法********/ /** * showToast */ private void showToast(String text) { Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } /** * setViewVisible */ private static void setViewVisible(View view) { if (view.getVisibility() != View.VISIBLE) { view.setVisibility(View.VISIBLE); } } /** * setViewGone */ private static void setViewGone(View view) { if (view.getVisibility() != View.GONE) { view.setVisibility(View.GONE); } } /**********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); } public class FinishVideoActivityReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { HDLLinphoneMonitorActivity.this.finish(); } } private HDLLinphoneMonitorActivity.FinishVideoActivityReceiver mReceiver; public static final String RECEIVE_FINISH_VIDEO_ACTIVITY = "receive_finish_video_activity"; }