CarInfoManager.java revision 6745635909d050c57f5a08bfc28580feb0f2cfe0
1e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park/* 2e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * Copyright (C) 2015 The Android Open Source Project 3e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * 4e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * Licensed under the Apache License, Version 2.0 (the "License"); 5e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * you may not use this file except in compliance with the License. 6e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * You may obtain a copy of the License at 7e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * 8e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * http://www.apache.org/licenses/LICENSE-2.0 9e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * 10e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * Unless required by applicable law or agreed to in writing, software 11e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * distributed under the License is distributed on an "AS IS" BASIS, 12e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * See the License for the specific language governing permissions and 14e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * limitations under the License. 15e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park */ 16e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park 17e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Parkpackage android.support.car; 18e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park 19e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Parkimport android.os.Bundle; 206745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Parkimport android.support.annotation.StringDef; 21e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Parkimport android.support.car.annotation.ValueTypeDef; 22e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park 236745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Parkimport java.lang.annotation.Retention; 246745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Parkimport java.lang.annotation.RetentionPolicy; 256745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park 26e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park/** 276745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * Utility to retrieve various static information from car. Each data are grouped as {@link Bundle} 286745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * and relevant data can be checked from {@link Bundle} using pre-specified keys. 29e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park */ 30e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Parkpublic abstract class CarInfoManager implements CarManagerBase { 31e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park 32e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park /** 336745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * Key for manufacturer of the car. Should be used for {@link android.os.Bundle} acquired from 346745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * {@link #getBasicCarInfo()}. 35e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park */ 36e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park @ValueTypeDef(type = String.class) 376745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final String BASIC_INFO_KEY_MANUFACTURER = "android.car.manufacturer"; 38e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park /** 396745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * Key for model name of the car. This information may not necessarily allow distinguishing 406745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * different car models as the same name may be used for different cars depending on 416745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * manufacturers. Should be used for {@link android.os.Bundle} acquired from 426745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * {@link #getBasicCarInfo()}. 43e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park */ 44e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park @ValueTypeDef(type = String.class) 456745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final String BASIC_INFO_KEY_MODEL = "android.car.model"; 46e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park /** 476745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * Key for model year of the car in AC. Should be used for {@link android.os.Bundle} acquired 486745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * from {@link #getBasicCarInfo()}. 49e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park */ 50e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park @ValueTypeDef(type = Integer.class) 516745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final String BASIC_INFO_KEY_MODEL_YEAR = "android.car.model-year"; 52e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park /** 536745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * Key for unique identifier for the car. This is not VIN, and id is persistent until user 546745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * resets it. Should be used for {@link android.os.Bundle} acquired from 556745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * {@link #getBasicCarInfo()}. 56e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park */ 57e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park @ValueTypeDef(type = String.class) 586745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final String BASIC_INFO_KEY_VEHICLE_ID = "android.car.vehicle-id"; 59e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park 60b13dbe470108846d1c04494c5c0d2bf3cd9b8054Jason Tholstrup /** Manufacturer of the head unit.*/ 61b13dbe470108846d1c04494c5c0d2bf3cd9b8054Jason Tholstrup @ValueTypeDef(type = String.class) 626745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final String BASIC_INFO_KEY_HEAD_UNIT_MAKE = "android.car.headUnitMake"; 63b13dbe470108846d1c04494c5c0d2bf3cd9b8054Jason Tholstrup /** Model of the head unit.*/ 64b13dbe470108846d1c04494c5c0d2bf3cd9b8054Jason Tholstrup @ValueTypeDef(type = String.class) 656745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final String BASIC_INFO_KEY_HEAD_UNIT_MODEL = "android.car.headUnitModel"; 6619c8ab20a71c725316241f4b0c8f44ce18c39d39Heidi von Markham /** Software build of the head unit. */ 67b13dbe470108846d1c04494c5c0d2bf3cd9b8054Jason Tholstrup @ValueTypeDef(type = String.class) 686745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final String BASIC_INFO_KEY_HEAD_UNIT_SOFTWARE_BUILD = 696745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park "android.car.headUnitSoftwareBuild"; 7019c8ab20a71c725316241f4b0c8f44ce18c39d39Heidi von Markham /** Software version of the head unit. */ 71b13dbe470108846d1c04494c5c0d2bf3cd9b8054Jason Tholstrup @ValueTypeDef(type = String.class) 726745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final String BASIC_INFO_KEY_HEAD_UNIT_SOFTWARE_VERSION = 736745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park "android.car.headUnitSoftwareVersion"; 746745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park /** Location of driver's seat (one of the BASIC_INFO_DRIVER_SIDE_* constants). */ 75b13dbe470108846d1c04494c5c0d2bf3cd9b8054Jason Tholstrup @ValueTypeDef(type = Integer.class) 766745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final String BASIC_INFO_KEY_DRIVER_POSITION = "android.car.driverPosition"; 776745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park 786745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park /** @hide */ 796745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park @StringDef({ 806745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park BASIC_INFO_KEY_MANUFACTURER, 816745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park BASIC_INFO_KEY_MODEL, 826745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park BASIC_INFO_KEY_MODEL_YEAR, 836745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park BASIC_INFO_KEY_VEHICLE_ID, 846745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park BASIC_INFO_KEY_HEAD_UNIT_MAKE, 856745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park BASIC_INFO_KEY_HEAD_UNIT_MODEL, 866745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park BASIC_INFO_KEY_HEAD_UNIT_SOFTWARE_BUILD, 876745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park BASIC_INFO_KEY_HEAD_UNIT_SOFTWARE_VERSION, 886745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park BASIC_INFO_KEY_DRIVER_POSITION 896745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park }) 906745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park @Retention(RetentionPolicy.SOURCE) 916745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public @interface BasicInfoKeys {} 92b13dbe470108846d1c04494c5c0d2bf3cd9b8054Jason Tholstrup 9319c8ab20a71c725316241f4b0c8f44ce18c39d39Heidi von Markham /** Location of the driver: left. */ 946745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final int BASIC_INFO_DRIVER_SIDE_LEFT = 0; 9519c8ab20a71c725316241f4b0c8f44ce18c39d39Heidi von Markham /** Location of the driver: right. */ 966745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final int BASIC_INFO_DRIVER_SIDE_RIGHT = 1; 9719c8ab20a71c725316241f4b0c8f44ce18c39d39Heidi von Markham /** Location of the driver: center. */ 986745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public static final int BASIC_INFO_DRIVER_SIDE_CENTER = 2; 99e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park 100e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park /** 1016745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * Get {@link android.os.Bundle} containing basic car information. Check 1026745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * {@link #BASIC_INFO_KEY_MANUFACTURER}, {@link #BASIC_INFO_KEY_MODEL}, 1036745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * {@link #BASIC_INFO_KEY_MODEL_YEAR}, and {@link #BASIC_INFO_KEY_VEHICLE_ID} for supported 1046745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * keys in the {@link android.os.Bundle}. 1056745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * @return {@link android.os.Bundle} containing basic car info. 1066745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park * @throws CarNotConnectedException 107e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park */ 1086745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park public abstract Bundle getBasicInfo() throws CarNotConnectedException; 109e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park} 110