Devam etmeden önce Sürüş Dikkat Dağıtma Kurallarını inceleyin.
Bu sayfada, birden fazla UX Kısıtlama kuralı yapılandırması (örneğin, Avrupa Birliği ve Japonya) oluşturmak ve ardından çalışma zamanında hangi kural kümesinin uygulanacağını belirlemek için kullanabileceğiniz Araç Kullanıcı Deneyimi (UX) Kısıtlamaları kuralları açıklanmaktadır. Daha fazla bilgi için bkz. CarUxRestrictions .
Araç UX Kısıtlamaları hizmeti, geliştiricilerin yeni bir Araç UX Kısıtlamaları yapılandırması tanımlamasına olanak tanır. Bir geliştiricinin kısıtlama kurallarını değiştirmek istemesi durumunda (yerel güvenlik standartlarına uymak gibi), geliştirici yeni yapılandırmayı tanımlamak için API'yi kullanabilir.
Yapılandırmayı ayarlamak için kullanılan API yalnızca yeni yapılandırmada kalır. Başka bir deyişle yapılandırma hemen etkili olmaz . Bunun yerine, UX Kısıtlamaları hizmeti yeniden başlatıldığında ve araç Park durumundayken yeni yapılandırma yüklenir. Araç servisi, yeni konfigürasyonu yeniden yüklemeden önce aracın Park konumunda olmasını sağlar.
Yeni UX Kısıtlamaları hizmet yöntemine ek olarak, yapılandırmayı oluşturmak için API'ler sağlanır. Vites seçimi ve hız durumu üç sürüş durumundan birine dönüştürülür:
- Park edilmiş. Parkta vites.
- Rölantide. Vites Parkta değil ve hız sıfır.
- Hareketli. Vites Parkta değil ve hız sıfır değil.
Uygulamaların bir otomobilin sürüş durumunu ve ilgili UX kısıtlamalarını nasıl tükettiğini öğrenmek için bkz. Araç Sürüş Durumunu Kullanma ve UX Kısıtlamaları .
Sürücü durumlarına göre kısıtlama yapılandırması
Sürücünün dikkatinin dağılmasını önlemek için Android, sürüş durumunu bir dizi UX Kısıtlaması ile eşleştirir
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
- Park edilmiş. Sınırsız.
- Rölantide. Video yok ve yapılandırma ekranı yok.
- Hareketli. Tamamen kısıtlı (tüm kısıtlamalar gereklidir).
Yukarıda gösterilen eşleme, bir XML kaynağı olarak önceden belirlenmiş ve yapılandırılmıştır.
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
daha sonra kuralları belleğe kaydeder. Hizmet daha sonra mevcut sürüş durumunu UX Kısıtlamalarıyla eşleştirir ve mevcut kısıtlamaları tüm sisteme yayınlar.<!-- No restrictions when car is parked --> <DrivingState car:state="parked"> <Restrictions car:requiresDistractionOptimization="false" car:uxr="baseline"/> </DrivingState> <!-- Restrictions when car is idling --> <DrivingState car:state="idling"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video|no_config"/> </DrivingState> <!-- Restrictions for speed >= 0 m/s --> <DrivingState car:state="moving" car:minSpeed="0.0"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="fully_restricted"/> </DrivingState>
Çoklu ekranlar için konfigürasyonlar
Varsayılan olarak ek ekranlara herhangi bir kısıtlama uygulanmaz. Birden fazla ekrana yönelik kısıtlama yapılandırmaları oluşturmak için, söz konusu ekranın fizikselPort'una RestrictionMapping
etiketini ekleyin. Uygun kısıtlamalar her ekrana otomatik olarak uygulanır. Aşağıdaki örnekte, fiziksel Bağlantı Noktası Kimlikleri 1 ve 2'ye sahip ekranlar farklı yapılandırmalara sahiptir:
<RestrictionMapping car:physicalPort="1"> <DrivingState car:state="moving"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_keyboard|no_video"/> </DrivingState> </RestrictionMapping> <RestrictionMapping car:physicalPort="2"> <DrivingState car:state="moving"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/> </DrivingState> </RestrictionMapping>
Kısıtlama modları için yapılandırmalar
Mod için genç gibi herhangi bir adı seçebilirsiniz. Aşağıdaki örnekte, varsayılan ve yolcu modları için farklı kısıtlamalar yapılandırılmıştır (daha önce yalnızca yolcu modu destekleniyordu):
<DrivingState car:state="idling"> <Restrictions car:mode="passenger" car:requiresDistractionOptimization="false" car:uxr="baseline"/> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/> </DrivingState> </Restrictions>Mod için herhangi bir dize adı ayarlamak üzere API'yi kullanabilirsiniz. Örneğin, CarUxRestrictionsManager'daki
setRestrictionMode(@NonNull String mode)
yöntemi. (Daha önce CarUxRestrictionsManager'da setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode)
yöntemini kullanırdınız).CarUxKısıtlamalarYapılandırma API'leri
CarUxRestrictionsConfiguration ile Kısıtlamalar
Yeni CarUxRestrictionsConfiguration
sınıfı geçerli XML yapılandırma şemasına 1:1 eşlenir. CarUxRestrictionsConfiguration
CarUxRestrictions. Builder
, build() üzerine yapılandırmayı doğrular.
new CarUxRestrictionsConfiguration.Builder() // Explicitly set restrictions for each driving state. .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_PARKED, /* requiresOptimization= */ false, /* restrictions= */ UX_RESTRICTIONS_BASELINE) .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_IDLING, true, UX_RESTRICTIONS_NO_VIDEO|UX_RESTRICTIONS_NO_SETUP) .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_MOVING, true, UX_RESTRICTIONS_FULLY_RESTRICTED) // Set restriction parameters. .setMaxStringLength(int max) .setMaxCumulativeContentItems(int max) .setMaxContentDepth(int max) // Build a new CarUxRestrictionsConfiguration. .build();
CarUxRestrictionsManager API'si
CarUxRestrictionsManager
ile sonraki sürücü için CarUxRestrictionsConfiguration
ayarlayın. Bu yöntem izin gerektirir, Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION
.
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot( CarUxRestrictionsConfiguration config);
Yeni bir UX Kısıtlamaları yapılandırmasını sürdürün
Yeni bir yapılandırma aktarıldığında, UX Kısıtlamaları hizmeti, yeni yapılandırmanın başarıyla kaydedilip kaydedilmediğini belirten bir boole değeri döndürür. Bu yeni konfigürasyon yalnızca Entegre Ana Ünite (IHU) yeniden başlatıldığında ve araç park edildiğinde kullanılır. Dahili olarak, UX Kısıtlamaları hizmeti iki yapılandırma kümesi içerir:
- Üretme. İsteğe bağlı olmasına rağmen bu yapılandırma sıklıkla mevcuttur. UX Kısıtlamaları hizmeti, başlatılırken bu yapılandırmayı okur.
- Aşamalı. Ayrıca isteğe bağlı olan bu yapılandırmanın UX Kısıtlamaları üzerinde hiçbir etkisi yoktur ve araç servisi başladığında ve araç park edildiğinde Üretime yükseltilir.
Şekil 1. Üretim konfigürasyonu
Adres hataları
CarPropertyManager'dan sürüş durumu bilgileri alınana kadar (örneğin, başlatma sırasında), UX Kısıtlamaları uygulanmayacaktır. Sistem, sürüş durumu Park edilmiş gibi çalışır.
Kaydedilmiş bir yapılandırmanın okunması başarısız olursa (örneğin, SettingNotFoundException sonuçları), UX Kısıtlamaları hizmeti sabit kodlu, tamamen kısıtlanmış moda geri döner:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
Sürüş durumu ve kullanıcı kısıtlamaları
Aşağıdaki içerik, aşağıdaki tasarım şemasında görüntülenen etkileşimleri açıklamaktadır:
Şekil 2. Sürüş durumu etkileşimleri
Sürüş durumunu türetmek için kullanılan özellikler
Sürüş durumunu türetmek için aşağıdaki üç VehiclePropertyIds
kullanın:
Uygulamaların kullanabileceği API'ler
Kod aşağıdaki konumlarda bulunur:
Kod | Konum |
---|---|
CarUxRestrictionsManager UX Kısıtlama değişikliklerine kaydolmak için genel API'ler. | /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java |
CarUxRestrictions UX kısıtlamaları tanımı. | /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java |
CarDrivingStateManager Durum değişikliklerini yönlendirmek için kaydolacak sistem API'leri. | /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java |
Sürüş durumlarını simüle etmek için bkz. Test Etme .
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2024-04-29 UTC.