Bu sayfada, araba uygulaması kitaplığının kullanabileceğiniz farklı özellikleri açıklanmaktadır. adım adım navigasyon uygulamanızın işlevselliğini uygulamak için.
Manifest'inizde gezinme desteğini beyan edin
Navigasyon uygulamanızın androidx.car.app.category.NAVIGATION
beyan etmesi gerekiyor
Amaçtaki araba uygulaması kategorisi
CarAppService
filtresini uygulayın:
<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>
Gezinme amaçlarına yönelik destek
kullanıyorsanız uygulamanızın
CarContext.ACTION_NAVIGATE
ve
Session.onCreateScreen
ve
Session.onNewIntent
.
Şu konuyla ilgili belgelere göz atın:
CarContext.startCarApp
konusuna bakın.
Gezinme şablonlarına erişme
Navigasyon uygulamaları, bir yüzeyin gösterildiği aşağıdaki şablonlara erişebilir: arka planda haritada ve aktif navigasyon sırasında, adım adım yol tarifleri alın.
NavigationTemplate
: Ayrıca, isteğe bağlı bir bilgilendirme mesajı ve aktif navigasyon sırasında seyahat tahminleri de görüntüler.MapWithContentTemplate
: Uygulamanın bir tür içeriğe sahip harita karoları (herhangi bir konum için) bir liste olabilir.) İçerik genellikle içeriğin üst kısmında bir yer paylaşımı içeriğe göre ayarlama yapan, haritada görünen ve sabit alanların bulunduğu harita parçaları.
Navigasyon uygulamanızın kullanıcı arayüzünü aşağıdakileri kullanarak tasarlama hakkında daha ayrıntılı bilgi için bu şablonlar için Navigasyon uygulamaları bölümüne bakın.
Gezinme şablonlarına erişmek için uygulamanızın şunu beyan etmesi gerekiyor:
içindeki androidx.car.app.NAVIGATION_TEMPLATES
iznini
AndroidManifest.xml
dosyası:
<manifest ...>
...
<uses-permission android:name="androidx.car.app.NAVIGATION_TEMPLATES"/>
...
</manifest>
Harita çizmek için ek bir izin gerekiyor.
MapWithContentTemplate'e taşıma
Car App API düzeyi 7'den başlayarak
MapTemplate
PlaceListNavigationTemplate
,
ve RoutePreviewNavigationTemplate
kullanımdan kaldırılmıştır. Desteği sonlandırılan şablonlar desteklenmeye devam edecektir.
MapWithContentTemplate
ürününe taşınması önemle tavsiye edilir.
Bu şablonların sağladığı işlevler,
(MapWithContentTemplate
) kullanarak. Örnekler için aşağıdaki snippet'lere bakın:
HaritaŞablonu
Kotlin
// MapTemplate (deprecated) val template = 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()
Java
// MapTemplate (deprecated) MapTemplate template = new MapTemplate.Builder() .setPane(paneBuilder.build()) .setActionStrip(actionStrip) .setHeader(header) .setMapController(mapController) .build(); // MapWithContentTemplate MapWithContentTemplate template = new MapWithContentTemplate.Builder() .setContentTemplate(new PaneTemplate.Builder(paneBuilder.build()) .setHeader(header) build()) .setActionStrip(actionStrip) .setMapController(mapController) .build();
Yer Listesi Gezinme Şablonu
Kotlin
// PlaceListNavigationTemplate (deprecated) val template = 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()
Java
// PlaceListNavigationTemplate (deprecated) PlaceListNavigationTemplate template = new PlaceListNavigationTemplate.Builder() .setItemList(itemListBuilder.build()) .setHeader(header) .setActionStrip(actionStrip) .setMapActionStrip(mapActionStrip) .build(); // MapWithContentTemplate MapWithContentTemplate template = new MapWithContentTemplate.Builder() .setContentTemplate(new ListTemplate.Builder() .setSingleList(itemListBuilder.build()) .setHeader(header) .build()) .setActionStrip(actionStrip) .setMapController(new MapController.Builder() .setMapActionStrip(mapActionStrip) .build()) .build();
RotaÖnizlemeGezinmeŞablonu
Kotlin
// RoutePreviewNavigationTemplate (deprecated) val template = RoutePreviewNavigationTemplate.Builder() .setItemList( ItemList.Builder() .addItem( Row.Builder() .setTitle(title) .build()) .build()) .setHeader(header) .setNavigateAction( Action.Builder() .setTitle(actionTitle) .setOnClickListener { ... } .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 { ... } .build()) .build()) .build()) .setHeader(header) .build()) .setActionStrip(actionStrip) .setMapController( MapController.Builder() .setMapActionStrip(mapActionStrip) .build()) .build()
Java
// RoutePreviewNavigationTemplate (deprecated) RoutePreviewNavigationTemplate template = new RoutePreviewNavigationTemplate.Builder() .setItemList(new ItemList.Builder() .addItem(new Row.Builder() .setTitle(title)) .build()) .build()) .setHeader(header) .setNavigateAction(new Action.Builder() .setTitle(actionTitle) .setOnClickListener(() -> { ... }) .build()) .setActionStrip(actionStrip) .setMapActionStrip(mapActionStrip) .build(); // MapWithContentTemplate MapWithContentTemplate template = new MapWithContentTemplate.Builder() .setContentTemplate(new ListTemplate.Builder() .setSingleList(new ItemList.Builder() .addItem(new Row.Builder() .setTitle(title)) .addAction(new Action.Builder() .setTitle(actionTitle) .setOnClickListener(() -> { ... }) .build()) .build()) .build())) .setHeader(header) .build()) .setActionStrip(actionStrip) .setMapController(new MapController.Builder() .setMapActionStrip(mapActionStrip) .build()) .build();
Gezinme meta verilerini iletme
Navigasyon uygulamaları, ek navigasyon meta verilerini ana bilgisayar. Düzenleyen, bu bilgileri ve navigasyon uygulamalarının çakışmasını önlemek için koordineli olacaklardır.
Navigasyon meta verileri,
NavigationManager
şuradan erişilebilen araba hizmeti:
CarContext
:
Kotlin
val navigationManager = carContext.getCarService(NavigationManager::class.java)
Java
NavigationManager navigationManager = carContext.getCarService(NavigationManager.class);
Navigasyonu başlatma, sonlandırma ve durdurma
Düzenleyenin birden fazla gezinme uygulamasını, yönlendirme bildirimlerini,
aracınızın mevcut durumu hakkında bilgi sahibi olması gerekir.
yardımcı olabilir. Bir kullanıcı navigasyonu başlattığında
NavigationManager.navigationStarted
.
Benzer bir şekilde, gezinme sona erdiğinde (örneğin, kullanıcı ana
hedef yoksa kullanıcı navigasyonu iptal ederse (arama)
NavigationManager.navigationEnded
.
Yalnızca NavigationManager.navigationEnded
numaralı telefonu ara
Kullanıcı gezinmeyi bitirdiğinde. Örneğin, aylık bütçenizi
yolculuğun ortasındaki rotayı,
Trip.Builder.setLoading(true)
.
Bazen toplantıyı düzenleyen kişinin, navigasyonu ve aramaları durdurmak için bir uygulamaya ihtiyacı vardır
onStopNavigation
NavigationManagerCallback
tarafından sağlanan nesne
NavigationManager.setNavigationManagerCallback
.
Uygulama, daha sonra küme ekranında sonraki dönüş bilgilerini vermeyi durdurmalıdır.
navigasyon bildirimleri ve sesli yardım.
Gezi bilgilerini güncelleyin
Etkin navigasyon sırasında şu numarayı ara:
NavigationManager.updateTrip
.
Bu görüşmede sağlanan bilgiler, araç seti ve
uyarı ekranları. Sürüşteki araca bağlı olarak
tüm bu araçlar,
bilgiler kullanıcıya görüntülenir.
Örneğin, Masaüstü Ana Birimi (DHU)
Step
Trip
, ancak gösterilmiyor
Destination
ekleyebilirsiniz.
Küme Ekranına Çizim
En kapsamlı kullanıcı deneyimini sunmak için Aracın ekran görüntüsünde temel meta verileri gösterme. Car App API 6. seviyeden itibaren navigasyon uygulamalarında oluşturma seçeneği bulunur. kendi içeriklerini doğrudan küme ekranında kullanabilir (desteklenen araçlarda). aşağıdaki sınırlamalara tabidir:
- Küme görüntüleme API'si giriş kontrollerini desteklemiyor
- Küme görüntüsü yalnızca harita parçalarını göstermelidir. Etkin bir rota navigasyonu, isteğe bağlı olarak görüntülenebilir.
- Küme görüntüleme API'si yalnızca
NavigationTemplate
- Ana ekranlardan farklı olarak, küme ekranları tutarlı bir şekilde
NavigationTemplate
Adım adım talimatlar, TVS gibi kullanıcı arayüzü öğeleri kartlar ve işlemler. Harita parçaları tutarlı bir şekilde görüntülenen tek kullanıcı arayüzüdür öğesine dokunun.
- Ana ekranlardan farklı olarak, küme ekranları tutarlı bir şekilde
Küme Desteğini Bildirme
Ana makine uygulamaya, uygulamanızın küme üzerinde oluşturmayı desteklediğini bildirmek için
bir androidx.car.app.category.FEATURE_CLUSTER
eklemeniz gerekiyor
Aşağıdaki gibi CarAppService
cihazınızın <intent-filter>
öğesine <category>
öğesi
aşağıdaki snippet:
<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>
Yaşam Döngüsü ve Durum Yönetimi
API düzeyi 6'dan başlayarak araba uygulaması
yaşam döngüsü akışı
aynı kalır, ancak şimdi CarAppService::onCreateSession
parametresi
SessionInfo
türünde
oluşturulmakta olan Session
hakkında ek bilgi (yani
türünü ve desteklenen şablon kümesini) ayarlayın.
Uygulamalar, her iki sınıfı da yönetmek için aynı Session
sınıfını kullanma seçeneğine sahiptir.
küme ve ana ekran ya da özelleştirmek için ekrana özgü Sessions
oluşturun
her bir ekrandaki davranışının bir örneğidir (aşağıdaki snippet'te gösterildiği gibi).
Kotlin
override fun onCreateSession(sessionInfo: SessionInfo): Session { return if (sessionInfo.displayType == SessionInfo.DISPLAY_TYPE_CLUSTER) { ClusterSession() } else { MainDisplaySession() } }
Java
@Override @NonNull public Session onCreateSession(@NonNull SessionInfo sessionInfo) { if (sessionInfo.getDisplayType() == SessionInfo.DISPLAY_TYPE_CLUSTER) { return new ClusterSession(); } else { return new MainDisplaySession(); } }
Küme görüntüsünün ne zaman veya sağlanacağı ile ilgili garanti verilmez ve
aynı zamanda Session
kümesinin tek Session
olması da mümkündür (
Örneğin, sizin uygulamanız çalışırken kullanıcı ana ekranı başka bir uygulamaya
aktif olarak gezinme) "Standart" uygulamanın sahip olduğu
küme görüntüsü yalnızca NavigationManager::navigationStarted
ayarlandıktan sonra
çağrıldı. Bununla birlikte, uygulamaya küme ekranı sağlanabilir
etkin gezinme olmaması veya kümeye hiçbir zaman sağlanmaması
görüntüleyin. Uygulamanızın
harita parçalarının boşta kalma durumu.
Ana makine, her Session
için ayrı bağlayıcı ve CarContext
örnek oluşturur. Bu
bu nedenle, ScreenManager::push
veya
Screen::invalidate
, yalnızca çağrıldıkları Session
yardımcı olabilir. Uygulamalar bu uygulamalar arasında kendi iletişim kanallarını oluşturmalıdır
gerektiğinde (örneğin, birden fazla bağlantı yöntemini kullanarakSession
)
yayınlar, paylaşılan tekil içerikler veya
else).
Küme Desteğini Test Etme
Uygulamanızı hem Android Auto hem de Android Automotive OS'te test edebilirsiniz. Android Auto'da bu işlem, emüle etmek için Masaüstü Ana Birimi'ni yapılandırarak ikincil küme görüntüsü oluşturabilirsiniz. Örneğin, Android Automotive OS, API için genel sistem görüntüleri ve üstü bir küme ekranı emüle eder.
Seyahat tahminini metin veya simge ile özelleştirin
Seyahat tahminini metin, simge veya her ikisi ile özelleştirmek için
TravelEstimate.Builder
sınıfın
setTripIcon
veya
setTripText
yöntemlerine göz atın. İlgili içeriği oluşturmak için kullanılan
NavigationTemplate
kullanım alanları
TravelEstimate
isteğe bağlı olarak tahmini sürenin yanında veya yerine metin ve simgeler ayarlayın
ve kalan mesafeyi gösterir.
Aşağıdaki snippet,setTripIcon
setTripText
seyahat tahmini:
Kotlin
TravelEstimate.Builder(Distance.create(...), DateTimeWithZone.create(...)) ... .setTripIcon(CarIcon.Builder(...).build()) .setTripText(CarText.create(...)) .build()
Java
new TravelEstimate.Builder(Distance.create(...), DateTimeWithZone.create(...)) ... .setTripIcon(CarIcon.Builder(...).build()) .setTripText(CarText.create(...)) .build();
Adım adım bildirimler sağlama
Sıklıkla adım adım (TBT) navigasyon talimatları sağlayın. güncellenmiş navigasyon bildirimi. Gezinme olarak değerlendirilmesi için bildirimini görürseniz bildirim oluşturucunun takip etmek için:
- Bildirimi "devam ediyor" olarak işaretleyin
NotificationCompat.Builder.setOngoing
yöntemidir. - Bildirimin kategorisini
Notification.CATEGORY_NAVIGATION
olarak ayarlayın. - Bildirimi şu şekilde genişlet:
CarAppExtender
.
Ekranın alt kısmındaki demir yolu widget'ında bir gezinme bildirimi gösterilir.
araba ekranına gidersiniz. Bildirimin önem düzeyi
IMPORTANCE_HIGH
, aynı zamanda uyarı bildirimi (HUN) olarak da gösterilir.
Önem
CarAppExtender.Builder.setImportance
yöntemini,
bildirim kanalının önemi
bu düzenlemelerin nedenlerinden biri.
Uygulama, şurada bir PendingIntent
ayarlayabilir:
CarAppExtender
bunu
Kullanıcı HUN veya demiryolu widget'ına dokunduğunda uygulamaya gönderilir.
Eğer
NotificationCompat.Builder.setOnlyAlertOnce
true
değeri ile çağrılır; bu yalnızca yüksek öneme sahip bildirim uyarılarıdır
bir kez oldu.
Aşağıdaki snippet'te gezinme bildiriminin nasıl oluşturulacağı gösterilmektedir:
Kotlin
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)), 0)) .setImportance(NotificationManagerCompat.IMPORTANCE_HIGH) .build()) .build()
Java
new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID) ... .setOnlyAlertOnce(true) .setOngoing(true) .setCategory(NotificationCompat.CATEGORY_NAVIGATION) .extend( new CarAppExtender.Builder() .setContentTitle(carScreenTitle) ... .setContentIntent( PendingIntent.getBroadcast( context, ACTION_OPEN_APP.hashCode(), new Intent(ACTION_OPEN_APP).setComponent( new ComponentName(context, MyNotificationReceiver.class)), 0)) .setImportance(NotificationManagerCompat.IMPORTANCE_HIGH) .build()) .build();
Mesafe için TBT bildirimini düzenli olarak güncelleyin
ve bildirimi yalnızca bir HUN olarak görüntüleyecek şekilde güncellenir ve ray widget'ı güncellenir.
HUN davranışını kontrol etmek için bildirimin önem derecesini
CarAppExtender.Builder.setImportance
Projenin önem düzeyini
IMPORTANCE_HIGH
bir HUN gösteriyor. Ayar
yalnızca ray widget'ını günceller.
PlaceList NavigationTemplate içeriğini yenile
Sürücülerin internette gezinirken tek bir düğmeye dokunarak içeriği yenilemesine izin verebilirsiniz
mülakatlar için
PlaceListNavigationTemplate
.
Liste yenilemeyi etkinleştirmek için
OnContentRefreshListener
arayüzün
onContentRefreshRequested
yöntem ve kullanım
PlaceListNavigationTemplate.Builder.setOnContentRefreshListener
işleyiciyi şablona göre ayarlayın.
Aşağıdaki snippet'te, şablonda işleyicinin nasıl ayarlanacağı gösterilmektedir:
Kotlin
PlaceListNavigationTemplate.Builder() ... .setOnContentRefreshListener { // Execute any desired logic ... // Then call invalidate() so onGetTemplate() is called again invalidate() } .build()
Java
new PlaceListNavigationTemplate.Builder() ... .setOnContentRefreshListener(() -> { // Execute any desired logic ... // Then call invalidate() so onGetTemplate() is called again invalidate(); }) .build();
Yenile düğmesi yalnızca
İşleyicinin bir değeri varsa PlaceListNavigationTemplate
.
Kullanıcı yenile düğmesini tıkladığında
onContentRefreshRequested
yönteminiz
OnContentRefreshListener
uygulaması çağrılır. Şu süre içinde:
onContentRefreshRequested
,
Screen.invalidate
yöntemini kullanabilirsiniz.
Ardından toplantıyı düzenleyen kullanıcı,
Screen.onGetTemplate
yenilenmiş içeriğe sahip şablonu alma yöntemini kullanır. Görüntüleyin
Şu şablon için bir şablonun içeriğini yenileyin:
şablonları yenileme hakkında daha fazla bilgi edinin. Bir sonraki şablonda olduğu sürece
iade eden:
onGetTemplate
, şuna ait:
aynı türdeyse bir yenileme olarak sayılır ve
şablon kotası.
Sesli yardım sağlayın
Navigasyon yardımını araç hoparlörü üzerinden vermek için uygulamanızın istekte bulunması gerekir
ses odağı.
AudioFocusRequest
, ayarlandı
kullanımı AudioAttributes.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
. Ayrıca,
odak kazancını AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
olarak ayarlayın.
Gezinmeyi simüle et
Uygulamanızı Google Haberler'e gönderdiğinizde, gezinme işlevselliğini doğrulamak için
Google Play Store için kullanıyorsanız, uygulamanızın
NavigationManagerCallback.onAutoDriveEnabled
geri arama. Bu geri çağırma çağrıldığında uygulamanızın, aşağıdaki işlemler için navigasyonu simüle etmesi gerekir:
Kullanıcı navigasyona başladığında seçilen hedef. Uygulamanız bundan çıkabilir
mevcut Session
yaşam döngüsünde
ulaşmak için
Lifecycle.Event.ON_DESTROY
durumu.
onAutoDriveEnabled
uygulamanızın
komut satırından şu komutu çalıştırın:
adb shell dumpsys activity service CAR_APP_SERVICE_NAME AUTO_DRIVE
Bu, aşağıdaki örnekte gösterilmektedir:
adb shell dumpsys activity service androidx.car.app.samples.navigation.car.NavigationCarAppService AUTO_DRIVE
Varsayılan navigasyon araç uygulaması
Android Auto'da varsayılan navigasyon araç uygulaması, Kullanıcı tarafından başlatılan navigasyon uygulaması. Varsayılan uygulama Kullanıcı, gezinme niyetini Kullanıcı, Asistan aracılığıyla veya başka bir uygulama navigasyonu başlatma niyetinde olabilir.
Bağlam içi gezinme uyarılarını göster
Alert
önemli öğeleri gösterir
bağlamdan ayrılmadan isteğe bağlı eylemlerle
gezinme ekranına gidin. Sürücüye en iyi deneyimi sunmak için
Alert
,
NavigationTemplate
Böylece, navigasyon rotasını engellememek ve sürücünün dikkatini en aza indirmek için kullanabilirsiniz.
Alert
, yalnızca NavigationTemplate
içinde kullanılabilir.
NavigationTemplate
alanının dışındaki bir kullanıcıya bildirim göndermek için:
aşağıdaki adımları izleyerek bir uyarı bildirimi (HUN) kullanabilirsiniz:
Bildirimleri görüntüleyin.
Örneğin, Alert
kullanarak şunları yapabilirsiniz:
- Sürücüye mevcut navigasyonla alakalı bir güncelleme, örneğin Trafik koşullarındaki değişim.
- Sürücüden mevcut navigasyonla ilgili bir güncelleme yapmasını isteyin. Örneğin: ve hız tuzağının bulunması.
- Yaklaşan bir görev önerin ve sürücünün bu görevi kabul edip etmediğini sorun. Örneğin, sürücünün yolda birini almaya istekli olup olmadığı.
Alert
, temel biçiminde bir başlık ve Alert
bölümünden oluşur.
süre tahminidir. Süre, ilerleme çubuğuyla gösterilir. İsteğe bağlı olarak,
bir alt başlık, bir simge ve en fazla iki tane ekleyebilirsiniz.
Action
nesne algılandı.
Alert
gösterildikten sonra,
sürücü etkileşimi NavigationTemplate
alanından ayrılmanıza yol açar.
Alert
zaman aşımına uğrayana kadar orijinal NavigationTemplate
içinde kalır.
bir işlem yapar veya uygulama Alert
cihazını kapatır.
Uyarı oluştur
Alert.Builder
kullanın
Alert
örneği oluşturmak için:
Kotlin
Alert.Builder( /*alertId*/ 1, /*title*/ CarText.create("Hello"), /*durationMillis*/ 5000 ) // The fields below are optional .addAction(firstAction) .addAction(secondAction) .setSubtitle(CarText.create(...)) .setIcon(CarIcon.APP_ICON) .setCallback(...) .build()
Java
new Alert.Builder( /*alertId*/ 1, /*title*/ CarText.create("Hello"), /*durationMillis*/ 5000 ) // The fields below are optional .addAction(firstAction) .addAction(secondAction) .setSubtitle(CarText.create(...)) .setIcon(CarIcon.APP_ICON) .setCallback(...) .build();
Alert
dinlemek istiyorsanız
aşağıdaki durumlardan birinde geçerli olan
AlertCallback
arayüzü.
AlertCallback
arama yolları şunlardır:
Alert
zaman aşımına uğrarsa düzenleyenAlertCallback.onCancel
yöntemini içerenAlertCallback.REASON_TIMEOUT
değer. Daha sonra,AlertCallback.onDismiss
yöntemidir.Sürücü, işlem düğmelerinden birini tıklarsa düzenleyen,
Action.OnClickListener
ve ardındanAlertCallback.onDismiss
numaralı telefonu arar.Alert
desteklenmiyorsa düzenleyenAlertCallback.onCancel
AlertCallback.REASON_NOT_SUPPORTED
değer. Düzenleyen kullanıcı sizi aramazAlert
gösterilmediği içinAlertCallback.onDismiss
.
Uyarı süresini yapılandır
Alert
süresini seçin:
en iyi şekilde yararlanabilirsiniz. Navigasyon için önerilen süre
Alert
10 saniye. Navigasyon uyarıları başlıklı makaleyi inceleyin
konulu videomuzu izleyin.
Uyarı göster
Alert
göstermek için
AppManager.showAlert
yöntemi aracılığıyla kullanılabilir
CarContext
.
// Show an alert
carContext.getCarService(AppManager.class).showAlert(alert)
- Şuna sahip
Alert
numarasıylashowAlert
aranıyor:alertId
şu anda ekranda gösterilenAlert
kimliğinin kimliğiyle aynı olan hiçbir şey yapmaz.Alert
güncellenmiyor.Alert
öğelerini güncellemek için yeniden oluşturmanız gerekir bunu yeni biralertId
ile yapabilirsiniz. - Farklı bir
Alert
numarasıylashowAlert
aranıyor Şu anda ekranda bulunanAlert
öğesine görealertId
şunları kapatır: Şu andaAlert
görüntüleniyor.
Uyarıyı kapatma
Alert
otomatik olarak kapanırken
zaman aşımı veya sürücü etkileşimi nedeniyle, manuel olarak bir
Alert
(örneğin, bilgileri güncelliğini yitirdiğinde) Bir
Alert
,
dismissAlert
yöntemini içeren
alertId
Alert
.
// Dismiss the same alert
carContext.getCarService(AppManager.class).dismissAlert(alert.getId())
Şu anki bilgiyle eşleşmeyen alertId
numarasından dismissAlert
aranıyor
görüntülenen Alert
hiçbir şey yapmaz. Bu durum bir istisna değildir.