1. Giriş
Bu belgede, cihazların Android 17 ile uyumlu olması için karşılanması gereken koşullar listelenmektedir.
"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" ve "OPTIONAL" ifadelerinin kullanımı, RFC2119'da tanımlanan IETF standardına uygundur.
Bu belgede kullanıldığı şekliyle "cihaz uygulayıcı" veya "uygulayıcı", Android 17 çalıştıran bir donanım/yazılım çözümü geliştiren kişi ya da kuruluş anlamına gelir. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Cihaz uygulamalarının Android 17 ile uyumlu kabul edilebilmesi için referans yoluyla dahil edilen tüm belgeler de dahil olmak üzere bu Uyumluluk Tanımı'nda belirtilen koşulları karşılaması ZORUNLUDUR.
Bu tanımın veya 10. bölümde açıklanan yazılım testlerinin sessiz, belirsiz ya da eksik olduğu durumlarda, mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcısının sorumluluğundadır.
Bu nedenle, Android Açık Kaynak Projesi hem referans hem de tercih edilen Android uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nden edinilebilen "yukarı akış" kaynak koduna dayandırmaları ŞİDDETLE TAVSİYE EDİLİR. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilse de yazılım testlerini geçmek önemli ölçüde zorlaşacağından bu uygulamanın kullanılmaması ŞİDDETLE TAVSİYE EDİLİR. Compatibility Test Suite (CTS) dahil olmak üzere standart Android uygulamasıyla tam davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen ikamelerinin ve değişikliklerinin bu belgeyle açıkça yasaklandığını unutmayın.
Bu belgede bağlantısı verilen kaynakların çoğu doğrudan veya dolaylı olarak Android SDK'dan alınmıştır ve işlevsel olarak bu SDK'nın belgelerindeki bilgilerle aynıdır. Bu Uyumluluk Tanımı veya Uyumluluk Test Paketi'nin SDK dokümanlarıyla uyuşmadığı durumlarda, SDK dokümanları yetkili olarak kabul edilir. Bu belgedeki bağlantılı kaynaklarda sağlanan tüm teknik ayrıntılar, dahil edilerek bu Uyumluluk Tanımı'nın bir parçası olarak kabul edilir.
1.1 Belge Yapısı
1.1.1. Cihaz Türüne Göre Gereksinimler
2. Bölüm, belirli bir cihaz türü için geçerli olan tüm şartları içerir. Bölüm 2'nin her alt bölümü belirli bir cihaz türüne ayrılmıştır.
Herhangi bir Android cihaz uygulaması için geçerli olan diğer tüm koşullar, Bölüm 2'den sonraki bölümlerde listelenmiştir. Bu şartlar, bu belgede "Temel Şartlar" olarak adlandırılır.
1.1.2. Şart Kimliği
ZORUNLU koşullar için koşul kimliği atanır.
- Kimlik yalnızca ZORUNLU koşullar için atanır.
- ŞİDDETLE TAVSİYE EDİLEN koşullar [SR] olarak işaretlenir ancak kimlik atanmaz.
- Kimlik şu bölümlerden oluşur : Cihaz Türü Kimliği - Durum Kimliği - Şart Kimliği (ör. C-0-1).
Her kimlik aşağıda tanımlanmıştır:
- Cihaz Türü Kimliği (2. Cihaz Türleri)
- C: Temel (Tüm Android cihaz uygulamaları için geçerli olan şartlar)
- H: Android el cihazı
- T: Android Television cihaz
- Y: Android Automotive uygulaması
- W: Android Watch uygulaması
- Sekme: Android tablet uygulaması
- Koşul kimliği
- Koşulsuz olduğunda bu kimlik 0 olarak ayarlanır.
- Koşul zorunlu olduğunda 1. koşul için 1 atanır ve aynı bölüm ile aynı cihaz türünde sayı 1 artar.
- Şart kimliği
- Bu kimlik 1'den başlar ve aynı bölüm ile aynı koşulda 1'er artar.
1.1.3. 2. Bölümdeki şart kimliği
2. Bölüm'deki koşul kimlikleri iki bölümden oluşur. Birincisi, yukarıda açıklandığı gibi bir bölüm kimliğine karşılık gelir. İkinci bölüm, form faktörünü ve form faktörüne özgü gereksinimi tanımlar.
bölüm kimliği ve ardından yukarıda açıklanan koşul kimliği.
- Bölüm 2'deki kimlik şu bölümlerden oluşur: Bölüm Kimliği / Cihaz Türü Kimliği - Durum Kimliği - Koşul Kimliği (ör. 7.4.3/A-0-1).
2. Cihaz Türleri
Android Açık Kaynak Projesi, çeşitli cihaz türleri ve form faktörleri için kullanılabilecek bir yazılım yığını sağlar. Cihazlarda güvenliği desteklemek için, değiştirilen işletim sistemleri veya alternatif çekirdek uygulamaları da dahil olmak üzere yazılım yığınının, bu CDD'nin 9. bölümünde ve başka yerlerinde açıklandığı gibi güvenli bir ortamda yürütülmesi beklenir. Uygulama dağıtım ekosistemi nispeten daha iyi kurulmuş birkaç cihaz türü vardır.
Bu bölümde, söz konusu cihaz türleri ve her cihaz türü için geçerli olan ek şartlar ve öneriler açıklanmaktadır.
Açıklanan cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamaları, bu Uyumluluk Tanımı'nın diğer bölümlerindeki tüm koşulları karşılamaya DEVAM ETMELİDİR.
2.1 Cihaz Yapılandırmaları
Cihaz türüne göre donanım yapılandırmasındaki temel farklılıklar için bu bölümdeki cihaza özgü gereksinimlere bakın.
2.2. Elde Taşınabilir Cihaz Gereksinimleri
Android el cihazı, genellikle elde tutularak kullanılan bir Android cihaz uygulamasıdır (ör. MP3 çalar, telefon veya tablet).
Android cihaz uygulamaları, aşağıdaki tüm ölçütleri karşılıyorsa elde taşınabilir cihaz olarak sınıflandırılır:
- Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
- 4 inç ile 8 inç arasında bir fiziksel çapraz ekran boyutuna sahip olmalıdır.
- Dokunmatik ekran giriş arayüzüne sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar, Android el cihazı uygulamalarına özeldir.
2.2.1. Donanım
El cihazı uygulamaları:
[7.1.1.1/H-0-1] Kısa kenarı en az 5,6 cm, uzun kenarı en az 8,6 cm olan Android uyumlu en az bir ekrana SAHİP OLMALIDIR.
[7.1.1.3/H-SR-1] Kullanıcılara görüntü boyutunu (ekran yoğunluğu) değiştirme olanağı sunulması ŞİDDETLE TAVSİYE EDİLİR.
[7.1.1.1/H-0-2] En azından yerleşik ekranların en yüksek çözünürlüğü kadar büyük grafik arabelleklerinin GPU bileşimini DESTEKLEMELİDİR.
[7.1.1.1/H-0-3]* Üçüncü taraf uygulamaları için kullanılabilen her
UI_MODE_NORMALekran, kısa kenarı en az 5,6 cm ve uzun kenarı en az 8,6 cm olan, engellenmemiş bir fiziksel ekran alanına eşlenmelidir.[7.1.1.3/H-0-1]*
DENSITY_DEVICE_STABLE, ilgili ekranın gerçek, fiziksel yoğunluğunun% 92'si veya daha fazlası olacak şekilde AYARLANMALIDIR.
El cihazı uygulamaları Vulkan desteği içeriyorsa:
- [7.1.4.2/H-1-1] Android Baseline 2021 profili tarafından belirtilen şartları KARŞILAMALIDIR.
Elde taşınabilir cihaz uygulamaları herhangi bir 64 bit ABI'yi desteklediğini beyan ederse (herhangi bir 32 bit ABI ile veya olmadan) ActivityManager.isLowRamDevice() için false döndürürse:
- [7.1.4.2/H-2-1] Vulkan 1.1 veya sonraki bir sürümü DESTEKLEMELİDİR.
El cihazı uygulamaları, Configuration.isScreenHdr() aracılığıyla Yüksek Dinamik Aralık ekranları desteklediğini iddia ediyorsa:
- [7.1.4.5/H-1-1]
EGL_EXT_gl_colorspace_bt2020_pq,EGL_EXT_surface_SMPTE2086_metadata,EGL_EXT_surface_CTA861_3_metadata,VK_EXT_swapchain_colorspaceveVK_EXT_hdr_metadatauzantıları için destek reklamı YAPILMALIDIR.
El cihazı uygulamaları:
- [7.1.4.6/H-0-1] Cihazın, sistem özelliği
graphics.gpu.profiler.supportaracılığıyla GPU profil oluşturma özelliğini destekleyip desteklemediği BİLDİRİLMELİDİR.
El cihazı uygulamaları, sistem özelliği
graphics.gpu.profiler.support aracılığıyla destek beyan ediyorsa:
[7.1.4.6/H-1-1] Perfetto dokümanlarında tanımlanan GPU sayaçları ve GPU oluşturma aşamaları şemasına uygun bir protobuf izini çıkış olarak bildirmelidir.
[7.1.4.6/H-1-2] Cihazın GPU sayaçları için
gpu counter tracepaket protokolüne uygun değerler bildirilmelidir.[7.1.4.6/H-1-3] Oluşturma aşaması izleme paketi proto'suna uygun olarak cihazın GPU oluşturma aşamaları için uygun değerler RAPORLANMALIDIR.
[7.1.4.6/H-1-4] MUST report a GPU Frequency tracepoint as specified by the format: power/gpu_frequency.
El cihazı uygulamaları:
[7.1.5/H-0-1] Yukarı akış Android açık kaynak kodu tarafından uygulanan eski uygulama uyumluluk modu desteği ZORUNLU olarak eklenmelidir. Yani, cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİ ve uyumluluk modunun davranışını DEĞİŞTİRMEMELİDİR.
[7.2.1/H-0-1] Üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek İÇERMELİDİR.
[7.2.3/H-0-2] Geri işlevinin (
KEYCODE_BACK) hem normal hem de uzun basma etkinliği ön plan uygulamasına GÖNDERİLMELİDİR. Bu etkinlikler sistem tarafından KULLANILMAMALI ve Android cihazın dışından (ör. Android cihaza bağlı harici donanım klavyesi) tetiklenebilir.[7.2.3/H-0-3] Ana ekranı sağlayan tüm Android uyumlu ekranlarda Ana Sayfa işlevi SAĞLANMALIDIR.
[7.2.3/H-0-4] Tüm Android uyumlu ekranlarda Geri işlevi, Android uyumlu ekranlardan en az birinde ise Son Kullanılanlar işlevi SAĞLANMALIDIR.
[7.2.4/H-0-1] Dokunmatik ekran girişi DESTEKLENMELİDİR.
[7.2.4/H-SR-1] Kullanıcı tarafından seçilen asistan uygulamasının başlatılması ŞİDDETLE TAVSİYE EDİLİR. Diğer bir deyişle, ön plandaki etkinlik bu uzun basma etkinliklerini işlemediği takdirde
VoiceInteractionService'yi uygulayan uygulama veyaKEYCODE_MEDIA_PLAY_PAUSEya daKEYCODE_HEADSETHOOK'ye uzun basıldığındaACTION_ASSIST'yi işleyen bir etkinlik başlatılmalıdır.[7.3.1/H-SR-1] 3 eksenli ivme ölçer içermeleri ŞİDDETLE TAVSİYE EDİLİR.
El cihazı uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/H-1-1] Olayları en az 100 Hz sıklıkta raporlayabilmelidir.
El cihazı uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özellik bayrağı aracılığıyla uygulamalara yeteneği bildiriyorsa:
[7.3.3/H-2-1] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile, GNSS ölçümleri bulunur bulunmaz BİLDİRİLMELİDİR.
[7.3.3/H-2-2] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekarelik ivmeden daha az bir hızla hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıkları ve sahte aralık hızları en az% 95 oranında bildirilmelidir.
El cihazı uygulamaları 3 eksenli jiroskop içeriyorsa:
[7.3.4/H-3-1] En az 100 Hz sıklıkta etkinlik bildirebilmelidir.
[7.3.4/H-3-2] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Sesli arama yapabilen ve getPhoneType içinde PHONE_TYPE_NONE dışında bir değer belirtebilen el cihazı uygulamaları:
- [7.3.8/H] Yakınlık sensörü İÇERMELİDİR.
El cihazı uygulamaları:
- [7.3.11/H-SR-1] 6 serbestlik dereceli poz sensörünün desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
El cihazı uygulamaları hücresel veri bağlantısını destekliyorsa:
- [7.4.1/H-1-1]
android.hardware.telephony.dataözellik bayrağını BİLDİRMELİDİR.
Bluetooth LE desteği içeren el cihazı uygulamaları:
[7.4.3/H-SR-1] Bluetooth LE Veri Paketi Uzunluğu Uzantısı'nı desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları 802.11'i (Kablosuz) destekliyorsa:
- [7.4.2.4/H-1-1] Wi-Fi Passpoint desteği ZORUNLU olmalıdır.
Cihazlar PackageManager.FEATURE_WIFI_AWARE ile Wi-Fi Komşu İletişim Ağı (NAN) protokolünü ve PackageManager.FEATURE_WIFI_RTT ile Wi-Fi Konumu'nu (Wi-Fi Gidiş Dönüş Süresi - RTT) destekliyorsa:
[7.4.2.5/H-1-1] WifiRttManager#startRanging Android API ile gözlemlendiği üzere, 10 cm, 1 m, 3 m ve 5 m mesafelerde, 68. yüzdelik dilimde 160 MHz bant genişliğinde +/-1 metre, 68. yüzdelik dilimde 80 MHz bant genişliğinde +/-2 metre, 68. yüzdelik dilimde 40 MHz bant genişliğinde +/-4 metre ve 68. yüzdelik dilimde 20 MHz bant genişliğinde +/-8 metre aralığını doğru şekilde bildirmelidir (Kümülatif Dağılım Fonksiyonu ile hesaplandığı gibi).
[7.4.2.5/H-SR-1] WifiRttManager#startRanging Android API ile gözlemlendiği üzere, 10 cm mesafelerde, 160 MHz bant genişliğinde +/-1 metre, 80 MHz bant genişliğinde +/-2 metre, 40 MHz bant genişliğinde +/-4 metre ve 20 MHz bant genişliğinde +/-8 metre aralığında doğru şekilde raporlanması ŞİDDETLE TAVSİYE EDİLİR (Kümülatif Dağılım Fonksiyonu ile hesaplandığı üzere, 90. yüzdelik dilimde).
Mevcudiyet Kalibrasyonu'nda belirtilen ölçüm kurulumu adımlarını uygulamanız ŞİDDETLE TAVSİYE EDİLİR.
Elde taşınabilir cihazlar, PackageManager.FEATURE_WIFI_PD ile Wi-Fi Yakınlık Algılama (PD) protokolünü ve PackageManager.FEATURE_WIFI_RTT ile Wi-Fi Konumu'nu (Wi-Fi Gidiş Dönüş Süresi - RTT) destekliyorsa:
[7.4.2.10/H-1-1] En az 160 MHz bant genişliği KULLANILMALIDIR.
[7.4.2.10/H-1-2] WifiRttManager#startRanging Android API aracılığıyla gözlemlendiği üzere, 68.yüzdelik dilimde (Kümülatif Dağılım İşlevi ile hesaplandığı şekilde) 160 MHz bant genişliğinde aralığı +/- 0,25 metre hassasiyetle doğru şekilde bildirmelidir.
Mevcudiyet Kalibrasyonu'nda belirtilen ölçüm kurulumu adımlarını uygulamanız ŞİDDETLE TAVSİYE EDİLİR.
El cihazı uygulamaları FEATURE_BLUETOOTH_LE'yı bildiriyorsa:
[7.4.3/H-1-3] Medyan BLE RSSI'nin
ADVERTISE_TX_POWER_HIGHiletim yapan bir referans cihazdan 1 m mesafede -50 dBm +/-15 dB olmasını sağlamak için Rx ofset ölçülmeli ve telafi edilmelidir.[7.4.3/H-1-4] 1 m mesafede konumlandırılmış ve
ADVERTISE_TX_POWER_HIGHiletim yapan bir referans cihazdan tarama yaparken ortalama BLE RSSI'nin -50 dBm +/-15 dB olmasını sağlamak için Tx ofsetini ölçmeli ve telafi etmelidir.
El cihazı uygulamaları en az bir arka kameraya sahipse:
- [7.5.1/H-1-1] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
El cihazı uygulamaları, CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA kullanarak özellikleri listeleyen mantıksal bir kamera cihazı içeriyorsa:
- [7.5.4/H-1-1] Varsayılan olarak normal görüş alanına (FOV) sahip OLMALI ve 50 ile 90 derece arasında OLMALIDIR.
El cihazı uygulamaları:
[7.6.1/H-0-1] Uygulama özel verileri (diğer adıyla
/databölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.[7.6.1/H-0-2] Çekirdek ve kullanıcı alanı için 1 GB'tan az bellek mevcut olduğunda
ActivityManager.isLowRamDevice()için "true" değerini döndürmelidir.
El cihazı uygulamaları yalnızca 32 bit ABI'yi desteklediğini beyan ediyorsa:
[7.6.1/H-1-1] Varsayılan ekranda qHD'ye kadar (ör. FWVGA) arabellek çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 416 MB OLMALIDIR.
[7.6.1/H-2-1] Varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) arabellek çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 592 MB OLMALIDIR.
[7.6.1/H-3-1] Varsayılan ekranda FHD'ye (ör. WSXGA+) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR.
[7.6.1/H-4-1] Varsayılan ekranda QHD'ye (ör.QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.344 MB olmalıdır.
El cihazı uygulamaları herhangi bir 64 bit ABI'yi desteklediğini beyan ediyorsa (32 bit ABI ile veya 32 bit ABI olmadan):
[7.6.1/H-5-1] Varsayılan ekranda qHD'ye (ör. FWVGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek EN AZ 816 MB OLMALIDIR.
[7.6.1/H-6-1] Çekirdek ve kullanıcı alanı için kullanılabilir bellek, varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa en az 944 MB OLMALIDIR.
[7.6.1/H-7-1] Çekirdek ve kullanıcı alanı için kullanılabilen bellek, varsayılan ekranda FHD'ye kadar çerçeve arabelleği çözünürlükleri (ör.WSXGA+) kullanılıyorsa en az 1.280 MB OLMALIDIR.
[7.6.1/H-8-1] Varsayılan ekranda QHD'ye (ör.QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.824 MB OLMALIDIR.
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdek denetimi altında olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
El cihazı uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan az veya 1 GB kullanılabilir bellek içeriyorsa:
[7.6.1/H-9-1] Özellik bayrağını
android.hardware.ram.lowBEYAN ETMELİDİR.[7.6.1/H-9-2] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1,1 GB kalıcı depolama alanı OLMALIDIR.
El cihazı uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan fazla kullanılabilir bellek içeriyorsa:
[7.6.1/H-10-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
Özellik bayrağını BEYAN ETMELİDİR
android.hardware.ram.normal.
El cihazı uygulamalarında çekirdek ve kullanıcı alanı için 2 GB'a eşit veya daha fazla, 4 GB'tan az bellek varsa:
- [7.6.1/H-SR-1] Yalnızca 32 bit kullanıcı alanının (hem uygulamalar hem de sistem kodu) desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
El cihazı uygulamaları, çekirdek ve kullanıcı alanı için 2 GB'tan az kullanılabilir bellek içeriyorsa:
- [7.6.1/H-1-1] Yalnızca tek bir ABI'yi (yalnızca 64 bit veya yalnızca 32 bit) desteklemelidir.
El cihazı uygulamaları:
[7.6.2/H-0-1] 1 GiB'tan daha küçük bir uygulama ortak depolama alanı SAĞLAMAMALIDIR.
[7.7.1/H] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
El cihazı uygulamalarında, çevre birimi modunda çalışan bir kumandaya sahip USB bağlantı noktası varsa:
- [7.7.1/H-1-1] Android Open Accessory (AOA) API'si UYGULANMALIDIR.
El cihazı uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.2/H-1-1] Android SDK belgelerinde belirtildiği şekilde USB ses sınıfı uygulanmalıdır.
El cihazı uygulamaları:
[7.8.1/H-0-1] Mikrofon içermelidir.
[7.8.2/H-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.outputbeyan edilmelidir.
El cihazı uygulamaları, VR modunu desteklemeyle ilgili tüm performans koşullarını karşılayabiliyorsa ve VR modu desteği içeriyorsa:
[7.9.1/H-1-1]
android.hardware.vr.high_performanceözellik bayrağını BEYAN ETMELİDİR.[7.9.1/H-1-2]
android.service.vr.VrListenerServiceişlevini uygulayan veandroid.app.Activity#setVrModeEnabledaracılığıyla VR uygulamaları tarafından etkinleştirilebilen bir uygulama İÇERMELİDİR.
El cihazı uygulamaları, ana makine modunda bir veya daha fazla USB-C bağlantı noktası içeriyorsa ve 7.7.2 bölümündeki şartlara ek olarak (USB ses sınıfı) uyguluyorsa:
- [7.8.2.2/H-1-1] MUST provide the following software mapping of HID codes:
| İşlev | Eşleştirmeler | Bağlam | Davranış |
|---|---|---|---|
| A | HID kullanım sayfası: 0x0C HID kullanımı: 0x0CD Çekirdek anahtarı: KEY_PLAYPAUSEAndroid anahtarı: KEYCODE_MEDIA_PLAY_PAUSE |
Medya oynatma | Giriş: Kısa basın Çıkış: Oynatma veya duraklatma |
| Giriş: Uzun basın Çıkış: Sesli komutu başlatın Gönderir: Cihaz kilitliyse veya ekranı kapalıysa android.speech.action.VOICE_SEARCH_HANDS_FREE. Aksi takdirde android.speech.RecognizerIntent.ACTION_WEB_SEARCH gönderir. |
|||
| Gelen arama | Giriş: Kısa basın Çıkış: Aramayı kabul etme |
||
| Giriş: Uzun basın Çıkış: Aramayı reddetme |
|||
| Devam eden arama | Giriş: Kısa basın Çıkış: Görüşmeyi sonlandırma |
||
| Giriş: Uzun basın Çıkış: Mikrofonun sesini kapatma veya açma |
|||
| B | HID kullanım sayfası: 0x0C HID kullanımı: 0x0E9 Çekirdek anahtarı: KEY_VOLUMEUPAndroid anahtarı: VOLUME_UP |
Medya oynatma, Devam eden görüşme | Giriş: Kısa veya uzun basın Çıkış: Sistem veya kulaklık sesini yükseltir. |
| C | HID kullanım sayfası: 0x0C HID kullanımı: 0x0EA Çekirdek anahtarı: KEY_VOLUMEDOWNAndroid anahtarı: VOLUME_DOWN |
Medya oynatma, Devam eden görüşme | Giriş: Kısa veya uzun basın Çıkış: Sistem veya kulaklık sesini azaltır. |
| D | HID kullanım sayfası: 0x0C HID kullanımı: 0x0CF Çekirdek anahtarı: KEY_VOICECOMMANDAndroid anahtarı: KEYCODE_VOICE_ASSIST |
Tümü'ne dokunun. Herhangi bir örnekte tetiklenebilir. | Giriş: Kısa veya uzun basın Çıkış: Sesli komutu başlatma |
- [7.8.2.2/H-1-2] Bağlantı noktası takıldığında ACTION_HEADSET_PLUG tetiklenmelidir ancak bu işlem yalnızca bağlı terminal türünü belirlemek için USB ses arayüzleri ve uç noktaları düzgün şekilde numaralandırıldıktan sonra yapılmalıdır.
0x0302 türündeki USB ses terminali algılandığında:
- [7.8.2.2/H-2-1]
ACTION_HEADSET_PLUGEkstra "microphone" değeri0olarak ayarlanmış bir Intent yayınlanmalıdır.
0x0402 türündeki USB ses terminali algılandığında:
- [7.8.2.2/H-3-1]
ACTION_HEADSET_PLUGIntent'i, "microphone" ekstrası1olarak ayarlanmış şekilde yayınLAMALIDIR.
USB çevre birimi bağlıyken API AudioManager.getDevices() çağrıldığında:
[7.8.2.2/H-4-1] USB ses terminali türü alanı
0x0302iseAudioDeviceInfo.TYPE_USB_HEADSETtüründe veisSink()rolünde bir cihaz LİSTELEMELİDİR.[7.8.2.2/H-4-2] USB ses terminali türü alanı
0x0402iseAudioDeviceInfo.TYPE_USB_HEADSETtüründe veisSink()rolünde bir cihaz LİSTELENMELİDİR.[7.8.2.2/H-4-3] USB ses terminali türü alanı
0x0402iseAudioDeviceInfo.TYPE_USB_HEADSETtüründe veisSource()rolünde bir cihaz LİSTELENMELİDİR.[7.8.2.2/H-4-4] USB ses terminali türü alanı 0x603 ise
AudioDeviceInfo.TYPE_USB_DEVICEtüründe veisSink()rolünde bir cihaz LİSTELENMELİDİR.[7.8.2.2/H-4-5] USB ses terminali türü alanı 0x604 ise
AudioDeviceInfo.TYPE_USB_DEVICEtüründe veisSource()rolünde bir cihaz listelenmelidir.[7.8.2.2/H-4-6] USB ses terminali türü alanı 0x400 ise
AudioDeviceInfo.TYPE_USB_DEVICEtüründe veisSink()rolünde bir cihaz LİSTELENMELİDİR.[7.8.2.2/H-4-7] USB ses terminali türü alanı 0x400 ise
AudioDeviceInfo.TYPE_USB_DEVICEtüründe veisSource()rolünde bir cihaz LİSTELENMELİDİR.[7.8.2.2/H-SR-1] USB tanımlayıcılarının numaralandırılması, terminal türlerinin tanımlanması ve
ACTION_HEADSET_PLUGIntent'in 1.000 milisaniyeden kısa sürede yayınlanması için USB-C ses çevre birimi bağlandığında ŞİDDETLE TAVSİYE EDİLİR.
android.hardware.audio.output ve android.hardware.microphone bildiren el cihazı uygulamaları için 5.6 bölümündeki RTL ve TTL şartlarına bakın.
Doğrusal rezonans aktüatörü (LRA), kütlenin istenen hareket yönünde hareket ettiği baskın bir rezonans frekansına sahip tek kütleli bir yay sistemidir.
Elde taşınabilir cihaz uygulamaları en az bir genel amaçlı 7.10 doğrusal rezonans aktüatörü içeriyorsa:
[7.10/H] Aktüatörün yerleştirilmesi, cihazın genellikle elle tutulduğu veya dokunulduğu yerin yakınına yerleştirilmelidir.
[7.10/H] Cihazın doğal yönünün X ekseninde (sol-sağ) dokunsal aktüatörü hareket ettirmelidir.
El cihazı uygulamalarında genel amaçlı bir dokunsal aktüatör varsa (X eksenli doğrusal rezonanslı aktüatör (LRA)), bu cihazlar:
- [7.10/H] X ekseni LRA'nın rezonans frekansı 200 Hz'nin altında OLMALIDIR.
Eldeki cihaz uygulamaları, dokunsal sabitler eşlemesini takip ediyorsa:
[7.10/H]*, android.os.Vibrator.areAllEffectsSupported() ve android.os.Vibrator.arePrimitivesSupported() API'lerini çalıştırarak uygulama durumunu doğrulamalıdır.
[7.10/H]* Dokunsal sabitler için kalite değerlendirmesi YAPILMALIDIR.
[7.10/H]* Sabitlerle ilgili uygulama kılavuzunda açıklandığı gibi, desteklenmeyen temel öğeler için yedek yapılandırmayı doğrulamalı ve gerekirse güncellemelidir.
2.2.2. Multimedya
El cihazı uygulamaları, aşağıdaki ses kodlama ve kod çözme biçimlerini DESTEKLEMELİ ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [5.1/H-0-1] AMR-NB
- [5.1/H-0-2] AMR-WB
- [5.1/H-0-3] MPEG-4 AAC Profili (AAC LC)
- [5.1/H-0-4] MPEG-4 HE AAC Profili (AAC+)
- [5.1/H-0-5] AAC ELD (geliştirilmiş düşük gecikmeli AAC)
- [5.1/H-0-6] MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC)
2.2.3. Yazılım
El cihazı uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamalarına sunmalıdır:
El cihazı uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİ ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [5.3/H-0-1] H.264 AVC
- [5.3/H-0-2] H.265 HEVC
- [5.3/H-0-3] MPEG-4 SP
- [5.3/H-0-4] VP8
- [5.3/H-0-5] VP9
- [5.3/H-0-6] AV1
2.2.3. Yazılım
El cihazı uygulamaları:
- [3.2.3.1/H-0-1] SDK dokümanlarında açıklandığı gibi
ACTION_GET_CONTENT,ACTION_OPEN_DOCUMENT,ACTION_OPEN_DOCUMENT_TREE, veACTION_CREATE_DOCUMENTamaçlarını işleyen bir uygulamaya sahip OLMALI veDocumentsProviderAPI'sini kullanarak doküman sağlayıcı verilerine erişmek için kullanıcıya olanak tanımalıdır.
- [3.2.3.1/H-0-2]* Burada listelenen uygulama intentleri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini bir intent işleyiciyle önceden yükLEMELİDİR.
Not: "Common App Intents" (Yaygın Uygulama Amaçları) sayfasında yeni zorunlu amaç "
android.settings.VPN_APP_EXCLUSION_SETTINGS" yer alacak.
[3.2.3.1/H-SR-1] E-posta gönderme amaçlı
ACTION_SENDTOveyaACTION_SENDveyaACTION_SEND_MULTIPLEintent'lerini işleyebilen bir e-posta uygulamasının önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.[3.4.1/H-0-1]
android.webkit.WebviewAPI'nin eksiksiz bir uygulaması SAĞLANMALIDIR.[3.4.2/H-0-1] Genel kullanıcı web'de gezinmesi için bağımsız bir Tarayıcı uygulaması İÇERMELİDİR.
- [3.8.1/H-0-1] Widget'ların uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı uygulanmalıdır.
[3.8.1/H-SR-1] Kısayolların, widget'ların ve
widgetFeaturesuygulama içi sabitlemesini destekleyen varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.[3.8.1/H-SR-2] ShortcutManager API aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
[3.8.1/H-SR-3] Uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması eklemeniz ŞİDDETLE TAVSİYE EDİLİR.
[3.8.3/H-0-1] Üçüncü taraf uygulamalarının,
NotificationveNotificationManagerAPI sınıfları aracılığıyla kullanıcıları önemli etkinliklerden haberdar etmesine İZİN VERİLMELİDİR.[3.8.3/H-0-2] Zengin bildirimleri desteklemelidir.
[3.8.3/H-0-3] Anlık bildirimler desteklenmelidir.
[3.8.3/H-0-4] Kullanıcıya, AOSP'de uygulandığı gibi işlem düğmeleri veya kontrol paneli gibi kullanıcı arayüzü aracılığıyla bildirimleri doğrudan kontrol etme (ör. yanıtlama, erteleme, kapatma, engelleme) olanağı sağlayan bir bildirim gölgesi İÇERMELİDİR.
[3.8.3/H-0-5]
RemoteInput.Builder setChoices()aracılığıyla sağlanan seçenekler bildirim gölgesinde GÖSTERİLMELİDİR.[3.8.3/H-SR-1]
RemoteInput.Builder setChoices()aracılığıyla sağlanan ilk seçeneğin bildirim gölgesinde ek kullanıcı etkileşimi olmadan gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.[3.8.3/H-SR-2] Kullanıcı, bildirim gölgesindeki tüm bildirimleri genişlettiğinde
RemoteInput.Builder setChoices()aracılığıyla sağlanan tüm seçeneklerin bildirim gölgesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.[3.8.3.1/H-SR-1]
Notification.Remoteinput.Builder.setChoicestarafından gösterilen yanıtlara paralel olarakNotification.Action.Builder.setContextualdeğerinintrueolarak ayarlandığı işlemlerin gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.[3.8.4/H-SR-1] Yardımcı işlemi'ni gerçekleştirmek için cihazda bir asistan uygulanması ŞİDDETLE TAVSİYE EDİLİR.
El cihazı uygulamaları MediaStyle bildirimlerini destekliyorsa:
- [3.8.3.1/H-SR-2]
Bir uygulama
MediaStylebildirimiyleMediaSessionjetonu yayınladığında kullanıcıların uygun mevcut medya rotaları (ör. Bluetooth cihazlar veMediaRouter2Manager'e sağlanan rotalar) arasında geçiş yapmasına olanak tanıyan, sistem kullanıcı arayüzünden erişilen bir kullanıcı olanağı (ör. çıkış değiştirici) sağlaması ŞİDDETLE TAVSİYE EDİLİR.
Bir uygulamanın Canlı Güncelleme Bildirimi, uygulama tüm tanıtım özelliklerini karşıladığında tanıtılabilir. Bu tür bildirimler, bu belgede Tanıtılan Anlık Bilgilendirme Bildirimi olarak açıklanmaktadır. El cihazı uygulamaları, aşağıdaki koşullara uygun olarak Tanıtılan Canlı Güncelleme Bildirimi'ni belirgin bir şekilde göstermelidir.
El cihazı uygulamaları API düzeyi 36.1 veya daha yüksek bir sürümü bildiriyorsa:
[3.8.3.1/H-0-1] Kilit ekranında belirgin bir yerde Tanıtılan Canlı Güncelleme Bildirimi GÖSTERİLMELİDİR.
[3.8.3.1/H-0-12] Bildirim yığınında en üstte gösterilmelidir. Önemli Bildirim ve diğer bildirimler arasında Tanıtılan Canlı Güncelleme Bildirimi gösterildiğinde renklendirilmiş bildirimlerin üzerinde (burada
setColorized,true'dır).- Birden fazla uygulama, Tanıtılan Canlı Güncelleme Bildirimi için uygun olduğunda, bildirim gölgesinde ve kilit ekranında gösterilen Tanıtılan Canlı Güncelleme Bildirimlerinin sıralama sırasını BELİRLEYEBİLİR.
[3.8.3.1/H-0-2] Genişletilmiş durumda Promosyonlu Canlı Haber Bildirimi GÖSTERİLMELİDİR.
[3.8.3.1/H-0-3] Yukarıdaki genişletilmiş bildirimi daraltmak için kullanıcıya olanak TANINMAMALIDIR.
[3.8.3.1/H-0-4]
StyleSpanveyaUnderlineSpantarafından sağlanan, Promosyonlu Canlı Güncelleme Bildirimi'ndeki metin içeriğinin temel stilleri (kalın, italik ve altı çizili) GÖSTERİLMELİDİR.[3.8.3.1/H-0-5] Bir Tanıtılan Canlı Güncelleme Bildirimi'nde, bildirim bunları içerse bile YALNIZCA standart işlem nesneleri (
Notification.Actionaracılığıyla) GÖSTERİLMELİ ve giriş kutuları, yanıtlama düğmeleri ve bağlama duyarlı işlemler gibi standart olmayan işlem nesneleri (addRemoteInput()vesetContextual()aracılığıyla) GİZLENMELİDİR.[3.8.3.1/H-0-6]
Notification.getSmallIcon()içermesi ZORUNLU olan bir Tanıtılan Canlı Güncelleme Bildirimi için SDK dokümanlarında Durum Çipi olarak da adlandırılan bir Kısa Gösterim göstermesi ZORUNLUDUR.[3.8.3.1/H-0-7] Diğer alanlar, kompakt gösterim için isteğe bağlıdır ancak kompakt gösterim genişletilebildiğinde varsa
Notification.getShortCriticalText(),Notification.getShortCriticalTextyoksaNotification.whenMUST gösterilmelidir.[3.8.3.1/H-0-8] Birden fazla Tanıtılan Canlı Güncelleme bildirimi olduğunda, durum çubuğunda bunlardan en az biri Kısa Gösterim olarak GÖSTERİLMELİDİR.
[3.8.3.1/H-0-9] Kullanıcı, Compact Representation'a dokunduğunda ilişkili bildirimi göstermeli (tercih edilen) veya ilişkili uygulamayı (
Notification.contentIntentaracılığıyla) açmalıdır.[3.8.3.1/H-0-13] İlişkili bildirimde, bildirim gölgesinde bulunan içerikle aynı içerik gösterilmelidir.
[3.8.3.1/H-0-10] Tek tek uygulama bildirimlerinin tanıtım amaçlı gösterimini devre dışı bırakmak ve etkinleştirmek için kullanıcıya bir olanak SUNULMALIDIR.
[3.8.3.1/H-0-11] Tanıtım özelliklerini karşılamayan veya yalnızca kısmen karşılayan, tanıtımı yapılmayan Canlı Güncelleme Bildirimleri dahil ancak bunlarla sınırlı olmamak üzere tüm Canlı Güncelleme Bildirimleri doğru şekilde oluşturulmalıdır. Bu tür tanıtımı yapılmayan bildirimler, tanıtımı yapılmayan bir durumda gösterİLMELİDİR.
7.2.3 bölümünde ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi gezinme tuşunu içeren cihaz uygulamaları arayüzü değiştiriyorsa:
- [3.8.3/H-1-1] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirmek/devre dışı bırakmak için bir ayarlar menüsü sunmalıdır.
El cihazı uygulamaları Asistan işlemini destekliyorsa:
- [3.8.4/H-SR-2]
HOMEtuşuna uzun basma işleminin, bölüm 7.2.3'te açıklandığı gibi asistan uygulamasını başlatmak için belirlenmiş etkileşim olarak kullanılması ŞİDDETLE TAVSİYE EDİLİR. Kullanıcının seçtiği asistan uygulamasını BAŞLATMALIDIR. Diğer bir deyişle,VoiceInteractionServiceuygulayan uygulamayı veyaACTION_ASSISTintentini işleyen bir etkinliği başlatmalıdır.
El cihazı uygulamaları conversation notifications özelliğini destekliyorsa ve bunları uyarı ve sessiz olmayan ileti dizisi bildirimlerinden ayrı bir bölümde gruplandırıyorsa:
- [3.8.4/H-1-1]* Devam eden ön plan hizmeti bildirimleri ve importance:high bildirimleri hariç olmak üzere, MUST, görüşme bildirimlerini görüşme dışı bildirimlerden önce göstermelidir.
Android el cihazı uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/H-1-1] Medya Bildirimi Şablonu da dahil olmak üzere kilit ekranı bildirimleri GÖSTERİLMELİDİR.
El cihazı uygulamaları güvenli kilit ekranını destekliyorsa:
- [3.9/H-1-1] Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tamamını uygulamalıdır.
El cihazı uygulamaları ControlsProviderService ve Control API'lerini destekliyorsa ve üçüncü taraf uygulamalarının cihaz denetimleri yayınlamasına izin veriyorsa:
[3.8.16/H-1-1]
android.software.controlsözellik bayrağını TANIMLAMALI vetrueolarak ayarlamalıdır.[3.8.16/H-1-2] Kullanıcıya,
ControlsProviderServiceveControlAPI'leri aracılığıyla üçüncü taraf uygulamaları tarafından kaydedilen denetimlerden kullanıcının favori cihaz denetimlerini ekleme, düzenleme, seçme ve çalıştırma olanağı sağlayan bir kullanıcı arayüzü sunULMALIDIR.[3.8.16/H-1-3] Varsayılan bir Başlatıcı'dan itibaren üç etkileşim içinde bu kullanıcı kolaylığına erişim SAĞLANMALIDIR.
[3.8.16/H-1-4]
ControlsProviderServiceAPI'si aracılığıyla kontroller sağlayan her üçüncü taraf uygulamasının adını ve simgesini,ControlAPI'leri tarafından sağlanan belirtilen alanlarla birlikte bu kullanıcı kolaylığında DOĞRU şekilde oluşturmalıdır.[3.8.16/H-1-5]
ControlsProviderServiceveControlControl.isAuthRequiredAPI'si aracılığıyla üçüncü taraf uygulamaları tarafından kaydedilen denetimlerden, uygulamaya özel yetkilendirme gerektirmeyen cihaz denetimlerini devre dışı bırakmak için kullanıcıya bir olanak SAĞLANMALIDIR.[3.8.16/H-1-6] Cihaz uygulamaları, kullanıcıya sunulan özelliği aşağıdaki şekilde doğru şekilde oluşturmalıdır:
- Cihazda
config_supportsMultiWindow=trueayarlanmışsa ve uygulama, geçerli bir etkinliğin ComponentName'i (API tarafından tanımlandığı şekilde) dahil olmak üzereControlsProviderServicebildirimindeMETA_DATA_PANEL_ACTIVITYmeta verilerini bildiriyorsa uygulama, söz konusu etkinliği bu kullanıcı kolaylığına yerleştirmelidir. - Uygulama meta verileri
META_DATA_PANEL_ACTIVITYbeyan etmiyorsaControlsProviderServiceAPI'nin sağladığı belirtilen alanları ve Control API'lerinin sağladığı belirtilen alanları oluşturmalıdır.
- Cihazda
[3.8.16/H-1-7] Uygulama, meta verileri
META_DATA_PANEL_ACTIVITYolarak bildiriyorsa yerleştirilmiş etkinliği başlatırkenEXTRA_LOCKSCREEN_ALLOW_TRIVIAL_CONTROLSkullanılarak [3.8.16/H-1-5] bölümünde tanımlanan ayarı GEÇMELİDİR.
Aksine, el cihazı uygulamaları bu tür kontrolleri uygulamıyorsa:
[3.8.16/H-2-1]
ControlsProviderServiceveControlAPI'leri içinnullraporlanmalıdır.[3.8.16/H-2-2]
android.software.controlsözellik bayrağını TANIMLAMALI vefalseolarak ayarlamalıdır.
El cihazı uygulamaları görev kilitleme modunda çalışmıyorsa içerik panoya kopyalandığında:
- [3.8.17/H-1-1] Verilerin panoya kopyalandığına dair kullanıcıya onay BİLGİSİ sunulmalıdır (ör. "İçerik kopyalandı" şeklinde bir küçük resim veya uyarı). Ayrıca, pano verilerinin cihazlar arasında senkronize edilip edilmeyeceğini de belirtin.
El cihazı uygulamaları:
[3.10/H-0-1] Üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.
[3.10/H-SR-1] TalkBack açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
[3.11/H-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
[3.11/H-SR-1] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru eklemeniz ŞİDDETLE TAVSİYE EDİLİR.
[3.13/H-SR-1] Hızlı Ayarlar kullanıcı arayüzü bileşeni içermesi ŞİDDETLE TAVSİYE EDİLİR.
Android el cihazı uygulamaları FEATURE_BLUETOOTH veya FEATURE_WIFI desteği beyan ediyorsa:
- [3.16/H-1-1] Yardımcı cihaz eşleştirme özelliği DESTEKLENMELİDİR.
Gezinme işlevi ekranda hareket tabanlı bir işlem olarak sağlanıyorsa:
El cihazı uygulamaları:
- [3.20.1/H-0-1] Tüm Asistan Ses Akışı koşulları uygulanmalıdır.
- [7.2.3/H] Ana Sayfa işlevi için hareket tanıma bölgesi, ekranın alt kısmından en fazla 32 dp yüksekliğinde OLMALIDIR.
El cihazı uygulamaları, ekranın sol ve sağ kenarlarının herhangi bir yerinden hareketle gezinme işlevi sağlıyorsa:
- [7.2.3/H-0-1] Gezinme işlevinin hareket alanı, her iki tarafta da 40 dp'den daha az genişliğe SAHİP OLMALIDIR. Hareket alanı varsayılan olarak 24 dp genişliğinde OLMALIDIR.
El cihazı uygulamaları güvenli bir kilit ekranını destekliyorsa ve çekirdek ile kullanıcı alanı için 2 GB veya daha fazla kullanılabilir belleğe sahipse:
- [3.9/H-1-2] Yönetilen profillerin desteği,
android.software.managed_usersözellik bayrağıyla BİLDİRİLMELİDİR.
Android el cihazı uygulamaları, android.hardware.camera.any aracılığıyla kamera desteğini beyan ediyorsa:
[7.5.4/H-1-1]
android.media.action.STILL_IMAGE_CAMERAveandroid.media.action.STILL_IMAGE_CAMERA_SECUREamacına UYULMALI ve SDK'da açıklandığı şekilde fotoğraf modunda kamera başlatılmalıdır.[7.5.4/H-1-2] SDK'da açıklandığı şekilde, kamerayı video modunda başlatma
android.media.action.VIDEO_CAMERAamacına UYULMALIDIR.
Cihaz uygulamasının ayarlar uygulaması, etkinlik yerleştirme kullanarak bölünmüş işlevsellik uyguluyorsa:
- [3.2.3.1/ H-1-1] Bölünmüş işlevsellik etkinken Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY
amacını işleyen bir etkinliğe SAHİP OLMALIDIR. Etkinlik,
android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINKile korunmalı ve Settings#EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI'den ayrıştırılan Intent'in etkinliğini başlatmalıdır.
Cihaz uygulamaları, kullanıcıların her türlü aramayı yapmasına izin veriyorsa
[7.4.1.2/H-0-1] Özellik bayrağı BEYAN EDİLMELİDİR.
android.software.telecom.[7.4.1.2/H-0-2] Telekom çerçevesi UYGULANMALIDIR.
2.2.4. Performans ve Güç
[8.1/H-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
[8.1/H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları,Android Uyumluluk Test Paketi (CTS) tarafından tanımlanan 10.000 liste girişinden oluşan bir listeyi 36 saniyeden kısa bir sürede kaydırarak düşük gecikmeli kullanıcı deneyimi sağlamalıdır.
[8.1/H-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, başlatılmış ve zaten çalışmakta olan bir uygulamanın yeniden başlatılması 1 saniyeden kısa sürmelidir.
El cihazı uygulamaları:
[8.2/H-0-1] En az 5 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.
[8.2/H-0-2] En az 0,5 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.
[8.2/H-0-3] En az 15 MB/sn sıralı okuma performansı SAĞLANMALIDIR.
[8.2/H-0-4] En az 3,5 MB/sn rastgele okuma performansı SAĞLANMALIDIR.
El cihazı uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
[8.3/H-1-1] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.
[8.3/H-1-2] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcıya olanak TANINMALIDIR.
El cihazı uygulamaları:
[8.4/H-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her bir donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
[8.4/H-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
[8.4/H-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu koşulu karşılar.[8.4/H-0-4] Bu güç kullanımını, uygulama geliştiriciye
adb shell dumpsys batterystatskabuk komutu aracılığıyla KULLANIMA SUNMALIDIR.[8.4/H] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
El cihazı uygulamaları ekran veya video çıkışı içeriyorsa:
- [8.4/H-1-1]
android.intent.action.POWER_USAGE_SUMMARYamacına UYULMALI ve bu güç kullanımını gösteren bir ayarlar menüsü görüntülenmelidir.
El cihazı uygulamaları:
[8.5/H-0-1] SDK belgesinde açıklandığı gibi, her bir hizmetin başlangıcından itibaren süresi de dahil olmak üzere, etkin ön plan hizmetleri veya kullanıcı tarafından başlatılan işler içeren tüm uygulamaları görmek için kullanıcıya bir olanak SAĞLANMALIDIR.
[8.5/H-0-2]Ön plan hizmeti veya kullanıcı tarafından başlatılan bir iş çalıştıran uygulamayı durdurmak için kullanıcıya bir olanak SUNULMALIDIR.
2.2.5. Güvenlik Modeli
El cihazı uygulamaları:
[9/H-0-1]
android.hardware.security.model.compatibleözelliğini BİLDİRMELİDİR.[9.1/H-0-1] Üçüncü taraf uygulamalarının
android.permission.PACKAGE_USAGE_STATSizniyle kullanım istatistiklerine erişmesine İZİN VERİLMELİ veandroid.settings.ACTION_USAGE_ACCESS_SETTINGSniyeti doğrultusunda bu tür uygulamalara erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma sağlanmalıdır.
El cihazı uygulamaları, VoiceInteractionService desteklemek için varsayılan bir uygulama içeriyorsa:
- [9.1/H-0-2]
ACCESS_FINE_LOCATION, söz konusu uygulama için varsayılan olarak verilmemelidir.
Cihaz uygulamaları android.software.credentials desteğini BEYAN ETMELİDİR
ve:
[9/H-0-2] Kimlik Bilgisi Yöneticisi için tercih edilen sağlayıcının seçilmesine izin vermek amacıyla
android.settings.CREDENTIAL_PROVIDERamacına uygun davranılmalıdır. Bu sağlayıcı, otomatik doldurma için etkinleştirilir ve Kimlik Bilgisi Yöneticisi aracılığıyla girilen yeni kimlik bilgilerini kaydetmek için varsayılan konum olarak da kullanılır.[9/H-0-3] En az 2 eşzamanlı kimlik bilgisi sağlayıcıyı DESTEKLEMELİ ve sağlayıcıları etkinleştirmek veya devre dışı bırakmak için Ayarlar uygulamasında kullanıcıya yönelik bir özellik SUNMALIDIR.
[9.5/H-1-1] Android 16'da koşul kaldırıldı.
El cihazı uygulamaları:
[9.11/H-0-2] Anahtar deposu uygulaması, erişime kapalı bir yürütme ortamıyla desteklenmelidir.
[9.11/H-0-3] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA-1 ve SHA-2 ailesi karma oluşturma işlevlerinin uygulamaları OLMALIDIR. Güvenli izolasyon, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole edilmiş ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
[9.11/H-0-4] Kilit ekranı kimlik doğrulaması, izole yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin VERİLMELİDİR. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Yukarı akış Android Açık Kaynak Projesi, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
[9.11/H-0-5] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı durumlarda anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının kalıcı cihaz tanımlayıcıları olarak kullanılması ENGELLENMELİDİR.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf olduğunu unutmayın. Ancak bu cihaz, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmediği sürece bu muafiyet geçerlidir.
El cihazı uygulamaları güvenli bir kilit ekranını desteklediğinde:
[9.11/H-1-1] Kullanıcının en kısa uyku zaman aşımını (yani kilidi açık durumdan kilitli duruma geçiş süresini) 15 saniye veya daha kısa olarak seçmesine İZİN VERİLMELİDİR.
[9.11/H-1-2] 9.11.1 Güvenli Kilit Ekranı'nda açıklanan birincil kimlik doğrulama dışında, bildirimleri gizlemek ve tüm kimlik doğrulama biçimlerini devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR. AOSP, tam gizlilik modu koşulunu karşılar.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService System API'yi uygulayan bir veya daha fazla güven aracısı varsa:
- [9.11.1/H-1-1] Kullanıcıya, 72 saatte birden daha sık olmak üzere önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen veya şifre) biriyle ilgili sorgulama YAPILMALIDIR.
Elde taşınabilir cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService.grantTrust() System API'yi FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE işaretiyle çağıran bir veya daha fazla güven aracısı içeriyorsa:
- [9.11.1/H-1-1] Aşağıdaki durumlardan sonra
TrustManagerService.revokeTrust()numaralı telefon ARANMALIDIR:- Güven verildikten sonra en fazla 24 saat.
- 8 saatlik boşta kalma süresi.
El cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik bayrağını bildirmezse:
- [9.5/H-2-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlı bir şekilde oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
El cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik bayrağını tanımlıyorsa:
[9.5/H-3-1] Kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'nin denetim uygulamasıyla UYUMLU OLMALIDIR.
[9.5/H-4-1] Android 16'da şart kaldırıldı.
[9.5/H-4-2] Android 16'da şart kaldırıldı.
Kısıtlı ayarlar
Kısıtlı Ayarlar, kullanıcıya görünür uyarılar gösterir ve aşağıdaki uygulamalar için izin vermek üzere kullanıcı onayı ister:
PackageManagertarafındanPACKAGE_DOWNLOADED_FILEolarak tanımlanan bir "uygulama mağazası" uygulaması dışında bir uygulama (ör. mesajlaşma uygulaması veya tarayıcı) aracılığıyla indirildikten sonra yüklenmesi.PackageManagertarafındanPACKAGE_SOURCE_LOCAL_FILEolarak tanımlanan yerel bir dosyadan yükleniyor (örneğin, uygulama yan yüklenmiştir).
Aşağıdaki [9.8/H-0-5] bölümünde listelenen Zorunlu İzinler ve ilişkili tanımlayıcılar için.
Bu tür uygulamalar, bu bölümde listelenen şartlar için "Kapsam Dahilindeki Uygulamalar" olarak etiketlenir.
Cihaz uygulamaları:
[9.8/H-0-1] Aşağıdaki öğeler için yukarıda belirtildiği şekilde Kısıtlanmış Ayarlar uygulanmalıdır:
-
- Erişilebilirlik (
AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE) - Bildirim dinleyici (
AppOpsManager.OPSTR_ACCESS_NOTIFICATIONS) - Cihaz yönetimi uygulamaları (
Manifest.permission.BIND_DEVICE_ADMIN) - Diğer uygulamaların üzerinde göster (
AppOpsManager.OPSTR_SYSTEM_ALERT_WINDOW) - Kullanım erişimi (
AppOpsManager.OPSTR_GET_USAGE_STATS)
- Erişilebilirlik (
Roller (Varsayılan uygulamalar)
- Dialer (
RoleManager.ROLE_DIALER) - SMS (
RoleManager.ROLE_SMS)
- Dialer (
-
- SMS çalışma süresi (
Manifest.permission_group.SMS)
- SMS çalışma süresi (
-
[9.8/H-0-2] Kısıtlanmış Ayarlar varsayılan olarak ETKİNLEŞTİRİLMELİDİR ve kullanıcının Kısıtlanmış Ayarlar'ı tüm uygulamalar için devre dışı bırakmasına olanak tanıyan herhangi bir kullanıcı işlevi OLMAMASI ŞİDDETLE TAVSİYE EDİLİR.
[9.8/H-0-3] Zorunlu kılınan izinlerden herhangi biri verilmeden önce her Kapsam Dahilindeki Uygulama için kullanıcı onayı alınmalıdır.
[9.8/H-0-4] Kısıtlanmış ayarların etkinleştirilmesi için kullanıcı onayının yalnızca EnhancedConfirmationManager API kullanılarak Kapsamdaki Uygulama'nın AppInfo sayfasından alınmasına İZİN VERİLMELİDİR.
[9.8/H-0-5] Kısıtlanmış bir ayar olup olmadığını dinamik olarak belirlemek için tüm özel izinler için EnhancedConfirmationManager ile entegrasyon yapılması ve bu işlevin çağrılması ŞİDDETLE TAVSİYE EDİLİR.
- Alarmlar ve hatırlatıcılar:
AppOpsManager.OPSTR_SCHEDULE_EXACT_ALARM - Tüm dosyalara erişim:
AppOpsManager.OPSTR_MANAGE_EXTERNAL_STORAGE - Diğer uygulamaların üzerinde göster:
AppOpsManager.OPSTR_SYSTEM_ALERT_WINDOW - Bilinmeyen uygulamaları yükleme:
AppOpsManager.OPSTR_REQUEST_INSTALL_PACKAGES - Medya yönetimi:
AppOpsManager.OPSTR_MANAGE_MEDIA - Sistem ayarlarını değiştirme:
AppOpsManager.OPSTR_WRITE_SETTINGS - Pencere içinde pencere:
AppOpsManager.OPSTR_PICTURE_IN_PICTURE - Ekranı açma:
AppOpsManager.OPSTR_TURN_SCREEN_ON - Tam ekran bildirimler:
AppOpsManager.OPSTR_USE_FULL_SCREEN_INTENT - Wi-Fi kontrolü:
AppOpsManager.OPSTR_CHANGE_WIFI_STATE - Erişilebilirlik:
AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE - Bildirim dinleyici:
AppOpsManager.OPSTR_ACCESS_NOTIFICATIONS - Kullanım erişimi:
AppOpsManager.OPSTR_GET_USAGE_STATS - Cihaz yöneticisi:
Manifest.permission.BIND_DEVICE_ADMIN - Rahatsız etmeyin:
Manifest.permission.MANAGE_NOTIFICATIONS
- Alarmlar ve hatırlatıcılar:
Android, System API VoiceInteractionService aracılığıyla mikrofon erişimi göstergesi olmadan güvenli ve her zaman etkin özel kelime algılama ve mikrofon veya kamera erişimi göstergesi olmadan her zaman etkin sorgu algılama mekanizmasını destekler.
El cihazı uygulamaları, mikrofon erişim göstergesi olmadan System API'yi
HotwordDetectionService veya özel kelime algılama için başka bir mekanizmayı destekliyorsa:
[9.8/H-1-1] MUST make sure the hotword detection service can only transmit data to the System,
ContentCaptureService, or on-device speech recognition service created bySpeechRecognizer#createOnDeviceSpeechRecognizer().[9.8/H-1-2] MUST make sure the hotword detection service can only transmit mic audio data or data derived from it to the system server through
HotwordDetectionServiceAPI, or toContentCaptureServicethroughContentCaptureManagerAPI.[9.8/H-1-3] MUST NOT supply mic audio that is longer than 30 seconds for an individual hardware-triggered request to the hotword detection service.
[9.8/H-1-4] Söylenen özel kelime algılama hizmetine yapılan tek bir istek için 8 saniyeden eski arabellekli mikrofon sesi sağlamAMALIDIR.
[9.8/H-1-5] Ses etkileşimi hizmetine veya benzer bir kuruluşa 30 saniyeden eski arabelleğe alınmış mikrofon sesi SAĞLANMAMALIDIR.
[9.8/H-1-6] Her başarılı anahtar kelime sonucu için anahtar kelime algılama hizmetinden 100 bayttan fazla veri (ses akışları hariç) iletilmesine İZİN VERİLMEMELİDİR.
[9.8/H-1-7] Her negatif telaffuz sonucu için telaffuz algılama hizmetinden 5 bit'ten fazla verinin iletilmesine İZİN VERİLMEMELİDİR.
[9.8/H-1-8] YALNIZCA sistem sunucusundan gelen bir anahtar kelime doğrulama isteğinde anahtar kelime algılama hizmetinden veri iletimine izin VERİLMELİDİR.
[9.8/H-1-9] Kullanıcı tarafından yüklenebilen bir uygulamanın, etkin kelime algılama hizmeti sağlamasına İZİN VERİLMEMELİDİR.
[9.8/H-1-10] Kullanıcı arayüzünde, etkin kelime algılama hizmetinin mikrofon kullanımına ilişkin nicel veriler GÖSTERİLMEMELİDİR.
[9.8/H-1-11] Güvenlik araştırmacılarının inceleyebilmesi için her iletimde yer alan bayt sayısını, etkin kelime algılama hizmetinden itibaren KAYDETMELİDİR.
[9.8/H-1-12] Güvenlik araştırmacılarının inceleyebilmesi için her iletimin ham içeriklerini kaydeden bir hata ayıklama modunu DESTEKLEMELİDİR.
[9.8/H-1-14] Bir başarılı anahtar kelime sonucu sesli etkileşim hizmetine veya benzer bir kuruluşa iletildiğinde, bölüm 9.8.2'de açıklandığı gibi mikrofon göstergesi GÖSTERİLMELİDİR.
[9.8/H-1-15] Başarılı özel kelime sonuçlarında sağlanan ses akışlarının, özel kelime algılama hizmetinden sesli etkileşim hizmetine tek yönlü olarak iletilmesini SAĞLAMALIDIR.
[9.8/H-SR-1] Bir uygulamayı tetikleyici kelime algılama hizmetinin sağlayıcısı olarak ayarlamadan önce kullanıcıları bilgilendirmek ŞİDDETLE TAVSİYE EDİLİR.
[9.8/H-SR-2] Yapılandırılmamış verilerin anahtar kelime algılama hizmeti dışına aktarılması KESİNLİKLE ÖNLENMELİDİR.
[9.8/H-SR-3] Anahtar kelime algılama hizmetine ev sahipliği yapan işlemi en az saatte bir veya 30 donanım tetikleme olayında bir (hangisi önce gerçekleşirse) yeniden başlatmanız ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, System API'yi
HotwordDetectionService kullanan veya mikrofon kullanımı belirtisi olmadan hazır kelime algılama için benzer bir mekanizma içeren bir uygulama içeriyorsa uygulama:
[9.8/H-2-1] Desteklenen her etkin kelime öbeği için kullanıcıya açıkça bildirimde BULUNULMALIDIR.
[9.8/H-2-2] Anahtar kelime algılama hizmeti aracılığıyla ham ses verileri veya bunlardan elde edilen veriler SAKLANMAMALIDIR.
[9.8/H-2-3]
ContentCaptureServiceveya cihaz üzerinde konuşma tanıma hizmeti dışında, etkin kelime algılama hizmetinden ses verileri, sesi (tamamen veya kısmen) yeniden oluşturmak için kullanılabilecek veriler ya da etkin kelimeyle ilgisi olmayan ses içerikleri iletilmemelidir.
Elde taşınabilir cihaz uygulamaları, mikrofon ve/veya kamera erişimi göstergesi olmadan Sistem API'sini
VisualQueryDetectionService veya sorgu algılama için başka bir mekanizmayı destekliyorsa:
[9.8/H-3-1] Sorgu algılama hizmetinin yalnızca Sisteme,
ContentCaptureServiceveya cihaz üzerinde konuşma tanıma hizmetine (SpeechRecognizer#createOnDeviceSpeechRecognizer()tarafından oluşturulur) veri iletebildiğinden EMİN OLUNMALIDIR.[9.8/H-3-2]
VisualQueryDetectionServicedışına ses veya video bilgilerinin iletilmesine İZİN VERİLMEMELİDİR. Bu kural,ContentCaptureServiceveya cihaz üzerindeki konuşma tanıma hizmeti için geçerli değildir.[9.8/H-3-3] Cihaz, kullanıcının Dijital Asistan Uygulaması ile etkileşim kurma niyetini algıladığında (ör.kamera aracılığıyla kullanıcının varlığını algılayarak) Sistem Kullanıcı Arayüzü'nde kullanıcı bildirimi GÖSTERMELİDİR.
[9.8/H-3-4] Mikrofon göstergesi GÖSTERİLMELİ ve algılanan kullanıcı sorgusu, algılandıktan hemen sonra kullanıcı arayüzünde GÖSTERİLMELİDİR.
[9.8/H-3-5] Kullanıcı tarafından yüklenebilen bir uygulamanın görsel sorgu algılama hizmeti sağlamasına İZİN VERİLMEMELİDİR.
El cihazı uygulamaları android.hardware.microphone'yı bildiriyorsa:
[9.8.2/H-4-1] Bir uygulama mikrofondaki ses verilerine erişirken mikrofon göstergesi GÖSTERİLMELİDİR ancak mikrofona yalnızca
HotwordDetectionService,SOURCE_HOTWORD,ContentCaptureServiceveya CDD tanımlayıcısı [C-4-X] ile bölüm 9.1'de belirtilen rollere sahip uygulamalar erişirken GÖSTERİLMEMELİDİR.[9.8.2/H-4-2]
PermissionManager.getIndicatorAppOpUsageData()tarafından döndürülen, mikrofon kullanan Son ve Etkin uygulamaların listesini, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERMELİDİR.[9.8.2/H-4-3] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için mikrofon göstergesi gizlenmemelidir.
[9.8.2/H-4-4]
PermissionManager.getIndicatorAppOpUsageData()tarafından döndürülen, mikrofonu kullanan Son ve Etkin uygulamaların listesi, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERİLMELİDİR.
El cihazı uygulamaları android.hardware.camera.any'yı bildiriyorsa:
[9.8.2/H-5-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesi GÖSTERİLMELİDİR ancak kameraya yalnızca CDD tanımlayıcısı [C-4-X] ile bölüm 9.1'de belirtilen rollere sahip uygulamalar tarafından erişilirken gösterilmemelidir.
[9.8.2/H-5-2]
PermissionManager.getIndicatorAppOpUsageData()tarafından döndürülen kamera kullanılarak Son ve Etkin uygulamalar, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERİLMELİDİR.[9.8.2/H-5-3] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için kamera göstergesi gizlenmemelidir.
Sistem uygulaması olmayan ve ön planda çalışan bir uygulama, cihazın tam konumuna eriştiğinde cihaz:
- [9.8.8/H-6-1] Kullanıcı tarafından görülebilen bir gösterge GÖSTERİLMELİDİR.
Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü sağlayan bir özelliktir. Cihaz uygulamaları bu özelliği destekliyorsa:
- [9.10/H-1-1] Android başlatma sırası sırasında bağlanan tüm salt okunur bölümler DOĞRULANMALIDIR ve VBMeta özetinde bu doğrulanmış bölümlerin tümü hesaplamaya dahil edilmelidir.
2.2.6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
El cihazı uygulamaları (* Tablet için geçerli değil):
- [6.1/H-0-1]* Kabuk komutunu destekLEMELİDİR.
cmd testharness.
El cihazı uygulamaları:
-
[6.1/H-0-2] MUST expose a
/system/bin/perfettobinary to the shell user which cmdline complies with the perfetto documentation.[6.1/H-0-3] Perfetto ikili programı, giriş olarak Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf yapılandırmasını KABUL ETMELİDİR.
[6.1/H-0-4] Perfetto ikili programı, çıkış olarak Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf izi YAZMALIDIR.
[6.1/H-0-5] MUST provide, through the perfetto binary, at least the data sources described in the perfetto documentation.
[6.1/H-0-6] Perfetto izleme arka plan programı varsayılan olarak etkinleştirilmelidir (sistem özelliği
persist.traced.enable).
Medya Performansı sınıfı şartları yapısında önemli değişiklikler yaptık. API 37'den itibaren 1, 10, 20 ve 37 numaralı yeni seviyeler ekledik. Ayrıca, MPC düzeyine göre ölçülen her koşulu ayrıntılı olarak açıklayan bir Medya Performansı Sınıfı Ölçümleri sayfası'na başvurarak koşul karmaşıklığını da azalttık.
2.2.7. Elde Taşınabilir Medya Performansı Sınıfı
Medya performansı sınıfının tanımı ve tüm ölçümler için Medya Performansı Sınıfı Tanımı hakkında bilgi edinmek için 7.11. bölümü inceleyin.
2.2.7.1. Medya
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:
Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen Android 17 CDD bölüm 2.2.7.1'de listelenen tüm medya koşullarını karşılamalıdır.
[5.1/H-1-1] Cihazın beyan edilen Medya Performansı Sınıfı Düzeyi'ne karşılık gelen
CodecCapabilities.getMaxSupportedInstances()veVideoCapabilities.getSupportedPerformancePoints()yöntemleriyle herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek maksimum donanım video kod çözücü oturumu sayısını REKLAMDA BELİRTMEK ZORUNDADIR.[5.1/H-1-2] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen eşzamanlı örnekler ve kare düşmeleriyle birlikte donanım video kod çözücü oturumlarını (AVC, HEVC, VP9, AV1 veya daha yeni) DESTEKLEMELİDİR.
[5.1/H-1-3] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen
CodecCapabilities.getMaxSupportedInstances()veVideoCapabilities.getSupportedPerformancePoints()yöntemleriyle herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek maksimum donanım video kodlayıcı oturumu sayısını REKLAMDA BELİRTMEK ZORUNDADIR.[5.1/H-1-4] Donanım video kodlayıcı oturumları (AVC, HEVC, VP9, AV1 veya daha yeni), eşzamanlı örnekler ve cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen kare düşürme işlemlerini desteklemelidir.
[5.1/H-1-5] Cihazın beyan edilen Medya Performansı Sınıfı Düzeyi'ne karşılık gelen
CodecCapabilities.getMaxSupportedInstances()veVideoCapabilities.getSupportedPerformancePoints()yöntemleriyle herhangi bir codec kombinasyonunda eşzamanlı donanım video kodlayıcı ve kod çözücü oturumlarının maksimum sayısını REKLAM YAPMALIDIR.[5.1/H-1-6] MUST support hardware video decoder and hardware video encoder sessions (AVC, HEVC, VP9, AV1, or later), concurrent instances and frame drops corresponding to the device's declared Media Performance Class Level.
[5.1/H-1-7] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen yük altındayken tüm donanım video kodlayıcılar için 1080p veya daha küçük bir video kodlama oturumunda codec başlatma gecikmesi OLMALIDIR.
[5.1/H-1-8] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen yük altındayken tüm ses kodlayıcılar için 128 kb/sn veya daha düşük bit hızlı ses kodlama oturumunda kodek başlatma gecikmesi OLMALIDIR.
[5.1/H-1-9] Güvenli donanım video kod çözücü oturumlarının (AVC, HEVC, VP9, AV1 veya daha yeni) 2 örneğini ve cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen kare düşmelerini DESTEKLEMELİDİR.
[5.1/H-1-10] 1 güvenli donanım video kod çözücü oturumuyla birlikte 3 güvenli olmayan donanım video kod çözücü oturumunu (toplam 4 oturum) (AVC, HEVC, VP9, AV1 veya daha yeni), çözünürlükleri ve cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen kare düşmelerini DESTEKLEMELİDİR.
[5.1/H-1-11] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen her donanım AVC, HEVC, VP9 veya AV1 kod çözücüsü için güvenli bir kod çözücü desteklenmelidir.
[5.1/H-1-12] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen yük altındayken tüm donanım video kod çözücüler için 1080p veya daha küçük bir video kod çözme oturumunda codec başlatma gecikmesi OLMALIDIR.
[5.1/H-1-13] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen yük altındayken tüm ses kod çözücüler için 128 kb/sn veya daha düşük bit hızlı ses kod çözme oturumunda bir codec başlatma gecikmesi OLMALIDIR.
[5.1/H-1-14] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen AV1 donanım kod çözücü profilini, özelliğini ve görüntüleme yöntemini DESTEKLEMELİDİR.
[5.1/H-1-15] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen, 4K60'ı destekleyen en az 1 donanım video kod çözücüsü OLMALIDIR.
[5.1/H-1-16] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen 4K60'ı destekleyen en az 1 donanım video kodlayıcıya SAHİP OLMALIDIR.
[5.1/H-1-17] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen AVIF Baseline Profilini destekleyen en az 1 donanım görüntü kod çözücüsü OLMALIDIR.
[5.1/H-1-18] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen bit hızı, saniyedeki kare sayısı ve çözünürlük şartlarını karşılayan AV1 kodlayıcıyı DESTEKLEMELİDİR.
[5.1/H-1-19] 10 bit (HDR) donanım video kod çözücüsünün ve donanım video kodlayıcı oturumlarının (AVC, HEVC, VP9, AV1 veya daha yeni), çözünürlüğün ve cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen kare düşmelerinin 3 örneğini DESTEKLEMELİDİR.
[5.1/H-1-20] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen, cihazda bulunan tüm donanım AV1 ve HEVC kodlayıcılar için
Feature_HdrEditingözelliğini DESTEKLEMELİDİR.[5.1/H-1-21] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen tüm donanım video kod çözücüleri (AVC, HEVC, VP9, AV1 veya daha yeni) için
FEATURE_DynamicColorAspectdesteklenmelidir.[5.1/H-1-22] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen dikey en boy oranında video içeriğinin kodlanması, kodunun çözülmesi, GPU ile düzenlenmesi ve görüntülenmesi ZORUNLU olarak desteklenmelidir.
[5.2/H-2-1] Cihaz uygulaması donanım AVC veya HEVC kodlayıcılarını destekliyorsa bu codec'ler için video kodlayıcı hız-bozulma eğrileri tarafından tanımlanan ve cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen minimum kalite hedefini karşılaması ZORUNLUDUR.
- [5.2/H-2-2] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen hoparlör yolunda MMAP'yi DESTEKLEMELİDİR.
[5.3/H-1-1] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen video oturumu performansı ve kare düşürme koşullarını KARŞILAMALIDIR.
[5.3/H-1-2] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen video çözünürlüğü değişikliği performans şartlarını KARŞILAMALIDIR.
[5.6/H-1-1] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen dokunarak ses çalma gecikmesi şartlarını KARŞILAMALIDIR.
[5.6/H-1-2] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen gidiş-dönüş ses gecikmesi şartlarını KARŞILAMALIDIR.
[5.6/H-1-3] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen 24 bit ses koşullarını KARŞILAMALIDIR.
[5.6/H-1-4] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen >= 4 kanallı USB ses cihazlarını DESTEKLEMELİDİR.
[5.6/H-1-5] Sınıf uyumlu MIDI cihazlarını DESTEKLEMELİ ve cihazın beyan edilen Medya Performans Sınıfı Düzeyine karşılık gelen MIDI özellik bayrağını BEYAN ETMELİDİR.
[5.6/H-1-9] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen en az 12 kanallı miksajı DESTEKLEMELİDİR.
[5.6/H-3-1] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen ses arabelleklerinde yetersiz çalıştırma olmadan sinüs dalgaları arasında geçiş yapabilmelidir.
[5.6/H-3-2] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen USB ses sistemi çıkış kanalı şartlarını KARŞILAMALIDIR.
[5.6/H-3-3] Cihazın beyan edilen Medya Performatör Sınıfı Seviyesi'ne karşılık gelen USB ses sistemi giriş kanalı şartlarını KARŞILAMALIDIR.
[5.6/H-SR-1] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen ses kanalı karıştırmayı desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
[5.7/H-1-2] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen şifre çözme özellikleriyle
MediaDrm.SECURITY_LEVEL_HW_SECURE_ALLdesteklenmelidir.[5.12/H-1-2] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen donanım AV1 ve HEVC kodlayıcılar için renk biçimi şartlarını KARŞILAMALIDIR.
[5.12/H-1-3] Cihazın beyan ettiği Medya Performans Sınıfı Düzeyi'ne karşılık gelen EXT_YUV_target uzantısı desteğinin reklamını YAPMALIDIR.
[7.1.4/H-1-1] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen ekran işleme birimi (DPU) şartlarını KARŞILAMALIDIR.
2.2.7.2. Kamera
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:
- Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen Android 17 CDD bölüm 2.2.7.2'de listelenen kamera şartlarını KARŞILAMALIDIR.
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:
[7.5/H-1-1] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen birincil arkaya bakan kamera çözünürlüğü ve video çekme şartlarını KARŞILAMALIDIR.
[7.5/H-1-2] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen birincil ön kamera çözünürlüğü ve video çekim şartlarını KARŞILAMALIDIR.
[7.5/H-1-3] Cihazın beyan ettiği Medya Performans Sınıfı Düzeyi'ne karşılık gelen
android.info.supportedHardwareLevelmülk şartlarını DESTEKLEMELİDİR.[7.5/H-1-4] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen her iki birincil kamera için
CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIMEdesteklenmelidir.[7.5/H-1-5] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen camera2 JPEG yakalama gecikmesi şartlarını KARŞILAMALIDIR.
[7.5/H-1-6] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen camera2 başlatma gecikmesi şartlarını KARŞILAMALIDIR.
[7.5/H-1-8] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen RAW kamera çekimi koşullarını KARŞILAMALIDIR.
[7.5/H-1-9] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen, arkaya bakan birincil kameranın yüksek hızlı video çekme şartlarını KARŞILAMALIDIR.
[7.5/H-1-10] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen minimum yakınlaştırma oranı koşullarını KARŞILAMALIDIR.
[7.5/H-1-11] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen birincil kameralarda eşzamanlı ön-arka akışını uygulamalıdır.
[7.5/H-1-12] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen birincil arka kamera için video sabitleme desteklenmelidir.
[7.5/H-1-13] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen birincil arka kameranın
LOGICAL_MULTI_CAMERAözelliğini DESTEKLEMELİDİR.[7.5/H-1-14] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen hem birincil ön hem de birincil arka kamera için
STREAM_USE_CASEözelliği DESTEKLENMELİDİR.[7.5/H-1-15] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen birincil kameralar için hem CameraX hem de Camera2 uzantıları aracılığıyla gece modu uzantılarını DESTEKLEMELİDİR.
[7.5/H-1-16] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen birincil kameralar için
DYNAMIC_RANGE_TEN_BITözelliği DESTEKLENMELİDİR.[7.5/H-1-17] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen birincil kameralar için yüz algılama özellikleri DESTEKLENMELİDİR.
[7.5/H-1-18] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen birincil arka ve birincil ön kameralar için
JPEG_Rdesteklenmelidir.[7.5/H-1-19] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen birincil arka kamera için
CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATIONdesteklenmelidir.[7.5/H-1-20] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen yerel kamera uygulamasındaki birincil arka ve birincil ön kameralar için varsayılan olarak
JPEG_Rçıkışı YAPILMALIDIR.
- [7.5/H-1-21] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen en az bir ön yüz kamerası veya arka yüz kamerası OLMALIDIR.
2.2.7.3. Donanım
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:
- Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen Android 17 CDD bölüm 2.2.7.3'te listelenen donanım şartlarını KARŞILAMALIDIR.
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:
[7.1.1.1/H-1-1] Bu öğe kasıtlı olarak atlanmıştır.
[7.1.1.1/H-2-1] Cihazın Medya Performans Sınıfı Seviyesi'ne uygun ekran çözünürlüğüne SAHİP OLMALIDIR.
[7.1.1.3/H-1-1] Bu öğe kasıtlı olarak atlanmıştır.
[7.1.1.3/H-2-1] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen ekran yoğunluğuna SAHİP OLMALIDIR.
[7.1.1.3/H-3-1] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen HDR ekran gereksinimlerini DESTEKLEMELİDİR.
[7.6.1/H-1-1] Bu öğe kasıtlı olarak atlanmıştır.
[7.6.1/H-2-1] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen bellek koşullarını KARŞILAMALIDIR.
2.2.7.4. Performans
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:
- Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen Android 17 CDD bölüm 2.2.7.4'te listelenen performans koşullarını KARŞILAMALIDIR.
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:
[8.2/H-1-1] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen sıralı yazma performansı sağlanmalıdır.
[8.2/H-1-2] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen rastgele yazma performansı sağLANMALIDIR.
[8.2/H-1-3] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen sıralı okuma performansı SAĞLANMALIDIR.
[8.2/H-1-4] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen rastgele okuma performansı SAĞLANMALIDIR.
[8.2/H-1-5] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen paralel sıralı okuma ve yazma performansı SAĞLANMALIDIR.
2.2.7.5. Grafik
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:
[7.1.4.1/H-1-2] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen gerekli EGL uzantılarını DESTEKLEMELİDİR.
[7.1.4.1/H-1-3] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen gerekli Vulkan özelliklerini DESTEKLEMELİDİR.
2.3. Televizyonla İlgili Şartlar
Android TV cihazı, yaklaşık üç metre uzakta oturan kullanıcıların dijital medya, film, oyun, uygulama ve/veya canlı TV içeriklerini tüketebileceği bir eğlence arayüzü olan Android cihaz uygulamasıdır ("arkaya yaslanma" veya "3 metrelik kullanıcı arayüzü").
Android cihaz uygulamaları aşağıdaki ölçütlerin tümünü karşılıyorsa Televizyon olarak sınıflandırılır:
- Kullanıcıdan üç metre uzakta olabilecek ekranda oluşturulan kullanıcı arayüzünü uzaktan kontrol etme mekanizması sağlamış olmalıdır.
- Çapraz uzunluğu 24 inçten büyük olan yerleşik bir ekranı olmalı VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası ya da ekran için kablosuz bir bağlantı noktası içermelidir.
Bu bölümün geri kalanındaki ek koşullar, Android TV cihaz uygulamalarına özeldir.
2.3.1. Donanım
Televizyon cihazı uygulamaları:
- [7.2.2/T-0-1] D-pad desteklenmelidir.
- [7.2.3/T-0-1] Ana Sayfa ve Geri işlevleri SAĞLANMALIDIR.
- [7.2.3/T-0-2] Geri işlevinin (
KEYCODE_BACK) hem normal hem de uzun basma etkinliği ön plandaki uygulamaya GÖNDERİLMELİDİR. - [7.2.6.1/T-0-1] Oyun kumandası desteği içermeli ve
android.hardware.gamepadözellik bayrağını bildirmelidir. - [7.2.7/T] Kullanıcıların dokunmatik olmayan gezinme ve temel gezinme tuşları girişlerine erişebileceği bir uzaktan kumanda SAĞLANMALIDIR.
Televizyon cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [7.3.4/T-1-1] En az 100 Hz sıklıkta etkinlik bildirebilmelidir.
- [7.3.4/T-1-2] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Televizyon cihazı uygulamaları:
- [7.4.3/T-0-1] Bluetooth ve Bluetooth LE'yi DESTEKLEMELİDİR.
- [7.6.1/T-0-1] Uygulama özel verileri için en az 4 GB kalıcı depolama alanı (diğer adıyla "/data" bölümü) OLMALIDIR.
Televizyon cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.5.3/T-1-1] Bu USB bağlantı noktası üzerinden bağlanan ancak her zaman bağlı olması gerekmeyen harici bir kamera için destek içermelidir.
TV cihazı uygulamaları 32 bit ise:
[7.6.1/T-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
TV cihazı uygulamaları 64 bit ise:
[7.6.1/T-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdek kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Televizyon cihazı uygulamaları:
- [7.8.1/T] Mikrofon içermelidir.
- [7.8.2/T-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.outputbeyan etmelidir.
2.3.2. Multimedya
Televizyon cihazı uygulamaları, aşağıdaki ses kodlama ve kod çözme biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamaların kullanımına sunmalıdır:
- [5.1/T-0-1] MPEG-4 AAC Profili (AAC LC)
- [5.1/T-0-2] MPEG-4 HE AAC Profili (AAC+)
- [5.1/T-0-3] AAC ELD (gelişmiş düşük gecikmeli AAC)
- [5.1/T-0-4] MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC)
Televizyon cihaz uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamaların kullanımına sunmalıdır:
Televizyon cihazı uygulamaları:
- [5.2.2/T-SR-1] 720p ve 1080p çözünürlüklü videoların saniyede 30 kare hızında H.264 kodlamasını desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihaz uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİ ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [5.3.3/T-0-1] MPEG-4 SP
- [5.3.4/T-0-2] H.264 AVC
- [5.3.5/T-0-3] H.265 HEVC
- [5.3.6/T-0-4] VP8
- [5.3.7/T-0-5] VP9
- [5.3.1/T-0-6] MPEG-2
- [5.3.2/T-0-7] AV1
Televizyon cihazı uygulamaları, Bölüm 5.3.1'de ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde MPEG-2 kod çözme işlemini DESTEKLEMELİDİR:
- [5.3.1/T-1-1] Ana Profil Yüksek Düzey ile saniyede 29,97 kare hızında HD 1080p.
- [5.3.1/T-1-2] Ana Profil Yüksek Düzey ile saniyede 59,94 kare hızında HD 1080i. İç içe geçmiş MPEG-2 videoların çözünürlüğünü mutlaka iyileştirmeli ve üçüncü taraf uygulamaların kullanımına sunmalıdır.
Televizyon cihazı uygulamaları, Bölüm 5.3.4'te ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde H.264 kod çözme işlemini desteklemelidir:
- [5.3.4/T-1-1] Baseline Profili ile saniyede 60 kare hızında HD 1080p
- [5.3.4/T-1-2] Main Profile ile saniyede 60 kare hızında HD 1080p
- [5.3.4/T-1-3] High Profile Level 4.2 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.5'te ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde H.265 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.5/T-1-1] Main Profile Level 4.1 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülerine sahip televizyon cihazı uygulamaları H.265 kod çözme ve UHD kod çözme profilini destekliyorsa:
- [5.3.5/T-2-1] Main10 Level 5 Main Tier profiliyle saniyede 60 kare hızında UHD kod çözme profilini DESTEKLEMELİDİR.
Televizyon cihaz uygulamaları, Bölüm 5.3.6'da ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde VP8 kod çözme işlemini DESTEKLEMELİDİR:
- [5.3.6/T-1-1] Saniyede 60 kare hızında HD 1080p çözme profili
VP9 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.7'de ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde VP9 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.7/T-1-1] Profil 0 (8 bit renk derinliği) ile saniyede 60 kare hızında HD 1080p
VP9 donanım kod çözücülerine sahip televizyon cihazı uygulamaları VP9 kod çözmeyi ve UHD kod çözme profilini destekliyorsa:
- [5.3.7/T-2-1] Saniyede 60 kare hızında, profil 0 (8 bit renk derinliği) ile UHD kod çözme profilini DESTEKLEMELİDİR.
- [5.3.7/T-SR1] 2. profil (10 bit renk derinliği) ile saniyede 60 kare hızında UHD kod çözme profilini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihazı uygulamaları:
- [5.5/T-0-1] Sıkıştırılmış ses geçişi çıkışı (cihazda ses kod çözme işlemi yapılmaz) hariç olmak üzere, desteklenen çıkışlarda sistemin ana ses seviyesi ve dijital ses çıkışı ses seviyesi zayıflatma desteği ZORUNLU olarak bulunmalıdır.
Televizyon cihaz uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlanan harici ekran destekleniyorsa:
- [5.8/T-0-1] Cihazın satıldığı bölgedeki video yenileme hızına bağlı olarak, HDMI çıkış modu, harici ekran için 50 Hz veya 60 Hz yenileme hızıyla çalışan seçilen piksel biçiminin en yüksek çözünürlüğüne AYARLANMALIDIR.
- [5.8/T-SR-1] Kullanıcı tarafından yapılandırılabilen bir HDMI yenileme hızı seçicisi sağlanması ŞİDDETLE TAVSİYE EDİLİR.
- [5.8] HDMI çıkış modu yenileme hızı, cihazın satıldığı bölgedeki video yenileme hızına bağlı olarak 50 Hz veya 60 Hz olarak AYARLANMALIDIR.
Televizyon cihaz uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlanan harici ekran destekleniyorsa:
- [5.8/T-1-1] HDCP 2.2'yi desteklemelidir.
Televizyon cihaz uygulamaları UHD kod çözme özelliğini desteklemiyorsa ancak HDMI ile bağlanan harici bir ekranı destekliyorsa:
- [5.8/T-2-1] HDCP 1.4'ü DESTEKLEMELİDİR.
2.3.3. Yazılım
Televizyon cihazı uygulamaları:
- [3/T-0-1]
android.software.leanbackveandroid.hardware.type.televisionözelliklerini BEYAN ETMELİDİR. - [3.2.3.1/T-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini intent işleyiciyle birlikte önceden yükLEMELİDİR.
- [3.4.1/T-0-1]
android.webkit.WebviewAPI'nin eksiksiz bir uygulamasını SAĞLAMALIDIR.
Android Television cihaz uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/T-1-1] Medya Bildirim Şablonu da dahil olmak üzere Kilit Ekranı Bildirimleri GÖSTERİLMELİDİR.
Televizyon cihazı uygulamaları:
- [3.8.14/T-SR-1] Resim içinde resim (PIP) modunda çoklu pencere özelliğini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.10/T-0-1] Üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.
- [3.10/T-SR-1] TalkBack açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihaz uygulamaları özelliği bildiriyorsa
android.hardware.audio.output:
- [3.11/T-SR-1] Cihazda kullanılabilen dilleri destekleyen bir metin okuma motoru eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.11/T-1-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
Android Television Input Framework (TIF), canlı içeriklerin Android Television cihazlara iletilmesini kolaylaştırır. TIF, Android TV cihazlarını kontrol eden giriş modülleri oluşturmak için standart bir API sağlar.
Televizyon cihazı uygulamaları:
- [3/T-0-2] Platform özelliği BEYAN EDİLMELİDİR
android.software.live_tv. - [3/T-0-3] Bu API'leri ve üçüncü taraf TIF tabanlı girişler hizmetini kullanan bir uygulamanın cihaza yüklenip kullanılabilmesi için tüm TIF API'leri desteklenmelidir.
Android Television Tuner Framework (TF), Android Television cihazlarda Tuner'dan gelen canlı içeriklerin ve IP'den gelen yayın içeriklerinin işlenmesini birleştirir. Tuner Framework, Android Television Tuner'ı kullanan giriş hizmetleri oluşturmak için standart bir API sağlar.
Cihaz uygulamaları Tuner'ı destekliyorsa:
- [3/T-1-1] Bu API'leri kullanan bir uygulamanın cihaza yüklenip kullanılabilmesi için tüm Tuner Framework API'leri desteklenmelidir.
2.3.4. Performans ve Güç
- [8.1/T-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
- [8.2/T-0-1] En az 5 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.
- [8.2/T-0-2] En az 0,5 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.
- [8.2/T-0-3] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
- [8.2/T-0-4] En az 3,5 MB/sn rastgele okuma performansı SAĞLANMALIDIR.
Televizyon cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/T-1-1] Pil tasarrufu özelliğinin etkinleştirilmesine ve devre dışı bırakılmasına olanak tanımalıdır.
Televizyon cihaz uygulamalarında pil yoksa:
- [8.3/T-1-2] Cihazı, Pilsiz Cihazları Destekleme bölümünde açıklandığı gibi pilsiz cihaz olarak KAYDETMELİDİR.
Televizyon cihaz uygulamalarında pil varsa:
- [8.3/T-1-3] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcıya olanak TANINMALIDIR.
Televizyon cihazı uygulamaları:
- [8.4/T-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeni için akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/T-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/T-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu şartı karşılar. - [8.4/T] Donanım bileşeninin güç kullanımı bir uygulamaya atfedilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
- [8.4/T-0-4] Bu güç kullanımı, uygulama geliştiriciye
adb shell dumpsys batterystatskabuk komutu aracılığıyla SUNULMALIDIR.
2.3.5. Güvenlik Modeli
Televizyon cihazı uygulamaları:
- [9/T-0-1]
android.hardware.security.model.compatibleözelliğini BEYAN ETMELİDİR.
Televizyon cihaz uygulamaları, VoiceInteractionService özelliğini desteklemek için varsayılan bir uygulama içeriyorsa:
- [9.1/T-0-1] Bu uygulama için varsayılan olarak
ACCESS_FINE_LOCATIONizni VERMEMELİDİR.
Televizyon cihazı uygulamaları:
- [9.11/T-0-1] MUST back up the keystore implementation with an isolated execution environment.
- [9.11/T-0-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA-1 ve SHA-2 ailesi karma işlevlerinin uygulamaları OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere yalıtılmış ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
- [9.11/T-0-3] Kilit ekranı kimlik doğrulaması, izole yürütme ortamında YAPILMALI ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin VERİLMELİDİR. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
[9.11/T-0-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının kalıcı cihaz tanımlayıcıları olarak kullanılması ENGELLENMELİDİR.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf olduğunu unutmayın. Ancak bu cihaz, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmediği sürece bu muafiyet geçerlidir.
Televizyon cihaz uygulamaları güvenli bir kilit ekranını destekliyorsa:
- [9.11/T-1-1] Kilitli olmayan durumdan kilitli duruma geçiş için kullanıcının uyku zaman aşımını seçmesine İZİN VERİLMELİDİR. İzin verilen minimum zaman aşımı 15 saniye veya daha az olmalıdır.
Televizyon cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik bayrağını bildirmezse:
- [9.5/T-2-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlı bir şekilde oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
Televizyon cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik bayrağını bildiriyorsa:
- [9.5/T-3-1] Kısıtlanmış profilleri desteklememeli ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'nin denetim uygulamasıyla uyumlu olmalıdır.
Televizyon cihaz uygulamaları android.hardware.microphone beyan ederse:
- [9.8.2/T-4-1] Bir uygulama mikrofondaki ses verilerine erişirken mikrofon göstergesi GÖSTERİLMELİDİR. Ancak mikrofona yalnızca HotwordDetectionService, SOURCE_HOTWORD, ContentCaptureService veya CDD tanımlayıcısı C-3-X olan 9.1 Bölümü'nde belirtilen rollere sahip uygulamalar erişirken gösterilmemelidir.
- [9.8.2/T-4-2] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için mikrofon göstergesi gizlenmemelidir.
Televizyon cihaz uygulamaları android.hardware.camera.any beyan ederse:
- [9.8.2/T-5-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesi GÖSTERİLMELİDİR ancak kameraya yalnızca CDD tanımlayıcısı [C-3-X] ile 9.1 Bölümü'nde belirtilen rollere sahip uygulamalar erişirken GÖSTERİLMEMELİDİR.
- [9.8.2/T-5-2] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için kamera göstergesi gizlenMEMELİDİR.
2.3.6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
Televizyon cihazı uygulamaları:
-
- [6.1/T-0-1] MUST expose a
/system/bin/perfettobinary to the shell user which cmdline complies with the perfetto documentation. - [6.1/T-0-2] Perfetto ikili programı, giriş olarak Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf yapılandırmasını KABUL ETMELİDİR.
- [6.1/T-0-3] Perfetto ikili programı, Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izi yazmalıdır.
- [6.1/T-0-4] MUST provide, through the perfetto binary, at least the data sources described in the perfetto documentation.
- [6.1/T-0-5] Perfetto izleme arka plan programı varsayılan olarak ETKİN OLMALIDIR (sistem özelliği
persist.traced.enable).
- [6.1/T-0-1] MUST expose a
2.4. Saat Gereksinimleri
Android Watch cihaz, vücuda (ör. bileğe) takılmak üzere tasarlanmış bir Android cihaz uygulamasıdır.
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa İzleme olarak sınıflandırılır:
- Fiziksel diyagonal uzunluğu 1,1 ile 2,5 inç arasında olan bir ekrana sahip olmalıdır.
- Vücutta taşınmak üzere tasarlanmış bir mekanizmaya sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar, Android Watch cihaz uygulamalarına özeldir.
2.4.1. Donanım
Cihaz uygulamalarını izleyin:
[7.1.1.1/W-0-1] 1,1 ila 2,5 inç arasında fiziksel diyagonal boyuta sahip bir ekran OLMALIDIR.
[7.2.3/W-0-1] Kullanıcıya Ana Sayfa işlevi sunulmalı ve
UI_MODE_TYPE_WATCHdışında Geri işlevi sunulmalıdır.[7.2.4/W-0-1] Dokunmatik ekran girişi desteklenmelidir.
[7.3.1/W-SR-1] 3 eksenli bir ivmeölçer eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Watch cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özelliği aracılığıyla uygulamalara özelliği bildiriyorsa:
- [7.3.3/W-1-1] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile, GNSS ölçümleri bulunur bulunmaz BİLDİRİLMELİDİR.
- [7.3.3/W-1-2] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekareden daha az ivmeyle hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıkları ve sahte aralık hızları, zamanın en az% 95'inde RAPORLANMALIDIR.
Watch cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [7.3.4/W-2-1] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Watch cihaz uygulamaları hücresel veri bağlantısını destekliyorsa:
- [7.4.1/W-1-1]
android.hardware.telephony.dataözelliği BİLDİRİLMELİDİR.
Cihaz uygulamalarını izleyin:
[7.4.3/W-0-1] Bluetooth'u desteklemelidir.
[7.6.1/W-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1 GB kalıcı depolama alanı OLMALIDIR.
[7.6.1/W-0-2] Çekirdek ve kullanıcı alanı için en az 416 MB kullanılabilir belleğe SAHİP OLMALIDIR.
[7.8.1/W-0-1] Mikrofon içermelidir.
[7.8.2/W] Ses çıkışı OLABİLİR.
2.4.2. Multimedya
Ek şart yoktur.
2.4.3. Yazılım
Cihaz uygulamalarını izleyin:
- [3/W-0-1] Özellik
android.hardware.type.watchBEYAN EDİLMELİDİR. - [3/W-0-2] MUST support uiMode = UI_MODE_TYPE_WATCH.
- [3.2.3.1/W-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm genel intent filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini intent işleyiciyle önceden yükLEMELİDİR.
Cihaz uygulamalarını izleyin:
- [3.8.4/W-SR-1] Yardımcı işlemi'ni gerçekleştirmek için cihazda bir asistan uygulanması ŞİDDETLE TAVSİYE EDİLİR.
android.hardware.audio.output özellik bayrağını bildiren cihaz uygulamalarını izleyin:
- [3.10/W-1-1] Üçüncü taraf erişilebilirlik hizmetleri DESTEKLENMELİDİR.
- [3.10/W-SR-1] talkback open source project'te belirtildiği şekilde, cihazda Anahtar Erişimi ve TalkBack'in işlevselliğine denk veya daha iyi erişilebilirlik hizmetlerinin (önceden yüklenmiş metin okuma motorunun desteklediği diller için) önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Kol saati cihaz uygulamaları android.hardware.audio.output özelliğini bildiriyorsa:
[3.11/W-SR-1] Cihazda kullanılabilen dilleri destekleyen bir metin okuma motoru eklemeniz ŞİDDETLE TAVSİYE EDİLİR.
[3.11/W-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
2.4.4. Performans ve Güç
Watch cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten cihaz güç yönetimi özelliklerini içeriyorsa:
- [8.3/W-SR-1] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya uygunluk sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
- [8.3/W-SR-2] Pil Tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya uygunluk sağlaması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarını izleyin:
- [8.4/W-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/W-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/W-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu şartı karşılar. - [8.4/W-0-4] Bu güç kullanımı, uygulama geliştiriciye
adb shell dumpsys batterystatskabuk komutu aracılığıyla SUNULMALIDIR. - [8.4/W] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.
2.4.5. Güvenlik Modeli
Cihaz uygulamalarını izleyin:
- [9/W-0-1]
android.hardware.security.model.compatibleözelliğini BEYAN ETMELİDİR.
Watch cihaz uygulamaları, VoiceInteractionService özelliğini desteklemek için varsayılan bir uygulama içeriyorsa:
- [9.1/W-0-1] Bu uygulama için varsayılan olarak
ACCESS_FINE_LOCATIONizni VERİLMEMELİDİR.
Watch cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik bayrağını bildirmezse:
- [9.5/W-1-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlı bir şekilde oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
Watch cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik bayrağını bildiriyorsa:
- [9.5/W-2-1] Kısıtlanmış profilleri desteklememelidir ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için kontrollerin AOSP uygulamasında yer alanlarla uyumlu olmalıdır.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentServiceSystem API'yi uygulayan bir veya daha fazla güven aracısı içeriyorsa:
- [9.11.1/W-1-1] Kullanıcıya, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen veya şifre) biri için 72 saatte birden daha sık en az 336 saatte bir (14 günde bir) meydan okumalıdır.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService.grantTrust() System API'yi FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE işaretiyle çağıran bir veya daha fazla güven aracısı varsa:
- [9.11.1/W-2-1]
grantTrust()işlevini bu işaretle çağırmak için aşağıdaki koşulların karşılanması ZORUNLUDUR:- Cihaz, kendi kilit ekranına sahip, yakındaki fiziksel bir birincil el cihazına bağlıysa ve
- Kullanıcı, son 30 saniye içinde kimliğini bu kilit ekranına veya 3. Sınıf biyometriye göre doğrulamış olmalıdır.
- [9.11.1/W-2-2] Giyilebilir cihaz bilekten veya vücuttan çıkarıldığında ve TrustAgent güveni iptal etmediğinde cihazın durumu
TrustState.TRUSTABLEolarak AYARLANMALIDIR.
2.5. Otomotiv Şartları
Android Automotive uygulaması, sistemin bir kısmı veya tamamı ve/veya bilgi-eğlence işlevleri için işletim sistemi olarak Android'i çalıştıran bir araç ana birimini ifade eder.
Android cihaz uygulamaları, android.hardware.type.automotive özelliğini bildiriyorsa veya aşağıdaki tüm ölçütleri karşılıyorsa Automotive olarak sınıflandırılır.
Otomotiv araçlarının bir parçası olarak yerleştirilmiş veya bu araçlara takılabilir.
Sürücü koltuğu sırasındaki bir ekranı birincil ekran olarak kullanıyorsanız.
Bu bölümün geri kalanındaki ek şartlar, Android Automotive cihaz uygulamalarına özeldir.
2.5.1. Donanım
Otomotiv cihaz uygulamaları:
[7.1.1.1/A-0-1] Fiziksel diyagonal boyutu en az 6 inç olan bir ekrana SAHİP OLMALIDIR.
[7.1.1.1/A-0-2] En az 750 dp x 480 dp boyutunda bir ekran düzenine SAHİP OLMALIDIR.
[7.1.1.1/A-0-3] En azından yerleşik ekranlardan herhangi birinin en yüksek çözünürlüğü kadar büyük grafik arabelleklerinin GPU bileşimini DESTEKLEMELİDİR.
Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (burada birden fazla Android kullanıcısı, config_multiuserVisibleBackgroundUsers etkinleştirildiğinde her biri kendi ekranını kullanarak cihazla eşzamanlı olarak etkileşimde bulunabilir):
[7.1.1.1/A-1-1] Ana ekran için her yolcu bölgesi için fiziksel diyagonal boyutu en az 6 inç olan ayrı bir ekran OLMALIDIR. Bu, her bir yolcu bölgesi için
CarOccupantZoneManager.DISPLAY_TYPE_MAINolarak etiketlenmelidir.[7.1.1.1/A-1-2] Her ana ekran için en az 750 dp x 480 dp ekran boyutu düzenine SAHİP OLMALIDIR.
Otomotiv cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:
[7.1.4.1/A-0-1] OpenGL ES 3.1 veya sonraki bir sürüm BEYAN EDİLMELİDİR.
[7.1.4.1/A-0-2] Vulkan 1.1'i DESTEKLEMELİDİR.
[7.1.4.1/A-0-3] Vulkan yükleyiciyi içermeli ve tüm sembolleri dışa aktarmalıdır.
Otomotiv cihaz uygulamaları Vulkan desteği içeriyorsa:
- [7.1.4.2/A-1-1] Android Baseline 2021 profili tarafından belirtilen şartları karşılamalıdır.
Otomotiv cihaz uygulamaları, Configuration.isScreenHdr() aracılığıyla yüksek dinamik aralıklı ekranları desteklediğini iddia ediyorsa:
- [7.1.4.5/A-1-1]
EGL_EXT_gl_colorspace_bt2020_pq,EGL_EXT_surface_SMPTE2086_metadata,EGL_EXT_surface_CTA861_3_metadata,VK_EXT_swapchain_colorspace, veVK_EXT_hdr_metadatauzantıları için destek reklamı YAPILMALIDIR.
Otomotiv cihaz uygulamaları:
- [7.1.4.6/A-0-1] Cihazın, GPU profil oluşturma özelliğini bir sistem özelliği aracılığıyla destekleyip desteklemediği BİLDİRİLMELİDİR
graphics.gpu.profiler.support.
Otomotiv cihaz uygulamaları, bir sistem özelliği graphics.gpu.profiler.support aracılığıyla destek beyan ediyorsa:
[7.1.4.6/A-1-1] Perfetto dokümanlarında tanımlanan GPU sayaçları ve GPU oluşturma aşamaları şemasına uygun bir protobuf izini çıkış olarak bildirmelidir.
[7.1.4.6/A-1-2] Cihazın GPU sayaçları için
gpu counter tracepaket protokolüne uygun değerler RAPORLANMALIDIR.[7.1.4.6/A-1-3] Oluşturma aşaması izleme paketi proto'suna uygun olarak cihazın GPU oluşturma aşamaları için uygun değerler RAPORLANMALIDIR.
[7.1.4.6/A-1-4] MUST report a GPU Frequency tracepoint as specified by the format: power/gpu_frequency.
Otomotiv cihaz uygulamaları:
- [7.1.5/A-0-1] MUST include support for legacy app compatibility mode as implemented by the upstream Android open source code. Yani, cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİ ve uyumluluk modunun davranışını DEĞİŞTİRMEMELİDİR.
Otomotiv cihaz uygulamaları:
[7.1.7/A-0-1] Sürücünün görüş alanındaki ikincil ekranlar,
FLAG_PRIVATEolarak YAPILANDIRILMALIDIR.[7.2.3/A-0-1] Ana Sayfa işlevi SAĞLANMALIDIR ve Geri ile Son Kullanılanlar işlevleri SAĞLANABİLİR.
[7.2.3/A-0-2] Geri işlevinin (
KEYCODE_BACK) hem normal hem de uzun basma etkinliği ön plandaki uygulamaya GÖNDERİLMELİDİR.[7.3/A-0-1]
GEAR_SELECTION,NIGHT_MODE,PERF_VEHICLE_SPEEDvePARKING_BRAKE_ONuygulanmalı ve raporlanmalıdır.[7.3/A-0-2]
NIGHT_MODEişaretinin değeri, kontrol paneli gündüz/gece moduyla tutarlı OLMALI ve ortam ışığı sensörü girişine DAYANMALIDIR. Altta yatan ortam ışığı sensörü, fotometre ile aynı OLABİLİR.[7.3/A-0-3] Sağlanan her sensör için SensorAdditionalInfo kapsamında sensör ek bilgi alanı SAĞLANMALIDIR.
TYPE_SENSOR_PLACEMENT[7.3/A-SR1] GPS/GNSS'yi ek sensörlerle birleştirerek konumu tahmin edebilir. Konum tahmini olarak hesaplanıyorsa kullanılan ilgili Sensör türlerinin ve/veya Araç Mülkü Kimliklerinin uygulanması ve raporlanması ŞİDDETLE TAVSİYE EDİLİR.
[7.3/A-0-4] Konum, LocationManager#requestLocationUpdates() ile istenen, harita eşleştirmesi YAPILMAMALIDIR.
[7.3.1/A-0-4] Android araba sensörü koordinat sistemi ile UYUMLU OLMALIDIR.
[7.3/A-SR-1] 3 eksenli ivme ölçer ve 3 eksenli jiroskop içermesi ŞİDDETLE TAVSİYE EDİLİR.
[7.3/A-SR-2]
TYPE_HEADINGsensörünün uygulanması ve raporlanması ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (burada birden fazla Android kullanıcısı, config_multiuserVisibleBackgroundUsers etkinleştirildiğinde her biri kendi ekranını kullanarak cihazla eşzamanlı olarak etkileşimde bulunabilir):
- [7.3/A-1-1] Arka koltuk ekranları da dahil olmak üzere tüm ekranlarda, kontrol panelinin gündüz/gece moduyla tutarlı olacak şekilde
NIGHT_MODEişaret değeri AYARLANMALIDIR.
Otomotiv cihaz uygulamaları bir ivmeölçer içeriyorsa:
- [7.3.1/A-1-1] En az 100 Hz sıklıkta etkinlik bildirebilmelidir.
Cihaz uygulamalarında 3 eksenli ivme ölçer varsa:
- [7.3.1/A-SR-1] Sınırlı eksenli ivme ölçer için BİLEŞİK SENSÖRÜN uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları 3'ten az eksenli bir ivmeölçer içeriyorsa:
[7.3.1/A-1-3]
TYPE_ACCELEROMETER_LIMITED_AXESsensörü UYGULAMALI ve RAPORLAMALIDIR.[7.3.1/A-1-4]
TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATEDsensörü UYGULAMALI ve RAPORLAMALIDIR.
Otomotiv cihaz uygulamaları jiroskop içeriyorsa:
[7.3.4/A-2-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.
[7.3.4/A-2-3] Saniyede 250 dereceye kadar yön değişikliklerini ölçebilmelidir.
[7.3.4/A-SR-1] Mümkün olan çözünürlüğü en üst düzeye çıkarmak için jiroskopun ölçüm aralığının +/-250 dps olarak yapılandırılması ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:
- [7.3.4/A-SR-2] Sınırlı eksenli jiroskop için bileşik sensörün uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları 3 eksenden daha az eksenli bir jiroskop içeriyorsa:
[7.3.4/A-4-1]
TYPE_GYROSCOPE_LIMITED_AXESsensörü UYGULAMALI ve RAPORLAMALIDIR.[7.3.4/A-4-2]
TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATEDsensörü UYGULANMALI ve RAPORLANMALIDIR.
Otomotiv cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ancak hücresel ağ tabanlı veri bağlantısı içermiyorsa:
[7.3.3/A-3-1] GPS/GNSS alıcısı ilk kez açıldığında veya 4 günden uzun bir süre sonraki ilk 60 saniye içinde konum belirlenmelidir.
[7.3.3/A-3-2] Diğer tüm konum istekleri (yani ilk kez yapılmayan veya 4 günden uzun bir süre sonra yapılan istekler) için 7.3.3/C-1-2 ve 7.3.3/C-1-6'da açıklanan ilk düzeltme süresi ölçütlerini KARŞILAMALIDIR. 7.3.3/C-1-2 şartı, genellikle hücresel ağ tabanlı veri bağlantısı olmayan araçlarda alıcı üzerinde hesaplanan GNSS yörünge tahminleri kullanılarak veya 7.3.3/C-1-3'ü karşılayan bir konum doğruluğuyla en az 60 saniye boyunca ölü hesaplama yapma özelliğiyle birlikte bilinen son araç konumu kullanılarak ya da her ikisinin bir kombinasyonu kullanılarak karşılanır.
Otomotiv cihaz uygulamalarında TYPE_HEADING sensörü varsa:
[7.3.4/A-4-3] Olayları en az 1 Hz sıklıkta bildirebilmelidir.
[7.3.4/A-SR-3] Etkinliklerin en az 10 Hz sıklıkta raporlanması ŞİDDETLE TAVSİYE EDİLİR.
Gerçek kuzeye göre OLMALIDIR.
Araç hareketsizken bile kullanılabilmelidir.
En az 1 derece çözünürlüğe SAHİP OLMALIDIR.
Otomotiv cihaz uygulamaları:
[7.4.3/A-0-1] Bluetooth'u DESTEKLEMELİ ve Bluetooth LE'yi DESTEKLEMELİDİR.
[7.4.3/A-0-2] Android Automotive uygulamaları Aşağıdaki Bluetooth profillerini desteklemelidir:
- Eller Serbest Profili (HFP) üzerinden telefon görüşmesi yapma.
- Ses Dağıtım Profili (A2 DP) üzerinden medya oynatma.
- Uzaktan Kumanda Profili (AVRCP) üzerinden medya oynatma kontrolü.
- Telefon Rehberi Erişim Profili (PBAP) kullanılarak yapılan kişi paylaşımı.
[7.4.3/A-SR-1] Cihazda sürücü yolcu bölgesi varsa Mesaj Erişim Profili'nin (MAP) desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (burada birden fazla Android kullanıcısı, config_multiuserVisibleBackgroundUsers etkinleştirildiğinde her biri kendi ekranını kullanarak cihazla eşzamanlı olarak etkileşimde bulunabilir):
- [7.4.3/A-1-1] Bağımsız OLMALI ve diğer kullanıcıların BT deneyimine MÜDAHALE ETMEMELİDİR.
Otomotiv cihaz uygulamaları:
[7.4.5/A] Hücresel ağ tabanlı veri bağlantısı desteği İÇERMELİDİR.
[7.4.5/A] Sistem uygulamaları tarafından kullanılabilmesi gereken ağlar için Sistem API'si
NetworkCapabilities#NET_CAPABILITY_OEM_PAIDsabitini KULLANABİLİR.
Cihaz uygulamaları AM/FM radyo yayını desteği içeriyorsa ve bu işlevselliği herhangi bir uygulamaya sunuyorsa:
- [7.4/A-1-1]
FEATURE_BROADCAST_RADIOdesteği beyan EDİLMELİDİR.
Arka kamera, aracın herhangi bir yerine yerleştirilebilen ve araç kabininin dışına bakan, dünyaya dönük bir kamera anlamına gelir. Yani, araç gövdesinin uzak tarafındaki sahnelerin görüntülerini alır (ör. arka görüş kamerası).
Öne bakan kamera, aracın herhangi bir yerinde bulunabilen ve araç kabininin içine bakan, kullanıcıya dönük bir kamera anlamına gelir. Bu kamera, görüntülü konferans ve benzeri uygulamalarda olduğu gibi kullanıcının görüntüsünü alır.
Otomotiv cihaz uygulamaları:
[7.5/A-SR-1] Dünyaya dönük bir veya daha fazla kamera içermesi ŞİDDETLE TAVSİYE EDİLİR.
Kullanıcıya dönük bir veya daha fazla kamera İÇEREBİLİR.
[7.5/A-SR-2] Birden fazla kameranın eşzamanlı olarak yayınlanmasını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları, dışa dönük en az bir kamera içeriyorsa bu tür bir kamera için:
[7.5/A-1-1] Kameranın uzun boyutunun Android Automotive sensör eksenlerinin X-Y düzlemiyle aynı doğrultuda olacak şekilde yönlendirilmesi ZORUNLUDUR.
[7.5/A-SR-3] Sabit odaklı veya EDOF (Genişletilmiş Alan Derinliği) donanımına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
[7.5/A-1-2] Birincil, dışa dönük kamera, en düşük kamera kimliğine sahip dışa dönük kamera OLMALIDIR.
Otomotiv cihaz uygulamaları kullanıcıya dönük en az bir kamera içeriyorsa bu tür bir kamera için:
[7.5/A-2-1] Kullanıcıya dönük birincil kamera, en düşük kamera kimliğine sahip kullanıcıya dönük kamera OLMALIDIR.
Kameranın uzun boyutu, Android otomotiv sensör eksenlerinin X-Y düzlemiyle aynı doğrultuda olacak şekilde yönlendirilebilir.
Otomotiv cihaz uygulamaları, android.hardware.Camera veya android.hardware.camera2 API'si aracılığıyla erişilebilen bir kamera içeriyorsa:
- [7.5/A-3-1] 7.5 bölümündeki temel kamera koşullarına UYULMALIDIR.
Otomotiv cihaz uygulamalarında android.hardware.Camera veya android.hardware.camera2 API'si üzerinden erişilemeyen bir kamera varsa:
- [7.5/A-4-1] Extended View System sistemine ait hizmet üzerinden erişilebilir OLMALIDIR.
Otomotiv cihaz uygulamaları, Extended View System Service aracılığıyla erişilebilen bir veya daha fazla kamera içeriyorsa bu tür kameralar için:
[7.5/A-5-1] Kamera önizlemesi döndürülmemeli veya yatay olarak yansıtılmamalıdır.
[7.5/A-SR-4] En az 1,3 megapiksel çözünürlüğe sahip olmaları ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları, hem Extended View System Service hem de android.hardware.Camera
veya android.hardware.Camera2 API üzerinden erişilebilen bir veya daha fazla kamera içeriyorsa bu tür bir kamera için:
- [7.5/A-6-1] Aynı Kamera Kimliği'ni bildirmelidir.
Otomotiv cihaz uygulamaları tescilli bir kamera API'si sağlıyorsa:
- [7.5/A-7-1]
android.hardware.camera2API'si veya Extended View System API'si kullanılarak bu tür bir kamera API'si uygulanmalıdır.
Otomotiv cihaz uygulamaları:
[7.6.1/A-0-1] Uygulama özel verileri için en az 4 GB kalıcı depolama alanı (
/databölümü) OLMALIDIR.[7.6.1/A] Veri bölümü, flash depolama alanında daha iyi performans ve uzun ömür sunmak için (örneğin,
f2fsdosya sistemini kullanarak) biçimlendirilmelidir.
Otomotiv cihaz uygulamaları, dahili çıkarılamayan depolama alanının bir bölümü aracılığıyla paylaşılan harici depolama alanı sağlıyorsa:
- [7.6.1/A-SR-1] Harici depolama alanında gerçekleştirilen işlemlerde G/Ç ek yükünü azaltmak için KESİNLİKLE ÖNERİLİR. Örneğin,
SDCardFSkullanılarak.
Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (burada birden fazla Android kullanıcısı, config_multiuserVisibleBackgroundUsers etkinleştirildiğinde her biri kendi ekranını kullanarak cihazla eşzamanlı olarak etkileşimde bulunabilir):
- [7.6.1/A-1-1] Tek bir AAOS örneğinde, uygulama özel verileri için kullanılabilen kalıcı olmayan depolama alanında (
/databölümü) eşzamanlı her Android kullanıcısı için en az 4 GB OLMALIDIR.
Otomotiv cihaz uygulamaları 64 bit ise:
[7.6.1/A-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek, ana ekran başına en az 816 MB OLMALIDIR:
- Küçük/normal ekranlarda 280 dpi veya daha düşük
- Ekstra büyük ekranlarda ldpi veya daha düşük
- Büyük ekranlarda mdpi veya daha düşük
[7.6.1/A-2-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek, ana ekran başına en az 944 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya daha yüksek
- Büyük ekranlarda hdpi veya daha yüksek
- Çok büyük ekranlarda mdpi veya daha yüksek
[7.6.1/A-2-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek, ana ekran başına en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
[7.6.1/A-2-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek, ana ekran başına en az 1.824 MB OLMALIDIR:
- Küçük/normal ekranlarda 560 dpi veya daha yüksek
- Büyük ekranlarda 400 DPI veya daha yüksek
- Ekstra büyük ekranlarda xhdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdek denetimi altında olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Otomotiv cihaz uygulamaları:
- [7.7.1/A] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
Otomotiv cihaz uygulamaları, çevre birimi modunda çalışan bir denetleyiciye sahip bir USB bağlantı noktası içeriyorsa:
- [7.7.1/A-1-1] Android Open Accessory (AOA) API'si uygulanmalıdır.
Otomotiv cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.2/A-1-1] Android SDK belgelerinde açıklandığı şekilde USB ses sınıfı uygulanmalıdır.
Otomotiv cihaz uygulamaları:
- [7.8.1/A-0-1] Mikrofon içermelidir.
Otomotiv cihaz uygulamaları:
- [7.8.2/A-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.outputbeyan etmelidir.
Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (burada birden fazla Android kullanıcısı, config_multiuserVisibleBackgroundUsers etkinleştirildiğinde her biri kendi ekranını kullanarak cihazla eşzamanlı olarak etkileşimde bulunabilir):
[7.8.2/A-1-1] Eşzamanlı birden fazla kullanıcılı sistemler için her ana ekranın bir ses çıkışı cihazı OLMALIDIR.
[7.8.2/A-1-2] Sürücü ses bölgesi, kabindeki hoparlörü kapsamalıdır. Ön yolcu bölgesi, sürücünün ses bölgesini paylaşabilir veya kendi ses çıkışına sahip olabilir.
USB çevre birimi bağlıyken AudioManager.getDevices() API'si çağrıldığında:
[7.8.2.2/A-1-1] USB ses terminali türü alanı
0x0302iseAudioDeviceInfo.TYPE_USB_HEADSETtüründe veisSink()rolünde bir cihaz LİSTELENMELİDİR.[7.8.2.2/A-1-2] USB ses terminali türü alanı
0x0402iseAudioDeviceInfo.TYPE_USB_HEADSETtüründe veisSink()rolünde bir cihaz LİSTELENMELİDİR.[7.8.2.2/A-1-3] USB ses terminali türü alanı
0x0603iseAudioDeviceInfo.TYPE_USB_HEADSETtüründe veisSink()rolünde bir cihaz LİSTELEMEK ZORUNDADIR.[7.8.2.2/A-1-4] USB ses terminali türü alanı
0x0400iseAudioDeviceInfo.TYPE_USB_HEADSETtüründe veisSink()rolünde bir cihaz LİSTELEMELİDİR.
2.5.2. Multimedya
Otomotiv cihaz uygulamaları, aşağıdaki ses kodlama ve kod çözme biçimlerini DESTEKLEMELİ ve bunları üçüncü taraf uygulamalarına sunmalıdır:
[5.1/A-0-1] MPEG-4 AAC Profili (AAC LC)
[5.1/A-0-2] MPEG-4 HE AAC Profili (AAC+)
[5.1/A-0-3] AAC ELD (enhanced low delay AAC)
- [5.1/A-0-4] MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC)
Otomotiv cihaz uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamaların kullanımına sunmalıdır:
Otomotiv cihaz uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİ ve bunları üçüncü taraf uygulamalarına sunmalıdır:
Otomotiv cihaz uygulamalarının AŞAĞIDAKİ video kod çözme işlemlerini desteklemesi ŞİDDETLE TAVSİYE EDİLİR:
- [5.3/A-SR-1] H.265 HEVC
Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (burada birden fazla Android kullanıcısı, config_multiuserVisibleBackgroundUsers etkinleştirildiğinde her biri kendi ekranını kullanarak cihazla eşzamanlı olarak etkileşimde bulunabilir):
- [5.5.3/A-1-1] Araç ses yapılandırma dosyasında tanımlandığı gibi aynı ses grubuyla eşlenen tüm ses çıkışı akışları için aynı ses seviyesi eğrilerini tanımlamalıdır.
2.5.3. Yazılım
Otomotiv cihaz uygulamaları:
[3/A-0-1] Özellik
android.hardware.type.automotivebeyan EDİLMELİDİR.[3/A-0-2]
uiMode=UI_MODE_TYPE_CARdesteklenmelidir.[3/A-0-3]
android.car.*ad alanındaki tüm herkese açık API'leri desteklemelidir.
Otomotiv cihaz uygulamaları, android.car.CarPropertyManager kullanarak tescilli bir API sağlıyorsa
android.car.VehiclePropertyIds ile birlikte:
[3/A-1-1] Sistem uygulamasının bu özellikleri kullanmasına özel ayrıcalıklar eklememeli veya üçüncü taraf uygulamalarının bu özellikleri kullanmasını engellememelidir.
[3/A-1-2] SDK'da zaten mevcut olan bir araç özelliğini kopyalamamalıdır.
Otomotiv cihaz uygulamaları:
[3.2.1/A-0-1] Otomotiv İzni referans sayfasında belirtilen tüm izin sabitlerini desteklemeli ve zorunlu kılmalıdır.
[3.2.3.1/A-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini intent işleyiciyle önceden yüklemelidir.
[3.2.3.1/A-0-2] SDK dokümanlarında açıklandığı şekilde
ACTION_GET_CONTENT,ACTION_OPEN_DOCUMENT,ACTION_OPEN_DOCUMENT_TREEveACTION_CREATE_DOCUMENTamaçlarını işleyen bir uygulamaya sahip OLMALI veDocumentsProviderAPI'sini kullanarak doküman sağlayıcı verilerine erişmek için kullanıcıya olanak tanımalıdır.
Otomotiv cihazı uygulaması ayarları uygulaması, etkinlik yerleştirme kullanarak bölünmüş işlevsellik uyguluyorsa:
[3.2.3.1/A-1-1] Bölünmüş işlev açıkken
Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITYamacını işleyen bir etkinliğe SAHİP OLMALIDIR. Etkinlik,android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINKtarafından korunmalı veSettings#EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI'den ayrıştırılan Intent'in etkinliğini başlatmalıdır.[3.4.1/A-0-1]
android.webkit.WebviewAPI'nin eksiksiz bir uygulamasını SAĞLAMALIDIR.
Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (burada birden fazla Android kullanıcısı, config_multiuserVisibleBackgroundUsers etkinleştirildiğinde her biri kendi ekranını kullanarak cihazla eşzamanlı olarak etkileşimde bulunabilir):
[3.8/A-1-1] Şu anda ön planda olmayan ancak kendilerine atanan ekrana kullanıcı arayüzü erişimi olan tam ikincil kullanıcılar için aşağıdaki önceden tanımlanmış
UserRestrictionslistesini uygulamalıdır.UserRestrictionslistesi şunlardır:DISALLOW_CONFIG_LOCALE,DISALLOW_CONFIG_BLUETOOTH,DISALLOW_BLUETOOTH,DISALLOW_CAMERA_TOGGLE, veDISALLOW_MICROPHONE_TOGGLE.[3.8/A-1-2] MUST NOT, mevcut ön plan kullanıcısı olmayan ancak kendilerine atanan ekrana kullanıcı arayüzü erişimi olan tam ikincil kullanıcıların, Ayarlar üzerinden veya bir API'den başka bir kullanıcı için gündüz/gece modunu, yerel ayarı, tarihi, saati, saat dilimini ya da ekran rengi özelliklerini (parlaklık, Gece Işığı, Dijital Denge gri tonlama ve Parlak Renkleri Azaltma dahil) değiştirmesine izin VERMEMELİDİR.
Otomotiv cihaz uygulamaları:
[3.8.3/A-0-1] Üçüncü taraf uygulamaları tarafından istendiğinde
Notification.CarExtenderAPI'sini kullanan bildirimleri GÖSTERMELİDİR.[3.8.4/A-SR-1] Yardımcı işlemine yönelik istekleri işlemek için cihazda bir asistanın uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamalarında bas-konuş düğmesi varsa:
- [3.8.4/A-1-1] Kullanıcı tarafından seçilen asistan uygulamasını (diğer bir deyişle
VoiceInteractionService'ı uygulayan uygulama) başlatmak için belirlenen etkileşim olarak bas-konuş düğmesine kısa basılmalıdır.
Otomotiv cihaz uygulamaları:
[3.8.3.1/A-0-1] Kaynakları
Notifications on Automotive OSSDK dokümanlarında açıklandığı şekilde DOĞRU şekilde oluşturmalıdır.[3.8.3.1/A-0-2]
Notification.Builder.addAction()aracılığıyla sağlananların yerine bildirim işlemlerinde PLAY (OYNAT) ve MUTE (SESSİZE AL) seçenekleri GÖSTERİLMELİDİR.[3.8.3.1/A] Bildirim kanalı başına kontroller gibi zengin yönetim görevlerinin kullanımını KISITLAMALIDIR. Denetimleri azaltmak için uygulama başına kullanıcı arayüzü desteği KULLANILABİLİR.
Otomotiv cihaz uygulamaları, User HAL özelliklerini destekliyorsa:
- [3.9.3/A-1-1] Tüm kullanıcı yaşam döngüsü özelliklerini uygulamalıdır:
INITIAL_USER_INFO,SWITCH_USER,CREATE_USERveREMOVE_USER.
Otomotiv cihaz uygulamaları:
[3.14/A-0-1] 3.14 bölümünde açıklandığı gibi medya API'lerini kullanan üçüncü taraf uygulamaları desteklemek için bir kullanıcı arayüzü çerçevesi İÇERMELİDİR.
[3.14/A-0-2] Kullanıcının sürüş sırasında Medya Uygulamaları ile güvenli bir şekilde etkileşim kurmasına İZİN VERİLMELİDİR.
[3.14/A-0-3]
CAR_INTENT_ACTION_MEDIA_TEMPLATECAR_EXTRA_MEDIA_PACKAGEekstrasıyla örtülü Intent işlemini desteklemelidir.[3.14/A-0-4] Bir medya uygulamasının tercih etkinliğine gitmek için bir olanak SAĞLANMALIDIR ancak bu olanak YALNIZCA Car UX Restrictions (Araba Kullanıcı Arayüzü Kısıtlamaları) geçerli olmadığında etkinleştirilmelidir.
[3.14/A-0-5] Medya Uygulamaları tarafından ayarlanan hata mesajları GÖSTERİLMELİ ve isteğe bağlı ekstralar
ERROR_RESOLUTION_ACTION_LABELveERROR_RESOLUTION_ACTION_INTENTDESTEKLENMELİDİR.[3.14/A-0-6] Arama özelliğini destekleyen uygulamalar için uygulama içi arama işlevini DESTEKLEMELİDİR.
[3.14/A-0-7] MediaBrowser hiyerarşisini görüntülerken
CONTENT_STYLE_BROWSABLE_HINTveCONTENT_STYLE_PLAYABLE_HINTtanımlarına UYULMALIDIR.
Otomotiv cihaz uygulamaları:
[3.14/A-0-8] Özellik bayrağı
android.software.car.templates_hostBİLDİRİLMELİDİR.[3.14/A-0-9] Özellik bayrağı
com.android.car.background_audio_while_drivingBİLDİRİLMELİDİR.[3.14/A-0-10] Özellik bayrağı
android.software.car.templates_host.mediaBİLDİRİLMELİDİR.
Otomotiv cihaz uygulamaları varsayılan bir başlatıcı uygulaması içeriyorsa:
- [3.14/A-1-1] Medya hizmetlerini içermeli ve
CAR_INTENT_ACTION_MEDIA_TEMPLATEniyetiyle açmalıdır.
Otomotiv cihaz uygulamaları:
[3.8/A]
immersive documentationbölümünde açıklandığı gibi, tam ekran moduna girme uygulama isteklerini KISITLAYABİLİR.[3.8/A] Durum çubuğunu ve gezinme çubuğunu her zaman görünür tutabilir.
[3.8/A] MAY, sistem kullanıcı arayüzü öğelerinin arkasındaki renkleri değiştirme isteklerini kısıtlayarak bu öğelerin her zaman net bir şekilde görünmesini sağlayabilir.
Otomotiv cihaz uygulamaları:
- [7.1.1/A-0-1] Özellik bayrağı
android.software.car.display_compatibilityBEYAN EDİLMELİDİR.
Otomotiv cihazlar, android.software.car.display_compatibility özelliğiyle ön planda çalışan uygulamalar veya android.hardware.type.automotive özelliği olmayan uygulamalar için:
- [7.1.1/A-1-1] Geri işlevi SAĞLANMALIDIR.
Otomotiv cihaz uygulamaları, kullanıcıların her türlü aramayı yapmasına izin veriyorsa:
[7.4.1.2/A-1-1] Özellik bayrağını BEYAN ETMELİDİR
android.software.telecom.[7.4.1.2/A-1-2] Telekom çerçevesi UYGULANMALIDIR.
2.5.4. Performans ve Güç
[8.1/A-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
[8.1/A-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları,Android Uyumluluk Test Paketi (CTS) tarafından tanımlanan 10.000 liste girişinden oluşan bir listeyi 36 saniyeden kısa sürede kaydırarak düşük gecikmeli kullanıcı deneyimi sağlamalıdır.
[8.1/A-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, başlatılmış ve zaten çalışmakta olan bir uygulamanın yeniden başlatılması 1 saniyeden kısa sürmelidir.
Otomotiv cihaz uygulamaları:
[8.2/A-0-1] Her işlemin UID'si başına kalıcı olmayan depolama alanına okunan ve yazılan bayt sayısını RAPORLAMALIDIR. Böylece istatistikler, Sistem API'si aracılığıyla geliştiricilerin kullanımına sunulur.
android.car.storagemonitoring.CarStorageMonitoringManagerAndroid Açık Kaynak Projesi,uid_sys_statsçekirdek modülü aracılığıyla bu şartı karşılar.[8.2/A-0-2] En az 5 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.
[8.2/A-0-3] En az 0,5 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.
[8.2/A-0-4] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
[8.2/A-0-5] En az 3,5 MB/sn rastgele okuma performansı SAĞLANMALIDIR.
Otomotiv cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.U veya daha büyük bir değer döndürürse:
[8.2/A-1-1] En az 150 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.
[8.2/A-1-2] En az 10 MB/sn rastgele yazma performansı SAĞLANMALIDIR.
[8.2/A-1-3] En az 250 MB/sn sıralı okuma performansı SAĞLANMALIDIR.
[8.2/A-1-4] En az 100 MB/sn rastgele okuma performansı SAĞLANMALIDIR.
[8.2/A-1-5] En az 50 MB/sn hızında 2 kat okuma ve 1 kat yazma performansıyla paralel sıralı okuma ve yazma performansı SAĞLANMALIDIR.
[8.3/A-1-3] Garaj Modu'nu desteklemelidir.
[8.3/A] ŞU DURUMLAR HARİÇ her sürüşten sonra en az 15 dakika boyunca Garaj Modu'nda OLMALIDIR:
- Pil bitti.
- Boşta iş planlanmamış.
- Sürücü, Garaj Modu'ndan çıkar.
[8.4/A-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
[8.4/A-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
[8.4/A-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu koşulu karşılar.[8.4/A] Donanım bileşeninin güç kullanımı bir uygulamaya atfedilemiyorsa bu kullanım, donanım bileşenine atfedilmelidir.
[8.4/A-0-4] Bu güç kullanımını, uygulama geliştiriciye
adb shell dumpsys batterystatskabuk komutu aracılığıyla KULLANIMA SUNMALIDIR.
2.5.5. Güvenlik Modeli
Otomotiv cihaz uygulamaları birden fazla kullanıcıyı destekliyorsa:
[9.5/A-1-1] Kullanıcıların Başsız Sistem Kullanıcısı ile etkileşim kurmasına veya cihaz temel hazırlığı dışında bu kullanıcıya geçmesine İZİN VERİLMEMELİDİR.
[9.5/A-1-2]
BOOT_COMPLETEDtarihinden önce İkincil Kullanıcı'ya geçiş YAPILMALIDIR.[9.5/A-1-3] Bir cihazdaki maksimum kullanıcı sayısına ulaşılmış olsa bile Misafir Kullanıcı oluşturma özelliği DESTEKLENMELİDİR.
Otomotiv cihaz uygulamaları, mikrofon ve/veya kamera erişimi göstergesi olmadan sorgu algılama için Sistem API'sini
VisualQueryDetectionService veya başka bir mekanizmayı destekliyorsa:
[9.8/A-1-1] Sorgu algılama hizmetinin yalnızca Sisteme,
ContentCaptureServiceveya cihaz üzerinde konuşma tanıma hizmetine (SpeechRecognizer#createOnDeviceSpeechRecognizer()tarafından oluşturulmuş) veri iletebildiğinden EMİN OLMALIDIR.[9.8/A-1-2]
VisualQueryDetectionServicedışınaContentCaptureServiceveya cihaz üzerinde konuşma tanıma hizmeti dışında ses ya da video bilgilerinin iletilmesine İZİN VERİLMEMELİDİR.[9.8/A-1-3] Cihaz, kullanıcının Dijital Asistan Uygulaması ile etkileşim kurma niyetini algıladığında (ör. kamera aracılığıyla kullanıcının varlığını algılayarak) Sistem Kullanıcı Arayüzü'nde bir kullanıcı bildirimi GÖSTERMELİDİR.
[9.8/A-1-4] Mikrofon göstergesi GÖSTERİLMELİ ve kullanıcı sorgusu algılandıktan hemen sonra algılanan kullanıcı sorgusu kullanıcı arayüzünde GÖSTERİLMELİDİR.
[9.8/A-1-5] Kullanıcı tarafından yüklenebilen bir uygulamanın görsel sorgu algılama hizmeti sağlamasına İZİN VERİLMEMELİDİR.
Otomotiv cihaz uygulamaları android.hardware.microphone değerini bildiriyorsa:
[9.8.2/A-1-1] Bir uygulama mikrofondaki ses verilerine erişirken mikrofon göstergesi GÖSTERİLMELİDİR ancak mikrofona yalnızca
HotwordDetectionService,SOURCE_HOTWORD,ContentCaptureServiceveya CDD tanımlayıcısı [C-4-X] ile bölüm 9.1'de belirtilen rollere sahip uygulamalar erişirken gösterilmemelidir.[9.8.2/A-1-2] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için mikrofon göstergesi gizlenmemelidir.
[9.8.2/A-1-3] Ayarlar uygulamasında mikrofonu açıp kapatmak için kullanıcıya bir seçenek SUNULMALIDIR.
Otomotiv cihaz uygulamaları android.hardware.camera.any değerini bildiriyorsa:
[9.8.2/A-2-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesi GÖSTERİLMELİDİR. Ancak kamera yalnızca CDD tanımlayıcısı [C-4-X] ile Bölüm 9.1 İzinler'de tanımlanan rollere sahip uygulamalar tarafından erişilirken kamera göstergesi GÖSTERİLMEMELİDİR.
[9.8.2/A-2-2] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için kamera göstergesi gizlenMEMELİDİR.
[9.8.2/A-2-3] Ayarlar uygulamasında kamerayı açıp kapatmak için kullanıcıya bir olanak SAĞLANMALIDIR.
[9.8.2/A-2-4]
PermissionManager.getIndicatorAppOpUsageData()tarafından döndürülen kamera kullanılarak Son ve Etkin uygulamalar, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERİLMELİDİR.
Otomotiv cihaz uygulamaları:
[9/A-0-1]
android.hardware.security.model.compatibleözelliğini BİLDİRMELİDİR.[9.11/A-0-1] MUST back up the keystore implementation with an isolated execution environment.
[9.11/A-0-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA-1 ve SHA-2 ailesi karma işlevlerinin uygulamaları OLMALIDIR. Güvenli izolasyon, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole edilmiş ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
[9.11/A-0-3] Kilit ekranı kimlik doğrulaması, izole yürütme ortamında ve yalnızca başarılı olduğunda yapılmalıdır. Bu durumda, kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Yukarı akış Android Açık Kaynak Projesi, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
[9.11/A-0-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının kalıcı cihaz tanımlayıcıları olarak kullanılması ENGELLENMELİDİR.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf olduğunu unutmayın. Ancak bu cihaz, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmediği sürece bu muafiyet geçerlidir.
Otomotiv cihaz uygulamaları:
[9.14/A-0-1] Android çerçevesi araç alt sistemlerinden gelen mesajları kontrol etmelidir (ör. izin verilen mesaj türleri ve mesaj kaynakları için izin verilenler listesi oluşturma).
[9.14/A-0-2] Android çerçevesinden veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı mutlaka watchdog kullanılmalıdır. Bu, kötü amaçlı yazılımların araç ağını trafikle doldurmasını önler. Aksi takdirde, araç alt sistemlerinde arızalar meydana gelebilir.
2.5.6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
Otomotiv cihaz uygulamaları:
-
[6.1/A-0-1] Kabuk kullanıcısına, komut satırının
/system/bin/perfettoPerfecto belgelerine uygun olduğu bir ikili program sunULMALIDIR.[6.1/A-0-2] Perfetto ikili programı, giriş olarak Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırmasını KABUL ETMELİDİR.
[6.1/A-0-3] Perfetto ikili dosyası, çıkış olarak Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izi YAZMALIDIR.
[6.1/A-0-4] MUST provide, through the perfetto binary, at least the data sources described in the perfetto documentation.
[6.1/A-0-5] Perfetto izleme arka plan programı varsayılan olarak etkinleştirilmelidir (sistem özelliği
persist.traced.enable).
2.6. Tablet Gereksinimleri
Android Tablet cihaz, genellikle aşağıdaki tüm ölçütleri karşılayan bir Android cihaz uygulamasıdır:
- İki elle tutularak kullanılır.
- Clamshell veya dönüştürülebilir yapılandırmaya sahip olmamalıdır.
- Cihazla kullanılan fiziksel klavye uygulamaları standart bir bağlantı (ör. USB, Bluetooth) aracılığıyla bağlanır.
- Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
- Çapraz olarak ölçüldüğünde ekran görüntü boyutu 7 inçten büyük ve 18 inçten küçüktür.
Tablet cihaz uygulamaları, el cihazı uygulamalarına benzer gereksinimlere sahiptir. İstisnalar, ilgili bölümde * işaretiyle belirtilir ve bu bölümde referans olarak not edilir.
2.6.1. Donanım
Gyroscope
Tablet cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:
- [7.3.4/Tab-1-1] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Minimum Bellek ve Depolama Alanı (Bölüm 7.6.1)
Elde taşınabilir cihaz gereksinimlerinde küçük/normal ekranlar için listelenen ekran yoğunlukları tabletler için geçerli değildir.
Sanal Gerçeklik Modu (Bölüm 7.9.1)
Yüksek Performanslı Sanal Gerçeklik (Bölüm 7.9.2)
Sanal gerçeklik şartları tabletler için geçerli değildir.
2.6.2. Güvenlik Modeli
Anahtarlar ve Kimlik Bilgileri (Bölüm 9.11)
[9.11] Bölümü'ne bakın.
Tablet cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik bayrağını bildirmezse:
- [9.5/T-1-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlı bir şekilde oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
Tablet cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik bayrağını bildiriyorsa:
- [9.5/T-2-1] Kısıtlanmış profilleri desteklememelidir ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'nin denetim uygulamasıyla uyumlu olmalıdır.
2.6.2. Yazılım
- [3.2.3.1/Tab-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm genel intent filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini intent işleyiciyle birlikte önceden yükLEMELİDİR.
3. Yazılım
3.1. Yönetilen API Uyumluluğu
Yönetilen Dalvik bayt kodu yürütme ortamı, Android uygulamaları için birincil araçtır. Android uygulama programlama arayüzü (API), yönetilen çalışma zamanı ortamında çalışan uygulamalara sunulan Android platformu arayüzleri kümesidir.
Cihaz uygulamaları:
[C-0-1] Android SDK tarafından kullanıma sunulan veya yukarı akış Android kaynak kodunda "@SystemApi" işaretçisiyle süslenmiş tüm API'lerin, belgelenmiş tüm davranışlar dahil olmak üzere eksiksiz uygulamalarını SAĞLAMALIDIR.
[C-0-2] TestApi ek açıklaması (@TestApi) ile işaretlenen tüm sınıfları, yöntemleri ve ilişkili öğeleri desteklemeli/korumalıdır.
[C-0-3] Bu Uyumluluk Tanımı'nda özellikle izin verilen durumlar hariç, yönetilen API'ler atlanmamalı, API arayüzleri veya imzaları değiştirilmemeli, belgelenen davranıştan sapılmamalı ya da hiçbir işlem yapmayan işlemler eklenmemelidir.
[C-0-4] Android'in API'ler içerdiği bazı donanım özellikleri atlandığında bile API'ler mevcut olmaya ve makul bir şekilde davranmaya DEVAM ETMELİDİR. Bu senaryoya özgü şartlar için 7. bölüme bakın.
[C-0-5] Üçüncü taraf uygulamaların, AOSP'deki önyükleme sınıf yolunda bulunan ve herkese açık SDK'nın bir parçası olmayan Java dil paketlerindeki yöntemler ve alanlar olarak tanımlanan SDK dışı arayüzleri kullanmasına İZİN VERİLMEMELİDİR. Buna, SDK belgelerinde açıklandığı gibi
@hideek açıklamasıyla süslenmiş ancak@SystemAPIile süslenmemiş API'ler ve özel ile paket özel sınıf üyeleri dahildir.[C-0-6] AOSP'deki uygun API düzeyi dalı için
prebuilts/runtime/appcompat/hiddenapi-flags.csvyolunda geçici ve izin verilmeyenler listesi işaretleri aracılığıyla sağlananlarla aynı kısıtlanmış listelerdeki her bir SDK dışı arayüzle birlikte gönderilmelidir.[C-0-7] AOSP'de bulunan mevcut ortak anahtarları kullanarak, imzalı yapılandırmayı herhangi bir APK'ya yerleştirerek kısıtlanmış listeden SDK dışı arayüzleri kaldırmak için imzalı yapılandırma dinamik güncelleme mekanizmasını DESTEKLEMELİDİR.
Ancak:
- GİZLİ (MAY): Gizli bir API yoksa veya cihaz uygulamasında farklı şekilde uygulanmışsa gizli API'yi reddedilenler listesine taşıyın ya da tüm kısıtlanmış listelerden çıkarın.
- MAY: AOSP'de gizli bir API yoksa gizli API'yi kısıtlanmış listelerden herhangi birine ekleyin.
- [C-0-8] API düzeyi 24 26'dan düşük olan uygulamaların yüklenmesini DESTEKLEMEMELİDİR.
3.1.1. Android Uzantıları
Android, belirli bir API düzeyinin yönetilen API yüzeyinin, bu API düzeyinin uzantı sürümü güncellenerek genişletilmesini destekler. android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel) API, sağlanan apiLevel için uzantılar varsa bu apiLevel'nin uzantı sürümünü döndürür.
Android cihaz uygulamaları:
[C-0-1] Hem paylaşılan kitaplık
ExtSharedhem de hizmetlerExtServicesiçin AOSP uygulamasını, her API düzeyi için izin verilen minimum sürümlerden büyük veya bu sürümlere eşit olacak şekilde önceden yüklemelidir. Örneğin, API düzeyi 24'ü çalıştıran Android 7.0 cihaz uygulamaları EN AZ sürüm 1'i içermelidir.[C-0-2] YALNIZCA AOSP tarafından tanımlanmış geçerli uzantı sürüm numarasını döndürmelidir.
[C-0-3]
android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel)tarafından döndürülen uzantı sürümleriyle tanımlanan tüm API'leri, 3.1 bölümündeki şartlara uyarak diğer yönetilen API'ler destekleniyormuş gibi desteklemelidir.
3.1.2. Android Kitaplığı
Apache HTTP istemcisinin desteği sonlandırıldığından, cihaz uygulamaları:
- [C-0-1]
org.apache.http.legacykitaplığı, bootclasspath'e yerleştirilmemelidir. - [C-0-2] YALNIZCA uygulama aşağıdaki koşullardan birini karşıladığında
org.apache.http.legacykitaplığı, uygulamanın sınıf yoluna eklenmelidir:- API düzeyi 28 veya daha düşük bir sürümü hedefliyorsa
<uses-library>öğesininandroid:nameözelliğiniorg.apache.http.legacyolarak ayarlayarak kitaplığa ihtiyacı olduğunu manifest dosyasında belirtir.
AOSP uygulaması bu koşulları karşılar.
3.2. Yazılım API Uyumluluğu
3.1 bölümündeki yönetilen API'lere ek olarak Android, intent'ler, izinler ve Android uygulamalarının derleme süresinde zorunlu kılınamayan benzer yönleri gibi şeylerin biçiminde, yalnızca çalışma zamanında kullanılan önemli bir "yumuşak" API de içerir.
3.2.1. İzinler
- [C-0-1] Cihaz uygulayıcıları, izin referans sayfasında belirtildiği gibi tüm izin sabitlerini desteklemeli ve zorunlu kılmalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek şartların listelendiğini unutmayın.
3.2.2. Oluşturma Parametreleri
Android API'leri, android.os.Build sınıfında mevcut cihazı tanımlaması amaçlanan bir dizi sabit içerir.
- [C-0-1] Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının uyması GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
| Parametre | Ayrıntılar |
|---|---|
| VERSION.RELEASE | Şu anda yürütülen Android sisteminin sürümü, okunabilir biçimde. Bu alan, Android 17 için İzin Verilen Sürüm Dizeleri'nde tanımlanan dize değerlerinden birini içermelidir. |
| VERSION.SDK | Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 17 için bu alanın tam sayı değeri 17_INT OLMALIDIR. |
| VERSION.SDK_INT | Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 17 için bu alanın tam sayı değeri 17_INT olmalıdır. |
| VERSION.INCREMENTAL | Cihaz uygulayıcısı tarafından seçilen ve o anda yürütülen Android sisteminin belirli derlemesini belirten, kullanıcılar tarafından okunabilir biçimde bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişikliği tanımlayıcısının kullanıldığını belirtmektir. Bu alanın değeri, yazdırılabilir 7 bitlik ASCII olarak kodlanabilir OLMALI ve ^[^ :\/~]+$ normal ifadesiyle eşleşmelidir. |
| MASA | Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı tanımlayan, kullanıcılar tarafından okunabilir biçimdeki bir değer. Bu alan, cihazı çalıştıran kartın belirli revizyonunu belirtmek için kullanılabilir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir. |
| BRAND | Cihazla ilişkili marka adını yansıtan ve son kullanıcılar tarafından bilinen bir değer. İnsan tarafından okunabilir biçimde OLMALI ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını TEMSİL ETMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir. |
| DESTEKLENEN_ABIS | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| DESTEKLENEN_32_BİTLİK_ABIS | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| DESTEKLENEN_64_BİTLİK_ABİ'LER | Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| CPU_ABI | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| CPU_ABI2 | Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| CİHAZ | Cihaz uygulayıcısı tarafından seçilen ve cihazın donanım özelliklerinin yapılandırmasını ve endüstriyel tasarımını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEMELİDİR. |
| PARMAK İZİ | Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunabilir OLMALIDIR. Şu şablona UYULMALIDIR:
$(BRAND)/$(PRODUCT)/ Örneğin: acme/myproduct/ Parmak izi, boşluk karakterleri içermemelidir. Bu alanın değeri 7 bitlik ASCII olarak kodlanabilir OLMALIDIR. |
| DONANIM | Donanımın adı (çekirdek komut satırından veya /proc'tan). Makul ölçüde okunabilir OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir. |
| HOST | Derlemenin oluşturulduğu ana makineyi benzersiz bir şekilde tanımlayan, kullanıcıların okuyabileceği biçimde bir dize. Bu alanın belirli bir biçimde olmasıyla ilgili herhangi bir koşul yoktur. Ancak bu alan NULL veya boş dize ("") OLMAMALIDIR. |
| Kimlik | Cihaz uygulayıcısı tarafından belirli bir sürümü belirtmek için seçilen, insanlar tarafından okunabilir biçimde bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapabilmesi için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9._-]+$ normal ifadesiyle eşleşmelidir. |
| ÜRETİCİ | Ürünün Özgün Donanım Üreticisi'nin (OEM) ticari ünvanı. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalı veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
| SOC_MANUFACTURER | Üründe kullanılan birincil çip üzerinde sistemin (SOC) üreticisinin ticari adı. Aynı çip üzerinde sistem üreticisine sahip cihazlar aynı sabit değeri kullanmalıdır. Lütfen kullanılacak doğru sabiti SOC üreticisine sorun. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI, ^([0-9A-Za-z ]+) normal ifadesiyle eşleşmeli, boşlukla başlamamalı veya bitmemeli ve "unknown"a eşit OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
| SOC_MODEL | Üründe kullanılan birincil çip üzerinde sistemin (SOC) model adı. Aynı SOC modeline sahip cihazlar aynı sabit değeri kullanmalıdır. Lütfen kullanılacak doğru sabiti SOC üreticisine sorun.
Bu alanın değeri 7 bitlik ASCII olarak kodlanabilir OLMALI ve ^([0-9A-Za-z ._/+-]+)$ normal ifadesiyle eşleşmeli, boşlukla başlamamalı veya bitmemeli ve "unknown"a eşit OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
| MODEL | Cihaz uygulayıcısı tarafından seçilen ve cihazın son kullanıcı tarafından bilinen adını içeren bir değer. Bu, cihazın son kullanıcılara pazarlandığı ve satıldığı adla AYNI OLMALIDIR. Bu alanın belirli bir biçimiyle ilgili herhangi bir koşul yoktur. Ancak bu alan boş olmamalı veya boş dize ("") içermemelidir. Bu alanın, ürünün kullanım ömrü boyunca değiştirilmemesi ŞİDDETLE TAVSİYE EDİLİR. |
| ÜRÜN | Cihaz uygulayıcısı tarafından seçilen ve aynı marka içinde benzersiz OLMASI GEREKEN belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değer. Kullanıcıların okuyabileceği bir biçimde OLMALIDIR ancak son kullanıcıların görüntülemesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEMELİDİR. |
| ODM_SKU | Cihaz uygulayıcısı tarafından seçilen, isteğe bağlı bir değerdir. Bu değer, cihazın belirli yapılandırmalarını izlemek için kullanılan SKU'yu (Stok Tutma Birimi) içerir. Örneğin, satıldığında cihazla birlikte verilen çevre birimleri.
Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^([0-9A-Za-z.,_-]+)$ normal ifadesiyle eşleşmelidir. |
| SERIAL | "UNKNOWN" döndürmelidir. |
| ETİKETLER | Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayıran virgülle ayrılmış etiket listesi. Etiketler 7 bit ASCII olarak kodlanabilir OLMALI
ve ^[a-zA-Z0-9._-]+ normal ifadesiyle eşleşmeli ve üç tipik Android platformu
imzalama yapılandırmasına (release-keys, dev-keys ve test-keys) karşılık gelen değerlerden birini içermelidir. |
| ZAMAN | Derlemenin gerçekleştiği zaman damgasını temsil eden bir değer. |
| TÜR | Cihaz uygulayıcısı tarafından seçilen ve derlemenin çalışma zamanı yapılandırmasını belirten bir değer. Bu alan, üç tipik Android çalışma zamanı yapılandırmasına (user, userdebug veya eng) karşılık gelen değerlerden birini içermelidir. |
| KULLANICI | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı ya da kullanıcı kimliği. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalıdır veya boş dize ("") içermemelidir. |
| SECURITY_PATCH | Bir derlemenin güvenlik yaması seviyesini gösteren değer. Derlemenin, belirlenen Android Herkese Açık Güvenlik Bülteni'nde açıklanan sorunlardan herhangi birine karşı hiçbir şekilde savunmasız OLMADIĞINI belirtmelidir. Android Public Security Bulletin veya Android Security Advisory'de belirtilen tanımlı bir dizeyle eşleşen [YYYY-AA-GG] biçiminde OLMALIDIR. Örneğin, "2015-11-01". |
| BASE_OS | Android Public Security Bulletin'de sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden değer. Doğru değeri RAPORLAMALI ve böyle bir derleme yoksa boş bir dize ("") raporlamalıdır. |
| BOOTLOADER | Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili önyükleyici sürümünü tanımlayan, kullanıcılar tarafından okunabilir biçimdeki değer.
Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9._-]+$ normal ifadesiyle eşleşmelidir. |
| getRadioVersion() | Cihaz uygulayıcısı tarafından seçilen bir değeri (olmalı veya döndürmelidir).
Cihazda kullanılan belirli dahili radyo/modem sürümünü tanımlayan,
insan tarafından okunabilir biçimde. Bir cihazda dahili radyo/modem yoksa NULL döndürmesi ZORUNLUDUR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9._-,]+$ normal ifadesiyle eşleşmelidir. |
| getSerial() | Aynı MODEL ve ÜRETİCİYE sahip cihazlarda kullanılabilir ve benzersiz olan bir donanım seri numarası OLMALIDIR (olmalı veya döndürmelidir). Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9]+$ normal ifadesiyle eşleşmelidir. |
| STRONGBOX_MANUFACTURER | Üründe kullanılan StrongBox çipinin üreticisinin ticari ünvanı. StrongBox tedarikçisi doğru sabiti sağlar.
Aynı StrongBox tedarikçisine sahip cihazlar aynı sabit değeri kullanmalıdır.
Bu alanın değeri, ^([0-9A-Za-z ]+) normal ifadesiyle eşleşmeli ve "unsupported" değerine eşit olmamalıdır.
Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
| STRONGBOX_MODEL | Üründe kullanılan StrongBox çipinin model adı.
StrongBox tedarikçisi doğru sabiti sağlar. Aynı StrongBox tedarikçisine sahip cihazlar aynı sabit değeri KULLANMALIDIR. Bu alanın değeri, ^([0-9A-Za-z ._/+-]+)$ normal ifadesiyle eşleşmeli ve "unsupported" değerine eşit olmamalıdır. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
3.2.3. Amaca Uygunluk
3.2.3.1. Sık Kullanılan Uygulama Amaçları
Android intent'leri, uygulama bileşenlerinin diğer Android bileşenlerinden işlevsellik istemesine olanak tanır. Android upstream projesi, yaygın işlemleri gerçekleştirmek için çeşitli amaç kalıplarını uygulayan uygulamaların listesini içerir.
Cihaz uygulamaları:
- [C-SR-1] Burada listelenen uygulama amaçları tarafından tanımlanan tüm herkese açık amaç filtresi kalıpları için bir veya daha fazla uygulama ya da hizmet bileşeninin amaç işleyiciyle önceden yüklenmesi ve SDK'da açıklandığı gibi bu yaygın uygulama amaçlarıyla ilgili geliştirici beklentilerini karşılayacak şekilde yerine getirilmesi ŞİDDETLE TAVSİYE EDİLİR.
Her cihaz türü için zorunlu uygulama amaçları hakkında bilgi edinmek üzere lütfen 2. Bölüm'e bakın.
3.2.3.2. Amaç Çözümleme
[C-0-1] Android genişletilebilir bir platform olduğundan cihaz uygulamaları, Ayarlar hariç olmak üzere 3.2.3.1 bölümünde referans verilen her amaç kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına İZİN VERMELİDİR. Yukarı akış Android açık kaynak uygulaması bunu varsayılan olarak sağlar.
[C-0-2] Cihaz uygulayıcıları, sistem uygulamalarının bu amaç kalıplarını kullanmasına özel ayrıcalıklar TANIMLAMAMALI veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü ele geçirmesini ENGELLEMEMELİDİR. Bu yasak, özellikle kullanıcının aynı amaç kalıbını işleyen birden fazla uygulama arasında seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bununla sınırlı değildir.
[C-0-3] Cihaz uygulamaları, kullanıcıların amaçlar için varsayılan etkinliği değiştirebileceği bir kullanıcı arayüzü SAĞLAMALIDIR.
Ancak cihaz uygulamaları, varsayılan etkinlik veri URI'si için daha spesifik bir özellik sağladığında belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten bir intent filtresi kalıbı, tarayıcının "http://" için temel intent kalıbından daha spesifiktir.
Android ayrıca üçüncü taraf uygulamalarının, belirli türdeki web URI intent'leri için yetkili bir varsayılan uygulama bağlantısı davranışı bildirmesine olanak tanıyan bir mekanizma da içerir. Bu tür yetkili bildirimler bir uygulamanın intent filtresi kalıplarında tanımlandığında cihaz uygulamaları:
- [C-0-4] Yukarı akış Android Açık Kaynak Projesi'ndeki Paket Yöneticisi tarafından uygulanan Digital Asset Links spesifikasyonunda tanımlanan doğrulama adımlarını gerçekleştirerek tüm intent filtrelerini doğrulamaya ÇALIŞMALIDIR.
- [C-0-5] Uygulama yüklenirken intent filtrelerinin doğrulanması DENENMELİ ve başarıyla doğrulanan tüm URI intent filtreleri, URI'leri için varsayılan uygulama işleyicileri olarak AYARLANMALIDIR.
- Başarıyla doğrulanırsa ancak diğer aday URI filtreleri doğrulanamazsa belirli URI intent filtrelerini URI'leri için varsayılan uygulama işleyicileri olarak AYARLAYABİLİR. Bir cihaz uygulaması bunu yaparsa ayarlar menüsünde URI başına uygun kalıp geçersiz kılma işlemleri SAĞLAMALIDIR.
- Kullanıcıya Ayarlar'da uygulama başına uygulama bağlantıları kontrolleri aşağıdaki şekilde SAĞLANMALIDIR:
- [C-0-6] Kullanıcı, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütünsel olarak geçersiz kılabilmelidir. Bu davranış, her zaman açma, her zaman sorma veya asla açma şeklinde olmalı ve tüm aday URI intent filtreleri için eşit şekilde geçerli olmalıdır.
- [C-0-7] Kullanıcı, aday URI amaç filtrelerinin listesini görebilmelidir.
- Cihaz uygulaması, kullanıcıya başarılı bir şekilde doğrulanan belirli aday URI amaç filtrelerini amaç filtresi bazında geçersiz kılma olanağı SAĞLAYABİLİR.
- [C-0-8] Cihaz uygulaması, bazı aday URI intent filtrelerinin doğrulamayı geçmesine, bazılarının ise başarısız olmasına izin veriyorsa kullanıcıların belirli aday URI intent filtrelerini görüntülemesine ve geçersiz kılmasına olanak tanımalıdır.
3.2.3.3. Niyet Ad Alanları
- [C-0-1] Cihaz uygulamaları, android.* veya com.android.* ad alanında bir ACTION, CATEGORY ya da başka bir anahtar dizesi kullanarak yeni intent veya yayın intent kalıplarını destekleyen herhangi bir Android bileşeni İÇERMEMELİDİR.
- [C-0-2] Cihaz uygulayıcıları, başka bir kuruluşa ait paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni bir amaç ya da yayın amacı kalıbını karşılayan Android bileşenleri içermemelidir.
- [C-0-3] Cihaz uygulayıcıları, 3.2.3.1 bölümünde listelenen amaç kalıplarından hiçbirini değiştirmemeli veya genişletmemelidir.
- Cihaz uygulamaları, kendi kuruluşlarıyla açık ve belirgin bir şekilde ilişkili ad alanlarını kullanan amaç kalıplarını içerebilir. Bu yasak, 3.6 numaralı bölümde Java dili sınıfları için belirtilen yasağa benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikleri bildirmek için belirli amaçları yayınlamak üzere platforma güvenir.
Cihaz uygulamaları:
- [C-0-1] SDK belgelerinde açıklandığı gibi uygun sistem etkinliklerine yanıt olarak burada listelenen herkese açık yayın amaçlarını yayınLAMALIDIR. Arka plan uygulamalarıyla ilgili sınırlama SDK belgelerinde de açıklandığı için bu şartın 3.5 bölümüyle çelişmediğini unutmayın. Ayrıca, belirli yayın amaçları donanım desteğine bağlıdır. Cihaz gerekli donanımı destekliyorsa amaçları yayınlamalı ve SDK belgelerinde belirtilen davranışları sağlamalıdır.
3.2.3.5. Koşullu uygulama amaçları
Android'de, kullanıcıların varsayılan uygulamalarını (ör. ana ekran veya SMS için) kolayca seçmelerini sağlayan ayarlar bulunur.
Cihaz uygulamaları, anlamlı olduğu durumlarda benzer bir ayarlar menüsü sağlamalı ve SDK belgelerinde aşağıda açıklandığı gibi intent filtresi deseni ve API yöntemleriyle uyumlu olmalıdır.
Cihaz uygulamaları android.software.home_screen bildiriyorsa:
- [C-1-1] Ana ekran için varsayılan uygulama ayarları menüsünü gösterme
android.settings.HOME_SETTINGSamacına UYULMALIDIR.
Cihaz uygulamaları android.hardware.telephony.calling bildiriyorsa:
[C-2-1] Varsayılan SMS uygulamasını değiştirmek için bir iletişim kutusu gösteren
android.provider.Telephony.ACTION_CHANGE_DEFAULTamacını çağıran bir ayarlar menüsü SAĞLANMALIDIR.[C-2-2] Kullanıcının varsayılan Telefon uygulamasını değiştirmesine izin veren bir iletişim kutusu gösterme
android.telecom.action.CHANGE_DEFAULT_DIALERamacına UYULMALIDIR.- Acil durum aramaları hariç olmak üzere, gelen ve giden aramalar için kullanıcının seçtiği varsayılan telefon uygulamasının kullanıcı arayüzü KULLANILMALIDIR. Acil durum aramaları için önceden yüklenmiş telefon uygulaması kullanılır.
[C-2-3] android.telecom.action.CHANGE_PHONE_ACCOUNTS amacını destekleyerek kullanıcılara
PhoneAccountsile ilişkiliConnectionServices'i yapılandırma olanağı sunmalı ve telekomünikasyon servis sağlayıcısının giden aramaları yapmak için kullanacağı varsayılan bir PhoneAccount sağlamalıdır. AOSP uygulaması, "Aramalar" ayarları menüsünde "Arama Hesapları seçeneği" menüsü ekleyerek bu şartı karşılar.[C-2-4]
android.app.role.CALL_REDIRECTIONrolüne sahip bir uygulama içinandroid.telecom.CallRedirectionServiceiznine İZİN VERİLMELİDİR.[C-2-5] Kullanıcıya,
android.app.role.CALL_REDIRECTIONrolünü üstlenen bir uygulamayı seçme olanağı TANINMALIDIR.[C-2-6] android.intent.action.SENDTO ve android.intent.action.VIEW amaçlarına UYULMALI ve SMS mesajları göndermek/görüntülemek için bir etkinlik sağlanmalıdır.
[C-SR-1] android.intent.action.ANSWER, android.intent.action.CALL, android.intent.action.CALL_BUTTON, android.intent.action.VIEW & android.intent.action.DIAL intent'lerini, bu intent'leri işleyebilen ve SDK'da açıklandığı şekilde yerine getirebilen önceden yüklenmiş bir çevirici uygulamasıyla desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları android.hardware.nfc.hce bildiriyorsa:
- [C-3-1] Temassız ödeme için varsayılan uygulama ayarları menüsünü göstermek üzere android.settings.NFC_PAYMENT_SETTINGS amacına UYULMALIDIR.
- [C-3-2] SDK'da açıklandığı gibi, belirli bir kategori için varsayılan kart emülasyon hizmetini değiştirmesini isteyen bir iletişim kutusu açan bir etkinliği göstermek üzere android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT amacına UYULMALIDIR.
Cihaz uygulamaları android.hardware.nfc bildiriyorsa:
- [C-4-1] SDK'da açıklandığı gibi, geliştiricilerin bu amaçlarla ilgili beklentilerini karşılayan bir etkinlik göstermek için android.nfc.action.NDEF_DISCOVERED, android.nfc.action.TAG_DISCOVERED ve android.nfc.action.TECH_DISCOVERED amaçlarına UYULMALIDIR.
Cihaz uygulamaları android.hardware.bluetooth bildiriyorsa:
- [C-5-1] 'android.bluetooth.adapter.action.REQUEST_ENABLE' amacına uymalı ve kullanıcının Bluetooth'u açmasına izin vermek için bir sistem etkinliği göstermelidir.
- [C-5-2] 'android.bluetooth.adapter.action.REQUEST_DISCOVERABLE' amacına UYULMALI ve bulunabilir mod isteyen bir sistem etkinliği gösterilmelidir.
Cihaz uygulamaları DND özelliğini destekliyorsa:
- [C-6-1] Amaçla eşleşen bir etkinlik uygulanmalıdır.
ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS, UI_MODE_TYPE_NORMAL ile uygulamalarda bu etkinlik, kullanıcının uygulamaya rahatsız etmeyin politikası yapılandırmalarına erişim izni verebileceği veya bu erişimi reddedebileceği bir etkinlik olmalıdır.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:
- [C-7-1]
android.settings.INPUT_METHOD_SETTINGSamacına yanıt olarak üçüncü taraf giriş yöntemlerini eklemek ve yapılandırmak için kullanıcı tarafından erişilebilen bir mekanizma SAĞLANMALIDIR.
Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-8-1] Önceden yüklenmiş erişilebilirlik hizmetlerinin yanı sıra üçüncü taraf erişilebilirlik hizmetlerini etkinleştirmek ve devre dışı bırakmak için kullanıcı tarafından erişilebilen bir mekanizma sağlama
android.settings.ACCESSIBILITY_SETTINGSamacına UYULMALIDIR.
Cihaz uygulamaları Wi-Fi Easy Connect desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-9-1] SDK dokümanlarında açıklandığı gibi Settings#ACTION_PROCESS_WIFI_EASY_CONNECT_URI Intent API'lerini uygulamalıdır.
Cihaz uygulamaları veri tasarrufu modu sunuyorsa:
- [C-10-1] Ayarlarda,
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGSamacını işleyen bir kullanıcı arayüzü SAĞLANMALIDIR. Bu arayüz, kullanıcıların izin verilenler listesine uygulama eklemesine veya listeden uygulama kaldırmasına olanak tanımalıdır.
Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:
- [C-11-1]
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGSamacını işleyen bir etkinliğe SAHİP OLMALI ancak bunu işlem yapmayan bir işlev olarak uygulayabilir.
Cihaz uygulamaları, android.hardware.camera.any aracılığıyla kamerayı desteklediğini beyan ediyorsa:
- [C-12-3] SDK dokümanında açıklandığı gibi aşağıdaki amaçları
MediaStore.ACTION_IMAGE_CAPTURE,MediaStore.ACTION_IMAGE_CAPTURE_SECURE, veMediaStore.ACTION_VIDEO_CAPTUREişlemesi ZORUNLUDUR ve yalnızca önceden yüklenmiş Android uygulamalarının işlemesine izin verilmesi ZORUNLUDUR.
Cihaz uygulamaları android.software.device_admin bildiriyorsa:
[C-13-1] Kullanıcıyı cihaz yöneticisini sisteme ekleme (veya bunu reddetmesine izin verme) sürecine yönlendirmek için bir kullanıcı arayüzü çağırma amacına
android.app.action.ADD_DEVICE_ADMINUYULMALIDIR.[C-13-2] android.app.action.PROVISION_MANAGED_PROFILE, android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD, android.app.action.SET_NEW_PASSWORD ve android.app.action.START_ENCRYPTION amaçlarına uygun olmalı ve SDK'da burada açıklandığı gibi bu amaçları yerine getirecek bir etkinliğe sahip olmalıdır.
Cihaz uygulamaları android.software.autofill özellik bayrağını beyan ediyorsa:
- [C-14-1]
AutofillServiceveAutofillManagerAPI'leri tam olarak uygulanmalı ve android.settings.REQUEST_SET_AUTOFILL_SERVICE amaçlanarak otomatik doldurmayı etkinleştirmek ve devre dışı bırakmak için varsayılan uygulama ayarları menüsü gösterilmeli ve kullanıcının varsayılan otomatik doldurma hizmetini değiştirmesine izin verilmelidir.
Cihaz uygulamaları önceden yüklenmiş bir uygulama içeriyorsa veya üçüncü taraf uygulamaların kullanım istatistiklerine erişmesine izin vermek istiyorsa:
- [C-SR-2]
android.permission.PACKAGE_USAGE_STATSiznini bildiren uygulamalar için android.settings.ACTION_USAGE_ACCESS_SETTINGS intent'ine yanıt olarak kullanım istatistiklerine erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, önceden yüklenmiş uygulamalar da dahil olmak üzere uygulamaların kullanım istatistiklerine erişmesini engellemeyi amaçlıyorsa:
- [C-15-1] android.settings.ACTION_USAGE_ACCESS_SETTINGS intent kalıbını işleyen bir etkinliğe sahip olmaya DEVAM ETMELİ ancak bunu işlem yapmayan bir işlem olarak uygulamalıdır. Yani, kullanıcıya erişim izni verilmediğinde olduğu gibi eşdeğer bir davranışa sahip olmalıdır.
Cihaz uygulamaları, Ayarlar'da AutofillService_passwordsActivity tarafından belirtilen etkinliklere bağlantılar veya benzer bir mekanizma aracılığıyla kullanıcı şifrelerine bağlantılar gösteriyorsa:
- [C-16-1] Yüklü tüm otomatik doldurma hizmetleri için bu tür bağlantıları göstermelidir.
Cihaz uygulamaları VoiceInteractionService özelliğini destekliyorsa ve aynı anda bu API'yi kullanan birden fazla uygulama yüklüyse:
- [C-18-1]
android.settings.ACTION_VOICE_INPUT_SETTINGSSes girişi ve yardım için varsayılan uygulama ayarları menüsünü gösterme amacına UYULMALIDIR.
Cihaz uygulamaları android.hardware.audio.output özelliğini bildiriyorsa:
- [C-SR-3] android.intent.action.TTS_SERVICE, android.speech.tts.engine.INSTALL_TTS_DATA ve android.speech.tts.engine.GET_SAMPLE_TEXT amaçlarına uyulması ŞİDDETLE TAVSİYE EDİLİR. Bu amaçlar için SDK'da burada açıklandığı şekilde yerine getirme sağlayan bir etkinlik olmalıdır.
Android, daha önce Dreams olarak adlandırılan etkileşimli ekran koruyucuları destekler. Ekran koruyucular, bir güç kaynağına bağlı cihaz boşta durduğunda veya masaüstü dock'ına yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Cihaz Uygulamaları:
- Ekran koruyucular için destek içermeli ve kullanıcılara
android.settings.DREAM_SETTINGSamacına yanıt olarak ekran koruyucuları yapılandırmaları için bir ayar seçeneği sunmalıdır.
Cihaz uygulamaları android.hardware.nfc.uicc veya android.hardware.nfc.ese değerini bildiriyorsa:
- [C-19-1] NfcAdapter.ACTION_TRANSACTION_DETECTED Intent API'si (GSM Association teknik spesifikasyonu TS.26 - NFC Handset Requirements tarafından tanımlanan "EVT_TRANSACTION" olarak) uygulanmalıdır.
3.2.4. İkincil/birden fazla ekrandaki etkinlikler
Cihaz uygulamaları, birden fazla ekranda normal Android Etkinlikleri'nin başlatılmasına izin veriyorsa:
- [C-1-1]
android.software.activities_on_secondary_displaysözellik bayrağı AYARLANMALIDIR. - [C-1-2] Birincil ekranda çalışan bir etkinliğe benzer API uyumluluğu GARANTİ EDİLMELİDİR.
- [C-1-3] Yeni etkinlik,
ActivityOptions.setLaunchDisplayId()API'si aracılığıyla hedef ekran belirtilmeden başlatıldığında yeni etkinliği, onu başlatan etkinlikle aynı ekranda başlatmalıdır. - [C-1-4]
Display.FLAG_PRIVATEişaretli bir ekran kaldırıldığında TÜM etkinlikler yok edilmelidir. - [C-1-5] Uygulama,
Activity#setShowWhenLocked()API'sini kullanarak kilit ekranının üzerinde gösterilmeyi etkinleştirmediği sürece, cihaz güvenli bir kilit ekranıyla kilitlendiğinde tüm ekranlardaki içerik güvenli bir şekilde gizlenmelidir. - İkincil ekranda bir etkinlik başlatılırsa doğru şekilde görüntülenmesi, çalışması ve uyumluluğun korunması için
android.content.res.Configurationolmalıdır.
Cihaz uygulamaları, ikincil ekranlarda normal Android Etkinlikleri'nin başlatılmasına izin veriyorsa ve ikincil ekranda android.view.Display.FLAG_PRIVATE işareti varsa:
[C-3-1] Yalnızca söz konusu ekranın, sistemin ve ekranda zaten bulunan etkinliklerin sahibi, bu ekranı başlatabilmelidir. Herkes, android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda başlatabilir.
3.3. Yerel API Uyumluluğu
Yerel kod uyumluluğu zordur. Bu nedenle, cihaz uygulayıcıları:
- [C-SR-1] Aşağıda listelenen kitaplıkların uygulamalarını, yukarı akış Android Açık Kaynak Projesi'nden kullanmanız KESİNLİKLE ÖNERİLİR.
3.3.1. Uygulama İkili Arabirimleri
Yönetilen Dalvik bayt kodu, uygulamada uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak sağlanan yerel kodu çağırabilir..apk Yerel kod, temel işlemci teknolojisine büyük ölçüde bağlı olduğundan Android, Android NDK'de bir dizi Uygulama İkili Arabirimi (ABI) tanımlar.
Cihaz uygulamaları:
- [C-0-1] Tanımlanmış bir veya daha fazla Android NDK ABI'si ile uyumlu OLMALIDIR.
- [C-0-2] Standart Java Native Interface (JNI) semantiğini kullanarak yerel kodu çağırmak için yönetilen ortamda çalışan kod desteği İÇERMELİDİR.
- [C-0-3] Aşağıdaki listede yer alan her bir gerekli kitaplıkla kaynak uyumlu (yani başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
[C-0-5] Cihaz tarafından desteklenen yerel Uygulama İkili Arabirimi (ABI),
android.os.Build.SUPPORTED_ABIS,android.os.Build.SUPPORTED_32_BIT_ABISveandroid.os.Build.SUPPORTED_64_BIT_ABISparametreleri aracılığıyla doğru şekilde bildirilmelidir. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene doğru sıralanmış, virgülle ayrılmış ABI listeleridir.[C-0-6] Yukarıdaki parametreler aracılığıyla aşağıdaki ABI listesinin bir alt kümesini RAPORLAMALI ve listede yer almayan hiçbir ABI'yi RAPORLAMAMALIDIR.
armeabi(artık NDK tarafından hedef olarak desteklenmiyor)armeabi-v7aarm64-v8ax86x86-64riscv64
[C-0-7] Yerel API'ler sağlayan aşağıdaki tüm kitaplıklar, yerel kod içeren uygulamalarda KULLANILABİLİR olmalıdır:
- libaaudio.so (AAudio yerel ses desteği)
- libamidi.so (5.9. bölümde açıklandığı gibi
android.software.midiözelliği talep ediliyorsa yerel MIDI desteği) - libandroid.so (yerel Android etkinliği desteği)
- libc (C kitaplığı)
- libcamera2ndk.so
- libdl (dinamik bağlayıcı)
- libEGL.so (yerel OpenGL yüzey yönetimi)
- libGLESv1_CM.so (OpenGL ES 1.x)
- libGLESv2.so (OpenGL ES 2.0)
- libGLESv3.so (OpenGL ES 3.x)
- libicui18n.so
- libicuuc.so
- libjnigraphics.so
- liblog (Android günlük kaydı)
- libmediandk.so (yerel medya API'leri desteği)
- libm (matematik kitaplığı)
- libneuralnetworks.so (Neural Networks API)
- libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
- libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
- libRS.so
- libstdc++ (C++ için minimum destek)
- libvulkan.so (Vulkan)
- libz (Zlib sıkıştırması)
- JNI arayüzü
[C-0-8] Yukarıda listelenen yerel kitaplıklar için herkese açık işlevler eklenmemeli veya kaldırılmamalıdır.
[C-0-9]
/vendor/etc/public.libraries.txtiçinde doğrudan üçüncü taraf uygulamalarına sunulan ek AOSP dışı kitaplıkları LİSTELEMELİDİR.[C-0-10] AOSP'de sistem kitaplıkları olarak uygulanan ve sağlanan diğer yerel kitaplıklar, ayrılmış oldukları için API düzeyi 24 veya üstünü hedefleyen üçüncü taraf uygulamalara sunulMAMALIDIR.
[C-0-11] NDK'da tanımlandığı şekilde,
libGLESv3.sokitaplığı aracılığıyla tüm OpenGL ES 3.1 ve Android Extension Pack işlev sembollerini dışa aktarmalıdır. Tüm sembollerin bulunması ZORUNLU olsa da bölüm 7.1.4.1'de, her bir ilgili işlevin tam olarak uygulanmasının beklendiği durumlarla ilgili koşullar daha ayrıntılı olarak açıklanmaktadır.[C-0-12]
libvulkan.sokitaplığı aracılığıylaVK_KHR_surface,VK_KHR_android_surface,VK_KHR_swapchain,VK_KHR_maintenance1veVK_KHR_get_physical_device_properties2uzantılarının yanı sıra temel Vulkan 1.1 işlev sembolleri için işlev sembollerini dışa aktarmalıdır. Tüm sembollerin bulunması GEREKTİĞİNİ unutmayın. 7.1.4.2 bölümünde, ilgili işlevlerin tam olarak uygulanmasının beklendiği durumlarla ilgili şartlar daha ayrıntılı olarak açıklanmaktadır.Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kodu ve başlık dosyaları kullanılarak OLUŞTURULMALIDIR.
Android'in gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın.
3.3.2. 32 bit ARM Yerel Kod Uyumluluğu
Cihaz uygulamaları armeabi ABI'nin desteklendiğini bildiriyorsa:
- [C-3-1]
armeabi-v7ade desteklenmeli ve desteklendiği bildirilmelidir.armeabiyalnızca eski uygulamalarla geriye dönük uyumluluk için kullanılır.
Cihaz uygulamaları armeabi-v7a ABI'sinin desteklendiğini bildiriyorsa bu ABI'yi kullanan uygulamalar:
[C-2-1]
/proc/cpuinfoiçinde aşağıdaki satırları İÇERMELİDİR ve aynı cihazda değerler diğer ABI'ler tarafından okunsa bile DEĞİŞTİRMEMELİDİR.Features:ve ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi.CPU architecture:ve ardından cihazın desteklediği en yüksek ARM mimarisini açıklayan bir tam sayı (ör. ARMv8 cihazlar için "8").
[C-2-2] ABI, ARMv8 mimarisinde yerel CPU desteği veya yazılım emülasyonu aracılığıyla uygulanmış olsa bile aşağıdaki işlemler her zaman kullanılabilir olmalıdır:
- SWP ve SWPB talimatları.
- CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri.
[C-2-3] Advanced SIMD (diğer adıyla NEON) uzantısı için destek İÇERMELİDİR.
3.4. Web Uyumluluğu
3.4.1. WebView Uyumluluğu
Cihaz uygulamaları, android.webkit.Webview API'nin eksiksiz bir uygulamasını sağlıyorsa:
[C-1-1]
android.software.webviewBİLDİRİLMELİDİR.[C-1-2] Chromium Projesi'nin,
android.webkit.WebViewAPI'sinin uygulanması için Android 17 dalındaki yukarı akış Android Açık Kaynak Projesi'nden alınan derlemesi KULLANILMALIDIR.[C-1-3] SDK düzeyi 35 ve önceki sürümleri hedefleyen uygulamalar için WebView tarafından bildirilen kullanıcı aracısı dizesi ŞU biçimde OLMALIDIR:
Mozilla/5.0 (Linux; Android $(VERSION); \[$(MODEL)\] \[Build/$(BUILD)\]; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36$(VERSION)dizesinin değeri,android.os.Build.VERSION.RELEASEdeğeriyle aynı OLMALIDIR.$(MODEL)dizesi BOŞ olabilir ancak boş değilseandroid.os.Build.MODELile aynı değere SAHİP OLMALIDIR."Build/$(BUILD)" atlanabilir ancak mevcutsa
$(BUILD)dizesiandroid.os.Build.IDdeğerine eşit OLMALIDIR.$(CHROMIUM_VER)dizesinin değeri, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium sürümü OLMALIDIR.Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobile ifadesini atlayabilir.
WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliğini desteklemelidir ve özelliği destekliyorsa HTML5 spesifikasyonuna uygun olmalıdır.
[C-1-4] Sağlanan içeriği veya uzak URL içeriğini, WebView'u başlatan uygulamadan farklı bir süreçte oluşturmalıdır. Özellikle ayrı oluşturma işlemi daha düşük ayrıcalığa sahip olmalı, ayrı bir kullanıcı kimliği olarak çalışmalı, uygulamanın veri dizinine erişimi olmamalı, doğrudan ağ erişimi olmamalı ve yalnızca Binder üzerinden minimum düzeyde gerekli sistem hizmetlerine erişebilmelidir. WebView'ın AOSP uygulaması bu koşulu karşılar.
[C-1-5] SDK düzeyi 36 ve üzeri sürümleri hedefleyen uygulamalar için WebView tarafından bildirilen sistem varsayılan kullanıcı aracısı dizesi, aşağıdaki biçimde OLMALIDIR:
Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) ; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_MAJOR_VER).0.0.0 Mobile Safari/537.36$(VERSION),10statik değeri OLMALIDIR.$(MODEL),Kstatik harfi OLMALIDIR.$(CHROMIUM_MAJOR_VER)Yukarı akış Android Açık Kaynak Projesi'ndeki Chromium'un ana sürümü OLMALIDIR.- Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobile ifadesini atlayabilir.
Cihaz uygulamaları 32 bit ise veya android.hardware.ram.low özellik bayrağını bildiriyorsa C-1-3'ten muaf tutulur.
3.4.2. Tarayıcı Uyumluluğu
Cihaz uygulamaları genel web'de gezinme için bağımsız bir Tarayıcı uygulaması içeriyorsa:
[C-1-1] HTML5 ile ilişkili bu API'lerin her birini DESTEKLEMELİDİR:
[C-1-2] HTML5/W3C webstorage API'yi DESTEKLEMELİ ve HTML5/W3C IndexedDB API'yi DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları, web depolama yerine IndexedDB'yi tercih etmeye başladığından IndexedDB'nin Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesi beklenmektedir.
Bağımsız tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi GÖNDEREBİLİR.
Bağımsız tarayıcı uygulamasında (yukarı akış WebKit tarayıcı uygulamasına veya üçüncü taraf bir alternatife dayalı olsun ya da olmasın) mümkün olduğunca fazla HTML5 desteği uygulamalıdır.
Ancak cihaz uygulamaları bağımsız bir Tarayıcı uygulaması içermiyorsa:
- [C-2-1] 3.2.3.1 bölümünde açıklandığı gibi herkese açık amaç kalıplarını desteklemeye DEVAM ETMELİDİR.
3.5. API Davranışsal Uyumluluğu
Cihaz uygulamaları:
- [C-0-9] Bölüm 3.5.1'de açıklandığı şekilde kısıtlanmadıkları sürece, API davranış uyumluluğunun yüklü tüm uygulamalar için geçerli olmasını SAĞLAMALIDIR.
- [C-0-10] YALNIZCA cihaz uygulayıcıları tarafından seçilen uygulamalar için API davranışsal uyumluluğunu sağlayan izin verilenler listesi yaklaşımı UYGULANMAMALIDIR.
API türlerinin (yönetilen, yumuşak, yerel ve web) her birinin davranışları, yukarı akış Android Açık Kaynak Projesi'nin tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumlulukla ilgili bazı özel alanlar şunlardır:
- [C-0-1] Cihazlar, standart bir amacın davranışını veya semantiğini DEĞİŞTİRMEMELİDİR.
- [C-0-2] Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, ContentProvider vb.) yaşam döngüsünü veya yaşam döngüsü semantiğini DEĞİŞTİRMEMELİDİR.
- [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEMELİDİR.
- Cihazlar, arka plan uygulamalarına uygulanan sınırlamaları DEĞİŞTİRMEMELİDİR.
Daha açık şekilde belirtmek gerekirse, arka planda çalışan uygulamalar için:
- [C-0-4] Uygulama,
GnssMeasurementveGnssNavigationMessage'tan çıkış almak için kaydettiği geri aramaları yürütmeyi DURDURMALIDIR. - [C-0-5]
LocationManagerAPI sınıfı veyaWifiManager.startScan()yöntemi aracılığıyla uygulamaya sağlanan güncellemelerin sıklığını sınırlamalıdır. - [C-0-6] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa yayın amacı
"signature"veya"signatureOrSystem"izni gerektirmediği ya daprotectionLevelizni gerektirmediği veya muafiyet listesinde olmadığı sürece, uygulamanın manifest dosyasında standart Android amaçlarının örtülü yayınları için yayın alıcılarının kaydedilmesine İZİN VERMEMELİDİR. - Uygulama API düzeyi 25 veya daha üst bir düzeyi hedefliyorsa, kullanıcıya görünür bir görevi yerine getirmek için geçici izin verilenler listesine yerleştirilmediği sürece, uygulamanın arka plan hizmetlerini, hizmetlerin
stopSelf()yöntemini çağırmış gibi durdurması ZORUNLUDUR. [C-0-7] - [C-0-8] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa uygulamanın tuttuğu uyandırma kilitlerini serbest bırakması ZORUNLUDUR.
- [C-0-4] Uygulama,
- [C-0-11] Uygulama, listeyi
insertProviderAt()veyaremoveProvider()aracılığıyla değiştirmediği sürece cihazlar,Security.getProviders()yönteminden elde edilen ilk yedi dizi değeri olarak aşağıdaki güvenlik sağlayıcıları, belirtilen sırayla ve belirtilen adlarla (Provider.getName()tarafından döndürüldüğü gibi) ve sınıflarla döndürmelidir. Cihazlar, aşağıdaki belirtilen sağlayıcı listesinden SONRA ek sağlayıcılar döndÜREBİLİR.- AndroidNSSP -
android.security.net.config.NetworkSecurityConfigProvider - AndroidOpenSSL -
com.android.org.conscrypt.OpenSSLProvider - CertPathProvider -
sun.security.provider.CertPathProvider - AndroidKeyStoreBCWorkaround -
android.security.keystore.AndroidKeyStoreBCWorkaroundProvider - BC -
com.android.org.bouncycastle.jce.provider.BouncyCastleProvider - HarmonyJSSE -
com.android.org.conscrypt.JSSEProvider - AndroidKeyStore -
android.security.keystore.AndroidKeyStoreProvider
- AndroidNSSP -
Yukarıdaki listede olası her duruma yer verilmemiştir. Uyumluluk Test Paketi (CTS) testleri, platformun önemli bölümlerini davranış uyumluluğu açısından test eder ancak tüm bölümlerini test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcılar mümkün olduğunda sistemin önemli kısımlarını yeniden uygulamak yerine Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodunu KULLANMALIDIR.
3.5.1. Uygulama Kısıtlaması
Cihaz uygulamaları, uygulamaları kısıtlamak için tescilli bir mekanizma uyguluyorsa (ör. SDK'da açıklanan API davranışlarını değiştirme veya kısıtlama) ve bu mekanizma Kısıtlanmış Uygulamayı Beklemeye Alma Paketi'nden daha kısıtlayıcıysa:
- [C-1-1] Kullanıcının, kısıtlanmış uygulamaların listesini görmesine İZİN VERİLMELİDİR.
- [C-1-2] Her uygulamada bu tescilli kısıtlamaların tümünü etkinleştirmek / devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR.
[C-1-3] Bu tescilli kısıtlamalar, sistemin kötü sağlık davranışına dair kanıt olmadan otomatik olarak UYGULANMAMALI, ancak kilitlenmiş uyandırma kilitleri, uzun süredir çalışan hizmetler ve diğer ölçütler gibi sistemin kötü sağlık davranışları tespit edildiğinde uygulamalara UYGULANABİLİR. Ölçütler, cihaz uygulayıcıları tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili OLMALIDIR. Sistemin sağlığıyla tamamen ilgili olmayan diğer kriterler (ör. uygulamanın piyasada popüler olmaması) kriter olarak KULLANILMAMALIDIR.
[C-1-4] Kullanıcı, uygulama kısıtlamalarını manuel olarak devre dışı bıraktığında bu tescilli kısıtlamalar uygulamalar için otomatik olarak uygulanMAMALI ve kullanıcıya bu tescilli kısıtlamaları uygulaması ÖNERİLEBİLİR.
[C-1-5] Bu tescilli kısıtlamalar bir uygulamaya otomatik olarak uygulanırsa kullanıcıları bilgilendirmelidir. Bu tür bilgiler, bu tescilli kısıtlamaların uygulanmasından önceki 24 saatlik süre içinde SAĞLANMALIDIR.
[C-1-6] Bir uygulamadan gelen tüm API çağrıları için ActivityManager.isBackgroundRestricted() yöntemi doğru değerini döndürmelidir.
[C-1-7] Kullanıcı tarafından açıkça kullanılan en üstteki ön planda çalışan uygulama KISITLANMAMALIDIR.
[C-1-8] Bir kullanıcı uygulamayı açıkça kullanmaya başladığında ve uygulamayı ön plandaki en üst uygulama yaptığında bu tescilli kısıtlamalar UYGULAMADA askıya ALINMALIDIR.
[C-1-10] Tescilli kısıtlamaların nasıl uygulandığını açıklayan herkese açık ve net bir belge veya web sitesi SAĞLANMALIDIR. Bu doküman veya web sitesi, Android SDK dokümanlarından BAĞLANTILANDIRILABİLİR olmalı ve şunları İÇERMELİDİR:
- Tescilli kısıtlamalar için tetikleme koşulları.
- Bir uygulamanın hangi özellikleri nasıl kısıtlanabilir?
- Bir uygulamanın bu tür kısıtlamalardan nasıl muaf tutulabileceği
- Kullanıcının yükleyebileceği uygulamalar için bu tür bir muafiyeti destekliyorsa uygulamanın tescilli kısıtlamalardan nasıl muafiyet isteyebileceği.
Cihazda önceden yüklenmiş olan ve kullanıcı tarafından 30 günden uzun süre açıkça kullanılmamış uygulamalar [C-1-3] [C-1-5] kapsamı dışındadır.
Cihaz uygulamaları, AOSP'de uygulanan uygulama kısıtlamalarını genişletiyorsa:
- [C-2-1]Bu belgede açıklanan uygulama takip EDİLMELİDİR.
3.5.2. Uygulamayı Hazırda Bekletme
Cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özelliği genişleten uygulama uyku modunu içeriyorsa:
- [C-1-1] [C-1-6] ve [C-1-3] hariç olmak üzere bölüm 3.5.1'deki tüm koşulları KARŞILAMALIDIR.
- [C-1-2] Kısıtlama, yalnızca kullanıcının uygulamayı bir süredir kullanmadığına dair kanıt olduğunda uygulamaya uygulanmalıdır. Bu sürenin bir ay veya daha uzun olması ŞİDDETLE TAVSİYE EDİLİR. Kullanım, UsageStats#getLastTimeVisible() API'si aracılığıyla açık kullanıcı etkileşimi veya bir uygulamanın zorla durdurulmuş durumdan çıkmasına neden olacak herhangi bir şey (ör. hizmet bağlamaları, içerik sağlayıcı bağlamaları, açık yayınlar vb.) ile tanımlanmalıdır. Bu, yeni bir API olan UsageStats#getLastTimeAnyComponentUsed() ile izlenir.
- [C-1-3] YALNIZCA paketin bir süre boyunca HİÇBİR kullanıcı tarafından kullanılmadığına dair kanıt olduğunda tüm cihaz kullanıcılarını etkileyen kısıtlamalar uygulanMALIDIR. Bu sürenin BİR AY veya daha uzun olması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-4] Uygulama, etkinlik amaçlarına, hizmet bağlamalarına, içerik sağlayıcı isteklerine veya açık yayınlara yanıt veremez hale GELMEMELİDİR.
AOSP'deki uygulama uyku modu, yukarıdaki koşulları karşılar.
3.6. API ad alanları
Android, Java programlama dili tarafından tanımlanan paket ve sınıf ad alanı kurallarına uyar. Üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için cihaz uygulayıcıları, aşağıdaki paket ad alanlarında yasaklanmış değişiklikler YAPMAMALIDIR:
java.*javax.*sun.*android.*androidx.*com.android.*
Yani:
- [C-0-1] Android platformunda herkese açık API'ler, herhangi bir yöntem veya sınıf imzası değiştirilerek ya da sınıflar veya sınıf alanları kaldırılarak değiştirilmemelidir.
- [C-0-2] Yukarıdaki ad alanlarındaki API'lere herkese açık olarak sunulan öğeler (ör. sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere alanlar ya da yöntemler) ya da Test veya Sistem API'leri eklenMEMELİDİR. "Herkese açık şekilde kullanıma sunulan öğe", yukarı akış Android kaynak kodunda kullanılan "@hide" işaretçisiyle süslenmemiş tüm yapılardır.
Cihaz uygulayıcıları, API'lerin temel uygulamasını DEĞİŞTİREBİLİR ancak bu tür değişiklikler:
- [C-0-3] Herhangi bir herkese açık API'nin belirtilen davranışını ve Java dili imzasını etkilememelidir.
- [C-0-4] Reklamı yapılmamalı veya geliştiricilere başka bir şekilde gösterilmemelidir.
Ancak cihaz uygulayıcıları, standart Android ad alanı dışında özel API'ler ekleyebilir. Bu özel API'ler:
- [C-0-5] Başka bir kuruluşa ait olan veya başka bir kuruluşu ifade eden bir ad alanında OLMAMALIDIR. Örneğin, cihaz uygulayıcıları
com.google.*veya benzer ad alanına API ekleyemez. Bunu yalnızca Google yapabilir. Benzer şekilde, Google da diğer şirketlerin ad alanlarına API ekleyemez. - [C-0-6] Yalnızca bunları açıkça kullanan uygulamaların (yani <uses-library> mekanizması aracılığıyla) bu tür API'lerin artan bellek kullanımından etkilenmesi için Android paylaşılan kitaplığı olarak paketlenmelidir.
Cihaz uygulayıcıları, NDK API'leri dışında yerel dillerde özel API'ler ekleyebilir. Ancak özel API'ler:
- [C-1-1] Burada açıklandığı gibi bir NDK kitaplığında veya başka bir kuruluşa ait bir kitaplıkta OLMAMALIDIR.
Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarından birini iyileştirmeyi önerirse (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) uygulayıcı source.android.com adresini ziyaret etmeli ve bu sitedeki bilgilere göre değişiklik ve kod katkısında bulunma sürecini başlatmalıdır.
Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmaya yönelik standart kurallara karşılık geldiğini unutmayın. Bu bölümün amacı yalnızca bu kuralları pekiştirmek ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmektir.
3.7. Çalışma Zamanı Uyumluluğu
Cihaz uygulamaları:
[C-0-1] Dalvik bytecode spesifikasyonunu ve semantiğini ve tam Dalvik Executable (DEX) biçimini desteklemelidir.
[C-0-2] Dalvik çalışma zamanları, yukarı akış Android platformuna uygun olarak ve aşağıdaki tabloda belirtildiği şekilde bellek ayıracak şekilde yapılandırılmalıdır. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 bölümüne bakın.)
Dalvik Executable Format'ın referans upstream uygulaması olan Android RunTime (ART) ve referans uygulamanın paket yönetim sistemi KULLANILMALIDIR.
Çalışma zamanının kararlılığını sağlamak için çeşitli yürütme modları ve hedef mimariler altında bulanıklaştırma testleri YAPILMALIDIR. Android Açık Kaynak Projesi web sitesindeki JFuzz ve DexFuzz bölümlerine bakın.
Aşağıda belirtilen bellek değerlerinin minimum değerler olduğu ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceği unutulmamalıdır.
| Ekran Düzeni | Ekran Yoğunluğu | Minimum Uygulama Belleği |
|---|---|---|
| Android Watch | 120 dpi (ldpi) | 32 MB |
| 140 dpi (140dpi) | ||
| 160 dpi (mdpi) | ||
| 180 dpi (180dpi) | ||
| 200 dpi (200dpi) | ||
| 213 dpi (tvdpi) | ||
| 220 dpi (220dpi) | 36MB | |
| 240 dpi (hdpi) | ||
| 280 dpi (280dpi) | ||
| 320 dpi (xhdpi) | 48MB | |
| 360 dpi (360dpi) | ||
| 400 dpi (400dpi) | 56MB | |
| 420 dpi (420dpi) | 64MB | |
| 480 dpi (xxhdpi) | 88MB | |
| 560 dpi (560dpi) | 112MB | |
| 640 dpi (xxxhdpi) | 154MB | |
| küçük/normal | 120 dpi (ldpi) | 32 MB |
| 140 dpi (140dpi) | ||
| 160 dpi (mdpi) | ||
| 180 dpi (180dpi) | 48MB | |
| 200 dpi (200dpi) | ||
| 213 dpi (tvdpi) | ||
| 220 dpi (220dpi) | ||
| 240 dpi (hdpi) | ||
| 280 dpi (280dpi) | ||
| 320 dpi (xhdpi) | 80MB | |
| 360 dpi (360dpi) | ||
| 400 dpi (400dpi) | 96MB | |
| 420 dpi (420dpi) | 112MB | |
| 480 dpi (xxhdpi) | 128 MB | |
| 560 dpi (560dpi) | 192MB | |
| 640 dpi (xxxhdpi) | 256 MB | |
| large | 120 dpi (ldpi) | 32 MB |
| 140 dpi (140dpi) | 48MB | |
| 160 dpi (mdpi) | ||
| 180 dpi (180dpi) | 80MB | |
| 200 dpi (200dpi) | ||
| 213 dpi (tvdpi) | ||
| 220 dpi (220dpi) | ||
| 240 dpi (hdpi) | ||
| 280 dpi (280dpi) | 96MB | |
| 320 dpi (xhdpi) | 128 MB | |
| 360 dpi (360dpi) | 160MB | |
| 400 dpi (400dpi) | 192MB | |
| 420 dpi (420dpi) | 228MB | |
| 480 dpi (xxhdpi) | 256 MB | |
| 560 dpi (560dpi) | 384MB | |
| 640 dpi (xxxhdpi) | 512 MB | |
| xlarge | 120 dpi (ldpi) | 48MB |
| 140 dpi (140dpi) | 80MB | |
| 160 dpi (mdpi) | ||
| 180 dpi (180dpi) | 96MB | |
| 200 dpi (200dpi) | ||
| 213 dpi (tvdpi) | ||
| 220 dpi (220dpi) | ||
| 240 dpi (hdpi) | ||
| 280 dpi (280dpi) | 144MB | |
| 320 dpi (xhdpi) | 192MB | |
| 360 dpi (360dpi) | 240MB | |
| 400 dpi (400dpi) | 288MB | |
| 420 dpi (420dpi) | 336MB | |
| 480 dpi (xxhdpi) | 384MB | |
| 560 dpi (560dpi) | 576MB | |
| 640 dpi (xxxhdpi) | 768MB |
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.1. Başlatıcı (Ana Ekran)
Android'de bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerine geçecek üçüncü taraf uygulamaları için destek bulunur.
Cihaz uygulamaları, üçüncü taraf uygulamaların cihazın ana ekranının yerini almasına izin veriyorsa:
[C-1-1] Platform özelliği
android.software.home_screenBİLDİRİLMELİDİR.[C-1-2] Üçüncü taraf uygulaması, simgesini sağlamak için
<adaptive-icon>etiketini kullandığında ve simgeleri almak içinPackageManageryöntemleri çağrıldığındaAdaptiveIconDrawablenesnesini döndÜRMELİDİR.
Cihaz uygulamaları, uygulama içi kısayol sabitlemeyi destekleyen varsayılan bir başlatıcı içeriyorsa:
[C-2-1]
ShortcutManager.isRequestPinShortcutSupported()içintrueraporlanmalıdır.[C-2-2]
ShortcutManager.requestPinShortcut()API yöntemiyle uygulamalar tarafından istenen kısayolu eklemeden önce kullanıcıya soran bir kullanıcı arayüzü OLMALIDIR.[C-2-3] Uygulama kısayolları sayfasında belirtildiği gibi, sabitlenmiş kısayollar ile dinamik ve statik kısayollar desteklenmelidir.
Aksine, cihaz uygulamaları uygulama içi kısayol sabitlemeyi desteklemiyorsa:
- [C-3-1]
ShortcutManager.isRequestPinShortcutSupported()içinfalsebildirilmelidir.
Cihaz uygulamaları, ShortcutManager API'si aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uyguluyorsa:
- [C-4-1] Belgelenmiş tüm kısayol özelliklerini (ör. statik ve dinamik kısayollar, kısayolları sabitleme) desteklemeli ve
ShortcutManagerAPI sınıfının API'lerini tam olarak uygulamalıdır.
Cihaz uygulamalarında, uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması varsa:
[C-5-1]
NotificationChannel.setShowBadge()API yöntemine UYULMALIDIR. Diğer bir deyişle, değertrueolarak ayarlanmışsa uygulama simgesiyle ilişkili görsel bir ipucu gösterin ve uygulamanın tüm bildirim kanalları değerifalseolarak ayarladığında herhangi bir uygulama simgesi rozetleme şeması göstermeyin.Üçüncü taraf uygulamaları, tescilli API'leri kullanarak tescilli rozet şemasını desteklediğini belirttiğinde MAY, uygulama simgesi rozetlerini tescilli rozet şemasıyla geçersiz kılabilir ancak SDK'da açıklanan bildirim rozetleri API'leri aracılığıyla sağlanan kaynakları ve değerleri (ör.
Notification.Builder.setNumber()veNotification.Builder.setBadgeIconType()API'si) KULLANMALIDIR.
Cihaz uygulamaları tek renkli simgeleri destekliyorsa bu simgeler:
- [C-6-1] YALNIZCA kullanıcı bunları açıkça etkinleştirdiğinde (ör. Ayarlar veya duvar kağıdı seçici menüsü aracılığıyla) kullanılmalıdır.
3.8.2. Widget'lar
Android, bileşen türünü ve uygulamaların son kullanıcıya "AppWidget" göstermesine olanak tanıyan ilgili API ve yaşam döngüsünü tanımlayarak üçüncü taraf uygulama widget'larını destekler.
Cihaz uygulamaları üçüncü taraf uygulama widget'larını destekliyorsa:
[C-1-1] Platform özelliği desteği BEYAN EDİLMELİDİR
android.software.app_widgets.[C-1-2] Kullanıcının güvenliği (ör. sürücünün dikkatinin dağılması) söz konusu olmadığı sürece AppWidget'ler için yerleşik destek içermeli ve AppWidget'leri eklemek, yapılandırmak, önizlemek, kaldırmak, görüntülemek ve yeniden boyutlandırmak için kullanıcı arayüzü olanakları sunmalıdır.
- [C-1-3] Standart ızgara boyutunda 4 x 4 boyutundaki widget'ları oluşturabilmelidir. Ayrıntılar için Android SDK dokümanlarındaki Uygulama Widget'ı Tasarım Kuralları'na bakın.
[C-1-4] Dinamik olarak oluşturulan widget önizlemeleri desteklenmelidir.
[C-1-5]
AppWidgetManager.requestPinAppWidget()aracılığıyla uygulamalar tarafından istenen bir widget'ı eklemeden önce kullanıcıya soran önizlemeyle kullanıcı etkileşimine izin VERİLMELİDİR.[C-1-6] Widget'ların uygulama içi sabitlenmesi DESTEKLENMELİDİR.
[C-1-7]
AppWidgetManager.html.isRequestPinAppWidgetSupported()içintruebildirilmelidir.
- Kilit ekranında uygulama widget'larını DESTEKLEYEBİLİR.
Cihaz uygulamaları, üçüncü taraf uygulama widget'larını ve uygulama içi kısayol sabitlemeyi destekliyorsa:
[C-2-1]
AppWidgetManager.html.isRequestPinAppWidgetSupported()içintrueraporlanmalıdır.[C-2-2]
AppWidgetManager.requestPinAppWidget()API yöntemiyle uygulamalar tarafından istenen kısayolu eklemeden önce kullanıcıya soran bir kullanıcı arayüzü OLMALIDIR.
3.8.3. Bildirimler
Android, üçüncü taraf uygulama geliştiricilerin önemli etkinlikler hakkında kullanıcıları bilgilendirmesine ve cihazın donanım bileşenlerini (ör. ses, titreşim ve ışık) ve yazılım özelliklerini (ör. bildirim gölgesi, sistem çubuğu) kullanarak kullanıcıların dikkatini çekmesine olanak tanıyan Notification
ve NotificationManager
API'lerini içerir.
3.8.3.1. Bildirimlerin Gösterilmesi
Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli etkinliklerden haberdar etmesine izin veriyorsa:
[C-1-1] SDK dokümanlarında açıklandığı gibi ve cihaz uygulama donanımıyla mümkün olduğu ölçüde, donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim motoru varsa titreşim API'lerini DOĞRU şekilde uygulaması ZORUNLUDUR. Bir cihaz uygulamasında donanım eksikse ilgili API'ler işlem yapmayan işlemler olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmaktadır.
[C-1-2] API'lerde veya Durum/Sistem Çubuğu simge stil kılavuzunda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) DOĞRU şekilde oluşturmalıdır. Bununla birlikte, referans Android Açık Kaynak uygulaması tarafından sağlanan bildirimlerden farklı bir kullanıcı deneyimi sunabilir.
[C-1-3] Bildirimleri güncellemek, kaldırmak ve gruplandırmak için API'lerde açıklanan davranışlara UYULMALI ve bu davranışlar doğru şekilde uygulanmalıdır.
[C-1-4] SDK'da belgelenen NotificationChannel API'sinin tüm davranışlarını SAĞLAMALIDIR.
[C-1-5] Belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek ve değiştirmek için kullanıcıya bir olanak SUNULMALIDIR.
[C-1-6] Ayrıca, silinen bildirim kanallarını görüntülemek için kullanıcıya bir olanak SAĞLANMALIDIR.
[C-1-7] Notification.MessagingStyle aracılığıyla sağlanan tüm kaynaklar (resimler, çıkartmalar, simgeler vb.) bildirim metniyle birlikte ek kullanıcı etkileşimi olmadan DOĞRU şekilde oluşturulmalıdır. Örneğin, setGroupConversation ile ayarlanan bir grup görüşmesinde android.app.Person aracılığıyla sağlanan simgeler de dahil olmak üzere tüm kaynaklar GÖSTERİLMELİDİR.
[C-SR-1] Kullanıcıya, Bildirim Dinleyici izni verilen uygulamalara gösterilen bildirimleri kontrol etme olanağı sunması ŞİDDETLE TAVSİYE EDİLİR. Ayrıntı düzeyi, kullanıcının her bildirim dinleyicisi için hangi bildirim türlerinin bu dinleyiciye köprüleneceğini kontrol edebileceği şekilde OLMALIDIR. Türler "görüşmeler", "uyarılar", "sessiz" ve "önemli devam eden" bildirimlerini İÇERMELİDİR.
[C-SR-2] Kullanıcılara, belirli bir bildirim dinleyicisine bildirim göndermeyecek uygulamaları belirtme olanağı sunulması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-3] Kullanıcı, bildirimi birden çok kez kapattıktan sonra belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek için kullanıcıya otomatik olarak bir seçenek sunulması ŞİDDETLE TAVSİYE EDİLİR.
Zengin bildirimleri DESTEKLEMELİDİR.
Daha yüksek öncelikli bazı bildirimleri uyarı bildirimi olarak göstermelidir.
Bildirimleri ertelemek için kullanıcıya olanak tanımalıdır.
MAY, sürücünün dikkatinin dağılması gibi güvenlik sorunlarını azaltmak için yalnızca üçüncü taraf uygulamaların kullanıcıları önemli etkinliklerden ne zaman haberdar edebileceğinin görünürlüğünü ve zamanlamasını yönetir.
Android 11, MessagingStyle'ı kullanan ve yayınlanmış bir People kısayol kimliği sağlayan görüşme bildirimleri için destek sunar.
Cihaz uygulamaları:
- [C-SR-4] Devam eden ön plan hizmeti bildirimleri ve
importance:highbildirimleri hariç olmak üzere,conversation notifications'nin, görüşme bildirimleri dışındaki bildirimlerden önce gruplandırılması ve gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları conversation notifications'ı destekliyorsa
ve uygulama bubbles için gerekli verileri sağlıyorsa:
- [C-SR-5] Bu görüşmenin baloncuk olarak gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. AOSP uygulaması, varsayılan Sistem Arayüzü, Ayarlar ve Başlatıcı ile bu koşulları karşılar.
Cihaz uygulamaları zengin bildirimleri destekliyorsa:
[C-2-1] Gösterilen kaynak öğeleri için
Notification.StyleAPI sınıfı ve alt sınıfları aracılığıyla sağlanan kaynakların aynısı KULLANILMALIDIR.Notification.StyleAPI sınıfında ve alt sınıflarında tanımlanan her bir kaynak öğesini (ör. simge, başlık ve özet metni) sunmalıdır.
Heads up bildirimleri, kullanıcının kullandığı yüzeyden bağımsız olarak geldiği anda kullanıcıya gösterilen bildirimlerdir. Cihaz uygulamaları, heads-up bildirimlerini destekliyorsa:
[C-3-1] MUST use the heads-up notification view and resources as described in the
Notification.BuilderAPI class when heads-up notifications are presented.[C-3-2]
Notification.Builder.addAction()aracılığıyla sağlanan işlemler, SDK'da açıklandığı gibi ek kullanıcı etkileşimi olmadan bildirim içeriğiyle birlikte GÖSTERİLMELİDİR.
3.8.3.2. Bildirim Dinleyici Hizmeti
Android, uygulamaların (kullanıcı tarafından açıkça etkinleştirildikten sonra) yayınlandıkları veya güncellendikleri sırada tüm bildirimlerin bir kopyasını almasına olanak tanıyan
NotificationListenerService
API'lerini içerir.
Cihaz uygulamaları:
[C-0-1] Bildirim nesnesine eklenen tüm meta veriler dahil olmak üzere, bu tür yüklü ve kullanıcı tarafından etkinleştirilmiş tüm dinleyici hizmetlerindeki bildirimleri eksiksiz olarak doğru ve hızlı bir şekilde güncellemelidir.
[C-0-2]
snoozeNotification()API çağrısına UYULMALI, bildirim kapatılmalı ve API çağrısında ayarlanan erteleme süresinden sonra geri arama yapılmalıdır.
Cihaz uygulamalarında bildirimleri erteleme özelliği varsa:
[C-1-1]
NotificationListenerService.getSnoozedNotifications()gibi standart API'ler aracılığıyla ertelenen bildirim durumu doğru şekilde yansıtılmalıdır.[C-1-2] Kalıcı/ön plan hizmetlerinden gelmedikleri sürece, yüklü her üçüncü taraf uygulamasından gelen bildirimleri ertelemek için bu kullanıcı işlevini KULLANIMA SUNMALIDIR.
3.8.3.3. DND (Rahatsız Etmeyin) / Öncelik Modu
Cihaz uygulamaları, Rahatsız Etmeyin özelliğini (öncelik modu olarak da bilinir) destekliyorsa:
[C-1-1] Cihaz uygulaması, kullanıcının üçüncü taraf uygulamalarına DND politikası yapılandırmasına erişim izni vermesini veya bu erişimi reddetmesini sağlayan bir yöntem sunduğunda, uygulamalar tarafından oluşturulan Otomatik DND kuralları, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kurallarla birlikte GÖSTERİLMELİDİR.
[C-1-3]
suppressedVisualEffectsNotificationManager.Policyile iletilen değerlere UYULMALIDIR ve bir uygulamaSUPPRESSED_EFFECT_SCREEN_OFFveyaSUPPRESSED_EFFECT_SCREEN_ONişaretlerinden herhangi birini ayarladıysa kullanıcılara, görsel efektlerin DND ayarları menüsünde devre dışı bırakıldığı BİLDİRİLMELİDİR.
3.8.3.4. Hassas Bildirim Koruması
Hassas bildirim bilgileri arasında, kullanıcılara bildirim olarak gönderilebilen tek kullanımlık şifreler, tek kullanımlık onay kodları ve benzer kimlik doğrulama veya sıfırlama kodları gibi içerikler yer alır.
Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli etkinliklerden haberdar etmesine izin veriyorsa:
[C-1-1] Dinleyici hizmeti aşağıdakilerden biri olmadığı sürece, hassas bildirim bilgilerinin bildirim dinleyicilerine iletilmesi KESİNLİKLE engellenmelidir:
uid< 10000 olan sistem imzalı uygulamalar- Sistem Arayüzü
- kabuk
- Belirlenmiş yardımcı cihaz uygulaması (
CompanionDeviceManagertarafından tanımlanır) SYSTEM_AUTOMOTIVE_PROJECTIONrolüSYSTEM_NOTIFICATION_INTELLIGENCErolü- HOME rolü
NotificationAssistantServices
AOSP uygulaması bu şartları örnekler ve karşılar. Örnek için
android.ext.services.notification
bölümüne bakın.
3.8.4. Assist API'leri
Android, uygulamaların mevcut bağlamdaki bilgilerin ne kadarının cihazdaki asistanla paylaşılacağını seçmesine olanak tanıyan Assist API'lerini içerir.
Cihaz uygulamaları Asistan eylemini destekliyorsa:
[C-2-1] Bağlam paylaşıldığında son kullanıcıya açıkça bildirilmelidir. Bu işlem aşağıdakilerden biriyle yapılabilir:
Asistan uygulaması bağlama her eriştiğinde, Android Açık Kaynak Projesi uygulamasının süresine ve parlaklığına eşit veya daha yüksek bir süre ve parlaklıkta ekranın kenarlarında beyaz bir ışık gösterilir.
Önceden yüklenmiş asistan uygulaması için, varsayılan sesli giriş ve asistan uygulaması ayarları menüsünden iki gezinmeden daha az uzaklıkta bir kullanıcı olanağı sunulmalı ve bağlam yalnızca asistan uygulaması, kullanıcı tarafından bir etkin kelime veya asistan gezinme anahtarı girişi aracılığıyla açıkça çağrıldığında paylaşılmalıdır.
- [C-2-1] YALNIZCA kullanıcı, asistan navigasyon tuşu girişi, bir özel kelime veya başka bir belirlenmiş giriş noktası aracılığıyla uygulamayı açıkça çağırdığında bağlam, asistan uygulamasıyla paylaşılmalıdır.
- [C-2-2] Bölüm 7.2.3'te açıklandığı gibi asistan uygulamasını başlatmak için belirlenen etkileşim, kullanıcı tarafından seçilen asistan uygulamasını (diğer bir deyişle
VoiceInteractionService'yi uygulayan uygulama) veyaACTION_ASSISTintentini işleyen bir etkinliği başlatmalıdır.
3.8.5. Uyarılar ve Toast Bildirimleri
Uygulamalar, son kullanıcıya kısa bir süre sonra kaybolan kısa, modsuz dizeler göstermek için Toast API'sini, diğer uygulamaların üzerinde uyarı pencereleri göstermek için ise TYPE_APPLICATION_OVERLAY pencere türü API'sini kullanabilir.
Cihaz uygulamalarında ekran veya video çıkışı varsa:
[C-1-1] Bir uygulamanın
TYPE_APPLICATION_OVERLAYkullanarak uyarı pencereleri göstermesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR. AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu şartı karşılar.[C-1-2] Toast API'yi desteklemeli ve uygulamalardan gelen Toast'ları son kullanıcılara görünür şekilde göstermelidir.
3.8.6. Temalar
Android, uygulamaların bir Etkinlik veya uygulamanın tamamında stiller uygulaması için bir mekanizma olarak "temalar" sunar.
Android, uygulama geliştiricilerin Android SDK'da tanımlandığı şekilde Holo teması görünümüne ve tarzına uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir stil grubu olarak "Holo" ve "Material" tema ailesini içerir.
Cihaz uygulamalarında ekran veya video çıkışı varsa:
[C-1-1] Uygulamalara sunulan Holo teması özelliklerinden hiçbirini değiştirmemelidir.
[C-1-2] "Material" tema ailesini DESTEKLEMELİ ve Material tema özelliklerinden veya uygulamalara sunulan öğelerinden herhangi birini DEĞİŞTİRMEMELİDİR.
[C-1-3] Roboto'nun desteklediği dillerde "sans-serif" yazı tipi ailesini Roboto 2.x sürümü olarak ayarlamalı veya Roboto'nun desteklediği dillerde "sans-serif" yazı tipi ailesi için kullanılan yazı tipini Roboto 2.x sürümü olarak değiştirmek üzere kullanıcıya bir olanak sunmalıdır.
[C-1-4]
Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGESile ilgili AOSP belgelerinde belirtildiği şekilde dinamik renk ton paletleri OLUŞTURMALIDIR (bkz.android.theme.customization.system_paletteveandroid.theme.customization.theme_style).[C-1-5]
Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGESbelgelerinde (android.theme.customization.theme_styles) listelenen renk teması stillerini kullanarak dinamik renk tonu paletleri oluşturmalıdır. Bu stillerTONAL_SPOT,VIBRANT,EXPRESSIVE,SPRITZ,RAINBOW,FRUIT_SALADveMONOCHROMATIC'dır.android.theme.customization.system_paletteile gönderildiğinde dinamik renk ton paletleri oluşturmak için kullanılan "kaynak rengi" (Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGESiçinde belgelendiği gibi).[C-1-6]
CAM16renk doygunluğu değeri 5 veya daha büyük OLMALIDIR.com.android.systemui.monet.ColorScheme#getSeedColorsaracılığıyla duvar kağıdından türetilmelidir. Bu işlev, aralarından seçim yapabileceğiniz birden fazla geçerli kaynak rengi sağlar.Sağlanan renklerden hiçbiri yukarıdaki kaynak rengi şartını karşılamıyorsa
0xFF1B6EF3değerini KULLANMALIDIR.
Android'de ayrıca, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünüm ve tarzına uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir stil grubu olarak "Cihaz Varsayılanı" tema ailesi de bulunur.
- Cihaz uygulamaları, uygulamalara sunulan cihazın varsayılan tema özelliklerini değiştirebilir.
Android, yarı saydam sistem çubuklarına sahip bir tema varyantını destekler. Bu tema, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içerikleriyle doldurmasına olanak tanır. Bu yapılandırmada tutarlı bir geliştirici deneyimi sağlamak için durum çubuğu simge stilinin farklı cihaz uygulamalarında korunması önemlidir.
Cihaz uygulamaları sistem durumu çubuğu içeriyorsa:
[C-2-1] Simge sorunlu bir durumu belirtmediği veya bir uygulama WindowInsetsController#APPEARANCE_LIGHT_STATUS_BARS işaretini kullanarak açık renkli bir durum çubuğu istemediği sürece, sistem durumu simgeleri (ör. sinyal gücü ve pil seviyesi) ve sistem tarafından verilen bildirimler için BEYAZ renk KULLANILMALIDIR.
[C-2-2] Bir uygulama açık renkli durum çubuğu istediğinde Android cihaz uygulamaları, sistem durum simgelerinin rengini siyaha çevirmelidir (ayrıntılar için R.style'a bakın).
3.8.7. Animasyonlu Duvar Kağıtları
Android, uygulamaların son kullanıcıya bir veya daha fazla "Canlı Duvar Kağıdı" göstermesine olanak tanıyan bir bileşen türü, ilgili API ve yaşam döngüsü tanımlar. Canlı duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak gösterilen, sınırlı giriş özelliklerine sahip animasyonlar, desenler veya benzer resimlerdir.
Donanım, tüm canlı duvar kağıtlarını işlevsellik açısından herhangi bir sınırlama olmadan, diğer uygulamaları olumsuz etkilemeden makul bir kare hızında çalıştırabiliyorsa canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabildiği kabul edilir. Donanımdaki sınırlamalar nedeniyle duvar kağıtları ve/veya uygulamalar kilitleniyor, düzgün çalışmıyor, aşırı CPU veya pil gücü tüketiyor ya da kabul edilemeyecek kadar düşük kare hızlarında çalışıyorsa donanımın animasyonlu duvar kağıdı çalıştırması mümkün değildir. Örneğin, bazı canlı duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamını kullanabilir. Animasyonlu duvar kağıdı, OpenGL bağlamlarını kullanan diğer uygulamalarla çakışabileceğinden birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.
- Yukarıda açıklandığı gibi animasyonlu duvar kağıtlarını güvenilir bir şekilde çalıştırabilen cihaz uygulamaları, animasyonlu duvar kağıtlarını uygulamalıdır.
Cihaz uygulamaları animasyonlu duvar kağıtlarını destekliyorsa:
- [C-1-1] Platform özellik bayrağını bildirmelidir
android.software.live_wallpaper.
3.8.8. Etkinlikler Arasında Geçiş Yapma
Yukarı akış Android kaynak kodu, görev değiştirme ve son erişilen etkinlikleri ve görevleri uygulamanın kullanıcının uygulamadan en son ayrıldığı andaki grafik durumunun küçük resmini kullanarak görüntülemek için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi navigasyon tuşu da dahil olmak üzere cihaz uygulamaları arayüzü DEĞİŞTİREBİLİR.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi gezinme tuşunu içeren cihaz uygulamaları arayüzü değiştirirse:
[C-1-1] En az 7 görüntülenen etkinliği desteklemelidir.
Aynı anda en az 4 etkinliğin başlığını GÖSTERMELİDİR.
Son kullanılanlarda vurgu rengi, simge ve ekran başlığı GÖSTERİLMELİDİR.
Kapatma seçeneği ("x") GÖSTERİLMELİDİR ancak bu seçenek, kullanıcı ekranlarla etkileşime girene kadar GECİKTİRİLEBİLİR.
Önceki etkinliğe kolayca geçmek için bir kısayol UYGULANMALIDIR.
Son kullanılanlar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işlemini TETİKLEMELİDİR.
Destekleniyorsa son uygulamalar işlev tuşuna uzun basıldığında bölünmüş ekran çoklu pencere modu TETİKLENMELİDİR.
Bağlı son öğeleri birlikte hareket eden bir grup olarak GÖSTEREBİLİR.
[C-SR-1] Genel bakış ekranı için yukarı akış Android kullanıcı arayüzünün (veya benzer bir küçük resim tabanlı arayüzün) kullanılması ŞİDDETLE TAVSİYE EDİLİR.
3.8.9. Giriş Yönetimi
Android, Giriş Yönetimi'ni ve üçüncü taraf giriş yöntemi düzenleyicilerini destekler.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:
- [C-1-1] Platform özelliği
android.software.input_methodsbildirilmeli ve Android SDK belgelerinde tanımlandığı şekilde IME API'leri desteklenmelidir.
3.8.10. Kilit ekranında medya kontrolü
Android 5.0'dan itibaren, medya uygulamalarının kilit ekranında gösterilen oynatma kontrolleriyle entegre olmasına olanak tanıyan Medya Bildirimi Şablonu lehine Uzaktan Kumanda İstemcisi API'sinin desteği sonlandırılmıştır.
3.8.11. Ekran koruyucular (eski adıyla İlham Sahnesi)
Ekran koruyucuları yapılandırma amaçlı ayarlar için 3.2.3.5 bölümüne bakın.
3.8.12. Konum
Cihaz uygulamaları, konum koordinatlarını sağlayabilen bir donanım sensörü (ör. GPS) içeriyorsa:
[C-1-2] Ayarlar'daki Konum menüsünde konumun mevcut durumu GÖSTERİLMELİDİR.
[C-1-3] Ayarlar'daki Konum menüsünde konum modları GÖSTERİLMEMELİDİR.
3.8.13. Unicode ve Yazı Tipi
Android, Unicode 10.0'da tanımlanan emoji karakterlerini destekler.
Cihaz uygulamalarında ekran veya video çıkışı varsa:
[C-1-1] Bu emoji karakterleri renkli glif olarak oluşturabilmelidir.
[C-1-2] Şunlar için destek İÇERMELİDİR:
Cihazda kullanılabilen diller için farklı ağırlıklara sahip Roboto 2 yazı tipi (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black, sans-serif-condensed, sans-serif-condensed-light).
Latin Extended A, B, C ve D aralıkları ile Unicode 7.0'ın para birimi sembolleri bloğundaki tüm glifler dahil olmak üzere Latin, Yunan ve Kiril alfabelerinin Unicode 7.0'daki tüm karakterleri.
[C-1-3] Sistem görüntüsündeki
NotoColorEmoji.tffkaldırılmamalı veya değiştirilmemelidir. (NotoColorEmoji.tffiçindeki emojileri geçersiz kılmak için yeni bir emoji yazı tipi eklemek kabul edilebilir.)Unicode Teknik Raporu #51'de belirtildiği gibi cilt tonunu ve çeşitli aile emoji'lerini DESTEKLEMELİDİR.
Cihaz uygulamaları bir IME içeriyorsa:
- Bu emoji karakterleri için kullanıcıya bir giriş yöntemi SAĞLAMALIDIR.
Android, Myanmar yazı tiplerinin oluşturulmasını destekler. Myanmar'da Myanmar dillerini oluşturmak için "Zawgyi" olarak bilinen, Unicode'a uygun olmayan çeşitli yazı tipleri vardır.
Cihaz uygulamaları Burmaca desteği içeriyorsa:
[C-2-1] Metin, varsayılan olarak Unicode uyumlu bir yazı tipiyle oluşturulmalıdır; Unicode uyumlu olmayan yazı tipi, kullanıcı dil seçicide bu yazı tipini seçmediği sürece varsayılan yazı tipi olarak ayarlanmamalıdır.
[C-2-2] Cihazda Unicode uyumlu olmayan bir yazı tipi destekleniyorsa Unicode yazı tipi ve Unicode uyumlu olmayan bir yazı tipi DESTEKLENMELİDİR. Unicode uyumlu olmayan yazı tipi, Unicode yazı tipini kaldırmamalı veya üzerine yazmamalıdır.
[C-2-3] YALNIZCA Qaag komut dosyası koduna sahip bir dil kodu (ör. my-Qaag) belirtilmişse metin, Unicode uyumlu olmayan bir yazı tipiyle oluşturulmalıdır. Myanmar için Unicode uyumlu olmayan yazı tipine atıfta bulunmak üzere başka ISO dil veya bölge kodları (atanmış, atanmamış ya da ayrılmış olsun) kullanılamaz. Uygulama geliştiriciler ve web sayfası yazarları, diğer dillerde olduğu gibi my-Qaag'ı belirlenmiş dil kodu olarak belirtebilir.
3.8.14. Çoklu pencereler
Cihaz uygulamaları aynı anda birden fazla etkinliği gösterebiliyorsa:
[C-1-1] Bu tür çoklu pencere modlarını, Android SDK çoklu pencere modu destek belgelerinde açıklanan uygulama davranışlarına ve API'lerine uygun şekilde uygulamalı ve aşağıdaki koşulları karşılamalıdır:
[C-1-2] Android 16'da bu şart kaldırıldı.
[C-1-3] Ekran yüksekliği 440 dp'den az ve ekran genişliği 440 dp'den azsa bölünmüş ekran veya serbest biçim modu SUNULMAMALIDIR.
[C-1-4] Etkinlik, resim içinde resim dışındaki çok pencereli modlarda 220 dp'den küçük bir boyuta yeniden boyutlandırılMAMALIDIR.
- [C-1-5]
selfMovableözelliğine sahip görevler, ayırt edilebilir kalıcı bir süslemeyle (ör. başlık çubuğu) ve bu tür görevleri kalıcı süslemelerinden kapatma yöntemiyle birlikte tam opaklıkta GÖSTERİLMELİDİR.
- Ekran boyutu
xlargeolan cihaz uygulamaları, serbest biçim modunu DESTEKLEMELİDİR.
Cihaz uygulamaları çoklu pencere modlarını ve bölünmüş ekran modunu destekliyorsa:
[C-2-2] Başlatıcı uygulaması odaklanılan pencereyse bölünmüş ekranlı çoklu pencerenin yerleştirilmiş etkinliği KESİLMELİ ancak bir miktar içeriği GÖSTERİLMELİDİR.
[C-2-3] Üçüncü taraf başlatıcı uygulamasının beyan edilen
AndroidManifestLayout_minWidthveAndroidManifestLayout_minHeightdeğerlerine UYULMALI ve yerleştirilmiş etkinliğin bazı içerikleri gösterilirken bu değerler geçersiz kılınmamalıdır.
Cihaz uygulamaları çoklu pencere modlarını ve pencere içinde pencere çoklu pencere modunu destekliyorsa:
[C-3-1] Uygulama şu durumlarda etkinlikleri pencere içinde pencere çoklu pencere modunda BAŞLATMALIDIR:
API düzeyi
26veya üstünü hedefleyen veandroid:supportsPictureInPicturebeyan eden uygulamalarAPI düzeyi
25veya daha düşük bir sürümü hedefleyen ve hemandroid:resizeableActivityhem deandroid:supportsPictureInPictureizinlerini bildiren uygulamalar.
[C-3-2]
setActions()API'si aracılığıyla, geçerli PIP etkinliğinde belirtildiği şekilde SystemUI'deki işlemleri kullanıma sunmalıdır.[C-3-3]
setAspectRatio()API'si aracılığıyla PIP etkinliğinde belirtildiği gibi, 1:2,39'a eşit veya daha büyük ve 2,39:1'e eşit veya daha küçük en-boy oranlarını DESTEKLEMELİDİR.[C-3-4] PIP penceresini kontrol etmek için
KeyEvent.KEYCODE_WINDOWkullanılmalıdır. PIP modu uygulanmamışsa tuş, ön plandaki etkinlik için kullanılabilir olmalıdır.[C-3-5] Bir uygulamanın PIP modunda görüntülenmesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR. AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu şartı karşılar.
[C-3-6] Bir uygulama
AndroidManifestLayout_minWidthveAndroidManifestLayout_minHeightiçin herhangi bir değer belirtmediğinde PIP penceresi için aşağıdaki minimum genişlik ve yükseklik ayrılmalıdır:Configuration.uiModedeğeriUI_MODE_TYPE_TELEVISIONdışında bir değere ayarlanmış cihazlar en az 108 dp genişlik ve yükseklik ayırmalıdır.Configuration.uiModedeğeriUI_MODE_TYPE_TELEVISIONolarak ayarlanmış cihazlar, minimum 240 dp genişlik ve minimum 135 dp yükseklik ayırmalıdır.
Cihaz uygulamaları birden fazla Android ile uyumlu ekran alanı içeriyorsa ve bu alanları uygulamaların kullanımına sunuyorsa:
- [C-4-1] Çoklu pencere modu DESTEKLENMELİDİR.
Cihaz uygulamaları çoklu pencere modlarını destekliyorsa:
- [C-5-1]
WindowManagerUzantılar bölümünde açıklandığı şekilde, Pencere Yöneticisi Uzantıları'nın doğru sürümünü uygulamalıdır. API düzeyi olarak.
3.8.15. Ekran Kesimi
Android, SDK dokümanında açıklandığı gibi ekran kesimini destekler. DisplayCutout
API, ekranın kenarında bir alanı tanımlar. Bu alan, ekran kesimi veya kenarlardaki kavisli ekran nedeniyle bir uygulama için işlevsel olmayabilir.
Cihaz uygulamaları ekran kesikleri içeriyorsa:
[C-1-5] Cihazın en boy oranı 1,0 (1:1) ise kesik olmamalıdır.
[C-1-2] Kenar başına birden fazla kesik olmamalıdır.
[C-1-3] SDK'da açıklandığı gibi, uygulama tarafından
WindowManager.LayoutParamsAPI'si aracılığıyla ayarlanan ekran kesme işaretlerine UYMALIDIR.[C-1-4]
DisplayCutoutAPI'sinde tanımlanan tüm kesme metrikleri için doğru değerler RAPORLANMALIDIR.
3.8.16. Cihaz Denetimleri
Android, üçüncü taraf uygulamaların kullanıcılar için hızlı durum ve işlem amacıyla cihaz kontrolleri yayınlamasına olanak tanıyan ControlsProviderService ve Control API'lerini içerir.
Cihaza özgü şartlar için Bölüm 2_2_3'e bakın.
3.8.17. Pano
Cihaz uygulamaları:
- [C-0-1] 9.8.6 İçerik Yakalama ve Uygulama Arama bölümünde belirtilen hizmetler hariç olmak üzere, kullanıcı açıkça işlem yapmadan (ör. yer paylaşımında bir düğmeye basma) veya gönderilen içeriğin belirtilmesi olmadan, pano verilerini herhangi bir bileşene, etkinliğe, hizmete ya da herhangi bir ağ bağlantısı üzerinden göndermemelidir.
Cihaz uygulamaları, ClipData öğesi için içerik panoya kopyalandığında kullanıcı tarafından görülebilen bir önizleme oluşturuyorsa (ClipData.getDescription().getExtras(), android.content.extra.IS_SENSITIVE içeriyorsa):
- [C-1-1] Kullanıcı tarafından görülebilen önizleme mutlaka karartılmalıdır.
AOSP referans uygulaması, bu pano şartlarını karşılar.
3.8.18. Konum Düğmesi
Konum düğmesi, uygulama geliştiricilerin uygulamalarına yerleştirebileceği bir Android kullanıcı arayüzü öğesidir. Bu düğme, uygulamanın oturumu için tam konum izni verilmesini sağlar.
Cihaz uygulamaları:
- [C-0-1] Uygulama geliştiricilere konum düğmesi için sunulan özelleştirme seçenekleri eklenmemeli, değiştirilmemeli veya kaldırılmamalıdır.
3.9. Cihaz Yönetimi
Android, cihaz politikası denetleyici uygulamalarının Device Policy Manager API'leri aracılığıyla sistem düzeyinde cihaz yönetimi işlevlerini (ör. şifre politikalarını zorunlu kılma veya uzaktan silme) gerçekleştirmesini sağlayan özellikler içerir.
3.9.1. Cihaz Temel Hazırlığı
3.9.1.1. Cihaz sahibi temel hazırlığı
Cihaz uygulamaları android.software.device_admin değerini bildiriyorsa:
[C-1-1] Aşağıda açıklandığı şekilde bir Cihaz Politikası Denetleyicisi'nin (DPC) Cihaz Sahibi uygulaması olarak kaydedilmesini DESTEKLEMELİDİR:
Cihaz uygulamasında kullanıcılar veya kullanıcı verileri yapılandırılmamışsa:
[C-1-5] Cihaz,
android.hardware.nfcözellik bayrağı aracılığıyla Near Field Communication (NFC) desteği sunduğunu bildiriyorsa veMIME_TYPE_PROVISIONING_NFCMIME türüne sahip bir kayıt içeren bir NFC mesajı alıyorsa DPC uygulamasını Cihaz Sahibi uygulaması olarak kaydetmeli veya DPC uygulamasının Cihaz Sahibi ya da Profil Sahibi olup olmayacağını seçmesine izin vermelidir.[C-1-8] Yalnızca tek bir geçerli seçenek olduğu bağlamdan belirlenemediği sürece, cihaz sahibi hazırlama işlemi tetiklendikten sonra ACTION_GET_PROVISIONING_MODE intent'i göndermelidir. Böylece DPC uygulaması,
android.app.extra.PROVISIONING_ALLOWED_PROVISIONING_MODESdeğerlerine bağlı olarak cihaz sahibi mi yoksa profil sahibi mi olacağına karar verebilir.[C-1-9] Sağlama sırasında bir Cihaz Sahibi oluşturulursa kullanılan sağlama yönteminden bağımsız olarak Cihaz Sahibi uygulamasına ACTION_ADMIN_POLICY_COMPLIANCE amacını göndermelidir. Kullanıcı, Cihaz Sahibi uygulaması tamamlanana kadar Kurulum Sihirbazı'nda ilerleyememelidir.
Cihaz uygulamasında kullanıcılar veya kullanıcı verileri varsa:
- [C-1-7] Artık hiçbir DPC uygulamasını Cihaz Sahibi Uygulaması olarak kaydetmemelidir.
[C-1-2] Android 15'te bu şart kaldırıldı.
[C-2-1] Android 15'te bu şart kaldırıldı.
[C-2-2] Android 15'te şart kaldırıldı.
[C-2-3] Android 15'te şart kaldırıldı.
3.9.1.2. Yönetilen profil temel hazırlığı
Cihaz uygulamaları android.software.managed_users değerini bildiriyorsa:
[C-1-1] ZORUNLU
android.software.device_adminve bir cihaz politikası denetleyici (DPC) uygulamasının API'lerini yeni bir yönetilen profilin sahibi olmasına izin verecek şekilde bildirmeli ve uygulamalıdır.[C-1-2] Android 16'da bu şart kaldırıldı.
[C-1-3] Bir sistem işlevi Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığında kullanıcıya bildirmek için Ayarlar'da aşağıdaki kullanıcı kolaylıkları SAĞLANMALIDIR:
- Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya başka bir kullanıcı olanağı (ör. yukarı akış AOSP bilgi simgesi).
- Cihaz yöneticisi tarafından
setShortSupportMessagearacılığıyla sağlanan kısa açıklama mesajı. - DPC uygulamasının simgesi.
[C-1-4] android.app.action.PROVISION_MANAGED_PROFILE intent'i tarafından sağlama başlatıldığında ve DPC işleyiciyi uyguladığında bir profil sahibi oluşturulursa ACTION_PROVISIONING_SUCCESSFUL intent'i için işleyiciyi iş profilinde BAŞLATMALIDIR.
[C-1-5] MUST send ACTION_PROFILE_PROVISIONING_COMPLETE broadcast to the work profile DPC when provisioning is initiated by the android.app.action.PROVISION_MANAGED_PROFILE intent.
[C-1-6] MUST send the ACTION_GET_PROVISIONING_MODE intent after profile owner provisioning is triggered so that the DPC app can choose whether to become a Device Owner or a Profile Owner except when provisioning is triggered by the intent android.app.action.PROVISION_MANAGED_PROFILE.
[C-1-7] android.app.action.PROVISION_MANAGED_PROFILE amaçlı hazırlama işlemi tetiklenmediği sürece, hazırlama sırasında bir profil sahibi oluşturulduğunda, hangi hazırlama yöntemi kullanılırsa kullanılsın ACTION_ADMIN_POLICY_COMPLIANCE amacını iş profiline göndermelidir. Kullanıcı, Profil Sahibi uygulaması tamamlanana kadar Kurulum Sihirbazı'nda ilerleyememelidir.
[C-1-8] Bir profil sahibi oluşturulduğunda, kullanılan hazırlama yönteminden bağımsız olarak kişisel profil DPC'sine ACTION_MANAGED_PROFILE_PROVISIONED yayınını GÖNDERMELİDİR.
3.9.2. Yönetilen Profil Desteği
Cihaz uygulamaları android.software.managed_users değerini bildiriyorsa:
[C-1-1]
android.app.admin.DevicePolicyManagerAPI'leri aracılığıyla yönetilen profilleri DESTEKLEMELİDİR.[C-1-2] Yalnızca bir yönetilen profilin oluşturulmasına İZİN VERİLMELİDİR.
[C-1-3] Yönetilen uygulamaları, widget'ları ve "Son Kullanılanlar ve Bildirimler" gibi diğer rozetli kullanıcı arayüzü öğelerini temsil etmek için rozet simgesi (AOSP'deki upstream iş rozetine benzer) KULLANILMALIDIR.
[C-1-4] Kullanıcının yönetilen profil uygulamasında olduğunu belirtmek için bildirim simgesi (AOSP yukarı akış çalışmasına benzer) GÖSTERİLMELİDİR.
[C-1-5] Cihaz uyandığında (
ACTION_USER_PRESENT) ve ön plandaki uygulama yönetilen profilin içindeyken kullanıcıya yönetilen profilde olduğunu belirten bir kısa ileti GÖSTERİLMELİDİR.[C-1-6] Yönetilen profil varsa Cihaz Politikası Denetleyicisi tarafından etkinleştirilmişse kullanıcının yönetilen profildeki amacı birincil kullanıcıya veya tam tersi yönde iletmesine olanak tanımak için Amaç "Seçici"de görsel bir kolaylık GÖSTERİLMELİDİR.
[C-1-7] Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı işlevleri SUNULMALIDIR:
- Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması.
- Birincil kullanıcı veya yönetilen profile yüklenen VPN uygulamalarının bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profil içinde yüklü uygulamaların bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profildeki hesapların bağımsız yönetimi.
[C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş çevirici, kişiler ve mesajlaşma uygulamalarının, yönetilen profildeki (varsa) arayan bilgilerini birincil profildeki bilgilerle birlikte arayabilmesini ve bulabilmesini SAĞLAMALIDIR.
[C-1-9] Yönetilen profil, birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa da birden fazla kullanıcının etkin olduğu bir cihaz için geçerli olan tüm güvenlik şartlarını karşıladığından EMİN OLMALIDIR (9.5 bölümüne bakın).
[C-1-10]
topActivitypenceresiyle ekran görüntüsü alındığında, ekran görüntüsü verilerinin iş profili depolama alanına kaydedildiğinden EMİN OLUNMALIDIR. Bu pencere, odaklanmış (kullanıcının tüm etkinlikler arasında en son etkileşimde bulunduğu) ve iş profili uygulamasına ait bir penceredir.[C-1-11] İş profiline ekran görüntüsü kaydedilirken iş profili uygulaması penceresi/pencereleri dışında başka bir ekran içeriği (sistem çubuğu, bildirimler veya kişisel profil içeriği) yakalanMAMALIDIR (kişisel profil verilerinin iş profiline kaydedilmemesi için).
Cihaz uygulamaları android.software.managed_users ve android.software.secure_lock_screen değerlerini bildiriyorsa:
[C-2-1] Yalnızca yönetilen profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı toplantısı belirtme özelliğini DESTEKLEMELİDİR.
Cihaz uygulamaları,
DevicePolicyManager.ACTION_SET_NEW_PASSWORDamacına uymalı ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırma arayüzü göstermelidir.Yönetilen profilin kilit ekranı kimlik bilgileri, Android Açık Kaynak Projesi Sitesi'nde belgelendiği gibi, üst profil ile aynı kimlik bilgisi depolama ve yönetim mekanizmalarını KULLANMALIDIR.
DPC şifre politikaları,
getParentProfileInstancetarafından döndürülenDevicePolicyManagerörneği çağrılmadığı sürece YALNIZCA yönetilen profilin kilit ekranı kimlik bilgilerine uygulanmalıdır.
Yönetilen profildeki kişiler, önceden yüklenmiş arama günlüğünde, görüşme içi kullanıcı arayüzünde, devam eden ve cevapsız arama bildirimlerinde, kişiler ve mesajlaşma uygulamalarında gösterildiğinde, yönetilen profil uygulamalarını belirtmek için kullanılan rozetle aynı rozetle işaretlenmelidir.
3.9.3. Yönetilen Kullanıcı Desteği
Cihaz uygulamaları android.software.managed_users değerini bildiriyorsa:
- [C-1-1]
isLogoutEnableddöndüğünde çok kullanıcılı oturumda mevcut kullanıcıdan çıkış yapıp birincil kullanıcıya geri dönmek için kullanıcıya bir olanak SAĞLANMALIDIR.trueKullanıcı arayüzü, cihazın kilidi açılmadan kilit ekranından erişilebilir OLMALIDIR.
Cihaz uygulamaları android.software.device_admin özelliğini tanımlıyorsa ve ek ikincil kullanıcılar eklemek için cihaz üzerinde kullanıcıya yönelik bir kolaylık sağlıyorsa:
- [C-SR-1] STRONGLY RECOMMENDED show the same AOSP Device Owner consent disclosures that were shown in the flow initiated by android.app.action.PROVISION_MANAGED_DEVICE, prior to allowing accounts to be added in the new secondary User, so users understand that the device is managed.
3.9.4. Cihaz Politikası Yönetimi Rolü Gereksinimleri
Cihaz uygulamaları android.software.device_admin değerini bildiriyorsa:
- [C-1-1] Bölüm 9.1'de tanımlandığı şekilde cihaz politikası yönetimi rolünü DESTEKLEMELİDİR. Cihaz politikası yönetimi rolünü üstlenen uygulama,
config_devicePolicyManagementpaket adı olarak ayarlanarak tanımlanabilir. Uygulama önceden yüklenmediyse paket adından SONRA iki nokta üst üste (:) ve imza sertifikası GELMELİDİR.
config_devicePolicyManagement için yukarıda açıklandığı gibi bir paket adı tanımlanmamışsa:
- [C-2-1] Cihaz uygulamaları, cihaz politikası yönetim rolü sahibi uygulaması olmadan temel hazırlığı desteklemelidir (AOSP, referans uygulama sağlar).
config_devicePolicyManagement için yukarıda açıklandığı gibi bir paket adı tanımlanmışsa:
[C-3-1] Uygulama, bir kullanıcının tüm profillerine YÜKLENMELİDİR.
[C-3-2] Cihaz uygulamaları,
config_devicePolicyManagementUpdaterayarlanarak cihaz politikası yönetim rolü sahibini sağlama işleminden önce güncelleyen bir uygulama tanımlayabilir.
config_devicePolicyManagementUpdater için yukarıda açıklandığı gibi bir paket adı tanımlanmışsa:
[C-4-1] Uygulama cihaza önceden yüklenmiş OLMALIDIR.
[C-4-2] Uygulama,
android.app.action.UPDATE_DEVICE_POLICY_MANAGEMENT_ROLE_HOLDERöğesini çözümleyen bir intent filtresi uygulamalıdır.
3.9.5. Cihaz Politikası Çözüm Çerçevesi
Cihaz uygulamaları android.software.device_admin değerini bildiriyorsa:
- [C-1-1] Device Policy Resolution Framework'te (Cihaz Politikası Çözüm Çerçevesi) belirtildiği şekilde cihaz politikası çakışmalarını ÇÖZMELİDİR.
3.10. Erişilebilirlik
Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sağlar. Ayrıca Android, erişilebilirlik hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma almasını ve metin okuma, dokunsal geribildirim ve trackball/d-pad navigasyonu gibi alternatif geri bildirim mekanizmaları oluşturmasını sağlayan platform API'leri sunar.
Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-1-1] Erişilebilirlik API'leri SDK dokümanında açıklandığı gibi Android erişilebilirlik çerçevesinin bir uygulamasını SAĞLAMALIDIR.
- [C-1-2] MUST generate accessibility events and deliver the appropriate
AccessibilityEventto all registeredAccessibilityServiceimplementations as documented in the SDK. - [C-1-4] AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON'ı bildiren erişilebilirlik hizmetlerini kontrol etmek için kullanıcıya bir olanak SUNULMALIDIR. Sistem gezinme çubuğu olan cihaz uygulamalarında, kullanıcının bu hizmetleri kontrol etmek için sistemin gezinme çubuğunda bir düğme seçeneği olmasına İZİN VERİLMELİDİR.
Cihaz uygulamaları önceden yüklenmiş erişilebilirlik hizmetleri içeriyorsa:
- [C-2-1] Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde bu önceden yüklenmiş erişilebilirlik hizmetleri Doğrudan Başlatma Moduna Uygun uygulamalar olarak uygulanmalıdır.
- Kullanıcılara ilgili erişilebilirlik hizmetlerini etkinleştirmeleri için kutudan çıkarma kurulum akışında bir mekanizma SUNULMALIDIR. Ayrıca, yazı tipi boyutunu, görüntü boyutunu ve büyütme hareketlerini ayarlama seçenekleri de SUNULMALIDIR.
3.11. Metin Okuma
Android, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına olanak tanıyan API'ler içerir ve hizmet sağlayıcıların TTS hizmetlerinin uygulamalarını sağlamasına izin verir.
android.hardware.audio.output özelliğini bildiren cihaz uygulamaları:
- [C-1-1] Android TTS çerçevesi API'lerini DESTEKLEMELİDİR.
Cihaz uygulamaları, üçüncü taraf TTS motorlarının yüklenmesini destekliyorsa:
- [C-2-1] Kullanıcının sistem düzeyinde kullanılacak bir TTS motoru seçmesine olanak tanıyan kullanıcı arayüzü SAĞLANMALIDIR.
3.12. Yok
3.13. Hızlı Ayarlar
Android, sık kullanılan veya acilen ihtiyaç duyulan işlemlere hızlı erişim sağlayan bir Hızlı Ayarlar kullanıcı arayüzü bileşeni sunar.
Cihaz uygulamaları, Hızlı Ayarlar kullanıcı arayüzü bileşeni içeriyorsa ve üçüncü taraf Hızlı Ayarlar'ı destekliyorsa:
- [C-1-1] Kullanıcının,
quicksettingsAPI'leri aracılığıyla sağlanan kutucukları üçüncü taraf uygulamasına eklemesine veya üçüncü taraf uygulamasından kaldırmasına İZİN VERİLMELİDİR. - [C-1-2] Üçüncü taraf uygulamalarından alınan kutular, Hızlı Ayarlar'a doğrudan otomatik olarak eklenMEMELİDİR.
- [C-1-3] Sistem tarafından sağlanan hızlı ayar kutucuklarının yanı sıra üçüncü taraf uygulamalarından kullanıcı tarafından eklenen tüm kutucuklar GÖSTERİLMELİDİR.
3.14. Medya kullanıcı arayüzü
Cihaz uygulamaları, MediaBrowser veya MediaSession aracılığıyla üçüncü taraf uygulamalarıyla etkileşime giren, sesle etkinleştirilmeyen uygulamalar (Uygulamalar) içeriyorsa Uygulamalar:
[C-1-2]
MediaDescription'da açıklandığı şekilde,getIconBitmap()veyagetIconUri()aracılığıyla alınan simgeler vegetTitle()aracılığıyla alınan başlıklar NET BİR ŞEKİLDE gösterilmelidir. Güvenlik düzenlemelerine (ör. sürücünün dikkatinin dağılması) uymak için başlıkları kısaltabilir.[C-1-3] Bu üçüncü taraf uygulaması tarafından sağlanan içerik gösterilirken üçüncü taraf uygulama simgesi GÖSTERİLMELİDİR.
[C-1-4] Kullanıcının
MediaBrowserhiyerarşisinin tamamıyla etkileşim kurmasına İZİN VERİLMELİDİR. Güvenlik düzenlemelerine (ör. sürücünün dikkatinin dağılması) uymak için hiyerarşinin bir kısmına erişimi KISITLAYABİLİR ancak içeriğe veya içerik sağlayıcıya göre ayrıcalıklı muamele YAPMAMALIDIR.[C-1-5]
KEYCODE_HEADSETHOOKveyaKEYCODE_MEDIA_PLAY_PAUSEöğesine iki kez dokunma,MediaSession.Callback#onMediaButtonEventiçinKEYCODE_MEDIA_NEXTolarak değerlendirilmelidir.
3.15. Hazır Uygulamalar
Cihaz uygulamaları Anında Uygulamalar'ı destekliyorsa AŞAĞIDAKİ koşulları karşılamalıdır:
- [C-1-1] Anlık Uygulamalara YALNIZCA
"instant"olarak ayarlanmışandroid:protectionLevelizinleri verilmelidir. - [C-1-2] Hazır uygulamalar, aşağıdakilerden biri geçerli OLMADIĞI SÜRECE örtülü amaçlar aracılığıyla yüklü uygulamalarla etkileşimde BULUNMAMALIDIR:
- Bileşenin intent modeli filtresi kullanıma sunulur ve CATEGORY_BROWSABLE içerir.
- İşlem, ACTION_SEND, ACTION_SENDTO veya ACTION_SEND_MULTIPLE işlemlerinden biridir.
- Hedef, android:visibleToInstantApps ile açıkça gösteriliyor.
- [C-1-3] Hazır uygulamalar, bileşen android:visibleToInstantApps aracılığıyla kullanıma sunulmadığı sürece yüklü uygulamalarla açıkça etkileşimde BULUNMAMALIDIR.
- [C-1-4] Yüklü uygulamalar, hazır uygulama yüklü uygulamaya açıkça bağlanmadığı sürece cihazdaki hazır uygulamalarla ilgili ayrıntıları görmemelidir.
Cihaz uygulamaları, hazır uygulamalarla etkileşim için aşağıdaki kullanıcı kolaylıklarını SAĞLAMALIDIR. AOSP, varsayılan Sistem Kullanıcı Arayüzü, Ayarlar ve Başlatıcı ile gereksinimleri karşılar. Cihaz uygulamaları:
- [C-1-5] Her bir uygulama paketi için yerel olarak önbelleğe alınan anlık uygulamaları görüntüleme ve silme olanağı SUNULMALIDIR.
- [C-1-6] Hazır uygulama ön planda çalışırken daraltılabilen kalıcı bir kullanıcı bildirimi SAĞLANMALIDIR. Bu kullanıcı bildirimi, hazır uygulamaların yüklenmesinin gerekmediğini İÇERMELİ ve kullanıcıyı Ayarlar'daki uygulama bilgileri ekranına yönlendiren bir kullanıcı olanağı sağlamalıdır. Web amaçları aracılığıyla başlatılan anlık uygulamalar için (işlemi
Intent.ACTION_VIEWolarak ayarlanmış ve "http" veya "https" şemasına sahip bir amaç kullanılarak tanımlandığı şekilde) ek bir kullanıcı olanağı, kullanıcının anlık uygulamayı başlatmamasına ve cihazda tarayıcı varsa yapılandırılmış web tarayıcısıyla ilişkili bağlantıyı başlatmasına İZİN VERMELİDİR. - [C-1-7] Cihazda Son Kullanılanlar işlevi varsa Son Kullanılanlar işlevinden Instant Apps'e erişilmesine İZİN VERİLMELİDİR.
[C-1-8] SDK'da burada listelenen amaçlar için bir veya daha fazla uygulamayı ya da hizmet bileşenini amaç işleyiciyle önceden yüklemeli ve amaçları Anında Uygulamalar için görünür hale getirmelidir.
3.16. Yardımcı Cihaz Eşleme
Android, ikincil cihazlarla ilişkilendirmeyi daha etkili bir şekilde yönetmek için ikincil cihaz eşleştirme desteği içerir ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager API'sini sağlar.
Cihaz uygulamaları, yardımcı cihaz eşleştirme özelliğini destekliyorsa:
[C-1-1] Özellik bayrağı
FEATURE_COMPANION_DEVICE_SETUPBEYAN EDİLMELİDİR.[C-1-2]
android.companionpaketindeki API'lerin tam olarak uygulandığından EMİN OLMALIDIR.[C-1-3] Kullanıcının, eşlik eden bir cihazın mevcut ve çalışır durumda olduğunu seçmesi/onaylaması için kullanıcıya olanaklar SUNULMALIDIR. Bu olanaklar, AOSP'de uygulanan mesajın aynısını ekleme veya değiştirme olmadan KULLANMALIDIR.
3:17. Ağır Sıklet Uygulamalar
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE özelliğini beyan ediyorsa:
- [C-1-1] Sistemde aynı anda
cantSaveStateçalıştıran yalnızca bir yüklü uygulama OLMALIDIR. Kullanıcı, bu tür bir uygulamadan açıkça çıkmadan ayrılırsa (örneğin, sistemde etkin bir etkinlikten ayrılırken geri düğmesine basmak yerine ana sayfa düğmesine basarsa ve sistemde etkin etkinlik kalmazsa) cihaz uygulamaları, ön plan hizmetleri gibi çalışmaya devam etmesi beklenen diğer öğelerde olduğu gibi bu uygulamaya RAM'de öncelik VERMELİDİR. Bu tür bir uygulama arka plandayken sistem, CPU ve ağ erişimini sınırlama gibi güç yönetimi özelliklerini uygulamaya devam edebilir. - [C-1-2] Kullanıcı,
cantSaveStateözelliğiyle beyan edilen ikinci bir uygulamayı başlattığında normal durum kaydetme/geri yükleme mekanizmasına katılmayacak uygulamayı seçmek için bir kullanıcı arayüzü olanağı SAĞLANMALIDIR. - [C-1-3]
cantSaveStatebelirten uygulamalara, CPU performansını değiştirme veya planlama önceliğini değiştirme gibi başka politika değişiklikleri UYGULANMAMALIDIR.
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE özelliğini bildirmiyorsa:
[C-1-1] Uygulamalar tarafından ayarlanan
cantSaveStateözelliğini YOK SAYMALI ve uygulama davranışını bu özelliğe göre DEĞİŞTİRMEMELİDİR.
3.18. Kişiler
Android'de
Contacts Provider
uygulamaların cihazda depolanan kişi bilgilerini yönetmesine olanak tanıyan API'ler bulunur.
Doğrudan cihaza girilen kişi verileri genellikle bir web hizmetiyle senkronize edilir ancak veriler yalnızca cihazda yerel olarak da bulunabilir.
Yalnızca cihazda depolanan kişilere yerel kişiler denir.
RawContacts, ham kişiler için ACCOUNT_NAME ve ACCOUNT_TYPE sütunları, hesabın ilgili Account.name ve Account.type alanlarıyla eşleştiğinde bir Account ile "ilişkilendirilir" veya "bu hesapta depolanır".
Varsayılan yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir hesapla ilişkilendirilmeyen, ACCOUNT_NAME ve ACCOUNT_TYPE sütunları için null değerleriyle oluşturulan, işlenmemiş kişilerin hesabı.
Özel yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir hesapla ilişkilendirilmeyen, ACCOUNT_NAME ve ACCOUNT_TYPE sütunları için boş olmayan değerlerle oluşturulan ham kişiler için bir hesap.
Cihaz uygulamaları:
- [C-SR-1] Özel yerel hesaplar oluşturulmaması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları özel bir yerel hesap kullanıyorsa:
[C-1-1]
ACCOUNT_NAME, özel yerel hesabınContactsContract.RawContacts.getLocalAccountNametarafından döndürülmelidir.[C-1-2]
ACCOUNT_TYPE, özel yerel hesapContactsContract.RawContacts.getLocalAccountTypetarafından döndürülmelidir.[C-1-3] Bir hesap belirtilmeden üçüncü taraf uygulamaları tarafından eklenen ham kişiler, cihazın varsayılan kişi hesabına eklenmelidir. Varsayılan kişi hesabı
DEFAULT_ACCOUNT_STATE_LOCALveyaDEFAULT_ACCOUNT_STATE_NOT_SETise bu ham kişiler ÖZEL yerel hesapta saklanmalıdır.[C-1-4] Özel yerel hesaba eklenen ham kişiler, hesaplar eklendiğinde veya kaldırıldığında KALDIRILMAMALIDIR.
[C-1-5] Özel yerel hesap üzerinde gerçekleştirilen silme işlemleri,
CALLER_IS_SYNCADAPTERparametresi false olarak ayarlanmış veya belirtilmemiş olsa bile, ham kişilerin hemen temizlenmesiyle (CALLER_IS_SYNCADAPTERparametresi true olarak ayarlanmış gibi) sonuçlanmalıdır.
SIM hesabı: Cihaza takılan bir veya daha fazla fiziksel SIM karttan yansıtılan ve AccountManager'daki bir hesapla ilişkilendirilmeyen ham kişiler için kullanılan hesaplar.
Cihaz uygulamaları:
Cihaz uygulamaları SIM hesabı kullanıyorsa:
- [C-1-6] SIM hesapları
ContactsContract.SimContacts.getSimAccountstarihine kadar iade EDİLMELİDİR.
3.18.2. Sistem Kişi Seçici
Android, uygulamaların geniş erişim izinleri gerektirmeden sınırlı iletişim bilgilerine erişmesine olanak tanıyan bir sistem kişileri seçiciyi destekler.
Cihaz uygulamaları Android kişilerini destekliyorsa:
[C-1-1] API düzeyi 37 veya üstünü hedefleyen uygulamalar için Sistem Kişi Seçici (
com.android.contactspicker) uygulanmalıdır.[C-1-2]
Intent.ACTION_PICK_CONTACTSamacını uygulamalıdır.
3.19. Dil Ayarları
Cihaz uygulamaları:
[C-0-1] Cinsiyete özgü çevirileri desteklemeyen dillerde cinsiyete özgü dil kullanımını seçmek için kullanıcıya herhangi bir olanak SUNMAMALIDIR. Daha fazla bilgi için dil bilgisi kaynaklarına bakın.
3.20. Asistan tabanlı deneyimler
Android asistan geliştirme çerçevesi, Android uygulamalarının sesli kontrolünü sağlar. Kullanıcılar, Asistan'ı kullanarak sesleriyle uygulamaları başlatabilir, görevleri gerçekleştirebilir, içeriklere erişebilir ve daha birçok işlem yapabilir.
Bu bölüm için özel cihaz uygulamalarıyla ilgili aşağıdaki sınıflandırmalara bakın:
Sabit ses seviyesi: Sabit ses seviyeli cihazlar, ses seviyesi kontrollerine sahip olsa da uygulamaların standart
AudioManageryöntemleri (ör. Android Automotive OS arabalar) kullanarak ses akışı seviyesini değiştirmesini engelleyen cihazlardır.Tam ses: Tam sesli cihaz, ses seviyesi tam ve zayıflatılmamış bir seviyede kilitlenmiş olan ve yazılım kontrolünün engellendiği cihazdır (ör. harici hoparlörlü bir TV).
Tek ses: Tek sesli cihaz, tüm ses akışlarını tek bir ses akışına eşleyen ve ses ayarlamalarının tüm ses akışlarını eşit şekilde etkilemesine neden olan cihazdır (ör. TV).
3.20.1. Asistan Ses Yayını şartları
MANAGE_ASSISTANT_AUDIO iznine sahip bir uygulama:
- [C-0-1]
STREAM_ASSISTANTses düzeyinin programatik olarak değiştirilmesine İZİN VERİLMELİDİR.
Cihaz uygulamaları android.hardware.type.watch değerini bildirmezse ve sabit sesli, tek sesli veya tam sesli değilse:
[C-1-1]
STREAM_ASSISTANT, ayrılmış bir ses akışı olarak uygulanmalı ve başka bir akışla takma adlandırılmamalıdır.[C-1-2]
USAGE_ASSISTANTileAudioAttributeskullanılarak yapılan ses çalmanın, çalma sesininSTREAM_ASSISTANTtarafından kontrol EDİLMESİ GEREKİR.[C-1-3] Belirli bir Bluetooth kulaklık için, kulaklık A2DP ve HFP ses profilleri arasında geçiş yaptığında
STREAM_ASSISTANTses dizininin aynı kalmasını SAĞLAMALIDIR.[C-1-4]
MODE_ASSISTANT_CONVERSATIONetkin durumdaykenSTREAM_ASSISTANTdışındaki akışlarınSTREAM_ASSISTANTsesini veyaUSAGE_ASSISTANToynatmaya uygulanan zayıflatmayı değiştirmesini ENGELLEMELİDİR.[C-1-5] Cihaz veya çevre birimi (ör. Bluetooth kulaklık) ses düğmeleri aracılığıyla ses ayarlandığında ve şu durumlarda
STREAM_ASSISTANTakışının ses seviyesi DEĞİŞTİRİLMELİDİR ve başka akışların ses seviyesi DEĞİŞTİRİLMEMELİDİR:MODE_ASSISTANT_CONVERSATIONetkinse ve- Uygulamaya özel özelleştirme veya etkin uzaktan oynatma yoktur.
[C-1-6] Kullanıcı arayüzünde, Asistan ses seviyesinde yapılan tüm değişiklikler YANSITILMALIDIR.
3.21. Tamamlayıcı Cihaz Senkronizasyonu Özellikleri Desteği
Android, eşlik eden cihazlar arasında veri senkronizasyonu özelliklerini destekler.
Cihaz uygulamaları Rahatsız Etmeyin senkronizasyon özelliğini destekliyorsa:
[C-1-1]
ContextualModeManager#isModeSyncSupportedAPI'si UYGULANMALIDIR.[C-1-2] Varsayılan
CompanionDeviceManagerServiceuygulamasıyla uyumlu bir veri biçimi kullanarakCompanionDeviceManagergüvenli kanalı üzerinden Rahatsız Etmeyin'in etkin olduğunu belirten ayarı SENKRONİZE ETMELİDİR.[C-1-3]
ContextualModeManager#isModeSyncEnabled,truedeğerini döndürüyorsa bu senkronizasyon ETKİNLEŞTİRİLMELİDİR.
Cihaz uygulamaları, uçak modu senkronizasyonu özelliğini destekliyorsa:
[C-1-4] Uçak modunun etkin olduğunu belirten ayar, varsayılan
CompanionDeviceManagerServiceuygulamasıyla uyumlu bir veri biçimi kullanılarakCompanionDeviceManagergüvenli kanalı üzerinden SENKRONİZE EDİLMELİDİR.[C-1-5]
Settings.Global.AIRPLANE_MODE_SYNCetkinse bu senkronizasyon ETKİNLEŞTİRİLMELİDİR.
3.22. ComputerControls API
ComputerControls API, desteklenen aracıların Android cihazdaki görevleri tamamlamak için kullanıcı adına bağımsız ve senaryosuz işlemler yapmasına olanak tanır.
[C-1-1] Cihaz uygulamaları, ComputerControl'ü desteklemek için uzantılar kitaplığını com.android.extensions.computercontrol önceden yüklüyorsa:
android.software.activities_on_secondary_displayETKİNLEŞTİRİLMELİDİR.com.android.extensions.computercontrolsistem özelliği KULLANILABİLİR olarak gösterilmelidir.VirtualDeviceManagerETKİNLEŞTİRİLMELİDİR.com.android.extensions.computercontrol,PackageManager#getSharedLibraries()tarafından döndürülen listeye DAHİL EDİLMELİDİR.- Platform uygulaması
com.android.virtualdevicemanagerönceden yüklenmelidir (derleme hedefiVirtualDeviceManager).
4. Uygulama Paketleme Uyumluluğu
Cihaz uygulamaları:
- [C-0-1] Resmi Android SDK'sında bulunan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarını yükleyip çalıştırabilmelidir.
- Yukarıdaki şart zorlayıcı olabileceğinden cihaz uygulamalarında AOSP referans uygulamasının paket yönetim sisteminin kullanılması ÖNERİLİR.
- [C-0-2] ".apk" dosyalarının APK İmza Şeması v3.2, APK İmza Şeması v3.1, APK İmza Şeması v3, APK İmza Şeması v2 ve JAR imzalama kullanılarak doğrulanmasını DESTEKLEMELİDİR.
- [C-0-3] .apk, Android Manifest, Dalvik bytecode veya RenderScript bytecode biçimlerini, bu dosyaların diğer uyumlu cihazlara doğru şekilde yüklenmesini ve bu cihazlarda doğru şekilde çalışmasını engelleyecek şekilde genişletMEMELİDİR.
[C-0-4]
DELETE_PACKAGEizni için SDK'da belgelendiği gibi, paketin mevcut "kayıtlı yükleyicisi" dışındaki uygulamaların, kullanıcı onayı olmadan uygulamayı sessizce kaldırmasına İZİN VERİLMEMELİDİR. Tek istisnalar, PACKAGE_NEEDS_VERIFICATION amacını işleyen sistem paketi doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE amacını işleyen depolama alanı yöneticisi uygulamasıdır.[C-0-5]
android.settings.MANAGE_UNKNOWN_APP_SOURCESamacını işleyen bir etkinlik OLMALIDIR.[C-0-6] Yükleme isteğinde bulunan uygulama aşağıdaki şartların tümünü karşılamadığı sürece bilinmeyen kaynaklardan uygulama paketleri yüklenMEMELİDİR:
REQUEST_INSTALL_PACKAGESiznini BEYAN ETMELİ veyaandroid:targetSdkVersiondeğeri 24 ya da daha düşük olmalıdır.- Kullanıcı, bilinmeyen kaynaklardan uygulama yüklemek için cihaza İZİN VERMİŞ OLMALIDIR.
Cihaz uygulaması, kullanıcıların bu seçimi yapmasına izin vermek istemiyorsa bilinmeyen kaynaklardan uygulama yükleme iznini uygulama bazında verme/iptal etme için kullanıcıya bir olanak SUNULMALIDIR. Ancak bu, işlem yapılmayan bir işlem olarak uygulanabilir ve
startActivityForResult()içinRESULT_CANCELEDdöndürülebilir. Ancak bu gibi durumlarda bile, kullanıcıya neden böyle bir seçenek sunulmadığını BELİRTMEK ZORUNDADIRLAR.[C-0-7] Aynı sistem API'si
PackageManager.setHarmfulAppWarningtarafından potansiyel olarak zararlı olarak işaretlenmiş bir uygulamada etkinlik başlatmadan önce, sistem API'siPackageManager.setHarmfulAppWarningaracılığıyla sağlanan uyarı dizesini içeren bir uyarı iletişim kutusu GÖSTERMELİDİR.Uyarı iletişim kutusunda uygulamayı kaldırmayı veya başlatmayı seçmek için kullanıcıya bir olanak SUNULMALIDIR.
[C-0-8] Burada belgelendiği şekilde Artımlı Dosya Sistemi desteği uygulanmalıdır.
[C-0-9] APK İmza Şeması v4 ve APK İmza Şeması v4 .1 kullanılarak.apk dosyalarının doğrulanmasını DESTEKLEMELİDİR.
5. Multimedya Uyumluluğu
Cihaz uygulamaları:
- [C-0-1]
MediaCodecListtarafından beyan edilen her codec için bölüm 5.1'de tanımlanan medya biçimlerini, kodlayıcıları, çözücüleri, dosya türlerini ve kapsayıcı biçimlerini DESTEKLEMELİDİR. - [C-0-2]
MediaCodecListaracılığıyla üçüncü taraf uygulamalarında kullanılabilen kodlayıcıların ve kod çözücülerin desteği BİLDİRİLMELİ ve RAPORLANMALIDIR. - [C-0-3] Kodlayabildiği tüm biçimleri doğru şekilde çözebilmeli ve üçüncü taraf uygulamalarına sunabilmelidir. Bu, kodlayıcılarının oluşturduğu tüm bit akışlarını ve
CamcorderProfileiçinde bildirilen profilleri içerir.
Cihaz uygulamaları:
- SHOULD aim for minimum codec latency, in others words, they
- Giriş arabelleklerini tüketmemeli ve depolamamalı, yalnızca işlendikten sonra giriş arabelleklerini döndürmelidir.
- Kod çözme arabellekleri, standartta (ör. SPS) belirtilenden daha uzun süre saklanmamalıdır.
- GOP yapısının gerektirdiğinden daha uzun süre kodlanmış arabellekleri tutmamalıdır.
Aşağıdaki bölümde listelenen tüm codec'ler, Android Açık Kaynak Projesi'nin tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.
Google'ın veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerinden muaf olduğuna dair herhangi bir beyanda bulunmadığını lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya paylaşılan yazılım da dahil olmak üzere bu kodun uygulamaları için ilgili patent sahiplerinden patent lisansı alması gerekebileceği konusunda bilgilendirilir.
5.1. Medya Codec'leri
5.1.1. Ses kodlama
Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.microphone beyan ediyorsa aşağıdaki ses biçimlerinin kodlanmasını desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [C-1-1] PCM/WAVE
- [C-1-2] FLAC
- [C-1-3] Opus
- [C-1-4] MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC)
Tüm ses kodlayıcılar ŞUNLARI desteklemelidir:
- [C-3-1]
android.media.MediaCodecAPI'si aracılığıyla PCM 16 bit yerel bayt sırası ses çerçeveleri.
MPEG-D USAC'yi MPEG-D DRC (Genişletilmiş Yüksek Verimli AAC) ses ile kodlarken:
- [C-3-2] Tüm bit akışları, ISO/IEC 23003-4 uyarınca MPEG-D ses yüksekliği kontrolü profiline veya MPEG-D dinamik aralık kontrolü profiline (1. seviye veya üzeri) uygun meta veri kümelerini içermelidir.
5.1.2. Ses kod çözme
Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.audio.output özelliğini desteklediğini beyan ediyorsa aşağıdaki ses biçimlerinin kodunu çözmeyi desteklemelidir:
- [C-1-1] MPEG-4 AAC Profili (AAC LC)
- [C-1-2] MPEG-4 HE AAC Profili (AAC+)
- [C-1-3] MPEG-4 HE AACv2 Profili (gelişmiş AAC+)
- [C-1-4] AAC ELD (gelişmiş düşük gecikmeli AAC)
- [C-1-5] FLAC
- [C-1-6] MP3
- [C-1-7] MIDI
- [C-1-8] Vorbis
- [C-1-9] 24 bit, 192 kHz örnekleme hızı ve 8 kanala kadar yüksek çözünürlüklü ses biçimleri dahil PCM/WAVE. Bu şartın yalnızca kod çözme için geçerli olduğunu ve cihazın oynatma aşamasında alt örnekleme ve alt karıştırma yapmasına izin verildiğini unutmayın.
- [C-1-10] Opus
- [C-1-11] xHE-AAC (ISO/IEC 23003-3 Extended HE AAC Profili, USAC Baseline Profili ve ISO/IEC 23003-4 Dynamic Range Control Profili dahil)
Cihaz uygulamaları, android.media.MediaCodec API'deki varsayılan AAC ses kod çözücüsü aracılığıyla çok kanallı akışların (ör. ikiden fazla kanal) AAC giriş arabelleklerinin PCM'ye kod çözülmesini destekliyorsa aşağıdakiler DESTEKLENMELİDİR:
[C-2-1] Kod çözme işlemi, miksajı azaltmadan yapılmalıdır (ör. 5.0 AAC akışı, beş kanallı PCM'ye, 5.1 AAC akışı ise altı kanallı PCM'ye kod çözülmelidir).
[C-2-2] Dinamik aralık meta verileri, ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde tanımlandığı gibi olmalıdır ve
android.media.MediaFormatDRC anahtarları, ses kod çözücünün dinamik aralıkla ilgili davranışlarını yapılandırmak için kullanılmalıdır. AAC DRC anahtarları API 21'de kullanıma sunulmuştur ve şunlardır:KEY_AAC_DRC_ATTENUATION_FACTOR,KEY_AAC_DRC_BOOST_FACTOR,KEY_AAC_DRC_HEAVY_COMPRESSION,KEY_AAC_DRC_TARGET_REFERENCE_LEVELveKEY_AAC_ENCODED_TARGET_LEVEL.[C-SR-1] Yukarıdaki C-2-1 ve C-2-2 koşullarının tüm AAC ses kod çözücüleri tarafından karşılanması ŞİDDETLE TAVSİYE EDİLİR.
USAC ses kodunu çözerken MPEG-D (ISO/IEC 23003-4):
[C-3-1] Ses yüksekliği ve DRC meta verileri, MPEG-D DRC Dinamik Aralık Kontrolü Profili Düzey 1'e göre yorumlanmalı ve uygulanmalıdır.
[C-3-2] Kod çözücü, aşağıdaki
android.media.MediaFormatanahtarlarıyla ayarlanan yapılandırmaya göre davranmalıdır:KEY_AAC_DRC_TARGET_REFERENCE_LEVELveKEY_AAC_DRC_EFFECT_TYPE.
MPEG-4 AAC, HE AAC ve HE AACv2 profil kod çözücüleri:
- ISO/IEC 23003-4 Dinamik Aralık Kontrolü Profili kullanılarak ses yüksekliği ve dinamik aralık kontrolü desteklenebilir.
ISO/IEC 23003-4 destekleniyorsa ve çözülmüş bir bit akışında hem ISO/IEC 23003-4 hem de ISO/IEC 14496-3 meta verileri varsa:
- ISO/IEC 23003-4 meta verileri öncelikli OLACAKTIR.
Tüm ses çözücülerin aşağıdaki çıkışları desteklemesi ZORUNLUDUR:
- [C-6-1]
android.media.MediaCodecAPI'si aracılığıyla PCM 16 bit yerel bayt sıralı ses çerçeveleri.
Cihaz uygulamaları, android.media.MediaCodec API'sindeki varsayılan AAC ses kod çözücüsü aracılığıyla çok kanallı akışların (ör. ikiden fazla kanal) AAC giriş arabelleklerinin PCM'ye kod çözülmesini destekliyorsa aşağıdakiler DESTEKLENMELİDİR:
[C-7-1] İçeriğin stereo olarak mikslenip mikslenmeyeceğini (2 değeri kullanıldığında) veya yerel kanal sayısı kullanılarak çıkış yapılıp yapılmayacağını (bu sayıya eşit veya daha büyük bir değer kullanıldığında) kontrol etmek için uygulamanın anahtarla kod çözme işlemini kullanarak yapılandırılabilmelidir.
KEY_MAX_OUTPUT_CHANNEL_COUNTÖrneğin, 6 veya daha büyük bir değer, 5.1 içerik beslendiğinde kod çözücünün 6 kanal çıkışı yapacak şekilde yapılandırılmasına neden olur.[C-7-2] Kod çözme sırasında kod çözücü, çıkış biçiminde kullanılan kanal maskesini
KEY_CHANNEL_MASKanahtarıyla veandroid.media.AudioFormatsabitlerini kullanarak (örnek:CHANNEL_OUT_5POINT1) bildirmelidir.
Uzamsallaştırıcı efekti içeren tüm elde taşınabilir cihazlar veya tabletler ve tüm otomotiv ve televizyon cihazları:
- [C-8-1] AAC, FLAC, Opus veya PCM ile kodlanmış ses akışlarını içeren IAMF v1.0'ın kod çözme işlemini desteklemeli ve
android.media.MediaCodecAPI'si aracılığıyla bir IAMF kod çözücü sunmalıdır. [C-8-2] IAMF kod çözücünün,
KEY_CHANNEL_MASKanahtarı aracılığıyla yapılandırmak için kullanılan kanal maskesine uyması GEREKİR. Bu amaçlaandroid.media.AudioFormatsabitleri (ör.CHANNEL_OUT_5POINT1) kullanılır.[C-8-3] IAMF kod çözücünün,
KEY_CHANNEL_MASKanahtarı aracılığıyla çıkış biçiminde etkin kanal maskesini duyurmasını sağlamalıdır. Bu işlem içinCHANNEL_OUT_5POINT1gibiandroid.media.AudioFormatsabitleri kullanılmalıdır.
Cihaz uygulamaları, varsayılan AAC ses kod çözücüsü dışında ses kod çözücüleri destekliyorsa ve sıkıştırılmış çok kanallı içerik verildiğinde çok kanallı ses (ör. 2'den fazla kanal) çıkışı yapabiliyorsa:
[C-SR-2] İçeriğin stereo olarak mikslenip mikslenmeyeceğini (2 değeri kullanıldığında) veya yerel kanal sayısı kullanılarak çıkış yapılıp yapılmayacağını (bu sayıya eşit veya daha büyük bir değer kullanıldığında) kontrol etmek için uygulamanın, anahtarla kod çözme işlemini kullanarak kod çözücüyü yapılandırması ŞİDDETLE TAVSİYE EDİLİR.
KEY_MAX_OUTPUT_CHANNEL_COUNTÖrneğin, 6 veya daha büyük bir değer, 5.1 içerik beslendiğinde kod çözücünün 6 kanal çıkışı yapacak şekilde yapılandırılmasına neden olur.[C-SR-3] Kod çözme sırasında, kod çözücünün
android.media.AudioFormatsabitlerini kullanarak (örnek:CHANNEL_OUT_5POINT1) çıkış biçiminde kullanılan kanal maskesiniKEY_CHANNEL_MASKanahtarıyla bildirmesi ŞİDDETLE TAVSİYE EDİLİR.
5.1.3. Ses Codec'leri Ayrıntıları
| Biçim/Codec | Ayrıntılar | Desteklenecek dosya türleri/kapsayıcı biçimleri |
|---|---|---|
| G.711 μ-law ve A-law | 8 kHz'de örneklenmiş mono/stereo/5.1 içerik desteği |
|
| MPEG-4 AAC Profili (AAC LC) |
8-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
| MPEG-4 HE AAC Profili (AAC+) | 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
| MPEG-4 HE AACv2 Profil (gelişmiş AAC+) |
16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
| AAC ELD (gelişmiş düşük gecikmeli AAC) | 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. |
|
| USAC MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC) | Kod çözme: 7,35-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. Kodlama: 44,1 ve 48 kHz örnekleme hızlarına sahip mono/stereo içerik desteği. |
MPEG-4 (.mp4, .m4a) |
| AMR-NB | 8 kHz'de örneklenmiş 4,75 ila 12,2 kb/sn | 3GPP (.3gp) |
| AMR-WB | 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız, 16 kHz'de örneklenir.Bu hızlar, AMR-WB, Uyarlanabilir Çoklu Hız - Geniş Bant Konuşma Codec'i bölümünde tanımlanmıştır. | 3GPP (.3gp) |
| FLAC | Hem kodlayıcı hem de kod çözücü için: En az mono ve stereo modları DESTEKLENMELİDİR. 192 kHz'ye kadar örnek hızları DESTEKLENMELİDİR; 16 bit ve 24 bit çözünürlük DESTEKLENMELİDİR. FLAC 24 bit ses verisi işleme, kayan noktalı ses yapılandırmasıyla KULLANILABİLİR. |
|
| MP3 | Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR) |
|
| MIDI | MIDI Türü 0 ve 1. DLS 1 ve 2. sürüm. XMF ve Mobile XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek |
|
| Vorbis | Kod çözme: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono, stereo, 5.0 ve 5.1 içerik desteği. Kodlama: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono ve stereo içerik desteği. |
|
| PCM/WAVE | PCM codec'i 16 bit doğrusal PCM ve 16 bit kayan nokta biçimini DESTEKLEMELİDİR. WAVE ayıklayıcı, 16 bit, 24 bit, 32 bit doğrusal PCM ve 32 bit kayan nokta (donanım sınırına kadar olan hızlar) biçimlerini desteklemelidir. Örnekleme hızları 8 kHz ile 192 kHz arasında OLMALIDIR. | WAVE (.wav) |
| Opus | Kod çözme: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono, stereo, 5.0 ve 5.1 içerik desteği.
Kodlama: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono ve stereo içerik desteği. |
|
5.1.4. Resim Kodlama
Daha fazla ayrıntı için 5.1.6. Resim Codec'leri Ayrıntıları.
Cihaz uygulamaları, aşağıdaki görüntü kodlamasının kodlanmasını DESTEKLEMELİDİR:
- [C-0-1] JPEG
- [C-0-2] PNG
- [C-0-3] WebP
- [C-0-4] AVIF
- Cihazlar,
BITRATE_MODE_CQve Baseline Profile'ı desteklemelidir.
- Cihazlar,
Cihaz uygulamaları, MIMETYPE_IMAGE_ANDROID_HEIC medya türü için android.media.MediaCodec üzerinden HEIC kodlamayı destekliyorsa:
- [C-1-1]
BITRATE_MODE_CQbit hızı kontrol modunu,HEVCProfileMainStillprofilini ve 512 x 512 piksel kare boyutunu destekleyen donanım hızlandırmalı bir HEVC kodlayıcı codec SAĞLANMALIDIR.
5.1.5. Resim Kodu Çözme
Daha fazla ayrıntı için 5.1.6. Resim Codec'leri Ayrıntıları.
Cihaz uygulamaları, aşağıdaki görüntü kodlamasının çözülmesini DESTEKLEMELİDİR:
[C-0-1] JPEG
[C-0-2] GIF
[C-0-3] PNG
[C-0-4] BMP
[C-0-5] WebP
[C-0-6] İşlenmemiş
[C-0-7] AVIF (Temel Profil)
Cihaz uygulamaları HEVC video kod çözme özelliğini destekliyorsa:
- [C-1-1] HEIF (HEIC) görüntü kod çözme desteklenmelidir.
Yüksek bit derinliği biçimini (kanal başına 9+ bit) destekleyen görüntü kod çözücüler:
- [C-2-1] Uygulama tarafından istenirse (ör.
android.graphics.BitmapyapılandırmasınınARGB_8888yapılandırması aracılığıyla) 8 bit eşdeğer biçim çıkışını desteklemelidir.
5.1.6. Görüntü Codec'leri Ayrıntıları
| Biçim/Codec | Ayrıntılar | Desteklenen Dosya Türleri/Kapsayıcı Biçimleri |
|---|---|---|
| JPEG | Taban+aşamalı | JPEG (.jpg) |
| GIF | GIF (.gif) | |
| PNG | PNG (.png) | |
| BMP | BMP (.bmp) | |
| WebP | WebP (.webp) | |
| İşlenmemiş | ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw) | |
| HEIF | Resim, Resim koleksiyonu, Resim dizisi | HEIF (.heif), HEIC (.heic) |
| AVIF (Temel Profil) | Resim, resim koleksiyonu, resim dizisi temel profili | HEIF kapsayıcısı (.avif) |
MediaCodec API'si aracılığıyla kullanıma sunulan görüntü kodlayıcıları ve kod çözücüleri
[C-1-1]
CodecCapabilitiesaracılığıyla YUV420 8:8:8 esnek renk biçimini (COLOR_FormatYUV420Flexible) DESTEKLEMELİDİR.[C-SR-1] Giriş Yüzey modu için RGB888 renk biçiminin desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-1-3] Düzlemsel veya yarı düzlemsel YUV420 8:8:8 renk biçimlerinden en az birini desteklemelidir:
COLOR_FormatYUV420PackedPlanar(COLOR_FormatYUV420Planarile eşdeğer) veyaCOLOR_FormatYUV420PackedSemiPlanar(COLOR_FormatYUV420SemiPlanarile eşdeğer). Her ikisinin de desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
5.1.7. Video Codec'leri
- Web'de video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olması için cihaz uygulamalarında şartları karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
Cihaz uygulamaları video kod çözücü veya kodlayıcı içeriyorsa:
[C-1-1] Video codec'leri, standart ve yapılandırmanın belirlediği şekilde mümkün olan en büyük sıkıştırılmış ve sıkıştırılmamış kareyi barındıran, ancak genel olarak fazla yer ayırmayan çıkış ve giriş bytebuffer boyutlarını desteklemelidir.
[C-1-2] Video kodlayıcılar ve kod çözücüler,
COLOR_FormatYUV420Flexiblearacılığıyla YUV420 8:8:8 esnek renk biçimlerini (COLOR_FormatYUV420Flexible) desteklemelidir.CodecCapabilities.[C-1-3] Video kodlayıcılar ve çözücüler, düzlemsel veya yarı düzlemsel YUV420 8:8:8 renk biçimlerinden en az birini DESTEKLEMELİDİR:
COLOR_FormatYUV420PackedPlanar(COLOR_FormatYUV420Planarile eşdeğer) veyaCOLOR_FormatYUV420PackedSemiPlanar(COLOR_FormatYUV420SemiPlanarile eşdeğer). Her ikisini de desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.[C-SR-1] Video kodlayıcıların ve kod çözücülerin, donanım için optimize edilmiş düzlemsel veya yarı düzlemsel YUV420 8:8:8 renk biçimlerinden (YV12, NV12, NV21 ya da satıcı tarafından optimize edilmiş eşdeğer biçim) en az birini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
[C-1-5] Yüksek bit derinliği biçimini (kanal başına 9+ bit) destekleyen video kod çözücüler, uygulama tarafından istenmesi durumunda 8 bit eşdeğer biçim çıkışını desteklemelidir. Bu,
android.media.MediaCodecInfoaracılığıyla YUV420 8:8:8 renk biçiminin desteklenmesiyle YANSITILMALIDIR.
Cihaz uygulamaları, Display.HdrCapabilities aracılığıyla HDR profili desteği sunduğunu belirtiyorsa:
- [C-2-1] HDR statik meta veri ayrıştırması ve işlenmesi DESTEKLENMELİDİR.
Cihaz uygulamaları, MediaCodecInfo.CodecCapabilities sınıfında FEATURE_IntraRefresh aracılığıyla yenileme içi desteği duyuruyorsa:
- [C-3-1] 10-60 kare aralığındaki yenileme sürelerini desteklemeli ve yapılandırılan yenileme süresinin% 20'si içinde doğru şekilde çalışmalıdır.
Uygulama, KEY_COLOR_FORMAT biçim anahtarını kullanarak aksi belirtilmediği sürece video kod çözücü uygulamaları:
[C-4-1] Surface çıkışı kullanılarak yapılandırılmışsa donanım ekranı için optimize edilmiş renk biçimi varsayılan olarak AYARLANMALIDIR.
[C-4-2] Surface çıkışı kullanılmayacak şekilde yapılandırılmışsa varsayılan olarak CPU okuması için optimize edilmiş bir YUV420 8:8:8 renk biçimi KULLANILMALIDIR.
Video kod çözücü veya kodlayıcı içeren cihaz uygulamaları için:
[C-5-1] 2003 veya daha yeni bir kodlama teknolojisi (ör. AV1, AVC, HEVC, VP8, VP9 veya VVC) kullanan video kod çözücüler ŞUNLARI YAPMALIDIR:
- Minimum 144 x 144 piksel boyutunu desteklemeli ve
- Bu desteği VideoCapabilities API aracılığıyla duyurun. Örneğin,
getSupportedWidths()vegetSupportedHeightsFor()yöntemlerini kullanabilirsiniz.
[C-5-2] 2003 veya daha yeni bir kodlama teknolojisi (ör. AV1, AVC, HEVC, VP8, VP9 veya VVC) kullanan video kodlayıcılar ŞUNLARI YAPMALIDIR:
- Her kodlayıcı için aşağıdaki minimum boyutta Surface girişini destekleyin:
- AVC: 160x160 piksel
- VP8, HEVC, VP9 (kodlayıcı sağlanmışsa): 160x160 piksel
- AV1 (kodlayıcı sağlanmışsa): 256x256 piksel
- Kırpma dikdörtgeni bilgilerini kullanarak uygun boyutu kodlamaları koşuluyla, minimumdan daha büyük bir kare boyutuna sahip bit akışı ÜRETEBİLİR.
- Her kodlayıcı için aşağıdaki minimum boyutta Surface girişini destekleyin:
5.1.8. Video Codec'leri Listesi
| Biçim/Codec | Ayrıntılar | Desteklenecek dosya türleri/kapsayıcı biçimleri |
|---|---|---|
| H.263 |
|
|
| H.264 AVC | Ayrıntılar için bölüm 5.2 ve 5.3'e bakın. |
|
| H.265 HEVC | Ayrıntılar için 5.3. bölümü inceleyin. |
|
| MPEG-2 | Ana Profil |
|
| MPEG-4 SP |
|
|
| VP8 | Ayrıntılar için 5.2 ve 5.3 bölümlerine bakın. |
|
| VP9 | Ayrıntılar için 5.3. bölümü inceleyin. |
|
| AV1 | Ayrıntılar için bölüm 5.2 ve bölüm 5.3'e bakın. |
|
5.1.9. Medya Codec'i Güvenliği
Cihaz uygulamaları, aşağıda açıklandığı gibi medya codec'i güvenlik özelliklerine uygunluğu SAĞLAMALIDIR.
Android, platformlar arası bir multimedya hızlandırma API'si olan OMX'in yanı sıra düşük ek yük multimedya hızlandırma API'si olan Codec 2.0'ı da destekler.
Cihaz uygulamaları multimedyayı destekliyorsa:
[C-1-1] Android Açık Kaynak Projesi'nde olduğu gibi, medya codec'leri için OMX veya Codec 2.0 API'leri (ya da her ikisi) aracılığıyla destek sağlamalı ve güvenlik korumalarını devre dışı bırakmamalı veya atlatmamalıdır. Bu, özellikle her codec'in OMX veya Codec 2.0 API'sini kullanması gerektiği anlamına gelmez. Bu API'lerden en az birinin desteklenmesi ve mevcut API'lerin desteklenmesinin güvenlik korumalarını içermesi gerekir.
[C-SR-1] Codec 2.0 API'si desteğinin eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Codec 2.0 API'sini desteklemiyorsa:
[C-2-1] Cihaz tarafından desteklenen her medya biçimi ve türü (kodlayıcı veya çözücü) için Android Açık Kaynak Projesi'ndeki ilgili OMX yazılım codec'i (varsa) İÇERMELİDİR.
[C-2-2] Adları "OMX.google." ile başlayan codec'ler Android Açık Kaynak Projesi kaynak koduna DAYANMALIDIR.
[C-SR-2] OMX yazılım codec'lerinin, bellek eşleyiciler dışındaki donanım sürücülerine erişimi olmayan bir codec işleminde çalıştırılması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Codec 2.0 API'sini destekliyorsa:
[C-3-1] Cihaz tarafından desteklenen her medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Açık Kaynak Projesi'ndeki (varsa) ilgili Codec 2.0 yazılım codec'ini içermelidir.
[C-3-2] Yazılım codec'lerine erişimin daha dar kapsamlı olarak verilmesini sağlamak için Codec 2.0 yazılım codec'lerini Android Açık Kaynak Projesi'nde sağlandığı şekilde yazılım codec'i sürecinde barındırmalıdır.
[C-3-3] Adları "c2.android." ile başlayan codec'ler Android Açık Kaynak Projesi kaynak koduna DAYANMALIDIR.
5.1.10. Medya Codec'i Karakterizasyonu
Cihaz uygulamaları medya codec'lerini destekliyorsa:
- [C-1-1]
MediaCodecInfoAPI'si aracılığıyla medya codec'i karakterizasyonunun doğru değerlerini döndÜRMELİDİR.
Özellikle:
[C-1-2] Adları "OMX." ile başlayan codec'ler OMX API'leri KULLANILMALI ve OMX IL adlandırma kurallarına uygun adlar verilmelidir.
[C-1-3] Adları "c2." ile başlayan codec'ler Codec 2.0 API'si KULLANILMALIDIR ve Android için Codec 2.0 adlandırma yönergelerine uygun adlar verilmelidir.
[C-1-4] Adları "OMX.google." veya "c2.android." ile başlayan codec'ler Tedarikçi veya donanım hızlandırmalı olarak nitelendirilmemelidir.
[C-1-5] Bir codec işleminde (satıcı veya sistem) çalışan ve bellek ayırıcılar ile eşleyiciler dışındaki donanım sürücülerine erişimi olan codec'ler YALNIZCA yazılım olarak nitelendirilmemelidir.
[C-1-6] Android Açık Kaynak Projesi'nde bulunmayan veya bu projedeki kaynak koduna dayanmayan codec'ler, satıcı olarak nitelendirilmelidir.
[C-1-7] Donanım hızlandırmayı kullanan codec'ler, donanım hızlandırmalı olarak nitelendirilmelidir.
[C-1-8] Codec adları yanıltıcı OLMAMALIDIR. Örneğin, "decoders" adlı codec'ler kod çözmeyi, "encoders" adlı codec'ler ise kodlamayı DESTEKLEMELİDİR. Adlarında medya biçimleri bulunan codec'ler bu biçimleri desteklemelidir.
Cihaz uygulamaları video codec'lerini destekliyorsa:
- [C-2-1] Tüm video codec'leri, codec tarafından destekleniyorsa aşağıdaki boyutlar için ulaşılabilir kare hızı verilerini YAYINLAMALIDIR:
| SD (düşük kalite) | SD (yüksek kalite) | HD 720p | HD 1080p | UHD | |
|---|---|---|---|---|---|
| Video çözünürlüğü |
|
|
|
1920 x 1080 piksel (MPEG4, AV1 hariç) | 3840 x 2160 piksel (HEVC, VP9, AV1) |
[C-2-2] Donanım hızlandırmalı olarak nitelendirilen video codec'leri, performans noktası bilgilerini YAYINLAMALIDIR. Desteklenen başka bir standart performans noktası tarafından kapsanmadığı sürece, her biri desteklenen tüm standart performans noktalarını (
PerformancePointAPI'sinde listelenmiştir) listelemelidir.Ayrıca, listelenen standart performans noktalarından farklı olarak sürekli video performansını destekliyorlarsa genişletilmiş performans noktalarını YAYINLAMALIDIR.
5.2. Video Kodlama
Cihaz uygulamaları herhangi bir video kodlayıcıyı destekleyip üçüncü taraf uygulamalarına sunuyorsa ve kodlayıcının değişken bit hızı modunda çalışması için
MediaFormat.KEY_BITRATE_MODE değerini BITRATE_MODE_VBR olarak ayarlıyorsa, minimum kalite tabanını etkilemediği sürece kodlanmış bit hızı :
- Bir kayan pencere boyunca, kare içi (I-frame) aralıklar arasındaki bit hızının% 15'inden fazla OLMAMALIDIR.
- 1 saniyelik hareketli bir aralıkta bit hızının% 100'ünden fazla OLMAMALIDIR.
Cihaz uygulamaları herhangi bir video kodlayıcıyı destekliyorsa ve üçüncü taraf uygulamalarına sunuyorsa ve kodlayıcının sabit bit hızı modunda çalışması için MediaFormat.KEY_BITRATE_MODE değerini BITRATE_MODE_CBR olarak ayarlıyorsa kodlanmış bit hızı:
- [C-SR-2] 1 saniyelik kayan pencerede hedef bit hızının% 15'inden fazla OLMAMASI ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, köşegen uzunluğu en az 2,5 inç olan yerleşik bir ekran içeriyorsa, video çıkışı bağlantı noktası içeriyorsa veya android.hardware.camera.any özellik bayrağı aracılığıyla kamera desteği beyan ediyorsa:
- [C-1-1] VP8 veya H.264 video kodlayıcılarından en az birinin desteğini içermeli ve bunu üçüncü taraf uygulamaları için kullanılabilir hale getirmelidir.
- Hem VP8 hem de H.264 video kodlayıcılarını desteklemeli ve üçüncü taraf uygulamaları için kullanılabilir hale getirmelidir.
Cihaz uygulamaları H.264, VP8, VP9 veya HEVC video kodlayıcılarından herhangi birini destekleyip üçüncü taraf uygulamalarına sunuyorsa:
- [C-2-1] Dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
- DEĞİŞKEN kare hızları desteklenmelidir. Bu durumda video kodlayıcı, giriş arabelleklerinin zaman damgalarına göre anlık kare süresini belirlemeli ve bit aralığını bu kare süresine göre tahsis etmelidir.
Cihaz uygulamaları MPEG-4 SP video kodlayıcıyı destekliyorsa ve üçüncü taraf uygulamaların kullanımına sunuyorsa:
- Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
Cihaz uygulamaları, donanım hızlandırmalı video veya resim kodlayıcılar sağlıyorsa ve android.camera API'leri aracılığıyla kullanıma sunulan bir veya daha fazla bağlı ya da takılabilir donanım kamerasını destekliyorsa:
- [C-4-1] Donanım hızlandırmalı tüm video ve görüntü kodlayıcılar, donanım kameralarından gelen karelerin kodlanmasını DESTEKLEMELİDİR.
- Tüm video veya görüntü kodlayıcılar aracılığıyla donanım kameralarından gelen karelerin kodlanmasını DESTEKLEMELİDİR.
Cihaz uygulamaları HDR kodlama sağlıyorsa:
- [C-SR-1] HDR biçiminden SDR biçimine dönüştürmek için sorunsuz kod dönüştürme API'si sağlayan bir eklenti sunması ŞİDDETLE TAVSİYE EDİLİR.
5.2.1. H.263
Cihaz uygulamaları H.263 kodlayıcıları destekliyorsa ve üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1] Baseline Profile Level 45 kullanılarak QCIF çözünürlüğü (176 x 144) DESTEKLENMELİDİR. SQCIF çözünürlüğü isteğe bağlıdır.
5.2.2. H.264
Cihaz uygulamaları H.264 codec'ini destekliyorsa:
- [C-1-1] Temel Profil Seviye 3'ü DESTEKLEMELİDİR. Ancak ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğu korumak için kodlayıcıların Baseline Profile'da ASO, FMO ve RS'yi KULLANMAMASI ÖNERİLİR.
- [C-1-2] Aşağıdaki tabloda yer alan SD (Standart Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
- Ana Profil Düzeyi 4'ü DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için H.264 kodlamasının desteklendiğini bildiriyorsa:
- [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
|---|---|---|---|---|
| Video çözünürlüğü | 320 x 240 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
| Video kare hızı | 20 fps | 30 fps | 30 fps | 30 fps |
| Video bit hızı | 384 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
5.2.3. VP8
Cihaz uygulamaları VP8 codec'ini destekliyorsa:
- [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
- Aşağıdaki HD (Yüksek Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
- [C-1-2] Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
- Web video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olmasını sağlamak için WebM projesi RTC donanım kodlama şartlarını karşılayan bir donanım VP8 codec'i SAĞLAMALIDIR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için VP8 kodlamasının desteklendiğini bildiriyorsa:
- [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
|---|---|---|---|---|
| Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
| Video bit hızı | 800 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
5.2.4. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- [C-1-2] MUST support Profile 0 Level 3.
- [C-1-1] Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
- [C-1-3] CodecPrivate verileri OLUŞTURMALIDIR.
- Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
- Donanım kodlayıcı varsa [C-SR-1] öğesinin, aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
| SD | HD 720p | HD 1080p | UHD | |
|---|---|---|---|---|
| Video çözünürlüğü | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
| Video bit hızı | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
Cihaz uygulamaları, medya API'leri aracılığıyla Profil 2 veya Profil 3'ü desteklediğini iddia ediyorsa:
- 12 bit biçim desteği İSTEĞE BAĞLIDIR.
5.2.5. H.265
Cihaz uygulamaları H.265 codec'ini destekliyorsa:
- [C-1-1] 512 x 512 çözünürlüğe kadar Main Profile Level 3'ü DESTEKLEMELİDİR.
- Donanım kodlayıcı varsa [C-SR-1] öğesinin aşağıdaki tabloda belirtildiği gibi 720 x 480 SD profilini ve HD kodlama profillerini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
| SD | HD 720p | HD 1080p | UHD | |
|---|---|---|---|---|
| Video çözünürlüğü | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
| Video bit hızı | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
5.2.6. AV1
Cihaz uygulamaları AV1 codec'ini destekliyorsa:
- [C-1-1] 8 bit ve 10 bit içerik de dahil olmak üzere Ana Profili DESTEKLEMELİDİR.
[C-1-2] Performans verilerini yayınlamalıdır. Diğer bir deyişle, aşağıdaki tabloda desteklenen çözümler için
getSupportedFrameRatesFor()veyagetSupportedPerformancePoints()API'leri aracılığıyla performans verilerini raporlamalıdır.[C-1-3] HDR meta verilerini kabul etmeli ve bit akışına aktarmalıdır.
AV1 kodlayıcı donanım hızlandırmalıysa:
- [C-2-1] Aşağıdaki tabloda yer alan HD1080p kodlama profili de dahil olmak üzere bu profile kadar olan tüm profilleri DESTEKLEMELİDİR:
| SD | HD 720p | HD 1080p | UHD | |
|---|---|---|---|---|
| Video çözünürlüğü | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
| Video bit hızı | 5 Mb/sn | 8 Mb/sn | 16 Mb/sn | 50 Mb/sn |
5.3. Video kod çözme
Cihaz uygulamaları VP8, VP9, H.264, H.265 veya AV1 codec'lerini destekliyorsa:
- [C-1-1] Tüm VP8, VP9, H.264, H.265 ve AV1 codec'leri için aynı akışta standart Android API'leri aracılığıyla dinamik video çözünürlüğü ve kare hızı değiştirme özelliği gerçek zamanlı olarak ve cihazda her codec'in desteklediği maksimum çözünürlüğe kadar desteklenmelidir.
5.3.1. MPEG-2
Cihaz uygulamaları MPEG-2 kod çözücülerini destekliyorsa:
- [C-1-1] Ana Profil Yüksek Seviyesi desteklenmelidir.
5.3.2. H.263
Cihaz uygulamaları H.263 kod çözücülerini destekliyorsa:
- [C-1-1] Baseline Profile Level 30 (CIF, QCIF ve SQCIF çözünürlükleri @ 30 fps 384 kbps) ve Level 45'i (QCIF ve SQCIF çözünürlükleri @ 30 fps 128 kbps) DESTEKLEMELİDİR.
5.3.3. MPEG-4
MPEG-4 kod çözücülerle cihaz uygulamaları varsa:
- [C-1-1] MUST support Simple Profile Level 3.
5.3.4. H.264
Cihaz uygulamaları H.264 kod çözücülerini destekliyorsa:
- [C-1-1] Main Profile Level 3.1 ve Baseline Profile'ı DESTEKLEMELİDİR. ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR.
- [C-1-2] Aşağıdaki tabloda listelenen ve Baseline Profile ile Main Profile Level 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlük) profillerine sahip videoları çözebilmelidir.
- Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlük) profillerine sahip videoların kodunu çözebilmelidir.
Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse cihaz uygulamaları:
- [C-2-1] Aşağıdaki tabloda yer alan HD 720p video kod çözme profillerini DESTEKLEMELİDİR.
- [C-2-2] Aşağıdaki tabloda yer alan HD 1080p video kod çözme profillerini DESTEKLEMELİDİR.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
|---|---|---|---|---|
| Video çözünürlüğü | 320 x 240 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
| Video kare hızı | 30 fps | 30 fps | 60 fps | 30 fps (60 fpsTelevizyon) |
| Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.5. H.265 (HEVC)
Cihaz uygulamaları H.265 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda belirtildiği gibi, Ana Profil Düzeyi 3 Ana katmanını ve SD video kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
- [C-1-2] Donanım kod çözücü varsa aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-2-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin H.265 veya VP9 kod çözme işlemlerinden en az birini desteklemelidir.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
|---|---|---|---|---|---|
| Video çözünürlüğü | 352 x 288 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30/60 fps (60 fpsH.265 donanım kod çözme özelliğine sahip televizyon) | 60 fps |
| Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
Cihaz uygulamaları, Media API'leri aracılığıyla bir HDR profilini desteklediğini iddia ediyorsa:
- [C-3-1] Cihaz uygulamaları, uygulamadan gelen gerekli HDR meta verilerini KABUL ETMELİ, ayrıca bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerini ayıklamayı ve çıkışını desteklemelidir.
- [C-3-2] Cihaz uygulamaları, HDR içeriği cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI) düzgün şekilde göstermelidir.
5.3.6. VP8
Cihaz uygulamaları VP8 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tablodaki SD kod çözme profillerini DESTEKLEMELİDİR.
- Koşulları karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
- Aşağıdaki tabloda yer alan HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-2-1] Cihaz uygulamaları, aşağıdaki tablodaki 720p profillerini DESTEKLEMELİDİR.
- [C-2-2] Cihaz uygulamaları, aşağıdaki tabloda yer alan 1080p profillerini DESTEKLEMELİDİR.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
|---|---|---|---|---|
| Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps (60 fpsTelevizyon) | 30 (60 fpsTelevizyon) |
| Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.7. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda belirtildiği gibi SD video kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları VP9 codec'ini ve donanım kod çözücüyü destekliyorsa:
- [C-2-1] Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-3-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin VP9 veya H.265 kod çözme işlemlerinden en az birini desteklemelidir.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
|---|---|---|---|---|---|
| Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps (60 fpsVP9 donanım kod çözme özelliğine sahip televizyon) | 60 fps |
| Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
Cihaz uygulamaları, "CodecProfileLevel" medya API'leri aracılığıyla VP9Profile2 veya VP9Profile3'yi desteklediğini iddia ediyorsa:
- 12 bit biçim desteği İSTEĞE BAĞLIDIR.
Cihaz uygulamaları, medya API'leri aracılığıyla bir HDR profilini (VP9Profile2HDR, VP9Profile2HDR10Plus, VP9Profile3HDR, VP9Profile3HDR10Plus) desteklediğini iddia ediyorsa:
- [C-4-1] Cihaz uygulamaları, uygulamadan gelen gerekli HDR meta verilerini
(
KEY_HDR_STATIC_INFOtüm HDR profilleri için ve 'KEY_HDR10_PLUS_INFO' HDR10Plus profilleri için) kabul ETMELİDİR. Ayrıca, bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerinin çıkarılmasını ve çıkışını desteklemeleri GEREKİR. - [C-4-2] Cihaz uygulamaları, HDR içeriği cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI) düzgün şekilde göstermelidir.
5.3.8. Dolby Vision
Cihaz uygulamaları, HDR_TYPE_DOLBY_VISION aracılığıyla Dolby Vision kod çözücüsünü desteklediğini beyan ediyorsa:
[C-1-1] Dolby Vision özellikli bir çıkarıcı SAĞLANMALIDIR.
[C-1-2] Dolby Vision içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktası (ör. HDMI) aracılığıyla bağlanan harici bir ekranda düzgün şekilde göstermelidir.
[C-1-3] Geriye dönük uyumlu temel katmanların (varsa) parça kimliği, birleşik Dolby Vision katmanının parça kimliğiyle aynı OLMALIDIR.
5.3.9. AV1
Cihaz uygulamaları AV1 codec'ini destekliyorsa ve üçüncü taraf uygulamalarının kullanımına sunuyorsa:
- [C-1-1] 8 bit ve 10 bit içerik de dahil olmak üzere Ana Profili DESTEKLEMELİDİR.
Cihaz uygulamaları, donanım hızlandırmalı kod çözücü ile AV1 codec'i için destek sağlıyorsa:
- [C-2-1]
Display.getSupportedModes()yöntemiyle bildirilen yükseklik 720p'ye eşit veya daha yüksek olduğunda aşağıdaki tablodaki en az HD 720p video kod çözme profillerini çözebilmelidir. - [C-2-2]
Display.getSupportedModes()yöntemiyle bildirilen yükseklik 1080p'ye eşit veya daha yüksek olduğunda aşağıdaki tablodan en az HD 1080p video kod çözme profillerinin kodunu çözebilmelidir.
| SD | HD 720p | HD 1080p | UHD | |
|---|---|---|---|---|
| Video çözünürlüğü | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
| Video bit hızı | 5 Mb/sn | 8 Mb/sn | 16 Mb/sn | 50 Mb/sn |
Cihaz uygulamaları, Media API'ler aracılığıyla HDR profilini destekliyorsa:
- [C-3-1] Bit akışından ve/veya kapsayıcıdan HDR meta verilerinin çıkarılmasını ve çıkışını desteklemelidir.
[C-3-2] HDR içerikleri cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI) düzgün şekilde göstermELİDİR.
5.4. Ses Kaydetme
Bu bölümde belirtilen şartlardan bazıları Android 4.3'ten beri SHOULD (GEREKLİ) olarak listelenmiş olsa da gelecekteki sürümlerin Uyumluluk Tanımı'nda bunların MUST (ZORUNLU) olarak değiştirilmesi planlanmaktadır. Mevcut ve yeni Android cihazların, GEREKLİ olarak listelenen bu koşulları karşılaması ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiklerinde Android uyumluluğu elde edemezler.
5.4.1. İşlenmemiş Ses Kaydı ve Mikrofon Bilgileri
Cihaz uygulamaları android.hardware.microphone değerini bildiriyorsa:
[C-1-1] Başarıyla açılan tüm
AudioRecordveyaAAudioGİRİŞ akışları için ham ses içeriğinin yakalanmasına İZİN VERİLMELİDİR. En azından aşağıdaki özellikler DESTEKLENMELİDİR:- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 8000, 11025, 16000, 44100, 48000 Hz
- Kanallar: Mono
- Ses Kaynakları:
DEFAULT,MIC,CAMCORDER,VOICE_RECOGNITION,VOICE_COMMUNICATION,UNPROCESSED, veyaVOICE_PERFORMANCE. Bu durum,AAudio'daki eşdeğer giriş hazır ayarları için de geçerlidir. Örneğin,AAUDIO_INPUT_PRESET_CAMCORDER.
Aşağıdaki özelliklere sahip ham ses içeriklerinin yakalanmasına İZİN VERİLMELİDİR:
- Biçim: Doğrusal PCM, 16 bit ve 24 bit
- Örnekleme hızları: 8.000, 11.025, 16.000, 22.050, 24.000, 32.000, 44.100, 48.000 Hz
- Kanallar: Cihazdaki mikrofon sayısı kadar kanal
[C-1-2] Yukarı örnekleme yapmadan yukarıdaki örnek hızlarında kayıt YAPILMALIDIR.
[C-1-3] Yukarıda verilen örnekleme hızları, alt örnekleme ile yakalandığında uygun bir yumuşatma filtresi İÇERMELİDİR.
AM radyo ve DVD kalitesinde ham ses içeriği yakalamaya İZİN VERİLMELİDİR. Bu, aşağıdaki özelliklerin karşılanması anlamına gelir:
- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 22050, 48000 Hz
- Kanallar: Stereo
[C-1-4]
MicrophoneInfoAPI'sine UYULMALI ve cihazda bulunan,AudioManager.getMicrophones()API aracılığıyla üçüncü taraf uygulamalarının erişebildiği mikrofonlarla ilgili bilgiler,MediaRecorder.AudioSources DEFAULT,MIC,CAMCORDER,VOICE_RECOGNITION,VOICE_COMMUNICATION,UNPROCESSEDveyaVOICE_PERFORMANCEkullanılarak etkin AudioRecord için doğru şekilde doldurulmalıdır. Cihaz uygulamaları, AM radyo ve DVD kalitesinde ham ses içeriği yakalamaya izin veriyorsa:[C-2-1] 16000:22050 veya 44100:48000'den yüksek bir oranda yukarı örnekleme olmadan KAYIT YAPILMALIDIR.
[C-2-2] Herhangi bir yukarı örnekleme veya aşağı örnekleme için uygun bir yumuşatma filtresi İÇERMELİDİR.
5.4.2. Ses tanıma için yakalama
Cihaz uygulamaları android.hardware.microphone değerini bildiriyorsa:
- [C-1-1]
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITIONses kaynağını 44.100 ve 48.000 örnekleme hızlarından birinde yakalamalıdır. - [C-1-2]
AudioSource.VOICE_RECOGNITIONses kaynağından ses akışı kaydedilirken varsayılan olarak tüm gürültü azaltma ses işleme özelliklerini DEVRE DIŞI BIRAKMALIDIR. [C-1-3]
AudioSource.VOICE_RECOGNITIONses kaynağından ses akışı kaydederken varsayılan olarak otomatik kazanç kontrolünü devre dışı bırakmalıdır.Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri GÖSTERMELİDİR: Özellikle ses tanıma ses kaynağını kaydetmek için kullanılan her bir mikrofon için 100 Hz ile 4.000 Hz arasında ±3 dB.
[C-SR-1] Ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla düşük frekans aralığında, özellikle 30 Hz ile 100 Hz arasında ±20 dB genlik seviyeleri göstermesi ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-2] ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla yüksek frekans aralığında, özellikle 4.000 Hz ile 22 kHz arasında ±30 dB genlik seviyeleri göstermesi ŞİDDETLE TAVSİYE EDİLİR.
1000 Hz sinüs dalgası ton kaynağı, 90 dB ses basıncı seviyesinde (SPL) (mikrofonun yanında ölçülür) çalındığında ses giriş hassasiyeti, ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofon için 16 bit örneklerde 1770 ile 3530 arasında bir aralıkta RMS 2500 ideal yanıtını (veya kayan noktalı/çift duyarlıklı örneklerde -22,35 dB ±3 dB tam ölçek) verecek şekilde AYARLANMALIDIR.
PCM genlik seviyeleri, mikrofonun 90 dB SPL'de -18 dB ile +12 dB arasında en az 30 dB aralığında giriş SPL değişikliklerini doğrusal olarak takip edecek şekilde ses tanıma ses akışını KAYDETMELİDİR.
Mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için% 1'den az toplam harmonik bozulma (THD) ile ses tanıma ses akışını KAYDETMELİDİR.
Cihaz uygulamaları, konuşma tanıma için ayarlanmış android.hardware.microphone ve gürültü azaltma teknolojilerini beyan ediyorsa:
- [C-2-1] Bu ses efektinin
android.media.audiofx.NoiseSuppressorAPI'si ile kontrol edilmesine İZİN VERİLMELİDİR. - [C-2-2]
AudioEffect.Descriptor.uuidalanı aracılığıyla her gürültü bastırma teknolojisi uygulamasını benzersiz şekilde tanımlAMALIDIR.
5.4.3. Oynatmanın yeniden yönlendirilmesi için yakalama
android.media.MediaRecorder.AudioSource sınıfı, REMOTE_SUBMIX
ses kaynağını içerir.
Cihaz uygulamaları hem android.hardware.audio.output hem de android.hardware.microphone beyan ederse:
[C-1-1]
REMOTE_SUBMIXses kaynağı, bir uygulama bu ses kaynağından kayıt yapmak içinandroid.media.AudioRecordAPI'sini kullandığında aşağıdakiler hariç tüm ses akışlarının karışımını yakalayacak şekilde doğru bir şekilde uygulanmalıdır:AudioManager.STREAM_RINGAudioManager.STREAM_ALARMAudioManager.STREAM_NOTIFICATION
5.4.4. Akustik Yankı Önleyici
Cihaz uygulamaları android.hardware.microphone değerini bildiriyorsa:
AudioSource.VOICE_COMMUNICATIONile kayıt yaparken sesli iletişim için ayarlanmış ve yakalama yoluna uygulanmış bir akustik yankı giderici (AEC) teknolojisi KULLANILMALIDIR. (AEC) technology tuned for voice communication and applied to the capture path when capturing usingAudioSource.VOICE_COMMUNICATION.
Cihaz uygulamaları, AudioSource.VOICE_COMMUNICATION seçildiğinde yakalama ses yoluna yerleştirilen bir akustik yankı giderici sağlıyorsa:
- [C-SR-1] [C-1-1] are STRONGLY_RECOMMENDED MUST declare this via AcousticEchoCanceler API method AcousticEchoCanceler.isAvailable() returning
true.
- [C-1-2] AcousticEchoCanceler.getEnabled() AcousticEchoCanceler API yöntemi aracılığıyla ses yolunda AEC'nin etkinleştirilmesini yansıtmalıdır. Bu yöntem, etkin olduğunda
true, etkin olmadığındafalsedeğerini döndürmelidir.
[C-SR-2] [C-SR-1], bu ses efektinin AcousticEchoCanceler API ile kontrol edilebilmesi için ŞİDDETLE_ÖNERİLİR.
[C-SR-3] [C-SR-2], AudioEffect.Descriptor.uuid alanı aracılığıyla her bir AEC teknolojisi uygulamasının benzersiz şekilde tanımlanması için ŞİDDETLE TAVSİYE EDİLİR.
5.4.5. Eşzamanlı Kayıt
Cihaz uygulamaları android.hardware.microphone özelliğini beyan ediyorsa bu belgede açıklandığı gibi eşzamanlı yakalama özelliğini uygulamaları ZORUNLUDUR. Özellikle:
- [C-1-1]
AudioSource.VOICE_RECOGNITIONile yakalama yapan bir erişilebilirlik hizmetinin ve herhangi birAudioSourceile yakalama yapan en az bir uygulamanın mikrofona eşzamanlı erişmesine İZİN VERİLMELİDİR. - [C-1-2] MUST allow concurrent access to microphone by a pre-installed
application that holds an Assistant role and at least one application
capturing with any
AudioSourceexcept forAudioSource.VOICE_COMMUNICATIONorAudioSource.CAMCORDER. - [C-1-3] Bir uygulama
AudioSource.VOICE_COMMUNICATIONveyaAudioSource.CAMCORDERile kayıt yaparken erişilebilirlik hizmeti hariç diğer tüm uygulamalarda ses kaydını susturmalıdır. Ancak bir uygulamaAudioSource.VOICE_COMMUNICATIONüzerinden kayıt yaparken başka bir uygulama,CAPTURE_AUDIO_OUTPUTiznine sahip ayrıcalıklı (önceden yüklenmiş) bir uygulama ise sesli görüşmeyi kaydedebilir. [C-1-4] İki veya daha fazla uygulama aynı anda kayıt yapıyorsa ve hiçbir uygulamanın üstte kullanıcı arayüzü yoksa sesi en son kayıt yapmaya başlayan uygulama alır.
5.5. Ses oynatma
Android, uygulamaların 7.8.2 bölümünde tanımlandığı şekilde ses çıkışı çevre birimi üzerinden ses oynatmasına olanak tanıyan desteği içerir.
5.5.1. Ham Ses Oynatma
Cihaz uygulamaları android.hardware.audio.output değerini bildiriyorsa:
[C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına İZİN VERİLMELİDİR:
- Kaynak biçimler: Doğrusal PCM, 16 bit, 8 bit, kayan nokta
- Kanallar: Mono, Stereo, 8 kanala kadar geçerli çok kanallı yapılandırmalar
- Örnekleme hızları (Hz cinsinden):
- Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000
- Mono ve stereo olarak 96000
5.5.2. Ses efektleri
Android, cihaz uygulamaları için ses efektleri API'si sağlar.
Cihaz uygulamaları android.hardware.audio.output özelliğini beyan ediyorsa:
[C-1-1]
EFFECT_TYPE_EQUALIZERveEFFECT_TYPE_LOUDNESS_ENHANCERuygulamaları, AudioEffect alt sınıflarıEqualizerveLoudnessEnhanceraracılığıyla kontrol edilebilir şekilde DESTEKLENMELİDİR.[C-1-2]
Visualizersınıfı aracılığıyla kontrol edilebilen görselleştirici API uygulamasını DESTEKLEMELİDİR.[C-1-3] AudioEffect alt sınıfı aracılığıyla kontrol edilebilen
EFFECT_TYPE_DYNAMICS_PROCESSINGuygulamasını desteklemelidirDynamicsProcessing.[C-1-4] Efekt sonuçları çerçeve ses işlem hattına döndürüldüğünde, kayan nokta giriş ve çıkışlı ses efektleri desteklenmelidir. Bu, ekolayzer gibi tipik ekleme veya yardımcı efektleri ifade eder. Efekt sonuçları çerçeve ses işlem hattı tarafından görünür olmadığında (ör. son işlem veya boşaltılmış efektler) eşdeğer davranış şiddetle önerilir.
[C-1-5] Efekt sonuçları çerçeve ses ardışık düzenine döndürüldüğünde ses efektlerinin, mikser kanalı sayısı olarak da bilinen
FCC_LIMIT'ya kadar birden fazla kanalı desteklediğinden EMİN OLMALIDIR. Bu, normal ekleme veya yardımcı efektleri ifade eder ancak kanal sayısını değiştiren downmix, upmix veya uzamsallaştırma efektleri gibi özel efektleri kapsamaz. Efektler, çerçeve ses ardışık düzeni tarafından görünür olmadığında (ör. son işlem veya yük aktarılmış efektler) eşdeğer davranış önerilir.EFFECT_TYPE_BASS_BOOST,EFFECT_TYPE_ENV_REVERB,EFFECT_TYPE_PRESET_REVERBveEFFECT_TYPE_VIRTUALIZERuygulamalarınıAudioEffectalt sınıflarıBassBoost,EnvironmentalReverb,PresetReverbveVirtualizeraracılığıyla kontrol edilebilir şekilde DESTEKLEMELİDİR.[C-SR-1] Kayan noktalı ve çok kanallı efektleri desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
5.5.3. Ses Çıkış Ses Seviyesi
Otomotiv cihaz uygulamaları:
- AudioAttributes tarafından tanımlanan içerik türü veya kullanım ve
android.car.CarAudioManageriçinde herkese açık olarak tanımlanan araç ses sistemi kullanımı kullanılarak her ses akışının ses düzeyinin ayrı ayrı ayarlanmasına İZİN VERİLMELİDİR.
5.5.4. Ses Yük Aktarımı
Cihaz uygulamaları ses boşaltma oynatmayı destekliyorsa:
[C-SR-1] AudioTrack gapless API ve MediaPlayer için medya kapsayıcısı tarafından belirtildiğinde, aynı biçime sahip iki klip arasındaki oynatılan kesintisiz ses içeriğinin kırpılması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-2] AAC, MP3, OPUS ve PCM biçimleri için oynatmayı devre dışı bırakma özelliğinin uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları MMAP PCM boşaltma desteği beyan ediyorsa (AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD ve AUDIO_OUTPUT_FLAG_MMAP_NOIRQ içeren işaretlere sahip bir karışım bağlantı noktası tarafından beyan edilir):
[C-1-1] Stereo ve mono için 44,1 kHz ve 48 kHz'de en az
AUDIO_FORMAT_PCM_16_BIT'yi desteklemelidir.[C-1-2] Örnek başına 16 bit stereo PCM 48 kHz'de en az 5 saniyelik ses depolayabilecek bir arabellek boyutuna SAHİP OLMALIDIR.
5.5.5. Oynatma Parametreleri
Cihaz uygulamaları PlaybackParams API'yi destekliyorsa oynatma parametreleri:
- [C-1-1] 1,0 perdesiyle 0,5 ile 2,0 arasındaki hızları DESTEKLEMELİDİR.
5.6. Ses Gecikmesi
Ses gecikmesi, bir ses sinyalinin sistemden geçerken yaşadığı zaman gecikmesidir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikme sürelerine ihtiyaç duyar.
Bu bölümün amaçları doğrultusunda aşağıdaki tanımları kullanın:
output latency. Bir uygulamanın PCM kodlu bir veri çerçevesi yazdığı zaman ile karşılık gelen sesin cihaz üzerindeki bir dönüştürücüde ortama sunulduğu veya sinyalin bir bağlantı noktası üzerinden cihazdan ayrıldığı ve harici olarak gözlemlenebildiği arasındaki aralık.
Soğuk çıktı gecikmesi. Ses çıkışı sistemi, istekten önce boşta kalıp kapatıldığında, bir çıkış akışının başlatılması ile zaman damgalarına dayalı olarak ilk karenin sunum zamanı arasındaki süre.
Sürekli çıkış gecikmesi. Cihaz ses çalmaya başladıktan sonraki karelerin çıkış gecikmesi.
giriş gecikmesi. Bir sesin ortam tarafından cihaz üzerinde bulunan bir dönüştürücüye iletilmesi veya bir sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın PCM kodlu verilerin ilgili çerçevesini okuması arasındaki aralık.
kayıp giriş. Giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.
Soğuk giriş gecikmesi Ses giriş sistemi istekten önce boşta kalıp kapatıldığında, akışın başlatılması ile ilk geçerli karenin alınması arasındaki süre.
sürekli giriş gecikmesi. Cihaz ses yakalarken sonraki karelerin giriş gecikmesi.
Sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesi, sürekli çıkış gecikmesi ve bir arabellek süresinin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için gereken süreyi sağlar.
OpenSL ES PCM arabellek sırası API'si. Android NDK'deki PCM ile ilgili OpenSL ES API'leri kümesi.
AAudio yerel ses API'si. Android NDK'deki AAudio API'leri kümesi.
Zaman damgası. Bir akış içindeki göreli çerçeve konumundan ve bu çerçevenin ilişkili uç noktadaki ses işleme ardışık düzenine girdiği veya bu ardışık düzenden çıktığı tahmini zamandan oluşan bir çift. Ayrıca AudioTimestamp'i de inceleyin.
glitch. Ses sinyalinde geçici kesinti veya yanlış örnek değer. Bu durum genellikle çıkış için arabellek yetersizliği, giriş için arabellek taşması veya başka bir dijital ya da analog gürültü kaynağından kaynaklanır.
Ortalama mutlak sapma (MAD). Bir değer kümesi için ortalamadan sapmaların mutlak değerinin ortalaması.
CTS Verifier ile ölçülen dokunma-ton gecikmesi (TTL), ekrana dokunulduğu an ile bu dokunma sonucunda oluşturulan tonun hoparlörden duyulduğu an arasındaki süredir. Bu değer, çıkış için AAudio yerel ses API'si kullanılarak yapılan 5 ölçümün ortalamasıdır.
CTS Verifier tarafından ölçülen gidiş dönüş gecikmesi (RTL), AAudio yerel ses API'si kullanılarak çıkışı girişe geri besleyen bir geri döngü yolu üzerinden ölçülen 5 ölçümdeki ortalama sürekli gecikmedir.
Loopback yolları şunlardır:
- Hoparlör/mikrofon: Dahili hoparlörden dahili mikrofona.
- Analog: 3,5 mm analog jak ve geri döngü adaptörü.
- USB: USB - 3,5 mm adaptör ve bir geri döngü adaptörü veya USB ses arayüzü ve geri döngü kabloları.
FEATURE_AUDIO_LOW_LATENCY.
android.hardware.audio.low_latencyözelliği beyan edilmiş olmalıdır.FEATURE_AUDIO_PRO.
android.hardware.audio.proözelliği beyan edilmiş olmalıdır.MPC. Medya Performansı sınıfı.
Baş takibi gecikmesi. Atalet ölçüm birimi (IMU) tarafından yakalanan baş hareketinden, bu hareketin neden olduğu ses değişikliğinin kulaklık dönüştürücüleri tarafından algılanmasına kadar geçen süre.
Cihaz uygulamaları:
- [C-0-1] Bir uygulama, desteklenen bir
android.media.AudioManager.setCommunicationDevice()iledevice(ör. kablolu mikrofonlu kulaklıklar, yerleşik hoparlörler veya kulaklıklar ya da USB mikrofonlu kulaklıklar)setCommunicationDevice()işlevini döndürdükten sonraki 1.500 ms içindeandroid.media.AudioManager.OnCommunicationDeviceChangedListener.onCommunicationDeviceChanged()geri çağırma işlevinin bu ses sistemiyle çağrıldığından emin OLMALIDIR.true
Cihaz uygulamaları android.hardware.audio.output özelliğini destekliyorsa aşağıdaki şartları karşılamalı veya aşmalıdır:
[C-1-1] Android 15'te şart kaldırıldı.
[C-1-2] 500 milisaniye veya daha az soğuk çıkış gecikmesi.
[C-1-3]
AAudioStreamBuilder_openStream()kullanılarak bir çıkış akışının açılması 1.000 milisaniyeden kısa sürmelidir.[C-1-4]
AAudioStream_getTimestamptarafından döndürülen giriş ve çıkış zaman damgalarına göre hesaplanan gidiş dönüş gecikmeleri, hoparlörler, kablolu kulaklıklar ve kablosuz kulaklıklar içinAAUDIO_PERFORMANCE_MODE_NONEveAAUDIO_PERFORMANCE_MODE_LOW_LATENCY'nin ölçülen gidiş dönüş gecikmesinin 200 ms içinde OLMALIDIR.[C-SR-1] Android 15'te şart kaldırıldı.
[C-SR-2] Android 15'te şart kaldırıldı.
[C-SR-4] Android 15'te şart kaldırıldı.
[C-SR-5] Android 15'te bu şart kaldırıldı.
[C-SR-6] Android 15'te şart kaldırıldı.
[C-SR-7] Android 15'te bu şart kaldırıldı.
[C-2-1] Android 15'te bu şart kaldırıldı.
Cihaz uygulamaları android.hardware.microphone içeriyorsa aşağıdaki giriş sesi şartlarını KARŞILAMALIDIR:
[C-3-1] Android 15'te bu şart kaldırıldı.
[C-3-2] 500 milisaniye veya daha az soğuk giriş gecikmesi.
[C-3-3]
AAudioStreamBuilder_openStream()kullanılarak bir giriş akışının açılması 1.000 milisaniyeden kısa sürmelidir.[C-SR-8] Android 15'te şart kaldırıldı.
[C-SR-11] Android 15'te şart kaldırıldı.
[C-SR-12] Android 15'te şart kaldırıldı.
Aşağıdaki tabloda, 2.2.1'de tanımlanan ve android.hardware.audio.output ile android.hardware.microphone bildiren el cihazı uygulamaları için RTL ile ilgili şartlar tanımlanmıştır.
| Cihaz ve Beyanlar | RTL (ms) | MAD (ms) | Loopback Yolları |
|---|---|---|---|
| El Kamerası | 200 | 25 | hoparlör/mikrofon, analog 3,5 mm (destekleniyorsa), USB (destekleniyorsa) |
| MPC_C (17) ve sonraki sürümler | 65 | 10 | desteklenen tüm veri yolları |
| >= MPC_T (13) ile MPC_B (16) | 80 | 15 | en az bir yol |
| FEATURE_AUDIO_LOW_LATENCY | 50 | 10 | en az bir yol |
| FEATURE_AUDIO_PRO | 25 | 5 | en az bir yol |
| FEATURE_AUDIO_PRO | 20 | 5 | analog (destekleniyorsa) |
| FEATURE_AUDIO_PRO | 25 | 5 | USB (analog desteklenmiyorsa) |
Aşağıdaki tabloda, android.hardware.audio.output ve android.hardware.microphone bildiren 2.2.1'de tanımlandığı şekilde, el cihazı uygulamaları için TTL ile ilgili koşullar tanımlanmaktadır.
| Cihaz ve Beyanlar | TTL (ms) |
|---|---|
| El Kamerası | 250 |
| MPC_C (17) ve sonraki sürümler | 65 |
| >= MPC_T (13) ile MPC_B (16) | 80 |
| MPC_S (12) | 100 |
| FEATURE_AUDIO_PRO | 80 |
Cihaz uygulamaları, baş takibi ile spatial audio desteği içeriyorsa ve PackageManager.FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY
işaretini bildiriyorsa:
- [C-4-1] Ses güncelleme gecikmesiyle birlikte en fazla 300 ms'lik bir baş takibi gecikmesi OLMALIDIR.
5.7. Ağ Protokolleri
Cihaz uygulamaları, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemelidir.
Bir cihaz uygulamasının desteklemesi gereken her codec ve kapsayıcı biçimi için cihaz uygulaması:
[C-1-1] Bu codec'i veya kapsayıcıyı HTTP ve HTTPS üzerinden desteklemelidir.
[C-1-2] HTTP Canlı Yayın Taslak Protokolü, Sürüm 7 üzerinden aşağıdaki medya segmenti biçimleri tablosunda gösterildiği gibi ilgili medya segmenti biçimlerini desteklemelidir.
[C-1-3] Aşağıdaki RTSP tablosunda gösterildiği gibi ilgili RTSP yük biçimlerini DESTEKLEMELİDİR. İstisnalar için lütfen bölüm 5.1'deki tablo dipnotlarına bakın.
Medya segmenti biçimleri
| Segment biçimleri | Referanslar | Gerekli codec desteği |
|---|---|---|
| MPEG-2 Transport Stream (Aktarma Akışı) | ISO 13818 |
Video codec'leri:
Ses codec'leri:
|
| ADTS çerçeveleme ve ID3 etiketleri içeren AAC | ISO 13818-7 | AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.1 'e bakın. |
| WebVTT | WebVTT |
RTSP (RTP, SDP)
| Profil adı | Referanslar | Gerekli codec desteği |
|---|---|---|
| H264 AVC | RFC 6184 | H264 AVC ile ilgili ayrıntılar için bölüm 5.1.8'e bakın. |
| MP4A-LATM | RFC 6416 | AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.3'e bakın. |
| H263-1998 |
RFC 3551 RFC 4629 RFC 2190 |
H263 ile ilgili ayrıntılar için bölüm 5.1.8'e bakın. |
| H263-2000 | RFC 4629 | H263 ile ilgili ayrıntılar için bölüm 5.1.8'e bakın. |
| AMR | RFC 4867 | AMR-NB ile ilgili ayrıntılar için 5.1.3 bölümüne bakın. |
| AMR-WB | RFC 4867 | AMR-WB ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
| MP4V-ES | RFC 6416 | MPEG-4 SP ile ilgili ayrıntılar için bölüm 5.1.8'e bakın. |
| mpeg4-generic | RFC 3640 | AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.3'e bakın. |
| MP2T | RFC 2250 | Ayrıntılar için HTTP Live Streaming bölümündeki MPEG-2 Taşıma Akışı konusuna bakın. |
5.8. Güvenli Medya
Cihaz uygulamaları güvenli video çıkışını destekliyorsa ve güvenli yüzeyleri destekleyebiliyorsa:
- [C-1-1]
Display.FLAG_SECUREdesteği BEYAN EDİLMELİDİR.
Cihaz uygulamaları Display.FLAG_SECURE desteğini ve kablosuz görüntüleme protokolünü desteklediğini beyan ediyorsa:
- [C-2-1] Miracast gibi kablosuz protokollerle bağlanan ekranlar için bağlantıyı HDCP 2.x veya daha yüksek gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİ HALE GETİRMELİDİR.
Cihaz uygulamaları Display.FLAG_SECURE ve kablolu harici ekran desteğini beyan ediyorsa:
- [C-3-1] Kullanıcı tarafından erişilebilen kablolu bir bağlantı noktası üzerinden bağlanan tüm harici ekranlar için HDCP 1.2 veya daha yüksek bir sürüm desteklenmelidir.
5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)
Cihaz uygulamaları, android.software.midi özelliğinin android.content.pm.PackageManager sınıfı aracılığıyla desteklendiğini bildiriyorsa:
[C-1-1] Bu tür aktarımlar şunlar olduğunda, MIDI özellikli donanım aktarımlarının tümünde MIDI'yi desteklemelidir:
- USB ana makine modu, bölüm 7.7
- Bluetooth LE üzerinden MIDI, merkezi rolü üstlenir, bölüm 7.4.3
[C-1-2] Uygulamalar arası MIDI yazılım aktarımını (sanal MIDI cihazları) DESTEKLEMELİDİR.
[C-1-3] libamidi.so (yerel MIDI desteği) içermelidir.
USB çevre birimi modunda MIDI'yi DESTEKLEMELİDİR, 7.7 bölümü
5.10. Profesyonel Ses
Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla özellik android.hardware.audio.pro için destek bildiriminde bulunuyorsa:
[C-1-1] MUST report support for feature
android.hardware.audio.low_latency.[C-1-2]
FEATURE_AUDIO_PROiçin 5.6 Ses Gecikmesi bölümünde tanımlanan gecikme süresi koşullarını KARŞILAMALIDIR .[C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen USB bağlantı noktaları İÇERMELİDİR.
[C-1-4]
android.software.midiözelliği için destek BİLDİRİLMELİDİR.[C-1-5] AAudio native audio API'si ve
AAUDIO_PERFORMANCE_MODE_LOW_LATENCYkullanılarak USB ses gecikmesi şartları KARŞILANMALIDIR.[C-1-6] Soğuk çıkış gecikmesi 200 milisaniye veya daha az OLMALIDIR.
[C-1-7] 200 milisaniye veya daha az soğuk giriş gecikmesine SAHİP OLMALIDIR.
Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakı içeriyorsa:
- [C-2-2] Kablolu Ses Kulaklığı Spesifikasyonu (v1.1)'nun Mobil cihaz (jak) spesifikasyonları bölümüne UYGUN OLMALIDIR.
Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı atlanmışsa ve USB ana makine modunu destekleyen USB bağlantı noktaları varsa:
- [C-3-1] USB ses sınıfı uygulanmalıdır.
5.11. İşlenmemiş için yakalama
Android, android.media.MediaRecorder.AudioSource.UNPROCESSED ses kaynağı aracılığıyla işlenmemiş ses kaydını destekler. OpenSL ES'de, kayıt ön ayarıyla SL_ANDROID_RECORDING_PRESET_UNPROCESSED erişilebilir.
Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemeyi ve üçüncü taraf uygulamaların kullanımına sunmayı amaçlıyorsa:
[C-1-1] Desteği
android.media.AudioManagermülk PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED üzerinden bildirmelidir.[C-1-2] Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri sergilemelidir: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 100 Hz ile 7.000 Hz arasında ±10 dB.
[C-1-3] Düşük frekans aralığında genlik seviyeleri göstermelidir: Özellikle işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla 5 Hz ile 100 Hz arasında ±20 dB.
[C-1-4] Yüksek frekans aralığında genlik seviyeleri GÖSTERİLMELİDİR: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla 7.000 Hz ile 22 kHz arasında ±30 dB.
[C-1-5] Ses girişi hassasiyeti, 94 dB ses basıncı seviyesinde (SPL) çalınan 1.000 Hz sinüs dalgası ton kaynağının, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 16 bit örneklerde 520 RMS (veya kayan noktalı/çift duyarlıklı örneklerde -36 dB tam ölçek) ile yanıt verecek şekilde AYARLANMALIDIR.
[C-1-6] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun 60 dB veya daha yüksek bir sinyal-gürültü oranına (SNR) sahip OLMASI GEREKİR. (SNR, 94 dB SPL ile kendi gürültüsünün eşdeğer SPL'si arasındaki fark olarak ölçülür ve A ağırlıklı olarak hesaplanır).
[C-1-7] İşlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için toplam harmonik bozulma (THD) %1'den az OLMALIDIR.
[C-1-8] Seviyeyi istenen aralığa getirmek için kullanılan seviye çarpanı dışında, yolda başka sinyal işleme (ör. otomatik kazanç kontrolü, yüksek geçiren filtre veya yankı iptali) olmamalıdır. Başka bir deyişle:
- [C-1-9] Mimaride herhangi bir nedenle sinyal işleme varsa bu işleme devre dışı bırakılmalı ve sinyal yolunda etkili bir şekilde sıfır gecikme veya ek gecikme oluşturulmalıdır.
- [C-1-10] Seviye çarpanının yolda olmasına izin verilir ancak SİNYAL YOLUNDA GECİKME VEYA GECİKMEYE NEDEN OLMAMALIDIR.
Tüm SPL ölçümleri, doğrudan test edilen mikrofonun yanında yapılır. Birden fazla mikrofon yapılandırması için bu şartlar her mikrofon için geçerlidir.
Cihaz uygulamaları android.hardware.microphone beyan ediyorsa ancak işlenmemiş ses kaynağını desteklemiyorsa:
- [C-2-1] Destek eksikliğini düzgün bir şekilde belirtmek için
AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED)API yöntemi içinnulldöndürmELİDİR. [C-SR-1], işlenmemiş kayıt kaynağının sinyal yoluyla ilgili mümkün olduğunca çok sayıda koşulu karşılamak için HÂLÂ ŞİDDETLE TAVSİYE EDİLİR.
5.12. HDR Video
Android 13, yakında yayınlanacak bir belgede açıklanan HDR teknolojilerini destekler.
Pixel Biçimi
Bir video kod çözücü COLOR_FormatYUVP010 desteği sunduğunu belirtiyorsa:
[C-1-1] CPU okuma (ImageReader, MediaImage, ByteBuffer) için P010 biçimini DESTEKLEMELİDİR. Android 13'te P010, Y ve UV düzlemleri için rastgele adım değerine izin verecek şekilde gevşetildi.
[C-1-2] P010 çıkış arabelleği,
GPU_SAMPLINGkullanımıyla ayrıldığında GPU tarafından örneklenmelidir. Bu, uygulamaların GPU bileşimini ve özel ton eşlemeyi etkinleştirir.
Bir video kod çözücü COLOR_Format32bitABGR2101010 desteği sunduğunu belirtiyorsa:
- [C-2-1] Çıkış yüzeyi için
RGBA_1010102biçimini ve CPU tarafından okunabilir (ByteBuffer çıkışı) biçimi DESTEKLEMELİDİR.
Bir video kodlayıcı COLOR_FormatYUVP010 desteği sunduğunu belirtiyorsa:
- [C-3-1] Giriş yüzeyi ve CPU ile yazılabilir (ImageWriter, MediaImage, ByteBuffer) giriş için P010 biçimini DESTEKLEMELİDİR.
Bir video kodlayıcı COLOR_Format32bitABGR2101010 desteği sunduğunu belirtiyorsa:
- [C-4-1] Giriş yüzeyi ve CPU tarafından yazılabilir (ImageWriter, ByteBuffer) giriş için
RGBA_1010102biçimini DESTEKLEMELİDİR. Not: Kodlayıcılar için çeşitli aktarım eğrileri arasında dönüştürme YAPILMASI GEREKMEZ.
HDR yakalama gereksinimleri
HDR profillerini destekleyen tüm video kodlayıcılar için cihaz uygulamaları:
[C-5-1] HDR meta verilerinin kesin olduğu VARSAYILMAMALIDIR. Örneğin, kodlanmış karede en yüksek parlaklık düzeyinin ötesinde pikseller olabilir veya histogram kareyi temsil etmeyebilir.
Kodlanmış akışlar için uygun HDR statik meta verileri oluşturmak üzere HDR dinamik meta verilerini toplamalı ve her kodlama oturumunun sonunda bunları çıkış olarak vermelidir.
Cihaz uygulamaları, CamcorderProfile API'lerini kullanarak HDR çekimini destekliyorsa:
[C-6-1] Camera2 API'leri aracılığıyla HDR yakalamayı da DESTEKLEMELİDİR.
[C-6-2] Desteklenen her HDR teknolojisi için en az bir donanım hızlandırmalı video kodlayıcıyı DESTEKLEMELİDİR.
[C-6-3] EN AZ HLG kaydı desteklenmelidir.
[C-6-4] HDR meta verilerinin (HDR teknolojisi için geçerliyse) çekilen video dosyasına yazılması DESTEKLENMELİDİR. AV1, HEVC ve DolbyVision için bu, meta verilerin kodlanmış bit akışına dahil edilmesi anlamına gelir.
[C-6-5] P010 ve
COLOR_FormatYUVP010desteklenmelidir.[C-6-6] Yakalanan profil için varsayılan donanım hızlandırmalı kod çözücüde HDR'den SDR'ye ton eşlemeyi DESTEKLEMELİDİR. Başka bir deyişle, bir cihaz HDR10+ HEVC yakalayabiliyorsa varsayılan HEVC kod çözücüsü, yakalanan akışı SDR olarak çözebilmelidir.
HDR düzenleme koşulları
Cihaz uygulamaları, HDR düzenlemeyi destekleyen video kodlayıcılar içeriyorsa:
- Mevcut olmadığında HDR meta verilerini oluşturmak için minimum gecikme SÜRESİNİ kullanmalı ve meta verilerin bazı karelerde mevcut olup bazılarında mevcut olmadığı durumları sorunsuz bir şekilde işlemelidir. Bu meta veriler kesin OLMALIDIR (örneğin, karenin gerçek tepe parlaklığını ve histogramını temsil etmelidir).
Cihaz uygulaması FEATURE_HdrEditing'yı destekleyen codec'ler içeriyorsa bu codec'ler:
[C-7-1] En az bir HDR profilini DESTEKLEMELİDİR.
[C-7-2] Bu codec tarafından tanıtılan tüm HDR profilleri için
FEATURE_HdrEditingdesteklenmelidir. Başka bir deyişle, HDR meta verileri kullanılmadığında desteklenen tüm HDR profilleri için HDR meta verileri oluşturulmalıdır.[C-7-3] HDR kod çözümlü sinyali tamamen koruyan aşağıdaki video kodlayıcı giriş biçimleri DESTEKLENMELİDİR:
RGBA_1010102(zaten hedef aktarım eğrisinde) hem giriş yüzeyi hem de ByteBuffer için veCOLOR_Format32bitABGR2101010desteğini duyurmalıdır.
Cihaz uygulaması FEATURE_HdrEditing'yı destekleyen codec'ler içeriyorsa cihaz:
- [C-7-4]
EXT_YUV_targetOpenGL uzantısı desteğinin reklamı YAPILMALIDIR.
HDR Ekran Gereksinimleri
Cihaz uygulamaları, ADATASPACE_TRANSFER_HLG ile kodlanmış arabellek içeriği alırsa ve bu içerik SurfaceControl.Transaction#setBuffer üzerinden ekrana gönderilirse:
- [C-8-1] BT. 2408-7'deki grafik beyazı önerisine UYULMALI ve bu içerik yalnızca SDR içeriğinden en fazla 4,926 kat daha büyük olacak şekilde gösterilmelidir.
6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
6.1. Geliştirici Araçları
Cihaz uygulamaları:
[C-0-1] Android SDK'sında sağlanan Android Geliştirici Araçları desteklenmelidir.
[C-0-2] Android SDK'sında ve AOSP'de sağlanan kabuk komutlarında belgelendiği şekilde adb'yi desteklemelidir. Bu komutlar,
dumpsys,cmd statsve Simpleperf dahil olmak üzere uygulama geliştiriciler tarafından kullanılabilir.[C-0-11]
cmd testharnesskabuk komutunu DESTEKLEMELİDİR. Cihaz uygulamalarını kalıcı veri bloğu olmadan önceki bir Android sürümünden yükseltme, C-0-11'den muaf tutulabilir.[C-0-3] MUST NOT alter the format or the contents of device system events (batterystats, diskstats, fingerprint, graphicsstats, netstats, notification, procstats) logged via the dumpsys command.
[C-0-10] Aşağıdaki etkinlikleri eksiksiz olarak kaydetmeli ve
cmd statskabuk komutuna veStatsManagerSystem API sınıfına erişilebilir ve kullanılabilir hale getirmelidir.ActivityForegroundStateChangedAnomalyDetectedAppBreadcrumbReportedAppCrashOccurredAppStartOccurredBatteryLevelChangedBatterySaverModeStateChangedBleScanResultReceivedBleScanStateChangedChargingStateChangedDeviceIdleModeStateChangedForegroundServiceStateChangedGpsScanStateChangedInputDeviceUsageReportedJobStateChangedKeyboardConfiguredKeyboardSystemsEventReportedPluggedStateChangedPressureStallInformationScheduledJobStateChangedScreenStateChangedSyncStateChangedSystemElapsedRealtimeTouchpadUsageUidProcessStateChangedWakelockStateChangedWakeupAlarmOccurredWifiLockStateChangedWifiMulticastLockStateChangedWifiScanStateChanged
[C-0-4] Cihaz tarafındaki adb arka plan programı varsayılan olarak etkin olmamalı ve Android Debug Bridge'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma OLMALIDIR.
[C-0-5] Güvenli adb'yi DESTEKLEMELİDİR. Android, güvenli adb desteği içerir. Güvenli adb, bilinen kimliği doğrulanmış ana makinelerde adb'yi etkinleştirir.
[C-0-6] adb'nin bir ana makineden bağlanmasına izin veren bir mekanizma SAĞLANMALIDIR. Özellikle:
USB bağlantı noktası olmayan cihaz uygulamaları çevre birimi modunu destekliyorsa:
[C-3-1] MUST implement adb via local-area network (such as Ethernet or Wi-Fi).
[C-3-2] Geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows 7, 8 ve 10 sürücüleri SAĞLANMALIDIR.
Cihaz uygulamaları, ana makineye kablosuz veya Ethernet üzerinden adb bağlantılarını destekliyorsa:
- [C-4-1]
AdbManager#isAdbWifiSupported()method returntrueolmalıdır.
Cihaz uygulamaları, ana makineye Wi-Fi veya Ethernet üzerinden adb bağlantılarını destekliyorsa ve en az bir kamera içeriyorsa:
[C-5-1]
AdbManager#isAdbWifiQrSupported()yöntemitruedöndürmelidir.Dalvik Debug Monitor Service (ddms)
- [C-0-7] Android SDK'da belgelendiği şekilde tüm ddms özelliklerini desteklemelidir. ddms, adb'yi kullandığından ddms desteği varsayılan olarak ETKİN OLMAMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Debug Bridge'i etkinleştirdiğinde DESTEKLENMELİDİR.
-
- [C-0-9] Android SDK'da belgelendiği şekilde systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak devre dışı olmalı ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma OLMALIDIR.
-
[C-SR-1] Are STRONGLY RECOMMENDED to expose a
/system/bin/perfettobinary to the shell user which cmdline complies with the perfetto documentation.[C-SR-2] Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırmasını giriş olarak kabul etmek için perfetto ikili programının kullanılması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-3] Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izi yazmak için perfetto ikili programının kullanılması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-4] STRONGLY RECOMMENDED, perfetto ikili programı aracılığıyla the perfetto documentation'da açıklanan veri kaynaklarından en azından birini sağlamak.
-
- [C-0-12] Bir uygulama Low Memory Killer tarafından sonlandırıldığında statsd günlüğüne
LMK_KILL_OCCURRED_FIELD_NUMBERAtom yazılmalıdır.
- [C-0-12] Bir uygulama Low Memory Killer tarafından sonlandırıldığında statsd günlüğüne
-
Cihaz uygulamaları
cmd testharnesskabuk komutunu destekliyorsa vecmd testharness enableçalıştırıyorsa:[C-2-1] MUST return
trueforActivityManager.isRunningInUserTestHarness()[C-2-2] Test Bandı Modu belgelerinde açıklandığı şekilde Test Bandı Modu uygulanmalıdır.
GPU çalışma bilgileri
Cihaz uygulamaları:
- [C-0-13]
dumpsys gpu --gpuworkçekirdek izleme noktası tarafından döndürülen toplu GPU çalışma verilerini görüntülemek içindumpsys gpu --gpuworkkabuk komutunu uygulamalı veya izleme noktası desteklenmiyorsa veri görüntülememelidir.power/gpu_work_periodAOSP uygulamasıframeworks/native/services/gpuservice/gpuwork/'dır.
- [C-0-13]
Cihaz uygulamaları, android.hardware.vulkan.version özellik işaretleri aracılığıyla Vulkan 1.0 veya sonraki sürümlerin desteklendiğini bildiriyorsa:
[C-1-1] Uygulama geliştiricinin GPU hata ayıklama katmanlarını etkinleştirmesine/devre dışı bırakmasına olanak tanıyan bir işlev SAĞLANMALIDIR.
[C-1-2] GPU hata ayıklama katmanları etkinleştirildiğinde, vkEnumerateInstanceLayerProperties() ve vkCreateInstance() API yöntemlerini desteklemek için hata ayıklanabilir uygulamaların temel dizininde bulunan, harici araçlar tarafından sağlanan (yani platformun veya uygulama paketinin parçası olmayan) kitaplıklardaki katmanları listelemelidir.
Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_frequency sistem özelliklerini true olarak ayarlarsa:
- [C-6-1]
power.proto'de tanımlandığı şekilde,power/gpu_frequencybiçiminde belirtilen bir GPU sıklığı izleme noktası RAPORLAMALIDIR.
Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_counters sistem özelliklerini true olarak ayarlarsa:
[C-7-1]
gpu.countersadlı bir veri kaynağı için,perfetto --querykullanılarak sorgulanabilen bir Perfetto veri üreticisi SAĞLANMALIDIR.[C-7-2] GPU sayaç izleme paketi proto'suna uygun olarak GPU sayaç açıklamalarını bildirmelidir.
[C-7-3] MUST report conformant values for the device's GPU counters following the gpu counter trace packet proto.
[C-7-4] Etkinleştirilen tüm GPU sayaçlarının metin açıklamaları, perfetto izine zaman damgası olmadan kaydedilmelidir.
[C-7-6]
GpuCounterSpec#select_by_defaultbölümünde belirtildiği gibi, profilleme için boş olmayan bir varsayılan GPU performans sayaçları grubu SAĞLANMALIDIR.- Bu varsayılan sayaçların tümü aynı anda etkinleştirilebilmelidir.
- Etkinleştirildiklerinde TÜMÜ Perfetto'ya değer göndermelidir.
[C-7-7]
GpuCounterSpec#select_by_defaultkullanılarak, varsayılan olarak seçilen en az bir sayaç için GPU kullanımını YANSITMALIDIR.
Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_counters.period sistem özelliklerini true olarak ayarlarsa:
[C-8-1] GPU sayaçlarının örnekleme hızı için
counter_period_nsdeğerine UYULMALIDIR. Desteklenen örnekleme hızı 1 ms veya daha hızlı OLMALIDIR.[C-SR-1] 0,2 ms veya daha hızlı bir örnekleme hızını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_counters.groups sistem özelliklerini true olarak ayarlarsa:
- [C-9-1]
GpuCounterSpectarafından belirtildiği şekilde aşağıdaki GPU sayaç gruplarının her birinde en az bir sayaç OLMALIDIR:COMPUTE,FRAGMENTS,MEMORY,PRIMITIVESveVERTICES.
Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_counters.groups sistem özelliklerini true olarak ayarlarsa ve cihaz ışın izlemeyi destekliyorsa:
[C-10-1]
RAY_TRACINGgrubunda sayaç OLMALIDIR.Cihaz uygulamaları hem
graphics.gpu.profiler.supporthem degraphics.gpu.profiler.support.gpu_counters.zeroes_optimizationsistem özelliklerinitrueolarak ayarlarsa:[C-11-1] Aynı Perfetto izleme oturumunda, GPU sayaçları yalnızca önceki veya sonraki raporlanan değer sıfır değilse sıfır değerlerini bildirmelidir.
Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.render_stages sistem özelliklerini true olarak ayarlarsa:
[C-12-1]
gpu.renderstagesadlı veri kaynağı içinperfetto --query.kullanılarak sorgulanabilen bir Perfetto veri üreticisi SAĞLANMALIDIR.[C-12-2] GPU oluşturma aşaması etkinlik proto'sunu izleyerek GPU oluşturma aşamaları için uygun değerler RAPORLANMALIDIR.
Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.render_stages.queue_submit sistem özelliklerini true olarak ayarlarsa:
- [C-13-1] Her Vulkan kuyruğu gönderme çağrısı için Vulkan sürücüsü, Vulkan API etkinlik mesajı spesifikasyonuna göre bir Perfetto izleme etkinliği yayınlamalıdır.
- Bu etkinlik, karşılık gelen GPU oluşturma aşaması etkinliğindeki
submission_idile eşleşen, benzersiz ve tekdüze olarak artan birsubmission_idiçermelidir.
- Bu etkinlik, karşılık gelen GPU oluşturma aşaması etkinliğindeki
6.2. Geliştirici seçenekleri
Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmasına olanak tanır.
Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sağlamalıdır. Bu bağlamda:
- [C-0-1] Uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS amacına UYULMALIDIR. Yukarı akış Android uygulaması, Geliştirici Seçenekleri menüsünü varsayılan olarak gizler ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesine yedi (7) kez basarak Geliştirici Seçenekleri'ni başlatmasına olanak tanır.
- [C-0-2] Geliştirici Seçenekleri varsayılan olarak GİZLENMELİDİR.
- [C-0-3] Geliştirici Seçenekleri'nin etkinleştirilmesi için bir üçüncü taraf uygulamasına diğerine kıyasla ayrıcalıklı muamele yapmayan net bir mekanizma SAĞLANMALIDIR. Geliştirici Seçenekleri'nin nasıl etkinleştirileceğini açıklayan, herkese açık bir doküman veya web sitesi SAĞLANMALIDIR. Bu doküman veya web sitesi, Android SDK dokümanlarından BAĞLANABİLİR olmalıdır.
- Geliştirici Seçenekleri etkinleştirildiğinde ve kullanıcının güvenliği söz konusu olduğunda kullanıcıya sürekli görsel bildirim GÖSTERİLMELİDİR.
- MAY, kullanıcının güvenliğinin söz konusu olduğu durumlarda dikkat dağıtılmasını önlemek için Geliştirici Seçenekleri menüsüne erişimi geçici olarak sınırlayabilir. Bu amaçla menüyü görsel olarak gizleyebilir veya devre dışı bırakabilir.
7. Donanım Uyumluluğu
Bir cihaz, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir donanım bileşeni içeriyorsa:
- [C-0-1] Cihaz uygulaması, bu API'yi Android SDK belgelerinde açıklandığı şekilde uygulamalıdır.
SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime girerse ve cihaz uygulamasında bu bileşen yoksa:
- [C-0-2] Bileşen API'leri için sınıf tanımlarının (SDK tarafından belgelendiği şekilde) tamamı sunulmalıdır.
- [C-0-3] API'nin davranışları, makul bir şekilde hiçbir işlem yapmayacak şekilde uygulanmalıdır.
- [C-0-4] API yöntemleri, SDK belgelerinde izin verilen durumlarda boş değerler döndürmelidir.
- [C-0-5] API yöntemleri, SDK belgelerinde boş değerlere izin verilmeyen sınıfların no-op uygulamalarını döndürmelidir.
- [C-0-6] API yöntemleri, SDK belgelerinde belgelenmemiş istisnalar oluşturmamalıdır.
- [C-0-7] Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki
getSystemAvailableFeatures()vehasSystemFeature(String)yöntemleriyle tutarlı bir şekilde doğru donanım yapılandırma bilgilerini bildirmelidir.
Bu koşulların geçerli olduğu senaryolara tipik bir örnek, telephony API'dir: Bu API'ler, telefon olmayan cihazlarda bile makul bir şekilde işlem yapmadan uygulanmalıdır.
7.1. Ekran ve Grafik
Android, üçüncü taraf uygulamalarının çeşitli donanım ekranlarında ve yapılandırmalarında iyi çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza göre otomatik olarak ayarlayan özellikler içerir. Android ile uyumlu ekran, Android Developers - Screen compatibility overview, bu bölüm (7.1) ve alt bölümlerinde açıklanan tüm davranışları ve API'leri, ayrıca bu CDD'nin 2. bölümünde belgelenen ek cihaza özel davranışları uygulayan bir ekran görüntüsüdür.
Cihaz uygulamaları:
- [C-0-1] Üçüncü taraf uygulamaları varsayılan olarak YALNIZCA Android ile uyumlu ekranlarda oluşturulmalıdır.
Bu bölümdeki şartların referans verdiği birimler aşağıdaki şekilde tanımlanır:
fiziksel çapraz boyut. Ekranın aydınlatılmış kısmının iki zıt köşesi arasındaki mesafedir (inç cinsinden).
density. 1 inçlik doğrusal bir yatay veya dikey aralığın kapsadığı piksel sayısıdır. İnç başına piksel (ppi veya dpi) olarak ifade edilir. ppi ve dpi değerlerinin listelendiği yerlerde hem yatay hem de dikey dpi, listelenen aralıkta olmalıdır.
en-boy oranı. Ekranın uzun boyutunun kısa boyutuna oranı. Örneğin, 480 x 854 piksel boyutundaki bir ekranın en-boy oranı 854 / 480 = 1, 779 veya yaklaşık olarak "16:9" olur.
Yoğunluktan bağımsız piksel (dp). 160 ekran yoğunluğuna göre normalleştirilmiş bir sanal piksel birimi. Belirli bir yoğunluk
dve piksel sayısıpiçin yoğunluktan bağımsız piksel sayısıdpşu şekilde hesaplanır:dp = (160 / d) * p.
7.1.1. Ekran Yapılandırması
7.1.1.1. Ekran Boyutu ve Şekli
Android kullanıcı arayüzü çerçevesi, çeşitli farklı mantıksal ekran düzeni boyutlarını destekler ve uygulamaların, Configuration.screenLayout ile SCREENLAYOUT_SIZE_MASK ve Configuration.smallestScreenWidthDp kullanarak mevcut yapılandırmanın ekran düzeni boyutunu sorgulamasına olanak tanır.
Cihaz uygulamaları:
[C-0-1] Android SDK dokümanlarında tanımlandığı şekilde
Configuration.screenLayoutiçin doğru düzen boyutunu bildirmelidir. Daha net bir ifadeyle, cihaz uygulamaları aşağıdaki gibi doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını bildirmelidir:Configuration.uiModedeğeriUI_MODE_TYPE_WATCHdışında bir değer olarak ayarlanmış veConfiguration.screenLayoutiçinsmallboyutu bildiren cihazlarda en az 426 dp x 320 dp olmalıdır.normaliçinConfiguration.screenLayoutboyutu bildiren cihazlar en az 480 dp x 320 dp olmalıdır.largeboyutu bildiren cihazlar,Configuration.screenLayoutiçin en az 640 dp x 480 dp boyutunda OLMALIDIR.Configuration.screenLayoutiçinxlargeboyutu bildiren cihazlar, en az 960 dp x 720 dp olmalıdır.
[C-0-2] Uygulamaların ekran boyutları için belirttiği destek, Android SDK belgelerinde açıklandığı gibi
AndroidManifest.xmliçindeki <supports-screens> özelliği aracılığıyla doğru şekilde karşılanmalıdır.Köşeleri yuvarlatılmış, Android ile uyumlu ekranlara SAHİP OLABİLİR.
Cihaz uygulamaları, UI_MODE_TYPE_NORMAL
boyut yapılandırmasına uygun ekranları destekliyorsa ve bu ekranları oluşturmak için yuvarlak köşeli fiziksel ekranlar kullanıyorsa:
[C-1-1] MUST, bu tür her bir gösterim için aşağıdaki şartlardan en az birinin karşılandığından emin olmalıdır:
Yuvarlatılmış köşelerin yarıçapı 38 dp'den küçük veya 38 dp'ye eşit olmalıdır.
Mantıksal ekranın her köşesine 18 dp x 18 dp boyutlarında bir kutu sabitlendiğinde her kutunun en az bir pikseli ekranda görünür.
Kullanıcıların, dikdörtgen köşeli ekran moduna geçmesine olanak tanınmalıdır.
Cihaz uygulamaları yalnızca NO_KEYS klavye yapılandırmasını destekliyorsa
ve UI_MODE_TYPE_NORMAL kullanıcı arayüzü modu yapılandırması için destek bildirmeyi amaçlıyorsa:
- [C-4-1] Ekran kesikleri hariç olmak üzere en az 596 dp x 384 dp veya daha büyük bir düzen boyutuna SAHİP OLMALIDIR.
Yardımcı veya uzantı API'lerini doğru şekilde uygulama hakkında ayrıntılı bilgi için Window Manager Jetpack'in herkese açık dokümanlarına bakın.
- [C-4-1] Android 15'te bu şart kaldırıldı.
7.1.1.2. Ekran En-Boy Oranı
Bu bölüm Android 14'te kaldırıldı.
7.1.1.3. Ekran Yoğunluğu
Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar.
Cihaz Uygulamaları:
[C-0-1]
DisplayMetricsadresinde listelenen Android çerçeve yoğunluklarından biriDENSITY_DEVICE_STABLEAPI aracılığıyla RAPORLANMALIDIR ve bu değer, her fiziksel ekran için statik bir değer olmalıdır. Ancak cihaz, ilk başlatmadan sonra kullanıcının yaptığı ekran yapılandırma değişikliklerine (ör. görüntü boyutu) göre farklı birDisplayMetrics.densitybildirebilir.Sayısal olarak ekranın fiziksel yoğunluğuna en yakın olan standart Android çerçeve yoğunluğunu veya elde taşınabilir bir cihazın aynı eşdeğer açısal görüş alanı ölçümlerine eşlenecek bir değeri tanımlamalıdır.
Cihaz uygulamaları, cihazın görüntü boyutunu değiştirmek için bir olanak sunuyorsa:
[C-1-1] Gösterim, 1,5 katından daha fazla ölçeklendirilmemeli
DENSITY_DEVICE_STABLEveya etkili minimum ekran boyutu, hangisi önce gerçekleşirse 320 dp'den (kaynak niteleyicisisw320dp'ye eşdeğer) daha küçük olmamalıdır.[C-1-2] Ekran,
DENSITY_DEVICE_STABLEboyutunun 0,85 katından daha küçük bir boyuta ölçeklendirilmemelidir.İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için YUKARIDA BELİRTİLEN SINIRLARA UYARAK aşağıdaki yerel görüntülü reklam seçeneklerinin ölçeklendirilmesi ÖNERİLİR:
- Küçük: 0,85x
- Varsayılan: 1x (Yerel ekran ölçeği)
- Büyük: 1,15x
- Daha büyük: 1,3 kat
- En büyük 1,45x
7.1.2. Görüntüleme Metrikleri
Cihaz uygulamaları, Android ile uyumlu ekranları veya Android ile uyumlu ekranlara video çıkışını içeriyorsa:
- [C-1-1]
android.util.DisplayMetricsAPI'sinde tanımlanan Android ile uyumlu tüm görüntülü reklam metrikleri için doğru değerler RAPORLANMALIDIR.
Cihaz uygulamaları yerleşik bir ekran veya video çıkışı içermiyorsa:
- [C-2-1]
android.util.DisplayMetricsAPI'sinde tanımlandığı şekilde, Android ile uyumlu ekranın doğru değerleri,view.Displayemüle edilmiş varsayılan için RAPORLANMALIDIR.
7.1.3. Ekran Yönlendirme
Cihaz uygulamaları:
[C-0-1] Hangi ekran yönlerini desteklediklerini (
android.hardware.screen.portraitve/veyaandroid.hardware.screen.landscape) BİLDİRMELİ ve desteklenen en az bir yönü bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönlü yatay ekrana sahip bir cihaz YALNIZCAandroid.hardware.screen.landscapedeğerini bildirmelidir.[C-0-2] Cihazın mevcut yönü için doğru değeri,
android.content.res.Configuration.orientation,android.view.Display.getOrientation()veya diğer API'ler aracılığıyla sorgulandığında RAPORLAMALIDIR.
Cihaz uygulamaları her iki ekran yönünü de destekliyorsa:
[C-1-1] Android 16'da şart kaldırıldı.
[C-1-2] Yön değiştirilirken bildirilen ekran boyutu veya yoğunluğu DEĞİŞTİRİLMEMELİDİR.
Varsayılan olarak dikey veya yatay yönü SEÇEBİLİR.
7.1.4. 2D ve 3D Grafik Hızlandırma
7.1.4.1. OpenGL ES
Cihaz uygulamaları:
[C-0-1] Yönetilen API'ler (ör.
GLES10.getString()yöntemi aracılığıyla) ve yerel API'ler aracılığıyla desteklenen OpenGL ES sürümlerini (1.1, 2.0, 3.0, 3.1, 3.2) doğru şekilde tanımlamalıdır.[C-0-2] Desteklediği belirlenen her OpenGL ES sürümü için ilgili tüm yönetilen API'lerin ve yerel API'lerin desteğini İÇERMELİDİR.
Cihaz uygulamalarında ekran veya video çıkışı varsa:
[C-1-1] Android SDK belgelerinde belirtildiği ve ayrıntılı olarak açıklandığı gibi OpenGL ES 1.1, 2.0, 3.0 ve 3.1'i DESTEKLEMELİDİR.
[C-SR-1] Android 15'te şart kaldırıldı.
OpenGL ES 3.2'yi DESTEKLEMELİDİR.
OpenGL ES dEQP testleri, her biri ilişkili bir tarih/sürüm numarası içeren bir dizi test listesine ayrılır. Bunlar, Android kaynak ağacında external/deqp/android/cts/main/glesXX-master-YYYY-MM-DD.txt konumunda bulunur. OpenGL ES'yi kendi bildirdiği düzeyde destekleyen bir cihaz, bu düzeydeki ve önceki tüm test listelerinde dEQP testlerini geçebileceğini gösterir.
Cihaz uygulamaları OpenGL ES sürümlerinden birini destekliyorsa:
[C-2-1] Uyguladıkları diğer OpenGL ES uzantılarını OpenGL ES tarafından yönetilen API'ler ve yerel API'ler aracılığıyla bildirmeli ve desteklemedikleri uzantı dizelerini bildirmemelidir.
[C-2-2]
EGL_KHR_image,EGL_KHR_image_base,EGL_ANDROID_image_native_buffer,EGL_ANDROID_get_native_client_buffer,EGL_KHR_wait_sync,EGL_KHR_get_all_proc_addresses,EGL_ANDROID_presentation_time,EGL_KHR_swap_buffers_with_damage,EGL_ANDROID_recordableveEGL_ANDROID_GLES_layersuzantılarını DESTEKLEMELİDİR.[C-2-3]
android.software.opengles.deqp.levelözellik bayrağı aracılığıyla desteklenen OpenGL ES dEQP testlerinin maksimum sürümü BİLDİRİLMELİDİR.[C-2-4]
android.software.opengles.deqp.levelözellik bayrağında belirtildiği gibi en azından 132383489 sürümünü (1 Mart 2020'den itibaren) desteklemelidir.[C-2-5] Desteklenen her OpenGL ES sürümü için, 132383489 sürümü ile
android.software.opengles.deqp.levelözellik bayrağında belirtilen sürüm arasındaki test listelerinde yer alan tüm OpenGL ES dEQP testlerini GEÇMELİDİR.[C-SR-2]
EGL_KHR_partial_updateveOES_EGL_image_externaluzantılarını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.Genellikle tedarikçiye özgü olan, destekledikleri tüm doku sıkıştırma biçimlerini
getString()yöntemiyle doğru şekilde bildirmelidir.EGL_IMG_context_priorityveEGL_EXT_protected_contentuzantılarını DESTEKLEMELİDİR.
Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2'yi desteklediğini beyan ediyorsa:
[C-3-1]
libGLESv2.sokitaplığındaki OpenGL ES 2.0 işlev sembollerine ek olarak bu sürümler için ilgili işlev sembollerini dışa aktarmalıdır.[C-SR-3]
OES_EGL_image_external_essl3uzantısını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa:
- [C-4-1] OpenGL ES Android Extension Pack'in tamamını DESTEKLEMELİDİR.
Cihaz uygulamaları, OpenGL ES Android Extension Pack'i tamamen destekliyorsa:
- [C-5-1]
android.hardware.opengles.aepözellik bayrağıyla desteği TANIMLAMALIDIR.
Cihaz uygulamaları EGL_KHR_mutable_render_buffer
uzantısı için destek sunuyorsa:
- [C-6-1]
EGL_ANDROID_front_buffer_auto_refreshuzantısı da desteklenmelidir.
7.1.4.2. Vulkan
Android, yüksek performanslı 3D grafikler için düşük ek yüke sahip, platformlar arası bir API olan Vulkan'ı destekler.
Cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:
[C-SR-1] Vulkan 1.3 desteğinin eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-4-1] Vulkan varyant sürümünü (yani Vulkan çekirdek sürümünün varyant kısmı sıfır OLMALIDIR) destekLEMEMELİDİR.
Cihaz uygulamalarında ekran veya video çıkışı varsa:
- [C-SR-2] Vulkan 1.3 desteğinin eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Vulkan dEQP testleri, her biri ilişkili bir tarih/sürüm içeren bir dizi test listesine ayrılır. Bunlar, Android kaynak ağacında external/deqp/android/cts/main/vk-master-YYYY-MM-DD.txt konumunda bulunur. Vulkan'ı kendi bildirdiği düzeyde destekleyen bir cihaz, bu düzeydeki ve önceki tüm test listelerindeki dEQP testlerini geçebileceğini gösterir.
Cihaz uygulamaları Vulkan desteği içeriyorsa:
[C-1-1]
android.hardware.vulkan.levelveandroid.hardware.vulkan.versionözellik işaretleriyle doğru tam sayı değeri RAPORLANMALIDIR.[C-1-2] Vulkan yerel API'si
vkEnumeratePhysicalDevices()için en az birVkPhysicalDevicenumaralandırılmalıdır.[C-1-3] MUST, numaralandırılmış her
VkPhysicalDeviceiçin Vulkan 1.1 API'lerini tam olarak uygulamalıdır.[C-1-4] Uygulama paketinin yerel kitaplık dizininde
libVkLayer*.soolarak adlandırılan yerel kitaplıklarda bulunan katmanlar, Vulkan yerel API'lerivkEnumerateInstanceLayerProperties()vevkEnumerateDeviceLayerProperties()aracılığıyla listelenmelidir.
- [C-1-5] Uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanları listelememeli veya uygulama
android:debuggableözelliğitrueolarak ayarlanmadığı ya da meta verilercom.android.graphics.injectLayers.enabletrueolarak ayarlanmadığı sürece Vulkan API'yi izlemenin veya engellemenin başka yollarını sağlamamalıdır. Vulkan'ı Uygulama dokümanlarına göre OEM ve Platform katmanları hariçtir.
- [C-1-6] Destekledikleri tüm uzantı dizelerini Vulkan yerel API'leri aracılığıyla bildirmeli ve buna karşılık doğru şekilde desteklemedikleri uzantı dizelerini bildirmemelidir.
[C-1-7] MUST support the following extensions:
VK_EXT_present_mode_fifo_latest_readyVK_KHR_present_wait2VK_KHR_android_surfaceVK_KHR_incremental_presentVK_KHR_present_idVK_KHR_present_id2VK_KHR_surfaceVK_KHR_swapchain
[C-1-8]
android.software.vulkan.deqp.levelözellik bayrağı aracılığıyla desteklenen Vulkan dEQP Testlerinin maksimum sürümü BİLDİRİLMELİDİR.[C-1-9]
android.software.vulkan.deqp.levelözellik bayrağında belirtildiği gibi en az132317953sürümünü (1 Mart 2019'dan itibaren) desteklemelidir.[C-1-10]
132317953sürümü ileandroid.software.vulkan.deqp.levelözellik bayrağında belirtilen sürüm arasındaki test listelerinde yer alan tüm Vulkan dEQP testlerini GEÇMELİDİR.[C-1-11]
VK_KHR_video_queue,VK_KHR_video_decode_queueveyaVK_KHR_video_encode_queueuzantıları için destek listelenmemelidir.
[C-SR-3] Aşağıdaki uzantıları desteklemek için ŞİDDETLE TAVSİYE EDİLİR:
VK_EXT_present_timingVK_GOOGLE_display_timingVK_KHR_driver_properties
[C-1-12]
VK_KHR_performance_queryuzantısı için destek listelenMEMELİDİR.[C-SR-4] Android Baseline 2022 profili tarafından belirtilen şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-5]
VkPhysicalDeviceProtectedMemoryFeatures.protectedMemoryveVK_EXT_global_priority'ı desteklemek için ŞİDDETLE TAVSİYE EDİLİR.[C-SR-6] HWUI ile
SkiaVkkullanılması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Vulkan desteği içeriyorsa:
[C-SR-8] Vulkan yükleyicinin değiştirilmemesi ŞİDDETLE TAVSİYE EDİLİR.
[C-1-14] Bu uzantılar
android.software.vulkan.deqp.levelözellik bayrağına dahil edilmediği sürece "KHR", "GOOGLE" veya "ANDROID" türündeki Vulkan Cihaz uzantılarını listelememelidir.
Cihaz uygulamaları Vulkan 1.0 desteği içermiyorsa:
[C-2-1] Vulkan özellik işaretlerinden herhangi birini (ör.
android.hardware.vulkan.level,android.hardware.vulkan.version) BEYAN ETMEMELİDİR.[C-2-2] Vulkan yerel API'si için herhangi bir
VkPhysicalDevicenumaralandırılMAMALIDIRvkEnumeratePhysicalDevices().
Cihaz uygulamaları Vulkan 1.1'i destekliyorsa ve burada açıklanan Vulkan özellik bayraklarından herhangi birini bildiriyorsa ( veya daha yeni bir sürüm):
[C-3-1]
SYNC_FDharici semafor ve işleyici türleri ileVK_ANDROID_external_memory_android_hardware_bufferuzantısı için destek sunULMALIDIR.[C-SR-7]
VK_KHR_external_fence_fdUzantının üçüncü taraf uygulamalarda kullanılabilmesi ve uygulamanın, burada açıklandığı gibi çit yükünü POSIX dosya tanımlayıcılarına aktarması ve POSIX dosya tanımlayıcılarından içe aktarması KUVVETLE TAVSİYE EDİLİR.
7.1.4.3. RenderScript
Cihaz uygulamaları:
- [C-0-1] Android SDK belgelerinde ayrıntılı olarak açıklandığı gibi Android RenderScript'i desteklemelidir.
7.1.4.4. 2D Grafik Hızlandırma
Android, uygulamaların android:hardwareAccelerated adlı bir manifest etiketi veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini bildirmelerine olanak tanıyan bir mekanizma içerir.
Cihaz uygulamaları:
[C-0-1] Varsayılan olarak donanım hızlandırma ETKİNLEŞTİRİLMELİDİR ve geliştirici android:hardwareAccelerated="false" değerini ayarlayarak veya doğrudan Android View API'leri aracılığıyla donanım hızlandırmayı devre dışı bırakarak talepte bulunursa donanım hızlandırma DEVRE DIŞI BIRAKILMALIDIR.
[C-0-2] Donanım hızlandırma ile ilgili Android SDK belgeleriyle tutarlı bir davranış sergilemelidir.
Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını doğrudan bir kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak entegre etmesine olanak tanıyan bir TextureView nesnesi içerir.
Cihaz uygulamaları:
- [C-0-3] TextureView API'yi DESTEKLEMELİ ve yukarı akış Android uygulamasıyla tutarlı davranış sergilemelidir.
7.1.4.5. Geniş Gamutlu Ekranlar
Cihaz uygulamaları, Configuration.isScreenWideColorGamut() aracılığıyla geniş gamlı ekranları desteklediğini iddia ediyorsa:
[C-1-1] Renk kalibrasyonu yapılmış bir ekran OLMALIDIR.
[C-1-2] Gamı, CIE 1931 xyY alanında sRGB renk gamını tamamen kapsamalıdır.
[C-1-3] CIE 1931 xyY uzayında gamı, DCI-P3'ün alanının en az% 90'ı olan bir ekrana SAHİP OLMALIDIR.
[C-1-4] OpenGL ES 3.1 veya 3.2'yi DESTEKLEMELİ ve bunu düzgün şekilde bildirmelidir.
[C-1-5]
EGL_KHR_no_config_context,EGL_EXT_pixel_format_float,EGL_KHR_gl_colorspace,EGL_EXT_gl_colorspace_scrgb,EGL_EXT_gl_colorspace_scrgb_linear,EGL_EXT_gl_colorspace_display_p3,EGL_EXT_gl_colorspace_display_p3_linear, veEGL_EXT_gl_colorspace_display_p3_passthroughuzantıları için destek reklamı YAPILMALIDIR.[C-SR-1]
GL_EXT_sRGB'yı desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
Aksine, cihaz uygulamaları geniş gamlı ekranları desteklemiyorsa:
- [C-2-1] Ekran renk gamı tanımlanmamış olsa da CIE 1931 xyY alanında sRGB'nin% 100'ünü veya daha fazlasını kapsamalıdır.
7.1.5. Eski Uygulama Uyumluluk Modu
Android, ekran boyutu bağımsızlığından önceki eski Android sürümleri için geliştirilmemiş eski uygulamaların yararına, çerçevenin "normal" ekran boyutuna eşdeğer (320 dp genişlik) modda çalıştığı bir "uyumluluk modu" belirtir.
7.1.6. Ekran Teknolojisi
Android platformu, uygulamaların Android uyumlu bir ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. Bu belgede özellikle izin verilmediği sürece cihazlar, Android SDK tarafından tanımlanan bu API'lerin tümünü desteklemelidir.
Bir cihaz uygulamasının Android ile uyumlu tüm ekranları:
[C-0-1] 16 bit renkli grafikleri oluşturabilmelidir.
24 bit renkli grafiklere sahip ekranları DESTEKLEMELİDİR.
[C-0-2] Animasyonları oluşturabilmelidir.
[C-0-3] 0,9 ile 1,15 arasında bir piksel en boy oranına (PAR) SAHİP OLMALIDIR. Yani piksel en boy oranı, %10-15 toleransla kareye (1,0) yakın OLMALIDIR.
7.1.7. İkincil Ekranlar
Android, medya paylaşım özelliklerini ve harici ekranlara erişmek için geliştirici API'lerini etkinleştirmek üzere Android ile uyumlu ikincil ekranlar için destek içerir.
Cihaz uygulamaları, kablolu, kablosuz veya yerleşik ek ekran bağlantısı aracılığıyla harici ekranı destekliyorsa:
- [C-1-1] Android SDK belgelerinde açıklandığı şekilde
DisplayManagersisteme ait hizmeti ve API'yi uygulamalıdır.
7.2. Giriş Cihazları
Cihaz uygulamaları:
- [C-0-1] Kullanıcı arayüzü öğeleri arasında gezinmek için dokunmatik ekran veya dokunmatik olmayan gezinme gibi bir giriş mekanizması İÇERMELİDİR.
7.2.1. Klavye
Cihaz uygulamaları üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek içeriyorsa:
- [C-1-1]
android.software.input_methodsözellik bayrağı BEYAN EDİLMELİDİR. - [C-1-2]
Input Management Frameworktamamen uygulanmalıdır. - [C-1-3] Önceden yüklenmiş bir yazılım klavyesi OLMALIDIR.
Cihaz uygulamaları:
- [C-0-1] android.content.res.Configuration.keyboard'da (QWERTY veya 12 tuşlu) belirtilen biçimlerden biriyle eşleşmeyen bir donanım klavyesi İÇERMEMELİDİR.
- Ek yazılım klavyesi uygulamaları İÇERMELİDİR.
- Donanım klavyesi İÇEREBİLİR.
7.2.2. Dokunmadan gezinme
Android, dokunmatik olmayan gezinme için d-pad, trackball ve tekerlek mekanizmalarını destekler.
Cihaz uygulamaları:
- [C-0-1] android.content.res.Configuration.navigation için doğru değer RAPORLANMALIDIR.
Cihaz uygulamalarında dokunma dışı gezinme özellikleri yoksa:
- [C-1-1] Metin seçimi ve düzenlemesi için, Giriş Yönetimi Motorları ile uyumlu makul bir alternatif kullanıcı arayüzü mekanizması SAĞLANMALIDIR. Yukarı akış Android açık kaynak uygulaması, dokunma dışı gezinme girişleri olmayan cihazlarla kullanıma uygun bir seçim mekanizması içerir.
7.2.3. Gezinme Tuşları
Genellikle özel bir fiziksel düğmeyle veya dokunmatik ekranın ayrı bir bölümüyle etkileşim yoluyla sağlanan Ana Sayfa, Son Kullanılanlar ve Geri işlevleri, Android gezinme paradigması için gereklidir ve bu nedenle cihaz uygulamaları:
- [C-0-1] Televizyon cihazı uygulamalarında,
<intent-filter>değeriACTION=MAINveCATEGORY=LAUNCHERveyaCATEGORY=LEANBACK_LAUNCHERolarak ayarlanmış bir etkinliğe sahip yüklü uygulamaları başlatmak için kullanıcıya bir olanak SUNULMALIDIR. Bu kullanıcı kolaylığı için Ana Sayfa işlevi mekanizma OLMALIDIR. - Son Kullanılanlar ve Geri işlevleri için düğmeler SAĞLANMALIDIR.
Ana Sayfa, Son Öğeler veya Geri işlevleri sağlanıyorsa bunlar:
- [C-1-1] Herhangi biri erişilebilir olduğunda tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir OLMALIDIR.
- [C-1-2] Her işlevi hangi tek eylemin tetikleyeceği net bir şekilde belirtilmelidir. Düğmeye yazılmış görünür bir simge, ekranın gezinme çubuğu bölümünde bir yazılım simgesi gösterme veya kutudan çıkarma kurulum deneyimi sırasında kullanıcıya adım adım rehberli bir demo akışı sunma, bu tür bir göstergeye örnek olarak verilebilir.
Cihaz uygulamaları:
Android 4.0'dan beri işlem çubuğu lehine kullanımdan kaldırıldığından [C-SR-1] Menü işlevi için giriş mekanizması sağlamAMALARI ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-2] Tüm gezinme işlevlerinin iptal edilebilir olarak sağlanması ŞİDDETLE TAVSİYE EDİLİR. "İptal edilebilir", kaydırma belirli bir eşiği geçmediğinde kullanıcının gezinme işlevinin (ör. ana sayfaya gitme, geri gitme vb.) yürütülmesini engelleme özelliği olarak tanımlanır.
Cihaz uygulamaları Menü işlevini sağlıyorsa:
- [C-2-1] İşlem taşması menüsü pop-up'ı boş olmadığında ve işlem çubuğu görünür olduğunda işlem taşması düğmesi GÖSTERİLMELİDİR.
- [C-2-2] İşlem çubuğundaki taşma düğmesi seçilerek görüntülenen işlem taşması pop-up'ının konumu DEĞİŞTİRİLMEMELİDİR. Ancak Menü işlevi seçilerek görüntülendiğinde işlem taşması pop-up'ı ekranda değiştirilmiş bir konumda oluşturulabilir.
Cihaz uygulamaları Menü işlevini sağlamıyorsa geriye dönük uyumluluk için:
- [C-3-1]
targetSdkVersion10'dan küçük olduğunda menü işlevini uygulamalara fiziksel bir düğme, yazılım tuşu veya hareketler aracılığıyla SUNMALIDIR. Bu menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmediği sürece erişilebilir olmalıdır.
Cihaz uygulamaları Yardım işlevini sağlıyorsa:
- [C-4-1] Diğer gezinme tuşlarına erişilebiliyorsa YARDIMCI işlevine tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir.
- [C-SR-3] Bu etkileşim için ANA SAYFA işlevine uzun basma KULLANMANIZ ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, gezinme tuşlarını göstermek için ekranın ayrı bir bölümünü kullanıyorsa:
- [C-5-1] Gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANMALI ve uygulamalar tarafından kullanılabilen ekran bölümünü kapatMAMALI veya başka bir şekilde engelleMEMELİDİR.
- [C-5-2] Ekranın bir bölümünü, bölüm 7.1.1'de tanımlanan koşulları karşılayan uygulamalara sunmalıdır.
- [C-5-3] Ekranın bu ayrı bölümünün (diğer adıyla gezinme çubuğu) SDK'da belgelendiği şekilde düzgün bir şekilde gizlenmesi için uygulamanın
View.setSystemUiVisibility()API yöntemiyle ayarladığı işaretlere UYULMALIDIR.
Gezinme işlevi ekranda hareket tabanlı bir işlem olarak sağlanıyorsa:
- [C-6-1]
WindowInsets#getMandatorySystemGestureInsets()YALNIZCA Ana Sayfa hareketi tanıma alanını bildirmek için kullanılmalıdır. - [C-6-2] Ön plan uygulaması tarafından
View#setSystemGestureExclusionRects()aracılığıyla sağlanan ancakWindowInsets#getMandatorySystemGestureInsets()dışında kalan bir hariç tutma dikdörtgeni içinde başlayan hareketler,View#setSystemGestureExclusionRects()dokümanlarında belirtildiği gibi maksimum hariç tutma limiti içinde izin verildiği sürece gezinme işlevi için engellenmemelidir. - [C-6-3] Ön planda çalışan uygulamaya, sistem hareketi için dokunmalar yakalanmaya başlandığında
MotionEvent.ACTION_CANCELetkinliği GÖNDERİLMELİDİR. Bu, ön planda çalışan uygulamaya daha önceMotionEvent.ACTION_DOWNetkinliği gönderilmişse geçerlidir. - [C-6-4] Ekran üzerinde düğme tabanlı bir gezinmeye (ör. Ayarlar'da) geçiş için kullanıcıya olanak TANINMALIDIR.
- Ekranın mevcut yönlendirmesinin alt kenarından yukarı kaydırma hareketiyle Ana Sayfa işlevi SAĞLANMALIDIR.
- Yayınlanmadan önce, Ana Sayfa hareketiyle aynı alanda, yukarı kaydırıp basılı tutarak Son Kullanılanlar işlevini SUNMALIDIR.
WindowInsets#getMandatorySystemGestureInsets()içinde başlayan hareketler, ön plandaki uygulama tarafındanView#setSystemGestureExclusionRects()aracılığıyla sağlanan dışlama dikdörtgenlerinden ETKİLENMEMELİDİR.
Ekranın mevcut yönünün sol ve sağ kenarlarının herhangi bir yerinden gezinme işlevi sağlanıyorsa:
- [C-7-1] Gezinme işlevi GERİ olmalı ve ekranın mevcut yönünün hem sol hem de sağ kenarından kaydırma hareketiyle sağlanmalıdır.
- [C-7-2] Sol veya sağ kenarlarda özel kaydırılabilir sistem panelleri varsa bu paneller, ekranın üst 1/3'lük kısmına yerleştirilmeli ve sürükleyerek içeri alma işleminin yukarıda bahsedilen panelleri çağıracağını, dolayısıyla Geri'yi çağırmayacağını belirten net ve kalıcı bir görsel gösterge içermelidir. Bir sistem paneli, ekran kenarlarının üst 1/3'ünün altında kalacak şekilde kullanıcı tarafından yapılandırılabilir ancak sistem paneli, kenarların 1/3'ünden daha uzun olmamalıdır.
- [C-7-3] Ön planda çalışan uygulamada View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, WindowInsetsController.BEHAVIOR_DEFAULT veya WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE işaretleri ayarlanmışsa kenarlardan kaydırma işlemi, SDK'da belgelenen AOSP'de uygulandığı şekilde çalışmalıdır.
- [C-7-4] Ön planda çalışan uygulamada View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, WindowInsetsController.BEHAVIOR_DEFAULT veya WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE işaretleri ayarlanmışsa kullanıcı, AOSP'de uygulandığı şekilde sistem çubuklarını (diğer adıyla gezinme ve durum çubuğu) getirene veya karartmayı kaldırana kadar özel kaydırılabilir sistem panelleri gizlenmelidir.
Geri gitme işlevi sağlanıyorsa ve kullanıcı Geri hareketini iptal ediyorsa:
- [C-8-1]
OnBackInvokedCallback.onBackCancelled()çağrılmalıdır. - [C-8-2]
OnBackInvokedCallback.onBackInvoked()çağrılmamalıdır. - [C-8-3] KEYCODE_BACK etkinliği gönderilmemelidir.
Geri gezinme işlevi sağlanıyorsa ancak ön plandaki uygulamada OnBackInvokedCallback kayıtlı DEĞİLSE:
- Sistem, AOSP'de sağlandığı gibi, kullanıcının geri gittiğini gösteren bir ön plan uygulaması animasyonu SAĞLAMALIDIR.
Cihaz uygulamaları, setNavBarMode sistem API'si için destek sağlıyorsa ve android.permission.STATUS_BAR izni olan herhangi bir sistem uygulamasının gezinme çubuğu modunu ayarlamasına izin veriyorsa:
- [C-9-1] AOSP kodunda belirtildiği şekilde çocuklara uygun simgeler veya düğmeye dayalı gezinme desteği SAĞLANMALIDIR.
7.2.4. Dokunmatik ekran girişi
Android; dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunma giriş cihazları gibi çeşitli işaretçi giriş sistemleri için destek içerir. Dokunmatik ekran tabanlı cihaz uygulamaları bir ekranla ilişkilendirilir. Bu sayede kullanıcı, ekrandaki öğeleri doğrudan manipüle ediyormuş gibi hisseder. Kullanıcı ekrana doğrudan dokunduğu için sistem, üzerinde işlem yapılan nesneleri belirtmek için ek bir çaba gerektirmez.
Cihaz uygulamaları:
- Bir tür işaretçi giriş sistemi (fare benzeri veya dokunmatik) OLMALIDIR.
- Tamamen bağımsız olarak izlenen işaretçileri desteklemelidir.
Cihaz uygulamaları, birincil Android uyumlu ekranda dokunmatik ekran (tek dokunuş veya daha iyi) içeriyorsa:
- [C-1-1]
Configuration.touchscreenAPI alanı içinTOUCHSCREEN_FINGERraporlanmalıdır. - [C-1-2]
android.hardware.touchscreenveandroid.hardware.faketouchözellik bayraklarını bildirmelidir.
Cihaz uygulamaları, birincil Android uyumlu ekranda tek bir dokunuştan fazlasını takip edebilen bir dokunmatik ekran içeriyorsa:
- [C-2-1] Cihazdaki dokunmatik ekranın türüne karşılık gelen uygun özellik işaretlerini
android.hardware.touchscreen.multitouch,android.hardware.touchscreen.multitouch.distinct,android.hardware.touchscreen.multitouch.jazzhandbildirmelidir.
Cihaz uygulamaları, birincil Android uyumlu ekranda giriş için fare veya iztopu gibi harici bir giriş cihazına (yani ekrana doğrudan dokunulmaz) dayanıyorsa ve 7.2.5 bölümündeki sahte dokunma şartlarını karşılıyorsa:
- [C-3-1]
android.hardware.touchscreenile başlayan hiçbir özellik bayrağını bildirmemelidir. - [C-3-2] Yalnızca
android.hardware.faketouchraporlanmalıdır. - [C-3-3]
Configuration.touchscreenAPI alanı içinTOUCHSCREEN_NOTOUCHraporlanmalıdır.
7.2.5. Sahte Dokunmatik Giriş
Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesini yaklaşık olarak sağlayan bir kullanıcı girişi sistemi sunar. Örneğin, ekrandaki imleci hareket ettiren bir fare veya uzaktan kumanda, dokunma etkisini taklit eder ancak kullanıcının önce işaret etmesini ya da odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi, jiroskop işaretçisi, kontrol çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı sahte dokunma etkileşimlerini destekleyebilir. Android, dokunmaya dayalı girişi (temel hareket desteği dahil) yeterince taklit edebilen ve cihazın dokunmatik ekran işlevlerinin taklit edilen bir alt kümesini desteklediğini belirten, fare veya dokunmatik yüzey gibi yüksek doğruluklu dokunmatik olmayan (işaretçi tabanlı) bir giriş cihazına karşılık gelen android.hardware.faketouch özelliğini içerir.
Cihaz uygulamaları dokunmatik ekran içermiyorsa ancak kullanılabilir hale getirmek istedikleri başka bir işaretçi giriş sistemi içeriyorsa:
android.hardware.faketouchözellik bayrağının desteklendiğini BİLDİRMELİDİR.
Cihaz uygulamaları android.hardware.faketouch desteğini beyan ediyorsa:
- [C-1-1] İşaretçi konumunun mutlak X ve Y ekran konumları RAPORLANMALI ve ekranda görsel bir işaretçi gösterilmelidir.
- [C-1-2] Ekranda aşağı veya yukarı hareket eden işaretçide meydana gelen durum değişikliğini belirten işlem koduyla dokunma etkinliği RAPORLANMALIDIR.
- [C-1-3] Ekranda bir nesneye dokunma ve nesneyi bırakma hareketleri desteklenmelidir. Bu sayede kullanıcılar, ekrandaki bir nesneye dokunma hareketini taklit edebilir.
- [C-1-4] Kullanıcıların ekrandaki bir nesneye çift dokunmayı taklit etmesine olanak tanıyan bir zaman eşiği içinde, ekrandaki bir nesnenin aynı yerinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketlerini desteklemelidir.
- [C-1-5] Kullanıcıların dokunarak sürükleme hareketini taklit etmesine olanak tanıyan, ekrandaki rastgele bir noktada işaretçi aşağı, ekrandaki başka bir rastgele noktaya işaretçi hareket ettirme ve ardından işaretçi yukarı hareketlerini DESTEKLEMELİDİR.
- [C-1-6] İşaretçi aşağı hareketini desteklemeli, ardından kullanıcıların nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ekranda işaretçi yukarı hareketini yapmasına izin vermelidir. Bu sayede kullanıcılar ekrandaki bir nesneyi fırlatabilir.
Cihaz uygulamaları android.hardware.faketouch.multitouch.distinct desteğini beyan ediyorsa:
- [C-2-1]
android.hardware.faketouchdesteği beyan EDİLMELİDİR. - [C-2-2] İki veya daha fazla bağımsız işaretçi girişinin ayrı ayrı izlenmesi ZORUNLU olarak desteklenmelidir.
Cihaz uygulamaları android.hardware.faketouch.multitouch.jazzhand desteğini beyan ediyorsa:
- [C-3-1]
android.hardware.faketouchdesteği BEYAN EDİLMELİDİR. - [C-3-2] 5 (parmaklı bir eli takip etme) veya daha fazla işaretçi girişinin tamamen bağımsız olarak ayrı ayrı izlenmesini DESTEKLEMELİDİR.
7.2.6. Oyun Kumandası Desteği
7.2.6.1. Düğme Eşlemeleri
Cihaz uygulamaları:
- [C-1-1] HID etkinliklerini aşağıdaki tablolarda listelenen ilgili
InputEventsabitlerine eşleyebilmelidir. Yukarı akış Android uygulaması bu şartı karşılar.
Cihaz uygulamaları, aşağıdaki tablolarda listelenen tüm etkinliklerin girilmesini sağlayacak bir kumanda içeriyorsa veya kutuda ayrı bir kumandayla birlikte gönderiliyorsa:
- [C-2-1] Özellik bayrağını BİLDİRMELİDİR.
android.hardware.gamepad
| Düğme | HID Kullanımı2 | Android Button |
|---|---|---|
| A1 | 0x09 0x0001 | KEYCODE_BUTTON_A (96) |
| B1 | 0x09 0x0002 | KEYCODE_BUTTON_B (97) |
| X1 | 0x09 0x0004 | KEYCODE_BUTTON_X (99) |
| Y1 | 0x09 0x0005 | KEYCODE_BUTTON_Y (100) |
| D-pad yukarı1 D-pad aşağı1 |
0x01 0x00393 | AXIS_HAT_Y4 |
| D-pad sol1 D-pad sağ1 |
0x01 0x00393 | AXIS_HAT_X4 |
| Sol omuz düğmesi1 | 0x09 0x0007 | KEYCODE_BUTTON_L1 (102) |
| Sağ omuz düğmesi1 | 0x09 0x0008 | KEYCODE_BUTTON_R1 (103) |
| Sol çubuk tıklaması1 | 0x09 0x000E | KEYCODE_BUTTON_THUMBL (106) |
| Sağ çubuk tıklaması1 | 0x09 0x000F | KEYCODE_BUTTON_THUMBR (107) |
| Geri1 | 0x0c 0x0224 | KEYCODE_BACK (4) |
1 KeyEvent
2 Yukarıdaki HID kullanımları bir Gamepad CA'sında (0x01 0x0005) beyan edilmelidir.
3 Bu kullanımın mantıksal minimum değeri 0, mantıksal maksimum değeri 7, fiziksel minimum değeri 0, fiziksel maksimum değeri 315, birimi derece ve rapor boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde uzaklaşan dönüş olarak tanımlanır. Örneğin, 0 mantıksal değeri dönüş olmadığını ve yukarı düğmesine basıldığını, 1 mantıksal değeri ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını gösterir.
| Analog Kontroller1 | HID Kullanımı | Android Button |
|---|---|---|
| Sol tetikleyici | 0x02 0x00C5 | AXIS_LTRIGGER |
| Doğru Tetikleyici (Right Trigger) | 0x02 0x00C4 | AXIS_RTRIGGER |
| Sol kontrol çubuğu | 0x01 0x0030 0x01 0x0031 |
AXIS_X AXIS_Y |
| Sağ kontrol çubuğu | 0x01 0x0032 0x01 0x0035 |
AXIS_Z AXIS_RZ |
7.2.7. Uzaktan Kumanda
Cihaza özgü gereksinimler için Bölüm 2.3.1'e bakın.
7.3. Sensörler
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa cihaz uygulaması, bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulamalıdır.
Cihaz uygulamaları:
[C-0-1]
android.content.pm.PackageManagersınıfına göre sensörlerin varlığını veya yokluğunu doğru bir şekilde bildirmelidir.[C-0-2]
SensorManager.getSensorList()ve benzeri yöntemlerle desteklenen sensörlerin doğru bir listesini DÖNDÜRMELİDİR.[C-0-3] Diğer tüm sensör API'leri için makul şekilde davranılmalıdır (ör. uygulamalar dinleyici kaydetmeye çalıştığında uygun şekilde
trueveyafalsedöndürerek, ilgili sensörler mevcut olmadığında sensör dinleyicilerini çağırmayarak vb.).
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa:
[C-1-1] Android SDK belgelerinde tanımlandığı şekilde, her sensör türü için ilgili Uluslararası Birimler Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini bildirmelidir.
[C-1-2] Uygulama işlemcisi etkin olduğunda, maksimum istenen gecikme süresi 0 ms olan bir sensör akışı için sensör verilerini maksimum 100 milisaniye + 2 *
sample_timegecikme süresiyle BİLDİRMELİDİR. Bu gecikmeye filtreleme gecikmeleri dahil değildir.[C-1-3] İlk sensör örneği, sensör etkinleştirildikten sonraki 400 milisaniye + 2 *
sample_timeiçinde RAPORLANMALIDIR. Bu örnekte doğruluk değerinin 0 olması kabul edilebilir.[C-1-4] Android SDK belgelerinde sürekli sensör olduğu belirtilen tüm API'ler için cihaz uygulamaları, 3%'ün altında bir titreşime sahip OLMASI GEREKEN periyodik veri örneklerini sürekli olarak sağlamalıdır. Titreşim, bildirilen zaman damgası değerlerinin ardışık etkinlikler arasındaki farkının standart sapması olarak tanımlanır.
[C-1-5] Sensör etkinliği akışının, cihaz CPU'sunun askıya alınma durumuna girmesini veya askıya alınma durumundan uyanmasını engellememesi GEREKİR.
[C-1-6] Android SDK belgelerinde tanımlandığı şekilde, etkinliğin gerçekleştiği ve
SystemClock.elapsedRealtimeNano()saatiyle senkronize edildiği zamanı temsil eden etkinlik zamanını nanosaniye cinsinden BİLDİRMELİDİR.[C-SR-1] Zaman damgası senkronizasyon hatasının 100 milisaniyenin altında olması ŞİDDETLE TAVSİYE EDİLİR ve zaman damgası senkronizasyon hatasının 1 milisaniyenin altında olması GEREKİR.
Birden fazla sensör etkinleştirildiğinde güç tüketimi, her bir sensörün bildirilen güç tüketiminin toplamını AŞMAMALIDIR.
Yukarıdaki liste kapsamlı değildir. Android SDK'nın belgelenmiş davranışı ve sensörler ile ilgili Android Açık Kaynak Belgeleri yetkili olarak kabul edilir.
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa:
- [C-1-6] Tüm sensörler için sıfır olmayan bir çözünürlük ayarlanmalı ve değer
Sensor.getResolution()API yöntemiyle bildirilmelidir.
Bazı sensör türleri bileşiktir. Bu türler, bir veya daha fazla sensörün sağladığı verilerden elde edilebilir. (Örneğin, yön sensörü ve doğrusal ivme sensörü.)
Cihaz uygulamaları:
- Sensör türleri bölümünde açıklandığı gibi ön koşul olan fiziksel sensörleri içerdiğinde bu sensör türlerini uygulamalıdır.
Cihaz uygulamaları birleşik sensör içeriyorsa:
- [C-2-1] Sensörü, bileşik sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulamalıdır.
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa ve sensör yalnızca bir değer bildiriyorsa cihaz uygulamaları:
- [C-3-1] Sensörün çözünürlüğü
1olarak ayarlanmalı ve değerSensor.getResolution()API yöntemiyle raporlanmalıdır.
Cihaz uygulamaları, SensorAdditionalInfo#TYPE_VEC3_CALIBRATION'ı destekleyen belirli bir sensör türü içeriyorsa ve sensör üçüncü taraf geliştiricilere sunuluyorsa:
- [C-4-1] Sağlanan verilerde sabit, fabrikada belirlenmiş kalibrasyon parametreleri yer ALMAMALIDIR.
Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü veya manyetometre sensörü kombinasyonunu içeriyorsa:
- [C-SR-2] İvme ölçer, jiroskop ve manyetometrenin sabit bir göreli konuma sahip olması ŞİDDETLE TAVSİYE EDİLİR.Bu sayede cihaz dönüştürülebilir (ör. katlanabilir) olsa bile sensör eksenleri, olası tüm cihaz dönüştürme durumlarında sensör koordinat sistemiyle uyumlu ve tutarlı kalır.
7.3.1. İvme ölçer
Cihaz uygulamaları:
- [C-SR-1] 3 eksenli ivme ölçer içermesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları ivmeölçer içeriyorsa:
[C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
[C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.
[C-1-4] Herhangi bir eksende
gravity(4g)değerinin dört katına veya daha fazlasına kadar serbest düşüşü ölçebilmelidir.[C-1-5] En az 12 bit çözünürlüğe SAHİP OLMALIDIR.
[C-1-6] Standart sapması 0,05 m/sn^2'den fazla OLMAMALIDIR.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen bazında hesaplanmalıdır.
En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.
En az 16 bit çözünürlüğe SAHİP OLMALIDIR.
Özellikler kullanım ömrü boyunca değişirse kullanım sırasında kalibre edilmeli ve telafi edilmeli, telafi parametreleri cihaz yeniden başlatıldığında korunmalıdır.
Sıcaklık dengelemesi YAPILMALIDIR.
Cihaz uygulamalarında 3 eksenli ivme ölçer varsa:
[C-2-1]
TYPE_ACCELEROMETERsensörü uygulanmalı ve raporlanmalıdır.[C-SR-4]
TYPE_SIGNIFICANT_MOTIONBileşik sensörün uygulanması ŞİDDETLE TAVSİYE EDİLİR.[C-SR-5]
TYPE_ACCELEROMETER_UNCALIBRATEDsensörünün uygulanması ve raporlanması ŞİDDETLE TAVSİYE EDİLİR. Android cihazların bu koşulu karşılaması ŞİDDETLE TAVSİYE EDİLİR. Böylece, bu koşulun ZORUNLU olabileceği gelecekteki platform sürümüne yükseltme yapabilirler.Android SDK dokümanında açıklandığı gibi
TYPE_SIGNIFICANT_MOTION,TYPE_TILT_DETECTOR,TYPE_STEP_DETECTOR,TYPE_STEP_COUNTERbileşik sensörleri uygulamalıdır.
Cihaz uygulamaları 3'ten az eksenli bir ivmeölçer içeriyorsa:
[C-3-1]
TYPE_ACCELEROMETER_LIMITED_AXESsensörü uygulanmalı ve raporlanmalıdır.[C-SR-6]
TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATEDsensörünün uygulanması ve raporlanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları 3 eksenli bir ivmeölçer ve TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER bileşik sensörlerinden herhangi birini içeriyorsa:
[C-4-1] Güç tüketimlerinin toplamı HER ZAMAN 4 mW'tan az OLMALIDIR.
Cihaz dinamik veya statik durumdayken her biri 2 mW'ın ve 0,5 mW'ın altında OLMALIDIR.
Cihaz uygulamaları 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü içeriyorsa:
[C-5-1]
TYPE_GRAVITYveTYPE_LINEAR_ACCELERATIONbirleşik sensörleri uygulaması ZORUNLUDUR.[C-SR-7]
TYPE_GAME_ROTATION_VECTORbileşik sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü ve manyetometre sensörü içeriyorsa:
- [C-6-1]
TYPE_ROTATION_VECTORbileşik sensör uygulaması ZORUNLUDUR.
7.3.2. Manyetometre
Cihaz uygulamaları:
- [C-SR-1] 3 eksenli manyetometre (pusula) içermesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 3 eksenli manyetometre varsa:
[C-1-1]
TYPE_MAGNETIC_FIELDsensörü UYGULANMALIDIR.[C-1-2] Etkinlikleri en az 10 Hz sıklıkta bildirebilmeli ve en az 50 Hz sıklıkta bildirmelidir.
[C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.
[C-1-4] Doygunluğa ulaşmadan önce her eksende -900 µT ile +900 µT arasında ölçüm yapabilmelidir.
[C-1-5] Manyetometre, dinamik (akım kaynaklı) ve statik (mıknatıs kaynaklı) manyetik alanlardan uzağa yerleştirilerek 700 µT'den küçük bir sert demir ofset değerine SAHİP OLMALI ve 200 µT'nin altında bir değere SAHİP OLMALIDIR.
[C-1-6] 0,6 µT'ye eşit veya daha yoğun bir çözünürlüğe SAHİP OLMALIDIR.
[C-1-7] Sert demir sapmasının çevrimiçi kalibrasyonunu ve telafisini DESTEKLEMELİ ve cihaz yeniden başlatıldığında telafi parametrelerini KORUMALIDIR.
[C-1-8] Yumuşak demir telafisi uygulanmalıdır. Kalibrasyon, cihaz kullanılırken veya üretilirken yapılabilir.
[C-1-9] En hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen bazında hesaplanan standart sapması en fazla 1, 5 µT OLMALIDIR; standart sapması en fazla 0, 5 µT OLMALIDIR.
[C-1-10]
TYPE_MAGNETIC_FIELD_UNCALIBRATEDsensörü UYGULANMALIDIR.
Cihaz uygulamalarında 3 eksenli manyetometre, ivme ölçer sensörü ve 3 eksenli jiroskop sensörü bulunuyorsa:
- [C-2-1]
TYPE_ROTATION_VECTORbileşik sensörü uygulamalıdır.
Cihaz uygulamalarında 3 eksenli manyetometre ve ivme ölçer varsa:
TYPE_GEOMAGNETIC_ROTATION_VECTORsensörünü UYGULAYABİLİR.
Cihaz uygulamalarında 3 eksenli manyetometre, ivme ölçer ve TYPE_GEOMAGNETIC_ROTATION_VECTOR sensörü varsa:
[C-3-1] 10 mW'tan az güç tüketmelidir.
Sensör, 10 Hz'de toplu mod için kaydedildiğinde 3 mW'tan daha az güç tüketmelidir.
7.3.3. GPS
Cihaz uygulamaları:
- [C-SR-1] GPS/GNSS alıcısı içermeleri ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özellik bayrağı aracılığıyla uygulamalara bu özelliği bildiriyorsa:
[C-1-1]
LocationManager#requestLocationUpdateüzerinden istendiğinde konum çıkışlarını en az 1 Hz hızında destekLEMELİDİR.[C-1-2] 0,5 Mb/sn veya daha hızlı bir veri hızıyla internet bağlantısı kurulduğunda, açık hava koşullarında (güçlü sinyaller, ihmal edilebilir çok yollu iletim, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı süre) konum belirleyebilmelidir. Bu koşul genellikle GPS/GNSS kilitleme süresini en aza indirmek için bir tür Destekli veya Tahmini GPS/GNSS tekniği kullanılarak karşılanır (Yardım verileri; Referans Zaman, Referans Konum ve Uydu Efemeris/Saat'i içerir).
- [C-1-6] Böyle bir konum hesaplaması yapıldıktan sonra, konum istekleri yeniden başlatıldığında cihaz uygulamaları, ilk konum hesaplamasından sonraki bir saat içinde, sonraki istek veri bağlantısı olmadan ve/veya güç döngüsünden sonra yapılsa bile açık havada konumunu 5 saniye içinde belirlemelidir.
Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 1 metrekareden daha az ivmeyle hareket ederken:
[C-1-3] Konumu en az% 95 oranında 20 metre, hızı ise 0, 5 metre/saniye içinde belirleyebilmelidir.
[C-1-4] MUST aynı anda
GnssStatus.Callbacküzerinden en az bir takımyıldızdan 8 uyduyu takip etmeli ve bunlar hakkında rapor vermelidir.Birden fazla takımyıldızdan (ör. GPS + Glonass, BeiDou, Galileo'dan en az biri) en az 24 uyduyu aynı anda izleyebilmelidir.
[C-SR-2] Acil durum telefon görüşmesi sırasında GNSS Konum Sağlayıcı API'leri aracılığıyla normal GPS/GNSS konum çıkışları sağlamaya devam etmeleri ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-3] İzlenen tüm takımyıldızlardan (GnssStatus mesajlarında bildirildiği gibi) gelen GNSS ölçümlerinin SBAS hariç bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-4] AGC ve GNSS ölçüm sıklığının bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-5] Her GPS/GNSS konumunun bir parçası olarak tüm doğruluk tahminlerinin (Yön, Hız ve Dikey dahil) bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-6] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile, GNSS ölçümlerinin bulunur bulunmaz bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-7] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekareden daha az ivmeyle hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıklarının ve sahte aralık hızlarının en az% 95 oranında bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
7.3.4. Jiroskop
Cihaz uygulamaları:
- [C-SR-1] Jiroskop sensörü içermeleri ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları jiroskop içeriyorsa:
[C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
[C-1-4] 12 bit veya daha yüksek çözünürlüğe SAHİP OLMALIDIR.
[C-1-5] Sıcaklık dengelenmelidir.
[C-1-6] Kullanım sırasında KALİBRE EDİLMELİ ve telafi edilmeli, cihaz yeniden başlatıldığında telafi parametreleri KORUNMALIDIR.
[C-1-7] Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) daha büyük bir varyansa SAHİP OLMAMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle sınırlandırılması ZORUNLUDUR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
[C-SR-2] Cihaz oda sıcaklığında sabitken kalibrasyon hatasının 0,01 rad/sn'den az olması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-3] 16 bit veya daha yüksek çözünürlükte olması ŞİDDETLE TAVSİYE EDİLİR.
En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.
Cihaz uygulamalarında 3 eksenli jiroskop varsa:
[C-2-1]
TYPE_GYROSCOPEsensörü UYGULANMALIDIR.[C-SR-4] Uygulanması önemle tavsiye edilir.
TYPE_GYROSCOPE_UNCALIBRATEDsensor.
Cihaz uygulamaları 3'ten az eksenli bir jiroskop içeriyorsa:
[C-3-1]
TYPE_GYROSCOPE_LIMITED_AXESsensörü uygulanmalı ve raporlanmalıdır.[C-SR-5]
TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATEDsensörünün uygulanması ve raporlanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 3 eksenli jiroskop, ivme ölçer sensörü ve manyetometre sensörü varsa:
- [C-4-1]
TYPE_ROTATION_VECTORbileşik sensör uygulaması ZORUNLUDUR.
Cihaz uygulamaları 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü içeriyorsa:
[C-5-1]
TYPE_GRAVITYveTYPE_LINEAR_ACCELERATIONbirleşik sensörleri uygulaması ZORUNLUDUR.[C-SR-6]
TYPE_GAME_ROTATION_VECTORbileşik sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.
7.3.5. Barometre
Cihaz uygulamaları:
- [C-SR-1] Barometre (ortam hava basıncı sensörü) içermesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları barometre içeriyorsa:
[C-1-1]
TYPE_PRESSUREsensörü uygulanmalı ve raporlanmalıdır.[C-1-2] Etkinlikler 5 Hz veya daha yüksek bir frekansta yayınlanabilmelidir.
[C-1-3] Sıcaklık dengelemesi YAPILMALIDIR.
[C-SR-2] 300 hPa ile 1.100 hPa arasındaki basınç ölçümlerini bildirebilmek için ŞİDDETLE TAVSİYE EDİLİR.
1 hPa mutlak doğruluğa SAHİP OLMALIDIR.
20 hPa aralığında 0,12 hPa göreceli doğruluğa SAHİP OLMALIDIR (deniz seviyesinde ~200 m değişiklikte ~1 m doğruluğa eşdeğer).
Sistem özelliğini bildiren cihaz uygulamaları
sensor.barometer.high_quality.implemented:
[C-2-1] Basınç ölçümlerini 300 hPa ile 1.100 hPa aralığında ve +/- 1 hPa mutlak doğrulukla bildirmelidir.
[C-2-2] 100 hPa aralığında 0,15 hPa göreceli doğruluğa SAHİP OLMALIDIR.Bu, deniz seviyesinde ~1000 m değişiklikte ~1 m doğruluğa eşdeğerdir.
[C-2-3] Kullanıcı cihaza dokunduğunda, bastırdığında veya cihazı sıktığında +/- 0,5 hPa aralığında sabit olmalıdır.
[C-2-4] Kullanıcı cihazla elinde veya cebinde yürürken +/- 0,15 hPa aralığında sabit OLMALIDIR.
[C-2-5] 5 Hz'in üzerindeki etkinleştirmeler için 300 ms'den fazla zaman sabitiyle düzeltilmemelidir ve düzeltme, sensör etkinleştirmeleri arasında sızıntı yapmamalıdır.
[C-2-6] Bluetooth, hücresel bağlantı veya kablosuz gibi yaygın kaynakların neden olduğu günlük aydınlatma ve radyo frekanslarına maruz kaldığında +/- 0, 15 hPa içinde sabit OLMALIDIR.
7.3.6. Thermometer
Cihaz uygulamalarında ortam termometresi (sıcaklık sensörü) varsa:
- [C-1-1] Ortam sıcaklığı sensörü için
SENSOR_TYPE_AMBIENT_TEMPERATURETANIMLANMALIDIR ve sensör, kullanıcının cihazla etkileşim kurduğu ortamdaki (oda/araç kabini) sıcaklığı santigrat derece cinsinden ÖLÇMELİDİR.
Cihaz uygulamaları, ortam sıcaklığı dışında bir sıcaklığı (ör. CPU sıcaklığı) ölçen bir termometre sensörü içeriyorsa:
- [C-2-1] Sıcaklık sensörü için
SENSOR_TYPE_AMBIENT_TEMPERATUREtanımlanMAMALIDIR.
Cihaz uygulamaları, deri sıcaklığını izlemek için bir sensör içeriyorsa:
- [C-SR-1] PowerManager.getThermalHeadroom API'sini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
7.3.7. Fotometre
- Cihaz uygulamaları, fotometre (ortam ışığı sensörü) içerebilir.
7.3.8. Yakınlık Sensörü
- Cihaz uygulamaları yakınlık sensörü içerebilir.
Cihaz uygulamalarında yakınlık sensörü varsa ve yalnızca ikili "yakın" veya "uzak" okuma bildiriliyorsa:
[C-1-1] Bir nesnenin yakınlığını ekranla aynı yönde ÖLÇMELİDİR. Yani, bu sensör türünün asıl amacı kullanıcının kullandığı bir telefonu algılamak olduğundan yakınlık sensörü, ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Cihaz uygulamaları başka bir yöne bakan yakınlık sensörü içeriyorsa bu sensöre bu API aracılığıyla erişilememelidir.
[C-1-2] Doğruluk değeri en az 1 bit olmalıdır.
[C-1-3] Yakın okuma için 0 santimetre, uzak okuma için 5 santimetre KULLANILMALIDIR.
[C-1-4] Maksimum aralık ve çözünürlük 5 olarak BİLDİRİLMELİDİR.
7.3.9. Yüksek Doğruluk Oranı Sunan Sensörler
Cihaz uygulamaları bu bölümde tanımlandığı gibi bir dizi daha yüksek kaliteli sensör içeriyorsa ve bunları üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
android.hardware.sensor.hifi_sensorsözellik bayrağı aracılığıyla özelliği TANIMLAMALIDIR.
Cihaz uygulamaları android.hardware.sensor.hifi_sensors değerini bildiriyorsa:
[C-2-1] Aşağıdaki özelliklere sahip bir
TYPE_ACCELEROMETERsensörü OLMALIDIR:En az -8g ile +8g arasında bir ölçüm aralığı OLMALIDIR ve en az -16g ile +16g arasında bir ölçüm aralığı OLMASI ŞİDDETLE TAVSİYE EDİLİR.
En az 2.048 LSB/g ölçüm çözünürlüğüne SAHİP OLMALIDIR.
En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı destekLEMELİDİR
RATE_VERY_FAST.400 μg/√Hz'den yüksek olmayan bir ölçüm gürültüsüne SAHİP OLMALIDIR.
En az 3.000 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırma içermeyen bir biçimini uygulamalıdır.
3 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
[C-SR-1] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
Oda sıcaklığında test edildiğinde 30 μg √Hz'den daha az bir ivme rastgele yürüyüşüne SAHİP OLMALIDIR.
Sıcaklığa göre ≤ +/- 1 mg/°C'lik bir sapma değişikliği OLMALIDIR.
En uygun doğrusallık sapması ≤ %0,5 ve sıcaklığa karşı hassasiyet değişimi ≤ %0,03/°C olmalıdır.
Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyeti < %2,5 ve eksenler arası hassasiyet varyasyonu < %0,2 OLMALIDIR.
[C-2-2]
TYPE_ACCELEROMETER_UNCALIBRATED,TYPE_ACCELEROMETERile aynı kalite koşullarına sahip OLMALIDIR.[C-2-3] Aşağıdaki özelliklere sahip bir
TYPE_GYROSCOPEsensörü OLMALIDIR:En az -1.000 ile +1.000 dps arasında bir ölçüm aralığı OLMALIDIR.
En az 16 LSB/dps ölçüm çözünürlüğüne SAHİP OLMALIDIR.
En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı destekLEMELİDİR
RATE_VERY_FAST.0,014&°/s/√Hz'den yüksek olmayan bir ölçüm gürültüsüne SAHİP OLMALIDIR.
[C-SR-2] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
Oda sıcaklığında test edildiğinde 0,001&°/s √Hz'den daha düşük bir hız rastgele yürüyüşüne SAHİP OLMALIDIR.
Sıcaklığa karşı ≤ +/- 0,05&°/ s / °C'lik bir sapma değişikliği OLMALIDIR.
Sıcaklığa karşı ≤ %0,02 / °C hassasiyet değişikliği OLMALIDIR.
En iyi uyum doğrusu doğrusal olmama değeri ≤ %0,2 OLMALIDIR.
Gürültü yoğunluğu ≤ 0,007&°/s/√Hz olmalıdır.
Cihaz sabitken 10 ~ 40 ℃ sıcaklık aralığında kalibrasyon hatası 0,002 rad/sn'den az OLMALIDIR.
0,1&°/s/g'den daha az g-duyarlılığı OLMALIDIR.
Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyeti < %4,0 ve eksenler arası hassasiyet değişimi < %0,3 OLMALIDIR.
[C-2-4]
TYPE_GYROSCOPE_UNCALIBRATED,TYPE_GYROSCOPEile aynı kalite koşullarına uygun OLMALIDIR.[C-2-5] Aşağıdaki özelliklere sahip bir
TYPE_GEOMAGNETIC_FIELDsensörü OLMALIDIR:En az -900 ile +900 μT arasında bir ölçüm aralığı OLMALIDIR.
En az 5 LSB/uT ölçüm çözünürlüğüne SAHİP OLMALIDIR.
En az 5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
Maksimum ölçüm sıklığı 50 Hz veya daha yüksek OLMALIDIR.
Ölçüm gürültüsü 0,5 uT'nin üzerinde OLMAMALIDIR.
[C-2-6]
TYPE_MAGNETIC_FIELD_UNCALIBRATED,TYPE_GEOMAGNETIC_FIELDile aynı kalite koşullarını karşılamalıdır ve ayrıca:En az 600 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırma içermeyen bir biçimini uygulamalıdır.
[C-SR-3] Rapor hızı 50 Hz veya daha yüksek olduğunda 1 Hz'den en az 10 Hz'ye kadar beyaz gürültü spektrumunun olması ŞİDDETLE TAVSİYE EDİLİR.
[C-2-7] Aşağıdaki özelliklere sahip bir
TYPE_PRESSUREsensörü OLMALIDIR:En az 300 ile 1.100 hPa arasında bir ölçüm aralığı OLMALIDIR.
En az 80 LSB/hPa ölçüm çözünürlüğüne SAHİP OLMALIDIR.
En az 1 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
Maksimum ölçüm sıklığı 10 Hz veya daha yüksek OLMALIDIR.
2 Pa/√Hz'yi aşmayan bir ölçüm gürültüsüne SAHİP OLMALIDIR.
En az 300 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırma içermeyen bir biçimini uygulamalıdır.
2 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
[C-2-8]
TYPE_GAME_ROTATION_VECTORsensörü OLMALIDIR.[C-2-9] Aşağıdaki özelliklere sahip bir
TYPE_SIGNIFICANT_MOTIONsensörü OLMALIDIR:- Cihaz statik durumdayken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
[C-2-10] Aşağıdaki özelliklere sahip bir
TYPE_STEP_DETECTORsensörü OLMALIDIR:En az 100 sensör etkinliğinin arabelleğe alınabileceği, bu sensörün uyandırma içermeyen bir biçimini UYGULAMALIDIR.
Cihaz statik durumdayken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
4 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
[C-2-11] Aşağıdaki özelliklere sahip bir
TYPE_STEP_COUNTERsensörü OLMALIDIR:- Cihaz statik durumdayken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
[C-2-12] Aşağıdaki özelliklere sahip bir
TILT_DETECTORsensörü OLMALIDIR:- Cihaz statik durumdayken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
[C-2-13] Hızölçer, jiroskop ve manyetometre tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 2,5 milisaniye içinde OLMALIDIR. İvmeölçer ve jiroskop tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 0,25 milisaniye içinde OLMALIDIR.
[C-2-14] Jiroskop sensörü etkinliklerinin zaman damgaları, kamera alt sistemiyle aynı zaman tabanında ve 1 milisaniye hata payı içinde OLMALIDIR.
[C-2-15] Yukarıdaki fiziksel sensörlerden herhangi birinde veriler kullanılabilir hale geldiği andan itibaren 5 milisaniye içinde uygulamalara örnekler sunULMALIDIR.
[C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz statik durumdayken 0,5 mW'tan, hareket hâlindeyken ise 2,0 mW'tan yüksek güç tüketimine SAHİP OLMAMALIDIR:
SENSOR_TYPE_SIGNIFICANT_MOTIONSENSOR_TYPE_STEP_DETECTORSENSOR_TYPE_STEP_COUNTERSENSOR_TILT_DETECTORS
[C-2-17]
TYPE_PROXIMITYsensörü OLABİLİR ancak varsa en az 100 sensör etkinliği arabelleği kapasitesine SAHİP OLMALIDIR.
Bu bölümdeki tüm güç tüketimi şartlarının, Uygulama İşlemcisinin güç tüketimini içermediğini unutmayın. Sensör, destekleyici devreler, özel sensör işleme sistemi vb. dahil olmak üzere tüm sensör zincirinin çektiği gücü kapsar.
Cihaz uygulamaları doğrudan sensör desteği içeriyorsa:
[C-3-1]
isDirectChannelTypeSupportedvegetHighestDirectReportRateLevelAPI'si aracılığıyla doğrudan kanal türlerinin ve doğrudan raporlama hızı düzeyinin desteğini doğru şekilde BİLDİRMELİDİR.[C-3-2] Sensör doğrudan kanalını desteklediğini belirten tüm sensörler için iki sensör doğrudan kanal türünden en az birini desteklemelidir.
Aşağıdaki türlerdeki birincil sensör (uyandırma dışı varyant) için doğrudan sensör kanalı üzerinden etkinlik raporlaması DESTEKLENMELİDİR:
TYPE_ACCELEROMETERTYPE_ACCELEROMETER_UNCALIBRATEDTYPE_GYROSCOPETYPE_GYROSCOPE_UNCALIBRATEDTYPE_MAGNETIC_FIELDTYPE_MAGNETIC_FIELD_UNCALIBRATED
7.3.10. Biyometrik Sensörler
Biyometrik Kilit Açma Güvenliğini Ölçme hakkında daha fazla bilgi için lütfen Biyometrik Güvenliği Ölçme dokümanlarına bakın.
Cihaz uygulamaları güvenli bir kilit ekranı içeriyorsa:
- Biyometrik sensör İÇERMELİDİR.
Biyometrik sensörler 3. Sınıf (eski adıyla Güçlü) olarak sınıflandırılabilir.
Kimliğe bürünme ve taklit kabul oranlarına ve biyometrik işlem hattının güvenliğine göre 2. Sınıf (eski adıyla Zayıf) veya 1. Sınıf (eski adıyla Kolaylık) Bu sınıflandırma, biyometrik sensörün platform ve üçüncü taraf uygulamalarıyla etkileşim kurmak için sahip olması gereken özellikleri belirler. Sensörlerin 1. Sınıf, 2. Sınıf veya 3. Sınıf olarak sınıflandırılabilmesi için aşağıda ayrıntılı olarak açıklanan ek şartları karşılaması gerekir. Hem 2. Sınıf hem de 3. Sınıf biyometri, aşağıda ayrıntılı olarak açıklandığı gibi ek özellikler kazanır.
Cihaz uygulamaları, android.hardware.biometrics.BiometricManager, android.hardware.biometrics.BiometricPrompt ve android.provider.Settings.ACTION_BIOMETRIC_ENROLL aracılığıyla üçüncü taraf uygulamalarına biyometrik sensör sunuyorsa:
[C-4-1] Bu belgede tanımlandığı şekilde 3. Sınıf veya 2. Sınıf biyometri gereksinimlerini karşılamalıdır.
[C-4-2] Authenticators sınıfında sabit olarak tanımlanan her parametre adını ve bunların tüm kombinasyonlarını TANIMALI ve KABUL ETMELİDİR. Aksine, canAuthenticate(int) ve setAllowedAuthenticators(int) yöntemlerine iletilen ve Authenticators'da herkese açık sabitler olarak belgelenenler ile bunların herhangi bir kombinasyonu dışında kalan tam sayı sabitlerini kabul etmemeli veya tanımamalıdır.
[C-4-3] 3. Sınıf veya 2. Sınıf biyometriye sahip cihazlarda ACTION_BIOMETRIC_ENROLL işlemi UYGULANMALIDIR. Bu işlem YALNIZCA 3. Sınıf veya 2. Sınıf biyometri için kayıt giriş noktalarını sunmalıdır.
[C-4-4] Uygulamaların,
PromptContentViewiçerik görüntüleme biçimlerini kullanarakBiometricPrompt'ya özel içerik eklemesine İZİN VERİLMELİDİR. İçerik görüntüleme biçimleri,BiometricPromptAPI'nin parçası olmayan resimlerin, bağlantıların, etkileşimli içeriğin veya diğer medya biçimlerinin kullanılmasına izin verecek şekilde genişletilmemelidir. Bu içeriği değiştirmeyen, gizlemeyen veya kısaltmayan stilistik düzenlemeler (ör. konum, dolgu, kenar boşlukları ve tipografiyi değiştirme) yapılabilir.
Cihaz uygulamaları pasif biyometriyi destekliyorsa:
[C-5-1] Varsayılan olarak ek bir onay adımı (ör. düğmeye basma) GEREKLİ OLMALIDIR.
[C-SR-1] Kullanıcıların uygulama tercihlerini geçersiz kılmasına izin veren ve her zaman onay adımı gerektiren bir ayar olması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-2] Onay işleminin, işletim sistemi veya çekirdek ihlaliyle sahtecilik yapılamayacak şekilde güvenli olması ŞİDDETLE TAVSİYE EDİLİR. Örneğin, bu, fiziksel bir düğmeye dayalı onay işleminin, fiziksel bir düğmeye basma dışında başka bir şekilde çalıştırılamayan bir güvenlik unsurunun (SE) yalnızca giriş için kullanılan genel amaçlı bir giriş/çıkış (GPIO) pimi üzerinden yönlendirildiği anlamına gelir.
[C-5-2] Ek olarak, setConfirmationRequired(boolean) işlevine karşılık gelen(onay adımı olmadan) örtülü bir kimlik doğrulama akışı UYGULAMALIDIR. Bu işlev, uygulamalar tarafından oturum açma akışlarında kullanılmak üzere ayarlanabilir.
Cihaz uygulamalarında birden fazla biyometrik sensör varsa:
[C-7-1] Bir biyometri kilitlendiğinde (ör. kullanıcı birincil kimlik doğrulama ile kilidi açana kadar biyometri devre dışı bırakılır) veya çok sayıda başarısız deneme nedeniyle zamana bağlı kilitlendiğinde (ör. kullanıcı belirli bir süre bekleyene kadar biyometri geçici olarak devre dışı bırakılır) daha düşük biyometri sınıfındaki diğer tüm biyometrileri de KİLİTLEMELİDİR. Zamana bağlı kilitlenme durumunda, biyometrik doğrulama için geri yükleme aralığı, zamana bağlı kilitlenmedeki tüm biyometrik verilerin maksimum geri yükleme aralığı OLMALIDIR.
[C-SR-12] Biyometri kilitlendiğinde (ör. kullanıcı birincil kimlik doğrulama ile kilidi açana kadar biyometri devre dışı bırakıldığında) veya çok sayıda başarısız deneme nedeniyle zamana bağlı kilitlendiğinde (ör. kullanıcı belirli bir süre bekleyene kadar biyometri geçici olarak devre dışı bırakıldığında) aynı biyometri sınıfındaki diğer tüm biyometrilerin de kilitlenmesi ŞİDDETLE TAVSİYE EDİLİR. Zamana bağlı kilitleme durumunda, biyometrik doğrulama için geri yükleme aralığı süresinin, zamana bağlı kilitlemedeki tüm biyometri verilerinin maksimum geri yükleme aralığı süresi olması ŞİDDETLE TAVSİYE EDİLİR.
[C-7-2] Kilitlenen bir biyometriğin kilitlenme sayacını sıfırlamak için kullanıcıya önerilen birincil kimlik doğrulama (ör. PIN, desen veya şifre) sorgusu GÖNDERİLMELİDİR. 3. sınıf biyometrik verilerin, aynı veya daha düşük sınıftaki kilitli bir biyometrik verinin kilitlenme sayacını sıfırlamasına İZİN VERİLEBİLİR. 2. sınıf veya 1. sınıf biyometrik verilerin, herhangi bir biyometrik veri için kilitlenme sıfırlama işlemini tamamlamasına İZİN VERİLMEMELİDİR.
[C-SR-3] Kimlik doğrulama başına yalnızca bir biyometrik verinin onaylanması ŞİDDETLE TAVSİYE EDİLİR (ör. cihazda hem parmak izi hem de yüz sensörleri varsa bunlardan herhangi biri onaylandıktan sonra onAuthenticationSucceeded gönderilmelidir).
Cihaz uygulamalarının, üçüncü taraf uygulamalarının anahtar deposu anahtarlarına erişmesine izin vermesi için:
[C-6-1] Aşağıdaki bölümde tanımlandığı şekilde 3. Sınıf şartlarını KARŞILAMALIDIR.
[C-6-2] Kimlik doğrulama BIOMETRIC_STRONG gerektirdiğinde veya kimlik doğrulama CryptoObject ile çağrıldığında YALNIZCA 3. Sınıf biyometrik veriler sunulmalıdır.
Cihaz uygulamaları, biyometrik sensörü 1. Sınıf (eski adıyla Kolaylık) olarak değerlendirmek istiyorsa:
[C-1-1] YANLIŞ KABUL ORANI %0,002'DEN DÜŞÜK OLMALIDIR.
[C-1-2] Android Biyometri Test Protokolleri ile ölçülen sahtecilik ve kimliğe bürünme kabul oranları% 7'den yüksekse bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceği açıklanmalı ve etkinleştirmenin riskleri net bir şekilde belirtilmelidir.
[C-1-9] Yirmi yanlış denemeden sonra ve biyometrik doğrulama için en az doksan saniye bekleme süresinden sonra kullanıcıdan önerilen birincil kimlik doğrulama yöntemini (ör.PIN, desen, şifre) kullanmasını İSTEMELİDİR. Burada yanlış deneme, yeterli yakalama kalitesine (BIOMETRIC_ACQUIRED_GOOD) sahip olan ancak kayıtlı bir biyometriyle eşleşmeyen bir denemedir.
[C-SR-4] Android Biyometri Test Protokolleri ile ölçülen sahtecilik ve kimliğe bürünme kabul oranları% 7'den yüksekse [C-1-9] bölümünde belirtilen biyometrik doğrulama için toplam yanlış deneme sayısını azaltmak KESİNLİKLE TAVSİYE EDİLİR.
[C-1-3] Biyometrik doğrulama denemelerine hız sınırlaması GETİRİLMELİDİR. Burada yanlış deneme, kayıtlı bir biyometrik ile eşleşmeyen, yeterli yakalama kalitesine sahip bir denemedir (
BIOMETRIC_ACQUIRED_GOOD).[C-SR-5] [C-1-9] başına maksimum sayıda yanlış deneme için biyometrik doğrulama ile ilgili beş yanlış denemeden sonra deneme sıklığına en az 30 saniye sınırlama getirilmesi ŞİDDETLE TAVSİYE EDİLİR. Burada yanlış deneme, yeterli yakalama kalitesine (BIOMETRIC_ACQUIRED_GOOD) sahip olup kayıtlı bir biyometrik ile eşleşmeyen denemedir.
[C-SR-6] Tüm sıklık sınırlaması mantığının TEE'de olması ŞİDDETLE TAVSİYE EDİLİR.
[C-1-10] Birincil kimlik doğrulama geri çekilmesi ilk kez tetiklendikten sonra biyometri devre dışı bırakılmalıdır. Bu durum, bölüm 9.11'deki [C-0-2] içinde açıklanmıştır.
[C-1-11] Android Biometrics Test Protocols'e göre ölçülen, %30'u aşmayan bir sahtecilik ve kimliğe bürünme kabul oranı olmalıdır. Ayrıca, (1) A Düzeyi sunum saldırısı aracı (PAI) türleri için %30'u aşmayan bir sahtecilik ve kimliğe bürünme kabul oranı ve (2) B Düzeyi PAI türleri için %40'ı aşmayan bir sahtecilik ve kimliğe bürünme kabul oranı olmalıdır.
[C-1-4] Kullanıcının mevcut bir cihaz kimlik bilgisini (PIN/desen/şifre) onaylamasını veya TEE ile güvenli hale getirilmiş yeni bir cihaz kimlik bilgisi eklemesini sağlayarak önce bir güven zinciri oluşturmadan yeni biyometri eklenmesini ENGELLEMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
[C-1-5] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama yoluyla da dahil olmak üzere) veya önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) kaldırıldığında kullanıcının tüm tanımlanabilir biyometrik verileri tamamen KALDIRILMALIDIR.
[C-1-6] İlgili biyometri için bireysel işaretlemeye (ör.
DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT,DevicePolicymanager.KEYGUARD_DISABLE_FACEveyaDevicePolicymanager.KEYGUARD_DISABLE_IRIS) UYULMALIDIR.[C-1-7] Kullanıcıya, 24 saatte bir veya daha kısa aralıklarla önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) sorgusu GÖNDERMELİDİR.
[C-1-8] Aşağıdakilerden herhangi biri gerçekleştiğinde kullanıcıdan önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) veya 3. Sınıf (GÜÇLÜ) biyometrik kimlik doğrulama İSTEMELİDİR:
- 4 saatlik boşta kalma zaman aşımı süresi.
- 3 başarısız biyometrik kimlik doğrulama girişimi.
- Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasının ardından boşta kalma zaman aşımı süresi ve başarısız kimlik doğrulama sayısı sıfırlanır.
[C-SR-7] Yeni cihazlarda [C-1-7] ve [C-1-8]'de belirtilen kısıtlamaları uygulamak için Android Açık Kaynak Projesi tarafından sağlanan çerçevedeki mantığı KULLANMALARI ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-8] Cihazda ölçülen yanlış ret oranının %10'dan düşük olması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-9] Kayıtlı her biyometrik için, biyometriğin algılandığı andan ekranın kilidinin açıldığı ana kadar ölçülen gecikmenin 1 saniyeden kısa olması ŞİDDETLE TAVSİYE EDİLİR.
[C-1-12] Android Biyometri Test Protokolleri ile ölçüldüğü üzere, her sunum saldırısı aracı (PAI) türü için sahtecilik ve kimliğe bürünme kabul oranı %40'tan yüksek OLMAMALIDIR.
[C-SR-13] Android Biometrics Test Protocols ile ölçüldüğü üzere, sunum saldırısı aracı (PAI) türü başına %30'dan yüksek olmayan bir sahtecilik ve kimliğe bürünme kabul oranı olması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-8] Cihazda ölçülen yanlış ret oranının %10'dan düşük olması ŞİDDETLE TAVSİYE EDİLİR.
[C-1-15] Kullanıcıların tek veya birden fazla biyometrik kayıt kaldırmasına İZİN VERİLMELİDİR.
[C-SR-14] Biyometrik sensörün biyometrik sınıfının ve etkinleştirilmesiyle ilgili risklerin açıklanması KESİNLİKLE ÖNERİLİR.
[C-SR-17] Yeni AIDL arayüzlerinin (ör.
IFace.aidlveIFingerprint.aidl) uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, biyometrik sensörü 2. Sınıf (eski adıyla Zayıf) olarak değerlendirmek istiyorsa:
[C-2-1] Yukarıdaki 1. Sınıf için tüm koşulları KARŞILAMALIDIR.
[C-2-2] Android Biyometri Test Protokolleri'nde belirtildiği şekilde, sahtecilik ve kimliğe bürünme kabul oranı %20'den yüksek OLMAMALIDIR. Ayrıca, (1) A Düzeyi sunum saldırısı aracı (PAI) türleri için sahtecilik ve kimliğe bürünme kabul oranı %20'den yüksek OLMAMALI ve (2) B Düzeyi PAI türleri için sahtecilik ve kimliğe bürünme kabul oranı %30'dan yüksek OLMAMALIDIR.
[C-SR-15] Android Biometrics Test Protocols ile ölçüldüğü üzere, her sunum saldırısı aracı (PAI) türü için sahtecilik ve kimliğe bürünme kabul oranının %20'den yüksek olmaması ŞİDDETLE TAVSİYE EDİLİR.
[C-2-3] Biyometrik eşleştirme, Android kullanıcı veya çekirdek alanının dışında yalıtılmış bir yürütme ortamında (ör. yalıtılmış yürütme ortamına güvenli kanal içeren bir çip üzerinde Güvenilir Yürütme Ortamı (TEE) ya da Bölüm 9.17'deki şartları karşılayan korumalı bir sanal makine) YAPILMALIDIR.
[C-2-4] Tüm tanımlanabilir veriler, Android Açık Kaynak Projesi sitesindeki uygulama yönergelerinde belirtildiği gibi, izole yürütme ortamı veya izole yürütme ortamına güvenli kanal içeren bir çip dışında elde edilemeyecek, okunamayacak ya da değiştirilemeyecek şekilde şifrelenmeli ve kriptografik olarak doğrulanmalıdır ya da Bölüm 9.17'deki koşulları karşılayan hipervizör tarafından kontrol edilen korumalı bir sanal makine olmalıdır.
[C-2-5] Kamera tabanlı biyometriklerde, biyometri tabanlı kimlik doğrulama veya kayıt işlemi sırasında:
Kamerayı, kamera karelerinin izole yürütme ortamı dışında veya izole yürütme ortamına güvenli kanal bağlantısı olan bir çip ya da Bölüm 9.17'deki şartları karşılayan hipervizör tarafından kontrol edilen korumalı bir sanal makine dışında okunmasını veya değiştirilmesini engelleyen bir modda ÇALIŞTIRMALIDIR.
RGB tek kameralı çözümlerde, kayıt için önizleme gibi işlemleri desteklemek amacıyla kamera çerçeveleri izole edilmiş yürütme ortamının dışında okunabilir ancak yine de değiştirilemez.
[C-2-6] Üçüncü taraf uygulamalarının, bireysel biyometrik kayıtlar arasında ayrım yapmasına İZİN VERİLMEMELİDİR.
[C-2-7] Kimliği tanımlayabilecek biyometrik verilere veya bunlardan elde edilen verilere (ör. yerleştirmeler) TEE veya Bölüm 9.17'deki şartları karşılayan hipervizör tarafından kontrol edilen korumalı sanal makine bağlamı dışında Uygulama İşlemcisi'ne şifrelenmemiş erişime İZİN VERİLMEMELİDİR. Android 9 veya önceki sürümlerde kullanıma sunulan cihazların yükseltilmesi [C-2-7] kapsamı dışına çıkarılmaz.
[C-2-8] Bir işletim sistemi veya çekirdek ihlali, verilerin doğrudan kullanıcı olarak kimlik doğrulaması yapacak şekilde yerleştirilmesine izin vermeyecek şekilde güvenli bir işleme ardışık düzenine SAHİP OLMALIDIR.
[C-SR-10] Tüm biyometrik yöntemler için canlılık algılama ve yüz biyometrisi için dikkat algılama özelliklerinin eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-2-9] Biyometrik sensörü üçüncü taraf uygulamalarına SUNMALIDIR.
Cihaz uygulamaları, biyometrik sensörü 3. Sınıf (eski adıyla Güçlü) olarak değerlendirmek istiyorsa:
[C-3-1] [C-1-7] ve [C-1-8] hariç olmak üzere yukarıdaki 2. Sınıf'ın tüm koşullarını KARŞILAMALIDIR.
[C-3-2] Donanım tabanlı bir anahtar deposu uygulaması OLMALIDIR.
[C-3-3] Android Biometrics Test Protocols (Android Biyometri Test Protokolleri) ile ölçüldüğü üzere, sahtecilik ve kimliğe bürünme kabul oranı %7'den yüksek OLMAMALIDIR. Ayrıca, (1) A Düzeyi sunum saldırısı aracı (PAI) türleri için sahtecilik ve kimliğe bürünme kabul oranı %7'den yüksek OLMAMALI ve (2) B Düzeyi PAI türleri için sahtecilik ve kimliğe bürünme kabul oranı %20'den yüksek OLMAMALIDIR.
[C-3-4] Kullanıcıya, önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için en fazla 72 saatte bir meydan okumalıdır.
[C-3-5] Cihazda desteklenen 3. sınıf biyometri yöntemlerinden herhangi biri yeniden kaydedilirse tüm 3. sınıf biyometri yöntemleri için Authenticator ID yeniden oluşturulmalıdır.
[C-3-6] Üçüncü taraf uygulamaları için biyometrik destekli anahtar deposu anahtarları etkinleştirilmelidir.
[C-SR-16] Android Biometrics Test Protocols ile ölçüldüğü üzere, sunum saldırısı aracı (PAI) türü başına% 7'den yüksek olmayan bir sahtecilik ve kimliğe bürünme kabul oranı olması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında ekranın alt kısmında parmak izi sensörü (UDFPS) varsa:
- [C-SR-11] Kullanıcıların erişilebilirlik amacıyla kullanabileceği 3 düğmeli gezinme özelliğinin, ekran içi parmak izi sensörünün dokunulabilir alanıyla etkileşime girmesini önlemek için ŞİDDETLE TAVSİYE EDİLİR.
7.3.11. Poz Sensörü
Cihaz uygulamaları:
- 6 serbestlik derecesine sahip poz sensörünü DESTEKLEYEBİLİR.
Cihaz uygulamaları 6 serbestlik dereceli duruş sensörünü destekliyorsa:
[C-1-1] MUST implement and report
TYPE_POSE_6DOFsensor.[C-1-2] Yalnızca dönüş vektöründen daha doğru OLMALIDIR.
7.3.12. Menteşe Açısı Sensörü
Cihaz uygulamaları menteşe açısı sensörünü destekliyorsa:
[C-1-1] MUST implement and report
TYPE_HINGE_ANGLE.[C-1-2] 0 ile 360 derece (0 ve 360 derece dahil) arasında en az iki okuma desteklenmelidir.
[C-1-3]
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)için uyandırma sensörü döndürmelidir.
7.3.13. IEEE 802.1.15.4 (UWB)
Cihaz uygulamaları 802.1.15.4 desteği içeriyorsa ve işlevselliği üçüncü taraf bir uygulamaya sunuyorsa:
[C-1-2] Donanım özellik bayrağını
android.hardware.uwbbildirmelidir.[C-1-3] AOSP uygulamasında tanımlanan aşağıdaki yapılandırma kümelerinin (önceden tanımlanmış FIRA UCI parametrelerinin kombinasyonları) tümünü desteklemelidir.
CONFIG_ID_1: FiRa tarafından tanımlanan tek noktaya yayınSTATIC STS DS-TWRaralığı, ertelenmiş mod, aralık aralığı 240 ms.CONFIG_ID_2: FiRa tarafından tanımlanan bire çokSTATIC STS DS-TWRaralığı, ertelendi modu, aralık aralığı 200 ms. Tipik kullanım alanı: Akıllı telefon, birçok akıllı cihazla etkileşime girer.CONFIG_ID_3: Geliş açısı (AoA) verileri raporlanmaması dışındaCONFIG_ID_1ile aynıdır.CONFIG_ID_4: P-STS güvenlik modu etkinleştirilmiş olması dışındaCONFIG_ID_1ile aynıdır.CONFIG_ID_5: P-STS güvenlik modu etkinleştirilmiş olması dışındaCONFIG_ID_2ile aynıdır.CONFIG_ID_6: P-STS güvenlik modu etkinleştirilmiş olması dışındaCONFIG_ID_3ile aynıdır.CONFIG_ID_7: P-STS bireysel denetlenen anahtar modu etkinleştirilmiş olması dışındaCONFIG_ID_2ile aynıdır.
[C-1-4] Kullanıcının UWB radyo açma/kapama durumunu değiştirmesine olanak tanıyan bir kullanıcı arayüzü sağlamalıdır.
[C-1-5] UWB radyosunu kullanan uygulamaların
UWB_RANGINGiznine (NEARBY_DEVICESizin grubu altında) sahip olması ZORUNLUDUR.
FIRA, CCC ve CSA gibi standart kuruluşlar tarafından tanımlanan ilgili uygunluk ve sertifika testlerini geçmek, 802.1.15.4'ün doğru şekilde çalışmasını sağlamaya yardımcı olur.
7.3.14. Özel sensörler
Farklı bir deneyim sunmak için cihaz uygulamaları, Android veya Wear OS kapsamına girmeyen ve önceden yüklenmiş uygulamaların erişebileceği ek sensörler içerebilir.
Bu tür sensörlerde sensör kimliği:
- [C-0-1] 65536'dan yüksek OLMALIDIR.
Özel sensör, sağlık veya fitness ile ilgili amaçlar için tasarlanmışsa:
[C-0-2] Platform izni veya sistem izni ile korunmalıdır.
7.4. Veri Bağlantısı
7.4.1. Telefon
Android API'leri ve bu belgede kullanılan "Telefoni" terimi, özellikle sesli arama yapma ve SMS mesajı göndermeyle ya da mobil (ör. GSM, CDMA, LTE, NR) GSM veya CDMA ağı üzerinden mobil veri oluşturmayla ilgili donanımı ifade eder. "Telefon" özelliğini destekleyen bir cihaz, ürüne uygun olarak arama, mesajlaşma ve veri hizmetlerinin bir kısmını veya tamamını sunmayı tercih edebilir.
- Android, telefon donanımı içermeyen cihazlarda KULLANILABİLİR. Yani Android, telefon olmayan cihazlarla uyumludur.
Cihaz uygulamaları GSM veya CDMA telefon özelliğini içeriyorsa:
[C-1-1]
android.hardware.telephonyözellik bayrağını ve diğer alt özellik bayraklarını teknolojiye göre BİLDİRMELİDİR.[C-1-2] Söz konusu teknoloji için API'nin tam desteği UYGULANMALIDIR.
Acil durum aramaları sırasında (
SetAllowedNetworkTypeBitmap()tarafından ayarlanan ağ türlerinden bağımsız olarak) mevcut tüm hücresel hizmet türlerine (2G, 3G, 4G, 5G vb.) İZİN VERİLMELİDİR.
Cihaz uygulamaları telefon donanımı içermiyorsa:
- [C-2-1] MUST implement the full APIs as no-ops.
Cihaz uygulamaları eUICC'leri veya eSIM'leri/yerleşik SIM'leri destekliyorsa ve eSIM işlevini üçüncü taraf geliştiricilerin kullanımına sunmak için tescilli bir mekanizma içeriyorsa:
- [C-3-1]
android.hardware.telephony.euiccözellik bayrağını BEYAN ETMELİDİR.
Cihaz uygulamaları, sistem özelliğini
ro.telephony.iwlan_operation_mode legacy olarak ayarlamazsa:
- [C-4-1]
NetworkRegistrationInfo#getTransportType(), aynıNetworkRegistrationInfoörneği içinTRANSPORT_TYPE_WWANolarak bildirildiğindeNetworkRegistrationInfo#getAccessNetworkTechnology()aracılığıylaNETWORK_TYPE_IWLANbildirilmemelidir.
Cihaz uygulamaları hem multimedya telefon hizmeti (MMTEL) hem de zengin iletişim hizmeti (RCS) özellikleri için tek bir IP multimedya alt sistemi (IMS) kaydını destekliyorsa ve tüm IMS sinyal trafiği için tek bir IMS kaydı kullanmayla ilgili hücresel operatör gereksinimlerine uyması bekleniyorsa:
[C-5-1]
android.hardware.telephony.imsözellik bayrağını BEYAN ETMELİ ve hem MMTEL hem de RCS için ImsService API'nin User Capability Exchange API'sini eksiksiz bir şekilde uygulamalıdır.[C-5-2]
android.hardware.telephony.ims.singleregözellik bayrağını BEYAN ETMELİ ve SipTransport API, GbaService API, IRadio 1.6 HAL'yi kullanan özel taşıyıcı göstergeleri ve IMS Configuration API'yi kullanan Otomatik Yapılandırma Sunucusu (ACS) veya diğer tescilli sağlama mekanizması aracılığıyla sağlama işlemlerinin eksiksiz bir uygulamasını SAĞLAMALIDIR.
Cihaz uygulamaları android.hardware.telephony özelliğini bildiriyorsa:
[C-6-1]
SmsManager#sendTextMessageveSmsManager#sendMultipartTextMessagekısa mesaj işlevi sağlamak içinCarrierMessagingServiceile ilgili çağrılara yol AÇMALIDIR.SmsManager#sendMultimediaMessageveSmsManager#downloadMultimediaMessagemultimedya mesajlaşma işlevinin sağlanması içinCarrierMessagingServiceile ilgili aramalarla sonuçlanmalıdır.[C-6-2]
android.provider.Telephony.Sms#getDefaultSmsPackagetarafından belirlenen uygulama, SMS ve MMS mesajları gönderip alırken SmsManager API'lerini KULLANMALIDIR. packages/apps/Messaging'deki AOSP referans uygulaması bu koşulu karşılar.[C-6-3]
Intent#ACTION_DIALyanıtını veren uygulama,*#*#CODE#*#*olarak biçimlendirilmiş rastgele çevirici kodlarının girilmesini desteklemeli ve karşılık gelen birTelephonyManager#ACTION_SECRET_CODEyayını tetiklemelidir.[C-6-4]
Intent#ACTION_DIALyanıtı veren uygulama, sesli mesaj listesi görünümü transkriptlerini destekliyorsa kullanıcılara sesli mesaj listesi görünümü transkriptini göstermek içinVoicemailContract.Voicemails#TRANSCRIPTIONkullanmalıdır.[C-6-5] MUST, SIM kart bilgilerini gösteren ve kontrol eden tüm kullanıcıya yönelik işlevlerde, eşdeğer grup UUID'leri ile tüm SubscriptionInfo'yu tek bir abonelik olarak temsil etmelidir. Bu tür olanaklara örnek olarak
Settings#ACTION_MANAGE_ALL_SIM_PROFILES_SETTINGSveyaEuiccManager#ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONSile eşleşen ayarlar arayüzleri verilebilir.[C-6-6] SIM kart ayarlarının yapılandırılmasına veya kontrol edilmesine olanak tanıyan, kullanıcı tarafından görülebilen herhangi bir kolaylıkta, boş olmayan bir group UUID ve fırsatçı bit içeren SubscriptionInfo'nun gösterilmesine veya kontrol edilmesine İZİN VERİLMEMELİDİR.
Cihaz uygulamaları android.hardware.telephony özelliğini bildiriyorsa ve sistem durum çubuğu sağlıyorsa:
[C-7-1] SIM durumu bilgilerini sağlayan tüm olanaklarda kullanıcıya gösterilmek üzere belirli bir grup UUID'si için temsili bir etkin abonelik SEÇİLMELİDİR. Durum çubuğundaki hücresel sinyal simgesi veya hızlı ayarlar kutusu bu tür affordance'lara örnek olarak verilebilir.
[C-SR-1] Cihaz sesli arama yapmıyorsa etkin veri aboneliği olarak temsilci aboneliğin seçilmesi KESİNLİKLE ÖNERİLİR. Cihaz sesli arama yapıyorsa temsilci aboneliğin etkin ses aboneliği olması KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları android.hardware.telephony özelliğini bildiriyorsa:
[C-6-7] ETSI TS 102 221'e göre her bir UICC için maksimum sayıda mantıksal kanal (toplam 20) açabilmeli ve bunları aynı anda kullanabilmelidir.
[C-6-8] Etkin operatör uygulamalarına (
TelephonyManager#getCarrierServicePackageNameile belirtildiği şekilde) aşağıdaki davranışlardan herhangi biri otomatik olarak veya kullanıcının açık onayı olmadan UYGULANMAMALIDIR:- Ağ erişimini iptal etme veya sınırlama
- İzinleri iptal etme
- Arka planda veya ön planda çalışan uygulama yürütmeyi, AOSP'de bulunan mevcut güç yönetimi özelliklerinin ötesinde kısıtlama
- Uygulamayı devre dışı bırakma veya kaldırma
Cihaz uygulamaları android.hardware.telephony özelliğini bildiriyorsa ve grup UUID'si paylaşan tüm etkin, fırsatçı olmayan abonelikler devre dışı bırakılmışsa, cihazdan fiziksel olarak kaldırılmışsa veya fırsatçı olarak işaretlenmişse cihaz:
- [C-8-1] Aynı gruptaki kalan tüm etkin fırsatçı abonelikleri otomatik olarak devre dışı BIRAKMALIDIR.
Cihaz uygulamaları GSM telefon özelliğini içeriyor ancak CDMA telefon özelliğini içermiyorsa:
[C-9-1] MUST NOT declare
PackageManager#FEATURE_TELEPHONY_CDMA.[C-9-2] Tercih edilen veya izin verilen ağ türü bit maskelerinde herhangi bir 3GPP2 ağ türü ayarlanmaya çalışıldığında
IllegalArgumentExceptionistisnası oluşturulMALIDIR.[C-9-3]
TelephonyManager#getMeid'dan boş bir dize DÖNDÜRMELİDİR.
Cihaz uygulamaları birden fazla bağlantı noktası ve profili olan eUICC'leri destekliyorsa:
- [C-10-1]
android.hardware.telephony.euicc.mepözellik bayrağı BİLDİRİLMELİDİR.
Cihaz uygulamaları hücresel veri bağlantısını destekliyorsa:
- [C-SR-11]
android.hardware.telephony.dataözelliğinin bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları android.hardware.telephony.data bildiriyorsa:
- [C-12-1] PDP bağlamları, PDN bağlantıları ve DN bağlantıları gibi en az iki eş zamanlı hücresel veri ağı bağlantısını DESTEKLEMELİDİR.
7.4.1.1. Numara Engelleme Uyumluluğu
Cihaz uygulamaları android.hardware.telephony.calling özelliğini bildiriyorsa:
[C-1-1] Numara engelleme desteği İÇERMELİDİR.
[C-1-2] SDK dokümanlarında açıklandığı gibi
BlockedNumberContractve ilgili API'yi eksiksiz bir şekilde uygulamalıdır.[C-1-3]
BlockedNumberProvideriçindeki bir telefon numarasından gelen tüm aramaları ve mesajları uygulamalarla etkileşim olmadan ENGELLEMELİDİR. Tek istisna, SDK belgelerinde açıklandığı gibi numara engellemenin geçici olarak kaldırıldığı durumdur.[C-1-4] Engellenen bir arama için platform çağrı günlüğü sağlayıcısına yazmalı ve önceden yüklenmiş numara çevirici uygulamasındaki varsayılan çağrı günlüğü görünümünde
BLOCKED_TYPEile aramaları filtrelemelidir.[C-1-5] Engellenen bir ileti için Telefon hizmeti sağlayıcıya yazılMAMALIDIR.
[C-1-6]
TelecomManager.createManageBlockedNumbersIntent()yöntemi tarafından döndürülen amaçla açılan, engellenen numaraların yönetimi için bir kullanıcı arayüzü uygulamalıdır.[C-1-7] Android platformu, birincil kullanıcının cihazdaki tek bir örnek olan telefon hizmetleri üzerinde tam kontrol sahibi olduğunu varsaydığından, ikincil kullanıcıların cihazda engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERİLMEMELİDİR. Engellemeyle ilgili TÜM kullanıcı arayüzü öğeleri ikincil kullanıcılar için GİZLENMELİ ve engellenenler listesine yine UYULMALIDIR.
Cihaz Android 7.0'a güncellendiğinde engellenen numaralar sağlayıcıya taşınmalıdır.
Önceden yüklenmiş çevirici uygulamasında engellenen aramaları göstermek için kullanıcıya bir olanak SUNULMALIDIR.
7.4.1.2. Telecom API
Cihaz uygulamaları android.hardware.microphone ve android.hardware.audio.output değerlerini bildirip android.hardware.type.television değerini bildirmezse:
[7.4.1.2/C-0-1]
android.software.telecomözellik bayrağını BEYAN ETMELİDİR.[7.4.1.2/C-0-2] Telekom çerçevesi UYGULANMALIDIR.
Cihaz uygulamaları android.hardware.telephony.calling bildiriyorsa:
[C-1-1] SDK'da açıklanan
ConnectionServiceAPI'lerini desteklemelidir.[C-1-2] Kullanıcı,
CAPABILITY_SUPPORT_HOLDaracılığıyla belirtilen bekletme özelliğini desteklemeyen bir üçüncü taraf uygulaması tarafından yapılan devam eden bir aramadayken yeni bir gelen aramayı GÖSTERMELİ ve kullanıcının gelen aramayı kabul etmesine veya reddetmesine olanak TANIMALIDIR.[C-1-3] InCallService'i uygulayan bir uygulamaya SAHİP OLMALIDIR.
[C-SR-1] Kullanıcıya, gelen bir aramayı yanıtlamanın devam eden bir aramayı sonlandıracağı konusunda bildirimde bulunulması ŞİDDETLE TAVSİYE EDİLİR.
AOSP uygulaması, kullanıcının gelen bir aramayı yanıtlaması durumunda diğer aramanın sonlandırılacağını belirten bir uyarı bildirimiyle bu şartları karşılar.
[C-SR-2] Üçüncü taraf uygulaması,
PhoneAccountüzerindekiEXTRA_LOG_SELF_MANAGED_CALLSekstralar anahtarınıtrueolarak ayarladığında arama günlüğünde arama günlüğü girişi ve üçüncü taraf uygulamasının adını gösteren varsayılan çevirici uygulamasının önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.[C-SR-3]
android.telecomAPI'leri için ses kulaklığınınKEYCODE_MEDIA_PLAY_PAUSEveKEYCODE_HEADSETHOOKetkinliklerinin aşağıdaki gibi işlenmesi ŞİDDETLE TAVSİYE EDİLİR:Devam eden bir arama sırasında önemli etkinliğe kısa basma algılandığında
Connection.onDisconnect()arama yapılır.Gelen arama sırasında önemli etkinlik tuşuna kısa basıldığında
Connection.onAnswer()çağrılır.Gelen arama sırasında önemli etkinlik tuşuna uzun basıldığında
Connection.onReject()işlevini çağırın.CallAudioStateöğesinin sesi kapatma durumunu değiştirin.
7.4.1.3. Hücresel NAT-T Keepalive Offload
Cihaz uygulamaları:
- Hücresel bağlantı canlı tutma boşaltma özelliği desteklenmelidir.
Cihaz uygulamaları, hücresel keepalive yük aktarma desteği içeriyorsa ve bu işlevi üçüncü taraf uygulamalarına sunuyorsa:
[C-1-1] SocketKeepAlive API'sini DESTEKLEMELİDİR.
[C-1-2] Hücresel bağlantı üzerinden en az bir eşzamanlı etkin tutma yuvasını DESTEKLEMELİDİR.
[C-1-3] Hücresel Radyo HAL'si tarafından desteklenen sayıda eşzamanlı hücresel bağlantı tutma yuvasını DESTEKLEMELİDİR.
[C-SR-1] Radyo örneği başına en az üç hücresel canlı tutma yuvasını desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, hücresel bağlantı canlı tutma boşaltma özelliğini desteklemiyorsa:
- [C-2-1]
ERROR_UNSUPPORTEDdöndürmelidir.
7.4.2. IEEE 802.11 (Kablosuz)
Cihaz uygulamaları:
- 802.11'in bir veya daha fazla biçimi için destek içermelidir.
Cihaz uygulamaları 802.11'i destekliyor ve işlevselliği üçüncü taraf bir uygulamaya sunuyorsa:
[C-1-1] Karşılık gelen Android API'si UYGULANMALIDIR.
[C-1-2] Donanım özellik bayrağını
android.hardware.wifibildirmelidir.[C-1-3] SDK belgelerinde açıklandığı gibi çoklu yayın API'si uygulanmalıdır.
[C-1-4] Çoklu yayın kilidi tutulmadığı ve paketler APF tarafından filtrelenmediği sürece, ekran etkin durumda olmadığı zamanlar da dahil olmak üzere, çalışma süresinin tamamında mDNS'yi desteklemeli ve mDNS paketlerini (224.0.0.251 veya ff02::fb) filtrelememelidir. Paketlerin, uygulamalar tarafından NsdManager API'leri aracılığıyla istenen mDNS işlemlerini karşılaması gerekmez. Ancak cihaz, hedef pazarda geçerli olan yasal şartların gerektirdiği güç tüketimi aralıklarında kalmak için gerekirse mDNS paketlerini filtreleyebilir.
[C-1-5]
WifiManager.enableNetwork()API yöntemi çağrısı, uygulama trafiği için varsayılan olarak kullanılan vegetActiveNetworkveregisterDefaultNetworkCallbackgibiConnectivityManagerAPI yöntemleri tarafından döndürülen şu anda etkin olanNetwork'yi değiştirmek için yeterli bir gösterge olarak değerlendirilmemelidir. Başka bir deyişle, yalnızca kablosuz ağın internet erişimi sağladığını başarıyla doğrularlarsa başka bir ağ sağlayıcının (ör. mobil veri) sağladığı internet erişimini devre dışı bırakabilirler.[C-1-6]
ConnectivityManager.reportNetworkConnectivity()API yöntemi çağrıldığındaNetworküzerindeki internet erişimini yeniden değerlendirmesi ve değerlendirme sonucunda mevcutNetwork'ün artık internet erişimi sağlamadığı belirlendiğinde internet erişimi sağlayan başka bir kullanılabilir ağa (ör. mobil veri) geçmesi ŞİDDETLE TAVSİYE EDİLİR.[C-1-7] STA bağlantısı kesilmişken her taramanın başında bir kez olmak üzere, kaynak MAC adresini ve yoklama isteği karelerinin sıra numarasını rastgele hale GETİRMELİDİR.
[C-1-8] Tek bir tutarlı MAC adresi KULLANILMALIDIR (MAC adresi, tarama ortasında rastgele HALE GETİRİLMEMELİDİR).
[C-1-9] Tarama sırasında gönderilen araştırma istekleri arasında araştırma isteği sıra numarasını normal şekilde (sırayla) yinelemelidir.
[C-1-10] Taramanın son yoklama isteği ile sonraki taramanın ilk yoklama isteği arasındaki Yoklama isteği sıra numarası rastgele hale GETİRİLMELİDİR.
[C-SR-1] İlişkilendirme ve ilişkilendirme sırasında bir Erişim Noktası (AP) ile tüm STA iletişimi için kullanılan kaynak MAC adresinin rastgele hale getirilmesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz, iletişim kurduğu her SSID (Passpoint için FQDN) için farklı bir rastgele MAC adresi KULLANMALIDIR.
Cihaz, kullanıcıya SSID başına (Passpoint için FQDN) rastgeleleştirme işlemini kontrol etme seçeneği SUNMALIDIR. Bu seçenek, rastgeleleştirilmemiş ve rastgeleleştirilmiş seçenekleri içermelidir. Ayrıca, yeni kablosuz ağ yapılandırmaları için varsayılan mod rastgeleleştirilmiş olarak AYARLANMALIDIR.
[C-SR-2] Oluşturdukları tüm AP'ler için rastgele bir BSSID kullanmaları ŞİDDETLE TAVSİYE EDİLİR.
MAC adresi, AP tarafından kullanılan SSID başına rastgele hale getirilmiş ve kalıcı hale getirilmiş OLMALIDIR.
CİHAZ, kullanıcıya bu özelliği devre dışı bırakma seçeneği sunabilir. Böyle bir seçenek sunuluyorsa rastgele hale getirme işlevi varsayılan olarak ETKİN olmalıdır.
Cihaz uygulamaları, IEEE 802.11 standardında tanımlandığı şekilde kablosuz güç tasarrufu modu desteği içeriyorsa:
Bir uygulama
WifiManager.createWifiLock()veWifiManager.WifiLock.acquire()API'leri aracılığıylaWIFI_MODE_FULL_HIGH_PERFveyaWIFI_MODE_FULL_LOW_LATENCYkilidi aldığında ve kilit etkin olduğunda Wi-Fi güç tasarrufu modu KAPATILMALIDIR.[C-3-2] Cihaz, Kablosuz Düşük Gecikme Kilidi (
WIFI_MODE_FULL_LOW_LATENCY) modundayken cihaz ile bir erişim noktası arasındaki ortalama gidiş dönüş gecikmesi, Kablosuz Yüksek Performans Kilidi (WIFI_MODE_FULL_HIGH_PERF) modundaki gecikmeden daha kısa OLMALIDIR.[C-SR-3] Düşük Gecikme Kilidi (
WIFI_MODE_FULL_LOW_LATENCY) alındığında ve yürürlüğe girdiğinde kablosuz ağın gidiş dönüş gecikmesini en aza indirmek için KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları kablosuz ağ özelliğini destekliyorsa ve konum taraması için kablosuz ağ kullanıyorsa:
- [C-2-1]
WifiManager.isScanAlwaysAvailableAPI yöntemiyle okunan değerin etkinleştirilmesi/devre dışı bırakılması için kullanıcıya bir olanak SAĞLANMALIDIR.
7.4.2.1. Kablosuz Doğrudan Bağlantı
Cihaz uygulamaları:
- Kablosuz Doğrudan Bağlantı (Wi-Fi eşler arası) desteği OLMALIDIR.
Cihaz uygulamaları Kablosuz Doğrudan Bağlantı desteği içeriyorsa:
[C-1-1] SDK belgelerinde açıklandığı şekilde ilgili Android API'sini uygulamalıdır.
[C-1-2] Donanım özelliği
android.hardware.wifi.directRAPORLANMALIDIR.[C-1-3] Normal kablosuz ağ çalışmasını DESTEKLEMELİDİR.
[C-1-4] Aynı anda kablosuz ve Kablosuz Doğrudan Bağlantı işlemlerini desteklemelidir.
[C-SR-1] Yeni oluşturulan tüm Kablosuz Doğrudan Bağlantı bağlantıları için kaynak MAC adresinin rastgele seçilmesi ŞİDDETLE TAVSİYE EDİLİR.
7.4.2.2. Wi-Fi Tunneled Direct Link Setup
Cihaz uygulamaları:
- Android SDK Dokümanlarında açıklandığı gibi Wi-Fi Tunneled Direct Link Setup (TDLS) desteği İÇERMELİDİR.
Cihaz uygulamaları TDLS desteği içeriyorsa ve TDLS, WiFiManager API'si tarafından etkinleştirilmişse:
[C-1-1]
WifiManager.isTdlsSupportedaracılığıyla TDLS desteği beyan EDİLMELİDİR.TDLS'yi yalnızca mümkün OLDUĞUNDA VE faydalı olduğunda kullanmalıdır.
Performansı kablosuz ağ erişim noktası üzerinden gitmekten daha kötü olabileceği durumlarda sezgisel bir yaklaşıma sahip OLMALI ve TDLS'yi KULLANMAMALIDIR.
7.4.2.3. Wi-Fi Aware
Cihaz uygulamaları:
- Wi-Fi Aware desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Aware desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
[C-1-1] SDK belgelerinde açıklandığı şekilde
WifiAwareManagerAPI'leri uygulamalıdır.[C-1-2]
android.hardware.wifi.awareözellik bayrağı BEYAN EDİLMELİDİR.[C-1-3] MUST support Wi-Fi and Wi-Fi Aware operations concurrently.
[C-1-4] Aware mesafe ölçümü işlemi devam etmediği veya Aware veri yolu etkin olmadığı sürece (veri yolu etkin olduğu sürece rastgeleleştirme beklenmez) Wi-Fi Aware etkinleştirildiğinde ve 30 dakikadan uzun olmayan aralıklarla Wi-Fi Aware yönetim arayüzü adresini rastgeleleştirmelidir.
Cihaz uygulamaları, Bölüm 7.4.2.5'te açıklandığı gibi Wi-Fi Aware ve Wi-Fi Konum desteği içeriyorsa ve bu işlevleri üçüncü taraf uygulamalarına sunuyorsa:
- [C-2-1] Konum algılamaya yönelik keşif API'leri uygulanmalıdır: setRangingEnabled, setMinDistanceMm, setMaxDistanceMm ve onServiceDiscoveredWithinRange.
7.4.2.4. Wi-Fi Passpoint
Cihaz uygulamaları 802.11'i (Kablosuz) destekliyorsa:
- Kablosuz Passpoint desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Passpoint desteği içeriyorsa:
[C-1-2]
WifiManagerAPI'lerini SDK belgelerinde açıklandığı şekilde uygulamalıdır.[C-1-3] IEEE 802.11u standardını, özellikle de Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi Ağ Keşfi ve Seçimi ile ilgili olarak DESTEKLEMELİDİR.
[C-1-4]
android.hardware.wifi.passpointözellik bayrağı BEYAN EDİLMELİDİR.[C-1-5] Passpoint ağlarını keşfetmek, eşleştirmek ve bunlarla ilişkilendirmek için AOSP uygulamasını KULLANMALIDIR.
[C-1-6] Wi-Fi Alliance Passpoint R2'de tanımlandığı şekilde, cihaz temel hazırlığı protokollerinin en azından aşağıdaki alt kümesini DESTEKLEMELİDİR: EAP-TTLS kimlik doğrulaması ve SOAP-XML.
[C-1-7] AAA sunucu sertifikasını Hotspot 2.0 R3 spesifikasyonunda açıklandığı şekilde işlemelidir.
[C-1-8] MUST support user control of provisioning through the Wi-Fi picker.
[C-1-9] Passpoint yapılandırmaları yeniden başlatma işlemleri arasında kalıcı olmalıdır.
[C-SR-1] Hüküm ve koşulları kabul etme özelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-2] Tesis bilgisi özelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
Genel bir Passpoint devre dışı bırakma kullanıcı kontrolü anahtarı sağlanırsa uygulamalar:
- [C-3-1] Varsayılan olarak Passpoint'i etkinleştirmelidir.
7.4.2.5. Kablosuz Konum (Kablosuz Gidiş Dönüş Süresi - RTT)
Cihaz uygulamaları:
- Kablosuz konum desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Konum desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
[C-1-1] SDK belgelerinde açıklandığı şekilde
WifiRttManagerAPI'leri uygulamalıdır.[C-1-2]
android.hardware.wifi.rttözellik bayrağı BEYAN EDİLMELİDİR.[C-1-3] RTT'nin yürütüldüğü kablosuz arayüz bir erişim noktasıyla ilişkilendirilmemişken yürütülen her RTT patlaması için kaynak MAC adresi rastgele hale GETİRİLMELİDİR.
[C-1-4] Kümülatif Dağılım İşlevi ile hesaplandığı üzere, 68. yüzdelik dilimde 80 MHz bant genişliğinde 2 metre içinde doğru OLMALIDIR.
[C-SR-1] Kümülatif dağılım işleviyle hesaplandığı üzere, 68.yüzdelik dilimde 80 MHz bant genişliğinde 1,5 metre içinde doğru şekilde raporlanması ŞİDDETLE TAVSİYE EDİLİR.
7.4.2.6. Wi-Fi Keepalive Boşaltması
Cihaz uygulamaları:
- Wi-Fi keepalive offload desteği İÇERMELİDİR.
Cihaz uygulamaları, Wi-Fi keepalive offload desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalara sunuyorsa:
[C-1-1] SocketKeepAlive API'si DESTEKLENMELİDİR.
[C-1-2] Kablosuz bağlantı üzerinden en az üç eşzamanlı etkin tutma yuvasını DESTEKLEMELİDİR.
Cihaz uygulamaları, Wi-Fi keepalive yük aktarmayı desteklemiyorsa:
- [C-2-1] MUST return
ERROR_UNSUPPORTED.
7.4.2.7. Wi-Fi Easy Connect (Cihaz Temel Hazırlığı Protokolü)
Cihaz uygulamaları:
- SHOULD include support for Wi-Fi Easy Connect (DPP).
Cihaz uygulamaları Wi-Fi Easy Connect desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1] WifiManager#isEasyConnectSupported()
yöntemi
truedöndürmelidir.
7.4.2.8. Kurumsal kablosuz ağ sunucusu sertifikası doğrulama
Kablosuz sunucu sertifikası doğrulanmazsa veya kablosuz sunucu alan adı ayarlanmazsa cihaz uygulamaları:
- [C-SR-1] Kullanıcıya, Ayarlar uygulamasında kurumsal kablosuz ağ'ı manuel olarak ekleme seçeneği sunulmaması ŞİDDETLE TAVSİYE EDİLİR.
7.4.2.9. İlk Kullanımda Güven (TOFU)
Cihaz uygulamaları, ilk kullanımda güven (TOFU) özelliğini destekliyorsa ve kullanıcının WPA/WPA2/WPA3-Enterprise yapılandırmalarını tanımlamasına izin veriyorsa:
- [C-4-1] Kullanıcıya TOFU'yu kullanmayı seçme seçeneği SUNULMALIDIR.
7.4.2.10. Kablosuz Yakınlık Algılama
Cihaz uygulamaları, Wi-Fi yakınlık algılama desteği içeriyorsa:
[C-1-1] Yakınlık algılama desteği OLMALIDIR.
[C-1-2]
android.hardware.wifi.rttözellik bayrağı BEYAN EDİLMELİDİR.[C-1-3]
WifiRttManager#getProximityDetectionCharacteristics()yöntemi null olmayan bir değer döndürmelidir.[C-1-4]
WifiRttManagersürekli mesafe ölçümü API'leri uygulanmalıdır.[C-1-5] Kablosuz bağlantı ve kablosuz bağlantı yakınlık algılama işlemleri aynı anda DESTEKLENMELİDİR.
[C-1-6] 68. yüzdelik dilimde (Kümülatif Dağılım Fonksiyonu ile hesaplandığı gibi) 80 MHz bant genişliğinde 2 metre içinde doğru OLMALIDIR.
[C-1-7] Aşağıdaki öncelik sırasına göre maksimum desteklenen bant genişliğini kullanarak en yüksek kullanılabilir frekans bandında (6 GHz, 5 GHz veya 2,4 GHz) Yakınlık Algılama (PD) aralığı ölçümü YAPILMALIDIR: 160 MHz, 80 MHz, 40 MHz ve 20 MHz.
[C-SR-1] Kümülatif dağılım işleviyle hesaplandığı üzere, 68.yüzdelik dilimde 80 MHz bant genişliğinde 1,5 metre içinde doğru şekilde bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-2] 802.11az NTB aralığını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
7.4.3. Bluetooth
Cihaz uygulamaları Bluetooth Ses profilini destekliyorsa:
- Gelişmiş Ses Codec'lerini ve Bluetooth Ses Codec'lerini (ör. LDAC) DESTEKLEMELİDİR.
Cihaz uygulamaları HFP, A2DP ve AVRCP'yi destekliyorsa:
- Toplamda en az 5 bağlı cihazı DESTEKLEMELİDİR.
Cihaz uygulamaları android.hardware.vr.high_performance
özelliğini beyan ediyorsa:
- [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı'nı DESTEKLEMELİDİR.
Android, Bluetooth ve Bluetooth Düşük Enerji'yi destekler.
Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:
[C-2-1] İlgili platform özelliklerini (sırasıyla
android.hardware.bluetoothveandroid.hardware.bluetooth_le) BEYAN ETMELİ ve platform API'lerini uygulamalıdır.Cihaza uygun şekilde A2DP, AVRCP, OBEX, HFP gibi alakalı Bluetooth profillerini uygulamalıdır.
Cihaz uygulamaları Bluetooth Düşük Enerji (BLE) desteği içeriyorsa:
[C-3-1]
android.hardware.bluetooth_ledonanım özelliğini BEYAN ETMELİDİR.[C-3-2] SDK dokümanlarında ve android.bluetooth'ta açıklandığı gibi GATT (genel özellik profili) tabanlı Bluetooth API'lerini ETKİNLEŞTİRMELİDİR.
[C-3-3] ScanFilter API sınıfları için filtreleme mantığının uygulanıp uygulanmadığını belirtmek üzere
BluetoothAdapter.isOffloadedFilteringSupported()için doğru değeri bildirmelidir.[C-3-4] Düşük enerjili reklamcılığın desteklenip desteklenmediğini belirtmek için
BluetoothAdapter.isMultipleAdvertisementSupported()ile ilgili doğru değer RAPORLANMALIDIR.[C-3-5] Cihaz, tarama veya bildirme için BDE'yi etkin olarak kullanırken kullanıcı gizliliğini korumak amacıyla 15 dakikayı aşmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulamalı ve zaman aşımında adresi döndürmelidir. Zamanlama saldırılarını önlemek için zaman aşımı aralıkları da 5 ile 15 dakika arasında rastgele olmalıdır.
ScanFilter API'yi uygularken filtreleme mantığının Bluetooth yonga setine aktarılmasını DESTEKLEMELİDİR.
Toplu taramanın Bluetooth yonga setine aktarılması DESTEKLENMELİDİR.
En az 4 yuvalı çoklu reklamı DESTEKLEMELİDİR.
Cihaz uygulamaları Bluetooth LE'yi destekliyorsa ve konum taraması için Bluetooth LE'yi kullanıyorsa:
- [C-4-1] Sistem API'si
BluetoothAdapter.isBleScanAlwaysAvailable()aracılığıyla değer okuma işlemini etkinleştirmek/devre dışı bırakmak için kullanıcıya bir olanak SAĞLANMALIDIR.
Cihaz uygulamaları, Bluetooth LE Kullanarak İşitme Cihazı Ses Desteği bölümünde açıklandığı gibi Bluetooth LE ve İşitme Cihazları Profili desteği içeriyorsa:
- [C-5-1]
BluetoothAdapter.getProfileProxy(context, listener, BluetoothProfile.HEARING_AID)içintruedöndürmelidir.
Cihaz uygulamaları Bluetooth veya Bluetooth Düşük Enerji desteği içeriyorsa:
- [C-6-1] İstekte bulunan uygulama, mevcut ön plan/arka plan durumuna göre
android.permission.ACCESS_FINE_LOCATIONizin kontrolünü başarıyla geçmediği sürece, cihazın konumunu belirlemek için kullanılabilecek Bluetooth meta verilerine (ör. tarama sonuçları) erişimi KESİNLİKLE kısıtlamalıdır.
Cihaz uygulamaları Bluetooth veya Bluetooth Düşük Enerji desteği içeriyorsa ve uygulama manifestinde geliştiricinin Bluetooth'tan konum elde etmediğini belirten bir beyan yoksa:
- [C-6-2] Bluetooth erişimi,
android.permission.ACCESS_FINE_LOCATIONile sınırlandırılmalıdır.
Cihaz uygulamaları, BluetoothAdapter.isLeAudioSupported() API'si için true döndürürse:
[C-7-1] Tek noktaya yayın istemcisi desteklenmelidir.
[C-7-2] 2M PHY'yi DESTEKLEMELİDİR.
[C-7-3] LE genişletilmiş reklamcılığı DESTEKLEMELİDİR.
[C-7-4] Bir CIG'de en az 2 CIS bağlantısı DESTEKLENMELİDİR.
[C-7-5] BAP tek yayın istemcisi, CSIP kümesi koordinatörü, MCP sunucusu, VCP denetleyicisi ve CCP sunucusu aynı anda ETKİNLEŞTİRİLMELİDİR.
[C-SR-1] HAP tek yayın istemcisinin etkinleştirilmesi ÖNEMLE TAVSİYE EDİLİR.
Cihaz uygulamaları, BluetoothAdapter.isLeAudioBroadcastSourceSupported() API'si için true döndürürse:
[C-8-1] Bir BIG'de en az 2 BIS bağlantısı desteklenmelidir.
[C-8-2] BAP yayın kaynağı ve BAP yayın yardımcısı aynı anda ETKİNLEŞTİRİLMELİDİR.
[C-8-3] LE Periyodik bildirmeyi DESTEKLEMELİDİR.
Cihaz uygulamaları, BluetoothAdapter.isLeAudioBroadcastAssistantSupported() API'si için true döndürürse:
[C-9-1] PAST'ı (Periyodik Bildirme Senkronizasyonu Aktarımı) desteklemelidir.
[C-9-2] LE Periyodik bildirmeyi DESTEKLEMELİDİR.
Cihaz uygulamaları FEATURE_BLUETOOTH_LE değerini bildiriyorsa:
[C-10-1] MUST have RSSI measurements be within +/-9 dB for 95% of the measurements at 1 m distance from a reference device transmitting at
ADVERTISE_TX_POWER_HIGHin line of sight environment.[C-10-2] Her bir kanaldaki sapmaları azaltmak için Rx/Tx düzeltmeleri İÇERMELİDİR. Böylece, ölçümlerin% 95'inde 3 kanaldan her birinde, antenlerin her birinde (birden fazla kullanılıyorsa) yapılan ölçümler birbirine göre +/-3 dB aralığında olur.
Cihaz uygulamaları FEATURE_BLUETOOTH_LE_CHANNEL_SOUNDING değerini bildiriyorsa:
[C-11-1] Donanım özellik bayrağını bildirmelidir
android.hardware.bluetooth_le.channel_sounding.[C-11-2] Kümülatif dağılım fonksiyonu ile hesaplandığı üzere, 1 m mesafede 90.yüzdelik dilimde aralığı +/- 0,5 m dahilinde doğru şekilde bildirmelidir.
Cihaz uygulamaları FEATURE_BLUETOOTH_LE değerini bildiriyorsa:
[C-SR-2] Medyan BLE RSSI'nin
ADVERTISE_TX_POWER_HIGH'da iletim yapan bir referans cihazdan 1 m mesafede -60 dBm +/-10 dB olmasını sağlamak için Rx ofsetini ölçmek ve telafi etmek ŞİDDETLE TAVSİYE EDİLİR. Bu durumda cihazlar, ekranları aynı yöne bakacak şekilde "paralel düzlemlerde" yer alacak şekilde yönlendirilir.[C-SR-3] Cihazlar, ekranları aynı yöne bakacak şekilde "paralel düzlemlerde" olacak şekilde yönlendirildiğinde, 1 m mesafede konumlandırılmış ve
ADVERTISE_TX_POWER_HIGHiletim yapan bir referans cihazdan tarama yaparken ortalama BLE RSSI'nin -60 dBm +/-10 dB olmasını sağlamak için Tx ofsetini ölçmek ve telafi etmek ŞİDDETLE TAVSİYE EDİLİR.
Presence Calibration Requirements (Mevcudiyet Kalibrasyonu Koşulları) bölümünde belirtilen ölçüm kurulumu adımlarının uygulanması ŞİDDETLE TAVSİYE EDİLİR.
7.4.4. Near-Field Communications
Cihaz uygulamaları:
Yakın alan iletişimi (NFC) için bir alıcı-verici ve ilgili donanım İÇERMELİDİR.
[C-0-1]
android.nfc.NdefMessageveandroid.nfc.NdefRecordAPI'leri, NFC desteği içermese veyaandroid.hardware.nfcözelliğini tanımlamasa bile uygulamalıdır. Bunun nedeni, sınıfların protokolden bağımsız bir veri gösterimi biçimini temsil etmesidir.
Cihaz uygulamaları NFC donanımı içeriyorsa ve bu donanımı üçüncü taraf uygulamalara sunmayı planlıyorsa:
[C-1-1]
android.content.pm.PackageManager.hasSystemFeature()yöntemi ileandroid.hardware.nfcözelliğini raporlaması ZORUNLUDUR.Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarını okuyup yazabilmelidir:
[C-1-2] Aşağıdaki NFC standartları aracılığıyla NFC Forum okuyucu/yazıcı (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0'da tanımlandığı gibi) olarak işlev görebilmelidir:
- NfcA (ISO14443-3A)
- NfcB (ISO14443-3B)
- NfcF (JIS X 6319-4)
- IsoDep (ISO 14443-4)
- NFC Forum Etiket Türleri 2, 3, 4, 5 (NFC Forum tarafından tanımlanır)
[C-SR-1] Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarının yanı sıra ham verileri okuyup yazabilmesi KESİNLİKLE ÖNERİLİR. NFC standartlarının ŞİDDETLE TAVSİYE EDİLEN olarak belirtildiğini ancak gelecekteki bir sürümün Uyumluluk Tanımı'nda bunların ZORUNLU olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılamaları önemle tavsiye edilir.
[C-1-13] NFC keşif modundayken desteklenen tüm teknolojiler için yoklama YAPILMALIDIR.
Cihaz uyanıkken, ekran etkin ve kilit ekranı açıkken NFC keşif modunda OLMALIDIR.
Thinfilm NFC Barcode ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.
Yukarıda belirtilen JIS, ISO ve NFC Forum spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.
Android, NFC ana kart emülasyonu (HCE) modunu destekler.
Cihaz uygulamaları, HCE'yi (NfcA ve/veya NfcB için) destekleyen bir NFC denetleyici yonga seti içeriyorsa ve Uygulama Kimliği (AID) yönlendirmesini destekliyorsa:
[C-2-1]
android.hardware.nfc.hceözelliği sabiti RAPORLANMALIDIR.[C-2-2] Android SDK'da tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.
Cihaz uygulamaları, NfcF için HCE özellikli bir NFC denetleyici yonga seti içeriyorsa ve özelliği üçüncü taraf uygulamaları için uyguluyorsa:
[C-3-1]
android.hardware.nfc.hcefözelliği sabiti RAPORLANMALIDIR.[C-3-2] Android SDK'da tanımlandığı şekilde NfcF Card Emulation API'lerini uygulamalıdır.
Cihaz uygulamaları bu bölümde açıklandığı gibi genel NFC desteği içeriyorsa ve okuyucu/yazıcı rolünde MIFARE teknolojilerini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:
[C-4-1] İlgili Android API'lerini Android SDK'sında belgelendiği şekilde uygulamalıdır.
[C-4-2]
android.content.pm.PackageManager.hasSystemFeature() yöntemindencom.nxp.mifareözelliğini RAPORLAMALIDIR. Bunun standart bir Android özelliği olmadığını ve bu nedenleandroid.content.pm.PackageManagersınıfında sabit olarak görünmediğini unutmayın.
7.4.5. Ağ protokolleri ve API'ler
7.4.5.1. Minimum Ağ İşlevi
Cihaz uygulamaları:
[C-0-1] Bir veya daha fazla veri ağı biçimi için destek içermelidir. Daha net bir ifadeyle, cihaz uygulamaları en az 200 Kbit/sn hızında veri aktarabilen bir veri standardını desteklemelidir. Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet ve Bluetooth PAN verilebilir.
Fiziksel bir ağ standardı (ör. Ethernet) birincil veri bağlantısı olduğunda, 802.11 (kablosuz) gibi en az bir yaygın kablosuz veri standardı için de destek içermelidir.
Birden fazla veri bağlantısı biçimi UYGULAYABİLİR.
7.4.5.2. IPv6
Cihaz uygulamaları:
[C-0-2] IPv6 ağ yığını içermeli ve
java.net.Socketilejava.net.URLConnectiongibi yönetilen API'ler veAF_INET6soketleri gibi yerel API'ler kullanılarak IPv6 iletişimi desteklenmelidir.[C-0-3] Varsayılan olarak IPv6'yı etkinleştirmelidir.
IPv6 iletişiminin IPv4 kadar güvenilir olduğundan EMİN OLMALIDIR. Örneğin:
[C-0-4] Uyku modunda IPv6 bağlantısı SÜRDÜRÜLMELİDİR.
[C-0-5] Hız sınırlaması, en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu ağlarda cihazın IPv6 bağlantısını kaybetmesine NEDEN OLMAMALIDIR.
[C-0-6] IPv6 ağına bağlandığında, cihazda yerel olarak herhangi bir adres veya bağlantı noktası çevirisi yapılmadan üçüncü taraf uygulamalarına ağa doğrudan IPv6 bağlantısı SAĞLANMALIDIR. Hem
Socket#getLocalAddressveyaSocket#getLocalPortgibi yönetilen API'ler hem degetsockname()veyaIPV6_PKTINFOgibi NDK API'leri, ağda paket göndermek ve almak için kullanılan ve internet (web) sunucularına kaynak IP ve bağlantı noktası olarak görünen IP adresini ve bağlantı noktasını DÖNDÜRMELİDİR.
Gerekli IPv6 desteği düzeyi, aşağıdaki şartlarda gösterildiği gibi ağ türüne bağlıdır.
Cihaz uygulamaları kablosuz bağlantıyı destekliyorsa:
- [C-1-1] Çift yığınlı ve yalnızca IPv6 ile çalışmayı kablosuz ağda DESTEKLEMELİDİR.
Cihaz uygulamaları Ethernet'i destekliyorsa:
- [C-2-1] Ethernet'te çift yığınlı ve yalnızca IPv6 işlemlerini desteklemelidir.
Cihaz uygulamaları hücresel veriyi destekliyorsa:
- [C-3-1] Hücresel ağda IPv6 çalışması (yalnızca IPv6 ve muhtemelen çift yığın) DESTEKLENMELİDİR.
Cihaz uygulamaları birden fazla ağ türünü (ör. kablosuz ve hücresel veri) destekliyorsa:
- [C-4-1] Cihaz aynı anda birden fazla ağ türüne bağlıyken her ağda yukarıdaki şartları aynı anda karşılamalıdır.
7.4.5.3. Giriş Portalları
Giriş portalı, internet erişimi elde etmek için oturum açılmasını gerektiren bir ağı ifade eder.
Cihaz uygulamaları, android.webkit.Webview API'ın eksiksiz bir uygulamasını sağlıyorsa:
[C-1-1] MUST provide a captive portal application to handle the intent
ACTION_CAPTIVE_PORTAL_SIGN_INand display the captive portal login page, by sending that intent, on call to the System APIConnectivityManager#startCaptivePortalApp(Network, Bundle).[C-1-2] Cihaz hücresel/mobil ağ, kablosuz bağlantı, Ethernet veya Bluetooth dahil olmak üzere herhangi bir ağ türüne bağlandığında giriş portallarını algılamalı ve giriş portalı uygulaması üzerinden oturum açmayı desteklemelidir.
[C-1-3] Cihaz, katı Gizli DNS yüksek düzey modu kullanacak şekilde yapılandırıldığında, şifresiz metin DNS kullanılarak giriş portalı'larda günlük kaydı desteklenmelidir.
[C-1-4]
android.net.LinkProperties.getPrivateDnsServerNameveandroid.net.LinkProperties.isPrivateDnsActiveiçin SDK belgelerinde belirtildiği şekilde şifrelenmiş DNS KULLANILMALIDIR. Ayrıca, açıkça captive portal ile iletişim kurmayan tüm ağ trafiği için de şifrelenmiş DNS KULLANILMALIDIR.[C-1-5] Kullanıcı bir captive portal'a giriş yaparken uygulamalar tarafından kullanılan varsayılan ağın (
ConnectivityManager.getActiveNetwork,ConnectivityManager.registerDefaultNetworkCallbacktarafından döndürülen vejava.net.Socketgibi Java ağ API'leri ileconnect()gibi yerel API'ler tarafından varsayılan olarak kullanılan) varsa internet erişimi sağlayan başka bir ağ olduğundan EMİN OLMALIDIR.
7.4.6. Senkronizasyon Ayarları
Cihaz uygulamaları:
- [C-0-1]
getMasterSyncAutomatically()yönteminin "true" değerini döndürmesi için ana otomatik senkronizasyon ayarı varsayılan olarak açık OLMALIDIR.
7.4.7. Veri Tasarrufu
Cihaz uygulamaları ölçülü bağlantı içeriyorsa:
- [C-SR-1] Veri tasarrufu modunun sağlanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları veri tasarrufu modu sunuyorsa:
- [C-1-1]
ConnectivityManagersınıfındaki tüm API'leri SDK belgelerinde açıklandığı şekilde destekLEMELİDİR.
Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:
[C-2-2] MUST NOT broadcast
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED.
7.4.8. Güvenlik unsurları
Cihaz uygulamaları Open Mobile API özellikli güvenli öğeleri destekleyip üçüncü taraf uygulamaların kullanımına sunuyorsa:
[C-1-1]
android.se.omapi.SEService.getReaders()API'si aracılığıyla kullanılabilir güvenli öğe okuyucularını listelemelidir.[C-1-2] UICC tabanlı güvenlik unsurlarına sahip cihazlar için
android.hardware.se.omapi.uicc, eSE tabanlı güvenlik unsurlarına sahip cihazlar içinandroid.hardware.se.omapi.eseve SD tabanlı güvenlik unsurlarına sahip cihazlar içinandroid.hardware.se.omapi.sdaracılığıyla doğru özellik bayraklarını TANIMLAMALIDIR.
7.4.9. ultra geniş bant
Cihaz uygulamaları 802.1.15.4 desteği içeriyorsa ve işlevselliği üçüncü taraf bir uygulamaya sunuyorsa:
[C-1-1]
android.uwbiçinde ilgili Android API'yi uygulaması ZORUNLUDUR.[C-1-2] Donanım özellik bayrağını
android.hardware.uwbbildirmelidir.[C-1-3] Android uygulamasında tanımlanan ilgili tüm UWB profillerini DESTEKLEMELİDİR.
[C-1-4] Kullanıcının UWB radyo açma/kapama durumunu değiştirmesine olanak tanıyan bir kullanıcı arayüzü sağlamalıdır.
[C-1-5] UWB radyosunu kullanan uygulamaların
UWB_RANGINGiznine (NEARBY_DEVICESizin grubu altında) sahip olması ZORUNLUDUR.[C-SR-1] FIRA, CCC ve CSA dahil olmak üzere standart kuruluşlar tarafından tanımlanan ilgili uygunluk ve sertifika testlerini geçmeleri ŞİDDETLE TAVSİYE EDİLİR.
[C-1-6] Yansıtıcı olmayan bir odada 1 m mesafedeki görüş hattı ortamındaki ölçümlerin% 95'inde mesafe ölçümlerinin +/-15 cm içinde olduğundan EMİN OLMALIDIR.
[C-1-7] Referans cihazdan 1 m uzaklıkta yapılan mesafe ölçümlerinin ortancasının [0,75 m, 1,25 m] aralığında olduğundan EMİN OLMALIDIR. Burada gerçek mesafe, DUT'un üst kenarından ölçülür.
[C-SR-2] Presence Calibration Requirements'ta belirtilen ölçüm kurulumu adımlarının uygulanması ŞİDDETLE TAVSİYE EDİLİR.
7.5. Kameralar
Cihaz uygulamaları en az bir kamera içeriyorsa:
[C-1-1]
android.hardware.camera.anyözellik bayrağını BİLDİRMELİDİR.[C-1-2] Temel önizleme ve fotoğraf çekme amacıyla kamera açıkken bir uygulamanın, cihazdaki en yüksek çözünürlüklü kamera sensörünün ürettiği görüntülerin boyutuna eşit 3
RGBA_8888bit eşlemi aynı anda ayırması ZORUNLUDUR.[C-1-3]
MediaStore.ACTION_IMAGE_CAPTURE,MediaStore.ACTION_IMAGE_CAPTURE_SECURE, veyaMediaStore.ACTION_VIDEO_CAPTUREamaçlarını işleyen, önceden yüklenmiş varsayılan kamera uygulamasının, alıcı uygulamadaACCESS_FINE_LOCATIONbulunmadığı durumlarda, alıcı uygulamaya göndermeden önce görüntü meta verilerindeki kullanıcı konumunu kaldırması ZORUNLUDUR.
Cihaz uygulamalarında en az bir kamera varsa ve önceden yüklenmiş kamera uygulaması MediaStore.ACTION_MOTION_PHOTO_CAPTURE veya MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE amaçlarını işliyorsa:
[C-1-4] Bu amaçları işlerken önceden yüklenmiş kamera uygulamasının,
ACCESS_FINE_LOCATIONizni olmayan alıcı uygulamalara göndermeden önce resim meta verilerindeki kullanıcı konumunu kaldırması ZORUNLUDUR.[C-1-5] Döndürülen hareketli fotoğrafın, Hareketli Fotoğraf biçimi 1.0 spesifikasyonunu kullandığından EMİN OLMALIDIR.
- [C-1-6] Her kamera cihazı türü,
CameraCharacteristics.INFO_DEVICE_TYPEalanı kullanılarakBUILT_IN,EXTERNALveyaVIRTUALolarak etiketlenmelidir. Ayrıca, her kamera çıkışı karesiniCaptureResult.INFO_DEVICE_TYPEalanını kullanarak etiketlemelidir.
CaptureResult.INFO_DEVICE_TYPEöğesinin doğru şekilde etiketlenmesi, özellikle kamera kimliğinin dinamik olarak farklı bir kamera kaynağına yeniden eşlendiği durumlarda önemlidir.
Cihaz uygulamaları HDR 10 bit çıkış özelliğini destekliyorsa:
[C-2-1] 10 bit çıkışı destekleyen her kamera cihazı için en az HLG HDR profilini desteklemelidir.
[C-2-2] Birincil arka veya birincil ön kamera için 10 bit çıkış desteklenmelidir.
[C-SR-1] Birincil kameraların her ikisi için de 10 bit çıkış desteklemesi KESİNLİKLE ÖNERİLİR.
[C-2-3] Bir mantıksal kameranın tüm
BACKWARD_COMPATIBLEözellikli fiziksel alt kameraları ve mantıksal kameranın kendisi aynı HDR profillerini desteklemelidir.
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO API'sini uygulayan 10 bit HDR'yi destekleyen mantıksal kamera cihazları:
- [C-3-1] Mantıksal kameradaki
CONTROL_ZOOM_RATIOkontrolü aracılığıyla geriye dönük uyumlu tüm fiziksel kameralar arasında geçiş desteklenmelidir.
7.5.1. Arka Kamera
Arka kamera, cihazın uzak tarafındaki sahnelerin fotoğrafını çeken, dünyaya dönük bir kameradır. Geleneksel kameralar gibi çalışır. Elde taşınan cihazlarda bu kamera, ekranın karşısındaki tarafta bulunur.
Cihaz uygulamaları:
- Arka kamera İÇERMELİDİR.
Cihaz uygulamaları en az bir arka kamera içeriyorsa:
- [C-1-1] Özellik bayrağını
android.hardware.cameraveandroid.hardware.camera.anyBİLDİRMELİDİR.
- [C-1-2] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
Kamera sürücüsünde (uygulama yazılımı için şeffaf) donanım veya yazılım otomatik odaklama özelliği OLMALIDIR.
Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanımı OLABİLİR.
Flaş İÇEREBİLİR.
Kamerada flaş varsa:
- [C-2-1] Bir
android.hardware.Camera.PreviewCallbackörneği, bir Kamera önizleme yüzeyine kaydedilmişken uygulama, birCamera.ParametersnesnesininFLASH_MODE_AUTOveyaFLASH_MODE_ONözelliklerini açıkça etkinleştirerek flaşı etkinleştirmediği sürece flaş lambası YAKILMAMALIDIR. Bu kısıtlamanın cihazın yerleşik sistem kamera uygulaması için değil, yalnızcaCamera.PreviewCallbackkullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Kamera
Ön kamera, genellikle kullanıcıyı görüntülemek için kullanılan ve kullanıcıya dönük bir kameradır. Örneğin, video konferans ve benzeri uygulamalarda kullanılır. Elde taşınabilir cihazlarda ise ekranla aynı tarafta bulunan bir kameradır.
Cihaz uygulamaları:
- Ön kamera içerebilir.
Cihaz uygulamaları en az bir ön kameraya sahipse:
[C-1-1]
android.hardware.camera.anyveandroid.hardware.camera.frontözellik bayrağını BİLDİRMELİDİR.[C-1-2] En az VGA (640x480 piksel) çözünürlüğe sahip OLMALIDIR.
[C-1-3] Kamera API'si için varsayılan olarak ön kamera KULLANILMAMALI ve API, cihazdaki tek kamera olsa bile ön kamerayı varsayılan arka kamera olarak kabul edecek şekilde YAPILANDIRILMAMALIDIR.
[C-1-4] Geçerli uygulama,
android.hardware.Camera.setDisplayOrientation()yöntemi çağrısı aracılığıyla Kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesi, uygulama tarafından belirtilen yöne göre yatay olarak yansıtılmalıdır. Aksine, mevcut uygulamaandroid.hardware.Camera.setDisplayOrientation()yöntemi çağrısıyla Kamera ekranının döndürülmesini açıkça istemediğinde önizleme, cihazın varsayılan yatay ekseni boyunca yansıtılmalıdır.[C-1-5] Uygulama geri çağırmalarına döndürülen veya medya depolama alanına kaydedilen son yakalanan hareketsiz görüntü ya da video akışları yansıtılMAMALIDIR.
[C-1-6] MUST mirror the image displayed by the postview in the same manner as the camera preview image stream.
Bölüm 7.5.1'de açıklandığı gibi, arkaya bakan kameralarda kullanılabilen özellikler (ör. otomatik odaklama, flaş vb.) İÇEREBİLİR.
Cihaz uygulamaları kullanıcı tarafından döndürülebiliyorsa (ör. ivmeölçer aracılığıyla otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak):
- [C-2-1] Kamera önizlemesi, cihazın mevcut yönüne göre YATAY olarak aynalanmalıdır.
7.5.3. Harici Kamera
Harici kamera, cihaza fiziksel olarak bağlanabilen veya cihazdan ayrılabilen ve herhangi bir yöne bakabilen bir kameradır (ör. USB kameralar).
Cihaz uygulamaları:
- Her zaman bağlı olması gerekmeyen harici bir kamera için destek içerebilir.
Cihaz uygulamaları harici kamera desteği içeriyorsa:
[C-1-1] MUST declare the platform feature flag
android.hardware.camera.externalandandroid.hardware camera.any.[C-1-2] Harici kamera USB ana bağlantı noktası üzerinden bağlanıyorsa USB Video Class'ı (UVC 1.0 veya üzeri) DESTEKLEMELİDİR.
[C-1-3] Bağlı fiziksel bir harici kamera cihazıyla kamera CTS testlerini GEÇMELİDİR. Kamera CTS testiyle ilgili ayrıntıları source.android.com adresinde bulabilirsiniz.
Yüksek kaliteli kodlanmamış akışların (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırmalarını DESTEKLEMELİDİR.
BİRDEN FAZLA kamerayı destekleyebilir.
Kameraya dayalı video kodlamayı DESTEKLEYEBİLİR.
Kameraya dayalı video kodlama destekleniyorsa:
- [C-2-1] Cihaz uygulamasında eşzamanlı bir kodlanmamış / MJPEG akışına (QVGA veya daha yüksek çözünürlük) erişilebilmelidir.
7.5.4. Kamera API'sinin Davranışı
Android, kameraya erişmek için iki API paketi içerir. Daha yeni olan android.hardware.camera2 API, uygulamaya düşük düzeyde kamera kontrolü sunar. Bu kontrol; verimli sıfır kopyalı seri çekim/akış akışları ve pozlama, kazanç, beyaz dengesi kazançları, renk dönüştürme, gürültü azaltma, keskinleştirme gibi özelliklerin kare başına kontrolünü içerir.
Daha eski API paketi android.hardware.Camera, Android 5.0'da desteği sonlandırılmış olarak işaretlenmiştir ancak uygulamaların kullanmaya devam edebilmesi gerekir. Android cihaz uygulamaları, bu bölümde ve Android SDK'sında açıklandığı gibi API'nin sürekli olarak desteklenmesini sağlamalıdır.
Kullanımdan kaldırılan android.hardware.Camera sınıfı ile daha yeni olan android.hardware.camera2 paketi arasında ortak olan tüm özellikler, her iki API'de de eşdeğer performans ve kaliteye sahip OLMALIDIR. Örneğin, eşdeğer ayarlarda otomatik odaklama hızı ve doğruluğu aynı olmalı, çekilen görüntülerin kalitesi de aynı olmalıdır. İki API'nin farklı semantiğine bağlı özelliklerin eşleşen hıza veya kaliteye sahip olması gerekmez ancak mümkün olduğunca yakın olmalıdır.
Cihaz uygulamaları, mevcut tüm kameralar için kamerayla ilgili API'lerde aşağıdaki davranışları uygulamalıdır. Cihaz uygulamaları:
[C-0-1] Bir uygulama hiçbir zaman
android.hardware.Camera.Parameters.setPreviewFormat(int)işlevini çağırmadığında uygulama geri çağırmalarına sağlanan önizleme verileri içinandroid.hardware.PixelFormat.YCbCr_420_SPkullanılmalıdır.[C-0-2] Bir uygulama
android.hardware.Camera.PreviewCallbackörneği kaydettiğinde, sistemonPreviewFrame()yöntemini çağırdığında ve önizleme biçimiYCbCr_420_SPolduğunda,onPreviewFrame()yöntemine aktarılan byte[] içindeki veriler NV21 kodlama biçiminde OLMALIDIR. Yani NV21, varsayılan olmalıdır.[C-0-3]
android.hardware.Cameraiçin hem ön hem de arka kameranın kamera önizlemelerinde YV12 biçimi (android.graphics.ImageFormat.YV12sabitiyle gösterildiği gibi) DESTEKLENMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüştürmeyi DESTEKLEMELİDİR.)[C-0-4]
android.request.availableCapabilitiesiçindeREQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLEözelliğinin reklamını yapanandroid.hardware.camera2cihazlar içinandroid.media.ImageReaderAPI'si aracılığıyla çıkış olarakandroid.hardware.ImageFormat.YUV_420_888veandroid.hardware.ImageFormat.JPEGbiçimlerini desteklemelidir.[C-0-5] Cihazda donanım otomatik odaklama veya başka özellikler olup olmadığına bakılmaksızın, Android SDK belgelerinde yer alan Camera API'nin tamamını uygulamaya devam ETMELİDİR. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı
android.hardware.Camera.AutoFocusCallbackörneklerini yine de çağırmalıdır (bu durum, otomatik odaklama özelliği olmayan bir kamerayla alakalı olmasa bile). Bunun ön kameralar için de geçerli olduğunu unutmayın. Örneğin, çoğu ön kamera otomatik odaklamayı desteklemese de API geri çağırmaları yine de açıklandığı gibi "taklit edilmelidir".[C-0-6]
android.hardware.Camera.Parameterssınıfında veandroid.hardware.camera2.CaptureRequestsınıfında sabit olarak tanımlanan her parametre adını TANIMALI ve KABUL ETMELİDİR. Aksine, cihaz uygulamaları,android.hardware.Camera.setParameters()yöntemine iletilen veandroid.hardware.Camera.Parametersüzerinde sabit olarak belgelenenler dışındaki dize sabitlerini kabul etmemeli veya tanımamalıdır. Yani, donanım izin veriyorsa cihaz uygulamaları tüm standart kamera parametrelerini DESTEKLEMELİDİR ve özel kamera parametre türlerini DESTEKLEMEMELİDİR. Örneğin, yüksek dinamik aralık (HDR) görüntüleme tekniklerini kullanarak görüntü yakalamayı destekleyen cihaz uygulamaları,Camera.SCENE_MODE_HDRkamera parametresini DESTEKLEMELİDİR.[C-0-7] Android SDK'da açıklandığı şekilde
android.info.supportedHardwareLevelözelliğiyle uygun destek düzeyini BİLDİRMELİ ve uygun framework özellik işaretlerini BİLDİRMELİDİR.[C-0-8] Ayrıca
android.hardware.camera2özelliğini kullanarakandroid.request.availableCapabilitiesözelliği aracılığıyla kendi kamera özelliklerini beyan etmeli ve uygun özellik işaretlerini beyan etmelidir. Ekli kamera cihazlarından herhangi biri özelliği destekliyorsa özellik işareti tanımlanmalıdır.[C-0-9] Kamera ile yeni bir fotoğraf çekildiğinde ve fotoğrafın girişi medya deposuna eklendiğinde
Camera.ACTION_NEW_PICTUREintent'ini yayınLAMALIDIR.[C-0-10] Kamera ile yeni bir video kaydedildiğinde ve resim girişi medya deposuna eklendiğinde
Camera.ACTION_NEW_VIDEOniyetini yayınLAMALIDIR.[C-0-11] Tüm kameralar, kullanımdan kaldırılan
android.hardware.CameraAPI'si üzerinden erişilebilir olmalı veandroid.hardware.camera2API'si üzerinden de erişilebilir olmalıdır.[C-0-12]
android.hardware.camera2veyaandroid.hardware.CameraAPI'leri için yüz geometrisini, yüz cilt tonunu veya yüz cildini pürüzsüzleştirme gibi işlemler de dahil olmak üzere ancak bunlarla sınırlı olmamak kaydıyla yüz görünümünün DEĞİŞTİRİLMEMESİ sağlanmalıdır.[C-SR-1] Yakın mesafede bulunan ve aynı yöne bakan birden fazla RGB kameraya sahip cihazlarda, bu yöne bakan tüm RGB kameraları fiziksel alt cihazlar olarak listeleyen
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERAcapability nesnesini destekleyen mantıksal bir kamera cihazının kullanılması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, üçüncü taraf uygulamalarına özel bir kamera API'si sağlıyorsa:
[C-1-1]
android.hardware.camera2API'sini kullanarak bu tür bir kamera API'si UYGULAMALIDIR.MAY,
android.hardware.camera2API'ye satıcı etiketleri ve/veya uzantıları sağlayabilir.
Cihaz uygulamaları, birincil ön ve birincil arka kamera için üçüncü taraf kamera ardışık düzenini yerleşik kamera ardışık düzeniyle eşit olacak şekilde ayarlarsa:
- [C-2-1]
ro.camera.default_app_social_media_parity_enabledsistem özelliği TANIMLANMALIDIR.
7.5.5. Kamera Yönü
Cihaz uygulamalarında ön veya arka kamera varsa bu kameralar:
[C-1-1] Kameranın uzun boyutu, ekranın uzun boyutuyla aynı doğrultuda olacak şekilde yerleştirilmelidir. Yani cihaz yatay yönde tutulduğunda kameralar, görüntüleri yatay yönde çekmelidir. Bu, cihazın doğal yönünden bağımsız olarak geçerlidir. Yani, yatay yönü birincil olan cihazların yanı sıra dikey yönü birincil olan cihazlar için de geçerlidir.
Aşağıdaki ölçütlerden herhangi birini karşılayan cihazlar bu koşuldan muaftır:
Cihazda katlanabilir veya menteşeli ekranlar gibi değişken geometrili ekranlar kullanılıyor VE cihazın katlama veya menteşe durumu değiştiğinde cihaz, dikey öncelikli ile yatay öncelikli (veya tam tersi) yönler arasında geçiş yapıyor.
Kullanıcı tarafından döndürülemeyen cihaz uygulamaları (ör. otomotiv cihazları).
7.6. Bellek ve Depolama
7.6.1. Minimum Bellek ve Depolama
Cihaz uygulamaları:
- [C-0-1] Uygulamaların veri dosyalarını indirmek için KULLANABİLECEĞİ bir İndirme Yöneticisi İÇERMELİDİR ve en az 100 MB boyutundaki dosyaları varsayılan "önbellek" konumuna indirebilmelidir.
7.6.2. Uygulama Ortak Depolama Alanı
Cihaz uygulamaları:
- [C-0-1] Uygulamalar tarafından paylaşılan depolama alanı sunulmalıdır. Bu alan genellikle "paylaşılan harici depolama alanı", "uygulama tarafından paylaşılan depolama alanı" veya Linux yolu "/sdcard" olarak da adlandırılır.
- [C-0-2] Depolama biriminin dahili depolama bileşeninde mi yoksa çıkarılabilir bir depolama ortamında mı (ör. Secure Digital kart yuvası) uygulandığına bakılmaksızın, varsayılan olarak bağlı paylaşılan depolama birimiyle, diğer bir deyişle "kullanıma hazır" şekilde yapılandırılmalıdır.
- [C-0-3] Uygulama tarafından paylaşılan depolama alanı doğrudan Linux yoluna
sdcardbağlanmalı veyasdcardkonumundan gerçek bağlama noktasına bir Linux sembolik bağlantısı içermelidir. - [C-0-4] Aşağıdaki durum hariç olmak üzere, API düzeyi 29 veya üzeri sürümleri hedefleyen tüm uygulamalarda varsayılan olarak kapsamlı depolama etkinleştirilmelidir:
- Uygulama, manifest dosyasında
android:requestLegacyExternalStorage="true"istediğinde.
- Uygulama, manifest dosyasında
- [C-0-5] Arayan uygulamanın
ACCESS_MEDIA_LOCATIONizni olduğu durumlar hariç,MediaStoreüzerinden erişilen medya dosyalarında depolanan GPS Exif etiketleri gibi konum meta verileri REDAKTE EDİLMELİDİR.
Cihaz uygulamaları, yukarıdaki koşulları aşağıdaki yöntemlerden birini kullanarak karşılayabilir:
- Kullanıcı tarafından erişilebilen çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası).
- Android Açık Kaynak Projesi'nde (AOSP) uygulanan dahili (çıkarılamayan) depolama alanının bir kısmı.
Cihaz uygulamaları yukarıdaki koşulları karşılamak için çıkarılabilir depolama alanı kullanıyorsa:
- [C-1-1] Yuvaya depolama ortamı takılmadığında kullanıcıyı uyaran bir kısa ileti veya pop-up kullanıcı arayüzü uygulamalıdır.
- [C-1-2] FAT biçimli bir depolama ortamı (ör. SD kart) İÇERMELİ veya satın alma sırasında kutuda ve diğer materyallerde depolama ortamının ayrı olarak satın alınması gerektiği GÖSTERİLMELİDİR.
Cihaz uygulamaları, yukarıdaki şartları karşılamak için çıkarılamayan depolama alanının bir kısmını kullanıyorsa:
- Dahili olarak paylaşılan uygulama depolama alanının AOSP uygulamasını KULLANMALIDIR.
- Depolama alanını, uygulamanın özel verileriyle PAYLAŞABİLİR.
Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:
- [C-3-1] Uygulama paylaşılan depolama alanındaki verilere ana bilgisayardan erişmek için bir mekanizma SAĞLANMALIDIR.
- Android'in medya tarayıcı hizmeti ve
android.provider.MediaStorearacılığıyla her iki depolama yolundaki içerikleri şeffaf bir şekilde kullanıma sunMALIDIR. - USB yığın depolama kullanılabilir ancak bu şartı karşılamak için Medya Aktarım Protokolü KULLANILMALIDIR.
Cihaz uygulamalarında USB çevre birimi modu olan bir USB bağlantı noktası varsa ve Medya Aktarım Protokolü destekleniyorsa:
- Referans Android MTP ana makinesi Android Dosya Aktarımı ile uyumlu OLMALIDIR.
- 0x00 USB cihaz sınıfı bildirmelidir.
- "MTP" USB arayüzü adını bildirmelidir.
7.6.3. Dahili hale getirilebilir depolama alanı
Cihazın, televizyonun aksine mobil olması bekleniyorsa cihaz uygulamaları:
- [C-SR-1] Dahili hale getirilebilir depolama alanını uzun vadeli ve sabit bir konumda uygulamanız ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, yanlışlıkla bağlantısını kesmeniz veri kaybına/bozulmasına neden olabilir.
Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya başka bir koruyucu kapak gibi uzun süreli sabit bir konumdaysa cihaz uygulamaları:
[C-SR-2] Dahili hale getirilebilir depolama alanı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
7.7. USB
Tanımlar
USB ana makine modu, cihaz uygulamasının USB ana makinesi olarak davrandığı, veri yoluna güç sağladığı ve çevre birimleriyle iletişim kurduğu durumdur.
USB cihaz modu (USB çevre birimi modu olarak da bilinir), bir cihaz uygulamasının USB çevre birimi gibi davrandığı, bir ana makineye yukarı akış bağlantı noktası üzerinden bağlandığı ve ana makineden gelen isteklere yanıt verdiği durumdur.
USB bağlantı noktası, USB bağlantısı sağlayan bir mekanizma olarak tanımlanır. Bu mekanizma, fiziksel bir USB prizi veya standart olmayan bir arayüz (ör. pogo pinler) olabilir.
Cihaz uygulamalarında USB bağlantı noktası varsa:
USB cihaz modu desteklenmelidir.
USB ana makine modu desteklenmelidir.
USB üzerinden veri sinyali devre dışı bırakılmasını DESTEKLEMELİDİR.
7.7.1. USB cihaz modu
Cihaz uygulamaları, çevre birimi cihazı modunu destekleyen bir USB bağlantı noktası içeriyorsa:
[C-1-1] Bağlantı noktası, standart A tipi veya C tipi USB bağlantı noktasına sahip bir USB ana bilgisayarına bağlanabilmelidir.
[C-1-2]
iSerialNumberdeğerini,android.os.Build.SERIALüzerinden USB standardı cihaz tanımlayıcısında DOĞRU şekilde bildirmelidir.[C-1-3] Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını ALGILAMALI ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri ALGILAMALIDIR.
- [C-SR-1] Bağlantı noktası, micro-B, micro-AB veya Type-C USB form faktörünü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-2] Bağlantı noktası, cihazın alt kısmında (doğal yönlendirmeye göre) yer almalıdır veya tüm uygulamalar (ana ekran dahil) için yazılım ekran döndürme özelliği etkinleştirilmelidir. Böylece, cihaz bağlantı noktası altta olacak şekilde yönlendirildiğinde ekran doğru şekilde çizilir. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-3] USB Pil Şarjı spesifikasyonu, revizyon 1.2'de belirtildiği gibi HS chirp ve trafik sırasında 1,5 A akım çekme desteği uygulamalıdır. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-4] Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya alıcı/kaynak rollerini değiştiren tescilli şarj yöntemlerinin desteklenmemesi ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, standart USB Güç Dağıtımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunları yaşanabilir. Bu durum "ŞİDDETLE TAVSİYE EDİLİR" olarak belirtilse de gelecekteki Android sürümlerinde tüm C tipi cihazların standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemesini ZORUNLU kılabiliriz.
[C-SR-5] USB Type-C ve USB ana makine modunu desteklediklerinde veri ve güç rolü değiştirme için Güç Dağıtımı'nı desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
Yüksek voltajlı şarj için Güç Aktarımı'nı ve ekran çıkışı gibi Alternatif Modlar'ı DESTEKLEMELİDİR.
Android SDK belgelerinde belirtildiği gibi Android Open Accessory (AOA) API'sini ve spesifikasyonunu uygulamalıdır.
Cihaz uygulamaları bir USB bağlantı noktası içeriyorsa ve AOA spesifikasyonunu uyguluyorsa:
- [C-2-1] Donanım özelliği
android.hardware.usb.accessoryiçin destek beyan EDİLMELİDİR. - [C-2-2] USB yığın depolama sınıfı, USB yığın depolama biriminin arayüz açıklaması
iInterfacedizesinin sonunda "android" dizesini içermelidir.
7.7.2. USB ana makine modu
Cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-1-1] Android SDK'da belgelendiği şekilde Android USB ana makine API'si uygulanmalı ve
android.hardware.usb.hostdonanım özelliği için destek beyan edilmelidir. - [C-1-2] Standart USB çevre birimlerinin bağlanması için destek uygulanmalıdır.
Aşağıdakilerden BİRİNE sahip olmaları GEREKİR:
- Cihaz üzerinde USB Type-C bağlantı noktası bulunmalı veya cihaz üzerinde bulunan tescilli bağlantı noktasını standart USB Type-C bağlantı noktasına dönüştüren kablolarla birlikte gönderilmelidir (USB Type-C cihaz).
- Cihaz üzerinde USB Type-A bağlantı noktası veya cihaz üzerindeki tescilli bağlantı noktasını standart USB Type-A bağlantı noktasına uyarlayan kablolar.
- Cihaz üzerinde bir mikro-AB USB bağlantı noktası. Bu bağlantı noktası, standart bir USB Type-A bağlantı noktasına uyarlanmış bir kabloyla birlikte GÖNDERİLMELİDİR.
- [C-1-3] USB Type-A veya micro-AB bağlantı noktalarını USB Type-C bağlantı noktasına (priz) dönüştüren bir adaptörle birlikte gönderilmemelidir.
- [C-SR-1] Android SDK belgelerinde belirtildiği gibi USB ses sınıfının uygulanması ŞİDDETLE TAVSİYE EDİLİR.
- Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini DESTEKLEMELİDİR; USB Type-C konnektörleri için USB Type-C Kablo ve Konnektör Spesifikasyonu Revizyon 1.2'nin Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1,5 A kaynak akımı reklamı yapmalı veya Micro-AB konnektörleri için USB Pil Şarjı Spesifikasyonları, Revizyon 1.2'de belirtildiği gibi Şarj Edilen Aşağı Akım Bağlantı Noktası (CDP) çıkış akımı aralığını kullanmalıdır.
- USB Type-C standartlarını uygulamalı ve desteklemelidir.
Cihaz uygulamaları, ana makine modunu ve USB ses sınıfını destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-2-1] USB HID sınıfını desteklemelidir.
- [C-2-2] USB HID Kullanım Tabloları ve Sesli Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının
KeyEventsabitleriyle eşlenmesini ve algılanmasını AŞAĞIDAKİ GİBİ desteklemelidir:- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CD):
KEYCODE_MEDIA_PLAY_PAUSE - Kullanım Sayfası (0xC) Kullanım Kimliği (0x0E9):
KEYCODE_VOLUME_UP - Kullanım Sayfası (0xC) Kullanım Kimliği (0x0EA):
KEYCODE_VOLUME_DOWN - Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CF):
KEYCODE_VOICE_ASSIST
- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CD):
Cihaz uygulamaları, ana makine modunu ve Depolama Erişim Çerçevesi'ni (SAF) destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-3-1] Uzaktan bağlı tüm MTP (Medya Aktarım Protokolü) cihazlarını TANIMALI ve içeriklerine
ACTION_GET_CONTENT,ACTION_OPEN_DOCUMENTveACTION_CREATE_DOCUMENTamaçları aracılığıyla erişilebilmesini SAĞLAMALIDIR.
Cihaz uygulamaları, ana makine modunu ve USB Type-C'yi destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-4-1] USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rol Gücü (DRP) işlevini uygulamalıdır. DRP bağlantı noktaları için, 3,5 mm'lik ses jakı içeren cihazlarda USB güç alıcı algılama (ana makine modu) varsayılan olarak KAPALI olabilir ancak kullanıcının bunu etkinleştirmesi MÜMKÜN OLMALIDIR.
- [C-SR-2] DisplayPort'u desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
- USB SuperSpeed veri hızlarını DESTEKLEMELİDİR.
- Veri ve güç rolü değiştirme için Güç Dağıtımı'nı desteklemesi ÖNEMLE TAVSİYE EDİLİR.
- [C-SR-3] USB Type-C Cable and Connector Specification Revision 1.2'nin Ek A'sında açıklandığı gibi Ses Adaptörü Aksesuar Modu'nu DESTEKLEMEMESİ ŞİDDETLE TAVSİYE EDİLİR.
- Cihazın form faktörü için en uygun olan
Try.*modeli UYGULAMALIDIR. Örneğin, el cihazıTry.SNKmodelini uygulamalıdır.
7.7.3. USB Güç Aktarımı
Cihaz uygulamaları USB Type-C bağlantı noktası içeriyorsa:
- [C-SR-1] çekirdeğin USB Type-C Konnektör Sınıfı'nın uygulanması ve USB Type-C bağlantılarını, güç ve veri rollerini açıklayan gerekli düğümlerin uygulanması ŞİDDETLE TAVSİYE EDİLİR. Uygulama ayrıntıları için Android USB Type-C Dokümanı'na bakın.
Cihaz uygulamaları USB Type-C bağlantı noktası içeriyorsa ve güç aktarımını destekliyorsa:
- [C-SR-2] USB Güç Dağıtımı'nı açıklayan tüm düğümlerin uygulanması ÖNEMLE TAVSİYE EDİLİR. Uygulama ayrıntıları için Android USB PD Belgeleri'ne bakın.
Cihaz uygulamaları USB Type-C bağlantı noktası içeriyorsa ve alternatif modları destekliyorsa:
- [C-SR-3] Çekirdeğin USB Type-C Bağlantı Noktası Sınıfı'nın Alternatif Modları ve kimlikle ilgili özelliklerinin uygulanması ŞİDDETLE TAVSİYE EDİLİR. Uygulama ayrıntıları için Android USB Type-C Dokümanı'na bakın.
Cihaz uygulamaları USB Type-C bağlantı noktası içeriyorsa ve Thunderbolt 3 alternatif modunu destekliyorsa:
- [C-SR-4] Type-C konnektör sınıfı aracılığıyla mevcut alternatif modu geçersiz kılma özelliğinin uygulanması ŞİDDETLE TAVSİYE EDİLİR.
7.8. Ses
7.8.1. Mikrofon
Cihaz uygulamaları mikrofon içeriyorsa:
- [C-1-1]
android.hardware.microphoneözelliği sabiti RAPORLANMALIDIR. - [C-1-2] 5.4 bölümündeki ses kaydı koşullarını KARŞILAMALIDIR.
- [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
- [C-SR-1] Bölüm 7.8.3'te açıklandığı gibi ultrasona yakın kayıt desteklenmesi KESİNLİKLE ÖNERİLİR.
Cihaz uygulamalarında mikrofon yoksa:
- [C-2-1]
android.hardware.microphoneözelliği sabiti RAPORLANMAMALIDIR. - [C-2-2] 7. bölüm uyarınca ses kaydı API'si en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.
7.8.2. Ses Çıkışı
Cihaz uygulamaları, USB ses sınıfını kullanan USB ana makine modu bağlantı noktası veya 4 iletkenli 3,5 mm ses jakı gibi bir ses çıkışı çevre birimi için hoparlör ya da ses/multimedya çıkışı bağlantı noktası içeriyorsa:
- [C-1-1]
android.hardware.audio.outputözelliği sabiti RAPORLANMALIDIR. - [C-1-2] 5.5 bölümündeki ses çalma koşullarını KARŞILAMALIDIR.
- [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
- [C-SR-1] 7.8.3 bölümünde açıklandığı gibi, ultrasona yakın oynatmayı desteklemeniz ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında hoparlör veya ses çıkışı bağlantı noktası yoksa:
- [C-2-1]
android.hardware.audio.outputözelliği BİLDİRİLMEMELİDİR. - [C-2-2] Ses çıkışıyla ilgili API'ler en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.
Bu bölümün amaçları doğrultusunda "çıkış bağlantı noktası", 3, 5 mm ses jakı, HDMI veya USB ses sınıfına sahip USB ana makine modu bağlantı noktası gibi bir fiziksel arayüzdür. Bluetooth, kablosuz veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" olarak kabul edilmez.
7.8.2.1. Analog Ses Bağlantı Noktaları
Android ekosisteminde 3,5 mm ses fişini kullanan mikrofonlu kulaklıklar ve diğer ses aksesuarlarıyla uyumlu olması için cihaz uygulamaları bir veya daha fazla analog ses bağlantı noktası içeriyorsa:
- [C-SR-1] Ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:
- [C-1-1] Stereo kulaklıklarda ve mikrofonlu stereo kulaklıklarda ses çalmayı DESTEKLEMELİDİR.
- [C-1-2] CTIA pin çıkışı sırasına sahip TRRS ses fişleri DESTEKLENMELİDİR.
- [C-1-3] Ses fişindeki mikrofon ile toprak iletkenleri arasında aşağıdaki 3 eşdeğer empedans aralığı için algılama ve tuş kodlarına eşleme DESTEKLENMELİDİR:
- 70 ohm veya daha az:
KEYCODE_HEADSETHOOK - 210-290 ohm:
KEYCODE_VOLUME_UP - 360-680 ohm:
KEYCODE_VOLUME_DOWN
- 70 ohm veya daha az:
- [C-1-4] Fiş takıldığında
ACTION_HEADSET_PLUGtetiklenmelidir ancak yalnızca fişteki tüm kontaklar jak üzerindeki ilgili segmentlere temas ettikten sonra tetiklenmelidir. - [C-1-5] 32 ohm hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
- [C-1-6] 1,8 V ~ 2,9 V arasında bir mikrofon önyargı voltajına SAHİP OLMALIDIR.
- [C-1-7] Aşağıdaki aralıkta, ses fişindeki mikrofon ve toprak iletkenleri arasındaki eşdeğer empedansın tuş kodunu algılamalı ve bu tuş koduyla eşlemelidir:
- 110-180 ohm:
KEYCODE_VOICE_ASSIST
- 110-180 ohm:
- [C-SR-2] OMTP pin çıkışı sırasına sahip ses fişlerini desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR-3] Mikrofonlu stereo kulaklıklardan ses kaydını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 4 iletkenli 3,5 mm ses jakı varsa, mikrofon destekleniyorsa ve android.intent.action.HEADSET_PLUG, ek değer mikrofonu 1 olarak ayarlanmış şekilde yayınlanıyorsa:
- [C-2-1] Takılı ses aksesuarındaki mikrofonun algılanmasını DESTEKLEMELİDİR.
7.8.2.2. Dijital Ses Bağlantı Noktaları
Cihaza özgü gereksinimler için Bölüm 2.2.1'e bakın.
7.8.3. Near-Ultrasound
Yakın ultrasonik ses, 18,5 kHz ile 20 kHz arasındaki banttır.
Cihaz uygulamaları:
- AudioManager.getProperty API'si aracılığıyla, yakın ultrason ses özelliği desteğini aşağıdaki şekilde doğru olarak bildirmelidir:
PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND
değeri "true" ise VOICE_RECOGNITION ve UNPROCESSED ses kaynakları aşağıdaki koşulları KARŞILAMALIDIR:
- [C-1-1] Mikrofonun 18,5 kHz - 20 kHz bandındaki ortalama güç yanıtı, 2 kHz'deki yanıttan en fazla 15 dB düşük OLMALIDIR.
- [C-1-2] 18,5 kHz - 20 kHz aralığındaki mikrofonun ağırlıksız sinyal-gürültü oranı, -26 dBFS'de 19 kHz'lik bir ton için 50 dB'den düşük OLMAMALIDIR.
PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND "true" ise:
- [C-2-1] Hoparlörün 18,5 kHz - 20 kHz aralığındaki ortalama yanıtı, 2 kHz'deki yanıttan en fazla 40 dB daha düşük OLMALIDIR.
7.8.4. Sinyal Bütünlüğü
Cihaz uygulamaları:
- Her bir yol için bir dakikalık test sırasında ölçülen sıfır aksaklık olarak tanımlandığı üzere, elde taşınabilir cihazlarda hem giriş hem de çıkış akışları için aksaklık içermeyen bir ses sinyali yolu SAĞLAMALIDIR. OboeTester "Automated Glitch Test" (Otomatik Arıza Testi) ile test edin.
Test için 3,5 mm jakta doğrudan kullanılan ve/veya USB-C - 3, 5 mm adaptörle birlikte kullanılan bir ses geri döngü donanım anahtarı gerekir. Tüm ses çıkışı bağlantı noktaları TEST EDİLMELİDİR.
OboeTester şu anda AAudio yollarını desteklemektedir. Bu nedenle, aşağıdaki kombinasyonlar AAudio kullanılarak aksaklıklar açısından TEST EDİLMELİDİR:
| Performans Modu | Paylaşım | Çıkış Örnekleme Hızı | In Chans | Out Chans |
|---|---|---|---|---|
| LOW_LATENCY | ÖZEL | BELİRTİLMEMİŞ | 1 | 2 |
| LOW_LATENCY | ÖZEL | BELİRTİLMEMİŞ | 2 | 1 |
| LOW_LATENCY | PAYLAŞILDI | BELİRTİLMEMİŞ | 1 | 2 |
| LOW_LATENCY | PAYLAŞILDI | BELİRTİLMEMİŞ | 2 | 1 |
| YOK | PAYLAŞILDI | 48000 | 1 | 2 |
| YOK | PAYLAŞILDI | 48000 | 2 | 1 |
| YOK | PAYLAŞILDI | 44100 | 1 | 2 |
| YOK | PAYLAŞILDI | 44100 | 2 | 1 |
| YOK | PAYLAŞILDI | 16000 | 1 | 2 |
| YOK | PAYLAŞILDI | 16000 | 2 | 1 |
Güvenilir bir akış, 2.000 Hz sinüs için sinyal-gürültü oranı (SNR) ve toplam harmonik bozulma (THD) açısından aşağıdaki ölçütleri karşılamalıdır.
| Transdüser | THD | SNR |
|---|---|---|
| birincil yerleşik hoparlör, harici referans mikrofon kullanılarak ölçülür | < %3,0 | >= 50 dB |
| Harici referans hoparlör kullanılarak ölçülen birincil dahili mikrofon | < %3,0 | >= 50 dB |
| Dahili analog 3, 5 mm jaklar (loopback adaptörü kullanılarak test edilmiştir) | <%1 | >= 60 dB |
| Telefonla birlikte verilen USB adaptörleri, geri döngü adaptörü kullanılarak test edilmiştir. | < %1,0 | >= 60 dB |
7.9. Sanal Gerçeklik
Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "sanal gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamaları, bu bölümde ayrıntılı olarak açıklandığı gibi bu API'leri ve davranışları doğru şekilde uygulamalıdır.
7.9.1. Sanal Gerçeklik Modu
Android, VR Modu'nu destekler. Bu özellik, bildirimlerin stereoskopik olarak oluşturulmasını sağlar ve bir VR uygulaması kullanıcı odaklıyken tek gözlü sistem kullanıcı arayüzü bileşenlerini devre dışı bırakır.
7.9.2. Sanal Gerçeklik Modu - Yüksek Performans
Cihaz uygulamaları VR modunu destekliyorsa:
- [C-1-1] En az 2 fiziksel çekirdeğe SAHİP OLMALIDIR.
- [C-1-2]
android.hardware.vr.high_performanceözelliği BİLDİRİLMELİDİR. - [C-1-3] Sürekli performans modu desteklenmelidir.
- [C-1-4] OpenGL ES 3.2'yi DESTEKLEMELİDİR.
- [C-1-5]
android.hardware.vulkan.level0 desteklenmelidir. android.hardware.vulkan.level1 veya daha yeni bir sürüm desteklenmelidir.- [C-1-6]
EGL_KHR_mutable_render_buffer,EGL_ANDROID_front_buffer_auto_refresh,EGL_ANDROID_get_native_client_buffer,EGL_KHR_fence_sync,EGL_KHR_wait_sync,EGL_IMG_context_priority,EGL_EXT_protected_content,EGL_EXT_image_gl_colorspace'i uygulamalı ve uzantıları, kullanılabilir EGL uzantıları listesinde göstermelidir. - [C-1-8] MUST implement
GL_EXT_multisampled_render_to_texture2,GL_OVR_multiview,GL_OVR_multiview2,GL_EXT_protected_textures, and expose the extensions in the list of available GL extensions. - [C-SR-1]
GL_EXT_external_buffer,GL_EXT_EGL_image_array,GL_OVR_multiview_multisampled_render_to_texture'ın uygulanması ve uzantıların, kullanılabilir GL uzantıları listesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR-2] Vulkan 1.1'i desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR-3]
VK_ANDROID_external_memory_android_hardware_buffer,VK_GOOGLE_display_timing,VK_KHR_shared_presentable_image'ın uygulanması ve kullanılabilir Vulkan uzantıları listesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR-4]
flagshemVK_QUEUE_GRAPHICS_BIThem deVK_QUEUE_COMPUTE_BITöğelerini içerdiğinde vequeueCounten az 2 olduğunda en az bir Vulkan kuyruk ailesinin kullanıma sunulması ŞİDDETLE TAVSİYE EDİLİR. - [C-1-7] GPU ve ekran, paylaşılan ön arabelleğe erişimi senkronize edebilmelidir. Böylece, iki oluşturma bağlamıyla 60 FPS'de VR içeriğinin alternatif göz oluşturması, görünür yırtılma artefaktları olmadan gösterilir.
- [C-1-9] NDK'da açıklandığı gibi
AHardwareBufferişaretleriAHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER,AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATAveAHARDWAREBUFFER_USAGE_PROTECTED_CONTENTiçin destek uygulamalıdır. - [C-1-10] En azından aşağıdaki biçimler için
AHardwareBuffer'larınAHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT,AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE,AHARDWAREBUFFER_USAGE_PROTECTED_CONTENTkullanım işaretlerinin herhangi bir kombinasyonuyla desteklenmesi ZORUNLUDUR:AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM,AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM,AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM,AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT. - [C-SR-5]
AHardwareBuffers with more than one layer and flags and formats specified in C-1-10. - [C-1-11] Saniyede 30 kare hızında en az 3.840 x 2.160 çözünürlükte H.264 kod çözme işlemini desteklemeli ve ortalama 40 Mb/sn'ye sıkıştırılmış olmalıdır (saniyede 30 kare hızında 1.920 x 1.080 çözünürlükte 10 Mb/sn olan 4 örneğe veya saniyede 60 kare hızında 1.920 x 1.080 çözünürlükte 20 Mb/sn olan 2 örneğe eşdeğerdir).
- [C-1-12] HEVC ve VP9'u DESTEKLEMELİ, ortalama 10 Mb/sn'ye sıkıştırılmış 30 kare/sn hızında en az 1.920 x 1.080 çözünürlüğü KOD ÇÖZEBİLMELİ ve 30 kare/sn hızında 20 Mb/sn (30 kare/sn hızında 5 Mb/sn hızında 1.920 x 1.080 çözünürlüğe eşdeğer) 3.840 x 2.160 çözünürlüğü KOD ÇÖZEBİLMELİDİR.
- [C-1-13]
HardwarePropertiesManager.getDeviceTemperaturesAPI'sini desteklemeli ve deri sıcaklığı için doğru değerler döndürmelidir. - [C-1-14] Gömülü bir ekranı OLMALI ve çözünürlüğü en az 1920 x 1080 OLMALIDIR.
- [C-SR-6] En az 2.560 x 1.440 ekran çözünürlüğüne sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-15] Ekran, VR modundayken en az 60 Hz hızında güncellenmelidir.
- [C-1-17] Ekran, kalıcılığı ≤ 5 milisaniye olan düşük kalıcılık modunu desteklemelidir. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
- [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı'nı desteklemelidir bölüm 7.4.3.
- [C-1-19] Aşağıdaki varsayılan sensör türlerinin tümü için Doğrudan Kanal Türü'nü desteklemeli ve düzgün şekilde bildirmelidir:
TYPE_ACCELEROMETERTYPE_ACCELEROMETER_UNCALIBRATEDTYPE_GYROSCOPETYPE_GYROSCOPE_UNCALIBRATEDTYPE_MAGNETIC_FIELDTYPE_MAGNETIC_FIELD_UNCALIBRATED
- [C-SR-7] Yukarıda listelenen tüm Doğrudan Kanal Türleri için
TYPE_HARDWARE_BUFFERdoğrudan kanal türünü desteklemesi ŞİDDETLE TAVSİYE EDİLİR. - [C-1-21] Bölüm 7.3.9'da belirtildiği gibi
android.hardware.hifi_sensorsiçin jiroskop, ivme ölçer ve manyetometre ile ilgili şartları KARŞILAMALIDIR. - [C-SR-8]
android.hardware.sensor.hifi_sensorsözelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR. - [C-1-22] Uçtan uca hareketten fotona gecikme süresi 28 milisaniyeden fazla OLMAMALIDIR.
- [C-SR-9] Foton gecikmesine kadar uçtan uca hareketin 20 milisaniyeden fazla olmaması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-23] Siyah-beyaz geçişinden sonraki ilk karedeki piksellerin parlaklığı ile sabit durumdaki beyaz piksellerin parlaklığı arasındaki oran olan ilk kare oranı EN AZ %85 olmalıdır.
- [C-SR-10] İlk kare oranının en az %90 olması KESİNLİKLE ÖNERİLİR.
- Ön plandaki uygulamaya özel bir çekirdek SAĞLAYABİLİR ve en üstteki ön plan uygulamasına özel CPU çekirdeklerinin sayısını döndürmek için
Process.getExclusiveCoresAPI'sini DESTEKLEYEBİLİR.
Özel çekirdek destekleniyorsa çekirdek:
- [C-2-1] Üzerinde başka kullanıcı alanı işlemlerinin çalışmasına İZİN VERMEMELİDİR (uygulama tarafından kullanılan cihaz sürücüleri hariç), ancak gerektiğinde bazı çekirdek işlemlerinin çalışmasına İZİN VEREBİLİR.
7.10. Dokunma teknolojisi
Elde tutulmak veya giyilmek üzere tasarlanan cihazlarda, uygulamaların zil sesleri, alarmlar, bildirimler aracılığıyla dikkat çekme ve genel dokunma geri bildirimi gibi amaçlarla kullanabileceği genel amaçlı bir dokunsal aktüatör bulunabilir.
Cihaz uygulamaları bu tür genel amaçlı bir dokunsal aktüatör İÇERMİYORSA:
- [7.10/C]
Vibrator.hasVibrator()için yanlış (false) değeri DÖNDÜRÜLMELİDİR.
Cihaz uygulamaları bu tür genel amaçlı dokunsal aktüatörlerden en az birini içeriyorsa:
- [C-1-1]
Vibrator.hasVibrator()için doğru değerini döndürmelidir. - Eksantrik dönen kütleli (ERM) dokunsal aktüatör (titreşim motoru) KULLANILMAMALIDIR.
android.view.HapticFeedbackConstants'de net dokunma teknolojisi için tüm genel sabitleri uygulamalıdır. Yani (CLOCK_TICK,CONTEXT_CLICK,KEYBOARD_PRESS,KEYBOARD_RELEASE,KEYBOARD_TAP,LONG_PRESS,TEXT_HANDLE_MOVE,VIRTUAL_KEY,VIRTUAL_KEY_RELEASE,CONFIRM,REJECT,GESTURE_STARTveGESTURE_END).android.os.VibrationEffect'de net dokunsal geri bildirim için tüm genel sabitler (EFFECT_TICK,EFFECT_CLICK,EFFECT_HEAVY_CLICKveEFFECT_DOUBLE_CLICK) veandroid.os.VibrationEffect.Composition'de zengin dokunsal geri bildirim için tüm olası genelPRIMITIVE_*sabitleri (CLICK,TICK,LOW_TICK,QUICK_FALL,QUICK_RISE,SLOW_RISE,SPIN,THUD) UYGULANMALIDIR.LOW_TICKveSPINgibi bu temel öğelerin bazıları yalnızca titreşim motoru nispeten düşük frekansları destekleyebiliyorsa uygulanabilir.android.view.HapticFeedbackConstantsiçindeki Herkese açık sabitleri eşleme yönergelerini, karşılık gelen genlik ilişkileriyle birlikte önerilenandroid.os.VibrationEffectsabitlerine eşlemek ZORUNDADIR.- Bu bağlantılı dokunsal sabit eşlemeleri KULLANMALISINIZ.
createOneShot()vecreateWaveform()API'leri için kalite değerlendirmesi yapılmalıdır.- Herkese açık
android.os.Vibrator.hasAmplitudeControl()API'nin sonucunun, vibratörlerinin özelliklerini doğru şekilde yansıttığını DOĞRULAMALIDIR. android.os.Vibrator.hasAmplitudeControl()komutunu çalıştırarak genlik ölçeklenebilirliği özelliklerini DOĞRULAMALIDIR.
Cihaz uygulamaları dokunsal sabitler eşlemesini takip ediyorsa:
android.os.Vibrator.areAllEffectsSupported()veandroid.os.Vibrator.arePrimitivesSupported()API'lerini çalıştırarak uygulama durumunu DOĞRULAMALIDIR.- Dokunsal sabitler için kalite değerlendirmesi YAPILMALIDIR.
- Sabitler için uygulama kılavuzunda açıklandığı gibi, desteklenmeyen temel öğeler için yedek yapılandırmayı doğrulayın ve gerekirse güncelleyin.
- Başarısızlık riskini azaltmak için burada açıklandığı gibi yedek destek SAĞLAMALIDIR.
7.11. Medya Performansı Sınıfı
Cihaz uygulamasının medya performansı sınıfı, android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS API'sinden alınabilir. Medya performans sınıfıyla ilgili şartlar, R (30. sürüm) ile başlayan her Android sürümü için tanımlanır. 0 özel değeri, cihazın medya performansı sınıfında olmadığını gösterir.
Cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:
[C-1-1] EN AZ
android.os.Build.VERSION_CODES.Rdeğerini döndürmelidir.[C-1-2] El cihazı uygulaması OLMALIDIR.
[C-1-3] Bölüm 2.2.7'de açıklanan "Medya Performans Sınıfı" ile ilgili tüm koşulları karşılamalıdır.
Diğer bir deyişle, Android T'deki medya performans sınıfı yalnızca T, S veya R sürümündeki elde taşınabilir cihazlar için tanımlanır.
Cihaza özel gereksinimler için 2.2.7 bölümüne bakın.
8. Performans ve Güç
Minimum performans ve güç ölçütlerinden bazıları kullanıcı deneyimi açısından kritik öneme sahiptir ve geliştiricilerin uygulama geliştirirken sahip olacağı temel varsayımları etkiler.
8.1. Kullanıcı Deneyimi Tutarlılığı
Uygulamalar ve oyunlar için tutarlı bir kare hızı ve yanıt süreleri sağlamak üzere belirli minimum şartlar varsa son kullanıcıya sorunsuz bir kullanıcı arayüzü sunulabilir. Cihaz uygulamaları, cihaz türüne bağlı olarak 2. bölümde açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev değiştirme için ölçülebilir gereksinimlere SAHİP OLABİLİR.
8.2. Dosya G/Ç Erişim Performansı
Uygulama özel veri depolama alanında (/data bölümü) tutarlı bir dosya erişimi performansı için ortak bir temel oluşturmak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak uygun bir beklenti belirlemelerine olanak tanır. Cihaz uygulamaları, cihaz türüne bağlı olarak aşağıdaki okuma ve yazma işlemleri için 2. bölümde açıklanan belirli şartlara sahip OLABİLİR:
- Sıralı yazma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
- Rastgele yazma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
- Sıralı okuma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.
- Rastgele okuma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülür.
8.3. Güç Tasarrufu Modları
Cihaz uygulamaları, AOSP'de yer alan (ör. Uygulamayı Beklemeye Alma Grubu, Doz) veya özellikleri Kısıtlanmış Uygulamayı Beklemeye Alma Grubundan daha güçlü kısıtlamalar uygulayacak şekilde genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [C-1-1] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarının tetiklenmesi, bakımı, uyandırma algoritmaları ve global sistem ayarlarının veya DeviceConfig'in kullanımı için AOSP uygulamasından sapılmamalıdır.
- [C-1-2] Uygulama beklemede özelliği için her paketteki uygulamalarda işlerin, alarmın ve ağın sıklık sınırını yönetmek üzere genel ayarların veya DeviceConfig'in kullanımıyla ilgili AOSP uygulamasından SAPMAMALI.
- [C-1-3] Uygulama Bekletme için kullanılan Uygulama Bekletme Grupları sayısında AOSP uygulamasından sapılMAMALIDIR.
- [C-1-4] Uygulama Bekletme Grupları ve Doze, Güç Yönetimi'nde açıklandığı şekilde uygulanmalıdır.
- [C-1-5] Cihaz güç tasarrufu modundayken
PowerManager.isPowerSaveMode()içintruedeğerini DÖNDÜRMELİDİR. - [C-1-6] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından veya pil optimizasyonlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANIMALI ve kullanıcıdan bir uygulamanın pil optimizasyonlarını yoksaymasına izin vermesini istemek için ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS intentini UYGULAMALIDIR.
- [C-SR-1] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya olanak tanınması ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR-2] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf tutulan tüm uygulamaların gösterilmesi için kullanıcıya olanak tanınması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, AOSP'de yer alan güç yönetimi özelliklerini genişletiyorsa ve bu genişletme, Nadiren Kullanılan Uygulamayı Beklemeye Alma Paketi'nden daha katı kısıtlamalar uyguluyorsa 3.5.1 bölümüne bakın.
Android cihaz uygulamaları, güç tasarrufu modlarına ek olarak Advanced Configuration and Power Interface (ACPI) tarafından tanımlanan 4 uyku güç durumunun herhangi birini veya tümünü UYGULAYABİLİR.
Cihaz uygulamaları, ACPI tarafından tanımlanan S4 güç durumlarını uyguluyorsa:
- [C-1-1] YALNIZCA kullanıcı, cihazı etkin olmayan bir duruma getirmek için açık bir işlem yaptıktan sonra (ör. cihazın fiziksel bir parçası olan bir kapağı kapatarak veya bir aracı ya da televizyonu kapatarak) ve kullanıcı cihazı yeniden etkinleştirmeden önce (ör. kapağı açarak veya aracı ya da televizyonu tekrar açarak) bu duruma girmelidir.
Cihaz uygulamaları, ACPI tarafından tanımlanan S3 güç durumlarını uyguluyorsa:
[C-2-1] Yukarıdaki C-1-1 koşulunu KARŞILAMALI veya yalnızca üçüncü taraf uygulamalarının sistem kaynaklarına (ör. ekran, CPU) ihtiyacı olmadığında S3 durumuna girmelidir.
Aksine, üçüncü taraf uygulamaların sistem kaynaklarına ihtiyacı olduğunda bu SDK'da açıklandığı gibi S3 durumundan çıkılmalıdır.
Örneğin, üçüncü taraf uygulamaları
FLAG_KEEP_SCREEN_ONaracılığıyla ekranın açık kalmasını veyaPARTIAL_WAKE_LOCKaracılığıyla CPU'nun çalışmaya devam etmesini isterken cihaz, C-1-1'de açıklandığı gibi kullanıcı cihazı etkin olmayan bir duruma getirmek için açıkça işlem yapmadığı sürece S3 durumuna GİRMEMELİDİR. Aksine, üçüncü taraf uygulamalarının JobScheduler aracılığıyla uyguladığı bir görev tetiklendiğinde veya Firebase Cloud Messaging üçüncü taraf uygulamalarına teslim edildiğinde, kullanıcı cihazı etkin olmayan bir duruma getirmediği sürece cihaz S3 durumundan çıkmalıdır. Bunlar kapsamlı örnekler değildir ve AOSP, bu durumdan uyandırmayı tetikleyen kapsamlı uyandırma sinyalleri uygular.
8.4. Güç Tüketimi Muhasebesi
Güç tüketiminin daha doğru şekilde hesaplanması ve raporlanması, uygulama geliştiriciye hem teşvikler hem de uygulamanın güç kullanım şeklini optimize etme araçları sunar.
Cihaz uygulamaları:
- [C-SR-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her bir donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili sağlanması ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR-2] Tüm güç tüketimi değerlerinin miliamper saat (mAh) cinsinden raporlanması ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR-3] Her işlemin UID'si başına CPU güç tüketiminin bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu şartı karşılar. - [C-SR-4] Bu güç kullanımının uygulama geliştiriciye
adb shell dumpsys batterystatskabuk komutu aracılığıyla sunulması KESİNLİKLE ÖNERİLİR. - Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
8.5. Tutarlı Performans
Yüksek performanslı ve uzun süre çalışan uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırları nedeniyle CPU'nun hızını düşürmesi nedeniyle önemli ölçüde değişebilir. Android, cihazın kapasitesi yeterli olduğunda en üstteki ön plan uygulamasının, sistemden kaynakların tahsisini optimize etmesini isteyebilmesi için programatik arayüzler içerir.
Cihaz uygulamaları:
[C-0-1]
PowerManager.isSustainedPerformanceModeSupported()API yöntemiyle Sürekli Performans Modu desteğini doğru şekilde bildirmelidir.Sürekli Performans Modu desteklenmelidir.
Cihaz uygulamaları, Sürekli Performans Modu'nu desteklediğini bildiriyorsa:
- [C-1-1] Uygulama istediğinde, en üstteki ön plan uygulamasına en az 30 dakika boyunca tutarlı bir performans seviyesi SAĞLANMALIDIR.
- [C-1-2]
Window.setSustainedPerformanceMode()API'sine ve diğer ilgili API'lere UYULMALIDIR.
Cihaz uygulamaları iki veya daha fazla CPU çekirdeği içeriyorsa:
- En az bir özel çekirdek sağlamalıdır. Bu çekirdek, ön plandaki en üst uygulama tarafından ayrılabilir.
Cihaz uygulamaları, en üstteki ön plan uygulaması için özel bir çekirdek ayırmayı destekliyorsa:
- [C-2-1]
Process.getExclusiveCores()API yöntemiyle, en üstteki ön plan uygulaması tarafından ayrılabilen özel çekirdeklerin kimlik numaralarını bildirmelidir. - [C-2-2] Uygulamanın özel çekirdeklerde çalışması için kullanılan cihaz sürücüleri dışında hiçbir kullanıcı alanı sürecine izin VERİLMEMELİDİR. Ancak gerektiğinde bazı çekirdek süreçlerinin çalışmasına İZİN VERİLEBİLİR.
Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:
[C-3-1]
Process.getExclusiveCores()API yöntemiyle boş bir liste döndürmelidir.
8.6. Uygulama Bellek Sınırları
ActivityManagerService'in yeni bir bileşeni olan MemoryLimiter ve kullanılabilir fiziksel bellekten elde edilen varsayılan uygulama bellek sınırları, her bir uygulama işlemi için kullanılan DRAM miktarına sınırlar getirir. Bu kısıtlama, uygulama işlemi içinde ayrılan tüm bellek için geçerlidir. Böylece sınırlar, uygulama geliştiricilerle yapılan sözleşmelerde kritik bir davranış olarak işlev görür.
Cihaz uygulamaları:
- [C-0-1] Uygulamalar için belirlenen çalışma zamanı bellek sınırlarını atlamak üzere herhangi bir yöntem, izin verilenler listesi veya politika KULLANILMAMALIDIR.
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamaları:
[C-0-1] Android geliştirici belgelerindeki Güvenlik ve İzinler referans dokümanında tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.
[C-0-2] Üçüncü taraflardan/yetkililerden ek izin/sertifika gerektirmeden kendinden imzalı uygulamaların yüklenmesini DESTEKLEMELİDİR.
Cihaz uygulamaları android.hardware.security.model.compatible özelliğini beyan ediyorsa:
[C-1-1] Aşağıdaki alt bölümlerde listelenen koşulları DESTEKLEMELİDİR.
9.1. İzinler
Cihaz uygulamaları:
[C-0-1] Android geliştirici belgelerinde tanımlandığı şekilde Android izin modelini ve Android Rolleri Modeli'ni desteklemelidir. Özellikle, SDK belgelerinde tanımlandığı şekilde her izni ve rolü uygulamak ZORUNDADIR. Hiçbir izin ve rol atlanamaz, değiştirilemez veya göz ardı edilemez.
Yeni izin kimliği dizeleri
android.\*ad alanında olmadığı sürece ek izinler EKLENEBİLİR.[C-0-2]
protectionLevelPROTECTION_FLAG_PRIVILEGEDolan izinler yalnızca sistem görüntüsünün ayrıcalıklı yollarında önceden yüklenmiş uygulamalara (APEX dosyaları dahil) verilmeli ve her uygulama için açıkça izin verilen izinlerin alt kümesinde olmalıdır. AOSP uygulaması, her uygulama için izin verilen izinlerietc/permissions/yolundaki dosyalardan okuyup uygulayarak vesystem/priv-appyolunu ayrıcalıklı yol olarak kullanarak bu şartı karşılar.[C-SR-1]
protectionLeveldeğeriPROTECTION_SIGNATUREolan izinlerin yalnızca aşağıdakilerden birine verilmesi ŞİDDETLE TAVSİYE EDİLİR:Sistem görüntüsüne önceden yüklenmiş uygulamalar (APEX dosyaları dahil).
Sistem görüntüsünde yer almayan uygulamalar, izin verilen izinlerle izin verilenler listesine eklenir.
Tehlikeli koruma düzeyine sahip izinler, çalışma zamanı izinleridir.
targetSdkVersion > 22 olan uygulamalar, çalışma zamanında bunları ister.
Cihaz uygulamaları:
[C-0-3] Kullanıcının istenen çalışma zamanı izinlerini verip vermeyeceğine karar verebileceği özel bir arayüz GÖSTERİLMELİ ve kullanıcının çalışma zamanı izinlerini yönetebileceği bir arayüz SAĞLANMALIDIR.
[C-0-5] ŞU DURUMLAR HARİÇ uygulamalara çalışma zamanı izni VERİLMEMELİDİR:
- Cihaz gönderimi sırasında yüklenir VE
- Kullanıcının izni, uygulama izni kullanmadan önce alınabilir.
VEYA
- Çalışma zamanı izinleri, varsayılan izin verme politikası tarafından veya platform rolü için verilir.
[C-0-6] YALNIZCA uygun şekilde güvenli bir kurtarma aracısı kaydeden sistem uygulamalarına
android.permission.RECOVER_KEYSTOREizni VERİLMELİDİR. Uygun şekilde güvenliği sağlanmış bir Kurtarma Aracısı, cihaz dışı uzak depolama alanıyla senkronize olan, cihaz üzerinde çalışan bir yazılım aracısı olarak tanımlanır. Bu aracının, kilit ekranı bilgi faktörüne yönelik kaba kuvvet saldırılarını önlemek için Google Cloud Key Vault Hizmeti'nde açıklanan korumaya eşdeğer veya daha güçlü bir koruma sağlayan güvenli donanımla donatılmış olması gerekir.
Cihaz uygulamaları:
[C-0-7] Bir uygulama, standart Android API'si veya tescilli mekanizma aracılığıyla konum ya da fiziksel aktivite verilerini istediğinde Android konum izni özelliklerine UYMALIDIR. Bu tür veriler şunları içerir ancak bunlarla sınırlı değildir:
Bölüm 9.8.8'de açıklandığı şekilde cihazın konumu (ör. enlem ve boylam).
Cihazın konumunu belirlemek veya tahmin etmek için kullanılabilecek bilgiler (ör. SSID, BSSID, hücre kimliği veya cihazın bağlı olduğu ağın konumu).
Kullanıcının fiziksel aktivitesi veya fiziksel aktivitenin sınıflandırılması.
Daha açık şekilde belirtmek gerekirse cihaz uygulamaları:
[C-0-8] Bir uygulamanın konum veya etkinlik verilerine erişmesine izin vermek için kullanıcı izni ALINMALIDIR.
[C-0-9] YALNIZCA SDK'da açıklandığı şekilde yeterli izne sahip olan uygulamaya çalışma zamanında istenen izin VERMELİDİR. Örneğin, TelephonyManager#getServiceState
android.permission.ACCESS_FINE_LOCATIONiznini gerektirir.
Yukarıdaki Android konum izni özellikleriyle ilgili tek istisna, kullanıcı konumunu elde etmek veya tanımlamak için Konum'a erişmeyen uygulamalarla ilgilidir. Bu uygulamalar şunlardır:
Uygulamalar
RADIO_SCAN_WITHOUT_LOCATIONiznine sahip olduğundaSistem uygulamalarının
NETWORK_SETTINGSveyaNETWORK_SETUP_WIZARDiznine sahip olduğu cihaz yapılandırması ve kurulumu için.
İzinler, davranışlarını değiştirecek şekilde kısıtlanmış olarak işaretlenebilir.
[C-0-10]
hardRestrictedbayrağıyla işaretlenmiş izinler, aşağıdaki durumlar dışında bir uygulamaya VERİLMEMELİDİR:Uygulama APK dosyası sistem bölümündedir.
Kullanıcı, bir uygulamaya
hardRestrictedizinleriyle ilişkili bir rol atar.Yükleyici, bir uygulamaya
hardRestrictedizni verir.Bir uygulamaya, önceki bir Android sürümünde
hardRestrictedizni verilir.
[C-0-11]
softRestrictedizni olan uygulamalar YALNIZCA sınırlı erişim elde etmeli ve SDK'da açıklandığı şekilde izin verilenler listesine eklenene kadar tam erişim elde ETMEMELİDİR. Burada, hersoftRestrictedizni için tam ve sınırlı erişim tanımlanır (örneğin,READ_EXTERNAL_STORAGE).[C-0-12] setPermissionPolicy ve setPermissionGrantState API'lerinde tanımlanan izin kısıtlamalarını atlamak için özel işlevler veya API'ler SAĞLANMAMALIDIR.
[C-0-13] Android etkinlikleri ve hizmetlerinden tehlikeli izinlerle korunan verilere yapılan her programatik erişimi kaydetmek ve izlemek için AppOpsManager API'leri KULLANILMALIDIR.
[C-0-14] YALNIZCA rol şartlarını karşılayan işlevlere sahip uygulamalara rol atanMALIDIR.
[C-0-15] Platform tarafından tanımlanan rollerin işlevselliğini kopyalayan veya bu işlevselliğin üst kümesi olan roller tanımlANMAMALIDIR.
Cihazlarda nabız veya deri sıcaklığı gibi sağlıkla ilgili biyometrikleri ortaya çıkaran veri sensörleri varsa bu biyometrikler:
[C-0-16]
HealthPermissionsiçinde ilgili bir izin varsaandroid.permission-group.HEALTHplatform izinleriyle korunmalıdır.[C-0-17] İstenen veri türüyle eşleşen bir platform izni yoksa özel sistem izni ile korunmalıdır. (Örneğin,
ELECTROCARDIOGRAM.)
Cihazlar android.software.managed_users bildiriyorsa:
[C-1-1] Aşağıdaki izinler, yönetici tarafından sessizce verilmemelidir:
- Konum (
ACCESS_BACKGROUND_LOCATION,ACCESS_COARSE_LOCATION,ACCESS_FINE_LOCATION). - Kamera (
CAMERA) - Mikrofon (
RECORD_AUDIO) - Vücut sensörü (
BODY_SENSORS) - Sağlık (
HealthPermissions) - Fiziksel aktivite (
ACTIVITY_RECOGNITION)
- Konum (
Cihazlar android.software.managed_users bildiriyorsa:
[C-1-1] Aşağıdaki izinler, yönetici tarafından sessizce verilmemelidir:
- Konum (
ACCESS_BACKGROUND_LOCATION,ACCESS_COARSE_LOCATION,ACCESS_FINE_LOCATION). - Kamera (
CAMERA) - Mikrofon (
RECORD_AUDIO) - Vücut sensörü (
BODY_SENSORS) - Fiziksel aktivite (
ACTIVITY_RECOGNITION)
- Konum (
Cihaz uygulamaları, ACTION_MANAGE_OVERLAY_PERMISSION amacını işleyen bir etkinlik aracılığıyla hangi uygulamaların diğer uygulamaların üzerinde çizim yapabileceğini seçmek için kullanıcıya bir olanak sunuyorsa:
- [C-2-1]
ACTION_MANAGE_OVERLAY_PERMISSIONintent'i için intent filtreleri olan tüm etkinliklerin, başlatıcı uygulamadan veya sağladığı bilgilerden bağımsız olarak aynı kullanıcı arayüzü ekranına sahip olmasını SAĞLAMALIDIR.
Cihaz uygulamaları android.software.device_admin bildiriyorsa:
- [C-3-1] BT yöneticisinin, telefondaki ayarları (mikrofon, kamera ve konum dahil) kontrol etmesine izin verebileceğini belirten bir sorumluluk reddi beyanı, tam olarak yönetilen cihaz kurulumu (cihaz sahibi kurulumu) sırasında GÖSTERİLMELİDİR. Yöneticinin cihazdaki izinlerin kontrolünü devre dışı bırakmadığı SÜRECE, kullanıcıya kurulumu devam ettirme veya kurulumdan çıkma seçenekleri sunulmalıdır.
Cihaz uygulamaları, Sistem Arayüzü Intelligence, System Ambient Audio Intelligence, System Audio Intelligence, System Notification Intelligence, System Text Intelligence veya System Visual Intelligence rollerinden herhangi birini içeren paketleri önceden yüklüyorsa bu paketler:
- [C-4-1] MUST fulfill all requirements outlined for device implementations in sections 9.8.6. İşletim sistemi düzeyinde ve ortam verileri ve 9.8.15. Sandboxed API uygulamaları.
9.2. UID ve işlem izolasyonu
Cihaz uygulamaları:
- [C-0-1] Her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alanı modelini DESTEKLEMELİDİR.
- [C-0-2] Uygulamaların Güvenlik ve İzinler referansında tanımlandığı şekilde düzgün bir şekilde imzalanıp oluşturulması koşuluyla, aynı Linux kullanıcı kimliğiyle birden fazla uygulamanın çalıştırılması DESTEKLENMELİDİR.
9.3. Dosya Sistemi İzinleri
Cihaz uygulamaları:
- [C-0-1] Güvenlik ve İzinler referansında tanımlandığı şekilde Android dosya erişimi izinleri modelini DESTEKLEMELİDİR.
9.4. Alternatif Yürütme Ortamları
Cihaz uygulamaları, Dalvik Yürütülebilir Biçimi veya yerel kod dışında bir yazılım ya da teknoloji kullanarak uygulamaları yürüten çalışma zamanı ortamları içerse bile Android güvenlik ve izin modelinin tutarlılığını KORUMALIDIR. Başka bir deyişle:
[C-0-1] Alternatif çalışma zamanları, Android uygulaması olmalı ve 9. bölümde açıklandığı gibi standart Android güvenlik modeline uymalıdır.
[C-0-2] Alternatif çalışma zamanlarına, çalışma zamanının
AndroidManifest.xmldosyasında istenmeyen izinlerle korunan kaynaklara <uses-permission> mekanizması aracılığıyla erişim izni VERİLMEMELİDİR.[C-0-3] Alternatif çalışma zamanları, uygulamaların sistem uygulamalarıyla sınırlı Android izinleriyle korunan özelliklerden yararlanmasına İZİN VERMEMELİDİR.
[C-0-4] Alternatif çalışma zamanları, Android korumalı alan modeline uymalıdır. Alternatif çalışma zamanı kullanılarak yüklenen uygulamalar, paylaşılan kullanıcı kimliği ve imzalama sertifikası gibi standart Android mekanizmaları dışında, cihazda yüklü başka bir uygulamanın korumalı alanını yeniden kullanmamalıdır.
[C-0-5] Alternatif çalışma zamanları, diğer Android uygulamalarına karşılık gelen sanal ortamlara erişimle başlatılmamalı, bu ortamlara erişim vermemeli veya bu ortamlara erişim verilmemelidir.
[C-0-6] Alternatif çalışma zamanları, süper kullanıcı (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılmamalı, bu ayrıcalıklar verilmemeli ya da diğer uygulamalara verilmemelidir.
[C-0-7] Alternatif çalışma zamanlarının
.apkdosyaları, cihaz uygulamalarının sistem görüntüsüne dahil edildiğinde, cihaz uygulamalarıyla birlikte gelen diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla imzalanmalıdır.[C-0-8] Uygulamalar yüklenirken alternatif çalışma zamanları, uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMALIDIR.
[C-0-9] Bir uygulamanın, karşılık gelen bir Android izni (ör. Kamera, GPS vb.) olan bir cihaz kaynağını kullanması gerektiğinde alternatif çalışma zamanı, kullanıcıyı uygulamanın bu kaynağa erişebileceği konusunda bilgilendirmelidir.
[C-0-10] Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmediğinde çalışma zamanı ortamı, bu çalışma zamanını kullanan herhangi bir uygulama yüklenirken çalışma zamanının sahip olduğu tüm izinleri listelemelidir.
Alternatif çalışma zamanları, uygulamaları
PackageManageraracılığıyla ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir.Alternatif çalışma zamanları, alternatif çalışma zamanını kullanan tüm uygulamaların paylaştığı tek bir Android sanal alanı sağlayabilir.
9.5. Çok Kullanıcılı Destek
Android, birden fazla kullanıcı desteği sunar ve kısmi izolasyonla (ör. android.os.usertype.profile.CLONE türünde tek bir ek kullanıcı profili) tam kullanıcı izolasyonu ve kullanıcı profillerini klonlama desteği sağlar.
- Cihaz uygulamaları, birincil harici depolama için çıkarılabilir medya kullanıyorsa çok kullanıcılı modu etkinleştirebilir ancak etkinleştirmemelidir.
Cihaz uygulamaları birden fazla kullanıcı desteği içeriyorsa:
[C-1-2] API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde, her kullanıcı için Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.
[C-1-3] Her kullanıcı örneği için ayrı ve yalıtılmış paylaşılan uygulama depolama alanı (diğer adıyla
/sdcard) dizinleri OLMALIDIR.[C-1-4] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolansa bile başka bir kullanıcıya ait dosyaları listeleyememesini, okuyamamasını ya da bu dosyalara yazamamasını SAĞLAMALIDIR.
[C-1-5] Cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanıyorsa çok kullanıcılı mod etkinleştirildiğinde SD kartın içeriği, yalnızca sisteme erişilebilen ve çıkarılamayan medyada depolanan bir anahtarla ŞİFRELENMELİDİR. Bu durum, ana bilgisayarın medyayı okumasını engelleyeceğinden cihaz uygulamalarının, ana bilgisayarlara mevcut kullanıcının verilerine erişim sağlamak için MTP'ye veya benzer bir sisteme geçmesi gerekecektir.
Cihaz uygulamaları birden fazla kullanıcıyı destekliyorsa aynı uygulamanın çift örneğini çalıştırmak için özel olarak oluşturulan kullanıcılar hariç tüm kullanıcılar için:
[C-2-1] Her kullanıcı örneği için ayrı ve yalıtılmış paylaşılan uygulama depolama alanı (diğer adıyla /sdcard) dizinleri OLMALIDIR.
[C-2-2] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolansa bile başka bir kullanıcıya ait dosyaları listeleyememesini, okuyamamasını ya da bu dosyalara yazamamasını SAĞLAMALIDIR.
Cihaz uygulamaları, aynı uygulamanın iki örneğini çalıştırmak amacıyla birincil kullanıcıya karşı (ve yalnızca birincil kullanıcıya karşı) android.os.usertype.profile.CLONE türünde tek bir ek kullanıcı profili oluşturabilir. Bu iki örnek, kısmen yalıtılmış depolama alanını paylaşır, başlatıcıda aynı anda son kullanıcıya sunulur ve aynı son kullanılanlar görünümünde görünür.
Örneğin, bu özellik, kullanıcının çift SIM kartlı bir cihaza tek bir uygulamanın iki ayrı örneğini yüklemesini desteklemek için kullanılabilir.
Cihaz uygulamaları yukarıda bahsedilen ek kullanıcı profilini oluşturuyorsa:
[C-3-1] YALNIZCA üst kullanıcı profiline zaten erişilebilen veya doğrudan bu ek kullanıcı profiline ait olan depolama alanına ya da verilere erişim izni VERİLMELİDİR.
[C-3-2] İş profili olarak bu öğe bulunmamalıdır.
[C-3-3] Özel uygulama verileri dizinlerini üst kullanıcı hesabından izole ETMELİDİR.
[C-3-4] Bir Cihaz Sahibi sağlanmışsa (bkz. bölüm 3.9.1) ek kullanıcı profilinin oluşturulmasına İZİN VERİLMEMELİ veya önce ek kullanıcı profili kaldırılmadan Cihaz Sahibi'nin sağlanmasına İZİN VERİLMEMELİDİR.
Cihaz uygulamaları yukarıda bahsedilen ek kullanıcı profilini oluşturuyorsa:
[C-4-1] Ek profilden kaynaklanan aşağıdaki amaçların, cihazdaki birincil kullanıcının uygulamaları tarafından işlenmesine İZİN VERİLMELİDİR:
Intent.ACTION_VIEWIntent.ACTION_SENDTOIntent.ACTION_SENDIntent.ACTION_EDITIntent.ACTION_INSERTIntent.ACTION_INSERT_OR_EDITIntent.ACTION_SEND_MULTIPLEIntent.ACTION_PICKIntent.ACTION_GET_CONTENTMediaStore.ACTION_IMAGE_CAPTUREMediaStore.ACTION_VIDEO_CAPTURE
[C-4-2] Cihazın birincil kullanıcısına uygulanan tüm cihaz politikası kullanıcı kısıtlamalarını ve seçilen kullanıcı dışı
restrictions(list below), bu ek kullanıcı profiline devretmelidir.[C-4-3] YALNIZCA aşağıdaki amaçlar aracılığıyla bu ek profilden kişilerin yazılmasına izin VERİLMELİDİR:
[C-4-4] Bu ek kullanıcı profilinde çalışan uygulamalar için kişi senkronizasyonu çalışmamalıdır.
[C-4-5] YALNIZCA ek profildeki, başlatıcı etkinliği olan uygulamaların, üst kullanıcı profili tarafından erişilebilen kişilere erişmesine İZİN VERİLMELİDİR.
Cihaz uygulamaları yukarıda bahsedilen ek kullanıcı profilini oluşturuyorsa, en az bir kamera içeriyorsa ve önceden yüklenmiş kamera uygulaması MediaStore.ACTION_MOTION_PHOTO_CAPTURE veya MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE amaçlarını işliyorsa:
- [C-5-1] Birincil kullanıcının uygulamalarının, bu ek kullanıcı profilinden gelen bu amaçları işlemesine İZİN VERİLMELİDİR.
9.6. Premium SMS Uyarısı
Android, kullanıcıları giden premium SMS mesajları konusunda uyarmayı destekler. Premium SMS mesajları, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıya ücret yükleyebilen kısa mesajlardır.
Cihaz uygulamaları android.hardware.telephony desteğini beyan ediyorsa:
[C-1-1] Cihazdaki
/data/misc/sms/codes.xmldosyasında tanımlanan normal ifadelerle belirlenen numaralara SMS mesajı göndermeden önce kullanıcıları UYARMALIDIR. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılayan bir uygulama sağlar.
9.7. Security Features
Cihaz uygulamaları, hem çekirdekte hem de platformda aşağıdaki gibi açıklanan güvenlik özelliklerine uygunluğu SAĞLAMALIDIR.
Android korumalı alanı, Security-Enhanced Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikleri içerir. Cihaz uygulamaları:
[C-0-1] SELinux veya diğer güvenlik özellikleri Android çerçevesinin altında uygulandığında bile mevcut uygulamalarla uyumluluk KORUNMALIDIR.
[C-0-2] Bir güvenlik ihlali tespit edildiğinde ve Android çerçevesinin altında uygulanan güvenlik özelliği tarafından başarıyla engellendiğinde görünür bir kullanıcı arayüzüne SAHİP OLMAMALIDIR. Ancak, engellenmemiş bir güvenlik ihlali meydana geldiğinde ve bu durum başarılı bir saldırıya yol açtığında görünür bir kullanıcı arayüzüne SAHİP OLABİLİR.
[C-0-3] SELinux'u veya Android çerçevesinin altında uygulanan diğer güvenlik özelliklerini kullanıcı ya da uygulama geliştirici tarafından yapılandırılabilir HALE GETİRMEMELİDİR.
[C-0-4] Bir API (ör. Cihaz Yönetimi API'si) aracılığıyla başka bir uygulamayı etkileyebilen bir uygulamanın, uyumluluğu bozan bir politika yapılandırmasına İZİN VERİLMEMELİDİR.
[C-0-5] Medya çerçevesi, Android Açık Kaynak Projesi sitesinde açıklandığı gibi her işlem için erişim izni daha sınırlı şekilde verilebilecek şekilde birden fazla işleme ayrılmalıdır.
[C-0-6] Çok iş parçacıklı programlardan gelen sistem çağrılarının yapılandırılabilir bir politika kullanılarak filtrelenmesine olanak tanıyan bir çekirdek uygulama korumalı alanı mekanizması UYGULANMALIDIR. Yukarı akış Android Açık Kaynak Projesi, source.android.com'un çekirdek yapılandırması bölümünde açıklandığı gibi iş parçacığı grubu senkronizasyonu (TSYNC) ile seccomp-BPF'yi etkinleştirerek bu koşulu karşılar.
Çekirdek bütünlüğü ve kendi kendini koruma özellikleri, Android güvenliğinin ayrılmaz bir parçasıdır. Cihaz uygulamaları:
[C-0-7] Çekirdek yığını arabellek taşması koruma mekanizmalarını uygulamalıdır. Bu tür mekanizmalara örnek olarak
CC_STACKPROTECTOR_REGULARveCONFIG_CC_STACKPROTECTOR_STRONGverilebilir.[C-0-8] Yürütülebilir kodun salt okunur, salt okunur verilerin yürütülemez ve yazılamaz, yazılabilir verilerin ise yürütülemez olduğu (ör. hem
rodatahem deCONFIG_STRICT_KERNEL_RWXetkinleştirilmiş) sıkı çekirdek belleği korumaları UYGULANMALIDIR.[C-0-9] Başlangıçta API düzeyi
28veya daha yüksek bir sürümle gönderilen cihazlarda, kullanıcı alanı ile çekirdek alanı arasındaki kopyaların statik ve dinamik nesne boyutu sınırları kontrolünü (ör.CONFIG_HARDENED_USERCOPY) uygulamalıdır.[C-0-10] Başlangıçta API düzeyi
28veya daha yüksek bir sürümle gönderilen cihazlarda çekirdek modunda yürütülürken (ör. donanım PXN veyaCONFIG_CPU_SW_DOMAIN_PANya daCONFIG_ARM64_SW_TTBR0_PANaracılığıyla emüle edilmiş) kullanıcı alanı belleği yürütülmemelidir.[C-0-11] Başlangıçta API düzeyi
28veya daha yüksek bir sürümle gönderilen cihazlarda, çekirdekteki kullanıcı alanı belleği normal kullanıcı kopyası erişim API'leri (ör. donanım PAN veyaCONFIG_CPU_SW_DOMAIN_PANya daCONFIG_ARM64_SW_TTBR0_PANaracılığıyla emüle edilmiş) dışında okumamalı veya yazmamalıdır.[C-0-12] Donanım, API düzeyi
28veya daha yüksek (ör.CONFIG_PAGE_TABLE_ISOLATIONveyaCONFIG_UNMAP_KERNEL_AT_EL0) ile orijinal olarak gönderilen tüm cihazlarda CVE-2017-5754'e karşı savunmasızsa çekirdek sayfası tablosu izolasyonu uygulanmalıdır.[C-0-13] Donanım, API düzeyi
28veya daha yüksek (ör.CONFIG_HARDEN_BRANCH_PREDICTOR) ile orijinal olarak gönderilen tüm cihazlarda CVE-2017-5715'e karşı güvenlik açığına sahipse dal tahmini sağlamlaştırması uygulanmalıdır.[C-SR-1] Yalnızca başlatma sırasında yazılan çekirdek verilerinin, başlatma işleminden sonra salt okunur olarak işaretlenmesi ŞİDDETLE TAVSİYE EDİLİR (ör.
__ro_after_init).[C-SR-2] Çekirdek kodu ve belleğin düzeninin rastgele hale getirilmesi ve rastgele hale getirme işlemini tehlikeye atacak ifşalardan kaçınılması (ör.
CONFIG_RANDOMIZE_BASEile/chosen/kaslr-seed Device Tree nodeveyaEFI_RNG_PROTOCOLaracılığıyla önyükleyici entropisi) ŞİDDETLE TAVSİYE EDİLİR.[C-SR-3] Kodun yeniden kullanıldığı saldırılara (ör.
CONFIG_CFI_CLANGveCONFIG_SHADOW_CALL_STACK) karşı ek koruma sağlamak için çekirdekte kontrol akışı bütünlüğünün (CFI) etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR.[C-SR-4] Kontrol Akışı Bütünlüğü (CFI), Gölge Çağrı Yığını (SCS) veya Tam Sayı Taşması Temizleme (IntSan) özelliklerinin etkinleştirildiği bileşenlerde bu özelliklerin devre dışı bırakılmaması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-5] CFI ve IntSan'da açıklandığı gibi, ek güvenlik açısından hassas kullanıcı alanı bileşenleri için CFI, SCS ve IntSan'ın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-6] Başlatılmamış yerel değişkenlerin (
CONFIG_INIT_STACK_ALLveyaCONFIG_INIT_STACK_ALL_ZERO) kullanılmasını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR. Ayrıca, cihaz uygulamaları, yerelleri başlatmak için derleyici tarafından kullanılan değeri varsaymamalıdır.[C-SR-7] Başlatılmamış yığın ayırmalarının kullanılmasını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR (
CONFIG_INIT_ON_ALLOC_DEFAULT_ON) ve çekirdeğin bu ayırmaları başlatmak için kullandığı değerin varsayılmaması GEREKİR.
Cihaz uygulamaları, SELinux'u destekleyebilen bir Linux çekirdeği kullanıyorsa:
[C-1-1] SELinux'u uygulamalıdır.
[C-1-2] SELinux, genel zorlama moduna AYARLANMALIDIR.
[C-1-3] Tüm alanlar zorunlu kılma modunda yapılandırılmalıdır. Cihaz/satıcıya özgü alanlar da dahil olmak üzere izin verilen mod alanlarına izin verilmez.
[C-1-4] YAPILMAMASI GEREKENLER:
- Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan system/sepolicy klasöründe bulunan neverallow kurallarını değiştirme, atlama veya değiştirme
- AOSP SELinux etiketlerini AOSP olmayan bileşenlere yanlış şekilde ekleme
Politika, hem AOSP SELinux alanları hem de cihaza/satıcıya özgü alanlar için mevcut olan tüm neverallow kurallarına UYMALIDIR.
[C-1-5] API düzeyi
28veya daha yüksek olan üçüncü taraf uygulamaları, her uygulamanın özel veri dizininde uygulama başına SELinux kısıtlamalarıyla uygulama başına SELinux sandbox'larında ÇALIŞTIRILMALIDIR.Yukarı akış Android Açık Kaynak Projesi'nin system/sepolicy klasöründe sağlanan varsayılan SELinux politikasını KORUMALI ve yalnızca kendi cihaza özel yapılandırmaları için bu politikaya eklemeler YAPMALIDIR.
Cihaz uygulamaları, Linux dışında bir çekirdek veya SELinux olmadan Linux kullanıyorsa:
- [C-2-1] SELinux'a eşdeğer olan zorunlu bir erişim denetimi sistemi KULLANILMALIDIR.
Cihaz uygulamaları, DMA özellikli G/Ç cihazları kullanıyorsa:
- [C-SR-9] IOMMU (ör. ARM SMMU) kullanarak DMA özellikli her bir G/Ç cihazının izole edilmesi ŞİDDETLE TAVSİYE EDİLİR.
Android, cihaz güvenliğinin ayrılmaz bir parçası olan birden fazla derinlemesine savunma özelliği içerir. Ayrıca Android, düşük kaliteye ve güvenliğe katkıda bulunan yaygın hataların temel sınıflarını azaltmaya odaklanır.
Bellek hatalarını azaltmak için cihaz uygulamaları:
[C-SR-10] ARMv9 cihazlar için MTE, ARMv8+ cihazlar için HWASan veya diğer cihaz türleri için ASan gibi kullanıcı alanı bellek hatası algılama araçları kullanılarak TEST EDİLMESİ ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-11] KASAN gibi çekirdek belleği hatası algılama araçları (ARMv9 cihazlar için
CONFIG_KASAN,CONFIG_KASAN_HW_TAGS, ARMv8 cihazlar içinCONFIG_KASAN_SW_TAGSveya diğer cihaz türleri içinCONFIG_KASAN_GENERIC) kullanılarak test edilmesi ŞİDDETLE TAVSİYE EDİLİR.[C-SR-12] Üretimde MTE, GWP-ASan ve KFENCE gibi bellek hatası algılama araçlarının kullanılması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Arm TrustZone tabanlı bir TEE kullanıyorsa:
[C-SR-13] Android ile TEE arasında bellek paylaşımı için Armv8-A (FF-A) için Arm Firmware Framework gibi standart bir protokol kullanılması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-14] Güvenilir uygulamaların yalnızca yukarıdaki protokol aracılığıyla kendileriyle açıkça paylaşılan belleğe erişmelerinin kısıtlanması ŞİDDETLE TAVSİYE EDİLİR. Cihazda Arm S-EL2 istisna düzeyi desteği varsa bu, güvenli bölüm yöneticisi tarafından zorunlu kılınmalıdır. Aksi takdirde, bu durum TEE OS tarafından zorunlu kılınmalıdır.
Bellek güvenliği teknolojisi, android:memtagMode manifest seçeneğini kullanan uygulamalarda aşağıdaki hata sınıflarını en az %90 olasılıkla azaltan bir teknolojidir:
- yığın arabellek taşması
- ücretsiz deneme süresinden sonra kullanım
- çift kişilik ücretsiz
- vahşi serbest (malloc olmayan bir işaretçiden bağımsız)
Cihaz uygulamaları:
- [C-SR-15]
ro.arm64.memtag.bootctl_supportedayarlanması KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları, ro.arm64.memtag.bootctl_supported sistem özelliğini doğru olarak ayarlarsa:
[C-3-1] Sistem özelliği
arm64.memtag.bootctl, aşağıdaki değerlerin virgülle ayrılmış bir listesini kabul etmelidir. İstenen efekt, sonraki yeniden başlatma işleminde uygulanır:memtag: Yukarıda tanımlandığı gibi bir bellek güvenliği teknolojisi etkinleştirilmişsememtag-once: Yukarıda tanımlandığı gibi bir Bellek Güvenliği teknolojisi geçici olarak etkinleştirilir ve sonraki yeniden başlatma işleminde otomatik olarak devre dışı bırakılır.memtag-off: Yukarıda tanımlandığı gibi bir Bellek Güvenliği teknolojisi devre dışı bırakıldıysa
[C-3-2] Kabuk kullanıcısının
arm64.memtag.bootctlayarlamasına İZİN VERİLMELİDİR.[C-3-3] Herhangi bir işlemin
arm64.memtag.bootctlokumasına İZİN VERİLMELİDİR.[C-3-4] Önyükleme sırasında
arm64.memtag.bootctl, istenen duruma AYARLANMALIDIR. Cihaz uygulaması, sistem özelliğini değiştirmeden durumu değiştirmeye izin veriyorsa özellik de GÜNCELLENMELİDİR.[C-SR-16] memtag-once'u ayarlayan ve cihazı yeniden başlatan bir geliştirici ayarının gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. Android Açık Kaynak Projesi, uyumlu bir önyükleyiciyle MTE önyükleyici protokolü aracılığıyla yukarıdaki koşulları karşılar.
Bir cihaz android.hardware.telephony beyan ediyorsa, CAPABILITY_USES_ALLOWED_NETWORK_TYPES_BITMASK radyo özelliğini destekliyorsa ve 2G bağlantılarını destekleyen bir hücresel modem içeriyorsa cihaz uygulaması:
[C-SR-17] Kullanıcıların 2G'yi devre dışı bırakıp etkinleştirmesine olanak tanınması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-18] 2G'yi devre dışı bırakmak ve etkinleştirmek için kullanıcıya sunulan seçeneğin,
UserManager.DISALLOW_CELLULAR_2Gkullanılarak cihaz yöneticisi tarafından yapılanlar dışında herhangi bir cihaz öğesiyle geçersiz kılınmaması ŞİDDETLE TAVSİYE EDİLİR.[C-SR-19] Bu koşulu karşılamak için
TelephonyManager.setAllowedNetworkTypesForReasonnumaralı telefonu aramanız ŞİDDETLE TAVSİYE EDİLİR.ALLOWED_NETWORK_TYPES_REASON_ENABLE_2G[C-SR-20] 2G için hücresel modem desteğini belirlemek üzere
TelephonyManager.getSupportedRadioAccessFamilynumaralı telefonu aramanız ŞİDDETLE TAVSİYE EDİLİR. Ayrıntılar için 2G'yi devre dışı bırakma başlıklı makaleyi inceleyin.
9.8. Gizlilik
9.8.1. Kullanım Geçmişi
Android, kullanıcının seçimlerinin geçmişini saklar ve bu geçmişi UsageStatsManager ile yönetir.
Cihaz uygulamaları:
[C-0-1] Bu tür kullanıcı geçmişi için makul bir saklama süresi belirlenmelidir.
[C-SR-1] 14 günlük saklama süresinin AOSP uygulamasında varsayılan olarak yapılandırıldığı şekilde tutulması ŞİDDETLE TAVSİYE EDİLİR.
Android, sistem etkinliklerini StatsLog tanımlayıcılarını kullanarak depolar ve bu tür geçmişi StatsManager ile IncidentManager System API aracılığıyla yönetir.
Cihaz uygulamaları:
[C-0-2] YALNIZCA
DEST_AUTOMATICSistem API sınıfıIncidentManagertarafından oluşturulan olay raporundaDEST_AUTOMATICile işaretlenmiş alanları içermelidir.[C-0-3]
StatsLogSDK dokümanlarında açıklananlar dışında başka bir etkinliği günlüğe kaydetmek için sistem etkinliği tanımlayıcıları KULLANILMAMALIDIR. Ek sistem etkinlikleri kaydedilirse 100.000 ile 200.000 arasındaki aralıkta farklı bir atom tanımlayıcısı kullanılabilir.
9.8.2. Kayıt
Cihaz uygulamaları:
[C-0-1] Kullanıcının izni olmadan veya devam eden net bildirimler olmadan kullanıcının özel bilgilerini (ör. tuş vuruşları, ekranda gösterilen metin, hata raporu) cihazdan gönderen yazılım bileşenleri kutudan çıkar çıkmaz önceden yüklenmemeli veya dağıtılmamalıdır.
[C-0-2]
MediaProjection.createVirtualDisplay()veya tescilli API'ler aracılığıyla ekran yayınlama ya da ekran kaydı oturumu her etkinleştirildiğinde, kullanıcının ekranında gösterilen hassas bilgilerin yakalanmasına izin veren bir kullanıcı uyarısı GÖSTERİLMELİ ve kullanıcının açık izni ALINMALIDIR.[C-0-3] Ekran yayını veya ekran kaydı etkinleştirildiğinde kullanıcıya sürekli bir bildirim GÖSTERİLMELİDİR. AOSP, durum çubuğunda devam eden bir bildirim simgesi göstererek bu koşulu karşılar.
[C-SR-1] AOSP'de uygulanan mesajla tamamen aynı olan bir kullanıcı uyarısının gösterilmesi ŞİDDETLE TAVSİYE EDİLİR ancak mesaj, kullanıcının ekranındaki hassas bilgilerin yakalandığı konusunda kullanıcıyı net bir şekilde uyardığı sürece değiştirilebilir.
[C-0-4] Android 16'da şart kaldırıldı.
Cihaz uygulamaları:
[C-0-7] Aşağıdaki gibi hassas bilgiler kaydedilmemeli, yansıtılmamalı veya yayınlanmamalıdır:
- Hassas bildirim içerikleri, Bölüm 3.8.3.4 Hassas Bildirim Koruması'nda listelenir.
- Tek kullanımlık şifreler içeren uygulama etkinliği pencereleri
- Kullanıcı adı, şifre ve kredi kartı bilgileri gibi hassas içerikler
Cihaz uygulamaları, sistemde ContentCaptureService Sistem API'si dışında ekranda gösterilen içerikleri yakalayan ve/veya cihazda oynatılan ses akışını kaydeden işlevler ya da Bölüm 9.8.6 OS-level and ambient data'da açıklanan diğer tescilli yöntemler içeriyorsa:
- [C-1-1] Bu işlev etkinleştirildiğinde ve aktif olarak yakalama/kayıt yaparken kullanıcıya sürekli bir bildirim GÖSTERİLMELİDİR.
Cihaz uygulamaları, kullanıcının bağlamı hakkında faydalı bilgiler elde etmek için ortam sesini kaydetme ve/veya cihazda çalınan sesi kaydetme özelliğine sahip, kutudan çıkarıldığında etkin olan bir bileşen içeriyorsa:
- [C-2-1] Kaydedilen ham ses veya orijinal sese ya da neredeyse aynı olan bir formata geri dönüştürülebilen herhangi bir biçim, kullanıcının açık izni olmadan cihaz üzerindeki kalıcı depolama alanında saklanmamalı veya cihazdan iletilmemelidir.
"Mikrofon göstergesi", ekranda sürekli olarak görünen ve kapatılamayan bir görünümü ifade eder. Kullanıcılar bu görünümü, mikrofonun kullanımda olduğunu gösteren bir işaret(benzersiz metin, renk, simge veya bunların bir kombinasyonu aracılığıyla) olarak anlar.
"Kamera göstergesi", ekranda sürekli olarak görünür olan ve kapatılamayan bir görünümü ifade eder. Kullanıcılar, bu görünümü (benzersiz metin, renk, simge veya bunların bir kombinasyonu aracılığıyla) kameranın kullanımda olduğunu gösteren bir işaret olarak anlar.
İlk bir saniye görüntülendikten sonra gösterge görsel olarak değişebilir (ör. küçülebilir) ve başlangıçta sunulduğu ve anlaşıldığı şekilde gösterilmesi gerekmez.
Metin, simge veya renkler kullanıcıya mikrofon kullanımının başladığını gösterdiği sürece mikrofon göstergesi, etkin olarak görüntülenen bir kamera göstergesiyle birleştirilebilir.
Metin, simge veya renkler kullanıcının kamera kullanımının başladığını gösterdiği sürece kamera göstergesi, etkin olarak görüntülenen bir mikrofon göstergesiyle birleştirilebilir.
Cihaz uygulamaları android.hardware.microphone değerini bildiriyorsa:
[C-SR-1] Bir uygulama mikrofondaki ses verilerine eriştiğinde mikrofon göstergesinin gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. Ancak mikrofona yalnızca
HotwordDetectionService,SOURCE_HOTWORD,ContentCaptureServiceveya CDD tanımlayıcısı [C-3-X] ile 9.1 İzinler Bölümü'nde belirtilen rollere sahip uygulamalar eriştiğinde mikrofon göstergesi gösterilmemelidir.[C-SR-2]
PermissionManager.getIndicatorAppOpUsageData()tarafından döndürülen, mikrofon kullanan Son ve Etkin uygulamaların listesinin, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.[C-SR-3] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamalarında mikrofon göstergesinin GİZLENMEMESİ ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları android.hardware.camera.any değerini bildiriyorsa:
[C-SR-4] Bir uygulama canlı kamera verilerine erişirken kamera göstergesinin gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. Ancak kameraya yalnızca CDD tanımlayıcısı [C-3-X] ile 9.1 İzinler bölümünde belirtilen rollere sahip uygulamalar erişirken kamera göstergesi gösterilmez.
[C-SR-5]
PermissionManager.getIndicatorAppOpUsageData()tarafından döndürülen kamera kullanılarak Son ve Etkin uygulamaların, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.[C-SR-6] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için kamera göstergesinin GİZLENMEMESİ ŞİDDETLE TAVSİYE EDİLİR.
9.8.3. Bağlantı
Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:
- [C-1-1] USB bağlantı noktası üzerinden paylaşılan depolama alanının içeriğine erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü SUNULMALIDIR.
9.8.4. Ağ Trafiği
Cihaz uygulamaları:
[C-0-1] Sistem tarafından güvenilen Sertifika Yetkilisi (CA) deposu için, yukarı akış Android Açık Kaynak Projesi'nde sağlanan kök sertifikaların aynısını önceden yüklemelidir.
[C-0-2] Boş bir kullanıcı kök CA deposuyla gönderilmelidir.
[C-0-3] Kullanıcı kök CA'sı eklendiğinde, ağ trafiğinin izlenebileceğini belirten bir uyarı kullanıcıya GÖSTERİLMELİDİR.
Cihaz trafiği VPN üzerinden yönlendiriliyorsa cihaz uygulamaları:
- [C-1-1] Kullanıcıya aşağıdakilerden birini belirten bir uyarı GÖSTERİLMELİDİR:
- Bu ağ trafiği izlenebilir.
- Bu ağ trafiği, VPN'i sağlayan belirli VPN uygulaması üzerinden yönlendirilir.
Cihaz uygulamalarında, ağ veri trafiğini bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN izniyle bir VPN hizmetini önceden yükleme) ve varsayılan olarak kutudan çıktığı haliyle etkinleştirilmiş bir mekanizma varsa:
- [C-2-1] Bu VPN,
DevicePolicyManager.setAlwaysOnVpnPackage()aracılığıyla Cihaz Politikası Denetleyicisi tarafından etkinleştirilmediği sürece bu mekanizma etkinleştirilmeden önce kullanıcının izni İSTENMELİDİR. Bu durumda kullanıcının ayrı bir izin vermesi GEREKMEZ, ancak yalnızca bilgilendirilmesi GEREKİR.
Cihaz uygulamaları, üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için kullanıcıya bir kolaylık sunuyorsa:
- [C-3-1]
AndroidManifest.xmldosyasında her zaman açık VPN hizmetini desteklemeyen uygulamalar için bu kullanıcı kolaylığını,SERVICE_META_DATA_SUPPORTS_ALWAYS_ONözelliğinifalseolarak ayarlayarak DEVRE DIŞI BIRAKMALIDIR.
9.8.5. Cihaz Tanımlayıcıları
Cihaz uygulamaları:
- [C-0-1] Aşağıdaki koşullardan birini karşılamadığı sürece, bir uygulamanın cihaz seri numarasına ve geçerli olduğu durumlarda IMEI/MEID, SIM seri numarası ve Uluslararası Mobil Abone Kimliği'ne (IMSI) erişmesini ENGELLEMELİDİR:
- Cihaz üreticileri tarafından doğrulanmış, imzalı bir operatör uygulamasıdır.
READ_PRIVILEGED_PHONE_STATEizni verilmiş olmalıdır.- UICC Carrier Privileges'da tanımlandığı şekilde operatör ayrıcalıklarına sahip olmalıdır.
READ_PHONE_STATEizni verilmiş bir cihaz sahibi veya profil sahibi olmalıdır.- (Yalnızca SIM seri numarası/ICCID için) Uygulamanın, abonenin kimliğindeki değişiklikleri algılamasıyla ilgili yerel düzenleme şartı vardır.
9.8.6. İşletim sistemi düzeyinde ve ortam verisi koruyucu
Android, Sistem API'leri aracılığıyla cihaz uygulamalarının aşağıdaki hassas verileri yakalamasına yönelik bir mekanizmayı destekler:
- Bildirimler ve
AssistStructureAPI'si aracılığıyla destek verileri, ekran arabelleği yakalama etkinlikleri ve cihazın ekran içeriğini kaydetme dahil ancak bunlarla sınırlı olmamak üzere ekranda oluşturulan metin ve grafikler.
Cihaz tarafından kaydedilen veya oynatılan ses ya da video gibi medya verileri
Giriş etkinlikleri (ör. tuş, fare, hareket, ses, video ve erişilebilirlik).
AugmentedAutofillServiceüzerinden sisteme gönderilen tüm ekran veya diğer veriler.Content CaptureAPI'leri aracılığıyla erişilebilen tüm ekranlar veya diğer veriler.AppSearchManagerAPI'si aracılığıyla sisteme iletilen veAppSearchGlobalManager.queryüzerinden erişilebilen tüm uygulama verileri.TextClassifier APIaracılığıyla System TextClassifier'a (yani metnin anlamını anlamak ve metne dayalı olarak tahmin edilen sonraki işlemleri oluşturmak için kullanılan sisteme ait hizmete) gönderilen tüm metinler veya diğer veriler.Metin, grafik, medya verileri veya benzeri diğer veriler dahil ancak bunlarla sınırlı olmamak üzere, platform AppSearch uygulaması tarafından dizine eklenen veriler.
Konuşma Tanıyıcı Uygulaması tarafından
SpeechRecognizer#onDeviceSpeechRecognizer()kullanılması sonucunda elde edilen ses verileri.AudioRecord,SoundTriggerveya diğer Ses API'leri aracılığıyla arka planda (sürekli olarak) elde edilen ve kullanıcı tarafından görülebilen bir göstergeyle sonuçlanmayan ses verileriCameraManager veya diğer Kamera API'leri aracılığıyla arka planda (sürekli olarak) elde edilen ve kullanıcı tarafından görülebilen bir göstergeye yol açmayan kamera verileri
DynamicInstrumentationEventServicetarafından kaydedilen tüm veriler
Cihaz uygulamaları yukarıdaki hassas verileri topluyorsa veya paylaşıyorsa: Veriler, açık ve ayrı bir kullanıcı niyeti veya kullanıcı tarafından görülebilen bir gizlilik göstergesi olmadan korunmuş bir yürütme ortamında işlenmelidir. Bu ortam:
[C-1-1] Cihazda depolanırken veya aktarım halindeyken bu tür tüm veriler ŞİFRELENMELİDİR. Bu şifreleme, Android Dosya Tabanlı Şifreleme veya Cipher SDK'da açıklanan API sürümü 26+ olarak listelenen şifrelerden herhangi biri kullanılarak YAPILABİLİR.
[C-1-2] Android yedekleme yöntemleri veya diğer yedekleme yöntemleri kullanılarak yukarıda açıklandığı gibi hassas verilerin ham veya şifrelenmiş verileri yedeklememelisiniz.
[C-1-3] Aşağıdaki koşullardan biri karşılanmadığı sürece bu tür veriler cihazdan gönderİLMEMELİDİR:
Veriler her paylaşıldığında, belirli bir hesaplama için kullanıcı niyetiyle açıkça başlatıldığında *
Diferansiyel gizlilik gibi gizliliği korumaya yönelik bir mekanizma kullanırken RAPPOR veya gizli birleşik hesaplamalar gibi teknolojiler.
Veriler, hizmet sağlayıcıdan ve altyapıdan korunduğu bir korumalı yürütme ortamında işlendiğinde (ör. yönetici erişimi yok, gizli sanal makine, uzaktan onaylama, özel veri çıkışı yok, devre dışı bırakılmış günlük kaydı, IP maskeleme ve şifreleme).
- Bu yöntemi kullanan tüm uygulamalarda, kullanıcıların kapsam dışında kalmasına olanak tanıyan bir seçenek sunulmalıdır.
- [C-1-3] Verileri, hizmet sağlayıcıdan ve altyapıdan (ör. yönetici erişimi yok, gizli sanal makine, uzaktan onay, özel veri çıkışı yok, devre dışı bırakılmış günlük kaydı, IP gizleme ve şifreleme) koruyan güvenilir bir bilgi işlem tabanı bulut ortamı aracılığıyla işleyebilir. Bu yöntemin kullanıldığı tüm uygulamalar:
- Kullanıcılara kapsam dışında kalma olanağı TANINMALIDIR ve
- Kullanıcılara, ortamdan veri girişi ve çıkışını ayrıntılı olarak açıklayan, erişilebilir ve kapsamlı günlükler oluşturma yöntemi SAĞLANMALIDIR.
- [C-1-4] Bu tür veriler, her ilişkilendirme işleminde kullanıcının açık izni alınmadığı sürece cihazdaki herhangi bir kullanıcı kimliğiyle (ör.
Account) ilişkilendirilmemelidir.
- [C-1-4] Bu veriler, sisteme ait kullanıcı arayüzü yüzeylerinde GÖSTERİLEBİLİR.
[C-1-5] Paylaşıldığı her seferde, kullanıcıdan açıkça izin alınmadığı sürece bu tür verileri herhangi bir kullanıcı kimliğiyle (ör.
Account) ilişkilendirmemelidir. Paylaşıldığı her seferde veya veriler her ilişkilendirildiğinde kullanıcıdan açıkça izin alınmalıdır. Aksi takdirde, ilişkilendirme, mevcut bölümde (9.8.6 İşletim sistemi düzeyinde ve ortam verileri) belirtilen şartlara uymayan diğer işletim sistemi bileşenlerine aktarılmaz. Bu tür işlevler Android SDK API'si olarak oluşturulmadığı sürece (AmbientContext,HotwordDetectionService).[C-1-6] Uygulama veya tescilli araçlar tarafından toplanan ve cihazda ya da güvenilir bilgi işlem tabanı bulut ortamında herhangi bir biçimde depolanan bu tür verilerin silinmesi için kullanıcıya olanak TANINMALIDIR. Kullanıcı verileri silmeyi seçerse toplanan tüm geçmiş veriler KALDIRILMALIDIR.
- [C-1-7] AppSearch veya tescilli yöntemlerle toplanan verilerin Android platformunda (ör. başlatıcı) gösterilmesini devre dışı bırakmak için kullanıcıya bir seçenek SUNULMALIDIR.
[C-1-8] Ortamdan veri girişi ve çıkışını ayrıntılı olarak açıklayan, erişilebilir ve kapsamlı günlükler oluşturma yöntemi SAĞLANMALIDIR.
[C-1-9] Doğrudan internet erişimi OLMAMALIDIR.
[C-1-10] Kullanıcı arayüzünü gösteren ana makine APK'sında veri görünür hale getirilmediği sürece kullanıcı arayüzü uzaktan GÖSTERİLEBİLİR.
[C-1-11] Hizmetleri diğer sistem bileşenlerinden ayrı tutmalıdır (ör. hizmeti bağlamamalı veya işlem kimliklerini korumalı yürütme ortamında olmayan uygulamalarla paylaşmamalıdır).
[C-1-12] YALNIZCA şu durumlarda hassas verilerin çıkışına İZİN VERİLMELİDİR:
- Veriler her paylaşıldığında belirli bir hesaplama için kullanıcı isteğiyle açıkça başlatılması* VEYA
- Gizliliği korumaya yönelik bir mekanizma kullanma (ör. RAPPOR / gizli birleştirilmiş hesaplamalar gibi diferansiyel gizlilik teknolojileri).
[C-1-13] YALNIZCA aşağıdaki yollarla hassas verilerin sızdırılmasına İZİN VERİLMELİDİR:
- PCCSandbox sisteme ait hizmetinde izin verilenler listesinde eklenmiş VE kendisi de korumalı yürütme ortamı şartlarına (9.8.6) uyan bir sisteme ait hizmet, VEYA
- Belirlenmiş bir Private Compute Core (PCC) Gateway APK'sı (9.8.15'te tanımlanmıştır).
[C-1-14] Uçtan uca şifrelenmediği sürece (ör. Android Backup Service kullanılarak) hassas verilerden çıkarılan verilerin bulut yedeklemeleri YAPILMAMALIDIR.
[C-SR-1] İNTERNET izni İSTENMEMESİ ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-2] Yalnızca herkese açık açık kaynak uygulamaları tarafından desteklenen yapılandırılmış API'ler aracılığıyla internete erişilmesi ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-4] Android SDK API'si veya benzer bir OEM'ye ait açık kaynaklı depo ile uygulanması ve / veya korumalı alan uygulamasıyla gerçekleştirilmesi ŞİDDETLE TAVSİYE EDİLİR (bkz. 9.8.15 Korumalı alan API uygulamaları).
Cihaz uygulamaları, System API'yi
ContentCaptureService, AppSearchManager.index,DynamicInstrumentationEventService, veya verileri yukarıda açıklandığı şekilde yakalayan herhangi bir tescilli hizmeti uygulayan bir hizmet içeriyorsa:
[C-2-1] Kullanıcıların hizmetlerin yerine kullanıcı tarafından yüklenebilen bir uygulama veya hizmet koymasına İZİN VERİLMEMELİ ve bu tür verilerin yalnızca önceden yüklenmiş hizmetler tarafından yakalanmasına İZİN VERİLMELİDİR.
[C-2-2] Önceden yüklenmiş hizmetler mekanizması dışındaki uygulamaların bu tür verileri yakalamasına İZİN VERİLMEMELİDİR.
[C-2-3] Hizmetleri devre dışı bırakmak için net ve erişilebilir bir kullanıcı olanağı SAĞLANMALIDIR.
[C-2-4] Hizmetlerin sahip olduğu Android izinlerini yönetmek için kullanıcı kolaylığı sağlanmalıdır ve Bölüm 9.1'de açıklandığı gibi Android izin modeli izlenmelidir. İzin.
[C-SR-3] Aşağıdakiler hariç hizmetlerin diğer sistem bileşenlerinden (ör. hizmeti bağlamama veya işlem kimliklerini paylaşmama) ayrı tutulması ŞİDDETLE TAVSİYE EDİLİR:
- Telefon, Kişiler, Sistem Arayüzü ve Medya
9.8.7. Pano Erişimi
Cihaz uygulamaları:
[C-0-1] Üçüncü taraf uygulama varsayılan IME değilse veya şu anda odaklanılmış uygulama değilse panodan kırpılmış veriler (ör.
ClipboardManagerAPI'si aracılığıyla) döndÜRÜLMEMELİDİR.[C-0-2] Pano verileri, panoya son yerleştirildikten veya panodan okunduktan sonra en fazla 60 dakika içinde temizlenmelidir.
9.8.8. Konum
Konum, Android Konum sınıfındaki bilgilerin( ör. enlem, boylam, yükseklik) yanı sıra konuma dönüştürülebilen tanımlayıcıları da içerir. Konum, DGPS (Farklı Küresel Konum Belirleme Sistemi) kadar hassas veya ülke düzeyindeki konumlar (ör. ülke kodu konumu - MCC - Mobil Ülke Kodu) kadar kaba olabilir.
Aşağıda, kullanıcının konumunu doğrudan elde eden veya kullanıcının konumuna dönüştürülebilen konum türlerinin listesi verilmiştir. Bu liste kapsamlı olmasa da konumun doğrudan veya dolaylı olarak neyden elde edilebileceğine dair bir örnek olarak kullanılabilir:
GPS/GNSS/DGPS/PPP
- Küresel Konum Belirleme Çözümü veya Küresel Navigasyon Uydu Sistemi ya da Diferansiyel Küresel Konum Belirleme Çözümü
- Ham GNSS Ölçümleri ve GNSS Durumu da buna dahildir.
- Tam konum, ham GNSS ölçümlerinden elde edilebilir.
Aşağıdakiler gibi benzersiz tanımlayıcılara sahip kablosuz teknolojiler:
- Kablosuz erişim noktaları (MAC, BSSID, ad veya SSID)
- Bluetooth/BLE (MAC, BSSID, ad veya SSID)
- UWB (MAC, BSSID, Ad veya SSID)
- Baz istasyonu kimliği (3G, 4G, 5G vb., benzersiz tanımlayıcılara sahip gelecekteki tüm hücresel modem teknolojileri dahil)
Birincil referans noktası olarak, ACCESS_FINE_Location veya ACCESS_COARSE_Location izinleri gerektiren Android API'lerine bakın.
Cihaz uygulamaları:
[C-0-1] Kullanıcının açık izni veya kullanıcı başlatması olmadan cihazın konum ayarı ile Wi-Fi/Bluetooth tarama ayarları AÇILMAMALI/KAPATILMAMALIDIR.
[C-0-2] Kullanıcıya, son konum istekleri, uygulama düzeyinde izinler ve konumu belirlemek için Wi-Fi/Bluetooth taramasının kullanımı da dahil olmak üzere konumla ilgili bilgilere erişme olanağı SAĞLANMALIDIR.
[C-0-3] MUST ensure that the application using Emergency Location Bypass API LocationRequest.setLocationSettingsIgnored() is a user initiated emergency session (e.g., dial 911 or text to 911). Ancak Otomotiv'de, kaza/olay algılanması durumunda (ör. eCall şartlarını karşılamak için) araç, etkin kullanıcı etkileşimi olmadan acil durum oturumu başlatabilir.
[C-0-4] Acil Durum Konumunu Atlama API'lerinin, ayarları değiştirmeden cihaz konum ayarlarını atlama özelliğini KORUMALIDIR.
[C-0-5] Arka plandaki bir uygulama,
ACCESS_BACKGROUND_LOCATIONiznini kullanarak kullanıcının konumuna eriştiğinde kullanıcıya hatırlatma bildirimi planlanmalıdır.
Sistem uygulaması olmayan bir ön planda çalışan uygulama, cihazın tam konumuna eriştiğinde cihaz:
- [C-SR-1] Kullanıcıya görünür bir gösterge görüntülenmesi ŞİDDETLE TAVSİYE EDİLİR.
9.8.9. Yüklü uygulamalar
API düzeyi 30 veya sonraki sürümleri hedefleyen Android uygulamaları, varsayılan olarak diğer yüklü uygulamalarla ilgili ayrıntıları göremez (Android SDK belgelerindeki Paket görünürlüğü bölümüne bakın).
Cihaz uygulamaları:
[C-0-1] Uygulama, yönetilen API'ler aracılığıyla diğer yüklü uygulamayla ilgili ayrıntıları zaten göremiyorsa API düzeyi
30veya üstünü hedefleyen hiçbir uygulamaya diğer yüklü uygulamalarla ilgili ayrıntıları sunMAMALIDIR. Buna, cihaz uygulayıcı tarafından eklenen veya dosya sistemi üzerinden erişilebilen özel API'ler tarafından açığa çıkarılan ayrıntılar dahildir ancak örnekler bunlarla sınırlı değildir.[C-0-2] Harici depolama alanında başka bir uygulamanın özel, uygulamaya özgü dizinindeki dosyalara hiçbir uygulamanın okuma veya yazma erişimi OLMAMALIDIR. Tek istisnalar şunlardır:
Harici depolama alanı sağlayıcı yetkilisi (ör. DocumentsUI gibi uygulamalar).
Dosyaları uygulama depolama alanına indirmek için "downloads" sağlayıcı yetkisini kullanan Download Provider.
Dosyaların başka bir cihaza aktarılmasını sağlamak için
ACCESS_MTPayrıcalıklı iznini kullanan, platform tarafından imzalanmış medya aktarım protokolü (MTP) uygulamaları.Diğer uygulamaları yükleyen ve INSTALL_PACKAGES iznine sahip uygulamalar, yalnızca APK genişletme dosyalarını yönetmek amacıyla "obb" dizinlerine erişebilir.
9.8.10. Bağlantı Hata Raporu
Cihaz uygulamaları android.hardware.telephony özellik bayrağını beyan ediyorsa:
[C-1-1] MUST support generating connectivity bug reports via
BUGREPORT_MODE_TELEPHONYwith BugreportManager.[C-1-2] Rapor oluşturmak için
BUGREPORT_MODE_TELEPHONYher kullanıldığında kullanıcı izni ALINMALIDIR ve kullanıcıdan uygulamadan gelen tüm gelecekteki istekleri onaylaması İSTENMEMELİDİR.[C-1-3] Oluşturulan rapor, kullanıcının açık izni olmadan istekte bulunan uygulamaya döndürülmemelidir.
[C-1-4]
BUGREPORT_MODE_TELEPHONYkullanılarak oluşturulan raporlar EN AZ şu bilgileri içermelidir:TelephonyDebugServicedökümüTelephonyRegistrydökümüWifiServicedökümüConnectivityServicedökümü- Arama paketinin
CarrierServiceörneğinin dökümü (bağlıysa) - Radyo günlük arabelleği
SubscriptionManagerServicedökümü
[C-1-5] Oluşturulan raporlarda aşağıdakiler yer ALMAMALIDIR:
Bağlantı sorunlarını giderme ile doğrudan ilgili olmayan her türlü bilgi.
Kullanıcı tarafından yüklenen uygulama trafiği günlükleri veya kullanıcı tarafından yüklenen uygulamaların/paketlerin ayrıntılı profilleri (UID'ler kabul edilir, paket adları kabul edilmez).
Herhangi bir kullanıcı kimliğiyle ilişkilendirilmeyen ek bilgiler içerebilir. (ör. tedarikçi günlükleri).
Cihaz uygulamaları hata raporlarına ek bilgiler (ör. satıcı günlükleri) ekliyorsa ve bu bilgiler gizlilik/güvenlik/pil/depolama/bellek üzerinde etki yaratıyorsa:
- [C-SR-1] Geliştirici ayarının varsayılan olarak devre dışı bırakılması ŞİDDETLE TAVSİYE EDİLİR. AOSP referans uygulaması, geliştirici ayarlarında
Enable verbose vendor loggingseçeneğini sunarak bu koşulu karşılar. Bu seçenek, hata raporlarına cihaza özgü ek satıcı günlükleri eklemeyi sağlar.
9.8.11. Veri bloblarını paylaşma
Android, BlobStoreManager aracılığıyla uygulamaların, seçilen bir uygulama grubuyla paylaşılmak üzere Sisteme veri blobları göndermesine olanak tanır.
Cihaz uygulamaları, SDK dokümanlarında açıklandığı gibi paylaşılan veri bloblarını destekliyorsa:
[C-1-1] Uygulamalara ait veri bloblarını, izin vermeyi amaçladıkları kapsamın (ör. varsayılan erişim kapsamı ve
BlobStoreManager.session#allowPackageAccess(),BlobStoreManager.session#allowSameSignatureAccess()veyaBlobStoreManager.session#allowPublicAccess()kullanılarak belirtilebilen diğer erişim modları) ötesinde paylaşmamalıdır (MUST NOT). AOSP referans uygulaması bu koşulları karşılar.[C-1-2] Veri bloblarının (erişimi kontrol etmek için kullanılan) güvenli karma değerleri cihazdan dışarı gönderilmemeli veya diğer uygulamalarla paylaşılmamalıdır.
9.8.12. Müzik Tanıma
Android, System API MusicRecognitionManager aracılığıyla, cihaz uygulamalarının bir ses kaydı verildiğinde müzik tanıma isteğinde bulunması ve müzik tanıma işlemini MusicRecognitionService API'sini uygulayan ayrıcalıklı bir uygulamaya devretmesi için bir mekanizmayı destekler.
Cihaz uygulamaları, System API MusicRecognitionManager'ı uygulayan bir hizmet veya yukarıda açıklandığı gibi ses verilerini yayınlayan herhangi bir tescilli hizmet içeriyorsa:
[C-1-1] MusicRecognitionManager'ı çağıranın
MANAGE_MUSIC_RECOGNITIONiznine sahip olması ZORUNLUDUR.[C-1-2] Tek bir önceden yüklenmiş müzik tanıma uygulamasının
MusicRecognitionService'yı uygulaması ZORUNLUDUR.[C-1-3] Kullanıcıların MusicRecognitionManagerService veya
MusicRecognitionServiceyerine kullanıcı tarafından yüklenebilen bir uygulama ya da hizmet kullanmasına İZİN VERİLMEMELİDİR.[C-1-4] MusicRecognitionManagerService, ses kaydına erişip
MusicRecognitionService'yı uygulayan uygulamaya ilettiğinde ses erişimininAppOpsManager.noteOp/startOpçağrıları aracılığıyla izlenmesini SAĞLAMALIDIR.
MusicRecognitionManagerService veya MusicRecognitionService cihaz uygulamaları, kaydedilen ses verilerini depoluyorsa:
[C-2-1] Hiçbir ham ses veya ses parmak izi diske ya da 14 günden uzun süre belleğe depolanMAMALIDIR.
[C-2-2] Bu tür veriler, her paylaşıldığında kullanıcının açık izni alınmadığı sürece
MusicRecognitionServicedışında paylaşılMAMALIDIR.
9.8.13. SensorPrivacyManager
Cihaz uygulamaları, kullanıcıya cihaz uygulaması için kamera ve/veya mikrofon girişini kapatma imkanı sunuyorsa:
[C-1-1] İlgili
supportsSensorToggle()API yöntemi için "true" değerini doğru şekilde döndürmelidir.[C-1-2] Bir uygulama, engellenmiş bir mikrofona veya kameraya erişmeye çalıştığında, sensörün engellendiğini açıkça belirten ve bu koşulu karşılayan AOSP uygulamasına göre engellemeyi sürdürme veya engellemeyi kaldırma seçeneği sunan, kapatılamayan bir kullanıcı arayüzü sunmalıdır.
[C-1-3] YALNIZCA uygulamalara boş (veya sahte) kamera ve ses verileri aktarılmalı ve kullanıcının yukarıdaki [C-1-2] uyarınca sunulan kullanıcı olanağı aracılığıyla kamerayı veya mikrofonu açmaması nedeniyle hata kodu bildirilmemelidir.
9.8.14. Yok
9.8.15. Private Compute Core ve Gateway Application uygulamaları
Android, bir dizi temsilci API aracılığıyla güvenli işletim sistemi düzeyindeki ve ortam verilerini işlemek için bir mekanizma sağlar. Bu tür işlemler, ayrıcalıklı erişime ve azaltılmış iletişim özelliklerine sahip önceden yüklenmiş bir APK'ya (Sandboxed API Implementation olarak bilinir) devredilebilir.
Bölüm 9.8.6'da (işletim sistemi düzeyinde ve ortam verileri) açıklanan hassas verilerin cihaz üzerinde işlenmesini gerçekleştiren uygulamaları içeren cihaz uygulamalarının, aşağıda açıklanan Private Compute Core (PCC) çerçevesini kullanması ŞİDDETLE TAVSİYE EDİLİR.
PCC ortamındaki korumalı alan API'si uygulaması bileşenleri:
- [C-0-1] INTERNET izni İSTENMEMELİDİR.
- [C-0-1] Manifest beyanında
android:isPrivateComputeCoreProcess="true"özelliğiyle BEYAN EDİLMELİDİR.
- [C-0-2] YALNIZCA gizliliği korumaya yönelik mekanizmalar kullanan, herkese açık açık kaynak uygulamaları tarafından desteklenen yapılandırılmış API'ler aracılığıyla veya dolaylı olarak Android SDK API'leri üzerinden internete erişmelidir. Gizliliği korumaya yönelik mekanizma, "yalnızca toplu analizlere izin veren ve günlük kaydı yapılan etkinliklerin veya türetilen sonuçların tek tek kullanıcılarla eşleştirilmesini engelleyen" olarak tanımlanır.Böylece, kullanıcı başına verilerin incelenebilmesi önlenir (ör. RAPPOR gibi bir diferansiyel gizlilik teknolojisi kullanılarak uygulanır).
- [C-0-2] Cihaz sistem görüntüsüne önceden yüklenmelidir.
[C-0-3] Hizmetler, diğer sistem bileşenlerinden ayrı tutulmalıdır. (Örneğin, hizmeti bağlamamalı veya işlem kimliklerini aşağıdakiler hariç paylaşmamalıdır:
- Telefon, Kişiler, Sistem Kullanıcı Arayüzü ve Medya (PCC UID olarak çalışmayan uygulamalarla).
[C-0-4] Kullanıcıların hizmetleri, kullanıcı tarafından yüklenebilen bir uygulama veya hizmetle değiştirmesine İZİN VERİLMEMELİDİR.
[C-0-5] OEM tarafından atanmış (PCC Manager System Service'te tanımlanan uygun bir sistem rolüne sahip) ve uygun izinlere sahip önceden yüklenmiş hizmetlerin bu tür verileri yakalamasına İZİN VERİLMELİDİR. Değiştirme özelliği AOSP'ye yerleştirilmediği sürece (ör. dijital asistan uygulamaları için) 9.8.6'da açıklanan hassas ortam verileri.
[C-0-6] Önceden yüklenmiş hizmetler mekanizması dışındaki uygulamaların bu tür verileri yakalamasına İZİN VERİLMEMELİDİR. Bu tür bir yakalama özelliği, Android SDK API'si ile uygulanmadığı sürece.
[C-0-7] Hizmetlerin devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.
[C-0-8] Hizmetlerin sahip olduğu Android izinlerini yönetmek için kullanıcı kolaylığı sağlanmalıdır ve Bölüm 9.1'de açıklanan Android izin modeli izlenmelidir. İzin.
- [C-0-9] Ana uygulama sürecinden ve diğer korumalı alan bileşenlerinden ayrı olarak, benzersiz ve çerçeve tarafından atanmış bir UID ile özel bir süreçte ÇALIŞMALIDIR.
PCC ortamı bileşenlerinin gerektirdiği tüm ağ erişimi, PCC Ağ Geçidi Uygulaması olarak işlev gören belirlenmiş bir APK üzerinden proxy'lenmelidir. Belirlenen bileşenler:
[C-1-1] MUST be granted the
android.permission.PROVIDE_PRIVATE_COMPUTE_SERVICESprivileged permission. Bu izin, uygulamayı PCC Ağ Geçidi Uygulaması olarak tanımlar.[C-1-2] Kaynak kodu, herkese açık olarak doğrulanabilir şekilde sunulmalıdır.
[C-1-3] 9.8.6 bölümünde tanımlandığı şekilde, tüm veri çıkışları için gizliliği korumaya yönelik mekanizmalar KULLANILMALIDIR.
[C-1-4] Etkinleştirildiğinde gizliliği korumaya yönelik davranışın doğrulanması için ağ isteklerinin, sunucu uç noktalarının ve diğer ilgili verilerin kaydedilmesi de dahil olmak üzere PCC çerçevesinin denetim modu DESTEKLENMELİDİR.
9.8.16. Sürekli ses ve kamera verileri
Cihaz uygulamaları, bölüm 9.8.2 veya bölüm 9.8.6'da açıklanan verilerden herhangi birini yakalarsa ve bu uygulamalar, AudioRecord, SoundTrigger veya diğer Ses API'leri aracılığıyla arka planda (sürekli olarak) elde edilen Ses verilerini YA DA CameraManager veya diğer Kamera API'leri aracılığıyla arka planda (sürekli olarak) elde edilen Kamera verilerini kullanırsa:
[C-0-1] Aşağıdaki durumlar hariç, ilgili gösterge (9.8.2 Kayıt bölümünde belirtildiği gibi kamera ve/veya mikrofon) ZORUNLU olarak uygulanmalıdır:
Bu erişim, aşağıdaki rollerden birini veya daha fazlasını içeren bir paket aracılığıyla, korumalı alana alınmış bir uygulamada (bkz. 9.8.15 Korumalı alana alınmış API uygulaması) gerçekleştirilir: Sistem Arayüzü Intelligence, System Ambient Audio Intelligence, System Audio Intelligence, System Notification Intelligence, System Text Intelligence veya System Visual Intelligence.
Erişim, AOSP'deki mekanizmalar (
HotwordDetectionService,WearableSensingService,VisualQueryDetector) aracılığıyla uygulanan ve zorunlu kılınan bir korumalı alan üzerinden gerçekleştirilir.Ses erişimi,
SOURCE_HOTWORDses kaynağı olarak sağlanarak Dijital Asistan uygulaması tarafından yardımcı amaçlarla gerçekleştirilir.Erişim, sistem tarafından gerçekleştirilir ve açık kaynak koduyla uygulanır.
[C-SR-1] Bu tür verileri kullanan her işlev için kullanıcı izni alınması ŞİDDETLE TAVSİYE EDİLİR ve bu işlevler varsayılan olarak devre dışı bırakılmalıdır.
[C-SR-2] Uzak bir giyilebilir cihazdan gelen Kamera verilerine aynı işlemin (yani 9.8.2 Kayıt, 9.8.6 OS düzeyinde ve ortam verileri, 9.8.15 Korumalı alan API uygulamaları ve 9.8.16 Sürekli Ses ve Kamera verileri bölümlerinde belirtilen kısıtlamalara uyulması) uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, uzak bir giyilebilir cihazdan Kamera veya Mikrofon verileri alıyorsa ve verilere Android OS, korumalı alan uygulaması veya WearableSensingManager tarafından oluşturulan korumalı alan işlevinin dışında şifrelenmemiş biçimde erişiliyorsa:
- [C-1-1] Uzak giyilebilir cihaza ek bir gösterge görüntülemesi gerektiğini BELİRTİR.
Cihazlar, atanmış anahtar kelime olmadan bir Dijital Asistan Uygulaması ile etkileşim kurma özelliği sunuyorsa (genel kullanıcı sorgularını işleme veya kamera aracılığıyla kullanıcı varlığını analiz etme) aşağıdaki koşulları karşılamalıdır:
[C-2-1] Bu tür bir uygulamanın,
android.app.role.ASSISTANTrolüne sahip bir paket tarafından sağlandığından EMİN OLMALIDIR.[C-2-2] Bu tür bir uygulamanın
HotwordDetectionServiceve/veyaVisualQueryDetectionServiceAndroid API'lerini kullandığından EMİN OLMALIDIR.
9.8.17. Telemetri
Android, sistem ve uygulama günlüklerini StatsLog API'lerini kullanarak depolar. Bu günlükler, ayrıcalıklı sistem uygulamaları tarafından kullanılabilen StatsManager API'leri aracılığıyla yönetilir.
StatsManager, gizliliği koruma mekanizması olan cihazlardan gizliliğe duyarlı olarak sınıflandırılan verileri toplama yöntemi de sunar. API, özellikle StatsLog'da tanımlanan kısıtlanmış metrik kategorilerini sorgulama olanağı sağlar.StatsManager::query
StatsManager'dan kısıtlanmış metrikleri sorgulayan ve toplayan tüm uygulamalar:
[C-0-1] Cihazdaki tek uygulama/uygulama olmalı ve
READ_RESTRICTED_STATSiznine sahip olmalıdır.[C-0-2] YALNIZCA gizliliği korumaya yönelik bir mekanizma kullanarak cihazın telemetri verilerini ve günlüğünü göndermelidir. Gizliliği korumaya yönelik mekanizma, "yalnızca toplu analizlere izin veren ve günlük kaydı yapılan etkinliklerin veya türetilmiş sonuçların tek tek kullanıcılarla eşleştirilmesini engelleyen" olarak tanımlanır.Bu sayede, kullanıcı başına verilerin incelenebilmesi önlenir (ör. RAPPOR gibi bir diferansiyel gizlilik teknolojisi kullanılarak uygulanır).
[C-0-3] Bu tür veriler, cihazdaki herhangi bir kullanıcı kimliğiyle (ör. Hesap) ilişkilendirilmemelidir.
[C-0-4] Bu tür veriler, mevcut bölümde belirtilen şartlara uymayan diğer OS bileşenleriyle paylaşılMAMALIDIR (9.8.17. Telemetri).
[C-0-5] Gizliliği koruyan telemetri verilerinin toplanmasını, kullanılmasını ve paylaşılmasını etkinleştirmek/devre dışı bırakmak için kullanıcıya bir olanak SUNULMALIDIR.
[C-0-6] Veriler cihazda herhangi bir biçimde depolanıyorsa uygulama tarafından toplanan bu tür verilerin silinmesi için kullanıcıya olanak TANINMALIDIR. Kullanıcı verileri silmeyi seçtiyse cihazda depolanan tüm veriler KALDIRILMALIDIR.
[C-0-7] Gizliliği korumaya yönelik temel protokol uygulamasını açık kaynaklı bir depoda İFŞA ETMELİDİR.
[C-0-8] StatsLog'da tanımlanan kısıtlanmış metrik kategorilerindeki veri toplama işlemini kontrol etmek için bu bölümdeki veri çıkışı politikalarını ZORUNLU olarak uygulamalıdır.
9.8.18. Temsilci tabanlı işlevlerin gizliliği
Cihaz uygulamaları:
[C-0-1] AppFunctions'ı yürüten tüm bileşenlerin
EXECUTE_APP_FUNCTIONSveyaEXECUTE_APP_FUNCTIONS_SYSTEMiznine sahip olmasını ZORUNLU olarak sağlamalıdır.[C-0-2] AppFunction çağrısı YALNIZCA açık bir kullanıcı işleminin doğrudan sonucu olarak çağrılmalı ve bu, hem hangi uygulamanın çağrıldığını hem de bu uygulamada gerçekleştirilecek birincil işlemi kullanıcıya açıkça belirtmelidir.
[C-0-1] ve [C-0-2] karşılanmadığı sürece, üçüncü taraf uygulamasının AppFunction'ları keşfetme veya yürütme isteği proxy'lenmemeli ya da değiştirilmemelidir [C-0-3].
[C-0-4] Sistem bileşenleri, 9.8.6'da tanımlandığı şekilde bir Korunan Yürütme Ortamı'nda çalışmadığı sürece, 9.8.6 İşletim sistemi seviyesinde ve ortam verisi korumaları bölümünde tanımlandığı şekilde hassas işletim sistemi seviyesindeki veya ortam verilerinin ya da bunların türevlerinin, sistem bileşenleri tarafından hatırlatıcı oluşturmak veya parametreleştirmek için kullanılmasına İZİN VERMEMELİDİR.
9.9. Veri Depolama Şifrelemesi
Tüm cihazlar, 9.9.1 bölümündeki şartları KARŞILAMALIDIR. Bu belgedeki API düzeyinden daha eski bir API düzeyinde kullanıma sunulan cihazlar, 9.9.2 ve 9.9.3 bölümlerindeki şartlardan muaftır. Bunun yerine, cihazın kullanıma sunulduğu API düzeyine karşılık gelen Android Uyumluluk Tanımı belgesinin 9.9 bölümündeki şartları KARŞILAMALIDIR.
9.9.1. Doğrudan Başlatma
Cihaz uygulamaları:
[C-0-1] Depolama Şifreleme'yi desteklemeseler bile Direct Boot mode API'lerini uygulamalıdır.
[C-0-2]
ACTION_LOCKED_BOOT_COMPLETEDveACTION_USER_UNLOCKEDduyuruları, doğrudan başlatmaya duyarlı uygulamalara, kullanıcının Cihaz Şifrelemeli (DE) ve Kimlik Bilgisi Şifrelemeli (CE) depolama alanlarının kullanılabileceğini bildirmek için yayınlanmaya DEVAM ETMELİDİR.
9.9.2. Şifreleme şartları
Cihaz uygulamaları:
- [C-0-1] Uygulama özel verileri (
/databölümü) ve cihazın kalıcı, çıkarılamayan bir parçasıysa uygulama tarafından paylaşılan depolama bölümü (/sdcardbölümü) ŞİFRELENMELİDİR. - [C-0-2] Kullanıcı, kutudan çıkarma kurulum deneyimini tamamladığında veri depolama şifrelemesi varsayılan olarak ETKİNLEŞTİRİLMELİDİR.
[C-0-3] Aşağıdaki iki şifreleme yönteminden birini uygulayarak yukarıdaki veri depolama şifreleme koşulunu KARŞILAMALIDIR:
- Bölüm 9.9.3.1'de açıklandığı gibi Dosya Tabanlı Şifreleme (FBE) ve Meta Veri Şifreleme.
- Bölüm 9.9.3.2'de açıklandığı gibi kullanıcı başına blok düzeyinde şifreleme.
9.9.3. Şifreleme Yöntemleri
Cihaz uygulamaları şifrelenmişse:
[C-1-1] Kullanıcıdan kimlik bilgisi istemeden başlatılMALI ve
ACTION_LOCKED_BOOT_COMPLETEDmesajı yayınlandıktan sonra Doğrudan Başlatma özelliğini destekleyen uygulamaların Cihaz Şifrelenmiş (DE) depolama alanına erişmesine izin VERİLMELİDİR.[C-1-2] Aşağıdaki koşulların her ikisi de karşılanana kadar Kimlik Bilgisi Şifreli (CE) depolamaya erişime İZİN VERİLMEMELİDİR:
- Kullanıcı, birincil kimlik doğrulama yöntemini (ör. şifre, desen veya PIN) kullanarak cihazın kilidini açar.
ACTION_USER_UNLOCKEDmesajı yayınlanır.
[C-1-13] Kullanıcı tarafından sağlanan kimlik bilgileri, kayıtlı bir emanet anahtarı veya bölüm 9.9.4'teki şartları karşılayan yeniden başlatma işleminde devam ettirme uygulaması olmadan CE korumalı depolama alanının kilidini açmak için herhangi bir yöntem SUNULMAMALIDIR.
[C-1-4] Doğrulanmış Başlatma KULLANILMALIDIR.
9.9.3.1. Meta Veri Şifreleme ile Dosya Tabanlı Şifreleme
Cihaz uygulamaları, meta veri şifreleme ile dosya tabanlı şifreleme kullanıyorsa:
- [C-1-5] Dosya içerikleri ve dosya sistemi meta verileri, AES-256-XTS veya Adiantum kullanılarak ŞİFRELENMELİDİR. AES-256-XTS, XTS modunda çalıştırılan 256 bit şifre anahtarı uzunluğuna sahip Gelişmiş Şifreleme Standardı'nı ifade eder. Anahtarın tam uzunluğu 512 bittir. Adiantum, https://github.com/google/adiantum adresinde belirtildiği şekilde Adiantum-XChaCha12-AES'i ifade eder. Dosya sistemi meta verileri, dosya boyutları, sahiplik, modlar ve genişletilmiş özellikler (xattrs) gibi verilerdir.
- [C-1-6] Dosya adları AES-256-CBC-CTS, AES-256-HCTR2 veya Adiantum kullanılarak şifrelenmelidir.
- [C-1-12] Cihazda Gelişmiş Şifreleme Standardı (AES) talimatları (ör. ARM tabanlı cihazlarda ARMv8 Cryptography Extensions veya x86 tabanlı cihazlarda AES-NI) varsa dosya adı, dosya içeriği ve dosya sistemi meta verileri şifrelemesi için yukarıdaki AES tabanlı seçenekler KULLANILMALIDIR, Adiantum kullanılmamalıdır.
- [C-1-13] CE ve DE anahtarlarından gerekli alt anahtarları (ör. dosya başına anahtarlar) türetmek için kriptografik olarak güçlü ve geri döndürülemez bir anahtar türetme işlevi (ör. HKDF-SHA512) KULLANILMALIDIR. "Şifreleme açısından güçlü ve geri döndürülemez", anahtar türetme işlevinin en az 256 bitlik bir güvenlik gücüne sahip olduğu ve girişleri üzerinde sözde rastgele işlev ailesi gibi davrandığı anlamına gelir.
- [C-1-14] Farklı şifreleme amaçları için (ör. hem şifreleme hem de anahtar türetme veya iki farklı şifreleme algoritması için) aynı dosya tabanlı şifreleme (FBE) anahtarları veya alt anahtarları KULLANMAMALIDIR.
- [C-1-15] Kalıcı depolama alanındaki şifrelenmiş dosya içeriklerinin silinmemiş tüm bloklarının, hem dosyaya hem de dosyadaki ofsete bağlı olan şifreleme anahtarı ve başlatma vektörü (IV) kombinasyonları kullanılarak şifrelenmesini SAĞLAMALIDIR. Ayrıca, şifrelemenin yalnızca 32 bit IV uzunluğunu destekleyen satır içi şifreleme donanımı kullanılarak yapıldığı durumlar hariç olmak üzere, bu tür tüm kombinasyonlar FARKLI OLMALIDIR.
- [C-1-16] Kalıcı depolamadaki farklı dizinlerde bulunan, silinmemiş tüm şifrelenmiş dosya adlarının, şifreleme anahtarı ve ilk kullanıma hazırlama vektörünün (IV) farklı kombinasyonları kullanılarak şifrelendiğinden EMİN OLMALIDIR.
[C-1-17] Kalıcı depolama alanındaki tüm şifrelenmiş dosya sistemi meta veri bloklarının, şifreleme anahtarı ve başlatma vektörü (IV) kombinasyonları kullanılarak şifrelendiğinden EMİN OLMALIDIR.
CE ve DE depolama alanlarını ve dosya sistemi meta verilerini koruyan anahtarlar:
- [C-1-7] Donanım tabanlı bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma'ya ve cihazın donanım güven köküne BAĞLANMALIDIR.
- [C-1-8] CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine BAĞLANMALIDIR.
- [C-1-9] Kullanıcı kilit ekranı kimlik bilgilerini belirtmediyse CE anahtarları varsayılan bir şifreye bağlanmalıdır.
- [C-1-10] Benzersiz ve farklı OLMALIDIR. Başka bir deyişle, hiçbir kullanıcının CE veya DE anahtarı, başka bir kullanıcının CE veya DE anahtarıyla eşleşmemelidir.
- [C-1-11] Zorunlu olarak desteklenen şifreler, anahtar uzunlukları ve modlar KULLANILMALIDIR.
- [C-1-12] Bootloader kilidi açma ve kilitleme sırasında burada açıklandığı gibi güvenli bir şekilde silinmelidir.
Önceden yüklenmiş temel uygulamalar (ör. Alarm, Telefon, Mesajlaşma) doğrudan başlatmaya uygun HALE GETİRİLMELİDİR.
Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeğinin "fscrypt" şifreleme özelliğine dayalı Dosya Tabanlı Şifreleme ve Linux çekirdeğinin "dm-default-key" özelliğine dayalı Meta Veri Şifreleme için tercih edilen bir uygulama sağlar.
9.9.3.2. Kullanıcı Başına Blok Düzeyinde Şifreleme
Cihaz uygulamaları, kullanıcı başına blok düzeyinde şifreleme kullanıyorsa:
- [C-1-1] 9.5 bölümünde açıklandığı gibi çok kullanıcılı desteği ETKİNLEŞTİRMELİDİR.
- [C-1-2] Ham bölümler veya mantıksal birimler kullanarak kullanıcı başına bölümler SAĞLANMALIDIR.
- [C-1-3] Temel blok cihazların şifrelenmesi için kullanıcı başına benzersiz ve farklı şifreleme anahtarları KULLANILMALIDIR.
[C-1-4] Kullanıcı bölümlerinin blok düzeyinde şifrelenmesi için AES-256-XTS KULLANILMALIDIR.
Kullanıcı başına blok düzeyinde şifrelenmiş cihazları koruyan anahtarlar:
- [C-1-5] Donanım tabanlı bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma'ya ve cihazın donanım güven köküne BAĞLANMALIDIR.
- [C-1-6] İlgili kullanıcının kilit ekranı kimlik bilgilerine BAĞLI OLMALIDIR.
Kullanıcı başına blok düzeyinde şifreleme, kullanıcı başına bölümlerde Linux çekirdeğinin "dm-crypt" özelliği kullanılarak uygulanabilir.
9.9.4. Yeniden Başlatmada Devam Ettirme
Yeniden başlatmada devam etme özelliği, OTA tarafından başlatılan yeniden başlatma işleminden sonra, henüz doğrudan başlatmayı desteklemeyenler de dahil olmak üzere tüm uygulamaların CE depolamasının kilidinin açılmasına olanak tanır. Bu özellik, kullanıcıların yeniden başlatma işleminden sonra yüklü uygulamalardan bildirim almasını sağlar.
Yeniden başlatma işleminden sonra devam ettirme özelliğinin uygulanması, bir cihaz saldırganın eline geçtiğinde saldırganın, cihaz açık olsa, CE depolama alanı kilidi açılmış olsa ve kullanıcı OTA aldıktan sonra cihazın kilidini açmış olsa bile kullanıcının CE ile şifrelenmiş verilerini kurtarmasının son derece zor olmasını sağlamaya devam etmelidir. Çalışanların oluşturduğu saldırılara karşı direnç için saldırganın yayın kriptografik imza anahtarlarına erişim kazandığını da varsayıyoruz.
Özellikle:
[C-0-1] CE depolama alanı, cihaza fiziksel olarak sahip olan ve ardından şu özelliklere ve sınırlamalara sahip olan saldırganlar tarafından bile OKUNAMAZ:
- Rastgele mesajları imzalamak için herhangi bir satıcının veya şirketin imzalama anahtarını kullanabilir.
- Cihazın OTA almasına neden olabilir.
- Aşağıda belirtilenler dışında herhangi bir donanımın (AP, flash vb.) çalışmasını değiştirebilir ancak bu tür değişiklikler en az bir saatlik gecikmeye ve RAM içeriklerini yok eden bir güç döngüsüne neden olur.
- Kurcalamaya karşı korumalı donanımın (ör. Titan M) çalışması değiştirilemez.
- Canlı cihazın RAM'i okunamıyor.
- Kullanıcının kimlik bilgisi (PIN, desen, şifre) alınamıyor veya başka bir şekilde girilmesi sağlanamıyor.
Örneğin, burada bulunan tüm açıklamaları uygulayan ve bunlara uyan bir cihaz uygulaması [C-0-1] ile uyumlu olacaktır.
9.10. Cihaz bütünlüğü
Aşağıdaki koşullar, cihaz bütünlüğünün durumuyla ilgili şeffaflık sağlar. Cihaz uygulamaları:
[C-0-1] Sistem API'si yöntemiyle
PersistentDataBlockManager.getFlashLockState()önyükleyici durumunun sistem görüntüsünün yüklenmesine izin verip vermediğini doğru şekilde bildirmelidir.[C-0-2] Cihaz bütünlüğü için Doğrulanmış Başlatma'yı DESTEKLEMELİDİR.
Cihaz uygulamaları, Android'in önceki bir sürümünde Doğrulanmış Başlatma'yı desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu özellik için destek eklenemiyorsa bu şarttan MUAF TUTULABİLİR.
Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Cihaz uygulamaları bu özelliği destekliyorsa:
- [C-1-1] Platform özellik bayrağını BİLDİRMELİDİR
android.software.verified_boot. - [C-1-2] Her başlatma sırasında doğrulama YAPILMALIDIR.
- [C-1-3] Doğrulamayı, güven kökü olan değişmez bir donanım anahtarından başlatmalı ve sistem bölümüne kadar devam etmelidir.
- [C-1-4] Bir sonraki aşamadaki kodu yürütmeden önce, bir sonraki aşamadaki tüm baytların bütünlüğünü ve gerçekliğini kontrol etmek için doğrulamanın her aşaması UYGULANMALIDIR.
- [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'in mevcut önerileri kadar güçlü doğrulama algoritmaları KULLANILMALIDIR.
- [C-1-6] Kullanıcı yine de başlatmayı denemeyi kabul etmediği sürece, sistem doğrulaması başarısız olduğunda başlatmanın tamamlanmasına İZİN VERİLMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALIDIR.
- [C-1-7] Kullanıcı, önyükleyiciyi açıkça kilidini açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERİLMEMELİDİR.
- [C-1-8] MUST use tamper-evident storage: for storing whether the bootloader is unlocked. Kurcalamaya karşı korumalı depolama birimi, önyükleyicinin depolama biriminin Android'in içinden kurcalanıp kurcalanmadığını algılayabileceği anlamına gelir.
- [C-1-9] Cihaz kullanılırken kullanıcıya istem göstermeli ve bootloader'ın kilitli moddan kilidi açık moda geçişine izin vermeden önce fiziksel onay istemelidir.
- [C-1-10] Android tarafından kullanılan bölümler (ör. önyükleme, sistem bölümleri) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum işletim sistemi sürümünü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.
[C-1-11] Bootloader kilidi açma ve kilitleme sırasında, "9.12" bölümünde belirtildiği gibi tüm kullanıcı verileri güvenli bir şekilde silinmelidir. Veri Silme (kullanıcı verileri bölümü ve NVRAM alanları dahil).
[C-1-14] Sistem yapılandırmasında
require-strict-signatureolarak listelenen, izin verilenler listesindeki paketler için her başlatmada imzayı en az bir kez DOĞRULAMALIDIR.[C-SR-2] Ayrıcalıklı uygulama APK dosyalarının, Doğrulanmış Başlatma ile korunan bölümlere dayalı bir güven zinciriyle doğrulanması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-3] Ayrıcalıklı bir uygulama tarafından APK dosyası dışından yüklenen yürütülebilir yapıtların (ör. dinamik olarak yüklenen kod veya derlenmiş kod) yürütülmeden önce doğrulanması ŞİDDETLE TAVSİYE EDİLİR veya hiç yürütülmemesi ŞİDDETLE TAVSİYE EDİLİR.
Kalıcı yazılıma sahip tüm bileşenler (ör. modem, kamera) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum sürümü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.
Yukarı akış Android Açık Kaynak Projesi, bu özelliğin external/avb/ deposunda tercih edilen bir uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleyiciye entegre edilebilir.
Cihaz uygulamaları, dosya içeriğini sayfa bazında doğrulayabiliyorsa:
[C-2-1] Dosyanın tamamını okumadan dosya içeriğini kriptografik olarak doğrulamayı desteklemelidir.
[C-2-2] Okunan içerik yukarıdaki [C-2-1] uyarınca doğrulanmadığında, korunan bir dosyadaki okuma isteklerinin başarılı olmasına İZİN VERİLMEMELİDİR.
[C-2-4] Etkinleştirilmiş dosyalar için dosya sağlama toplamını O(1) içinde döndürmELİDİR.
Cihaz uygulamaları, dosya içeriğini daha önceki bir Android sürümünde güvenilir bir anahtara karşı doğrulama özelliği olmadan başlatıldıysa ve sistem yazılımı güncellemesiyle bu özellik için destek eklenemiyorsa bu cihazlar, şarttan MUAF TUTULABİLİR. Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeğinin fs-verity özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.
9.11. Anahtarlar ve Kimlik Bilgileri
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları bir kapsayıcıda depolamasına ve KeyChain API veya Keystore API aracılığıyla kriptografik işlemlerde kullanmasına olanak tanır. Cihaz uygulamaları:
[C-0-1] En az 8.192 anahtarın içe aktarılmasına veya oluşturulmasına İZİN VERİLMELİDİR.
[C-0-2] Kilit ekranı kimlik doğrulamasında başarısız denemeler arasında bir zaman aralığı OLMALIDIR. Başarısız deneme sayısı n olmak üzere, 9 < n < 30 için zaman aralığı EN AZ 30 saniye olmalıdır. n > 29 için zaman aralığı değeri, en az 30*2^floor((n-30)/10) saniye veya en az 24 saat olmalıdır (hangisi daha kısaysa).
Oluşturulabilecek anahtar sayısını SINIRLAMAMALIDIR.
Cihaz uygulaması güvenli kilit ekranını desteklediğinde:
- [C-1-1] MUST back up the keystore implementation with an isolated execution environment.
- [C-1-2] Android Keystore sisteminin desteklenen algoritmalarını, çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda düzgün şekilde desteklemek için RSA, AES, ECDSA, ECDH (IKeyMintDevice destekleniyorsa), 3DES ve HMAC şifreleme algoritmaları ile MD5, SHA-1 ve SHA-2 ailesi karma oluşturma işlevlerinin desteklenen IKeyMintDevice veya IKeymasterDevice sürümü tarafından gerekli olan şifreleme algoritmaları ve karma oluşturma işlevlerinin uygulamalarına SAHİP OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun yalıtılmış ortamın iç durumuna erişebileceği tüm olası mekanizmaları (DMA dahil) ENGELLEMELİDİR. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
[C-1-3] Kilit ekranı kimlik doğrulaması, izole edilmiş yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
[C-1-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının kalıcı cihaz tanımlayıcıları olarak kullanılması ENGELLENMELİDİR.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf olduğunu unutmayın. Ancak bu cihaz, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmediği sürece bu muafiyet geçerlidir.
[C-1-5] Kullanıcının, kilidi açık durumdan kilitli duruma geçiş için uyku zaman aşımını seçmesine izin VERİLMELİDİR. İzin verilen minimum zaman aşımı 15 saniyedir. Baş ünite kapatıldığında veya kullanıcı değiştirildiğinde ekranı kilitleyen otomotiv cihazlarında uyku zaman aşımı yapılandırması OLMAYABİLİR.
[C-1-6] IKeymasterDevice 3.0 veya sonraki bir sürümü ya da IKeyMintDevice 1 veya sonraki bir sürümü DESTEKLEMELİDİR.
[C-SR-1] Birincil kimlik doğrulama yöntemleri (ör. PIN, desen veya şifre) için benzersiz başarısız denemeler arasında minimum süre aralığı uygulanması, aşağıdakilere göre ŞİDDETLE TAVSİYE EDİLİR:
Benzersiz başarısız deneme sayısı Minimum zaman aşımı 0-4 0 5 1 dakika 6 5 dakika 7 15 dakika 8 30 dakika 9 90 dakika 10 4 saat 11 12 saat 12 24 saat 13 4 gün 14 13 gün 15 41 gün 16 123 gün 17 1 yıl 18 3 yıl 19 9 yıl
9.11.1. Güvenli kilit ekranı, kimlik doğrulama ve sanal cihazlar
AOSP uygulaması, bilgi faktörüne dayalı birincil kimlik doğrulamanın ikincil güçlü bir biyometri veya daha zayıf üçüncül yöntemlerle desteklenebileceği katmanlı bir kimlik doğrulama modelini izler.
Cihaz uygulamaları:
[C-SR-1] Aşağıdakilerden yalnızca birinin birincil kimlik doğrulama yöntemi olarak ayarlanması ŞİDDETLE TAVSİYE EDİLİR:
- Sayısal bir PIN
- Alfanümerik bir şifre
- Tam olarak 3x3 noktalı bir ızgarada kaydırma deseni
Yukarıdaki kimlik doğrulama yöntemlerinin bu belgede önerilen birincil kimlik doğrulama yöntemleri olarak adlandırıldığını unutmayın.
[C-0-1] Birincil kimlik doğrulama denemelerinin başarısız olma sayısı sınırlandırılmalıdır.
[C-SR-5] 20 başarısız birincil kimlik doğrulama denemesi üst sınırı uygulanması ve kullanıcılar izin verip özelliği etkinleştirirse başarısız birincil kimlik doğrulama denemeleri sınırı aşıldıktan sonra "Fabrika Verilerine Sıfırlama" işleminin yapılması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, sayısal PIN'i önerilen birincil kimlik doğrulama yöntemi olarak ayarlarsa:
[C-SR-6] PIN'in en az 6 basamaklı veya eşdeğer olarak 20 bit entropili olması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-7] PIN uzunluğunun açığa çıkmasını önlemek için 6 basamaktan kısa bir PIN'in kullanıcı etkileşimi olmadan otomatik olarak girilmesine İZİN VERİLMEMESİ ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yol olarak yeni bir kimlik doğrulama yöntemi kullanırsa yeni kimlik doğrulama yöntemi:
- [C-2-1] Requiring User Authentication For Key Use (Anahtar Kullanımı İçin Kullanıcı Kimlik Doğrulaması Gerekli) bölümünde açıklandığı gibi kullanıcı kimlik doğrulama yöntemi OLMALIDIR.
Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini bilinen bir sırra göre ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yol olarak kabul edilecek yeni bir kimlik doğrulama yöntemi kullanırsa:
[C-3-1] Girişlerin izin verilen en kısa uzunluğunun entropisi 10 bit'ten büyük OLMALIDIR.
[C-3-2] Olası tüm girişlerin maksimum entropisi 18 bit'ten büyük OLMALIDIR.
[C-3-3] Yeni kimlik doğrulama yöntemi, AOSP'de uygulanan ve sağlanan önerilen birincil kimlik doğrulama yöntemlerinin (ör. PIN, desen, şifre) hiçbirinin yerini ALMAMALIDIR.
[C-3-4] Cihaz Politikası Denetleyicisi (DPC) uygulaması, DevicePolicyManager.setRequiredPasswordComplexity() yöntemiyle PASSWORD_COMPLEXITY_NONE'dan daha kısıtlayıcı bir karmaşıklık sabitiyle veya DevicePolicyManager.setPasswordQuality() yöntemiyle PASSWORD_QUALITY_BIOMETRIC_WEAK'ten daha kısıtlayıcı bir sabitle parola koşulları politikasını ayarladığında yeni kimlik doğrulama yöntemi devre dışı bırakılmalıdır.
[C-3-5] Yeni kimlik doğrulama yöntemleri, 72 saatte bir veya daha kısa aralıklarla önerilen birincil kimlik doğrulama yöntemlerine (ör. PIN, desen, şifre) geri dönmeli YA DA kullanıcının verilerinin gizliliğini korumak için bazı verilerin yedeklenmeyeceğini açıkça belirtmelidir.
Cihaz uygulamaları, kilit ekranının kilidini açmak için önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemenin güvenli bir yolu olarak kabul edilecek biyometri tabanlı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:
[C-4-1] 1. Sınıf (eski adıyla Kolaylık) için bölüm 7.3.10'da açıklanan tüm koşulları karşılamalıdır.
[C-4-2] Bilinen bir sırra dayalı, önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizmaya SAHİP OLMALIDIR.
[C-4-3] MUST be disabled and only allow the recommended primary authentication to unlock the screen when the Device Policy Controller (DPC) application has set the keyguard feature policy by calling the method
DevicePolicyManager.setKeyguardDisabledFeatures(), with any of the associated biometric flags (i.e.KEYGUARD_DISABLE_BIOMETRICS,KEYGUARD_DISABLE_FINGERPRINT,KEYGUARD_DISABLE_FACE, orKEYGUARD_DISABLE_IRIS).
Biyometrik kimlik doğrulama yöntemleri, bölüm 7.3.10'da açıklandığı gibi 3. Sınıf (eski adıyla Güçlü) şartlarını karşılamıyorsa:
[C-5-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması,
PASSWORD_COMPLEXITY_LOWdeğerinden daha kısıtlayıcı bir karmaşıklık grubuyla DevicePolicyManager.setRequiredPasswordComplexity() aracılığıyla veyaPASSWORD_QUALITY_BIOMETRIC_WEAKdeğerinden daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setPasswordQuality() yöntemi kullanılarak şifre koşulları kalite politikasını ayarladıysa yöntemler DEVRE DIŞI BIRAKILMALIDIR.[C-5-2] Kullanıcıdan, bölüm 7.3.10'daki [C-1-7] ve [C-1-8] bölümlerinde açıklandığı gibi önerilen birincil kimlik doğrulama (ör. PIN, desen veya şifre) bilgisi İSTENMELİDİR.
[C-5-3] Yöntemler güvenli kilit ekranı olarak değerlendirilmemeli ve aşağıdaki bu bölümde C-8 ile başlayan koşulları karşılamalıdır.
Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse ve yeni kimlik doğrulama yöntemi fiziksel bir jetona ya da konuma dayanıyorsa:
[C-6-1] Bilinen bir sırra dayalı olan ve güvenli kilit ekranı olarak kabul edilme şartlarını karşılayan önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için geri dönüş mekanizması OLMALIDIR.
[C-6-2] Yeni yöntem DEVRE DIŞI BIRAKILMALIDIR ve Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı aşağıdakilerden biriyle ayarladığında ekranın kilidini açmak için yalnızca önerilen birincil kimlik doğrulama yöntemlerinden birine izin verilmelidir:
DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)yöntemi.PASSWORD_QUALITY_NONEyönteminden daha kısıtlayıcı bir kalite sabiti olanDevicePolicyManager.setPasswordQuality()yöntemi.PASSWORD_COMPLEXITY_NONE'den daha kısıtlayıcı bir karmaşıklık grubu içerenDevicePolicyManager.setRequiredPasswordComplexity()yöntemi.
[C-6-3] Kullanıcı, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen veya şifre) biriyle en az 4 saatte bir veya daha kısa aralıklarla kimlik doğrulamaya zorunlu tutulmalıdır. Fiziksel bir jeton, C-X'teki TrustAgent uygulamaları için koşulları karşıladığında bunun yerine [C-9-5] içinde tanımlanan zaman aşımı kısıtlamaları geçerli olur.
[C-6-4] Yeni yöntem, güvenli bir kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8'de listelenen kısıtlamalara uymalıdır.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService System API'yi uygulayan bir veya daha fazla güven aracısı varsa:
[C-7-1] Cihaz kilidi ertelendiğinde veya güven aracısı tarafından kilidi açılabildiğinde ayarlar menüsünde ve kilit ekranında net bir gösterge OLMALIDIR. Örneğin, AOSP, ayarlar menüsünde "Otomatik kilitleme ayarı" ve "Güç düğmesiyle anında kilitleme" için metin açıklaması göstererek ve kilit ekranında ayırt edilebilir bir simge kullanarak bu koşulu karşılar.
[C-7-2]
DevicePolicyManagersınıfındaki tüm güven aracısı API'lerine (ör.KEYGUARD_DISABLE_TRUST_AGENTSsabiti) uymalı ve bunları tam olarak uygulamalıdır.[C-7-3] Birincil kişisel cihaz olarak kullanılan bir cihazda (ör. elde taşınabilir cihaz)
TrustAgentService.addEscrowToken()işlevi tam olarak uygulanMAMALI, ancak genellikle paylaşılan cihaz uygulamalarında (ör. Android TV veya otomotiv cihazı) işlev tam olarak uygulanABİLİR.[C-7-4]
TrustAgentService.addEscrowToken()tarafından eklenen tüm depolanmış jetonlar ŞİFRELENMELİDİR.[C-7-5] Şifreleme anahtarı veya emanet jetonu, anahtarın kullanıldığı cihazda saklanmamalıdır. Örneğin, telefonda depolanan bir anahtarın TV'deki kullanıcı hesabının kilidini açmasına izin verilir. Otomotiv cihazlarında, emanet tokeninin aracın herhangi bir yerinde saklanmasına izin verilmez.
[C-7-6] MUST inform the user about the security implications before enabling the escrow token to decrypt the data storage.
[C-7-7] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizmaya SAHİP OLMALIDIR.
[C-7-9] Kullanıcının güvenliği (ör.sürücünün dikkatinin dağılması) söz konusu olmadığı sürece, bölüm 7.3.10'daki [C-1-7] ve [C-1-8] bölümlerinde açıklandığı gibi, kullanıcının önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen veya şifre) biriyle sorgulanması ZORUNLUDUR.
[C-7-10] Güvenli bir kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8'de listelenen kısıtlamalara uymalıdır.
[C-7-11] Birincil kişisel cihazlarda (ör.elde taşınabilir) TrustAgent'ların cihazın kilidini açmasına İZİN VERİLMEMELİDİR ve bu cihazlar yalnızca kilidi açılmış bir cihazı en fazla 4 saat boyunca kilitli olmayan durumda tutmak için kullanılabilir. AOSP'deki TrustManagerService'in varsayılan uygulaması bu koşulu karşılar.
[C-7-12] Depolama cihazından hedef cihaza emanet jetonunu aktarmak için kriptografik olarak güvenli (ör.UKEY2) bir iletişim kanalı KULLANILMALIDIR.
Cihaz uygulamaları, yukarıda açıklandığı gibi güvenli bir kilit ekranı olmayan kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse ve keyguard'ın kilidini açmak için yeni bir kimlik doğrulama yöntemi kullanırsa:
[C-8-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması, şifre kalitesi politikasını
PASSWORD_QUALITY_NONEdeğerinden daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()yöntemi veyaPASSWORD_COMPLEXITY_NONEdeğerinden daha kısıtlayıcı bir karmaşıklık sabitiyleDevicePolicyManager.setRequiredPasswordComplexity()yöntemi üzerinden ayarladığında yeni yöntem DEVRE DIŞI bırakılmalıdır.[C-8-2]
DevicePolicyManager.setPasswordExpirationTimeout()tarafından ayarlanan şifre geçerlilik sonu zamanlayıcılarını sıfırlamamalıdır.[C-8-3] Kilit durumunu değiştirmek için üçüncü taraf uygulamalarının kullanabileceği bir API'yi kullanıma sunMAMALIDIR.
Cihaz uygulamaları, uygulamaların ikincil sanal ekranlar oluşturmasına izin veriyorsa ve VirtualDeviceManager aracılığıyla gibi ilişkili giriş etkinliklerini desteklemiyorsa:
- [C-9-1] Cihazın varsayılan ekranı kilitlendiğinde bu ikincil sanal ekranlar KİLİTLENMELİ, cihazın varsayılan ekranı kilidi açıldığında ise bu ikincil sanal ekranların KİLİDİ AÇILMALIDIR.
Cihaz uygulamaları, uygulamaların VirtualDeviceManager aracılığıyla olduğu gibi ikincil sanal ekranlar oluşturmasına ve ilişkili giriş etkinliklerini desteklemesine izin veriyorsa:
[C-10-1] Sanal cihaz başına ayrı kilit durumları desteklenmelidir.
[C-10-2] Android 16'da şart kaldırıldı.
[C-10-3] Android 16'da şart kaldırıldı.
[C-10-4] Kullanıcı bir kilitleme işlemi başlattığında, el cihazları için gerekli olan kilitleme kullanıcı arayüzü aracılığıyla da dahil olmak üzere tüm ekranlar KİLİTLENMELİDİR (Bölüm 2.2.5[9.11/H-1-2]'ye bakın).
[C-10-5] Kullanıcı başına ayrı sanal cihaz örnekleri OLMALIDIR.
[C-10-6]
DevicePolicyManager.setNearbyAppStreamingPolicyile belirtildiği şekilde uygulama aktarımı DEVRE DIŞI bırakılmalıdır.[C-10-7] Android 16'da şart kaldırıldı.
[C-10-11] Bilgi faktörü girişi ve biyometrik istem dahil olmak üzere sanal cihazlarda kimlik doğrulama kullanıcı arayüzü DEVRE DIŞI BIRAKILMALIDIR.
[C-10-12] Android 16'da şart kaldırıldı.
[C-10-13] Android anahtar deposu sistemiyle kullanıcı kimlik doğrulaması yetkilendirmesi olarak sanal cihaz kilidi durumu KULLANILMAMALIDIR.
KeyGenParameterSpec.Builder.setUserAuthentication*sayfasına göz atın.[C-10-14] Cihazda paylaşılan pano uygulanıyorsa pano verileri fiziksel ve sanal cihazlar arasında paylaşılmadan önce cihazlar arasında pano paylaşımını etkinleştirmek için kullanıcıya bir olanak SAĞLANMALIDIR.
[C-10-15] Pano verilerine erişildiğinde hem erişilen cihazda hem de panonun oluşturulduğu cihazda bildirimler GÖSTERİLMELİDİR.
Cihaz uygulamaları, kullanıcının birincil kimlik doğrulama bilgi faktörünü kaynak cihazdan hedef cihaza aktarmasına izin verdiğinde (ör. hedef cihazın ilk kurulumu için):
[C-11-1] Bilgi faktörünü kaynak cihazdan hedef cihaza aktarırken Google Cloud Key Vault Hizmeti güvenlik hakkında teknik belge'de açıklananlara benzer koruma garantileriyle şifrelemelidir. Böylece bilgi faktörünün şifresi uzaktan çözülemez veya bilgi faktörü, cihazların kilidini uzaktan açmak için kullanılamaz.
[C-11-2] Kaynak cihazda, bilgi faktörünü hedef cihaza aktarmadan önce kullanıcıdan kaynak cihazın bilgi faktörünü onaylamasını İSTEMELİDİR.
[C-11-3] Birincil kimlik doğrulama bilgisi faktörü ayarlanmamış hedef cihazlarda, bu bilgi faktörünü hedef cihaz için birincil kimlik doğrulama bilgi faktörü olarak ayarlamadan ve kaynak cihazdan aktarılan verileri kullanılabilir hale getirmeden ÖNCE kullanıcının aktarılan bilgi faktörünü hedef cihazda onaylamasını İSTEMELİDİR.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE işaretini kullanarak TrustAgentService.grantTrust() System API'yi çağıran bir veya daha fazla güven aracısı varsa:
[C-12-1]
grantTrust()yalnızca kendi kilit ekranına sahip yakındaki bir fiziksel cihaza bağlandığında ve kullanıcı kimliğini bu kilit ekranına göre doğruladığında işaretle birlikte ÇAĞRILMALIDIR. Yakındaki cihazlar, kullanıcı kimlik doğrulama şartını karşılamak için tek seferlik kullanıcı kilidi açma işleminden sonra bilekte veya üzerinizde olduğunu algılama mekanizmalarını kullanabilir.[C-12-2] Ekran kapatıldığında (ör. bir düğmeye basılarak veya ekran zaman aşımına uğradığında) ve TrustAgent güveni iptal etmediğinde cihaz uygulaması
TrustState.TRUSTABLEdurumuna geçirilmelidir. AOSP bu koşulu karşılar.[C-12-3] TrustAgent, [C-12-1] bölümündeki şartlara göre güven vermeye devam ediyorsa cihaz YALNIZCA
TrustState.TRUSTABLEdurumundanTrustState.TRUSTEDdurumuna geçirilmelidir.
[C-12-4]
TrustManagerService.revokeTrust()[C-12-5]bölümünde tanımlandığı şekilde kriptografik açıdan güvenli ve doğru mesafe ölçümü kullanılmıyorsa MUST çağrısı yapılmalıdır:- Güven verildikten sonra en fazla 24 saat içinde veya
- 8 saatlik boşta kalma süresinden sonra veya
- Uygulamalarda [C-12-5] içinde tanımlandığı gibi kriptografik olarak güvenli ve doğru mesafe ölçümü kullanılmıyorsa Yakındaki fiziksel cihaza yapılan temel bağlantı kaybolduğunda.
[C-12-5] [C-12-4] şartlarını karşılamak için güvenli ve doğru aralığa dayalı uygulamalar AŞAĞIDAKİ çözümlerden birini KULLANMALIDIR:
Ultra geniş bant kullanılan uygulamalar:
7.4.9 bölümünde açıklanan UWB için uygunluk, sertifika, doğruluk ve kalibrasyon koşullarını KARŞILAMALIDIR.
7.4.9 bölümünde listelenen P-STS güvenlik modlarından biri KULLANILMALIDIR.
Kablosuz ağ komşu iletişim ağı (NAN) kullanılarak yapılan uygulamalar:
2.2.1 [7.4.2.5/H-SR-1] bölümündeki doğruluk şartlarını KARŞILAMALI, 160 MHz bant genişliğini (veya daha yüksek) KULLANMALI ve Varlık Kalibrasyonu bölümünde belirtilen ölçüm kurulumu adımlarını UYGULAMALIDIR.
IEEE 802.11az'de tanımlandığı şekilde Güvenli LTF KULLANILMALIDIR.
Cihaz uygulamaları, uygulamaların VirtualDeviceManager aracılığıyla ikincil sanal ekranlar oluşturmasına ve ilişkili giriş etkinliklerini desteklemesine izin veriyorsa ve ekranlar VIRTUAL_DISPLAY_FLAG_SECURE ile işaretlenmemişse:
[C-13-8]
android:canDisplayOnRemoteDevicesözelliği veyaandroid.activity.can_display_on_remote_devicesmeta verileri yanlış olarak ayarlanmış etkinliklerin sanal cihazda başlatılması ENGELLENMELİDİR.[C-13-9] Sanal cihazda, akışı açıkça etkinleştirmeyen ve
SurfaceView#setSecureileFLAG_SECUREdahil olmak üzere hassas içerik gösterdiğini belirten etkinliklerin başlatılması ENGELLENMELİDİR.
Cihaz uygulamaları, DeviceStateManager aracılığıyla ayrı ekran güç durumlarını ve KeyguardDisplayManager aracılığıyla ayrı ekran kilidi durumlarını destekliyorsa:
[C-SR-2] Varsayılan cihaz ekranından bağımsız olarak kilidin açılmasına izin vermek için 9.11.1 bölümünde tanımlanan şartları karşılayan bir kimlik bilgisi veya en az 7.3.10 bölümünde tanımlanan Sınıf 1 özelliklerini karşılayan bir biyometrik kimlik kullanılması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-3] Tanımlanmış bir ekran zaman aşımı aracılığıyla ayrı ekran kilidini açma işleminin kısıtlanması ŞİDDETLE TAVSİYE EDİLİR.
[C-SR-4] Kullanıcının birincil el cihazından tam kilitleme yoluyla tüm ekranları global olarak kilitlemesine izin VERİLMESİ ŞİDDETLE TAVSİYE EDİLİR.
9.11.2. StrongBox
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları özel bir güvenli işlemcide ve yukarıda açıklanan izole yürütme ortamında depolamasına olanak tanır. Bu tür özel güvenli işlemcilere "StrongBox" adı verilir. Aşağıdaki C-1-3 ile C-1-11 arasındaki koşullar, bir cihazın StrongBox olarak nitelendirilmek için karşılaması gereken koşulları tanımlar.
Özel güvenli işlemciye sahip cihaz uygulamaları:
- [C-SR-1] StrongBox'ı desteklemek için KESİNLİKLE ÖNERİLİR. StrongBox'ın gelecekteki bir sürümde zorunlu hale gelmesi muhtemeldir.
Cihaz uygulamaları StrongBox'ı destekliyorsa:
[C-1-1] MUST declare FEATURE_STRONGBOX_KEYSTORE.
[C-1-2] Anahtar deposunu yedeklemek ve kullanıcı kimlik doğrulamasını güvenli hale getirmek için kullanılan özel bir güvenli donanım SAĞLANMALIDIR. Özel güvenli donanım başka amaçlar için de kullanılabilir.
[C-1-3] Önbelleği, DRAM'i, yardımcı işlemcileri veya diğer temel kaynakları uygulama işlemcisi (AP) ile paylaşmayan ayrı bir CPU'ya SAHİP OLMALIDIR.
[C-1-4] AP ile paylaşılan tüm çevre birimlerinin, StrongBox işlemlerini hiçbir şekilde değiştiremeyeceğinden veya StrongBox'tan herhangi bir bilgi alamayacağından EMİN OLMALIDIR. AP, StrongBox'a erişimi devre dışı bırakabilir veya engelleyebilir.
[C-1-5] AP'nin manipülasyonuna karşı bağışıklığı olan, makul doğrulukta (+/- %10) bir dahili saate SAHİP OLMALIDIR.
[C-1-6] MUST have a true random number generator that produces uniformly-distributed and unpredictable output.
[C-1-7] MUST have tamper resistance, including resistance against physical penetration, and glitching.
[C-1-8] Güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla bilgi sızdırılmasına karşı direnç de dahil olmak üzere yan kanal direnci OLMALIDIR.
[C-1-9] İçeriklerin gizliliğini, bütünlüğünü, gerçekliğini, tutarlılığını ve güncelliğini sağlayan güvenli depolama alanı OLMALIDIR. Depolama birimi, StrongBox API'leri tarafından izin verilen durumlar dışında okunamaz veya değiştirilemez.
Cihaz uygulamaları, [C-1-3] ile [C-1-9] arasındaki şartlara uygunluğu doğrulamak için:
[C-1-10] MUST include the hardware that is certified against the Secure IC Protection Profile BSI-CC-PP-0084-2014 or BSI-CC-PP-0117-2022, or is evaluated by a nationally accredited testing laboratory incorporating High attack potential vulnerability assessment according to the Common Criteria Application of Attack Potential to Smartcards.
[C-1-11] Ortak Ölçütler: Saldırı Potansiyelinin Akıllı Kartlara Uygulanması'na göre yüksek saldırı potansiyeli içeren güvenlik açığı değerlendirmesi yapan, ulusal düzeyde akredite bir test laboratuvarı tarafından değerlendirilen donanım yazılımını içermelidir.
[C-SR-2] Güvenlik Hedefi, Değerlendirme Güvencesi Düzeyi (EAL) 5 kullanılarak değerlendirilen ve AVA_VAN.5 ile desteklenen donanımların dahil edilmesi ŞİDDETLE TAVSİYE EDİLİR. EAL 5 sertifikası, gelecekteki bir sürümde zorunlu hale gelebilir.
[C-SR-3] İçeriden saldırıya karşı direnç (IAR) sağlamaları ŞİDDETLE TAVSİYE EDİLİR. Bu, donanım yazılımı imzalama anahtarlarına erişimi olan bir çalışanın, StrongBox'ın sırları sızdırmasına, işlevsel güvenlik şartlarını atlamasına veya hassas kullanıcı verilerine erişimi başka şekilde etkinleştirmesine neden olan bir donanım yazılımı oluşturamayacağı anlamına gelir. IAR'yi uygulamanın önerilen yolu, donanım yazılımı güncellemelerine yalnızca birincil kullanıcı şifresi IAuthSecret HAL üzerinden sağlandığında izin vermektir.
9.11.3. Kimlik Bilgisi
Kimlik Bilgisi Sistemi, android.security.identity.* paketindeki tüm API'lerin uygulanmasıyla tanımlanır ve elde edilir. Bu API'ler, uygulama geliştiricilerin kullanıcı kimliği belgelerini saklamasına ve almasına olanak tanır. Cihaz uygulamaları:
- [C-SR-1] kimlik bilgisi sisteminin uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, Kimlik Bilgisi Sistemi'ni uyguluyorsa:
[C-1-1]
IdentityCredentialStore#getInstance()yönteminde null olmayan bir değer döndürülmelidir.[C-1-2] Kimlik Bilgisi Sistemi (ör.
android.security.identity.*API'leri), çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda güvenilir bir uygulamayla iletişim kuran kodla birlikte UYGULANMALIDIR. Güvenli izolasyon, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole edilmiş ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir.[C-1-3] Kimlik Bilgisi Sistemi'nin (ör.
android.security.identity.*API'leri) uygulanması için gereken şifreleme işlemleri TAMAMEN güvenilir uygulamada yapılmalıdır ve özel anahtar materyali, daha üst düzey API'ler (ör.createEphemeralKeyPair()yöntemi) tarafından özellikle gerekmedikçe asla izole edilmiş yürütme ortamından ayrılmamalıdır.[C-1-4] Güvenilen uygulama, Android hatalı davransa veya güvenliği ihlal edilmiş olsa bile güvenlik özelliklerinin etkilenmeyeceği (ör. erişim denetimi koşulları karşılanmadığı sürece kimlik bilgisi verileri yayınlanmaz, rastgele veriler için MAC'ler oluşturulamaz) şekilde uygulanmalıdır.
Yukarı akış Android Açık Kaynak Projesi, kimlik bilgisi sistemini uygulamak için kullanılabilecek güvenilir bir uygulamanın (libeic) referans uygulamasını sağlar.
9.12. Veri Silme
Tüm cihaz uygulamaları:
- [C-0-1] Kullanıcılara "Fabrika Verilerine Sıfırlama" işlemi yapabilecekleri bir mekanizma SAĞLANMALIDIR.
- [C-0-2] "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirilirken userdata dosya sistemindeki tüm veriler SİLİNMELİDİR.
- [C-0-3] "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirilirken veriler, NIST SP800-88 gibi ilgili sektör standartlarını karşılayacak şekilde SİLİNMELİDİR.
- [C-0-4] Birincil kullanıcının Cihaz Politikası Denetleyici uygulaması tarafından
DevicePolicyManager.wipeData()API'si çağrıldığında yukarıdaki"Fabrika Verilerine Sıfırlama" işlemi TETİKLENMELİDİR. - Yalnızca mantıksal veri silme işlemi yapan hızlı bir veri silme seçeneği SUNABİLİR.
9.13. Güvenli Önyükleme Modu
Android, kullanıcılara yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda başlatma olanağı sunan güvenli başlatma modu sağlar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcıya zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı sağlar.
Cihaz uygulamaları şunlardır:
- [C-SR-1] Güvenli Başlatma Modu'nun uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Güvenli Önyükleme Modu'nu uyguluyorsa:
[C-1-1] Üçüncü taraf uygulama bir cihaz politikası denetleyicisi değilse ve
UserManager.DISALLOW_SAFE_BOOTişaretini doğru olarak ayarlamamışsa cihazda yüklü üçüncü taraf uygulamaları tarafından kesintiye uğratılmayacak şekilde kullanıcıya güvenli modda başlatma seçeneği SUNULMALIDIR.[C-1-2] Güvenli Mod'da kullanıcının üçüncü taraf uygulamalarını kaldırmasına İZİN VERİLMELİDİR.
Kullanıcıya, normal başlatma işleminden farklı bir iş akışı kullanarak başlatma menüsünden güvenli modda başlatma seçeneği SUNULMALIDIR.
9.14. Otomotiv Araç Sistemi İzolasyonu
Android Automotive cihazların, CAN veri yolu gibi araç ağları üzerinden mesaj göndermek ve almak için araç HAL'sini kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.
Veri alışverişi, bu alt sistemlerle kötü amaçlı veya kasıtsız etkileşimi önlemek için Android çerçeve katmanlarının altında güvenlik özellikleri uygulanarak güvenli hale getirilebilir.
9.15. Abonelik Planları
"Abonelik planları", SubscriptionManager.setSubscriptionPlans() aracılığıyla bir mobil operatör tarafından sağlanan faturalandırma ilişkisi plan ayrıntılarını ifade eder.
Tüm cihaz uygulamaları:
- [C-0-1] Abonelik planlarını yalnızca başlangıçta sağlayan mobil operatör uygulamasına döndürmELİDİR.
- [C-0-2] Abonelik planlarını uzaktan yedeklememeli veya yüklememelidir.
- [C-0-3] YALNIZCA şu anda geçerli abonelik planları sağlayan mobil operatör uygulamasından gelenler gibi geçersiz kılmalara izin VERİLMELİDİR.
SubscriptionManager.setSubscriptionOverrideCongested(),
9.16. Uygulama Verilerini Taşıma
Cihaz uygulamaları, verileri bir cihazdan başka bir cihaza taşıma özelliğini içeriyorsa ve kopyaladığı uygulama verilerini, uygulama geliştirici tarafından manifestte android:fullBackupContent özelliği aracılığıyla yapılandırılanlarla sınırlamıyorsa:
- [C-1-1] Kullanıcının 9.11.1 Güvenli Kilit Ekranı ve Kimlik Doğrulama bölümünde açıklandığı gibi birincil kimlik doğrulama ayarlamadığı cihazlardan uygulama verilerinin aktarılması BAŞLATILMAMALIDIR.
- [C-1-2] Herhangi bir veri aktarılmadan önce kaynak cihazdaki birincil kimlik doğrulama güvenli bir şekilde onaylanmalı ve kaynak cihazdaki verilerin kopyalanması kullanıcı niyetiyle onaylanmalıdır.
- [C-1-3] Cihazdan cihaza geçişte hem kaynak cihazın hem de hedef cihazın meşru Android cihazlar olduğundan ve bootloader'ının kilitli olduğundan emin olmak için güvenlik anahtarı onayı KULLANILMALIDIR.
- [C-1-4] YALNIZCA uygulama verilerini hedef cihazdaki aynı uygulamaya (aynı paket adı VE imzalama sertifikasıyla) taşımalıdır.
[C-1-5] Kaynak cihazda, cihazdan cihaza veri taşıma işlemiyle veri taşındığını gösteren bir ibare ayarlar menüsünde GÖSTERİLMELİDİR. Kullanıcılar bu göstergeyi kaldırmamalıdır.
9.17. Android Sanallaştırma Çerçevesi
Android Virtualization Framework (AVF) API'leri (android.system.virtualmachine.*), uygulamaların yerel ikili dosyaları yük olarak yükleyen ve çalıştıran cihaz üzerinde sanal makineler (VM'ler), korumalı sanal makineler (pVM'ler) ve korumasız sanal makineler (non-pVM'ler) oluşturmasına olanak tanır.
Cihaz uygulamaları FEATURE_VIRTUALIZATION_FRAMEWORK değerini true olarak ayarlarsa:
[C-1-1] MUST ensure that
android.system.virtualmachine.VirtualMachineManager.getCapabilities()returns one of the following:CAPABILITY_PROTECTED_VMCAPABILITY_NON_PROTECTED_VMCAPABILITY_NON_PROTECTED_VM | CAPABILITY_PROTECTED_VM
9.18. Geliştirici Doğrulama
API düzeyi 36.1 veya daha yüksek olan cihaz uygulamaları:
- Uygulamaların bilinen bir geliştiriciden geldiğini onaylamak için geliştirici doğrulayıcı hizmeti desteği İÇEREBİLİR.
API düzeyi 36.1 veya daha yüksek olduğunu bildiren cihaz uygulamaları
ve config_developerVerificationServiceProviderPackageName içinde config.xml tanımlayarak bir geliştirici doğrulayıcı yapılandırın:
- [9.18/C-1-1] Hem yeni yüklemeler hem de mevcut uygulamalara yönelik güncellemeler dahil olmak üzere her uygulama paketi yüklemesi için yapılandırılmış
android.content.pm.verify.developer.DeveloperVerifierServiceişlevini çağırmalıdır.
API düzeyi 36.1 veya daha yüksek olan cihaz uygulamaları:
- MAY,
config_developerVerificationPolicyDelegatePackageNameiçindeconfig.xmltanımlayarak etkin politikayı ayarlamak için bir temsilci de yapılandırabilir.
Geliştirici doğrulayıcı yapılandırılmışsa cihaz uygulamaları:
- [9.18/C-2-1] YALNIZCA geliştirici doğrulayıcının veya yapılandırılmış temsilcisinin, yükleme politikasını
android.content.pm.PackageInstaller'da tanımlandığı şekilde ayarlamasına İZİN VERİLMELİDİR.
Bir doğrulayıcı, paket yükleme oturumu kapsamında çağrılırsa cihaz uygulamaları:
[9.18/C-3-1] Aşağıdaki durumlarda uygulama paketinin yüklenmesi ENGELLENMELİDİR:
Yükleme, geliştirici kimliği doğrulamasını geçemiyor.
Yükleme oturumu için geliştirici doğrulama politikası,
DEVELOPER_VERIFICATION_POLICY_NONEdışındaki herhangi bir değere ayarlanır.9.18/C-3-2 veya 9.18/C-3-3 maddeleri geçerli olmadığı sürece.
- [9.18/C-3-2] Aşağıdaki durumlarda politika veya doğrulama durumundan bağımsız olarak uygulama paketinin yüklenmesi ENGELLENMEMELİDİR:
- Paket, Android Debug Bridge (ADB) aracılığıyla yüklenir.
- Paket, yapılandırılmış geliştirici doğrulayıcı veya yükleyicisidir.
[9.18/C-3-3] Aşağıdaki koşulların tümü karşılandığında uygulama paketinin yüklenmesi ENGELLENMEMELİDİR:
Politika,
DEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_WARNveyaDEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_OPENolarak ayarlanmış.Doğrulama tamamlanmamış olarak bildirilir.
Yükleyici, kullanıcının
DEVELOPER_VERIFICATION_USER_RESPONSE_INSTALL_ANYWAYraporlayarak yüklemenin devam etmesini açıkça istediğini belirtir.
- Yönetilen bir cihazda cihaz sahibi veya yönetilen bir profilde profil sahibi tarafından başlatılan yüklemeler için politika ya da doğrulama durumundan bağımsız olarak uygulama paketinin yüklenmesine İZİN VEREBİLİR ancak 9.18/C-3-1'de belirtildiği gibi yüklemelerin engellenmesi ŞİDDETLE TAVSİYE EDİLİR.
10. Yazılım Uyumluluğu Testi
Cihaz uygulamaları, bu bölümde açıklanan tüm testleri GEÇMELİDİR. Ancak hiçbir yazılım test paketinin tamamen kapsamlı olmadığını unutmayın. Bu nedenle, cihaz uygulayıcıların Android Açık Kaynak Projesi'nden edinilebilen Android'in referans ve tercih edilen uygulamasında MÜMKÜN OLDUĞUNCA AZ DEĞİŞİKLİK YAPMASI ŞİDDETLE TAVSİYE EDİLİR. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklar oluşturan hataların ortaya çıkma riskini en aza indirir.
10.1. Compatibility Test Suite
Cihaz uygulamaları:
[C-0-1] Cihazdaki son gönderim yazılımı kullanılarak Android Açık Kaynak Projesi'nden edinilebilen Android Uyumluluk Test Paketi (CTS)'ni geçmelidir.
[C-0-2] CTS'de belirsizlik olması ve referans kaynak kodunun bölümlerinin yeniden uygulanması durumlarında uyumluluk SAĞLANMALIDIR.
CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Diğer yazılımlar gibi CTS de hatalar içerebilir. CTS, bu Uyumluluk Tanımı'ndan bağımsız olarak sürüm oluşturulacak ve Android 17 için CTS'nin birden fazla düzeltmesi yayınlanabilir.
Cihaz uygulamaları:
[C-0-3] Cihaz yazılımı tamamlandığında mevcut olan en son CTS sürümünü GEÇMELİDİR.
Android Open Source ağacındaki referans uygulamayı mümkün olduğunca çok kullanmalıdır.
10.2. CTS Doğrulayıcı
CTS Doğrulayıcı, Compatibility Test Suite'e dahildir ve kamera ile sensörlerin doğru çalışması gibi otomatik sistemle test edilemeyen işlevlerin test edilmesi için bir operatör tarafından çalıştırılması amaçlanmıştır.
Cihaz uygulamaları:
- [C-0-1] CTS doğrulayıcıdaki geçerli tüm testleri doğru şekilde çalıştırmalıdır.
CTS Verifier, isteğe bağlı olan bazı donanımlar da dahil olmak üzere birçok donanım türü için testler içerir.
Cihaz uygulamaları:
- [C-0-2] Sahip oldukları donanımla ilgili tüm testleri GEÇMELİDİR. Örneğin, bir cihazda ivmeölçer varsa CTS Verifier'daki İvmeölçer test senaryosunu DOĞRU şekilde yürütmelidir.
Bu Uyumluluk Tanımı Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test senaryoları atlanabilir veya çıkarılabilir.
- [C-0-2] Yukarıda belirtildiği gibi, her cihaz ve her derleme CTS Verifier'ı DOĞRU şekilde çalıştırmalıdır. Ancak birçok derleme çok benzer olduğundan cihaz uygulayıcıların, yalnızca önemsiz şekillerde farklılık gösteren derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Özellikle, CTS Verifier'ı geçen bir uygulamadan yalnızca dahil edilen yerel ayarlar, markalama vb. açısından farklılık gösteren cihaz uygulamaları CTS Verifier testini atlayabilir.
11. Güncellenebilir Yazılımlar
[C-0-1] Cihaz uygulamaları, sistem yazılımının tamamını değiştirecek bir mekanizma içermelidir. Mekanızmanın "canlı" yükseltme yapması gerekmez. Yani cihazın yeniden başlatılması GEREKEBİLİR. Cihazda önceden yüklenmiş yazılımın tamamının yerine geçebilmesi koşuluyla herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:
- Yeniden başlatma yoluyla çevrimdışı güncelleme içeren "kablosuz (OTA)" indirmeleri.
- Ana makine PC'sinden USB üzerinden "bağlı" güncellemeler.
- Yeniden başlatma ve çıkarılabilir depolama birimindeki bir dosyadan güncelleme yoluyla "çevrimdışı" güncellemeler.
[C-0-2] Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri desteklemelidir. Yani güncelleme mekanizması, uygulamaya ait gizli verileri ve uygulamada paylaşılan verileri KORUMALIDIR. Yukarı akış Android yazılımının bu koşulu karşılayan bir güncelleme mekanizması içerdiğini unutmayın.
[C-0-3] Güncellemenin tamamı imzalanmalı ve cihaz üzerindeki güncelleme mekanizması, güncellemeyi ve imzayı cihazda depolanan bir ortak anahtara göre doğrulamalıdır.
[C-SR-1] İmzalama mekanizmasının, güncellemeyi SHA-256 ile karma oluşturması ve ECDSA NIST P-256 kullanarak karmayı ortak anahtara göre doğrulaması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sınırsız veri bağlantısı desteği içeriyorsa:
- [C-1-1] Yeniden başlatma yoluyla çevrimdışı güncelleme ile OTA indirmelerini DESTEKLEMELİDİR.
Cihaz uygulamaları, OTA'dan sonra sistem görüntüsünün beklenen sonuçla ikili olarak aynı olduğunu DOĞRULAMALIDIR. Android 5.1'den beri eklenen, yukarı akış Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu şartı karşılar.
Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP, bu özelliği önyükleme denetimi HAL'sini kullanarak uygular.
Bir cihaz uygulamasında, yayınlandıktan sonra ancak Android Uyumluluk Ekibi ile istişare edilerek belirlenen makul ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa:
- [C-2-1] Cihaz uygulayıcısı, az önce açıklanan mekanizma uyarınca uygulanabilen bir yazılım güncellemesiyle hatayı DÜZELTMELİDİR.
Android, Cihaz Sahibi uygulamasına (varsa) sistem güncellemelerinin yüklenmesini kontrol etme olanağı tanıyan özellikler içerir. Cihazlar için sistem güncelleme alt sistemi android.software.device_admin'i bildiriyorsa:
[C-3-1] SystemUpdatePolicy sınıfında açıklanan davranış uygulanmalıdır.
12. Doküman değişiklik günlüğü
Android 16'dan itibaren ayrı olarak tutulan bir değişiklik günlüğü yoktur. Önceki sürümdeki tüm değişiklikler bu belgede vurgulanmıştır.
13. Bize Ulaşın
android-compatibility forumuna katılabilir, açıklama isteyebilir veya dokümanda yer almadığını düşündüğünüz sorunları gündeme getirebilirsiniz.