- 博客(74)
- 收藏
- 关注
原创 android-hardware/interfaces/automotive和hardware/libhardware/include/hardware区别
定义了 Android 框架与汽车硬件之间的标准化通信接口。
2025-12-19 15:25:19
924
原创 Android-Camera-为啥不移到packages/module
Camera 未迁移到是多重因素障碍因素影响程度可解决性性能要求🔴 极高难硬件集成🔴 极高极难厂商控制🔴 高商业阻力安全隐私🟡 中高有方案碎片化🟡 中渐进改进根本矛盾Google 想要:统一、可更新、安全的相机架构硬件现实是:高度定制、实时敏感、厂商私有商业现实是:相机是核心卖点,厂商要差异化实际策略周边模块化,核心保持集成✅ 应用框架可更新(CameraX)✅ 安全策略模块化⚠️ 后处理算法可独立更新❌ 实时控制路径保持集成。
2025-12-17 14:46:16
553
原创 Android-Audio-为啥不移到packages/module
Audio 没有完全移到是权衡的结果因素重要性模块化障碍实时性🔴 极高主要障碍硬件集成🔴 高碎片化严重启动顺序🟡 中可解决安全更新🟢 可接受非主要问题根本矛盾:模块化的解耦优势vs 音频系统的集成需求目前 Google 采取的是渐进式、选择性模块化非实时路径相对独立的子系统安全敏感组件新硬件支持这种务实做法确保了 Android 音频在保持性能的同时,逐步获得模块化的部分好处。
2025-12-17 14:32:33
945
原创 Android-packages/modules-由来及子目录介绍
核心系统服务模块模块路径功能描述打包格式蓝牙栈Bluetooth/蓝牙协议栈实现,替代传统system/btAPEXWi-FiWiFi/Wi-Fi 服务、网络管理APEX权限控制运行时权限管理框架APEX神经网络神经网络 API (NNAPI) 实现APEXDNS 解析DNS/DNS-over-TLS/HTTPS 解析器APEX连接性网络连接管理、TetheringAPEX。
2025-12-17 14:24:48
763
原创 蓝牙电话-acceptCall-调用流程
关键是要查看每一层是否有相应的日志输出,以及在哪里失败。通过以上完整的调用流程和日志分析,您可以系统地排查。
2025-12-16 16:06:39
266
原创 Android-Audio-代码路径说明
详细代码路径说明1. Java Framework 层 (应用API)路径: 示例调用:2. JNI 桥接层路径: 关键代码流:3. Native Client 层 (C++ API)路径: 特点:路径: 线程类型对比:路径: 主要功能:路径: 关键结构体:7. 厂商HAL实现路径路径示例:8. 系统定义和配置文件路径: 路径: 路径: 10. 音频工具和测试路径: 路径: 2. 效果配置文件编译系统配置路径: 调试和日志1. 日志标签2. 调试工具代码流程示
2025-12-15 15:03:27
893
原创 Android-Audio-Usage 与 StreamType的区别
维度StreamType (旧)AudioAttributes.Usage (新)引入时间Android 2.3 及更早设计理念基于播放流类型基于音频使用场景数量固定的 7-8 种类型灵活扩展,标准 10+ 种音量控制1:1 绑定到音量条可灵活映射到音量条优先级隐含在类型中显式优先级控制扩展性固定,不可扩展可自定义扩展推荐使用已废弃,仅兼容旧代码Android 5.0+ 推荐StreamType 是"流类型"思维,Usage 是"使用场景"思维StreamType。
2025-12-15 09:49:56
501
原创 Android13-Audio-AudioTrack-播放流程
Android 13 AudioTrack, AudioFlinger, AudioPolicy 完整交互流程我将详细解析Android 13中AudioTrack、AudioFlinger和AudioPolicy三者之间的完整交互流程,涵盖从应用层到硬件层的所有关键步骤。一、架构总览(Android 13)应用层 (AudioTrack API 33)↓↓JNI桥接 (android_media_AudioTrack.cpp)↓↓↓↓ ↓↓↓。
2025-12-09 14:42:53
1000
原创 Audio-音频-播放的方式
Android 音频播放的多种方式详解1.1 高层API(最简单)MediaPlayer - 全功能媒体播放器// 1. 创建MediaPlayer// 2. 设置数据源// 或// 3. 准备播放// 异步准备// 同步准备// 4. 设置监听器mp.start();// 开始播放});// 播放完成释放资源});
2025-12-09 14:33:54
835
原创 Android13-Audio-AudioTrack-写数据流程
总结:Android 13 中 AudioTrack 的写数据调用流程是一个复杂的多层级过程,涉及 Java 层、JNI、Native 层、Binder IPC、共享内存管理等多个组件。数据最终通过共享内存传递给 AudioFlinger 进行混音和硬件输出,整个过程经过高度优化以支持低延迟和高性能的音频播放。Android 13 中 AudioTrack 写数据的调用流程是一个从应用层到 HAL 层的完整数据通路。releaseBuffer() [通知 AudioFlinger 数据就绪]
2025-12-04 16:28:41
804
原创 Android-Audio-AudioFlinger-写音频数据到HAL流程
这里的 mStream 是 IStreamOut 类型(HIDL)或 aidl::android::hardware::audio::core::IStreamOut(AIDL)。-> android::hardware::audio::core::V2_0::IStreamOut::write() // HIDL Binder IPC调用。这是一个详细的、深入的流程分析。-> vendor::implementation::StreamOut::write() // 厂商HAL实现。
2025-12-04 14:55:46
574
原创 audio-audioflinger-应用音量到活跃流
应用设置音量 → AudioManager → AudioService → AudioSystem → AudioFlinger。这个流程展示了Android音频系统如何高效、灵活地管理应用音量,确保多应用、多设备的音频混合能够正确应用各自的音量设置。我们来详细分析 AudioFlinger 如何将应用设置的音量应用到活跃的音频流上。AudioFlinger::PlaybackThread → 应用音量 + 设备音量 + 主音量。应用音量 → 流音量 → 设备音量 → 主音量 → 最终音量。
2025-12-02 17:10:04
461
原创 Audio-音量-设置-各版本区别
/ Android 5.0 (API 21) 引入AudioAttributes。// Android 4.0 (API 14) 引入的重要flags。// Android 7.0 (API 24) 引入音频组管理。// Android 1.5 (API 3) 初始版本。
2025-11-28 18:27:31
249
原创 Audio-音量-设置
/ 3. AudioService处理 (frameworks/base/services/core/java/com/android/server/audio/AudioService.java)// 2. AudioManager处理 (frameworks/base/media/java/android/media/AudioManager.java)int QUIET_FLAGS = FLAG_SHOW_UI | FLAG_REMOVE_SOUND_AND_VIBRATE;// 移除声音和振动。
2025-11-28 18:08:38
811
原创 audio-音频焦点-作用及不申请的危害
正确的音频焦点管理是开发高质量音频应用的基本要求。导航提示 AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK 地图导航。• 优先级管理:根据音频用途(音乐、导航、通知等)分配不同的播放权限。if (应用在后台 && 没有音频焦点 && 没有前台服务) {// “设备实现必须支持音频焦点,应用必须正确使用音频焦点”// 来电优先 > 导航提示 > 音乐播放 > 游戏音效。// 结果:音乐和提示音混在一起,用户无法听清任何内容。• 重要音频优先:电话、报警、导航等关键音频永远优先。
2025-11-28 16:30:51
678
原创 Audio-SoundPool
/ 存储当前播放的streamId。// 存储soundId。这样的实现既保证了功能的完整性,又考虑了性能和可维护性,适合在实际项目中使用。应用层: new SoundPool.Builder().build()// 最佳实践:使用16bit 44.1kHz的WAV文件。从SamplePool获取可用的播放流(stream)触发OnLoadCompleteListener回调。解码器检测音频格式(WAV/MP3/OGG等)// 提前播放静音音效,初始化音频管道。// 避免使用MP3(有解码延迟)
2025-11-28 16:25:15
707
原创 Android-Audio-触摸音-实现流程
在自定义控件中实现点击音效时,建议先调用 isSoundEffectsEnabled() 检查用户设置,确保在静音模式下不会意外播放声音影响用户体验。全局开关控制:通过 Settings.System.SOUND_EFFECTS_ENABLED 控制音效启用状态,在设置应用中通过以下代码切换。Android中的点击音效实现流程主要涉及从用户交互到音频播放的完整链路。最终由 AudioService 处理实际的音效播放请求。用户触摸 → 事件分发 → 音效播放 → 音频输出。
2025-11-28 16:17:51
310
原创 车机 Sleep Suspend Hibernation 区别
例如,奥迪A6的MOST总线系统定义了休眠模式(无数据交换,静态电流最小化)和待命模式(低功耗准备状态),这与传统PC的电源管理逻辑类似,但需适应车载环境的实时性和可靠性要求。在车机系统中,睡眠(Sleep)、挂起(Suspend) 和 休眠(Hibernation) 是三种不同的低功耗状态,它们在实现机制、恢复速度、功耗和适用场景上存在显著差异。临时停车:使用睡眠/挂起,快速恢复且功耗低。长时间停车:选择休眠,彻底省电且数据安全。
2025-11-20 18:27:48
241
原创 Gnss数据上报源码流程
驱动层 → HAL转换 → GnssLocationProvider → LocationManagerService → 应用回调。GnssLocationProvider通过硬件抽象层(HAL)获取驱动数据,转换为标准Location对象(含精度、速度等字段)维护定位状态机(如冷启动→单点定位→差分定位),通过gpsState字段反馈至应用层。集成AGPS(星历预下载)和网络定位(基站/WiFi融合)以提升首次定位速度。驱动层校验数据完整性(如NMEA校验和),并处理信号丢失或芯片异常。
2025-09-06 16:33:49
233
原创 Android-SELinux-开启和修改文件权限的完整指南
在Android系统中,SELinux(Security-Enhanced Linux)通过强制访问控制限制文件操作,即使拥有root权限也可能被拦截。
2025-07-31 18:23:59
1544
1
原创 android 事件
方法名调用者作用事件分发入口,决定继续传递或消费ViewGroup仅 ViewGroup 有,返回true拦截事件并接管后续序列View最终处理事件,返回true表示消费事件Android 官方事件文档或事件分发机制详解。引用链接:1.谷歌强制更新仍未压制起火隐患,又一 Pixel 6a 用户经历惊魂时刻 - IT之家2.谷歌承认安卓地震预警系统在土耳其 7.8 级地震中 “掉链子”,仅发出 469 条高危警报 - 金融界3.事件机制详解 - 优快云博客4.
2025-07-31 17:25:30
969
原创 Android NDK Crash 分析
重点关注含SIGSEGV/SIGABRT等信号的记录。需使用编译时生成的未strip的so文件。包含完整的寄存器状态和内存映射信息。可转换地址到源码文件和行号。三、常见崩溃类型分析。匹配对应的工具链版本。
2025-07-31 17:25:01
757
原创 android-activity-栈顶复用和栈内复用区别
Android Activity的栈顶复用(singleTop)与栈内复用(singleTask。
2025-07-31 17:24:11
712
原创 android-wms-常见定制场景
WMS 定制的核心在于窗口类型管理)、层级控制(Z-order)和事件分发链路修改。以上场景需结合 Framework 层代码调整(如),并注意与的协同优化。引用链接:1.彻底搞明白Android WMS窗口相关流程 - 优快云博客2.Android WMS 详解 - 云表3.android 系统 wms详解 - 优快云博客4.深入浅出安卓WMS - 掘金开发者社区5.Android系统重要组件WMS - 优快云博客6.Android WMS - 程序员客栈7.
2025-07-31 17:23:26
563
原创 android-wms-常见问题及解决方案
Android Window Manager Service (WMS) 是系统的核心组件,负责管理窗口的创建、布局、事件分发和动画等操作。通过规范窗口类型管理、事件处理和资源优化,可显著提升稳定性和用户体验。
2025-07-31 17:23:09
798
原创 android-PMS-开机流程
阶段操作内容技术实现SystemServer 启动创建 PMS 实例并注册服务调用系统分区扫描解析预装应用权限与组件信息构造函数内遍历用户应用延迟加载动态注册/data/app应用广播触发性能优化多线程/缓存/延迟加载策略并发扫描与复用厂商适配建议系统分区扫描需兼容Overlay 机制(如),确保厂商定制应用正常加载。避免在 PMS 构造函数中执行耗时 I/O 操作,优先采用异步任务分流初始化压力。
2025-07-30 15:33:39
626
原创 android-PMS-包加载的顺序
PMS 构造函数中首先加载 Framework 资源(framework-res.apk)和系统核心库 (core libraries)。💡 此顺序确保系统核心组件优先初始化,用户应用后加载,保障系统稳定性。,构建全局的包信息树(PackageInfo)和组件注册表。历史安装记录,恢复已安装应用状态。解析所有 APK 的。
2025-07-30 15:21:23
883
原创 android9-PMS-常见问题及分析步骤
厂商定制功能(如密码锁)需确保 Hook 点覆盖所有安装路径(ADB、PackageInstaller、静默安装)。
2025-07-30 15:02:05
724
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅