Android 基于agora 视频会议开发

 

一、概述

参照官方demo,基于agora开发,输入会议号(频道)和显示名称 参会,可设置参会选项。

支持用户注册和登录。

支持多人参会。

二、效果

 

Android 基于agora 视频会议开发_第1张图片

 

 

Android 基于agora 视频会议开发_第2张图片

 

 

Android 基于agora 视频会议开发_第3张图片

 

Android 基于agora 视频会议开发_第4张图片

 

三、代码

复制代码

package io.agora.openvcall.ui;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Switch;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import io.agora.openvcall.R;
import io.agora.openvcall.model.ConstantApp;
import io.agora.openvcall.ui.mycode.common;

public class MainActivity extends BaseActivity {

    private final static Logger log = LoggerFactory.getLogger(MainActivity.class);
    private String username;
    private String password;
    private String name;
    private int user_id;
    private String show_name;

    private boolean videomute;
    private boolean audiomute;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActionBar ab = getSupportActionBar();
        if (ab != null) {
            ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
            ab.setCustomView(R.layout.ard_agora_actionbar);
        }
        initP();
    }

    private  void initP(){
        String show_name = common.getName();
        if(!TextUtils.isEmpty(show_name)){
            this.name=show_name;
            this.show_name=show_name;
            common.setName(show_name);
            EditText et = findViewById(R.id.user_name);
            et.setText(show_name);
        }
        String _username = common.getUsername();
        if(!TextUtils.isEmpty(_username)){
            username=_username;
        }

        String _password = common.getPassword();
        if(!TextUtils.isEmpty(_password)){
            password=_password;
        }

        user_id = common.getUser_id();

    }

    public void onBackPressed(View view) {
        onBackPressed();
    }

    @Override
    protected void initUIandEvent() {
        EditText v_channel = (EditText) findViewById(R.id.channel_name);

        v_channel.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
            }

        });

        String lastChannelName = vSettings().mChannelName;
        if (!TextUtils.isEmpty(lastChannelName)) {
            v_channel.setText(lastChannelName);
            v_channel.setSelection(lastChannelName.length());
        }

    }

    @Override
    protected void deInitUIandEvent() {
    }

    @Override
    public boolean onCreateOptionsMenu(final Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        switch (item.getItemId()) {
            case R.id.action_settings:
                forwardToSettings();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    public void onClickJoin(View view) {
        forwardToRoom();
    }

    public void forwardToRoom() {

        EditText v_channel = (EditText) findViewById(R.id.channel_name);
        String channel = v_channel.getText().toString();
        if(TextUtils.isEmpty(channel)){
            showLongToast("请输入会议号!");
            return;
        }
        vSettings().mChannelName = channel;

        Intent i = new Intent(MainActivity.this, CallActivity.class);
        i.putExtra(ConstantApp.ACTION_KEY_CHANNEL_NAME, channel);
        //i.putExtra(ConstantApp.ACTION_KEY_ENCRYPTION_KEY, encryption);
        i.putExtra(ConstantApp.ACTION_KEY_ENCRYPTION_MODE, getResources().getStringArray(R.array.encryption_mode_values)[vSettings().mEncryptionModeIndex]);

        i.putExtra("username",username);
        i.putExtra("password",password);
        i.putExtra("name",name);
        i.putExtra("user_id",user_id);
        i.putExtra("videomute",videomute);
        i.putExtra("audiomute",audiomute);
        EditText show_name_E = (EditText) findViewById(R.id.user_name);
        String _show_name = show_name_E.getText().toString();
        i.putExtra("show_name",_show_name);
        startActivity(i);
        finish();
    }

    public void forwardToSettings() {
        Intent i = new Intent(this, io.agora.openvcall.ui.SettingsActivity.class);

        startActivity(i);
    }


    @Override
    public void permissionGranted() {

    }


    public void onSwitch_audio(View view) {
        boolean isChecked = ((Switch) view).isChecked();
        this.audiomute=!isChecked;
    }

    public void onSwitch_video(View view) {
        boolean isChecked = ((Switch) view).isChecked();
        this.videomute=!isChecked;
    }
}

 Android 基于agora 视频会议开发_第5张图片Android 基于agora 视频会议开发_第6张图片

你可能感兴趣的:(Android,android)