اهداف برنامه ناوبری را پیاده سازی کنید

Gemini از سه قالب مختلف از intentها استفاده می‌کند که برنامه ناوبری شما می‌تواند از آنها پشتیبانی کند. شما می‌توانید با اعلام فیلترهای intent که در این صفحه به تفصیل شرح داده شده‌اند، در مانیفست برنامه خود، به قابلیت همکاری و ادغام برنامه خود و Gemini دست یابید. برای کسب اطلاعات بیشتر در مورد intentها، به Intent مراجعه کنید.

کلاس Intent برنامه ناوبری Gemini از intent های زیر پشتیبانی می کند:

  • قصد ناوبری
  • هدف جستجو
  • قصد اقدام سفارشی

جریان داده هدف

شکل ۱. جریان داده‌های Intent.

پارامترهای موجود در داده‌های intent

داده‌های Intent از یک قالب URI پیروی می‌کنند که شامل پارامترهایی بر اساس Intent ارسالی شما است. برخی از پارامترها همیشه در داده‌ها ارائه می‌شوند. این بدان معناست که می‌توانید انتظار داشته باشید که آنها همیشه مقدار صریحی داشته باشند. با این حال، پارامترهای اختیاری همیشه مقداری در داده‌ها ندارند. برای اطلاعات بیشتر، به Data test مراجعه کنید.

اهداف آفلاین

تمام intent های ذکر شده در این صفحه، انواع آفلاین خود را نیز دارند. شما می‌توانید با اضافه کردن .offline به طرح آنها، آنها را از هم تشخیص دهید. به عنوان مثال، intent ناوبری از طرح geo.offline استفاده می‌کند. این فیلترهای intent در manifest، توانایی برنامه را برای پشتیبانی از این اقدامات به صورت آفلاین نشان می‌دهند.

از یک اینتنت ناوبری برای انجام درخواست کاربر جهت پیمایش به یک مقصد خاص استفاده کنید. این مقصد می‌تواند یک مکان (آدرس) یا چندین مکان (به عنوان مثال، کافی‌شاپ‌ها و پمپ بنزین‌ها) باشد. داده‌های اینتنت از یک قالب URI مشخص شده برای هر اینتنت پیروی می‌کنند.

قالب هدف

کلاس Intent از فرمت زیر برای intent برنامه ناوبری استفاده می‌کند:

دسته بندی: android.intent.category.DEFAULT

اقدام:

  • سیستم عامل اندروید اتو و اندروید اتوموبیل: androidx.car.app.action.NAVIGATE
  • سایر عوامل شکل: android.intent.action.NAVIGATE

طرح: geo

مثال‌ها:

  • geo:0,0?q=Googleplex
  • geo:0,0?q=1600+Amphitheatre+parkway&mode=b&intent=add_a_stop
  • geo:0,0?q=coffee+shop&mode=w&intent=navigation
  • geo:1.1,2.2?q=Starbucks+on+Main+Street&mode=w&intent=navigation

رفتار پیشنهادی برنامه: پیمایش به مکان مشخص‌شده شروع می‌شود یا از کاربر خواسته می‌شود از بین چندین گزینه انتخاب کند.

فیلترهای هدف آشکار

قالب intent زیر را در فایل manifest برنامه خود اعلام کنید تا Gemini بداند که برنامه ناوبری شما می‌تواند intentهای ناوبری را دریافت کند.

همه فرم فاکتورها به جز اندروید اتو و اندروید اتو او اس:

<intent-filter>
  <action android:name="android.intent.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

اندروید اتو و سیستم عامل اندروید اتو:

<intent-filter>
  <action android:name="androidx.car.app.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

پارامترهای ارائه شده

انتظار می‌رود پارامترهای زیر در داده‌های ارائه شده برای اینتنت اپلیکیشن ناوبری موجود باشند.

جستجوی موقعیت مکانی یا مختصات جغرافیایی

هر کوئریِ هدف ناوبری، بسته به نوع داده‌ی درخواستی، شامل یک یا هر دوی این پارامترها می‌شود:

  • پرس و جو موقعیت مکانی

    به مکانی که کاربر سعی در پیمایش آن دارد اشاره دارد. از این داده‌ها برای تعیین مقصد کاربر استفاده کنید.

    کلید پارامتر: q
    مقدار: مقصد مورد نظر کاربر.

    مثال: geo:0,0?q=Golden+Gate+Bridge
    تفسیر: کاربر می‌خواهد به سمت پل گلدن گیت حرکت کند.

  • مختصات جغرافیایی (طول و عرض جغرافیایی)

    به مختصات خاصی که توسط کاربر برای ناوبری استفاده می‌شود اشاره دارد.

    کلید پارامتر: geo:lat,long
    مقدار: مختصات درخواستی کاربر.

    مثال: geo:1.1,2.2?mode=w&intent=navigation
    تفسیر: کاربر می‌خواهد به مختصات (۱.۱، ۲.۲) پیمایش کند.

پارامترهای اختیاری

پارامترهای اختیاری ارائه شده در داده‌های اینتنت اپلیکیشن ناوبری در این بخش توضیح داده شده‌اند.

قصد

هدف کاربر را تعریف می‌کند. اگر این پارامتر تنظیم نشده باشد، هدف پیش‌فرض کاربر به عنوان navigation در نظر گرفته می‌شود.

کلید پارامتر: intent
مقادیر ممکن:

  • navigation [مقدار پیش‌فرض] - مقصد را جایگزین کرده و پیمایش را شروع می‌کند. از این برای پرس‌وجوهایی مانند navigation to x استفاده کنید.
  • add_a_stop - ایستگاه بعدی را به همراه مقصدهای قبلی اضافه می‌کند. از این برای کوئری‌هایی مانند اضافه کردن یک ایستگاه در x استفاده کنید.
  • directions - جهت مسیر را بدون شروع پیمایش نشان می‌دهد. از این برای پرس‌وجوهایی مانند جهت به x استفاده کنید.

مثال: geo:47.61594547836694,-122.20373173098756?q=575+Bellevue+Square,+Bellevue,+WA+98004&intent=add_a_stop تفسیر: کاربر می‌خواهد یک نقطه توقف به میدان Bellevue، Bellevue، با مختصات فعلی [47.6، -122.2] اضافه کند.

اجتناب از

مواردی را که باید در ناوبری از آنها اجتناب کرد، تعریف می‌کند.

کلید پارامتر: avoid
مقادیر ممکن:

  • f - کشتی‌ها
  • h - بزرگراه‌ها
  • t - عوارض

مثال: geo:0,0?q=googleplex&avoid=tf
تفسیر: کاربر می‌خواهد به گوگل‌پلکس برود و از پرداخت عوارض و پرداخت هزینه کشتی‌ها اجتناب کند.

حالت سفر

حالت سفر، روش حمل و نقلی را نشان می‌دهد که کاربر در پرس و جو مشخص کرده است.

کلید پارامتر: mode
مقادیر ممکن:

  • b - دوچرخه
  • d - رانندگی
  • x - تاکسی
  • l - دو چرخ
  • r - ترانزیت
  • w - راه رفتن

مثال: geo:0,0?q=Googleplex&mode=r
تفسیر: کاربر می‌خواهد با استفاده از وسایل حمل و نقل عمومی به گوگل‌پلکس برود.

ورود

برای ثبت منبع ورودی استفاده می‌شود.

مقادیر ممکن: دستیار

مثال: geo:47.61594547836694,-122.20373173098756?entry=assistant

هدف جستجو

از یک هدف جستجو برای جستجوی یک عبارت جستجو استفاده کنید و هنگام رانندگی چندین نتیجه را در طول مسیر نمایش دهید.

قالب هدف

کلاس Intent از قالب زیر برای اهداف جستجو استفاده می‌کند:

دسته بندی: android.intent.category.DEFAULT

اقدام: android.intent.action.VIEW

طرح: geo

مثال: geo:0,0?q=restaurants+nearby

رفتار پیشنهادی برنامه: فهرستی از مکان‌هایی را که با عبارت جستجوی کاربر مطابقت دارند، باز کنید.

فیلترهای هدف آشکار

قالب intent زیر را در فایل manifest برنامه خود اعلام کنید تا Gemini بداند که برنامه ناوبری شما می‌تواند intentهای جستجو را دریافت کند:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

پارامترهای ارائه شده

انتظار می‌رود پارامترهای زیر در داده‌های هدف جستجو ارائه شده موجود باشند.

پرس و جو موقعیت مکانی

یک پرس و جوی موقعیت مکانی، مکانی است که کاربر هنگام رانندگی به دنبال آن می‌گردد. این پرس و جو می‌تواند غیردقیق یا در امتداد یک مسیر ناوبری فعال باشد.

کلید پارامتر: q
مقدار: عبارت جستجوی کاربر، که می‌تواند نوع مکان مانند کافی‌شاپ یا دانشگاه باشد، اما می‌تواند شامل کمیت‌سنج‌هایی مانند -near me یا -with best rating نیز باشد.

مثال: geo:0,0?q=restaurants+nearby
تفسیر: کاربر می‌خواهد رستوران‌های اطراف را جستجو کند.

قصد اقدام سفارشی

از یک intent سفارشی برای اقدامات سفارشی مانند گزارش تصادفات و پایان دادن به ناوبری استفاده کنید. نوع اقدام اصلی توسط پارامتر query act تعریف می‌شود. می‌توانید پارامترهای اضافی را بسته به نوع اقدام تنظیم کنید.

قالب هدف

کلاس Intent از قالب زیر برای action intent سفارشی استفاده می‌کند:

دسته بندی: android.intent.category.DEFAULT

اقدام: android.intent.action.VIEW

طرح: geo.action

مثال: geo.action:?act=report&accident_type=major

فیلترهای هدف آشکار

قالب intent زیر را در فایل manifest برنامه خود اعلام کنید تا به Gemini اطلاع دهید که برنامه ناوبری شما می‌تواند intentهای action سفارشی را دریافت کند.

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo.action" />
</intent-filter>

پارامترهای ارائه شده

انتظار می‌رود پارامترهای زیر در داده‌های ارائه شده برای اقدام سفارشی (Custom Action intent) موجود باشند:

نوع اقدام

این نوع اقدام سفارشی را که کاربر می‌خواهد انجام دهد، تعریف می‌کند.

کلید پارامتر: act

مثال‌ها:

  • geo.action:?act=report_crash&accident_type=major
    تفسیر: کاربر می‌خواهد یک تصادف بزرگ را گزارش دهد.

  • geo.action:?act=mute
    تفسیر: کاربر می‌خواهد دستورالعمل‌های صوتی را بی‌صدا کند.

  • geo.action:?act=exit_navigation
    تفسیر: کاربر می‌خواهد از ناوبری فعلی خارج شود.

رفتار پیشنهادی برنامه: اقدام درخواستی را در برنامه ناوبری انجام دهید یا پیام اقدام پشتیبانی نشده را نشان دهید.

شکل زیر نمونه‌ای از جفت‌های کلید-مقدار را در پرس‌وجوی پاسخ نشان می‌دهد:

جریان داده سفارشی برای قصد اقدام

شکل ۲. جریان داده‌ی سفارشیِ قصد اقدام.

جفت کلید-مقدار:

"act": "report_crash"
"road_direction": other_side"

هر اکشن سفارشی همیشه یک پارامتر act به عنوان کلید دارد. در کد مثال فوق، برخی اکشن‌ها می‌توانند جفت‌های کلید-مقدار اضافی داشته باشند. برای مثال، act=report_crash از این کلیدهای اضافی پشتیبانی می‌کند: accident_type و road_direction .

کلید accident_type می‌تواند از دو مقدار، minor و major ، پشتیبانی کند.

مقادیر ممکن

جدول، مقادیر ممکنی را که Gemini می‌تواند به عنوان عملی که کاربر سعی در انجام آن در برنامه ناوبری دارد، ارسال کند، فهرست می‌کند.

ارزش توضیحات کلیدهای پارامتر اختیاری مقادیر پارامتر اختیاری
allow_ferries برای اجازه دادن به کشتی‌ها، اولویت مسیر را تغییر دهید.
allow_highways اولویت مسیر را برای مجاز کردن بزرگراه‌ها تغییر دهید.
allow_tolls ترجیح مسیر را برای مجاز کردن عوارض تغییر دهید.
avoid_ferries برای جلوگیری از سوار شدن به کشتی، مسیر خود را تغییر دهید.
avoid_highways برای جلوگیری از برخورد با بزرگراه‌ها، اولویت مسیر را تغییر دهید.
avoid_tolls برای جلوگیری از پرداخت عوارض، مسیر خود را تغییر دهید.
distance_to_destination نمایش فاصله تا مقصد
distance_to_next_turn فاصله تا پیچ بعدی را نشان دهید.
eta نمایش ETA به مقصد
exit_navigation خروج یا لغو پیمایش.
follow_mode نمای نقشه را به حالت دنبال کردن تغییر دهید.
go_back به عملیات قبلی نقشه برگردید.
hide_satellite تنظیمات نقشه را برای پنهان کردن اطلاعات ماهواره تغییر دهید.
hide_traffic تنظیمات نقشه را برای پنهان کردن اطلاعات ترافیک تغییر دهید.
mute راهنمای صوتی را بی‌صدا کنید.
query_current_road نشان دهید که کاربر در حال حاضر در چه مسیری قرار دارد.
query_destination مقصد را نشان دهید.
query_next_turn نشان دهید نوبت بعدی چیست.
report_crash خرابی‌ها را گزارش دهید. accident_type minor
major
road_direction this_side
other_side
report_hazard خطرات را گزارش دهید. hazard_type animal
broken_traffic_light
construction
flooding
fog
hail
ice
missing_sign
object_on_road
pothole
roadkill
snow
vehicle
weather
road_direction this_side
other_side
location_on_road on_road
on_shoulder
report_police گزارش فعالیت‌های پلیس road_direction this_side
other_side
report_road_closure گزارش مسدود شدن جاده‌ها road_closure_type partial
full
report_traffic گزارش ترافیک. traffic_type moderate
heavy
standstill
road_direction this_side
other_side
route_overview نمایش نمای کلی مسیر.
show_alternates مسیرهای جایگزین را نشان دهید.
show_directions_list دستورالعمل‌های مرحله به مرحله را نشان دهید.
show_satellite نمایش اطلاعات ماهواره‌ای روی نقشه
show_traffic نمایش ترافیک روی نقشه.
time_to_destination نمایش ETA به مقصد
time_to_next_turn زمان رسیدن به نوبت بعدی را نشان دهید.
unmute راهنمای صوتی را بی‌صدا کنید.

بازیابی وضعیت ناوبری

برای اطمینان از اینکه Gemini می‌تواند اطلاعات دقیق و بلادرنگ را هنگام پرسیدن وضعیت سفر کاربر به او ارائه دهد، برنامه شما باید با استفاده از سرویس خودرو NavigationManager فراداده ناوبری را ارائه دهد. برای راهنمایی در مورد پیاده‌سازی، به بخش «ارتباط فراداده ناوبری» مراجعه کنید.