android
文章平均质量分 69
呆咖啡
这个作者很懒,什么都没留下…
展开
-
理解AAC和Opus的编码与解码流程
理解AAC和Opus的编码与解码流程及其在Android中的实现,对于音频开发非常重要。下面,我将详细解释这两种编码格式的原理、流程,并结合具体代码示例,帮助你在Android项目中合理地设计和使用它们。它结合了CELT和SILK两种编码技术,能够在低延迟和高压缩率之间进行良好的平衡。Android并未内置对Opus的支持,因此需要使用第三方库或自行集成Opus编码器和解码器。:AAC编码和解码涉及复杂的底层操作,以下示例仅为概念展示,实际应用中需要处理更多细节和错误情况。类来处理AAC的编码和解码。原创 2024-09-18 16:53:42 · 1517 阅读 · 0 评论 -
websocket 和sip 在协议层面有哪些区别,为什么要各自这样设置协议
WebSocket 是一种通信协议,旨在通过单个 TCP 连接实现。原创 2024-09-13 10:01:57 · 930 阅读 · 0 评论 -
sdk加载初始化问题
如果 SDK 支持分模块初始化,直接调用部分模块的初始化接口即可。如果 SDK 只提供统一入口,可以使用懒加载和代理模式,或通过反射机制实现按需初始化。优化后的初始化策略可以有效减少启动时的资源消耗,按需加载所需的功能模块,提升应用性能。原创 2024-09-05 11:11:26 · 440 阅读 · 0 评论 -
android 事件分发笔记
分为 view.dispatchTouchEvent,---只有事件的处理逻辑----- ViewGroup.dispatchTouchEvent---实现了分发流程的逻辑。原创 2024-03-15 17:52:54 · 573 阅读 · 0 评论 -
minifyEnabled属性 和ProGuard配置文件
vs.true表示启用代码压缩和混淆,false表示禁用。vs.启用了代码优化,适合需要最大程度优化和缩减应用体积的场景。不启用优化,只进行混淆和压缩,适合对稳定性要求更高的场景。在实际项目中,发布版本通常会设置并使用以获得最佳的优化效果。但在某些情况下,为了确保稳定性,可以选择不启用优化,只使用混淆和压缩。原创 2024-09-02 11:47:44 · 212 阅读 · 0 评论 -
apply, let, with, run, also的区别是什么
返回值返回自身:applyalso返回 Lambda 结果:letrunwith引用对象thisapplyrunwithitletalso。原创 2024-08-16 11:20:48 · 384 阅读 · 0 评论 -
整理三个具体的android启动场景
冷启动:应用进程不存在,ATMS需要创建新的应用进程,启动Activity并显示给用户。应用内跳转:在当前应用进程内切换Activity,ATMS仅管理Activity栈的变化。热启动:应用进程仍在后台运行,ATMS仅恢复已有的Activity到前台。这些流程的关键在于ATMS如何管理应用进程、任务栈和Activity的生命周期。对于开发者来说,理解这些流程有助于优化应用启动性能并处理不同的启动情境。原创 2024-08-12 10:41:58 · 741 阅读 · 0 评论 -
客户端流程--启动篇(android14)
类型为 IBinder,是一个 Binder 代理端对象,对应的 Binder 服务端对象是发起端 Activity 对应的的 ActivityRecord 对象中的 Token 对象,其Binder 服务端对象在 AMS 中。:IBinder 对象,是一个 Binder 代理端对象,对应的 Binder 服务端对象是 ActivityRecord 对象中的 Token。Activity 的启动的 Launcher 阶段主要工作是准备 Instrumentation 阶段发起远程调用的参数。转载 2024-08-12 10:23:04 · 79 阅读 · 0 评论 -
自定义 View 可以播放一段视频
/ 初始化 VideoView// 获取屏幕宽高// 初始化音频管理器// 获取当前窗口参数以调整亮度// 初始化手势检测器@Override} else {@Override// 左右滑动快进/快退// 快进} else {// 快退} else {// 左侧区域,上下滑动调整音量// 降低音量} else {// 提高音量} else {// 右侧区域,上下滑动调整亮度// 降低亮度。原创 2024-08-08 10:10:09 · 576 阅读 · 0 评论 -
设计一个线程安全的容器读写模型
这个锁机制允许多个线程同时读取,但在写操作时会独占锁,从而保证了线程安全性。此外,在进行删除操作时,我们也需要确保线程安全。为了设计一个线程安全的容器数据结构,可以使用。原创 2024-08-08 09:54:01 · 249 阅读 · 0 评论 -
有多个第三方sdk 里的manifest里都配置了provider,如何优化
当多个第三方 SDK 的文件中都配置了。原创 2024-07-25 15:58:03 · 247 阅读 · 0 评论 -
为什么LeakCanary不能用于线上?
1、LeakCanary通过弱引用关联对象连续两次主动触发GC判定是否泄露,频繁GC易导致程序卡顿;°v 2、每次检测到泄露都会dump快照文件,同一个泄露多次触发也会dump多份快照;v 3、dump hprof文件(内存镜像)耗时,易造成程序长时间无响应;v 4、hprof文件太大,解析耗时;原创 2024-07-23 17:58:38 · 110 阅读 · 0 评论 -
android 使用 setAndAllowWhileIdle 或 SetExactAndAllowWhileIdle 设置闹铃和普通方式设置闹钟有什么区别?需要注意什么?
在 Android 中,设置闹铃的方式主要有三种:普通方式(通过set()方法)、方法和方法。这三种方法有不同的应用场景和行为。原创 2024-07-23 10:37:48 · 427 阅读 · 0 评论 -
java thread怎么保证线程按顺序执行?如何实现线程排队?
在Java中,通常不保证多个线程按特定顺序执行,因为线程的调度是由操作系统管理的,并且是不可预测的。原创 2024-07-22 15:35:41 · 332 阅读 · 0 评论 -
TCP/IP、UDP、HTTP 协议介绍比较和总结
特性TCPUDPHTTP连接类型面向连接无连接无状态(基于TCP)可靠性可靠,保证数据完整性和顺序不可靠,数据可能丢失或乱序依赖于TCP的可靠性传输方式字节流报文请求-响应速度较慢,因可靠性和拥塞控制影响快速,因简单和低开销中等,受限于HTTP头和内容传输应用场景文件传输、电子邮件、远程登录实时音视频、在线游戏、广播Web浏览、API接口调用控制机制流控制、拥塞控制无流控制和拥塞控制无控制机制(依赖于TCP的机制)TCP/IP。原创 2024-07-16 15:19:24 · 1180 阅读 · 0 评论 -
app一键退出功能---笔记
调用或可能会导致 Android 系统在某些情况下重新启动进程。这是因为 Android 系统会尝试保持应用的可用性和稳定性,如果进程被异常终止,系统可能会自动重启该进程,以确保用户的应用体验。任务栈的状态:如果应用的任务栈中有其他Activity,而当前Activity不是任务栈中的最后一个,调用这两个方法后,系统可能会重新启动任务栈中的其他Activity。应用组件的声明:如果在中声明了某些组件(如Service等)需要运行在独立的进程中,系统可能会尝试重启这些组件。系统版本和厂商定制。原创 2024-07-04 17:27:40 · 808 阅读 · 0 评论 -
android 在清单文件中配置receiver,系统是何时会注册此广播接收者的?
静态注册的广播接收器在应用安装时、设备启动时、或者用户启动应用时由系统自动注册。动态注册的广播接收器则需要在代码中显式注册和反注册,通常在Activity或Service的生命周期方法中进行。通过合理选择静态或动态注册方式,可以确保应用在需要时接收到广播,同时避免不必要的性能开销和电量消耗。原创 2024-07-04 16:31:58 · 355 阅读 · 0 评论 -
Kotlin 处理livedata数据倒灌
Event。原创 2024-07-03 10:27:39 · 416 阅读 · 0 评论 -
android 责任链模式
Override// 自定义事件分发逻辑if (!handled) {// 责任链模式传递给子视图i++) {@Override// 自定义事件拦截逻辑@Override// 自定义事件处理逻辑// 必须实现的 ViewGroup 抽象方法@Override// 布局子视图责任链模式通过将处理者链成一条链,使得请求在处理者之间传递,直到有一个处理者处理该请求。这种模式在 Android 开发中非常有用,特别是在处理事件传递、拦截器等场景。原创 2024-06-20 15:21:36 · 586 阅读 · 0 评论 -
android system UI 基础的基础
SystemUI是在 Android 启动过程中由进程通过Zygote进程启动的。通过调用方法来启动SystemUI应用程序,该应用程序的入口是类,它会初始化和启动各种系统 UI 组件。原创 2024-06-18 11:10:04 · 428 阅读 · 1 评论 -
【android 车载 CarService】(二)
在线源码阅读。原创 2024-06-14 11:27:12 · 164 阅读 · 0 评论 -
车载android开发 carservice(一)
Google在车载系统中选择使用CarService这种设计方式,主要是为了满足汽车环境的特殊需求,包括安全性、实时性、硬件集成等方面的要求。与AMS相比,CarService提供了更适合车载环境的功能和接口,能够更好地支持开发者构建高效、安全、智能的车载应用和服务。原创 2024-06-14 11:14:00 · 1140 阅读 · 0 评论 -
android 异屏同显二.
用于管理图形缓冲区,可以被多个图形组件共享。Fence用于同步 GPU 和 CPU 之间的操作,确保 GPU 完成任务后再继续执行 CPU 操作。原创 2024-06-07 15:43:55 · 511 阅读 · 0 评论 -
android 异屏同显---学习笔记
如果上述方法都不适用,你也可以考虑开发一个自定义解决方案,例如使用 WebSocket 来同步两个设备上的内容,或者通过 WiFi Direct 建立连接。原创 2024-06-07 14:48:08 · 687 阅读 · 1 评论 -
怎么排查native层的bug
--》在Device Explorer中 data/tombstones 里就有日志信息。android studio debug 直接运行,LLBD 不要打断点。---》奔溃后,在logcat中查询SIGSEGV信号量。需要ndk的环境变量 和adb的环境变量。---->在日志里 搜索对应的信号量。$su ..adb修改文件导出权限。原创 2024-06-05 15:14:15 · 424 阅读 · 0 评论 -
android 双屏异显-学习笔记
日常生活中,有时候会遇到 Android 设备连接两个屏幕进行显示的问题,比如酒店登记信息时,一个屏幕用于员工操作,一个屏幕显示相关信息供顾客查看。这里就涉及到 Android 的双屏异显的问题,实现Android 的双屏异显,Google 也提供了相应的 API方法 Presentation。流程上来说:APP:包含window和Surface------关联surfaceFlinger,合成图像-------通过HWC送显,确定展示到哪个图像上备注:As的虚拟机可以支持添加多屏模拟。原创 2024-06-04 16:49:17 · 1090 阅读 · 0 评论 -
BufferQueue 的工作原理
是 Android 图形栈中的一个核心组件,它在生产者和消费者之间传递缓冲区(buffer)。它通常用于图形缓冲区管理,特别是在 SurfaceFlinger 和其他图形相关的组件中。理解的工作原理对开发高性能图形应用和解决图形渲染问题非常有帮助。原创 2024-05-29 10:35:59 · 972 阅读 · 1 评论 -
android requireActivity() 和 getActivity()使用问题
使用可以避免,但需要确保Fragment已经附加到Activity。使用更加灵活,但需要进行null检查,以确保Activity存在。根据具体情况选择合适的方法,以确保代码的健壮性和稳定性。原创 2024-05-27 16:46:08 · 808 阅读 · 0 评论 -
工厂模式(Factory Pattern)简介
首先,我们定义一个Pizza接口,每种披萨都要实现这个接口。kotlin复制代码。原创 2024-05-27 16:42:36 · 372 阅读 · 0 评论 -
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 · 325 阅读 · 0 评论 -
Surface 学习笔记一
在Android开发中,“Surface”是一个重要的概念,它代表了一个可以在屏幕上绘制的区域。Surface可以是一个独立的窗口,也可以是一个View(视图)的一部分。在Android的图形系统中,Surface用于将图形渲染到屏幕上,包括绘制UI元素、图像、视频等。开发者可以通过Surface类来绘制各种图形、文本、图像等内容,从而创建自定义的用户界面或者游戏画面。Surface可以用来播放视频或者实现动画效果,通过不断地更新Surface上的内容,可以创建流畅的动画效果。原创 2024-05-15 16:58:00 · 559 阅读 · 0 评论 -
android 蓝牙技术 学习记录 二
BluetoothDevice--------------------蓝牙设备。BluetoothGattCallback--------------连接回调。----autoConnect 是否自动连接参数。----transport 是否低功耗。原创 2024-05-10 16:57:26 · 408 阅读 · 0 评论 -
android 蓝牙技术 学习记录
蓝牙权限定位权限BluetoothAdapter 蓝牙适配器蓝牙扫描类-----开关蓝牙等功能BluetoothLeScanner 蓝牙扫描设置ScanFilter 蓝牙扫描过滤条件----名字过滤,uuid过滤等功能蓝牙扫描设置---------省电的扫描,等功能ScanCallback 蓝牙扫描结果回调。原创 2024-05-10 11:17:27 · 963 阅读 · 1 评论 -
android 安全机制 和权限管理 的一点研究
在Android中SEAndroid安全机制(MAC)与传统的Linux UID/GID安全机制(DAC)是并存关系的,也就是说,它们同时用来约束进程的权限。其中1077,1065,3002,3003,3001代表的就是用户组,通过`/system/core/include/private/android_filesystem_config.h` 查看可知对应这权限组的作用。--------------------------我是分割线---------------------------------原创 2024-05-09 17:12:29 · 895 阅读 · 0 评论 -
【android 问题 之--自问自答】
答:是的.必须要和new_ task 配套使用。即使是两个app跳转,也需要这样。单独任务栈作用,比如图库,保活等待栈之间互不干扰的活动。原创 2024-04-26 15:50:33 · 367 阅读 · 1 评论 -
android和java 线程Tread
当线程对象调用了Thread.start(方法之后,该线程处于就绪状态,Java虚拟机会为其创建方法调用栈和程序计数器,处于这个状态的线程并没有开始运行,它只是表示该线程可以运行了。从start(源码中看出、start后添加到了线程列表中,接着在native层添加到VM中,至于该线程何时开始运行,取决于IVM里线程调度器的调度(如果OS调度选中了,就会进入到运行状态)。回看一下下面start方法源码:java层---nativeCreate(this,stack Size,daemon)原创 2024-04-18 15:23:27 · 1097 阅读 · 0 评论 -
Android Dialog设置TYPE_SYSTEM_ALERT 小米,魅族手机不能显示问题
在对话框初始的时候,设置 Java代码 mProgressDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 可以让对话框始终显示在其他应用程序的window之上,也就是说这个dialog始终处于最上层,对用户始终可见,也就是说用户按了home之后dialog转载 2017-10-30 11:16:32 · 3504 阅读 · 0 评论 -
android 比较靠谱的图片压缩
第一:我们先看下质量压缩方法: Java代码 private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.Com转载 2016-01-25 15:50:13 · 270 阅读 · 0 评论 -
Please ensure that adb is correctly located at 最新详细方案
遇到问题描述:运行android程序控制台输出 [2012-07-18 16:18:26 - ] The connection to adb is down, and a severe error has occured. [2012-07-18 16:18:26 - ] You must restart adb and Eclipse. [2012-07转载 2016-01-28 09:21:29 · 285 阅读 · 0 评论 -
android加载 ,超超超大的图片,而且不压缩。
Android 高清加载巨图方案 拒绝压缩图片转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49300989; 本文出自:【张鸿洋的博客】一、概述距离上一篇博客有段时间没更新了,主要是最近有些私事导致的,那么就先来一篇简单一点的博客脉动回来。对于加载图片,大家都不陌生,一般为了尽转载 2016-01-28 10:47:07 · 1123 阅读 · 0 评论