Android Automotive(八) 调试方法

Android Automotive(八) 调试方法

Android Automotive的框架前面已经介绍完了,今天介绍一下关于Android Automotive的调试方法。

EmbeddedKitchenSinkApp

EmbeddedKitchenSinkApp 是Android Automotive提供的一个应用层Demo程序,在应用里实现大CAR API的大量接口调用,并提供界面展示。

关于接口调用以及显示效果都可以参考这个应用程序。

代码路径:packages/services/Car/tests/EmbeddedKitchenSinkApp

EmbeddedKitchenSinkApp 主界面

在这里插入图片描述

property 界面

在这里插入图片描述

location 界面

在这里插入图片描述

volume 界面

扫描二维码关注公众号,回复: 15050764 查看本文章

在这里插入图片描述

vehicle-hal-tool

Android8支持的(AnroidR上已删除)

hardware/libhardware/tests/vehicle/vehicle-hal-tool.c
加载车载 HAL 并执行简单操作的命令行原生工具。它有助于系统在开发的早期阶段启动并运行。

carservice_test

packages/services/Car/tests/carservice_test/

UT Test。包含使用模拟车载 HAL 属性进行的汽车服务测试。每个属性的预期行为都会在测试中实现,这是了解预期行为的绝佳起点。

vehiclehal_test

packages/services/Car/tests/vehiclehal_test
UT Test VehicleHALTest 测试车辆属性接口,调用CarPropertyManager

emulator模拟器

Android Automotive提供了一个测试车辆属性接口的模拟器,文件在packages/services/Car/tools/emulator目录下。可以模拟几个车辆属性变化。

需要PyQt4支持,python2.x版本。运行命令:

python gui.py

在这里插入图片描述

其它工具

  • python code tool
    packages/services/Car/tools
    在packages/services/Car/tools/emulator处理模拟器,还有一些辅助工具。

  • ply
    代码路径 external/ply/ply
    一个python库,用来解析hal文件

ADB命令

adb命令,通过dumpsys activity service的实现,来完成一个虚拟属性事件的上报。

通过命令模拟车辆属性上报命令:

  • 非GLOBAL属性:

    adb shell dumpsys activity service CarService inject-vhal-event <property> <zone> <value>
    
  • GLOBAL属性:

    adb shell dumpsys activity service CarService inject-vhal-event <property> >value>
    

[property] 查看javadoc, 对应车辆属性的十进制值
[zone] 参考区域值
[value] 自行设置

支持类型

BOOLEAN,INT32,INT32_VEC,FLOAT,FLOAT_VEC

  • BOOLEAN
  • INT32
  • INT32_VEC
  • FLOAT
  • FLOAT_VEC

例子
传入INTl类型:

adb shell dumpsys activity service CarService inject-vhal-event <property> 1

传入数组,逗号分割:

adb shell dumpsys activity service CarService inject-vhal-event <property> 1,2,3

传入BOOLEAN:

TRUE : adb shell dumpsys activity service CarService inject-vhal-event <property> 1
FALSE: adb shell dumpsys activity service CarService inject-vhal-event <property> 0

区域值

  • VehicleAreaDoor

    public final class VehicleAreaDoor {
          
          
        field public static final int DOOR_HOOD = 268435456; // 0x10000000
        field public static final int DOOR_REAR = 536870912; // 0x20000000
        field public static final int DOOR_ROW_1_LEFT = 1; // 0x1
        field public static final int DOOR_ROW_1_RIGHT = 4; // 0x4
        field public static final int DOOR_ROW_2_LEFT = 16; // 0x10
        field public static final int DOOR_ROW_2_RIGHT = 64; // 0x40
        field public static final int DOOR_ROW_3_LEFT = 256; // 0x100
        field public static final int DOOR_ROW_3_RIGHT = 1024; // 0x400
    }
    
  • VehicleAreaMirror

    public final class VehicleAreaMirror {
          
          
        field public static final int MIRROR_DRIVER_CENTER = 4; // 0x4
        field public static final int MIRROR_DRIVER_LEFT = 1; // 0x1
        field public static final int MIRROR_DRIVER_RIGHT = 2; // 0x2
    }
    
  • VehicleAreaSeat

    public final class VehicleAreaSeat {
          
          
        field public static final int SEAT_ROW_1_CENTER = 2; // 0x2
        field public static final int SEAT_ROW_1_LEFT = 1; // 0x1
        field public static final int SEAT_ROW_1_RIGHT = 4; // 0x4
        field public static final int SEAT_ROW_2_CENTER = 32; // 0x20
        field public static final int SEAT_ROW_2_LEFT = 16; // 0x10
        field public static final int SEAT_ROW_2_RIGHT = 64; // 0x40
        field public static final int SEAT_ROW_3_CENTER = 512; // 0x200
        field public static final int SEAT_ROW_3_LEFT = 256; // 0x100
        field public static final int SEAT_ROW_3_RIGHT = 1024; // 0x400
        field public static final int SEAT_UNKNOWN = 0; // 0x0
    }
    
  • VehicleAreaWindow

    public final class VehicleAreaWindow {
          
          
        field public static final int WINDOW_FRONT_WINDSHIELD = 1; // 0x1
        field public static final int WINDOW_REAR_WINDSHIELD = 2; // 0x2
        field public static final int WINDOW_ROOF_TOP_1 = 65536; // 0x10000
        field public static final int WINDOW_ROOF_TOP_2 = 131072; // 0x20000
        field public static final int WINDOW_ROW_1_LEFT = 16; // 0x10
        field public static final int WINDOW_ROW_1_RIGHT = 64; // 0x40
        field public static final int WINDOW_ROW_2_LEFT = 256; // 0x100
        field public static final int WINDOW_ROW_2_RIGHT = 1024; // 0x400
        field public static final int WINDOW_ROW_3_LEFT = 4096; // 0x1000
        field public static final int WINDOW_ROW_3_RIGHT = 16384; // 0x4000
    }
    
  • VehicleAreaWheel

    public final class VehicleAreaWheel {
          
          
        field public static final int WHEEL_LEFT_FRONT = 1; // 0x1
        field public static final int WHEEL_LEFT_REAR = 4; // 0x4
        field public static final int WHEEL_RIGHT_FRONT = 2; // 0x2
        field public static final int WHEEL_RIGHT_REAR = 8; // 0x8
        field public static final int WHEEL_UNKNOWN = 0; // 0x0
    }
    

猜你喜欢

转载自blog.csdn.net/Jun_P/article/details/127116741