این صفحه جزئیات ویژگیهای مختلف «کتابخانه برنامه خودرو» را که میتوانید برای پیادهسازی عملکرد برنامه ناوبری گامبهگام استفاده کنید شرح میدهد.
پشتیبانی از ناوبری را در مانیفست خود اعلام کنید
برنامه ناوبری شما باید androidx.car.app.category.NAVIGATION
دسته برنامه خودرو را در فیلتر هدف
CarAppService خود اعلام کند:
<application>
...
<service
...
android:name=".MyNavigationCarAppService"
android:exported="true">
<intent-filter>
<action android:name="androidx.car.app.CarAppService" />
<category android:name="androidx.car.app.category.NAVIGATION"/>
</intent-filter>
</service>
...
</application>
پشتیبانی از هدفهای پیمایش
قالبهای مختلف هدف به برنامههای ناوبری امکان میدهد با برنامههای دیگر، مانند برنامههای نقطه موردعلاقه و دستیارهای صوتی، کار کنند.
برای پشتیبانی از این قالبهای هدف، ابتدا با افزودن فیلترهای هدف در مانیفست برنامهتان، پشتیبانی را اعلام کنید. مکان این فیلترهای هدف به پلاتفرم بستگی دارد:
- Android Auto: در عنصر مانیفست
<activity>برایActivityکه برای مدیریت هدف وقتی کاربر از Android Auto استفاده نمیکند استفاده میشود. - سیستمعامل Android Automotive: در عنصر مانیفست
<activity>برایCarAppActivity.
سپس، هدفها را در هر دو onCreateScreen() و
onNewIntent() برگشتی در پیادهسازی Session برنامه خود بخوانید و مدیریت کنید.
قالبهای ضروری برای قصد خرید
برای برآورده کردن الزام کیفیت NF-6، برنامه شما باید
هدفهای پیمایش را مدیریت کند.
قالبهای اختیاری قصد خرید
همچنین میتوانید از قالبهای هدف زیر برای افزایش بیشتر قابلیت همکاری برنامهتان پشتیبانی کنید:
دسترسی به الگوهای ناوبری
برنامههای ناوبری میتوانند به الگوهای زیر دسترسی داشته باشند که سطحی را در پسزمینه با نقشه و، درطول ناوبری فعال، مسیرهای گامبهگام نشان میدهند.
NavigationTemplate: الگویی که پیام اطلاعاتی اختیاری و تخمینهای سفر را درطول ناوبری فعال نمایش میدهد.MapWithContentTemplate: الگویی که به برنامه اجازه میدهد کاشیهای نقشه را با نوعی محتوا (برای مثال، فهرست) پرداز کند. محتوا معمولاً بهصورت رونهاد در بالای کاشیهای نقشه ارائه میشود و مناطق قابلمشاهده و پایدار نقشه با محتوا تنظیم میشود.
برای جزئیات بیشتر درباره نحوه طراحی میانای کاربر برنامه پیمایش بااستفاده از این الگوها، برنامههای پیمایش را ببینید.
برای دسترسی به الگوهای ناوبری، برنامه شما باید اجازه androidx.car.app.NAVIGATION_TEMPLATES را در فایل AndroidManifest.xml خود اعلام کند:
<manifest ...>
...
<uses-permission android:name="androidx.car.app.NAVIGATION_TEMPLATES"/>
...
</manifest>
برای کشیدن نقشه، اجازه دیگری لازم است.
انتقال به MapWithContentTemplate
از «سطح ۷ Car App API» شروع میشود،
MapTemplate،
PlaceListNavigationTemplate،
و RoutePreviewNavigationTemplate
نامناسب هستند. از الگوهای منسوخ همچنان پشتیبانی خواهد شد، اما
انتقال به MapWithContentTemplate اکیداً توصیه میشود.
کارکرد ارائهشده توسط این الگوها را میتوان بااستفاده از MapWithContentTemplate پیادهسازی کرد. برای مثال، گزیدههای زیر را ببینید:
MapTemplate
// MapTemplate (deprecated) val templateDeprecated = MapTemplate.Builder() .setPane(paneBuilder.build()) .setActionStrip(actionStrip) .setHeader(header) .setMapController(mapController) .build() // MapWithContentTemplate val template = MapWithContentTemplate.Builder() .setContentTemplate( PaneTemplate.Builder(paneBuilder.build()) .setHeader(header) .build() ) .setActionStrip(actionStrip) .setMapController(mapController) .build()
PlaceListNavigationTemplate
// PlaceListNavigationTemplate (deprecated) val templateDeprecated = PlaceListNavigationTemplate.Builder() .setItemList(itemListBuilder.build()) .setHeader(header) .setActionStrip(actionStrip) .setMapActionStrip(mapActionStrip) .build() // MapWithContentTemplate val template = MapWithContentTemplate.Builder() .setContentTemplate( ListTemplate.Builder() .setSingleList(itemListBuilder.build()) .setHeader(header) .build() ) .setActionStrip(actionStrip) .setMapController( MapController.Builder() .setMapActionStrip(mapActionStrip) .build() ) .build()
RoutePreviewNavigationTemplate
// RoutePreviewNavigationTemplate (deprecated) val templateDeprecated = RoutePreviewNavigationTemplate.Builder() .setItemList( ItemList.Builder() .addItem( Row.Builder() .setTitle(title) .build() ) .build() ) .setHeader(header) .setNavigateAction( Action.Builder() .setTitle(actionTitle) .setOnClickListener { /* onClick */ } .build() ) .setActionStrip(actionStrip) .setMapActionStrip(mapActionStrip) .build() // MapWithContentTemplate val template = MapWithContentTemplate.Builder() .setContentTemplate( ListTemplate.Builder() .setSingleList( ItemList.Builder() .addItem( Row.Builder() .setTitle(title) .addAction( Action.Builder() .setTitle(actionTitle) .setOnClickListener { /* onClick */ } .build() ) .build() ) .build() ) .setHeader(header) .build() ) .setActionStrip(actionStrip) .setMapController( MapController.Builder() .setMapActionStrip(mapActionStrip) .build() ) .build()
انتقال فرادادههای ناوبری
برنامههای ناوبری باید فرادادههای ناوبری اضافی را با میزبان ارتباط برقرار کنند. میزبان از این اطلاعات برای ارائه اطلاعات به سیستم صوتی خودرو و جلوگیری از تداخل برنامههای پیمایش در منابع مشترک استفاده میکند.
فراداده ناوبری ازطریق
NavigationManager
خدمات خودرو که از
CarContext دردسترس است ارائه میشود:
val navigationManager = carContext.getCarService(NavigationManager::class.java)
شروع، پایان، و توقف ناوبری
برای اینکه میزبان بتواند چندین برنامه ناوبری، اعلانهای مسیریابی،
و دادههای دستهبندی خودرو را مدیریت کند، باید از وضعیت فعلی
ناوبری مطلع باشد. وقتی کاربری ناوبری را شروع میکند، با
NavigationManager.navigationStarted تماس بگیرید.
بههمین ترتیب، وقتی ناوبری پایان مییابد — برای مثال، وقتی کاربر به مقصدش میرسد یا ناوبری را لغو میکند — با
NavigationManager.navigationEnded تماس بگیرید.
فقط وقتی کاربر پیمایش را تمام کرد با NavigationManager.navigationEnded تماس بگیر. برای مثال، اگر لازم است
مسیر را در میان سفر دوباره محاسبه کنید،
از Trip.Builder.setLoading(true)
استفاده کنید.
گاهی اوقات، میزبان برای متوقف کردن پیمایش و تماسها به برنامهای نیاز دارد
onStopNavigation در
NavigationManagerCallback
شیئی که برنامهتان ازطریق
NavigationManager.setNavigationManagerCallback ارائه میدهد.
سپس برنامه باید ارائه اطلاعات پیچ بعدی را در نمایشگر کیلومترشمار،
اعلانهای پیمایش، و راهنمایی صوتی متوقف کند.
بهروزرسانی اطلاعات سفر
درحین ناوبری فعال، با
NavigationManager.updateTrip تماس بگیرید.
اطلاعات ارائهشده در این تماس میتواند توسط خوشه خودرو و
نمایشگرهای سربالا استفاده شود. بسته به خودرو خاصی که درحال رانندگی است، همه اطلاعات به کاربر نمایش داده نمیشود.
برای مثال، «واحد سر میزکار» (DHU) Step اضافهشده به Trip را نشان میدهد، اما اطلاعات Destination را نشان نمیدهد.
کشیدن روی «نمایشگر خوشه»
برای ارائه فراگیرترین تجربه کاربری، ممکن است بخواهید فراتر از نمایش فراداده پایه در نمایشگر خوشه خودرو عمل کنید. از «سطح Car App API 6» شروع میشود، برنامههای پیمایش این گزینه را دارند که محتوای خودشان را مستقیماً در نمایشگر خوشه (در خودروهای پشتیبانیشده) با محدودیتهای زیر پرداز کنند:
- «میانای برنامهسازی کاربردی نمایشگر خوشهای» از کنترلهای ورودی پشتیبانی نمیکند
- دستورالعمل کیفیت برنامه خودرو
NF-9: نمایشگر خوشه باید فقط کاشیهای نقشه را نشان دهد. مسیر ناوبری فعال میتواند بهصورت اختیاری در این کاشیها نمایش داده شود. - میانای برنامهسازی کاربردی نمایشگر خوشه فقط از
NavigationTemplate- برخلاف نمایشگرهای اصلی، نمایشگرهای کیلومترشمار ممکن است بهطور پیوسته همه
NavigationTemplateعناصر واسط کاربر، مثل دستورالعملهای گامبهگام، کارتهای زمان تخمینی رسیدن، و کنشها را نشان ندهند. کاشیهای نقشه تنها عنصر رابط کاربری هستند که بهطور مداوم نمایش داده میشوند.
- برخلاف نمایشگرهای اصلی، نمایشگرهای کیلومترشمار ممکن است بهطور پیوسته همه
اعلام پشتیبانی از خوشه
برای اینکه برنامه میزبان بداند برنامهتان از پردازش در نمایشگرهای
خوشهای پشتیبانی میکند، باید عنصر androidx.car.app.category.FEATURE_CLUSTER
<category> را به CarAppService <intent-filter> اضافه کنید، همانطور که در
تکه کد زیر نشان داده شده است:
<application>
...
<service
...
android:name=".MyNavigationCarAppService"
android:exported="true">
<intent-filter>
<action android:name="androidx.car.app.CarAppService" />
<category android:name="androidx.car.app.category.NAVIGATION"/>
<category android:name="androidx.car.app.category.FEATURE_CLUSTER"/>
</intent-filter>
</service>
...
</application>
مدیریت چرخه حیات و وضعیت
از سطح API 6 شروع میشود،
جریان چرخه حیات
برنامه خودرو یکسان میماند، اما اکنون CarAppService::onCreateSession پارامتری از نوع
SessionInfo میگیرد که
اطلاعات بیشتری درباره Session ایجادشده ارائه میدهد (یعنی نوع نمایشگر و مجموعه الگوهای پشتیبانیشده).
برنامهها این گزینه را دارند که از کلاس Session یکسانی برای مدیریت هم خوشه و هم نمایشگر اصلی استفاده کنند، یا Sessions نمایشگر خاصی ایجاد کنند تا عملکرد هر نمایشگر را سفارشیسازی کنند (همانطور که در گزیده زیر نشان داده شده است).
override fun onCreateSession(sessionInfo: SessionInfo): Session { return if (sessionInfo.displayType == SessionInfo.DISPLAY_TYPE_CLUSTER) { ClusterSession() } else { MainDisplaySession() } }
هیچ تضمینی وجود ندارد که نمایشگر کیلومترشمار چه زمانی یا اصلاً ارائه شود، و
همچنین ممکن است Session کیلومترشمار تنها Session باشد (برای
مثال، کاربر نمایشگر اصلی را با برنامه دیگری عوض کرده است درحالیکه برنامه شما
درحال پیمایش فعال است). توافق «استاندارد» این است که برنامه فقط پساز فراخوانی NavigationManager::navigationStarted کنترل نمایشگر خوشهای را بهدست میآورد. بااینحال، ممکن است نمایشگر کیلومترشمار درحالیکه هیچ پیمایش فعالی درحال انجام نیست به برنامه ارائه شود، یا ممکن است نمایشگر کیلومترشمار هرگز به برنامه ارائه نشود. برنامه شما باید با ارائه وضعیت غیرفعال کاشیهای نقشه، این سناریوها را مدیریت کند.
میزبان برای هر Session، پوشه و CarContext نمونه جداگانه ایجاد میکند. این یعنی وقتی از روشهایی مثل ScreenManager::push یا
Screen::invalidate استفاده میکنید، فقط Session که از آن فراخوانده شده است
تحتتأثیر قرار میگیرد. اگر ارتباط بین نمونههای Session مختلف لازم باشد، برنامهها باید کانالهای ارتباطی خودشان را بین این نمونهها ایجاد کنند (برای مثال، بااستفاده از همهفرستیها، تکنمونه مشترک، یا چیز دیگری).
آزمایش پشتیبانی از خوشه
میتوانید پیادهسازیتان را هم در Android Auto و هم در «سیستم عامل Android Automotive» آزمایش کنید. برای Android Auto، این کار با پیکربندی «واحد سرصفحه رایانه رومیزی» برای شبیهسازی نمایشگر خوشه ثانویه انجام میشود. برای «سیستمعامل Android Automotive»، تصاویر سیستم عمومی برای سطح API ۳۰ و بالاتر نمایشگر خوشهای را شبیهسازی میکنند.
«زمان سفر تقریبی» را با نوشتار یا نماد سفارشیسازی کنید
برای سفارشیسازی تخمین سفر با نوشتار، نماد، یا هر دو، از
TravelEstimate.Builder
کلاس
setTripIcon
یا
setTripText
روشها استفاده کنید. از
NavigationTemplate
برای
TravelEstimate
تنظیم اختیاری نوشتار و نماد در کنار یا بهجای زمان تخمینی رسیدن، زمان باقیمانده، و فاصله باقیمانده استفاده میکند.
تکه کد زیر از setTripIcon و setTripText برای سفارشیسازی کردن
تخمین سفر استفاده میکند:
TravelEstimate.Builder( Distance.create(350.0, Distance.UNIT_METERS), arrivalTimeAtDestination ) .setTripIcon( CarIcon.Builder( IconCompat.createWithResource(carContext, R.drawable.ic_garage) ).build() ) .setTripText(CarText.create("Custom Text")) .build()
اعلانهای گامبهگام ارائه دهید
ارائه دستورالعملهای ناوبری گامبهگام (TBT) بااستفاده از اعلان ناوبری که بهطور مکرر بهروزرسانی میشود. برای اینکه اعلان شما در صفحه خودرو بهعنوان اعلان پیمایش درنظر گرفته شود، سازنده اعلان شما باید کارهای زیر را انجام دهد:
- اعلان را با روش
NotificationCompat.Builder.setOngoingبهعنوان جاری علامتگذاری کنید. - دسته اعلان را روی
Notification.CATEGORY_NAVIGATIONتنظیم کنید. - اعلان را با
CarAppExtenderگسترش دهید.
اعلان پیمایش در ابزاره ریل در پایین صفحه خودرو نمایش داده میشود. اگر سطح اهمیت اعلان روی
IMPORTANCE_HIGH تنظیم شده باشد، بهعنوان اعلان سرصفحه (HUN) نیز نمایش داده میشود.
اگر اهمیت با روش
CarAppExtender.Builder.setImportance
تنظیم نشده باشد،
اهمیت کانال اعلان
استفاده میشود.
برنامه میتواند PendingIntent را در
CarAppExtender تنظیم کند که
وقتی کاربر روی «واحد نمایش آگهی» یا ابزاره ریل تکضرب میزند به برنامه ارسال میشود.
اگر
NotificationCompat.Builder.setOnlyAlertOnce
با مقدار true فراخوانده شود، اعلان اهمیت بالا فقط یکبار در HUN هشدار میدهد.
تکهکد زیر نحوه ساختن اعلان پیمایش را نشان میدهد:
NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID) .setOnlyAlertOnce(true) .setOngoing(true) .setCategory(NotificationCompat.CATEGORY_NAVIGATION) .extend( CarAppExtender.Builder() .setContentTitle(carScreenTitle) .setContentIntent( PendingIntent.getBroadcast( context, ACTION_OPEN_APP.hashCode(), Intent(ACTION_OPEN_APP).setComponent( ComponentName(context, MyNotificationReceiver::class.java) ), PendingIntent.FLAG_IMMUTABLE ) ) .setImportance(NotificationManagerCompat.IMPORTANCE_HIGH) .build() ) .build()
اعلان TBT را بهطور منظم برای تغییرات فاصله بهروزرسانی کنید، که ابزارک ریلی را بهروزرسانی میکند، و اعلان را فقط بهعنوان HUN نشان دهید.
با تنظیم اهمیت اعلان با
CarAppExtender.Builder.setImportance میتوانید رفتار HUN را کنترل کنید. تنظیم اهمیت روی
IMPORTANCE_HIGH باعث نمایش HUN میشود. تنظیم آن روی هر مقدار دیگری فقط ابزاره ریل را بهروز میکند.
بازآوری محتوای «الگوی پیمایش فهرست مکان»
میتوانید به رانندگان اجازه دهید با یک ضربه روی دکمه، محتوا را هنگام مرور فهرست مکانهای ساختهشده با
PlaceListNavigationTemplate بازآوری کنند.
برای فعال کردن بازآوری فهرست،
OnContentRefreshListener
واسط
onContentRefreshRequested
روش را پیادهسازی کنید و از
PlaceListNavigationTemplate.Builder.setOnContentRefreshListener
برای تنظیم شنونده در الگو استفاده کنید.
تکهکد زیر نشان میدهد که چگونه شنونده را در الگو تنظیم کنید:
PlaceListNavigationTemplate.Builder() .setOnContentRefreshListener { // Execute any desired logic // Then call invalidate() so onGetTemplate() is called again screen.invalidate() } .build()
دکمه بازآوری فقط در سرایند
PlaceListNavigationTemplate نشان داده میشود اگر شنونده مقدار داشته باشد.
وقتی کاربر روی دکمه بازآوری کلیک میکند،
متد onContentRefreshRequested از
پیادهسازی OnContentRefreshListener شما فراخوانده میشود. در
onContentRefreshRequested، روش
Screen.invalidate را فراخوانی کنید.
سپس میزبان با روش برنامه شما
Screen.onGetTemplate
تماس میگیرد تا قالب را با محتوای بهروزرسانیشده بازیابی کند. برای اطلاعات بیشتر درباره بازآوری الگوها، به
بازآوری محتوای الگو مراجعه کنید. تا زمانی که الگوی بعدی
برگرداندهشده توسط
onGetTemplate از
همان نوع باشد، بهعنوان بازآوری محسوب میشود و در سهمیه
الگو محاسبه نمیشود.
ارائه راهنمایی صوتی
برای پخش راهنمایی ناوبری از بلندگوهای خودرو، برنامه شما باید کانون صدا را درخواست کند. بهعنوان بخشی از
AudioFocusRequest، استفاده را
بهصورت AudioAttributes.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE تنظیم کنید. همچنین،
بهره تمرکز را روی AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK تنظیم کنید.
شبیهسازی پیمایش
برای درستیسنجی عملکرد پیمایش برنامهتان هنگام ارسال آن به
«فروشگاه Google Play»، برنامهتان باید
NavigationManagerCallback.onAutoDriveEnabled
بازخوان را پیادهسازی کند. وقتی این برگشتتماس فراخوانی میشود، برنامه شما باید وقتی کاربر ناوبری را شروع میکند، ناوبری به مقصد انتخابشده را شبیهسازی کند. هرزمان که چرخه حیات Session
فعلی به حالت
Lifecycle.Event.ON_DESTROY
برسد، برنامه شما میتواند از این حالت خارج شود.
میتوانید با اجرای دستور زیر از خط فرمان، آزمایش کنید که پیادهسازی onAutoDriveEnabled شما فراخوانی میشود:
adb shell dumpsys activity service CAR_APP_SERVICE_NAME AUTO_DRIVE
این مورد در مثال زیر نشان داده شده است:
adb shell dumpsys activity service androidx.car.app.samples.navigation.car.NavigationCarAppService AUTO_DRIVE
برنامه ناوبری پیشفرض خودرو
در Android Auto، برنامه ناوبری پیشفرض خودرو با آخرین برنامه ناوبری که کاربر راهاندازی کرده است مطابقت دارد. وقتی کاربر فرمانهای ناوبری را ازطریق «دستیار» فرا میخواند یا وقتی برنامه دیگری قصد شروع ناوبری را ارسال میکند، برنامه پیشفرض قصد ناوبری را دریافت میکند.
نمایش هشدارهای ناوبری زمینهای
Alert اطلاعات مهم را با کنشهای اختیاری به راننده نمایش میدهد؛ بدون اینکه از زمینه صفحه ناوبری خارج شود. برای ارائه بهترین تجربه به راننده،
Alert در
NavigationTemplate
کار میکند تا از مسدود کردن مسیر پیمایش جلوگیری کند و حواسپرتی راننده را به حداقل برساند.
Alert فقط در NavigationTemplate دردسترس است.
برای مطلع کردن کاربر خارج از NavigationTemplate،
از اعلان سرصفحه (HUN) استفاده کنید، همانطور که در
نمایش اعلانها توضیح داده شده است.
برای مثال، از Alert برای موارد زیر استفاده کنید:
- راننده را از بهروزرسانیهای مربوط به ناوبری فعلی، مثل تغییر در وضعیت ترافیک، مطلع میکند.
- از راننده بخواهید بهروزرسانی مربوط به ناوبری فعلی را ارائه دهد، مثلاً وجود دوربین کنترل سرعت.
- تکلیف آتی را پیشنهاد دهید و بپرسید آیا راننده آن را میپذیرد یا نه، مثلاً بپرسید آیا راننده مایل است شخصی را در مسیرش سوار کند یا نه.
در شکل پایه، Alert شامل عنوان و زمان Alert
مدت میشود. زمان مدت با یک نوار پیشرفت نشان داده میشود. درصورت تمایل، میتوانید زیرنویس، نماد، و حداکثر دو
Action شیء اضافه کنید.
وقتی Alert نشان داده میشود، اگر تعامل راننده منجر به ترک NavigationTemplate شود، به الگوی دیگری منتقل نمیشود.
تا زمانی که Alert منقضی شود، کاربر اقدامی انجام دهد، یا برنامه Alert را ببندد، در NavigationTemplate اصلی باقی میماند.
ایجاد هشدار
از Alert.Builder
برای ایجاد نمونه Alert استفاده کنید:
Alert.Builder( 1, // alertId CarText.create("Hello"), // title 5000 // durationMillis ) // The fields below are optional .addAction(firstAction) .addAction(secondAction) .setSubtitle(CarText.create("Subtitle")) .setIcon(CarIcon.APP_ICON) .setCallback(alertCallback) .build()
اگر میخواهید به Alert
لغو یا رد شدن گوش دهید، پیادهسازی
AlertCallback رابط را ایجاد کنید.
مسیرهای تماس AlertCallback عبارتاند از:
اگر
Alertزمانبندی شود، میزبان متدAlertCallback.onCancelرا با مقدارAlertCallback.REASON_TIMEOUTفرا میخواند. سپس روشAlertCallback.onDismissرا فرا میخواند.اگر راننده روی یکی از دکمههای کنش کلیک کند، میزبان
Action.OnClickListenerرا فرا میخواند و سپسAlertCallback.onDismissرا فرا میخواند.اگر
Alertپشتیبانی نشود، میزبان با مقدارAlertCallback.REASON_NOT_SUPPORTEDAlertCallback.onCancelتماس میگیرد. میزبان باAlertCallback.onDismissتماس نمیگیرد، زیراAlertنشان داده نشد.
پیکربندی مدت هشدار
مدت زمان Alert را انتخاب کنید که با نیازهای برنامه شما مطابقت داشته باشد. مدت زمان توصیهشده برای ناوبری
Alert ۱۰ ثانیه است. برای اطلاعات بیشتر، به هشدارهای ناوبری مراجعه کنید.
هشدار نشان داده شود
برای نمایش Alert، با
AppManager.showAlert
روش دردسترس ازطریق برنامه
CarContext تماس بگیرید.
carContext.getCarService(AppManager::class.java).showAlert(alert)
- تماس با
showAlertباAlertکه دارایalertIdاست که با شناسهAlertکه ازقبل درحال نمایش است یکسان است هیچ کاری انجام نمیدهد.Alertبهروزرسانی نمیشود. برای بهروزرسانیAlert، باید آن را باalertIdجدیدی بازسازی کنید. - تماس با
showAlertباAlertکهalertIdمتفاوتی نسبتبهAlertدرحال نمایش دارد باعث میشود هشدار نمایش دادهشدهAlertبسته شود.
بستن هشدار
درحالیکه Alert بهدلیل اتمام زمان یا تعامل راننده بهطور خودکار بسته میشود، میتوانید Alert را نیز بهصورت دستی ببندید، مثلاً اگر اطلاعات آن قدیمی شود. برای بستن
Alert، روش
dismissAlert
را با
alertId
Alert فراخوانی کنید.
carContext.getCarService(AppManager::class.java).dismissAlert(alert.id)
تماس با dismissAlert با alertId که با Alert ازقبل نمایشدادهشده مطابقت ندارد کاری انجام نمیدهد. استثنا قائل نمیشود.