Android Framework
文章平均质量分 72
一个学渣的自我救赎
这个作者很懒,什么都没留下…
展开
-
Android13 SoundPool load流程分析
上面方法处理如下:1、调用getSoundPool方法,获取SoundPool对象2、调用SoundPool的load方法加载soundPool。原创 2024-05-06 09:11:51 · 278 阅读 · 0 评论 -
Android13 WifiService创建流程
【代码】Android WifiService创建流程。原创 2024-05-07 22:46:26 · 160 阅读 · 0 评论 -
Android13 WifiScanningService创建流程
【代码】Android13 WifiScanningService创建流程。原创 2024-05-08 09:06:19 · 115 阅读 · 0 评论 -
Android13 BluetoothA2dpSink connect流程分析
到这里A2dpSinkService的connet流程就分析完了。在之后就是蓝牙协议栈相关内容,在这里就不再分析了。原创 2024-05-10 20:40:16 · 322 阅读 · 0 评论 -
Android13 MediaPlayer 创建流程分析
MediaPlayer可以通过两种方法进行创建。方法一:通过new一个MediaPlayer对象的方法进行创建,MediaPlayer的构造函数如下:方法二:通过MediaPlayer的create方法进行创建。原创 2024-05-06 12:50:15 · 821 阅读 · 0 评论 -
Android HWC
HWC(hwcomposer)是Android中进行窗口(Layer)合成和显示的HAL层模块,其实现是特定于设备的,而且通常由显示设备制造商 (OEM)完成,为SurfaceFlinger服务提供硬件支持。SurfaceFlinger可以使用OpenGL ES合成Layer,这需要占用并消耗GPU资源。大多数GPU都没有针对图层合成进行优化,当SurfaceFlinger通过GPU合成图层时,应用程序无法使用GPU进行自己的渲染。而HWC通过硬件设备进行图层合成,可以减轻GPU的合成压力。原创 2024-05-12 21:17:13 · 836 阅读 · 0 评论 -
Android EvsHal
2、调用service(EvsEnumerator)的notifyDeviceStatusChange方法,通知设备状态变化。一个IEvsCamera对象即代表一个Camera,主要接口为捕获图像。1、调用addCaptureDevice方法,添加采集设备。EVS显示对象,可控制显示状态,并处理图像的实际呈现效果。客户端实现接口以接收异步传输的video frame。原创 2024-05-12 21:11:34 · 673 阅读 · 0 评论 -
Android EvsDeiver
service.cpp文件路径:packages/services/Car/cpp/evs/sampleDriver/aidl/src/service.cppservice.cpp函数:二、EvsDeiver相关类ConfigManagerConfigManager文件路径:packages/services/Car/cpp/evs/sampleDriver/aidl/src/ConfigManager.cpppackages/services/Car/cpp/evs/sampleDriver原创 2024-05-12 21:02:20 · 753 阅读 · 0 评论 -
Android EvsManager
service.cpp文件路径:packages/services/Car/cpp/evs/manager/aidl/src/service.cppservice.cpp函数:二、EvsManager相关类VirtualCameraThis class represents an EVS camera to the client application.此类表示客户端应用程序的 EVS 相机。VirtualCamera文件路径:packages/services/Car/cpp/evs/man原创 2024-05-12 11:54:43 · 628 阅读 · 0 评论 -
Android EvsApp
此类可用于从 IEvsCamera 实现接收相机图像。它将保留最新的图像缓冲区,返回较旧的图像缓冲区。主力类的抽象基类,用于处理 EVS 应用程序每种模式的用户交互和显示。将所有可用摄像机的视图合并到一个重新投影的自上而下的视图中。将视图从单个指定的摄像机直接渲染到完整显示。将视图从单个指定的摄像机直接渲染到完整显示。此类运行 EVS 应用程序的主更新循环。原创 2024-05-12 11:43:48 · 842 阅读 · 0 评论 -
Android Camera
Android的Camera系统包括手机的Camera系统(Camera2)和车机的Camera系统(EVS:exterior view system),车载和手机的Camera系统是两套不一样的架构,手机Camera系统最终生成符合人眼感官的图像,需要考虑多样化的场景,如美颜、夜景提亮、降噪、虚化等;而车载Camera系统AIS(Automotive Imaging System)的图像大部分是给自动驾驶等机器识别使用,更多考虑的是远距离传输、多摄像头图像处理等场景。原创 2024-05-12 11:39:40 · 697 阅读 · 0 评论 -
Android Vehicle
HalServiceBase是一个抽象类,它定义了HalService的架构,它的具体实现类包括ClusterHalService、DiagnosticHalService、EvsHalService、InputHalService、PowerHalService、PropertyHalService、TimeHalService、UserHalService、VmsHalService。VehicleHal是车辆 HAL的抽象。此类处理与本机 HAL 的接口,并对接收的数据进行基本解析。原创 2024-05-12 11:36:00 · 659 阅读 · 0 评论 -
Android13 CarEvsManager startVideoStream流程分析
上面方法主要处理如下:1、调用mHalWrapper(EvsHalWrapper)的connectToHalServiceIfNecessary方法,连接HalService。2、调用mHalWrapper(EvsHalWrapper)的openCamera方法,打开Camera。原创 2024-05-12 11:27:53 · 773 阅读 · 0 评论 -
Android CarEvs
一种服务,用于跨 HAL 边界侦听扩展视图系统,并通过 {@link android.car.evs.CarEvsManager} 向 Android 中的系统客户端公开数据。GPU 支持的 SurfaceView,用于呈现由 {@link CarEvsBufferDescriptor} 描述的硬件缓冲区。用于 CarEvsBufferDescriptor 的 GLES20 SurfaceView 渲染器。可更新的汽车服务使用的 EvaHalWrapper 实现。原创 2024-05-12 11:20:29 · 810 阅读 · 0 评论 -
Android13 InputHalService onHalEvents流程分析
在Vehicle章节,我们分析了Vehicle事件分发流程,在VehicleHal的onPropertyEvent中调用调用各个HalService的onHalEvents,如PowerHalService、PropertyHalService、InputHalService,之后由不同HalService继续对PropertyEvent进行处理。调用listener(InputListener)的onKeyEvent方法,原创 2024-05-12 11:12:55 · 294 阅读 · 0 评论 -
Android13 CarInputManager requestInputEventCapture流程分析
【代码】Android13 CarInputManager requestInputEventCapture流程分析。原创 2024-05-12 11:09:11 · 197 阅读 · 0 评论 -
Android13 CarInput
int requestInputEventCapture(int targetDisplayType, int[] inputTypes, int requestFlags, Executor executor, CarInputCaptureCallback callback):注册按键监听事件。void onKeyEvents(@DisplayTypeEnum int targetDisplayType, @NonNull List keyEvents):捕获了KEY事件。原创 2024-05-12 11:07:37 · 720 阅读 · 0 评论 -
Android13 CarPowerManagementService onApPowerStateChange流程分析
如下为CarPower上电的流程图:下面我们从代码角度分析:在CPMS的init方法中会调用onApPowerStateChange(CpmsState.WAIT_FOR_VHAL, CarPowerManager.STATE_WAIT_FOR_VHAL); 设置ApPowerState为STATE_WAIT_FOR_VHAL:在onApPowerStateChange中调用PowerHandler 的handlePowerStateChange方法:在handlePowerStateChang原创 2024-05-12 11:05:35 · 214 阅读 · 0 评论 -
Android13 CarPowerManager setListener流程分析
当CPMS启动后会向VHAL设置电源状态监听,当VHAL收到电源状态更新就会通过监听函数通知CPMS,然后CMPS会根据APP设置的电源状态变化监听调用APP的回调接口,到此从VHAL到APP的电源状态更新就建立起来了。原创 2024-05-12 11:03:08 · 171 阅读 · 0 评论 -
Android13 CarPowerManagementService启动流程分析
在CarPowerManagementService中init调用PowerHalService的setListener设置事件侦听器以接收车辆的电源事件。原创 2024-05-12 11:02:03 · 112 阅读 · 0 评论 -
Android CarPower
在Android Automotive OS (AAOS)中,CarPower负责车载电源的原理,它一面同libsusped交互控制AP(应用处理器,也就是Soc)的电源状态,一方面通过VehicleHAL与MCU通信接收和发送电源相关指令。原创 2024-05-12 10:59:52 · 818 阅读 · 0 评论 -
Android CarProperty
在Android Automotive OS (AAOS)中,绝大部分与车辆硬件功能相关联的属性,如空调, 车舱功能, 车辆传感器等都是通过CarProperty来读取或者设置的,其中CarPropertyService作为CarService的子服务,负责调用HAL层(VehicleHAL)实现具体功能,而CarPropertyManager作为客户端接口由各个APP调用,如下为CarPropertyManager的Block图:CarPropertyManager是Android Automotive原创 2024-05-12 10:53:27 · 888 阅读 · 0 评论 -
Android CarDucking
CarDucking用来处理声音的淡入和淡出,在CarAudioFocus处理中会被调用。原创 2024-05-12 10:42:56 · 282 阅读 · 0 评论 -
Android13 CarZonesAudioFocus onAudioFocusAbandon回调处理流程分析
上面方法进行如下处理:调用CarAudioFocus的onAudioFocusAbandon方法,进行音频焦点仲裁。调用notifyFocusCallback方法,进行Ducking处理。原创 2024-05-12 10:40:05 · 719 阅读 · 0 评论 -
Android13 CarAudioFocus onAudioFocusRequest回调处理流程分析
上面方法进行如下处理:调用getAudioZoneIdForAudioFocusInfo方法获取zoneId。调用CarAudioFocus的onAudioFocusRequest方法,进行音频焦点仲裁。调用notifyFocusCallback方法,进行Ducking处理。原创 2024-05-12 10:32:39 · 742 阅读 · 0 评论 -
Android CarAudioFocus
在汽车音频中,音频焦点(Audio Focus)的处理和手机有所不同, 在具体介绍 AAOS中汽车音频焦点的实现之前, 需要了解一下Android的音频焦点机制,Android 引入音频焦点机制的主要目的是协调多个应用同时播放音频时产生的声音竞争的问题, 从而避免系统中有多个应用同时发声, 而导致声音混杂,影响用户体验.原创 2024-05-12 10:15:16 · 569 阅读 · 0 评论 -
Android CarAudioZone
在汽车领域,围绕多个用户同时与平台互动并且每个用户都希望使用单独媒体的需求,出现了一系列新的用例。例如,后座上的乘客在后座显示屏上观看 YouTube 视频时,司机可以在驾驶舱中播放音乐。多可用区音频允许不同的音频源通过车辆的不同可用区同时进行播放,从而实现此功能。Android 10 中的多可用区音频使原始设备制造商 (OEM) 能够将音频配置为不同的可用区。每个可用区由车辆内的一组设备组成,并且有各自的音量组、用于上下文的路由配置以及焦点管理。原创 2024-05-12 10:06:19 · 678 阅读 · 0 评论 -
Android13 CarAudioManager setVolumeGroupMute流程分析
以上方法调用了如下方法:调用CarVolumeGroup的setMute方法调用callbackGroupMuteChanged方法调用CarVolumeGroupMuting的carMuteChanged方法。原创 2024-05-12 09:44:23 · 365 阅读 · 0 评论 -
Android13 CarAudioManager setGroupVolume流程分析
这个流程比较长,我们分段理解和分析,首先是从CarAudioManager到IAudioPolicyService,这个阶段的流程图如下:调用了mService.setGroupVolume方法,mService的定义为“private final ICarAudio mService;上面方法主要处理如下:调用callbackGroupVolumeChange调用getCarVolumeGroupLocked取得VolumeGroup。原创 2024-05-12 09:38:37 · 755 阅读 · 0 评论 -
Android GroupVolume
汽车音频中新增了音量组的概念. 所谓音量组,就是将不同用途的声音进行归纳,按组对相关的音量进行控制,在进一步解释音量组的概念之前,先了解一下音频上下文(Audio Context)和音频属性(Audio Attribute)两个概念。Android中的每段声音都由相应的应用和声音生成的原因来识别, 然后Android设备会使用这些信息来确认如何呈现声音。音频上下文音频属性对象MUSICMEDIANAVIGATIONCALLRINGTONEALARMALARMUNKNOWNUNKNOWN。原创 2024-05-12 09:28:41 · 829 阅读 · 0 评论 -
Android13 CarAudioManager getZoneIdForUid流程分析
【代码】Android13 CarAudioManager getZoneIdForUid流程分析。原创 2024-05-12 09:24:35 · 182 阅读 · 0 评论 -
Android13 CarAudioManager setZoneIdForUid流程分析
调用ICarAudio的setZoneIdForUid方法,ICarAudio是一个接口,由CarAudioService实现,因此会调用CarAudioService的setZoneIdForUid方法。原创 2024-05-12 09:22:40 · 121 阅读 · 0 评论 -
Android13 CarAudioManager setFadeTowardFront流程分析
2、调用AudioControlWrapper的setFadeTowardFront方法,由于AudioControlWrapper是一个接口,而AudioControlWrapperAidl实现AudioControlWrapper接口,因此会调用到AudioControlWrapperAidl的AudioControlWrapper方法。调用IAudioControl的setFadeTowardFront方法,IAudioControl是一个接口,实际调用的是AudioControl HAL。原创 2024-05-12 09:20:44 · 158 阅读 · 0 评论 -
Android3 CarAudioService初始化流程分析
调用CarAudioDynamicRouting的setupAudioDynamicRouting方法,CarAudioDynamicRouting在Android Automotive OS系统中用于动态控制车载音频的路由。调用CarAudioPowerListener的newCarAudioPowerListener方法,创建CarAudioPowerListener对象。调用CarAudioPowerListener的startListeningForPolicyChanges方法。原创 2024-05-12 09:16:50 · 533 阅读 · 0 评论 -
Android13 CarAudioService启动流程分析
【代码】Android13 CarAudioService启动流程分析。原创 2024-05-12 09:03:16 · 121 阅读 · 0 评论 -
Android CarAudioService
void setVolumeGroupMute(int zoneId, int groupId, boolean mute, int flags):设置组音量静音。void setGroupVolume(int zoneId, int groupId, int index, int flags):设置组音量。int getGroupVolume(int zoneId, int groupId):获取组音量。int getVolumeGroupCount(int zoneId):获取音量组数量。原创 2024-05-12 09:01:37 · 498 阅读 · 0 评论 -
Android CarAudioManager
Audio Zone ID(AZID)是在Android O(Android 8)及以上版本中引入的一种音频区域标识符,用于标识不同的应用程序使用的不同音频输出设备和声道,以实现多个应用程序同时播放音频且互不干扰。void setGroupVolume(int zoneId, int groupId, int index, int flags):设置组音量。void setGroupVolume(int groupId, int index, int flags) :设置组音量。原创 2024-05-12 09:00:16 · 678 阅读 · 0 评论 -
Android CarAudio
Android Automotive OS (AAOS) 是在核心 Android 音频堆栈的基础之上打造而成,以支持用作车辆信息娱乐系统的用例。AAOS 负责实现信息娱乐声音(即媒体、导航和通讯声音),但不直接负责具有严格可用性和计时要求的铃声和警告。虽然 AAOS 提供了信号和机制来帮助车辆管理音频,但最终还是由车辆来决定应为驾驶员和乘客播放什么声音,从而确保对保障安全至关重要的声音和监管声音能被确切听到,而不会中断。原创 2024-05-12 08:57:39 · 1010 阅读 · 0 评论 -
Android Car
Android Automotive是Android的一部分。Android Automotive不是Android的分支或并行开发,它与手机,平板电脑等安卓设备上的Android具有相同的代码库,并且位于相同的存储库中。它基于经过10多年开发的强大平台和功能集,可利用现有的安全模型,兼容性程序,开发人员工具 和基础架构,同时继续具有高度可定制性和可移植性,完全免费和开源的特点。Android Automotive扩展了Android。原创 2024-05-12 08:46:55 · 653 阅读 · 0 评论 -
Android BluetoothSdp
服务发现协议,服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用,并确定这些可用服务的特征。SDP提供了应用发现可用服务以及确定可用服务特点的方法。1. 为客户提供搜索所需要服务的能力.2. 允许基于服务类型搜索服务3. 可抑执行服务浏览,而不需预先知道服务特征.4. 提供一种新的方法来搜索新的服务.5. 提供一种机制来确定在设备离开客户设备邻频时,设备在何时变为不可用.6. 提供对服务、服务类型和属性的唯一标识。原创 2024-05-11 21:12:30 · 119 阅读 · 0 评论