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

作者:苹果园dog 时间:2021-11-30 02:53:04 

一、概述

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

支持用户注册和登录。

支持多人参会。

二、效果

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

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

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

Android 基于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;
}
}

来源:https://blog.csdn.net/u014556081/article/details/113178268

标签:Android,agora,视频会议
0
投稿

猜你喜欢

  • Flutter本地存储之基本的键值对存储详解

    2023-08-18 03:52:35
  • Android 自定义组件卫星菜单的实现

    2023-08-16 21:29:29
  • Java Mybatis框架多表操作与注解开发详解分析

    2023-12-04 17:15:14
  • Java将Exception信息转为String字符串的方法

    2022-12-01 08:39:35
  • java使用Dijkstra算法实现单源最短路径

    2022-02-16 23:13:26
  • C#中一些你可能没用过的调试窗口的方法

    2022-08-07 09:01:16
  • Spring注解@Configuration和@Component区别详解

    2022-11-05 02:04:18
  • 通过Java修改游戏存档的实现思路

    2023-07-30 20:10:55
  • c#语言使用Unity粒子系统制作手雷爆炸

    2021-10-11 11:13:46
  • C#中使用Split方法拆分字符串实例

    2023-04-15 11:14:16
  • C# 获取文件夹里所有文件名的详细代码

    2023-01-07 02:05:20
  • Android利用BitMap获得图片像素数据的方法

    2023-06-19 15:50:47
  • 详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

    2021-11-18 12:18:05
  • windows下java -jar 后台运行以及杀死后台进程的操作

    2022-02-09 17:28:13
  • C#中调用SAPI实现语音识别的2种方法

    2023-01-15 02:19:39
  • SpringBoot2 整合Ehcache组件,轻量级缓存管理的原理解析

    2022-02-07 22:04:34
  • 新手小白看过来学JAVA必过IO流File字节流字符流

    2022-09-22 07:42:02
  • 手把手教你搭建SpringMVC框架——最小化配置

    2022-02-16 02:38:16
  • Java中静态代码块、构造代码块、构造函数和普通代码块的区别

    2023-11-25 10:09:06
  • ListView 分页加载更新实例分享

    2021-09-05 06:53:11
  • asp之家 软件编程 m.aspxhome.com