
Android技术分享
文章平均质量分 81
anyRTC
这个作者很懒,什么都没留下…
展开
-
Android技术分享 | 一行代码实现屏幕、声音采集
本文将介绍新增的功能,还是只需一行代码即可实现屏幕、声音采集。原创 2023-04-13 12:09:34 · 1159 阅读 · 0 评论 -
Android技术分享| Bugly 应用升级自定义UI
使用这种方式虽然比第一种稍微复杂了一点点🤏,但是可定制的范围却大了很多。弹窗界面的绘制与生命周期均由自己维护,Bugly 负责下载时回调与事件上报,并提供相关接口控制任务下载,获取任务状态等。原创 2022-10-13 11:22:19 · 1182 阅读 · 0 评论 -
Android技术分享| 视频通话开发流程(二)
以上就是多人呼叫的大概流程,其中需要注意的地方就是,收到呼叫或者发起呼叫都要先加入 RTM 频道,RTM频道的ID由主叫创建,被叫在 RemoteInvitation 中解析。挂断需离开RTM频道。基于上述流程,开发者可以根据该流程并参考DEMO快速实现多人音视频呼叫通话。原创 2022-09-07 10:24:20 · 1783 阅读 · 1 评论 -
Android技术分享| Activity 过渡动画 — 让切换更加炫酷
在 android5.0 以上版本中,google 为我们提供了几种 activity 切换的过渡动画,目的是为了让 activity 切换转场更加美观,而在 android5.0 之前的 activity 切换显得生硬。虽然可以自定义给 activity 增添动画效果,但是效果也不尽如意。而 androi5.x 提供的切换动画就显得非常自然,而且容易使用。原创 2022-09-06 11:46:00 · 5344 阅读 · 0 评论 -
Android技术分享|【Android踩坑】怀疑人生,主线程修改UI也会崩溃?
一眼看上去似乎是比较常见的子线程修改UI的问题。并且是在Toast上面报出的,常识告诉我Toast在子线程弹出是会报错,但是应该是提示Looper没有生成的错,而不应该是上面所报出的错误。那么会不会是生成Looper以后报的错的?至此,真相终于找出来了。相比较发生这个bug 的原因,解决方案就显得非常简单了。...原创 2022-08-12 11:20:06 · 366 阅读 · 0 评论 -
Android技术分享| 一对一音视频呼叫邀请开发流程(一)
此文档基于 Android RTM、RTC SDK,其他平台API 基本一致,可供参考。 RTM:用于搭建呼叫的一整套流程、信令交互 RTC:用于呼叫流程通了之后的音视频交互由于呼叫和音视频是完全分开的两个 sdk,所以在开发的时候需要注意的情况很多。.........原创 2022-08-03 12:37:04 · 1323 阅读 · 0 评论 -
Android技术分享| 自定义LayoutManager
我们在自定义ViewGroup中,想要显示子View,无非就三件事:其实在自定义LayoutManager中,在流程上也是差不多的,我们需要重写onLayoutChildren方法,这个方法会在初始化或者Adapter数据集更新时回调,在这方法里面,需要做以下事情:再看下相关参数:如果去掉itemView的缩放,透明度动画,那么效果是这样的:看到的效果与一样,但本篇并不使用,而是通过自定义来实现。索引值为0的view 一次完全滑出屏幕所需要的移动距离,定位为;非索引值为0的view滑出屏幕所需要移动的距离为原创 2022-06-14 10:52:34 · 1176 阅读 · 0 评论 -
Android技术分享| 利用Kotlin协程,多任务并行,测试RTM SDK性能
使用协程写法,测试多个Client从登录到成功的案例原创 2022-06-01 11:03:06 · 1013 阅读 · 0 评论 -
Android技术分享| Context浅析
【Android】Context浅析类继承图我们来看下关于 Context 的类继承图,我们通过查看源码得知,Context 是一个抽象类,所以它肯定有其实现类,查阅得知它的实现类为 ContextWrapper 和 ContextImpl ,所以它的继承图如下:以上的 Context 类继承关系清晰简洁,可以得知,Application 、 Service 、Activity 都是继承的 Context 类,所以从这里我们可以得知:Context 数量 = Activity 数量 + Serv原创 2022-05-19 10:43:56 · 367 阅读 · 0 评论 -
Android技术分享| Android 中部分内存泄漏示例及解决方案
简单介绍内存泄漏&内存抖动内存泄漏:Memory leak, 是一种资源泄漏,主因是计算机程序对存储器配置管理失当,失去对一段已分配内存空间的控制,造成程序继续占用已经不再使用的内存空间,或是存储器所存储之对象无法透过执行代码而访问,令内存资源空耗。简单来说,内存泄漏 是指无法正确回收已经不再使用的内存举例:请注意以下的例子是虚构的在此例中的应用程序是一个简单软件的一小部分,用来控制电梯的运作。此部分软件当乘客在电梯内按下一楼层的按钮时运行。当按下按钮时:要求使用存储器,用作记住原创 2022-04-12 10:31:35 · 4116 阅读 · 0 评论 -
Android技术分享| 安卓3行代码,实现整套音视频通话功能
介绍音视频相关内容对于很多开发者来说,平时接触的比较少。虽然市面上做音视频服务的厂家很多,SDK 大都相对成熟,API 也大同小异,但集成起来总归是需要花费大量时间了解,调试。所以,有没有几行代码就能实现相关功能,不需要关心 SDK 其他配置的解决方案。答案是有~今天给大家带来的就是针对 呼叫,点对点/多人音视频场景下的组件封装。该组件有如下特点lib形式集成后,仅需3行代码即可实现音视频通话无需关心任何权限处理无需编写界面代码核心封装类很少,简单易懂完全开源,自己可修改扩展本组件基于原创 2022-04-06 11:37:46 · 3924 阅读 · 3 评论 -
Android技术分享|【自定义View】实现Material Design的Loading效果
预期效果实现思路分析一下这个动画,效果应该是通过两个动画来实现的。一个不停变速伸缩的扇形动画一个固定速度的旋转动画扇形可以通过canvas#drawArc来实现旋转动画可以用setMatrix实现圆角背景可以通过canvas#drawRoundRect实现还需要一个计时器来实现动画效果这个View最好能够更方便的修改样式,所以需要定义一个declare-styleable,方便通过布局来修改属性。这些元素应该包括:最底层的卡片颜色卡片内变局内部长条的颜色长条的粗细长条原创 2022-03-24 10:12:18 · 4023 阅读 · 0 评论 -
Android技术分享| anyLive 开源项目
简介 anyLive 是开源的推拉流项目,本项目采用跨平台架构设计,一套代码支持Android、iOS、Windows、Mac、Ubuntu等平台。本文主要介绍 anyLive Android 平台的实现。此项目中包含对 JNI 的使用,WebRTC Native 的实践,音视频编解码的相关实现,如果有兴趣,可以阅读源码,点个Star🌟。功能特性推流拉流屏幕共享图片推流基于GPUImage的实时滤镜音视频采集编解码方面基于 WebRTC-93、 ffmpeg4.3音视频自采集自渲染原创 2022-03-09 11:50:20 · 4840 阅读 · 0 评论 -
Android技术分享| 【Android 自定义View】多人视频通话控件
【Android 自定义View】多人视频通话控件*以上图片截自微信等待中界面等待中界面上图是微信多人视频通话时未接通的界面状态,可见每个人的 View 中大致需包含了以下元素。头像昵称Loading View视频 View音频状态 icon所以,我们先写好每个人的布局。如下<merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andr原创 2022-03-01 10:13:51 · 739 阅读 · 0 评论 -
Android技术分享| 自定义View实现使用更方便的SeekBar
前言Android中自带的SeekBar个人感觉用起来很麻烦,调整一些颜色之类的需要单独写一个XML文件,内容感觉也很啰嗦。刚好我们的白板Demo开发中需要用到SeekBar,所以干脆实现了一个满足基本功能的SeekBar,支持在xml布局中指定各种颜色属性,也支持代码动态设置颜色。用起来更顺心一些。SeekBar的代码请查看Github地址:白板Demo,Demo地址请:点击这里即拿即用,非常方便;p(记得将res/values/styles.xml中的属性一并复制走)效果实现由于不涉及到动原创 2022-01-18 11:04:18 · 4465 阅读 · 0 评论 -
Android技术分享| Android WebRTC 对 AudioRecord 的使用
AudioRecord 是 Android 基于原始PCM音频数据录制的类,WebRCT 对其封装的代码位置位于org/webrtc/audio/WebRtcAudioRecord.java,接下来我们学习一下 AudioRecord 是如何创建启动,读取音频采集数据以及销毁等功能的。创建和初始化 private int initRecording(int sampleRate, int channels) { Logging.d(TAG, "initRecording(sampleRate=原创 2022-01-12 12:08:59 · 2898 阅读 · 0 评论 -
Android技术分享| 【自习室】自定义View代替通知动画(完)
在之前的文章中我们实现了自定义View需要的基本功能,本篇中我们通过 Timer 实现动画功能。我偷偷修改了一些数据结构,一会在下面贴出来。最终效果图:动画是通过 Timer 每17毫秒调用 View#post 来调用主线程更新一帧。定义一个 interpolator 使动画效果更自然(逐渐减速的效果)。首先定义一个存储执行动画相关的数据结构:private data class AnimInfo( val block: (percentage: Float) -> Unit,// 每帧原创 2021-12-16 10:36:59 · 3821 阅读 · 0 评论 -
Android技术分享| ViewPager2离屏加载,实现抖音上下视频滑动
要实现类似抖音上下滑动小视频的丝滑效果,需要有一个预加载的功能。所谓的预加载,就是需要在显示当前页的情况下,提前将当前页后面的内容加载,以保证用户滑动到下一个视频的时候,可以减少等待时间,在正常网速下,可以做到丝滑浏览。在 ViewPager2 第四个版本中加入了一个新功能:setOffscreenPageLimitsetOffscreenPageLimit(int limit)参数:limit 有多少页面将在任一侧保持在屏幕外。有效值为 >= 1 和 默认值 -1说明:设置应保留在当前原创 2021-12-01 11:36:06 · 6443 阅读 · 0 评论 -
Android技术分享| 【自习室】自定义View代替通知动画(2)
上篇文章我们完成了一条信息的测量和绘制,本篇我们来实现消息的平移动画效果图如下:在自定义View中,通常我比较喜欢额外创建一个Bitmap和一个Canvas来绘制动画效果。大家可以根据自己喜好修改,实现的方式有很多。首先在首次测量的时候我们创建Canvas、Matrix、Bitmap,如果你的实际使用场景中,View的大小可能会更改,这里也可以每次测量都重新创建。首先声明3个变量:private lateinit var mBufferBitmap: Bitmapprivate lateini原创 2021-11-11 12:07:33 · 3087 阅读 · 0 评论 -
Android技术分享| Android WebRTC 开启H264软件编解码教程
Android WebRTC 软件编解码基于 openH264 和 FFMpeg,但是编译时默认是不开启的,想要开启需要对代码做一定的增加修改,下面我将所有修改步骤一一列出。本文基于webRTC 版本:(https://chromium.googlesource.com/external/webrtc/+/branch-heads/4515)设备:Mac虚拟机:Parallels Desktop + Ubuntu 18.4开始一:修改 rtc_use_h264 返回值路径:webrtc/src原创 2021-11-03 15:08:03 · 3177 阅读 · 4 评论 -
Android技术分享| 超简单!给 Android WebRTC增加美颜滤镜功能
视频采集渲染流程分析在增加滤镜功能之前,需要对 WebRTC 视频采集的流程有一定了解。WebRTC 中定义了 VideoCapture 接口类,其中定义了相机的初始化,预览,停止预览销毁等操作。实现类是 CameraCapture,并且封装了Camera1Capture、Camera2Capture 两个子类,甚至还有屏幕共享。WebRTC 中开始视频采集非常的简单:val videoCapture = createVideoCapture()videoSource = videoCapt.原创 2021-10-19 13:13:12 · 1377 阅读 · 2 评论 -
Android技术分享| 一行代码实现安卓屏幕采集编码
越来越多的App需要共享手机屏幕给他人观看,特别是在线教育行业。Android 从5.0开始支持了MediaProjection,利用MediaProjection ,可以实现截屏录屏功能。本库对屏幕采集编码进行了封装,简单的调用即可实现MediaProjection权限申请,H264硬编码,错误处理等功能。特点适配安卓高版本使用 MediaCodec 异步硬编码编码信息可配置通知栏显示链式调用使用ScreenShareKit.init(this) .onH264原创 2021-09-23 11:24:22 · 1503 阅读 · 0 评论 -
Android技术分享| 开源Demo any自习室布局架构
需求分析布局分为横竖屏涉及到视频窗口的大小、位置切换通过观察需求原型图可得知,横竖屏切换可以简单分成7块区域4个视频窗口1个title,显示「XX号房间」1个ViewGroup,放置「头像,头像,头像,N个观众」另1个ViewGroup,放置聊天窗口相关横竖屏切一开始我的思路是完全不使用系统的横竖屏切换,使用rotation来切换横竖屏,切换过程添加一个转换动画,如下图所示: (请无视中间那个小眼睛) 但因为横屏之后依然有聊天功能,不调用系统的旋转,输入法依然还是竖屏原创 2021-09-07 12:04:19 · 415 阅读 · 0 评论 -
Android技术分享| 自定义ViewGroup实现直播间大小屏无缝切换
源代码地址:请点击这里需求两种显示方式:主播全屏,其他游客悬浮在右侧。下面简称大小屏模式。所有人等分屏幕。下面简称等分模式。分析最多4人连麦,明确这点方便定制坐标算法。自定义的 ViewGroup 最好分别提供等分模式和大小屏模式的边距设置接口,便于修改。SDK 自己管理了 TextureView 的绘制和测量,所以 ViewGroup 需要复写 onMeasure 方法以通知 TextureView 测量和绘制。一个计算 0.0f ~ 1.0f 逐渐减速的函数,给动画过程原创 2021-08-17 10:53:48 · 459 阅读 · 0 评论