最近项目中有需要语音、视频通话需求,看到这个像环信、融云等SDK都有具体Demo实现,但咋的领导对腾讯情有独钟啊,IM要用腾讯云IM,不妙的是腾讯云IM并不包含有音视频通话都要自己实现,没办法深入了解腾讯云产品后,决定自己基于腾讯云实时音视频做去语音、视频通话功能。在这里把实现过程记录下为以后用到便于查阅,另一方面也给有需要的人提供一个思路,让大家少走弯路,有可能我的实现的方法不是最好,但是这或许是一个可行的方案,大家不喜勿喷。基于腾讯云实时音视频SDK 6.5.7272版本,腾讯DEMO下载地址:链接: https://pan.baidu.com/s/1iJsVO3KBuhEiIUZcJPyv3g 提取码: ueey

一、实现效果

二、实现思路

我把实现思路拆分为了两步:1、视频通话Activity的最小化。 2、视频通话悬浮框的开启

具体思路是这样的:当用户点击左上角最小化按钮的时候,最小化视频通话Activity(这时Activity处于后台状态),于此同时开启悬浮框,新建一个新的ViewGroup将全局Constents.mVideoViewLayout中用户选中的最大View动态添加到悬浮框里面去,监听悬浮框的触摸事件,让悬浮框可以拖拽移动;自定义点击事件,如果用户点击了悬浮框,则移除悬浮框然后重新调起我们在后台的视频通话Activity。

1.Activity是如何实现最小化的?

Activity本身自带了一个moveTaskToBack(boolean nonRoot),我们要实现最小化只需要调用moveTaskToBack(true)传入一个true值就可以了,但是这里有一个前提,就是需要设置Activity的启动模式为singleInstance模式,两步搞定。(注:activity最小化后重新从后台回到前台会回调onRestart()方法)

@Override

public boolean moveTaskToBack(boolean nonRoot) {

return super.moveTaskToBack(nonRoot);

}

2.悬浮框是如何开启的?

悬浮框的实现方法最好写在Service里面,将悬浮框的开启关闭与服务Service的绑定解绑所关联起来,开启服务即相当于开启我们的悬浮框,解绑服务则相当于关闭关闭的悬浮框,以此来达到更好的控制效果。

a. 首先我们声明一个服务类,取名为FloatVideoWindowService:

public class FloatVideoWindowService extends Service {

@Nullable

@Override

public IBinder onBind(Intent intent) {

return new MyBinder();

}

public class MyBinder extends Binder {

public FloatVideoWindowService getService() {

return FloatVideoWindowService.this;

}

}

@Override

public void onCreate() {

super.onCreate();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

return super.onStartCommand(intent, flags, startId);

}

@Override

public void onDestroy() {

super.onDestroy();

}

}

b. 为悬浮框建立一个布局文件float_video_window_layout,悬浮框大小我这里固定为长80dp,高120dp,id为small_size_preview的RelativeLayout主要是一个容器,可以动态的添加view到里面去

android:

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@color/colorComBg"

android:orientation="vertical">

android:

android:layout_width="80dp"

android:layout_height="120dp"

android:descendantFocusability="blocksDescendants"

android:orientation="vertical" />

android 视频通话框架,Android基于腾讯云实时音视频仿微信视频通话最小化悬浮相关推荐

  1. android修改视频聊天帧率,Android基于腾讯云实时音视频仿微信视频通话最小化悬浮(4)...

    Activity中的操作 现在我们将思路了捋一下,假设现在我正在进行视频通话,点击视频最小化按钮,我们应该按顺序执行如下步骤:应该是会出现个悬浮框.我们用mServiceBound保存Service注 ...

  2. Android基于腾讯云实时音视频实现类似微信视频通话最小化悬浮

    最近项目中有需要语音.视频通话需求,看到这个像环信.融云等SDK都有具体Demo实现,但咋的领导对腾讯情有独钟啊,IM要用腾讯云IM,不妙的是腾讯云IM并不包含有音视频通话都要自己实现,没办法深入了解 ...

  3. 基于腾讯云实时音视频(TRTC)的web端 多人人脸识别小游戏

    场景介绍 一个双人视频互动的小游戏, 连接后,可以实时看到对方的视频情况, 根据对方的视频情况实时进行游戏操作 摇头进行控制挡板 不让球掉落. 眨眼发球. 准备工作 获取应用 SDKAppID 和 应 ...

  4. 一个基于腾讯云实时音视频的SDKdemo

    哈咯大家好,这里是码农的搬运工!! 这几天也是一时兴起,想到腾讯云的实时音视频的SDK来进行一个真正的视频通话,也是编写了一个小小的demo 话不多说,整活,开干!!! 首先哈,我们评估下腾讯云的这个 ...

  5. 基于腾讯云实时音视频Web API之Demo运行

    曾针对一个视频通话项目需要借助到腾讯云对应的Web API 实现,众所周知,了解其用法最好的途径就是先运行Demo程序,但对于不具备Vue基础的人来说,运行官网Demo是一件困难的事.下面记录一下适合 ...

  6. 腾讯云实时音视频带你玩转语音聊天室

    声音交友,在线K歌,自由上麦,声波传达-- 从最初单一的一对一语音通话,到后来火爆的多人语音群聊,再到现在聚集了一批"音控"的纯语音聊天室,当代年轻人的社交APP里最不可少的功能就 ...

  7. 腾讯云实时音视频( TRTC)通话质量监控仪表盘

    腾讯云实时音视频(Tencent RTC,简称 TRTC)是一项低延时.高并发.稳定可靠的音视频 PaaS 云服务,主要提供多人实时通话以及低延时互动直播能力.TRTC 将腾讯 21 年来在网络与音视 ...

  8. 新知实验室 腾讯云实时音视频产品体验

    新知实验室 腾讯云实时音视频TRTC产品体验 接入腾讯云实时音视频 TRTC基本实现逻辑 创建实时音视频应用 获取APPID 下载含UI的集成方案代码 方案中重要代码结构简析 index.vue co ...

  9. 新知实验室 腾讯云实时音视频 RTC WEB端初识

    这里写目录标题 前言 初识产品 产品介绍 基础功能 高级功能 扩展功能 快速上手 位置 创建 源码下载 源码文档 写入密钥 使用 调试区域 前言 当前时代是信息行业飞速发展的时代,万物都在朝物联网方向 ...

  10. 腾讯云实时音视频技术发展简史 — 从编解码器容错优化到云端决策系统

    从2016开始,腾讯启动将传统的音视频解决方案逐步部署在腾讯云上,从传统的FFmpeg.OBS.RTMP开始提供了第一代直播服务.随后演进到以QUIC与HLS低延迟直播.最后在网络拥塞算法与Codec ...

最新文章

  1. 梅尔频率倒谱系数(MFCC)资源
  2. leetcode算法题--Integer to Roman
  3. SCOPE_IDENTITY 和 @@IDENTITY 的区别
  4. Perl sendmail
  5. Android插u盘自动执行,android tv box ---- 插入u盘直接播放指定文件夹中的视频
  6. 女性最常说的5大谎言:
  7. 【转】Java和C++的区别有哪些?
  8. 我有一张1996年版一元钱,值多少钱?
  9. 《原力计划【第二季】》第1周周榜揭晓!!!
  10. vb以类名或窗口标题查找句柄并关闭
  11. 美国python网课免费-去不了USA?那又怎样?美国名校网课免费学!
  12. python哪里下载-python从哪下载
  13. 极光尔沃:太空3D打印机首次亮相 航天领域应用潜力巨大
  14. CentOS 6忘记密码解决方法(三分钟超快o)
  15. miui patchrom项目开发详细教程(Being updated)
  16. 遗传算法流程概述与简单实例认知
  17. 自己搜的算法题2.0
  18. !和!!的区别和用法
  19. LeetCode 1348. 推文计数
  20. 如何测算BMI指数(Python)

热门文章

  1. 一行 Python 能实现什么丧心病狂的功能?
  2. python画图像_使用python绘制SDSS图像
  3. js:Cannot use import statement outside a module
  4. VALUES LESS THAN value must be strictly increasing for each partition,MySQL分区需要注意的坑
  5. 如何使用 Windows 电脑向 Android 设备安装 apk 应用
  6. 9367: 【动态规划】雷涛的小猫
  7. 使用Ps制作飞机路过的动画
  8. 《大道至简-软件工程实践者的思想》读书笔记
  9. Windows10专业版系统“本地组策略编辑器”丢失解决方案
  10. Codeforces - Array Queries