private void getContactList() { contactList.clear(); Map<String, EaseUser> users = DemoHelper.getInstance().getContactList(); Iterator<Entry<String, EaseUser>> iterator = users.entrySet().iterator(); while (iterator.hasNext()) { Entry<String, EaseUser> entry = iterator.next(); if (!entry.getKey().equals(Constant.NEW_FRIENDS_USERNAME) && !entry.getKey().equals(Constant.GROUP_USERNAME) && !entry.getKey().equals(Constant.CHAT_ROOM) && !entry.getKey().equals(Constant.CHAT_ROBOT)) contactList.add(entry.getValue()); } // 排序 Collections.sort( contactList, new Comparator<EaseUser>() { @Override public int compare(EaseUser lhs, EaseUser rhs) { if (lhs.getInitialLetter().equals(rhs.getInitialLetter())) { return lhs.getNick().compareTo(rhs.getNick()); } else { if ("#".equals(lhs.getInitialLetter())) { return 1; } else if ("#".equals(rhs.getInitialLetter())) { return -1; } return lhs.getInitialLetter().compareTo(rhs.getInitialLetter()); } } }); }
@Override protected void onDestroy() { DemoHelper.getInstance().isVideoCalling = false; stopMonitor(); try { callHelper.setSurfaceView(null); cameraHelper.stopCapture(); oppositeSurface = null; cameraHelper = null; } catch (Exception e) { } super.onDestroy(); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { finish(); return; } setContentView(R.layout.em_activity_video_call); DemoHelper.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); netwrokStatusVeiw = (TextView) findViewById(R.id.tv_network_status); 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.em_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(); } }