audio干货分享:车载audio开发必知必会的调试命令
文章目录
- 背景:
- 车载音频相关命令调试输出学习
- 手机和车机公共音频调试命令
- dumpsys media.audio_flinger
- dumpsys media.audio_policy
- dumpsys audio
- 车机独享的命令部分
- dumpsys car_service
- dumpsys car_service --list
- dumpsys car_service --services CarAudioService
- 控制操作车载音频相关命令:
背景:
车载Audio其实本质上就是在原来手机那一套audio基础上额外进行了扩展,如扩展了CarAudioService,所以在做车载音频子系统开发调试时候不仅仅需要使用手机音频开发调试命令如:dumpsys media.audio_flinger, dumpsys media.audio_policy, dumpsys audio等命令,还需要使用针对车机音频独享的一些音频调试命令也非常的重要,下面重点将介绍车机音频调试常用的一些命令。
车载音频相关命令调试输出学习
手机和车机公共音频调试命令
dumpsys media.audio_flinger
media.audio_flinger 是 Android 音频系统中负责音频数据处理和播放的核心服务之一。通过 dumpsys media.audio_flinger 命令,开发者可以获取关于音频播放、混音以及音频硬件交互等多方面的详细信息,这对于深入分析音频问题至关重要。
dumpsys media.audio_policy
media.audio_policy 服务主要负责管理音频策略,包括音频设备的选择、音频路由以及音频流策略的制定。dumpsys media.audio_policy 命令能够提供与音频策略相关的详细信息,帮助开发者理解和调试音频在不同场景下的行为。
dumpsys audio
dumpsys audio 命令提供了一个更综合、全面的音频系统信息视图,涵盖了音频服务、设备状态、音量设置等多个方面,是音频调试中常用的基础命令。
车机独享的命令部分
dumpsys car_service
命令介绍:
该命令主要用于与 Android 车载系统中的 car_service 进行交互,获取各类车载相关的信息,执行模拟操作,辅助开发者、测试人员对车载系统进行调试、优化以及故障排查。这个直接使用dumpsys car_service命令是输出车机相关的所有调试信息,所以信息量会非常巨大,如果只是对车载某个模块感兴趣完全可以只输出过滤某个模块就可以。
dumpsys car_service --list
使用 dumpsys car_service --list列出支持的各个子服务名字:
dumpsys car_service--list执行后展示如下:
com.android.car.oem.CarOemProxyService com.android.car.hal.VehicleHal com.android.car.CarFeatureController com.android.car.CarPropertyService com.android.car.CarDrivingStateService com.android.car.CarOccupantZoneService com.android.car.CarUxRestrictionsManagerService com.android.car.am.CarActivityService com.android.car.pm.CarPackageManagerService com.android.car.user.CarUserService com.android.car.SystemActivityMonitoringService com.android.car.power.CarPowerManagementService com.android.car.user.CarUserNoticeService com.android.car.CarPerUserServiceHelper com.android.car.bluetooth.CarBluetoothService com.android.car.CarInputService com.android.car.CarProjectionService com.android.car.garagemode.GarageModeService com.android.car.AppFocusService com.android.car.audio.CarAudioService com.android.car.CarNightService com.android.car.am.FixedActivityService com.android.car.cluster.ClusterNavigationService com.android.car.stats.CarStatsService com.android.car.vms.VmsBrokerService com.android.car.CarDiagnosticService com.android.car.CarStorageMonitoringService com.android.car.CarLocationService com.android.car.CarMediaService com.android.car.CarBugreportManagerService com.android.car.watchdog.CarWatchdogService com.android.car.os.CarPerformanceService com.android.car.admin.CarDevicePolicyService com.android.car.cluster.ClusterHomeService com.android.car.evs.CarEvsService com.android.car.telemetry.CarTelemetryService com.android.car.wifi.CarWifiService com.android.car.occupantconnection.CarRemoteDeviceService com.android.car.occupantconnection.CarOccupantConnectionService com.android.car.CarExperimentalFeatureServiceController只输出某个模块的dump,可以用dumpsys car_service --services xxx服务,注意这里的xx服务一般只需要后面的名字,不需要完整的类名路径,比如com.android.car.audio.CarAudioService,就只需要CarAudioService。
dumpsys car_service --services CarAudioService
比如我们感兴趣是CarAudioService,那么就可以只展示这一部分输出,可以使用如下命令:
dumpsys car_service--servicesCarAudioService控制操作车载音频相关命令:
如果有一些需求是需要主动改变audio一些特性情况,就需要相关的audio控制命令,那么主要使用下面命令进行控制:
adb shell cmd car_service xxx adb shell dumpsys car_service xxx两个命令是等效的,如果不知道具体dumpsys car_service有哪些可以控制操作的命令,那么可以后面加上-h参数。
帮助命令:
adb shell dumpsys car_service-h命令输出详情
test@test:~/disk_2T/aosp16$ adb shell dumpsys car_service-h//省略其他 set-audio-zone-for-uid[zoneid][uid]Maps the audio zoneid to uid. reset-selected-volume-context Resets the last selected volume contextforvolume changes. set-mute-car-volume-group[zoneId][groupId][mute\unmute]mute\unmute groupIdinzoneId set-group-volume[zoneId][groupId][volume]sets the group volumefor[groupId]in[zoneId]to %volume,[volume]must be an integer between0to100set-audio-mirror[zoneId1][zoneId2]sets audio mirrorforzones[zoneId1]and[zoneId2],[zoneId#] must be a valid zone idunset-audio-mirror[value][--requestId]unsets audio mirrorforzone[value],[value]must be a valid zoneiduse--requestIdto disable a requestidinstead //省略其他主要介绍一下音频管理的相关命令
set-audio-zone-for-uid [zoneid] [uid]:将音频区域 ID 映射到用户 ID。
set-mute-car-volume-group [zoneId] [groupId] [mute|unmute]:在指定区域 ID 中静音或取消静音指定的音量组。
set-group-volume [zoneId] [groupId] [volume]:设置指定区域 ID 中指定音量组的音量(0 - 100)。
set-audio-mirror [zoneId1] [zoneId2]:设置两个音频区域之间的音频镜像。
unset-audio-mirror [value] [–requestId]:取消指定音频区域的音频镜像,可通过–requestId禁用指定请求 ID 的镜像。
更多framework干货,请关注“千里马学框架”
