مهامّ في التطبيقات للسيارات

يتيح التحكّم الصوتي للسائقين تنفيذ المهام بدون ترك عجلة القيادة أو إبعاد النظر عن الطريق. باستخدام مهامّ في التطبيقات لتطبيقات السيارات، يمكن للسائقين استخدام Gemini أو مساعد Google للتحكّم في تطبيقات Android على نظام الترفيه والمعلومات من خلال قول عبارات مثل "Ok Google، ابحث عن موقف سيارات في الشارع في ExampleApp".

تعمل "مهامّ في التطبيقات" مع تطبيقات السيارات التي تعرض نقاط الاهتمام. يغطّي هذا الدليل المتطلبات والقيود المحدّدة لدمج مهامّ في التطبيقات في تطبيقك الخاص بنقاط الاهتمام.

آلية العمل

توسّع "مهامّ في التطبيقات" وظائف تطبيقك لتشمل Gemini أو "مساعد Google"، ما يتيح للمستخدمين الوصول إلى ميزات التطبيق باستخدام أصواتهم. عندما يستدعي المستخدم "إجراء تطبيق"، يطابق Gemini أو "مساعد Google" طلب البحث مع هدف مدمج (BII) تم تحديده في مورد shortcuts.xml الخاص بتطبيقك، ويشغّل تطبيقك على الشاشة المطلوبة.

يمكنك الإشارة إلى أنّ تطبيقك يتيح استخدام BII من خلال عناصر capability في Android. عند تحميل تطبيقك باستخدام Google Play Console، تسجّل Google الإمكانات الموضّحة في تطبيقك وتتيح للمستخدمين الوصول إليها من Gemini أو "مساعد Google".

رسم بياني يعرض عملية استلام السيارة

  1. يطلب مستخدم من Gemini أو "مساعد Google" فتح تطبيق معيّن باستخدام الصوت.
  2. يطابق Gemini أو "مساعد Google" الطلب مع نموذج مدرَّب مسبقًا (أداة مدمجة)، ويستخرج أي مَعلمات متوافقة مع الأداة المدمجة.
  3. في هذا المثال، يطابق Gemini أو "مساعد Google" طلب البحث مع GET_CHARGING_STATION BII، ويستخرج مَعلمة الموقع الجغرافي "SFO"، ويحوّل الموقع الجغرافي إلى إحداثياته الجغرافية.
  4. يتم تشغيل التطبيق من خلال تعريف التنفيذ الخاص بهذا الطلب المضمّن.
  5. يعالج التطبيق عملية التنفيذ، ويعرض خيارات محطات الشحن في نظام الترفيه والمعلومات الخاص بالسائق.

القيود

تتضمّن عمليات تنفيذ "مهامّ في التطبيقات" في السيارات القيود التالية:

المتطلبات

اتّبِع الخطوات التالية لإعداد تطبيق السيارة لاستخدام "مهامّ في التطبيقات":

  • استيفاء المتطلبات العامة لتطبيقات Android التي تتوافق مع ميزة "مهامّ في التطبيقات"
  • تضمين عنصر Car App Library الاعتمادي لمعرفة التفاصيل، راجِع مقالة تعريف التبعيات.

تحديد النية والتنفيذ

تتمثّل الخطوة الأولى في إتاحة استخدام تطبيق سيارة عبر الصوت من خلال "مهامّ في التطبيقات" في تحديد طلبات المستخدمين الصوتية أو النوايا التي يتيحها تطبيقك. بعد ذلك، تحدّد عملية تنفيذ لكل هدف لتحديد الطريقة التي يجب أن يستوفي بها تطبيقك الطلب.

  • ما هي الأهداف التي يدعمها تطبيق السيارة؟

    توفّر "مهامّ في التطبيقات" نماذج صوتية مُدرَّبة مسبقًا، تُعرف باسم "الأهداف المضمّنة" (BII)، والتي يمكنها فهم الطلبات الصوتية التي يوجّهها المستخدمون وتفسيرها عند قولهم Ok Google. للردّ على الطلبات الصوتية، ما عليك سوى الإفصاح لـ Gemini أو "مساعد Google" عن النوايا المضمّنة (BII) التي يتيحها تطبيقك. على سبيل المثال، إذا كنت تريد أن يساعد تطبيقك في العثور على موقف سيارات، عليك تنفيذ GET_PARKING_FACILITY BII. أو يمكنك تنفيذGET_CHARGING_STATION BII لمساعدة المستخدمين في العثور على محطات شحن السيارات الكهربائية.

  • كيف يجب أن يلبّي تطبيقك كل هدف؟

    يستجيب تطبيقك للطلب الصوتي من خلال فتح الشاشة المناسبة. توفّر "مهامّ في التطبيقات" لك تنفيذ الطلب مع مَعلمات مستخرَجة من طلب المستخدم، ما يتيح لك تخصيص ردّك حسب احتياجات المستخدم.

دمج "مهام في التطبيقات"

بعد تحديد استراتيجية التنفيذ، اتّبِع الخطوات التالية لتفعيل ميزة التحكم الصوتي في تطبيق سيارتك:

  1. افتح نشاطك الرئيسي AndroidManifest.xml وأضِف إمكانية استخدام اختصارات Android. يمكنك استخدام عناصر الاختصار capability للإشارة إلى Gemini أو "مساعد Google" إلى واجهات BII التي يتيحها تطبيقك. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إضافة إمكانات.

     <!-- AndroidManifest.xml -->
     <meta-data
         android:name="android.app.shortcuts"
         android:resource="@xml/shortcuts" />
    
  2. بعد ذلك، أضِف عنصر <intent-filter> إلى AndroidManifest.xml. يتيح ذلك لـ Gemini أو "مساعد Google" استخدام الروابط لصفحات في التطبيق للوصول إلى محتوى تطبيقك.

    • بالنسبة إلى تنفيذ الطلبات في Android Auto، يكون <intent-filter> هو نفسه تطبيقك على الأجهزة الجوّالة.

    • في نظام التشغيل Android Automotive، تؤدي مشغّلات جلسة CarAppService في تطبيقك إلى تفعيل Gemini أو "مساعد Google". للسماح لجلسة بتفعيل الرابط لصفحة في التطبيق، حدِّد <intent-filter> في العنصر <activity> من AndroidManifest.xml.

    <!-- AndroidManifest.xml -->
    <activity
      ...
      android:name="androidx.car.app.activity.CarAppActivity">
      ...
      <intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <data
            android:scheme="YOUR_SCHEME"
            android:host="YOUR_HOST" />
      </intent-filter>
    </activity>
    
  3. إذا لم يكن لديك ملف shortcuts.xml في دليل res/xml لتطبيقك، أنشئ ملفًا جديدًا. للحصول على معلومات حول كيفية استخدام "مهامّ في التطبيقات" لاختصارات Android، راجِع إنشاء shortcuts.xml.

    في shortcuts.xml، نفِّذ capability لواجهة برمجة التطبيقات المدمجة (BII) التي اخترتها. بعد ذلك، أضِف <intent> متداخلة لتحديد عملية تنفيذ الطلب في التطبيق.

    <!-- shortcuts.xml -->
    <?xml version="1.0" encoding="utf-8"?>
    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    
      <capability android:name="actions.intent.GET_PARKING_FACILITY">
        <intent>
          <url-template
          android:value="YOUR_SCHEME://YOUR_HOST{?name,address,disambiguatingDescription,latitude,longitude}">
    
          <!-- Facility name, e.g. "Googleplex" -->
          <parameter
            android:name="parkingFacility.name"
            android:key="name"/>
          <!-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" -->
          <parameter
            android:name="parkingFacility.address"
            android:key="address"/>
          <!-- Disambiguate the type of service, e.g. "valet" -->
          <parameter
            android:name="parkingFacility.disambiguatingDescription"
            android:key="disambiguatingDescription"/>
          <!-- Latitude, e.g. "37.3861" -->
          <parameter
            android:name="parkingFacility.geo.latitude"
            android:key="latitude"/>
          <!-- Longitude, e.g. "-122.084" -->
          <parameter
            android:name="parkingFacility.geo.longitude"
            android:key="longitude"/>
        </intent>
      </capability>
    </shortcuts>
    
  4. أخيرًا، عدِّل منطق Session() في تطبيق السيارة للتعامل مع تنفيذ طلبات App Actions الواردة. توضّح الأمثلة التالية كيفية التعامل مع الأهداف لكل من Session.onCreateScreen() وSession.onNewIntent().

    onCreateScreen()‎

    Kotlin

    @Override
    fun onCreateScreen(@NonNull intent: Intent): Screen {
      if (intent.getData() != null) {
          val uri: Uri = intent.getData()
          // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
          // Build your Templates with parsed uri parameters
      ...
     }
    }

    Java

    @Override
    public Screen onCreateScreen(@NonNull Intent intent) {
    if (intent.getData() != null) {
      Uri uri = intent.getData();
      // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
      // Build your Templates with parsed uri parameters
    ...
    }
    }

    onNewIntent()‎

    Kotlin

    @Override
    fun onNewIntent(@NonNull intent: Intent): Screen {
      if (intent.getData() != null) {
          val uri: Uri = intent.getData()
          // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
          // Build your Templates with parsed uri parameters
          ...
      }
    }

    Java

    @Override
    public void onNewIntent(@NonNull Intent intent) {
    if (intent.getData() != null) {
     Uri uri = intent.getData();
     // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
     // Build your Templates with parsed uri parameters
     ...
    }
    }

معاينة تطبيقك واختباره ونشره

توفّر "مهامّ في التطبيقات" أدوات لمعاينة تطبيقك واختباره. يُرجى الانتقال إلى نظرة عامة على "مهامّ في التطبيقات" للحصول على معلومات حول هذه الأدوات وتفاصيل حول كيفية نشر تطبيقك المتوافق مع السيارات والمزوّد بميزة التحكم الصوتي على "متجر Play".