> Android 诞生已久,其开发方式保持着高频更迭,相较于早期的开发方式已大不相同,尤其是近几年 Google 热切推崇的 MAD 开发技术。> > **其实很多开发者已经有意或无意地正在使用这门技术,借着 2023 开年探讨技术趋... 旨在指导我们利用官方推出的各项技术来进行高效的 App 开发。有的时候 Google 会将其翻译成`现代安卓开发`,有的时候又翻译成`新式安卓开发`,个人觉得前者的翻译虽然激进、倒也贴切。下面按照 MAD 的构成要点逐步...
MAD 的全称是 Modern Android Development , 它是一系列技术栈和工具链的集合,涵盖了从编程语言到开发框架等各个环节。![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/816cd653f4984adf87697... putInt("layoutId", layoutId()) })}.let { fragment -> supportFragmentManager.beginTransaction() .apply { if (needAdd) add(R.id.fragment_container, fragment, tag) e...
Compose 不止能用于 Android 应用开发,借助其分层的架构设计以及 Kotlin 的跨平台优势,也是一个极具潜力的 Kotlin 跨平台框架。本文让我们从 Compose Runtime 的视角出发,看看 Compose 实现跨平台开发的基本原理。... 我们创建两个 Android View 对应的 Composable,TextView 和 LinearLayout:```kotlin@Composablefun TextView( text: String, onClick: () -> Unit = {}) { val context = localContext.current ...
本文介绍如何创建一个 IMCloud Android 项目,实现即时通讯功能。你也可以通过阅读代码,了解即时通讯的最佳实践。 前提条件 获取 AppID 和 Token,你可以通过阅读密钥说明了解更多 Token 相关信息 JDK 1.8+ Androi... 或者本地依赖手动下载 IMSDK AAR 导入到项目中。 远程依赖方式开发者可以修改 gradle 依赖配置,依赖已经发布到 maven 仓库的 IMSDK。 项目切换为 project 视图,修改项目中仓库配置添加 maven 仓库,示例代码如下。 ...
如果你希望从此前版本的 Android 客户端 SDK 升级到最新的客户端 SDK,请在工程文件中,替换最新的客户端 SDK 文件,并参考本文完成 API,回调,参数类型等的替换。 升级过程中,你可能需要参考历史版本文档归档。 3.58类... 成员变量变更 CDN 推流 MixedStreamLayoutRegionConfig 转推直播单个用户画面由设置相对于整体画面的归一化比例变更为可设置像素绝对值。 3.54该版本为全部 API 增加返回值,通过返回值可以明确发现失败的 API 调用...
本文介绍 Android 观播 SDK 进阶功能的接入方法。您可以根据实际业务需求,按需实现复杂功能。 前提条件您已完成集成 Android 观播 SDK 的前 5 步。 如需定制视频画面填充模式,确保您已完成基础功能接入。如需实现本... (TvuLivePlayerLayoutBinding binding, LanguageManager languageManager) { } ...}获取到的 ViewBinding 实例 UI 结构如下所示。 Plain rootContainer(FrameLayout)-- contentContainer(LinearLayout) -...
[canvas.view mas_remakeConstraints:^(MASConstraintMaker *make) { make.center.equalTo(self.view.window); make.size.mas_equalTo(CGSizeMake(100, 200));}];Android 视频流 Android 版本不能低于 Andro... 需要布局在 layout_float_window 中。 Java private View createFloatWindowView(Context context, @LayoutRes int floatWindowLayoutResId) { return LayoutInflater.from(mContext).inflate(R.layout.layout...
Compose 不止能用于 Android 应用开发,借助其分层的架构设计以及 Kotlin 的跨平台优势,也是一个极具潜力的 Kotlin 跨平台框架。本文让我们从 Compose Runtime 的视角出发,看看 Compose 实现跨平台开发的基本原理。... 我们创建两个 Android View 对应的 Composable,TextView 和 LinearLayout:```kotlin@Composablefun TextView( text: String, onClick: () -> Unit = {}) { val context = localContext.current ...
AudioMixingType 类型: enum 混音播放类型 成员 属性 值 描述 kAudioMixingTypePlayout 0 仅本地播放 kAudioMixingTypePublish 1 仅远端播放 kAudioMixingTypePlayoutAndPublish 2 本地和远端同时播放 MediaPlay... 如果输入数值不能被 10 整除,将自动向上取整。例如传入 52,实际间隔为 60 ms。 interval <= 0 时,不会触发回调。 sync_progress_to_record_frame 类型: boolean 在采集音频数据时,附带本地混音文件播放进度的时...
成员变量变更 CDN 推流 MixedStreamLayoutRegionConfig 转推直播单个用户画面由设置相对于整体画面的归一化比例变更为可设置像素绝对值。 类型名称变更 消息 USER_ONLINE_STATUS 名称变更为 UserOnlineStatus。 错... (void* androidContext, void* jnienv, const char* licensePath) = 0; virtual void setAlgoModelPath(const char* modelPath) = 0; virtual int initCVResource(const char* license_file_path, const char* ...
play_count > 1: 播放 play_count 次 type 类型: AudioMixingType undefined 混音播放类型 AudioMixingType 类型: enum 混音播放类型 成员 属性 值 描述 PLAYOUT 0 仅本地播放 PUBLISH 1 仅发送到远端 PLAYOU... lineReason 类型: enum 远端用户离开房间的原因 成员 属性 值 描述 QUIT 0 远端用户调用 leaveRoom 主动退出房间。 DROPPED 1 远端用户因 Token 过期或网络原因等掉线。 SWITCH_TO_INVISIBLE 2 远端用户调用 setUs...
新进房用户会收到进房前已在房内的可见用户的进房回调通知。 传入参数 参数名 类型 说明 rtcRoom ByteRTCRoom * ByteRTCRoom 对象。 userInfo ByteRTCUserInfo * 用户信息,参看 ByteRTCUserInfo。 elapsed NSInteger 保留字段,无意义 rtcRoom:onUserLeave:reason:objectivec - (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onUserLeave:(NSString *_Nonnull)uid reason:(ByteRTCUserOfflineReason)reason;远端用户离开房间...