MAD 的全称是 Modern Android Development , 它是一系列技术栈和工具链的集合,涵盖了从编程语言到开发框架等各个环节。![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/816cd653f4984adf87697... 可以随着 ViewModel 的销毁及时终止过期的异步任务,让 ViewModel 更安全地作为数据层与表现层之间的桥梁使用。```kotlinviewModelScope.launch { //监听数据层的数据 repo.getMessage().collect { ...
> Android 诞生已久,其开发方式保持着高频更迭,相较于早期的开发方式已大不相同,尤其是近几年 Google 热切推崇的 MAD 开发技术。> > **其实很多开发者已经有意或无意地正在使用这门技术,借着 2023 开年探讨技术趋... 有的时候 Google 会将其翻译成`现代安卓开发`,有的时候又翻译成`新式安卓开发`,个人觉得前者的翻译虽然激进、倒也贴切。下面按照 MAD 的构成要点逐步展开,帮助大家快速了解 MAD 的技术理念。如果大家对其中的语言...
安卓端的摄像头采集有两种方案,一种是使用比较传统的 Camera1Capturer 类,另一种是使用比较新的 Camera2Capturer 类。接下来,分别介绍一下。之所以会出现 Camera1Capturer 类和 Camera2Capturer 类两套不同的API方案,主要是因为谷歌在开发 Android 5.0 时,对摄像头API进行了全新的颠覆性设计,新增了全新的 Camera V2 接口,这些API不仅大幅提高了 Android 系统拍照的功能,还能支持 RAW 照片输出,甚至允许程序调整相机的对焦模式...
主持人就要把想说话的参会人不停地“挪”到这 50 个麦位之中。为了让主持人知道谁想发言,还需要引入一些沟通机制,整体操作成本非常高。RTC 为什么会限制拥有上麦能力的用户数量?如果不限制可以上麦用户的数量,发布... 我们引入了一系列的相机技术,包括自动对焦、自动曝光这些比较基本的相机技术。RTC 场景和其他场景有个不一样的地方,画面中一般都是人像占据主体,而当画面中人像占据主体时,如果不做特别处理,由于摄像头本身是“平均...
停止录制,会触发 onFileRecordingStoped 回调消息; 录制出现错误,会触发 onFileRecordingError:message: 回调消息。 VeLiveCameraDevice objectivec @interface VeLiveCameraDevice : NSObject相机设备管理对象。... 是否支持自动对焦。 返回值 YES:支持; NO:不支持。 注意 需要在调用 startVideoCapture: 启动相机采集后,调用本方法。 enableAutoFocus:objectivec - (int)enableAutoFocus:(BOOL)enable;开启/关闭自动对焦功能。...
传入参数 参数名 类型 说明 enable boolean 是否开启自动对焦,默认为 true。true:开启; false:关闭。 返回值 0:开启/关闭成功; ≠0:开启/关闭失败。 注意 需要在调用 startVideoCapture 启动相机采集后,调用本方... releasejava void release()停止采集和推流,并销毁推流器。通常在调用 stopPush 结束推流后调用此方法进行清理。 setObserverjava void setObserver(VeLivePusherObserver observer)设置推流器回调,通过设置回调...
观众需要关闭麦克风、相机 if (isHost) { mRTCVideo.startVideoCapture(); mRTCVideo.startAudioCapture(); // 设置本地渲染和编码镜像 mRTCVideo.setLocalVideoMirrorType(Mirror... 停止媒体流发布到当前所在房间中 unpublishStream 开始跨房间转发媒体流 startForwardStreamToRooms 停止跨房间转发媒体流 stopForwardStreamToRooms 设置本地视频渲染 setLocalVideoCanvas 设置远端视频渲染 setR...
主持人就要把想说话的参会人不停地“挪”到这 50 个麦位之中。为了让主持人知道谁想发言,还需要引入一些沟通机制,整体操作成本非常高。RTC 为什么会限制拥有上麦能力的用户数量?如果不限制可以上麦用户的数量,发布... 我们引入了一系列的相机技术,包括自动对焦、自动曝光这些比较基本的相机技术。RTC 场景和其他场景有个不一样的地方,画面中一般都是人像占据主体,而当画面中人像占据主体时,如果不做特别处理,由于摄像头本身是“平均...
主持人就要把想说话的参会人不停地“挪”到这 50 个麦位之中。为了让主持人知道谁想发言,还需要引入一些沟通机制,整体操作成本非常高。RTC 为什么会限制拥有上麦能力的用户数量?如果不限制可以上麦用户的数量,发布... 我们引入了一系列的相机技术,包括自动对焦、自动曝光这些比较基本的相机技术。RTC 场景和其他场景有个不一样的地方,画面中一般都是人像占据主体,而当画面中人像占据主体时,如果不做特别处理,由于摄像头本身是“平均...
相机控制在使用推流引擎自带的摄像头采集时,我们提供了多种相机控制能力。代码示例如下所示: 闪光灯 objectivec // 是否支持闪光灯if (self.livePusher.getCameraDevice.isTorchSupported) { // 开启闪光灯 [self.... 自动对焦 objectivec // 开启自动对焦[self.livePusher.getCameraDevice enableAutoFocus:YES];// 关闭自动对焦[self.livePusher.getCameraDevice enableAutoFocus:NO]; 手动对焦 objectivec // 设置手动对焦焦点...
停止音频采集。 switchVideoCapture 切换视频采集类型。 switchAudioCapture 切换音频采集类型。 getCurrentVideoCaptureType 获取当前视频采集类型。 getCurrentAudioCaptureType 获取当前音频采集类型。 updateCustomImage 自定义静态图,适用于静态图推流采集类型。 getCameraDevice 获取相机设备管理对象 VeLiveCameraDevice。通过设备管理,您可以使用以下功能。控制闪光灯开关 设置摄像头缩放比例 设置自动对焦 setVideoEnc...
setVideoMirror:enable: 开启/关闭镜像。 startPush: 开始推流。 startPushWithUrls: 开始推流,支持备用推流地址。 removeAudioFrameListener: 移除已添加的音频帧监听回调。 isPushing 当前是否正在推流中,可用来... getCameraDevice 获取相机设备管理对象 VeLiveCameraDevice。通过设备管理,您可以使用以下功能。控制闪光灯开关 设置摄像头缩放比例 设置自动对焦 getAudioDevice 获取音频模块管理对象。 sendSeiMessage:value:...
参看 Android / iOS 的 API 文档了解对应操作系统下的音量类型配置情况。参看通话音量与媒体音量了解更多相关信息。你可以调用 SetAudioScenario 设置音频场景。如果以下音频场景类型无法满足你的业务需要,请联系技... 自动设置采集参数。SDK在开启采集时根据服务端下发的采集配置结合编码参数设置最佳采集参数。 KManual 1 手动设置采集参数,包括采集分辨率、帧率。 KAutoPerformance 2 采集参数与编码参数一致,即在 SetVideoEncod...