Search in sources :

Example 1 with CameraHelper

use of com.juns.wechat.chat.utils.CameraHelper in project wechat by motianhuo.

the class VideoCallActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video_call);
    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);
    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();
    }
}
Also used : SoundPool(android.media.SoundPool) Uri(android.net.Uri) CameraHelper(com.juns.wechat.chat.utils.CameraHelper)

Aggregations

SoundPool (android.media.SoundPool)1 Uri (android.net.Uri)1 CameraHelper (com.juns.wechat.chat.utils.CameraHelper)1