پیکربندی اختلالات در زمان واقعی
اختلالات آنی مجموعهای از ویژگیها هستند که به کاربران در مورد اختلالات در طول مسیرشان هشدار میدهند و به کاربران امکان میدهند اختلالاتی را که با آنها مواجه میشوند گزارش و تأیید کنند. نمونههایی از اختلالات شامل تصادفات وسایل نقلیه، ازدحام ترافیک، حضور پلیس و دوربینهای کنترل سرعت، ساخت و ساز، بسته شدن خطوط و شرایط خاص آب و هوایی است. این صفحه ویژگیهای اختلالات آنی و گزینههای پیکربندی آنها، از جمله ملاحظات مربوط به برنامههایی که از رابطهای کاربری ناوبری سفارشی استفاده میکنند، را توضیح میدهد.
ویژگیهای اختلال در زمان واقعی
کیت توسعه نرمافزار ناوبری (Navigation SDK) شامل ویژگیهای اختلال بلادرنگ زیر به عنوان بخشی از تجربه اصلی ناوبری است:- هشدارهای تعاملی در مورد اختلال در مسیرها .
- هشدارهای خودکار اختلال با رأیگیری در طول ناوبری فعال .
- گزارش اختلال در حین ناوبری فعال .
این ویژگیها قابل تنظیم هستند و به طور پیشفرض فعال میباشند. بخشهای بعدی اطلاعات بیشتری در مورد ویژگیها و گزینههای پیکربندی موجود ارائه میدهند.
هشدارهای تعاملی برای اختلال در مسیرها
وقتی یک برنامه مسیری را نمایش میدهد، چه در نمای کلی مسیر و چه در حین ناوبری فعال، هرگونه اختلال فعلی به صورت راهنما در طول مسیر ظاهر میشود. وقتی لایه ترافیک را فعال میکنید، اختلالات خارج از مسیر نیز روی نقشه ظاهر میشوند. راهنماها شامل نمادی هستند که نوع اختلال را نشان میدهد.

شما میتوانید نمایش هشدارهای مربوط به اختلال در طول مسیرها را با استفاده از setTrafficPromptsEnabled کنترل کنید، که همچنین نمایش هشدارهای خودکار را هنگام نزدیک شدن کاربر به یک اختلال کنترل میکند.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
نمایش جزئیات اختلال هنگامی که کاربر روی یک فراخوان ضربه میزند
با ضربه زدن روی یک هشدار اختلال، یک کارت اطلاعات با جزئیات بیشتر باز میشود. این موضوع هم برای هشدارهای درونمسیری و هم برای هشدارهای خارج از مسیر صدق میکند، هرچند هشدارهای خارج از مسیر فقط در صورت فعال بودن لایه ترافیک ظاهر میشوند. این کارت نوع اختلال، آخرین زمان گزارش آن و گاهی اوقات گزینهای برای رأی دادن به وجود یا عدم وجود اختلال را نمایش میدهد. نوع کارت اطلاعات و گزینههای پیکربندی آن بسته به اینکه کاربر در حالت ناوبری فعال باشد یا خیر، متفاوت است.
قبل از شروع ناوبری فعال، کارتهای اطلاعاتی را در نمای کلی مسیر مشخص کنید
قبل از شروع ناوبری فعال، کاربران میتوانند روی یک راهنمای مسیر یا خارج از مسیر روی نقشه یا نمای کلی مسیر ضربه بزنند تا یک کارت اطلاعات باز شود. راهنمای خارج از مسیر نیاز به فعال بودن لایه ترافیک دارد. کارت اطلاعات جزئیات بیشتری در مورد اختلال ارائه میدهد.

شما میتوانید با استفاده از setTrafficIncidentCardsEnabled توانایی کاربران را برای ضربه زدن روی اعلانهای اختلال در نمای کلی مسیر برای نمایش اطلاعات بیشتر کنترل کنید.
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
کارتهای اطلاعاتی راهنما در هنگام ناوبری فعال
در طول ناوبری فعال، کاربران میتوانند روی یک اعلان اختلال در مسیر یا خارج از مسیر ضربه بزنند تا یک کارت اطلاعات باز شود. این کارت نوع اختلال و آخرین زمان گزارش شده را نشان میدهد و شامل دکمههایی برای کاربران است تا در مورد وجود یا عدم وجود اختلال رأی دهند.
رأیگیری برای اختلالات درونمسیری و برونمسیری در محدوده ۵ کیلومتری کاربر، به استثنای بسته بودن جادهها، در دسترس است. گوگل این رأیها را پردازش میکند تا در مورد ادامه نمایش اختلال تصمیمگیری کند. این رأیها ممکن است برای سایر کاربران Google Maps و Navigation SDK نیز روی نقشه نمایش داده شوند.

شما میتوانید نمایش و قابلیت لمس اعلانهای مربوط به اختلال را در طول ناوبری فعال با استفاده از setTrafficPromptsEnabled کنترل کنید، که همچنین نمایش اعلانها در طول مسیرها و نمایش هشدارهای خودکار را هنگام نزدیک شدن کاربر به یک اختلال کنترل میکند.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
هشدارهای خودکار اختلال با رأیگیری در طول ناوبری فعال
در طول ناوبری فعال، وقتی کاربر در طول مسیر به اختلالی نزدیک میشود، پیامی حاوی اطلاعات مربوط به اختلال و دکمههایی برای رأی دادن در مورد وجود یا عدم وجود اختلال ظاهر میشود. آرای ارسالی توسط کاربران توسط گوگل پردازش میشود و ممکن است برای سایر کاربران Google Maps و Navigation SDK روی نقشه نمایش داده شود و همچنین برای تعیین ادامه نمایش اختلال استفاده شود.

شما میتوانید نمایش اعلانهای هشدار را در طول ناوبری فعال با استفاده از setTrafficPromptsEnabled پیکربندی کنید، که نمایش فراخوانها را در طول مسیرها نیز کنترل میکند.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
گزارش اختلال در طول ناوبری فعال
در حالت ناوبری فعال، دکمهای در رابط کاربری ناوبری ظاهر میشود که به کاربران امکان میدهد اختلالات جدید در طول مسیر خود را گزارش دهند. وقتی کاربر روی این دکمه ضربه میزند، منویی با انواع اختلالات موجود برای گزارش ظاهر میشود. گزارشهایی که کاربران ارسال میکنند توسط گوگل پردازش میشوند و ممکن است برای سایر کاربران Google Maps و Navigation SDK روی نقشه نمایش داده شوند.
گزارش مسدود شدن جاده ممکن است مسیر جایگزینی برای دور زدن بخش مسدود شده ارائه دهد و از کاربر بخواهد تغییر مسیر را تأیید یا رد کند. این ویژگی منوط به در دسترس بودن است.


نمایش یا پنهان کردن دکمه گزارش استاندارد
شما میتوانید با استفاده از setReportIncidentButtonEnabled میزان نمایش دکمه گزارشدهی استاندارد را در حین پیمایش فعال پیکربندی کنید.
// Enables the incident reporting button to show in situations where incident // reporting is possible. // Using the SupportNavigationFragment mNavFragment.setReportIncidentButtonEnabled(true); // Using the NavigationView navigationView.setReportIncidentButtonEnabled(true);
افزودن دکمه گزارش سفارشی
به جای دکمه گزارش اختلال استاندارد، میتوانید یک دکمه گزارش سفارشی به رابط کاربری ناوبری اضافه کنید. وقتی کاربر روی دکمه سفارشی کلیک میکند، میتوانید با فراخوانی متد showReportIncidentsPanel ، منوی گزارش را نمایش دهید. قبل از افزودن دکمه گزارش سفارشی، با فراخوانی isIncidentReportingAvailable ، مطمئن شوید که برنامه در حالت ناوبری فعال است و کاربر در کشوری است که گزارشدهی در آن فعال است. اگر هر یک از این موارد صحیح نباشد، منوی گزارش ظاهر نمیشود.
Button customReportIncidentButton = findViewById(R.id.custom_reporting_button); // Check if reporting is available before displaying your button customReportIncidentButton.setVisibility( navigationView.isReportingAvailable ? View.VISIBLE : View.GONE); // Trigger the reporting flow if the button is clicked customReportIncidentButton.setOnClickListener(v -> navigationView.showReportIncidentsPanel());
کار با رابطهای کاربری ناوبری سفارشی
اگر پیادهسازی شما از کیت توسعه نرمافزار ناوبری (Navigation SDK) شامل عناصر رابط کاربری سفارشی است، باید عناصر اختلال در زمان واقعی را در نظر بگیرید تا از تداخل جلوگیری شود.
گزارش موقعیت دکمه
به طور پیشفرض، دکمه گزارش اختلال در انتهای/گوشه انتهایی نقشه قرار دارد - در سمت راست برای زبانهای چپ به راست و در سمت چپ برای زبانهای راست به چپ. اگر نیاز دارید دکمه گزارش را جابجا کنید تا فضایی برای عناصر رابط کاربری سفارشی ایجاد شود، یک کنترل سفارشیBOTTOM_END_BELOW یا FOOTER اضافه کنید که موقعیت دکمه را روی صفحه نمایش بالا میبرد. قرار دادن رابطهای کاربری سفارشی خودتان در کنترلهای سفارشی همچنین تضمین میکند که هرگونه اعلان نمایش داده شده توسط Navigation SDK به درستی روی عناصر رابط کاربری سفارشی شما در حین نمایش لایهبندی شده باشد. اگر نمیتوانید از کنترلهای سفارشی استفاده کنید، از API Prompt Visibility برای مدیریت تداخلهای احتمالی رابط کاربری استفاده کنید.API قابلیت مشاهده سریع (آزمایشی)
API Prompt Visibility به شما کمک میکند تا از تداخل بین عناصر رابط کاربری تولید شده توسط Navigation SDK و عناصر رابط کاربری سفارشی خود جلوگیری کنید. این کار با اضافه کردن یک شنونده برای دریافت فراخوانی قبل از نمایش یک عنصر رابط کاربری Navigation SDK و به محض حذف عنصر انجام میشود. میتوانید فراخوانیهایی را برای عناصر اختلال در زمان واقعی، از جمله کارتهای اطلاعاتی، اعلانها و منوی گزارش اختلال - و همچنین برای سایر اعلانهای تولید شده توسط Navigation SDK - دریافت کنید.// Sample listener val listener: PromptVisibilityChangedListener = { isVisible -> if (isVisible) { customFab.visibility = false customFooter.visibility = false moveSomeOtherThingsAround() } else { customFab.visibility = true customFooter.visibility = true moveSomeThingsBackToWhereTheyWereBefore() } } // Inside onCreate() navigationView.addPromptVisibilityChangedListener(listener) // Inside onDestroy() navigationView.removePromptVisibilityChangedListener(listener)