कार ऐप्लिकेशन एपीआई के लेवल 3 से, वाहन की प्रॉपर्टी और सेंसर का डेटा ऐक्सेस करने के लिए, कार ऐप्लिकेशन लाइब्रेरी के एपीआई का इस्तेमाल किया जा सकता है.
ज़रूरी शर्तें
Android Auto के साथ एपीआई का इस्तेमाल करने के लिए, अपने Android Auto मॉड्यूल की build.gradle फ़ाइल में, androidx.car.app:app-projected पर डिपेंडेंसी जोड़ें. Android Automotive OS के लिए, अपने Android Automotive OS मॉड्यूल की build.gradle फ़ाइल में, androidx.car.app:app-automotive पर डिपेंडेंसी जोड़ें.
इसके अलावा, आपको अपनी AndroidManifest.xml फ़ाइल में, कार का वह डेटा ऐक्सेस करने के लिए ज़रूरी अनुमतियों का एलान करना होगा जिसे आपको इस्तेमाल करना है. उपयोगकर्ता को ये
अनुमतियां भी देनी होंगी. प्लेटफ़ॉर्म के हिसाब से अलग-अलग फ़्लो बनाने के बजाय, Android Auto और Android Automotive OS पर
एक ही कोड का इस्तेमाल किया जा सकता है. हालांकि, इसके लिए अलग-अलग अनुमतियों की ज़रूरत होती है.
CarInfo
इस टेबल में, CarInfo एपीआई में दी गई प्रॉपर्टी और उनका इस्तेमाल करने के लिए ज़रूरी
अनुमतियों के बारे में बताया गया है.
| तरीके | प्रॉपर्टी | अनुमतियां: Android Auto |
अनुमतियां: AAOS |
कार ऐप्लिकेशन एपीआई |
|---|---|---|---|---|
fetchModel |
ब्रैंड, मॉडल, साल | android.car.permission.CAR_INFO |
3 | |
fetchEnergyProfile |
ईवी कनेक्टर के टाइप, ईंधन के टाइप | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_INFO |
3 |
fetchExteriorDimensions
यह डेटा, एपीआई 30 या इसके बाद के वर्शन पर चलने वाली कुछ AAOS गाड़ियों में ही उपलब्ध है. |
गाड़ी के बाहरी डाइमेंशन | लागू नहीं | android.car.permission.CAR_INFO |
7 |
| टोल कार्ड का स्टेटस, टोल कार्ड का टाइप | 3 | |||
| बैटरी लेवल, ईंधन लेवल, ईंधन लेवल कम होने की जानकारी, गाड़ी कितनी दूरी तक जा सकती है | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| रफ़्तार का रॉ डेटा, डिसप्ले पर दिखने वाली रफ़्तार (कार के क्लस्टर डिसप्ले पर दिखने वाली रफ़्तार) | com.google.android.gms.permission.CAR_SPEED |
android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| ओडोमीटर की दूरी | com.google.android.gms.permission.CAR_MILEAGE |
यह डेटा, Google Play से इंस्टॉल किए गए Android Automotive OS ऐप्लिकेशन के लिए उपलब्ध नहीं है. | 3 |
उदाहरण के लिए, गाड़ी कितनी दूरी तक जा सकती है, यह जानने के लिए, CarInfo ऑब्जेक्ट को इंस्टैंशिएट करें. इसके बाद, OnCarDataAvailableListener बनाएं और रजिस्टर करें:
Kotlin
val carInfo = carContext.getCarService(CarHardwareManager::class.java).carInfo
val listener = OnCarDataAvailableListener<EnergyLevel> { data ->
if (data.rangeRemainingMeters.status == CarValue.STATUS_SUCCESS) {
val rangeRemaining = data.rangeRemainingMeters.value
} else {
// Handle error
}
}
carInfo.addEnergyLevelListener(carContext.mainExecutor, listener)
…
// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener)
Java
CarInfo carInfo = getCarContext().getCarService(CarHardwareManager.class).getCarInfo();
OnCarDataAvailableListener<EnergyLevel> listener = (data) -> {
if(data.getRangeRemainingMeters().getStatus() == CarValue.STATUS_SUCCESS) {
float rangeRemaining = data.getRangeRemainingMeters().getValue();
} else {
// Handle error
}
};
carInfo.addEnergyLevelListener(getCarContext().getMainExecutor(), listener);
…
// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener);
यह न मान लें कि कार का डेटा हर समय उपलब्ध रहेगा. अगर आपको कोई
गड़बड़ी मिलती है, तो आपने जिस वैल्यू का अनुरोध किया है उसकास्टेटस देखें. इससे आपको यह समझने में मदद मिलेगी कि आपने जिस डेटा का अनुरोध किया था उसे क्यों नहीं पाया जा सका
. CarInfo
क्लास की परिभाषा के बारे में ज़्यादा जानने के लिए, रेफ़रंस दस्तावेज़ देखें.
CarSensors
CarSensors क्लास की मदद से, गाड़ी के एक्सलरोमीटर,
जाइरोस्कोप, कंपास, और जगह की जानकारी का डेटा ऐक्सेस किया जा सकता है. इन वैल्यू की उपलब्धता, ओईएम पर निर्भर कर सकती है. एक्सलरोमीटर, जाइरोस्कोप,
और कंपास से मिलने वाले डेटा का फ़ॉर्मैट वही होता है जो आपको SensorManager एपीआई से मिलता है.
उदाहरण के लिए, गाड़ी की दिशा की जानकारी देखने के लिए:
Kotlin
val carSensors = carContext.getCarService(CarHardwareManager::class.java).carSensors
val listener = OnCarDataAvailableListener<Compass> { data ->
if (data.orientations.status == CarValue.STATUS_SUCCESS) {
val orientation = data.orientations.value
} else {
// Data not available, handle error
}
}
carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, carContext.mainExecutor, listener)
…
// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener)
Java
CarSensors carSensors = getCarContext().getCarService(CarHardwareManager.class).getCarSensors();
OnCarDataAvailableListener<Compass> listener = (data) -> {
if (data.getOrientations().getStatus() == CarValue.STATUS_SUCCESS) {
List<Float> orientations = data.getOrientations().getValue();
} else {
// Data not available, handle error
}
};
carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, getCarContext().getMainExecutor(),
listener);
…
// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener);
कार से जगह की जानकारी का डेटा ऐक्सेस करने के लिए, आपको android.permission.ACCESS_FINE_LOCATION अनुमति का एलान करना होगा और इसके लिए अनुरोध करना होगा.
टेस्ट
Android Auto पर टेस्ट करते समय, सेंसर डेटा को सिम्युलेट करने के लिए, डेस्कटॉप हेड यूनिट की गाइड में सेंसर और सेंसर कॉन्फ़िगरेशन सेक्शन देखें. Android Automotive OS पर टेस्ट करते समय, सेंसर डेटा को सिम्युलेट करने के लिए, Android Automotive OS एम्युलेटर गाइड में हार्डवेयर की स्थिति को एम्युलेट करना लेख पढ़ें.