public static String getTimestampString(Date messageDate) { Locale curLocale = HXSDKHelper.getInstance().getAppContext().getResources().getConfiguration().locale; String languageCode = curLocale.getLanguage(); boolean isChinese = languageCode.contains("zh"); String format = null; long messageTime = messageDate.getTime(); if (isSameDay(messageTime)) { Calendar calendar = GregorianCalendar.getInstance(); calendar.setTime(messageDate); int hour = calendar.get(Calendar.HOUR_OF_DAY); format = "HH:mm"; if (hour > 17) { if (isChinese) { format = "晚上 hh:mm"; } } else if (hour >= 0 && hour <= 6) { if (isChinese) { format = "凌晨 hh:mm"; } } else if (hour > 11 && hour <= 17) { if (isChinese) { format = "下午 hh:mm"; } } else { if (isChinese) { format = "上午 hh:mm"; } } } else if (isYesterday(messageTime)) { if (isChinese) { format = "昨天 HH:mm"; } else { format = "MM-dd HH:mm"; } } else { if (isChinese) { format = "M月d日 HH:mm"; } else { format = "MM-dd HH:mm"; } } if (isChinese) { return new SimpleDateFormat(format, Locale.CHINA).format(messageDate); } else { return new SimpleDateFormat(format, Locale.US).format(messageDate); } }
@Override protected void onDestroy() { super.onDestroy(); HXSDKHelper.getInstance().isVideoCalling = false; stopMonitor(); try { callHelper.setSurfaceView(null); cameraHelper.stopCapture(); oppositeSurface = null; cameraHelper = null; } catch (Exception e) { } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { finish(); return; } setContentView(R.layout.activity_video_call); HXSDKHelper.getInstance().isVideoCalling = true; getWindow() .addFlags( WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); callStateTextView = (TextView) findViewById(R.id.tv_call_state); comingBtnContainer = (LinearLayout) findViewById(R.id.ll_coming_call); rootContainer = (RelativeLayout) findViewById(R.id.root_layout); refuseBtn = (Button) findViewById(R.id.btn_refuse_call); answerBtn = (Button) findViewById(R.id.btn_answer_call); hangupBtn = (Button) findViewById(R.id.btn_hangup_call); muteImage = (ImageView) findViewById(R.id.iv_mute); handsFreeImage = (ImageView) findViewById(R.id.iv_handsfree); callStateTextView = (TextView) findViewById(R.id.tv_call_state); nickTextView = (TextView) findViewById(R.id.tv_nick); chronometer = (Chronometer) findViewById(R.id.chronometer); voiceContronlLayout = (LinearLayout) findViewById(R.id.ll_voice_control); btnsContainer = (RelativeLayout) findViewById(R.id.ll_btns); topContainer = (LinearLayout) findViewById(R.id.ll_top_container); bottomContainer = (LinearLayout) findViewById(R.id.ll_bottom_container); monitorTextView = (TextView) findViewById(R.id.tv_call_monitor); refuseBtn.setOnClickListener(this); answerBtn.setOnClickListener(this); hangupBtn.setOnClickListener(this); muteImage.setOnClickListener(this); handsFreeImage.setOnClickListener(this); rootContainer.setOnClickListener(this); msgid = UUID.randomUUID().toString(); // 获取通话是否为接收方向的 isInComingCall = getIntent().getBooleanExtra("isComingCall", false); username = getIntent().getStringExtra("username"); // 设置通话人 nickTextView.setText(username); // 显示本地图像的surfaceview localSurface = (SurfaceView) findViewById(R.id.local_surface); localSurface.setZOrderMediaOverlay(true); localSurface.setZOrderOnTop(true); localSurfaceHolder = localSurface.getHolder(); // 获取callHelper,cameraHelper callHelper = EMVideoCallHelper.getInstance(); cameraHelper = new CameraHelper(callHelper, localSurfaceHolder); // 显示对方图像的surfaceview oppositeSurface = (SurfaceView) findViewById(R.id.opposite_surface); oppositeSurfaceHolder = oppositeSurface.getHolder(); // 设置显示对方图像的surfaceview callHelper.setSurfaceView(oppositeSurface); localSurfaceHolder.addCallback(new LocalCallback()); oppositeSurfaceHolder.addCallback(new OppositeCallback()); // 设置通话监听 addCallStateListener(); if (!isInComingCall) { // 拨打电话 soundPool = new SoundPool(1, AudioManager.STREAM_RING, 0); outgoing = soundPool.load(this, R.raw.outgoing, 1); comingBtnContainer.setVisibility(View.INVISIBLE); hangupBtn.setVisibility(View.VISIBLE); String st = getResources().getString(R.string.Are_connected_to_each_other); callStateTextView.setText(st); handler.postDelayed( new Runnable() { public void run() { streamID = playMakeCallSounds(); } }, 300); } else { // 有电话进来 voiceContronlLayout.setVisibility(View.INVISIBLE); localSurface.setVisibility(View.INVISIBLE); Uri ringUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); audioManager.setMode(AudioManager.MODE_RINGTONE); audioManager.setSpeakerphoneOn(true); ringtone = RingtoneManager.getRingtone(this, ringUri); ringtone.play(); } }