अपनी यात्रा और ऑर्डर की स्थिति बताने वाले ऐप्लिकेशन में बेहतर नेविगेशन और ट्रैकिंग की सुविधा देने के लिए, ड्राइवर का SDK टूल इस्तेमाल किया जा सकता है. ड्राइवर SDK टूल, गाड़ी की जगह की जानकारी और टास्क के अपडेट, मांग पर राइड और डिलीवरी करने में मदद करने वाले फ़्लीट इंजन की सुविधा देता है.
ड्राइवर SDK टूल, फ़्लीट इंजन की सेवाओं और आपकी पसंद के मुताबिक बनाई गई सेवाओं को वाहन की जगह और स्थिति की जानकारी देता रहता है. उदाहरण के लिए, वाहन ONLINE
या OFFLINE
हो सकता है और यात्रा के साथ-साथ वाहन की जगह बदल जाती है.
सिस्टम में कम से कम यह कॉन्फ़िगरेशन होना चाहिए
मोबाइल डिवाइस, Android 6.0 (एपीआई लेवल 23) या उसके बाद के वर्शन पर काम करता हो.
बिल्ड और डिपेंडेंसी का कॉन्फ़िगरेशन
ड्राइवर SDK टूल के 4.99 और इसके बाद के वर्शन, Google Maven रिपॉज़िटरी में उपलब्ध हैं.
ग्रेडल
अपनी build.gradle
फ़ाइल में ये चीज़ें जोड़ें:
repositories {
...
google()
}
Maven
अपनी pom.xml
फ़ाइल में ये चीज़ें जोड़ें:
<project>
...
<repositories>
<repository>
<id>google-maven-repository</id>
<url>https://maven.google.com</url>
</repository>
</repositories>
...
</project>
प्रोजेक्ट कॉन्फ़िगरेशन
ड्राइवर SDK टूल का इस्तेमाल करने के लिए, आपके ऐप्लिकेशन को
minSdkVersion
23 या उसके बाद के लेवल को टारगेट करना होगा.
ड्राइवर SDK टूल से बने ऐप्लिकेशन को चलाने के लिए, डिवाइस में Google Play services इंस्टॉल होना ज़रूरी है.
अपना डेवलपमेंट प्रोजेक्ट सेट अप करें
Google Cloud Console पर अपना डेवलपमेंट प्रोजेक्ट सेट अप करने और प्रोजेक्ट के लिए एपीआई पासकोड पाने के लिए:
ड्राइवर SDK टूल के साथ इस्तेमाल करने के लिए, नया Google Cloud Console प्रोजेक्ट बनाएं या कोई मौजूदा प्रोजेक्ट चुनें. कुछ मिनट इंतज़ार करें, जब तक कि Google Cloud Console पर नया प्रोजेक्ट न दिखने लगे.
डेमो ऐप्लिकेशन चलाने के लिए, आपके प्रोजेक्ट के पास Android के लिए Maps SDK का ऐक्सेस होना चाहिए. Google Cloud Console में, एपीआई और सेवाएं > लाइब्रेरी चुनें. इसके बाद, Android के लिए Maps SDK टूल खोजें और उसे चालू करें.
एपीआई और सेवाएं > क्रेडेंशियल > क्रेडेंशियल बनाएं > एपीआई पासकोड को चुनकर, प्रोजेक्ट के लिए एपीआई पासकोड पाएं. एपीआई पासकोड पाने के बारे में ज़्यादा जानकारी के लिए, एपीआई पासकोड पाना देखें.
अपने ऐप्लिकेशन में ड्राइवर SDK टूल जोड़ना
ड्राइवर SDK टूल, Google Maven रिपॉज़िटरी में उपलब्ध है. डेटा स्टोर करने की जगह में SDK टूल के प्रोजेक्ट ऑब्जेक्ट मॉडल (.pom) फ़ाइलें और Javadocs शामिल हैं. अपने ऐप्लिकेशन में ड्राइवर SDK टूल जोड़ने के लिए:
अपने Gradle या Maven कॉन्फ़िगरेशन में, यहां दी गई डिपेंडेंसी जोड़ें. ड्राइवर SDK टूल के मनचाहे वर्शन के लिए,
VERSION_NUMBER
प्लेसहोल्डर को बदलें.ग्रेडल
अपने
build.gradle
में यह जोड़ें:dependencies { ... implementation 'com.google.android.libraries.mapsplatform.transportation:transportation-driver:VERSION_NUMBER' }
Maven
अपने
pom.xml
में यह जोड़ें:<dependencies> ... <dependency> <groupId>com.google.android.libraries.mapsplatform.transportation</groupId> <artifactId>transportation-driver</artifactId> <version>VERSION_NUMBER</version> </dependency> </dependencies>
ड्राइवर SDK, नेविगेशन SDK पर निर्भर करता है. इस डिपेंडेंसी को इस तरह से कॉन्फ़िगर किया जाता है कि अगर नेविगेशन SDK के किसी खास वर्शन की ज़रूरत हो, तो उसे बिल्ड कॉन्फ़िगरेशन फ़ाइल में साफ़ तौर पर परिभाषित किया जाना चाहिए. नीचे दिए गए कोड ब्लॉक को छोड़ने से प्रोजेक्ट, नेविगेशन SDK का सबसे नया वर्शन हमेशा मुख्य रिलीज़ वर्शन में डाउनलोड कर सकेगा. ध्यान दें कि ड्राइवर SDK टूल और नेविगेशन SDK टूल के नए वर्शन को रिलीज़ करने से पहले, दोनों की सख्ती से जांच की गई है.
अपने डेवलपमेंट और रिलीज़ एनवायरमेंट के डिपेंडेंसी कॉन्फ़िगरेशन को उसी हिसाब से व्यवस्थित करें.
ग्रेडल
अपने
build.gradle
में यह जोड़ें:dependencies { ... implementation 'com.google.android.libraries.navigation:navigation:5.0.0' }
Maven
अपने
pom.xml
में यह जोड़ें:<dependencies> ... <dependency> <groupId>com.google.android.libraries.navigation</groupId> <artifactId>navigation</artifactId> <version>5.0.0</version> </dependency> </dependencies>
अपने ऐप्लिकेशन में एपीआई पासकोड जोड़ना
अपने ऐप्लिकेशन में ड्राइवर SDK टूल जोड़ने के बाद, अपने ऐप्लिकेशन में एपीआई पासकोड जोड़ें. आपको अपना डेवलपमेंट प्रोजेक्ट सेट अप करते समय, मिले प्रोजेक्ट API पासकोड का इस्तेमाल करना होगा.
इस सेक्शन में, एपीआई पासकोड को सेव करने का तरीका बताया गया है, ताकि आपका ऐप्लिकेशन उसे ज़्यादा सुरक्षित तरीके से इस्तेमाल कर सके. आपको अपने वर्शन कंट्रोल सिस्टम में एपीआई पासकोड नहीं देखना चाहिए. इसे local.properties
फ़ाइल में सेव किया जाना चाहिए, जो आपके प्रोजेक्ट की रूट डायरेक्ट्री में मौजूद होती है. local.properties
फ़ाइल के बारे में ज़्यादा जानकारी के लिए, Gradle प्रॉपर्टी फ़ाइलें देखें.
इस टास्क को व्यवस्थित करने के लिए, Android के लिए सीक्रेट ग्रेडल प्लगिन का इस्तेमाल किया जा सकता है.
प्लग इन इंस्टॉल करने और अपनी एपीआई कुंजी सेव करने के लिए:
अपनी रूट-लेवल
build.gradle
फ़ाइल खोलें औरbuildscript
में मौजूदdependencies
एलिमेंट में यहां दिया गया कोड जोड़ें.ग्रूवी
buildscript { dependencies { // ... classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.0" } }
Kotlin
buildscript { dependencies { // ... classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.0") } }
अपनी ऐप्लिकेशन-लेवल
build.gradle
फ़ाइल खोलें और इस कोड कोplugins
एलिमेंट में जोड़ें.ग्रूवी
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
Kotlin
id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
अगर Android Studio का इस्तेमाल किया जा रहा है, तो अपने प्रोजेक्ट को Gradle के साथ सिंक करें.
local.properties
को अपनी प्रोजेक्ट लेवल की डायरेक्ट्री में खोलें. इसके बाद, यहां दिया गया कोड जोड़ें.YOUR_API_KEY
को अपनी एपीआई पासकोड से बदलें.MAPS_API_KEY=YOUR_API_KEY
अपनी
AndroidManifest.xml
फ़ाइल में,com.google.android.geo.API_KEY
पर जाएं औरandroid:value
एट्रिब्यूट को यहां दिए गए तरीके से अपडेट करें:<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />
नीचे दिए गए उदाहरण में, सैंपल ऐप्लिकेशन के लिए एक पूरा मेनिफ़ेस्ट दिखाया गया है:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.driverapidemo">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/_AppTheme">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${MAPS_API_KEY}" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
अपने ऐप्लिकेशन में ज़रूरी एट्रिब्यूशन शामिल करना
अगर आपके ऐप्लिकेशन में ड्राइवर SDK टूल का इस्तेमाल किया जाता है, तो आपको अपने ऐप्लिकेशन के कानूनी नोटिस वाले सेक्शन में, एट्रिब्यूशन टेक्स्ट और ओपन सोर्स लाइसेंस शामिल करने होंगे. एट्रिब्यूशन को एक इंडिपेंडेंट मेन्यू आइटम या इसके बारे में जानकारी मेन्यू आइटम के हिस्से के रूप में शामिल करना सबसे अच्छा होता है.
लाइसेंस की जानकारी, संग्रह से निकाली गई AAR फ़ाइल की "third_party_लाइसेंस.txt" फ़ाइल में देखी जा सकती है.
ओपन सोर्स सूचनाओं को शामिल करने का तरीका जानने के लिए, https://developers.google.com/android/guides/opensource देखें.
डिपेंडेंसी
अगर अपने बिल्ड ऑप्टिमाइज़ करने के लिए ProGuard का इस्तेमाल किया जाता है, तो आपको ProGuard कॉन्फ़िगरेशन फ़ाइल में ये लाइनें जोड़नी पड़ सकती हैं:
-dontwarn com.google.**
-dontwarn okio.**
कम से कम 23 एपीआई लेवल काम करता है.
SDK टूल शुरू किया जा रहा है
DriverContext
ऑब्जेक्ट को शुरू करने के लिए, प्रोवाइडर आईडी (आम तौर पर, Google Cloud प्रोजेक्ट आईडी) की ज़रूरत होती है. Google Cloud प्रोजेक्ट सेट अप करने के बारे में ज़्यादा जानने के लिए, पुष्टि करना और अनुमति देना देखें.
ड्राइवर SDK टूल का इस्तेमाल करने से पहले, आपको नेविगेशन SDK टूल को शुरू करना होगा. SDK टूल शुरू करने के लिए:
NavigationApi
सेNavigator
ऑब्जेक्ट पाएं.Java
NavigationApi.getNavigator( this, // Activity new NavigationApi.NavigatorListener() { @Override public void onNavigatorReady(Navigator navigator) { // Keep a reference to the Navigator (used to configure and start nav) this.navigator = navigator; } } );
Kotlin
NavigationApi.getNavigator( this, // Activity object : NavigatorListener() { override fun onNavigatorReady(navigator: Navigator) { // Keep a reference to the Navigator (used to configure and start nav) this@myActivity.navigator = navigator } }, )
ज़रूरी फ़ील्ड में अपने-आप जानकारी भरकर,
DriverContext
ऑब्जेक्ट बनाएं.Java
DriverContext driverContext = DriverContext.builder(application) .setProviderId(providerId) .setVehicleId(vehicleId) .setAuthTokenFactory(authTokenFactory) .setNavigator(navigator) .setRoadSnappedLocationProvider( NavigationApi.getRoadSnappedLocationProvider(application)) .build();
Kotlin
val driverContext = DriverContext.builder(application) .setProviderId(providerId) .setVehicleId(vehicleId) .setAuthTokenFactory(authTokenFactory) .setNavigator(navigator) .setRoadSnappedLocationProvider(NavigationApi.getRoadSnappedLocationProvider(application)) .build()
*DriverApi
शुरू करने के लिए,DriverContext
ऑब्जेक्ट का इस्तेमाल करें.Java
RidesharingDriverApi ridesharingDriverApi = RidesharingDriverApi.createInstance(driverContext);
Kotlin
val ridesharingDriverApi = RidesharingDriverApi.createInstance(driverContext)
एपीआई ऑब्जेक्ट से
RidesharingVehicleReporter
पाएं. (*VehicleReporter
NavigationVehicleReporter
तक विस्तृत होता है.)Java
RidesharingVehicleReporter vehicleReporter = ridesharingDriverApi.getRidesharingVehicleReporter();
Kotlin
val vehicleReporter = ridesharingDriverApi.getRidesharingVehicleReporter()
AuthTokenFactory
की मदद से पुष्टि की जा रही है
जब ड्राइवर SDK टूल जगह की जानकारी के अपडेट जनरेट करता है,
तो उसे इन अपडेट को Fleet Engine के सर्वर
को भेजना चाहिए. इन अनुरोधों की पुष्टि करने के लिए, Driver SDK टूल, कॉलर के दिए गए AuthTokenFactory
इंस्टेंस पर कॉल करेगा.
जगह के अपडेट के समय पर पुष्टि करने वाले टोकन जनरेट करने की ज़िम्मेदारी फ़ैक्ट्री की होती है.
टोकन कैसे जनरेट होते हैं, हर डेवलपर की स्थिति के हिसाब से यह अलग-अलग होगा. हालांकि, लागू करने के लिए शायद ये काम करने होंगे:
- किसी एचटीटीपीएस सर्वर से, पुष्टि करने वाला टोकन फ़ेच किया जा सकता है. यह टोकन, JSON फ़ॉर्मैट में हो सकता है
- टोकन को पार्स और कैश मेमोरी में सेव करें
- समयसीमा खत्म होने पर, टोकन को रीफ़्रेश करें
अगर आपको फ़्लीट इंजन सर्वर से मिले टोकन के बारे में जानकारी चाहिए, तो अनुमति पाने के लिए JSON वेब टोकन (JWT) बनाना लेख पढ़ें.
यहां AuthTokenFactory
को लागू करने के तरीके की जानकारी दी गई है:
Java
class JsonAuthTokenFactory implements AuthTokenFactory {
private String token; // initially null
private long expiryTimeMs = 0;
// This method is called on a thread whose only responsibility is to send
// location updates. Blocking is OK, but just know that no location updates
// can occur until this method returns.
@Override
public String getToken(AuthTokenContext authTokenContext) {
if (System.currentTimeMillis() > expiryTimeMs) {
// The token has expired, go get a new one.
fetchNewToken(authTokenContext.getVehicleId());
}
return token;
}
private void fetchNewToken(String vehicleId) {
String url =
new Uri.Builder()
.scheme("https")
.authority("yourauthserver.example")
.appendPath("token")
.appendQueryParameter("vehicleId", vehicleId)
.build()
.toString();
try (Reader r = new InputStreamReader(new URL(url).openStream())) {
com.google.gson.JsonObject obj
= com.google.gson.JsonParser.parseReader(r).getAsJsonObject();
token = obj.get("Token").getAsString();
expiryTimeMs = obj.get("TokenExpiryMs").getAsLong();
// The expiry time could be an hour from now, but just to try and avoid
// passing expired tokens, we subtract 10 minutes from that time.
expiryTimeMs -= 10 * 60 * 1000;
} catch (IOException e) {
// It's OK to throw exceptions here. The StatusListener you passed to
// create the DriverContext class will be notified and passed along the failed
// update warning.
throw new RuntimeException("Could not get auth token", e);
}
}
}
Kotlin
class JsonAuthTokenFactory : AuthTokenFactory() {
private var token: String = ""
private var expiryTimeMs: Long = 0
// This method is called on a thread whose only responsibility is to send
// location updates. Blocking is OK, but just know that no location updates
// can occur until this method returns.
override fun getToken(context: AuthTokenContext): String {
if (System.currentTimeMillis() > expiryTimeMs) {
// The token has expired, go get a new one.
fetchNewToken(authTokenContext.getVehicleId())
}
return token
}
fun fetchNewToken(vehicleId: String) {
val url =
Uri.Builder()
.scheme("https")
.authority("yourauthserver.example")
.appendPath("token")
.appendQueryParameter("vehicleId", vehicleId)
.build()
.toString()
try {
val reader = InputStreamReader(URL(url).openStream())
reader.use {
val obj = com.google.gson.JsonParser.parseReader(r).getAsJsonObject()
token = obj.get("ServiceToken").getAsString()
expiryTimeMs = obj.get("TokenExpiryMs").getAsLong()
// The expiry time could be an hour from now, but just to try and avoid
// passing expired tokens, we subtract 10 minutes from that time.
expiryTimeMs -= 10 * 60 * 1000
}
} catch (e: IOException) {
// It's OK to throw exceptions here. The StatusListener you passed to
// create the DriverContext class will be notified and passed along the failed
// update warning.
throw RuntimeException("Could not get auth token", e)
}
}
}
खास तौर पर, लागू करने के इस तरीके में पहले से मौजूद Java एचटीटीपी क्लाइंट का इस्तेमाल होता है. इससे डेवलपर के ऑथेंटिकेशन सर्वर से JSON फ़ॉर्मैट में टोकन फ़ेच किया जाता है. टोकन को फिर से इस्तेमाल करने के लिए सेव किया जाता है. अगर पुराना टोकन, समयसीमा खत्म होने के 10 मिनट के अंदर है, तो टोकन को फिर से फ़ेच किया जाता है.
इसे लागू करने का तरीका अलग हो सकता है. जैसे, टोकन रीफ़्रेश करने के लिए बैकग्राउंड थ्रेड का इस्तेमाल करना.
AuthTokenFactory
में अपवादों को तब तक कुछ समय के लिए माना जाएगा, जब तक वे बार-बार न हों. कई बार कोशिश करने के बाद, ड्राइवर SDK टूल
यह मान लेगा कि गड़बड़ी हमेशा के लिए है. साथ ही, वह अपडेट भेजना बंद कर देगा.
StatusListener
से शिकायत की स्थिति और गड़बड़ी की जानकारी
ड्राइवर SDK टूल, बैकग्राउंड में कार्रवाइयां करता है. इसलिए, गड़बड़ियों, चेतावनियों या डीबग मैसेज जैसे कुछ इवेंट की सूचनाएं ट्रिगर करने के लिए, StatusListener
का इस्तेमाल करें. गड़बड़ियां कुछ समय के लिए हो सकती हैं (जैसे कि BACKEND_CONNECTIVITY_ERROR
). इसके अलावा, उनकी वजह से जगह की जानकारी के अपडेट हमेशा के लिए बंद हो सकते हैं (जैसे कि VEHICLE_NOT_FOUND
, कॉन्फ़िगरेशन की गड़बड़ी दिखाना).
आप नीचे दिए गए उदाहरण की तरह एक वैकल्पिक StatusListener
लागू करते हैं:
Java
class MyStatusListener implements StatusListener {
/** Called when background status is updated, during actions such as location reporting. */
@Override
public void updateStatus(
StatusLevel statusLevel, StatusCode statusCode, String statusMsg) {
// Status handling stuff goes here.
// StatusLevel may be DEBUG, INFO, WARNING, or ERROR.
// StatusCode may be DEFAULT, UNKNOWN_ERROR, VEHICLE_NOT_FOUND,
// BACKEND_CONNECTIVITY_ERROR, or PERMISSION_DENIED.
}
}
Kotlin
class MyStatusListener : StatusListener() {
/** Called when background status is updated, during actions such as location reporting. */
override fun updateStatus(statusLevel: StatusLevel, statusCode: StatusCode, statusMsg: String) {
// Status handling stuff goes here.
// StatusLevel may be DEBUG, INFO, WARNING, or ERROR.
// StatusCode may be DEFAULT, UNKNOWN_ERROR, VEHICLE_NOT_FOUND,
// BACKEND_CONNECTIVITY_ERROR, or PERMISSION_DENIED.
}
}
एसएसएल/टीएलएस के बारे में जानकारी
ड्राइवर SDK टूल, इंटरनल तौर पर
फ़्लीट इंजन सर्वर के साथ सुरक्षित तरीके से कम्यूनिकेट करने के लिए एसएसएल/टीएलएस का इस्तेमाल करता है. Android के पुराने वर्शन (एपीआई वर्शन 19 या इससे पहले के वर्शन) में सर्वर से संपर्क करने के लिए, SecurityProvider
पैच की ज़रूरत हो सकती है. Android में एसएसएल के साथ काम करने के बारे में ज़्यादा जानकारी के लिए, यह लेख पढ़ें. इस लेख में
सुरक्षा सेवा देने वाली कंपनी को पैच करने के लिए, कोड के सैंपल भी दिए गए हैं.
जगह की जानकारी के अपडेट चालू किए जा रहे हैं
*VehicleReporter
इंस्टेंस मिलने के बाद, जगह की जानकारी के अपडेट की सुविधा चालू करना आसान हो जाता है:
Java
RidesharingVehicleReporter reporter = ...;
reporter.enableLocationTracking();
Kotlin
val reporter = ...
reporter.enableLocationTracking()
जब वाहन की स्थिति ONLINE
होती है, तब जगह की जानकारी के अपडेट एक तय समय में भेजे जाते हैं. ध्यान दें कि reporter.enableLocationTracking()
को कॉल करने से वाहन की स्थिति अपने-आप ONLINE
पर सेट नहीं होती. आपको वाहन की स्थिति सेट करनी होगी.
डिफ़ॉल्ट रूप से, रिपोर्टिंग का इंटरवल 10 सेकंड का होता है. रिपोर्टिंग इंटरवल को reporter.setLocationReportingInterval(long, TimeUnit)
की मदद से बदला जा सकता है. अपडेट के लिए, कम से कम पांच सेकंड का इंटरवल इस्तेमाल किया जा सकता है. ज़्यादा बार अपडेट होने की वजह से,
अनुरोधों और गड़बड़ियों की वजह से देरी हो सकती है.
जगह की जानकारी के अपडेट पाने की सुविधा बंद की जा रही है
ड्राइवर की शिफ़्ट पूरी होने के बाद, जगह की जानकारी को अपडेट होने से रोका जा सकता है. साथ ही, वाहन को ऑफ़लाइन मार्क करने के लिए, DeliveryVehicleReporter.disableLocationTracking
या RidesharingVehicleReporter.disableLocationTracking
को कॉल किया जा सकता है.
इस कॉल में, डिलीवरी के लिए एक आखिरी अपडेट शेड्यूल किया जाएगा. इससे पता चलेगा कि वाहन ऑफ़लाइन है. इस अपडेट में उपयोगकर्ता की जगह की जानकारी शामिल नहीं होगी.
वाहन की स्थिति सेट करना
जगह की जानकारी के अपडेट की सुविधा चालू होने पर, वाहन की स्थिति को ONLINE
पर सेट करने से, SearchVehicles
क्वेरी के लिए वाहन उपलब्ध हो जाएगा. इसी तरह, वाहन को OFFLINE
के तौर पर मार्क करने से वाहन को 'उपलब्ध नहीं है' के तौर पर मार्क किया जाएगा.
आपके पास सर्वर साइड पर वाहन की स्थिति सेट करने का विकल्प होता है (वाहन अपडेट करें सेक्शन देखें) या सीधे ड्राइवर SDK टूल में जाकर:
Java
RidesharingVehicleReporter reporter = ...;
reporter.enableLocationTracking();
reporter.setVehicleState(VehicleState.ONLINE);
Kotlin
val reporter = ...
reporter.enableLocationTracking()
reporter.setVehicleState(VehicleState.ONLINE)
जगह की जानकारी के अपडेट चालू होने पर, जगह की जानकारी के अगले अपडेट पर setVehicleState
को कॉल किया जाएगा.
जगह की जानकारी को ट्रैक करने की सुविधा चालू न होने पर, वाहन को ONLINE
के तौर पर मार्क करने पर, एक IllegalStateException
दिखेगा. किसी वाहन को OFFLINE
के तौर पर तब मार्क किया जा सकता है,
जब जगह की ट्रैकिंग की सुविधा अभी चालू न हो या उसे साफ़ तौर पर बंद किया गया हो. इससे तुरंत अपडेट
हो जाएगा. RidesharingVehicleReporter.disableLocationTracking()
को कॉल करने से, वाहन की स्थिति OFFLINE
पर सेट हो जाएगी.
ध्यान दें कि setVehicleState
तुरंत लौटता है और जगह के अपडेट की जानकारी देने वाले थ्रेड पर अपडेट पूरा हो जाता है. जगह की जानकारी के अपडेट को मैनेज करने में होने वाली गड़बड़ियों की तरह ही, वाहन की स्थिति अपडेट करने से जुड़ी गड़बड़ियां, DriverContext
में वैकल्पिक रूप से दिए गए StatusListener
सेट का इस्तेमाल करके पब्लिश की जाती हैं.