Android 基于agora 开发视频会议的代码

 更新时间:2021年01月29日 09:34:45   作者:苹果园dog  
这篇文章主要介绍了Android 基于agora 开发视频会议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、概述

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

支持用户注册和登录。

支持多人参会。

二、效果

三、代码

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 开发视频会议的文章就介绍到这了,更多相关Android开发视频会议内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 常见android app加固厂商脱壳方法研究

    常见android app加固厂商脱壳方法研究

    这篇文章主要介绍了常见android app加固厂商脱壳方法研究,需要的朋友可以参考下
    2018-01-01
  • 详解Android中Intent对象与Intent Filter过滤匹配过程

    详解Android中Intent对象与Intent Filter过滤匹配过程

    这篇文章主要介绍了Android中Intent对象与Intent Filter过滤匹配过程,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Android面试Intent采用了什么设计模式解析

    Android面试Intent采用了什么设计模式解析

    这篇文章主要为大家介绍了Android面试Intent采用了什么设计模式解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Flutter使用JsBridge方式处理Webview与H5通信的方法

    Flutter使用JsBridge方式处理Webview与H5通信的方法

    这篇文章主要介绍了Flutter使用JsBridge方式处理Webview与H5通信的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Android RecyclerView的刷新分页的实现

    Android RecyclerView的刷新分页的实现

    这篇文章主要介绍了Android RecyclerView的刷新分页的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Android自定义个性化的Dialog示例

    Android自定义个性化的Dialog示例

    这篇文章主要介绍了Android自定义个性化的Dialog,结合实例形式分析了自定义Dialog的功能、样式、布局等相关操作技巧,需要的朋友可以参考下
    2017-02-02
  • Android自定义一个图形单点移动缩小的效果

    Android自定义一个图形单点移动缩小的效果

    本文通过实例代码给大家介绍了android 自定义图形单点移动缩小效果,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-08-08
  • 在Linux下通过命令行打包Android应用的方法

    在Linux下通过命令行打包Android应用的方法

    这篇文章主要介绍了在Linux下通过命令行打包Android应用的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 轻松实现安卓(Android)九宫格解锁

    轻松实现安卓(Android)九宫格解锁

    在平常使用手机的过程中,九宫格解锁是我们经常接触到的。常见的比如有锁屏中的九宫格,还有支付宝中的九宫格等。因为九宫格可以保护用户的隐私,所以它的应用面很广泛。那么今天我们就来自定义一个属于自己的九宫格吧!
    2016-08-08
  • Android SharedPreferences性能瓶颈解析

    Android SharedPreferences性能瓶颈解析

    这篇文章主要为大家介绍了Android SharedPreferences性能瓶颈解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论