Android के लिए ड्राइवर SDK टूल का इस्तेमाल शुरू करना

बेहतर नेविगेशन और ट्रैकिंग की सुविधा देने के लिए, ड्राइवर 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 टूल की मदद से बनाए गए किसी ऐप्लिकेशन को चलाने के लिए, Android डिवाइस में होना ज़रूरी है Google Play services इंस्टॉल किया गया.

अपना डेवलपमेंट प्रोजेक्ट सेट अप करें

अपना डेवलपमेंट प्रोजेक्ट सेट अप करने और एपीआई पासकोड पाने के लिए Google Cloud Console पर प्रोजेक्ट के लिए:

  1. इस्तेमाल करने के लिए, Google Cloud Console में नया प्रोजेक्ट बनाएं या कोई मौजूदा प्रोजेक्ट चुनें ड्राइवर SDK टूल से साइन इन किया है. इस तारीख तक कुछ मिनट इंतज़ार करें नया प्रोजेक्ट, Google Cloud Console पर दिखता है.

  2. डेमो ऐप्लिकेशन चलाने के लिए, आपके प्रोजेक्ट के पास Maps SDK का ऐक्सेस होना चाहिए Android के लिए. Google Cloud Console में जाकर, एपीआई और सेवाएं > लाइब्रेरी पर जाएं, फिर इसके लिए Maps SDK टूल खोजें और चालू करें Android.

  3. चुनकर प्रोजेक्ट के लिए एपीआई पासकोड पाएं एपीआई और सेवाएं > क्रेडेंशियल > क्रेडेंशियल बनाएं > API पासकोड. API कुंजी प्राप्त करने के बारे में ज़्यादा जानकारी के लिए, यहां देखें एपीआई पासकोड पाएं.

अपने ऐप्लिकेशन में ड्राइवर SDK टूल जोड़ना

ड्राइवर SDK टूल, Google Maven रिपॉज़िटरी में उपलब्ध है. कॉन्टेंट बनाने रिपॉज़िटरी में SDK टूल का Project Object Model (.pom) फ़ाइलें और Javadocs शामिल होते हैं. अपने ऐप्लिकेशन में ड्राइवर SDK टूल जोड़ने के लिए:

  1. अपने 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>
    
  2. ड्राइवर 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 टूल जोड़ने के बाद, अपने ऐप्लिकेशन में एपीआई पासकोड जोड़ें. आपने लोगों तक पहुंचाया मुफ़्त में को उसी Project API कुंजी का उपयोग करना होगा जिसे आपने अपना डेवलपमेंट प्रोजेक्ट सेट अप करें.

इस सेक्शन में, एपीआई पासकोड को सेव करने का तरीका बताया गया है, ताकि इसे ज़्यादा सुरक्षित रखा जा सके आपके ऐप्लिकेशन में मौजूद है. आपको अपने वर्शन में एपीआई पासकोड की जांच नहीं करनी चाहिए कंट्रोल सिस्टम पर काम करता है. इसे local.properties फ़ाइल में सेव किया जाना चाहिए, जो जो आपके प्रोजेक्ट की रूट डायरेक्ट्री में मौजूद होती है. इस बारे में ज़्यादा जानकारी पाने के लिए local.properties फ़ाइल, देखें Gradle प्रॉपर्टी फ़ाइलें.

इस टास्क को आसान बनाने के लिए, Android के लिए सीक्रेट ग्रेडल प्लग इन.

प्लग इन इंस्टॉल करने और अपनी एपीआई कुंजी सेव करने के लिए:

  1. अपनी रूट-लेवल 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")
        }
    }
    
  2. अपनी ऐप्लिकेशन-लेवल की build.gradle फ़ाइल खोलें और यहां दिए गए कोड को plugins एलिमेंट.

    ग्रूवी

    id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    

    Kotlin

    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    
  3. अगर Android Studio का इस्तेमाल किया जा रहा है, तो Gredle के साथ प्रोजेक्ट सिंक करते हैं.

  4. local.properties को अपनी प्रोजेक्ट लेवल की डायरेक्ट्री में खोलें. इसके बाद, . YOUR_API_KEY को अपनी एपीआई पासकोड से बदलें.

    MAPS_API_KEY=YOUR_API_KEY
    
  5. अपनी 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 टूल का इस्तेमाल करते हैं, तो आपको अपने ऐप्लिकेशन के कानूनी नोटिस में, एट्रिब्यूशन टेक्स्ट और ओपन सोर्स लाइसेंस का इस्तेमाल करें सेक्शन में जाएं. एट्रिब्यूशन को एक इंडिपेंडेंट मेन्यू आइटम के रूप में या इस तरह शामिल करना सबसे अच्छा विकल्प है इसके बारे में जानकारी मेन्यू आइटम का हिस्सा.

लाइसेंस की जानकारी, "third_party_लाइसेंस.txt" पर देखी जा सकती है फ़ाइल इन संग्रह से निकाली गई AAR फ़ाइल.

https://developers.google.com/android/guides/opensource देखें में, ओपन सोर्स नोटिस शामिल करने के बारे में बताया गया है.

डिपेंडेंसी

अगर ProGuard का इस्तेमाल करके, अपने बिल्ड ऑप्टिमाइज़ करें, तो आपको अपने ProGuard में ये लाइनें जोड़नी पड़ सकती हैं कॉन्फ़िगरेशन फ़ाइल:

-dontwarn com.google.**
-dontwarn okio.**

कम से कम 23 एपीआई लेवल काम करता है.

SDK टूल शुरू किया जा रहा है

सेवा देने वाली कंपनी का आईडी (आम तौर पर, Google Cloud प्रोजेक्ट आईडी) ज़रूरी है. DriverContext ऑब्जेक्ट शुरू करें. सेट अप करने के बारे में ज़्यादा जानने के लिए Google Cloud प्रोजेक्ट, देखें पुष्टि करना और अनुमति देना.

ड्राइवर SDK टूल इस्तेमाल करने से पहले, आपको शुरू करना होगा नेविगेशन SDK टूल. SDK टूल शुरू करने के लिए:

  1. 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
        }
      },
    )
    
  2. ज़रूरी फ़ील्ड में अपने-आप जानकारी भरकर, 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()
    
  3. *DriverApi शुरू करने के लिए, DriverContext ऑब्जेक्ट का इस्तेमाल करें.

    Java

    RidesharingDriverApi ridesharingDriverApi = RidesharingDriverApi.createInstance(driverContext);
    

    Kotlin

    val ridesharingDriverApi = RidesharingDriverApi.createInstance(driverContext)
    
  4. एपीआई ऑब्जेक्ट से RidesharingVehicleReporter पाएं. (*VehicleReporter NavigationVehicleReporter तक विस्तृत होता है.)

    Java

    RidesharingVehicleReporter vehicleReporter = ridesharingDriverApi.getRidesharingVehicleReporter();
    

    Kotlin

    val vehicleReporter = ridesharingDriverApi.getRidesharingVehicleReporter()
    

AuthTokenFactory की मदद से पुष्टि की जा रही है

जब ड्राइवर SDK टूल, जगह की जानकारी के अपडेट जनरेट करता है, तो इसे ये अपडेट फ़्लीट इंजन सर्वर का इस्तेमाल कर रहे हैं. इन अनुरोधों को प्रमाणित करने के लिए, ड्राइवर 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) के साथ बदला जाएगा. कॉन्टेंट बनाने कम से कम समर्थित अपडेट अंतराल 5 सेकंड है. ज़्यादा बार अपडेट होने पर शायद इससे अनुरोध धीमे हो सकते हैं और गड़बड़ियां हो सकती हैं.

जगह की जानकारी के अपडेट पाने की सुविधा बंद की जा रही है

जब ड्राइवर की शिफ़्ट खत्म हो जाए, तो स्थान अपडेट रोके जा सकते हैं और कॉल करके वाहन को ऑफ़लाइन मार्क किया गया 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 सेट किया गया.