- 博客(132)
- 资源 (2)
- 收藏
- 关注
原创 理解AAC和Opus的编码与解码流程
理解AAC和Opus的编码与解码流程及其在Android中的实现,对于音频开发非常重要。下面,我将详细解释这两种编码格式的原理、流程,并结合具体代码示例,帮助你在Android项目中合理地设计和使用它们。它结合了CELT和SILK两种编码技术,能够在低延迟和高压缩率之间进行良好的平衡。Android并未内置对Opus的支持,因此需要使用第三方库或自行集成Opus编码器和解码器。:AAC编码和解码涉及复杂的底层操作,以下示例仅为概念展示,实际应用中需要处理更多细节和错误情况。类来处理AAC的编码和解码。
2024-09-18 16:53:42 1504
原创 websocket 和sip 在协议层面有哪些区别,为什么要各自这样设置协议
WebSocket 是一种通信协议,旨在通过单个 TCP 连接实现。
2024-09-13 10:01:57 921
原创 flutter和android原生 界面显示的原理是什么,有什么异同。
Flutter 和 Android 原生的界面显示原理在底层实现上有很大的不同,尽管它们都是用于构建移动应用的 UI 框架。理解这两者的显示原理,可以帮助开发者更好地优化界面性能并选择合适的技术栈。下面将从底层原理和具体步骤详细说明两者的异同。
2024-09-05 14:12:19 1437
原创 sdk加载初始化问题
如果 SDK 支持分模块初始化,直接调用部分模块的初始化接口即可。如果 SDK 只提供统一入口,可以使用懒加载和代理模式,或通过反射机制实现按需初始化。优化后的初始化策略可以有效减少启动时的资源消耗,按需加载所需的功能模块,提升应用性能。
2024-09-05 11:11:26 432
原创 Flutter--- 常规知识点
这些问题涵盖了 Flutter 的核心概念和一些常见的框架与架构问题。我将尽量用口语化的方式来回答,并加入一些项目经验来帮助理解。
2024-09-03 14:09:01 1208
原创 flutter与原生怎么交互的
定义通信通道:在 Flutter 端创建,指定通道名称。调用方法:通过调用原生方法。原生端处理:在原生平台(Android/iOS)中实现对应的,并处理来自 Flutter 的方法调用。返回结果:在原生代码中将结果返回给 Flutter。
2024-09-03 11:34:42 843
原创 minifyEnabled属性 和ProGuard配置文件
vs.true表示启用代码压缩和混淆,false表示禁用。vs.启用了代码优化,适合需要最大程度优化和缩减应用体积的场景。不启用优化,只进行混淆和压缩,适合对稳定性要求更高的场景。在实际项目中,发布版本通常会设置并使用以获得最佳的优化效果。但在某些情况下,为了确保稳定性,可以选择不启用优化,只使用混淆和压缩。
2024-09-02 11:47:44 210
原创 android stido 之中。rename class XXXX and its useage to 的快捷键是什么
在 Android Studio 中,重命名一个类及其所有使用的快捷键是。当你按下时,会弹出一个对话框,允许你重命名类名、方法名、变量名等,并在项目中自动更新所有相关的引用。
2024-08-27 15:45:34 463
原创 我遇到的flutter问题以及答案(一)
Flutter 是 Google 开发的开源 UI 软件开发工具包,用于跨平台的应用程序开发。开发者可以使用同一份代码库构建 Android、iOS、Web 和桌面应用程序。
2024-08-19 11:31:26 1001
原创 apply, let, with, run, also的区别是什么
返回值返回自身:applyalso返回 Lambda 结果:letrunwith引用对象thisapplyrunwithitletalso。
2024-08-16 11:20:48 375
原创 Unable to authenticate using the provided code. Please try again.使用Clashx的vpn连接firebase失败的解决办法
ClashX VPN 连接 Firebase 时,如果遇到无法成功登录的问题。然后在运行firebase login --no-localhost就可以了。在Clash 上有个选项“复制终端代理命令”。例如:我的命令代码就是。
2024-08-14 11:37:46 170
原创 整理三个具体的android启动场景
冷启动:应用进程不存在,ATMS需要创建新的应用进程,启动Activity并显示给用户。应用内跳转:在当前应用进程内切换Activity,ATMS仅管理Activity栈的变化。热启动:应用进程仍在后台运行,ATMS仅恢复已有的Activity到前台。这些流程的关键在于ATMS如何管理应用进程、任务栈和Activity的生命周期。对于开发者来说,理解这些流程有助于优化应用启动性能并处理不同的启动情境。
2024-08-12 10:41:58 736
转载 客户端流程--启动篇(android14)
类型为 IBinder,是一个 Binder 代理端对象,对应的 Binder 服务端对象是发起端 Activity 对应的的 ActivityRecord 对象中的 Token 对象,其Binder 服务端对象在 AMS 中。:IBinder 对象,是一个 Binder 代理端对象,对应的 Binder 服务端对象是 ActivityRecord 对象中的 Token。Activity 的启动的 Launcher 阶段主要工作是准备 Instrumentation 阶段发起远程调用的参数。
2024-08-12 10:23:04 65
原创 正确计算并返回两个字符串的最长公共子串
动态规划(Dynamic Programming, DP)是一种解决复杂问题的方法,通过将问题分解成更小的子问题,并利用子问题的解来构造原问题的解。这里我们用动态规划来求解两个字符串的最长公共子串。这部分的逻辑,以及它在动态规划中是如何工作的。:首先检查输入的两个字符串是否为。来记录公共子串的长度。个字符的最长公共后缀的长度。:分别获取两个字符串的长度。好的,让我们详细解释一下。:最后返回最长公共子串。,我们使用一个二维数组。
2024-08-08 10:23:20 424
原创 自定义 View 可以播放一段视频
/ 初始化 VideoView// 获取屏幕宽高// 初始化音频管理器// 获取当前窗口参数以调整亮度// 初始化手势检测器@Override} else {@Override// 左右滑动快进/快退// 快进} else {// 快退} else {// 左侧区域,上下滑动调整音量// 降低音量} else {// 提高音量} else {// 右侧区域,上下滑动调整亮度// 降低亮度。
2024-08-08 10:10:09 573
原创 设计一个线程安全的容器读写模型
这个锁机制允许多个线程同时读取,但在写操作时会独占锁,从而保证了线程安全性。此外,在进行删除操作时,我们也需要确保线程安全。为了设计一个线程安全的容器数据结构,可以使用。
2024-08-08 09:54:01 247
原创 为什么LeakCanary不能用于线上?
1、LeakCanary通过弱引用关联对象连续两次主动触发GC判定是否泄露,频繁GC易导致程序卡顿;°v 2、每次检测到泄露都会dump快照文件,同一个泄露多次触发也会dump多份快照;v 3、dump hprof文件(内存镜像)耗时,易造成程序长时间无响应;v 4、hprof文件太大,解析耗时;
2024-07-23 17:58:38 107
原创 android 使用 setAndAllowWhileIdle 或 SetExactAndAllowWhileIdle 设置闹铃和普通方式设置闹钟有什么区别?需要注意什么?
在 Android 中,设置闹铃的方式主要有三种:普通方式(通过set()方法)、方法和方法。这三种方法有不同的应用场景和行为。
2024-07-23 10:37:48 404
原创 java thread怎么保证线程按顺序执行?如何实现线程排队?
在Java中,通常不保证多个线程按特定顺序执行,因为线程的调度是由操作系统管理的,并且是不可预测的。
2024-07-22 15:35:41 324
原创 TCP/IP、UDP、HTTP 协议介绍比较和总结
特性TCPUDPHTTP连接类型面向连接无连接无状态(基于TCP)可靠性可靠,保证数据完整性和顺序不可靠,数据可能丢失或乱序依赖于TCP的可靠性传输方式字节流报文请求-响应速度较慢,因可靠性和拥塞控制影响快速,因简单和低开销中等,受限于HTTP头和内容传输应用场景文件传输、电子邮件、远程登录实时音视频、在线游戏、广播Web浏览、API接口调用控制机制流控制、拥塞控制无流控制和拥塞控制无控制机制(依赖于TCP的机制)TCP/IP。
2024-07-16 15:19:24 1170
原创 组件与组件 的通信方式有哪些
3.使用隐式的意图 在AndroidManifest里面xml写很多。1.使用eventbus eventbus维护成本高。2.使用广播的方式 不好管理,都统一发送了出去。4.使用类加载的方式 容易写错类名包名。5.使用全局map的方式 要注册很多的对象。6.使用阿里的ARouter。
2024-07-12 10:48:26 96
原创 CleanCode、安全编码规范
Clean Code 是由 Robert C. Martin 提出的编写高质量代码的原则。安全编码规范旨在防止常见的安全漏洞,提高代码的安全性。在这个例子中,我们创建了一个。
2024-07-10 09:26:42 553
原创 app一键退出功能---笔记
调用或可能会导致 Android 系统在某些情况下重新启动进程。这是因为 Android 系统会尝试保持应用的可用性和稳定性,如果进程被异常终止,系统可能会自动重启该进程,以确保用户的应用体验。任务栈的状态:如果应用的任务栈中有其他Activity,而当前Activity不是任务栈中的最后一个,调用这两个方法后,系统可能会重新启动任务栈中的其他Activity。应用组件的声明:如果在中声明了某些组件(如Service等)需要运行在独立的进程中,系统可能会尝试重启这些组件。系统版本和厂商定制。
2024-07-04 17:27:40 806
原创 android 在清单文件中配置receiver,系统是何时会注册此广播接收者的?
静态注册的广播接收器在应用安装时、设备启动时、或者用户启动应用时由系统自动注册。动态注册的广播接收器则需要在代码中显式注册和反注册,通常在Activity或Service的生命周期方法中进行。通过合理选择静态或动态注册方式,可以确保应用在需要时接收到广播,同时避免不必要的性能开销和电量消耗。
2024-07-04 16:31:58 354
原创 android 责任链模式
Override// 自定义事件分发逻辑if (!handled) {// 责任链模式传递给子视图i++) {@Override// 自定义事件拦截逻辑@Override// 自定义事件处理逻辑// 必须实现的 ViewGroup 抽象方法@Override// 布局子视图责任链模式通过将处理者链成一条链,使得请求在处理者之间传递,直到有一个处理者处理该请求。这种模式在 Android 开发中非常有用,特别是在处理事件传递、拦截器等场景。
2024-06-20 15:21:36 582
原创 android system UI 基础的基础
SystemUI是在 Android 启动过程中由进程通过Zygote进程启动的。通过调用方法来启动SystemUI应用程序,该应用程序的入口是类,它会初始化和启动各种系统 UI 组件。
2024-06-18 11:10:04 419 1
原创 车载android开发 carservice(一)
Google在车载系统中选择使用CarService这种设计方式,主要是为了满足汽车环境的特殊需求,包括安全性、实时性、硬件集成等方面的要求。与AMS相比,CarService提供了更适合车载环境的功能和接口,能够更好地支持开发者构建高效、安全、智能的车载应用和服务。
2024-06-14 11:14:00 1133
原创 android 异屏同显二.
用于管理图形缓冲区,可以被多个图形组件共享。Fence用于同步 GPU 和 CPU 之间的操作,确保 GPU 完成任务后再继续执行 CPU 操作。
2024-06-07 15:43:55 505
原创 android 异屏同显---学习笔记
如果上述方法都不适用,你也可以考虑开发一个自定义解决方案,例如使用 WebSocket 来同步两个设备上的内容,或者通过 WiFi Direct 建立连接。
2024-06-07 14:48:08 673 1
原创 怎么排查native层的bug
--》在Device Explorer中 data/tombstones 里就有日志信息。android studio debug 直接运行,LLBD 不要打断点。---》奔溃后,在logcat中查询SIGSEGV信号量。需要ndk的环境变量 和adb的环境变量。---->在日志里 搜索对应的信号量。$su ..adb修改文件导出权限。
2024-06-05 15:14:15 423
原创 android 双屏异显-学习笔记
日常生活中,有时候会遇到 Android 设备连接两个屏幕进行显示的问题,比如酒店登记信息时,一个屏幕用于员工操作,一个屏幕显示相关信息供顾客查看。这里就涉及到 Android 的双屏异显的问题,实现Android 的双屏异显,Google 也提供了相应的 API方法 Presentation。流程上来说:APP:包含window和Surface------关联surfaceFlinger,合成图像-------通过HWC送显,确定展示到哪个图像上备注:As的虚拟机可以支持添加多屏模拟。
2024-06-04 16:49:17 1075
原创 BufferQueue 的工作原理
是 Android 图形栈中的一个核心组件,它在生产者和消费者之间传递缓冲区(buffer)。它通常用于图形缓冲区管理,特别是在 SurfaceFlinger 和其他图形相关的组件中。理解的工作原理对开发高性能图形应用和解决图形渲染问题非常有帮助。
2024-05-29 10:35:59 968 1
原创 android requireActivity() 和 getActivity()使用问题
使用可以避免,但需要确保Fragment已经附加到Activity。使用更加灵活,但需要进行null检查,以确保Activity存在。根据具体情况选择合适的方法,以确保代码的健壮性和稳定性。
2024-05-27 16:46:08 785
原创 android CMake 语法 和基础
以前的Cmake版本都是在output.txt,现在最新版本Cmake在metadata_generation_stderr.txt或cmake_server_1og,害我寻找了半天。message("ar0 ----${ARGV0}-ar1 ----${ARGV1}-ar2 ----${ARGV2}")#参数1 ~3的值。message("CMAKE_ARGC---${CMAKE_ARGC}")#传入的参数个数。message("all argv ----${ARGV}") # 所有参数。
2024-05-16 16:19:57 321
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人