Android 14'te yeni araç OEM eklenti hizmetleri etkinleştirme yapılandırılacak bazı araba bileşenleri var. Özellikle işitsel reklamlarında üç yeni OEM'lerin esnek bir şekilde yapılandırmalarını sağlayan eklenti hizmetleri kullanıma sunuldu AAOS cihazlarda ses yönetimi:
- Ses odaklama kontrolü
- Ses düzeyi ve sesi kapatma kontrolü
- Sesi Kısma kontrolü
Araba eklentisi hizmet mimarisi
Aşağıdaki şekilde, otomobil hizmetleri ve bunların ilişkilerine genel bir bakış sunulmaktadır gönderebilir. Uygulama işlemlerine ve araba hizmeti sürecine benzer şekilde, OEM araba servisi süreci kendi işlem alanını işliyor.
Araba hizmeti, şurada tanımlanan bileşeni bularak OEM otomobil hizmetini başlatır:
config_oemCarService
Yapılandırma boşsa OEM hizmeti mevcut değildir
ve hiçbir hizmet başlatılmaz. Bileşen, resimdeki
OemCarService
Araç ses hizmeti, araç sesi OEM'sini edinmek için API'lerin üzerine yazmalıdır
hizmet:
public final class OemCarServiceImp extends OemCarService {
@Override
public OemCarAudioFocusService getOemAudioFocusService();
@Override
public OemCarAudioDuckingService getOemAudioDuckingService();
@Override
public OemCarAudioVolumeService getOemAudioVolumeService();
}
Örneğin,
example, bkz.
referans test uygulaması,
packages/services/Car/tests/OemCarServiceTestApp
.
Hizmet, araba servisi tarafından başlatılsa da otomatik olarak başlamaz.
araç ses hizmetinin erişebildiği izinleri devralır. Dolayısıyla,
OEM hizmetlerinin gerektirdiği izin, uygun
mekanizmasıdır. Örneğin, bkz.
packages/services/Car/data/etc/com.android.car.oemcarservice.testapp.xml
OEM hizmet mimarisine sahip araba ses sistemi hizmeti
AAOS'te araç ses hizmeti şu işlemleri yönetir:
- Ses yönlendirme
- Ses odağı
- Sesi kısma
- Sesi aç ve kapat
Android 14'ten önce bu davranış çoğunlukla sabitti ve yalnızca ayarlar aracılığıyla değiştirilebilir. Android 14, araç sesi için bir mekanizma kullanıma sundu aşağıdaki hizmetleri yöneten OEM tarafından tanımlanmış bir bileşenle iletişim kurmak için kullanılır:
- Ses odağı
- Sesi kısma
- Sesi aç ve kapat
Aşağıdaki şekilde, araç ses hizmeti ve ses sistemi için basitleştirilmiş bir mimari gösterilmektedir araba OEM servisi var. Araç ses hizmeti, otomobilinizi veya sisteminizi ses davranışını yönetmek için araba OEM ses hizmetini kullanabilir. İkincisi ise yalnızca İlgili OEM araç ses hizmeti bileşeni tanımlanmışsa Aksi halde, araç ses hizmeti varsayılan davranışı kullanır.
Araç ses sistemi hizmetinin ve araba OEM ses hizmetinin her zaman açık olduğundan emin olmak için ve araç ses hizmeti, her aramada aracın ses sistemindeki ses yığınının mevcut durumunu araba OEM ses hizmetine bağlar. Örneğin, araç ses hizmeti, ses odağını değerlendirme isteğine müdahale eder ve sesi yığının mevcut durumunu araba OEM ses hizmetine aktarır. Mevcut durum geçerli odak tutucuyu ve geçerli odak kaybedenleri içerir. Odak kaybedenler hâlâ yığının parçası olan ancak geçici olarak kaybolan odak istekleri odaklanacağız.
Araç ses hizmeti, araçtaki tüm ses etkinliğini yönetmelidir. Araba ses hizmeti ses davranışının bazı bölümlerini yönetmez, ardından aracın OEM ses hizmetine sunulan bilgiler eksik. Örneğin, Bir OEM, otomatik olarak bir cihaz hizmeti sağlayıcısında ses odağı işlemeyi araba ses hizmeti kendi ses odak politikasına sahip değilse, araç ses hizmeti gönderebilirsiniz. Bu, arabanın yeteneklerini etkileyebilir Görünmeyen bilgi içermeyebileceği için karar verme sürecinde OEM ses hizmeti aktarmalısınız.
Araç ses hizmeti, işlem yapmak için OEM araç hizmetlerini arar. Bu aramalar süreçler arası iletişim (IPC) gerektirir. IPC ve her çağrıya gecikme ekler. Rapordaki gecikmeyi en aza indirmek OEM servisi var.
OEM hizmetine yapılan araç ses hizmeti aramaları engellediğinden OEM hizmeti Doğrudan API değerlendirmelerinde araç ses hizmetini çağırmamalıdır. Bunun yerine araç ses hizmeti, servisler ve araçlar arasındaki çağrıların yapılması için ve iki işlem yalnızca tek yönde ilerler.
OEM araç ses hizmeti tanımları
OEM araç ses odak hizmeti
Araba ses hizmeti, bir cihazı kaydettirerek uygulamalardan gelen ses odaklanma isteklerini yönetir ses politikası odağı dinleyicisi. Araba ses hizmeti, sesin ve ses sisteminin mevcut statik bir davranışa dayalı olarak Etkileşim matrisi. Matris, üç farklı etkileşim türünü tanımlar:
Eşzamanlı etkileşim. Odaklayıcılar sayesinde odağınızı koruyabilir gerekir.
Özel etkileşimler. Gelen odaklanma isteği geçerli odak tutucusu vardır.
Etkileşimi reddedin. Gelen odaklanma isteği aşağıdaki nedenlerle reddedildi: geçerli odak tutucuya dokunun.
Bu, bazı otomotiv kullanım alanları için yeterli olsa da tüm
çeşitli etkileşim ihtiyaçları ortaya çıkabiliyor. Bunun için
OemCarAudioFocusService
özelliğini tanıtın:
public interface OEmCarAudioFocusService {
OemCarAuddioFocusResults evaluateAudioFocusRequest(
OemCarAudioFocusEvaluationRequest request);
void notifyAudioFocusChange(
List<AudioFocusEntry> holder,
List<AudioFocusEntry> losers, int zoneId);
}
evaluateAudioFocusRequest
API'si, araç ses hizmetinden herhangi bir zamanda çağrılır
değerlendirilmesi gereken bir ses odağı isteği vardır. Bu istek,
Sonuçların döndürülmesini engelleyen API. İstek,
ses grubunun mevcut durumu hakkında:
Bu bilgiler, newFocusRequest
öğesini,
focusHolders
bölgesindeki mevcut odak sahipleri ve
focusLosers
. API aşağıdaki sonuçları döndürür:
class OemCarAudioFocusResult {
int audioZoneId;
int audioFocusEvaluationResults;
AudioFocusEntry focusResult;
List<AudioFocusEntry> newLosers;
List<AudioFocusEntry> newlyBlocked;
}
Bu, gerçek değerlendirme sonuçlarıyla ilgili bilgileri
audioFocusEvaluationResults
değeri, mevcut istekte
verilmiş, gecikmiş ya da başarısız olmuş olabilir. Geçerli odak yığınındaki değişiklikler
niteliğine bağlı olarak newLosers
ve newlyBlocked
girişlerinde ayarlanmalıdır
gösterir.
newLosers
öğesinin, daha önce odak noktası olan ancak
dikkati kalıcı veya geçici olarak kaybetmesi gerekir. Odağı kalıcı olarak kaybedenler
ses odağı yığınından daha da kaldırılır ve geçici odak kaybedenler
yeniden odaklanılana veya yeniden odaklanılana kadar mevcut odak kaybedenler yığınına taşınır
terk edilmiş olmalıdır. Her ne olursa olsun,
bu isteklere karşılık gelen bir odak kaybedilir.
newlyBlocked
listesi, daha önce odak kaybeden listesinde olan girişleri içerir
tarafından engelleniyor. Engelleme, kalıcı veya
geçici, kalıcı odak noktası engellendi için giriş yığından kaldırılır.
odaklanma dinleyicilere gönderilir. Geçici odak kaybı için
giriş, odak kaybedenler yığınında kalır ancak yeni odak engelleyici
eklenirse daha önce olduğu gibi hiçbir odak kaybı gönderilmez
ilk engellendiğinde gönderilmiştir. İsteğin engellemesi,
mevcut engelleyiciler kaldırılır, yoksa odaklama şu şekildeyse yığından kaldırılır:
terk edilmiş olmalıdır.
İkinci API olan notifyAudioFocusChange
, her projede
isteme veya bırakma. API çoğunlukla OEM hizmetini bilgilendirmek için kullanılır
OEM araç ses hizmetinin davranışını etkileyebilecek odak değişiklikleri hakkında bilgi edinin.
Odak değerlendirmesi yönergeleri
AAOS'de ses odağı, ses çalmayı yönetmek ve hangi uygulamasının kullanıcıya en iyi deneyimi sunmasını sağlamalıdır. Dolayısıyla, OEM eklenti hizmetinin, alakalı bir ses odağı isteği:
Ayakta yüksek öncelikli ses odağı (ör. telefon görüşmesi, acil durum veya güvenlik) uygulamaları sese odaklanabilmelidir. geçici veya kalıcı olarak.
Bir medya odağı etkinken, istekte bulunan uygulamalar:
Arama kullanım odağı, eşzamanlı olarak odaklanabilmelidir özel bir istektir.
Navigasyon kullanım odağı, senkronize edebilirsiniz.
Asistan kullanım odağı, ikisinden de odaklanabilmelidir senkronize edebilirsiniz.
Yüksek öncelikli ses odağı (ör. telefon araması, acil durum) ayaktayken uyarı veya güvenlik uyarısı) etkin olduğunda, gelen gecikmeli ses odağı talebin kabul edilmesi ya da geciktirilmesi gerekir.
Yukarıdaki öneriler olası her durumu içermez, ancak odaklanmayı isteyen uygulamalar, etkin olmadığında yüksek öncelikli sesler duyabilirsiniz. Yüksek öncelikli sesler etkin olduğunda bile gecikmeli odak yine de dikkate alınmalı ve gerekli işlemler gerçekleştirildikten sonra yüksek öncelikli sesi durdurma.
OEM araç ses seviyesi hizmeti
Araba ses hizmeti, ses düzeyiyle ilgili önemli etkinlikleri ses düzeyini dinleyerek yönetir ses sisteminden veya ses düzeyi önemli etkinlikleri doğrudan dinleyerek ayarlamalar yapın araba giriş hizmetinden yararlanabilir. Her iki durumda da, arabanın varsayılan davranışı ses hizmetinin, etkin durumdaki ses düzeylerine göre hangi ses düzeyi grubunun değiştirileceğini ses çalarlar ve ses bağlamı öncelik listesi.
İki hacim önceliği listesi sağlarız. İlk liste tüm sesli reklamları dikkate alır bağlamları bu sıraya göre sıralayın. Liste, en büyük ve azalan düzende sunulur. en altta, en düşük önceliğe sahip olur. Örneğin, navigasyon sesi ve müzik sesi aynı anda etkindir, ardından Bir ses seviyesi önemli etkinliği sırasında gezinme ses düzeyinin değiştirilmesi.
- Navigasyon
- Ara
- Müzik
- Duyuru
- Sesli komut
- Sesli aramada zil çalsın
- Sistem sesi
- Güvenlik
- Alarm
- Bildirim
- Aracın durumu
- Acil durum
Ses seviyesi önemli etkinlik yönetimini daha basit hale getirmek için araç ses hizmetinde ses bağlamının ikinci öncelik listesi:
- Ara
- Medya
- Duyuru
- Sesli komut
Bu liste ayrıca azalan sırada sunulur. Bu anahtar listesinin amacı daha yaygın seslerin önemli etkinlikler aracılığıyla değiştirilmesine olanak tanımaktır. Yaygın olmayan daha kısa süreli sesler gibi ses ayarları, ses ayarlarından yönetilebilir Yalnızca kullanıcı arayüzü.
Birimin gerçek sürümü
audioVolumeAdjustmentContextsVersion
yapılandırması. Yapılandırma,
1
veya 2
olarak ayarlanır (varsayılan 2
).
Hacim yönetiminde daha fazla esneklik sağlamak için
OemCarAudioVolumeService
, Android 14'te kullanıma sunuldu:
public interface OemCarAudioVolumeService {
OemCarvolumeChangeInfo getSuggestedGroupForVolumeChange(
OemCarAudioVolumeRequest request, int volumeAdjustment);
}
OEM araç ses düzeyi hizmetinin, ses düzeyini almak için
volumeAdjustment
ve OemCarAudioVolumeRequest
:
class OemCarAudioVolumeRequest {
int audioZoneId;
int callState;
List<AudioAttributes> activePlaybackAttributes;
List<AudioAttributes> duckedAttributes;
List<CarVolumeGroupInfo> volumeGroupState;
}
İsteğin activePlaybackAttributes
özelliği etkin ses özelliklerine sahip. İlgili içeriği oluşturmak için kullanılan
duckedAttributes
şu anda gizlenmiş ses özellikleridir. İlgili içeriği oluşturmak için kullanılan
volumeGroupState
, birimler grubunun mevcut durumuna sahip. İstek
ses yığınının mevcut durumunu gösterir ve ses parçasının mevcut durumunu
hangi ses düzeyi grubunun değiştirilmesi
gerektiğini belirler. Sonuçlar
OemCarVolumeChangeInfo
:
class OemCarVolumeChangeInfo {
boolean change;
CarVolumeGroupInfo volumeGroupChanged;
}
change
boole değeri herhangi bir hacmin değişip değişmediğini, true
ise şunları belirtir:
bir değişiklik olur ve ses düzeyi grubunun güncellenmesi gerekir. İlgili içeriği oluşturmak için kullanılan
volumeGroupChanged
, değiştirilmesi gereken gerçek ses düzeyi grubudur. Bu
grup, orijinal volumeAdjustment
parametresine göre değiştirilmelidir
API'ye aktarılmıştır. Örneğin, sonuçlar, gezinmenin
ses grubunun sesi kapatılmalıdır; boole değeri true
olur ve döndürülen
gezinme için ses grubu olması gerekir.
OEM araba ayırma hizmeti
Araba ses hizmeti, ses odağı değişikliklerini izleyerek sesi kısmayı yönetir ve
AudioControl
HAL'ye hangi ses cihazlarının kapatılacağına dair bir sinyal gönderiliyor.
Odak değiştiğinde, tüm etkin odak sahipleri, odak noktalarının belirlenmesi için
bu statik kısma grubuna göre
izlenmesi gereken
kurallar:
- Acil durum sesleri, arama sesleri dışında her şeyi gizler
- Güvenlik, acil durum sesleri dışında her şeyi kapatır
- Navigasyon, güvenlik ve acil durum sesleri dışında hiçbir şeyin sesini kapatır
- Güvenlik, acil durum ve navigasyon sesleri hariç her şeyi ara
- Voice ördekler, zil sesi çıkarır
- Müzik ve anonsların arkasında duran her şey
Bu kurallarda olası her duruma yer verilmemiştir ve OEM'ler,
seslerin nasıl azaltılması
gerektiğini konuştuk. OEM'ler bunları kontrol edebilir
mevcut koşullara göre daha etkin bir şekilde
öneriyoruz. İlgili içeriği oluşturmak için kullanılan
OemCarDuckingService
, Android 14'te kullanıma sunuldu:
class OemCarAudioDuckingService {
List<AudioAttributes> evaluateAttributesToDuck(
OemCarAudioVolumeRequest request);
}
Bu API, ses odağı değişikliklerinde araç ses hizmetinden çağrılır. Yeniden kullanır
OemCarAudioVolumeRequest
tarihinde tanıtılan
OEM araç hacmi hizmeti ve bununla alakalı
karar vermek için gereken tüm bilgileri içerir. Görev listesi
API'den ördek'e eklenen ses özellikleri, mevcut ses durumuyla karşılaştırılır:
Ses özelliği şu anda gizleniyor:
- Listede gözden kaçmaya devam ediyor
- Listede değil, tercih etme devre dışı
Şu anda gizlenmemiş ses özelliği:
- Listede, sade
- Listede değil, tercih etme devre dışı
Araç ses hizmeti, daha sonra sesin hangi ses çıkışının kullanılacağını belirler özellikleri de dahil olup bunları gizlenmiş ses çıkışı cihaz listesine veya açık ses cihazları listesine gidin. Bu, nihai olarak AudioControl HAL'yi kullanarak gereken kısmayı içerir.
Aşağıdaki şekilde sesi kısmanın basitleştirilmiş bir sıra şeması gösterilmektedir OEM reklam kısma hizmeti kullanıldığında odaklanma isteğinin kontrolü:
Sıra, bir uygulama istekte bulunduğunda başlar
Ses odağını yönetme
API'leri üzerinden çalışır. İstek, araç ses sistemine yönlendirilir
hizmeti kullanabilirsiniz. Ses odağına karar verildiğinde ses kısılır
OemCarAudioDuckingService
cihazını çağıran araç ses hizmeti tarafından değerlendirilir
hangi ses özelliklerinin gizlenmesi gerektiğini değerlendirebilirsiniz. Sonuçlar döndürüldüğünde
evaluateAttributesToDuck
API'sinden ses cihazları arasından,
ve son olarak da bilgiler gizleme işlemini uygulamak için AudioControl
yaptığı değişikliklerdir.
OEM araç ses hizmeti referansı uygulaması
AAOS, OEM otomobil hizmetinin referans uygulamasını
packages/services/Car/tests/OemCarServiceTestApp
OemCarService
ve OemCarAudioFocusService
,
OemCarAudioDuckingService
ve OemCarAudioVolumeService
. İkincisi için
her hizmet statik bir davranış yüklemek için bir XML dosyası kullanır. Örneğin,
OemCarAudioFocusServiceImp
, oem_focus_config.xml
öğesini yükler.
bir etkileşim matrisi içerir. Matris, odaklanma isteğini değerlendirmek için kullanılır.
evaluateAudioFocusRequest
çağrıldığında.
Test uygulaması hata ayıklamaya referans
OEM araç hizmeti test uygulaması, AOSP kaynak kodunun bir parçasıdır. OEM'ler
uygun şekilde değişiklik yapmaktır. Hata ayıklama için config_oemCarService
komutunu kullanın
test uygulamasını etkinleştirin.
<!-- This is the component name for the OEM customization service. OEM can choose to implement
this service to customize car service behavior for different policies. If OEMs choose to
implement it, they have to implement a service extending OemCarService exposed by car-lib,
and implement the required component services.
If the component name is invalid, CarService would not connect to any OEM service.
Component name can not be a third party package. It should be pre-installed -->
<string name="config_oemCarService" translatable="false">
com.android.car.oemcarservice.testapp/.OemCarServiceImpl
</string>
OEM araç hizmetinin, doğrulamak için araba hizmeti dump
komutunu kullanır.
OEM hizmeti:
adb shell dumpsys car_service --oem-service
Sonuçlar aşağıdaki çıkışla benzer olabilir:
***CarOemProxyService dump***
mIsFeatureEnabled: true
mIsOemServiceBound: true
mIsOemServiceReady: true
mIsOemServiceConnected: true
mInitComplete: true
OEM_CAR_SERVICE_CONNECTED_TIMEOUT_MS: 5000
OEM_CAR_SERVICE_READY_TIMEOUT_MS: 5000
mComponentName: com.android.car.oemcarservice.testapp/.OemCarServiceImpl
Her dump
bilgisi grubundaki her boole, özelliğin durumunu belirler
ve hizmet. Örneğin, döküm bilgisi mIsOemServiceReady
,
hizmet kullanıma hazır (true
, hizmetin hazır olduğunu belirtir ve false
)
hazır olmadığını belirtir.