Android Car
文章平均质量分 75
一个学渣的自我救赎
这个作者很懒,什么都没留下…
展开
-
Android EvsHal
2、调用service(EvsEnumerator)的notifyDeviceStatusChange方法,通知设备状态变化。一个IEvsCamera对象即代表一个Camera,主要接口为捕获图像。1、调用addCaptureDevice方法,添加采集设备。EVS显示对象,可控制显示状态,并处理图像的实际呈现效果。客户端实现接口以接收异步传输的video frame。原创 2024-05-12 21:11:34 · 676 阅读 · 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 · 755 阅读 · 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 · 629 阅读 · 0 评论 -
Android EvsApp
此类可用于从 IEvsCamera 实现接收相机图像。它将保留最新的图像缓冲区,返回较旧的图像缓冲区。主力类的抽象基类,用于处理 EVS 应用程序每种模式的用户交互和显示。将所有可用摄像机的视图合并到一个重新投影的自上而下的视图中。将视图从单个指定的摄像机直接渲染到完整显示。将视图从单个指定的摄像机直接渲染到完整显示。此类运行 EVS 应用程序的主更新循环。原创 2024-05-12 11:43:48 · 848 阅读 · 0 评论 -
Android Vehicle
HalServiceBase是一个抽象类,它定义了HalService的架构,它的具体实现类包括ClusterHalService、DiagnosticHalService、EvsHalService、InputHalService、PowerHalService、PropertyHalService、TimeHalService、UserHalService、VmsHalService。VehicleHal是车辆 HAL的抽象。此类处理与本机 HAL 的接口,并对接收的数据进行基本解析。原创 2024-05-12 11:36:00 · 663 阅读 · 0 评论 -
Android13 CarEvsManager startVideoStream流程分析
上面方法主要处理如下:1、调用mHalWrapper(EvsHalWrapper)的connectToHalServiceIfNecessary方法,连接HalService。2、调用mHalWrapper(EvsHalWrapper)的openCamera方法,打开Camera。原创 2024-05-12 11:27:53 · 780 阅读 · 0 评论 -
Android CarEvs
一种服务,用于跨 HAL 边界侦听扩展视图系统,并通过 {@link android.car.evs.CarEvsManager} 向 Android 中的系统客户端公开数据。GPU 支持的 SurfaceView,用于呈现由 {@link CarEvsBufferDescriptor} 描述的硬件缓冲区。用于 CarEvsBufferDescriptor 的 GLES20 SurfaceView 渲染器。可更新的汽车服务使用的 EvaHalWrapper 实现。原创 2024-05-12 11:20:29 · 816 阅读 · 0 评论 -
Android13 InputHalService onHalEvents流程分析
在Vehicle章节,我们分析了Vehicle事件分发流程,在VehicleHal的onPropertyEvent中调用调用各个HalService的onHalEvents,如PowerHalService、PropertyHalService、InputHalService,之后由不同HalService继续对PropertyEvent进行处理。调用listener(InputListener)的onKeyEvent方法,原创 2024-05-12 11:12:55 · 297 阅读 · 0 评论 -
Android13 CarInputManager requestInputEventCapture流程分析
【代码】Android13 CarInputManager requestInputEventCapture流程分析。原创 2024-05-12 11:09:11 · 206 阅读 · 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 · 729 阅读 · 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 · 217 阅读 · 0 评论 -
Android13 CarPowerManager setListener流程分析
当CPMS启动后会向VHAL设置电源状态监听,当VHAL收到电源状态更新就会通过监听函数通知CPMS,然后CMPS会根据APP设置的电源状态变化监听调用APP的回调接口,到此从VHAL到APP的电源状态更新就建立起来了。原创 2024-05-12 11:03:08 · 175 阅读 · 0 评论 -
Android13 CarPowerManagementService启动流程分析
在CarPowerManagementService中init调用PowerHalService的setListener设置事件侦听器以接收车辆的电源事件。原创 2024-05-12 11:02:03 · 119 阅读 · 0 评论 -
Android CarPower
在Android Automotive OS (AAOS)中,CarPower负责车载电源的原理,它一面同libsusped交互控制AP(应用处理器,也就是Soc)的电源状态,一方面通过VehicleHAL与MCU通信接收和发送电源相关指令。原创 2024-05-12 10:59:52 · 823 阅读 · 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 · 890 阅读 · 0 评论 -
Android CarDucking
CarDucking用来处理声音的淡入和淡出,在CarAudioFocus处理中会被调用。原创 2024-05-12 10:42:56 · 285 阅读 · 0 评论 -
Android13 CarZonesAudioFocus onAudioFocusAbandon回调处理流程分析
上面方法进行如下处理:调用CarAudioFocus的onAudioFocusAbandon方法,进行音频焦点仲裁。调用notifyFocusCallback方法,进行Ducking处理。原创 2024-05-12 10:40:05 · 721 阅读 · 0 评论 -
Android13 CarAudioFocus onAudioFocusRequest回调处理流程分析
上面方法进行如下处理:调用getAudioZoneIdForAudioFocusInfo方法获取zoneId。调用CarAudioFocus的onAudioFocusRequest方法,进行音频焦点仲裁。调用notifyFocusCallback方法,进行Ducking处理。原创 2024-05-12 10:32:39 · 749 阅读 · 0 评论 -
Android CarAudioFocus
在汽车音频中,音频焦点(Audio Focus)的处理和手机有所不同, 在具体介绍 AAOS中汽车音频焦点的实现之前, 需要了解一下Android的音频焦点机制,Android 引入音频焦点机制的主要目的是协调多个应用同时播放音频时产生的声音竞争的问题, 从而避免系统中有多个应用同时发声, 而导致声音混杂,影响用户体验.原创 2024-05-12 10:15:16 · 572 阅读 · 0 评论 -
Android CarAudioZone
在汽车领域,围绕多个用户同时与平台互动并且每个用户都希望使用单独媒体的需求,出现了一系列新的用例。例如,后座上的乘客在后座显示屏上观看 YouTube 视频时,司机可以在驾驶舱中播放音乐。多可用区音频允许不同的音频源通过车辆的不同可用区同时进行播放,从而实现此功能。Android 10 中的多可用区音频使原始设备制造商 (OEM) 能够将音频配置为不同的可用区。每个可用区由车辆内的一组设备组成,并且有各自的音量组、用于上下文的路由配置以及焦点管理。原创 2024-05-12 10:06:19 · 680 阅读 · 0 评论 -
Android13 CarAudioManager setVolumeGroupMute流程分析
以上方法调用了如下方法:调用CarVolumeGroup的setMute方法调用callbackGroupMuteChanged方法调用CarVolumeGroupMuting的carMuteChanged方法。原创 2024-05-12 09:44:23 · 369 阅读 · 0 评论 -
Android13 CarAudioManager setGroupVolume流程分析
这个流程比较长,我们分段理解和分析,首先是从CarAudioManager到IAudioPolicyService,这个阶段的流程图如下:调用了mService.setGroupVolume方法,mService的定义为“private final ICarAudio mService;上面方法主要处理如下:调用callbackGroupVolumeChange调用getCarVolumeGroupLocked取得VolumeGroup。原创 2024-05-12 09:38:37 · 762 阅读 · 0 评论 -
Android GroupVolume
汽车音频中新增了音量组的概念. 所谓音量组,就是将不同用途的声音进行归纳,按组对相关的音量进行控制,在进一步解释音量组的概念之前,先了解一下音频上下文(Audio Context)和音频属性(Audio Attribute)两个概念。Android中的每段声音都由相应的应用和声音生成的原因来识别, 然后Android设备会使用这些信息来确认如何呈现声音。音频上下文音频属性对象MUSICMEDIANAVIGATIONCALLRINGTONEALARMALARMUNKNOWNUNKNOWN。原创 2024-05-12 09:28:41 · 836 阅读 · 0 评论 -
Android13 CarAudioManager getZoneIdForUid流程分析
【代码】Android13 CarAudioManager getZoneIdForUid流程分析。原创 2024-05-12 09:24:35 · 183 阅读 · 0 评论 -
Android13 CarAudioManager setZoneIdForUid流程分析
调用ICarAudio的setZoneIdForUid方法,ICarAudio是一个接口,由CarAudioService实现,因此会调用CarAudioService的setZoneIdForUid方法。原创 2024-05-12 09:22:40 · 125 阅读 · 0 评论 -
Android13 CarAudioManager setFadeTowardFront流程分析
2、调用AudioControlWrapper的setFadeTowardFront方法,由于AudioControlWrapper是一个接口,而AudioControlWrapperAidl实现AudioControlWrapper接口,因此会调用到AudioControlWrapperAidl的AudioControlWrapper方法。调用IAudioControl的setFadeTowardFront方法,IAudioControl是一个接口,实际调用的是AudioControl HAL。原创 2024-05-12 09:20:44 · 160 阅读 · 0 评论 -
Android3 CarAudioService初始化流程分析
调用CarAudioDynamicRouting的setupAudioDynamicRouting方法,CarAudioDynamicRouting在Android Automotive OS系统中用于动态控制车载音频的路由。调用CarAudioPowerListener的newCarAudioPowerListener方法,创建CarAudioPowerListener对象。调用CarAudioPowerListener的startListeningForPolicyChanges方法。原创 2024-05-12 09:16:50 · 537 阅读 · 0 评论 -
Android13 CarAudioService启动流程分析
【代码】Android13 CarAudioService启动流程分析。原创 2024-05-12 09:03:16 · 122 阅读 · 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 · 500 阅读 · 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 · 681 阅读 · 0 评论 -
Android CarAudio
Android Automotive OS (AAOS) 是在核心 Android 音频堆栈的基础之上打造而成,以支持用作车辆信息娱乐系统的用例。AAOS 负责实现信息娱乐声音(即媒体、导航和通讯声音),但不直接负责具有严格可用性和计时要求的铃声和警告。虽然 AAOS 提供了信号和机制来帮助车辆管理音频,但最终还是由车辆来决定应为驾驶员和乘客播放什么声音,从而确保对保障安全至关重要的声音和监管声音能被确切听到,而不会中断。原创 2024-05-12 08:57:39 · 1015 阅读 · 0 评论 -
Android Car
Android Automotive是Android的一部分。Android Automotive不是Android的分支或并行开发,它与手机,平板电脑等安卓设备上的Android具有相同的代码库,并且位于相同的存储库中。它基于经过10多年开发的强大平台和功能集,可利用现有的安全模型,兼容性程序,开发人员工具 和基础架构,同时继续具有高度可定制性和可移植性,完全免费和开源的特点。Android Automotive扩展了Android。原创 2024-05-12 08:46:55 · 666 阅读 · 0 评论