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