Devam etmeden önce Dikkat Çekme Yönergeleri'ni inceleyin.
Bu sayfada, aşağıdakileri oluşturmak için kullanabileceğiniz Araba Kullanıcı Deneyimi (UX) Kısıtlamaları kuralları açıklanmaktadır. birden fazla Kullanıcı Deneyimi Kısıtlaması kuralı yapılandırması (örneğin, Avrupa Birliği ve Japonya) varsa ve çalışma zamanında hangi kural kümesinin uygulanacağını belirler. Daha fazla bilgi için bkz. CarUxRestrictions.
Araba Kullanıcı Deneyimi Kısıtlamaları hizmeti, geliştiricilerin yeni bir Araba Kullanıcı Deneyimi Kısıtlamaları'nı tanımlamasına olanak tanır. yapılandırma. Bir geliştirici kısıtlama kurallarını değiştirmek (örneğin, yerel güvenlik standartları) içeriyorsa 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 geçerlilik kazanmaz. Bunun yerine yeni yapılandırma Kullanıcı Deneyimi Kısıtlamaları hizmeti yeniden başlatıldığında ve araba Park pozisyonunda olduğunda yüklenir. Araba servisi yeni konfigürasyonu yeniden yüklemeden önce aracın Park'ta olduğundan emin olur.
Yeni Kullanıcı Deneyimi Kısıtlamaları hizmet yöntemine ek olarak, yapılandırma. Dişli seçiminin ve hızın durumu, üç sürüş durumundan birine dönüştürülür:
- Park edildi. Park'taki ekipman.
- Boşta kalma. Vites Park'ta değil ve hız sıfır.
- Taşınma. Vites, Park'ta değil ve hız sıfır değil.
Uygulamaların bir arabanın sürüş durumunu nasıl kullandığını ve ilgili kullanıcı deneyimi kısıtlamalarını öğrenmek için Araç Sürüş Durumu ve Kullanıcı Deneyimi Kısıtlamaları adlı makaleyi inceleyin.
Sürücü durumlarına dayalı kısıtlama yapılandırması
Android, sürücünün dikkatinin dağılmasını önlemek için sürüş durumunu bir dizi kullanıcı deneyimi kısıtlamasıyla eşleştirir
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
.
- Park edildi. Kısıtlanmamış.
- Boşta kalma. Video ve yapılandırma ekranı yok.
- Taşınma. Tamamen kısıtlanmış (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. İlgili içeriği oluşturmak için kullanılan
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
.
sonra kuralları belleğe kaydeder. Ardından hizmet, mevcut sürüş durumunu Kullanıcı Deneyimi Kısıtlamaları ile eşleştirir
ve geçerli 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>
Birden fazla ekran için yapılandırmalar
Varsayılan olarak, ek ekranlara herhangi bir kısıtlama uygulanmaz. Kısıtlama oluşturmak için
birden fazla ekran için yapılandırma kullanıyorsanız RestrictionMapping
etiketini,
fizikselPort'u ekleyin. Uygun kısıtlamalar, her bir etiket için
görüntüleyin. Aşağıdaki örnekte, fiziksel Bağlantı Noktası Kimlikleri 1 ve 2 olan ekranlar farklı
yapılandırma:
<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ıyla ilgili 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ılı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ını ayarlamak üzere API'yi kullanabilirsiniz. Örneğin,
setRestrictionMode(@NonNull String mode)
yöntemini kullanabilirsiniz.
(Daha önce,
setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode)
yöntemi
CarUxRestrictionsManager).
CarUxRestrictionsConfiguration API'leri
CarUxRestrictionsConfiguration ile ilgili kısıtlamalar
Yeni CarUxRestrictionsConfiguration
sınıfı, mevcut XML ile 1:1 oranında eşlendi.
yapılandırma şeması. CarUxRestrictionsConfiguration
, yapılandırmayı doğrulayan CarUxRestrictions.
ile oluşturulabilir.
oluşturmak için kullanılır.
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'sı
Bir sonraki sürüş için CarUxRestrictionsManager
ile CarUxRestrictionsConfiguration
ayarlayın. Bu yöntem için izin gerekir.
Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot( CarUxRestrictionsConfiguration config);
Yeni kullanıcı deneyimi kısıtlamaları yapılandırmasını kullanmaya devam etme
Yeni bir yapılandırma iletildiğinde, Kullanıcı Deneyimi Kısıtlamaları hizmeti, yeni yapılandırmanın başarıyla kaydedilip kaydedilmediğini kontrol edin. Bu yeni yapılandırma yalnızca Entegre ana birim (IHU) yeniden başlatılır ve araba park edilmiş olur. Kullanıcı deneyimi kısıtlamaları, şirket içinde hizmet iki yapılandırma grubu içerir:
- Üretim. İsteğe bağlı olsa da bu yapılandırma genellikle mevcuttur. Kullanıcı deneyimi Kısıtlamalar hizmeti, başlatma sırasında bu yapılandırmayı okur.
- Aşamalı. Ayrıca isteğe bağlı, bu yapılandırmanın kullanıcı deneyimi kısıtlamaları üzerinde etkisi yoktur. ve araba hizmeti başladığında ve araba park edildiğinde Üretim'e yükseltilir.
Şekil 1. Üretim yapılandırması
Adres hataları
CarPropertyManager'dan sürüş durumu bilgileri alınana kadar (örneğin, başlatma) nedeniyle, Kullanıcı Deneyimi Kısıtlamaları zorunlu kılınmaz. Sistem, çalışma durumu "Sürüş durumu"muş gibi çalışır Park edildi.
Kayıtlı bir yapılandırma okunamazsa (örneğin, AdjustNotFoundException sonuçları), Kullanıcı Deneyimi Kısıtlamaları hizmeti sabit kodlu, tamamen kısıtlı moda geri dönüyor:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
Araç kullanma durumu ve kullanıcı kısıtlamaları
Aşağıdaki içerikte, aşağıdaki tasarım şemasında görüntülenen etkileşimler açıklanmaktadır:
Şekil 2. Durum etkileşimlerini artırma
Sürüş durumunu elde etmek için kullanılan mülkler
Sürüş durumunu elde etmek için aşağıdaki üç VehiclePropertyIds
kullanın:
Uygulamaların kullanabileceği API'ler
Bu kod aşağıdaki konumlarda bulunur:
Kod | Konum |
---|---|
CarUxRestrictionsManager
Kullanıcı deneyimi Kısıtlaması değişikliklerine kaydolmak için kullanılan herkese açık API'ler.
|
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarUxRestrictions
Kullanıcı deneyimi kısıtlamalarının tanımı.
|
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarDrivingStateManager .
Sürüş durumu değişiklikleri için kaydedilecek sistem API'leri. |
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
Sürüş durumunu simüle etmek için bkz. Test.