Car App API के लेवल 3 से, वाहन की प्रॉपर्टी और सेंसर को ऐक्सेस करने के लिए, Car App Library API का इस्तेमाल किया जा सकता है.
ज़रूरी शर्तें
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 |
Car App API |
|---|---|---|---|---|
fetchModel |
ब्रैंड, मॉडल, साल | android.car.permission.CAR_INFO |
3 | |
fetchEnergyProfile |
ईवी कनेक्टर के टाइप, ईंधन के टाइप | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_INFO |
3 |
fetchExteriorDimensions
यह डेटा, AAOS की सुविधा वाले सिर्फ़ उन वाहनों में उपलब्ध है जो एपीआई 30 या उसके बाद के वर्शन पर काम करते हैं. |
बाहरी डाइमेंशन | लागू नहीं | 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 एम्युलेटर गाइड में हार्डवेयर की स्थिति का अनुकरण करना लेख पढ़ें.