| | |
| | | import android.content.Intent; |
| | | import android.content.IntentFilter; |
| | | import android.graphics.Bitmap; |
| | | import android.media.AudioAttributes; |
| | | import android.os.Build; |
| | | import android.os.Bundle; |
| | | import android.os.CountDownTimer; |
| | | import android.os.SystemClock; |
| | | import android.os.Vibrator; |
| | | import android.text.TextUtils; |
| | | import android.util.DisplayMetrics; |
| | | import android.util.Log; |
| | |
| | | //参数 |
| | | private boolean isAnswer;//是否已经接听了 |
| | | private int callTime;//通话时间 |
| | | |
| | | //倒计时 |
| | | private CountDownTimer mCountDownTimer; |
| | | /** |
| | | * 手机振动器 |
| | | */ |
| | | private Vibrator mVibrator; |
| | | |
| | | //Linphone |
| | | private CoreListenerStub mCoreListener; |
| | | |
| | | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | |
| | | initCallBack(); |
| | | initCountDownTimer(); |
| | | initLinphone(); |
| | | initVibrator(); |
| | | |
| | | } |
| | | |
| | |
| | | @Override |
| | | protected void onDestroy() { |
| | | super.onDestroy(); |
| | | |
| | | //1.挂断 |
| | | HDLLinphoneKit.getInstance().hangUp(); |
| | | //2.暂停计时 |
| | | if (null != timer_lp_calltime) { |
| | | timer_lp_calltime.stop(); |
| | | } |
| | | |
| | | //3.注销callBack |
| | | HDLLinphoneKit.getInstance().setOpenOpenDoorCallBack(null); |
| | | |
| | | //4.取消震动器 |
| | | cancelVibrator(); |
| | | //5. |
| | | if (mCountDownTimer != null) { |
| | | mCountDownTimer.cancel(); |
| | | mCountDownTimer = null; |
| | | } |
| | | //5. |
| | | onDestroyLinphone(); |
| | | |
| | | HDLLog.i(TAG, "onDestroy"); |
| | |
| | | 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); |
| | | |
| | | iv_lp_screenshot.setEnabled(false); |
| | | iv_lp_unlock.setEnabled(false); |
| | | } |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public void onTick(long millisUntilFinished) { |
| | | if (!HDLLinphoneIntercomActivity.this.isFinishing()) { |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public void onFinish() { |
| | | // showToast("开锁onFinish"); |
| | | iv_lp_unlock.setEnabled(true); |
| | | } |
| | | |
| | | }; |
| | | // |
| | | } |
| | | |
| | | @Override |
| | |
| | | showToast(getString(R.string.lp_operationFailedStr)); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 开锁点击事件 |
| | |
| | | private void onClickAnswer() { |
| | | //1.接听 |
| | | HDLLinphoneKit.getInstance().acceptCall(); |
| | | //2.取消震动 |
| | | cancelVibrator(); |
| | | //3.修改UI |
| | | isAnswer = true; |
| | | tv_lp_hangUp.setText(getString(R.string.lp_hangupStr)); |
| | | setViewGone(rl_lp_answerView); |
| | |
| | | if (HDLLinphoneKit.getInstance().getOnHDLLinphoneCallListener() != null) { |
| | | HDLLinphoneKit.getInstance().getOnHDLLinphoneCallListener().onAnswerAction(); |
| | | } |
| | | |
| | | iv_lp_screenshot.setEnabled(true); |
| | | iv_lp_unlock.setEnabled(true); |
| | | } |
| | | |
| | | /****************开锁成功********/ |
| | |
| | | core.setNativePreviewWindowId(video_lp_rendering2); |
| | | // Listen for call state changes |
| | | core.addListener(mCoreListener); |
| | | core.enableMic(true);//开启麦克风 |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * onDestroyLinphone |
| | | */ |
| | | void onDestroyLinphone(){ |
| | | void onDestroyLinphone() { |
| | | Core core = HDLLinphoneKit.getInstance().getCore(); |
| | | if (core != null) { |
| | | core.removeListener(mCoreListener); |
| | |
| | | video_lp_rendering2 = null; |
| | | } |
| | | |
| | | /** |
| | | * 初始化震动器 |
| | | */ |
| | | void initVibrator() { |
| | | mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); |
| | | if (mVibrator.hasVibrator()) { |
| | | long[] patern = {0, 1000, 1000}; |
| | | AudioAttributes audioAttributes = null; |
| | | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |
| | | audioAttributes = new AudioAttributes.Builder() |
| | | .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) |
| | | .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE) //key |
| | | .build(); |
| | | mVibrator.vibrate(patern, 1, audioAttributes); |
| | | } else { |
| | | mVibrator.vibrate(patern, 1); |
| | | } |
| | | } else { |
| | | HDLLog.E("当前手机没有震动器"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 关闭震动器 |
| | | */ |
| | | void cancelVibrator() { |
| | | if (mVibrator != null) { |
| | | mVibrator.cancel(); |
| | | mVibrator = null; |
| | | } |
| | | |
| | | } |
| | | } |