1. Giriş
Bu dokümanda, cihazların Android 14 ile uyumlu olması için karşılanması gereken şartlar açıklanmaktadır.
"ZORUNLU", "ZORUNLU OLMAMALIDIR", "GEREKLİ", "SHALL", "DEĞİLMELİ", "GEREKLİ", "KULLANILMAMALIDIR", "ÖNERİLİR", "OLASI" ve "İSTEĞE BAĞLI" ifadeleri, RFC2119'da tanımlanan IETF standardına göre kullanılır.
Bu belgede kullanıldığı gibi, "cihaz uygulayıcı" veya "uygulayıcı", Android 14 çalıştıran bir donanım/yazılım çözümü geliştiren bir kişi veya kuruluşu ifade eder. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Cihaz uygulamalarının Android 14 ile uyumlu olarak kabul edilmesi için bu Uyumluluk Tanımı'nda belirtilen gereksinimleri (referans yoluyla dahil edilen tüm belgeler dahil) karşılaması ZORUNLUDUR.
Bu tanımın veya 10. bölümde açıklanan yazılım testlerinin sessiz, muğlak ya da eksik olduğu durumlarda, mevcut uygulamalarla uyumluluğu sağlamak cihazı uygulayıcının sorumluluğundadır.
Bu nedenle, Android Açık Kaynak Projesi Android için hem referans hem de tercih edilen uygulamadır. Cihaz uygulayıcılarının, uygulamalarını Android Açık Kaynak Projesi'nde bulunan "yukarı akış" kaynak koduna mümkün olan en geniş ölçekte dayandırmaları ÖNEMLE ÖNERİLİR. Bazı bileşenler, varsayımsal olarak alternatif uygulamalarla değiştirilebilir. Ancak, yazılım testlerini geçmek önemli ölçüde zorlaşacağından, bu uygulamaya uymamanız ÖNEMLE ÖNERİLİR. Uyumluluk Test Paketi ve sonrasında, standart Android uygulamasıyla tam davranış uyumluluğu sağlamak, uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen değişikliklerinin ve değişikliklerinin bu belgede açıkça yasaklandığını unutmayın.
Bu belgede bağlantı verilen kaynakların çoğu doğrudan veya dolaylı olarak Android SDK'dan türetilmiştir ve söz konusu SDK'nın dokümanlarındaki bilgilerle işlevsel olarak aynı olacaktır. Bu Uyumluluk Tanımı veya Uyumluluk Test Paketi'nin, SDK belgelerine uymadığı durumlarda, SDK dokümanları güvenilir olarak kabul edilir. Bu belgede bağlantılı kaynaklarda sağlanan tüm teknik ayrıntılar, dahil etme işlemi sırasında bu Uyumluluk Tanımı'nın bir parçası olarak değerlendirilir.
1.1 Belge Yapısı
1.1.1. Cihaz Türüne Göre Koşullar
2. Bölüm, belirli bir cihaz türü için geçerli olan tüm gereksinimleri içerir. Bölüm 2'nin her alt bölümü belirli bir cihaz türüne ayrılmıştır.
Tüm Android cihaz uygulamaları için evrensel olarak geçerli olan diğer tüm gereksinimler, 2. Bölüm'den sonraki bölümlerde listelenmiştir. Bu şartlar, bu dokümanda "Temel Şartlar" olarak belirtilmiştir.
1.1.2. Gereklilik kimliği
Gereklilik kimliği, ZORUNLU şartlar için atanır.
- Kimlik yalnızca ZORUNLU koşulları için atanmıştır.
- Şiddetle ÖNERİLEN gereksinimler [SR] olarak işaretlenir ancak kimlik atanmaz.
- Kimlik şunlardan oluşur : Cihaz Türü Kimliği - Koşul Kimliği - Gereklilik Kimliği (ör. C-0-1).
Her kimlik aşağıda tanımlanmıştır:
- Cihaz türü kimliği (daha fazla bilgi için 2. Cihaz Türleri)
- C: Temel (Tüm Android cihaz uygulamalarında geçerli olan şartlar)
- H: Android Avuç İçi cihaz
- T: Android Televizyon cihazı
- C: Android Automotive uygulaması
- W: Android Watch uygulaması
- Sekme: Android Tablet uygulaması
- Koşul kimliği
- Gereksinim koşulsuz olduğunda bu kimlik 0 olarak ayarlanır.
- Gereksinim koşullu olduğunda, 1. koşul için 1 değeri atanır. Sayı, aynı bölüm ve aynı cihaz türünde 1'er artar.
- Gereksinim Kimliği
- Bu kimlik 1 ile başlar ve aynı bölüm ve aynı koşul içinde 1 birim artar.
1.1.3. Bölüm 2'deki gereklilik kimliği
Bölüm 2'deki Zorunlu Kimlikler iki bölümden oluşur. İlki, yukarıda açıklanan bir bölüm kimliğine karşılık gelir. İkinci bölüm, form faktörünü ve form faktörüne özel gereksinimi tanımlar.
bölüm kimliği ekleyin.
- Bölüm 2'deki kimlik şunlardan oluşur: Bölüm Kimliği / Cihaz Türü Kimliği - Durum Kimliği - Gereklilik 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, yedek işletim sistemleri veya alternatif çekirdek uygulaması dahil olmak üzere yazılım yığınının, 9. bölümde ve bu CDD'nin başka yerlerinde açıklandığı gibi güvenli bir ortamda yürütülmesi beklenir. Uygulama dağıtım ekosistemine göre daha iyi yerleşik bir sahip olan birkaç cihaz türü vardır.
Bu bölümde söz konusu cihaz türlerinin yanı sıra her cihaz türü için geçerli olan ek koşullar 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 gereksinimleri yine de karşılamalıdır.
2.1 Cihaz Yapılandırmaları
Cihaz türüne göre donanım yapılandırmasındaki önemli farklar için bu bölümde yer alan cihaza özel gereksinimlere bakın.
2.2. Elle Birlikte Kullanılabilen Gereksinimler
Android Avuç İçi Cihaz, genellikle elde tutularak kullanılan mp3 çalar, telefon veya tablet gibi Android cihaz uygulamasını ifade eder.
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa Avuç İçi olarak sınıflandırılır:
- Pil gibi hareketlilik sağlayan bir güç kaynağına sahip olmalısınız.
- Çapraz olarak 4 inç
3,3 inç (veya API düzeyi 29 veya önceki sürümlerde gönderilen cihaz uygulamaları için 2,5 inç)ile 8 inç aralığında fiziksel diyagonal ekran boyutuna sahip olmalıdır. - Dokunmatik ekranlı 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
Avuç içi cihaz uygulamaları:
- [7.1.1.1/H-0-1]
bu belgede açıklanan tüm gereksinimleri karşılayan en az bir tane Android uyumlu ekrana sahip olması gerekir.Kısa kenarda en az 2,2 inç ve uzun kenarda en az 3,4 inç. [7.1.1.3/H-SR-1] Kullanıcılara görüntü boyutunu (ekran yoğunluğu) değiştirme olanağı sağlamak üzere ÖNEMLE ÖNERİLİR.
[7.1.1.1/H-0-2] En az yerleşik ekranların en yüksek çözünürlüğü kadar büyük grafik arabelleklerin GPU bileşimini DESTEKLEMELİDİR.
Yeni koşullarla başlayın
[7.1.1.1/H-0-3]* Üçüncü taraf uygulamalar için sunulan her bir
UI_MODE_NORMAL
ekranının, kısa kenarı en az 2,2 inç ve uzun kenarı en az 3,4 inç olan, engellenmeyen bir fiziksel görüntüleme alanıyla eşlenmesi ZORUNLUDUR.[7.1.1.3/H-0-1]*
DENSITY_DEVICE_STABLE
değerinin, karşılık gelen ekranın gerçek fiziksel yoğunluğunun% 92'si veya daha büyük olacak şekilde ayarlanması ZORUNLUDUR.
Yeni şartları sonlandırma
Avuç içi cihaz uygulamaları, yazılımda ekran döndürmeyi destekliyorsa:
- [7.1.1.1/H-1-1]* üçüncü taraf uygulamaları için sunulan mantıksal ekranın kısa kenarlarında en az 2 inç, uzun kenarlarında ise en az 2,7 inç olması ZORUNLUDUR. Android API düzey 29 veya önceki sürümlerde gönderilen cihazlar bu şarttan muaf tutulabilir.
Avuç içi cihaz uygulamaları, yazılım ekranı döndürmeyi desteklemiyorsa şunlar:
- [7.1.1.1/H-2-1]* üçüncü taraf uygulamaları için sunulan mantıksal ekranın kısa kenarlarında en az 2,7 inç olması ZORUNLUDUR. Android API düzey 29 veya önceki sürümlerde gönderilen cihazlar bu şarttan muaf tutulabilir.
Avuç içi cihaz uygulamaları, Configuration.isScreenHdr()
üzerinden yüksek dinamik aralıklı 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_colorspace
veVK_EXT_hdr_metadata
uzantıları için desteğin reklamını YAPMALIDIR.
Avuç içi cihaz uygulamaları:
- [7.1.4.6/H-0-1] Cihazın, GPU profil oluşturma özelliğini bir sistem özelliği aracılığıyla destekleyip desteklemediğini
graphics.gpu.profiler.support
BİLDİRMELİDİR.
Avuç içi cihaz uygulamaları, bir sistem özelliği (graphics.gpu.profiler.support
) üzerinden destek verdiğini beyan ederse:
- [7.1.4.6/H-1-1] Perfetto belgelerinde tanımlanan GPU sayaçları ve GPU oluşturma aşamalarına yönelik şemaya uygun bir protobuf izlemesinin çıktısı olarak raporlanması ZORUNLUDUR.
- [7.1.4.6/H-1-2] gpu sayaç izleme paketi protokolünden yararlanarak cihazın GPU sayaçları için uyumlu değerleri Bildirin.
- [7.1.4.6/H-1-3] oluşturma aşaması izleme paketi protokolü uygulanarak cihazın GPU RenderStages değerleri için uyumlu değerler raporlanması ZORUNLUDUR.
- [7.1.4.6/H-1-4] power/gpu_frequency biçiminde belirtilen bir GPU Frekansı izleme noktası Bildirilmelidir.
Avuç içi cihaz uygulamaları:
- [7.1.5/H-0-1] yukarı akış Android açık kaynak kodu tarafından uygulandığı şekliyle eski uygulama uyumluluk modu için destek İÇERMELİDİR. Yani, cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİDİR ve uyumluluk modunun çalışma biçimini DEĞİŞTİRMEMELİDİR.
- [7.2.1/H-0-1] Üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek OLMALIDIR.
- [7.2.3/H-0-2] Geri işlevinin (
KEYCODE_BACK
) hem normal hem de uzun basma etkinliğini ön plan uygulamasına göndermesi ZORUNLUDUR. Bu etkinlikler sistem tarafından TÜKETİLMEMELİDİR ve Android cihazın dışında (ör. Android cihaza bağlanmış harici donanım klavyesi) tetiklenebilir. - [7.2.3/H-0-3], ana ekranı sağlayan Android uyumlu tüm ekranlarda Ana Ekran işlevini ZORUNLUDUR.
- [7.2.3/H-0-4] Android ile uyumlu tüm ekranlarda Geri işlevini ve Son Kullanılanlar işlevini Android ile uyumlu ekranların en az birinde sunması ZORUNLUDUR.
- [7.2.4/H-0-1] Dokunmatik ekran girişini DESTEKLEMELİDİR.
- [7.2.4/H-SR-1] Kullanıcı tarafından seçilen yardım uygulamasını, diğer bir deyişle VoiceEngagementService'i uygulayan uygulamayı veya
KEYCODE_MEDIA_PLAY_PAUSE
ya daKEYCODE_HEADSETHOOK
uzun basıldığında ön plan etkinliği bu uzun basma etkinliklerini işleyemiyorsaACTION_ASSIST
işlemini yapan bir etkinliği başlatması ÖNEMLE ÖNERİLİR. - [7.3.1/H-SR-1] 3 eksenli ivme ölçer içermesi ÖNEMLE ÖNERİLİR.
Avuç içi cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/H-1-1] en az 100 Hz'lik bir frekansa kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
Avuç içi cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve uygulamalara yeteneği android.hardware.location.gps
özellik bayrağı aracılığıyla bildiriyorsa:
- [7.3.3/H-2-1] GPS/GNSS kullanılarak hesaplanan bir konum henüz raporlanmamış olsa bile GNSS ölçümlerini bulunur bulunmaz raporlanmalıdır.
- [7.3.3/H-2-2] GNSS gerçek olmayan aralıklar ve sözde aralıklı hızların Bildirilmesi ZORUNLUDUR. Konum belirlendikten sonra açık gökyüzü koşullarında, sabit bir şekilde veya saniye başına 0,2 metreden daha düşük bir ivmeyle hareket ederken 20 metrelik bir sürede 20 metrelik bir sürede en az% 2 ile 0,5 arasındaki hızı hesaplamaya yeterlidir.
Avuç içi cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [7.3.4/H-3-1] en az 100 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [7.3.4/H-3-2] saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmesi ZORUNLUDUR.
Sesli arama yapabilen ve getPhoneType
içinde PHONE_TYPE_NONE
dışında herhangi bir değeri gösterebilen avuç içi cihaz uygulamaları:
- [7.3.8/H] Bir yakınlık sensörü İÇERMELİDİR.
Avuç içi cihaz uygulamaları:
- [7.3.11/H-SR-1] 6 serbestlik derecesine sahip poz sensörünü desteklemeleri için ÖNEMLE ÖNERİLİR.
- [7.4.3/H] Bluetooth ve Bluetooth LE desteği İÇERMELİDİR.
Cihazlar, PackageManager.FEATURE_WIFI_RTT
bildiriminde bulunarak PackageManager.FEATURE_WIFI_AWARE
ve Kablosuz Konum (Kablosuz Gidiş Dönüş Süresi - RTT) beyan ederek Kablosuz Komşu Ağ İletişimi (NAN) protokolünü destekliyorsa:
[7,4, 2,5/H-1-1] t-0 m-0 MHz bant genişliği ve t-0 m-0 MHz bant genişliği için t-0 m aralığı, t-0 m-0 MHz, t-0-m-8 MHz, 68. yüzde birlik dilimde (Kümülatif Dağıtım İşlevi ile hesaplanmıştır) 160 MHz bant genişliğinde +/-1 metre içinde gözlemlenen aralığı; 68. yüzde birlik yüzdelikte 80 MHz bant genişliğinde +/-2 metre, +/-4 m.
[7,4.2,5/H-SR-1] API-0 MHz-0 MHz bant genişliğinde yüzde 0, 0 MHz bant genişliği olarak ÖNERİLİR.
Bulunma Kalibrasyonu bölümünde belirtilen ölçüm kurulumu adımlarını uygulamanız ÖNEMLE ÖNERİLİR.
Yeni koşullarla başlayın
Avuç içi cihaz uygulamalarında FEATURE_BLUETOOTH_LE
beyan ediliyorsa:
- [7.4.3/H-1-3],
ADVERTISE_TX_POWER_HIGH
konumunda iletim yapan bir referans cihazdan 1 metre uzakta BLE RSSI'nin -50 dBm +/-15 dB olduğundan emin olmak için Rx ofsetini ölçmeli ve telafi etmelidir. - [7.4.3/H-1-4], 1 m mesafedeki bir referans cihazdan tarama yaparken ve
ADVERTISE_TX_POWER_HIGH
konumunda iletim yaparken ortanca BLE RSSI'nin -50 dBm +/-15 dB olduğundan emin olmak için Tx ofsetini ölçmesi ve telafi etmesi gerekir.
Yeni şartları sonlandırma
Avuç içi cihaz uygulamaları, CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
kullanımını 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 derece arasında olması ZORUNLUDUR.
Avuç içi cihaz uygulamaları:
- [7.6.1/H-0-1], uygulama özel verileri için en az 4 GB kalıcı depolama alanına ("/veri" bölümü olarak da bilinir) SAHİP OLMALIDIR.
- [7.6.1/H-0-2], çekirdekte ve kullanıcı alanında 1 GB'tan az bellek olduğunda
ActivityManager.isLowRamDevice()
için "true" değeri döndürülmesi ZORUNLUDUR.
Avuç içi cihaz uygulamaları yalnızca 32 bit ABI desteklediğini belirtiyorsa:
[7.6.1/H-1-1] Varsayılan ekranda qHD'ye kadar (ör. FWVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 416 MB OLMALIDIR.
[7.6.1/H-2-1] Varsayılan ekran HD+ çözünürlüğe kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 592 MB OLMALIDIR.
[7.6.1/H-3-1] Varsayılan ekranda FHD'ye kadar (ör. WSXGA+) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 896 MB ZORUNLUDUR.
[7.6.1/H-4-1] Varsayılan ekran QHD'ye kadar (ör.QWXGA) çerçeve arabelleği çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 1. 344 MB OLMALIDIR.
Avuç içi cihaz uygulamaları, 64 bit ABI'yı (32 bit ABI olan veya olmayan) desteklediğini belirtiyorsa:
[7.6.1/H-5-1] Varsayılan ekran qHD'ye kadar (ör. FWVGA) kare arabellek çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 816 MB OLMALIDIR.
[7.6.1/H-6-1] Varsayılan ekran HD+ çözünürlüğe kadar (ör. HD, WSVGA) kare arabellek çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 944 MB OLMALIDIR.
[7.6.1/H-7-1] Varsayılan ekran FHD'ye kadar (ör.WSXGA+) kare arabellek çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 1. 280 MB ZORUNLUDUR.
[7.6.1/H-8-1] Varsayılan ekran QHD'ye kadar (ör.QWXGA) kare arabellek çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 1. 824 MB OLMALIDIR.
Yukarıdaki "çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek", cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine zaten ayrılmış belleğe ek olarak sağlanan bellek alanını ifade eder.
Avuç içi cihaz uygulamaları, çekirdek ve kullanıcı alanı tarafından kullanılabilir 1 GB'tan az veya 1 GB'a eşit bellek içeriyorsa:
- [7.6.1/H-9-1] uyarınca, özellik bayrağı
android.hardware.ram.low
beyan edilmelidir. - [7.6.1/H-9-2], uygulama özel verileri (diğer adıyla "/veri" bölümü) için en az 1,1 GB kalıcı depolama alanına sahip olmalıdır.
Avuç içi cihaz uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan fazla bellek içeriyorsa:
- [7.6.1/H-10-1] uygulamanın özel verileri için en az 4 GB kalıcı depolama alanının (diğer adıyla "/veri" bölümü) kullanılabilmesi ZORUNLUDUR.
- Özellik bayrağını
android.hardware.ram.normal
BELİRTMELİDİR.
Avuç içi cihaz uygulamaları, çekirdek ve kullanıcı alanı için kullanılabilir durumda 2 GB'tan büyük veya 4 GB'tan az bellek içeriyorsa bunlar:
- [7.6.1/H-SR-1] Yalnızca 32 bit kullanıcı alanını (hem uygulamalar hem de sistem kodu) desteklemeleri için ÖNEMLE ÖNERİLİR
Avuç içi cihaz uygulamaları, çekirdek ve kullanıcı alanı için 2 GB'tan az bellek içeriyorsa:
- [7.6.1/H-1-1] yalnızca 32 bit ABI'leri DESTEKLEMELİDİR.
Avuç içi cihaz uygulamaları:
- [7.6.2/H-0-1], 1 GiB'tan küçük bir uygulama paylaşılan depolama alanı SAĞLAMAMALIDIR.
- [7.7.1/H] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
Avuç içi cihaz uygulamalarında çevre birimi modunu destekleyen bir USB bağlantı noktası varsa bunlar:
- [7.7.1/H-1-1], Android Open Accessory (AOA) API'sini uygulaması ZORUNLUDUR.
Avuç içi cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.2/H-1-1], Android SDK dokümanlarında belirtildiği gibi USB ses sınıfının uygulanması ZORUNLUDUR.
Avuç içi cihaz uygulamaları:
- [7.8.1/H-0-1] mikrofon İÇERMELİDİR.
- [7.8.2/H-0-1] bir ses çıkışının olması ve
android.hardware.audio.output
olarak belirtilmesi ZORUNLUDUR.
Avuç içi cihaz uygulamaları, VR modunu desteklemek için tüm performans gereksinimlerini karşılayabiliyor ve destek sağlıyorsa:
- [7.9.1/H-1-1] için
android.hardware.vr.high_performance
özellik bayrağı beyan edilmelidir. - [7.9.1/H-1-2],
android.app.Activity#setVrModeEnabled
üzerinden VR uygulamaları tarafından etkinleştirilebilen,android.service.vr.VrListenerService
uygulamasını uygulayan bir uygulama içermesi ZORUNLUDUR.
Avuç içi cihaz uygulamaları, ana makine modunda bir veya daha fazla USB-C bağlantı noktası ve uygulama (USB ses sınıfı) içeriyorsa bölüm 7.7.2'deki gereksinimlere ek olarak şunlar da geçerli olur:
- [7.8.2.2/H-1-1] HID kodlarının aşağıdaki yazılım eşlemesini sağlaması ZORUNLUDUR:
İşlev | Eşleştirmeler | Bağlam | Davranış |
---|---|---|---|
CEVAP | HID kullanım sayfası: 0x0C HID kullanımı: 0x0CD Çekirdek anahtarı: KEY_PLAYPAUSE Android anahtarı: KEYCODE_MEDIA_PLAY_PAUSE |
Medya oynatma | Giriş: Kısa basma Çıkış: Oynat veya duraklat |
Giriş: Uzun basma Çıkış: Sesli komutu başlat Gönderir: Cihaz kilitli veya ekranı kapalıysa android.speech.action.VOICE_SEARCH_HANDS_FREE . Aksi takdirde android.speech.RecognizerIntent.ACTION_WEB_SEARCH gönderir |
|||
Gelen çağrı | Giriş: Kısa basma Çıkış: Çağrıyı kabul et |
||
Giriş: Uzun basma Çıkış: Çağrıyı reddedin |
|||
Devam eden çağrı | Giriş: Kısa basma Çıkış: Çağrıyı sonlandır |
||
Giriş: Uzun bas Çıkış: Mikrofonun sesini kapat veya aç |
|||
Mr | HID kullanım sayfası: 0x0C HID kullanımı: 0x0E9 Çekirdek anahtarı: KEY_VOLUMEUP Android anahtarı: VOLUME_UP |
Medya oynatma, Devam eden çağrı | Giriş: Kısa veya uzun basma Çıkış: Sistemin veya mikrofonlu kulaklığın sesini artırır |
C | HID kullanım sayfası: 0x0C HID kullanımı: 0x0EA Çekirdek anahtarı: KEY_VOLUMEDOWN Android anahtarı: VOLUME_DOWN |
Medya oynatma, Devam eden çağrı | Giriş: Kısa veya uzun basma Çıkış: Sistemin veya mikrofonlu kulaklığın sesini azaltır |
D | HID kullanım sayfası: 0x0C HID kullanımı: 0x0CF Çekirdek anahtarı: KEY_VOICECOMMAND Android anahtarı: KEYCODE_VOICE_ASSIST |
Tümü. Herhangi bir durumda tetiklenebilir. | Giriş: Kısa veya uzun basma Çıkış: Sesli komutu başlat |
- [7.8.2.2/H-1-2], fiş takılıyken ACTION_HEADSET_PLUG'u tetiklemelidir; ancak sadece USB ses arayüzleri ve uç noktalar, bağlanılan terminalin türünü belirlemek için doğru şekilde numaralandırıldıktan sonra yapılır.
USB ses terminali türleri 0x0302 algılandığında:
- [7.8.2.2/H-2-1] "Mikrofon" ekstra 0 değerine ayarlanmış olarak ACTION_HEADSET_PLUG Niyetini yayınlaması ZORUNLUDUR.
USB ses terminali türleri 0x0402 algılandığında:
- [7.8.2.2/H-3-1] "Mikrofon" ekstra 1 değerine ayarlanmış şekilde ACTION_HEADSET_PLUG Intent'ini yayınlaması ZORUNLUDUR.
USB çevre birimi bağlıyken API AudioManager.getDevices() çağrıldığında:
[7.8.2.2/H-4-1]; AudioDeviceInfo.TYPE_USB_HEADSET türünde bir cihaz ve USB ses terminali türü alanı 0x0302 ise isSink() türünde bir cihaz LİSTESİNDE OLMALIDIR.
[7.8.2.2/H-4-2] AudioDeviceInfo.TYPE_USB_HEADSET ve USB ses terminali tür alanı 0x0402 ise isSink() türünde bir cihaz LİSTELEMELİDİR.
[7.8.2.2/H-4-3] USB ses terminali tür alanı 0x0402 ise AudioDeviceInfo.TYPE_USB_HEADSET ve role isSource() türünde bir cihaz LİSTESİNDE OLMALIDIR.
[7.8.2.2/H-4-4] AudioDeviceInfo.TYPE_USB_DEVICE türünde bir cihaz ve USB ses terminali türü alanı 0x603 ise isSink() rolü LİSTELENMELİDİR.
[7.8.2.2/H-4-5] AudioDeviceInfo.TYPE_USB_DEVICE türünde bir cihaz ve USB ses terminali tür alanı 0x604 ise role isSource() OLMALIDIR.
[7.8.2.2/H-4-6] AudioDeviceInfo.TYPE_USB_DEVICE türünde bir cihaz ve USB ses terminali türü alanı 0x400 ise isSink() türünde bir cihaz LİSTESİNDE OLMALIDIR.
[7.8.2.2/H-4-7] AudioDeviceInfo.TYPE_USB_DEVICE türünde bir cihaz ve USB ses terminali tür alanı 0x400 ise role isSource() OLMALIDIR.
[7.8.2.2/H-SR-1] USB-C ses çevre birimi bağlandıktan sonra, USB tanımlayıcılarının numaralandırılması, terminal türlerini ve ACTION_HEADSET_PLUG yayın amacını 1.000 milisaniyeden kısa bir sürede tanımlamak için ÖNEMLE ÖNERİLİR.
Avuç içi cihaz uygulamalarında android.hardware.audio.output
ve
android.hardware.microphone
beyan ediliyorsa bunlar:
[5.6/H-1-1] "Hoparlörden mikrofona", 3,5 milimetre geri döngü adaptörü (destekleniyorsa), USB üzerinden ortalama Mutlak Sapmanın 30 ms'den az olmasıyla birlikte 300 milisaniye veya 5'ten az bir Ortalama Sürekli Gidiş Dönüş gecikmesinin olması ZORUNLUDUR.
[5.6/H-1-2] Dokunma tonlama süresinin ortalama 300 milisaniye veya hoparlörden mikrofona veri yolunda en az 5 ölçümden daha az olması ZORUNLUDUR.
Avuç içi cihaz uygulamaları en az bir dokunma teknolojisi etkinleştirici içeriyorsa:
- [7.10/H]* Eksantrik dönen kütle (ERM) dokunsal aktüatör (titreşim) KULLANMAMALIDIR.
- [7.10/H]* Net dokunma teknolojisi için android.view.HapticFeedbackConstants'ı yani CLOCK_TICK, CONTEXT_TIK, KEYBOARD_PRESS, KEYBOARD_RELEASE, KEYBOARD_RELEASE, KEYBOARD_TAP, TEXT_LONG_PREVISS, KEYBOARD_TAP
- [7.10/H]* android.os.VibrationEffect'te
net dokunma teknolojisi için tüm herkese açık sabitleri (<HU_TICK, EF_TIK, EF_HEAVY_TIK ve
EF_DOUBLE_TIKLAMA)
hem de zengin dokunma teknolojisiyle
PRIMITIVE_*
uygulanabilir herkese açık tüm sabit değerler LOW_TICK ve SPIN gibi bu temel öğelerden bazıları, yalnızca titreşimin nispeten düşük frekansları destekleyebildiği durumlarda uygulanabilir. - [7.10/H]* android.view.HapticFeedbackConstants'taki herkese açık sabit değerleri önerilen android.os.VibrationEffect sabitleriyle, karşılık gelen genlik ilişkileriyle eşleme rehberine uymalısınız.
- [7.10/H]* createOneShot() ve createWaveform() API'leri için kalite değerlendirmesini TAKİP ETMELİDİR.
- [7.10/H]* Herkese açık android.os.Vibrator.hasAmplitudeControl() API sonucunun vibratörün özelliklerini doğru şekilde yansıttığının doğrulanması GEREKİR.
- [7.10/H]* Aktüatörün yerleşiminin genellikle cihazın ellerle dokunulduğu veya tutulduğu yerin yakınına konması gerekir.
Doğrusal rezonant aktüatör (LRA), kütlenin istenen hareket yönünde çevrildiği baskın rezonant frekansa sahip tek kütleli bir yay sistemidir.
Avuç içi cihaz uygulamaları en az bir genel amaçlı 7.10 doğrusal rezonant aktüatörü içeriyorsa:
Yeni koşullarla başlayın
- [7.10/H] Aktüatörün yerleşiminin genellikle cihazın elleriyle tutulduğu veya dokunulan yerin yakınına yerleştirilmesi GEREKİR.
Yeni şartları sonlandırma
- [7.10/H]
Dokunmatik aktüatörün, cihazın doğal
dikeyyönünün X ekseninde (sol-sağ) hareket etmesi GEREKİR.
Avuç içi cihaz uygulamalarında, X ekseni doğrusal rezonant aktüatör (LRA) olan genel amaçlı bir dokunma aktüatörü (LRA) varsa:
- [7.10/H] X ekseni LRA'nın rezonans frekansı 200 Hz'in altında OLMALIDIR.
Avuç içi cihaz uygulamaları, dokunsal sabit değer eşlemesini takip ediyorsa:
- [7.10/H]* android.os.Vibrator.areAllEffectsSupported() ve android.os.Vibrator.arePrimitivesSupported() API'lerini çalıştırarak uygulama durumunu doğrulamanız GEREKİR.
[7.10/H]* Dokunsal sabitler için kalite değerlendirmesi YAPILMALIDIR.
[7.10/H]* Sabit değerler için uygulama kılavuzunda açıklandığı şekilde, desteklenmeyen temel öğeler için yedek yapılandırmasını doğrulayıp güncellemeniz GEREKİR.
2.2.2. Multimedya
Avuç içi cihaz uygulamalarının, aşağıdaki ses kodlama ve kod çözme biçimlerini desteklemesi ve bunları üçüncü taraf uygulamalarının kullanımına sunması ZORUNLUDUR:
- [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)
Avuç içi cihaz uygulamalarının aşağıdaki video kodlama biçimlerini desteklemesi ve bunları üçüncü taraf uygulamalarının kullanımına sunması ZORUNLUDUR:
Avuç içi cihaz uygulamalarının, aşağıdaki video kod çözme biçimlerini desteklemesi ve bunları üçüncü taraf uygulamalarının kullanımına sunması ZORUNLUDUR:
2.2.3. Yazılım
Avuç içi cihaz uygulamaları:
- [3.2.3.1/H-0-1] SDK belgelerinde açıklandığı gibi
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
,ACTION_OPEN_DOCUMENT_TREE
veACTION_CREATE_DOCUMENT
amaçlarını işleyen ve kullanıcıyaDocumentsProvider
DocumentsProvider
DocumentsProvider
API'yi kullanarak belge sağlayıcı verilerine erişebilmesi için olanak sağlayan bir uygulamanın olması ZORUNLUDUR. - [3.2.3.1/H-0-2]* Burada listelenen aşağıdaki uygulama amaçları tarafından tanımlanan genel amaç filtre kalıpları için bir veya daha fazla uygulamanın veya hizmet bileşeninin intent işleyici ile önceden yüklenmesi ZORUNLUDUR.
- [3.2.3.1/H-SR-1] E-posta gönderme ACTION_SENDTO veya ACTION_SEND ya da ACTION_SEND_MULTIPLE isteklerini işleyebilen bir e-posta uygulamasının önceden yüklenmesi ÖNEMLE ÖNERİLİR.
- [3.4.1/H-0-1],
android.webkit.Webview
API'nin tam olarak uygulanması ZORUNLUDUR. - [3.4.2/H-0-1] Genel kullanıcının web'e göz atması için bağımsız bir Tarayıcı uygulaması İÇERMELİDİR.
- [3.8.1/H-SR-1] Kısayolların, widget'ların ve widgetFeatures'ın uygulama içinde sabitlenmesini destekleyen varsayılan bir başlatıcı uygulamanız için ÖNEMLE ÖNERİLİR.
- [3.8.1/H-SR-2] Üçüncü taraf uygulamaları tarafından Kısayol Yöneticisi API'si üzerinden sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcının uygulanması ÖNEMLE ÖNERİLİR.
- [3.8.1/H-SR-3] Uygulama simgeleri için rozet gösteren varsayılan bir başlatıcı uygulaması eklemeniz ÖNEMLE ÖNERİLİR.
- [3.8.2/H-SR-1] Üçüncü taraf uygulama widget'larını desteklemesi için ÖNEMLE ÖNERİLİR.
- [3.8.3/H-0-1] Üçüncü taraf uygulamalarının, kullanıcıları önemli etkinlikler hakkında
Notification
veNotificationManager
API sınıfları aracılığıyla bilgilendirmesine izin verilmesi ZORUNLUDUR. - [3.8.3/H-0-2] zengin bildirimleri DESTEKLEMELİDİR.
- [3.8.3/H-0-3] uyarı bildirimlerini DESTEKLEMELİDİR.
- [3.8.3/H-0-4] Kullanıcının, AOSP'de uygulandığı şekilde işlem düğmeleri veya kontrol paneli aracılığıyla bildirimleri doğrudan kontrol edebilmesini (ör. yanıtlama, erteleme, kapatma, engelleme) sağlayan bir bildirim gölgesi içermesi ZORUNLUDUR.
- [3.8.3/H-0-5],
RemoteInput.Builder setChoices()
aracılığıyla sağlanan seçenekleri bildirim gölgesinde GÖRÜNTÜLEMELİDİR. - [3.8.3/H-SR-1]
RemoteInput.Builder setChoices()
aracılığıyla sağlanan ilk seçeneğin ek kullanıcı etkileşimi olmadan bildirim gölgesinde gösterilmesi ÖNEMLE ÖNERİ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çenekleri bildirim gölgesinde görüntülemesi ÖNEMLE ÖNERİLİR. - [3.8.3.1/H-SR-1]
Notification.Action.Builder.setContextual
'in,Notification.Remoteinput.Builder.setChoices
tarafından gösterilen yanıtlarla satır içindetrue
olarak ayarlandığı işlemleri görüntülemesi ÖNEMLE ÖNERİLİR. - [3.8.4/H-SR-1] Destek işlemini işlemesi için cihaza bir asistanın uygulanması ÖNEMLE ÖNERİLİR.
Avuç içi cihaz uygulamaları MediaStyle bildirimlerini destekliyorsa:
- [3.8.3.1/H-SR-2] Bir uygulama
MediaSession
jetonuylaMediaStyle
bildirimi yayınladığında kullanıcıların sistem kullanıcı arayüzünden erişilen uygun medya rotaları (ör. Bluetooth cihazları veMediaRouter2Manager
'a sağlanan rotalar) arasında geçiş yapmalarına olanak tanıyan bir kullanıcıya olanak sağlamak için ÖNEMLE ÖNERİLİR (örneğin, çıkış değiştirici).
Yeni koşullarla başlayın
7.2.3 bölümünde ayrıntılı olarak açıklandığı şekilde son kullanılanlar işlevi gezinme tuşunu içeren cihaz uygulamaları arayüzü değiştirirse:
- [3.8.3/H-1-1] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği değiştirebilmesi için bir ayarlar menüsü sağlamalısınız.
Yeni şartları sonlandırma
Avuç içi cihaz uygulamaları, Destek İşlemi'ni destekliyorsa:
- [3.8.4/H-SR-2] Destek uygulamasını bölüm 7.2.3'te açıklandığı şekilde başlatmak için belirtilen etkileşim olarak
HOME
tuşuna uzun basmanın kullanılması ÖNEMLE ÖNERİLİR. Kullanıcının seçtiği yardım uygulamasını, diğer bir deyişleVoiceInteractionService
'i uygulayan bir uygulamayı veyaACTION_ASSIST
amacını işleyen bir etkinliği başlatması ZORUNLUDUR.
Avuç içi cihaz uygulamaları conversation notifications
'i destekliyor ve bunları uyarı ve sessiz görüşme dışı bildirimlerden 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ç görüşme dışı bildirimlerden önce görüşme bildirimlerini görüntülemelidir.
Android Avuç içi cihaz uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/H-1-1], Medya Bildirim Şablonu da dahil olmak üzere Kilit Ekranı Bildirimleri'nin görüntülenmesi ZORUNLUDUR.
Avuç içi 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 tümünü UYGULAMALIDIR.
Avuç içi cihaz uygulamaları ControlsProviderService
ve Control
API desteği içeriyorsa ve üçüncü taraf uygulamaların cihaz denetimlerini yayınlamasına izin veriyorsa:
- [3.8.16/H-1-1], özellik bayrağını
android.software.controls
beyan etmeli vetrue
olarak ayarlamalıdır. - [3.8.16/H-1-2] Bir kullanıcıya,
ControlsProviderService
veControl
API'ler 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 imkanı ZORUNLUDUR. - [3.8.16/H-1-3] Varsayılan bir Başlatıcı'dan gelen üç etkileşimde bu kullanıcıya erişim sağlaması ZORUNLUDUR.
[3.8.16/H-1-4]
ControlsProviderService
API'si aracılığıyla kontrol sağlayan her bir üçüncü taraf uygulamasının adı ve simgesini veControl
API'leri tarafından sağlanan belirtilen alanları bu kullanıcıda doğru bir şekilde OLUŞTURMALIDIR.[3.8.16/H-1-5]; kullanıcıya, uygulamaya atanmış kimlik doğrulama amaçlı cihaz denetimlerini,
ControlsProviderService
veControl
Control.isAuthRequired
API aracılığıyla üçüncü taraf uygulamalar tarafından kaydedilen kontrollerin kapsamı dışında kalmayı seçmesi ZORUNLUDUR.
Yeni koşullarla başlayın
- [3.8.16/H-1-6] Cihaz uygulamalarının, kullanıcıya sunduğu olanakları aşağıdaki şekilde doğru şekilde oluşturması ZORUNLUDUR:
- Cihaz
config_supportsMultiWindow=true
politikasını ayarladıysa ve uygulama,ControlsProviderService
beyanında geçerli bir etkinliğin ComponentName değeri dahil olmak üzere (API tarafından tanımlandığı şekilde) meta veriMETA_DATA_PANEL_ACTIVITY
beyanında bulunuyorsa uygulamanın söz konusu etkinliği bu kullanıcının sağladığı kapasiteye yerleştirmesi GEREKİR. - Uygulama, meta veri
META_DATA_PANEL_ACTIVITY
beyanında bulunmuyorsa belirtilen alanları ve Control API'leri tarafından sağlanan tüm belirtilen alanlarıControlsProviderService
API'si tarafından sağlandığı şekilde OLUŞTURMALIDIR.
- Cihaz
- [3.8.16/H-1-7] Uygulama, meta verileri
META_DATA_PANEL_ACTIVITY
beyan ederse yerleştirilmiş etkinliği başlatırkenEXTRA_LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS
kullanılarak [3.8.16/H-1-5] bölümünde tanımlanan ayarın değerini iletmesi ZORUNLUDUR.
Yeni şartları sonlandırma
Öte yandan, Avuç içi cihaz uygulamalarında bu tür denetimler uygulanmazsa şunlar:
- [3.8.16/H-2-1],
ControlsProviderService
veControl
API'leri içinnull
adresini bildirmelidir. - [3.8.16/H-2-2], özellik bayrağını
android.software.controls
beyan etmeli vefalse
olarak ayarlamalıdır.
Avuç içi cihaz uygulamaları kilit görevi modunda çalışmıyorsa içerik panoya kopyalandığında:
- [3.8.17/H-1-1], kullanıcıya verilerin panoya kopyalandığına dair bir onay sunması ZORUNLUDUR (ör. "İçerik kopyalandı." şeklinde bir küçük resim veya uyarı). Ayrıca, burada pano verilerinin cihazlar arasında senkronize edilip edilmeyeceğini belirten bir uyarı da sunulmalıdır.
Avuç içi 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şlevlerine benzer veya bunları aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ÖNERİLİR.
- [3.11/H-0-1] üçüncü taraf TTS motorlarının yüklenmesini DESTEKLEMELİDİR.
- [3.11/H-SR-1] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermesi ÖNEMLE ÖNERİLİR.
- [3.13/H-SR-1] Bir Hızlı Ayarlar kullanıcı arayüzü bileşeni eklemeniz ÖNEMLE ÖNERİLİR.
Android mobil cihaz uygulamalarında FEATURE_BLUETOOTH
veya FEATURE_WIFI
desteği beyan ediliyorsa bunlar:
- [3.16/H-1-1], tamamlayıcı cihaz eşleme özelliğini DESTEKLEMELİDİR.
Gezinme işlevi ekranda gösterilen, harekete dayalı bir işlem olarak sağlanırsa:
- [7.2.3/H] Ana ekran işlevi için hareket tanıma bölgesinin yüksekliği, ekranın alt kısmından 32 dp'den daha yüksek olmamalıdır.
Avuç içi cihaz uygulamaları, ekranın sol ve sağ kenarlarındaki herhangi bir yerden hareket olarak bir gezinme işlevi sağlıyorsa:
- [7.2.3/H-0-1] Gezinme işlevinin hareket alanının her bir kenarda genişliği 40 dp'den az olmalıdır. Hareket alanının varsayılan genişliği 24 dp olmalıdır.
Avuç içi cihaz uygulamaları, güvenli kilit ekranını destekliyorsa ve çekirdek ile kullanıcı alanı için kullanılabilir durumda 2 GB'tan fazla veya 2 GB'a eşit belleğe sahipse:
- [3.9/H-1-2], yönetilen profillerin desteğini
android.software.managed_users
özellik bayrağı ile bildirmesi ZORUNLUDUR.
Android avuç içi cihaz uygulamaları, kamera desteğini android.hardware.camera.any
üzerinden beyan ederse:
- [7.5.4/H-1-1],
android.media.action.STILL_IMAGE_CAMERA
veandroid.media.action.STILL_IMAGE_CAMERA_SECURE
amacını dikkate almalı ve kamerayı SDK'da açıklandığı gibi hareketsiz görüntü modunda başlatmalıdır. - [7.5.4/H-1-2],
android.media.action.VIDEO_CAMERA
tarafından SDK'da açıklandığı şekilde kamerayı video modunda başlatma niyetine uygun hareket edilmelidir.
Cihaz uygulamasının ayarlar uygulaması, etkinlik yerleştirme özelliğini kullanarak bölme işlevi uyguluyorsa:
- [3.2.3.1/ H-1-1], bölme işlevi açıkken Ayarlar#ACTION_SETTINGS_INSTALL_DEEP_LINK_ACTIVITY amacını işleyen bir etkinliğe sahip OLMALIDIR. Etkinliğin
android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK
tarafından korunması ZORUNLUDUR ve Settings#OVER_SETTINGS_INSTALLDED_DEEP_LINK_INTENT_URI adresinden ayrıştırılan Intent'in etkinliğini başlatması ZORUNLUDUR.
Yeni koşullarla başlayın
Cihaz uygulamaları, kullanıcıların herhangi bir türde arama yapmasına olanak tanıyorsa
- [7.4.1.2/H-0-1],
android.software.telecom
özellik bayrağını beyan etmek ZORUNLUDUR. - [7.4.1.2/H-0-2] telekom çerçevesinin uygulanması ZORUNLUDUR.
Yeni şartları sonlandırma
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 gerçekleşmemelidir ve saniyede 1 karenin altında OLMALIDIR.
- [8.1/H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları, Android Uyumluluk Test Paketi (CTS) tarafından 36 saniyeden kısa bir süre içinde tanımlandığı şekilde 10.000 liste girişinden oluşan bir listeyi kaydırarak düşük gecikmeli bir kullanıcı deneyimi sunmalıdır.
- [8.1/H-0-3] Görev değiştirme. Birden fazla uygulama kullanıma sunulduğunda, zaten çalışmakta olan bir uygulamayı başlatıldıktan sonra yeniden başlatmak 1 saniyeden kısa sürer.
Avuç içi cihaz uygulamaları:
- [8.2/H-0-1] en az 5 MB/sn'lik sıralı yazma performansı sağlaması ZORUNLUDUR.
- [8.2/H-0-2] en az 0,5 MB/sn'lik rastgele bir yazma performansı sağlaması ZORUNLUDUR.
- [8.2/H-0-3] en az 15 MB/sn'lik sıralı okuma performansı sağlaması ZORUNLUDUR.
- [8.2/H-0-4] en az 3,5 MB/sn'lik rastgele bir okuma performansı sağlaması ZORUNLUDUR.
Avuç içi cihaz uygulamaları, AOSP'ye dahil olan cihaz güç yönetimini iyileştirecek veya AOSP'deki özellikleri genişletecek özellikler içeriyorsa bunlar:
- [8.3/H-1-1], pil tasarrufu özelliğini etkinleştirmek ve devre dışı bırakmak için kullanıcıya destek sağlaması GEREKİR.
- [8.3/H-1-2], Uygulama Bekletme ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya gerekli parayı sunmanız ZORUNLUDUR.
Avuç içi cihaz uygulamaları:
- [8.4/H-0-1] Android Açık Kaynak Projesi sitesinde belirtildiği üzere, her bir donanım bileşeni için mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili SAĞLANMALIDIR.
- [8.4/H-0-2], tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden bildirmelidir.
- [8.4/H-0-3], her işlemin UID'si başına CPU güç tüketimini rapor etmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülünün uygulanmasıyla bu gereksinimi karşılar. - [8.4/H-0-4] bu güç kullanımının uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla kullanılabilmesi ZORUNLUDUR. - [8.4/H] Donanım bileşeninin güç kullanımını bir uygulamayla ilişkilendiremeyen durumlarda donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.
Avuç içi cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [8.4/H-1-1],
android.intent.action.POWER_USAGE_SUMMARY
amacını dikkate almalı ve bu güç kullanımını gösteren bir ayarlar menüsü görüntülemelidir.
Avuç içi cihaz uygulamaları:
- [8.5/H-0-1]
Ayarlar menüsündekullanıcıya ön plan hizmetlerini içeren veya kullanıcı tarafından başlatılan işlere sahip tüm uygulamaları görmeleri gerekir. SDK dokümanında açıklandığı gibi başlatılan bu hizmetlerin süresi de dahil olmak üzere bu hizmetlerin her birinin süresi de buna dahildir.Ayrıca tüm ön plan hizmeti sunan uygulamaların, ön plan hizmeti başlatan uygulamaların tamamlanmasını ve ön plan hizmeti başlatan uygulamaları durdurma ve ön plandaki tüm uygulamaların çalışmasını durdurma özelliğiiçin ön plan hizmetlerini içeren tüm ön plan hizmetlerini- Bazı uygulamalar, SDK dokümanında açıklandığı gibi durdurulmaktan veya bu tür bir kullanıcı yardımında listelenmekten muaf tutulabilir.
Yeni koşullarla başlayın
- [8.5/H-0-2]Kullanıcıya, ön plan hizmetini veya kullanıcı tarafından başlatılan bir işi çalıştıran bir uygulamayı durdurma maliyeti ZORUNLUDUR.
Yeni şartları sonlandırma
2.2.5. Güvenlik Modeli
Avuç içi cihaz uygulamaları:
- [9/H-0-1]
android.hardware.security.model.compatible
özelliğinin bildirilmesi ZORUNLUDUR. - [9.1/H-0-1] Üçüncü taraf uygulamalarının,
android.permission.PACKAGE_USAGE_STATS
izni aracılığıyla kullanım istatistiklerine erişmesine İZİN veandroid.settings.ACTION_USAGE_ACCESS_SETTINGS
amacına yanıt olarak bu tür uygulamalara erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma sunması ZORUNLUDUR.
Yeni koşullarla başlayın
Cihaz uygulamaları android.hardware.telephony
için destek beyan ederse:
- [9.5/H-1-1];
UserManager.isHeadlessSystemUserMode
,true
olarak AYARLANMAMALIDIR.
Yeni şartları sonlandırma
Avuç içi cihaz uygulamaları:
- [9.11/H-0-2], anahtar deposu uygulamasını izole bir yürütme ortamıyla yedeklemelidir.
- [9.11/H-0-3], Android Keystore sisteminin desteklenen algoritmalarını, çekirdek ve üst kısımda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda, doğru şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının yanı sıra MD5, SHA1 ve SHA-2 ailesi karma işlevlerinin uygulamalarına sahip OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole ortamın dahili durumuna erişebileceği tüm potansiyel mekanizmaları Engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), bu gereksinimi Trusty uygulamasını kullanarak karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya üçüncü taraflarca incelenmiş ve uygun hipervizör tabanlı yalıtımın güvenli bir şekilde uygulanması, alternatif seçeneklerdir.
- [9.11/H-0-4], izole yürütme ortamında kilit ekranı kimlik doğrulamasını gerçekleştirmesi ZORUNLUDUR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilir. Kilit ekranı kimlik bilgilerinin, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulaması gerçekleştirmesine izin verecek şekilde saklanabilmesi ZORUNLUDUR. Yukarı akış Android Açık Kaynak Projesi, bu gereksinimi 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 gerçekleştirildiği anahtar onayını desteklemelidir. Onay imzalama anahtarlarının, anahtarların cihaz tanımlayıcısı olarak kullanılmasını engelleyecek kadar çok sayıda cihaz arasında paylaşılması ZORUNLUDUR. Bu koşulu karşılamanın bir yolu,belirli bir SKU'dan en az 100.000 birim üretilmediği sürece aynı onay anahtarını paylaşmaktır. 100.000'den fazla SKU üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Cihaz uygulaması önceki bir Android sürümünde zaten başlatıldıysa bu tür bir cihaz, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint
özelliğini beyan etmediği sürece, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar onayını destekleme zorunluluğundan muaf olur.
Avuç içi cihaz uygulamaları, güvenli kilit ekranını desteklediğinde:
- [9.11/H-1-1], kullanıcının en kısa uyku zaman aşımını seçmesine izin vermelidir. Bu, kilidi açılmış durumdan kilitli duruma, yani 15 saniye veya daha kısa bir geçiş süresidir.
- [9.11/H-1-2] 9.11.1 Güvenli Kilit Ekranı'nda açıklanan birincil kimlik doğrulama haricinde bildirimleri gizleme ve tüm kimlik doğrulama biçimlerini devre dışı bırakma konusunda kullanıcıya destek vermesi ZORUNLUDUR. AOSP, tam kilitleme modu olma şartını karşılar.
Yeni koşullarla başlayın
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService
System API'yi uygulayan bir veya daha fazla güven aracısı varsa bunlar:
- [9.11.1/H-1-1] Önerilen birincil kimlik doğrulama yöntemlerinden biri (ör. PIN, desen, şifre) için kullanıcıyı 72 saatte bir daha sık sınaması GEREKİR.
Yeni şartları sonlandırma
Avuç içi cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik bayrağını beyan etmiyorsa kullanıcılar:
- [9.5/H-2-1], cihaz sahiplerinin ek kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesini sağlayan bir özellik olan kısıtlanmış profilleri DESTEKLEMELİDİR. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamlar oluşturup bu ortamlarda bulunan uygulamalardaki kısıtlamaları daha ayrıntılı şekilde yönetebilir.
Avuç içi cihaz uygulamalarında birden fazla kullanıcı varsa ve android.hardware.telephony
özellik bayrağı beyan ediliyorsa bunlar:
- [9.5/H-3-1] Kısıtlanmış profilleri DESTEKLEMEMELİDİR, ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için denetimlerin AOSP uygulamasıyla uyumlu OLMALIDIR.
Yeni koşullarla başlayın
Avuç içi cihaz uygulamaları, UserManager.isHeadlessSystemUserMode
değerini true
olarak ayarlarsa
- [9.5/H-4-1] eUICC veya çağrı özellikli eSIM desteği İÇERMEMELİDİR.
- [9.5/H-4-2],
android.hardware.telephony
için destek BELİRTMEMELİDİR.
Yeni şartları sonlandırma
Android, System API VoiceEngagementService aracılığıyla mikrofon erişimi göstergesi olmadan her zaman güvenli özel kelime algılama ve mikrofon veya kamera erişim göstergesi olmadan her zaman açık sorgu algılama mekanizmasını destekler.
Avuç içi cihaz uygulamaları System API HotwordDetectionService
'yi veya mikrofon erişimi göstergesi olmayan başka bir özel kelime algılama mekanizmasını destekliyorsa:
- [9.8/H-1-1] Özel kelime algılama hizmetinin, yalnızca Sistem'e,
ContentCaptureService
veyaSpeechRecognizer#createOnDeviceSpeechRecognizer()
tarafından oluşturulan cihaz üzerinde konuşma tanıma hizmetine veri aktarabildiğinden emin olması ZORUNLUDUR. - [9.8/H-1-2] Özel kelime algılama hizmetinin, mikrofon ses verilerini veya bundan türetilen verileri yalnızca
HotwordDetectionService
API aracılığıyla sistem sunucusuna ya daContentCaptureManager
API aracılığıylaContentCaptureService
hizmetine aktarabildiğinden emin olması ZORUNLUDUR. - [9.8/H-1-3] Özel kelime algılama hizmetine donanım tarafından tetiklenen tek bir istek için 30 saniyeden uzun mikrofon sesi SAĞLANMAMALIDIR.
- [9.8/H-1-4] Özel kelime algılama hizmetine yapılan tek bir istek için 8 saniyeden eski arabelleğe alınmış mikrofon sesi SAĞLANMAMALIDIR.
- [9.8/H-1-5], ses etkileşimi hizmetine veya benzer bir öğeye 30 saniyeden eski arabelleğe alınmış mikrofon sesi SAĞLANMAMALIDIR.
- [9.8/H-1-6] HotwordAudioStream üzerinden iletilen ses verileri hariç, her başarılı özel kelime sonucunda 100 bayttan fazla verinin özel kelime algılama hizmetinden aktarılmasına İZİN VERİLMEMELİDİR.
- [9.8/H-1-7] Her bir negatif özel kelime sonucunda özel kelime algılama hizmetinden 5 bitten fazla verinin aktarılmasına İZİN VERİLMEMELİDİR.
- [9.8/H-1-8] Yalnızca sistem sunucusundan gelen bir özel kelime doğrulama isteğinde özel kelime algılama hizmetinden veri iletimine izin verilmesi ZORUNLUDUR.
- [9.8/H-1-9] Kullanıcı tarafından yüklenebilen bir uygulamanın, özel kelime algılama hizmetini sağlamasına izin VERMEMELİDİR.
- [9.8/H-1-10] Özel kelime algılama hizmetinin mikrofon kullanımına ilişkin kullanıcı arayüzü nicel verilerinde GÖRÜNMEMELİDİR.
- [9.8/H-1-11], güvenlik araştırmacıları için incelenebilirliğe olanak tanımak amacıyla özel kelime algılama hizmetinden gelen her iletime dahil edilen bayt sayısını günlüğe kaydetmesi ZORUNLUDUR.
- [9.8/H-1-12], güvenlik araştırmacılarının denetlenebilmesi için özel kelime algılama hizmetinden gelen her iletimin ham içeriğini günlüğe kaydeden bir hata ayıklama modunu desteklemelidir.
- [9.8/H-1-14] Başarılı bir özel kelime sonucu sesli etkileşim hizmetine veya benzer bir varlığa iletildiğinde 9.8.2 bölümünde açıklandığı gibi mikrofon göstergesini görüntülemelidir.
Yeni koşullarla başlayın
- [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 ses etkileşimi hizmetine tek yönlü iletilmesinin sağlanması ZORUNLUDUR.
Yeni şartları sonlandırma
- [9.8/H-SR-1] Bir uygulamayı özel kelime algılama hizmetinin sağlayıcısı olarak ayarlamadan önce kullanıcıları bilgilendirmesi ÖNEMLE ÖNERİLİR.
- [9.8/H-SR-2] Yapılandırılmamış verilerin özel kelime algılama hizmetinden iletilmesine izin vermemesi ÖNEMLE ÖNERİLİR.
- [9.8/H-SR-3] Özel kelime algılama hizmetini en az saatte bir veya her 30 donanım tetikleyici etkinliğinde (hangisi önce gerçekleşirse) barındıran işlemin yeniden başlatılması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, System API HotwordDetectionService
veya mikrofon kullanım göstergesi olmayan özel kelime algılama için benzer bir mekanizma kullanan bir uygulama içeriyorsa uygulama:
- [9.8/H-2-1] Desteklenen her özel kelime ifadesi için kullanıcıya açık bir bildirim gönderilmesi ZORUNLUDUR.
- [9.8/H-2-2] ham ses verilerini veya bu verilerden türetilen verileri özel kelime algılama hizmeti üzerinden KORUMAMALIDIR.
- [9.8/H-2-3]
ContentCaptureService
veya cihaz üzerindeki konuşma tanıma hizmeti hariç olmak üzere, özel kelime algılama hizmetinden, ses verilerinden, sesi veya özel kelimeyle alakasız ses içeriklerini (tamamen ya da kısmen) yeniden oluşturmak için kullanılabilen verileri AKTARMAMALIDIR.
Yeni koşullarla başlayın
Avuç içi cihaz uygulamaları System API VisualQueryDetectionService
'yi veya mikrofon ve/veya kamera erişim göstergesi olmadan sorgu algılamaya yönelik başka bir mekanizmayı destekliyorsa:
- [9.8/H-3-1] Sorgu algılama hizmetinin, yalnızca Sistem'e,
ContentCaptureService
veya cihaz üzerinde konuşma tanıma hizmetine (SpeechRecognizer#createOnDeviceSpeechRecognizer()
tarafından oluşturulmuştur) veri aktarabildiğinden emin olması ZORUNLUDUR. - [9.8/H-3-2]
ContentCaptureService
veya cihaz üzerinde konuşma tanıma hizmeti hariç, hiçbir ses veya video bilgisininVisualQueryDetectionService
dışına aktarılmasına izin VERMEMELİDİR. - [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 bir kullanıcı bildirimi GÖRÜNTÜLEMELİDİR.
- [9.8/H-3-4] Bir mikrofon göstergesi görüntülenmeli ve algılanan kullanıcı sorgusunun kullanıcı sorgusu algılandıktan hemen sonra kullanıcı arayüzünde görüntülenmesi gerekir.
- [9.8/H-3-5] Kullanıcı tarafından yüklenebilen bir uygulamanın, görsel sorgu algılama hizmetini sağlamasına izin VERMEMELİDİR.
Yeni şartları sonlandırma
Avuç içi cihaz uygulamalarında android.hardware.microphone
beyan ediliyorsa:
- [9.8.2/H-4-1] Bir uygulama mikrofondan ses verilerine erişirken mikrofon göstergesini görüntülemelidir, ancak mikrofona yalnızca
HotwordDetectionService
,SOURCE_HOTWORD
ContentCaptureService
veya mikrofona yalnızca bölüm 9.1'de açıklanan rolleri içeren ve CDD tanımlayıcısı [C-4-X] tarafından erişildiğinde mikrofon göstergesi görüntülenmelidir. - [9.8.2/H-4-2],
PermissionManager.getIndicatorAppOpUsageData()
kaynağından döndürüldüğü şekliyle son ve etkin uygulamaların listesini, bunlarla ilişkilendirilmiş ilişkilendirme mesajlarıyla birlikte görüntülemelidir.
Avuç içi cihaz uygulamalarında android.hardware.camera.any
beyan ediliyorsa:
- [9.8.2/H-5-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesinin gösterilmesi ZORUNLUDUR. Ancak, kameraya yalnızca bölüm 9.1'de belirtilen ve CDD tanımlayıcısı [C-4-X] ile belirtilen rolleri elinde bulunduran uygulamalar tarafından erişildiğinde kamera göstergesinin gösterilmesi ZORUNLUDUR.
- [9.8.2/H-5-2], Son kullanılan ve Etkin uygulamaları,
PermissionManager.getIndicatorAppOpUsageData()
kaynağından döndürüldüğü şekliyle kamera kullanarak, bunlarla ilişkilendirilmiş tüm ilişkilendirme mesajlarıyla birlikte GÖRÜNTÜLEMELİDİR.
2.2.6. Geliştirici Araçları ve Seçenek Uyumluluğu
Avuç içi cihaz uygulamaları (* Tablet için geçerli değildir):
- [6.1/H-0-1]*,
cmd testharness
kabuk komutunu desteklemelidir.
Avuç içi cihaz uygulamaları (* Tablet için geçerli değildir):
- Perfetto
- [6.1/H-0-2]* Kabuk kullanıcısına, cmdline'ın perfetto belgelerine uygun bir
/system/bin/perfetto
ikilisi sunması ZORUNLUDUR. - [6.1/H-0-3]* Perfetto ikilisi, perfetto dokümanlarında tanımlanan şemayla uyumlu bir protobuf yapılandırmasını girdi olarak KABUL ETMELİDİR.
- [6.1/H-0-4]* Perfetto ikilisi, perfetto belgelerinde tanımlanan şemayla uyumlu olan bir protobuf izi çıkışı olarak yazmalıdır.
- [6.1/H-0-5]*, perfetto ikili programı üzerinden en azından perfetto belgelerinde açıklanan veri kaynaklarını sağlaması ZORUNLUDUR.
- [6.1/H-0-6]* Perfetto izlenen arka plan programının varsayılan olarak etkinleştirilmesi ZORUNLUDUR (sistem özelliği
persist.traced.enable
).
- [6.1/H-0-2]* Kabuk kullanıcısına, cmdline'ın perfetto belgelerine uygun bir
2.2.7. Mobil Cihaz Medya Performans Dersi
Medya performans sınıfının tanımı için bkz. Bölüm 7.11.
2.2.7.1. Medya
Avuç içi cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.T
değerini döndürürse:
- Android 13 CDD bölümü 2.2.7.1'de listelenen medya şartlarının karşılanması ZORUNLUDUR.
Yeni koşullarla başlayın
Avuç içi cihaz uygulamalarıandroid.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.U
değerini döndürürse:
- [5.1/H-1-1],
CodecCapabilities.getMaxSupportedInstances()
veVideoCapabilities.getSupportedPerformancePoints()
yöntemleri aracılığıyla herhangi bir codec kombinasyonunda eş zamanlı olarak çalıştırılabilecek maksimum donanım video kod çözücü oturumunun tanıtımının yapılması ZORUNLUDUR. - [5.1/H-1-2], 30 fps'de 1080p çözünürlükte 3 oturum ve 30 fps'de 3 oturumla eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 8 bit (SDR) donanım video kod çözücü oturumunun 6 örneğini (AVC, HEVC, VP9, AV1 veya sonrası) DESTEKLEMELİDİR. AV1 codec'leri yalnızca 1080p çözünürlüğü desteklemek için gereklidir ancak yine de 1080p30 fps'de 6 örneği desteklemek için gereklidir.
- [5.1/H-1-3]
CodecCapabilities.getMaxSupportedInstances()
veVideoCapabilities.getSupportedPerformancePoints()
yöntemleri kullanılarak herhangi bir codec kombinasyonunda eş zamanlı olarak çalıştırılabilecek maksimum donanım video kodlayıcı oturumu sayısının reklamını yapması ZORUNLUDUR. - [5.1/H-1-4], 30 fps'de 1080p çözünürlükte 4 oturum ve 30 fps'de 2 oturum ile eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 8 bit (SDR) donanım video kodlayıcı oturumunun (AVC, HEVC, VP9, AV1 veya sonraki sürümleri) 6 örneğini desteklemelidir. AV1 codec'leri yalnızca 1080p çözünürlüğü desteklemek için gereklidir ancak yine de 1080p30 fps'de 6 örneği desteklemek için gereklidir.
- [5.1/H-1-5]
CodecCapabilities.getMaxSupportedInstances()
veVideoCapabilities.getSupportedPerformancePoints()
yöntemleri kullanılarak herhangi bir codec kombinasyonunda eş zamanlı olarak çalıştırılabilecek maksimum donanım video kodlayıcı ve kod çözücü oturumunun tanıtımının yapılması ZORUNLUDUR. - [5.1/H-1-6], 4K@30 fps çözünürlükte 3 oturumla (AV1 hariç) eş zamanlı olarak çalışan herhangi bir codec kombinasyonunda 6 adet 8 bit (SDR) donanım video kod çözücü ve donanım video kodlayıcı oturumunu (AVC, HEVC, VP9, AV1 veya sonraki) DESTEKLEMELİDİR. Bu oturumlarda en fazla 20 p0p oturum, 18 p0'lık oturumda gösterilir. AV1 codec'leri yalnızca 1080p çözünürlüğü desteklemek için gereklidir ancak yine de 1080p30 fps'de 6 örneği desteklemek için gereklidir.
- [5.1/H-1-19] Eşzamanlı olarak 4K@30 fps çözünürlükte çalışan (AV1 hariç) herhangi bir codec kombinasyonunda 3 adet 10 bit (HDR) donanım video kod çözücü ve donanım video kodlayıcı oturumunu (AVC, HEVC, VP9, AV1 veya sonraki) DESTEKLEMELİDİR (en fazla 1 oturumda bir yüzey_GL00 kodlayıcısı olmak üzere bir yüzey_GLR0 kodlayıcı biçiminde yapılandırılmıştır). GL yüzeyinden kodlama varsa kodlayıcının HDR meta verilerini üretmesi gerekmez. AV1 codec oturumları, bu koşulda 4K olsa bile yalnızca 1080p çözünürlüğü desteklemek için gereklidir.
- [5.1/H-1-7] yük altındayken tüm donanım video kodlayıcıları için 1.080p veya daha küçük bir video kodlama oturumu için 40 ms veya daha az codec başlatma gecikmesine sahip olmalıdır. Buraya yükleme, 1.080p ses-video kaydı başlatma ile birlikte donanım video codec'lerini kullanan eşzamanlı 1080p ile 720p video kod dönüştürme oturumu olarak tanımlanır. Dolby Vision codec için codec başlatma gecikmesinin 50 ms veya daha kısa olması ZORUNLUDUR.
- [5.1/H-1-8] yük altındayken tüm ses kodlayıcılar için 128 kb/sn veya daha düşük bit hızına sahip ses kodlama oturumu için 30 ms veya daha az codec başlatma gecikmesine sahip olmalıdır. Buraya yükleme, 1.080p ses-video kaydı başlatma ile birlikte donanım video codec'lerini kullanan eşzamanlı 1080p ile 720p video kod dönüştürme oturumu olarak tanımlanır.
- [5.1/H-1-9] hem 8 bit (SDR) hem de 10 bit HDR içerik için eşzamanlı olarak 30 fps'de (AV1 hariç) 4K çözünürlükte çalışan herhangi bir codec kombinasyonunda güvenli donanım video kod çözücü oturumunun (AVC, HEVC, VP9, AV1 veya sonraki sürümleri) 2 örneğini DESTEKLEMELİDİR. AV1 codec oturumları, bu koşulda 4K olsa bile yalnızca 1080p çözünürlüğü desteklemek için gereklidir.
- [5.1/H-1-10] 4K bit çözünürlükte 3 kod çözme oturumuyla eş zamanlı olarak çalışan herhangi bir codec kombinasyonunda 1 güvenli donanım video kod çözücü oturumu örneği (toplam 4 örnek) (toplam 4 örnek) (AVC, HEVC, VP9, AV1 veya sonrası) ile birlikte, güvenli olmayan donanım video kod çözücü oturumlarının 3 örneğini desteklemelidir. 30 bit çözünürlükte 30 bit-n0 kod çözme oturumu, AV3 fp1 güvenli kod çözme oturumu, AV3 fp1 güvenli kod çözme oturumunda en güvenli AV1 codec oturumları, bu koşulda 4K olsa bile yalnızca 1080p çözünürlüğü desteklemek için gereklidir.
- [5.1/H-1-11] Cihazdaki her donanım AVC, HEVC, VP9 veya AV1 kod çözücü için güvenli bir kod çözücü DESTEKLEMELİDİR.
- [5.1/H-1-12] Yük altındayken tüm donanım video kod çözücüleri için 1.080p veya daha küçük bir video kod çözme oturumunda 40 ms veya daha az codec başlatma gecikmesine sahip olmalıdır. Buraya yükleme, donanım video codec'lerini 1080p ses-video oynatma başlatma ile birlikte kullanarak eşzamanlı olarak 1080p ile 720p arası yalnızca video kod dönüştürme oturumu olarak tanımlanır. Dolby Vision codec için codec başlatma gecikmesinin 50 ms veya daha kısa olması ZORUNLUDUR.
- [5.1/H-1-13] yük altındayken tüm ses kod çözücüleri için 128 kb/sn veya daha düşük bit hızına sahip ses kod çözme oturumu için 30 ms veya daha az codec başlatma gecikmesine sahip olmalıdır. Buraya yükleme, 1080p ses-video oynatma başlatma ile birlikte donanım video codec'lerini kullanan eşzamanlı 1080p ile 720p video kod dönüştürme oturumu olarak tanımlanır.
- [5.1/H-1-14] AV1 donanım kod çözücü Main 10, Level 4.1 ve film greni DESTEKLEMELİDİR.
- [5.1/H-1-15] 4K60'ı destekleyen en az 1 donanım video kod çözücüsü OLMALIDIR.
- [5.1/H-1-16] 4K60'ı destekleyen en az 1 donanım video kodlayıcısı OLMALIDIR.
- [5.3/H-1-1] Yükleme altında 4K 60 fps'lik bir video oturumu için 10 saniye içinde 1 kareden fazla (yani karedeki düşüş yüzdesi %0,167'den az) DÜŞÜMEMELİDİR.
- [5.3/H-1-2] 4K oturumlarda, yüklenme altındaki 60 fps'lik bir video oturumunda video çözünürlüğü değişikliği sırasında 10 saniyede 1 kareden fazla DEVRE DIŞI BIRAKMAMALIDIR.
- [5.6/H-1-1] CTS Doğrulayıcı dokunma ton testi kullanıldığında 80 milisaniye veya daha az bir dokunma ton gecikmesine sahip olmalıdır.
- [5.6/H-1-2] En az bir desteklenen veri yolunda, gidiş dönüş ses gecikmesinin 80 milisaniye veya daha az olması ZORUNLUDUR.
- [5.6/H-1-3]; düşük gecikme ve akış yapılandırmaları için veri yolunun tamamında destekleniyorsa 3,5 mm ses jaklarının üzerinde stereo çıkış için >=24 bit sesi ve USB ses üzerinden desteklenmelidir. Düşük gecikmeli yapılandırma için AAudio, uygulama tarafından düşük gecikmeli geri çağırma modunda kullanılmalıdır. Akış yapılandırması için uygulama tarafından Java AudioTrack kullanılmalıdır. HAL çıkış havuzu, hem düşük gecikmeli hem de akış yapılandırmalarında hedef çıkış biçimi olarak
AUDIO_FORMAT_PCM_24_BIT
,AUDIO_FORMAT_PCM_24_BIT_PACKED
,AUDIO_FORMAT_PCM_32_BIT
veyaAUDIO_FORMAT_PCM_FLOAT
kabul etmelidir. - [5.6/H-1-4] >=4 kanallı USB ses cihazlarını DESTEKLEMELİDİR (Bu, DJ kumandaları tarafından şarkıları önizlemek için kullanılır.)
- [5.6/H-1-5] Sınıfla uyumlu MIDI cihazları DESTEKLEMELİ ve MIDI özellik bayrağını beyan etmelidir.
- [5.6/H-1-9] en az 12 kanal mix'ini desteklemektedir. Bu, bir AudioTrack'i 7.1.4 kanallı maskeyle açabilme ve tüm kanalları stereoya düzgün bir şekilde yerleştirebilme veya indirgeyebilme özelliği anlamına gelir.
- [5.6/H-SR] 24 kanal mix'ini ve en az 9.1.6 ve 22.2 kanal maskelerini desteklemesi ÖNEMLE ÖNERİLİR.
- [5.7/H-1-2] aşağıdaki içerik şifre çözme özellikleriyle
MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL
hizmetini DESTEKLEMELİDİR.
Minimum Örnek boyutu | 4 MiB |
Minimum Alt Örnek Sayısı - H264 veya HEVC | 32 |
Minimum Alt Örnek Sayısı - VP9 | 9 |
Minimum Alt Örnek Sayısı - AV1 | 288 |
Minimum alt örnek arabellek boyutu | 1 MiB |
Minimum Genel şifreleme arabelleği boyutu | 500 KiB |
Minimum eşzamanlı oturum sayısı | 30 |
Oturum başına minimum anahtar sayısı | 20 |
Minimum Toplam Anahtar Sayısı (tüm oturumlar) | 80 |
Minimum Toplam DRM Anahtarı Sayısı (tüm oturumlar) | 6 |
İleti Boyutu | 16 KiB |
Saniyedeki Şifresi Çözülmüş Kare Sayısı | 60 fps |
- [5.1/H-1-17] AVIF Temel Profili'ni destekleyen en az 1 donanım resmi kod çözücüsü OLMALIDIR.
- [5.1/H-1-18], 30 fps ve 1 Mb/sn'de 480p çözünürlüğe kadar kodlayabilen AV1 kodlayıcıyı desteklemelidir.
[5.12/H-1-1] ŞU ZORUNLUDUR[5.12/H-SR] Cihazda bulunan tüm donanım AV1 ve HEVC kodlayıcılarındaFeature_HdrEditing
özelliğinin desteklenmesi Kesinlikle Önerilir.- [5.12/H-1-2] Cihazda bulunan tüm donanım AV1 ve HEVC kodlayıcıları için RGBA_1010102 renk biçimini DESTEKLEMELİDİR.
- [5.12/H-1-3], hem 8 hem de 10 bit'te YUV dokularından örneklere yönelik EXT_YUV_target uzantısı desteğinin reklamını yapmalıdır.
- [7.1.4/H-1-1] Ekran işleme biriminde (DPU) en az 6 donanım yer paylaşımı olması ZORUNLUDUR ve bunların en az 2'si 10 bit video içeriği gösterebilir.
Avuç içi cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.U
değerini döndürürse ve bir donanım AVC veya HEVC kodlayıcı desteği içeriyorsa bunlar:
- [5.2/H-2-1] Performans Sınıfı 14 (PC14) - Video kodlama kalitesi (VEQ) testlerini çalıştırma bölümünde tanımlandığı şekilde, donanım AVC ve HEVC codec'leri için video kodlayıcı hızı bozulma eğrileri tarafından tanımlanan minimum kalite hedefini karşılaması gerekir.
Yeni şartları sonlandırma
2.2.7.2. Kamera
Avuç içi cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.T
değerini döndürürse:
- Android 13 CDD bölüm 2.2.7.2'de listelenen medya şartlarının karşılanması ZORUNLUDUR.
Yeni koşullarla başlayın
Avuç içi cihaz uygulamalarıandroid.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.U
değerini döndürürse:
- [7.5/H-1-1] 4K'da 30 fps'de video yakalamayı destekleyen en az 12 megapiksel çözünürlüğe sahip bir birincil arka kamera olması ZORUNLUDUR. Birincil arka kamera, en düşük kamera kimliğine sahip arka kameradır.
- [7.5/H-1-2] en az 6 megapiksel çözünürlüğe sahip bir birincil ön kameranın olması ve 30 fps'de 1080p'de video yakalamayı desteklemesi gerekir. Birincil ön kamera, en düşük kamera kimliğine sahip ön kameradır.
- [7.5/H-1-3]
android.info.supportedHardwareLevel
özelliğinin, arka birincil kamera içinFULL
veya daha iyisini, ön birincil kamera için iseLIMITED
veya daha iyisini DESTEKLEMELİDİR. - [7.5/H-1-4], her iki birincil kamera için
CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
değerini DESTEKLEMELİDİR. - [7.5/H-1-5], her iki birincil kamera için ITS ışıklandırma koşulları (3000K) altında CTS kamera PerformanceTest tarafından ölçüldüğü üzere 1080p çözünürlük için kamera2 JPEG yakalama gecikmesinin 1.000
900ms'den küçük olması ZORUNLUDUR. - [7.5/H-1-6] her iki birincil kamera için ITS aydınlatma koşulları (3000 K) altındaki CTS kamera PerformanceTest tarafından ölçüldüğü şekliyle kamera2 başlatma gecikmesinin (kamerayı ilk önizleme çerçevesine kadar açma) 500 ms'nin altında olması ZORUNLUDUR.
- [7.5/H-1-8] birincil arka kamera için
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_RAW
veandroid.graphics.ImageFormat.RAW_SENSOR
özelliklerini DESTEKLEMELİDİR. - [7.5/H-1-9] 240 fps'de 720p veya 1080p'yi destekleyen bir arka yüz birincil kamerası olması ZORUNLUDUR.
- Aynı yöne bakan ultra geniş RGB kamera varsa birincil kameralar için [7.5/H-1-10] birincil kameralar için minimum ZOOM_RATIO < 1,0 OLMALIDIR.
- [7.5/H-1-11] birincil kameralarda eşzamanlı ön arka akış uygulanması ZORUNLUDUR.
- [7.5/H-1-12] hem birincil ön hem de birincil arka kamera için
CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION
'yi DESTEKLEMELİDİR. - [7.5/H-1-13], 1'den fazla RGB arka kamera varsa birincil arka kamera için
LOGICAL_MULTI_CAMERA
özelliğini desteklemelidir. - [7.5/H-1-14] hem birincil ön hem de birincil arka kamera için
STREAM_USE_CASE
özelliğini DESTEKLEMELİDİR. - [7.5/H-1-15] birincil kameralar için hem CameraX hem de Camera2 uzantıları aracılığıyla
Bokeh vegece modu uzantılarını desteklemektedir. - [7.5/H-1-16] birincil kameralar için DYNAMIC_RANGE_TEN_BIT özelliğini DESTEKLEMELİDİR.
- [7.5/H-1-17] ana kameralarda control_SCENE_MODE_FACE_PRIORITY ve yüz algılamayı (STATISTICS_FACE_DETECT_MODE_SIMPLE veya STATISTICS_FACE_DETECT_MODE_FULL) DESTEKLEMELİDİR.
Yeni şartları sonlandırma
2.2.7.3. Donanım
Avuç içi cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.T
değerini döndürürse:
- Android 13 CDD bölümü 2.2.7.3'te listelenen medya şartlarının karşılanması ZORUNLUDUR.
Yeni koşullarla başlayın
Avuç içi cihaz uygulamalarıandroid.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.U
değerini döndürürse:
- [7.1.1.1/H-2-1] En az 1080p ekran çözünürlüğü ZORUNLUDUR.
- [7.1.1.3/H-2-1] En az 400 dpi ekran yoğunluğuna sahip olması ZORUNLUDUR.
- [7.1.1.3/H-3-1] ortalama olarak en az 1.000 nit'i destekleyen bir HDR ekrana sahip OLMALIDIR.
- [7.6.1/H-2-1] en az 8 GB fiziksel belleğe sahip OLMALIDIR.
Yeni şartları sonlandırma
2.2.7.4. Performans
Avuç içi cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.T
değerini döndürürse:
- Android 13 CDD bölümü 2.2.7.4'te listelenen performans gereksinimlerini karşılamalıdır.
Yeni koşullarla başlayın
Avuç içi cihaz uygulamalarıandroid.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.U
değerini döndürürse:
- [8.2/H-1-1] En az 150 MB/sn'lik sıralı yazma performansı sağlaması ZORUNLUDUR.
- [8.2/H-1-2] En az 10 MB/sn'lik rastgele bir yazma performansının sağlanması ZORUNLUDUR.
- [8.2/H-1-3] En az 250 MB/sn'lik sıralı okuma performansı sağlaması ZORUNLUDUR.
- [8.2/H-1-4] En az 100 MB/sn'lik rastgele bir okuma performansı sağlanması ZORUNLUDUR.
- [8.2/H-1-5] En az 50 MB/sn'de 2 kat okuma ve 1 kat yazma performansı ile paralel sıralı okuma ve yazma performansı sağlaması ZORUNLUDUR.
Yeni şartları sonlandırma
2.3. Televizyon Gereksinimleri
Android Televizyon cihazı yaklaşık üç metre uzakta oturan kullanıcılar için dijital medya, film, oyun, uygulama ve/veya canlı TV'yi ("arkaya yaslanıp" veya "3 metrelik kullanıcı arayüzü") tüketen bir eğlence arayüzü olan Android cihaz uygulamasını ifade eder.
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa Televizyon olarak sınıflandırılır:
- Ekranda oluşturulan kullanıcı arayüzünü, kullanıcıdan on metre uzakta durabilecek şekilde uzaktan kontrol etmek için bir mekanizma sağlamıştır.
- Çapraz uzunluğu 24 inçten daha büyük olan yerleşik bir ekran görüntüsüne sahip olun VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası ya da ekran için kablosuz bağlantı noktası ekleyin.
Bu bölümün geri kalanındaki ek şartlar, Android TV cihaz uygulamalarına özeldir.
2.3.1. Donanım
Televizyon cihazı uygulamaları:
- [7.2.2/T-0-1] D-pad'i DESTEKLEMELİDİR.
- [7.2.3/T-0-1] Ana Ekran ve Geri işlevlerini SAĞLAMALIDIR.
- [7.2.3/T-0-2] Geri işlevinin (
KEYCODE_BACK
) hem normal hem de uzun basma etkinliğini ön plan uygulamasına göndermesi ZORUNLUDUR. - [7.2.6.1/T-0-1] Oyun kumandaları için destek içermeli ve
android.hardware.gamepad
özellik bayrağı beyan edilmelidir. - [7.2.7/T] Kullanıcıların dokunmatik olmayan gezinme ve temel gezinme tuşları girişlerine erişebilecekleri bir uzaktan kumanda SAĞLANMALIDIR.
Televizyon cihazı uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [7.3.4/T-1-1] en az 100 Hz'lik bir frekansa kadar etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [7.3.4/T-1-2] saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmesi ZORUNLUDUR.
Televizyon cihazı uygulamaları:
- [7.4.3/T-0-1] Bluetooth ve Bluetooth LE'yi desteklemelidir.
- [7.6.1/T-0-1], uygulama özel verileri için en az 4 GB kalıcı depolama alanına ("/veri" bölümü olarak da bilinir) SAHİP 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ı olmayan harici bir kamera için destek İÇERMELİDİR.
TV cihazı uygulamaları 32 bitse:
[7.6.1/T-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 896 MB ZORUNLUDUR:
- Küçük/normal ekranlarda 400 dpi veya daha yüksek
- Büyük ekranlarda xhdpi veya üstü
- ekstra büyük ekranlarda tvdpi veya daha yüksek
TV cihazı uygulamaları 64 bitse:
[7.6.1/T-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 1.280 MB ZORUNLUDUR:
- Küçük/normal ekranlarda 400 dpi veya daha yüksek
- Büyük ekranlarda xhdpi veya üstü
- ekstra büyük ekranlarda tvdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek", çekirdeğin cihaz uygulamalarında kontrolü altında olmayan, radyo, video vb. gibi donanım bileşenlerine halihazırda ayrılmış belleğe ek olarak sağlanan bellek alanını ifade eder.
Televizyon cihazı uygulamaları:
- [7.8.1/T] Mikrofon İÇERMELİDİR.
- [7.8.2/T-0-1] bir ses çıkışının olması ve
android.hardware.audio.output
değerini bildirmesi ZORUNLUDUR.
2.3.2. Multimedya
Televizyon cihazı uygulamalarının, aşağıdaki ses kodlama ve kod çözme biçimlerini desteklemesi ve bunları üçüncü taraf uygulamalarının kullanımına sunması ZORUNLUDUR:
- [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ştirilmiş düşük gecikmeli AAC)
Televizyon cihazı uygulamalarının aşağıdaki video kodlama biçimlerini desteklemesi ve bunları üçüncü taraf uygulamalarının kullanımına sunması ZORUNLUDUR:
Televizyon cihazı uygulamaları:
- [5.2.2/T-SR-1] Saniyede 30 kare hızında 720p ve 1080p çözünürlüklü videoların H.264 kodlamasını desteklemesi ÖNEMLE ÖNERİLİR.
Televizyon cihazı uygulamalarının, aşağıdaki video kod çözme biçimlerini desteklemesi ve bunları üçüncü taraf uygulamalarının kullanımına sunması ZORUNLUDUR:
- [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
Televizyon cihazı uygulamalarının, Bölüm 5.3.1'de ayrıntılı bir şekilde açıklandığı gibi, standart video kare hızlarında ve aşağıdaki çözünürlüğe kadar olan çözünürlüklerde MPEG-2 kod çözmeyi desteklemesi ZORUNLUDUR:
- [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 Seviyede, saniyede 59,94 kare hızında HD 1080i. Aralıklı MPEG-2 videoları ayrıştırarak üçüncü taraf uygulamalarının kullanımına sunmaları ZORUNLUDUR.
Televizyon cihazı uygulamalarının, Bölüm 5.3.4'te ayrıntılı bir şekilde açıklandığı gibi, standart video kare hızlarında ve aşağıdaki çözünürlüğe kadar olan çözünürlüklerde H.264 kod çözmeyi desteklemesi ZORUNLUDUR:
- [5.3.4/T-1-1] Temel Profil ile saniyede 60 kare hızında HD 1080p
- [5.3.4/T-1-2] Ana Profil ile saniyede 60 kare hızında HD 1080p
- [5.3.4/T-1-3] Yüksek Profil Düzeyi 4.2 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülere sahip televizyon cihazı uygulamalarının, Bölüm 5.3.5'te ayrıntılı bir şekilde açıklandığı gibi, standart video kare hızlarında ve aşağıdaki çözünürlüklerde H.265 kod çözmeyi desteklemesi gerekir:
- [5.3.5/T-1-1] Ana Profil Düzeyi 4.1 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülere sahip televizyon cihazı uygulamaları, H.265 kod çözmeyi ve UHD kod çözme profilini destekliyorsa:
- [5.3.5/T-2-1], Main10 Seviye 5 Ana Katman profiliyle saniyede 60 kare hızında UHD kod çözme profilini desteklemelidir.
Televizyon cihazı uygulamalarının, Bölüm 5.3.6'da ayrıntılı olarak açıklandığı şekilde, standart video kare hızlarında ve aşağıdaki çözünürlüğe kadar olan çözünürlüklerde VP8 kod çözmeyi desteklemesi gerekir:
- [5.3.6/T-1-1] Saniyede 60 kare kod çözme profilinde HD 1080p
VP9 donanım kod çözücüleri içeren televizyon cihazı uygulamalarının, Bölüm 5.3.7'de ayrıntılı bir şekilde açıklandığı gibi, standart video kare hızlarında ve aşağıdaki çözünürlüğe kadar olan çözünürlüklerde VP9 kod çözmeyi desteklemesi gerekir:
- [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ülere sahip televizyon cihazı uygulamaları VP9 kod çözmeyi ve UHD kod çözme profilini destekliyorsa:
- [5.3.7/T-2-1], profil 0 (8 bit renk derinliği) ile saniyede 60 kare hızında UHD kod çözme profilini desteklemelidir.
- [5.3.7/T-SR1] Profil 2 (10 bit renk derinliği) ile saniyede 60 kare hızında UHD kod çözme profilini desteklemesi ÖNEMLE ÖNERİLİR.
Televizyon cihazı uygulamaları:
- [5.5/T-0-1] sıkıştırılmış ses geçişi çıkışı (cihazda herhangi bir ses kodu çözme işlemi yapılmaz) hariç, desteklenen çıkışlarda sistem Ana Ses Seviyesi ve dijital ses çıkışı sesi azaltma desteği içermesi ZORUNLUDUR.
Televizyon cihazı uygulamalarında yerleşik ekran yoksa ancak bunun yerine HDMI üzerinden bağlanan harici bir ekran destekleniyorsa:
- [5.8/T-0-1] HDMI çıkış modunu, cihazın satıldığı bölgenin video yenileme hızına bağlı olarak harici ekran için 50 Hz veya 60 Hz yenileme hızıyla çalışan seçili piksel biçimi için en yüksek çözünürlüğe ayarlaması ZORUNLUDUR.
HDMI çıkış modunun, 50 Hz veya 60 Hz yenileme hızıyla desteklenebilecek maksimum çözünürlüğü seçecek şekilde ayarlanması ZORUNLUDUR. - [5.8/T-SR-1] Kullanıcı tarafından yapılandırılabilen bir HDMI yenileme hızı seçici sağlamak için ÖNEMLE ÖNERİLİR.
- [5.8] HDMI çıkış modu yenileme hızını, cihazın satıldığı bölgenin video yenileme hızına bağlı olarak 50 Hz veya 60 Hz olarak AYARLAMALIDIR.
Televizyon cihazı uygulamalarında yerleşik ekran yoksa ancak bunun yerine HDMI üzerinden bağlanan harici bir ekran destekleniyorsa:
- [5.8/T-1-1] HDCP 2.2'yi DESTEKLEMELİDİR.
Televizyon cihazı uygulamaları, UHD kod çözmeyi desteklemiyorsa bunun yerine HDMI üzerinden 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] tarafından
android.software.leanback
veandroid.hardware.type.television
özelliklerinin belirtilmesi ZORUNLUDUR. - [3.2.3.1/T-0-1] Burada listelenen aşağıdaki uygulama amaçları tarafından tanımlanan herkese açık intent filtre kalıpları için bir veya daha fazla uygulamanın veya hizmet bileşeninin intent işleyici ile önceden yüklenmesi ZORUNLUDUR.
- [3.4.1/T-0-1],
android.webkit.Webview
API'nin tam uygulaması GEREKİR.
Android Televizyon cihaz uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/T-1-1], Medya Bildirim Şablonu da dahil olmak üzere Kilit Ekranı Bildirimleri'nin görüntülenmesi ZORUNLUDUR.
Televizyon cihazı uygulamaları:
- [3.8.14/T-SR-1] Çoklu pencere modunda pencere içinde pencere (PIP) modunu desteklemesi için ÖNEMLE ÖNERİ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 motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerine benzer veya bu işlevlerden daha iyi şekilde erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ÖNERİLİR.
Televizyon cihazı uygulamaları android.hardware.audio.output
adlı özelliği bildiriyorsa:
- [3.11/T-SR-1] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermesi ÖNEMLE ÖNERİLİR.
- [3.11/T-1-1] üçüncü taraf TTS motorlarının yüklenmesini DESTEKLEMELİDİR.
Televizyon cihazı uygulamaları:
- [3.12/T-0-1] TV Giriş Çerçevesi'ni DESTEKLEMELİDİR.
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 gerçekleşmemelidir ve saniyede 1 karenin altında OLMALIDIR.
- [8.2/T-0-1] en az 5 MB/sn'lik sıralı yazma performansı sağlaması ZORUNLUDUR.
- [8.2/T-0-2] en az 0,5 MB/sn'lik rastgele bir yazma performansı sağlaması ZORUNLUDUR.
- [8.2/T-0-3] en az 15 MB/sn'lik sıralı bir okuma performansı sağlaması ZORUNLUDUR.
- [8.2/T-0-4] en az 3,5 MB/sn'lik rastgele bir okuma performansı sağlaması ZORUNLUDUR.
Televizyon cihaz uygulamaları, AOSP'ye dahil olan cihaz güç yönetimini iyileştirecek veya AOSP'ye dahil olan özelliklerin kapsamını genişletecek özellikler içeriyorsa:
- [8.3/T-1-1] uygulamasının, pil tasarrufu özelliğini etkinleştirmesi ve devre dışı bırakması için kullanıcıya ödeme yapması GEREKİR.
Televizyon cihazı uygulamalarının pili yoksa:
- [8.3/T-1-2] Cihazı, Pilsiz Cihazları Destekleme sayfasında açıklandığı şekilde pilsiz bir cihaz olarak kaydetmelidir.
Televizyon cihazı uygulamalarında pil varsa:
- [8.3/T-1-3]; Uygulama Bekleme ve Doz Güç Tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya gerekli parayı sunmanız ZORUNLUDUR.
Televizyon cihazı uygulamaları:
- [8.4/T-0-1], Android Açık Kaynak Projesi sitesinde belirtildiği üzere, her bir donanım bileşeni için mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili SAĞLANMALIDIR.
- [8.4/T-0-2], tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden bildirmelidir.
- [8.4/T-0-3] her işlemin UID'si başına CPU güç tüketimini raporlamalıdır. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülünün uygulanmasıyla bu gereksinimi karşılar. - [8.4/T] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemezse donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.
- [8.4/T-0-4] bu güç kullanımının uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla kullanılabilmesi ZORUNLUDUR.
2.3.5. Güvenlik Modeli
Televizyon cihazı uygulamaları:
- [9/T-0-1]
android.hardware.security.model.compatible
özelliğinin beyan edilmesi ZORUNLUDUR. - [9.11/T-0-1], anahtar deposu uygulamasını izole bir yürütme ortamıyla yedeklemelidir.
- [9.11/T-0-2], Android Keystore sisteminin desteklenen algoritmalarını, çekirdek ve üst kısımda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda, düzgün bir şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmaları ile MD5, SHA1 ve SHA-2 ailesi karma işlevlerinin uygulamalarına sahip OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole ortamın dahili durumuna erişebileceği tüm potansiyel mekanizmaları Engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), bu gereksinimi Trusty uygulamasını kullanarak karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya üçüncü taraflarca incelenmiş ve uygun hipervizör tabanlı yalıtımın güvenli bir şekilde uygulanması, alternatif seçeneklerdir.
- [9.11/T-0-3], izole yürütme ortamında kilit ekranı kimlik doğrulamasını gerçekleştirmesi ZORUNLUDUR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verir. Kilit ekranı kimlik bilgilerinin, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulaması gerçekleştirmesine izin verecek şekilde saklanabilmesi ZORUNLUDUR. Yukarı akış Android Açık Kaynak Projesi, bu gereksinimi 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 gerçekleştirildiği anahtar onayını desteklemelidir. Onay imzalama anahtarlarının, anahtarların cihaz tanımlayıcısı olarak kullanılmasını engelleyecek kadar çok sayıda cihaz arasında paylaşılması ZORUNLUDUR. Bu koşulu karşılamanın bir yolu,belirli bir SKU'dan en az 100.000 birim üretilmediği sürece aynı onay anahtarını paylaşmaktır. 100.000'den fazla SKU üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Cihaz uygulaması önceki bir Android sürümünde zaten başlatıldıysa bu tür bir cihaz, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint
özelliğini beyan etmediği sürece, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar onayını destekleme zorunluluğundan muaf olur.
Televizyon cihazı uygulamaları güvenli kilit ekranını destekliyorsa, bunlar:
- [9.11/T-1-1] Kullanıcının kilitli durumdan kilitli duruma geçiş için Uyku zaman aşımını seçmesine izin verilmelidir ve minimum 15 saniye veya daha kısa bir zaman aşımı süresi bulunmalıdır.
Televizyon cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildirmezlerse:
- [9.5/T-2-1], cihaz sahiplerinin ek kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesini sağlayan bir özellik olan kısıtlanmış profilleri DESTEKLEMELİDİR. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamlar oluşturup bu ortamlarda bulunan uygulamalardaki kısıtlamaları daha ayrıntılı şekilde yönetebilir.
Televizyon cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildirirse:
- [9.5/T-3-1] Kısıtlanmış profilleri DESTEKLEMEMELİDİR, ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için denetimlerin AOSP uygulamasıyla uyumlu OLMALIDIR.
Televizyon cihazı uygulamalarında android.hardware.microphone
bildiriliyorsa:
- [9.8.2/T-4-1] Bir uygulama mikrofondan ses verilerine erişirken mikrofon göstergesini görüntülemelidir, ancak mikrofona yalnızca HotwordDetectionService, SOURCE_HOTWORD, ContentCaptureService veya Bölüm 9.1'de belirtilen rolleri içeren uygulamalar tarafından erişildiğinde mikrofon göstergesini görüntülemelidir. C-3-X CDD tanımlayıcısına sahip izinler].
- [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östergesini gizlenmemelidir.
Televizyon cihazı uygulamalarında android.hardware.camera.any
bildiriliyorsa:
- [9.8.2/T-5-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesinin gösterilmesi ZORUNLUDUR, ancak kameraya yalnızca Bölüm 9.1'de belirtilen rolleri taşıyan uygulamalar kameraya erişirken bu gösterilmez. CDD tanımlayıcısına [C-3-X] sahip izinler.
- [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östergesini gizlenmemelidir.
2.3.6. Geliştirici Araçları ve Seçenek Uyumluluğu
Televizyon cihazı uygulamaları:
- Perfetto
- [6.1/T-0-1] Kabuk kullanıcısına, cmdline'ın perfetto belgelerine uygun bir
/system/bin/perfetto
ikilisi sunması ZORUNLUDUR. - [6.1/T-0-2] Perfetto ikilisi, perfetto belgelerinde tanımlanan şemayla uyumlu bir protobuf yapılandırmasını girdi olarak KABUL ETMELİDİR.
- [6.1/T-0-3] Perfetto ikilisi, perfetto belgelerinde tanımlanan şemayla uyumlu olan bir protobuf izlemesi çıktı olarak yazılmalıdır.
- [6.1/T-0-4] Perfetto ikili üzerinden en azından perfetto belgelerinde açıklanan veri kaynaklarını sağlaması ZORUNLUDUR.
- [6.1/T-0-1] Kabuk kullanıcısına, cmdline'ın perfetto belgelerine uygun bir
2.4. İzleme Koşulları
Android Watch cihazı vücuda (örneğin, bileğe) takılmak üzere tasarlanmış Android cihaz uygulamasını ifade eder.
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa Watch olarak sınıflandırılır:
- Fiziksel köşegen uzunluğu 1,1 ila 2,5 inç arasında olan bir ekrana sahip olmalıdır.
- Vücuda takılmak ü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] cihazın fiziksel diyagonal boyutu 1,1 ile 2,5 inç arasında olan bir ekran OLMALIDIR.
[7.2.3/W-0-1] Ana Sayfa işlevinin kullanıcı tarafından,
UI_MODE_TYPE_WATCH
içinde olduğu durumlar dışında Geri işlevinin kullanıcı tarafından kullanılabilmesi ZORUNLUDUR.[7.2.4/W-0-1] Dokunmatik ekran girişini DESTEKLEMELİDİR.
[7.3.1/W-SR-1] 3 eksenli bir ivme ölçer eklemeniz ÖNEMLE ÖNERİLİR.
Saat cihazı uygulamaları GPS/GNSS alıcısı içeriyorsa ve uygulamalara yeteneği android.hardware.location.gps
özellik bayrağı aracılığıyla bildiriyorsa:
- [7.3.3/W-1-1] GPS/GNSS kullanılarak hesaplanan bir konum henüz raporlanmamış olsa bile GNSS ölçümlerini bulunur bulunmaz raporlanmalıdır.
- [7.3.3/W-1-2] GNSS gerçek olmayan aralıklar ve sözde aralıklı hızların Bildirilmesi ZORUNLUDUR. Konum belirlendikten sonra açık gökyüzü koşullarında, sabit bir şekilde veya saniye başına 0,2 metreden daha düşük bir ivmeyle hareket ederken 20 metrelik bir sürede 20 metrelik bir sürede en az% 2 ile 0,5 arasındaki hızı hesaplamaya yeterlidir.
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çebilmesi ZORUNLUDUR.
Cihaz uygulamalarını izleyin:
[7.4.3/W-0-1] Bluetooth'u desteklemektedir.
[7.6.1/W-0-1], uygulama özel verileri (diğer adıyla "/veri" bölümü) için en az 1 GB kalıcı olmayan depolama alanına sahip OLMALIDIR.
[7.6.1/W-0-2], çekirdekte ve kullanıcı alanında en az 416 MB kullanılabilir belleğe sahip OLMALIDIR.
[7.8.1/W-0-1] bir mikrofon İÇERMELİDİR.
[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], özelliğin
android.hardware.type.watch
olarak beyan edilmesi ZORUNLUDUR. - [3/W-0-2], uiMode = UI_MODE_TYPE_Watch özelliğini DESTEKLEMELİDİR.
- [3.2.3.1/W-0-1] Burada listelenen aşağıdaki uygulama amaçları tarafından tanımlanan tüm genel amaç filtre kalıpları için bir veya daha fazla uygulamanın veya hizmet bileşeninin intent işleyici ile önceden yüklenmesi ZORUNLUDUR.
Cihaz uygulamalarını izleyin:
- [3.8.4/W-SR-1] Destek işlemini işlemesi için cihaza bir asistanın uygulanması ÖNEMLE ÖNERİLİR.
android.hardware.audio.output
özellik işaretini bildiren cihaz uygulamalarını izleyin:
- [3.10/W-1-1] üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.
- [3.10/W-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şlevlerine benzer veya bunları aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ÖNERİLİR.
Saat cihazı uygulamaları, android.hardware.audio.Exit özelliğini bildiriyorsa:
[3.11/W-SR-1] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermesi ÖNEMLE ÖNERİLİR.
[3.11/W-0-1], üçüncü taraf TTS motorlarının yüklenmesini DESTEKLEMELİDİR.
2.4.4. Performans ve Güç
Saat cihazı uygulamaları, AOSP'ye dahil olan cihaz güç yönetimini iyileştiren veya AOSP'ye dahil olan özelliklerin kapsamını genişleten özellikler içeriyorsa:
- [8.3/W-SR-1] Uygulama Bekletme ve Doz Güç Tasarrufu modlarından muaf olan tüm uygulamaları görüntülemesi için kullanıcıya uygun bir bütçe sunması ÖNERİLİR.
- [8.3/W-SR-2] Pil tasarrufu özelliğini etkinleştirmesi ve devre dışı bırakması için kullanıcıya ödeme yapılması GERÇEKTEN ÖNERİLİR.
Cihaz uygulamalarını izleyin:
- [8.4/W-0-1] Android Açık Kaynak Projesi sitesinde belirtildiği üzere, her bir donanım bileşeni için mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili SAĞLANMALIDIR.
- [8.4/W-0-2], tüm güç tüketimi değerlerini milisaniye cinsinden (mAh) bildirmelidir.
- [8.4/W-0-3], her işlemin UID'si başına CPU güç tüketimini rapor etmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülünün uygulanmasıyla bu gereksinimi karşılar. - [8.4/W-0-4] bu güç kullanımının uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla kullanılabilmesi ZORUNLUDUR. - [8.4/W] Donanım bileşeninin güç kullanımını bir uygulamayla ilişkilendiremezse donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.
2.4.5. Güvenlik Modeli
Cihaz uygulamalarını izleyin:
- [9/W-0-1],
android.hardware.security.model.compatible
özelliğini BİLDİRMELİDİR.
Saat cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik bayrağını bildirmiyorsa kullanıcılar:
- [9.5/W-1-1], kısıtlı profilleri DESTEKLEMELİDİR. Bu özellik, cihaz sahiplerinin ek kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesini sağlar. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamlar oluşturup bu ortamlarda bulunan uygulamalardaki kısıtlamaları daha ayrıntılı şekilde yönetebilir.
Saat cihazı uygulamalarında birden fazla kullanıcı varsa ve android.hardware.telephony
özellik bayrağını beyan ederse kullanıcılar:
- [9.5/W-2-1] Kısıtlanmış profilleri DESTEKLEMEMELİDİR, ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için denetimlerin AOSP uygulamasıyla uyumlu OLMALIDIR.
Yeni koşullarla başlayın
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService
System API'yi uygulayan bir veya daha fazla güven aracısı varsa bunlar:
- [9.11.1/W-1-1], önerilen birincil kimlik doğrulama yöntemlerinden biri (ör. PIN, desen, şifre) için kullanıcıyı 72 saatte bir kezden daha sık sınaması ZORUNLUDUR.
Yeni şartları sonlandırma
2.5. Otomotiv Gereksinimleri
Android Automotive uygulaması, sistem ve/veya bilgi-eğlence işlevinin bir kısmı veya tamamı için işletim sistemi olarak Android çalıştıran araç ana birimini ifade eder.
Android cihaz uygulamaları, android.hardware.type.automotive
özelliğini bildirmeleri veya aşağıdaki tüm ölçütleri karşılamaları durumunda Otomotiv olarak sınıflandırılır.
- Bir otomotiv aracının parçası olarak yerleştirilmiş veya takılabilir.
- Sürücü koltuğu sırasında birincil ekran olarak bir ekran kullanıyorsanız.
Bu bölümün geri kalanındaki ek koşullar Android Automotive cihaz uygulamalarına özeldir.
2.5.1. Donanım
Otomotiv cihaz uygulamaları:
- [7.1.1.1/A-0-1] Ekran fiziksel olarak en az 6 inç boyutunda olmalıdır.
- [7.1.1.1/A-0-2] Ekran boyutu düzeni en az 750 dp x 480 dp olmalıdır.
- [7.2.3/A-0-1] Ana Sayfa işlevini ZORUNLUDUR ve Geri ve Son işlevlerini sağlayabilir.
- [7.2.3/A-0-2] Geri işlevinin (
KEYCODE_BACK
) hem normal hem de uzun basma etkinliğini ön plan uygulamasına göndermesi ZORUNLUDUR. - [7.3/A-0-1]
GEAR_SELECTION
,NIGHT_MODE
,PERF_VEHICLE_SPEED
vePARKING_BRAKE_ON
özelliklerini uygulayıp raporlamalıdır. - [7.3/A-0-2]
NIGHT_MODE
işaretinin değerinin, kontrol panelindeki gündüz/gece moduyla tutarlı olması ve ortam ışığı sensörü girişine dayalı olması ZORUNLUDUR. Temel ortam ışığı sensörü, Fotometre ile aynı olabilir. - [7.3/A-0-3], sağlanan her sensör için SensorAdditionalInfo'nun bir parçası olarak sensör ek bilgi alanı
TYPE_SENSOR_PLACEMENT
sağlanması ZORUNLUDUR. - [7.3/A-SR1] GPS/GNSS'yi ek sensörlerle birleştirerek Konum'un ölü sayılabilir. Konum geçersiz kabul edilirse kullanılan ilgili Sensör türlerini ve/veya Araç Mülk Kimliklerini uygulayıp bildirmeniz ÖNEMLE ÖNERİLİR.
[7.3/A-0-4] LocationManager#requestLocationUpdates() aracılığıyla istenen Konum, haritayla EŞLEŞMEMELİDİR.
[7.3.1/A-0-4], Android araba sensörü koordinat sistemine UYMALIDIR.
[7.3/A-SR-1] 3 eksenli ivme ölçer ve 3 eksenli jiroskop dahil etmek için.
[7.3/A-SR-2]
TYPE_HEADING
sensörünü uygulamak ve raporlamak için STRONGLY_RECOMMENDED
Otomotiv cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa bunlar:
- [7.1.4.1/A-0-1] OpenGL ES 3.1 veya sonraki sürümleri bildirmesi ZORUNLUDUR.
- [7.1.4.1/A-0-2] Vulkan 1.1'i DESTEKLEMELİDİR.
- [7.1.4.1/A-0-3] Vulkan yükleyicisini içermeli ve tüm sembolleri dışa aktarmalısınız.
Otomotiv cihaz uygulamaları ivme ölçer içeriyorsa:
- [7.3.1/A-1-1] en az 100 Hz'lik bir frekansa kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
Cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/A-SR-1] Sınırlı eksen ivme ölçerinde birleşik sensörün uygulanması ÖNEMLE ÖNERİLİR.
Otomotiv cihaz uygulamaları 3'ten az eksenli bir ivme ölçer içeriyorsa:
- [7.3.1/A-1-3]
TYPE_ACCELEROMETER_LIMITED_AXES
sensörünü uygulamalı ve bildirmeli. - [7.3.1/A-1-4]
TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED
sensörünü uygulamalı ve bildirmeli.
Otomotiv cihaz uygulamalarında jiroskop varsa:
- [7.3.4/A-2-1] en az 100 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [7.3.4/A-2-3] saniyede 250 dereceye kadar yön değişikliklerini ölçebilmesi ZORUNLUDUR.
- [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ı ÖNEMLE ÖNERİLİR.
Otomotiv cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [7.3.4/A-SR-2] Sınırlı eksenli jiroskop için bileşik sensörü uygulanması ÖNEMLE ÖNERİLİR.
Otomotiv cihaz uygulamalarında 3 eksenden kısa bir jiroskop varsa:
- [7.3.4/A-4-1]
TYPE_GYROSCOPE_LIMITED_AXES
sensörünü uygulamalı ve bildirmeli. - [7.3.4/A-4-2]
TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED
sensörünü uygulamalı ve bildirmeli.
Otomotiv cihaz uygulamaları bir GPS/GNSS alıcısı içeriyor 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 60 saniye içinde 4 günden uzun bir süre sonra konumu belirlemelidir.
- [7.3.3/A-3-2] tüm diğer konum istekleri (ör.ilk kez 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 zamanı kriterlerini karşılamalı. 7.3.3/C-1-2 şartı, genellikle hücresel ağ tabanlı veri bağlantısı olmayan araçlarda karşılanır. Bunun için alıcı üzerinde hesaplanan GNSS yörünge tahminleri ya da bilinen son araç konumu kullanılarak 7.3.3/C-1-3'e uygun konum doğruluğuyla en az 60 saniye boyunca ölümü dikkate alma olanağı ya da her ikisinin bir kombinasyonu kullanılır.
Otomotiv cihazı uygulamaları bir TYPE_HEADING
sensörü içeriyorsa:
- [7.3.4/A-4-3] en az 1 Hz'lik bir frekansa kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [7.3.4/A-SR-3] En az 10 Hz'lik bir frekansa kadar olan etkinlikleri raporlamak için STRONGLY_RECOMMENDED.
- Gerçek kuzeyle ilgili olmalıdır.
- Araç hareketsiz olsa bile kullanılabilir OLMALIDIR.
- Çözünürlüğü en az 1 derece olmalıdır.
Otomotiv cihaz uygulamaları:
- [7.4.3/A-0-1] Bluetooth'u DESTEKLEMELİ ve Bluetooth LE'Yİ DESTEKLEMELİDİR.
- [7.4.3/A-0-2] Android Automotive uygulamalarının
aşağıdaki Bluetooth profillerini desteklemektedir:
- Eller Serbest Profili (HFP) üzerinden telefon araması.
- Ses Dağıtım Profili (A2DP) üzerinden medya oynatma.
- Uzaktan Kumanda Profili (AVRCP) üzerinden medya oynatma kontrolü.
- Telefon Rehberi Erişim Profili'ni (PBAP) kullanarak kişi paylaşma.
[7.4.3/A-SR-1] İleti Erişim Profili'ni (MAP) desteklemesi için ÖNEMLE ÖNERİLİR.
[7.4.5/A] Hücresel ağ tabanlı veri bağlantısı desteği İÇERMELİDİR.
[7.4.5/A] Sistem uygulamalarında kullanılabilmesi gereken ağlar için System API
NetworkCapabilities#NET_CAPABILITY_OEM_PAID
sabitini KULLANABİLİR.
Yeni koşullarla başlayın
Cihaz uygulamaları, AM/FM yayın desteği içeriyorsa ve işlevleri herhangi bir uygulamaya sunuyorsa:
- [7.4
.10/A-0-1]FEATURE_BROADCAST_RADIO
için destek beyan edilmesi ZORUNLUDUR.
Yeni şartları sonlandırma
Dış görüş kamerası, dikiz kamerası gibi cihaz uygulamasının dışındaki sahneleri gösteren bir kameradır.
Otomotiv cihaz uygulamaları:
- Bir veya daha fazla dış görünüm kamerası İÇERMELİDİR.
Otomotiv cihaz uygulamalarında dış görüş kamerası varsa bu tür bir kamera için:
- [7.5/A-1-1] dış görünüm kameralarının, kamera temel gereksinimlerini karşılamadıkları sürece Android Kamera API'leri aracılığıyla erişilebilir OLMAMALIDIR.
[7.5/A-SR-1] Kamera önizlemesini döndürmemesi veya yatay olarak yansıtmaması ÖNEMLE ÖNERİLİR.
[7.5/A-SR-2] En az 1,3 megapiksel çözünürlüğe sahip olmaları ÖNEMLE ÖNERİLİR.
Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanıma sahip olması gerekir.
Kamera sürücüsünde donanım otomatik odaklama veya yazılım otomatik odaklama uygulanmış OLABİLİR.
Otomotiv cihazı uygulamaları bir veya daha fazla dıştan görünüm kamerası içeriyor ve Dış Görüş Sistemi (EVS) hizmeti yüklüyorsa bu tür bir kamera için:
- [7.5/A-2-1] kamera önizlemesini döndürmemeli veya yatay olarak yansıtılmamalıdır.
Otomotiv cihaz uygulamaları:
- Üçüncü taraf uygulamalarının kullanabileceği bir veya daha fazla kamera içerebilir.
Otomotiv cihaz uygulamaları en az bir kamera içeriyorsa ve bunu üçüncü taraf uygulamalarına sunuyorsa:
- [7.5/A-3-1],
android.hardware.camera.any
özellik bayrağını BİLDİRMELİDİR. - [7.5/A-3-2] kameranın bir sistem kamerası olarak tanımlanmaması ZORUNLUDUR.
- Bölüm 7.5.3'te açıklanan harici kameraları destekleyebilir.
- Bölüm 7.5.1'de açıklandığı gibi, arka kameralarda kullanılabilen özellikler (otomatik odaklama vb.) İÇEREBİLİR.
Yeni koşullarla başlayın
Arka kamera, aracın herhangi bir yerine yerleştirilerek araç kabininin dışına bakan dışa dönük bir kamera anlamına gelir. Yani, arka görüş kamerası gibi araç gövdesinin uzak tarafındaki sahneleri görüntüler.
Ön kamera, aracın herhangi bir yerine yerleştirilebilen ve araç kabininin içine bakan, kullanıcıya yönelik kamera anlamına gelir. Bu da video konferans ve benzer uygulamalarda kullanıcıyı görselleştirir.
Otomotiv cihaz uygulamaları:
- [7.5/A-SR-1] Bir veya daha fazla dünyaya bakan kamera eklemeniz ÖNEMLE ÖNERİLİR.
- Bir veya daha fazla kullanıcıya yönelik kamera içerebilir.
- [7.5/A-SR-2] Birden fazla kameranın eşzamanlı akışını desteklemeleri için ÖNEMLE ÖNERİLİR.
Otomotiv cihaz uygulamalarında dünyaya bakan en az bir kamera varsa bu tür bir kamera için şunları yapmanız gerekir:
- [7.5/A-1-1] Kameranın uzun boyutu, Android otomotiv sensör eksenlerinin X-Y düzlemiyle aynı hizada olmalıdır.
- [7.5/A-SR-3] Sabit odaklı veya EDOF (Genişletilmiş Alan Derinliği) donanımlarına sahip olmaları ÖNEMLE ÖNERİLİR.
- [7.5/A-1-2] Dünyaya bakan birincil kamera, en düşük kamera kimliğine sahip birincil kamera olmalıdır.
Otomotiv cihaz uygulamalarında, kullanıcıya yönelik en az bir kamera varsa bu tür bir kamera için:
- [7.5/A-2-1] Birincil kullanıcıya yönelik kamera, en düşük kamera kimliğine sahip kullanıcıya dönük kamera ZORUNLUDUR.
- Kameranın uzun boyutu, Android otomotiv sensör eksenlerinin X-Y düzlemiyle aynı hizada olacak şekilde yönlendirilebilir.
Automotive cihaz uygulamalarında android.hardware.Camera
veya android.hardware.camera2
API üzerinden erişilebilen bir kamera varsa bunlar:
- [7.5/A-3-1] Bölüm 7.5'teki temel kamera şartlarına UYMALIDIR.
Otomotiv cihaz uygulamalarında android.hardware.Camera
veya android.hardware.camera2
API üzerinden erişilemeyen bir kamera varsa:
- [7.5/A-4-1] Genişletilmiş Görünüm Sistemi hizmeti aracılığıyla erişilebilir ZORUNLUDUR.
Otomotiv cihaz uygulamaları, Genişletilmiş Görünüm Sistemi Hizmeti üzerinden erişilebilen bir veya daha fazla kamera içeriyorsa bu tür bir kamera için:
- [7.5/A-5-1] Kamera önizlemesini DÖNMEMELİ veya yatay olarak YAZMAMALIDIR.
- [7.5/A-SR-4] En az 1,3 megapiksel çözünürlüğe sahip olmaları ÖNEMLE ÖNERİLİR.
Otomotiv cihaz uygulamalarında hem Genişletilmiş Görünüm Sistemi Hizmeti hem de android.hardware.Camera
veya android.hardware.Camera2
API'si üzerinden erişilebilen bir veya daha fazla kamera varsa bu tür bir kamera için şunları yapmak gerekir:
- [7.5/A-6-1] aynı kamera kimliğini bildirmelidir.
Otomotiv cihaz uygulamaları özel bir kamera API'si sağlıyorsa bunlar:
- [7.5/A-7-1] bu tür bir kamera API'sini
android.hardware.camera2
API veya Extended View System API kullanarak uygulamalıdır.
Yeni şartları sonlandırma
Otomotiv cihaz uygulamaları:
[7.6.1/A-0-1], uygulama özel verileri için en az 4 GB kalıcı depolama alanına ("/veri" bölümü olarak da bilinir) SAHİP OLMALIDIR.
[7.6.1/A] Flash depolama alanında daha iyi performans ve kullanım ömrü sunmak için (örneğin
f2fs
dosya sistemi kullanılarak) veri bölmesinin biçimlendirilmesi GEREKİR.
Automotive cihaz uygulamaları, dahili kaldırılamayan dahili depolama alanının bir kısmı üzerinden paylaşılan harici depolama alanı sağlıyorsa:
- [7.6.1/A-SR-1] Örneğin,
SDCardFS
kullanılarak harici depolamada gerçekleştirilen işlemlerde G/Ç ek yükünü azaltmak için ÖNEMLE ÖNERİLİR.
Otomotiv cihaz uygulamaları 64 bitse:
[7.6.1/A-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek 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ırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 944 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya üstü
- Büyük ekranlarda hdpi veya üstü
- ekstra büyük ekranlarda mdpi veya daha yüksek
[7.6.1/A-2-3] Aşağıdaki yoğunluklardan herhangi biri kullanılırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 1.280 MB ZORUNLUDUR:
- Küçük/normal ekranlarda 400 dpi veya daha yüksek
- Büyük ekranlarda xhdpi veya üstü
- 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ırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek 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ı tarafından kullanılabilen bellek", cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine zaten ayrılmış belleğe ek olarak sağlanan bellek alanını ifade eder.
Otomotiv cihaz uygulamaları:
- [7.7.1/A] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
Otomotiv cihaz uygulamaları:
- [7.8.1/A-0-1] bir mikrofon İÇERMELİDİR.
Otomotiv cihaz uygulamaları:
- [7.8.2/A-0-1] bir ses çıkışının olması ve
android.hardware.audio.output
değerini bildirmesi ZORUNLUDUR.
2.5.2. Multimedya
Otomotiv cihaz uygulamalarının, aşağıdaki ses kodlama ve kod çözme biçimlerini desteklemesi ve bunları üçüncü taraf uygulamalarına sunması ZORUNLUDUR:
- [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 (geliştirilmiş düşük gecikmeli AAC)
Otomotiv cihaz uygulamalarının aşağıdaki video kodlama biçimlerini desteklemesi ve bunları üçüncü taraf uygulamalarında kullanılabilir hale getirmesi ZORUNLUDUR:
Otomotiv cihaz uygulamalarının, aşağıdaki video kod çözme biçimlerini desteklemesi ve bunları üçüncü taraf uygulamalarının kullanımına sunması ZORUNLUDUR:
Otomotiv cihaz uygulamalarının aşağıdaki video kod çözme işlemini desteklemesi için ÖNEMLE ÖNERİLİR:
- [5.3/A-SR-1] H.265 HEVC
2.5.3. Yazılım
Otomotiv cihaz uygulamaları:
[3/A-0-1],
android.hardware.type.automotive
özelliğini bildirmeniz ZORUNLUDUR.[3/A-0-2] uiMode =
UI_MODE_TYPE_CAR
uzantısını DESTEKLEMELİDİR.[3/A-0-3]
android.car.*
ad alanındaki tüm herkese açık API'leri DESTEKLEMELİDİR.
Automotive cihaz uygulamaları, android.car.VehiclePropertyIds
ile android.car.CarPropertyManager
kullanan özel bir API sağlıyorsa:
- [3/A-1-1] Sistem uygulamasının bu özellikleri kullanmasına özel ayrıcalıklar EKLEMEMELİ veya üçüncü taraf uygulamaların bu özellikleri kullanmasını engellememelidir.
- [3/A-1-2] SDK'da zaten mevcut olan bir araç özelliğini ÇoğaltMAMALIDIR.
Otomotiv cihaz uygulamaları:
[3.2.1/A-0-1], Otomotiv İzin referans sayfasında belirtilen tüm izin sabitlerini desteklemeli ve uygulamalıdır.
[3.2.3.1/A-0-1] Burada listelenen aşağıdaki uygulama amaçları tarafından tanımlanan herkese açık intent filtre kalıpları için bir veya daha fazla uygulamanın veya hizmet bileşeninin intent işleyici ile önceden yüklenmesi ZORUNLUDUR.
[3.4.1/A-0-1],
android.webkit.Webview
API'nin tam bir uygulamasını SAĞLAMALIDIR.
Yeni koşullarla başlayın
- [3.8/A-0-1] Mevcut ön plan kullanıcısı olmayan tam ikincil kullanıcıların etkinlik başlatmasına ve tüm ekranlarda kullanıcı arayüzüne erişmesine İZİN VERİLMEMELİDİR.
Yeni şartları sonlandırma
[3.8.3/A-0-1], üçüncü taraf uygulamaları tarafından istendiğinde
Notification.CarExtender
API'sini kullanan bildirimlerin GÖRÜNTÜLEMELİDİR.[3.8.4/A-SR-1] Destek işlemi için cihaza bir asistan eklenmesi Kesinlikle Önerilir.
Otomotiv cihaz uygulamalarında bas ve konuş düğmesi varsa bunlar:
- [3.8.4/A-1-1] Kullanıcı tarafından seçilen destek uygulamasını, diğer bir deyişle
VoiceInteractionService
kullanan uygulamayı başlatmak için belirlenmiş etkileşim olarak bas ve konuş düğmesine kısa bir süre basması ZORUNLUDUR.
Otomotiv cihaz uygulamaları:
- [3.8.3.1/A-0-1], kaynakları
Notifications on Automotive OS
SDK dokümanlarında açıklandığı gibi doğru şekilde OLUŞTURMALIDIR. - [3.8.3.1/A-0-2] Bildirim işlemleri için
Notification.Builder.addAction()
üzerinden sağlananların yerine OYNAT ve SESİ KAPATMALIDIR - [3.8.3.1/A] Bildirim kanalı başına denetimler gibi zengin yönetim görevlerinin kullanımını KISITLAMALIDIR. Denetimleri azaltmak için her uygulama için kullanıcı arayüzü uygunluğu KULLANILABİLİR.
Otomotiv cihaz uygulamaları, Kullanıcı HAL özelliklerini destekliyorsa:
- [3.9.3/A-1-1] Kullanıcı yaşam döngüsü özelliklerinin tamamının uygulanması ZORUNLUDUR
INITIAL_USER_INFO
,SWITCH_USER
,CREATE_USER
,REMOVE_USER
.
Otomotiv cihaz uygulamaları:
- [3.14/A-0-1], medya API'lerini kullanan üçüncü taraf uygulamalarını desteklemek üzere bölüm 3.14'te açıklandığı şekilde 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ıyla güvenli bir şekilde etkileşimde bulunmasına İZİN VERMELİDİR.
- [3.14/A-0-3]
CAR_INTENT_ACTION_MEDIA_TEMPLATE
dolaylı Intent işleminiCAR_EXTRA_MEDIA_PACKAGE
ekstrayla DESTEKLEMELİDİR. - [3.14/A-0-4] bir Medya Uygulaması'nın tercih etkinliğine ulaşmak için uygun bir ücret sunması ZORUNLUDUR, ancak bunun yalnızca Araba Kullanıcı Deneyimi Kısıtlamaları geçerli olmadığında etkinleştirilmiş olması ZORUNLUDUR.
- [3.14/A-0-5], Medya Uygulamaları tarafından ayarlanan
hata mesajlarını görüntülemeli ve isteğe bağlı ekstraları
ERROR_RESOLUTION_ACTION_LABEL
veERROR_RESOLUTION_ACTION_INTENT
DESTEKLEMELİDİR. - [3.14/A-0-6] Aramayı destekleyen uygulamalar için uygulama içi arama özelliğini DESTEKLEMELİDİR.
- [3.14/A-0-7], MediaTarayıcı hiyerarşisini görüntülerken
CONTENT_STYLE_BROWSABLE_HINT
veCONTENT_STYLE_PLAYABLE_HINT
tanımlarına UYMALIDIR.
Automotive cihaz uygulamaları bir varsayılan başlatıcı uygulaması içeriyorsa:
- [3.14/A-1-1] Medya hizmetlerini içermeli ve bunları
CAR_INTENT_ACTION_MEDIA_TEMPLATE
niyetiyle açmalısınız.
Otomotiv cihaz uygulamaları:
- [3.8/A]
immersive documentation
bölümünde açıklandığı gibi, uygulama isteklerini tam ekran moduna girmeleri için Kısıtlayabilir. - [3.8/A] Durum çubuğu ve gezinme çubuğu her zaman görünür durumda OLABİLİR.
- [3.8/A] Bu öğelerin her zaman net bir şekilde görünür olmasını sağlamak amacıyla, uygulama isteklerini sistem kullanıcı arayüzü öğelerinin arkasındaki renkleri değiştirmeyle ilgili Kısıtlayabilirler.
2.5.4. Performans ve Güç
Otomotiv cihaz uygulamaları:
- [8.2/A-0-1], her işlemin UID'si başına değişken olmayan depolama alanına okunan ve yazılan bayt sayısının BİLDİRİLMESİ ZORUNLUDUR. Böylece istatistikler, geliştiricilere System API
android.car.storagemonitoring.CarStorageMonitoringManager
üzerinden sunulur. Android Açık Kaynak Projesi,uid_sys_stats
çekirdek modülü aracılığıyla bu gereksinimi karşılar. - [8.3/A-1-3], Garaj Modu'nu DESTEKLEMELİDİR.
- [8.3/A] Aşağıdaki durumlar söz konusu değilse her sürüşten sonra en az 15 dakika Garaj Modu'nda olması gerekir:
- Pil tükenmiş.
- Planlanmış boşta iş yok.
- Sürücü, Garaj Modu'ndan çıkar.
- [8.4/A-0-1] Android Açık Kaynak Projesi sitesinde belirtildiği üzere, her bir donanım bileşeni için mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili SAĞLANMALIDIR.
- [8.4/A-0-2], tüm güç tüketimi değerlerini milisaniye cinsinden (mAh) bildirmelidir.
- [8.4/A-0-3], her işlemin UID'si başına CPU güç tüketimini rapor etmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülünün uygulanmasıyla bu gereksinimi karşılar. - [8.4/A] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemezse donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.
- [8.4/A-0-4] bu güç kullanımının uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla kullanılabilmesi ZORUNLUDUR.
2.5.5. Güvenlik Modeli
Otomotiv cihaz uygulamaları birden fazla kullanıcıyı destekliyorsa:
- [9.5/A-1-1]; cihaz temel hazırlığı dışında, kullanıcıların Gözetimsiz Sistem Kullanıcısı ile etkileşimde bulunmasına veya bu kullanıcıya geçiş yapmasına İZİN VERİLMEMELİDİR.
- [9.5/A-1-2]
BOOT_COMPLETED
tarihinden önce İkincil Kullanıcı'ya geçilmesi ZORUNLUDUR. - [9.5/A-1-3], bir cihazda maksimum Kullanıcı sayısına ulaşılsa bile Misafir Kullanıcı oluşturma özelliğini DESTEKLEMELİDİR.
Yeni koşullarla başlayın
Otomotiv cihaz uygulamaları android.hardware.microphone
bildiriyorsa:
- [9.8.2/A-1-1] Bir uygulama mikrofondan ses verilerine erişirken mikrofon göstergesini görüntülemelidir, ancak mikrofona yalnızca
HotwordDetectionService
,SOURCE_HOTWORD
ContentCaptureService
veya mikrofona yalnızca bölüm 9.1'de belirtilen rolleri içeren ve CDD tanımlayıcısı [C-4-X] tarafından belirtilen rolleri içeren uygulamalar tarafından erişildiğinde mikrofon göstergesi görüntülenmelidir. - [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östergesini gizlenmemelidir.
- [9.8.2/A-1-3]; Ayarlar uygulamasında, mikrofonu açmak/kapatmak için bir kullanıcıya olanak sağlanması ZORUNLUDUR.
Yeni şartları sonlandırma
Otomotiv cihaz uygulamaları android.hardware.camera.any
bildiriyorsa:
- [9.8.2/A-2-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesinin gösterilmesi ZORUNLUDUR.Ancak, kameraya yalnızca CDD tanımlayıcısıyla [C-4-X]
[C-3-X]bölümünde anlatıldığı gibibelirtilen rollere sahip olanuygulamalar tarafından erişim sağlandığında kamera göstergesinin gösterilmesi ZORUNLUDUR. - [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östergesini gizlenmemelidir.
Yeni koşullarla başlayın
- [9.8.2/A-2-3]; kullanıcıya, Ayarlar uygulamasında kamerayı açıp kapatma imkanı ZORUNLUDUR.
- [9.8.2/A-2-4]; son kullanılan ve kamerayı kullanan etkin uygulamaları,
PermissionManager.getIndicatorAppOpUsageData()
kaynağından döndürüldüğü şekliyle ve bu uygulamalarla ilişkili tüm ilişkilendirme mesajlarını GÖRÜNTÜLEMELİDİR.
Yeni şartları sonlandırma
Otomotiv cihaz uygulamaları:
- [9/A-0-1]
android.hardware.security.model.compatible
özelliğinin beyan edilmesi ZORUNLUDUR. - [9.11/A-0-1], anahtar deposu uygulamasını izole bir yürütme ortamıyla yedeklemelidir.
- [9.11/A-0-2], Android Keystore sisteminin desteklenen algoritmalarını, çekirdek ve üst kısımda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda, düzgün bir şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmaları ile MD5, SHA1 ve SHA-2 ailesi karma işlevlerinin uygulamalarına sahip OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole ortamın dahili durumuna erişebileceği tüm potansiyel mekanizmaları Engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), bu gereksinimi Trusty uygulamasını kullanarak karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya üçüncü taraflarca incelenmiş ve uygun hipervizör tabanlı yalıtımın güvenli bir şekilde uygulanması, alternatif seçeneklerdir.
- [9.11/A-0-3], izole yürütme ortamında kilit ekranı kimlik doğrulamasını gerçekleştirmesi ZORUNLUDUR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilir. Kilit ekranı kimlik bilgilerinin, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulaması gerçekleştirmesine izin verecek şekilde saklanabilmesi ZORUNLUDUR. Yukarı akış Android Açık Kaynak Projesi, bu gereksinimi 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 gerçekleştirildiği anahtar onayını desteklemelidir. Onay imzalama anahtarlarının, anahtarların cihaz tanımlayıcısı olarak kullanılmasını engelleyecek kadar çok sayıda cihaz arasında paylaşılması ZORUNLUDUR. Bu koşulu karşılamanın bir yolu,belirli bir SKU'dan en az 100.000 birim üretilmediği sürece aynı onay anahtarını paylaşmaktır. 100.000'den fazla SKU üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Cihaz uygulaması önceki bir Android sürümünde zaten başlatıldıysa bu tür bir cihaz, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint
özelliğini beyan etmediği sürece, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar onayını destekleme zorunluluğundan muaf olur.
Otomotiv cihaz uygulamaları:
- [9.14/A-0-1] Android çerçevesi araç alt sistemlerinden gelen erişim kontrolü mesajlarının (ör. izin verilen mesaj türlerini ve mesaj kaynaklarını izin verilenler listesine ekleme) ZORUNLUDUR.
- [9.14/A-0-2] Android çerçevesinden veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı güvenlik zamanlayıcısı GEREKMELİDİR. Bu, araç ağını trafikle boğarak araç alt sistemlerinin arızalanmasına neden olabilecek kötü amaçlı yazılımlara karşı koruma sağlar.
2.5.6. Geliştirici Araçları ve Seçenek Uyumluluğu
Otomotiv cihaz uygulamaları:
- Perfetto
- [6.1/A-0-1] Kabuk kullanıcısına, cmdline'ın perfetto belgelerine uygun bir
/system/bin/perfetto
ikilisi sunması ZORUNLUDUR. - [6.1/A-0-2] Perfetto ikilisi, perfetto belgelerinde tanımlanan şemayla uyumlu bir protobuf yapılandırmasını girdi olarak KABUL ETMELİDİR.
- [6.1/A-0-3] Perfetto ikilisi, perfetto belgelerinde tanımlanan şemayla uyumlu olan bir protobuf izi çıkışı olarak yazmalıdır.
- [6.1/A-0-4] Perfetto ikili üzerinden en azından perfetto belgelerinde açıklanan veri kaynaklarını sağlaması ZORUNLUDUR.
- [6.1/A-0-1] Kabuk kullanıcısına, cmdline'ın perfetto belgelerine uygun bir
2.6. Tablet Gereksinimleri
Android Tablet cihaz, genellikle aşağıdaki ölçütlerin tümünü karşılayan bir Android cihaz uygulamasını belirtir:
- İki elinizle basılı tutarak kullanılır.
- Kapaklı veya dönüştürülebilir yapılandırmaya sahip değil.
- Cihazda kullanılan fiziksel klavye uygulamaları, standart bir bağlantı aracılığıyla (ör. USB, Bluetooth) yapılır.
Pil gibi hareket sağlayan bir güç kaynağına sahip olmalıdır.
Çapraz olarak ölçülen 7 inçten büyük ve 18 inçten küçük ekran boyutuna sahip olmalıdır.
Tablet cihaz uygulamalarının, avuç içi cihaz uygulamalarına benzer gereksinimleri vardır. İstisnalar söz konusu bölümde * ile belirtilmiştir ve bu bölümde referans olarak belirtilmiştir.
2.6.1. Donanım
Jiroskop
Tablet cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [7.3.4/Tab-1-1] saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmesi ZORUNLUDUR.
Minimum Bellek ve Depolama Alanı (Bölüm 7.6.1)
Avuç içi gereksinimlerinde küçük/normal ekranlar için listelenen ekran yoğunlukları tabletler için geçerli değildir.
USB çevre birimi modu (Bölüm 7.7.1)
Tablet cihaz uygulamaları, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.1/Sekme] Android Open Accessory (AOA) API'yi UYGULAMAYABİLİR.
Sanal Gerçeklik Modu (Bölüm 7.9.1)
Sanal Gerçeklik Yüksek Performans (Bölüm 7.9.2)
Sanal gerçeklik gereksinimleri tabletler için geçerli değildir.
2.6.2. Güvenlik Modeli
Anahtarlar ve Kimlik Bilgileri (Bölüm 9.11)
Bölüm [9.11]'e bakın.
Tablet cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik bayrağını bildirmezseler:
- [9.5/T-1-1], cihaz sahiplerinin ek kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesini sağlayan bir özellik olan kısıtlanmış profilleri DESTEKLEMELİDİR. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamlar oluşturup bu ortamlarda bulunan uygulamalardaki kısıtlamaları daha ayrıntılı şekilde yönetebilir.
Tablet cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini beyan ediyorsa bunlar:
- [9.5/T-2-1] Kısıtlanmış profilleri DESTEKLEMEMELİDİR, ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için denetimlerin AOSP uygulamasıyla uyumlu OLMALIDIR.
2.6.2. Yazılım
- [3.2.3.1/Tab-0-1] Burada listelenen aşağıdaki uygulama amaçları tarafından tanımlanan herkese açık intent filtre kalıpları için bir veya daha fazla uygulamanın veya hizmet bileşeninin intent işleyici ile önceden yüklenmesi ZORUNLUDUR.
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 maruz kalan Android platformu arayüzleridir.
Cihaz uygulamaları:
[C-0-1] Android SDK tarafından kullanıma sunulan belgelenmiş tüm API'lerin veya yayın öncesi Android kaynak kodunda "@SystemApi" işaretçisiyle dekore edilmiş herhangi bir API'nin, belgelenen tüm davranışlar da dahil olmak üzere eksiksiz uygulamaları sunmalıdır.
[C-0-2] TestApi ek açıklaması (@TestApi) ile işaretlenen tüm sınıfları, yöntemleri ve ilişkili öğeleri desteklemeli/korumamalıdır.
[C-0-3] bu Uyumluluk Tanımı'nda özel olarak izin verilen durumlar dışında yönetilen API'leri ATLAMAMALI, API arayüzlerini veya imzaları değiştirmemeli, belirtilen davranıştan sapmamalı ve işlemsiz içerik eklememelidir.
[C-0-4], Android'in API'leri içerdiği bazı donanım özellikleri çıkarılsa bile API'lerin mevcut kalmasını sağlamalı ve makul bir şekilde çalışmalıdır. Bu senaryoya özel gereksinimler için 7. bölüme bakın.
[C-0-5] Üçüncü taraf uygulamalarının SDK olmayan arayüzleri kullanmasına izin VERMEMELİDİR. Bunlar, AOSP'deki başlatma sınıf yolunda bulunan ve herkese açık SDK'nın parçası olmayan Java dil paketlerindeki yöntemler ve alanlar olarak tanımlanır. Buna, SDK dokümanlarında ve gizli ve paket özel sınıf üyelerinde açıklandığı gibi,
@hide
ek açıklamasıyla süslenmiş ancak@SystemAPI
ile süslü API'ler dahildir.[C-0-6] AOSP'deki uygun API düzeyi dal için
prebuilts/runtime/appcompat/hiddenapi-flags.csv
yolundaki geçici ve ret listesi işaretleriyle sağlanan kısıtlanmış listelerdeki tüm SDK dışı arayüzlerle birlikte gönderilmesi ZORUNLUDUR.[C-0-7], AOSP'de bulunan mevcut ortak anahtarları kullanarak herhangi bir APK'ya imzalı yapılandırma yerleştirerek SDK olmayan arayüzleri kısıtlanmış listeden kaldırmak için imzalı yapılandırma dinamik güncelleme mekanizmasını desteklemelidir.
Ancak:
- Cihaz uygulamasında gizli bir API yoksa veya farklı bir şekilde uygulanmışsa gizli API'yi ret listesine taşıyın veya tüm kısıtlanmış listelerden çıkarın.
- AOSP'de halihazırda gizli bir API yoksa gizli API'yi kısıtlanmış listelerden herhangi birine ekleyebilirsiniz.
Yeni koşullarla başlayın
- [C-0-8], 23'ten düşük API düzeylerini hedefleyen uygulamaların yüklenmesini DESTEKLEMEMELİDİR.
Yeni şartları sonlandırma
3.1.1. Android Uzantıları
Android, belirli bir API düzeyinin uzantı sürümünü güncelleyerek belirli bir API düzeyinin yönetilen API yüzeyinin genişletilmesini destekler. android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel)
API, sağlanan apiLevel
öğesinin uzantı sürümünü döndürür (söz konusu API düzeyi için uzantılar varsa).
Android cihaz uygulamaları:
[C-0-1] hem
ExtShared
paylaşılan kitaplığının hem deExtServices
hizmetlerinin AOSP uygulamasını her API düzeyi başına izin verilen minimum sürümden büyük veya bu sürüme eşit olan sürümlerle önceden yüklemelidir. Örneğin, API düzeyi 24 çalıştıran Android 7.0 cihaz uygulamalarının en az 1. sürümü içermesi ZORUNLUDUR.[C-0-2] yalnızca AOSP tarafından tanımlanan geçerli bir uzantı sürüm numarasını döndürmelidir.
[C-0-3], bölüm 3.1'deki şartlar uyarınca, diğer yönetilen API'lerle aynı şekilde
android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel)
tarafından döndürülen uzantı sürümleri tarafından tanımlanan tüm API'leri DESTEKLEMELİDİR.
3.1.2. Android Kitaplığı
Apache HTTP istemcisinin kullanımdan kaldırılması nedeniyle, cihaz uygulamaları:
- [C-0-1],
org.apache.http.legacy
kitaplığını bootclasspath'a YERLEŞTİRMEMELİDİR. - [C-0-2]
org.apache.http.legacy
kitaplığını, yalnızca uygulama aşağıdaki koşullardan birini karşıladığında uygulama sınıf yoluna eklemelidir:- API düzeyi 28 veya altını hedefler.
- Manifest dosyasında,
<uses-library>
içinandroid:name
özelliğiniorg.apache.http.legacy
olarak ayarlayarak kitaplığa ihtiyacı olduğunu beyan eder.
AOSP uygulaması bu şartları karşılar.
3.2. Esnek API Uyumluluğu
Bölüm 3.1'deki yönetilen API'lere ek olarak, Android, uygulama derleme zamanında zorunlu kılınamayan amaç, izin ve Android uygulamalarının benzer yönleri gibi, çalışma zamanına özel önemli bir "soft" API'yi de içerir.
3.2.1. İzinler
- [C-0-1] Cihaz uygulayıcıları, İzin referans sayfasında belgelendiği gibi tüm izin sabit değerlerini desteklemeli ve uygulamalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek koşulların listelendiğini unutmayın.
3.2.2. Derleme Parametreleri
Android API'leri, android.os.Build sınıfında geçerli cihazı açıklamak için kullanılan bir dizi sabit değer içerir.
- [C-0-1] Cihaz uygulamaları genelinde 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 |
---|---|
SÜRÜM.YAYIN | Yürütülen Android sisteminin, okunabilir biçimdeki sürümü. Bu alanda, Android 14 için İzin Verilen Sürüm Dizeleri bölümünde tanımlanan dize değerlerinden birinin bulunması ZORUNLUDUR. |
VERSION.SDK | Şu anda yürütülen Android sisteminin, üçüncü taraf uygulama kodunun erişebileceği bir biçimdeki sürümü. Android 14 için bu alanın değeri 14_INT'dir. |
VERSION.SDK_INT | Şu anda yürütülen Android sisteminin, üçüncü taraf uygulama kodunun erişebileceği bir biçimdeki sürümü. Android 14 için bu alanın değeri 14_INT'dir. |
SÜRÜM.EK | Cihaz uygulayıcısı tarafından seçilen, o anda yürütülen Android sisteminin özel derlemesini insan tarafından okunabilir biçimde belirten 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 kontrolü değişiklik tanımlayıcısının kullanıldığını belirtmektir. Bu alanın değerinin, yazdırılabilir 7 bitlik ASCII olarak kodlanabilir olması ve "^[^ :\/~]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. |
MASA | Cihaz uygulayıcısı tarafından seçilen, cihaz tarafından kullanılan belirli dahili donanımı tanımlayan, kullanıcıların okuyabileceği bir değer. Bu alanın olası bir kullanımı, cihaza güç veren kartın özel düzeltmesini belirtmektir. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. |
MARKA | Son kullanıcılar tarafından bilinen, cihazla ilişkilendirilmiş marka adını yansıtan bir değer. Kullanıcıların okuyabileceği biçimde olmalı ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını temsil ETMELİDİR. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. |
DESTEKLENMİŞ_ABIS | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
SUPPORTED_32_BİT_ABIS | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
SUPPORTED_64_BİT_ABIS | Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
CPU_ABI | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
CPU_ABI2 | Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
CİHAZ | Cihaz uygulayıcısı tarafından seçilen, donanım özelliklerinin yapılandırmasını ve cihazın endüstriyel tasarımını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. Ürünün kullanım ömrü boyunca bu cihaz adı DEĞİŞMEMELİDİR. |
PARÇA YAZILIMI | Bu derlemeyi benzersiz şekilde tanımlayan bir dize. İnsanlar tarafından makul ölçüde okunabilir olmalıdır. Aşağıdaki şablona uygun olması ZORUNLUDUR:
$(BRAND)/$(ÜRÜN)/ Örnek: acme/ürünüm/ Parmak izi boşluk karakterleri İÇERMEMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir olmalıdır. |
DONANIM | Donanımın adı (çekirdek komut satırından veya /proc'dan). İnsanlar tarafından makul ölçüde okunabilir olmalıdır. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. |
BARINDIRMA | Derlemenin temelini oluşturan ana makineyi, kullanıcılar tarafından okunabilir biçimde benzersiz bir şekilde tanımlayan bir dize. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili bir şart yoktur. |
ID | Cihaz uygulayıcısı tarafından belirli bir sürüme referansta bulunmak için seçilen, okunabilir biçimdeki bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemelerini ayırt edebilmesi için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. |
ÜRETİCİ | Ürünün Özgün Donanım Üreticisi'nin (OEM) ticari adı. Bu alanın biçimiyle ilgili bir koşul yoktur. Ancak null veya boş dize ("") OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
SOSYAL MEDYA ÜRETİCİSİ | Üründe kullanılan çip üzerindeki birincil sistem (SOC) üreticisinin ticari adı. Aynı SOC üreticisine sahip cihazlarda aynı sabit değer kullanılmalıdır. Lütfen kullanılacak doğru sabit değeri SOC üreticisinden isteyin. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması, "^([0-9A-Za-z ]+)" normal ifadesiyle eşleşmesi ZORUNLUDUR. Bu alanın değeri boşlukla BAŞLAMAMALIDIR ve "bilinmiyor" değerine eşit OLMAMALIDIR. Ürünün kullanım ömrü boyunca bu alan DEĞİŞMEMELİDİR. |
SOC_MODEL | Üründe kullanılan çipteki (SOC) birincil sistemin model adı. Aynı SOC modeline sahip cihazlar aynı sabit değeri kullanmalıdır. Lütfen kullanılacak doğru sabit değeri SOC üreticisinden isteyin. Bu alanın değerinin 7 bit ASCII olarak kodlanabilmesi ve "^([0-9A-Za-z ._/+-]+)$" normal ifadesiyle eşleşmesi ZORUNLUDUR. Bu alanın değeri boşlukla BAŞLAMAMALIDIR ve "bilinmiyor" değerine eşit OLMAMALIDIR. Ürünün kullanım ömrü boyunca bu alan DEĞİŞMEMELİDİR. |
MODEL | Cihaz uygulayıcısı tarafından seçilen, son kullanıcı tarafından bilinen cihazın adını içeren bir değer. Bu ad, cihazın son kullanıcılara pazarlanmasında ve satışında kullanılan adla aynı olmalıdır. Bu alanın biçimiyle ilgili olarak, null veya boş dize ("") OLMAMALIDIR. Ancak bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
ÜRÜN | Cihaz uygulayıcısı tarafından seçilen, belirli bir ürünün (SKU) geliştirme adını veya kod adını içeren, aynı marka içinde benzersiz olması ZORUNLUDUR. Kullanıcılar tarafından okunabilir olması ZORUNLUDUR, ancak son kullanıcıların görmesi amaçlanmamıştır. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. Bu ürün adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
ODM_SKU | Cihaz uygulaması tarafından seçilen ve cihazın belirli yapılandırmalarını (ör. satıldığında cihazla birlikte verilen çevre birimleri) izlemek için kullanılan SKU'yu (Stok Tutma Birimi) içeren isteğe bağlı bir değer. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "[0-9A-Za-z.,_-]" normal ifadesiyle eşleşmesi ZORUNLUDUR |
SERİ | "UNKNOWN" değerini döndürülmesi ZORUNLUDUR. |
ETİKETLER | Derlemeyi daha fazla ayırt etmek için cihaz uygulayıcısı tarafından seçilen, virgülle ayrılmış bir etiket listesi. Etiketlerin 7 bit ASCII olarak kodlanabilmesi ve "^[a-zA-Z0-9._-]+" normal ifadesiyle eşleşmesi ZORUNLUDUR. Etiketlerin, Android platform imzalama yapılandırmasına karşılık gelen üç değerden birine sahip olması ZORUNLUDUR: sürüm anahtarları, dev-anahtarları ve test anahtarları. |
SÜRE | Derlemenin gerçekleştiği zaman damgasını temsil eden değer. |
TÜR | Cihaz uygulayıcısı tarafından seçilen ve derlemenin çalışma zamanı yapılandırmasını belirten değer. Bu alanda, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri ZORUNLUDUR: user, userdebug veya eng. |
KULLANICI | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı ya da kullanıcı kimliği. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili bir şart yoktur. |
SECURITY_PATCH | Bir derlemenin güvenlik yaması seviyesini gösteren değer. Derlemenin, belirlenen Android Kamu Güvenliği Bülteni'nde açıklanan sorunlardan hiçbirine karşı herhangi bir güvenlik açığına karşı herhangi bir savunmasız olmadığının belirtilmesi ZORUNLUDUR. [YYYY-AA-GG] biçiminde olmalı ve Android Kamu Güvenliği Bülteni'nde veya Android Güvenlik Danışmanı'nda (örneğin, "2015-11-01") belgelenen tanımlı bir dizeyle eşleşmelidir. |
TABAN_İşletim Sistemi | Android Kamu Güvenliği Bülteni'nde sağlanan yamalar haricinde, derlemenin FINGERPrint parametresini temsil eden, aksi takdirde bu derlemeyle aynı olan değer. Doğru değeri Bildirmelidir. Böyle bir derleme mevcut değilse boş bir dize ("") bildirin. |
TAKİPÇİ | Cihaz uygulayıcısı tarafından seçilen, cihazda kullanılan belirli dahili bootloader sürümünü tanımlayan, kullanıcıların okuyabileceği bir değer. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. |
getRadioVersion() | Cihaz uygulayıcısı tarafından seçilmiş, cihazda kullanılan dahili radyo/modem sürümünü tanımlayan bir değerin insan tarafından okunabilecek biçimde OLMALIDIR. Bir cihazda dahili radyo/modem yoksa NULL değeri döndürmesi gerekir. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. |
getSerial() | Aynı MODEL ve ÜRETİCİYE sahip cihazlarda kullanılabilir ve benzersiz olması GEREKEN bir donanım seri numarası OLMALIDIR. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve "^[a-zA-Z0-9]+$" normal ifadesiyle eşleşmesi ZORUNLUDUR. |
3.2.3. Amaç Uyumluluğu
3.2.3.1. Genel Uygulama Amaçları
Android amaçları, uygulama bileşenlerinin diğer Android bileşenlerinden işlev istemesine izin verir. Android yukarı akış projesi, yaygın işlemleri gerçekleştirmek için çeşitli intent kalıpları uygulayan uygulamaların bir listesini içerir.
Cihaz uygulamaları:
- [C-SR-1] Bir veya daha fazla uygulamanın veya hizmet bileşenini burada listelenen uygulama amaçları tarafından tanımlanan tüm genel amaç filtre kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini önceden yüklemesi ÖNERİLİR. Diğer bir deyişle, SDK'da açıklandığı şekilde bu yaygın uygulama amaçlarıyla ilgili geliştiricilerin beklentilerini karşılamalıdır.
Her cihaz türüne yönelik zorunlu uygulama amaçları için lütfen Bölüm 2'ye bakın.
3.2.3.2. Amaç Çözümü
[C-0-1] Android genişletilebilir bir platform olduğundan, cihaz uygulamalarının, Ayarlar dışında bölüm 3.2.3.1'de başvurulan her intent kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına izin vermesi ZORUNLUDUR. Yukarı akış Android açık kaynak uygulaması varsayılan olarak buna olanak tanır.
[C-0-2] Cihaz uygulayıcıları, sistem uygulamalarının bu intent kalıplarını kullanımına özel ayrıcalıklar ETMEMELİ veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bunların kontrolünü üstlenmesini önlememelidir. Bu yasak, kullanıcının hepsinde aynı amaç kalıbını işleyen birden çok uygulama arasında seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünü devre dışı bırakmayı özel olarak içerir ancak bununla sınırlı değildir.
[C-0-3] Cihaz uygulamaları, kullanıcılara intent'ler için varsayılan etkinliği değiştirmeleri için bir kullanıcı arayüzü SAĞLAMALIDIR.
Bununla birlikte, varsayılan etkinlik veri URI'si için daha spesifik bir özellik sağladığında, cihaz uygulamaları 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, üçüncü taraf uygulamalarının belirli web URI amacı türleri için yetkili bir varsayılan uygulama bağlama davranışı bildirmesine yönelik bir mekanizma da içerir. Bu tür yetkili bildirimler bir uygulamanın intent filtresi modellerinde tanımlandığında cihaz uygulamaları:
- [C-0-4] yukarı akış Android Açık Kaynak Projesi'nde Paket Yöneticisi tarafından uygulandığı şekilde Dijital Öğe Bağlantıları spesifikasyonunda tanımlanan doğrulama adımlarını gerçekleştirerek tüm intent filtrelerini doğrulamaya çalışmalıdır.
- [C-0-5], uygulamanın yüklenmesi sırasında intent filtrelerini doğrulamaya çalışmalı ve başarıyla doğrulanan tüm URI intent filtrelerini URI'leri için varsayılan uygulama işleyiciler olarak ayarlamalıdır.
- Belirli URI intent filtreleri, başarılı bir şekilde doğrulanırken diğer aday URI filtrelerinin doğrulaması başarısız olursa URI'ları için varsayılan uygulama işleyici olarak AYARLANABİLİR. Bir cihaz uygulaması bunu yapıyorsa ayarlar menüsünde kullanıcıya uygun her URI için kalıp geçersiz kılmalarının sağlanması ZORUNLUDUR.
- Kullanıcıya Ayarlar'da uygulama bazında Uygulama Bağlantıları kontrolleri aşağıdaki gibi GEREKLİDİR:
- [C-0-6] Kullanıcının, bir uygulamanın varsayılan uygulama bağlantıları davranışını bir bütün olarak geçersiz kabilmesi ZORUNLUDUR: Her zaman açık, her zaman sor veya hiçbir zaman açılmamalıdır. Tüm aday URI amaç filtreleri için eşit şekilde uygulanmalıdır.
- [C-0-7] Kullanıcının aday URI amaç filtrelerinin bir listesini görebilmesi ZORUNLUDUR.
- Cihaz uygulaması, kullanıcıya amaç filtresi temelinde başarıyla doğrulanan belirli aday URI amaç filtrelerini geçersiz kılma imkanı SAĞLAYABİLİR.
- [C-0-8] Cihaz uygulaması, bazı aday URI amaç filtrelerinin başarıyla doğrulanmasına izin verirken bazıları da başarısız olabiliyorsa cihaz uygulamasının, kullanıcılara belirli aday URI amaç filtrelerini görüntüleme ve geçersiz kılma imkanı ZORUNLUDUR.
3.2.3.3. Niyet Ad Alanları
- [C-0-1] Cihaz uygulamaları, android.* veya com.android.* ad alanındaki bir ACTION, CATEGORY veya başka bir anahtar dizesini kullanan yeni amaç ya da yayın amacı kalıplarına uygun herhangi bir Android bileşeni İÇERMEMELİDİR.
- [C-0-2] Cihaz uygulamaları, başka bir kuruluşa ait bir paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanan yeni bir amaca ya da yayın amacı kalıplarına uyan herhangi bir Android bileşeni İÇERMEMELİDİR.
- [C-0-3] Cihaz uygulamaları, bölüm 3.2.3.1'de listelenen amaç kalıplarından hiçbirini DEĞİŞTİRMEMELİ veya GENİŞLETMEMELİDİR.
- Cihaz uygulamaları, açık ve açık bir şekilde kendi kuruluşlarıyla ilişkilendirilmiş ad alanlarını kullanan amaç kalıplarını içerebilir. Bu yasak, bölüm 3.6'da Java dili sınıfları için belirtilen yasakla benzerdir.
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ınlama konusunda platforma ihtiyaç duyar.
Cihaz uygulamaları:
- [C-0-1], SDK dokümanlarında açıklanan uygun sistem etkinliklerine yanıt olarak burada listelenen genel yayın amaçlarını YAYINLAMALIDIR. Arka plan uygulamalarına yönelik sınırlama, SDK belgelerinde de açıklandığından bu şartın bölüm 3.5 ile çakışmadığını unutmayın. Ayrıca belirli yayın amaçları, donanım desteğine bağlı olarak belirlenir. Cihaz, gerekli donanımı desteklemesi durumunda hedefleri yayınlaması ve davranışı SDK belgelerine uygun şekilde sağlaması GEREKİR.
3.2.3.5. Koşullu Uygulama Amaçları
Android, kullanıcıların Ana ekran veya SMS gibi varsayılan uygulamalarını seçmeleri için kolay bir yol sağlayan ayarlar içerir.
Mantıklı olduğu durumlarda, cihaz uygulamalarının benzer bir ayarlar menüsü sağlaması ve aşağıdaki SDK belgelerinde açıklanan amaç filtreleme kalıbı ve API yöntemleriyle uyumlu olması ZORUNLUDUR.
Cihaz uygulamaları android.software.home_screen
bildiriminde bulunursa:
- [C-1-1], Ana Ekran için varsayılan uygulama ayarları menüsü
gösterme
android.settings.HOME_SETTINGS
niyetine uygun hareket ETMELİDİR.
Cihaz uygulamaları android.hardware.telephony.calling
bildiriminde bulunursa:
[C-2-1], varsayılan SMS uygulamasını değiştirmeye yönelik bir iletişim kutusu göstermek üzere
android.provider.Telephony.ACTION_CHANGE_DEFAULT
amacını çağıran bir ayarlar menüsü SAĞLAMALIDIR.[C-2-2] Kullanıcının varsayılan Telefon uygulamasını değiştirmesine izin veren bir iletişim kutusu gösterilmesi için
android.telecom.action.CHANGE_DEFAULT_DIALER
amacına uygun hareket edilmelidir.- Önceden yüklenmiş Telefon uygulamasının kullanıldığı acil durum aramaları dışında, gelen ve giden çağrılar için kullanıcı tarafından seçilen varsayılan Telefon uygulamasının kullanıcı arayüzü kullanılması ZORUNLUDUR.
[C-2-3], android.telecom.action.CHANGE_PHONE_ACCOUNTS amacının kullanıcı tarafından
PhoneAccounts
ile ilişkiliConnectionServices
yapılandırmasını ve telekomünikasyon servis sağlayıcısının giden aramalar yapmak için kullanacağı varsayılan bir Telefon Hesabı'nı kullanmasını GEREKTİRMELİDİR. AOSP uygulaması, "Aramalar" ayarlar menüsüne "Arama Hesapları seçeneği" menüsü ekleyerek bu şartı karşılar.[C-2-4]
android.app.role.CALL_REDIRECTION
rolüne sahip bir uygulama içinandroid.telecom.CallRedirectionService
öğesine İZİN VERMELİDİR.[C-2-5], kullanıcıya
android.app.role.CALL_REDIRECTION
rolüne sahip bir uygulama seçme hakkını SAĞLAMALIDIR.[C-2-6] android.intent.action.SENDTO ve android.intent.action.VIEW hedeflerini dikkate almalı ve SMS mesajı göndermek/görüntülemek için bir etkinlik sağlamalıdır.
[C-SR-1] android.intent.action.ANSWER, android.intent.action.CALL, android.intent.action.CALL_Button, android.intent.action.VIEW ve android.intent.action.DIAL hedeflerini bir araya getiren ve SDK'da işleyebilen önceden yüklenmiş bir numara çevirici uygulama olarak açıklanmış ve bu amaca ulaşabilen SDK'da açıklanmış bir çevirici uygulaması olarak açıklanmış, ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları android.hardware.nfc.hce
bildiriminde bulunursa:
- [C-3-1], Temassız ödeme için varsayılan bir uygulama ayarları menüsü gösterme android.settings.NFC_PAYMENT_SETTINGS amacına uygun olmalıdır.
- [C-3-2], android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT amacına uygun olarak, kullanıcıdan SDK'da açıklandığı şekilde belirli bir kategori için varsayılan kart emülasyon hizmetini değiştirmesini isteyen bir iletişim kutusu açan bir etkinlik göstermek ZORUNLUDUR.
Cihaz uygulamaları android.hardware.nfc
bildiriminde bulunursa:
- [C-4-1], geliştiricilerin SDK'da açıklandığı şekilde bu amaçlara ilişkin beklentilerini karşılayan bir etkinliği göstermek için android.nfc.action.NDEF_DISCOVERED, android.nfc.action.TAG_DISCOVERED ve android.nfc.action.TECH_DISCOVERED amaçlarına uygun hareket etmelidir.
Cihaz uygulamaları android.hardware.bluetooth
bildiriminde bulunursa:
- [C-5-1], "android.bluetooth.adapter.action.REQUEST_ENABLE" amacını dikkate almalı 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ını dikkate almalı ve bulunabilir mod isteyen bir sistem etkinliğini göstermelidir.
Cihaz uygulamaları DND özelliğini destekliyorsa:
- [C-6-1], amaca
ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS
yanıt verecek bir etkinlik uygulamalıdır. Bu da UI_MODE_TYPE_NORMAL uygulamalarında, kullanıcının DND politika yapılandırmalarına uygulama erişimine izin verebileceği veya reddedebileceği bir etkinlik olması ZORUNLUDUR.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına olanak tanıyorsa:
- [C-7-1]
android.settings.INPUT_METHOD_SETTINGS
amacı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ĞLAMALIDIR.
Cihaz uygulamaları, üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-8-1],
android.settings.ACCESSIBILITY_SETTINGS
'ın, ö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 amacını dikkate alması ZORUNLUDUR.
Cihaz uygulamaları Wi-Fi Easy Connect desteği içeriyorsa ve işlevleri üçüncü taraf uygulamalarında kullanıma sunuyorsa:
- [C-9-1], Settings#ACTION_İŞLEM_WIFI_EASY_CONNECT_URI Intent API'lerini SDK dokümanlarında açıklandığı gibi uygulamalıdır.
Cihaz uygulamaları veri tasarrufu modunu sağlıyorsa:
- [C-10-1] Ayarlarda,
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
amacını işleyen ve kullanıcıların izin verilenler listesine uygulama eklemesine veya izin verilenler listesinden uygulama kaldırmasına izin veren bir kullanıcı arayüzü SAĞLANMALIDIR.
Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:
- [C-11-1]'in
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
amacını işleyen bir etkinliğe sahip olması ZORUNLUDUR ama bunu işlemsiz olarak uygulayabilir.
Cihaz uygulamaları, android.hardware.camera.any
üzerinden kamera desteklendiğini beyan ederse:
- [C-12-3]
MediaStore.ACTION_IMAGE_CAPTURE
,MediaStore.ACTION_IMAGE_CAPTURE_SECURE
veMediaStore.ACTION_VIDEO_CAPTURE
amaçlarını SDK dokümanında açıklandığı gibi işlemesi ve yalnızca önceden yüklenmiş Android uygulamalarının işlenmesine izin verilmesi ZORUNLUDUR.
Cihaz uygulamaları android.software.device_admin
bildiriminde bulunursa:
[C-13-1], cihaz yöneticisini sisteme ekleyerek (veya reddetmesine izin vererek) kullanıcıyı getiren bir kullanıcı arayüzü çağırma niyetine
android.app.action.ADD_DEVICE_ADMIN
riayet etmelidir.[C-13-2] android.app.action.PROVISION_MANAGED_PROFILE, android.app.action.SET_NEW_PARENT_PROFILE_Şifre, android.app.action.SET_NEW_Şifre ve android.app.action.START_ENCRYPTION amaçlarına uymalı ve bu amaçların yerine getirilmesini burada sağlayacak bir etkinliğe sahip olmalıdır.
Cihaz uygulamaları android.software.autofill
özellik işaretini beyan ederse:
- [C-14-1], otomatik doldurmayı etkinleştirmek, devre dışı bırakmak ve kullanıcı için varsayılan otomatik doldurma hizmetini değiştirmek amacıyla
AutofillService
veAutofillManager
API'lerini tam olarak uygulamalı ve android.settings.REQUEST_SET_autoFILL_SERVICE amacını dikkate alarak otomatik doldurmayı etkinleştirmek ve devre dışı bırakmak amacıyla varsayılan uygulama ayarları menüsünü göstermelidir.
Cihaz uygulamaları, önceden yüklenmiş bir uygulama içeriyorsa veya üçüncü taraf uygulamalarının kullanım istatistiklerine erişmesine izin vermek istiyorsa:
- [C-SR-2],
android.permission.PACKAGE_USAGE_STATS
iznini beyan eden uygulamaların android.settings.ACTION_USAGE_ACCESS_SETTINGS amacına yanıt olarak kullanım istatistiklerine erişim izni vermek veya bu izinleri iptal etmek için kullanıcının erişebildiği mekanizmalar sunmaları ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, önceden yüklenmiş uygulamalar da dahil olmak üzere herhangi bir uygulamanın kullanım istatistiklerine erişmesine izin vermemeyi amaçlıyorsa:
- [C-15-1] android.settings.ACTION_USAGE_ACCESS_SETTINGS amaç kalıbını işleyen bir etkinliğin hâlâ İÇERMELİ
Cihaz uygulamaları, Ayarlar'da AutofillService_passwordsActivity tarafından belirtilen etkinliklere veya benzer bir mekanizma aracılığıyla kullanıcı şifrelerine yönlendiren bağlantılar sunuyorsa:
- [C-16-1] Yüklü tüm otomatik doldurma hizmetleri için bu tür bağlantıları görüntülemesi ZORUNLUDUR.
Cihaz uygulamaları VoiceInteractionService
özelliğini destekliyorsa ve aynı anda bu API'yi kullanan birden fazla uygulama yüklüyse:
- [C-18-1], ses girişi ve yardım için varsayılan bir uygulama ayarları menüsü göstermek üzere
android.settings.ACTION_VOICE_INPUT_SETTINGS
niyetine uygun hareket etmelidir.
Cihaz uygulamaları android.hardware.audio.output
özelliğini bildirirse:
- [C-SR-3] android.intent.action.TTS_SERVICE, android.speech.tts.engine.INSTALL_TTS_DATA ve android.speech.tts.engine.GET_KEYWORD_TEXT amaçlarının buradaki SDK'da açıklandığı şekilde bu amaçları yerine getirmesini sağlayacak bir etkinliğe sahiptir.
Android, daha önce Rüyalar olarak adlandırılan etkileşimli ekran koruyucular için destek sunar. Ekran Koruyucuları, güç kaynağına bağlı bir cihaz boştayken veya bir masa yuvasına yerleştirildiğinde kullanıcıların uygulamalarla etkileşimde bulunmasına olanak tanır. Cihaz Uygulamaları:
- Ekran koruyucular için destek içermeli ve kullanıcıların
android.settings.DREAM_SETTINGS
amacına karşılık olarak ekran koruyucuları yapılandırmaları için bir ayar seçeneği sunulmalıdır.
Yeni koşullarla başlayın
Cihaz uygulamaları android.hardware.nfc.uicc
veya android.hardware.nfc.ese
bildiriyorsa:
- [C-19-1], NfcAdapter.ACTION_TRANSACTION_DETECTED Intent API'sini uygulaması ZORUNLUDUR (GSM Association teknik spesifikasyonu TS.26 - NFC Cihaz Gereksinimleri'nde "EVT_TRANSACTION" olarak tanımlanır).
Yeni şartları sonlandırma
3.2.4. İkincil/birden çok ekrandaki etkinlikler
Cihaz uygulamaları, normal Android Etkinliklerinin birden fazla ekranda başlatılmasına izin veriyorsa:
- [C-1-1],
android.software.activities_on_secondary_displays
özellik bayrağını AYARLAMALIDIR. - [C-1-2], birincil ekranda çalışan bir etkinliğe benzer şekilde API uyumluluğunu garanti ETMELİDİR.
- Yeni etkinlik başlatıldığında
ActivityOptions.setLaunchDisplayId()
API aracılığıyla bir hedef görüntüleme belirtmeden, yeni etkinliği başlatan etkinlik ile aynı ekrana GEÇMELİDİR. Display.FLAG_PRIVATE
bayrağı içeren bir ekran kaldırıldığında [C-1-4] tüm etkinlikleri yok saymalıdır.- Uygulama,
Activity#setShowWhenLocked()
API'yi kullanarak kilit ekranının üstünde göstermeyi etkinleştirmediği sürece, [C-1-5] cihaz bir güvenli kilit ekranı ile kilitlendiğinde tüm ekranlarda içeriği güvenli bir şekilde gizlemesi ZORUNLUDUR. - Bir etkinlik ikincil ekranda başlatılırsa görüntülenmesi, doğru şekilde çalışması ve uyumluluğun sürdürülmesi için söz konusu ekrana karşılık gelen
android.content.res.Configuration
OLMALIDIR.
Cihaz uygulamaları ikincil ekranlarda normal Android Etkinliklerinin başlatılmasına izin veriyorsa ve ikincil ekranda android.view.Display.FLAG_PRIVATE işareti varsa:
- [C-3-1] Yalnızca ilgili ekranın, sistemin ve ekranda zaten bulunan etkinliklerin sahibi bülten başlatabilmelidir. Herkes android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranı başlatabilir.
3.3. Yerel API Uyumluluğu
Yerel kod uyumluluğu zordur. Bu nedenle, cihaz uygulayıcıları şunlardır:
- [C-SR-1] Yukarı akış Android Açık Kaynak Projesi'nde aşağıda listelenen kitaplıkların uygulamalarını kullanılması ÖNEMLE ÖNERİLİR.
3.3.1. Uygulama İkili Arabirimleri
Yönetilen Dalvik bayt kodu, uygun cihaz donanım mimarisi için derlenmiş bir ELF .so
dosyası olarak .apk
uygulamasında sağlanan yerel kodu çağırabilir. Yerel kod temel işlemci teknolojisine büyük ölçüde bağlı olduğundan Android, Android NDK'da bir dizi Uygulama İkili Arabirimi (ABI) tanımlar.
Cihaz uygulamaları:
- [C-0-1], tanımlı bir veya daha fazla Android NDK ABI'si ile uyumlu OLMALIDIR.
- [C-0-2] Standart Java Yerel Arayüzü (JNI) anlamını kullanarak yerel koda çağrı yapmak için yönetilen ortamda çalışan kod desteğinin bulunması ZORUNLUDUR.
- [C-0-3] aşağıdaki listede yer alan gerekli her kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
- [C-0-5] cihazın desteklediği yerel Uygulama İkili Arabirimi'ni (ABI)
android.os.Build.SUPPORTED_ABIS
,android.os.Build.SUPPORTED_32_BIT_ABIS
veandroid.os.Build.SUPPORTED_64_BIT_ABIS
parametreleriyle doğru bir şekilde raporlamalıdır. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene doğru sıralanmış ABI'lerin virgülle ayrılmış bir listesini oluşturur. [C-0-6] yukarıdaki parametreler aracılığıyla aşağıdaki ABI'ler listesinin bir alt kümesini raporlamalı ve listede olmayan ABI'leri Bildirememelidir.
armeabi
(artık NDK tarafından hedef olarak desteklenmiyor)armeabi-v7a
arm64-v8a
x86
x86-64
[C-0-7], yerel kod içeren uygulamaların kullanabileceği, yerel API'ler sağlayan aşağıdaki kitaplıkların tümünü YAPMALIDIR:
- libaaudio.so (AAudio yerel ses desteği)
- libamidi.so (yerel MIDI desteği, Bölüm 5.9'da açıklandığı şekilde
android.software.midi
özelliği talep edilirse) - libandroid.so (yerel Android etkinlik desteği)
- libc (C kitaplığı)
- libkamera2ndk.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ırma)
- JNI arayüzü
[C-0-8] yukarıda listelenen yerel kitaplıklar için herkese açık işlevler EKLEMEMELİ veya KALDIRILMAMALIDIR.
[C-0-9],
/vendor/etc/public.libraries.txt
içinde doğrudan üçüncü taraf uygulamalarına maruz kalan AOSP olmayan ek kitaplıkların listelenmesi ZORUNLUDUR.[C-0-10] AOSP'de sistem kitaplıkları olarak uygulanan ve sağlanan diğer yerel kitaplıkları, API düzeyi 24 veya üstünü hedefleyen üçüncü taraf uygulamalarına ayrılmış olarak KULLANMAMALIDIR.
[C-0-11], NDK'da tanımlandığı gibi tüm OpenGL ES 3.1 ve Android Extension Bundle işlev simgelerini
libGLESv3.so
kitaplığı aracılığıyla dışa aktarmalıdır. Tüm simgelerin mevcut olması ZORUNLU olsa da, bölüm 7.1.4.1'de karşılık gelen her işlevin tam olarak uygulanması beklenen durumlar daha ayrıntılı olarak açıklanmaktadır.[C-0-12] Temel
Vulkan 1.0Vulkan 1.1 işlev simgelerinin yanı sıraVK_KHR_surface
,VK_KHR_android_surface
,VK_KHR_swapchain
,VK_KHR_maintenance1
veVK_KHR_get_physical_device_properties2
uzantılarının işlev simgelerinilibvulkan.so
kitaplığı üzerinden dışa aktarması ZORUNLUDUR. Tüm simgelerin mevcut olması ZORUNLU olsa da, her bir işlevin tam olarak uygulanmasının ne zaman beklendiği ile ilgili şartlar bölüm 7.1.4.2'de daha ayrıntılı bir şekilde açıklanmaktadır.Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kodu ve başlık dosyaları kullanılarak derlenmelidir.
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'yi desteklediğini bildiriyorsa:
armeabi
yalnızca eski uygulamalarla geriye dönük uyumluluk için olduğundan [C-3-1],armeabi-v7a
öğesini de desteklemeli ve desteğini rapor etmelidir.
Cihaz uygulamaları, armeabi-v7a
ABI desteğini bildiriyorsa bu ABI'yi kullanan uygulamalar için şunları yapar:
[C-2-1],
/proc/cpuinfo
içinde aşağıdaki satırları içermeli ve değerler, başka ABI'ler tarafından okunsa bile aynı cihazda DEĞİŞTİRİLMEMELİDİR.Features:
ve ardından cihazın desteklediği isteğe bağlı ARMv7 CPU özelliklerinin listesi.CPU architecture:
ve ardından cihazın desteklenen en yüksek ARM mimarisini açıklayan bir tam sayı (ör. ARMv8 cihazlar için "8").
[C-2-2] ABI'nın yerel CPU desteği veya yazılım emülasyonu aracılığıyla bir ARMv8 mimarisinde uygulandığı durumlarda bile aşağıdaki işlemlerin her zaman kullanılabilir durumda olması ZORUNLUDUR:
- SWP ve SWPB talimatları.
- CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri.
[C-2-3] Gelişmiş SIMD (NEON olarak da bilinir) uzantısı için destek İÇERMELİDİR.
3.4. Web Uyumluluğu
3.4.1. Web Görünümü Uyumluluğu
Cihaz uygulamaları, android.webkit.Webview
API'nin eksiksiz bir şekilde uygulanmasını sağlıyorsa:
- [C-1-1]
android.software.webview
adlı yeri bildirmeli. - [C-1-2]
android.webkit.WebView
API'nin uygulanması için Android 14 dalında yukarı akış Android Açık Kaynak Projesi'ndeki Chromium Projesi derlemesini kullanması ZORUNLUDUR. [C-1-3] WebView tarafından bildirilen kullanıcı aracısı dizesinin şu biçimde olması ZORUNLUDUR:
Mozilla/5.0 (Linux; Android $(VERSION); [$(MODEL)] [Build/$(BUILD)]; wv) AppleWebKit/537.36 (KHTML, Gecko gibi) Sürüm/4.0 $(CHROMIUM_VER) Mobil Safari/537.36
- $(VERSION) dizesinin değerinin android.os.Build.VERSION.RELEASE değeriyle aynı olması ZORUNLUDUR.
- $(MODEL) dizesi boş OLABİLİR, ancak boş değilse android.os.Build.MODEL ile aynı değere sahip olması ZORUNLUDUR.
- "Build/$(BUILD)" çıkarılabilir, ancak mevcutsa $(BUILD) dizesinin android.os.Build.ID değeriyle aynı olması ZORUNLUDUR.
- $(CHROMIUM_VER) dizesinin değerinin, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium sürümü olması ZORUNLUDUR.
- Cihaz uygulamaları için kullanıcı aracısı dizesinde Mobil kelimesi ATLANABİLİR.
WebView bileşeninin mümkün olduğunca fazla HTML5 özelliği için destek içermesi GEREKİR ve özelliği destekliyorsa HTML5 spesifikasyonuna UYMALIDIR.
[C-1-4] sağlanan içeriği veya uzak URL içeriğini, WebView'u somutlaştıran uygulamadan farklı bir işlemde OLUŞTURMALIDIR. Özellikle ayrı oluşturucu işleminin daha düşük ayrıcalık sahibi olması, ayrı bir kullanıcı kimliği olarak çalışması, uygulamanın veri dizinine erişiminin olmaması, doğrudan ağ erişiminin olmaması ve Bağlayıcı üzerinden yalnızca gereken minimum sistem hizmetlerine erişiminin olması ZORUNLUDUR. WebView'un AOSP uygulaması bu koşulu karşılar.
32 bit olan veya android.hardware.ram.low
özellik bayrağını tanımlayan cihaz uygulamalarının C-1-3'ten muaf tutulacağını unutmayın.
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 şu API'lerin her birini DESTEKLEMELİDİR:
- [C-1-2] HTML5/W3C webstorage API'yi DESTEKLEMELİ, HTML5/W3C IndexedDB API'yi DESTEKLEMELİDİR. Web geliştirme standartları gövdeleri, webstorage yerine IndexedDB'yi tercih etmeye başladıkça IndexedDB'nin gelecekteki Android sürümlerinde gerekli bir bileşen olması beklenmektedir.
- Bağımsız Tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi gönderilebilir.
- Bağımsız Tarayıcı uygulamasında (ister yukarı akış WebKit Tarayıcı uygulamasına ister bir üçüncü taraf yedeğine dayalı olarak) olsun, mümkün olduğunca çok HTML5 desteği KULLANILMALIDIR.
Ancak, cihaz uygulamaları bağımsız bir Tarayıcı uygulaması içermiyorsa:
- [C-2-1], bölüm 3.2.3.1'de açıklanan kamu amacı kalıplarını hâlâ desteklemelidir.
3.5. API Davranış Uyumluluğu
Cihaz uygulamaları:
- [C-0-9] Bölüm 3.5.1'de açıklandığı şekilde kısıtlanmadığı sürece, API davranış uyumluluğunun tüm yüklü uygulamalara uygulandığından emin olması ZORUNLUDUR.
- [C-0-10] yalnızca cihaz uygulayıcıları tarafından seçilen uygulamalar için API davranış uyumluluğu sağlayan izin verilenler listesine ekleme yaklaşımını UYGULAMAMALIDIR.
Her bir API türünün (yönetilen, yazılımlı, yerel ve web) davranışları, yukarı akış Android Açık Kaynak Projesi'nin tercih edilen uygulamasıyla tutarlı olmalıdır. Bazı belirli uyumluluk alanları şunlardır:
- [C-0-1] Cihazlar, standart bir niyetin davranışını veya anlamını DEĞİŞTİRMEMELİDİR.
- [C-0-2] Cihazlar, belirli bir sistem bileşeni türündeki (ör. Service, Activity, ContentProvider vb.) yaşam döngüsü veya yaşam döngüsü anlamlarını DEĞİŞTİRMEMELİDİR.
- [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEMELİDİR.
- Cihazlar, arka plan uygulamalarında uygulanan sınırlamaları DEĞİŞTİRMEMELİDİR.
Daha açık şekilde belirtmek gerekirse arka plan uygulamaları için:
- [C-0-4]
GnssMeasurement
veGnssNavigationMessage
'ten çıkış almak için uygulama tarafından kaydedilen geri çağırmaları yürütmeyi durdurması gerekir. - [C-0-5] ise uygulamaya
LocationManager
API sınıfı veyaWifiManager.startScan()
yöntemi üzerinden sağlanan güncellemelerin sıklığını hız sınırlaması uygulamalıdır. - [C-0-6] Uygulama, API düzeyi 25 veya üstünü hedefliyorsa yayın amacı bir
"signature"
veya"signatureOrSystem"
protectionLevel
izni gerektirmediği ya da 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 VERİLMEMELİDİR. - [C-0-7] Uygulama, API düzeyi 25 veya üstünü hedefliyorsa uygulamanın kullanıcının görebildiği bir görevi işlemek için geçici bir izin verilenler listesine eklenmemesi durumunda, tıpkı uygulama hizmetlerin
stopSelf()
yöntemini çağırmış gibi uygulamanın arka plan hizmetlerini durdurması GEREKİR. - [C-0-8] Uygulama, API düzeyi 25 veya üstünü hedefliyorsa uygulamanın barındırdığı uyanık kalma kilitlerini serbest bırakması GEREKİR.
- [C-0-4]
- [C-0-11] Cihazların,
Security.getProviders()
yönteminden alınan ilk yedi dizi değeri olarak, uygulamadainsertProviderAt()
veyaremoveProvider()
aracılığıyla listeyi değiştirmediği sürece belirtilen sırada ve belirtilen adlarla (Provider.getName()
tarafından döndürüldüğü şekliyle) ilk yedi dizi değeri olarak döndürmesi ZORUNLUDUR. Cihazlar, aşağıda belirtilen sağlayıcı listesinden sonra ek sağlayıcılar döndürebilir.- 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 liste tam kapsamlı değildir. Uyumluluk Test Paketi (CTS), platformun önemli bölümlerini davranış uyumluluğu açısından test eder ancak hepsini test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak uygulamayı uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcıları sistemin önemli bölümlerini yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla edinilen kaynak kodunu kullanmalıdır.
3.5.1. Uygulama Kısıtlaması
Cihaz uygulamaları, uygulamaları kısıtlamak için özel bir mekanizma (ör. SDK'da açıklanan API davranışlarını değiştirme veya kısıtlama) uyguluyorsa ve bu mekanizma Kısıtlanmış Uygulama Bekleme 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 VERMELİDİR.
- [C-1-2] Kullanıcıya, her bir uygulamada bu özel kısıtlamaların tümünü etkinleştirme / devre dışı bırakma hakkının sağlanması ZORUNLUDUR.
[C-1-3], sistem sağlığının kötü davranışına dair kanıt olmadan bu tescilli kısıtlamaları otomatik olarak uygulamamalıdır ancak uygulamalara, takılı kalan uyanık kalma kilitleri, uzun çalışan hizmetler gibi kötü sistem sağlığı davranışlarının ve diğer kriterler gibi kriterler algılanması durumunda kısıtlamalar uygulanabilmesi gerekir. Kriterler, cihaz uygulayıcıları tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili olması ZORUNLUDUR. Uygulamanın pazardaki popülerliğinin düşük olması gibi tamamen sistem sağlığıyla ilgili olmayan diğer ölçütler ölçüt olarak KULLANILMAMALIDIR.
Kullanıcı uygulama kısıtlamalarını manuel olarak devre dışı bıraktığında [C-1-4] bu özel kısıtlamaların uygulamalar için otomatik olarak uygulanmaması ZORUNLUDUR ve kullanıcıya bu özel kısıtlamaları uygulamasını önerebilir.
[C-1-5], bu özel kısıtlamaların bir uygulamaya otomatik olarak uygulanması durumunda kullanıcıları bilgilendirmelidir. Bu tür bilgilerin, bu özel kısıtlamaların uygulanmasından önceki 24 saat içinde sağlanması ZORUNLUDUR.
[C-1-6], bir uygulamadan gelen API çağrıları için ActivityManager.isBackgroundRestricted() yöntemi için true değerinin döndürülmesi ZORUNLUDUR.
[C-1-7] Kullanıcı tarafından açık bir şekilde kullanılan üst ön plan uygulamasını KISITLAMAMALIDIR.
[C-1-8] Bir kullanıcı uygulamayı açıkça kullanmaya başladığında bu özel kısıtlamaların askıya alınması ZORUNLUDUR. Bu da uygulamayı ön plandaki en popüler uygulama haline getirir.
[C-1-10] Özel kısıtlamaların nasıl uygulandığını açıklayan, herkese açık ve net bir belge veya web sitesi ZORUNLUDUR. Bu belge veya web sitesi, Android SDK belgelerinden bağlanabilmelidir ve şunları içermelidir:
- Özel kısıtlamalar için tetikleme koşulları.
- Bir uygulama hangi içerikler ve 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 böyle bir muafiyeti destekleyen uygulamalar, özel kısıtlamalardan nasıl muaf tutulmak isteyebilir?
Bir uygulama cihaza önceden yüklenmişse ve bir kullanıcı tarafından 30 günden uzun süredir açıkça kullanılmıyorsa [C-1-3] [C-1-5] muaf tutulur.
Cihaz uygulamaları, AOSP'de uygulanan uygulama kısıtlamalarının kapsamını genişletirse:
- [C-2-1]Bu dokümanda açıklanan uygulamanın uygulanması ZORUNLUDUR.
3.5.2. Uygulamayı hazırda bekleme
Cihaz uygulamaları, AOSP'ye dahil olan veya AOSP'ye dahil olan özelliğin kapsamını genişleten Uygulamayı hazırda bekletme özelliğini içeriyorsa:
- [C-1-1], [C-1-6] ve [C-1-3] hariç olmak üzere bölüm 3.5.1'deki tüm şartları karşılamalıdır.
- [C-1-2] Uygulamadaki kısıtlamanın, yalnızca kullanıcının uygulamayı bir süredir kullanmadığına dair kanıt olduğunda uygulanması ZORUNLUDUR. Bu sürenin bir ay veya daha uzun olması ÖNEMLE ÖNERİLİR. Kullanım, UsageStats#getLastTimevisible() API'si üzerinden yapılan açık kullanıcı etkileşimiyle veya bir uygulamanın yeni bir API UsageStats#getLastTimeAnyComponentUsed() tarafından izlenecek hizmet bağlamaları, içerik sağlayıcı bağlamaları, açık yayınlar gibi zorla durdurulmuş durumdan çıkmasına neden olacak herhangi bir şekilde tanımlanmalıdır.
- [C-1-3] Kısıtlama, paketin herhangi bir kullanıcı tarafından belirli bir süredir kullanılmadığına dair kanıt olması durumunda tüm cihaz kullanıcılarını etkileyen kısıtlamalar uygulamalıdır. Bu sürenin bir ay veya daha uzun olması ÖNEMLE ÖNERİLİR.
- [C-1-4] uygulamanın; etkinlik amaçlarına, hizmet bağlamalarına, içerik sağlayıcı isteklerine veya açık yayınlara yanıt verememesi GEREKMEMELİDİR.
AOSP'de uygulamayı hazırda bekletme, yukarıdaki şartları 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. Cihaz uygulamaları, üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için aşağıdaki paket ad alanlarında yasaklanmış herhangi bir değişiklik YAPMAMALIDIR (aşağıya bakın):
java.*
javax.*
sun.*
android.*
androidx.*
com.android.*
Yani:
- [C-0-1] Android platformunda herkese açık API'lerde herhangi bir yöntem veya sınıf imzasını değiştirerek ya da sınıfları veya sınıf alanlarını kaldırarak DEĞİŞTİRMEMELİDİR.
- [C-0-2] yukarıdaki ad alanlarında bulunan API'lere herkese açık herhangi bir öğe (sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere alanlar ya da yöntemler gibi) veya Test veya Sistem API'leri EKLEMEMELİDİR. "Herkese açık öğe", yukarı akış Android kaynak kodunda kullanıldığı şekilde "@hide" işaretçisiyle dekore edilmemiş tüm yapılardır.
Cihaz uygulamaları, API'lerin temel uygulamasını değiştirebilir ancak bu tür değişiklikler:
- [C-0-3] herkese açık API'lerin belirtilen davranışını ve Java dili imzasını ETKİLEMEMELİDİR.
- [C-0-4] REKLAMI veya başka bir şekilde geliştiricilere İLİŞKİLENDİRMEMELİDİR.
Ancak cihaz uygulayıcıları standart Android ad alanının dışında özel API'ler ekleyebilir ancak özel API'ler:
- [C-0-5] başka bir kuruluşa ait veya başka bir kuruluşa ait bir ad alanında OLMAMALIDIR. Örneğin, cihaz uygulayıcıları
com.google.*
veya benzer ad alanına API EKLEMEMELİDİR: Bunu yalnızca Google yapabilir. Benzer şekilde, Google diğer şirketlerin ad alanlarına API EKLEMEMELİDİR. - [C-0-6] API'lerin artan bellek kullanımından yalnızca bunları açıkça kullanan uygulamaların (<uses-library> mekanizmasıyla) etkilenmesi için Android'in paylaşılan bir kitaplıkta paketlenmesi ZORUNLUDUR.
Cihaz uygulayıcıları NDK API'lerinin dışında yerel dillerde özel API'ler ekleyebilirler, ancak özel API'ler:
- [C-1-1] burada açıklandığı gibi bir NDK kitaplığında veya başka bir kuruluşun sahip olduğu bir kitaplıkta OLMAMALIDIR.
Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarından birini iyileştirmeyi önerirse (örneğin, mevcut bir API'ye kullanışlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) uygulayıcının source.android.com adresini ziyaret etmesi ve ilgili sitedeki bilgilere göre değişiklikleri ve kodu katkıda bulunma sürecine başlaması GEREKİR.
Yukarıdaki kısıtlamaların, API'leri Java programlama dilinde adlandırmaya ilişkin standart kurallara karşılık geldiğini unutmayın. Bu bölümün amacı, 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 Yürütülebilir (DEX) biçiminin tamamını ve Dalvik bayt kodu spesifikasyonu ve anlamını DESTEKLEMELİDİR.
[C-0-2] Dalvik çalışma zamanlarını yukarı akış Android platformuna uygun şekilde ve aşağıdaki tabloda belirtildiği şekilde bellek tahsis edecek şekilde yapılandırılması GEREKİR. (Ekran boyutu ve ekran yoğunluğu tanımları için bölüm 7.1.1'e bakın.)
Android Çalışma Zamanı'nı (ART), Dalvik Yürütülebilir Biçimi'nin referans yukarı akış uygulamasını ve referans uygulamanın paket yönetim sistemini KULLANMALIDIR.
Çalışma zamanının kararlılığını sağlamak için çeşitli yürütme modlarında ve hedef mimarilerde fuzz testleri yürütülmelidir. Android Açık Kaynak Projesi web sitesinde JFuzz ve DexFuzz'a bakın.
Aşağıda belirtilen bellek değerlerinin minimum değer olarak kabul edildiğini ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceğini unutmayın.
Ekran Düzeni | Ekran Yoğunluğu | Minimum Uygulama Belleği |
---|---|---|
Android Saat | 120 dpi (ldpi) | 32MB |
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) | 32MB |
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) | 128MB | |
560 dpi (560dpi) | 192MB | |
640 dpi (xxxhdpi) | 256MB | |
büyük | 120 dpi (ldpi) | 32MB |
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) | 128MB | |
360 dpi (360dpi) | 160MB | |
400 dpi (400dpi) | 192MB | |
420 dpi (420dpi) | 228MB | |
480 dpi (xxhdpi) | 256MB | |
560 dpi (560dpi) | 384MB | |
640 dpi (xxxhdpi) | 512MB | |
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 başlatıcı uygulaması (ana ekran) ve cihaz başlatıcının (ana ekran) yerini alacak üçüncü taraf uygulamaları için destek bulunur.
Cihaz uygulamaları, üçüncü taraf uygulamalarının cihazın ana ekranını değiştirmesine izin veriyorsa:
- [C-1-1],
android.software.home_screen
adlı platform özelliğini beyan ZORUNLUDUR. - Üçüncü taraf uygulaması, simgesini sağlamak için
<adaptive-icon>
etiketini kullandığında ve simgeleri almak içinPackageManager
yöntemleri çağrıldığında, [C-1-2]AdaptiveIconDrawable
nesnesini döndürmelidir.
Cihaz uygulamaları, kısayolların uygulama içinde sabitlenmesini destekleyen bir varsayılan başlatıcı içeriyorsa:
- [C-2-1]
ShortcutManager.isRequestPinShortcutSupported()
içintrue
adlı kişiyi bildirmesi GEREKİR. - [C-2-2]
ShortcutManager.requestPinShortcut()
API yöntemi aracılığıyla uygulamalar tarafından istenen bir kısayolu eklemeden önce kullanıcıya sorması GEREKİR. - [C-2-3] Uygulama Kısayolları sayfasında belgelendiği gibi, sabitlenmiş kısayolları ile dinamik ve statik kısayolları DESTEKLEMELİDİR.
Buna karşılık, cihaz uygulamaları kısayolların uygulama içinde sabitlenmesini desteklemiyorsa:
- [C-3-1]
ShortcutManager.isRequestPinShortcutSupported()
içinfalse
adlı kişiyi bildirmesi GEREKİR.
Cihaz uygulamaları, üçüncü taraf uygulamaları tarafından Kısayol Yöneticisi API'si üzerinden sağlanan ek kısayollara hızlı erişim sağlayan bir varsayılan başlatıcı uygularsa:
- [C-4-1], belgelenen tüm kısayol özelliklerini (ör. statik ve dinamik kısayollar, sabitleme kısayolları) desteklemeli ve
ShortcutManager
API sınıfının API'lerini tam olarak uygulamalıdır.
Cihaz uygulamaları, uygulama simgeleri için rozetler gösteren bir varsayılan başlatıcı uygulaması içeriyorsa:
- [C-5-1],
NotificationChannel.setShowBadge()
API yöntemine UYMALIDIR. Başka bir deyişle, değertrue
olarak ayarlanırsa uygulama simgesiyle ilişkili görsel bir uygunluk gösterin ve uygulamanın tüm bildirim kanalları değerifalse
olarak ayarladığında uygulama simgesi rozet şeması göstermeyin. - Üçüncü taraf uygulamalar özel API'lerin kullanımı yoluyla özel rozet şemasını desteklediğini belirttiğinde uygulama simgesi rozetlerini kendi özel rozet şemalarıyla geçersiz kılabilir ancak SDK'da açıklanan bildirim rozeti API'leri (
Notification.Builder.setNumber()
veNotification.Builder.setBadgeIconType()
API) aracılığıyla sağlanan kaynakları ve değerleri KULLANMALISINIZ.
Cihaz uygulamaları tek renkli simgeleri destekliyorsa şu simgeler gösterilir:
- [C-6-1] yalnızca bir kullanıcı 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, bir bileşen türü ve uygulamaların son kullanıcıya bir "AppWidget" sunmasını sağlayan 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]
android.software.app_widgets
adlı platform özelliği için destek beyanı ZORUNLUDUR. [C-1-2] AppWidget'lar için yerleşik destek içermeli ve AppWidget'ları eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü fırsatları sunmak ZORUNLUDUR
[C-1-3] standart ızgara boyutunda 4x4 olan widget'ları oluşturabilmesi ZORUNLUDUR. Ayrıntılar için Android SDK dokümanlarındaki App Widget DesignGuidelines bölümüne bakın.
Kilit ekranında uygulama widget'ları DESTEKLENEBİLİR.
Cihaz uygulamaları, üçüncü taraf uygulama widget'larını ve kısayolların uygulama içinde sabitlemesini destekliyorsa:
- [C-2-1]
AppWidgetManager.html.isRequestPinAppWidgetSupported()
içintrue
adlı kişiyi bildirmesi GEREKİR. - [C-2-2]
AppWidgetManager.requestPinAppWidget()
API yöntemi aracılığıyla uygulamalar tarafından istenen bir kısayolu eklemeden önce kullanıcıya sorması GEREKİR.
3.8.3. Bildirimler
Android, üçüncü taraf uygulama geliştiricilerin 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ı önemli olaylardan haberdar etmesine ve kullanıcıların dikkatini çekmesine olanak tanıyan Notification
ve NotificationManager
API'lerini içerir.
3.8.3.1. Bildirimlerin Sunumu
Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli etkinliklerden haberdar etmesine olanak tanıyorsa:
- [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 desteklemelidir. Örneğin, cihaz uygulamasında titreşim varsa titreşim API'lerini doğru şekilde uygulaması GEREKİR. Bir cihaz uygulamasında donanım yoksa ilgili API'lerin işlemsiz olarak uygulanması ZORUNLUDUR. 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ın (simgeler, animasyon dosyaları vb.) doğru şekilde oluşturulması ZORUNLUDUR, ancak bildirimler için referans olarak kullanılan Android Açık Kaynak uygulamasının sağladığından alternatif bir kullanıcı deneyimi sağlayabilir.
- [C-1-3], bildirimleri güncellemek, kaldırmak ve gruplandırmak için API'lerin açıklandığı davranışları benimsemeli ve doğru bir şekilde uygulamalıdır.
- [C-1-4], SDK'da belirtilen NotificationChannel API'sinin tüm davranışını sağlamalıdır.
- [C-1-5] Bir kullanıcıya, her kanal ve uygulama paketi düzeyi için belirli bir üçüncü taraf uygulamasının bildirimini engelleme ve değiştirme olanağı sunmalıdır.
- [C-1-6] Silinen bildirim kanallarını görüntülemek için kullanıcıya da ödeme imkanı SUNMALIDIR.
[C-1-7] Ek kullanıcı etkileşimi olmadan bildirim metniyle birlikte Notification.MessagingStyle aracılığıyla sağlanan tüm kaynakları (resimler, çıkartmalar, simgeler vb.) doğru şekilde OLUŞTURMALIDIR. Örneğin, setGroupConversation üzerinden ayarlanan bir grup görüşmesinde android.app.Person üzerinden sağlanan simgeler de dahil olmak üzere tüm kaynakların gösterilmesi ZORUNLUDUR.
[C-SR-1] Bildirim İşleyici izni verilen uygulamalara gösterilen bildirimleri kontrol etmesi için kullanıcıya fırsat vermesi ÖNERİLİR. Kullanıcının bu tür her bir bildirim dinleyicisi için bu işleyiciye hangi bildirim türlerinin aktarılacağını kontrol edebilmesi için ayrıntı düzeyi ZORUNLUDUR. Bu türler "ileti dizileri", "uyarı verme", "sessiz" ve "önemli devam eden" bildirimleri İÇERMELİDİR.
[C-SR-2] Kullanıcıların, belirli bir bildirim dinleyicisine bildirim göndermemesi için hariç tutulacak uygulamaları belirtme olanağı sunar.
[C-SR-3] Kullanıcı bildirimi birden çok kez kapattıktan sonra, kullanıcıya belirli bir üçüncü taraf uygulamasının bildirimini, her kanal ve uygulama paketi düzeyi için otomatik olarak engellemesi ÖNERİLİR.
Zengin bildirimler DESTEKLENMELİDİR.
Uyarı bildirimleri olarak daha yüksek öncelikli bazı bildirimler SUNULMALIDIR.
Bir kullanıcının bildirimleri ertelemeye uygun olması GEREKİR.
Yalnızca üçüncü taraf uygulamalarının, sürücünün dikkatinin dağılması gibi güvenlik sorunlarını azaltmak için kullanıcıları önemli etkinlikler hakkında bilgilendirebileceği zamanların görünürlüğünü ve zamanlamasını yönetebilir.
Android 11, MessagingStyle'ı kullanan bildirimler olan ve yayınlanmış bir Kişiler Kısayol Kimliği sağlayan sohbet bildirimleri için destek sunar.
Cihaz uygulamaları:
- [C-SR-4] Devam eden ön plan hizmeti bildirimleri ve
importance:high
bildirimleri hariç görüşme dışı bildirimlerinconversation notifications
öncesinde gruplandırılması ve görüntülenmesi ÖNERİLİR.
Cihaz uygulamaları conversation notifications
'i destekliyorsa ve uygulama bubbles
için gerekli verileri sağlıyorsa:
- [C-SR-5] Bu görüşmeyi balon olarak göstermesi ÖNEMLE ÖNERİLİR. AOSP uygulaması, varsayılan Sistem Kullanıcı Arayüzü, Ayarlar ve Başlatıcı ile bu gereksinimleri karşılar.
Cihaz uygulamaları zengin bildirimleri destekliyorsa:
- [C-2-1], sunulan kaynak öğeleri için
Notification.Style
API sınıfı ve alt sınıfları aracılığıyla sağlanan kaynakları tam olarak kullanmalıdır. Notification.Style
API sınıfı ve alt sınıflarında tanımlanan her bir kaynak öğesini (ör. simge, başlık ve özet metin) SUNMALISINIZ.
Uyarı bildirimleri, kullanıcının bulunduğu yüzeyden bağımsız olarak gelen kullanıcılara gönderilen bildirimlerdir. Cihaz uygulamaları, uyarı bildirimlerini destekliyorsa:
- [C-3-1], uyarı bildirimleri sunulduğunda
Notification.Builder
API sınıfında açıklanan şekilde uyarı bildirimi görünümünü ve kaynakları kullanmalıdır. - [C-3-2]
Notification.Builder.addAction()
aracılığıyla sağlanan işlemleri, SDK'da açıklandığı gibi ek kullanıcı etkileşimi olmadan bildirim içeriğiyle birlikte görüntülemelidir.
3.8.3.2. Bildirim Dinleyici Hizmeti
Android, yayınlanan veya güncellenen tüm bildirimlerin bir kopyasını (kullanıcı tarafından açıkça etkinleştirildiğinde) uygulamaların bir kopyasını almasına izin veren NotificationListenerService
API'lerini içerir.
Cihaz uygulamaları:
- [C-0-1], Bildirim nesnesine ekli tüm meta veriler de dahil olmak üzere, bu tür yüklü ve kullanıcı tarafından etkinleştirilen dinleyici hizmetlerinin tümünün bildirimlerinin doğru ve hızlı bir şekilde güncellenmesi ZORUNLUDUR.
- [C-0-2],
snoozeNotification()
API çağrısına uymalı, bildirimi kapatıp API çağrısında ayarlanan erteleme süresinden sonra geri arama yapmalıdır.
Cihaz uygulamalarının, bildirimleri erteleyebileceği bir kullanıcı varsa:
- [C-1-1], ertelenen bildirim durumunu
NotificationListenerService.getSnoozedNotifications()
gibi standart API'ler aracılığıyla düzgün bir şekilde yansıtmalıdır. - [C-1-2], kalıcı/ön plan hizmetlerinden gelen olmadıkları sürece, bu kullanıcıya, yüklenen her üçüncü taraf uygulamasının bildirimlerini ertelemek için fırsat sunmalıdır.
3.8.3.3. DND (Rahatsız Etmeyin) / Öncelik Modu
Cihaz uygulamaları, DND özelliğini (Öncelik Modu olarak da adlandırılır) destekliyorsa:
- [C-1-1] Cihaz uygulaması, kullanıcıya üçüncü taraf uygulamalarının DND politika yapılandırmasına erişim izni vermesi veya bunu reddetmesi için bir yol sunduğunda, kullanıcıların oluşturduğu ve önceden tanımlanmış kuralların yanı sıra uygulamalar tarafından oluşturulan Otomatik DND kurallarının da görüntülenmesi ZORUNLUDUR.
- [C-1-3],
NotificationManager.Policy
ile iletilensuppressedVisualEffects
değerlerine riayet etmelidir. Bir uygulama supPRESSED_EF_SCREEN_OFF veya supPRESSED_EF_SCREEN_ON işaretlerinden birini ayarlamışsa DND ayarları menüsünde görsel efektlerin engellendiğini kullanıcıya BELİRTMELİDİR.
3.8.4. Assist API'ler
Android, uygulamaların mevcut bağlamla ilgili ne kadar bilginin cihazdaki asistanla paylaşılacağını seçmesine olanak tanımak için Destek API'leri içerir.
Cihaz uygulamaları, Destek işlemini destekliyorsa:
- [C-2-1], bağlam paylaşıldığında, bunu son kullanıcıya açıkça belirtmek için aşağıdakilerden birini yapmalıdır:
- Asistan uygulaması bağlama her eriştiğinde, ekranın kenarlarında Android Açık Kaynak Projesi uygulamasının süresini ve parlaklığını karşılayan veya aşan beyaz bir ışık görüntüler.
- Varsayılan ses girişi ve asistan uygulaması ayarları menüsünden kullanıcıya ikiden daha az gezinme imkanı sunan ve içeriği yalnızca kullanıcı tarafından özel bir kelime veya yardım navigasyon tuşu girişi aracılığıyla açıkça çağrıldığında paylaşan önceden yüklenmiş asistan uygulamaları için.
- [C-2-2] Bölüm 7.2.3'te açıklandığı gibi, yardım uygulamasını başlatmak için belirtilen etkileşimin, kullanıcı tarafından seçilen destek uygulamasını, diğer bir deyişle
VoiceInteractionService
uygulamasını kullanan bir uygulamayı veyaACTION_ASSIST
amacını işleyen bir etkinliği başlatması ZORUNLUDUR.
3.8.5. Uyarılar ve Kısa Mesajlar
Uygulamalar Toast
API'yi kullanarak son kullanıcıya kısa bir süre sonra kaybolan, kalıcı olmayan kısa dizeler gösterebilir ve TYPE_APPLICATION_OVERLAY
pencere türü API'yi kullanarak uyarı pencerelerini diğer uygulamaların üzerinde yer paylaşımlı olarak gösterebilir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
[C-1-1], kullanıcıya, bir uygulamanın
TYPE_APPLICATION_OVERLAY
kullanan uyarı pencerelerini görüntülemesini engelleme imkanı sunmalıdır. AOSP uygulaması, bildirim gölgesinde denetimler bulundurarak bu koşulu karşılar.[C-1-2], Toast API'yi dikkate almalı ve uygulamalardan gelen Toast'ları son kullanıcılara oldukça görünür bir şekilde görüntülemelidir.
3.8.6. Temalar
Android, uygulamaların bir Etkinliğin veya uygulamanın tamamında stilleri uygulaması için bir mekanizma olarak "tema" sağlar.
Android, uygulama geliştiricilerin Android SDK'sı tarafından tanımlanan Holo teması görünümü ve tarzına uymak istedikleri takdirde kullanmaları için bir dizi tanımlı stil olarak "Holo" ve "Materyal" tema ailesini içerir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] uygulamalarda gösterilen Holo teması özelliklerinden hiçbirini DEĞİŞTİRMEMELİDİR.
- [C-1-2] "Materyal" tema ailesini DESTEKLEMELİ ve Materyal tema özelliklerini veya uygulamalarda gösterilen öğelerini DEĞİŞTİRMEMELİDİR.
[C-1-3] Roboto'nun desteklediği diller için "sans-serif" yazı tipi ailesini Roboto sürüm 2.x olarak ayarlamalı veya kullanıcıya "sans-serif" yazı tipi ailesinde kullanılan yazı tipini Roboto'nun desteklediği diller için Roboto sürüm 2.x olarak değiştirme imkanının sağlanması ZORUNLUDUR.
[C-1-4]
Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
ürününün AOSP belgelerinde belirtildiği gibi dinamik renk ton paletleri OLUŞTURMALIDIR (bkz.android.theme.customization.system_palette
veandroid.theme.customization.theme_style
).[C-1-5],
Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
belgelerinde (bkz.android.theme.customization.theme_styles
) belirtilen renk teması stillerini kullanarak dinamik renk ton paletleri oluşturmalısınız (ör.TONAL_SPOT
,VIBRANT
,EXPRESSIVE
,SPRITZ
,RAINBOW
,FRUIT_SALAD
, veMONOCHROMATIC
).android.theme.customization.system_palette
ile gönderildiğinde dinamik renk tonal paletleri oluşturmak için kullanılan "kaynak rengi" (Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
bölümünde belgelendiği gibi).[C-1-6]
CAM16
renk değerinin 5 veya daha büyük olması ZORUNLUDUR.Aralarından seçim yapabileceğiniz birden fazla geçerli kaynak rengi sağlayan
com.android.systemui.monet.ColorScheme#getSeedColors
aracılığıyla duvar kağıdından türetilmesi GEREKİR.Sağlanan renklerden hiçbiri yukarıdaki kaynak renk gereksinimini karşılamıyorsa
0xFF1B6EF3
değerini kullanmanız GEREKİR.
Android ayrıca cihaz temasının cihaz temasının görünümü ve tarzıyla uyumlu olmasını isteyen uygulama geliştiricilerinin kullanabileceği tanımlı stiller olarak bir "Cihaz Varsayılanı" tema ailesi içerir.
- Cihaz uygulamaları, uygulamalara sunulan Cihaz Varsayılan teması özelliklerini değiştirebilir.
Android, yarı saydam sistem çubuklarına sahip bir varyant temasını destekler. Bu özellik, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içeriğiyle doldurmaları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ı bir sistem durum çubuğu içeriyorsa, bunlar:
- [C-2-1] Sistem durum simgelerinde (sinyal gücü ve pil seviyesi gibi) ve sistem tarafından gönderilen bildirimlerde, simge sorunlu bir durum belirtmiyorsa veya bir uygulama WindowInsetsController#APPEARANCE_LIGHT_STATUS_BARS işaretini kullanarak ışıklı bir durum çubuğu istemedikçe beyaz KULLANILMALIDIR.
- [C-2-2] Bir uygulama ışık durum çubuğu istediğinde, Android cihaz uygulamalarının sistem durum simgelerinin rengini siyah olarak değiştirmesi (ayrıntılar için R.style'a bakın) ZORUNLUDUR.
3.8.7. Animasyonlu Duvar Kağıtları
Android, bir bileşen türü ile uygulamaların bir veya daha fazla "Animasyonlu Duvar Kağıdı"nı göstermesine olanak tanıyan API ile yaşam döngüsünü tanımlar. Animasyonlu duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak görüntülenen, sınırlı giriş özelliklerine sahip animasyonlar, desenler veya benzer resimlerdir.
Donanım, tüm animasyonlu duvar kağıtlarını işlevsel bir sınırlama olmadan, diğer uygulamalar üzerinde olumsuz bir etkiye neden olmadan makul bir kare hızında çalıştırabiliyorsa güvenilir bir şekilde animasyonlu duvar kağıtları çalıştırabilir. Donanımdaki sınırlamalar, duvar kağıtlarının ve/veya uygulamaların çökmesine, bozulmasına, aşırı CPU ya da pil gücü harcanmasına veya kabul edilemez düşük kare hızlarında çalışmasına neden oluyorsa donanımın animasyonlu duvar kağıdını çalıştıramadığı kabul edilir. Örneğin, bazı animasyonlu duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamı kullanabilir. Animasyonlu duvar kağıdı, birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir şekilde çalışmaz çünkü bir OpenGL bağlamının animasyonlu duvar kağıdı kullanımı, OpenGL bağlamı kullanan diğer uygulamalarla da çakışabilir.
- Yukarıda açıklandığı gibi animasyonlu duvar kağıtlarını güvenilir bir şekilde çalıştırabilen cihaz uygulamaları, animasyonlu duvar kağıtları UYGULAMALIDIR.
Cihaz uygulamaları animasyonlu duvar kağıtları uyguluyorsa:
- [C-1-1] Platform özellik bayrağı android.software.live_wallpaper'ı BİLDİRMELİDİR.
3.8.8. Etkinlik Değiştirme
Yukarı akış Android kaynak kodunda, genel bakış ekranı bulunur. Bu, görevler arasında geçiş yapmak ve son erişilen aktiviteler ile görevleri görüntülemek için sistem düzeyinde bir kullanıcı arayüzüdür. Bu arayüzde, uygulamanın kullanıcının uygulamadan son ayrıldığı andaki grafik durumunun küçük resmi kullanılır.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı şekilde son kullanılanlar işlevi gezinme tuşu dahil, cihaz uygulamaları arayüzü değiştirebilir.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı şekilde son kullanılanlar işlevi gezinme tuşunu içeren cihaz uygulamaları arayüzü değiştirirse:
- [C-1-1] görüntülenen en az 7 etkinliği DESTEKLEMELİDİR.
- Aynı anda en az 4 etkinliğin başlığı görüntülenmelidir.
- [C-1-2] ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği açıp kapatması için bir ayarlar menüsü sunmalıdır.
- Son kullanılan öğelerde vurgu rengi, simge, ekran başlığı GÖRÜNTÜLEMELİDİR.
- Kapanış mesajı ("x") GÖRÜNTÜLEMELİDİR, ancak kullanıcı ekranlarla etkileşime geçene kadar bu işlem ertelenebilir.
- Önceki etkinliğe kolayca geçiş yapmak için bir kısayol uygulanmalıdır.
- Son kullanılanlar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işleminin TEŞVİK EDİLMESİ GEREKİR.
- Destekleniyorsa, son işlevler tuşuna uzun süre basıldığında bölünmüş ekran çoklu pencere modunun tetiklenmesi GEREKİR.
- İlişkili sonları birlikte hareket eden bir grup olarak GÖRÜNTÜLENEBİLİR.
- [C-SR-1] Genel bakış ekranı için yukarı akış Android kullanıcı arayüzünü (veya küçük resim tabanlı benzer bir arayüzü) kullanmanız ÖNEMLE ÖNERİLİR.
3.8.9. Giriş Yönetimi
Android'de Giriş Yönetimi ve üçüncü taraf giriş yöntemi düzenleyicileri için destek bulunur.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına olanak tanıyorsa:
- [C-1-1], android.software.input_methods platform özelliğini bildirmeli ve IME API'lerini Android SDK belgelerinde tanımlandığı gibi desteklemelidir.
3.8.10. Kilit Ekranı Medya Kontrolü
Android 5.0 Remote Control Client API'nin desteği, medya uygulamalarının kilit ekranında görüntülenen oynatma kontrolleri ile entegre olmasına olanak tanıyan Medya Bildirim Şablonu'nun yerini almıştır.
3.8.11. Ekran koruyucular (eski adıyla İlham Sahneleri)
Ekran koruyucuları yapılandırma amacına yönelik ayarlar için bölüm 3.2.3.5'e 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 durumunu GÖRÜNTÜLEMELİDİR.
- [C-1-3] Ayarlar'daki Konum menüsünde konum modlarını GÖRÜNTÜLEMEMELİDİR.
3.8.13. Unicode ve Yazı Tipi
Android, Unicode 10.0'da tanımlanan emoji karakterleri için destek sunar.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] bu emoji karakterlerini renk glifiyle işleyebilmesi ZORUNLUDUR.
- [C-1-2] Aşağıdakiler 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-yoğunluklu, sans-serif-condensed-light (cihazda kullanılabilen diller için).
- Latince, Genişletilmiş A, B, C ve D aralıkları ile Unicode 7.0 para birimi simge blokundaki tüm glifler dahil olmak üzere Latin, Yunan ve Kiril alfabesinin tam Unicode 7.0 kapsamı.
- [C-1-3] Sistem görüntüsündeki NotoColorEmoji.tff dosyası KALDIRILMAMALIDIR veya DEĞİŞTİRİLMEMELİDİR. (NotoColorEmoji.tff'de emojiyi geçersiz kılmak için yeni bir emoji yazı tipi eklenebilir.)
- Unicode Teknik Rapor #51'de belirtilen şekilde, cilt tonunu ve çeşitli aile emojilerini DESTEKLEMELİDİR.
Cihaz uygulamaları bir IME içeriyorsa:
- Kullanıcıya bu emoji karakterleri için bir giriş yöntemi SAĞLANMALIDIR.
Android, Myanmar yazı tiplerini oluşturma desteği içerir. Myanmar'da, Myanmar dillerini oluşturmak için yaygın olarak "Zawgyi" olarak bilinen, Unicode'a uygun olmayan birkaç yazı tipi bulunur.
Cihaz uygulamaları Burmaca desteği içeriyorsa:
- [C-2-1] Metnin varsayılan olarak Unicode ile uyumlu yazı tipiyle oluşturulması ZORUNLUDUR. Kullanıcı, dil seçicide bu yazı tipini seçmedikçe Unicode ile uyumlu olmayan yazı tipi varsayılan yazı tipi olarak AYARLANMAMALIDIR.
- [C-2-2], cihazda Unicode ile uyumlu olmayan bir yazı tipi destekleniyorsa bir Unicode yazı tipini ve Unicode ile uyumlu olmayan bir yazı tipini desteklemektedir. Unicode ile uyumlu olmayan yazı tipi, Unicode yazı tipini KALDIRILMAMALIDIR veya Üzerine YAZMAMALIDIR.
- [C-2-3] Metnin YALNIZCA Unicode ile uyumlu olmayan bir yazı tipiyle oluşturulması ZORUNLUDUR.YALNIZCA Qaag komut dosyası kodu içeren bir dil kodu belirtilir (ör. my-Qaag). Myanmar'da Unicode ile uyumlu olmayan yazı tipini belirtmek için başka hiçbir ISO dil veya bölge kodu (atanmış, atanmamış veya ayrılmış) kullanılamaz. Uygulama geliştiricileri ve web sayfası yazarları, my-Qag'i diğer dillerde olduğu gibi atanan dil kodu olarak belirtebilir.
3.8.14. Çoklu Pencere
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 dokümanlarında açıklanan uygulama davranışlarına ve API'lere uygun şekilde uygulaması ve aşağıdaki şartları karşılaması gerekir:
- [C-1-2] bu SDK'da açıklandığı gibi,
AndroidManifest.xml
dosyasındaki bir uygulama tarafından ayarlananandroid:resizeableActivity
öğesine ZORUNLUDUR. - [C-1-3], ekran yüksekliği 440 dp'den ve ekran genişliği 440 dp'den azsa bölünmüş ekran veya serbest biçim modu SUNMAMALIDIR.
- [C-1-4] Pencere İçinde Pencere dışındaki çoklu pencere modlarında bir etkinlik, 220 dp'den küçük bir boyuta yeniden boyutlandırılmamalıdır.
- Ekran boyutu
xlarge
olan 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], bölünmüş ekranlı bir çoklu pencerenin yuvaya yerleştirilmiş etkinliğini kırpmalıdır ancak Başlatıcı uygulaması odaklanılmış pencereyse içeriğin bir kısmını göstermelidir.
- [C-2-3], üçüncü taraf başlatıcı uygulamasının bildirilen
AndroidManifestLayout_minWidth
veAndroidManifestLayout_minHeight
değerlerini dikkate almalı ve yuvaya yerleştirilmiş etkinliğin bazı içeriklerini gösterirken bu değerleri geçersiz kılmamalıdır.
Cihaz uygulamaları çoklu pencere modlarını ve Pencere İçinde Pencere çoklu pencere modunu destekliyorsa:
- [C-3-1] aşağıdaki durumlarda etkinlikleri pencere içinde pencere çoklu pencere modunda başlatması ZORUNLUDUR:
* API düzeyi 26 veya üstünü hedeflerken
android:supportsPictureInPicture
* API düzeyi 25 veya altı hedefleniyor ve hemandroid:resizeableActivity
hem deandroid:supportsPictureInPicture
beyan ediliyor. - [C-3-2], SystemUI'larındaki işlemleri mevcut PIP etkinliğinde belirtildiği şekilde
setActions()
API aracılığıyla kullanıma sunmalıdır. - [C-3-3],
setAspectRatio()
API aracılığıyla yapılan PIP etkinliğinde belirtildiği üzere, 1:2,39'dan büyük veya 2,39:1'e eşit ya da 2,39:1'e eşit en boy oranlarını desteklemelidir. - [C-3-4] PIP penceresini kontrol etmek için
KeyEvent.KEYCODE_WINDOW
OLMALIDIR. PIP modu uygulanmazsa anahtarın ön plan etkinliğinde kullanılabilir olması ZORUNLUDUR. - [C-3-5] Kullanıcıya, bir uygulamanın PIP modunda görüntülenmesini engelleme fırsatı vermesi ZORUNLUDUR. AOSP uygulaması, bildirim gölgesinde denetimler sunarak bu şartı karşılar.
Bir uygulama
AndroidManifestLayout_minWidth
veAndroidManifestLayout_minHeight
için herhangi bir değer bildirmediğinde [C-3-6] PIP penceresi için aşağıdaki minimum genişlik ve yüksekliği ayırması ZORUNLUDUR:UI_MODE_TYPE_TELEVISION
dışında ayarlanan Configuration.uiMode'a sahip cihazların en az 108 dp genişlik ve yükseklik ayırması ZORUNLUDUR.- Configuration.uiMode ayarı
UI_MODE_TYPE_TELEVISION
olarak ayarlanmış cihazların en az 240 dp, en az 135 dp yüksekliğinde olması gerekir.
3.8.15. Ekran Kesimi
Android, SDK dokümanında açıklandığı gibi bir Ekran
Kesitini destekler. DisplayCutout
API, ekranın kenarında, kenarlardaki ekran kesimi veya kavisli ekran nedeniyle uygulama için işlevsel olmayabilecek bir alan tanımlar.
Cihaz uygulamalarında ekran kesimleri varsa:
- Cihazın en boy oranı 1,0(1:1) ise [C-1-5] üzerinde kesim BULUNMAMALIDIR.
- [C-1-2] kenar başına birden fazla kesimi BULUNMAMALIDIR.
- [C-1-3], SDK'da açıklandığı şekilde uygulama tarafından
WindowManager.LayoutParams
API'si aracılığıyla ayarlanan ekran kesimi işaretlerine riayet etmelidir. - [C-1-4]
DisplayCutout
API'de tanımlanan tüm kesim metrikleri için doğru değerleri BİLDİRMELİDİR.
3.8.16. Cihaz Denetimleri
Android, üçüncü taraf uygulamaların kullanıcılar için hızlı durum ve işlem amacıyla cihaz denetimleri yayınlamasına olanak tanıyan ControlsProviderService
ve Control
API'lerini içerir.
Cihaza özel gereksinimler 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'da belirtilen hizmetler hariç olmak üzere, kullanıcının açıkça yaptığı bir işlem (ör. yer paylaşımındaki bir düğmeye basma) olmadan herhangi bir bileşene, etkinliğe, hizmete veya herhangi bir ağ bağlantısı genelinde pano verileri GÖNDERMEMELİDİR.
Cihaz uygulamaları, ClipData.getDescription().getExtras()
öğesinin android.content.extra.IS_SENSITIVE
içerdiği herhangi bir ClipData
öğesinin içeriği panoya kopyalandığında kullanıcının görebildiği bir önizleme oluşturuyorsa:
- [C-1-1] Kullanıcı tarafından görülebilen önizlemenin çıkartılması ZORUNLUDUR
AOSP referansı uygulaması, bu pano gereksinimlerini karşılar.
3.9. Cihaz Yönetimi
Android, güvenliğe duyarlı uygulamaların sistem düzeyinde cihaz yönetimi işlevlerini gerçekleştirmesini sağlayan özellikler (şifre politikalarını zorunlu kılma veya Android Device Management API aracılığıyla uzaktan silme işlemi gerçekleştirme gibi) içerir.
Cihaz uygulamaları, Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tümünü uyguluyorsa:
- [C-1-1]
android.software.device_admin
ZORUNLUDUR. - [C-1-2], bölüm 3.9.1 ve bölüm 3.9.1.1'de açıklandığı gibi cihaz sahibi temel hazırlığını desteklemelidir.
3.9.1 Cihaz Temel Hazırlığı
3.9.1.1 Cihaz sahibi temel hazırlığı
Cihaz uygulamaları android.software.device_admin
bildiriyorsa:
- [C-1-1] bir Device Policy İstemcisi'nin (DPC) aşağıda açıklandığı şekilde Cihaz Sahibi uygulaması olarak kaydedilmesini DESTEKLEMELİDİR:
- Cihaz uygulamasında kullanıcılar veya kullanıcı verileri yapılandırılmadığında:
- [C-1-5], DPC uygulamasını Cihaz Sahibi uygulaması olarak kaydetmeli veya cihaz,
android.hardware.nfc
özellik bayrağı aracılığıyla Near Field Communication (NFC) desteğini beyan ederse veMIME_TYPE_PROVISIONING_NFC
MIME türünde bir kayıt içeren bir NFC mesajı alırsa Cihaz Sahibi veya Profil Sahibi olma seçimini yapmak için DPC uygulamasını etkinleştirmelidir. - [C-1-8], cihaz sahibi temel hazırlığı tetiklendikten sonra ACTION_GET_PROVISIONING_MODE niyetini göndermelidir. Böylece DPC uygulaması, yalnızca tek bir geçerli seçenek olduğu bağlama göre belirlenemediği takdirde
android.app.extra.PROVISIONING_ALLOWED_PROVISIONING_MODES
değerlerine bağlı olarak Cihaz Sahibi veya Profil Sahibi olmayı seçebilir. - [C-1-9], kullanılan temel hazırlık yönteminden bağımsız olarak temel hazırlık sırasında bir Cihaz Sahibi oluşturulursa ACTION_ADMIN_POLICY_COMPLIANCE niyetinin Cihaz Sahibi uygulamasına gönderilmesi ZORUNLUDUR. Kullanıcı, Cihaz Sahibi uygulaması bitene kadar Kurulum Sihirbazı'nda devam edememelidir.
- [C-1-5], DPC uygulamasını Cihaz Sahibi uygulaması olarak kaydetmeli veya cihaz,
- Cihaz uygulamasında kullanıcı veya kullanıcı verileri olduğunda:
- [C-1-7] artık herhangi bir DPC uygulamasını Cihaz Sahibi Uygulaması olarak kaydetmemek ZORUNLUDUR.
- Cihaz uygulamasında kullanıcılar veya kullanıcı verileri yapılandırılmadığında:
[C-1-2] uygun bir açıklama bildirimi göstermeli (AOSP'de atıfta bulunulan şekilde) ve cihaz ekrandaki son kullanıcı etkileşiminden önce Perakende Demo Modu için programatik olarak yapılandırılmadığı sürece, bir uygulama Cihaz Sahibi olarak ayarlanmadan önce son kullanıcıdan onay alınması ZORUNLUDUR. Cihaz uygulamaları
android.software.device_admin
tanımlıyorsa ancak aynı zamanda özel bir cihaz yönetimi çözümü içeriyorsa ve çözümlerinde yapılandırılmış bir uygulamayı, standart Android DevicePolicyManager API'leri tarafından tanınan şekilde standart"Cihaz Sahibi'ne eşdeğer" olarak tanıtacak bir mekanizma sağlıyorsa bunlar:[C-2-1] Tanıtımı yapılmakta olan uygulamanın, meşru bir kurumsal cihaz yönetimi çözümüne ait olduğunu ve özel çözümde "Cihaz Sahibi" ile eşdeğer haklara sahip olacak şekilde yapılandırıldığını doğrulayan bir sürece sahip olması ZORUNLUDUR.
[C-2-2], DPC uygulamasını "Cihaz Sahibi" olarak kaydetmeden önce
android.app.action.PROVISION_MANAGED_DEVICE
tarafından başlatılan akışla aynı AOSP Cihaz Sahibi izin açıklamasının gösterilmesi ZORUNLUDUR.[C-2-3] İzni sabit kodlamamalı veya diğer cihaz sahibi uygulamalarının kullanımını engellememelidir.
3.9.1.2 Yönetilen profil temel hazırlığı
Cihaz uygulamaları android.software.managed_users
bildiriyorsa:
[C-1-1], bir cihaz politikası denetleyici (DPC) uygulamasının yeni bir yönetilen profilin sahibi olmasını sağlayan API'leri uygulaması ZORUNLUDUR.
[C-1-2] Yönetilen profil temel hazırlık süreci (android.app.action.PROVISION_MANAGED_PROFILE kullanılan DPC tarafından başlatılan veya platform tarafından başlatılan akış), kullanıcı rızası ekranı ve kullanıcı deneyimi AOSP uygulamasıyla uyumlu OLMALIDIR.
[C-1-3] Belirli bir sistem işlevinin Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığını kullanıcıya belirtmek için Ayarlar'da aşağıdaki kullanıcı olanaklarının sağlanması ZORUNLUDUR:
- Belirli bir ayarın Cihaz Yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya diğer kullanıcı özellikleri (ör. yukarı akış AOSP bilgi simgesi).
- Cihaz Yöneticisi tarafından
setShortSupportMessage
aracılığıyla sağlanan kısa bir açıklama mesajı. - DPC uygulamasının simgesi.
[C-1-4], temel hazırlık android.app.action.PROVISION_MANAGED_PROFILE niyeti tarafından başlatıldığında ve DPC işleyiciyi uyguladığında bir Profil Sahibi oluşturulmuşsa iş profilinde ACTION_PROVISIONING_FAILEDFUL amacı için işleyiciyi başlatmalıdır.
[C-1-5] temel hazırlık, android.app.action.PROVISION_MANAGED_PROFILE niyeti tarafından başlatıldığında iş profili DPC'sine ACTION_PROFILE_PROVISIONING_COMPLETE yayını göndermelidir.
[C-1-6], profil sahibi temel hazırlığı tetiklendikten sonra, android.app.action.PROVISION_MANAGED_PROFILE amacı tarafından temel hazırlığın tetiklenmediği durumlar dışında DPC uygulamasının Cihaz Sahibi veya Profil Sahibi olma seçimini yapabilmesi için ACTION_GET_PROVISIONING_MODE niyetini göndermelidir.
[C-1-7], android.app.action.PROVISION_MANAGED_PROFILE amacı tarafından tetiklendiği durumlar hariç, temel hazırlık yönteminin kullanıldığına bakılmaksızın, temel hazırlık sırasında bir Profil Sahibi oluşturulduğunda, ACTION_ADMIN_POLICY_COMPLIANCE niyetinin iş profiline gönderilmesi ZORUNLUDUR. Kullanıcı, Profil Sahibi uygulaması bitene kadar Kurulum Sihirbazı'nda devam edememelidir.
[C-1-8], kullanılan temel hazırlık yönteminden bağımsız olarak, Profil Sahibi oluşturulduğunda kişisel profil DPC'sine ACTION_MANAGED_PROFILE_PROVISIONED yayını göndermelidir.
3.9.2 Yönetilen Profil Desteği
Cihaz uygulamaları android.software.managed_users
bildiriyorsa:
- [C-1-1],
android.app.admin.DevicePolicyManager
API'leri aracılığıyla yönetilen profilleri DESTEKLEMELİDİR. - [C-1-2] Bir veya yalnızca bir yönetilen profil oluşturulmasına İZİN VERMELİDİR.
- [C-1-3], yönetilen uygulamaları ve widget'ları ile Son Kullanılanlar ve Bildirimler gibi diğer rozetli kullanıcı arayüzü öğelerini temsil eden bir simge rozeti (AOSP yayın öncesi iş rozetine benzer) kullanmalıdır.
- [C-1-4] kullanıcının yönetilen bir profil uygulamasında olduğunu belirtmek için bir bildirim simgesi (AOSP yukarı akış iş rozetine benzer) GÖRÜNTÜLEMELİDİR.
- [C-1-5], cihaz uyandığında (ACTION_USER_PRESENT) ve ön plan uygulaması yönetilen profil içinde olduğunda kullanıcının yönetilen profilde olduğunu belirten bir kısa mesaj görüntülemelidir.
- [C-1-6] Yönetilen bir profilin mevcut olduğu durumlarda, kullanıcının niyeti yönetilen profilden birincil kullanıcıya veya Device Policy Denetleyicisi tarafından etkinleştirildiyse niyeti yönetilen profilden birincil kullanıcıya yönlendirmesine izin vermek için "Seçici" amacında görsel bir uygunluk gösterilmesi ZORUNLUDUR.
- [C-1-7] Yönetilen profil mevcut olduğunda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı olanaklarının gösterilmesi ZORUNLUDUR:
- Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplaması.
- Birincil kullanıcı veya yönetilen profilde yüklü 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 profilde hesapların bağımsız şekilde yönetimi.
- [C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş numara çeviricinin, kişilerin ve mesajlaşma uygulamalarının, yönetilen profildeki (varsa) arayan bilgilerinin yanı sıra birincil profildeki arayan bilgilerini de arayabilmesini ve arayabilmesini ZORUNLUDUR.
- [C-1-9], yönetilen profil birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa bile, birden fazla kullanıcının etkin olduğu bir cihaz için geçerli olan tüm güvenlik gereksinimlerini karşılamalıdır (bkz. bölüm 9.5).
Yeni koşullarla başlayın
- [C-1-10] Odak (kullanıcının tüm etkinlikler arasında en son etkileşimde bulunduğu) ve bir iş profili uygulamasına ait olan
topActivity
penceresiyle ekran görüntüsü alındığında ekran görüntüsü verilerinin iş profili depolama alanına kaydedilmesi ZORUNLUDUR. - [C-1-11] iş profiline ekran görüntüsü kaydederken (kişisel profil verilerinin iş profiline kaydedilmediğinden emin olmak için) iş profili uygulaması penceresi/pencereleri dışında, başka hiçbir ekran içeriğini (sistem çubuğu, bildirimler veya kişisel profil içerikleri) ALMAMALIDIR.
Yeni şartları sonlandırma
Cihaz uygulamalarında android.software.managed_users
ve android.software.secure_lock_screen
beyan ediliyorsa:
- [C-2-1] yalnızca yönetilen bir profilde çalışan uygulamalara erişim izni vermek için aşağıdaki gereksinimleri karşılayan ayrı bir kilit ekranı belirtme özelliğini desteklemelidir.
- Cihaz uygulamalarının
DevicePolicyManager.ACTION_SET_NEW_PASSWORD
amacına uygun olması ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmak üzere bir arayüz göstermesi ZORUNLUDUR. - Yönetilen profilin kilit ekranı kimlik bilgilerinin, Android Açık Kaynak Proje Sitesi'nde belgelendiği gibi, üst profille aynı kimlik bilgisi depolama ve yönetim mekanizmalarını kullanması ZORUNLUDUR.
- getParentProfileInstance tarafından döndürülen
DevicePolicyManager
örneğine çağrılmadığı sürece, DPC şifre politikalarının yalnızca yönetilen profilin kilit ekranı kimlik bilgileri için geçerli olması ZORUNLUDUR.
- Cihaz uygulamalarının
- Yönetilen profildeki kişiler önceden yüklenmiş çağrı kaydında, çağrı kaydında, devam eden ve cevapsız arama bildirimlerinde, kişilerde ve mesajlaşma uygulamalarında gösterildiğinde, bu kişilerin, yönetilen profil uygulamalarını belirtmek için kullanılan rozetle aynı şekilde Rozetlendirilmeleri GEREKİR.
3.9.3 Yönetilen Kullanıcı Desteği
Cihaz uygulamaları android.software.managed_users
bildiriyorsa:
- [C-1-1]
isLogoutEnabled
,true
değerini döndürdüğünde bir kullanıcıya mevcut kullanıcıdan çıkış yapma ve çok kullanıcılı oturumda birincil kullanıcıya geri dönme fırsatı SAĞLAMALIDIR. Kullanıcı özelliklerine, cihazın kilidi açılmadan kilit ekranından erişilebilmesi ZORUNLUDUR.
Cihaz uygulamaları android.software.device_admin
beyan ediyor ve ilave ikincil Kullanıcı eklemesi için cihaz üzerinde kullanıcıya gerekli imkanı sağlıyorsa:
- [C-SR-1] Kesinlikle ÖNERİLİR durumunda olanlar, hesapların yeni ikincil Kullanıcı hesabına eklenmesine izin vermeden önce android.app.action.PROVISION_MANAGED_DEVICE tarafından başlatılan akışta gösterilen AOSP Cihaz Sahibi izin açıklamalarını gösterir. Bu sayede kullanıcılar cihazın yönetildiğini anlar.
3.9.4 Cihaz Politikası Yönetimi Rolü Şartları
Cihaz uygulamaları android.software.device_admin
veya android.software.managed_users
bildiriminde bulunursa:
- [C-1-1], bölüm 9.1'de tanımlandığı gibi cihaz politikası yönetimi rolünü DESTEKLEMELİDİR. Cihaz politikası yönetimi rolüne sahip uygulama, paket adına
config_devicePolicyManagement
ayarlanarak tanımlanabilir. Uygulama önceden yüklenmediyse paket adının ardından:
ve imzalama sertifikası gelmelidir.
config_devicePolicyManagement
için yukarıda açıklandığı gibi bir paket adı tanımlanmamışsa:
- [C-2-1] Cihaz uygulamalarının, cihaz politikası yönetimi rol sahibi uygulaması olmadan temel hazırlığı desteklemesi ZORUNLUDUR (AOSP bir referans uygulaması sağlar).
config_devicePolicyManagement
için yukarıda açıklandığı gibi bir paket adı tanımlanırsa:
- [C-3-1] Uygulamanın bir kullanıcıya ait tüm profillere yüklenmesi ZORUNLUDUR.
- [C-3-2] Cihaz uygulamaları,
config_devicePolicyManagementUpdater
ayarlayarak cihaz politikası yönetimi rol sahibini temel hazırlıktan önce güncelleyen bir uygulamayı tanımlayabilir OLABİLİR.
config_devicePolicyManagementUpdater
için yukarıda açıklandığı gibi bir paket adı tanımlanırsa:
- [C-4-1] Uygulamanın cihaza önceden yüklenmiş olması ZORUNLUDUR.
- [C-4-2] Uygulamanın,
android.app.action.UPDATE_DEVICE_POLICY_MANAGEMENT_ROLE_HOLDER
çözümleyen bir intent filtresi uygulaması ZORUNLUDUR.
Yeni koşullarla başlayın
3.9.5 Cihaz Politikası Çözüm Çerçevesi
Cihaz uygulamaları android.software.device_admin
veya android.software.managed_users
bildiriminde bulunursa:
- [C-1-1], Cihaz Politikası Çözümleme Çerçevesi'nde belirtildiği gibi cihaz politikası çakışmalarını çözmesi ZORUNLUDUR.
Yeni şartları sonlandırma
3:10. Erişilebilirlik
Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sağlar. Buna ek olarak Android, kullanıcı ve sistem etkinlikleri için geri çağırmalar almak ve metin okuma, dokunsal geri bildirim ve iztopu/d-pad navigasyonu gibi alternatif geri bildirim mekanizmaları oluşturmak için erişilebilirlik hizmeti uygulamalarının kullanılmasını sağlayan platform API'leri sunar.
Cihaz uygulamaları, üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-1-1], erişilebilirlik API'leri SDK dokümanlarında açıklandığı gibi Android erişilebilirlik çerçevesinin uygulamasını SUNMALIDIR.
- [C-1-2], erişilebilirlik etkinlikleri oluşturmalı ve SDK'da belgelendiği şekilde tüm kayıtlı
AccessibilityService
uygulamalarına uygunAccessibilityEvent
öğesini sunmalıdır. - [C-1-4] Bir kullanıcıya AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_Button belirten erişilebilirlik hizmetlerini kontrol etme imkanı ZORUNLUDUR. Sistem gezinme çubuğu içeren cihaz uygulamalarında bu hizmetlerin, kullanıcılara sistemin gezinme çubuğunda bir düğme seçeneğine sahip olması GEREKİR.
Cihaz uygulamaları, önceden yüklenmiş erişilebilirlik hizmetleri içeriyorsa:
- Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde [C-2-1], önceden yüklenmiş bu erişilebilirlik hizmetlerini Doğrudan Başlatma Duyarlı uygulamaları olarak uygulamalıdır.
- Kullanıma hazır kurulum akışında, kullanıcılara ilgili erişilebilirlik hizmetlerini etkinleştirebilecekleri bir mekanizma ile yazı tipi boyutunu, görüntü boyutunu ve büyütme hareketlerini ayarlama seçenekleri sunulmalıdır.
3:11. Metin-Konuşma
Android, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına ve servis sağlayıcılarının TTS hizmetlerini kullanmasına olanak tanıyan API'ler içerir.
android.hardware.audio.Exit özelliğini bildiren cihaz uygulamaları varsa:
- [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 izin vermek için kullanıcıya uygun imkân sunması ZORUNLUDUR.
3:12. TV Girişi Çerçevesi
Android Televizyon Giriş Çerçevesi (TIF), canlı içeriğin Android Televizyon cihazlarına yayınlanmasını kolaylaştırır. TIF, Android Televizyon cihazlarını kontrol eden giriş modülleri oluşturmak için standart bir API sağlar.
Cihaz uygulamaları TIF'yi destekliyorsa:
- [C-1-1],
android.software.live_tv
adlı platform özelliğini beyan ZORUNLUDUR. - [C-1-2] tüm TIF API'lerini desteklemelidir. Öyle ki bu API'leri ve üçüncü taraf TIF tabanlı girişleri kullanan bir uygulama cihaza yüklenip kullanılabilir.
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 sağlar.
Cihaz uygulamaları bir 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,
quicksettings
API'leri aracılığıyla sağlanan kartları bir üçüncü taraf uygulamasından eklemesine veya kaldırmasına İZİN VERMELİDİR. - [C-1-2] Bir üçüncü taraf uygulamasından gelen Kart'ı doğrudan Hızlı Ayarlar'a otomatik olarak EKLEMEMELİDİR.
- [C-1-3] Üçüncü taraf uygulamalarına ait tüm kullanıcılar tarafından eklenen karoların, sistem tarafından sağlanan hızlı ayar kutularıyla birlikte GÖRÜNTÜLENMELİDİR.
3:14. Medya kullanıcı arayüzü
Cihaz uygulamaları, MediaBrowser
veya MediaSession
üzerinden üçüncü taraf uygulamalarla etkileşimde bulunan sesle etkinleştirilmemiş uygulamalar (Uygulamalar) içeriyorsa Uygulamalar:
[C-1-2], getIconBitmap() veya getIconUri() aracılığıyla edinilen simgeleri ve getTitle() aracılığıyla edinilen başlıkları
MediaDescription
bölümünde açıklandığı gibi açık bir şekilde görüntülemelidir. Güvenlik düzenlemelerine (ör. sürücünün dikkatinin dağılması) uyacak şekilde başlıklar kısaltılabilir.[C-1-3] Bu üçüncü taraf uygulaması tarafından sağlanan içerik görüntülenirken üçüncü taraf uygulamasının simgesini GÖSTERMELİDİR.
[C-1-4] Kullanıcının tüm
MediaBrowser
hiyerarşisiyle etkileşim kurmasına izin vermelidir. Güvenlik düzenlemelerine (ör. sürücünün dikkatinin dağılması) uymak için hiyerarşinin bir kısmına erişimi Kısıtabilir, ancak içerik veya içerik sağlayıcıya göre imtiyazlı muamele VERMEMELİDİR.[C-1-5],
KEYCODE_HEADSETHOOK
veyaKEYCODE_MEDIA_PLAY_PAUSE
simgesine iki kez dokunmakMediaSession.Callback#onMediaButtonEvent
içinKEYCODE_MEDIA_NEXT
olarak düşünülmelidir.
3:15. Hazır Uygulamalar
Cihaz uygulamaları, Hazır Uygulamaları destekliyorsa aşağıdaki şartları yerine getirmeleri ZORUNLUDUR:
- [C-1-1] Hazır Uygulamalar'a yalnızca
android:protectionLevel
öğesinin"instant"
olarak ayarlandığı izinlerin verilmesi ZORUNLUDUR. - [C-1-2] Hazır Uygulamalar, aşağıdakilerden biri geçerli olmadığı sürece yüklü uygulamalarla dolaylı amaçlar aracılığıyla ETKİLEŞİME GEÇMEMELİDİR:
- Bileşenin intent kalıbı filtresi açığa çıktı ve CATEGORY_BROWSABLE öğesine sahip
- İşlem şunlardan biri: ACTION_SEND, ACTION_SENDTO, ACTION_SEND_MULTIPLE
- Hedef, android:visibleTo InstantApps ile açıkça gösteriliyor
- [C-1-3] Hazır Uygulamalar, bileşen android:visibleTo InstantApps aracılığıyla açığa çıkarılmadığı sürece yüklü uygulamalarla açık bir şekilde ETKİLEŞİME GEÇMEMELİDİR.
- [C-1-4] Hazır Uygulama, yüklü uygulamaya açıkça bağlanmadığı sürece Yüklü Uygulamalar, cihazda Hazır Uygulamalar ile ilgili ayrıntıları GÖSTERMEMELİDİR.
Cihaz uygulamalarının, Hazır Uygulamalarla etkileşim kurmak için aşağıdaki kullanıcı olanaklarını sağlaması ZORUNLUDUR. AOSP, varsayılan Sistem 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ınmış Hazır Uygulamaları görüntülemek ve silmek üzere bir kullanıcıya fırsat SUNMALIDIR.
- [C-1-6] Bir Hazır Uygulama ön planda çalışırken daraltılabilen kalıcı bir kullanıcı bildirimi SAĞLANMALIDIR. Bu kullanıcı bildiriminin, Hazır Uygulamalar'ın yüklenmesini gerektirmediğini ve kullanıcıyı Ayarlar'daki uygulama bilgi ekranına yönlendiren bir kullanıcı ücretini sağlaması ZORUNLUDUR.
Intent.ACTION_VIEW
olarak ayarlanmış bir işlem ve "http" ya da "https" şemasıyla niyet kullanılarak tanımlanan, web intent'leri aracılığıyla başlatılan Hazır Uygulamalar için ek bir kullanıcı olanağı, cihazda kullanılabilir bir tarayıcı varsa kullanıcının Hazır Uygulamayı başlatmamasına ve 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] Son Kullanılanlar işlevi cihazda kullanılabiliyorsa, Hazır Uygulamalar'ın Son Kullanılanlar işlevinden çalıştırılmasına izin verilmesi ZORUNLUDUR.
[C-1-8] SDK'da burada listelenen amaçlar için bir veya daha fazla uygulama ya da hizmet bileşenini bir intent işleyici ile önceden yüklemeli ve amaçları Hazır Uygulamalar için görünür hale getirmelidir.
3:16. Tamamlayıcı Cihaz Eşleme
Android, tamamlayıcı cihazlarla ilişkilendirmeyi daha etkili bir şekilde yönetmek için tamamlayıcı cihaz eşleme desteği sunar ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager
API'sini sağlar.
Cihaz uygulamaları, tamamlayıcı cihaz eşleme özelliğini destekliyorsa:
- [C-1-1], özellik bayrağını
FEATURE_COMPANION_DEVICE_SETUP
BELİRTMELİDİR. - [C-1-2],
android.companion
paketindeki API'lerin tam olarak uygulandığından emin olmalıdır. - [C-1-3] Kullanıcının, tamamlayıcı cihazın mevcut ve çalışır durumda olduğunu seçmesi/onaylaması için kullanıcıya sunduğu olanaklar GEREKİR.
3:17. Ağır Uygulamalar
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE
özelliğini bildiriyorsa:
- [C-1-1] Sistemde aynı anda
cantSaveState
çalıştığını belirten tek bir yüklü uygulama OLMALIDIR. Kullanıcı bu tür bir uygulamadan açıkça çıkmadan ayrılırsa (örneğin, sistemde etkin bir etkinlik kalmadığında geri düğmesine basmak yerine sistemdeki etkin bir etkinlikten ayrılırken ana sayfa düğmesine basarak) cihaz uygulamalarının, çalışmaya devam etmesi beklenen diğer işlemler (ör. ön plan hizmetleri) için yaptığı gibi, RAM'de bu uygulamaya öncelik vermesi ZORUNLUDUR. Bu tür bir uygulama arka planda olsa da 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ıktan sonra, normal durum kaydetme/geri yükleme mekanizmasına katılmayacak uygulamayı seçmek için kullanıcı arayüzü fırsatı sağlamalıdır. - [C-1-3] Politikadaki diğer değişiklikleri (ör. CPU performansını veya planlama önceliğini değiştirmek)
cantSaveState
belirten uygulamalarda UYGULAMAMALIDIR.
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE
özelliğini bildirmiyorsa:
- [C-1-1], uygulamalar tarafından ayarlanan
cantSaveState
özelliğini yok saymalı ve bu özelliğe göre uygulama davranışını DEĞİŞTİRMEMELİDİR.
3:18. Kişiler
Android, uygulamaların cihazda depolanan iletişim bilgilerini yönetmesine olanak tanıyan Contacts Provider
API'leri içerir.
Doğrudan cihaza girilen kişi verileri genellikle bir web hizmetiyle senkronize edilir. Ancak bu veriler yalnızca yerel olarak cihazda saklanabilir.
Yalnızca cihazda depolanan kişilere yerel kişiler adı verilir.
Ham kişilere ait ham kişilere ait sütunlar, hesabın ilgili Account.name ve Account.type alanlarıyla ACCOUNT_NAME
ve ACCOUNT_TYPE
hesapla ilişkilendirilmiş" ya da "depolanmış" olur.
Varsayılan yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir Hesapla ilişkilendirilmemiş ham kişiler için bir hesaptır. Bu hesap, ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları için null değerlerle oluşturulur.
Özel yerel hesap: Yalnızca cihazda depolanan ve Hesap Yöneticisi'nde bir Hesapla ilişkilendirilmeyen, ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları için en az bir boş olmayan değerle oluşturulan ham kişileri içeren hesaptır.
Cihaz uygulamaları:
- [C-SR-1] Özel yerel hesaplar oluşturmamanız ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları özel yerel hesap kullanıyorsa:
- [C-1-1] Özel yerel hesaba ait
ACCOUNT_NAME
,ContactsContract.RawContacts.getLocalAccountName
tarafından döndürülmelidir. - [C-1-2] Özel yerel hesaba ait
ACCOUNT_TYPE
,ContactsContract.RawContacts.getLocalAccountType
tarafından döndürülmelidir. - [C-1-3] Varsayılan yerel hesaba sahip üçüncü taraf uygulamalar tarafından
eklenen ham kişilerin (
ACCOUNT_NAME
veACCOUNT_TYPE
için boş değerler ayarlayarak) özel yerel hesaba eklenmesi ZORUNLUDUR. - [C-1-4] Özel yerel hesaba eklenen ham kişiler, hesap eklendiğinde veya kaldırıldığında kaldırılmamalıdır.
- [C-1-5] Özel yerel hesaba yönelik olarak gerçekleştirilen silme işlemlerinin,
CALLER\_IS\_SYNCADAPTER
parametresi yanlış değerine ayarlanmış veya belirtilmemiş olsa bile ham kişilerin hemen kalıcı olarak silinmesi (CALLER_IS_SYNCADAPTER
parametresi doğru değerine ayarlanmış gibi) ZORUNLUDUR.
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 çalabilmeli ZORUNLUDUR.
- Yukarıdaki ihtiyaç zorlayıcı olabileceğinden, AOSP referans uygulamasının paket yönetim sistemini kullanmak üzere cihaz uygulamalarının kullanılması ÖNERİLİR.
[C-0-2] ".apk" dosyalarının APK İmza Şeması v3.1, APK İmza Şeması v3, APK İmza Şeması v2 ve JAR imzalama kullanılarak doğrulanması ZORUNLUDUR.
[C-0-3] .apk, Android Manifest, Dalvik bayt kodu veya RenderScript bayt kodu biçimlerini, bu dosyaların diğer uyumlu cihazlara yüklenmesini ve çalışmasını engelleyecek şekilde GENİŞLETMEMELİDİR.
[C-0-4]
DELETE_PACKAGE
izni için SDK'da belirtildiği üzere, paketin mevcut "kayıtlı yükleyici" dışındaki uygulamaların uygulamayı kullanıcı onayı olmadan sessizce kaldırmasına İZİN VERMEMELİDİR. Bunun tek istisnası, PACKAGE_NEEDS_VERIFICATION niyetini işleyen sistem paketi doğrulayıcı uygulama ve ACTION_MANAGE_STORAGE amacı işlemesi depolama alanı yöneticisi uygulamasıdır.[C-0-5]
android.settings.MANAGE_UNKNOWN_APP_SOURCES
amacını işleyen bir etkinliğin olması ZORUNLUDUR.[C-0-6] Yükleme isteğinde bulunan uygulama aşağıdaki tüm gereksinimleri karşılamadığı sürece bilinmeyen kaynaklardan uygulama paketi YÜKLEMEMELİDİR:
REQUEST_INSTALL_PACKAGES
iznini beyan etmesi veyaandroid:targetSdkVersion
değerini 24 ya da daha düşük bir değere ayarlamış olması ZORUNLUDUR.- Kullanıcı tarafından bilinmeyen kaynaklardan uygulama yüklemesine izin verilmesi ZORUNLUDUR.
Bir kullanıcıya, uygulama başına bilinmeyen kaynaklardan uygulama yükleme izni verme/iptal etme yetkisi VERMELİDİR, ancak cihaz uygulaması kullanıcıların bu seçeneğe sahip olmasını istemiyorsa bunu işlem yok olarak uygulamayı ve
RESULT_CANCELED
uygulamasınıstartActivityForResult()
için döndürmeyi seçebilir. Ancak bu gibi durumlarda bile kullanıcıya bu tür bir seçeneğin neden sunulmadığını BELİRTMELİDİR.[C-0-7] aynı sistem API'si
PackageManager.setHarmfulAppWarning
tarafından zararlı olabileceği belirtilmiş bir uygulamada etkinliği başlatmadan önce, kullanıcıya sistem API'siPackageManager.setHarmfulAppWarning
aracılığıyla sağlanan uyarı dizesini içeren bir uyarı iletişim kutusu GÖRÜNTÜLEMELİDİR.Uyarı iletişim kutusunda, kullanıcıya bir uygulamayı kaldırmayı veya başlatmayı seçme imkanı sunulmalıdır.
[C-0-8] Burada açıklandığı gibi Artımlı Dosya Sistemi desteğinin uygulanması ZORUNLUDUR.
[C-0-9], .apk dosyalarının APK İmza Şeması v4 ve APK İmza Şeması 4.1 sürümü kullanılarak doğrulanmasını DESTEKLEMELİDİR.
5. Multimedya Uyumluluğu
Cihaz uygulamaları:
- [C-0-1],
MediaCodecList
tarafından tanımlanan her bir codec için bölüm 5.1'de tanımlanan medya biçimlerini, kodlayıcıları, kod çözücüleri, dosya türlerini ve kapsayıcı biçimlerini DESTEKLEMELİDİR. - [C-0-2], üçüncü taraf uygulamaların kullanabildiği kodlayıcıların ve kod çözücülerin
MediaCodecList
desteğini bildirmeli ve bildirmelidir. - [C-0-3] kodu doğru bir şekilde çözebilmesi ve üçüncü taraf uygulamalarına kodlayabildiği tüm biçimleri sunabilmesi ZORUNLUDUR. Buna kodlayıcıların oluşturduğu tüm bit akışları ve
CamcorderProfile
içinde raporlanan profiller dahildir.
Cihaz uygulamaları:
- Minimum codec gecikmesi hedeflenmelidir. Diğer bir deyişle
- Giriş arabelleklerini ve giriş arabelleklerini yalnızca işlendikten sonra Tüketmemeli ve depolamamalıdır.
- Kodu çözülmüş arabellekleri standart tarafından belirtilenden (ör. SPS) daha uzun süre TUTULMAMALIDIR.
- Kodlanmış tamponları GOP yapısının gerektirdiğinden daha uzun süre TUTULMAMALIDIR.
Aşağıdaki bölümde listelenen tüm codec'ler, Android Açık Kaynak Projesi'nden tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanmıştır.
Google'ın veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerden bağımsız olduğunu beyan etmediğini lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlere, açık kaynak yazılımlar veya paylaşımlı yazılımlar da dahil olmak üzere bu kodun uygulanması için ilgili patent sahiplerinden patent lisansları alınması gerektiği tavsiye edilir.
5.1. Medya Codec'leri
5.1.1. Ses Kodlama
5.1.3. Ses Codec'leri Ayrıntıları.
Cihaz uygulamaları android.hardware.microphone
tanımlıyorsa aşağıdaki ses biçimlerinin kodlanmasını desteklemeleri ve bunları üçüncü taraf uygulamalarının kullanımına sunmaları ZORUNLUDUR:
- [C-1-1] PCM/DALGA
- [C-1-2] FLAC
- [C-1-3] Opus
Tüm ses kodlayıcılarının şunları desteklemesi GEREKİR:
- [C-3-1]
android.media.MediaCodec
API aracılığıyla PCM 16 bit yerel bayt sırası ses kareleri.
5.1.2. Ses Kodu Çözme
5.1.3. Ses Codec'leri Ayrıntıları.
Cihaz uygulamaları android.hardware.audio.output
özelliğini desteklediğini bildiriyorsa 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ştirilmiş AAC+)
- [C-1-4] AAC ELD (geliştirilmiş düşük gecikmeli AAC)
- [C-1-11] xHE-AAC (USC Temel Profili'ni içeren ISO/IEC 23003-3 Genişletilmiş HE AAC Profili ve ISO/IEC 23003-4 Dinamik Aralık Kontrol Profili)
- [C-1-5] FLAC
- [C-1-6] MP3
- [C-1-7] MIDI
- [C-1-8] Vorbis
- [C-1-9] 24 bite kadar yüksek çözünürlüklü ses biçimleri, 192 kHz örnek hızı ve 8 kanal içeren PCM/WAVE. Bu şartın yalnızca kod çözmeyle ilgili olduğunu ve oynatma aşamasında cihazın aşağı örnekleme ve indirme işlemi yapmasına izin verildiğini unutmayın.
- [C-1-10] Opus
Cihaz uygulamaları, android.media.MediaCodec
API'deki varsayılan AAC ses kod çözücü aracılığıyla çok kanallı akışların (yani ikiden fazla kanal) AAC giriş arabelleklerinin kodunun PCM'ye kodlanmasını destekliyorsa aşağıdakilerin desteklenmesi ZORUNLUDUR:
- [C-2-1] Kod çözme işlemi aşağı karıştırılmadan gerçekleştirilmelidir (ör. 5.0 AAC akışının kodu, beş PCM kanalına, 5.1 AAC akışının kodu altı PCM kanalına çözümlenmelidir).
- [C-2-2] Dinamik aralık meta verisi, ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde ve
android.media.MediaFormat
DRC anahtarlarında, ses kod çözücünün dinamik aralıkla ilgili davranışlarını yapılandırmak için tanımlandığı şekilde ZORUNLUDUR. API 21'de kullanıma sunulan AAC DRC anahtarları şunlardır:KEY_AAC_DRC_ATTENUATION_FACTOR
,KEY_AAC_DRC_BOOST_FACTOR
,KEY_AAC_DRC_HEAVY_COMPRESSION
,KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
veKEY_AAC_ENCODED_TARGET_LEVEL
. - [C-SR-1] Yukarıdaki C-2-1 ve C-2-2 şartlarının tüm AAC ses kod çözücüler tarafından karşılanması ÖNEMLE ÖNERİLİR.
USAC sesin kodunu çözerken MPEG-D (ISO/IEC 23003-4):
- [C-3-1] Ses düzeyi ve DRC meta verileri, MPEG-D DRC Dinamik Aralık Kontrol Profili Seviye 1'e göre yorumlanmalı ve uygulanmalıdır.
- [C-3-2] Kod çözücü, şu
android.media.MediaFormat
anahtarları ile ayarlanan yapılandırmaya göre çalışmalıdır:KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
veKEY_AAC_DRC_EFFECT_TYPE
.
MPEG-4 AAC, HE AAC ve HE AACv2 profili kod çözücüler:
- ISO/IEC 23003-4 Dinamik Aralık Kontrol Profili kullanılarak gürültü ve dinamik aralık kontrolünü destekleyebilir.
ISO/IEC 23003-4 destekleniyorsa ve kodu çözülmüş bir bit akışında hem ISO/IEC 23003-4 hem de ISO/IEC 14496-3 meta verileri mevcutsa:
- ISO/IEC 23003-4 meta verileri önceliklidir.
Tüm ses kod çözücüler çıkışları DESTEKLEMELİDİR:
- [C-6-1]
android.media.MediaCodec
API aracılığıyla PCM 16 bit yerel bayt sırası ses kareleri.
Cihaz uygulamaları, android.media.MediaCodec
API'deki varsayılan AAC ses kod çözücüyü kullanarak çok kanallı akışların (yani ikiden fazla kanal) AAC giriş arabelleklerinin kodunu PCM'ye dönüştürmeyi destekliyorsa, aşağıdaki adımların desteklenmesi ZORUNLUDUR:
- [C-7-1], içeriğin stereoya indirgenmesini (2 değeri kullanıldığında) veya yerel kanal sayısı kullanılarak mı (bu sayıya eşit veya daha büyük bir değer kullanıldığında) çıkış yapılacağını kontrol etmek için kod çözmeyi
KEY_MAX_OUTPUT_CHANNEL_COUNT
anahtarıyla uygulama tarafından yapılandırılabilmesi gerekir. Örneğin, 6 veya daha yüksek bir değer, 5.1 içerik beslendiğinde 6 kanal çıkışı için kod çözücüyü yapılandırır. - [C-7-2] Kod çözerken, kod çözücü
android.media.AudioFormat
sabit değerlerini kullanarak (örnek:CHANNEL_OUT_5POINT1
) kullanılan kanal maskesininKEY_CHANNEL_MASK
anahtarıyla çıkış biçiminde tanıtılması ZORUNLUDUR.
Cihaz uygulamaları, varsayılan AAC ses kod çözücü dışındaki ses kod çözücüleri destekliyorsa ve sıkıştırılmış çok kanallı içerikle beslendiğinde çok kanallı ses (yani 2'den fazla kanal) çıkışı yapabiliyorsa:
- [C-SR-2] Kod çözücünün, içeriğin stereo sese indirgenmesini (2 değeri kullanıldığında) veya yerel kanal sayısı kullanılarak mı (bu sayıya eşit veya daha büyük bir değer kullanıldığında) çıkış yapılacağını kontrol etmek için kod çözmeyi
KEY_MAX_OUTPUT_CHANNEL_COUNT
anahtarıyla uygulama tarafından yapılandırılabilmesi Şiddetle ÖNERİLİR. Örneğin, 6 veya daha yüksek bir değer, 5.1 içerik beslendiğinde 6 kanal çıkışı için kod çözücüyü yapılandırır. - [C-SR-3] Kod çözerken kod çözücüye, çıkış biçiminde kullanılan kanal maskesinin
KEY_CHANNEL_MASK
tuşuyla ve android.media.AudioFormat sabit değerleri (örneğin:CHANNEL_OUT_5POINT1
) ile tanıtılması ÖNERİLİR.
5.1.3. Ses Codec'leri Ayrıntıları
5.1.4. Resim Kodlama
Ayrıntılı bilgi için 5.1.6. Resim Codec'leri Ayrıntıları.
Cihaz uygulamalarında aşağıdaki resim kodlamasının kodlanması ZORUNLUDUR:
- [C-0-1] JPEG
- [C-0-2] PNG
- [C-0-3] WebP
Yeni koşullarla başlayın
- [C-0-4] AVIF
- Cihazlar
BITRATE_MODE_CQ
ve Temel Profili desteklemelidir.
- Cihazlar
Yeni şartları sonlandırma
Cihaz uygulamaları, MIMETYPE_IMAGE_ANDROID_HEIC
medya türü için android.media.MediaCodec
üzerinden HEIC kodlamasını destekliyorsa:
- [C-1-1];
BITRATE_MODE_CQ
bit hızı kontrol modunu,HEVCProfileMainStill
profilini ve 512 x 512 piksel kare boyutunu destekleyen bir donanım hızlandırmalı HEVC kodlayıcı codec'i SAĞLAMALIDIR.
5.1.5. Resim Kodu Çözme
Ayrıntılı bilgi için 5.1.6. Resim Codec'leri Ayrıntıları.
Cihaz uygulamaları, aşağıdaki resim kodlamasının kodunu çözmeyi DESTEKLEMELİDİR:
- [C-0-1] JPEG
- [C-0-2] GIF
- [C-0-3] PNG
- [C-0-4] BMP
- [C-0-5] WebP'si
- [C-0-6] Ham
- [C-0-7] AVIF (Temel Profil)
Cihaz uygulamaları, HEVC video kodu çözmeyi destekliyorsa: * [C-1-1], HEIF (HEIC) görüntü kodu çözmeyi desteklemelidir.
Yüksek bit derinliği biçimini (kanal başına 9'dan fazla bit) destekleyen resim kod çözücüler:
- [C-2-1], uygulama tarafından (ör.
android.graphics.Bitmap
ARGB_8888
yapılandırması üzerinden) istenirse 8 bitlik eşdeğer biçim çıkışının desteklenmesi ZORUNLUDUR.
5.1.6. Resim Codec'leri Ayrıntıları
Biçim/Codec | Ayrıntılar | Desteklenen Dosya Türleri/Kapsayıcı Biçimleri |
---|---|---|
JPEG | Temel+progresif | 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 toplama, Resim dizisi | HEIF (.heif), HEIC (.heic) |
AVIF (Temel Profil) | Resim, resim toplama, Resim dizisi Temel Profil | HEIF kapsayıcısı (.avif) |
MediaCodec API üzerinden gösterilen resim kodlayıcı ve kod çözücüler
[C-1-1], YUV420 8:8:8 esnek renk biçimini (
COLOR_FormatYUV420Flexible
) ileCodecCapabilities
arasını desteklemelidir.[C-SR-1] Giriş Yüzey modu için RGB888 renk biçimini desteklemesi ÖNERİLİR.
[C-1-3] düz veya yarı düzlemli YUV420 8:8:8 renk biçimlerinden en az birini desteklemelidir:
COLOR_FormatYUV420PackedPlanar
(COLOR_FormatYUV420Planar
değerine eşdeğer) veyaCOLOR_FormatYUV420PackedSemiPlanar
(COLOR_FormatYUV420SemiPlanar
değerine eşdeğerdir). Her ikisini de desteklemeleri için ÖNERİLİR.
5.1.7. Video Codec'leri
- Web video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olması için cihaz uygulamalarında, gereksinimleri karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
Cihaz uygulamaları bir video kod çözücü veya kodlayıcı içeriyorsa:
[C-1-1] Video codec'leri, standart ve yapılandırma tarafından belirtildiği gibi, genel olarak belirtilen ancak uygulanabilir olan en büyük sıkıştırılmış ve sıkıştırılmamış çerçeveye uyan çıkış ve giriş bayt arabelleği boyutlarını DESTEKLEMELİDİR.
[C-1-2] Video kodlayıcılar ve kod çözücüler, YUV420 8:8:8 esnek renk biçimlerini (
COLOR_FormatYUV420Flexible
)CodecCapabilities
tarihine kadar DESTEKLEMELİDİR.[C-1-3] Video kodlayıcılar ve kod çözücüler, düz veya yarı düzlem YUV420 8:8:8 renk biçimlerinden en az birini desteklemelidir:
COLOR_FormatYUV420PackedPlanar
(COLOR_FormatYUV420Planar
değerine eşdeğer) veyaCOLOR_FormatYUV420PackedSemiPlanar
(COLOR_FormatYUV420SemiPlanar
değerine eşdeğerdir). Her ikisini de desteklemeleri için ÖNEMLE ÖNERİLİR.[C-SR-1] Video kodlayıcılar ve kod çözücüler, donanım açısından optimize edilmiş düz veya yarı düzlemli YUV420 8:8:8 renk biçimlerinden (YV12, NV12, NV21 veya tedarikçi firma tarafından optimize edilmiş eşdeğer biçim) en az birini desteklemeleri için ÖNEMLE ÖNERİLİR.
[C-1-5] Yüksek bit derinliği biçimini (kanal başına 9+ bit) destekleyen video kod çözücülerin, uygulama tarafından talep edilmesi durumunda 8 bit'e eşdeğer biçimde çıktı vermeyi desteklemesi ZORUNLUDUR. Bu,
android.media.MediaCodecInfo
üzerinden YUV420 8:8:8 renk biçimi desteklenerek yansıtılmalıdır.
Cihaz uygulamaları, HDR profili desteğini Display.HdrCapabilities
üzerinden tanıtıyorsa:
- [C-2-1], HDR statik meta verilerin ayrıştırılmasını ve işlenmesini DESTEKLEMELİDİR.
Cihaz uygulamaları, MediaCodecInfo.CodecCapabilities
sınıfındaki FEATURE_IntraRefresh
üzerinden yenileme desteğinin reklamını yapıyorsa:
- [C-3-1], 10 - 60 kare aralığındaki yenileme sürelerini desteklemeli ve yapılandırılmış yenileme süresinin% 20'sinde doğru şekilde çalışmalıdır.
Uygulama, KEY_COLOR_FORMAT
biçim anahtarını kullanarak aksini belirtmediği sürece video kod çözücü uygulamaları:
- [C-4-1] Yüzey çıkışı kullanılarak yapılandırılırsa varsayılan olarak donanım ekranı için optimize edilmiş renk biçiminin kullanılması ZORUNLUDUR.
- [C-4-2] Yüzey çıkışı kullanmayacak şekilde yapılandırılmışsa varsayılan olarak CPU okuma için optimize edilmiş bir YUV420 8:8:8 renk biçimine sahip olması ZORUNLUDUR.
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 bkz. bölüm 5.3 |
|
MPEG-2 | Ana Profil |
|
MPEG-4 SP |
|
|
VP8 | Ayrıntılar için bölüm 5.2 ve 5.3'e bakın. |
|
Başkan Yardımcısı | Ayrıntılar için bkz. bölüm 5.3 |
|
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 Güvenliği
Cihaz uygulamalarının, aşağıda açıklanan medya codec'i güvenlik özellikleriyle uyumlu olması ZORUNLUDUR.
Android, platformlar arası multimedya hızlandırma API'si olan OMX'in yanı sıra düşük ek yükli bir multimedya hızlandırma API'si olan Codec 2.0'ı destekler.
Cihaz uygulamaları multimedyayı destekliyorsa:
- [C-1-1], Android Açık Kaynak Projesi'nde olduğu gibi OMX veya Codec 2.0 API'leri (ya da her ikisi) aracılığıyla medya codec'leri için 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'yi kullanması ZORUNLUDUR. Yalnızca bu API'lerden en az biri için desteğin mevcut olması ZORUNLUDUR ve mevcut API'ler için destek, mevcut güvenlik korumalarını içermelidir.
- [C-SR-1] Codec 2.0 API desteği içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları Codec 2.0 API'yi desteklemiyorsa:
- [C-2-1] Cihazın desteklediği her bir medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Açık Kaynak Projesi'nden (varsa) ilgili OMX yazılım codec'ini (varsa) içermesi ZORUNLUDUR.
- [C-2-2] "OMX.google" ile başlayan adlara sahip codec'ler. Android Açık Kaynak Projesi kaynak koduna dayalı olması ZORUNLUDUR.
- [C-SR-2] OMX yazılım codec'lerinin, bellek eşleyiciler dışında donanım sürücülerine erişimi olmayan bir codec işleminde çalışması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları Codec 2.0 API'yi destekliyorsa:
- [C-3-1] Cihazın desteklediği her bir medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Açık Kaynak Projesi'nden (varsa) ilgili Codec 2.0 yazılım codec'ini içermesi ZORUNLUDUR.
- [C-3-2], yazılım codec'lerine daha dar kapsamlı bir şekilde erişim izni verilebilmesi için Android Açık Kaynak Projesi'nde belirtildiği gibi yazılım codec'i sürecinde Codec 2.0 yazılım codec'lerini barındırmalıdır.
- [C-3-3] "c2.android" ile başlayan adlara sahip codec'ler. Android Açık Kaynak Projesi kaynak koduna dayalı olması ZORUNLUDUR.
5.1.10. Medya Codec'i Karakterlendirmesi
Cihaz uygulamaları medya codec'lerini destekliyorsa, bunlar:
- [C-1-1],
MediaCodecInfo
API aracılığıyla doğru medya codec karakterlendirme değerlerini döndürmelidir.
Özellikle:
- [C-1-2] "OMX" ile başlayan adlara sahip codec'ler. OMX API'lerini kullanmanız ve OMX IL adlandırma kurallarına uygun adlara sahip olması ZORUNLUDUR.
- [C-1-3] Adları "c2" ile başlayan codec'ler. Codec 2.0 API'nin kullanılması ve Android için Codec 2.0 adlandırma yönergelerine uygun adların olması ZORUNLUDUR.
- [C-1-4] "OMX.google." veya "c2.android" ile başlayan adlara sahip codec'ler. Tedarikçi firma olarak veya donanım hızlandırmalı olarak nitelendirilmemelidir.
- [C-1-5] Bellek ayırıcı ve eşleştiriciler dışında donanım sürücülerine erişimi olan bir codec işleminde (tedarikçi firma veya sistem) çalışan codec'ler, yalnızca yazılım olarak nitelendirilmez.
- [C-1-6] Android Açık Kaynak Projesi'nde bulunmayan veya söz konusu projedeki kaynak koduna dayalı olmayan codec'ler satıcı olarak tanımlanmalıdır.
- [C-1-7] Donanım hızlandırmadan yararlanan codec'lerin donanım hızlandırmalı olarak tanımlanması ZORUNLUDUR.
- [C-1-8] Codec adları yanıltıcı OLMAMALIDIR. Örneğin, "kod çözücüler" adlı codec'ler kod çözmeyi, "kodlayıcılar" adlı codec'ler ise kodlamayı desteklemelidir. Medya biçimlerini içeren adlara sahip codec'ler bu biçimleri desteklemektedir.
Cihaz uygulamaları video codec'lerini destekliyorsa:
- [C-2-1] Tüm video codec'lerinin, codec tarafından destekleniyorsa aşağıdaki boyutlar için ulaşılabilir kare hızı verilerini yayınlaması ZORUNLUDUR:
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 nitelenen video codec'lerinin, performans noktası bilgilerini YAYINLAMALIDIR. Desteklenen başka bir standart performans noktası kapsamında olmadıkları sürece her birinin desteklenen tüm standart performans noktalarını (
PerformancePoint
API'de listelenir) listelemesi ZORUNLUDUR. - Ayrıca, listelenen standartlardan biri dışında sürekli video performansını destekleyen genişletilmiş performans puanları YAYINLAMALIDIR.
5.2. Video Kodlaması
- İki kayan pencerenin üzerinde, çerçeve içi (I-çerçeve) aralıkları arasındaki bit hızında% 15'ten fazla artış OLMAMALIDIR.
- 1 saniyelik kayan bir pencerede bit hızının% 100'ün üzerinde OLMAMALIDIR.
Yeni koşullarla başlayın
Cihaz uygulamaları, herhangi bir video kodlayıcıyı destekliyor ve üçüncü taraf uygulamalarının kullanımına sunuyorsa veMediaFormat.KEY_BITRATE_MODE
değerini, kodlayıcının Değişken bit hızı modunda çalışacak şekilde
BITRATE_MODE_VBR
olarak ayarladıysanız, minimum kalite tabanını etkilemediği sürece, kodlanmış bit hızı :
[C-5-1]Bir kayan pencerenin üzerinde, çerçeve içi (kare içi) aralıklar arasındaki bit hızının% 15'ten daha fazla üzerinde olmaması gerekir.[C-5-2]1 saniyelik kayan bir pencerede bit hızının% 100'ün üzerinde OLMAMALIDIR.
Cihaz uygulamaları, herhangi bir video kodlayıcıyı destekliyor ve üçüncü taraf uygulamalarının kullanımına sunuyorsa ve MediaFormat.KEY_BITRATE_MODE
değerini BITRATE_MODE_CBR
olarak ayarlayıp kodlayıcının sabit bit hızı modunda çalışmasını sağlıyorsa kodlanmış bit hızı:
[C-6-1][C-SR-2]'nin 1 saniyelik kayan bir pencerede hedef bit hızının% 15'inden fazla OLMAMASI ÖNEMLİDİR.
Yeni şartları sonlandırma
Cihaz uygulamaları, diyagonal uzunluğu en az 2,5 inç olan yerleşik bir ekran görüntüsü veya video çıkış bağlantı noktası içeriyor ya da kamera desteğini android.hardware.camera.any
özellik bayrağıyla beyan ediyorsa:
- [C-1-1] VP8 veya H.264 video kodlayıcılarından en az birinin desteğini içermeli ve üçüncü taraf uygulamalarının kullanımına sunmalıdır.
- Hem VP8 hem de H.264 video kodlayıcılarını desteklemeli ve üçüncü taraf uygulamalar için kullanılabilir hale getirmelisiniz.
Cihaz uygulamaları H.264, VP8, VP9 veya HEVC video kodlayıcılardan herhangi birini destekliyor ve üçüncü taraf uygulamalarının kullanımına sunuyorsa:
- [C-2-1], dinamik olarak yapılandırılabilen bit hızlarını desteklemektedir.
- Değişken kare hızlarını DESTEKLEMELİDİR. Bu durumda video kodlayıcı, giriş arabelleklerinin zaman damgalarına göre anlık kare süresini belirlemeli ve bit paketini bu kare süresine göre ayırmalıdır.
Cihaz uygulamaları, MPEG-4 SP video kodlayıcıyı destekliyor ve üçüncü taraf uygulamalarının kullanımına sunuyorsa:
- Desteklenen kodlayıcı için dinamik olarak yapılandırılabilen bit hızlarını DESTEKLEMELİDİR.
Cihaz uygulamaları, donanım hızlandırmalı video veya görüntü kodlayıcıları sağlıyorsa ve android.camera
API'leri üzerinden açığa çıkan bir veya daha fazla takılı ya da takılabilir donanım kamerasını destekliyorsa:
- [C-4-1] tüm donanım hızlandırmalı video ve görüntü kodlayıcıların, donanım kameralarındaki karelerin kodlanmasını DESTEKLEMELİDİR.
- Donanım kameralarındaki tüm video veya görüntü kodlayıcıları aracılığıyla kodlama karelerini DESTEKLEMELİDİR.
Cihaz uygulamaları HDR kodlaması sağlıyorsa bunlar:
- [C-SR-1]'nin, sorunsuz kod dönüştürme API'sine HDR biçiminden SDR biçimine dönüştürmesi için bir eklenti sağlaması ÖNEMLE ÖNERİLİR.
5.2.1. H.263
Cihaz uygulamaları, H.263 kodlayıcıları destekliyor ve bunları üçüncü taraf uygulamalarının kullanımına sunuyorsa:
- [C-1-1] Temel Profil Düzeyi 45 kullanarak QCIF çözünürlüğünü (176 x 144) DESTEKLEMELİDİR. SQCIF çözünürlüğü isteğe bağlıdır.
Desteklenen kodlayıcı için dinamik olarak yapılandırılabilen bit hızlarını DESTEKLEMELİDİR.
5.2.2. H.264
Cihaz uygulamaları H.264 codec'i destekliyorsa:
- [C-1-1] Temel Profil Düzeyi 3'ü DESTEKLEMELİDİR. Ancak ASO (İsteğe Bağlı Dilim Siparişi), FMO (Esnek Makroblok Siparişleme) ve RS (Gereksiz Dilimler) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğun sağlanması için kodlayıcılar tarafından Temel Profil için ASO, FMO ve RS'lerin kullanılmaması ÖNERİLİR.
- [C-1-2] aşağıdaki tabloda yer alan SD (Standart Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
- Ana Profil Düzeyi 4'ü DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği şekilde 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 kodlamayı desteklediğini bildiriyorsa:
- [C-2-1] aşağıdaki tabloda yer alan 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ı | Saniyede 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'i destekliyorsa:
- [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
- Aşağıdaki HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
- [C-1-2] Matroska WebM dosyalarının yazılmasını DESTEKLEMELİDİR.
- Web video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olmasını sağlamak için WebM projesi RTC donanım kodlama gereksinimlerini 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 kodlamayı desteklediğini bildiriyorsa:
- [C-2-1] aşağıdaki tabloda yer alan 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. Başkan Yardımcısı
Cihaz uygulamaları VP9 codec'i destekliyorsa:
- [C-1-2] Profil 0, Düzey 3'ü DESTEKLEMELİDİR.
- [C-1-1] Matroska WebM dosyalarının yazılmasını DESTEKLEMELİDİR.
- [C-1-3] CodecPrivate verileri OLUŞTURMALIDIR.
- Aşağıdaki tabloda belirtildiği şekilde HD kod çözme profillerini DESTEKLEMELİDİR.
- [C-SR-1], bir donanım kodlayıcı varsa aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini desteklemesi için ÖNEMLE ÖNERİ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çimi desteği İSTEĞE BAĞLIDIR.
5.2.5. H.265
Cihaz uygulamaları H.265 codec'i destekliyorsa:
- [C-1-1], 512 x 512 çözünürlüğe kadar Ana Profil Düzeyi 3'ü DESTEKLEMELİDİR.
Aşağıdaki tabloda belirtildiği şekilde HD kodlama profillerini DESTEKLEMELİDİR.- [C-SR-1] donanım kodlayıcı varsa aşağıdaki tabloda belirtildiği gibi 720 x 480 SD profilini ve HD kodlama profillerini desteklemesi için ÖNEMLE ÖNERİ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 |
Yeni koşullarla başlayın
5.2.6. AV1
Cihaz uygulamaları AV1 codec'i 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, yani performans verilerini aşağıdaki tabloda yer alan desteklenen çözünürlükler için
getSupportedFrameRatesFor()
veyagetSupportedPerformancePoints()
API'ler aracılığıyla yayınlamalıdır.[C-1-3] HDR meta verilerini kabul etmeli ve bit akışına çıkartmalıdır
AV1 kodlayıcı donanım hızlandırmalıysa:
- [C-2-1] aşağıdaki tablodan en fazla HD1080p kodlama profilini 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 |
Yeni şartları sonlandırma
5.3. Video Kodu Çözme
Cihaz uygulamaları VP8, VP9, H.264 veya H.265 codec'lerini destekliyorsa:
- [C-1-1] tüm VP8, VP9, H.264 ve H.265 codec'leri için aynı akışta standart Android API'leri aracılığıyla dinamik video çözünürlüğünü ve kare hızı geçişini gerçek zamanlı olarak ve cihazdaki her bir codec tarafından desteklenen maksimum çözünürlüğe kadar desteklemelidir.
5.3.1. MPEG-2
Cihaz uygulamaları, MPEG-2 kod çözücüleri destekliyorsa:
- [C-1-1], ana profil üst düzeyini DESTEKLEMELİDİR.
5.3.2. H.263
Cihaz uygulamaları, H.263 kod çözücüleri destekliyorsa:
- [C-1-1] Temel Profil Düzeyi 30'u (30 fps'de CIF, QCIF ve SQCIF çözünürlükleri 384 kb/sn.) ve 45. Düzey'i (30 fps'de 128 kb/sn QCIF ve SQCIF çözünürlükleri) desteklemelidir.
5.3.3. MPEG-4
MPEG-4 kod çözücülere sahip cihaz uygulamaları için:
- [C-1-1] Basit Profil Düzeyi 3'ü DESTEKLEMELİDİR.
5.3.4. H.264
Cihaz uygulamaları, H.264 kod çözücüleri destekliyorsa:
- [C-1-1] Ana Profil Düzeyi 3.1'i ve Temel Profil'i DESTEKLEMELİDİR. ASO (İsteğe Bağlı Dilim Siparişi), FMO (Esnek Makro Blok Siparişi) ve RS (Gereksiz Dilimler) desteği İSTEĞE BAĞLIDIR.
- [C-1-2] aşağıdaki tabloda listelenen ve Temel Profil ve Ana Profil Düzeyi 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlüklü) profillerine sahip videoların kodunu çözebilmelidir.
- Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlüklü) profillere sahip videoların kodunu çözebilmelidir.
Display.getSupportedModes()
yöntemi tarafından bildirilen yükseklik video çözünürlüğüne eşit veya bundan daha yüksekse 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 desteklemektedir.
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'i 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 şekilde HD kod çözme profillerini DESTEKLEMELİDİR.
- [C-1-2], donanım kod çözücü varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes()
yöntemi tarafından bildirilen yükseklik video çözünürlüğüne eşit veya ondan yüksekse:
- [C-2-1] Cihaz uygulamalarının; 720, 1080 ve UHD profillerine ait H.265 veya VP9 kod çözme yöntemlerinden en az birini desteklemesi ZORUNLUDUR.
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ı, Medya API'leri üzerinden bir HDR Profilini desteklediğini iddia ediyorsa:
- [C-3-1] Cihaz uygulamalarının, gerekli HDR meta verilerini uygulamadan kabul etmesi ve gerekli HDR meta verilerinin bit akışından ve/veya kapsayıcıdan çıkartılmasını ve çıkışını desteklemesi gerekir.
- [C-3-2] Cihaz uygulamalarının, HDR içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).
5.3.6. VP8
Cihaz uygulamaları VP8 codec'i destekliyorsa:
- [C-1-1] aşağıdaki tabloda yer alan SD kod çözme profillerini DESTEKLEMELİDİR.
- Gereksinimleri karşılayan bir donanım VP8 codec'i KULLANMALIDIR.
- Aşağıdaki tabloda yer alan HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes()
yönteminin bildirdiği yükseklik video çözünürlüğüne eşit veya ondan yüksekse:
- [C-2-1] Cihaz uygulamaları, aşağıdaki tabloda yer alan 720p profilleri desteklemektedir.
- [C-2-2] Cihaz uygulamaları, aşağıdaki tabloda 1080p profilleri desteklemektedir.
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. Başkan Yardımcısı
Cihaz uygulamaları VP9 codec'i destekliyorsa:
- [C-1-1] aşağıdaki tabloda belirtildiği şekilde SD video kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği şekilde HD kod çözme profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları VP9 codec'i ve donanım kod çözücüyü destekliyorsa:
- [C-2-1] aşağıdaki tabloda belirtildiği şekilde HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes()
yöntemi tarafından bildirilen yükseklik video çözünürlüğüne eşit veya ondan yüksekse:
- [C-3-1] Cihaz uygulamalarının; 720, 1080 ve UHD profillerinin VP9 veya H.265 kod çözme yöntemlerinden en az birini desteklemesi ZORUNLUDUR.
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 özellikli 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 üzerinden VP9Profile2
veya VP9Profile3
özelliğini desteklediğini iddia ediyorsa:
- 12 bit biçimi desteği İSTEĞE BAĞLIDIR.
Cihaz uygulamaları, medya API'leri üzerinden bir HDR Profili'ni (VP9Profile2HDR
, VP9Profile2HDR10Plus
, VP9Profile3HDR
, VP9Profile3HDR10Plus
) desteklediğini iddia ediyorsa:
- [C-4-1] Cihaz uygulamalarının, uygulamadan gelen gerekli HDR meta verilerini (tüm HDR profilleri için
KEY_HDR_STATIC_INFO
ve HDR10Plus profilleri için KEY_HDR10_PLUS_INFO') kabul etmesi ZORUNLUDUR. Ayrıca bit akışından ve/veya container'dan gerekli HDR meta verilerinin çıkartılmasını ve çıkışını almalarının da desteklenmesi ZORUNLUDUR. - [C-4-2] Cihaz uygulamalarının, HDR içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).
5.3.8. Dolby Vision
Cihaz uygulamaları, HDR_TYPE_DOLBY_VISION
üzerinden Dolby Vision kod çözücü desteği verdiğini bildiriyorsa:
- [C-1-1] Dolby Vision özellikli bir ayıklayıcı SAĞLANMALIDIR.
- [C-1-2] Dolby Vision içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).
- [C-1-3], geriye dönük uyumlu temel katmanların (varsa) kanal kimliklerini, birleşik Dolby Vision katmanının izleme kimliğiyle aynı olacak şekilde AYARLAMALIDIR.
5.3.9. AV1
- [C-1-1], 10 bit içerik dahil olmak üzere Profil 0'ı DESTEKLEMELİDİR.
Yeni koşullarla başlayın
Cihaz uygulamaları, AV1 codec'i destekliyor 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'ini destekliyorsa bunlar:
Display.getSupportedModes()
yöntemi tarafından bildirilen yükseklik 720p'ye eşit veya 720p'den yüksek olduğunda [C-2-1] aşağıdaki tablodan en az HD 720p video kod çözme profillerinin kodunu çözebilmelidir.- [C-2-2],
Display.getSupportedModes()
yöntemi tarafından bildirilen yükseklik 1080p'ye eşit veya bundan 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ı, Medya API'leri aracılığıyla HDR Profili'ni destekliyorsa:
- [C-3-1], bit akışından ve/veya container'dan HDR meta verilerinin ayıklanmasını ve çıkışını DESTEKLEMELİDİR.
- [C-3-2] HDR içeriğini cihaz ekranında veya standart bir video çıkışı bağlantı noktasında (örneğin, HDMI) düzgün şekilde görüntülemelidir.
Yeni şartları sonlandırma
5.4. Ses Kaydetme
Bu bölümde açıklanan gereksinimlerden bazıları Android 4.3'ten itibaren GEÇERLİDİR, ancak gelecekteki sürümlerin Uyumluluk Tanımı'nın bunları "ZORUNLU" olarak değiştirmesi planlanmaktadır. Mevcut ve yeni Android cihazların GEREKLİ olarak listelenen bu gereksinimleri karşılaması ÖNERİLİR. Aksi takdirde gelecekteki sürüme yükseltildiğinde Android uyumluluğuna ulaşamazlar.
5.4.1. Ham Ses Yakalama ve Mikrofon Bilgileri
Cihaz uygulamaları android.hardware.microphone
bildiriyorsa:
[C-1-1], başarıyla açılan herhangi bir
AudioRecord
veyaAAudio
INPUT akışı için ham ses içeriğinin yakalanmasına İZİN VERMELİDİR. En azından aşağıdaki özelliklerin desteklenmesi ZORUNLUDUR:- 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,AAudio
ürünündeki eşdeğer Giriş Hazır Ayarları (örneğin,AAUDIO_INPUT_PRESET_CAMCORDER
) için de geçerlidir.
Aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına izin verilmelidir:
- Biçim: Doğrusal PCM, 16 bit ve 24 bit
- Örnekleme hızları: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Hz
- Kanallar: Cihazdaki mikrofon sayısı kadar kanal
[C-1-2] yukarı örnekleme yapmadan yukarıdaki örnek hızlarında yakalama GEREKİR.
Yukarıda verilen örnek oranları aşağı örneklemeyle yakalandığında [C-1-3] uygun bir kenar yumuşatma filtresi İÇERMELİDİR.
Ham ses içeriğinin AM radyo ve DVD kalitesinde yakalanmasına İZİN VERİLMELİDİR, bu da aşağıdaki nitelikleri taşır:
- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 22.050, 48.000 Hz
- Kanallar: Stereo
[C-1-4];
MicrophoneInfo
API'sini dikkate almalı veMediaRecorder.AudioSources DEFAULT
,MIC
,CAMCORDER
,VOICE_RECOGNITION
,VOICE_COMMUNICATION
,UNPROCESSED
veyaVOICE_PERFORMANCE
kullanan etkin AudioRecord için,AudioManager.getMicrophones()
API'si üzerinden üçüncü taraf uygulamaların erişebildiği cihazdaki mevcut mikrofonlarla ilgili bilgileri doğru şekilde doldurmalıdır. Cihaz uygulamaları, ham ses içeriğinin AM radyo ve DVD kalitesinde yakalanmasına izin veriyorsa:[C-2-1] 16000:22050 veya 44100:48000'den yüksek herhangi bir oranda yukarı örnekleme olmadan yakalama ZORUNLUDUR.
[C-2-2] Yukarı veya aşağı örnekleme için uygun bir kenar yumuşatma filtresi İÇERMELİDİR.
5.4.2. Ses Tanıma için Ekran Kaydı
Cihaz uygulamaları android.hardware.microphone
bildiriyorsa:
- [C-1-1]
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION
ses kaynağını örnekleme hızlarından birinde (44100 ve 48000) yakalamalıdır. - [C-1-2]
AudioSource.VOICE_RECOGNITION
ses kaynağından ses akışı kaydederken varsayılan olarak gürültü azaltma ses işlemenin devre dışı bırakılması ZORUNLUDUR. [C-1-3]
AudioSource.VOICE_RECOGNITION
ses kaynağından ses akışı kaydederken otomatik kazanç kontrolünün varsayılan olarak devre dışı bırakılması ZORUNLUDUR.Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri sergilemelidir. Bu durum özellikle, her bir mikrofon ve ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofon için 100 Hz ile 4.000 Hz arasında ±3 dB olarak ölçülmüştür.
[C-SR-1] ses tanıma ses kaynağını kaydetmek için kullanılan her bir mikrofonun orta frekans aralığına kıyasla, düşük frekans aralığındaki genlik seviyeleri sergilemesi ÖNEMLE ÖNERİLİR. Bu değer, özellikle 30 Hz ile 100 Hz arasındaki ±20 dB'dir.
[C-SR-2] ses tanıma ses kaynağını kaydetmek için kullanılan her bir mikrofonun orta frekans aralığına kıyasla, yüksek frekans aralığındaki genlik seviyeleri sergilemesi ÖNEMLE ÖNERİLİR. Bu, özellikle 4.000 Hz ile 22 KHz arasındaki ±30 dB'dir.
Ses girişi hassasiyetini, 90 dB Ses Basıncı Düzeyinde (SPL) çalan 1.000 Hz sinüsoidal ses kaynağı (SPL) için 1.000 Hz sinüsoidal ses tanıması ayarlamalıdır (
mikrofondan 30 cm uzaktaölçülen her ses için 1770 - 3000 - 3000 - 1770 aralığında ideal sesSes tanıma ses akışını, PCM genlik düzeyleri giriş SPL'sinin mikrofonda -18 dB ile +12 dB arasında, yani mikrofonda 90 dB SPL'ye en az 30 dB'lik bir aralıkta doğrusal olarak izleneceği şekilde kaydedilmelidir.
Ses tanıma ses akışını, mikrofondaki 90 dB SPL giriş düzeyinde 1 kHz için% 1'den düşük toplam harmonik distorsiyonla (THD) kaydetmeniz GEREKİR.
Cihaz uygulamaları, konuşma tanıma için ayarlanmış android.hardware.microphone
ve gürültü azaltma (azaltma) teknolojilerini bildirirse:
- [C-2-1], bu ses efektinin
android.media.audiofx.NoiseSuppressor
API ile kontrol edilebilmesine İZİN VERMELİDİR. - [C-2-2], her bir gürültü azaltma teknolojisi uygulamasını
AudioEffect.Descriptor.uuid
alanı yoluyla benzersiz şekilde tanımlamalıdır.
5.4.3. Oynatmanın Yeniden Yönünün Belirlenmesi için Fotoğraf Çek
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
tanımlıyorsa:
[C-1-1]
REMOTE_SUBMIX
ses kaynağını doğru şekilde uygulamalıdır. Böylece, bir uygulama bu ses kaynağından kayıt yapmak içinandroid.media.AudioRecord
API'yi kullandığında aşağıdakiler hariç tüm ses akışlarının bir karışımını yakalar:AudioManager.STREAM_RING
AudioManager.STREAM_ALARM
AudioManager.STREAM_NOTIFICATION
5.4.4. Akustik Yankı Önleyici
Cihaz uygulamaları android.hardware.microphone
bildiriyorsa:
AudioSource.VOICE_COMMUNICATION
kullanarak çekim yaparken, sesli iletişim için ayarlanmış ve yakalama yoluna uygulanmış bir Akustik Yankı Önleyici (AEC) teknolojisi KULLANILMALIDIR.
Cihaz uygulamaları, AudioSource.VOICE_COMMUNICATION
seçildiğinde ses yakalama yoluna eklenen bir Akustik Yankı İptalçisi sağlıyorsa:
- [C-SR-1], bunu AcousticEchoCanceler API yöntemi AcousticEchoCanceler.isAvailable() ile bildirmesi için STRONGLY_RECOMMENDED
- [C-SR-2], bu ses efektinin AcousticEchoCanceler API ile kontrol edilebilmesi için STRONGLY_RECOMMENDED durumuna sahiptir.
- [C-SR-3], her bir AEC teknolojisi uygulamasını AudioEffect.Descriptor.uuid alanı yoluyla benzersiz bir şekilde tanımlamak için STRONGLY_RECOMMENDEDtur.
5.4.5. Eşzamanlı Yakalama
Cihaz uygulamalarında android.hardware.microphone
belirtildiğinde,bu belgede açıklandığı gibi eşzamanlı yakalama uygulanması GEREKİR. Özellikle:
- [C-1-1]
AudioSource.VOICE_RECOGNITION
ile yakalama bir erişilebilirlik hizmeti ve herhangi birAudioSource
ile en az bir uygulama yakalamanın mikrofona eşzamanlı olarak erişmesine İZİN VERMELİDİR. - [C-1-2]
AudioSource.VOICE_COMMUNICATION
veyaAudioSource.CAMCORDER
hariç olmak üzere, Asistan rolüne sahip olan önceden yüklenmiş bir uygulamanın veAudioSource
ile yakalama yapan en az bir uygulamanın mikrofona eşzamanlı olarak erişmesine izin verilmelidir. - [C-1-3] Bir uygulama
AudioSource.VOICE_COMMUNICATION
veyaAudioSource.CAMCORDER
ile kayıt yaparken erişilebilirlik hizmeti hariç diğer uygulamalar için ses yakalamanın sesini kapatması ZORUNLUDUR. Ancak bir uygulamaAudioSource.VOICE_COMMUNICATION
aracılığıyla görüntü yakalamaya çalışıyorsaCAPTURE_AUDIO_OUTPUT
izni olan ayrıcalıklı (önceden yüklü) bir uygulama ise başka bir uygulama sesli aramayı yakalayabilir. - [C-1-4] İki veya daha fazla uygulama eşzamanlı olarak görüntü yakalıyorsa ve iki uygulamanın üst kısmında kullanıcı arayüzü yoksa en son ses kaydını başlatan uygulama alır.
5.5. Ses Çalma
Android, bölüm 7.8.2'de tanımlandığı gibi uygulamaların ses çıkışı çevre birimi üzerinden ses çalmasına izin verme desteği içerir.
5.5.1. Ham Ses Oynatma
Cihaz uygulamaları android.hardware.audio.output
bildiriyorsa:
[C-1-1], aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına İZİN VERMELİDİR:
- Kaynak biçimler: Doğrusal PCM, 16-bit, 8-bit, kayan
- Kanallar: Mono, Stereo, 8 adede kadar kanala sahip geçerli çok kanallı yapılandırmalar
- Örnekleme hızları (Hz olarak):
- Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000
- 96.000 mono ve stereo
5.5.2. Ses Efektleri
Android, cihaz uygulamaları için bir ses efektleri API'si sağlar.
Cihaz uygulamaları android.hardware.audio.output
özelliğini bildiriyorsa:
- [C-1-1], AudioEffect alt sınıfları
Equalizer
veLoudnessEnhancer
üzerinden kontrol edilebilenEFFECT_TYPE_EQUALIZER
veEFFECT_TYPE_LOUDNESS_ENHANCER
uygulamalarını desteklemelidir. - [C-1-2],
Visualizer
sınıfı üzerinden kontrol edilebilen görselleştirici API uygulamasını desteklemelidir. - [C-1-3], AudioEffect alt sınıfı
DynamicsProcessing
aracılığıyla kontrol edilebilenEFFECT_TYPE_DYNAMICS_PROCESSING
uygulamasını desteklemelidir.
Yeni koşullarla başlayın
- [C-1-4], kayan nokta girişi ve çıkışına sahip ses efektlerini DESTEKLEMELİDİR.
- [C-1-5] Ses efektlerinin, FCC_LIMIT olarak da bilinen mikser kanalı sayısına kadar birden fazla kanalı desteklediğinden emin olması ZORUNLUDUR.
Yeni şartları sonlandırma
BassBoost
,EnvironmentalReverb
,PresetReverb
veVirtualizer
AudioEffect
alt sınıfları üzerinden kontrol edilebilenEFFECT_TYPE_BASS_BOOST
,EFFECT_TYPE_ENV_REVERB
,EFFECT_TYPE_PRESET_REVERB
veEFFECT_TYPE_VIRTUALIZER
uygulamalarını DESTEKLEMELİDİR.- [C-SR-1] Kayan nokta ve çok kanallı efektleri desteklemesi için ÖNEMLE ÖNERİLİR.
5.5.3. Ses Çıkışı Ses Seviyesi
Otomotiv cihaz uygulamaları:
- AudioAttributes özelliğinde tanımlandığı şekilde içerik türü veya kullanımı ve
android.car.CarAudioManager
içinde herkese açık olarak tanımlanan araç sesi kullanımı kullanılarak ses düzeyinin her ses akışı için ayrı ayrı ayarlanmasına izin verilmelidir.
5.5.4. Ses Aktarımı
Ses boşaltma oynatmayı destekleyen cihaz uygulamaları:
- [C-SR-1] AudioTrack Boşluksuz API ve MediaPlayer için medya kapsayıcısı tarafından belirtildiğinde, aynı biçime sahip iki klip arasında oynatılan aralıksız ses içeriğini kırpmak ÖNERİLİR.
5.6. Ses Gecikmesi
Ses gecikmesi, ses sinyalinin bir sistemden geçmesi nedeniyle oluşan gecikmedir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikmelere ihtiyaç duyar.
Bu bölümde aşağıdaki tanımları kullanabilirsiniz:
- çıkış gecikmesi. Bir uygulamanın PCM kodlu bir veri çerçevesi yazması ile ilgili sesin cihaz üzerindeki bir dönüştürücüde ortama sunulması veya sinyalin bir bağlantı noktası aracılığıyla cihazdan ayrılması ve harici olarak gözlemlenebilmesi arasındaki aralık.
- soğuk çıkış gecikmesi. İstek öncesinde ses çıkış sisteminin boşta olduğu ve kapatıldığı zaman damgalarına göre ilk karenin sunuluş zamanına kadar geçen süre.
- Sürekli çıkış gecikmesi. Cihaz ses çaldıktan sonra, sonraki kareler için çıkış gecikmesi.
- giriş gecikmesi. Bir sesin cihaz üzerindeki bir dönüştürücüde cihaza veya cihaza bir bağlantı noktası aracılığıyla girmesi ile bir uygulamanın PCM kodlu verilerin karşılık gelen çerçevesini okuması arasındaki aralık.
- kayıp giriş. Giriş sinyalinin kullanılamıyor veya kullanılamayan ilk kısmı.
- soğuk giriş gecikmesi. Yayının başlatılması ile ilk geçerli karenin alındığı, istek öncesinde ses giriş sisteminin boşta olduğu ve kapalı olduğu zaman arasındaki süre.
sürekli giriş gecikmesi. Cihaz ses kaydederken sonraki kareler için giriş gecikmesi.
sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesi ile sürekli çıkış gecikmesi ve bir arabellek süresinin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ve çı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 içindeki PCM ile ilgili OpenSL ES API'leri grubu.
AAudio yerel ses API'si. Android NDK içindeki AAudio API'leri grubu.
Zaman damgası. Bir akış içindeki göreli kare konumundan ve bu karenin ilişkili uç noktadaki ses işleme ardışık düzenine girmesi veya ardışık düzeninden ayrılması ile ilgili tahmini süreyi içeren bir çift. Ayrıca bkz. AudioTimestamp.
aksaklık olarak tanımladığından emin olun. Ses sinyalindeki geçici kesinti veya yanlış örnek değeri. Genellikle çıkışta arabelleğe alma aşımı, giriş için arabellek aşımı durumu veya başka herhangi bir dijital ya da analog gürültü kaynağından kaynaklanır.
ortalama mutlak sapma. Bir değer kümesinin ortalamasından sapmalarının mutlak değerinin ortalaması.
Tonla dokunma gecikmesi. Ekrana dokunulduğunda ve bu dokunma sonucunda sesin hoparlörde duyulması arasındaki süre.
Cihaz uygulamalarında android.hardware.audio.output
beyan ediliyorsa bunların aşağıdaki gereksinimleri karşılaması veya aşması ZORUNLUDUR:
- [C-1-1] AudioTrack.getTimestamp ve
AAudioStream_getTimestamp
tarafından döndürülen çıkış zaman damgası +/- 2 ms'lik bir değere sahip. [C-1-2] 500 milisaniye veya daha az soğuk çıkış gecikmesi.
[C-1-3]
AAudioStreamBuilder_openStream()
kullanarak bir çıkış akışı açma işleminin 1.000 milisaniyeden kısa sürmesi ZORUNLUDUR.
android.hardware.audio.output
tanımlanan cihaz uygulamalarında aşağıdaki gereksinimleri karşılamaları veya aşmaları ÖNEMLE ÖNERİLİR:
- [C-SR-1] Hoparlör veri yolu üzerinde 100 milisaniye veya daha az soğuk çıkış gecikmesi.
- [C-SR-2] Dokunma tonla ilgili gecikme süresi 80 milisaniye veya daha az.
- [C-SR-4] AudioTrack.getTimestamp ve
AAudioStream_getTimestamp
tarafından döndürülen çıkış zaman damgası +/- 1 ms'lik bir değere sahip.
Yeni koşullarla başlayın
- [C-SR-4]
AAudioStream_getTimestamp
tarafından döndürülen giriş ve çıkış zaman damgalarına göre hesaplanan gidiş dönüş gecikmelerinin, hoparlörler, kablolu ve kablosuz kulaklıklar içinAAUDIO_PERFORMANCE_MODE_NONE
veAAUDIO_PERFORMANCE_MODE_LOW_LATENCY
için ölçülen gidiş dönüş gecikmesinden 30 ms. içinde olması ÖNEMLE ÖNERİLİR.
Yeni şartları sonlandırma
Cihaz uygulamaları yukarıdaki şartları karşılıyorsa herhangi bir ilk kalibrasyondan sonra AAudio yerel ses API'sini kullanırken desteklenen en az bir ses çıkış cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için geçerli olan şartlar şu şekildedir:
- [C-SR-5]
android.hardware.audio.low_latency
özellik bayrağı beyan ederek düşük gecikmeli sesi bildirmesi ÖNEMLE ÖNERİLİR. - [C-SR-6] AAudio API aracılığıyla düşük gecikmeli ses gereksinimlerini karşılaması ÖNEMLE ÖNERİLİR.
- [C-SR-7]
AAudioStream_getPerformanceMode()
öğesindenAAUDIO_PERFORMANCE_MODE_LOW_LATENCY
döndüren akışlardaAAudioStream_getFramesPerBurst()
tarafından döndürülen değerin,AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER
mülk anahtarı içinandroid.media.AudioManager.getProperty(String)
tarafından döndürülen değerden düşük veya bu değere eşit olmasını sağlamak amacıyla ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, AAudio yerel ses API'si aracılığıyla düşük gecikmeli ses gereksinimlerini karşılamazsa:
- [C-2-1] Düşük gecikmeli ses desteği için BİLDİRMEMELİDİR.
Cihaz uygulamaları android.hardware.microphone
içeriyorsa bu ses girişi gereksinimlerini karşılamaları gerekir:
- [C-3-1] AudioRecord.getTimestamp veya
AAudioStream_getTimestamp
tarafından döndürülen zaman damgalarındaki hatayı +/- 2 ms ile sınırlayın. Burada "Hata", doğru değerden sapmayı ifade eder. - [C-3-2] 500 milisaniye veya daha az soğuk giriş gecikmesi.
- [C-3-3]
AAudioStreamBuilder_openStream()
kullanarak bir giriş akışı açmanın 1.000 milisaniyeden kısa sürmesi ZORUNLUDUR.
Cihaz uygulamaları android.hardware.microphone
içeriyorsa aşağıdaki ses girişi gereksinimlerini karşılamaları ÖNERİLİR:
[C-SR-8] Mikrofon veri yolunda 100 milisaniye veya daha az soğuk giriş gecikmesi.
[C-SR-11] AudioRecord.getTimestamp veya
AAudioStream_getTimestamp
ile döndürülen giriş zaman damgalarındaki hatayı +/- 1 ms ile sınırlandırın.
Cihaz uygulamalarında android.hardware.audio.output
ve android.hardware.microphone
beyan ediliyorsa:
- [C-SR-12] Desteklenen en az bir yolda, 50 milisaniye veya daha az bir Ortalama Mutlak Sapma ile 10 milisaniyeden kısa bir Ortalama Sürekli Gidiş Dönüş Gecikmesine sahip olması ÖNEMLE ÖNERİLİR.
5.7. Ağ Protokolleri
Cihaz uygulamalarının, Android SDK belgelerinde belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemesi ZORUNLUDUR.
Cihaz uygulamasının desteklemesi gereken her codec ve kapsayıcı biçimi için cihaz uygulaması:
[C-1-1] HTTP ve HTTPS üzerinden bu codec'i veya kapsayıcıyı DESTEKLEMELİDİR.
[C-1-2], aşağıdaki medya segmenti biçimleri tablosunda gösterildiği gibi, HTTP Canlı Yayın taslak protokolü, Sürüm 7 üzerinde gösterilen ilgili medya segmenti biçimlerini DESTEKLEMELİDİR.
[C-1-3], aşağıdaki RTSP tablosunda gösterilen ilgili RTSP yük biçimlerini DESTEKLEMELİDİR. İstisnalar için lütfen bölüm 5.1'de yer alan tablo dipnotlarına bakın.
Medya Segmenti Biçimleri
Segment biçimleri | Referanslar | Gerekli codec desteği |
---|---|---|
MPEG-2 Taşıma Akışı | ISO 13818 |
Video codec'leri:
ve MPEG-2 ile ilgili ayrıntılar için bölüm 5.1.8'e bakın. Ses codec'leri:
|
ADTS kadrajı ve ID3 etiketleri içeren AAC | ISO 13818-7 | AAC ve varyantları hakkında ayrıntılar 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ılar 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-2.000 | RFC 4629 | H263 ile ilgili ayrıntılar için bölüm 5.1.8'e bakın. |
AMR | RFC 4867 | AMR-NB hakkında ayrıntılı bilgi için bölüm 5.1.3'e bakın |
AMR-WB | RFC 4867 | AMR-WB hakkında ayrıntılı bilgi 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-genel | RFC 3640 | AAC ve varyantları hakkında ayrıntılar için bölüm 5.1.3'e bakın. |
MP2T | RFC 2250 | Ayrıntılar için HTTP Canlı Akışı altındaki MPEG-2 Taşıma Akışı bölümüne bakın |
5.8. Güvenli Medya
Cihaz uygulamaları, güvenli video çıkışını ve güvenli yüzeyleri destekleyebiliyorsa:
- [C-1-1],
Display.FLAG_SECURE
için destek bildirmeli.
Cihaz uygulamaları Display.FLAG_SECURE
desteği bildiriyorsa ve kablosuz ekran protokolünü destekliyorsa:
- [C-2-1], Miracast gibi kablosuz protokollerle bağlanan ekranlar için bağlantıyı HDCP 2.x veya sonraki bir sürüm gibi kriptografik olarak güçlü bir mekanizmayla güvenli hale getirmelidir.
Cihaz uygulamaları Display.FLAG_SECURE
için destek bildiriyorsa ve kablolu harici ekranı destekliyorsa:
- [C-3-1], kullanıcı tarafından erişilebilen kablolu bağlantı noktası aracılığıyla bağlanan tüm harici ekranlarda HDCP 1.2 veya sonraki sürümleri DESTEKLEMELİDİR.
5.9. Müzik Aleti Dijital Arayüzü (MIDI)
Cihaz uygulamaları, android.content.pm.PackageManager
sınıfı aracılığıyla android.software.midi
özelliğinin desteklendiğini bildiriyorsa:
[C-1-1], genel MIDI olmayan bağlantı sağlayan tüm MIDI özellikli donanım aktarımlarında MIDI'yı desteklemelidir. Bu aktarımlar aşağıdaki gibidir:
- USB ana makine modu, bölüm 7.7
- Merkezi rolde görev alan Bluetooth LE üzerinden MIDI, bölüm 7.4.3
[C-1-2] uygulamalar arası MIDI yazılım aktarımını DESTEKLEMELİDİR (sanal MIDI cihazları)
[C-1-3] libamidi.so'yu (yerel MIDI desteği) içermelidir
USB çevre birimi modu üzerinden MIDI'yı DESTEKLEMELİDİR, bölüm 7.7
5.10. Profesyonel Ses
Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla android.hardware.audio.pro
özelliği desteğini bildiriyorsa:
- [C-1-1]
android.hardware.audio.low_latency
özelliği için desteği BİLDİRMELİDİR. - [C-1-2], desteklenen en az bir yol boyunca 25 milisaniye veya daha kısa süreli 5.6 Ses Gecikmesi bölümünde tanımlandığı üzere, kesintisiz gidiş dönüş ses gecikmesine sahip olmalıdır.
- [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
- [C-1-4],
android.software.midi
özelliği için desteği BİLDİRMELİDİR. - [C-1-5] AAudio yerel ses API'sini ve
AAUDIO_PERFORMANCE_MODE_LOW_LATENCY
kullanarak gecikmeleri ve USB ses gereksinimlerini karşılamalıdır. - [C-1-6] Soğuk çıkış gecikmesinin 200 milisaniye veya daha kısa olması ZORUNLUDUR.
- [C-1-7] Soğuk giriş gecikmesinin 200 milisaniye veya daha kısa olması ZORUNLUDUR.
[C-1-8] Hoparlörden mikrofona veri yolunda en az 5 ölçüm boyunca ortalama 80 milisaniye veya daha az Dokunarak Tonlama gecikmesi ZORUNLUDUR.
[C-SR-1] 5.6 Ses Gecikmesi bölümünde tanımlanan gecikmeleri (20 milisaniye veya daha kısa) ve 5 milisaniyeden daha kısa bir Ortalama Mutlak Sapma ile hoparlörden mikrofon yoluna 5 milisaniyeden daha kısa sürede 5 ölçümden fazla olarak açıklanan gecikmeleri karşılaması ÖNERİLİR.
[C-SR-2] MMAP yolu üzerinde AAudio yerel ses API'si kullanılarak sürekli gidiş-dönüş ses gecikmesi, soğuk giriş gecikmesi, soğuk çıkış gecikmesi ve USB ses gereksinimleri için Pro Audio gereksinimlerini karşılamak üzere ÖNEMLE ÖNERİLİR.
[C-SR-3] Ses aktifken ve CPU yükü değişiklik gösterirken tutarlı bir CPU performansı düzeyi sağlaması ÖNEMLE ÖNERİLİR. Bu, SynthMark Android uygulaması kullanılarak test edilmelidir. SynthMark, sistem performansını ölçen, simüle edilmiş bir ses çerçevesi üzerinde çalışan bir yazılım sentezleyici kullanır. Karşılaştırmaların açıklaması için SynthMark belgelerine bakın. SynthMark uygulamasının "Otomatik Test" seçeneği kullanılarak çalıştırılması ve aşağıdaki sonuçların elde edilmesi gerekir:
- voicemark.90 >= 32 ses
- lagmark.fixed.little <= 15 msn
- lagmark.dynamic.little <= 50 msn
Ses saatinin doğruluğunu ve standart saate göre kayması en aza indirilmelidir.
Her ikisi de etkin olduğunda ses saati kayması
CLOCK_MONOTONIC
CPU'ya göre en aza indirilmelidir.Cihaz üzerindeki transdüserlerde ses gecikmesini en aza indirmelidir.
USB dijital ses üzerinden ses gecikmesini en aza indirmelidir.
Ses gecikmesi ölçümleri tüm yollar için belgelenmelidir.
Ses arabelleği tamamlama geri çağırma giriş sürelerinde dalgalanmayı en aza indirmelisiniz. Bu durum, geri çağırma işleminin tam CPU bant genişliğinin kullanılabilir yüzdesini etkiliyor.
Normal kullanım altında bildirilen gecikme süresinde sıfır ses arızası SAĞLANMALIDIR.
Kanallar arası gecikme farkının sıfır olması GEREKİR.
MIDI, tüm aktarımlarda ortalama gecikmeyi en aza indirmelidir.
Tüm aktarımlarda yük altındaki MIDI gecikmesi değişkenliğini (ses dalgalanması) en aza indirmelidir.
Tüm aktarımlar üzerinde doğru MIDI zaman damgaları SAĞLANMALIDIR.
Sıfırdan başlatmadan hemen sonraki süre de dahil olmak üzere cihaz üzerindeki transdüserlerde ses sinyali gürültüsünü en aza indirmelisiniz.
Her ikisi de etkin olduğunda, karşılık gelen uç noktalarının giriş ve çıkış tarafları arasında sıfır ses saati farkı SAĞLANMALIDIR. Karşılık gelen uç noktalara örnek olarak cihaz üzerinde mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.
Her ikisi de etkin olduğunda aynı iş parçacığındaki karşılık gelen uç noktaların giriş ve çıkış tarafları için ses arabelleği tamamlama geri çağırmalarını işlemeli ve giriş geri çağırmasından geri dönüldükten hemen sonra çıkış geri çağırmasını girmelisiniz. Geri çağırmaların aynı iş parçacığı üzerinde yapılması uygun değilse uygulamanın giriş ve çıkış tarafları için tutarlı bir zamanlamaya sahip olmasını sağlamak amacıyla, giriş geri çağırması girildikten kısa bir süre sonra çıkış geri çağırması girin.
Karşılık gelen uç noktalarının giriş ve çıkış tarafları için HAL ses arabelleğe alma arasındaki faz farkını en aza indirmelisiniz.
Dokunma gecikmesini en aza indirmeli.
Yükleme sırasında dokunma gecikmesi değişkenliğini (ses dalgalanması) en aza indirmelidir.
Cihaz uygulamaları yukarıdaki gereksinimlerin tümünü karşılıyorsa:
- [C-SR-4]
android.hardware.audio.pro
özelliği için desteğinandroid.content.pm.PackageManager
sınıfı aracılığıyla bildirilmesi ÖNERİLİR.
Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakı içeriyorsa bunlar:
[C-2-1] 5.6 Ses Gecikmesi bölümünde tanımlandığı şekilde, bir Ses Döngüsü Dongle kullanılarak ses jakı yolunda 5 milisaniyeden daha kısa bir Ortalama Mutlak Sapma ile 5'in üzerinde bir ortalama Sürekli Gidiş-Dönüş Ses Gecikmesi OLMALIDIR.
[C-SR-5] Kablolu Ses Mikrofonlu Kulaklık Spesifikasyonu'nun (v1.1) Mobil cihaz (jak) spesifikasyonları bölümüne uymak için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakını çıkarıp USB ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-3-1] USB ses sınıfının uygulanması ZORUNLUDUR.
- [C-3-2] USB ses sınıfı kullanan USB ana makine modu bağlantı noktası üzerinden ortalama mutlak sapma ile 5 milisaniyeden az bir ortalama mutlak gidiş dönüş ses gecikmesinin 25 milisaniye veya daha az olması gerekir. (Bu ölçüm; USB-3, 5 mm'lik adaptör ve Ses Geri Dönüş Dongle'ı kullanılarak veya girişleri çıkışlara bağlayan yama kabloları olan bir USB ses arayüzü kullanılarak ölçülebilir).
- [C-SR-6] Bu gereksinimleri de destekleyen USB ses çevre birimleriyle birlikte kullanıldığında her yönde 8 kanala kadar eş zamanlı G/Ç, 96 kHz örnek hızı ve 24 bit veya 32 bit derinliğini desteklemeleri ÖNEMLE ÖNERİLİR.
- [C-SR-7] MMAP yolu üzerinde AAudio yerel ses API'sini kullanarak bu koşul grubunu karşılamaları için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları bir HDMI bağlantı noktası içeriyorsa:
- En az bir yapılandırmada, bit derinliği kaybı veya yeniden örnekleme olmaksızın, stereo ve sekiz kanalda 20 bit veya 24 bit derinlikte ve 192 kHz çıkışı desteklemektedir.
5:11. İşlenmemiş İçerikleri Yakalama
Android, android.media.MediaRecorder.AudioSource.UNPROCESSED
ses kaynağı aracılığıyla işlenmemiş seslerin kaydedilmesini destekler. OpenSL ES'de bu sınıra kayıt hazır ayarı SL_ANDROID_RECORDING_PRESET_UNPROCESSED
ile erişilebilir.
Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemek ve bunu üçüncü taraf uygulamalarının kullanımına sunmak niyetindeyse:
[C-1-1], desteği
android.media.AudioManager
mülkü PROPERTY_SUPPORT_AUDIO_SOURCE_UNprocessingED aracılığıyla bildirmelidir.[C-1-2] orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri sergilemelidir: İşlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için, özellikle 100 Hz ile 7.000 Hz arasında ±10 dB ile 7.000 Hz arasında.
[C-1-3] düşük frekans aralığında genlik düzeyleri sergilemelidir. İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla özellikle 5 Hz ile 100 Hz arasında ±20 dB ile 100 Hz arasında değişen değerler elde edilmelidir.
[C-1-4] yüksek frekans aralığında genlik düzeyleri sergilemelidir. İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla özellikle 7.000 Hz ile 22 KHz arasında ±30 dB ile 22 KHz arasında değişen değerler elde edilmelidir.
[C-1-5] ses girişi hassasiyetini, 94 dB Ses Basıncı Düzeyinde (SPL) çalınan 1.000 Hz sinüsoidal ton kaynağıyla yanıt verecek şekilde ayarlamalıdır. 16 bit örnek için 520 RMS (veya her kayan nokta/çift işleme alınan mikrofon ve kaynak olarak işlenen her mikrofon kaydı için -36 dB Tam Ölçekli ses örneği) için -36 dB Tam Ölçekli tam Ölçekli yanıt vermesi gerekir.
[C-1-6] işlenmemiş ses kaynağını kaydetmek üzere kullanılan her mikrofon için 60 dB veya daha yüksek bir sinyal-gürültü oranına (SNR) sahip olmalıdır. (SNR ise 94 dB SPL ile kendi kendine gürültünün eşdeğeri, A ağırlıklı) arasındaki fark olarak ölçülür.
[C-1-7] işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonda 90 dB SPL giriş düzeyinde 1 kHZ için% 1'den düşük bir toplam harmonik bozulma (THD) OLMALIDIR.
[C-1-8] yolunda, düzeyi istenen aralığa getirmek için seviye çarpanı dışında başka bir sinyal işleme (ör. Otomatik Kazanç Kontrolü, Yüksek Geçiş Filtresi veya Yankı giderme) bulunmamalıdır. Başka bir deyişle:
- [C-1-9] Mimaride herhangi bir nedenle herhangi bir sinyal işleme mevcutsa devre dışı bırakılmalı ve sinyal yoluna etkin bir şekilde sıfır gecikme veya ekstra gecikme uygulamamalıdır.
- [C-1-10] Seviye çarpanı, yolda olmasına izin verilmesine rağmen sinyal yoluna gecikme veya gecikme ETMEMELİDİR.
Tüm SPL ölçümleri test edilen mikrofonun hemen yanında yapılır. Birden fazla mikrofon yapılandırmasında bu gereksinimler her mikrofon için geçerlidir.
Cihaz uygulamaları android.hardware.microphone
tanımlıyorsa ancak işlenmemiş ses kaynağını desteklemiyorsa şunlar geçerlidir:
- [C-2-1], destek eksikliğini doğru bir şekilde belirtmek amacıyla
AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED)
API yöntemi içinnull
değerinin döndürülmesi ZORUNLUDUR. - [C-SR-1], işlenmemiş kayıt kaynağının sinyal yoluna yönelik gereksinimlerin tümünü karşılaması için ÖNEMLE ÖNERİLİR.
5:12. HDR video
Android 13, yakında kullanıma sunulacak bir dokümanda açıklanan HDR teknolojilerini destekler.
Piksel Biçimi
Bir video kod çözücü, COLOR_FormatYUVP010 desteği tanıtıyorsa:
[C-1-1], CPU okuma için P010 biçimini (ImageReader, MediaImage,ByteBuffer) desteklemelidir. Android 13'te P010, Y ve UV düzlemlerinde rastgele adıma izin verecek şekilde gevşetilmiştir.
[C-1-2] P010 çıkış arabelleğinin GPU tarafından örneklenebilmesi ZORUNLUDUR (GPU_SAMPLING kullanımıyla ayrıldığında). Bu, uygulamalar tarafından GPU bileşimini ve özel ton eşlemeyi etkinleştirir.
Bir video kod çözücü, COLOR_Format32bitABGR2101010 desteğinin reklamını yapıyorsa:
- [C-2-1], çıkış yüzeyi için RGBA_1010102 biçimini ve CPU tarafından okunabilir (ByteBuffer çıkışı) ZORUNLUDUR.
Bir video kodlayıcı, COLOR_FormatYUVP010 desteğini tanıtıyorsa:
- [C-3-1] giriş yüzeyi ve CPU ile yazılabilir giriş (ImageWriter, MediaImage, ByteBuffer) giriş için P010 biçimini desteklemektedir.
Bir video kodlayıcı COLOR_Format32bitABGR2101010 desteğini tanıtıyorsa:
- [C-4-1] Giriş yüzeyi ve CPU ile yazılabilir (ImageWriter, ByteBuffer) giriş için RGBA_1010102 biçimini DESTEKLEMELİDİR. Not: Kodlayıcılar için çeşitli aktarım eğrileri arasında dönüştürme GEREKMEZ.
HDR Çekim Gereksinimleri
HDR profillerini destekleyen tüm video kodlayıcılar için cihaz uygulamaları:
[C-5-1] HDR meta verilerinin kesin olduğunu ALMAMALIDIR. Örneğin, kodlanmış karede en yüksek parlaklık seviyesinin ötesinde pikseller olabilir veya histogram, kareyi temsil etmiyor olabilir.
Kodlanmış yayınlar için uygun HDR statik meta verilerini oluşturmak üzere HDR dinamik meta verilerini toplamalı ve her kodlama oturumunun sonunda bu meta verileri oluşturmalıdır.
Cihaz uygulamaları, CamcorderProfile API'leri kullanılarak HDR yakalamayı destekliyorsa:
[C-6-1] Camera2 API'leri üzerinden HDR yakalamayı da DESTEKLEMELİDİR.
[C-6-2], desteklenen her HDR teknolojisi için en az bir tane donanım hızlandırmalı video kodlayıcıyı desteklemektedir.
[C-6-3] HLG yakalamayı (en azından) DESTEKLEMELİDİR.
[C-6-4], HDR meta verilerinin (HDR teknolojisi için geçerliyse) yakalanan video dosyasına yazılmasını DESTEKLEMELİDİR. AV1, HEVC ve DolbyVision için bu, meta verilerin kodlanmış bit akışına eklenmesi anlamına gelir.
[C-6-5] P010 ve COLOR_FormatYUVP010’u DESTEKLEMELİDİR.
[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. Diğer bir deyişle, bir cihaz HDR10+ HEVC yakalayabiliyorsa varsayılan HEVC kod çözücünün, yakalanan akışın SDR kodunu çözebilmesi ZORUNLUDUR.
HDR Düzenleme Gereksinimleri
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üresi kullanılmalı ve meta verilerin bazı karelerde mevcutken diğerleri için olmadığı durumları incelikle ele almalısınız. Bu meta verinin kesin olması ZORUNLUDUR (örneğin, karenin gerçek en yüksek parlaklığını ve histogramını temsil eder).
Cihaz uygulaması, FEATURE_HdrEditing'i destekleyen codec'ler içeriyorsa bu codec'ler:
[C-7-1] en az bir HDR profilini DESTEKLEMELİDİR.
[C-7-2], söz konusu codec tarafından tanıtılan tüm HDR profilleri için FEATURE_HdrEditing özelliğini DESTEKLEMELİDİR. Başka bir deyişle, HDR meta verileri kullanan ve desteklenen tüm HDR profilleri için mevcut olmadığında HDR meta verileri oluşturmayı desteklemeleri GEREKİR.
[C-7-3], HDR kodu çözülmüş sinyalini tam olarak koruyan aşağıdaki video kodlayıcı giriş biçimlerini DESTEKLEMELİDİR:
- Hem giriş yüzeyi hem de ByteBuffer için RGBA_1010102 (zaten hedef aktarım eğrisindedir) ve COLOR_Format32bitABGR2101010 desteğinin reklamını yapması ZORUNLUDUR.
Cihaz uygulaması, FEATURE_HdrEditing'i destekleyen codec'ler içeriyorsa cihaz:
- [C-7-4] EXT_YUV_target OpenGL uzantısı için destek tanıtımı YAPMALIDIR.
6. Geliştirici Araçları ve Seçenek Uyumluluğu
6.1. Geliştirici araçları
Cihaz uygulamaları:
- [C-0-1] Android SDK'sında sağlanan Android Geliştirici Araçları'nı DESTEKLEMELİDİR.
-
- [C-0-2], Android SDK'da belirtildiği gibi adb'yi ve AOSP'de sağlanan kabuk komutlarını DESTEKLEMELİDİR.
Bu kabuklar,
dumpsys
dahil olmak üzere uygulama geliştiriciler tarafından kullanılabilircmd stats
- [C-0-11],
cmd testharness
kabuk komutunu desteklemelidir. Kalıcı veri bloğu olmayan önceki bir Android sürümünden cihaz uygulamalarını yeni sürüme geçirme işlemi C-0-11'den muaf tutulabilir. - [C-0-3] dumpsys komutuyla günlüğe kaydedilen cihaz sistem etkinliklerinin (batterystats , diskstats, parmak izi, Graphicstats, netstats, notification, procstats) biçimini veya içeriğini DEĞİŞTİRMEMELİDİR.
- [C-0-10] ihmal edilmeden kaydedilmesi ve aşağıdaki etkinliklerin
cmd stats
kabuk komutu ileStatsManager
System API sınıfı tarafından erişilebilir ve kullanılabilir hâle getirilmesi ZORUNLUDUR.- Etkinlik Ön Plan Durumu Değişti
- Anormallik Algılandı
- Uygulamaİçerik Haritası Raporlandı
- AppCrash Gerçekleşti
- UygulamaBaşlangıç Gerçekleşti
- Pil Seviyesi Değişti
- Pil TasarrufuModeDurumuDeğişti
- BleScanResultAlındı
- BleScanState Değiştirildi
- Şarj Durumu Değişti
- CihazIdleModeStateDeğişti
- Ön Plan Hizmet Durumu Değiştirildi
- GpsScanState Değişti
- İş Durumu Değişti
- Takılı Durum Değişti
- Planlananİş Durumu Değiştirildi
- Ekran Durumu Değiştirildi
- SenkronizasyonDurumu Değişti
- SistemEgeçen Gerçek Zamanlı
- UidProcessState Değişti
- Uyandırma Kilidi Durumu Değişti
- Uyandırma Alarmı Gerçekleşti
- WifiKilit Durumu Değişti
- KablosuzÇoklu YayınKilit Durumu Değiştirildi
- WifiTarama Durumu Değiştirildi
- [C-0-4] cihaz tarafı adb arka plan programının varsayılan olarak devre dışı olması ve Android Hata Ayıklama Köprüsü'nü açmak için kullanıcı tarafından erişilebilen bir mekanizmanın olması ZORUNLUDUR.
- [C-0-5] güvenli adb'yi DESTEKLEMELİDİR. Android, güvenli adb desteği sunar. Güvenli adb, 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ĞLAMALIDIR. Özellikle:
USB bağlantı noktası olmayan cihaz uygulamaları çevre birimi modunu destekliyorsa:
- [C-3-1] adb'nin yerel alan ağı (Ethernet veya Kablosuz gibi) üzerinden uygulaması ZORUNLUDUR.
- [C-3-2] Windows 7, 8 ve 10 için sürücüler sağlamalı ve geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına izin vermelidir.
Cihaz uygulamaları, kablosuz ağ veya Ethernet üzerinden bir ana makineye adb bağlantılarını destekliyorsa:
- [C-4-1]
AdbManager#isAdbWifiSupported()
yönteminintrue
dönüşüne sahip olması ZORUNLUDUR.
Cihaz uygulamaları, kablosuz ağ veya Ethernet aracılığıyla bir ana makineye adb bağlantılarını destekliyorsa ve en az bir kamera içeriyorsa:
- [C-5-1]
AdbManager#isAdbWifiQrSupported()
yönteminintrue
dönüşüne sahip olması ZORUNLUDUR.
- [C-0-2], Android SDK'da belirtildiği gibi adb'yi ve AOSP'de sağlanan kabuk komutlarını DESTEKLEMELİDİR.
Bu kabuklar,
Dalvik Hata Ayıklama İzleme Hizmeti (ddms)
- [C-0-7], Android SDK'sında belirtildiği şekilde tüm ddms özelliklerini DESTEKLEMELİDİR. ddms desteği adb kullandığından, ddms desteğinin varsayılan olarak etkin olmaması GEREKİR, ancak yukarıdaki gibi kullanıcı Android Hata Ayıklama Köprüsü'nü her etkinleştirdiğinde desteklenmelidir.
-
- [C-0-9], Android SDK'da belirtildiği şekilde systrace aracını DESTEKLEMELİDİR. Systrace, varsayılan olarak devre dışı olmalıdır ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizmanın olması ZORUNLUDUR.
-
- [C-SR-1] Kabuk kullanıcısına, perfetto belgelerine uygun cmdline'ın bir
/system/bin/perfetto
ikilisini açığa çıkarması ÖNEMLE ÖNERİLİR. - [C-SR-2] Perfetto ikili programının, perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırması girişi olarak kabul edilmesi ÖNEMLE ÖNERİLİR.
- [C-SR-3] Perfetto ikili programının, perfetto belgelerinde tanımlanan şemaya uygun bir protobuf izi olarak çıkış olarak yazılması ÖNEMLE ÖNERİLİR.
- [C-SR-4] Perfetto ikili programı üzerinden en az perfetto belgelerinde açıklanan veri kaynaklarını sağlaması ÖNEMLE ÖNERİLİR.
- [C-SR-1] Kabuk kullanıcısına, perfetto belgelerine uygun cmdline'ın bir
-
- [C-0-12] Bir uygulama Low Memory Killer tarafından sonlandırıldığında istatistik günlüğüne bir
LMK_KILL_OCCURRED_FIELD_NUMBER
Atom yazmalıdır.
- [C-0-12] Bir uygulama Low Memory Killer tarafından sonlandırıldığında istatistik günlüğüne bir
Test Bandı Modu Cihaz uygulamaları,
cmd testharness
kabuk komutunu destekliyor vecmd testharness enable
çalıştırıyorsa:- [C-2-1]
ActivityManager.isRunningInUserTestHarness()
içintrue
DEĞERİNİ DÖNMELİDİR - [C-2-2] Test Donanımı Modu dokümanlarında açıklandığı şekilde Test Kayışı Modu'nu uygulamalıdır.
- [C-2-1]
GPU iş bilgileri
Cihaz uygulamaları:
- [C-0-13],
power/gpu_work_period
çekirdek izleme noktası tarafından döndürülen birleştirilmiş GPU iş verilerini görüntülemek veya izleme noktası desteklenmiyorsa hiçbir veri görüntülemek içindumpsys gpu --gpuwork
kabuk komutunu uygulaması ZORUNLUDUR. AOSP uygulamasıframeworks/native/services/gpuservice/gpuwork/
şeklindedir.
- [C-0-13],
Cihaz uygulamaları, android.hardware.vulkan.version
özellik bayrakları aracılığıyla Vulkan 1.0 veya sonraki sürümleri desteklediğini bildiriyorsa aşağıdaki işlemleri yapabilir:
- [C-1-1] Uygulama geliştiricisinin GPU hata ayıklama katmanlarını etkinleştirmesi/devre dışı bırakması için ücret sağlaması GEREKİR.
- [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 (platform veya uygulama paketinin parçası olmayan) tarafından sağlanan kitaplıklarda katmanları numaralandırma GEREKİR.
6.2. Geliştirici seçenekleri
Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmaları için destek içerir.
Cihaz uygulamalarının Geliştirici Seçenekleri için tutarlı bir deneyim sağlaması ZORUNLUDUR:
- [C-0-1], uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS amacına uygun hareket etmelidir. Yukarı akış Android uygulaması, varsayılan olarak Geliştirici Seçenekleri menüsünü gizler ve kullanıcıların, Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesinde yedi (7) kez bastıktan sonra Geliştirici Seçenekleri'ni başlatmalarına olanak sağlar.
- [C-0-2] Geliştirici Seçenekleri'nin varsayılan olarak gizlenmesi ZORUNLUDUR.
- [C-0-3] Geliştirici Seçenekleri'nin etkinleştirilmesi için bir üçüncü taraf uygulamasına değil diğer bir üçüncü taraf uygulamasına imtiyazlı muamele göstermeyen açık bir mekanizma sunması ZORUNLUDUR. Geliştirici Seçenekleri'nin nasıl etkinleştirileceğini açıklayan, herkese açık bir belge veya web sitesi ZORUNLUDUR. Bu doküman veya web sitesi, Android SDK belgelerinden bağlanabilmelidir.
- Geliştirici Seçenekleri etkin olduğunda ve kullanıcının güvenliği söz konusu olduğunda kullanıcıya sürekli bir görsel bildirim GÖSTERİLMELİDİR.
- Kullanıcının güvenliğini ilgilendiren senaryolarda dikkatinizin dağılmasını önlemek için menüyü görsel olarak gizleyerek veya devre dışı bırakarak Geliştirici Seçenekleri menüsüne erişimi geçici olarak sınırlandırabilir.
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ının, Android SDK dokümanlarında açıklandığı gibi bu API'yi uygulaması ZORUNLUDUR.
SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşimde bulunursa ve cihaz uygulaması bu bileşene sahip değilse:
- [C-0-2] Bileşen API'leri için eksiksiz sınıf tanımları (SDK'da belirtildiği şekliyle) sunulması ZORUNLUDUR.
- [C-0-3] API'nin davranışlarının, makul bir şekilde işlem yok şeklinde uygulanması ZORUNLUDUR.
- [C-0-4] API yöntemlerinin, SDK belgelerinde izin verilen durumlarda boş değerler döndürmesi ZORUNLUDUR.
- [C-0-5] API yöntemlerinin, SDK belgelerinde boş değerlere izin verilmeyen sınıfların işlemsiz uygulamalarını döndürmesi ZORUNLUDUR.
- [C-0-6] API yöntemleri, SDK belgelerinde belirtilmeyen istisnalar YAYINLAMAMALIDIR.
- [C-0-7] Cihaz uygulamalarının, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki
getSystemAvailableFeatures()
vehasSystemFeature(String)
yöntemleri aracılığıyla doğru donanım yapılandırma bilgilerini tutarlı şekilde bildirmesi ZORUNLUDUR.
Bu gereksinimlerin geçerli olduğu tipik bir senaryo örneği, telephony API'dir: Telefon olmayan cihazlarda bile bu API'ler makul şekilde işlem yapmama olarak uygulanmalıdır.
7.1. Ekran ve Grafikler
Android'de, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarındaçeşitli donanım ekran ve yapılandırmaları üzerinde iyi çalışmasını sağlamak amacıyla, uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan olanaklar vardır. Android ile uyumlu ekran, Android Geliştiricileri - Ekran uyumluluğuna genel bakış, bu bölüm (7.1) ve alt bölümlerinde açıklanan tüm davranışların ve API'lerin yanı sıra bu CD'nin 2. bölümünde belirtilen cihaz türüne özgü diğer davranışların uygulandığı bir ekrandır.
Tüm üçüncü taraf Android uyumlu uygulamaların çalışabildiği Android uyumlu ekranlarda, cihaz uygulamalarının bu bölümde ayrıntılı olarak açıklandığı şekilde bu API'leri ve davranışları doğru bir şekilde uygulaması ZORUNLUDUR.
Yeni koşullarla başlayın
Cihaz uygulamaları:
- [C-0-1] Varsayılan olarak, üçüncü taraf uygulamalarının yalnızca Android uyumlu ekranlarda oluşturulması ZORUNLUDUR.
Yeni şartları sonlandırma
Bu bölümdeki şartlarda belirtilen birimler aşağıdaki şekilde tanımlanmıştır:
- fiziksel çapraz boyut olduğundan emin olun. Ekranın aydınlatmalı bölümünün iki karşıt köşesi arasındaki inç cinsinden mesafe.
inç başına nokta (dpi)yoğunluk. 1 inçlik doğrusal bir yatay veya dikey aralığın içine alınan piksel sayısı; inç başına piksel (ppi veya dpi) olarak ifade edilir.dpippi ve dpi değerleri listelenirken hem yatay hem de dikey dpi, listelenen aralıkta olmalıdır.- en boy oranı. Daha uzun boyuttaki piksellerin, ekranın daha kısa boyutuna oranı. Örneğin, 480x854 piksellik bir ekran 854/480 = 1, 779 veya yaklaşık "16:9" olur.
- yoğunluktan bağımsız piksel (dp).
A sanal piksel birimi,160 dpi ekrana160 ekran yoğunluğuna ulaşacak şekilde normalleştirilmiş. Bazı yoğunluk ve p piksel sayısı için yoğunluktan bağımsız piksel sayısı (dp) şöyle hesaplanır:piksel = dps * (yoğunluk/160)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 mantıksal ekran düzeni boyutlarını destekler ve uygulamaların SCREENLAYOUT_SIZE_MASK
ve Configuration.smallestScreenWidthDp
kullanarak Configuration.screenLayout
aracılığıyla mevcut yapılandırmanın ekran düzeni boyutunu sorgulamasına imkan tanır.
Cihaz uygulamaları:
[C-0-1], Android SDK dokümanlarında tanımlandığı gibi
Configuration.screenLayout
için doğru düzen boyutunu Bildirmelidir. Ayrıntılı olarak belirtmek gerekirse, cihaz uygulamalarının doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını aşağıdaki gibi Bildirebilmesi ZORUNLUDUR:Configuration.uiMode
özelliğinin UI_MODE_TYPE_Watch dışında bir değere ayarlanmış veConfiguration.screenLayout
içinsmall
boyutu bildiren cihazların en az 426 dp x 320 dp'ye sahip olması ZORUNLUDUR.Configuration.screenLayout
içinnormal
boyutunu bildiren cihazların en az 480 dp x 320 dp'ye sahip olması ZORUNLUDUR.Configuration.screenLayout
içinlarge
boyutunu bildiren cihazların en az 640 dp x 480 dp'ye sahip olması ZORUNLUDUR.Configuration.screenLayout
içinxlarge
boyutunu bildiren cihazların en az 960 dp x 720 dp'ye sahip olması ZORUNLUDUR.
[C-0-2], Android SDK dokümanlarında açıklandığı gibi, AndroidManifest.xml'deki <
supports-screens
> özelliği aracılığıyla uygulamaların ekran boyutları için belirttiği desteği doğru bir şekilde kabul etmelidir.Köşeleri yuvarlanmış Android ile uyumlu ekranlara sahip OLABİLİR.
Cihaz uygulamaları, boyut yapılandırmasını
UI_MODE_TYPE_NORMAL
yapabilen ve Android uyumlu olan
ekranlar bu ekranları oluşturmak için yuvarlatılmış köşelere sahip fiziksel ekranlar kullanıyorsa:
[C-1-1] bu tür ekranların her biri için aşağıdaki şartlardan en az birini karşılaması ZORUNLUDUR:
- Yuvarlatılmış köşelerin yarıçapı 38 dp'den az veya bu değere eşittir.
- Mantıksal ekranın her bir köşesine
1518 dp x1518 dp kutusu sabitlendiğinde ekranda her kutunun en az bir pikseli görünür.
Dikdörtgen köşeleri olan görüntüleme moduna geçmek için kullanıcının uygun maliyetli olması GEREKİR.
Yeni koşullarla başlayın
Cihaz uygulamaları yalnızca NO_KEYS
klavye yapılandırması yapabiliyorsa ve UI_MODE_TYPE_NORMAL
kullanıcı arayüzü modu yapılandırması için destek bildirmeyi amaçlıyorsa:
- [C-4-1] ekran kesimleri hariç en az 596 dp x 384 dp veya daha büyük bir düzen boyutuna sahip olması ZORUNLUDUR.
Yeni şartları sonlandırma
Cihaz uygulamaları, katlanabilir Android uyumlu ekranlar içeriyorsa veya birden fazla ekran paneli arasında katlanabilir menteşe bulunduruyorsa ve bu tür ekranları üçüncü taraf uygulamalarını oluşturmak için kullanılabilir hale getiriyorsa:
- [C-2-1] Window Manager Jetpack kitaplığı tarafından kullanılacak olan extensions API'nin mevcut en son kararlı sürümünü veya yardımcı API'nin kararlı sürümünü uygulaması ZORUNLUDUR.
Cihaz uygulamaları katlanabilir Android uyumlu ekranlar içeriyorsa veya birden fazla ekran paneli arasında katlanabilir menteşesi varsa ve menteşe ya da katlama tam ekran uygulama penceresini geçerse:
- [C-3-1] Uzantılar veya yardımcı API'ler aracılığıyla menteşe ya da katlama durumunu uygulamaya bildirmelidir.
Yardımcı dosya veya uzantı API'lerini doğru şekilde uygulama hakkında ayrıntılar için Window Manager Jetpack'in herkese açık dokümanlarına bakın.
Yeni koşullarla başlayın
Cihaz uygulamaları katlanabilir olan bir veya daha fazla Android uyumlu ekran alanı içeriyorsa ya da Android uyumlu birden fazla ekran paneli alanı arasında katlanabilir menteşe bulunuyorsa bu tür görüntüleme alanları uygulamaların kullanımına sunuluyorsa:
- [C-4-1], WindowManager Uzantıları bölümünde açıklandığı gibi, Window Manager Extensions API düzeyinin doğru sürümünü uygulamalıdır.
Yeni şartları sonlandırma
7.1.1.2. Ekran En Boy Oranı
Android uyumlu ekranlar için fiziksel ekranın en boy oranıyla ilgili bir kısıtlama olmasa da üçüncü taraf uygulamalarının oluşturulduğu mantıksal ekranın en boy oranı(view.Display
API'leri ve Yapılandırma API'leri aracılığıyla bildirilen yükseklik ve genişlik değerlerinden elde edilebilir) aşağıdaki şartları ZORUNLUDUR:
[C-0-1]
Configuration.uiMode
özelliğiUI_MODE_TYPE_NORMAL
olarak ayarlanmış cihaz uygulamalarının, en boy oranı değeri 1,86 veya daha az (yaklaşık 16:9) OLMALIDIR.Aşağıdaki koşullardan birini karşılamıyorsa:- Uygulama,
android.max_aspect
meta veri değeri aracılığıyla daha büyük ekran en boy oranını desteklediğini beyan etmiştir. - Uygulama, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabileceğini beyan eder.
- Uygulama, API düzeyi 24 veya sonraki sürümleri hedefliyor ve izin verilen en boy oranını kısıtlayacak bir
android:maxAspectRatio
bildirmiyor.
- Uygulama,
[C-0-3]
Configuration.uiMode
öğesininUI_MODE_TYPE_WATCH
olarak ayarlandığı cihaz uygulamalarının en boy oranı değerinin 1,0 (1:1) olarak ayarlanması ZORUNLUDUR.
7.1.1.3. Ekran Yoğunluğu
Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerin uygulama kaynaklarını hedeflemelerine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar.
Cihaz Uygulamaları:
- [C-0-1]
Varsayılan olarak, cihaz uygulamalarınınDisplayMetrics
aracılığıylaDENSITY_DEVICE_STABLE
API aracılığıyla listelenen Android çerçeve yoğunluklarındanyalnızcabirini Bildirebilmesi ve bu değerin her fiziksel ekran için statik bir değer olması gerekir.Herhangi bir zamanda DEĞİŞMEMELİDİR, ancakBununla birlikte cihaz, ilk başlatma işleminden sonra kullanıcı tarafından yapılan ekran yapılandırması değişikliklerine (ör. ekran boyutu) göre farklı biristeğe bağlı yoğunlukDisplayMetrics.density
raporlayabilir.
- Mantıksal yoğunluk, raporlanan ekran boyutunu desteklenen minimum değerin altına itmediği sürece, cihaz uygulamalarında ekranın fiziksel yoğunluğuna sayısal olarak en yakın olan standart Android çerçeve yoğunluğu TANIMLANMALIDIR. Fiziksel yoğunluğa sayısal olarak en yakın olan standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuyla sonuçlanıyorsa cihaz uygulamalarının bir sonraki en düşük standart Android çerçeve yoğunluğunu Bildirebilmesi GEREKİR.
Yeni koşullarla başlayın
- Ekranın fiziksel yoğunluğuna sayısal olarak en yakın olan standart Android çerçeve yoğunluğunu veya avuç içi cihazın aynı açısal görüş alanı ölçümleriyle eşlenen bir değer TANIMLAMAMALIDIR.
Yeni şartları sonlandırma
Cihaz uygulamaları
cihazın ekran boyutunu değiştirme olanağı
sağlıyorsa, :
- [C-1-1]
Ekran boyutunun herhangi bir şekilde ölçeklendirilmemesi gerekirEkranı 1,5 kattan daha büyükDENSITY_DEVICE_STABLE
yerel yoğunlukya da 320 dp'den (kaynak niteleyici sw320 dp'ye eşdeğerdir) (hangisi önce gelirse) küçük etkili bir minimum ekran boyutu üretilmemelidir. - [C-1-2]
Görüntü boyutu herhangi bir şekilde ölçeklendirilmemelidirekranın ölçeğiDENSITY_DEVICE_STABLE
yerel yoğunluğun0,85 katından daha küçük şekilde ölçeklendirilmemelidir. - İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için Yerel Görüntüleme seçeneklerinde aşağıdaki ölçeklendirmenin (yukarıda belirtilen sınırlara uyarak) sağlanması ÖNERİLİR
- Küçük: 0,85x
- Varsayılan: 1x (Yerel görüntülü reklam ö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 uyumlu ekranlar veya Android uyumlu ekranlara video çıkışı içeriyorsa:
- [C-1-1]
android.util.DisplayMetrics
API'de tanımlanan tüm Android uyumlu ekran metrikleri için doğru değerleri BİLDİRMELİDİR.
Cihaz uygulamaları, yerleşik ekran veya video çıkışı içermiyorsa:
- [C-2-1], emüle edilen varsayılan
view.Display
içinandroid.util.DisplayMetrics
API'de tanımlandığı gibi Android uyumlu ekranın doğru değerlerini BİLDİRMELİDİR.
7.1.3. Ekran Yönlendirme
Cihaz uygulamaları:
- [C-0-1], desteklediği ekran yönlerini (
android.hardware.screen.portrait
ve/veyaandroid.hardware.screen.landscape
) BİLDİRMELİ ve en az bir desteklenen yön bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönlü yatay ekranı olan bir cihaz, yalnızcaandroid.hardware.screen.landscape
durumunu bildirmek GEREKİR. - [C-0-2]
android.content.res.Configuration.orientation
,android.view.Display.getOrientation()
veya diğer API'ler aracılığıyla sorgulandığında, cihazın geçerli yönü için doğru değeri Bildirmelidir.
Cihaz uygulamaları her iki ekran yönünü de destekliyorsa:
- [C-1-1], uygulamaların dikey veya yatay ekran yönünü desteklemektedir. Yani cihaz, uygulamanın belirli bir ekran yönü isteğini yerine getirmelidir.
- [C-1-2] yön değiştirilirken bildirilen ekran boyutunu veya yoğunluğunu DEĞİŞTİRMEMELİDİR.
- Varsayılan olarak dikey veya yatay yön seçilebilir.
7.1.4. 2D ve 3D Grafiklerde Hızlandırma
7.1.4.1 OpenGL ES
Cihaz uygulamaları:
- [C-0-1], desteklenen OpenGL ES sürümlerini (1.1, 2.0, 3.0, 3.1, 3.2) yönetilen API'ler (ör.
GLES10.getString()
yöntemi aracılığıyla) ve yerel API'ler aracılığıyla doğru şekilde tanımlamalıdır. - [C-0-2], desteklediğini belirttiği her OpenGL ES sürümü için ilgili tüm yönetilen API'lerin ve yerel API'lerin desteğini içermesi ZORUNLUDUR.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1], Android SDK dokümanlarında açıklandığı ve ayrıntılı olarak açıklandığı şekilde hem OpenGL ES 1.1 hem de 2.0'ı desteklemelidir.
- [C-SR-1] OpenGL ES 3.1'i desteklemesi için ÖNEMLE ÖNERİLİR.
- OpenGL ES 3.2'yi DESTEKLEMELİDİR.
OpenGL ES dEQP testleri, her biri ilişkili bir tarih/sürüm numarasına sahip birkaç test listesine bölünür. Bu öğeler, external/deqp/android/cts/main/glesXX-main-YYYY-MM-DD.txt
adresindeki Android kaynak ağacında bulunur. Kendi bildirdiği bir düzeyde OpenGL ES'yi destekleyen bir cihaz, bu seviyedeki ve önceki tüm test listelerinde dEQP testlerini geçebileceğini gösterir.
Cihaz uygulamaları OpenGL ES sürümlerinden herhangi birini destekliyorsa, bunlar:
- [C-2-1], uyguladıkları diğer tüm OpenGL ES uzantılarını OpenGL ES tarafından yönetilen API'ler ve yerel API'ler aracılığıyla raporlamalı, tam tersine, desteklemedikleri uzantı dizelerini Bildiremez.
- [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_recordable
veEGL_ANDROID_GLES_layers
uzantı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ünü Bildirmelidir. - [C-2-4],
android.software.opengles.deqp.level
özellik işaretinde bildirildiği gibi en az 132383489 sürümünü (1 Mart 2020'den itibaren) desteklemelidir. - [C-2-5], desteklenen her OpenGL ES sürümü için test listelerindeki tüm OpenGL ES dEQP Testlerini 132383489 sürümü ile
android.software.opengles.deqp.level
özellik işaretinde belirtilen sürüm arasında geçmelidir. - [C-SR-2]
EGL_KHR_partial_update
veOES_EGL_image_external
uzantılarını desteklemesi için ÖNEMLE ÖNERİLİR. getString()
yöntemi (destekledikleri herhangi bir doku sıkıştırma biçimi) aracılığıyla (genellikle tedarikçiye özgüdür) doğru şekilde rapor oluşturulmalıdır.EGL_IMG_context_priority
veEGL_EXT_protected_content
uzantılarını DESTEKLEMELİDİR.
Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2'yi desteklediğini bildiriyorsa aşağıdaki durumlar geçerli olur:
- [C-3-1], libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev sembollerine ek olarak, bu sürüme karşılık gelen işlev simgelerini dışa aktarmalıdır.
- [C-SR-3]
OES_EGL_image_external_essl3
uzantısını desteklemesi için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa, bunlar:
- [C-4-1] OpenGL ES Android Uzantı Paketi'ni bütünüyle DESTEKLEMELİDİR.
Cihaz uygulamaları, OpenGL ES Android Extension Pack'in tamamını destekliyorsa:
- [C-5-1], desteği
android.hardware.opengles.aep
özellik bayrağı yoluyla tanımlamalıdır.
Cihaz uygulamaları, EGL_KHR_mutable_render_buffer
uzantısı için destek sunarsa:
- [C-6-1]
EGL_ANDROID_front_buffer_auto_refresh
uzantısını da DESTEKLEMELİDİR.
7.1.4.2 Vulkan
Android, yüksek performanslı 3D grafikler için düşük maliyetli, platformlar arası bir API olan Vulkan'ı destekler.
Cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa, bunlar:
- [C-SR-1] Vulkan 1.3 desteği içermesi ÖNEMLE ÖNERİLİR.
- [C-4-1] bir Vulkan varyant sürümünü DESTEKLEMEMELİDİR (yani Vulkan çekirdek sürümünün varyant kısmı sıfır olmalıdır).
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-SR-2] Vulkan 1.3 desteği içermesi ÖNEMLE ÖNERİLİR.
Vulkan dEQP testleri, her biri ilişkili bir tarih/sürüme sahip birkaç test listesine bölünür. Bu öğeler, external/deqp/android/cts/main/vk-main-YYYY-MM-DD.txt
adresindeki Android kaynak ağacında bulunur. Vulkan'ı kendi bildirdiği düzeyde destekleyen bir cihaz, bu seviyedeki ve önceki tüm test listelerinde dEQP testlerini geçebileceğini gösterir.
Cihaz uygulamaları Vulkan 1.0 veya sonraki sürümleri desteği içeriyorsa:
- [C-1-1]
android.hardware.vulkan.level
veandroid.hardware.vulkan.version
özellik bayraklarıyla doğru tam sayı değerini Bildirmelidir. - [C-1-2] Vulkan'da yerel API
vkEnumeratePhysicalDevices()
için en az birVkPhysicalDevice
Numaralandırması ZORUNLUDUR. - [C-1-3], numaralandırılmış her biri için
Vulkan 1.0Vulkan 1.1 API'lerini tam olarak uygulamalıdırVkPhysicalDevice
. - [C-1-4], uygulama paketinin yerel kitaplık dizinindeki
libVkLayer*.so
adlı yerel kitaplıklarda bulunan katmanları Vulkan yerel API'lerivkEnumerateInstanceLayerProperties()
vevkEnumerateDeviceLayerProperties()
aracılığıyla numaralandırması ZORUNLUDUR. - [C-1-5], uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanları Numaralandırmamalı veya Vulkan API'yi izlemek ya da bunlara müdahale etmek için başka yöntemler SUNMAMALIDIR (uygulamanın
android:debuggable
özelliğitrue
olarak ayarlanmamışsa veya meta vericom.android.graphics.injectLayers.enable
meta verisitrue
olarak ayarlanmamışsa). - [C-1-6], Vulkan yerel API'leri aracılığıyla destekledikleri tüm uzantı dizelerini BİLDİRMELİ, diğer yandan doğru şekilde desteklemedikleri uzantı dizelerini BİLDİRMEMELİDİR.
- [C-1-7] VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain ve VK_KHR_incremental_OFFER uzantılarını DESTEKLEMELİDİR.
- [C-1-8],
android.software.vulkan.deqp.level
özellik bayrağı aracılığıyla desteklenen Vulkan dEQP Testlerinin maksimum sürümünü bildirmelidir. - [C-1-9],
android.software.vulkan.deqp.level
özellik işaretinde bildirildiği gibi en az132317953
sürümünü (1 Mart 2019'dan itibaren) desteklemelidir. - [C-1-10] test listelerindeki tüm Vulkan dEQP Testlerini
132317953
sürümü ileandroid.software.vulkan.deqp.level
özellik işaretinde belirtilen sürüm arasında geçmelidir. - [C-1-11] VK_KHR_video_queue, VK_KHR_video_decode_queue veya VK_KHR_video_encode_queue uzantıları için destek NUMARASINDA BULUNMAMALIDIR.
- [C-SR-3]
VK_KHR_driver_properties
veVK_GOOGLE_display_timing
uzantılarını desteklemesi için ÖNEMLE ÖNERİLİR.
VkPhysicalDeviceProtectedMemoryFeatures
veVK_EXT_global_priority
DESTEKLENMELİDİR.
- [C-1-12] VK_KHR_performance_query uzantısına ilişkin desteği SAYFAMA ETMEMELİDİR.
Yeni koşullarla başlayın
- [C-1-13] Android Baseline 2021 profilinde belirtilen gereksinimleri SAĞLAMALIDIR.
Yeni şartları sonlandırma
- [C-SR-4] Android Baseline 2022 profilinde belirtilen gereksinimleri karşılamak için ÖNEMLE ÖNERİLİR.
Yeni koşullarla başlayın
[C-SR-5]
VkPhysicalDeviceProtectedMemoryFeatures.protectedMemory
veVK_EXT_global_priority
'ı desteklemeleri için ÖNEMLE ÖNERİLİR.[C-SR-6]
SkiaVk
ürününün HWUI ile kullanılması ÖNEMLE ÖNERİLİR.
Yeni şartları sonlandırma
Cihaz uygulamaları Vulkan 1.0 desteği içermiyorsa:
- [C-2-1], Vulkan özellik bayraklarından herhangi birini (ör.
android.hardware.vulkan.level
,android.hardware.vulkan.version
) BELİRTMEMELİDİR. - [C-2-2], Vulkan yerel API'si
vkEnumeratePhysicalDevices()
için herhangi birVkPhysicalDevice
NUMARALI SAYILMAMALIDIR.
Cihaz uygulamaları, Vulkan 1.1 desteği içeriyorsa ve burada açıklanan Vulkan özellik bayraklarından herhangi birini beyan ediyorsa:
- [C-3-1],
SYNC_FD
harici semafor ve herkese açık kullanıcı adı türleri ileVK_ANDROID_external_memory_android_hardware_buffer
uzantısı için destek sunmalıdır.
Yeni koşullarla başlayın
- [C-SR-7]
VK_KHR_external_fence_fd
uzantısını üçüncü taraf uygulamaların kullanımına sunması ve uygulamanın, burada açıklandığı gibi çit yükünü POSIX dosya tanımlayıcılarına dışa aktarmasını ve onlardan çit yükünü içe aktarmasını etkinleştirmesi ÖNERİLİR.
Yeni şartları sonlandırma
7.1.4.3 RenderScript
- [C-0-1] Cihaz uygulamaları, Android SDK dokümanlarında ayrıntılı olarak açıklandığı gibi Android RenderScript'i desteklemektedir.
7.1.4.4 2D Grafik Hızlandırma
Android, uygulamaların bir manifest etiketi android:hardwareAccelerated veya doğrudan API çağrıları kullanarak Uygulama, Etkinlik, Pencere veya Görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediğini beyan eden bir mekanizmaya sahiptir.
Cihaz uygulamaları:
- [C-0-1], donanım hızlandırmayı varsayılan olarak ETKİNLEŞTİRMELİDİR ve geliştirici, istekte bulunduğunda 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 donanım hızlandırmayı devre dışı bırakabilir.
- [C-0-2] donanım hızlandırmayla ilgili Android SDK belgeleriyle uyumlu davranış sergilemelidir.
Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını bir kullanıcı arayüzü hiyerarşisindeki oluşturma hedefleri olarak doğrudan entegre etmesini sağlayan bir TextureView nesnesi içerir.
Cihaz uygulamaları:
- [C-0-3], TextureView API'yi desteklemeli ve yukarı yönlü Android uygulamasıyla tutarlı davranış sergilemelidir.
7.1.4.5 Geniş Ekranlar
Cihaz uygulamaları, Configuration.isScreenWideColorGamut()
üzerinden geniş gamlı ekranları desteklediğini iddia ediyorsa şunları yapar:
- [C-1-1] Ekran rengi kalibre edilmiş olmalıdır.
- [C-1-2] gamı, sRGB renk gamını tamamen CIE 1931 xyY alanında kapsayan bir ekrana sahip olmalıdır.
- [C-1-3] CIE 1931 xyY alanında, gamının en az% 90'ı DCI-P3'e sahip bir ekranın olması gerekir.
- [C-1-4] OpenGL ES 3.1 veya 3.2'yi desteklemeli ve düzgün bir şekilde rapor etmelidir.
- [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_passthrough
uzantılarına yönelik desteğin reklamını ZORUNLUDUR. - [C-SR-1]
GL_EXT_sRGB
desteği için ÖNEMLE ÖNERİLİR.
Buna karşılık, 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ı kapsaması GEREKİR.
7.1.5. Eski Uygulama Uyumluluğu Modu
Android, ekran boyutundan bağımsızlıktan önceki Android sürümleri için geliştirilmemiş eski uygulamalar için çerçevenin "normal" ekran boyutu eşdeğeri (320 dp genişlik) modunda çalıştığı bir "uyumluluk modu" belirtir.
7.1.6. Ekran Teknolojisi
Android platformu, uygulamaların Android uyumlu bir ekrana zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. Cihazlar, bu dokümanda özellikle izin verilmedikçe, Android SDK'sı tarafından tanımlanan bu API'lerin tümünü desteklemelidir.
Bir cihaz uygulamasının Android uyumlu ekranlarının tümü:
- [C-0-1] 16 bit renkli grafikleri işleyebilmesi ZORUNLUDUR.
- 24 bit renkli grafiğe sahip ekranlar DESTEKLENMELİDİR.
- [C-0-2] animasyonları oluşturabilmek ZORUNLUDUR.
- [C-0-3] 0,9 ile 1,15 arasında bir piksel en boy oranına (PAR) sahip OLMALIDIR. Diğer bir deyişle, piksel en boy oranı, 10 ila% 15 toleransla kareye (1,0) yakın olmalıdır.
7.1.7. İkincil Ekranlar
Android, medya paylaşımı özelliklerini etkinleştirmek için ikincil Android uyumlu ekranları ve harici ekranlara erişim için geliştirici API'lerini destekler.
Cihaz uygulamaları kablolu, kablosuz veya yerleşik ek ekran bağlantısı üzerinden harici ekranı destekliyorsa:
- [C-1-1],
DisplayManager
sistem hizmetini ve API'yi Android SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.
7.2. Giriş Cihazları
Cihaz uygulamaları:
- [C-0-1], kullanıcı arayüzü öğeleri arasında gezinmek için dokunmatik ekran veya dokunmatik gezinme gibi bir giriş mekanizması içermelidir.
7.2.1. Klavye
Cihaz uygulamaları, üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek içeriyorsa bunlar:
- [C-1-1],
android.software.input_methods
özellik bayrağını beyan etmelidir. - [C-1-2]
Input Management Framework
özelliğinin tam olarak uygulanması ZORUNLUDUR - [C-1-3] Önceden yüklenmiş bir yazılım klavyesi ZORUNLUDUR.
Cihaz uygulamaları:
- [C-0-1] android.content.res.Configuration.keyboard (QWERTY veya 12 tuşlu) biçiminde 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. Dokunmatik Olmayan Gezinme
Android, dokunmatik olmayan gezinme mekanizması olarak d-pad, iztopu ve tekerlek desteği sunar.
Cihaz uygulamaları:
- [C-0-1], android.content.res.Configuration.navigation için doğru değeri Bildirmelidir.
Cihaz uygulamalarında dokunmatik olmayan gezinme özelliği yoksa:
- [C-1-1] Metin seçimi ve düzenlenmesi için Giriş Yönetim Motorlarıyla uyumlu, makul bir alternatif kullanıcı arayüzü mekanizması sunmalıdır. Yukarı akış Android açık kaynak uygulaması, dokunmatik olmayan gezinme girişleri olmayan cihazlarla kullanılmaya uygun bir seçim mekanizması içerir.
7.2.3. Gezinme Tuşları
Genellikle özel bir fiziksel düğme veya dokunmatik ekranın belirli bir kısmıyla sağlanan etkileşim aracılığıyla sağlanan Ana Ekran, Son Kullanılanlar ve Geri işlevleri, Android navigasyon paradigmasında ve dolayısıyla cihaz uygulamalarında son derece önemlidir:
- [C-0-1], Televizyon cihazı uygulamaları için
ACTION=MAIN
veCATEGORY=LAUNCHER
veyaCATEGORY=LEANBACK_LAUNCHER
ile ayarlanmış<intent-filter>
ile etkinliği olan yüklü uygulamaları başlatmak için bir kullanıcıya destek vermesi ZORUNLUDUR. Ana Sayfa işlevi, bu kullanıcı tarafından sağlanan mekanizma olmalıdır. - Son Kullanılanlar ve Geri işlevi için düğmeler SAĞLANMALIDIR.
Ana Ekran, Son Kullanılanlar veya Geri işlevleri sağlanırsa:
- [C-1-1] [C-1-1] özelliklerinden herhangi birine tek bir işlemle (ör. dokunma, çift tıklama veya hareketle) erişilebilmelidir.
- [C-1-2] her bir işlevi hangi tek işlemin tetikleyeceğini net bir şekilde göstermelidir. Düğmenin üzerine görünür bir simge basılması, ekranın gezinme çubuğu kısmında bir yazılım simgesi gösterilmesi veya kullanıma hazır kurulum deneyimi sırasında kullanıcıya adım adım açıklamalı demo akışı boyunca yol gösterilmesi bu tür göstergelere örnek olarak verilebilir.
Cihaz uygulamaları:
[C-SR-1], Android 4.0'dan itibaren işlem çubuğunun yerini alacak şekilde kullanımdan kaldırıldığından Menü işlevi için giriş mekanizması sağlamaması ÖNEMLE ÖNERİLİR.
[C-SR-2] Tüm gezinme işlevlerini iptal edilebilir olarak sağlaması ÖNEMLE ÖNERİLİR. "İptal edilebilir", kaydırma işlemi belirli bir eşiğin dışına çıkarılmazsa kullanıcının gezinme işlevinin yürütülmesini (ör. ana sayfaya gitme, geri gitme vb.) engelleme olanağı olarak tanımlanır.
Cihaz uygulamaları Menü işlevini sağlıyorsa:
- [C-2-1] İşlem taşma menüsü pop-up'ı boş olmadığında ve işlem çubuğu görünür olduğunda işlem taşma düğmesini görüntülemelidir.
- [C-2-2] İşlem çubuğunda taşma düğmesi seçilerek görüntülenen işlem taşma pop-up'ının konumunu DEĞİŞTİRMEMELİDİR, ancak Menü işlevi seçildiğinde işlem taşma pop-up'ını ekrandaki değiştirilmiş bir konumda OLUŞTURABİLİRSİNİZ.
Cihaz uygulamaları, Menü işlevini sağlamıyorsa, geriye dönük
uyumluluk için:
* [C-3-1], fiziksel bir düğme, yazılım tuşu veya hareketlerle,
targetSdkVersion
10'dan az olduğunda Menü işlevinin uygulamalara
sunulması ZORUNLUDUR. Bu Menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmedikçe erişilebilir olmalıdır.
Cihaz uygulamaları Destek işlevini sağlıyorsa şunlar:
- [C-4-1] Diğer gezinme tuşları erişilebilir olduğunda Destek işlevini tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir hale getirmelidir.
- [C-SR-3] Bu tanımlanmış etkileşim olarak ana sayfa işlevine uzun basmanın kullanılması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, gezinme tuşlarını görüntülemek için ekranın ayrı bir bölümünü kullanıyorsa:
- [C-5-1] Gezinme tuşları ekranın ayrı bir bölümünü kullanmalı, uygulamaların kullanamayacağı bir bölümünü kullanmalı ve ekranın uygulamalar tarafından kullanılabilen bölümünü Gizlememeli veya başka bir şekilde engellememelidir.
- [C-5-2] Bölüm 7.1.1'de belirtilen gereksinimleri karşılayan uygulamalar için ekranın bir kısmını kullanıma sunması ZORUNLUDUR.
- [C-5-3], uygulama tarafından
View.setSystemUiVisibility()
API yöntemiyle ayarlanan işaretleri dikkate almalıdır. Bu sayede, ekranın farklı bir kısmının (gezinme çubuğu olarak da bilinir) SDK'da belirtildiği şekilde düzgün şekilde gizlenmesi gerekir.
Gezinme işlevi ekranda gösterilen, harekete dayalı bir işlem olarak sağlanırsa:
- [C-6-1]
WindowInsets#getMandatorySystemGestureInsets()
yalnızca Ev hareketi tanıma alanını bildirmek için kullanılmalıdır. - [C-6-2] Ön plan uygulamasının
View#setSystemGestureExclusionRects()
aracılığıyla sağladığı gibi bir hariç tutma fonksiyonu içinde başlayan ancakWindowInsets#getMandatorySystemGestureInsets()
dışında kalan hareketlere,View#setSystemGestureExclusionRects()
ile ilgili belgelerde belirtilen maksimum hariç tutma sınırı dahilinde izin verildiği sürece gezinme işlevi için müdahale EDİLMEMELİDİR. - [C-6-3], daha önce ön plan uygulamasına bir
MotionEvent.ACTION_DOWN
etkinliği gönderildiyse ön plan uygulamasına birMotionEvent.ACTION_CANCEL
etkinliği GÖNDERMALIDIR. - [C-6-4], kullanıcıya ekranlı, düğme tabanlı bir gezinmeye (örneğin, Ayarlar'da) geçiş imkanı sunulmalıdır.
- Ana Ekran işlevini, ekranın geçerli yönünün alt kenarından yukarı kaydırma şeklinde SUNMALISINIZ.
- Son Kullanılanlar işlevini, Ana ekran hareketiyle aynı alandan yukarı kaydırma ve basılı tutma olarak sunmalısınız.
WindowInsets#getMandatorySystemGestureInsets()
içinde başlayan hareketler, ön plan uygulamasınınView#setSystemGestureExclusionRects()
üzerinden sağladığı hariç tutma listelerinden ETKİLEMEMELİDİR.
Ekranın geçerli yönünün sol ve sağ kenarlarındaki herhangi bir yerden bir gezinme işlevi sağlanırsa:
- [C-7-1] Gezinme işlevinin Geri olması ve ekranın mevcut yönünün hem sol hem de sağ kenarlarından kaydırma şeklinde sağlanması ZORUNLUDUR.
- [C-7-2] Sol veya sağ kenarlarda özel kaydırılabilir sistem panelleri sağlanıyorsa bu panellerin, içeri sürüklemenin söz konusu panelleri çağıracağına, yani Geri'ye değil de net ve kalıcı bir görsel işarete sahip olarak ekranın üst 1/3'üne yerleştirilmesi ZORUNLUDUR. Bir sistem paneli, kullanıcı tarafından ekran kenarlarının en üst 1/3'ünün altına inecek şekilde yapılandırılabilir, ancak sistem paneli kenarların 1/3'ünden daha uzun süre KULLANMAMALIDIR.
- [C-7-3] Ön plan uygulamasında View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, WindowInsetsController.BEHAVIOR_DEFAULT veya WindowInsetsController.eHAVIOR_SHOW_TRANSIENT_BA öğe seti tarafından uygulanan View.SYSTEM_UI_FLAG_IMMERSIVE politikası, davranışına sahip.
- [C-7-4] Ön plan uygulamasında View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, WindowInsetsController.BEHAVIOR_DEFAULT veya WindowInsetsController. sistem panelinde gizli_harekete_geçirilene kadar SYSTEM_UI_FLAG_IMMERSIVE.
Geri gezinme işlevi sağlanırsa ve kullanıcı Geri hareketini iptal ederse:
- [C-8-1]
OnBackInvokedCallback.onBackCancelled()
çağrılması ZORUNLUDUR. - [C-8-2]
OnBackInvokedCallback.onBackInvoked()
ARAMAMALIDIR. - [C-8-3] KEYCODE_BACK etkinliği GÖNDERİLMEMELİDİR.
Geri gezinme işlevi sağlanmışsa ancak ön plan uygulamasında OnBackInvokedCallback
kayıtlı değilse:
- AOSP'de belirtildiği gibi, sistem, ön plan uygulaması için kullanıcının geri döndüğünü öneren bir animasyon SAĞLAMALIDIR.
Cihaz uygulamaları, android.permission.STATUS_BAR
iznine sahip herhangi bir sistem uygulamasının gezinme çubuğu modunu ayarlamasına izin vermesi için setNavBarMode
sistem API'sini destekliyorsa:
- [C-9-1], AOSP kodunda belirtildiği gibi, çocuklara uygun simgeler veya düğme tabanlı gezinme için destek SAĞLAMALIDIR.
7.2.4. Dokunmatik Ekranlı Giriş
Android, dokunmatik ekranlar, dokunmatik alan ve sahte dokunmatik giriş cihazları gibi çeşitli işaretçi giriş sistemlerini destekler. Dokunmatik ekrana dayalı cihaz uygulamaları, kullanıcının ekrandaki öğeleri doğrudan değiştiriyormuş izlenimi vereceği bir ekranla ilişkilendirilir. Kullanıcı ekrana doğrudan dokunduğu için sistem, müdahale edilen nesneleri göstermek için herhangi bir ek ücret gerektirmez.
Cihaz uygulamaları:
- Bir tür işaretçi giriş sistemine (fare gibi veya dokunarak) sahip olması GEREKİR.
- Tamamen bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.
Cihaz uygulamaları birincil Android uyumlu ekranda dokunmatik ekran (tek dokunma veya daha iyisi) içeriyorsa:
- [C-1-1]
Configuration.touchscreen
API alanı içinTOUCHSCREEN_FINGER
değerini bildirmeli. - [C-1-2]
android.hardware.touchscreen
veandroid.hardware.faketouch
özellik bayraklarını BİLDİRMELİDİR.
Cihaz uygulamaları, birincil Android uyumlu ekranda tek bir dokunmadan daha fazlasını izleyebilen bir dokunmatik ekran içeriyorsa:
- [C-2-1], cihazdaki ilgili dokunmatik ekranın türüne göre uygun özellik işaretlerini
android.hardware.touchscreen.multitouch
,android.hardware.touchscreen.multitouch.distinct
,android.hardware.touchscreen.multitouch.jazzhand
BİLDİRMELİDİR.
Cihaz uygulamaları, birincil Android uyumlu bir ekrana giriş için fare veya trackball gibi harici bir giriş cihazı kullanıyorsa ve bölüm 7.2.5'teki sahte dokunma gereksinimlerini karşılıyorsa:
- [C-3-1]
android.hardware.touchscreen
ile başlayan hiçbir özellik işaretini BİLDİRMEMELİDİR. - [C-3-2] yalnızca
android.hardware.faketouch
adlı kullanıcıyı bildirmeli. - [C-3-3]
Configuration.touchscreen
API alanı içinTOUCHSCREEN_NOTOUCH
değerini bildirmesi GEREKİR.
7.2.5. Sahte Dokunmatik Giriş
Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesini tahmin eden bir kullanıcı giriş sistemi sağlar. Örneğin, ekran üzerinde bir imleci çalıştıran bir fare veya uzaktan kumanda, dokunmaya yaklaşır ancak kullanıcının önce üzerine gelmesini veya odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi, jiro işaretçi, kontrol çubuğu ve çok dokunmalı dokunmatik yüzey gibi çok sayıda giriş cihazı, sahte dokunma etkileşimlerini destekleyebilir. Android'de sürekli android.hardware.faketouch özelliği bulunur. Bu özellik, dokunmaya dayalı girişi (temel hareket desteği dahil) yeterli şekilde emüle edebilen fare veya dokunmatik yüzey gibi yüksek kaliteli, dokunmatik olmayan (işaretçi tabanlı) bir giriş cihazına karşılık gelir ve cihazın, dokunmatik ekran işlevlerinin emüle edilmiş bir alt kümesini desteklediğini belirtir.
Dokunmatik ekran içermeyen cihaz uygulamaları, ancak kullanıma sunmak istedikleri başka bir işaretçi giriş sistemi içeriyorsa:
android.hardware.faketouch
özellik bayrağı için destek bildirilmelidir.
Cihaz uygulamaları android.hardware.faketouch
için destek beyan ederse:
- [C-1-1] İşaretçi konumunun mutlak X ve Y ekran konumlarını bildirmeli ve ekranda görsel bir işaretçi görüntülemelidir.
- [C-1-2] Dokunma etkinliğini, işaretçide aşağı veya yukarı doğru gerçekleşen durum değişikliğini belirten işlem koduyla Bildirin.
- [C-1-3], ekrandaki bir nesne üzerinde işaretçiyi aşağı ve yukarı DESTEKLEMELİDİR. Bu özellik, kullanıcıların ekrandaki bir nesneye dokunma emülasyonuna olanak tanır.
- [C-1-4] belirli bir zaman eşiğinde işaretçiyi aşağı, yukarı ve aşağı işaretçiyi, ardından aşağıyı ve ardından yukarıyı desteklemektedir. Böylece, kullanıcılar ekrandaki bir nesneye iki kez dokunma emülasyonu yapabilir.
- [C-1-5] İşaretçiyi ekranda rastgele bir nokta üzerinde aşağı doğru DESTEKLEMELİDİR. İşaretçi ekranın rastgele bir noktasına gitmesini, ardından da yukarıya doğru işaretçi hareket ettirilmesini SAĞLAMALIDIR. Bu şekilde, kullanıcıların dokunarak sürüklemeyi emüle etmeleri gerekir.
- [C-1-6] İşaretçiyi aşağı doğru desteklemeli ve kullanıcıların nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ardından işaretçiyi ekranda yukarıya hareket etmesine izin vermelidir. Bu şekilde kullanıcılar bir nesneyi ekrana fırlatabilir.
Cihaz uygulamaları android.hardware.faketouch.multitouch.distinct
için destek beyan ederse:
- [C-2-1],
android.hardware.faketouch
için destek bildirmeli. - [C-2-2] iki veya daha fazla bağımsız işaretçi girişinin ayrı ayrı izlenmesini desteklemelidir.
Cihaz uygulamaları android.hardware.faketouch.multitouch.jazzhand
için destek beyan ederse:
- [C-3-1],
android.hardware.faketouch
için destek beyanı ZORUNLUDUR. - [C-3-2] 5'in ayrı izlenmesini (parmak avucunu izleme) veya daha fazla işaretçi girişini tamamen bağımsız şekilde desteklemelidir.
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 listelendiği gibi karşılık gelen
InputEvent
sabitleriyle eşleştirebilmelidir. Yukarı akış Android uygulaması bu koşulu karşılar.
Cihaz uygulamalarında, aşağıdaki tablolarda listelenen tüm etkinliklerin girilmesi için araçlar sağlayan bir denetleyici yerleşik olarak veya ayrı bir denetleyici ile birlikte gönderilirse bunlar:
- [C-2-1],
android.hardware.gamepad
özellik bayrağını beyan etmelidir.
Düğme | HID Kullanımı2 | Android Düğmesi |
---|---|---|
1. | 0x09 0x0001 | KEYCODE_Button_A (96) |
B1 | 0x09 0x0002 | KEYCODE_Button_B (97) |
X1 | 0x09 0x0004 | KEYCODE_Button_X (99) |
E1 | 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ıklama1 | 0x09 0x000D | KEYCODE_Button_THUMBL (106) |
Sağ çubuk tıklama1 | 0x09 0x000F | KEYCODE_Button_THUMBR (107) |
Geri1 | 0x0c 0x0224 | KEYCODE_BACK (4) |
1 KeyEvent
2 Yukarıdaki HID kullanımları bir Oyun Kumandası CA (0x01 0x0005) içinde beyan edilmelidir.
3 Bu kullanım için Mantıksal Minimum 0, Mantıksal Maksimum 7, Fiziksel Minimum 0, Fiziksel Maksimum 315, Derece Birim ve Rapor Boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde dönüş olarak tanımlanır. Örneğin, 0 mantıksal değeri döndürme olmadığını ve yukarı düğmesine basıldığını, mantıksal değer 1 ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını ifade eder.
Analog Kontroller1 | HID Kullanımı | Android Düğmesi |
---|---|---|
Sol Tetikleyici | 0x02 0x00C5 | AXIS_LTRIGGER |
Sağ tetikleyici | 0x02 0x00C4 | AXIS_RTRIGGER |
Sol kontrol çubuğu | 0x01 0x0030 0x01 0x0031 |
EKST_X AXIS_Y |
Sağ kontrol çubuğu | 0x01 0x0032 0x01 0x0035 |
AXIS_Z AXIS_RZ |
7.2.7. Uzaktan Kumanda
Cihaza özel gereksinimler için bkz. Bölüm 2.3.1.
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ünü içeriyorsa cihaz uygulamasının, bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.
Cihaz uygulamaları:
- [C-0-1], sensörlerin varlığını veya yokluğunu
android.content.pm.PackageManager
sınıfına göre doğru şekilde BİLDİRMELİDİR. - [C-0-2],
SensorManager.getSensorList()
ve benzer yöntemler aracılığıyla desteklenen sensörlerin doğru bir listesini döndürmelidir. - [C-0-3] diğer tüm sensör API'leri için makul bir şekilde çalışmalıdır (örneğin, uygulamalar dinleyici kaydetmeye çalıştığında
true
veyafalse
uygun şekilde döndürülmesi ya da ilgili sensörler mevcut olmadığında sensör dinleyicileri çağırmaması vb.).
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türünü içeriyorsa:
- [C-1-1], Android SDK belgelerinde tanımlandığı gibi her sensör türü için ilgili Uluslararası Birim Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini rapor etmelidir.
- [C-1-2], uygulama işlemcisi etkinken maksimum 0 ms'lik bir istenen gecikmeyle sensör akışı için maksimum 100 milisaniye + 2 * sample_time gecikmeyle sensör verilerini rapor etmelidir. Bu gecikme, filtreleme gecikmelerini içermez.
- [C-1-3], etkinleştirilmekte olan sensörün 400 milisaniye + 2 * sample_time süresi içinde ilk sensör örneğini bildirmelidir. Bu örneğin doğruluk oranının 0 olması kabul edilebilir.
- [C-1-4] Android SDK belgelerinde belirtilen bir API'nin sürekli sensör olması için cihaz uygulamalarının sürekli olarak %3'ün altında bir ses dalgalanmasına sahip olması GEREKEN periyodik veri örnekleri sağlanması ZORUNLUDUR. Burada ses dalgalanması, ardışık etkinlikler arasındaki raporlanan zaman damgası değerleri farkının standart sapması olarak tanımlanır.
- [C-1-5] Sensör etkinlik akışının, cihazın CPU'sunun askıya alma durumuna girmesini veya askıya alma durumundan uyanmasını engellememesi gerekir.
- [C-1-6], Android SDK belgelerinde tanımlandığı gibi, etkinliğin gerçekleştiği ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edildiği nanosaniye cinsinden etkinlik süresini bildirmelidir.
- [C-SR-1] Zaman damgası senkronizasyon hatasının 100 milisaniyeden kısa olması ve zaman damgası senkronizasyon hatasının 1 milisaniyenin altında olması ÖNEMLE ÖNERİLİ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 tam kapsamlı değildir. Android SDK'nın ve sensörler ile ilgili Android Açık Kaynak Dokümanları'nın belgelenen davranışları güvenilir 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ünü içeriyorsa:
- [C-1-6] tüm sensörler için sıfır dışında bir çözünürlük ayarlamalı ve değeri
Sensor.getResolution()
API yöntemiyle rapor etmelidir.
Bazı sensör türleri kompozittir. Yani başka bir veya daha fazla sensör tarafından sağlanan verilerden türetilebilir. (Yön sensörü ve doğrusal ivme sensörü örnek olarak verilebilir.)
Cihaz uygulamaları:
- Bu sensör türleri, sensör türlerinde açıklandığı gibi ön koşul niteliğindeki fiziksel sensörleri içerdiğinde uygulansın mı?
Cihaz uygulamaları bir kompozit sensör içeriyorsa:
- [C-2-1] sensörün, kompozit sensörler hakkındaki Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulanması ZORUNLUDUR.
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türünü içeriyorsa ve sensör yalnızca tek bir değer bildiriyorsa cihaz uygulamaları:
- [C-3-1] sensör için çözünürlüğü 1 olarak ayarlamalı ve
Sensor.getResolution()
API yöntemini kullanarak değeri bildirmelidir.
Cihaz uygulamaları SensorAdditionalInfo#TYPE_VEC3_CALIBRATION özelliğini destekleyen belirli bir sensör türü içeriyorsa ve sensör üçüncü taraf geliştiricilere açıksa:
- [C-4-1] sağlanan verilerde sabit, fabrika tarafından belirlenmiş kalibrasyon parametreleri İÇERMEMELİDİR.
Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü veya manyetometre sensörünü içeriyorsa:
- [C-SR-2] İvme ölçer, jiroskop ve manyetometrenin sabit bir göreli konuma sahip olmasını sağlamak için ÖNEMLE ÖNERİLİR.Cihaz dönüştürülebilir nitelikteyse (ör. katlanabilir) sensör eksenleri, mümkün olan tüm cihaz dönüştürme durumlarında sensör koordinat sistemiyle uyumlu ve uyumlu kalır.
7.3.1. İvme ölçer
Cihaz uygulamaları:
- [C-SR-1] 3 eksenli ivme ölçer içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları bir ivme ölçer içeriyorsa:
- [C-1-1] En az 50 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [C-1-3], Android API'lerinde ayrıntılı olarak açıklanan Android sensör koordinat sistemine UYMALIDIR.
- [C-1-4] herhangi bir eksende serbest düşüşten dört kata kadar(4 g) veya daha fazla yer çekimi ölçümü yapabilmelidir.
- [C-1-5] çözünürlüğü en az 12 bit olmalıdır.
- [C-1-6] 0,05 m/sn'den fazla olmayan bir standart sapmaya sahip OLMALIDIR.Burada, en yüksek örnekleme hızında en az 3 saniyelik bir süre boyunca toplanan örnekler için standart sapma eksen başına hesaplanmalıdır.
- Maksimum 200 Hz'e kadar olan etkinlikler Bildirilmelidir.
- Çözünürlüğü en az 16 bit olmalıdır.
- Özelliklerin yaşam döngüsü boyunca değişip dengelenmesi durumunda kullanım sırasında kalibre edilmesi ve cihazı yeniden başlatma işlemleri arasında dengeleme parametrelerini korumanız gerekir.
- Sıcaklık dengelemenin yapılması GEREKİR.
Cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [C-2-1]
TYPE_ACCELEROMETER
sensörünü uygulamalı ve bildirmelidir. - [C-SR-4]
TYPE_SIGNIFICANT_MOTION
bileşik sensörünün uygulanması için ÖNEMLE ÖNERİLİR. - [C-SR-5]
TYPE_ACCELEROMETER_UNCALIBRATED
sensörünün uygulanması ve bildirilmesi için ÖNEMLE ÖNERİLİR. Android cihazların bu gereksinimi karşılaması ÖNEMLE ÖNERİLİR. Bu sayede, ileride bu özelliğin GEREKLİ hale gelebileceği ileriki platform sürümlerine geçiş yapabilirler. TYPE_SIGNIFICANT_MOTION
,TYPE_TILT_DETECTOR
,TYPE_STEP_DETECTOR
,TYPE_STEP_COUNTER
birleşik sensörlerini Android SDK dokümanında açıklandığı şekilde UYGULAMALIDIR.
Cihaz uygulamaları, 3 eksenden daha kısa bir ivme ölçer içeriyorsa:
- [C-3-1]
TYPE_ACCELEROMETER_LIMITED_AXES
sensörünü uygulamalı ve bildirmeli. - [C-SR-6]
TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED
sensörünü uygulamak ve raporlamak için STRONGLY_RECOMMENDED
Cihaz uygulamaları 3 eksenli ivme ölçer ve TYPE_SIGNIFICANT_MOTION
, TYPE_TILT_DETECTOR
, TYPE_STEP_DETECTOR
,
TYPE_STEP_COUNTER
kompozit sensörlerden herhangi biri uygulanmışsa:
- [C-4-1] Güç tüketiminin toplamı her zaman 4 mW'dan az olmalıdır.
- Cihaz dinamik veya statik bir durumda olduğunda her biri 2 mW ve 0,5 mW'nun altında olmalıdır.
Cihaz uygulamaları 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü içeriyorsa:
- [C-5-1],
TYPE_GRAVITY
veTYPE_LINEAR_ACCELERATION
birleşik sensörlerini uygulamalıdır. - [C-SR-7]
TYPE_GAME_ROTATION_VECTOR
kompozit sensörünün uygulanması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü ve manyetometre sensörü içeriyorsa:
- [C-6-1] bir
TYPE_ROTATION_VECTOR
kompozit sensör uygulaması ZORUNLUDUR.
7.3.2. Manyetometre
Cihaz uygulamaları:
- [C-SR-1] 3 eksenli bir manyetometre (pusula) içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları 3 eksenli bir manyetometre içeriyorsa, bunlar:
- [C-1-1]
TYPE_MAGNETIC_FIELD
sensörünü uygulaması ZORUNLUDUR. - [C-1-2] en az 10 Hz frekansına kadar olan etkinlikleri ve en az 50 Hz'e kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [C-1-3], Android API'lerinde ayrıntılı olarak açıklanan Android sensör koordinat sistemine UYMALIDIR.
- [C-1-4] doygunlaştırılmadan önce her bir eksende -900 μT ile +900 μT arasında ölçüm yapabilmelidir.
- [C-1-5] manyetometrenin dinamik (akımla oluşturulan) ve statik (mıknatıslı) manyetik alanlardan uzağa yerleştirilerek 200 μT'nin altında bir sert demir ofset değerine sahip olması ZORUNLUDUR.
- [C-1-6] 0,6 μT'ye eşit veya daha yoğun bir çözünürlüğe sahip olmalıdır.
- [C-1-7] online kalibrasyonu ve sert demir önyargı dengesini desteklemeli ve cihazı yeniden başlatmalar arasında dengeleme parametrelerini korumalıdır.
- [C-1-8] yumuşak demir katkısının uygulanması ZORUNLUDUR. Kalibrasyon, kullanım sırasında veya cihazın üretimi sırasında yapılabilir.
- [C-1-9] en yüksek örnekleme hızında en az 3 saniyelik bir süre boyunca toplanan örnekler üzerinde eksen bazında hesaplanan bir standart sapmaya sahip olmalıdır; bu durumda 1, 5 μT'den yüksek olmayan bir standart sapma 0, 5 μT'dir.
- [C-1-10]
TYPE_MAGNETIC_FIELD_UNCALIBRATED
sensörünü uygulaması ZORUNLUDUR.
Cihaz uygulamaları 3 eksenli bir manyetometre, ivme ölçer sensörü ve 3 eksenli jiroskop sensörü içeriyorsa:
- [C-2-1] bir
TYPE_ROTATION_VECTOR
kompozit sensör uygulaması ZORUNLUDUR.
Cihaz uygulamaları 3 eksenli bir manyetometre ve ivme ölçer içeriyorsa:
TYPE_GEOMAGNETIC_ROTATION_VECTOR
sensörü uygulanabilir.
Cihaz uygulamaları 3 eksenli manyetometre, ivme ölçer ve TYPE_GEOMAGNETIC_ROTATION_VECTOR
sensörü içeriyorsa:
- [C-3-1] 10 mW'dan az tüketmelidir.
- Sensör 10 Hz toplu moda kaydedildiğinde 3 mW'tan az güç tüketmelidir.
7.3.3. GPS
Cihaz uygulamaları:
- [C-SR-1] GPS/GNSS alıcısı içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları bir GPS/GNSS alıcısı içeriyorsa ve yeteneği uygulamalara android.hardware.location.gps
özellik bayrağı aracılığıyla bildirirlerse:
- [C-1-1],
LocationManager#requestLocationUpdate
üzerinden istendiğinde konum çıkışlarını en az 1 Hz hızda DESTEKLEMELİDİR. - [C-1-2] 0,5 Mb/sn veya daha yüksek veri hızında bir internet bağlantısına bağlandığında, açık hava koşullarında
konumu (güçlü sinyaller, göz ardı edilebilir çok yol, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı süre) belirleyebilmelidir. Bu gereklilik, genellikle GPS/GNSS kilitlenme süresini en aza indirmek amacıyla bir tür Yardımlı veya Tahmini GPS/GNSS tekniğinin kullanılmasıyla karşılanır (Yardım verileri Referans Saati, Referans Konum ve Uydu Efeeri/Saati içerir).
- [C-1-6] Bu tür bir konum hesaplaması yapıldıktan sonra, cihaz uygulamalarının konum istekleri yeniden başlatıldığında, konum istekleri yeniden başlatıldığında, ilk konum hesaplamasından en fazla bir saat sonra (veri bağlantısı olmadan istek yapılmış olsa bile) ve/veya cihaz kapatıldıktan sonra konumu 5 saniye içinde açık gökyüzünde belirlemesi ZORUNLUDUR.
Konum belirlendikten sonra açık gökyüzü koşullarında, sabit veya saniye başına 1 metreden daha düşük ivmeyle hareket ederken:
- [C-1-3] 20 metrelik mesafe içinde konumu ve en az% 95'inde saniyede 0,5 metrelik bir hızı belirlemelidir.
- [C-1-4] bir takımyıldıza ait en az 8 uyduyu
GnssStatus.Callback
üzerinden aynı anda izleyip rapor etmelidir. - Birden fazla takımyıldızdan (ör. GPS + Glonass, Beidou, Galileo'dan en az biri) en az 24 uyduyu aynı anda izleyebilmeli.
[C-SR-2] Acil durum telefon araması sırasında GNSS Konum Sağlayıcı API'leri üzerinden normal GPS/GNSS konumu çıkışlarını yayınlamaya devam etmesi ÖNERİLİR.
[C-SR-3] SBAS hariç olmak üzere, izlenen tüm takım yıldızlardan GNSS ölçümlerini raporlamak için ÖNERİLİR (GnssStatus mesajlarında bildirildiği gibi).
[C-SR-4] AGC'yi ve GNSS ölçümünün sıklığını raporlaması için ÖNEMLE ÖNERİLİR.
[C-SR-5] Her bir GPS/GNSS konumunun bir parçası olarak tüm doğruluk tahminlerini (yönlendirme, hız ve dikey dahil) raporlaması ÖNEMLE ÖNERİLİR.
[C-SR-6] GPS/GNSS kullanılarak hesaplanan bir konum henüz bildirilmemiş olsa bile GNSS ölçümlerini bulunur bulunmaz raporlanması ÖNEMLE ÖNERİLİR.
[C-SR-7] GNSS gerçek olmayan aralıklarını ve sözde aralık oranlarını raporlamak ÖNERİLİR. Konum belirlendikten sonra açık gökyüzü koşullarında, sabit bir şekilde veya saniyede 0,2 metreden daha düşük ivmeyle hareket ederken 20 metre içinde ve 0,2 metre içinde en az% 5'lik hızda konumu hesaplamak için yeterlidir.
7.3.4. Jiroskop
Cihaz uygulamaları:
- [C-SR-1] Jiroskop sensörü içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları bir jiroskop içeriyorsa:
- [C-1-1] En az 50 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [C-1-4] 12 bit veya daha yüksek bir çözünürlüğe sahip olması ZORUNLUDUR.
- [C-1-5] için sıcaklık dengelemesi ZORUNLUDUR.
- [C-1-6] kullanım esnasında kalibre edilip telafi edilmeli ve cihazı yeniden başlatmalar arasında dengeleme parametrelerini korumak zorundadır.
- [C-1-7] Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / sn) daha fazla bir varyansa sahip olmamalıdır. Örnekleme hızıyla birlikte varyansın değişmesine izin verilir ancak bu değerin kısıtlanması ZORUNLUDUR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçtüğünüzde, 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
- [C-SR-2] Cihaz oda sıcaklığında sabit durumdayken kalibrasyon hatasının 0,01 rad/sn'den düşük olması ÖNEMLE ÖNERİLİR.
- [C-SR-3] 16 bit veya daha yüksek çözünürlüğe sahip olmaları ÖNEMLE ÖNERİLİR.
- Maksimum 200 Hz'e kadar olan etkinlikler Bildirilmelidir.
Cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [C-2-1]
TYPE_GYROSCOPE
sensörünü uygulaması ZORUNLUDUR. - [C-SR-4]
TYPE_GYROSCOPE_UNCALIBRATED
sensörünün uygulanması Kesinlikle Önerilir.
Cihaz uygulamaları 3'ten az ekseni olan bir jiroskop içeriyorsa:
- [C-3-1]
TYPE_GYROSCOPE_LIMITED_AXES
sensörünü uygulamalı ve bildirmeli. - [C-SR-5]
TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED
sensörünü uygulamak ve raporlamak için STRONGLY_RECOMMENDED
Cihaz uygulamaları 3 eksenli jiroskop, ivme ölçer sensörü ve manyetometre sensörü içeriyorsa:
- [C-4-1] bir
TYPE_ROTATION_VECTOR
kompozit sensör uygulaması ZORUNLUDUR.
Cihaz uygulamaları 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü içeriyorsa:
- [C-5-1],
TYPE_GRAVITY
veTYPE_LINEAR_ACCELERATION
birleşik sensörlerini uygulamalıdır. - [C-SR-6]
TYPE_GAME_ROTATION_VECTOR
bileşik sensörünün uygulanması için ÖNEMLE ÖNERİLİR.
7.3.5. Barometre
Cihaz uygulamaları:
- [C-SR-1] Barometre (ortam hava basıncı sensörü) içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları barometre içeriyorsa:
- [C-1-1]
TYPE_PRESSURE
sensörünü uygulamalı ve bildirmelidir. - [C-1-2] 5 Hz veya daha yüksek hızlarda etkinlik sunmak ZORUNLUDUR.
- [C-1-3] için sıcaklık dengelemesi ZORUNLUDUR.
- [C-SR-2] 300 hPa - 1100 hPa aralığındaki basınç ölçümlerini raporlayabilmek için ÖNEMLE ÖNERİLİR.
- Mutlak doğruluk oranının 1hPa olması gerekir.
- 20 hPa aralığında göreli doğruluk oranının 0,12 hPa olması GEREKİR (deniz seviyesinde yaklaşık 200 m'lik değişimde ~1 milyon doğruluk oranına eşdeğer).
7.3.6. Termometre
Cihaz uygulamaları bir ortam termometresi (sıcaklık sensörü) içeriyorsa bunlar:
- [C-1-1] ortam sıcaklığı sensörü için
SENSOR_TYPE_AMBIENT_TEMPERATURE
değerini tanımlamalı ve sensör, kullanıcının cihazla etkileşime girdiği ortam (oda/araç kabini) sıcaklığını Santigrat cinsinden ölçmelidir.
Cihaz uygulamalarında, CPU sıcaklığı gibi ortam sıcaklığından farklı bir sıcaklığı ölçen bir termometre sensörü varsa:
- [C-2-1] Sıcaklık sensörü için
SENSOR_TYPE_AMBIENT_TEMPERATURE
değerini TANIMLAMAMALIDIR.
Cihaz uygulamalarında deri sıcaklığını izlemek için bir sensör varsa:
- [C-SR-1] PowerManager.getThermalHeadroom API'sini desteklemesi için ÖNEMLE ÖNERİLİR.
7.3.7. Fotometre
- Cihaz uygulamaları bir fotometre (ortam ışığı sensörü) İÇEREBİLİR.
7.3.8. Yakınlık Sensörü
- Cihaz uygulamaları yakınlık sensörü İÇEREBİLİR.
Cihaz uygulamaları bir yakınlık sensörü içeriyorsa ve yalnızca "yakın" veya "uzak" şeklinde bir ikili değer ölçümü bildiriyorsa:
- [C-1-1], ekranla aynı yönde bir nesnenin yakınlığını ölçmesi GEREKİR. Diğer bir deyişle, yakınlık sensörünün ekrana yakın nesneleri algılamak için YÖNETİLMELİDİR. Bu sensör türünün birincil amacı, kullanıcı tarafından kullanılan bir telefonu algılamaktır. Cihaz uygulamalarında başka bir yöne sahip yakınlık sensörü varsa bu sensöre bu API üzerinden ERİŞİLEMEMELİDİR.
- [C-1-2] 1 bit veya daha yüksek doğrulukta olması ZORUNLUDUR.
- [C-1-3] Yakın okuma değeri olarak 0 santimetre, uzak değer olarak ise 5 santimetre kullanılması ZORUNLUDUR.
- [C-1-4] Maksimum aralık ve çözünürlük 5 olarak bildirilmelidir.
7.3.9. Yüksek Kaliteli Sensörler
Cihaz uygulamaları, bu bölümde tanımlandığı gibi yüksek kaliteli bir dizi sensör içerir ve bunları üçüncü taraf uygulamalarının kullanımına sunarsa:
- [C-1-1], özelliği
android.hardware.sensor.hifi_sensors
özellik bayrağı aracılığıyla tanımlamalıdır.
Cihaz uygulamaları android.hardware.sensor.hifi_sensors
bildiriyorsa:
[C-2-1] aşağıdaki şartları karşılayan bir
TYPE_ACCELEROMETER
sensörüne sahip olmalıdır:- En az -8 g ile +8 g arasında bir ölçüm aralığının olması gerekir ve en az -16 g ile +16 g arasında bir ölçüm aralığının olması ÖNERİLİR.
- Ölçüm çözünürlüğü en az 2048 LSB/g olmalıdır.
- Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansının 400 Hz veya daha yüksek olması ZORUNLUDUR; SensorDirectChannel'ı
RATE_VERY_FAST
desteklemelisiniz. - Ölçüm gürültüsünün 400 μg/abilen Hz'in üzerinde olması ZORUNLUDUR.
- Bu sensörün en az 3.000 sensör olayına sahip arabelleğe alma özelliğine sahip uyandırma olmayan bir biçimini uygulaması ZORUNLUDUR.
- Toplu işlem güç tüketiminin 3 mW'dan düşük olmaması ZORUNLUDUR.
- [C-SR-1] 3 dB ölçüm bant genişliğinin Nyquist frekansının en az% 80'ine ve bu bant genişliğinde beyaz gürültü spektrumuna sahip olması ÖNEMLE ÖNERİLİR.
- Oda sıcaklığında test edilen rastgele ivmeyle rastgele yürüyüş 30 μg'nin STOP Hz'den az olması GEREKİR.
- Sıcaklığa kıyasla ≤ +/- 1 mg/°C şeklinde bir sapma değişiminin olması GEREKİR.
- En uygun çizginin doğrusal olmayan değeri ≤ %0,5 ve hassasiyet değişimi ≤ %0,03/C° olmalıdır.
- Cihazın çalışma sıcaklık aralığında eksenler arası hassasiyeti % 2,5'in altında ve eksenler arası hassasiyeti% 0,2'nin altında olmalıdır.
[C-2-2],
TYPE_ACCELEROMETER
ile aynı kalite şartlarına sahip birTYPE_ACCELEROMETER_UNCALIBRATED
OLMALIDIR.[C-2-3] aşağıdaki koşulları karşılayan bir
TYPE_GYROSCOPE
sensörüne sahip olmalıdır:- En az -1000 ila +1000 dps arasında bir ölçüm aralığının olması ZORUNLUDUR.
- En az 16 LSB/d/sn ölçüm çözünürlüğüne sahip olması ZORUNLUDUR.
- Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansının 400 Hz veya daha yüksek olması ZORUNLUDUR; SensorDirectChannel'ı
RATE_VERY_FAST
desteklemelisiniz. - 0,014°/s/çalışmasının ölçüm paraziti olması ZORUNLUDUR.
- [C-SR-2] 3 dB ölçüm bant genişliğinin Nyquist frekansının en az% 80'ine ve bu bant genişliğinde beyaz gürültü spektrumuna sahip olması ÖNEMLE ÖNERİLİR.
- Oda sıcaklığında test edilen rastgele yürüyüş hızının 0,001 °/sn'den az 🙌 Hz olması gerekir.
- Sıcaklığa kıyasla ≤ +/- 0,05 °/ s / °C şeklinde bir sapma değişimi olması GEREKİR.
- Sıcaklığa kıyasla hassasiyetinde değişimin ≤ %0,02 / °C olması gerekir.
- ≤ %0,2 doğrusal olmayan, en uygun çizgiye sahip olmalıdır.
- Gürültü yoğunluğu 0,007 °/s/çekince ≤ olmalıdır.
- Cihaz sabit durumdayken 10 ~ 40 °C sıcaklık aralığında 0,002 rad/sn'den az kalibrasyon hatası ALINMALIDIR.
- g hassasiyeti 0,1°/s/g'den az olmalıdır.
- Cihazın çalışma sıcaklık aralığında eksenler arası hassasiyeti % 4,0'ın altında ve eksenler arası hassasiyet varyasyonu% 0,3'ün altında olmalıdır.
[C-2-4],
TYPE_GYROSCOPE
ile aynı kalite gereksinimlerine sahip birTYPE_GYROSCOPE_UNCALIBRATED
OLMALIDIR.[C-2-5] aşağıdaki koşulları karşılayan bir
TYPE_GEOMAGNETIC_FIELD
sensörüne sahip olmalıdır:- En az -900 ile +900 μT arasında bir ölçüm aralığının olması ZORUNLUDUR.
- En az 5 LSB/uT ölçüm çözünürlüğüne sahip olması ZORUNLUDUR.
- Minimum ölçüm frekansının 5 Hz veya daha düşük olması ZORUNLUDUR.
- Maksimum ölçüm frekansının 50 Hz veya daha yüksek olması ZORUNLUDUR.
- 0,5 uT'nin üzerinde olmayan bir ölçüm gürültüsü olması ZORUNLUDUR.
[C-2-6],
TYPE_GEOMAGNETIC_FIELD
ile aynı kalite gereksinimlerine ve ayrıca şunlara sahip birTYPE_MAGNETIC_FIELD_UNCALIBRATED
OLMALIDIR:- Bu sensörün en az 600 sensör olayına sahip arabelleğe alma özelliğine sahip uyandırma olmayan bir biçimini uygulaması ZORUNLUDUR.
- [C-SR-3] Bildirme hızı 50 Hz veya daha yüksek olduğunda 1 Hz ile en az 10 Hz arasında beyaz gürültü spektrumunun olması ÖNEMLE ÖNERİLİR.
[C-2-7] aşağıdaki koşulları karşılayan bir
TYPE_PRESSURE
sensörüne sahip olmalıdır:- En az 300 ila 1100 hPa arasında bir ölçüm aralığının olması ZORUNLUDUR.
- En az 80 LSB/hPa ölçüm çözünürlüğüne sahip olmalıdır.
- Minimum ölçüm frekansı 1 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansının 10 Hz veya daha yüksek olması ZORUNLUDUR.
- Ölçüm gürültüsünün 2 Pa/✓ Hz'den yüksek olması ZORUNLUDUR.
- Bu sensörün en az 300 sensör olayına sahip arabelleğe alma özelliğine sahip uyandırma olmayan bir biçimini uygulaması ZORUNLUDUR.
- Toplu işlem güç tüketiminin 2 mW'dan düşük olmaması ZORUNLUDUR.
[C-2-8] sensörü
TYPE_GAME_ROTATION_VECTOR
OLMALIDIR.[C-2-9] aşağıdaki koşulları karşılayan bir
TYPE_SIGNIFICANT_MOTION
sensörüne sahip olmalıdır:- Güç tüketimi, cihaz statikken 0,5 mW'tan, cihaz hareket ederken ise 1,5 mW'dan düşük olmamalıdır.
[C-2-10] aşağıdaki koşulları karşılayan bir
TYPE_STEP_DETECTOR
sensörüne sahip olmalıdır:- Bu sensörün en az 100 sensör olayına sahip arabelleğe alma özelliğine sahip uyandırma olmayan bir biçimini uygulaması ZORUNLUDUR.
- Güç tüketimi, cihaz statikken 0,5 mW'tan, cihaz hareket ederken ise 1,5 mW'dan düşük olmamalıdır.
- Toplu işlem güç tüketiminin 4 mW'dan düşük olmaması ZORUNLUDUR.
[C-2-11] aşağıdaki koşulları karşılayan bir
TYPE_STEP_COUNTER
sensörüne sahip olmalıdır:- Güç tüketimi, cihaz statikken 0,5 mW'tan, cihaz hareket ederken ise 1,5 mW'dan düşük olmamalıdır.
[C-2-12] aşağıdaki koşulları karşılayan bir
TILT_DETECTOR
sensörüne sahip olmalıdır:- Güç tüketimi, cihaz statikken 0,5 mW'tan, cihaz hareket ederken ise 1,5 mW'dan düşük olmamalıdır.
[C-2-13] İvme Ölçer, Jiroskop ve Manyetometre tarafından bildirilen aynı fiziksel etkinliğe ait etkinlik zaman damgasının birbirinden en fazla 2, 5 milisaniye uzakta olması ZORUNLUDUR. İvme Ölçer ve Jiroskop tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgasının birbirinden en fazla 0,25 milisaniye uzakta olması gerekir.
[C-2-14] Jiroskop sensör etkinliği zaman damgalarının kamera alt sistemiyle aynı zaman aralığında ve hatadan en fazla 1 milisaniye uzakta olması gerekir.
[C-2-15], yukarıdaki fiziksel sensörlerden herhangi birinde verinin mevcut olduğu andan itibaren 5 milisaniye içinde uygulamaya örnekler iletmelidir.
[C-2-16] aşağıdaki sensörlerin herhangi bir kombinasyonu etkin durumdayken cihaz statikken 0,5 mW'tan, cihaz hareket ederken ise 2,0 mW'dan yüksek bir güç tüketimi ETMEMELİDİR:
SENSOR_TYPE_SIGNIFICANT_MOTION
SENSOR_TYPE_STEP_DETECTOR
SENSOR_TYPE_STEP_COUNTER
SENSOR_TILT_DETECTORS
[C-2-17]
TYPE_PROXIMITY
sensörü OLABİLİR, ancak varsa minimum 100 sensör etkinliği arabellek kapasitesine sahip olması ZORUNLUDUR.
Bu bölümdeki güç tüketimi gereksinimlerinin hiçbirinin Uygulama İşlemci'nin güç tüketimini içermediğini unutmayın. Tüm sensör zincirinin (sensör, destek devreleri, özel sensör işleme sistemleri vb.) çektiği güç buna dahildir.
Cihaz uygulamaları doğrudan sensör desteği içeriyorsa:
- [C-3-1], doğrudan kanal türleri desteği ve doğrudan raporlama ücretleri düzeyini
isDirectChannelTypeSupported
vegetHighestDirectReportRateLevel
API üzerinden doğru şekilde beyan etmelidir. - [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 DESTEKLEMELİDİR.
- Aşağıdaki türlerin birincil sensörleri (uyandırma olmayan varyant) için sensör doğrudan kanalı üzerinden etkinlik raporlamasının desteklenmesi GEREKİR:
TYPE_ACCELEROMETER
TYPE_ACCELEROMETER_UNCALIBRATED
TYPE_GYROSCOPE
TYPE_GYROSCOPE_UNCALIBRATED
TYPE_MAGNETIC_FIELD
TYPE_MAGNETIC_FIELD_UNCALIBRATED
7.3.10. Biyometrik Sensörler
Biyometrik Kilit Açma Güvenliğini Ölçme hakkında ek bilgi için lütfen Biyometrik Güvenlik Ölçümü belgelerine bakın.
Cihaz uygulamaları güvenli bir kilit ekranı içeriyorsa:
- Biyometrik sensör İÇERMELİDİR
Biyometrik sensörler, sahte ve sahte kabul oranlarına ve biyometrik boru hattının güvenliğine göre Sınıf 3 (eski adıyla Güçlü), Sınıf 2 (eski adıyla Zayıf) veya Sınıf 1 (eski adıyla Kolay) olarak sınıflandırılabilir. Bu sınıflandırma, biyometrik sensörün platform ve üçüncü taraf uygulamalarıyla arayüz oluşturmak için sahip olduğu özellikleri belirler. Sensörler Sınıf 1, Sınıf 2 veya Sınıf 3 olarak sınıflandırılmak istiyorsa aşağıda açıklanan ek şartları karşılamalıdır. Hem Sınıf 2 hem de Sınıf 3 biyometri verileri, aşağıda ayrıntılı olarak açıklandığı şekilde ek özelliklere sahip olur.
Cihaz uygulamaları, bir biyometrik sensörü android.hardware.biometrics.BiometricManager, android.hardware.biometrics.BiometricPrompt ve android.provider.Settings.ACTION_BIOMETRIC_ENROLL üzerinden üçüncü taraf uygulamaların kullanımına sunuyorsa:
- [C-4-1], bu belgede tanımlanan Sınıf 3 veya Sınıf 2 biyometri şartlarını 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ı tanımalı ve dikkate almalıdır. Öte yandan, Authenticators'da ve bunların tüm kombinasyonlarında herkese açık sabit değerler olarak belgelenenler dışında, canAuthenticate(int) ve setAllowedAuthenticators(int) yöntemlerine iletilen tam sayı sabitlerini dikkate ALMAMALIDIR.
- [C-4-3], Sınıf 3 veya Sınıf 2 biyometriye sahip cihazlarda ACTION_BIOMETRIC_ENROLL işlemini uygulamalıdır. Bu işlemde yalnızca Sınıf 3 veya Sınıf 2 biyometri kayıt giriş noktalarının sunulması ZORUNLUDUR.
Cihaz uygulamaları pasif biyometriyi destekliyorsa:
- [C-5-1] Varsayılan olarak ek bir onay adımının (ör. düğmeye basma) gerektirmesi ZORUNLUDUR.
- [C-SR-1] Kullanıcıların uygulama tercihini geçersiz kılmasına izin veren ve her zaman onay adımını gerektirecek bir ayarın olması ÖNEMLE ÖNERİLİR.
- [C-SR-2] Bir işletim sistemi veya çekirdek güvenlik ihlalinin adres sahteciliğini ele alamayacağı şekilde güvenli hale getirilmesini onaylama işlemi ÖNEMLE ÖNERİLİR. Örneğin, fiziksel bir düğmeye dayalı onaylama işleminin, fiziksel bir düğmeye basma dışında başka bir yöntemle yönlendirilemeyen bir güvenli öğenin (SE) yalnızca giriş amaçlı genel amaçlı giriş/çıkış (GPIO) pimi üzerinden yönlendirildiği anlamına gelir.
- [C-5-2] Ek olarak, uygulamaların oturum açma akışları için kullanmak üzere ayarlayabileceği setConfirmationRequired(boole) ayarına karşılık gelen örtülü bir kimlik doğrulama akışı(onay adımı olmadan) uygulaması ZORUNLUDUR.
Cihaz uygulamalarında birden fazla biyometrik sensör varsa:
Yeni koşullarla başlayın
[C-7-1] Bir biyometri kilitlenirken (ör. kullanıcı birincil kimlik doğrulama ile kilidi açana kadar biyometri devre dışı bırakıldığında) veya zaman sınırlamalı erişim (kullanıcı belirli bir süre boyunca işlem yapana kadar) biyometrinin geçici olarak devre dışı bırakılması (kullanıcı belirli bir süre boyunca işlem yapmaması için) sırasında, daha düşük bir biyometrik sınıfın diğer tüm biyometrilerinin de kilitlenmesi ZORUNLUDUR. Zaman sınırlamalı elektrik kesintisi durumunda, biyometrik doğrulama için geri yükleme süresinin, zaman sınırlamalı kilitlenme sırasında tüm biyometriler için maksimum geri yükleme süresi OLMALIDIR.
[C-SR-12] Biyometri kilitli olduğunda (kullanıcı, birincil kimlik doğrulamayla kilidi açana kadar biyometri devre dışı bırakıldığında) veya çok fazla başarısız deneme nedeniyle biyometri, kullanıcı belirli bir zaman aralığı bekleyene kadar geçici olarak devre dışı bırakıldığında (ör. biyometri, kullanıcı belirli bir zaman aralığı bekleyene kadar devre dışı bırakıldığında), aynı biyometri sınıfına ait diğer tüm biyometri sınıflarını da bloke etmek için ÖNEMLE ÖNERİLİR. Erişim süresi sınırlı olduğunda biyometrik doğrulama için geri yükleme süresinin, zaman sınırlamalı tüm biyometriler için maksimum geri yükleme süresi olması ÖNERİLİR.
[C-7-2], biyometrinin kilitlenmesi durumunda kilit sayacını sıfırlamak için kullanıcıdan önerilen birincil kimlik doğrulamasını (ör. PIN, desen, şifre) istemesi GEREKİR. 3. Sınıf biyometrilerin, aynı veya daha düşük sınıfa ait kilitli bir biyometri için kilitlenme sayacını sıfırlamasına izin VERİLMEZ. Sınıf 2 veya Sınıf 1 biyometri verilerinin, herhangi bir biyometri için sıfırlama işlemi tamamlamasına İZİN VERİLMEMELİDİR.
Yeni şartları sonlandırma
- [C-SR-3] Kimlik doğrulama başına yalnızca bir biyometrinin onaylanmasını zorunlu kılmak ÖNERİLİR (ör. cihazda hem parmak izi hem de yüz sensörü varsa onAuthenticationSucceeded herhangi biri onaylandıktan sonra gönderilmelidir).
Cihaz uygulamalarının üçüncü taraf uygulamalara anahtar deposu anahtarlarına erişime izin vermesi için:
- [C-6-1], aşağıdaki bölümde açıklanan Sınıf 3 şartlarını karşılamalıdır.
- Kimlik doğrulama için BIOMETRIC_STRONG gerekiyorsa veya kimlik doğrulama bir CryptoObject ile çağrıldığında [C-6-2] yalnızca 3. Sınıf biyometri verilerinin sunulması ZORUNLUDUR.
Cihaz uygulamaları bir biyometrik sensörü 1. Sınıf (eski adıyla Kolay) olarak değerlendirmek istiyorsa:
- [C-1-1] %0,002'den az yanlış kabul oranı OLMALIDIR.
- [C-1-2] bu modun güçlü bir PIN, desen veya şifreden daha az güvenli olabileceğini açıklaması ve Android Biyometri Test Protokolleri tarafından ölçülen adres sahteciliği ve sahte kabul oranlarının% 7'nin üzerinde olması halinde bu modun etkinleştirilmesinin risklerini açıkça belirtmesi ZORUNLUDUR.
- [C-1-9] Önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için kullanıcıyı, en fazla yirmi yanlış deneme ve biyometrik doğrulama için doksan saniyelik geri yükleme süresi sonrasında (BIOMETRIC_ACQUIRED_GOOD), kayıtlı biyometriye uymayan yeterli yakalama kalitesine (BIOMETRIC_ACQUIRED_GOOD) sahip kullanıcının sorgulaması ZORUNLUDUR.
- [C-SR-4] Android Biyometri Test Protokollerine göre sahte ve sahtecilik konulu kabul oranları% 7'nin üzerindeyse [C-1-9] maddesinde belirtilen biyometrik doğrulama için toplam sahte deneme sayısını azaltması ÖNERİLİR.
- [C-1-3] Biyometrik doğrulama için hız sınırlaması denemeleri ZORUNLUDUR. Bu durumda sahte deneme, kayıtlı bir biyometri ile eşleşmeyen yeterli yakalama kalitesine (
BIOMETRIC_ACQUIRED_GOOD
) sahiptir. - [C-SR-5] Biyometrik doğrulama için beş yanlış denemeden sonra [C-1-9] başına maksimum yanlış deneme sayısı için en az 30 saniye boyunca hız sınırlamasını en az 30 saniye boyunca sınırlandırmanız ÖNERİLİR. Bu durumda sahte deneme, kayıtlı bir biyometri ile eşleşmeyen yeterli bir yakalama kalitesine (BIOMETRIC_ACQUIRED_GOOD) sahip anlamına gelir.
- [C-SR-6] TEE'de tüm hız sınırlama mantığına sahip olması ÖNEMLE ÖNERİLİR.
[C-1-10] Bölüm 9.11'deki [C-0-2] bölümünde açıklandığı gibi, birincil kimlik doğrulama geri yüklemesi ilk kez tetiklendikten sonra biyometrinin devre dışı bırakılması ZORUNLUDUR.
[C-1-11] Adres sahteciliği ve sahte kabul oranının %30'un üzerinde olmaması ZORUNLUDUR. (1) A Düzeyi sunum saldırı aracı (PAI) türleri için sahte ve sahte kabul oranı %30'un üzerinde değildir; (2) Protokol P4. Seviyeye göre Protokol türü PAI0'a göre daha yüksek bir sahtecilik ve sahte kabul oranıdır.
[C-1-4] Kullanıcının bir güven zinciri oluşturmadan önce yeni biyometri eklenmesinin önlenmesi veya TEE tarafından korunan yeni bir cihaz kimlik bilgisi (PIN/desen/şifre) eklemesi ya da Android Açık Kaynak Projesi'nin uygulanması çerçeve içinde bunu sağlayacak mekanizmayı sağlar.
[C-1-5] Bir kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama işlemi dahil) kullanıcıya ait tüm tanımlayıcı biyometrik verilerin tamamen kaldırılması ZORUNLUDUR.
[C-1-6] söz konusu biyometrinin bağımsız işaretine (ör.
DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT
,DevicePolicymanager.KEYGUARD_DISABLE_FACE
veyaDevicePolicymanager.KEYGUARD_DISABLE_IRIS
) ait olması ZORUNLUDUR.[C-1-7] 24 saatte bir veya daha kısa bir süre içinde bir kullanıcıyı önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için sınaması ZORUNLUDUR. Not: Android 9 veya daha eski sürümlerde kullanıma sunulan cihazların yeni sürüme geçirilmesi durumunda, 72 saatte bir veya daha kısa bir süre içinde kullanıcının önerilen birincil kimlik doğrulaması (ör. PIN, desen, şifre) için zorlanması ZORUNLUDUR.
[C-1-8] aşağıdakilerden birini yaptıktan sonra kullanıcıyı, önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) veya Sınıf 3 (GÜÇLÜ) biyometri için sorgulamalıdır:
- 4 saatlik boşta kalma zaman aşımı süresi VEYA
- 3 başarısız biyometrik kimlik doğrulama denemesi.
- Boşta kalma zaman aşımı süresi ve başarısız kimlik doğrulama sayısı, cihaz kimlik bilgileri başarıyla onaylandıktan sonra sıfırlanır. Not: Android 9 veya önceki sürümlerde kullanıma sunulan cihazların yeni sürüme geçirilmesi, C-1-8 sürümünden muaf tutulabilir.
[C-SR-7] Yeni cihazlar için [C-1-7] ve [C-1-8]'de belirtilen kısıtlamaları uygulamak amacıyla Android Açık Kaynak Projesi tarafından sağlanan çerçevedeki mantığı kullanması ÖNEMLE ÖNERİLİR.
[C-SR-8] Cihazda ölçüldüğü şekliyle yanlış ret oranının %10'dan az olması ÖNEMLE ÖNERİLİR.
[C-SR-9] Kayıtlı her biyometri için biyometrinin algılandığı andan ekranın kilidi açılana kadar ölçülen 1 saniyeden az bir gecikme olması ÖNEMLE ÖNERİLİR.
Yeni koşullarla başlayın
[C-1-12] Android Biyometri Test Protokolleri tarafından ölçülen sunum başına saldırı aracı (PAI) türü üzerinden sahte ve sahte kabul oranının %40'ın üzerinde olmaması ZORUNLUDUR.
[C-SR-13] Android Biyometri Test Protokolleri tarafından ölçülen sunum başına saldırı aracı (PAI) türü tarafından sahte ve sahtecilik konulu kabul oranının% 30'un üzerinde olmaması ÖNERİLİR.
[C-SR-14] Biyometrik sensörün biyometrik sınıfını ve bu özelliği etkinleştirmenin getirdiği riskleri açıklamanız ÖNEMLE ÖNERİLİR.
[C-SR-17] Yeni AIDL arayüzlerinin (
IFace.aidl
veIFingerprint.aidl
gibi) uygulanması için ÖNEMLE ÖNERİLİR.
Yeni şartları sonlandırma
Cihaz uygulamaları bir 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şılamalıdır.
[C-2-2] Sahte ve sahte kabul oranının %20'nin üzerinde olmaması ZORUNLUDUR. (1) A Seviyesi sunum aracı (PAI) türleri için sahte ve sahte kabul oranı %20'den yüksek değildir ve (2) Protokol PAI'nin Test Seviyesi'ne göre %0'ın üzerinde sahte ve sahte kabul oranı ölçülmüştür.
Yeni koşullarla başlayın
- [C-SR-15] Android Biyometri Test Protokolleri tarafından ölçülen sunum saldırı aracı (PAI) türü başına sahte ve sahtecilik konulu kabul oranının% 20'den yüksek olmaması ÖNERİLİR.
Yeni şartları sonlandırma
- [C-2-3] biyometrik eşleştirmeyi, Güvenilir Yürütme Ortamı (TEE) gibi Android kullanıcı veya çekirdek alanı dışındaki izole bir yürütme ortamında
ya daizole yürütme ortamına güvenli kanalı olan bir çipte ya da Bölüm 9.17'deki gereksinimleri karşılayan Korumalı Sanal Makine'de gerçekleştirmesi ZORUNLUDUR. - [C-2-4] tüm tanımlanabilir verilerin şifrelenmiş ve kriptografik olarak doğrulanmış olması gerekir. Bu sayede, izole yürütme ortamının dışında toplanamaz, okunamaz veya değiştirilemez ya da Android Açık Kaynak Proje sitesindeki uygulama yönergelerinde belirtildiği gibi güvenli kanalı olan bir çipe veya 9. Bölüm'deki hipervizör tarafından kontrol edilen Korumalı Sanal Makine'de belirtilen Korumalı Sanal Makine'ye erişilebilir.
- [C-2-5] Kamera tabanlı biyometri için biyometrik kimlik doğrulama veya kayıt işlemi yapılır:
- Kamerayı, kamera çerçevelerinin izole yürütme ortamının dışında okunmasını veya değiştirilmesini önleyecek bir modda veya izole yürütme ortamına güvenli kanalı olan bir çipte veya Bölüm 9.17'deki gereksinimleri karşılayan hipervizör tarafından kontrol edilen Korumalı Sanal Makine'nin dışında çalıştırmanız ZORUNLUDUR.
- RGB tek kameralı çözümlerinde kamera çerçeveleri, kayıt için önizleme gibi işlemleri desteklemek amacıyla izole yürütme ortamının dışında okunabilir, ancak yine de değiştirilebilir OLMAMALIDIR.
- [C-2-6] Üçüncü taraf uygulamalarının, ayrı biyometrik kayıtları birbirinden ayırt etmesine izin VERMEMELİDİR.
- [C-2-7] Tanımlanabilir biyometrik verilere veya bunlardan elde edilen herhangi bir veriye (yerleştirmeler gibi) 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 İşleyici'ye şifrelenmemiş erişime İZİN VERİLMEMELİDİR. Android 9 veya önceki sürümlerde kullanıma sunulan cihazların yeni sürüme geçirilmesi, C-2-7'den muaf tutulmaz.
[C-2-8], güvenli bir işleme ardışık düzenine sahip olmalıdır. Öyle ki, işletim sistemi veya çekirdek güvenlik ihlali, yanlışlıkla kullanıcı kimliğini doğrulamak için verilerin doğrudan yerleştirilmesine izin veremez. Not: Android 9 veya daha eski sürümlerde zaten kullanıma sunulan cihaz uygulamaları ve sistem yazılımı güncellemesi yoluyla C-2-8 gereksinimini karşılayamıyorsa bu uygulama zorunluluktan muaf tutulabilir.
[C-SR-10] Tüm biyometrik yöntemler için canlılık algılama ve Yüz biyometrisi için dikkat algılamayı içermesi ÖNEMLE ÖNERİLİR.
[C-2-9] Biyometrik sensörün üçüncü taraf uygulamalarının kullanımına sunulması ZORUNLUDUR.
Cihaz uygulamaları bir biyometrik sensörü Sınıf 3 (eski adıyla Güçlü) olarak işlemek istiyorsa:
- [C-3-1], [C-1-7] ve [C-1-8] hariç yukarıdaki 2. Sınıf'ın tüm şartlarını karşılamalıdır.
- [C-3-2] Donanım destekli bir anahtar deposu uygulaması ZORUNLUDUR.
- [C-3-3] Sahte ve sahte kabul oranının %7'nin üzerinde olmaması ZORUNLUDUR. (1) A Seviye A sunum saldırı aracı (PAI) türleri için sahte ve sahte kabul oranı %7'nin üzerinde değildir ve (2) Protokol B PAI0 türlerinin %7'sinden daha yüksek olmayan Protokol ve sahtekârlık kabul oranı %7'den fazladır.
- [C-3-4] 72 saatte bir veya daha kısa bir süre içinde kullanıcıyı önerilen birincil kimlik doğrulaması için (ör. PIN, desen, şifre) zorlayın.
- [C-3-5] cihazından desteklenen tüm 3. Sınıf biyometri verileri için Authenticator Kimliği'ni yeniden oluşturması GEREKİR.
- [C-3-6] Üçüncü taraf uygulamalara biyometrik destekli anahtar deposu anahtarları etkinleştirilmelidir.
Yeni koşullarla başlayın
- [C-SR-16] Android Biyometri Test Protokolleri tarafından ölçülen sunum başına saldırı aracı (PAI) türlerindeki sahte ve sahtecilik konulu kabul oranının% 7'den yüksek olmaması ÖNEMLE ÖNERİLİR.
Yeni şartları sonlandırma
Cihaz uygulamaları, ekranın altı parmak izi sensörü (UDFPS) içeriyorsa:
- [C-SR-11] UDFPS'nin dokunulabilir alanının 3 düğmeli gezinmeyi engellemesi için ÖNEMLE ÖNERİLİR( bazı kullanıcılar erişilebilirlik amacıyla buna ihtiyaç duyabilir).
7.3.11. Poz Sensörü
Cihaz uygulamaları:
- 6 serbestlik derecesine sahip poz sensörünü destekleyebilir.
Cihaz uygulamaları, 6 serbestlik derecesine sahip poz sensörünü destekliyorsa:
- [C-1-1]
TYPE_POSE_6DOF
sensörünü uygulamalı ve bildirmeli. - [C-1-2], tek başına döndürme 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]
TYPE_HINGLE_ANGLE
uygulamasının uygulanması ve bildirilmesi GEREKİR. - [C-1-2], 0 ile 360 derece arasında (0 ve 360 derece dahil) en az iki ölçümü desteklemelidir.
- [C-1-3]
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)
için bir 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şlevi üçüncü taraf bir uygulamaya sunuyorsa:
Yeni koşullarla başlayın
- [C-1-2], donanım özelliği bayrağı
android.hardware.uwb
Bildirilmelidir. - [C-1-3], AOSP uygulamasında tanımlanan aşağıdaki tüm yapılandırma kümelerini (FIRA UCI parametrelerinin önceden tanımlanmış kombinasyonları) DESTEKLEMELİDİR.
CONFIG_ID_1
: FiRa tarafından tanımlanmış tek yayın,STATIC STS DS-TWR
aralığı, ertelenmiş mod, 240 ms aralıklı.CONFIG_ID_2
: FiRa tarafından tanımlanmış bire-çokSTATIC STS DS-TWR
aralığı, ertelenmiş mod, 200 ms aralıklı aralık. Tipik kullanım alanı: Akıllı telefon birçok akıllı cihazla etkileşim kurar.CONFIG_ID_3
:CONFIG_ID_1
ile aynıdır ancak Varış Açısı (AoA) verileri raporlanmaz.CONFIG_ID_4
: P-STS güvenlik modunun etkinleştirilmesi dışındaCONFIG_ID_1
ile aynıdır.CONFIG_ID_5
: P-STS güvenlik modunun etkinleştirilmesi dışındaCONFIG_ID_2
ile aynıdır.CONFIG_ID_6
: P-STS güvenlik modunun etkinleştirilmesi dışındaCONFIG_ID_3
ile aynıdır.CONFIG_ID_7
: P-STS bağımsız kontrol anahtarı modu hariçCONFIG_ID_2
ile aynıdır.
- [C-1-4], kullanıcının ultra geniş bant radyoyu açma/kapatma durumunu devre dışı bırakmasına izin vermek üzere bir kullanıcıya olanak sağlaması GEREKİR.
- [C-1-5], ultra geniş bant radyo kullanan uygulamaların
UWB_RANGING
iznine (NEARBY_DEVICES
izin grubunun altında) sahip olmasını ZORUNLUDUR.
FIRA, CCC ve CSA gibi standart kuruluşlar tarafından tanımlanan ilgili uygunluk ve sertifika testlerini geçmek, 802.1.15.4 işlevlerinin doğru şekilde sağlanmasına yardımcı olur.
Yeni şartları sonlandırma
7.4. Veri Bağlantısı
7.4.1. Telefon Hizmeti
Android API'ları tarafından kullanıldığı şekliyle "telefon" ve bu dokümanda özellikle sesli çağrı yapma ve SMS mesajı gönderme veya bir mobil cihaz (ör. GSM, CDMA, LTE, NR)GSM ya da CDMA ağı ile mobil veri oluşturma ile ilgili donanımla ilgilidir. "Telefon"u destekleyen bir cihaz, arama, mesajlaşma ve veri hizmetlerinin bir kısmını veya tamamını ürüne uygun şekilde sunmayı seçebilir.
GSM veya CDMA ağı üzerinden. Bu sesli aramalar paket anahtarlı olabilir veya olmayabilir,ancak aynı ağ kullanılarak uygulanabilecek herhangi bir veri bağlantısından bağımsız olarak Android'in amaçları doğrultusunda kullanılır. Diğer bir deyişle,Android "telefon" işlevi ve API'leri özellikle sesli aramaları ve SMS'leri ifade eder. Örneğin, arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarına bakılmaksızın telefon cihazı olarak kabul edilmez.
- Android, telefon donanımı bulunmayan cihazlarda KULLANILABİLİR. Yani Android, telefon dışındaki 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 beyan etmelidir. - [C-1-2] bu teknolojiye yönelik API için tam destek uygulaması ZORUNLUDUR.
- 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], tüm API'leri işlemsiz olarak uygulaması ZORUNLUDUR.
Cihaz uygulamaları, eUICC'leri veya eSIM'leri/yerleştirilmiş SIM'leri destekliyorsa ve eSIM işlevini üçüncü taraf geliştiricilerin kullanımına sunmak için özel bir mekanizma içeriyorsa:
- [C-3-1],
android.hardware.telephony.euicc
özellik bayrağını beyan etmelidir.
Cihaz uygulamaları, ro.telephony.iwlan\_operation\_mode
sistem özelliğini "eski" olarak ayarlamazsa:
- [C-4-1], aynı NetworkRegistrationInfo örneği için NetworkRegistrationInfo#getTransportType() "TRANSPORT_TYPE_WWAN" olarak bildirildiğinde NetworkRegistrationInfo#getAccessNetworkTechnology() aracılığıyla "NETWORK_TYPE_IWLAN" HESABINI BİLDİRMEMELİDİR.
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ının kullanılmasıyla ilgili hücresel operatör gereksinimlerine uyması bekleniyorsa:
- [C-5-1] hem MMTEL hem de RCS User Capability Exchange API için
android.hardware.telephony.ims
özellik işaretini beyan etmeli ve ImsService API'nin eksiksiz bir uygulamasını sağlamalıdır. - [C-5-2]
android.hardware.telephony.ims.singlereg
özellik işaretini beyan etmeli ve SipTransport API'nin, GbaService API'nin, IRadio 1.6 HAL kullanan özel hamile göstergelerinin ve IMS Configuration API'yi kullanarak Otomatik Yapılandırma Sunucusu (ACS) ya da diğer özel temel hazırlık mekanizması aracılığıyla temel hazırlık mekanizmasının eksiksiz bir şekilde uygulanması GEREKİR.
Cihaz uygulamaları android.hardware.telephony
özelliğini bildiriyorsa:
- [C-6-1]
SmsManager#sendTextMessage
veSmsManager#sendMultipartTextMessage
, kısa mesaj işlevini sağlamak içinCarrierMessagingService
çağrısına karşılık gelmelidir.SmsManager#sendMultimediaMessage
veSmsManager#downloadMultimediaMessage
Multimedya mesajlaşma işlevini sağlamak içinCarrierMessagingService
çağrılarının sonuçlandırılması ZORUNLUDUR. - [C-6-2]
android.provider.Telephony.Sms#getDefaultSmsPackage
tarafından belirlenen uygulamanın SMS ve MMS mesajları gönderip alırken SmsManager API'lerini kullanması ZORUNLUDUR. Paketler/uygulamalar/Mesajlaşma'daki AOSP referansı uygulaması bu şartı karşılar. - [C-6-3]
Intent#ACTION_DIAL
işlemine yanıt veren uygulamanın,*#*#CODE#*#*
biçimindeki rastgele numara çevirici kodlarının girilmesini desteklemesi ve ilgiliTelephonyManager#ACTION_SECRET_CODE
yayınını tetiklemesi ZORUNLUDUR. - [C-6-4]
Intent#ACTION_DIAL
numarasına yanıt veren uygulamanın, görsel sesli mesaj transkriptlerini desteklemesi durumunda kullanıcılara görsel sesli mesaj transkriptini göstermek içinVoicemailContract.Voicemails#TRANSCRIPTION
kullanılması ZORUNLUDUR. - [C-6-5], SIM kart bilgilerini görüntüleyen ve kontrol eden, kullanıcının görebildiği tüm fırsatlarda eşdeğer grup UUID'lerine sahip tüm SubscriptionInfo öğelerini tek bir abonelik olarak temsil etmelidir. Bu tür olanaklara örnek olarak
Settings#ACTION_MANAGE_ALL_SIM_PROFILES_SETTINGS
veyaEuiccManager#ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS
ile eşleşen ayar arayüzleri verilebilir. - [C-6-6] SIM kart ayarlarının yapılandırılmasına veya kontrol edilmesine izin veren, kullanıcı tarafından görülebilen hiçbir fırsatta boş olmayan bir grup UUID'si ve fırsatsal bit içeren herhangi bir SubscriptionInfo'yu görüntüleme veya kontrolüne izin VERMEMELİDİR.
Cihaz uygulamaları android.hardware.telephony
özelliğini bildiriyor ve bir sistem durum çubuğu sağlıyorsa:
- [C-7-1], SIM durumu bilgilerini sağlayan tüm uygun şartlarda kullanıcıya görüntülenmek üzere belirli bir grup UUID'si için temsili etkin bir abonelik seçilmesi ZORUNLUDUR. Bu tür olanaklara örnek olarak durum çubuğu hücresel sinyal simgesi veya hızlı ayarlar kutusu verilebilir.
- [C-SR-1] Cihaz bir sesli aramada olmadığı sürece temsilci aboneliğinin etkin veri aboneliği olarak seçilmesi ÖNEMLE ÖNERİLİR. Bu sırada temsilci aboneliğin etkin Voice aboneliği olması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları android.hardware.telephony
özelliğini bildiriyorsa:
- [C-6-7] ETSI TS 102 221 uyarınca her bir UICC için maksimum mantıksal kanal sayısını (toplamda 20) açma ve eşzamanlı olarak kullanabilme imkanı OLMALIDIR.
- [C-6-8] aşağıdaki davranışlardan herhangi birini etkin operatör uygulamalarına (
TelephonyManager#getCarrierServicePackageName
tarafından belirlenen şekilde) otomatik olarak veya kullanıcıdan açık bir şekilde onay alınmadan UYGULAMAMALIDIR:- Ağ erişimini iptal etme veya sınırlama
- İzinleri iptal et
- AOSP'deki mevcut güç yönetimi özelliklerinin ötesinde arka planda veya ön planda uygulama yürütmeye yönelik kısıtlama
- Uygulamayı devre dışı bırakma veya kaldırma
Cihaz uygulamaları android.hardware.telephony
özelliğinin yanı sıra bir grup UUID'sini paylaşan tüm etkin, fırsat dışı olmayan abonelikler devre dışı bırakılmış, fiziksel olarak cihazdan kaldırılmış veya fırsata uygun olarak işaretlenmişse cihaz:
- [C-8-1] Aynı grupta kalan tüm etkin fırsatlara ait aboneliklerin otomatik olarak devre dışı bırakılması ZORUNLUDUR.
Cihaz uygulamaları GSM telefonlarını içeriyor ancak CDMA telefon özelliğini içermiyorsa:
- [C-9-1],
PackageManager#FEATURE_TELEPHONY_CDMA
ifadesini BELİRTMEMELİDİR. - [C-9-2], tercih edilen veya izin verilen ağ türü bit maskelerinde herhangi bir 3GPP2 ağ türünü ayarlama girişiminde
IllegalArgumentException
İŞARETLEMELİDİR. - [C-9-3],
TelephonyManager#getMeid
öğesinden boş bir dize döndürmelidir.
Cihaz uygulamaları, birden fazla bağlantı noktası ve profil içeren eUICC'leri destekliyorsa:
- [C-10-1],
android.hardware.telephony.euicc.mep
özellik bayrağını beyan etmelidir.
7.4.1.1. Numara Engelleme Uyumluluğu
Cihaz uygulamaları android.hardware.telephony.calling
özelliğini bildirirse:
- [C-1-1] Numara engelleme desteği İÇERMELİDİR
- [C-1-2],
BlockedNumberContract
ve ilgili API'yi SDK dokümanlarında açıklandığı gibi tam olarak uygulamalıdır. [C-1-3], uygulamalarla etkileşime girmeden "BlockedNumberProvider" içindeki bir telefon numarasından gelen tüm çağrıları ve mesajları engellemelidir. Bunun tek istisnası, SDK belgelerinde açıklandığı gibi numara engellemenin geçici olarak kaldırılmasıdır.
[C-1-4] engellenen bir arama için platform arama kaydı sağlayıcısına yazmalı ve önceden yüklenmiş çevirici uygulamasında varsayılan arama kaydı görünümünün dışında aramaları
BLOCKED_TYPE
ile filtrelemelidir.[C-1-5], engellenen bir mesaj için Telefon hizmeti sağlayıcısına YAZMAMALIDIR.
[C-1-6],
TelecomManager.createManageBlockedNumbersIntent()
yöntemi tarafından döndürülen amaç ile açılan bir engellenen sayılar yönetimi kullanıcı arayüzü uygulamalıdır.[C-1-7] Android platformu birincil kullanıcının cihazda telefon hizmetlerinin tüm kontrolünün, tek bir örnek olduğunu varsaydığından, ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine izin VERMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzünün ikincil kullanıcılar için gizlenmesi ve engellenenler listesine yine de uyulması ZORUNLUDUR.
Bir cihaz Android 7.0 sürümüne güncellendiğinde, engellenen numaraları sağlayıcıya taşınması GEREKİR.
Engellenen aramaları, önceden yüklü numara çevirici uygulamasında göstermek için bir kullanıcıya yardımcı olabilmeleri GEREKİR.
7.4.1.2. Telekom API'sı
Cihaz uygulamaları android.hardware.telephony.calling
bildiriminde bulunursa:
- [C-1-1], SDK'da açıklanan
ConnectionService
API'lerini DESTEKLEMELİDİR. - [C-1-2], yeni bir gelen aramayı görüntülemeli ve kullanıcı
CAPABILITY_SUPPORT_HOLD
aracılığıyla belirtilen bekletme özelliğini desteklemeyen bir üçüncü taraf uygulaması tarafından devam eden bir arama devam ederken gelen aramayı kabul etmeli veya reddetmelidir. - [C-1-3] InCallService kullanan bir uygulamaya sahip olması ZORUNLUDUR.
[C-SR-1] Gelen bir aramayı yanıtladığında devam eden aramayı sonlandıracağını kullanıcıya bildirmek için ÖNEMLE ÖNERİLİR.
AOSP uygulaması, gelen bir aramayı yanıtlamanın diğer çağrının iptal edilmesine neden olacağını kullanıcıya bildiren bir uyarı bildirimiyle bu şartları karşılar.
[C-SR-2] Üçüncü taraf uygulaması,
PhoneAccount
cihazındakiEXTRA_LOG_SELF_MANAGED_CALLS
ek anahtarınıtrue
olarak ayarladığında, çağrı günlüğü girişini ve çağrı günlüğünde bir üçüncü taraf uygulamasının adını gösteren varsayılan çevirici uygulamasının önceden yüklenmesi ÖNERİLİR.[C-SR-3] Mikrofonlu kulaklığın
KEYCODE_MEDIA_PLAY_PAUSE
veKEYCODE_HEADSETHOOK
etkinlikleriniandroid.telecom
API'leri için aşağıdaki gibi işlemek üzere ÖNEMLE ÖNERİLİR:- Devam eden bir arama sırasında önemli etkinliğe kısa bir kez basıldığı algılandığında
Connection.onDisconnect()
numaralı telefonu çağırın. - Gelen bir arama sırasında önemli etkinliğe kısa bir kez basıldığı algılandığında
Connection.onAnswer()
numaralı telefonu çağırın. - Gelen bir arama sırasında önemli etkinliğe uzun bir süre basıldığı algılandığında
Connection.onReject()
numaralı telefonu çağırın. CallAudioState
için yoksayma durumunu değiştirin.
- Devam eden bir arama sırasında önemli etkinliğe kısa bir kez basıldığı algılandığında
7.4.1.3. Hücresel NAT-T Keepalive Aktarımı
Cihaz uygulamaları:
- Hücresel keepalive boşaltma desteği İÇERMELİDİR.
Cihaz uygulamaları, Hücresel keepalive boşaltma desteği içeriyorsa ve işlevi üçüncü taraf uygulamalarına gösteriyorsa:
- [C-1-1] SocketKeepAlive API'yi DESTEKLEMELİDİR.
- [C-1-2] Hücresel ağ üzerinden en az bir eşzamanlı keepalive yuvasını DESTEKLEMELİDİR.
- [C-1-3], Hücresel Radyo HAL'nin desteklediği, eş zamanlı olarak en fazla sayıda hücresel keepalive yuvasını DESTEKLEMELİDİR.
- [C-SR-1] Radyo örneği başına en az üç hücresel keepalive alanını desteklemesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları hücresel keepalive boşaltma desteği içermiyorsa:
- [C-2-1] ERROR_UNSUPPORTED döndürmelidir.
7.4.2. IEEE 802.11 (Kablosuz)
Cihaz uygulamaları:
- 802.11'in bir veya daha fazla biçimi için destek İÇERMELİDİR.
Cihaz uygulamaları, 802.11 desteği içeriyorsa ve işlevi üçüncü taraf bir uygulamaya sunuyorsa:
- [C-1-1] İlgili Android API'sinin uygulanması ZORUNLUDUR.
- [C-1-2], donanım özelliği bayrağı
android.hardware.wifi
Bildirilmelidir. - [C-1-3], çoklu yayın API'sini SDK dokümanlarında açıklandığı gibi uygulaması ZORUNLUDUR.
- [C-1-4] çoklu yayın DNS'yi (mDNS) DESTEKLEMELİ ve mDNS paketlerini
(224.0.0.251 veya ff02::fb)
filtrelememelidir. Buna, ekranın etkin durumda olmadığı zamanlar (bu paketlerin düşürülmesi veya filtrelenmesi, düzenleyici pazar için geçerli olan güç tüketim aralıkları için gerekli olmadığı sürece) dahildir.
Bekleme gücü durumlarında bile Android Televizyon cihazı uygulamalarında. - [C-1-5]
WifiManager.enableNetwork()
API yöntem çağrısını, uygulama trafiği için varsayılan olarak kullanılan vegetActiveNetwork
ileregisterDefaultNetworkCallback
gibiConnectivityManager
API yöntemleri tarafından döndürülen mevcut durumda etkin olanNetwork
ayarının değiştirilmesi için yeterli bir gösterge olarak SAYILMAMALIDIR. Diğer bir deyişle, başka bir ağ sağlayıcısı (ör. mobil veri) tarafından sağlanan internet erişimini yalnızca kablosuz ağın internet erişimi sağladığını başarılı bir şekilde doğrularsa devre dışı bırakabilirler. - [C-1-6]
ConnectivityManager.reportNetworkConnectivity()
API yöntemi çağrıldığında,Network
üzerindeki internet erişimini yeniden değerlendirin ve değerlendirme sonucundaNetwork
ürününün artık internet erişimi sağlamadığı belirlendiğinde internet erişimi sağlayan başka bir ağa (ör. mobil veri) geçiş yapın. - [C-1-7], STA bağlantısı kesildiğinde, kaynak MAC adresini ve yoklama isteği çerçevelerinin sıra numarasını rastgele her taramanın başında bir kez rastgele hale getirmelidir.
- [C-1-8] tek bir tutarlı MAC adresi kullanmalıdır (Tarama işleminin ortasında MAC adresi rastgele KULLANILMAMALIDIR).
- [C-1-9] bir taramada yoklama istekleri arasında normal şekilde (sıralı olarak) yoklama isteği sıra numarasını yinelemelidir.
- [C-1-10] Bir taramanın son yoklama isteği ile bir sonraki taramanın ilk yoklama isteği arasında Prob isteği sıra numarasını rastgele hale getirmesi ZORUNLUDUR.
- [C-SR-1] Bir Erişim Noktasıyla (AP) ilişkilendirme ve ilişkilendirme sırasında tüm STA iletişimlerinde kullanılan kaynak MAC adresinin rastgele hale getirilmesi ÖNERİLİR.
- Cihazın iletişim kurduğu her SSID (Passpoint için FQDN) için farklı rastgele bir MAC adresi kullanması ZORUNLUDUR.
- Cihazın, kullanıcıya rastgele olmayan ve rastgele seçeneklerle SSID (Passpoint için FQDN) başına rastgele hale getirmeyi kontrol etme seçeneği sunması ve yeni kablosuz ağ yapılandırmalarının rastgele hale getirilmesi için varsayılan modun ayarlanması GEREKİR.
- [C-SR-2] Oluşturdukları herhangi bir AP için rastgele bir BSSID kullanmaları ÖNEMLE ÖNERİLİR.
- MAC adresi, AP tarafından kullanılan SSID'ye göre rastgele belirlenmeli ve kalıcı hale getirilmelidir.
- CİHAZ, kullanıcıya bu özelliği devre dışı bırakma seçeneği sağlayabilir. Böyle bir seçenek sağlanırsa rastgele hale getirmenin varsayılan olarak etkinleştirilmiş olması ZORUNLUDUR.
Cihaz uygulamaları, IEEE 802.11 standardında tanımlandığı gibi kablosuz güç tasarrufu modu desteği içeriyorsa:
- Bir uygulama
WifiManager.createWifiLock()
veWifiManager.WifiLock.acquire()
API'leri aracılığıylaWIFI_MODE_FULL_HIGH_PERF
kilidi veyaWIFI_MODE_FULL_LOW_LATENCY
kilidi edindiğinde ve kilit etkin olduğunda kablosuz güç tasarrufu modunu KAPATMAYIN. - [C-3-2] Cihaz, Kablosuz Düşük Gecikme Kilidi'ndeyken cihaz ile erişim noktası arasındaki ortalama gidiş dönüş gecikmesinin
(
WIFI_MODE_FULL_LOW_LATENCY
) modu, Kablosuz Yüksek Perf Kilidi (WIFI_MODE_FULL_HIGH_PERF
) modu sırasındaki gecikmeden küçük olması ZORUNLUDUR. - [C-SR-3] Düşük Gecikme Kilidi (
WIFI_MODE_FULL_LOW_LATENCY
) alındığında ve geçerli olduğunda kablosuz gidiş dönüş gecikmesini en aza indirmek için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları kablosuz bağlantıyı destekliyorsa ve konum taraması için kablosuz ağ kullanıyorsa:
- [C-2-1],
WifiManager.isScanAlwaysAvailable
API yöntemiyle okunan değeri etkinleştirmek/devre dışı bırakmak için bir kullanıcıya uygun işlem gerçekleştirmesi ZORUNLUDUR.
7.4.2.1. Kablosuz Doğrudan Bağlantı
Cihaz uygulamaları:
- Kablosuz Doğrudan Bağlantı (eşler arası kablosuz) desteği İÇERMELİDİR.
Kablosuz Doğrudan Bağlantı desteği içeren cihaz uygulamaları:
- [C-1-1], SDK dokümanlarında açıklandığı şekilde ilgili Android API'yi uygulamalıdır.
- [C-1-2]
android.hardware.wifi.direct
donanım özelliğini bildirmesi GEREKİR. - [C-1-3] normal kablosuz işlemini DESTEKLEMELİDİR.
- [C-1-4] Kablosuz ve Doğrudan Kablosuz İşlemleri aynı anda DESTEKLEMELİDİR.
- [C-SR-1] Yeni oluşturulan tüm Kablosuz Doğrudan bağlantılar için kaynak MAC adresini rastgele hale getirmesi ÖNERİLİR.
7.4.2.2. Kablosuz Tünelli Doğrudan Bağlantı Kurulumu
Cihaz uygulamaları:
- Android SDK Dokümanlarında açıklandığı şekilde Kablosuz Tünelli Doğrudan Bağlantı Kurulumu (TDLS) desteği İÇERMELİDİR.
Cihaz uygulamaları, TDLS desteği içeriyorsa ve TDLS WiFiManager API tarafından etkinleştirildiyse:
- [C-1-1],
WifiManager.isTdlsSupported
tarihine kadar TDLS'yi desteklediğini beyan etmelidir. - TDLS'yi yalnızca mümkün VE yararlı olduğunda kullanın.
- Performansı, kablosuz erişim noktasından geçmeye kıyasla daha kötü olduğunda TDLS'nin biraz sezgisel olması gerekir.
7.4.2.3. Kablosuz Ağ Uyumlu
Cihaz uygulamaları:
- Wi-Fi Aware desteği GEREKİR.
Cihaz uygulamaları Wi-Fi Aware desteği içeriyorsa ve işlevi üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1],
WifiAwareManager
API'lerini SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR. - [C-1-2],
android.hardware.wifi.aware
özellik bayrağını beyan etmelidir. - [C-1-3] Kablosuz ve Wi-Fi Aware işlemlerini aynı anda DESTEKLEMELİDİR.
- [C-1-4] Kablosuz Aware yönetim arayüzü adresini 30 dakikadan uzun aralıklarla ve Kablosuz Aware özelliği etkinleştirildiğinde rastgele hale getirmesi ZORUNLUDUR.
Cihaz uygulamaları, Bölüm 7.4.2.5'te açıklandığı gibi Kablosuz Ağ Hassasiyeti ve Kablosuz Konum desteği içeriyorsa ve bu işlevler üçüncü taraf uygulamalarına gösteriliyorsa:
- [C-2-1], konuma duyarlı keşif API'lerini uygulaması ZORUNLUDUR: setRangingEnabled, setMinLengthMm, setMaxLengthMm ve onServiceExploreedWithinRange.
7.4.2.4. Kablosuz Ağ Şifre Noktası
Cihaz uygulamaları 802.11 (Kablosuz) desteği içeriyorsa:
- [C-1-1] Wi-Fi Passpoint desteği İÇERMELİDİR.
- [C-1-2] Passpoint ile ilişkili
WifiManager
API'lerini SDK belgelerinde açıklandığı şekilde uygulaması ZORUNLUDUR. - [C-1-3] Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi özellikle Ağ Keşfi ve Seçim ile ilişkili olan IEEE 802.11u standardını desteklemelidir.
- [C-1-4]
android.hardware.wifi.passpoint
özellik bayrağı BELİRTMELİDİR. - [C-1-5] Passpoint ağlarını keşfetmek, eşleştirmek ve ilişkilendirmek için AOSP uygulamasını takip etmelidir.
- [C-1-6], Wi-Fi Alliance Passpoint R2'de tanımlanan şekilde en az şu cihaz temel hazırlık protokollerini desteklemelidir: EAP-TTLS kimlik doğrulaması ve SOAP-XML.
- [C-1-7] AAA sunucu sertifikasını Hotspot 2.0 R3 spesifikasyonunda açıklandığı şekilde işlemesi GEREKİR.
- [C-1-8], kablosuz ağ seçici üzerinden sağlanan temel hazırlık işlemini kullanıcı kontrolünü DESTEKLEMELİDİR.
- [C-1-9] Passpoint yapılandırmalarını yeniden başlatmalar arasında kalıcı KORUMALIDIR.
- [C-SR-1] Hükümler ve koşulları kabul etme özelliğini desteklemesi için ÖNEMLE ÖNERİLİR.
- [C-SR-2] Mekan bilgisi özelliğini desteklemesi için ÖNEMLE ÖNERİLİR.
Genel bir Passpoint devre dışı bırakma kullanıcı kontrolü anahtarı sağlanırsa uygulamalar:
- [C-3-1] Passpoint'in varsayılan olarak etkinleştirilmesi ZORUNLUDUR.
7.4.2.5. Kablosuz Konum (Kablosuz Gidiş Dönüş Süresi - RTT)
Cihaz uygulamaları:
- Kablosuz Konum desteği İÇERMELİDİR.
Cihaz uygulamaları, Kablosuz Konum desteği içeriyorsa ve işlevi üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1],
WifiRttManager
API'lerini SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR. - [C-1-2],
android.hardware.wifi.rtt
özellik bayrağını beyan etmelidir. - [C-1-3], RTT'nin yürütüldüğü kablosuz ağ arayüzü bir Erişim Noktası ile ilişkili değilken yürütülen her RTT seri işlemi için kaynak MAC adresini rastgele hale getirmesi ZORUNLUDUR.
- [C-1-4] 68. yüzde birlik dilimde (Kümülatif Dağılım İşlevi ile hesaplandığı şekilde) 80 MHz bant genişliğinde 2 metreye kadar kesinliğe sahip olması ZORUNLUDUR.
- [C-SR-1] 68.yüzde birlik dilimde (Kümülatif Dağıtım İşlevi ile hesaplandığı şekilde) 80 MHz bant genişliğinde 1,5 metre içinde doğru bir şekilde raporlama için ÖNEMLE ÖNERİLİR.
7.4.2.6. Kablosuz Keepalive Yükleme
Cihaz uygulamaları:
- Wi-Fi keepalive boşaltma desteği İÇERMELİDİR.
Cihaz uygulamaları, Wi-Fi keepalive boşaltma 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] Kablosuz ağ üzerinden en az üç eşzamanlı keepalive yuvasını DESTEKLEMELİDİR
Cihaz uygulamaları Wi-Fi keepalive boşaltma desteği içermiyorsa:
- [C-2-1],
ERROR_UNSUPPORTED
YÜKLEMELİ.
7.4.2.7. Wi-Fi Easy Connect (Cihaz Temel Hazırlık Protokolü)
Cihaz uygulamaları:
- Wi-Fi Easy Connect (DPP) desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Easy Connect desteği içeriyorsa ve işlevleri üçüncü taraf uygulamalarında kullanıma sunuyorsa:
- [C-1-1], WifiManager#isEasyConnectSupported()
yönteminin dönüşü
true
OLMALIDIR.
7.4.2.8. Kurumsal Kablosuz Sunucu Sertifikası Doğrulama
Kablosuz sunucu sertifikası doğrulanmamışsa veya kablosuz sunucu alan adı ayarlanmamışsa cihaz uygulamaları:
- [C-SR-1] Kullanıcıya, Ayarlar uygulamasında Kurumsal Kablosuz ağı manuel olarak ekleme seçeneği sunulmaması ÖNEMLE ÖNERİLİR.
7.4.2.9. İlk Kullanımda Güven (TOFU)
Cihaz uygulamaları İlk kullanımda güven özelliğini (TOFU) 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 Kullanım Şartları'nı kullanma seçeneği sunmalıdı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
HFP, A2DP ve AVRCP'yi destekleyen cihaz uygulamaları:
- Toplamda en az 5 bağlı cihazı DESTEKLEMELİDİR.
Cihaz uygulamaları android.hardware.vr.high_performance
özelliğini
bildiriyorsa:
- [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı'nı DESTEKLEMELİDİR.
Android'de Bluetooth ve Bluetooth Düşük Enerji desteği vardır.
Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:
- [C-2-1], ilgili platform özelliklerini (sırasıyla
android.hardware.bluetooth
veandroid.hardware.bluetooth_le
) bildirmeli ve platform API'lerini uygulamalıdır. - A2DP, AVRCP, OBEX, HFP gibi ilgili Bluetooth profillerini cihaza uygun şekilde UYGULAMALIDIR.
Cihaz uygulamaları Bluetooth Düşük Enerji (BDE) desteği içeriyorsa:
- [C-3-1]
android.hardware.bluetooth_le
donanım özelliğinin beyan edilmesi ZORUNLUDUR. - [C-3-2], GATT (genel özellik profili) tabanlı Bluetooth API'lerini, SDK dokümanlarında ve android.bluetooth dokümanlarında açıklandığı şekilde 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 Enerji Reklamlarının desteklenip desteklenmediğini belirtmek için
BluetoothAdapter.isMultipleAdvertisementSupported()
için doğru değerin Bildirilmesi ZORUNLUDUR. [C-3-5], cihaz tarama veya reklam için etkin şekilde BDE kullandığında, kullanıcı gizliliğini korumak için 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulamalı ve adresi zaman aşımı olduğunda döndürmelidir. Zamanlama saldırılarını önlemek için zaman aşımı aralıklarının da 5 ile 15 dakika arasında rastgele belirlenmesi ZORUNLUDUR.
ScanFilter API uygulanırken filtreleme mantığının Bluetooth yonga setine boşaltılmasını DESTEKLEMELİDİR.
Toplu taramanın Bluetooth yonga setine boşaltılmasını DESTEKLEMELİDİR.
En az 4 alanlı çoklu reklamı DESTEKLEMELİDİR.
Cihaz uygulamaları Bluetooth LE'yi destekliyorsa ve konum tarama için Bluetooth LE'yi kullanıyorsa:
- [C-4-1], System API
BluetoothAdapter.isBleScanAlwaysAvailable()
üzerinden okunan değeri etkinleştirmek/devre dışı bırakmak için bir kullanıcıya destek sağlaması GEREKİR.
Cihaz uygulamaları, Bluetooth LE Kullanarak İşitme Cihazı Sesi 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çin
true
sonucunu döndürmelidir.
Cihaz uygulamaları Bluetooth veya Bluetooth Düşük Enerji desteği içeriyorsa:
- [C-6-1], istekte bulunan uygulama mevcut ön plan/arka plan durumuna göre bir
android.permission.ACCESS_FINE_LOCATION
izin kontrolünü başarıyla geçmediği sürece cihazın konumunu elde etmek için kullanılabilecek Bluetooth meta verilerine (tarama sonuçları gibi) erişimi kısıtlamalıdır.
Cihaz uygulamaları Bluetooth veya Bluetooth Düşük Enerji desteği içeriyorsa ve uygulama manifesti, geliştiricinin Bluetooth'tan konum elde etmediğini belirten bir beyanı içermiyorsa:
- [C-6-2],
android.permission.ACCESS_FINE_LOCATION
'in arkasından Bluetooth erişimini ZORUNLUDUR.
Cihaz uygulamaları BluetoothAdapter.isLeAudioSupported()
API için true
döndürürse:
- [C-7-1] unicast istemcisini DESTEKLEMELİDİR.
- [C-7-2] 2M PHY'Yİ DESTEKLEMELİDİR.
- [C-7-3] LE Genişletilmiş Reklamları DESTEKLEMELİDİR.
- [C-7-4] bir CIG'de en az 2 CIS bağlantısını DESTEKLEMELİDİR.
- [C-7-5] BAP tek yayın istemcisi, CSIP set 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 istemcisini etkinleştirmek için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları BluetoothAdapter.isLeAudioBroadcastSourceSupported()
API için true
döndürürse:
- [C-8-1] BÜYÜK bir alanda en az 2 BIS bağlantısını DESTEKLEMELİDİR.
- [C-8-2] BAP yayın kaynağı ile BAP yayın asistanını aynı anda ETKİNLEŞTİRMELİDİR.
- [C-8-3] LE Periodic reklamcılığını DESTEKLEMELİDİR.
Cihaz uygulamaları BluetoothAdapter.isLeAudioBroadcastAssistantSupported()
API için true
döndürürse:
- [C-9-1] PAST'i (Periyodik Reklam Senkronizasyon Aktarımı) DESTEKLEMELİDİR.
- [C-9-2] LE Periodic reklamcılığını DESTEKLEMELİDİR.
Cihaz uygulamaları FEATURE_BLUETOOTH_LE
bildiriyorsa:
- [C-10-1] Görüş ortamında,
ADVERTISE_TX_POWER_HIGH
konumunda iletim yapan bir referans cihazından 1 metre uzaklıktaki ölçümlerin% 95'i için RSSI ölçümlerinin +/-9 dB dahilinde olması ZORUNLUDUR. [C-10-2] Kanal başına sapmaları azaltmak için Rx/Tx düzeltmeleri içermesi ZORUNLUDUR. Böylece, 3 kanalın her birindeki ve antenin her birindeki (birden fazla anten kullanılıyorsa) ölçümlerin% 95'inde birbirinden +/-3 dB uzakta olur.
[C-SR-2] Rx ofsetinin ölçülmesi ve telafi edilmesi için BLE RSSI'nin
ADVERTISE_TX_POWER_HIGH
iletken bir referans cihazdan 1 m uzakta -60 dBm +/-10 dB olmasını sağlamak için ÖNEMLE ÖNERİLİR. Burada cihazlar, "paralel" düzlemlere bakacak şekilde aynı yöne yönlendirilir.[C-SR-3] 1 metre mesafeye yerleştirilmiş bir referans cihazından tarama yaparken ve
ADVERTISE_TX_POWER_HIGH
konumunda veri iletirken medyan BLE RSSI'sinin -60 dBm +/-10 dB olmasını sağlamak için Tx ofsetini ölçmesi ve telafi etmesi ÖNERİLİR.ADVERTISE_TX_POWER_HIGH
, cihazlar "paralel düzlemlere" bakacak şekilde ayarlı olur.[C-10-3] ve [C-10-4] gereksinimleri 2.2.1'e taşındı. Donanım.
- [C-10-3], ortanca BLE RSSI'nin
ADVERTISE_TX_POWER_HIGH
konumunda iletim yapan bir referans cihazdan 1 metre uzakta -55 dBm +/-10 dB olmasını sağlamak için Rx ofsetini ölçmesi ve telafi etmesi gerekir. - [C-10-4], 1 metre mesafedeki bir referans cihazından tarama yaparken ve
ADVERTISE_TX_POWER_HIGH
konumunda iletim yaparken ortanca BLE RSSI'nin -55 dBm +/-10 dB olmasını sağlamak için Tx ofsetini ölçmesi ve telafi etmesi gerekir.
Bulunma Kalibrasyonu Koşulları bölümünde belirtilen ölçüm kurulumu adımlarını uygulamanız ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları Bluetooth 5.0 sürümünü destekliyorsa:
- [C-SR-4] Aşağıdakiler için destek sağlaması ÖNEMLE ÖNERİLİR:
- LE 2M PHY
- LE Codec PHY
- LE Advertising Uzantısı
- Periyodik reklamcılık
- En az 10 reklam seti
- En az 8 LE eşzamanlı bağlantı. Her bağlantı, her iki bağlantı topolojisi rolünde de olabilir.
- LE Link Katmanı Gizliliği
- En az 8 girişlik bir "çözüm listesi" boyutu
7.4.4. Near Field Communication
Cihaz uygulamaları:
- Yakın Alan İletişimi (NFC) için bir alıcı-verici ve ilgili donanım İÇERMELİDİR.
- [C-0-1] NFC desteği içermese veya sınıflar protokolden bağımsız bir veri temsili biçimini temsil ettiğinden
android.hardware.nfc
özelliğini beyan etse bileandroid.nfc.NdefMessage
veandroid.nfc.NdefRecord
API'lerini uygulaması ZORUNLUDUR.
Cihaz uygulamaları NFC donanımı içeriyorsa ve bunu üçüncü taraf uygulamalarının kullanımına sunmayı planlıyorsa:
- [C-1-1]
android.hardware.nfc
özelliğiniandroid.content.pm.PackageManager.hasSystemFeature()
yönteminden BİLDİRMELİDİR. - NDEF mesajlarını aşağıdaki NFC standartları aracılığıyla okuyup yazabilmesi ZORUNLUDUR:
- [C-1-2] aşağıdaki NFC standartlarına uygun olarak bir NFC Forumu okuyucusu/yazarı olarak hareket edebilmelidir (NFC Forumu teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0'da tanımlandığı şekilde):
- NfcA (ISO14443-3A)
- NFCB (ISO14443-3B)
- NfcF (JIS X 6319-4)
- IsoDep (ISO 14443-4)
- NFC Forum Etiketi Tür 1, 2, 3, 4, 5 (NFC Forumu tarafından tanımlanmıştır)
[C-SR-1] Hem NDEF mesajlarını hem de ham verileri aşağıdaki NFC standartlarına uygun olarak okuyup yazabilmesi ÖNEMLE ÖNERİLİR. NFC standartları GERÇEKTEN ÖNERİLİR olarak belirtilse de gelecekteki bir sürümün Uyumluluk Tanımı'nın bunları ZORUNLU olarak değiştirmesi planlanmaktadır. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde gerekli olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine geçiş yapabilmeleri için şu anda bu gereksinimleri karşılamaları önemle tavsiye edilir.
[C-1-13] NFC keşif modundayken desteklenen tüm teknolojileri yoklaması ZORUNLUDUR.
Cihaz uyanık durumdayken ve ekran etkin durumdayken, kilit ekranının kilidi açıkken NFC keşif modunda olması GEREKİR.
Thinfilm NFC Barcode ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmesi gerekir.
Herkese açık bağlantıların yukarıda belirtilen JIS, ISO ve NFC Forum spesifikasyonları için geçerli olmadığını unutmayın.
Android, NFC Ana Kart Emülasyonu (HCE) modunu destekler.
Cihaz uygulamaları, HCE (NfcA ve/veya NfcB için) yapabilen ve Uygulama Kimliği (AID) yönlendirmesini destekleyen bir NFC denetleyici yonga seti içeriyorsa:
- [C-2-1],
android.hardware.nfc.hce
özellik sabitini BİLDİRMELİDİR. - [C-2-2], Android SDK'da tanımlandığı gibi NFC HCE API'lerini DESTEKLEMELİDİR.
Cihaz uygulamaları, NfcF için HCE yapabilen bir NFC denetleyici yonga seti içeriyorsa ve bu özelliği üçüncü taraf uygulamalarda uyguluyorsa:
- [C-3-1],
android.hardware.nfc.hcef
özellik sabitini Bildirmelidir. - [C-3-2], Android SDK'da tanımlandığı gibi NfcF Kart Emülasyon API'lerini uygulamalıdır.
Cihaz uygulamaları bu bölümde açıklandığı gibi genel NFC desteğini içeriyorsa ve okuyucu/yazar rolünde MIFARE teknolojilerini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa bu uygulamalar:
- [C-4-1], ilgili Android API'lerini Android SDK'da belirtildiği şekilde uygulamalıdır.
- [C-4-2],
android.content.pm.PackageManager.hasSystemFeature
() yöntemindencom.nxp.mifare
özelliğini bildirmelidir. Bunun standart bir Android özelliği olmadığını veandroid.content.pm.PackageManager
sınıfında sabit bir değer olarak görünmediğini unutmayın.
7.4.5. Ağ iletişimi protokolleri ve API'ler
7.4.5.1. Minimum Ağ Yeteneği
Cihaz uygulamaları:
- [C-0-1] Bir veya daha fazla veri ağı biçimi için destek İÇERMELİDİR. Özellikle, cihaz uygulamalarının 200 Kbit/sn veya daha yüksek hıza sahip en az bir veri standardını desteklemesi ZORUNLUDUR. Bu şartı karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet ve Bluetooth PAN verilebilir.
- 802.11 (Kablosuz) gibi, birincil veri bağlantısı fiziksel ağ standardı (ör. Ethernet) olduğunda en az bir yaygın kablosuz veri standardı için destek İÇERMELİDİR.
- Birden fazla veri bağlantısı biçimi uygulayamaz.
7.4.5.2. IPv6
Cihaz uygulamaları:
- [C-0-2]; bir IPv6 ağ iletişimi yığını içermeli ve
java.net.Socket
vejava.net.URLConnection
gibi yönetilen API'lerin yanı sıraAF_INET6
yuvaları gibi yerel API'leri kullanarak IPv6 iletişimini desteklemelidir. - [C-0-3] IPv6'nın varsayılan olarak ETKİNLEŞTİRİLMESİ GEREKİR.
- IPv6 iletişiminin IPv4 kadar güvenilir olduğundan emin olunması ZORUNLUDUR. Örneğin:
- [C-0-4] Doz modunda IPv6 bağlantısı ZORUNLUDUR.
- [C-0-5] Hız sınırlama, en az 180 saniyelik RA kullanım ömrü kullanan IPv6 uyumlu ağlarda cihazın IPv6 bağlantısını kaybetmesine NEDEN OLMAMALIDIR.
- IPv6 iletişiminin IPv4 kadar güvenilir olduğundan emin olunması ZORUNLUDUR. Örneğin:
- [C-0-6], IPv6 ağına bağlıyken üçüncü taraf uygulamalarına, cihazda yerel olarak herhangi bir adres veya bağlantı noktası çevirisi olmadan doğrudan IPv6 bağlantısı olan ağ SAĞLAMALIDIR. Hem
Socket#getLocalAddress
veyaSocket#getLocalPort
gibi yönetilen API'lerin hem degetsockname()
veyaIPV6_PKTINFO
gibi NDK API'lerinin, aslında ağ üzerinde paket göndermek ve almak için kullanılan ve kaynak ip ve internet bağlantısı (web) sunucuları olarak görünen IP adresini ve bağlantı noktasını döndürmesi ZORUNLUDUR.
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], kablosuz ağda çift yığınlı ve yalnızca IPv6 işlemini DESTEKLEMELİDİR.
Cihaz uygulamaları Ethernet'i destekliyorsa:
- [C-2-1] Ethernet'te çift yığınlı ve yalnızca IPv6 işlemini DESTEKLEMELİDİR.
Cihaz uygulamaları, hücresel veriyi destekliyorsa:
- [C-3-1], hücresel bağlantıda IPv6 işlemini (yalnızca IPv6 ve muhtemelen çift yığın) DESTEKLEMELİDİR.
Cihaz uygulamaları birden fazla ağ türünü (ör. kablosuz ağ ve hücresel veri) kullanarak:
- [C-4-1] cihaz aynı anda birden fazla ağ türüne bağlı olduğunda her bir ağda yukarıdaki gereksinimlerin aynı anda karşılanması gerekir.
7.4.5.3. Giriş Portalları
Doğrulama amacıyla yönlendirme yapan portal, internet erişimi elde etmek için oturum açmayı gerektiren bir ağı belirtir.
Cihaz uygulamaları, android.webkit.Webview API
öğesinin eksiksiz bir şekilde uygulanmasını sağlıyorsa aşağıdakiler:
- [C-1-1],
ACTION_CAPTIVE_PORTAL_SIGN_IN
amacını işlemek için giriş portalı uygulaması sağlamalı ve System APIConnectivityManager#startCaptivePortalApp(Network, Bundle)
'ye çağrı yaparak bu niyeti göndererek giriş portalı giriş sayfasını görüntülemelidir. - [C-1-2] Cihaz hücresel/mobil ağ, kablosuz ağ, Ethernet veya Bluetooth dahil herhangi bir ağ türüne bağlıyken, doğrulama amacıyla yönlendirme yapan portalları algılaması ve giriş portalı uygulaması üzerinden girişi desteklemesi ZORUNLUDUR.
- Cihaz gizli DNS katı modunu kullanacak şekilde yapılandırıldığında [C-1-3], şifresiz metin DNS kullanarak giriş portallarına giriş yapılmasını DESTEKLEMELİDİR.
- [C-1-4], doğrulama amacıyla yönlendirme yapan portalla açıkça iletişim kurmayan tüm ağ trafiği için
android.net.LinkProperties.getPrivateDnsServerName
veandroid.net.LinkProperties.isPrivateDnsActive
SDK dokümanlarına göre şifrelenmiş DNS kullanmalıdır. - [C-1-5], kullanıcı giriş portalına giriş yaparken uygulamalar tarafından kullanılan (
ConnectivityManager.getActiveNetwork
veConnectivityManager.registerDefaultNetworkCallback
tarafından döndürülen ve java.net.Socket gibi Java ağ iletişimi API'leri ve connect() gibi yerel API'ler tarafından varsayılan olarak kullanılan) ağın (varsa) internet erişimi sağlayan başka bir ağ olduğundan emin olmalıdır.
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ının varsayılan olarak açık olması gerekir.
7.4.7. Veri tasarrufu
Cihaz uygulamaları sayaçlı bağlantı içeriyorsa:
- [C-SR-1] Veri tasarrufu modunu sağlaması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları veri tasarrufu modunu sağlıyorsa:
- [C-1-1], SDK dokümanlarında açıklandığı gibi
ConnectivityManager
sınıfındaki tüm API'leri DESTEKLEMELİDİR
Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:
- [C-2-1],
ConnectivityManager.getRestrictBackgroundStatus()
içinRESTRICT_BACKGROUND_STATUS_DISABLED
değerini döndürmelidir - [C-2-2]
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED
YAYINLAMAMALI.
7.4.8. Güvenlik Unsurları
Cihaz uygulamaları, Open Mobile API özellikli güvenli öğeleri destekliyor ve bunları üçüncü taraf uygulamalarının kullanımına sunuyorsa:
[C-1-1] Mevcut güvenli öğe okuyucularını
android.se.omapi.SEService.getReaders()
API aracılığıyla numaralandırması ZORUNLUDUR.[C-1-2], UICC tabanlı güvenli öğeler içeren cihaz için
android.hardware.se.omapi.uicc
, eSE tabanlı güvenli öğelere sahip cihaz içinandroid.hardware.se.omapi.ese
ve SD tabanlı güvenlik öğeleri içeren cihaz içinandroid.hardware.se.omapi.sd
aracılığıyla doğru özellik işaretlerini beyan etmelidir.
7.4.9. ultra geniş bant
Cihaz uygulamaları, 802.1.15.4 desteği içeriyorsa ve işlevi üçüncü taraf bir uygulamaya sunuyorsa:
- [C-1-1] android.uwb'de ilgili Android API'sini uygulaması ZORUNLUDUR.
- [C-1-2] android.hardware.uwb donanım özelliği işaretini BİLDİRMELİDİR.
- [C-1-3], Android uygulamasında tanımlanan ilgili tüm ultra geniş bant profillerini desteklemektedir.
- [C-1-4], kullanıcının ultra geniş bant radyoyu açma/kapatma durumunu devre dışı bırakmasına izin vermek üzere bir kullanıcıya olanak sağlaması GEREKİR.
- [C-1-5], ultra geniş bant radyo kullanan uygulamaların UWB_RANGING iznini (NEARBY_DEVICE izin grubunun altında) bulundurmasını zorunlu tutmalıdır.
- [C-SR-1] FIRA, CCC ve CSA dahil standart kuruluşlar tarafından tanımlanan ilgili uygunluk ve sertifika testlerini geçmesi ÖNEMLE ÖNERİLİR.
- [C-1-6], yansıtmayan bir odada 1 metre uzaklıkta, görüş çizgisindeki ölçümlerin %95'i için mesafe ölçümlerinin +/-15 cm içinde olmasını ZORUNLUDUR.
- [C-1-7] Referans cihazdan 1 m'lik mesafe ölçümlerinin ortanca değerinin [0,75 m, 1,25 m] içinde olduğundan emin olmalıdır. Burada, zemin doğruluğu mesafesi, DUT'nin üst kenarından ölçülmüştür.
Yukarı doğru tutulur ve 45 derece eğilir. - [C-SR-2] Bulunabilirlik Kalibrasyonu Koşulları bölümünde belirtilen ölçüm kurulumu adımlarını uygulaması ÖNEMLE ÖNERİLİR.
7.5. Kameralar
Cihaz uygulamaları en az bir kamera içeriyorsa:
- [C-1-1],
android.hardware.camera.any
özellik bayrağını beyan etmelidir. - [C-1-2] Bir uygulamanın, cihazdaki en büyük çözünürlüklü kamera sensörü tarafından üretilen görüntülerin boyutuna eşit 3 RGBA_8888 bit eşlemi eş zamanlı olarak ayırması; kameranın ise temel önizleme ve görüntü yakalamaya devam etmesi amacıyla açık olması ZORUNLUDUR.
- [C-1-3], önceden yüklenmiş varsayılan kamera uygulamasının işleme amaçları
MediaStore.ACTION_IMAGE_CAPTURE
,MediaStore.ACTION_IMAGE_CAPTURE_SECURE
veyaMediaStore.ACTION_VIDEO_CAPTURE
, alıcı uygulamadaACCESS_FINE_LOCATION
bulunmadığında resim meta verilerindeki kullanıcı konumunu alıcı uygulamaya göndermeden önce konumun kaldırılmasından sorumlu olması ZORUNLUDUR.
Cihaz uygulamaları HDR 10 bit çıkış özelliğini destekliyorsa:
- [C-2-1], 10 bit çıkışı destekleyen her kamera cihazı için en azından HLG HDR profilini desteklemektedir.
- [C-2-2] birincil arka kamera veya birincil ön kamera için 10 bit çıkışı DESTEKLEMELİDİR.
- [C-SR-1] Her iki birincil kamerada 10 bit çıkışı desteklemeleri ÖNEMLE ÖNERİLİR.
- [C-2-3], mantıksal bir kameranın ve mantıksal kameranın kendisi için BACKWARD_COMPATIBLE özellikli tüm fiziksel alt kameralar için aynı HDR profillerini desteklemelidir.
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
API'yi uygulayan ve 10 bit HDR'yi destekleyen mantıksal kamera cihazları için:
- [C-3-1] Mantıksal kameradaki
CONTROL_ZOOM_RATIO
kontrolü aracılığıyla geriye dönük uyumlu tüm fiziksel kameralar arasında geçişi DESTEKLEMELİDİR.
7.5.1. Arka Kamera
Arka kamera, cihazın yan tarafında, ekranın karşısında bulunan bir kameradır. Diğer bir deyişle, geleneksel bir kamera gibi cihazın uzak tarafındaki sahneleri görüntüler.
Yeni koşullarla başlayın
Arka kamera, geleneksel kamera gibi cihazın uzak tarafındaki sahneleri gösteren bir dünyaya bakan kameradır. Avuç içi cihazlarda ise ekranın karşısında, cihazın yan tarafında yer alan bir kameradır.
Yeni şartları sonlandırma
Cihaz uygulamaları:
- Arka yüz kamerası KULLANILMALIDIR.
Cihaz uygulamaları en az bir arka kamera içeriyorsa:
- [C-1-1]
android.hardware.camera
veandroid.hardware.camera.any
özellik bayrağını bildirmelidir. - [C-1-2] en az 2 megapiksel çözünürlüğünde olması ZORUNLUDUR.
- Kamera sürücüsünde, donanım otomatik odaklama veya yazılım otomatik odaklama (uygulama yazılımına göre şeffaf) uygulanmalıdır.
- Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanıma sahip OLABİLİR.
- Flaş İÇEREBİLİR.
Kamerada flaş varsa:
- [C-2-1] Kamera önizleme yüzeyine bir
android.hardware.Camera.PreviewCallback
örneği kaydedilmişse uygulama birCamera.Parameters
nesnesininFLASH_MODE_AUTO
veyaFLASH_MODE_ON
özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece flaş lambası YANLIŞ OLMAMALIDIR. Bu kısıtlamanın, cihazın yerleşik sistem kamera uygulaması için değil, yalnızcaCamera.PreviewCallback
kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Yüz Kamera
Ön kamera, cihazın ekranla aynı tarafında bulunan bir kameradır. Yani, genellikle video konferans ve benzer uygulamalarda olduğu gibi kullanıcının görüntüsünü almak için kullanılan bir kameradır.
Yeni koşullarla başlayın
Ön kamera, genellikle video konferans gibi benzer uygulamalarda kullanıcının görüntüsünü almak için kullanılan kullanıcı kamerasıdır. Avuç içi cihazlarda ise ekran ile cihazın aynı tarafında bulunan bir kameradır.
Yeni şartları sonlandırma
Cihaz uygulamaları:
- Ön kamera içerebilir.
Cihaz uygulamaları en az bir ön kamera içeriyorsa:
- [C-1-1]
android.hardware.camera.any
veandroid.hardware.camera.front
özellik bayrağını bildirmelidir. - [C-1-2] Çözünürlüğü en az VGA (640x480 piksel) olmalıdır.
- [C-1-3] Kamera API'si için varsayılan olarak ön kamera KULLANILMAMALIDIR ve cihazdaki tek kamera olsa bile, ön kamerayı varsayılan arka kamera olarak değerlendirecek şekilde API'yi AYARLANMAMALIDIR.
- [C-1-4] Geçerli uygulama,
android.hardware.Camera.setDisplayOrientation()
yöntemine yapılan bir çağrıyla kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesinin, uygulamanın belirttiği yöne göre yatay olarak yansıtılması ZORUNLUDUR. Buna karşılık, geçerli uygulama, kamera ekranınınandroid.hardware.Camera.setDisplayOrientation()
yöntemine yapılan bir çağrıyla döndürülmesini açıkça istemediğinde önizlemenin cihazın varsayılan yatay ekseni boyunca yansıtılması ZORUNLUDUR. - [C-1-5], uygulama geri çağırmalarına döndürülen veya medya depolamaya kaydedilen son hareketsiz görüntü veya video akışlarını YAZMAMALIDIR.
- [C-1-6], yayın sonrası izleme tarafından görüntülenen görüntüyü kamera önizleme görüntü akışıyla aynı şekilde yansıtmalıdır.
- Bölüm 7.5.1'de açıklandığı gibi, arka kameralarda kullanılabilen özellikler (otomatik odaklama, flaş vb.) İÇEREBİLİR.
Cihaz uygulamaları kullanıcı tarafından döndürülebiliyorsa (örneğin, bir ivme ölçer aracılığıyla otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak):
- [C-2-1] Kamera önizlemesinin, cihazın mevcut yönüne göre yatay olarak yansıtılması ZORUNLUDUR.
7.5.3. Harici Kamera
Yeni koşullarla başlayın
Harici kamera, herhangi bir zamanda cihaz uygulamasından fiziksel olarak takılabilen veya çıkarılabilen ve USB kameralar gibi herhangi bir yöne bakan bir kameradır.
Yeni şartları sonlandırma
Cihaz uygulamaları:
- Her zaman bağlı olmayan harici bir kamera desteği İÇEREBİLİR.
Harici kamera desteği içeren cihaz uygulamaları:
- [C-1-1]
android.hardware.camera.external
veandroid.hardware camera.any
platform özellik bayrağını beyan etmek ZORUNLUDUR. - [C-1-2], harici kamera USB ana makine bağlantı noktası üzerinden bağlanırsa USB Video Sınıfı'nı (UVC 1.0 veya üzeri) desteklemektedir.
- [C-1-3] bağlı bir fiziksel harici kamera cihazıyla kamera CTS testlerini geçmelidir. Kamera CTS testiyle ilgili ayrıntıları source.android.com adresinde bulabilirsiniz.
- Yüksek kaliteli kodlanmamış akışların (yani, 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ı desteklemektedir.
- Birden fazla kamerayı destekleyebilir.
- Kamera tabanlı video kodlamayı destekleyebilir.
Kamera tabanlı video kodlama destekleniyorsa:
- [C-2-1] Cihaz uygulaması, aynı anda kodlanmamış bir / MJPEG akışına (QVGA veya daha yüksek çözünürlük) erişilebilir ZORUNLUDUR.
7.5.4. Kamera API'si Davranışı
Android, kameraya erişmek için iki API paketi içerir. Yeni android.hardware.camera2 API'si, uygulamaya düşük düzeyli kamera kontrolü sunar. Bu API'ler arasında verimli sıfır kopyalı seri çekim/akış akışları ve kare başına pozlama, kazanç, beyaz dengesi kazançları, renk dönüştürme, parazit giderme, keskinleştirme ve daha birçok işlem yer alır.
Eski API paketi (android.hardware.Camera
) Android 5.0'da kullanımdan kaldırıldı olarak işaretlendi ancak uygulamaların kullanması için hâlâ mevcut olmalıdır. Android cihaz uygulamalarının, bu bölümde ve Android SDK'da açıklandığı şekilde API'nin desteklenmesinin devam etmesi ZORUNLUDUR.
Kullanımdan kaldırılan android.hardware.Kamera sınıfı ile yeni android.hardware.camera2 paketindeki ortak özelliklerin her iki API'de de eşdeğer performans ve kaliteye sahip olması ZORUNLUDUR. Örneğin, eşdeğer ayarlar kullanıldığında otomatik odaklama hızı ve doğruluğu aynı olmalı ve çekilen görüntülerin kalitesi de aynı olmalıdır. İki API'nin farklı anlamlarına bağlı özelliklerin hızı veya kalitesiyle eşleşme olması gerekmez ancak bu özelliklerin mümkün olduğunca yakın eşleşmesi gerekir.
Cihaz uygulamalarının, mevcut tüm kameralarda kamerayla ilgili API'lerde aşağıdaki davranışları uygulaması ZORUNLUDUR. Cihaz uygulamaları:
- [C-0-1] Bir uygulama
android.hardware.Camera.Parameters.setPreviewFormat(int)
yöntemini hiç çağırmadığında uygulama geri çağırmalarına sağlanan önizleme verileri içinandroid.hardware.PixelFormat.YCbCr_420_SP
KULLANMALIDIR. - [C-0-2], bir uygulama bir
android.hardware.Camera.PreviewCallback
örneğini kaydettiğinde ve sistemonPreviewFrame()
yöntemini çağırdığında ve önizleme biçimi YCbCr_420_SP (bayttaki veri)onPreviewFrame()
bölümüne iletildiğinde[] NV21 kodlama biçiminde olması ZORUNLUDUR. Diğer bir deyişle, NV21 varsayılan değer olmalıdır. - [C-0-3]
android.hardware.Camera
ürününde hem ön hem de arka kameralarda kamera önizlemeleri için YV12 biçimini (android.graphics.ImageFormat.YV12
sabit değeri ile belirtildiği gibi) DESTEKLEMELİDİR. (Donanımla video kodlayıcı ve kamerada herhangi bir yerel piksel biçimi kullanılabilir ancak cihaz uygulamasının YV12'ye dönüştürmeyi desteklemesi gerekir.) - [C-0-4],
android.request.availableCapabilities
'deREQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE
özelliğini tanıtanandroid.hardware.camera2
cihazlar içinandroid.media.ImageReader
API üzerindenandroid.hardware.ImageFormat.YUV_420_888
veandroid.hardware.ImageFormat.JPEG
biçimlerini çıkış olarak desteklemelidir. - Cihazda otomatik donanım odaklama veya başka özellikler bulunmasa bile [C-0-5], Android SDK belgelerinde yer alan Kamera API'sinin tamamını yine de uygulamalıdır. Örneğin, otomatik odaklama özelliği olmayan kameraların (otomatik odaklama olmayan bir kamerayla alakası olmasa bile) kayıtlı tüm
android.hardware.Camera.AutoFocusCallback
örneklerini çağırması GEREKİR. Bunun ön kameralar için geçerli olduğunu unutmayın. Örneğin, çoğu ön kamera otomatik odaklamayı desteklemese de, API geri çağırmalarının açıklandığı gibi yine de "sahte" olması gerekir. - [C-0-6],
android.hardware.Camera.Parameters
veandroid.hardware.camera2.CaptureRequest
sınıfında sabit olarak tanımlanan her parametre adını tanımalı ve dikkate almalıdır. Öte yandan, cihaz uygulamaları,android.hardware.Camera.Parameters
üzerinde sabit değer olarak belgelenenler dışındaandroid.hardware.Camera.setParameters()
yöntemine iletilen dize sabitlerini DEĞERLENDİRMEMELİ veya TANIMMAMALIDIR. Diğer bir deyişle, donanım izin veriyorsa cihaz uygulamalarının tüm standart Kamera parametrelerini desteklemesi ve özel Kamera parametre türlerini DESTEKLEMEMELİDİR. Örneğin, yüksek dinamik aralıklı (HDR) görüntüleme teknikleri kullanan görüntü yakalamayı destekleyen cihaz uygulamalarında,Camera.SCENE_MODE_HDR
adlı kamera parametresinin desteklenmesi ZORUNLUDUR. - [C-0-7], Android SDK'da açıklandığı gibi
android.info.supportedHardwareLevel
özelliğiyle uygun destek düzeyini bildirmeli ve uygun çerçeve özellik işaretlerini bildirmelidir. - [C-0-8] ayrıca
android.hardware.camera2
ürününün kamera özellikleriniandroid.request.availableCapabilities
özelliği aracılığıyla beyan etmeli ve uygun özellik bayraklarını beyan etmelidir. Takılı kamera cihazlarından herhangi biri özelliği destekliyorsa özellik bayrağının tanımlanması ZORUNLUDUR. - Kamerayla yeni bir resim çekildiğinde ve resim, medya mağazasına eklendiğinde [C-0-9]
Camera.ACTION_NEW_PICTURE
niyetini YAYINLAMALIDIR. - Kamera tarafından yeni bir video kaydedildiğinde ve resim girişi medya mağazasına eklendiğinde [C-0-10]
Camera.ACTION_NEW_VIDEO
amacının yayınlanması ZORUNLUDUR. - [C-0-11] tüm kameralara desteği sonlandırılan
android.hardware.Camera
API'si üzerinden erişilebilmesi ZORUNLUDUR. Ayrıca, bu kameralaraandroid.hardware.camera2
API'si aracılığıyla da erişilebilir. - [C-0-12],
android.hardware.camera2
veyaandroid.hardware.Camera
API'leri için yüz geometrisinin, yüz cilt tonunun veya yüz yumuşatma işleminin değiştirilmesi de dahil ancak bunlarla sınırlı olmamak üzere yüz görünümünün DEĞİŞTİRİLMEMEMESİ GEREKİR. - [C-SR-1] Yakındaki ve aynı yöne bakan birden fazla RGB kamerası olan cihazlarda,
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
özelliği listeleyen mantıksal bir kamera cihazının desteklenmesi ÖNERİLİR ve bu yöne bakan tüm RGB kameralar fiziksel alt cihazlar olarak gösterilir.
Cihaz uygulamaları, üçüncü taraf uygulamalarına özel bir kamera API'si sağlıyorsa bunlar:
- [C-1-1] bu tür bir kamera API'sini
android.hardware.camera2
API'sini kullanarak uygulaması ZORUNLUDUR. android.hardware.camera2
API'sine tedarikçi firma etiketleri ve/veya uzantıları SAĞLAYABİLİR.
7.5.5. Kamera Yönü
Cihaz uygulamalarında ön veya arka kamera varsa, bu tür kameralar:
- [C-1-1] Kameranın uzun boyutu, ekranın uzun boyutuyla aynı olacak şekilde doğrultulmalıdır. Yani, cihaz yatay yönde tutulduğunda, kameraların resimleri yatay yönde çekmesi ZORUNLUDUR. Bu, cihazın doğal yönünden bağımsız olarak geçerlidir. Yani, yatay birincil cihazların yanı sıra dikey birincil cihazlarda da geçerlidir.
Aşağıdaki ölçütlerin tümünü karşılayan cihazlar yukarıdaki koşuldan muaftır:
- Cihazda katlanabilir veya menteşeli ekranlar gibi değişken geometrik ekranlar kullanılır.
- Cihazın katlama veya menteşe durumu değiştiğinde, cihaz dikey-birincil yönler arasında yatay-birincil yönler (veya tam tersi) arasında geçiş yapar.
Yeni koşullarla başlayın
- Otomotiv cihazları gibi kullanıcı tarafından döndürülemeyen cihaz uygulamaları.
Yeni şartları sonlandırma
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 kullanabileceği bir İndirme Yöneticisi İÇERMELİDİR ve varsayılan "önbellek" konumuna en az 100 MB boyutundaki dosyaları tek tek indirebilmelidir.
7.6.2. Uygulama Paylaşılan Depolama Alanı
Cihaz uygulamaları:
- [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı sunmalıdır. Bu depolama alanı genelde "paylaşılan harici depolama", "uygulama paylaşılan depolama alanı" veya eklendiği Linux yolu "/sdcard" olarak da bilinir.
- [C-0-2] Depolama alanının dahili depolama bileşeninde mi yoksa çıkarılabilir depolama alanında mı (ör. Güvenli Dijital kart yuvası) uygulanmasına bakılmaksızın, varsayılan olarak "kullanıma hazır" bir paylaşılan depolama alanının eklenmesiyle yapılandırılması ZORUNLUDUR.
- [C-0-3], uygulama paylaşılan depolama alanını doğrudan
sdcard
Linux yoluna EKLEMELİ veyasdcard
ile gerçek ekleme noktasına Linux sembolik bir bağlantısı dahil etmelidir. - [C-0-4] Aşağıdaki durumlar haricinde, API düzeyi 29 veya sonraki sürümleri hedefleyen tüm uygulamalar için varsayılan olarak kapsamlı depolama özelliğinin etkinleştirilmesi ZORUNLUDUR:
- Uygulama, manifest dosyasında
android:requestLegacyExternalStorage="true"
istediğinde.
- Uygulama, manifest dosyasında
- [C-0-5], çağıran uygulamanın
ACCESS_MEDIA_LOCATION
iznine sahip olmadığı durumlar dışında,MediaStore
üzerinden erişildiğinde medya dosyalarında depolanan GPS Exif etiketleri gibi konum meta verilerini çıkartmalıdır.
Cihaz uygulamaları, aşağıdakilerden biri kullanılarak yukarıdaki şartları karşılayabilir:
- Secure Digital (SD) kart yuvası gibi kullanıcı tarafından erişilebilen çıkarılabilir depolama alanı.
- Android Açık Kaynak Projesi'nde (AOSP) uygulanan dahili (kaldırılamaz) depolama alanının bir kısmı.
Cihaz uygulamaları, yukarıdaki gereksinimleri karşılamak için çıkarılabilir depolama alanı kullanıyorsa:
- [C-1-1] Yuvaya depolama ortamı takılı olmadığında kullanıcıyı uyaran bir durum mesajı veya pop-up kullanıcı arayüzü uygulanmalıdır.
- [C-1-2], FAT biçiminde bir depolama ortamı (ör. SD kart) veya kutunun üzerinde ve satın alma sırasında bulunan ve ayrıca bu depolama ortamının ayrı olarak satın alınması gereken diğer malzemelerin bulunması ZORUNLUDUR.
Cihaz uygulamaları, kaldırılamayan depolama alanının bir kısmını yukarıdaki gereksinimleri karşılamak için kullanıyorsa:
- Dahili uygulama paylaşılan depolama alanının AOSP uygulamasını KULLANMALIDIR.
- Depolama alanını, uygulamanın özel verileriyle PAYLAŞABİLİRSİNİZ.
Cihaz uygulamalarında USB çevre birimi modu destekli bir USB bağlantı noktası varsa:
- [C-3-1] bir ana bilgisayardan uygulama paylaşılan depolama alanındaki verilere erişmek için bir mekanizma SAĞLAMALIDIR.
- Her iki depolama yolundaki içeriği, Android'in medya tarayıcı hizmeti ve
android.provider.MediaStore
üzerinden şeffaf bir şekilde ÇIKARMALISINIZ. - USB yığın depolama birimi KULLANILABİLİR, ancak bu gereksinimi karşılamak için Medya Aktarım Protokolü KULLANILMALIDIR.
Cihaz uygulamalarında USB çevre birimi moduna sahip bir USB bağlantı noktası varsa ve Medya Aktarım Protokolü destekleniyorsa:
- Referans Android MTP ana makinesi olan Android Dosya Aktarımı ile uyumlu OLMALIDIR.
- 0x00 değerinde bir USB cihaz sınıfı Bildirilmelidir.
- USB arayüzü adı "MTP" olarak BELİRTİLMELİDİR.
7.6.3. Kabul Edilebilir Depolama Alanı
Cihazın, televizyonun aksine mobil olması bekleniyorsa cihaz uygulamaları şunlardır:
- [C-SR-1] Kabul edilebilir depolama alanının yanlışlıkla kesilmesi veri kaybına veya bozulmaya neden olabileceğinden, bu depolama alanının uzun vadeli kararlı bir konumda uygulanması ÖNEMLE ÖNERİLİR.
Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya diğer koruyucu kapak gibi uzun vadede sabit bir konumdaysa cihaz uygulamaları şunlardır:
- [C-SR-2] Kabul edilebilir depolama alanı uygulanması ÖNEMLE ÖNERİLİR.
7.7. USB
Cihaz uygulamalarının USB bağlantı noktası varsa:
- USB çevre birimi modunu DESTEKLEMELİ ve USB ana makine modunu DESTEKLEMELİDİR.
- USB üzerinden veri sinyalinin devre dışı bırakılması DESTEKLENMELİDİR.
7.7.1. USB çevre birimi modu
Cihaz uygulamalarında çevre birimi modunu destekleyen bir USB bağlantı noktası varsa:
- [C-1-1] Bağlantı noktasının, standart A veya type-C USB bağlantı noktasına sahip bir USB ana makinesine bağlanabilmesi ZORUNLUDUR.
- [C-1-2], USB standart cihaz tanımlayıcısındaki doğru
iSerialNumber
değeriniandroid.os.Build.SERIAL
üzerinden Bildirmelidir. - [C-1-3], Type-C direnç standardına göre 1,5A ve 3,0A şarj cihazlarını algılamalı ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri algılaması ZORUNLUDUR.
- [C-SR-1] Bağlantı noktasında mikro B, mikro AB veya Type-C USB form faktörü KULLANILMALIDIR. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçebilmesi için bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR.
- [C-SR-2] Bağlantı noktası, cihazın alt kısmına (doğal yöne göre) yerleştirilmeli veya tüm uygulamalarda (ana ekran dahil) yazılım ekran döndürme işlevi etkinleştirilmelidir. Böylece, cihaz alttaki bağlantı noktasıyla hizalandığında ekran doğru şekilde çizilmelidir. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçiş yapabilmeleri için bu gereksinimleri karşılamaları ÖNEMLE ÖNERİLİR.
- [C-SR-3] HS devresi ve trafik sırasında USB Pil Şarj özelliği, düzeltme 1.2'de belirtildiği gibi 1,5 A akım çizme desteğinin uygulanması GEREKİR. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçebilmesi için bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR.
- [C-SR-4] Vbus voltajını varsayılan düzeylerin ötesinde değiştiren veya lavabo/kaynak rollerini bu şekilde değiştiren özel şarj yöntemlerini desteklememesi ÖNERİLİR. Standart USB Güç Aktarımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunlarına neden olabilir. Bu özellik "GERÇEKTEN ÖNERİLENLER" olarak adlandırılsa da gelecekteki Android sürümlerinde standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemek için tüm C Tipi cihazlar GEREKTİR.
- [C-SR-5] Type-C USB ve USB ana makine modunu desteklediklerinde veri için güç teslimini ve güç rolü değişimini desteklemek ÖNERİLİR.
- Yüksek voltajlı şarj için Güç Aktarımı'nı ve ekran çıkışı gibi Alternatif Modlar'ı DESTEKLEMELİDİR.
- Android Open Accessory (AOA) API'sini ve spesifikasyonunu Android SDK dokümanlarında belirtildiği şekilde UYGULAMALIDIR.
Cihaz uygulamaları USB bağlantı noktası içeriyorsa ve AOA spesifikasyonunu uyguluyorsa:
- [C-2-1],
android.hardware.usb.accessory
donanım özelliği için destek bildirmesi ZORUNLUDUR. - [C-2-2] USB yığın depolama sınıfının, USB yığın depolama alanına ait arayüz açıklamasının
iInterface
dizesinin sonunda "android" dizesi olması ZORUNLUDUR - Android Açık Aksesuar Protokolü 2.0 belgelerinde belgelenen AOAv2 ses biçimini UYGULAMAYIN. AOAv2 ses, Android 8.0 (API düzeyi 26) sürümü itibarıyla kullanımdan kaldırılmıştır.
7.7.2. USB ana makine modu
Cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-1-1], Android USB ana makine API'sini Android SDK'sında belirtildiği şekilde uygulamalı ve
android.hardware.usb.host
donanım özelliği için destek verdiğini beyan etmelidir. - [C-1-2] Standart USB çevre birimlerini bağlamak için destek uygulaması, diğer bir deyişle:
- Cihaz üzerinde C tipi bağlantı noktasına sahip olun veya cihazın özel bağlantı noktasını standart bir USB type-C bağlantı noktasına (USB Type-C cihazı) uyarlayan kablolarla gönderin.
- Cihaz üzerinde A tipi bir cihaz bulundurun veya cihazın özel bağlantı noktasını standart bir USB A Tipi bağlantı noktasına adapte eden kablolarla gönderin.
- Cihaz üzerinde bir mikro AB bağlantı noktasına sahip olun. Bu bağlantı noktası, standart A tipi bağlantı noktasına uyarlanan bir kabloyla gönderilmelidir.
- [C-1-3] USB tip A veya mikro AB bağlantı noktalarından type-C bağlantı noktasına (priz) dönüştürülen bir adaptörle GÖNDERİLMEMELİDİR.
- [C-SR-1] Android SDK dokümanlarında belirtildiği gibi USB ses sınıfının uygulanması ÖNERİLİR.
- Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini desteklemektedir. USB Type-C konnektörleri için USB Type-C Kablo ve Konnektör Spesifikasyonu Revizyonu 1.2 belgesinin Fesih Parametreleri bölümünde veya USB Type-C konnektörü(CDP) çıkışı akım aralığı tarafından belirtildiği üzere en az 1, 5 A'lık akım akımının reklamının yapılması gerekir. USB1 Pil revizyonu için AB2 revizyonu için
- USB Type-C standartları uygulanmalı ve desteklenmelidir.
Cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası ve USB ses sınıfını içeriyorsa:
- [C-2-1] USB HID sınıfını DESTEKLEMELİDİR.
- [C-2-2], USB HID Kullanım Tabloları ve Voice Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının
KeyEvent
sabit değerleriyle aşağıdaki gibi algılanmasını ve eşlenmesini 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ğlanmış MTP (Medya Aktarım Protokolü) cihazlarını tanımalı ve bu cihazların içeriklerini
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
veACTION_CREATE_DOCUMENT
amaçları üzerinden erişilebilir hale getirmelidir. .
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 Bağlantı Noktası işlevini uygulamalıdır. Çift Rollü Bağlantı Noktaları için 3, 5 mm ses jakı bulunan cihazlarda USB havuzu algılama (ana makine modu) varsayılan olarak kapalı OLABİLİR, ancak kullanıcının bu özelliği etkinleştirmesi ZORUNLUDUR.
- [C-SR-2] DisplayPort'u desteklemesi ÖNEMLE ÖNERİLİR, USB SuperSpeed Veri Hızlarını desteklemektedir ve veri ve güç rolü değişiminde Power Delivery'yi desteklemesi ÖNERİLİR.
- [C-SR-3] USB Type-C Kablo ve Konnektör Spesifikasyonu Düzeltmesi 1.2 Eki'ndeki Ek A'da açıklandığı gibi Ses Adaptörü Aksesuar Modu'nu DESTEKLEMEMESİ ÖNEMLE ÖNERİLİR.
- Cihazın form faktörü için en uygun olan Try.* modelini uygulamalısınız. Örneğin, bir avuç içi cihazda Explore.SNK modelinin uygulanması GEREKİR.
7.8. Ses
7.8.1. Mikrofon
Mikrofon içeren cihaz uygulamaları:
- [C-1-1],
android.hardware.microphone
özellik sabitini Bildirmelidir. - [C-1-2] Bölüm 5.4'te belirtilen ses kaydı şartlarını ZORUNLUDUR.
- [C-1-3] Bölüm 5.6'da belirtilen ses gecikmesi şartlarını karşılamalıdır.
- [C-SR-1] Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın kaydı desteklemesi ÖNEMLE ÖNERİLİR.
Mikrofonu olmayan cihaz uygulamaları:
- [C-2-1],
android.hardware.microphone
özellik sabitini BildirMEMELİDİR. - [C-2-2] Bölüm 7 uyarınca, ses kaydı API'sini en azından işlemsiz olarak uygulaması ZORUNLUDUR.
7.8.2. Ses Çıkışı
Cihaz uygulamaları, 4 iletken 3,5 mm ses jakı veya USB ses sınıfı kullanan USB ana makine modu bağlantı noktası gibi bir ses çıkışı çevre birimi için hoparlör veya ses/multimedya çıkış bağlantı noktası içeriyorsa:
- [C-1-1],
android.hardware.audio.output
özellik sabitini Bildirmelidir. - [C-1-2] Bölüm 5.5'te ses çalma şartlarını yerine getirmesi ZORUNLUDUR.
- [C-1-3] Bölüm 5.6'da belirtilen ses gecikmesi şartlarını karşılamalıdır.
- [C-SR-1] Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın oynatmayı desteklemesi için ÖNEMLE ÖNERİLİR.
Hoparlör veya ses çıkış bağlantı noktası bulunmayan cihaz uygulamaları:
- [C-2-1],
android.hardware.audio.output
özelliğini BİLDİRMEMELİDİR. - [C-2-2] Ses Çıkışı ile ilgili API'leri en azından işlemsiz olarak uygulaması ZORUNLUDUR.
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 fiziksel bir 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'lik ses fişini kullanan mikrofonlu kulaklıklar ve diğer ses aksesuarları ile uyumlu olmak için cihaz uygulamaları bir veya daha fazla analog ses bağlantı noktası içeriyorsa bunlar:
- [C-SR-1] Ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması ÖNEMLE ÖNERİLİR.
Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:
- [C-1-1] Stereo kulaklıklarla ve mikrofonlu stereo kulaklıklarda ses çalmayı DESTEKLEMELİDİR.
- [C-1-2] CTIA pin çıkış sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR.
- [C-1-3], mikrofon ve ses fişindeki toprak iletkenleri arasında aşağıdaki 3 eşdeğer empedans aralığı için algılamayı ve anahtar kodlarını eşlemeyi DESTEKLEMELİDİR:
- 70 ohm veya daha düşük:
KEYCODE_HEADSETHOOK
- 210-290 ohm:
KEYCODE_VOLUME_UP
- 360-680 ohm:
KEYCODE_VOLUME_DOWN
- 70 ohm veya daha düşük:
- [C-1-4] fiş takıldığında
ACTION_HEADSET_PLUG
işlevinin tetiklenmesi ZORUNLUDUR, ancak yalnızca fişteki tüm temas noktaları jaktaki ilgili segmentlerine dokunduktan sonra olur. - [C-1-5] 32 ohm hoparlör empedansı üzerindeki çıkış voltajının en az 150 mV ±% 10'u kadar sürüş kapasitesine sahip olmalıdır.
- [C-1-6] 1,8 V ~ 2,9 V arasında bir mikrofon sapma voltajı OLMALIDIR.
- [C-1-7], mikrofon ve ses fişi üzerindeki toprak iletkenleri arasındaki eşdeğer empedans aralığına ait aşağıdaki eşdeğer empedans aralığını algılamalı ve anahtar kodu ile eşlenmelidir:
- 110-180 ohm:
KEYCODE_VOICE_ASSIST
- 110-180 ohm:
- [C-SR-2] OMTP sabitleme sırasına sahip ses fişlerini desteklemesi için ÖNEMLE ÖNERİLİR.
- [C-SR-3] Mikrofonlu stereo mikrofonlu kulaklıklardan gelen ses kaydını desteklemesi için ÖNEMLE ÖNERİLİR.
Cihaz uygulamalarında 4 iletkenli 3,5 mm ses jakı varsa ve mikrofonu
destekliyorsa ve ekstra değer mikrofonu 1 olarak ayarlanmış şekilde android.intent.action.HEADSET_PLUG
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 özel gereksinimler için Bölüm 2.2.1'e bakın.
7.8.3. Yakın-Ultrasound
Yakın Ultrasound ses, 18,5 kHz ila 20 kHz'lik banttır.
Cihaz uygulamaları:
- AudioManager.getProperty API'si aracılığıyla ultrasona yakın ses desteği desteğini aşağıdaki şekilde doğru şekilde BİLDİRMELİDİR:
PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND
değeri "true" ise VOICE_RECOGNITION
ve UNPROCESSED
ses kaynakları aşağıdaki şartların karşılanması gerekir:
- [C-1-1] 18,5 kHz ile 20 kHz aralığındaki bir bantta mikrofonun ortalama güç yanıtının, 2 kHz'deki yanıtın en fazla 15 dB altında olması ZORUNLUDUR.
- [C-1-2] -26 dBFS'de 19 kHz ton için mikrofonun 18,5 kHz-20 kHz üzerindeki ağırlıklandırılmamış sinyal-gürültü oranı 50 dB'den düşük olmamalıdır.
PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND
değeri "true" ise:
- [C-2-1] Konuşmacının 18,5 kHz-20 kHz aralığındaki ortalama yanıtı, 2 kHz'lik yanıtın 40 dB'den düşük olmaması ZORUNLUDUR.
7.8.4. Sinyal Bütünlüğü
Cihaz uygulamaları:
- Avuç içi cihazlardaki hem giriş hem de çıkış akışları için sorunsuz bir ses sinyali yolu SAĞLANMALIDIR. Yol başına bir dakikalık test sırasında ölçülen sıfır arızayla tanımlanır. OboeTester "Otomatik Arıza Testi"ni kullanarak test edin.
Test için doğrudan 3,5 mm'lik jakta ve/veya USB-C - 3, 5 mm'lik adaptörle birlikte kullanılan ses geri döngü donanım kilidi gerekir. Tüm ses çıkış bağlantı noktaları SAĞLANMALIDIR.
OboeTester şu anda AAudio yollarını desteklemektedir. Bu nedenle, aşağıdaki kombinasyonların hatalara karşı AAudio kullanılarak test edilmesi GEREKİR:
Performans Modu | Paylaşılıyor | Dışarıdan Örnek Oranı | Fırsat Dostu | Kaçırmayın |
---|---|---|---|---|
DÜŞÜK_GECİKEN | ÖZEL | BELİRTİLMEDİ | 1 | 2 |
DÜŞÜK_GECİKEN | ÖZEL | BELİRTİLMEDİ | 2 | 1 |
DÜŞÜK_GECİKEN | PAYLAŞILDI | BELİRTİLMEDİ | 1 | 2 |
DÜŞÜK_GECİKEN | PAYLAŞILDI | BELİRTİLMEDİ | 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ışın, 2000 Hz sinüs için Sinyal-Gürültü Oranı (SNR) ve Toplam Harmonik Distorsiyon (THD) kriterlerini karşılaması GEREKİR.
Dönüştürücü | HDH | SES |
---|---|---|
birincil dahili hoparlör (harici referans mikrofon kullanılarak ölçülür) | < %3,0 | >= 50 dB |
harici referans hoparlör kullanılarak ölçülen birincil yerleşik mikrofon | < %3,0 | >= 50 dB |
yerleşik analog 3,5 mm jaklar, geri döngü adaptörüyle test edilmiştir | <%1 | >= 60 dB |
Telefonla birlikte verilen, geri döngü adaptörüyle test edilmiş USB adaptörleri | < %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şturmaya yönelik API'ler ve olanaklar sunar. Cihaz uygulamalarının, bu bölümde ayrıntılı olarak açıklandığı şekilde bu API'leri ve davranışları doğru bir şekilde uygulaması ZORUNLUDUR.
7.9.1. Sanal Gerçeklik Modu
Android, VR Modu desteği sunar. Bu özellik, bir VR uygulaması kullanıcı odaklıyken bildirimlerin stereoskopik olarak oluşturulmasını sağlar ve monoküler 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ğinin olması ZORUNLUDUR.
- [C-1-2] tarafından
android.hardware.vr.high_performance
özelliğinin beyan edilmesi ZORUNLUDUR. - [C-1-3] Sürekli performans modunu DESTEKLEMELİDİR.
- [C-1-4] OpenGL ES 3.2'yi DESTEKLEMELİDİR.
- [C-1-5],
android.hardware.vulkan.level
0'ı DESTEKLEMELİDİR. android.hardware.vulkan.level
1 veya sonraki sürümleri DESTEKLEMELİDİR.- [C-1-6] UYGULAMASI ZORUNLUDUR
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
ve mevcut uzantıların EGL'de gösterilmesini sağlayın. - [C-1-8]'in
GL_EXT_multisampled_render_to_texture2
,GL_OVR_multiview
,GL_OVR_multiview2
,GL_EXT_protected_textures
özelliğini uygulaması ve mevcut GL uzantıları listesinde uzantıları göstermesi ZORUNLUDUR. - [C-SR-1]
GL_EXT_external_buffer
,GL_EXT_EGL_image_array
,GL_OVR_multiview_multisampled_render_to_texture
uygulamaları ve uzantıları mevcut GL uzantıları listesinde göstermeleri ÖNEMLE ÖNERİLİR. - [C-SR-2] Vulkan 1.1'i desteklemeleri Kesinlikle ÖNERİLİR.
- [C-SR-3]
VK_ANDROID_external_memory_android_hardware_buffer
,VK_GOOGLE_display_timing
,VK_KHR_shared_presentable_image
uygulamalarını uygulanması ve mevcut Vulkan uzantıları listesinde göstermeleri ÖNEMLE ÖNERİLİR. - [C-SR-4]
flags
değerinin hemVK_QUEUE_GRAPHICS_BIT
hem deVK_QUEUE_COMPUTE_BIT
içerdiği vequeueCount
değerinin en az 2 olduğu en az bir Vulkan sırası ailesinin açığa çıkarılması ÖNEMLE ÖNERİLİR. - [C-1-7] GPU ve ekranın, paylaşılan ön arabelleğe erişimi senkronize edebilmesi ZORUNLUDUR. Böylece, 60 fps'de VR içeriğinin iki oluşturma bağlamıyla dönüşümlü olarak oluşturulması, görünür yırtılma yapıları olmadan gösterilir.
- [C-1-9], NDK'da açıklandığı gibi
AHardwareBuffer
AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER
,AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA
veAHARDWAREBUFFER_USAGE_PROTECTED_CONTENT
işaretleri için destek uygulaması ZORUNLUDUR. - [C-1-10], kullanım işaretlerinin herhangi bir kombinasyonuyla
AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT
,AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE
,AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT
en az şu biçimler içinAHardwareBuffer
desteği uygulamalıdır:AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM
,AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM
,AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM
,AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT
. - [C-SR-5] Birden fazla katman ve C-1-10'da belirtilen işaretler ve biçimlerle
AHardwareBuffer
öğelerinin ayrılmasını desteklemesi için ÖNEMLE ÖNERİLİR. - [C-1-11], ortalama 40 Mb/sn (30 fps-10 Mb/sn - 10 Mb/sn 20 Mb/sn veya 60 fps 20 x 10 fp2 0 x 10 fps 20 fps'de ortalama 40 Mb/sn'ye sıkıştırılmış olarak) 30 fps'de en az 3840 x 2160 H.260 kod çözmeyi desteklemelidir.
- [C-1-12] HEVC ve VP9'U DESTEKLEMELİDİR. 10 Mb/sn. Sıkıştırılmış 30 fps'de en az 1.920 x 1.080 kod çözme kabiliyetine sahip olmalıdır ve 30 Mb/sn 30 fps-20 = 30 fps-20 = 30 fps-20 Mb/sn 3840 x 2160'ın kodunu çözebilmelidir.
- [C-1-13],
HardwarePropertiesManager.getDeviceTemperatures
API'yi desteklemeli ve deri sıcaklığı için doğru değerleri döndürmelidir. - [C-1-14] yerleşik bir ekrana sahip olması ve çözünürlüğünün en az 1920 x 1080 olması ZORUNLUDUR.
- [C-SR-6] En az 2560 x 1440 ekran çözünürlüğüne sahip olmaları ÖNEMLE ÖNERİLİR.
- [C-1-15] VR Modu'ndayken ekranın en az 60 Hz güncellenmesi ZORUNLUDUR.
- [C-1-17] Ekranın, 5 milisaniyeden az kalıcı kalıcı bir düşük kalıcılık modunu desteklemesi gerekir. Kalıcılık, bir pikselin ışık yaktığı süre olarak tanımlanır.
- [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı bölüm 7.4.3'ü DESTEKLEMELİDİR.
- [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_ACCELEROMETER
TYPE_ACCELEROMETER_UNCALIBRATED
TYPE_GYROSCOPE
TYPE_GYROSCOPE_UNCALIBRATED
TYPE_MAGNETIC_FIELD
TYPE_MAGNETIC_FIELD_UNCALIBRATED
- [C-SR-7] Yukarıda listelenen tüm Doğrudan Kanal Türleri için
TYPE_HARDWARE_BUFFER
doğrudan kanal türünü desteklemesi ÖNERİLİR. - [C-1-21], bölüm 7.3.9'da belirtildiği gibi
android.hardware.hifi_sensors
için jiroskop, ivme ölçer ve manyetometreyle ilgili gereksinimleri karşılamalıdır. - [C-SR-8]
android.hardware.sensor.hifi_sensors
özelliğini desteklemesi için ÖNEMLE ÖNERİLİR. - [C-1-22] foton gecikmesi arasında uçtan uca hareketin 28 milisaniyeden uzun olmaması ZORUNLUDUR.
- [C-SR-9] Foton gecikmesine göre uçtan uca hareketin 20 milisaniyeden uzun olmaması ÖNEMLE ÖNERİLİR.
- [C-1-23] birinci kare oranına sahip olmalıdır. Bu, siyahtan beyaza geçişten sonra ilk karedeki piksellerin parlaklığı ile sabit durumda beyaz piksellerin parlaklığı arasındaki orandır. Bu oran, en az %85'tir.
- [C-SR-10] İlk kare oranının en az %90 olması ÖNEMLE ÖNERİLİR.
- Ön plan uygulamasına özel bir çekirdek sağlayabilir ve en üstteki ön plan uygulamasına özel CPU çekirdeklerinin sayısını döndürmek için
Process.getExclusiveCores
API'yi DESTEKLEYEBİLİR.
Özel çekirdek destekleniyorsa çekirdek:
- [C-2-1] başka herhangi bir kullanıcı alanı işleminin (uygulama tarafından kullanılan cihaz sürücüleri hariç) çalıştırılmasına izin VERMEMELİDİR, ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına izin SAĞLAYABİLİR.
7:10. Dokunma teknolojisi
Yeni koşullarla başlayın
Elde tutulması veya kullanılması amaçlanan cihazlar arasında, uygulamaların zil sesleri, alarmlar, bildirimler ve genel dokunma geri bildirimi aracılığıyla dikkat çekme gibi amaçlarla kullanılabilen genel amaçlı bir dokunma teknolojisi aktüatörü olabilir.
Cihaz uygulamaları bu tür genel amaçlı bir dokunma teknolojisi aktüatörü İÇERMEZSE:
- [7.10/C]
Vibrator.hasVibrator()
için false (yanlış) değerini döndürmelidir.
Cihaz uygulamaları bu tür en az bir genel amaçlı dokunsal aktüatör içeriyorsa:
- [C-1-1],
Vibrator.hasVibrator()
için doğru değerini döndürmelidir. - Eksantrik dönen kütle (ERM) dokunsal aktüatör (titreşim) KULLANMAMALIDIR.
android.view.HapticFeedbackConstants
'te net dokunma teknolojisi için tüm herkese açık sabit değerleri (CLOCK_TICK
,CONTEXT_CLICK
,KEYBOARD_PRESS
,KEYBOARD_RELEASE
,KEYBOARD_TAP
,LONG_PRESS
,TEXT_HANDLE_MOVE
,VIRTUAL_KEY
,VIRTUAL_KEY_RELEASE
,CONFIRM
,REJECT
,GESTURE_START
veGESTURE_END
) UYGULAMALIDIR.- Net dokunma teknolojisi için tüm herkese açık sabit değerleri
android.os.VibrationEffect.Composition
android.os.VibrationEffect
LOW_TICK
veTICK
ve bunlarınQUICK_FALL
ve {180'LOW_TICK
ve {180 en düşük öğelerin bazıları (QUICK_FALL
ve {180LOW_TICK
ve bunlarınQUICK_FALL
ve {180'QUICK_FALL
) için uygulanabilir herkese açıkPRIMITIVE_*
sabit değerleri nispetenEFFECT_TICK
EFFECT_CLICK
EFFECT_HEAVY_CLICK
EFFECT_DOUBLE_CLICK
CLICK
QUICK_RISE
SLOW_RISE
SPIN
SPIN
THUD
- Karşılık gelen genlik ilişkileriyle birlikte
android.view.HapticFeedbackConstants
içindeki genel sabit değerleri önerilenandroid.os.VibrationEffect
sabitleriyle eşleme rehberine UYUNMALIDIR. - Bu bağlantılı dokunma teknolojisi eşlemelerini KULLANMALISINIZ.
createOneShot()
vecreateWaveform()
API'leri için kalite değerlendirmesini UYGULAMALIDIR.- Herkese açık
android.os.Vibrator.hasAmplitudeControl()
API sonucunun titreşim aracının özelliklerini doğru şekilde yansıttığını doğrulayın. android.os.Vibrator.hasAmplitudeControl()
çalıştırarak genlik ölçeklenebilirliği özelliklerini doğrulamanız GEREKİR.
Cihaz uygulamaları, dokunma teknolojisi sabitleri eşlemesini izlerse:
android.os.Vibrator.areAllEffectsSupported()
veandroid.os.Vibrator.arePrimitivesSupported()
API'lerini çalıştırarak uygulama durumunu doğrulamanız GEREKİR.- Dokunsal sabitler için kalite değerlendirmesi YAPILMALIDIR.
- Sabit değerler için uygulama kılavuzunda açıklandığı şekilde, desteklenmeyen temel öğeler için yedek yapılandırmayı doğrulayıp gerekirse güncellemeniz GEREKİR.
- Başarısızlık riskini azaltmak için burada açıklandığı şekilde yedek desteği SUNMALISINIZ.
Yeni şartları sonlandırma
Cihaza özel gereksinimler için Bölüm 2.2.1'e bakın.
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'den edinilebilir. Medya performans sınıfı gereksinimleri, R ile başlayan her Android sürümü (sürüm 30) için tanımlanmıştır. 0 özel değeri, cihazın bir medya performans sınıfında olmadığını belirtir.
Cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için sıfır dışında bir değer döndürürse:
[C-1-1] en az
android.os.Build.VERSION_CODES.R
değerini döndürmelidir.[C-1-2] Avuç içi cihaz uygulaması ZORUNLUDUR.
[C-1-3] Bölüm 2.2.7'de açıklanan "Medya Performans Sınıfı" ile ilgili tüm şartları KARŞILAMALIDIR.
Başka bir deyişle, Android T'deki medya performans sınıfı yalnızca T, S veya R sürümündeki avuç içi cihazlar için tanımlanır.
Cihaza özel gereksinimler için bölüm 2.2.7'ye bakın.
8. Performans ve Güç
Bazı minimum performans ve güç ölçütleri, kullanıcı deneyimi açısından kritik öneme sahiptir ve geliştiricilerin uygulama geliştirirken üstleneceği varsayımları etkiler.
8.1. Kullanıcı Deneyiminde Tutarlılık
Uygulamalar ve oyunlarda tutarlı bir kare hızı ve yanıt süreleri sağlamak için belirli minimum gereksinimlerin karşılanması durumunda son kullanıcıya sorunsuz bir kullanıcı arayüzü sağlanabilir. Cihaz türüne bağlı olarak, cihaz uygulamalarında 2. bölümde açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev değiştirme için ölçülebilir gereksinimler OLABİLİR.
8.2. Dosya G/Ç Erişim Performansı
Uygulamanın özel veri depolamasında (/data
bölümü) tutarlı bir dosya erişimi performansı için ortak bir temel sağlamak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak doğru bir beklenti belirlemelerini sağlar. Cihaz uygulamalarına bağlı olarak, aşağıdaki okuma ve yazma işlemleriyle ilgili 2. bölümde açıklanan belirli gereksinimler OLABİLİR:
- Sıralı yazma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazılmasıyla ölçülür.
- Rastgele yazma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazarak ölçülür.
- Sıralı okuma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülü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'ye dahil olan, cihaz güç yönetimini iyileştirecek özellikler (ör. Uygulama Bekletme Paketi, Doz) içeriyorsa veya özelliklerin kapsamını KISITLANMIŞ Uygulama Bekleme Paketi'nden daha güçlü kısıtlamalar uygulayacak şekilde genişletiyorsa:
- [C-1-1] tetikleme, bakım, uyandırma algoritmaları ve genel sistem ayarlarının ya da Uygulama Bekletme ve Doz güç tasarrufu modlarının DeviceConfig kullanımı için AOSP uygulamasından AYRICA ALMAMALIDIR.
- [C-1-2], Uygulama bekleme moduna yönelik olarak her bir paketteki işlerin, alarmın ve ağın kısıtlanmasını yönetmek amacıyla genel ayarların veya DeviceConfig'in kullanımı için AOSP uygulamasından AYRILMAMALIDIR.
- [C-1-3], Uygulamayı Beklemeye Alma için kullanılan Uygulama Bekleme Paketleri sayısı için AOSP uygulamasından AYRICA ALMAMALIDIR.
- [C-1-4], Güç Yönetimi'nde açıklandığı gibi Uygulama Bekleme Paketleri ve Doz'u uygulaması ZORUNLUDUR.
- [C-1-5], cihaz güç tasarrufu modundayken
PowerManager.isPowerSaveMode()
içintrue
geri dönmelidir. - [C-1-6]; Uygulama Bekletme ve Doz güç tasarrufu modlarından veya herhangi bir pil optimizasyonundan muaf olan tüm uygulamaları görüntülemesi için kullanıcıya gerekli parayı sağlamalı ve kullanıcıdan bir uygulamanın pil optimizasyonlarını yoksaymasına izin vermesini istemek için ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS niyetini uygulaması ZORUNLUDUR.
- [C-SR-1] Pil tasarrufu özelliğini etkinleştirmesi ve devre dışı bırakması için kullanıcıya ödeme yapılması GERÇEKTEN ÖNERİLİR.
- [C-SR-2] Uygulama Bekletme ve Doz Güç Tasarrufu modlarından muaf olan tüm uygulamaları görüntülemesi için kullanıcıya destek vermesi ÖNERİLİR.
Cihaz uygulamaları, AOSP'de yer alan güç yönetimi özelliklerinin kapsamını genişletiyorsa ve bu uzantı Nadir Uygulama Bekleme Paketi'nden daha katı kısıtlamalar uyguluyorsa bölüm 3.5.1'e bakın.
Güç tasarrufu modlarına ek olarak, Android cihaz uygulamaları Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) tarafından tanımlanan 4 uyku gücü durumunun herhangi birini veya tümünü uygulayabilir.
Cihaz uygulamaları, ACPI tarafından tanımlandığı şekilde S4 güç durumlarını uygularsa:
- [C-1-1] bu duruma, yalnızca kullanıcı cihazı etkin olmayan duruma getirmek için açık bir işlem yaptıktan sonra (ör. fiziksel olarak cihazın parçası olan bir kapağı kapatarak veya bir aracı ya da televizyonu kapatarak) ve kullanıcı cihazı yeniden etkinleştirmeden (ör. kapağı açarak veya aracı ya da televizyonu tekrar açarak) önce bu duruma girmelidir.
Cihaz uygulamaları, ACPI tarafından tanımlanan S3 güç durumlarını uygularsa:
[C-2-1] yukarıdaki C-1-1'i karşılamalıdır veya yalnızca üçüncü taraf uygulamaları sistem kaynaklarına (ör. ekran, CPU) ihtiyaç duymadığında S3 durumuna girmelidir.
Diğer yandan, bu SDK'da açıklandığı gibi üçüncü taraf uygulamalar sistem kaynaklarına ihtiyaç duyduğunda S3 durumundan çıkılması ZORUNLUDUR.
Örneğin, üçüncü taraf uygulamaları
FLAG_KEEP_SCREEN_ON
boyunca ekranı açık tutma veya CPU'yuPARTIAL_WAKE_LOCK
tarihine kadar çalıştırma isteğinde bulunurken, kullanıcı C-1-1'de açıklandığı gibi kullanıcı cihazı etkin olmayan duruma getirmek için açık bir işlem yapmadığı sürece cihaz S3 durumuna GİRMEMELİDİR. Buna karşılık, üçüncü taraf uygulamalarının JobScheduler üzerinden uyguladığı bir görev tetiklendiğinde veya Firebase Cloud Messaging üçüncü taraf uygulamalarına yayınlandığında, kullanıcı cihazı etkin olmayan duruma getirmedikçe cihazın S3 durumundan çıkması ZORUNLUDUR. Bunlar kapsamlı örnekler değildir ve AOSP, bu durumdan bir uyandırma tetikleyen kapsamlı uyandırma sinyalleri uygular.
8.4. Güç Tüketimi Hesaplaması
Güç tüketiminin daha doğru bir şekilde hesaplanması ve raporlanması, uygulama geliştiriciye uygulamanın güç kullanım düzenini optimize edecek teşvikler ve araçlar sağlar.
Cihaz uygulamaları:
- [C-SR-1] Android Açık Kaynak Projesi sitesinde belirtildiği üzere, her bir donanım bileşeni için mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili sağlanması ÖNERİLİR.
- [C-SR-2] Tüm güç tüketimi değerlerini milisaniye cinsinden (mAh) raporlamak için ÖNEMLE ÖNERİLİR.
- [C-SR-3] Her işlemin UID'sine göre CPU güç tüketimini raporlamak için ÖNEMLE ÖNERİLİR.
Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülünün uygulanması aracılığıyla bu gereksinimi karşılar. - [C-SR-4] Bu güç kullanımını uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla sunmak için ÖNEMLE ÖNERİLİR. - Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemezse donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.
8.5. Tutarlı performans
Arka planda çalışan diğer uygulamalar veya sıcaklık sınırları nedeniyle CPU'nun kısıtlanması nedeniyle, yüksek performanslı ve uzun süre çalışan uygulamalarda performans önemli ölçüde dalgalanabilir. Android'de programatik arayüzler bulunur. Böylece, cihaz uygun olduğunda ön plandaki uygulama, sistemin bu tür dalgalanmaları gidermek için kaynak tahsisini optimize etmesini isteyebilir.
Cihaz uygulamaları:
[C-0-1], sürdürülebilir performans modu desteğini
PowerManager.isSustainedPerformanceModeSupported()
API yöntemini kullanarak doğru bir şekilde BİLDİRMELİDİR.Sürdürülebilir Performans Modu'nu DESTEKLEMELİDİR.
Cihaz uygulamaları Sürdürülebilir Performans Modu'nu desteklediğini bildiriyorsa:
- [C-1-1] uygulama istekte bulunduğunda, en üst ön plan uygulamasına en az 30 dakika boyunca tutarlı bir performans düzeyi sağlamalıdır.
- [C-1-2],
Window.setSustainedPerformanceMode()
API ve diğer ilgili API'lere UYMALIDIR.
Cihaz uygulamaları iki veya daha fazla CPU çekirdeği içeriyorsa:
- Üst ön plan uygulaması tarafından ayırtılabilecek en az bir tane özel çekirdek sağlanmalıdır.
Cihaz uygulamaları, üst ön plan uygulaması için tek bir özel çekirdeğin ayrılmasını destekliyorsa bunlar:
- [C-2-1], en üst ön plan uygulaması tarafından ayırtılabilecek özel çekirdeklerin kimlik numaralarını
Process.getExclusiveCores()
API yöntemi aracılığıyla Bildirmelidir. - [C-2-2], uygulama tarafından özel çekirdeklerde çalışmak için kullanılan cihaz sürücüleri dışında hiçbir kullanıcı alanı işlemine izin VERMEMELİDİR, ancak bazı çekirdek işlemlerinin gerektiğinde çalışmasına izin verebilir.
Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:
- [C-3-1],
Process.getExclusiveCores()
API yöntemiyle boş bir liste döndürmelidir.
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamaları:
[C-0-1] Android geliştirici belgelerindeki API'lerde yer alan Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.
[C-0-2], herhangi bir üçüncü taraftan/yetkiliden ek izin/sertifika gerekmeden kendinden imzalı uygulamaların yüklenmesini desteklemelidir.
Cihaz uygulamaları android.hardware.security.model.compatible
özelliğini
bildiriyorsa:
- [C-1-1] aşağıdaki alt bölümlerde belirtilen gereksinimleri DESTEKLEMELİDİR.
9.1. İzinler
Cihaz uygulamaları:
[C-0-1], Android geliştirici belgelerinde tanımlandığı gibi Android izin modelini ve Android Rol Modelini DESTEKLEMELİDİR. Özellikle, SDK belgelerinde açıklanan şekilde her izni ve rolü zorunlu kılmaları gerekir. Hiçbir izin ve rol atlanamaz, değiştirilemez veya yoksayılamaz.
Yeni izin kimliği dizelerinin
android.\*
ad alanında olmaması durumunda ek izinler EKLENEBİLİR.[C-0-2]
PROTECTION_FLAG_PRIVILEGED
protectionLevel
içeren izinlerin, yalnızca sistem görüntüsünün ayrıcalıklı yollarına (ve APEX dosyalarına) önceden yüklenmiş uygulamalara ve her uygulama için açıkça izin verilenler listesine eklenmiş izinlerin alt kümesinde bulunan uygulamalara izin verilmesi ZORUNLUDUR. AOSP uygulaması, izin verilenler listesindeki yolda ve yolda her uygulama için izin verilenler listesindeki izinleri okuyup dikkate alarak bu şartı karşılar.etc/permissions/
system/priv-app
Tehlikeli koruma seviyesi olan izinler, çalışma zamanında istenen izinlerdir.
targetSdkVersion
> 22 değerine sahip uygulamalar bunları çalışma zamanında ister.
Cihaz uygulamaları:
- [C-0-3] Kullanıcıya, istenen çalışma zamanı izinlerini verip vermeyeceğinize karar vermesi için özel bir arayüz göstermeli ve kullanıcının çalışma zamanında istenen izinleri yönetebileceği bir arayüz sunmalıdır.
- [C-0-4] her iki kullanıcı arayüzünden de yalnızca bir tanesinin uygulanması ZORUNLUDUR.
[C-0-5], aşağıdaki durumlar haricinde uygulamalara çalışma zamanında istenen izin VERMEMELİDİR:
- Cihazın sevkiyatı sırasında yüklenirler VE
Uygulama, izni kullanmadan önce kullanıcının izni alınabilir.
VEYA
Çalışma zamanı izinleri varsayılan izin politikası tarafından veya bir platform rolüne sahip olduğunuz için verilir.
[C-0-6]
android.permission.RECOVER_KEYSTORE
izninin yalnızca düzgün şekilde korunmuş bir Kurtarma Aracısı kaydeden sistem uygulamalarına verebilmesi gerekir. Düzgün bir şekilde güvenlik altına alınmış bir Kurtarma Aracısı, cihaz dışındaki bir uzaktan depolama alanıyla senkronize olan, Google Cloud Key Vault Hizmeti'nde açıklanandan daha güçlü veya kilit ekranı bilgi faktörüne yönelik kaba kuvvet saldırıları önleyen güvenli donanıma sahip güvenli donanıma sahip cihaz üzerinde yazılım aracısı olarak tanımlanır.
Cihaz uygulamaları:
Bir uygulama, standart Android API veya özel mekanizma üzerinden konum veya fiziksel aktivite verilerini istediğinde [C-0-7] Android konum izni özelliklerine bağlı kalmalıdır. Bu tür veriler aşağıdakileri kapsar 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ırması.
Daha ayrıntılı belirtmek gerekirse, cihaz uygulamaları:
- [C-0-8] Bir uygulamanın konum veya fiziksel aktivite verilerine erişmesine izin vermek için kullanıcıdan izin alması ZORUNLUDUR.
- [C-0-9], YALNIZCA SDK'da açıklandığı şekilde yeterli izne sahip olan uygulamaya çalışma zamanında izin vermelidir.
Örneğin, TelephonyManager#getServiceState için
android.permission.ACCESS_FINE_LOCATION
gerekir.)
Yukarıdaki Android konum izni özelliklerine ilişkin tek istisna, kullanıcı konumunu elde etmek veya tanımlamak için Konum'a erişmeyen uygulamalar içindir. Özellikle:
- Uygulamalar
RADIO_SCAN_WITHOUT_LOCATION
iznine sahip olduğunda. - Sistem uygulamalarının
NETWORK_SETTINGS
veyaNETWORK_SETUP_WIZARD
iznine sahip olduğu cihaz yapılandırması ve kurulumu için.
İzinler, davranışlarını değiştiren kısıtlı olarak işaretlenebilir.
[C-0-10]
hardRestricted
işaretiyle işaretlenen izinler, aşağıdaki durumlar söz konusu değilse bir uygulamaya VERİLMEMELİDİR:- Sistem bölümünde bir uygulama APK dosyası var.
- Kullanıcı, bir uygulamaya
hardRestricted
izinleriyle ilişkili bir rol atar. - Yükleyici,
hardRestricted
iznini bir uygulamaya verir. - Önceki Android sürümünde bir uygulamaya
hardRestricted
izni verilir.
[C-0-11]
softRestricted
iznine sahip uygulamalar, SDK'da açıklandığı gibi izin verilenler listesine eklenene kadar sınırlı erişime sahip OLMAMALIDIR ve hersoftRestricted
izni için tam ve sınırlı erişim tanımlanmıştır (örneğin,READ_EXTERNAL_STORAGE
).[C-0-12] setPermissionPolicy ve setPermissionGrantState API'lerinde tanımlanan izin kısıtlamalarını atlayacak herhangi bir özel işlev veya API SAĞLAMAMALIDIR.
[C-0-13] Android etkinliklerinden ve hizmetlerinden gelen tehlikeli izinlerle korunan verilere tüm programatik erişimini kaydetmek ve izlemek için AppOpsManager API'lerini kullanmalıdır.
[C-0-14] Yalnızca rol gereksinimlerini karşılayan işlevlere sahip olan uygulamalara rol atanması ZORUNLUDUR.
[C-0-15], platform tarafından tanımlanan rollerin yinelenen veya üst kümesi işlevleri olan rolleri tanımlamaması ZORUNLUDUR.
android.software.managed_users
bildiren cihazlar:
- [C-1-1] Yönetici tarafından aşağıdaki izinleri sessizce VERMEMELİDİR:
- Konum (ACCESS_BACKGROUND_LOCATION, ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION).
- Kamera (KAMERA)
- Mikrofon (RECORD_AUDIO)
- Vücut sensörü (BODY_SENSORS)
- Fiziksel aktivite (ACTIVITY_RECOGNITION)
Cihaz uygulamaları, kullanıcıya ACTION_MANAGE_OVERLAY_PERMISSION
amacına uygun bir etkinlik içeren diğer uygulamaların üzerinde hangi uygulamaların çizim yapabileceğini seçme hakkını sağlıyorsa:
- [C-2-1], başlatan uygulamadan veya sağladığı bilgilerden bağımsız olarak,
ACTION_MANAGE_OVERLAY_PERMISSION
amacı için intent filtrelerine sahip tüm etkinliklerin aynı kullanıcı arayüzü ekranına sahip olmasını ZORUNLUDUR.
Cihaz uygulamaları android.software.device_admin öğesini raporlarsa:
- [C-3-1] Tümüyle yönetilen cihaz kurulumu sırasında (cihaz sahibi kurulumu) BT yöneticisinin, telefondaki izinleri (yöneticinin cihaz izinlerini kontrol etmemeyi devre dışı bırakmadığı sürece) kullanıcılara kuruluma devam etme veya kurulumdan çıkma seçenekleri ile birlikte mikrofon, kamera ve konum gibi ayarları kontrol etme izni verebileceğini belirten bir sorumluluk reddi beyanı GÖRÜNTÜLEMELİDİR.
Cihaz uygulamaları; System UI Intelligence, System Ambient Audio Intelligence, System Audio Intelligence, System Notification Intelligence, System Text Intelligence veya System Visual Intelligence rollerinden herhangi birine sahip paketleri önceden yüklüyorsa paketler:
- [C-4-1]
"9.8.6 İçerik Yakalama""9.8.6 OS düzeyi ve ortam verileri ile 9.8.15 Korumalı Alana Sahip API uygulamaları" bölümünde cihaz uygulamalarıyla ilgili tüm şartları yerine getirmesi ZORUNLUDUR.
- [C-4-2] android.permission.INTERNET iznine sahip OLMAMALIDIR. Bu, bölüm 9.8.6'da listelenen ÖNEMLE ÖNERİLENDEN daha katıdır.
- [C-4-3] Bluetooth, Kişiler, Medya, Telefon, SystemUI ve İnternet API'lerini sağlayan bileşenler dışında diğer uygulamalara BAĞLANMAMALIDIR. Bu, bölüm 9.8.6'da listelenen ÖNEMLE ÖNERİLENLER'den daha katıdır.
Yeni koşullarla başlayın
Cihaz uygulamaları, VoiceInteractionService
destekleyen bir varsayılan uygulama içeriyorsa:
- [C-5-1] bu uygulama için varsayılan olarak
ACCESS_FINE_LOCATION
hizmetini VERMEMELİDİR.
Yeni şartları sonlandırma
9.2. UID ve İşlem Yalıtımı
Cihaz uygulamaları:
- [C-0-1], her uygulamanın benzersiz bir Unixstyle UID'si olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alan modelini desteklemelidir.
- [C-0-2], uygulamaların Güvenlik ve İzinler referansında tanımlandığı gibi düzgün bir şekilde imzalanması ve oluşturulmuş olması koşuluyla, aynı Linux kullanıcı kimliğiyle birden fazla uygulamanın çalıştırılmasını DESTEKLEMELİDİR.
9.3. Dosya Sistemi İzinleri
Cihaz uygulamaları:
- [C-0-1], Güvenlik ve İzinler referansında tanımlanan şekilde Android dosya erişimi izinleri modelini desteklemelidir.
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 uygulama yürüten çalışma zamanı ortamları içerse bile, Android güvenlik ve izin modelinin tutarlılığını koruması ZORUNLUDUR. Başka bir deyişle:
[C-0-1] Alternatif çalışma zamanlarının kendilerinin Android uygulamaları olması ve 9. bölümde diğer bölümlerde açıklandığı gibi standart Android güvenlik modeline uyması ZORUNLUDUR.
[C-0-2] Alternatif çalışma zamanlarına, <
uses-permission
> mekanizması üzerinden çalışma zamanınınAndroidManifest.xml
dosyasında talep edilmeyen izinlerle korunan kaynaklara erişim VERİLMEMELİDİR.[C-0-3] Alternatif çalışma zamanları, uygulamaların, sistem uygulamalarıyla sınırlı olan Android izinleriyle korunan özellikleri kullanmasına İZİN VERMEMELİDİR.
[C-0-4] Alternatif çalışma zamanlarının Android korumalı alan modeline UYMALI ve alternatif bir çalışma zamanı kullanan yüklenen uygulamalar, paylaşılan kullanıcı kimliği ve imzalama sertifikasının standart Android mekanizmaları dışında cihazda yüklü başka bir uygulamanın korumalı alanını yeniden KULLANMAMALIDIR.
[C-0-5] Alternatif çalışma zamanları, diğer Android uygulamalarına karşılık gelen korumalı alanlarla BAŞLATILMAMALIDIR veya bu alanlara erişim izni VERMEMELİDİR.
[C-0-6] Alternatif çalışma zamanları, süper kullanıcının (kök) veya başka bir kullanıcı kimliğinin herhangi bir ayrıcalığıyla BAŞLATILMAMALIDIR, başka uygulamalara verilemez veya başka uygulamalara verilemez.
[C-0-7] Alternatif çalışma zamanlarına ait
.apk
dosyaları cihaz uygulamalarının sistem görüntüsüne eklendiğinde, bu dosyaların cihaz uygulamalarına dahil olan diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla imzalanması ZORUNLUDUR.[C-0-8] Alternatif çalışma zamanları, uygulamaları yüklerken, uygulama tarafından kullanılan Android izinleri için kullanıcının iznini alması ZORUNLUDUR.
[C-0-9] Bir uygulamanın, karşılık gelen Android izni (ör. Kamera, GPS vb.) olan bir cihaz kaynağını kullanması gerektiğinde, alternatif çalışma zamanı kullanıcıya uygulamanın bu kaynağa erişebileceğini bildirmelidir.
[C-0-10] Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmediğinde, bu çalışma zamanını kullanan herhangi bir uygulamayı yüklerken çalışma zamanı ortamının sahip olduğu tüm izinleri LİSTELEMELİDİR.
Alternatif çalışma zamanlarının, uygulamaları
PackageManager
aracılığıyla ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemesi GEREKİR.Alternatif çalışma zamanları, alternatif çalışma zamanını kullanan tüm uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlayabilir.
9.5. Çok Kullanıcılı Destek
Android, birden fazla kullanıcı desteği içerir. Ayrıca tam kullanıcı izolasyonu ve kısmi izolasyon(android.os.usertype.profile.CLONE
türündeki tek ek kullanıcı profili) ile kullanıcı profillerini klonlama desteği sunar.
- Cihaz uygulamaları, birincil harici depolama için çıkarılabilir medya kullanıyorlarsa çoklu kullanıcı özelliğini ETKİNLEŞTİRMEYE BAŞLAMAMALIDIR.
Cihaz uygulamaları birden fazla kullanıcıya yönelik destek içeriyorsa:
- [C-1-2] Her kullanıcı için API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulaması ZORUNLUDUR.
- [C-1-3] Her kullanıcı örneği için ayrı ve izole paylaşılan uygulama depolama alanı (
/sdcard
olarak da bilinir) dizinlerine sahip olması ZORUNLUDUR. - [C-1-4] Belirli bir kullanıcının sahip olduğu ve kullanıcı adına çalıştırılan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolansa bile, başka bir kullanıcının sahip olduğu dosyaları listeleyememesi, okumaması veya bunlara yazması mümkün olmamalıdır.
- [C-1-5], çoklu kullanıcı etkinleştirildiğinde SD kartın içeriğini yalnızca sistem tarafından erişilebilen kaldırılamaz medyada depolanan bir anahtar kullanılarak şifrelemesi ZORUNLUDUR. Bunun için cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanır. Bu durum, medyayı ana makine PC tarafından okunamaz hale getireceğinden ana makine PC'lerin geçerli kullanıcının verilerine erişmesini sağlamak için MTP veya benzer bir sisteme geçmek için cihaz uygulamalarının yapılması gerekecektir.
Cihaz uygulamaları birden fazla kullanıcı desteği içeriyorsa aynı uygulamanın ikili örneklerini çalıştırmak için özel olarak oluşturulmuş kullanıcılar dışındaki tüm kullanıcılar için:
- [C-2-1] Her kullanıcı örneği için ayrı ve izole paylaşılan uygulama depolama alanı (/sdcard olarak da bilinir) dizinlerine sahip olması ZORUNLUDUR.
- [C-2-2] Belirli bir kullanıcının sahip olduğu ve 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ının sahip olduğu dosyaları listeleyememesi, okumaması veya bunlara yazması mümkün OLMALIDIR.
Cihaz uygulamaları, aynı uygulamanın ikili örneklerini ç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 ikili örnekler, kısmen izole edilmiş depolama alanını paylaşır, başlatıcıda aynı anda gösterilir ve aynı son kullanılanlar görünümünde gösterilir.
Örneğin, kullanıcının çift SIM kartlı cihaza tek bir uygulamanın iki ayrı örneğini yüklemesini desteklemek için kullanılabilir.
Cihaz uygulamaları, yukarıda açıklanan ek kullanıcı profilini oluşturursa:
- [C-3-1] yalnızca üst kullanıcı profilinin erişebildiği veya doğrudan bu ek kullanıcı profiline ait olan depolama alanına ya da verilere erişim SAĞLAMALIDIR.
- [C-3-2] Bu kimliği iş profili olarak KULLANMAMALIDIR.
- [C-3-3] Üst kullanıcı hesabından izole edilmiş özel uygulama veri dizinlerinin olması ZORUNLUDUR.
- [C-3-4] Temel hazırlığı yapılmış bir Cihaz Sahibi varsa (bkz. bölüm 3.9.1) veya ek kullanıcı profilini kaldırmadan Cihaz Sahibi'nin temel hazırlığının yapılmasına izin VERMEMELİDİR.
Yeni koşullarla başlayın
Cihaz uygulamaları, yukarıda açıklanan ek kullanıcı profilini oluşturursa:
- [C-4-5] Simgeler kullanıcılara sunulduğunda çift örnek uygulama simgelerinin görsel olarak ayırt edilebilmesini ZORUNLUDUR.
- [C-4-6] klon profili verilerinin tamamını silmek için kullanıcıya uygun bir ödeme imkanı ZORUNLUDUR.
- [C-4-7] Kullanıcı, profil klonlama verilerinin tamamını silmeyi seçtiğinde tüm uygulamaların klonlanması, özel uygulama veri dizinleri ile bunların içeriklerinin ve Klon profil verilerinin silinmesi ZORUNLUDUR.
- Son klonlama uygulaması silindiğinde kullanıcıdan, profil klonlama verilerinin tamamını silmesi GEREKİR.
- [C-4-8], kullanıcıya klon uygulaması kaldırıldığında uygulama verilerinin silineceğini bildirmeli veya uygulama cihazdan kaldırıldığında uygulama verilerini saklama seçeneği sunmalıdır.
- Kullanıcı kaldırma işlemi sırasında verileri silmeyi seçtiğinde [C-4-9], özel uygulama veri dizinlerini ve içeriklerini silmesi ZORUNLUDUR.
[C-4-1] Ek profilden kaynaklanan aşağıdaki amaçların, cihazdaki birincil kullanıcının uygulamaları tarafından işlenmesine izin verilmelidir:
Intent.ACTION_VIEW
Intent.ACTION_SENDTO
Intent.ACTION_SEND
Intent.ACTION_EDIT
Intent.ACTION_INSERT
Intent.ACTION_INSERT_OR_EDIT
Intent.ACTION_SEND_MULTIPLE
Intent.ACTION_PICK
Intent.ACTION_GET_CONTENT
MediaStore.ACTION_IMAGE_CAPTURE
MediaStore.ACTION_VIDEO_CAPTURE
[C-4-2] Tüm cihaz politikası kullanıcı kısıtlamalarını ve cihazın birincil kullanıcısına uygulanan seçili kullanıcı dışı kısıtlamaları(aşağıdaki liste) bu ek kullanıcı profiline devrilmelidir.
[C-4-3] Bu ek profildeki kişilerin yalnızca aşağıdaki amaçlar aracılığıyla yazılmasına izin verilmesi ZORUNLUDUR:
[C-4-4] Bu ek kullanıcı profilinde çalışan uygulamalar için kişi senkronizasyonlarının çalıştırılmaması ZORUNLUDUR.
- [C-4-14] Bu ek profilde çalışan uygulamalar için ayrı izne ve depolama alanı yönetimine sahip OLMALIDIR
- [C-4-5] Yalnızca ek profilde, başlatıcı etkinliği olan uygulamaların, ana kullanıcı profilinin zaten erişimi olan kişilere erişmesine izin verilmesi ZORUNLUDUR.
Yeni şartları sonlandırma
9.6. Premium SMS Uyarısı
Android, giden premium SMS mesajları konusunda kullanıcıları uyarma desteği sunar. Premium SMS mesajları, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıdan ücret talep edilebilecek kısa mesajlardır.
Cihaz uygulamaları android.hardware.telephony
için destek beyan ederse:
- [C-1-1] Cihazdaki
/data/misc/sms/codes.xml
dosyasında tanımlanan normal ifadelerle tanımlanan numaralara SMS mesajı göndermeden önce kullanıcıları uyarması ZORUNLUDUR. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılayan bir uygulama sağlar.
9.7. Güvenlik Özellikleri
Cihaz uygulamalarının, aşağıda açıklandığı gibi hem çekirdek hem de platformdaki güvenlik özellikleriyle uyumlu olması ZORUNLUDUR.
Android Sandbox, Security-Enhanced Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikler içerir. Cihaz uygulamaları:
- [C-0-1] SELinux veya Android çerçevesinin altında başka güvenlik özellikleri uygulanmış olsa bile mevcut uygulamalarla uyumluluğun sürdürülmesi ZORUNLUDUR.
- Android çerçevesinin altında uygulanan güvenlik özelliği tarafından bir güvenlik ihlali algılanıp başarıyla engellendiğinde [C-0-2] görünür bir kullanıcı arayüzüne sahip OLMAMALIDIR, ancak başarıyla bir kötüye kullanımla sonuçlanan engellenmemiş bir güvenlik ihlali meydana geldiğinde kullanıcı arayüzü görünür 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 OLMAMALIDIR.
- [C-0-4] API aracılığıyla başka bir uygulamayı etkileyebilecek uygulamaların, uyumluluğu bozan bir politika yapılandırmasına izin VERMEMELİDİR.
- [C-0-5] Android Açık Kaynak Proje sitesinde açıklandığı üzere her bir işleme daha dar kapsamlı bir şekilde erişim izni verilebilmesi için medya çerçevesini birden çok işleme bölmesi ZORUNLUDUR.
- [C-0-6], çok iş parçacıklı programlardan yapılandırılabilir bir politika kullanarak sistem çağrılarının filtrelenmesine olanak tanıyan bir çekirdek uygulamasını korumalı alana alma mekanizması ZORUNLUDUR. Yukarı akış Android Açık Kaynak Projesi, source.android.com'un Kernel Yapılandırması bölümünde açıklandığı gibi, seccomp-BPF'yi iş parçacığı grubu senkronizasyonu (TSYNC) ile etkinleştirerek bu gereksinimi karşılar.
Çekirdek bütünlüğü ve 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ına karşı koruma mekanizmalarını uygulama ZORUNLUDUR.
Bu tür mekanizmalara örnek olarak
CC_STACKPROTECTOR_REGULAR
veCONFIG_CC_STACKPROTECTOR_STRONG
verilebilir. - [C-0-8] Yürütülebilir kodun salt okunur, salt okunur verilerin yürütülebilir ve yazılabilir olmadığı ve yazılabilir verilerin de yürütülebilir olmadığı (ör.
CONFIG_DEBUG_RODATA
veyaCONFIG_STRICT_KERNEL_RWX
) katı çekirdek belleği korumaları ZORUNLUDUR. - [C-0-9], orijinal olarak API düzeyi 28 veya sonraki bir sürümle gönderilen cihazlarda, kullanıcı alanı ile çekirdek alanı (ör.
CONFIG_HARDENED_USERCOPY
) arasında statik ve dinamik nesne boyutu sınırlarının kontrol edilmesi ZORUNLUDUR. - [C-0-10] ilk olarak API düzeyi 28 veya üzeriyle gönderilen cihazlarda çekirdek modunda (ör. donanım PXN'si veya
CONFIG_CPU_SW_DOMAIN_PAN
ya daCONFIG_ARM64_SW_TTBR0_PAN
aracılığıyla emüle edilen) kullanıcı alanı belleğini ÇALIŞTIRMAMALIDIR. - [C-0-11], orijinal olarak API düzeyi 28 veya sonraki bir sürümle gönderilen cihazlarda, normal kullanıcı kopyası erişim API'lerinin (ör. donanım PAN'ı veya
CONFIG_CPU_SW_DOMAIN_PAN
ya daCONFIG_ARM64_SW_TTBR0_PAN
aracılığıyla emüle edilen) çekirdekteki kullanıcı alanı belleğini okumamalı veya yazmamalıdır. - [C-0-12] Donanım, orijinal olarak API 28 veya üzeri bir sürümle (ör.
CONFIG_PAGE_TABLE_ISOLATION
veyaCONFIG_UNMAP_KERNEL_AT_EL0
) gönderilen tüm cihazlarda CVE-2017-5754 güvenlik açığına karşı savunmasızsa çekirdek sayfa tablo izolasyonunu uygulamalıdır. [C-0-13] Donanım, CVE-2017-5715 güvenlik açığına karşı savunmasızsa, orijinal olarak API düzeyi 28 veya üzeri (ör.
CONFIG_HARDEN_BRANCH_PREDICTOR
) ile gönderilen tüm cihazlarda dal tahmini güçlendirme uygulaması ZORUNLUDUR.[C-SR-1] Başlatılmamış yerel değişkenlerin (
CONFIG_INIT_STACK_ALL
veyaCONFIG_INIT_STACK_ALL_ZERO
) kullanımını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi ÖNEMLE ÖNERİLİR. Ayrıca, cihaz uygulamaları, yerelleri başlatmak için derleyici tarafından kullanılan değeri GEÇERSİZ ETMEMELİDİR.[C-SR-2] Yalnızca başlatma sırasında yazılan ve başlatma sonrasında salt okunur olarak işaretlenen (ör.
__ro_after_init
) çekirdek verilerinin tutulması ÖNEMLE ÖNERİLİR.[C-SR-3] Çekirdek kodunun ve belleğin düzenini rastgele hale getirmek ve rastgele hale gelecek şekilde devre dışı bırakabilecek durumları önlemek için ÖNEMLE ÖNERİLİR (ör.
/chosen/kaslr-seed Device Tree node
veyaEFI_RNG_PROTOCOL
üzerinden bootloader entropisiyleCONFIG_RANDOMIZE_BASE
).[C-SR-4] Kod yeniden kullanımı saldırılarına (ör.
CONFIG_CFI_CLANG
veCONFIG_SHADOW_CALL_STACK
) karşı ek koruma sağlamak üzere çekirdekte kontrol akışı bütünlüğünün (CFI) etkinleştirilmesi için ÖNEMLE ÖNERİLİR.[C-SR-5] Özelliğinin etkin olduğu bileşenlerde Control-Akış Bütünlüğü (CFI), Gölge Çağrı Yığını (SCS) veya Tam Sayı Taşması Temizliği'ni (IntSan) devre dışı bırakmaması ÖNEMLE ÖNERİLİR.
[C-SR-6] CFI ve IntSan bölümlerinde açıklandığı gibi, güvenlik açısından hassas ek kullanıcı alanı bileşenleri için CFI, SCS ve IntSan'ın etkinleştirilmesi ÖNEMLE ÖNERİLİR.
[C-SR-7] Başlatılmamış yerel değişkenlerin (
CONFIG_INIT_STACK_ALL
veyaCONFIG_INIT_STACK_ALL_ZERO
) kullanımını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi ÖNEMLİDİR.[C-SR-8] Başlatılmamış yığın ayırmalarının (
CONFIG_INIT_ON_ALLOC_DEFAULT_ON
) kullanımını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi ÖNEMLE ÖNERİLİR ve bu ayırmaları başlatmak için çekirdek tarafından kullanılan değeri KABUL EDİLMEMELİDİR.
Cihaz uygulamaları SELinux'u destekleyebilen bir Linux çekirdeği kullanıyorsa:
- [C-1-1] SELinux'u uygulaması ZORUNLUDUR.
- [C-1-2] SELinux'u genel uygulama moduna ayarlamanın ZORUNLUDUR.
- [C-1-3] Tüm alan adları zorunlu modda yapılandırılması ZORUNLUDUR. Bir cihaza/tedarikçi firmaya özel alanlar da dahil olmak üzere izin modu alanlarına izin verilmez.
- [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy klasöründe bulunan "her zaman izin verme" kurallarını DEĞİŞTİRMEMELİ, DEĞERLENDİRMEMELİ veya DEĞİŞTİRMEMELİDİR. Politikanın hem AOSP SELinux alanlarında hem de cihaza/tedarikçi firmaya özel alan adlarında mevcut tüm "izin verilmeyecek" kurallarıyla derlenmesi ZORUNLUDUR.
- [C-1-5] Her bir uygulamanın özel veri dizininde, uygulama başına SELinux kısıtlamalarıyla uygulama başına SELinux korumalı alanlarında API düzeyi 28 veya üstünü hedefleyen üçüncü taraf uygulamaları ÇALIŞTIRMALIDIR.
- Yukarı akış Android Açık Kaynak Projesi'nin sistem/sepolicy klasöründe sağlanan varsayılan SELinux politikasını koruyup bu politikaya yalnızca kendi cihaza özel yapılandırmaları için ekleme yapmalıdır.
Cihaz uygulamaları, SELinux olmadan Linux veya Linux dışında çekirdeği kullanıyorsa:
- [C-2-1] SELinux'a eşdeğer bir zorunlu erişim denetimi sistemi KULLANMALIDIR.
Cihaz uygulamaları, DMA özellikli G/Ç cihazları kullanıyorsa:
- [C-SR-9] DMA özellikli her G/Ç cihazının bir IOMMU (ör. ARM SMMU) kullanılarak izole edilmesi ÖNEMLE ÖNERİLİR.
Android, cihaz güvenliğinin ayrılmaz bir parçası olan birden çok derinlemesine savunma özelliği içerir. Buna ek olarak Android, düşük kalite ve güvenliğe neden olan yaygın hata 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ı ile test edilmesi ÖNEMLE ÖNERİLİR.
- [C-SR-11] KASAN (ARMv9 cihazları için CONFIG_KASAN, CONFIG_KASAN_HW_TAGS, ARMv8 cihazlar veya diğer cihaz türleri için CONFIG_KASAN_SW_TAGS) gibi çekirdek bellek hatası algılama araçlarıyla test edilmesi ÖNERİLİR.
- [C-SR-12] Üretimde MTE, GWP-ASan ve KFENCE gibi bellek hatası algılama araçlarını kullanması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları Arm TrustZone tabanlı TEE kullanıyorsa:
- [C-SR-13] Android ve TEE arasında, Armv8-A için Arm Donanım Yazılımı Çerçevesi (FF-A) gibi standart bir bellek paylaşımı protokolü kullanmanız ÖNEMLE ÖNERİLİR.
- [C-SR-14] Güvenilir uygulamaların, yalnızca yukarıdaki protokol aracılığıyla kendileriyle açıkça paylaşılmış belleğe erişmesiyle kısıtlanması için ÖNEMLE ÖNERİLİR. Cihaz, Arm S-EL2 istisna düzeyini destekliyorsa güvenli bölüm yöneticisi tarafından zorunlu kılınmalıdır. Aksi takdirde bu işlem TEE OS tarafından uygulanır.
Yeni koşullarla başlayın
Bellek Güvenliği teknolojisi, android:memtagMode
manifest seçeneğini kullanan uygulamalarda yüksek (> %90) olasılığa sahip olan aşağıdaki hata sınıflarını en az düzeyde azaltan bir teknolojidir:
- yığın arabellek taşması
- ücretsiz sonra kullan
- çift ücretsiz
- vahşi ücretsiz (malloc olmayan işaretçi içermeyen)
Cihaz uygulamaları:
- [C-SR-15]
ro.arm64.memtag.bootctl_supported
olarak ayarlanması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, ro.arm64.memtag.bootctl_supported
sistem özelliğini "doğru" olarak ayarlarsa:
[C-3-1]
arm64.memtag.bootctl
sistem özelliğinin aşağıdaki değerlerin virgülle ayrılmış bir listesini, istenen etki bir sonraki yeniden başlatmada uygulanacak şekilde kabul etmesine İZİN VERMELİDİR:memtag
: Yukarıda tanımlanan şekilde bir Bellek Güvenliği teknolojisi etkinmemtag-once
: Yukarıda tanımlanan bir Bellek Güvenliği teknolojisi geçici olarak etkindir ve bir sonraki yeniden başlatmada otomatik olarak devre dışıdırmemtag-off
: Yukarıda tanımlanan Bellek Güvenliği teknolojisi devre dışı
[C-3-2], kabuk kullanıcısının
arm64.memtag.bootctl
ayarını yapmasına İZİN VERMELİDİR.[C-3-3] Herhangi bir işlemin
arm64.memtag.bootctl
değerini okumasına İZİN VERMELİDİR.[C-3-4] Başlatma sırasında
arm64.memtag.bootctl
öğesini geçerli olarak istenen duruma AYARLAMALIDIR. Cihaz uygulaması, sistem özelliğini değiştirmeden durumu değiştirmeye olanak tanıyorsa özelliği de güncellemesi GEREKİR.[C-SR-16] memtag'ı bir kez ayarlayan ve cihazı yeniden başlatan bir Geliştirici Ayarının gösterilmesi ÖNEMLE ÖNERİLİR. Uyumlu bir bootloader'a sahip Android Açık Kaynak Projesi, MTE bootloader protokolü aracılığıyla yukarıdaki şartları karşılar.
- [C-SR-17] Güvenlik Ayarları menüsünde kullanıcının
memtag
özelliğini etkinleştirmesine izin veren bir Ayar göstermesi ÖNEMLE ÖNERİLİR.
Yeni şartları sonlandırma
9.8. Gizlilik
9.8.1. Kullanım Geçmişi
Android, kullanıcının seçimlerinin geçmişini depolar ve bu tür geçmişi UsageStatsManager aracılığıyla yönetir.
Cihaz uygulamaları:
- [C-0-1] Bu tür kullanıcı geçmişinin makul bir saklama süresi TUTULMASI ZORUNLUDUR.
- [C-SR-1] AOSP uygulamasında varsayılan olarak yapılandırılmış olan 14 günlük saklama süresinin korunması ÖNEMLE ÖNERİLİR.
Android, sistem etkinliklerini StatsLog
tanımlayıcılarını kullanarak depolar ve bu tür geçmişi StatsManager
ve IncidentManager
System API üzerinden yönetir.
Cihaz uygulamaları:
- [C-0-2],
IncidentManager
System API sınıfı tarafından oluşturulan olay raporunda yalnızcaDEST_AUTOMATIC
ile işaretlenmiş alanları İÇERMELİDİR. - [C-0-3],
StatsLog
SDK dokümanlarında açıklananlar dışında herhangi bir etkinliği günlüğe kaydetmek için sistem etkinlik tanımlayıcılarını kullanmamalıdır. Ek sistem etkinlikleri günlüğe kaydedilirse 100.000 ile 200.000 arasında farklı bir atom tanımlayıcısı KULLANABİLİR.
9.8.2. Kayıt
Cihaz uygulamaları:
- [C-0-1] yazılım bileşenleri, kullanıcının özel bilgilerini (ör. tuş vuruşları, ekranda görüntülenen metin, hata raporu) gönderen yazılım bileşenlerini kullanıcının izni veya devam eden açık bildirimler olmadan cihazdan önceden YÜKLEMEMELİ veya DAĞITMAMALIDIR.
- [C-0-2] kullanıcı uyarısı göstermeli ve kullanıcının ekranında gösterilen hassas bilgilerin paylaşılmasına izin verecek şekilde açıkça kullanıcı izni almalıdır.
AOSP ile tamamen aynı mesaj etkinleştirilmelidir.Her zamanGoogle'a ait ekranı yakalaması için her oturumdayayınlama veya ekran kaydı,MediaProjection.createVirtualDisplay()
etkinleştirilir.MediaProjection.createVirtualDisplay()
VirtualDeviceManager.createVirtualDisplay()
Kullanıcılara, kullanıcı rızasının gelecekte görüntülenmesini devre dışı bırakma olanağı SUNMAMALIDIR. - [C-0-3] Ekran yayınlama veya ekran kaydı etkinken kullanıcıya sürekli bir bildirim OLMALIDIR. AOSP, durum çubuğunda sürekli bir bildirim simgesi göstererek bu şartı karşılar.
Yeni koşullarla başlayın
[C-SR-1] AOSP'de uygulanan mesajın aynısı olan bir kullanıcı uyarısı göstermeleri ÖNEMLE ÖNERİLİR, ancak mesaj, kullanıcıyı ekranındaki hassas bilgilerin yakalandığı konusunda açık bir şekilde uyardığı sürece değiştirilebilir.
[C-0-4] Oturum, kullanıcının
android.app.role.COMPANION_DEVICE_APP_STREAMING
veyaandroid.app.role.COMPANION_DEVICE_NEARBY_DEVICE_STREAMING
cihaz profiliyleassociate()
izni verdiği bir sistem uygulaması tarafından başlatılmadığı sürece, kullanıcılara gelecekteki ekran görüntüsü istemlerini devre dışı bırakma olanağı SUNMAMALIDIR.Yeni şartları sonlandırma
Cihaz uygulamaları, sistemde ekranda gösterilen içeriği yakalayan ve/veya System API ContentCaptureService
üzerinden
cihazda çalınan ses akışını kaydeden bir işlev ya da Bölüm 9.8.6 İşletim Sistemi düzeyi ve ortam verileri
içinde açıklanan başka özel yöntemleri içeriyorsa:
- [C-1-1] bu işlev her etkinleştirildiğinde ve aktif bir şekilde görüntü yakalama/kaydetme sırasında kullanıcıya sürekli bir bildirimin olması ZORUNLUDUR.
Cihaz uygulamaları, kullanıcının bağlamı hakkında faydalı bilgiler edinmek için ambiyans sesi kaydedebilen ve/veya cihazda çalınan sesi kaydedebilen, kullanıma hazır bir bileşen içeriyorsa:
- [C-2-1] kullanıcının açık izni olmadığı sürece, kaydedilen ham sesi veya orijinal sese ya da yakın bir faksa dönüştürülebilen herhangi bir biçimi cihaz üzerinde kalıcı depolama alanında saklamamalı veya cihazdan dışarı aktarabilirsiniz.
"Mikrofon göstergesi", kullanıcının sürekli olarak görebildiği ve kapatılamayan, bir mikrofon kullanımda olduğu anlaştığı(benzersiz metin, renk, simge veya çeşitli kombinasyonlar aracılığıyla) ekrandaki görünümü ifade eder.
"Kamera göstergesi", kullanıcı tarafından sürekli olarak görülebilen ve bir kamera kullanımdayken kullanıcının anladığı (benzersiz metin, renk, simge veya bazı kombinasyonlar yoluyla) bir görüntü anlamına gelir.
İlk saniye gösterildikten sonra gösterge görsel olarak değişebilir (örneğin, daha küçülebilir). Bu nedenle, göstergenin ilk sunulduğu ve anlaşıldığı gibi gösterilmesi gerekmez.
Metin, simge veya renkler kullanıcının mikrofon kullanmaya başladığını gösterdiği sürece mikrofon göstergesi, aktif olarak görüntülenen bir kamera göstergesiyle birleştirilebilir.
Metin, simge veya renklerin kullanıcıya kamera kullanımının başladığını belirtmesi koşuluyla kamera göstergesi, aktif olarak görüntülenen bir mikrofon göstergesiyle birleştirilebilir.
Cihaz uygulamaları android.hardware.microphone
bildiriyorsa:
- [C-SR-1] Bir uygulama mikrofondan ses verilerine eriştiğinde mikrofon göstergesini göstermesi ÖNERİLİR, ancak mikrofona yalnızca Bölüm 9.1'de CDD tanımlayıcısı [C-3-X] belirtilen rolleri içeren
HotwordDetectionService
,SOURCE_HOTWORD
,ContentCaptureService
veya uygulamalar tarafından erişildiğinde mikrofon göstergesinin görüntülenmesi ÖNERİLİR. . - [C-SR-2]
PermissionManager.getIndicatorAppOpUsageData()
kaynağından döndürüldüğü şekliyle mikrofonu kullanan En Son ve Etkin uygulamaların listesini, bunlarla ilişkilendirilmiş ilişkilendirme mesajlarını da görüntülemesi ÖNEMLE ÖNERİLİR. - [C-SR-3] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için mikrofon göstergesini gizlememesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları android.hardware.camera.any
bildiriyorsa:
- [C-SR-4] Bir uygulama canlı kamera verilerine erişirken kamera göstergesini göstermesi ÖNERİLİR, ancak kameraya yalnızca Bölüm 9.1'de CDD tanımlayıcı [C-3-X] içeren izinler içeren izinler olan uygulamalar tarafından erişildiğinde bu durum geçerli değildir.
- [C-SR-5] En son ve etkin uygulamaları,
PermissionManager.getIndicatorAppOpUsageData()
kaynağından döndürüldüğü şekliyle, bunlarla ilişkilendirilmiş ilişkilendirme mesajlarıyla birlikte kamerayı kullanarak görüntülemesi ÖNERİLİR. - [C-SR-6] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamalarında kamera göstergesini gizlememesi ÖNEMLE ÖNERİLİR.
9.8.3. Bağlantı
Cihaz uygulamalarında USB çevre birimi modu destekli bir USB bağlantı noktası varsa:
- [C-1-1], paylaşılan depolama alanının içeriğine USB bağlantı noktası üzerinden erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü GÖRÜNTÜLEMELİDİR.
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 aynı kök sertifikaları önceden YÜKLEMELİDİR.
- [C-0-2] boş bir kullanıcı kök CA deposuyla gönderilmesi ZORUNLUDUR.
- [C-0-3] bir kullanıcı kök CA'sı eklendiğinde, ağ trafiğinin izlenebileceğini belirten bir uyarıyla kullanıcıya uyarı GÖRÜNTÜLEMELİ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örüntülemelidir:
- Bu ağ trafiği izlenebilir.
- Bu ağ trafiği, VPN'i sağlayan ilgili VPN uygulaması üzerinden yönlendiriliyor.
Cihaz uygulamalarında varsayılan olarak kullanıma hazır şekilde etkinleştirilen ve ağ veri trafiğini proxy sunucu veya VPN ağ geçidi üzerinden yönlendiren bir mekanizma varsa (örneğin, android.permission.CONTROL_VPN
verilmiş bir VPN hizmetini önceden yükleme izni verilirse) bunlar:
- [C-2-1] Söz konusu mekanizma etkinleştirmeden önce kullanıcının iznini istemelidir. Ancak söz konusu VPN, Cihaz Politikası Denetleyicisi tarafından
DevicePolicyManager.setAlwaysOnVpnPackage()
üzerinden etkinleştirilmediği sürece kullanıcının ayrı bir izin vermesi gerekmese de yalnızca bilgilendirilmesi ZORUNLUDUR.
Cihaz uygulamaları, bir üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için kullanıcı olanağı sunuyorsa:
- [C-3-1]
SERVICE_META_DATA_SUPPORTS_ALWAYS_ON
özelliğifalse
değerine ayarlanarakAndroidManifest.xml
dosyasında her zaman açık VPN hizmetini desteklemeyen uygulamalar için bu kullanıcı fırsatlarının devre dışı bırakılması ZORUNLUDUR.
9.8.5. Cihaz Tanımlayıcıları
Cihaz uygulamaları:
- [C-0-1] aşağıdaki şartlardan birini karşılamıyorsa uygulamanın cihazın seri numarasına ve uygun olduğunda IMEI/MEID'ye, SIM seri numarasına ve Uluslararası Mobil Abone Kimliği'ne (IMSI) erişmesini engellemelidir:
- cihaz üreticileri tarafından doğrulanan, imzalı bir operatör uygulamasıdır.
READ_PRIVILEGED_PHONE_STATE
için izin verildi.- UICC Operatör Ayrıcalıkları bölümünde tanımlandığı şekilde operatör ayrıcalıklarına sahip olmalıdır.
READ_PHONE_STATE
izni verilmiş bir cihaz sahibi veya profil sahibi.- (Yalnızca SIM seri numarası/ICCID için) uygulamanın abone kimliğindeki değişiklikleri algılaması için yerel düzenlemeler gereklidir.
9.8.6. İçerik Yakalama ve Uygulama Aramaİşletim Sistemi düzeyi ve ortam verileri
Android, Sistem API'leri aracılığıyla ContentCaptureService
, AugmentedAutofillService
, AppSearchGlobalManager.query
veya diğer mülkiyet araçlarıuygulamalar ve kullanıcı arasındaki uygulama verisi etkileşimlerini
hassas verileri yakalamak için cihaz uygulamalarına yönelik bir mekanizmayı destekler:
AssistStructure
API aracılığıyla bildirimler ve yardım verileri 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).
Yeni koşullarla başlayın
AugmentedAutofillService
aracılığıyla sisteme gönderilen tüm ekranlar veya diğer veriler.Content Capture
API üzerinden erişilebilen herhangi bir ekran veya diğer veriler.FieldClassificationService
API üzerinden erişilebilen herhangi bir ekran veya diğer verilerAppSearchManager
API aracılığıyla sisteme iletilen veAppSearchGlobalManager.query
üzerinden erişilebilen tüm uygulama verileri.
Yeni şartları sonlandırma
- Bir uygulamanın
Content Capture
API veyaAppSearchManager
API aracılığıyla sisteme sağladığı, benzer özelliklere sahip bir Android ve özel API aracılığıyla yapılan diğer tüm etkinlikler.
- Metnin anlamını öğrenmek ve metne dayalı sonraki işlemleri oluşturmak için
TextClassifier API
aracılığıyla System TextClassifier'a (Sistem Metin Sınıflandırıcısı) (yani sistem hizmetine) gönderilen tüm metinler veya diğer veriler. - Metin, grafik, medya verileri veya diğer benzer veriler dahil ancak bunlarla sınırlı olmamak üzere platformun AppSearch uygulaması tarafından dizine eklenen veriler.
Yeni koşullarla başlayın
- Konuşma Tanıyıcı Uygulaması tarafından
SpeechRecognizer#onDeviceSpeechRecognizer()
kullanılması sonucunda elde edilen ses verileri. AudioRecord
,SoundTrigger
veya diğer Ses API'leri aracılığıyla arka planda (sürekli) elde edilen ve kullanıcı tarafından görülebilen bir göstergeyle sonuçlanmayan ses verileri- CameraManager veya diğer Kamera API'leri aracılığıyla arka planda (sürekli) elde edilen ve kullanıcının görebileceği bir gösterge sunmayan kamera verileri
Yeni şartları sonlandırma
Cihaz uygulamaları yukarıdaki verilerden herhangi birini yakalarsa:
- [C-1-1] cihazda depolandığında bu tür verilerin tümünü şifreleme ZORUNLUDUR. Bu şifreleme, Android Dosya Tabanlı Şifreleme kullanılarak veya Cipher SDK'da açıklanan API 26 ve sonraki sürümlerdeki şifrelerden herhangi biri kullanılarak gerçekleştirilebilir.
- [C-1-2], ham veya şifrelenmiş verileri Android yedekleme yöntemlerini veya başka bir yedekleme yöntemini kullanarak YEDEKLEMEMELİDİR.
- [C-1-3] Bu tür verilerin tamamını
ve günlüğüyalnızca gizliliği korumaya yönelik bir mekanizma kullanarak cihazdan dışarı GÖNDERMELİDİR.(Veriler her paylaşıldığında kullanıcının açık bir şekilde izninin alınması gerekir). Gizliliği korumaya yönelik mekanizma, kullanıcı başına verilerin içeriye sığmasını önlemek için (ör.RAPPOR
gibi diferansiyel gizlilik teknolojisi kullanılarak uygulanan) "yalnızca toplu analize izin veren ve günlüğe kaydedilen etkinliklerin veya türetilen sonuçların bireysel kullanıcılarla eşleştirilmesini engelleyen" olarak tanımlanır. - [C-1-4] bu tür verileri cihazdaki herhangi bir kullanıcı kimliğiyle (ör.
Account
) İLİŞKİLENDİRMEMELİDİR. Bununla birlikte, veriler her ilişkilendirildiğinde kullanıcının açık izni olması gerekir. - [C-1-5] bu tür verileri, mevcut bölümde (9.8.6
İçerik Yakalamaİşletim Sistemi düzeyi ve ortam verileri) belirtilen şartlara uymayan diğer işletim sistemi bileşenleriyle PAYLAŞMAMALIDIR. Böyle bir işlev, Android SDK API (AmbientContext
,HotwordDetectionService
) olarak geliştirilmediği takdirde. - [C-1-6],
uygulamasının veya özel yöntemlerin, veriler cihazda herhangi bir biçimde depolandığındaContentCaptureService
olduğundatoplanacak verileri silmesi için kullanıcıya destek vermesi ZORUNLUDUR. Kullanıcı, verileri silmeyi seçerse toplanan tüm geçmiş verilerin KALDIRILMASI GEREKİR. - [C-1-7] kullanıcıya, AppSearch veya özel yöntemlerle toplanan verileri, başlatıcı gibi Android platformlarında gösterilmesinin kapsamı dışında kalmayı seçme imkanı ZORUNLUDUR.
- [C-SR-1] İNTERNET izni istemesi ÖNEMLE ÖNERİLİR.
- [C-SR-2] İnternete yalnızca herkese açık açık kaynak uygulamalarıyla desteklenen yapılandırılmış API'ler aracılığıyla erişmesi ÖNERİLİR.
Yeni koşullarla başlayın
- [C-SR-4] Android SDK API veya OEM'ye ait benzer bir açık kaynak kod deposuyla uygulanması ÖNEMLE ÖNERİLİR ve / veya Korumalı Alan (Korumalı Alan) uygulamasında gerçekleştirilmelidir (bkz. 9.8.15 Korumalı Alana Sahip API uygulamaları).
Yeni şartları sonlandırma
Cihaz uygulamaları, ContentCaptureService
, AppSearchManager.index
System API'sini veya yukarıda açıklandığı gibi verileri yakalayan özel bir hizmeti uygulayan bir hizmeti içeriyorsa:
- [C-2-1] Kullanıcıların hizmetleri kullanıcı tarafından yüklenebilir bir uygulama veya hizmetle değiştirmelerine İZİN VERMEMELİDİR ve yalnızca önceden yüklenmiş hizmetlerin bu tür verileri yakalamasına izin VERMELİDİR.
- [C-2-2] Önceden yüklenmiş hizmet mekanizması dışında hiçbir uygulamanın bu tür verileri yakalamasına izin VERMEMELİDİR.
- [C-2-3] Hizmetleri devre dışı bırakmak için kullanıcıya ödeme yapması GEREKİR.
- [C-2-4], hizmetlerin sahip olduğu Android izinlerini yönetme ve Bölüm 9.1. İzin.
[C-SR-3] Hizmetleri, aşağıdakiler dışında diğer sistem bileşenlerinden(ör. hizmeti bağlamama veya işlem kimliklerini paylaşma) ayrı tutmak için ÖNEMLE ÖNERİLİR:
- Telefon, Kişiler, Sistem Kullanıcı Arayüzü ve Medya
Android, SpeechRecognizer#onDeviceSpeechRecognizer()
aracılığıyla ağ dahil olmadan cihazda konuşma tanıma işlemi gerçekleştirme olanağı sağlar.
Cihaz üzerinde SpeechUnderstandingr uygulaması, bu bölümde açıklanan politikalara UYMALIDIR.
9.8.7. Pano Erişimi
Cihaz uygulamaları:
[C-0-1], kırpılmış verileri panodan (ör.
ClipboardManager
API üzerinden) DÖNMEMELİDİR. (3. taraf uygulaması varsayılan IME değilse veya halihazırda odaklanılan uygulamaysa)[C-0-2] pano verilerini, son olarak bir panoya yerleştirildikten veya panodan okunduktan en fazla 60 dakika sonra temizlemelidir.
9.8.8. Konum
Konum, Android Konum sınıfındaki( Enlem, Boylam, Rakım gibi) bilgilerin yanı sıra Konum'a dönüştürülebilen tanımlayıcıları içerir. Konum, DGPS (diferansiyel Küresel Konumlandırma Sistemi) veya ülke düzeyindeki konumlar kadar ayrıntılı (ülke kodu konumu - MM - Mobil Ülke Kodu gibi) olabilir.
Aşağıda, bir kullanıcının konumunu doğrudan türeten veya kullanıcının konumuna dönüştürülebilen konum türlerinin bir listesi bulunmaktadır. Bu, kapsamlı bir liste olmasa da Konum'un doğrudan veya dolaylı olarak hangi kaynaklardan elde edilebileceğine dair bir örnek olarak kullanılmalıdır:
- GPS/GNSS/DGPS/PPP
- Küresel Konumlandırma Çözümü, Küresel Navigasyon Uydu Sistemi veya diferansiyel Küresel Konumlandırma Çözümü
- Ham GNSS Ölçümleri ve GNSS Durumu da buna dahildir
- Hassas Konum, Ham GNSS Ölçümlerinden elde edilebilir
- Aşağıdakiler gibi benzersiz tanımlayıcılara sahip kablosuz teknolojileri:
- Kablosuz erişim noktaları (MAC, BSSID, Ad veya SSID)
- Bluetooth/BLE (MAC, BSSID, Ad veya SSID)
- Ultra Geniş Bant (MAC, BSSID, Ad veya SSID)
- Hücre Kulesi Kimliği (3G, 4G, 5G... Benzersiz tanımlayıcıları olan, gelecekteki tüm Hücresel Modem teknolojileri dahil)
Birincil referans noktası olarak ACCESS_FINE_Location veya ACCESS_COARSE_Location izinleri gerektiren Android API'lerini inceleyin.
Cihaz uygulamaları:
- [C-0-1] açık bir kullanıcı izni veya kullanıcının başlatması olmadan cihaz konum ayarını ve Kablosuz/Bluetooth tarama ayarlarını AÇMAMALIDIR.
- [C-0-2] kullanıcının son konum istekleri, uygulama düzeyindeki izinler ve konumun belirlenmesi için kablosuz/Bluetooth taramasının kullanımı da dahil olmak üzere konumla ilgili bilgilere erişebilmesi için kullanıcının fırsat vermesi ZORUNLUDUR.
- [C-0-3], Emergency Location Bypass API'sini kullanan uygulamanın [LocationRequest.setLocationSettingsignored()], kullanıcı tarafından başlatılan bir acil durum oturumu olduğundan emin olmalıdır (ör. 911'i çevirin veya 911'e mesaj gönderin). Bununla birlikte, Automotive'de bir kaza/kaza algılandığında (ör. e-posta şartlarını karşılamak için) araçlar etkin kullanıcı etkileşimi olmadan acil durum oturumu BAŞLATABİLİR.
- [C-0-4], Emergency Location Bypass API'nin ayarları değiştirmeden cihaz konum ayarlarını atlama yeteneğini KORUMALIDIR.
- [C-0-5], arka plandaki bir uygulama [
ACCESS_BACKGROUND_LOCATION
] iznini kullanarak konumuna eriştiğinde kullanıcıya hatırlatan bir bildirim planlaması ZORUNLUDUR.
9.8.9. Yüklü uygulamalar
API düzeyi 30 veya üstünü hedefleyen Android uygulamaları varsayılan olarak yüklü diğer uygulamalarla ilgili ayrıntıları göremez (Android SDK dokümanlarındaki 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 30 veya üstünü hedefleyen hiçbir uygulamanın yüklü diğer uygulamalarla ilgili ayrıntıları GÖSTERMEMELİDİR. Bu, cihaz uygulayıcı tarafından eklenen veya dosya sistemi üzerinden erişilebilen özel API'ler tarafından sunulan ayrıntıları içerir ancak bunlarla sınırlı değildir.
- [C-0-2] hiçbir uygulamaya, harici depolama alanındaki başka bir uygulamanın özel, uygulamaya özgü dizinindeki dosyaları okuma veya yazma erişimi VERMEMELİDİR. Bu konudaki istisnalar şunlardır:
- Harici depolama sağlayıcısı yetkilisi (ör. DocumentsUI gibi uygulamalar).
- Uygulama depolama alanına dosya indirmek için "indirme" sağlayıcı yetkilisini kullanan İndirme Sağlayıcısı.
- Dosyaların başka bir cihaza aktarılmasını sağlamak için ACCESS_MTP ayrıcalıklı iznini kullanan platform imzalı medya aktarım protokolü (MTP) uygulamaları.
- Başka uygulamalar yükleyen ve INSTALL_PACKAGES iznine sahip uygulamalar, APK genişletme dosyalarını yönetmek için yalnızca "obb" dizinlerine erişebilir.
9.8.10. Bağlantı Hatası Raporu
Cihaz uygulamaları android.hardware.telephony
özellik bayrağını beyan ederse:
- [C-1-1], BugreportManager ile
BUGREPORT_MODE_TELEPHONY
üzerinden bağlantı hata raporlarının oluşturulmasını DESTEKLEMELİDİR. - [C-1-2]
BUGREPORT_MODE_TELEPHONY
hizmetinin rapor oluşturmak için her kullanılışında kullanıcı izninin alınması ZORUNLUDUR ve kullanıcıdan, gelecekte uygulamadan gelecek tüm isteklere izin vermesi SAĞLANMAMALIDIR. - [C-1-3], oluşturulan raporu açık kullanıcı izni olmadan istekte bulunan uygulamaya DÖNMEMELİDİR.
- [C-1-4]
BUGREPORT_MODE_TELEPHONY
kullanılarak oluşturulan raporlar en azından aşağıdaki bilgileri içermelidir:TelephonyDebugService
dökümüTelephonyRegistry
dökümüWifiService
dökümüConnectivityService
dökümü- Çağrı paketinin
CarrierService
örneğinin dökümü (bağlıysa) - Radyo günlüğü arabelleği
SubscriptionManagerService
dökümü
- [C-1-5] oluşturulan raporlarda aşağıdakileri İÇERMEMELİDİR:
- Bağlantı hata ayıklama ile doğrudan ilişkili 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şkili olmayan ek bilgiler İÇEREBİLİR. (ör. satıcı günlükleri).
Cihaz uygulamaları hata raporlarında ek bilgiler (ör. tedarikçi günlükleri) içeriyorsa ve bu bilgiler gizlilik/güvenlik/pil/depolama/bellek etkisi içeriyorsa:
- [C-SR-1] Geliştirici ayarının varsayılan olarak devre dışı bırakılmış olması ÖNEMLE ÖNERİLİR. AOSP referans uygulaması, hata raporlarına cihaza özgü ek tedarikçi firma günlüklerini dahil etmek için geliştirici ayarlarında
Enable verbose vendor logging
seçeneğini sağlayarak bu sorunu karşılar.
9.8.11. Veri blob'ları paylaşımı
Android, BlobStoreManager aracılığıyla, uygulamaların Sistem'e veri blob'ları ekleyerek belirli bir uygulama grubuyla paylaşılmasını sağlar.
Cihaz uygulamaları, SDK dokümanlarında açıklandığı gibi paylaşılan veri blob'larını destekliyorsa:
- [C-1-1]; uygulamalara ait veri blob'larını, izin vermek istediklerinin dışında PAYLAŞMAMALIDIR (ör. varsayılan erişim kapsamı ve BlobStoreManager.session#allowPackageAccess(), BlobStoreManager.session#allowSameSignatureAccess() veya BlobNoteStore beaccess() kullanılarak belirtilebilecek diğer erişim modları). AOSP referans uygulaması bu şartları karşılar.
- [C-1-2] veri blob'larının güvenli karmalarını (erişimi denetlemek için kullanılan) cihazı GÖNDERMEMELİ veya diğer uygulamalarla PAYLAŞMAMALIDIR.
9.8.12. Müzik Tanıma
Android, System API MusicRecognitionManager aracılığıyla cihaz uygulamalarına yönelik bir mekanizmayı destekler. Bu mekanizmayı kullanarak müzik tanıma, ses kaydı verme ve müzik tanıma işlevi için MusicRecognitionService API'yi uygulayan ayrıcalıklı bir uygulamaya yetki verme bulunur.
Cihaz uygulamaları, yukarıda açıklandığı gibi System API MusicRecognitionManager'ı uygulayan bir hizmeti veya ses verisi akışı sağlayan herhangi bir özel hizmeti içeriyorsa:
- [C-1-1], MusicRecognitionManager'ı arayan kişinin
MANAGE_MUSIC_RECOGNITION
iznine sahip olmasını ZORUNLUDUR - [C-1-2] MusicRecognitionService'in, önceden yüklenmiş tek bir müzik tanıma uygulamasının uygulamasını zorunlu kılması ZORUNLUDUR.
- [C-1-3] Kullanıcıların MusicRecognitionManagerService veya MusicRecognitionService'i kullanıcı tarafından yüklenebilir bir uygulama veya hizmetle değiştirmelerine İZİN VERİLMEMELİDİR.
- [C-1-4] MusicRecognitionManagerService, ses kaydına erişip bunu MusicRecognitionService'i uygulayan uygulamaya ilettiğinde, ses erişiminin AppOpsManager.noteOp / startOp'un çağrılarıyla izlendiğinden emin olmalıdır.
MusicRecognitionManagerService veya MusicRecognitionService'in cihaz uygulamaları, yakalanan ses verilerini depoluyorsa:
- [C-2-1], ham ses veya ses parmak izlerini diskte hiç veya 14 günden daha uzun süre bellekte saklayamaz.
- [C-2-2] bu tür verileri MusicRecognitionService dışında PAYLAŞMAMALIDIR.
9.8.13. SensörGizlilik Yöneticisi
Cihaz uygulamaları, kullanıcıya cihaz uygulaması için kamera ve/veya mikrofon girişini kapatması için gereken yazılımı sağlıyorsa:
- [C-1-1], ilgili supportsSensorToggle() API yöntemi için "true" değerini doğru bir şekilde döndürmelidir.
- [C-1-2] Bir uygulama engellenen bir mikrofona veya kameraya erişmeye çalıştığında kullanıcıya, sensörün engellendiğini açıkça belirten ve bu şarta uyan AOSP uygulaması uyarınca engellemeye devam etme ya da engellemeyi kaldırma seçeneğine sahip olması gerektiğini belirten kapatılamayan bir kullanıcı olanakları sunması ZORUNLUDUR.
- [C-1-3], uygulamalara yalnızca boş (veya sahte) kamera ve ses verileri iletmeli ve kullanıcının yukarıda [C-1-2] uyarınca belirtilen kullanıcı yardımıyla kamerayı veya mikrofonu açmaması nedeniyle bir hata kodu bildirmemelidir.
Yeni koşullarla başlayın
9.8.14. Kimlik Bilgisi Yöneticisi
Kaldırıldı.
9.8.15. Korumalı Alana Sahip API Uygulamaları
Android, bir dizi yetki API'si aracılığıyla işletim sistemi düzeyinde ve ambiyans düzeyinde güvenli verileri işlemek için bir mekanizma sağlar. Bu tür işlemler, Korumalı Alana Sahip API Uygulaması olarak bilinen, ayrıcalıklı erişime ve düşük iletişim özelliklerine sahip, önceden yüklenmiş bir APK'ya devredilebilir.
Tüm Korumalı Alan API'leri uygulamaları:
- [C-0-1] İNTERNET izni İSTEMEMELİDİR.
- [C-0-2] internete yalnızca gizliliği korumaya yönelik mekanizmalar kullanan herkese açık açık kaynak uygulamalarıyla desteklenen yapılandırılmış API'ler aracılığıyla veya dolaylı olarak Android SDK API'leri aracılığıyla erişmesi ZORUNLUDUR. Gizliliği korumaya yönelik mekanizmalar, "yalnızca toplu olarak analize izin veren ve günlüğe kaydedilen etkinliklerin ya da türetilen sonuçların bireysel kullanıcılarla eşleştirilmesini engelleyen ve kullanıcı başına verilerin içe dönük olmasını önlemek amacıyla (ör. RAPPOR gibi diferansiyel bir gizlilik teknolojisi kullanılarak uygulanan) mekanizmalar" olarak tanımlanır.
- [C-0-3], hizmetleri diğer sistem bileşenlerinden (ör. hizmeti bağlamama veya işlem kimliği paylaşma hariç) ayrı tutmalısınız:
- Telefon, Kişiler, Sistem Kullanıcı Arayüzü ve Medya
- [C-0-4] Kullanıcıların hizmetleri, kullanıcı tarafından yüklenebilir bir uygulama veya hizmetle değiştirmelerine İZİN VERİLMEMELİDİR
- [C-0-5] Yalnızca önceden yüklenmiş hizmetlerin bu tür verileri yakalamasına izin VERMELİDİR. Değiştirme özelliği AOSP'de yerleşik olarak bulunmuyorsa (ör. Dijital Asistan Uygulamaları için).
- [C-0-6] Önceden yüklenmiş hizmet mekanizması dışında hiçbir uygulamanın bu tür verileri yakalamasına izin VERMEMELİDİR. Bu tür yakalama özelliği bir Android SDK API ile uygulanmadığı sürece.
- [C-0-7] Hizmetleri devre dışı bırakmak için kullanıcıya ödeme yapması GEREKİR.
- [C-0-8], hizmetler tarafından bulunan Android izinlerini yönetme ve Bölüm 9.1. İzin.
9.8.16. Kesintisiz Ses ve Kamera verileri
9.8.2 Kayıt, 9.8.6 OS düzeyi ve ortam verileri ve 9.8.15 Korumalı Alan API'si uygulamalarında belirtilen şartlara ek olarak, AudioRecord, SoundTrigger veya diğer Ses API'leri aracılığıyla arka planda elde edilen Ses verilerini (sürekli olarak) VEYA CameraManager ya da diğer Kamera API'leri aracılığıyla arka planda elde edilen kamera verilerini kullanan uygulamalar:
- [C-0-1] Aşağıdaki durumlar söz konusu değilse ilgili bir göstergeyi (Bölüm 9.8.2 Kayıt uyarınca kamera ve/veya mikrofon) zorunlu kılması ZORUNLUDUR:
- Bu erişim, korumalı alana alınan bir uygulamada (bkz. 9.8.15 Korumalı Alana Sahip API uygulaması) gerçekleştirilir. Bu pakette şu rollerden bir veya daha fazlasına sahip olan bir paket kullanılır: System UI Intelligence, System Ambient Audio Intelligence, System Audio Intelligence, System Notification Text Intelligence, System Visual Intelligence veya System Visual Intelligence.
- Erişim, bir korumalı alan aracılığıyla gerçekleştirilir, AOSP'deki mekanizmalar (
HotwordDetectionService
,WearableSensingService
,VisualQueryDetector
) aracılığıyla uygulanır ve zorunlu kılınır. - Ses erişimi, ses kaynağı olarak
SOURCE_HOTWORD
sağlayan Dijital Asistan uygulaması tarafından yardımcı amaçlar doğrultusunda gerçekleştirilir. - Erişim sistem tarafından gerçekleştirilir ve açık kaynak kodla uygulanır.
- [C-SR-1] Bu tür verileri kullanan her işlev için kullanıcı rızasının gerekmesi ÖNERİLİR ve varsayılan olarak devre dışı bırakılmalıdır.
- [C-SR-2] Uzak bir cihazdan gelen kamera verilerine aynı değerlendirmenin uygulanması (ör. 9.8.2 Kayıt, 9.8.6 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 tabi tutulması ÖNERİLİR.
Kamera verileri uzaktaki bir giyilebilir cihazdan sağlanıyorsa ve Android OS dışında
şifrelenmemiş bir biçimde erişiliyorsa, korumalı alan uygulaması veya WearableSensingManager
tarafından
derlenen, korumalı alana alınmış bir işlev söz konusu olduğunda:
- [C-1-1], uzak giyilebilir cihaza orada ek bir gösterge göstermek üzere bunu bildirmesi ZORUNLUDUR.
Cihazlar, atanan anahtar kelime olmadan (genel kullanıcı sorgularını işleme veya kullanıcı varlığını kamerayla analiz etme) dijital Asistan uygulaması ile etkileşimde bulunma olanağı sunuyorsa:
- [C-2-1] bu tür bir uygulamanın
android.app.role.ASSISTANT
rolüne sahip bir paket tarafından sağlandığından emin olmalıdır. - [C-2-2] bu tür bir uygulamanın
HotwordDetectionService
ve/veyaVisualQueryDetectionService
Android API'lerini kullanmasını ZORUNLUDUR.
9.8.17. Telemetry
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 korumaya yönelik bir mekanizmaya sahip cihazlardan gizliliği hassas olarak sınıflandırılan verileri toplamak için bir yöntem de sağlar. StatsManager::query
API, StatsLog'da tanımlanan kısıtlanmış metrik kategorilerini sorgulama imkanı sunar.
Kısıtlanmış metrikleriStatsManager'dan sorgulayan ve toplayan tüm uygulamalar:
- [C-0-1] cihazdaki tek uygulama/uygulama OLMALIDIR ve
READ_RESTRICTED_STATS
iznine sahip olmalıdır. - [C-0-2] yalnızca telemetri verilerini ve cihazın günlüğünü, gizliliği korumaya yönelik bir mekanizma kullanarak GÖNDERMELİDİR. Gizliliği koruyan mekanizma, "yalnızca toplu olarak analize izin veren ve günlüğe kaydedilen etkinliklerin veya türetilen sonuçların bireysel kullanıcılarla eşleştirilmesini engelleyen" olarak tanımlanır.Bu sayede kullanıcı başına verilerin içe dönük olmasını önleyebilir (ör. RAPPOR gibi diferansiyel gizlilik teknolojisi kullanılarak uygulanır).
- [C-0-3] bu tür verileri cihazdaki herhangi bir kullanıcı kimliğiyle (Hesap gibi) İLİŞKİLENDİRMEMELİDİR.
- [C-0-4] bu tür verileri, mevcut bölümde (9.8.17 Gizliliği Korunan Telemetri) belirtilen şartlara uymayan diğer işletim sistemi bileşenleriyle PAYLAŞMAMALIDIR.
- [C-0-5] telemetrinin gizliliği korumaya yönelik toplama, kullanma ve paylaşma özelliklerini etkinleştirmek/devre dışı bırakmak için bir kullanıcıya destek vermesi ZORUNLUDUR.
- [C-0-6], veriler cihazda herhangi bir biçimde depolanıyorsa uygulamanın topladığı bu tür verileri silmesi için kullanıcıya destek vermesi ZORUNLUDUR. Kullanıcı verileri silmeyi seçtiyse, cihazda depolanmış olan tüm verilerin kaldırılması ZORUNLUDUR.
- [C-0-7], temel gizliliği korumaya yönelik protokol uygulamasını açık kaynak bir depoda açıklamak GEREKİR.
- [C-0-8 ]StatsLog'da tanımlanan kısıtlanmış metrik kategorilerinde veri toplanmasını engellemek için bu bölümde veri çıkış politikalarının uygulanması ZORUNLUDUR.
Yeni şartları sonlandırma
9.9. Veri Depolama Şifrelemesi
Tüm cihazlar bölüm 9.9.1'deki şartları karşılamalıdır. Bu belgeden daha eski bir API düzeyinde kullanıma sunulan cihazlar, 9.9.2 ve 9.9.3 bölümlerinin şartlarından muaftır. Bunun yerine, cihazın kullanıma sunulduğu API düzeyine karşılık gelen Android Uyumluluk Tanımlama Belgesi'nin 9.9 numaralı bölümündeki şartları karşılamaları gerekir.
9.9.1. Doğrudan Başlatma
Cihaz uygulamaları:
[C-0-1] Depolama Alanı Şifreleme'yi desteklemese bile Doğrudan Başlatma modu API'lerini uygulaması ZORUNLUDUR.
[C-0-2]
ACTION_LOCKED_BOOT_COMPLETED
veACTION_USER_UNLOCKED
Intent'lerin, Doğrudan Başlatmaya duyarlı uygulamalara Cihazla Şifrelenmiş (DE) ve Kimlik Bilgisiyle Şifrelenmiş (CE) depolama konumlarının kullanıcının kullanılabileceğini bildirmek için yine de yayınlanması ZORUNLUDUR.
9.9.2. Şifreleme gereksinimleri
Cihaz uygulamaları:
- [C-0-1] uygulamanın özel verilerini (
/data
bölümü) ve cihazın kalıcı ve kaldırılamaz bir parçasıysa uygulamanın paylaşılan depolama alanı bölümünü (/sdcard
bölümü) şifrelemelidir. - Kullanıcı ilk kurulum deneyimini tamamladığında [C-0-2] veri depolama şifrelemesinin varsayılan olarak etkinleştirilmiş olması ZORUNLUDUR.
[C-0-3] aşağıdaki iki şifreleme yönteminden birini uygulayarak yukarıdaki veri depolama şifrelemesi gereksinimlerini karşılamalıdır:
- Bölüm 9.9.3.1'de açıklandığı üzere Dosya Tabanlı Şifreleme (FBE) ve Meta Veri Şifreleme.
- Bölüm 9.9.3.2'de açıklandığı üzere, Kullanıcı Başına Blok Düzeyinde Şifreleme.
9.9.3. Şifreleme Yöntemleri
Cihaz uygulamaları şifrelenmişse:
- [C-1-1]; kullanıcıyı kimlik bilgileri alması için sorgulamadan başlatılmalı ve Doğrudan Başlatma'ya duyarlı uygulamaların
ACTION_LOCKED_BOOT_COMPLETED
mesajı yayınlandıktan sonra Cihazla Şifrelenmiş (DE) depolama alanına erişmesine izin vermelidir. - [C-1-2], Kimlik Bilgisi Şifrelenmiş (CE) depolama alanına yalnızca kullanıcı kimlik bilgilerini (ör. şifre kodu, PIN, desen veya parmak izi) sağlayarak cihazın kilidini açtıktan ve
ACTION_USER_UNLOCKED
mesajı yayınlandıktan sonra izin verilmelidir. - [C-1-13] CE korumalı depolama alanının kilidini açmak için kullanıcı tarafından sağlanan kimlik bilgileri, kayıtlı emanet anahtarı veya bölüm 9.9.4'teki gereksinimleri karşılayan yeniden başlatma uygulamasına devam eden bir yöntem olmadan herhangi bir yöntem SUNMAMALIDIR.
- [C-1-4] Doğrulanmış Başlatma'yı kullanması ZORUNLUDUR.
9.9.3.1. Meta Veri Şifrelemeyle Dosya Tabanlı Şifreleme
Cihaz uygulamaları Meta Veri Şifreleme ile Dosya Tabanlı Şifreleme kullanıyorsa:
- [C-1-5], dosya içeriklerini ve dosya sistemi meta verilerini AES-256-XTS veya Adiantum kullanarak şifrelemelidir. 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 gibi Adiantum-XChaCha12-AES'yi ifade eder. Dosya sistemi meta verileri; dosya boyutları, sahiplik, modlar ve genişletilmiş özellikler (xattrs) gibi verilerdir.
- [C-1-6], dosya adlarını AES-256-CBC-CTS, AES-256-HCTR2 veya Adiantum kullanarak şifrelemelidir.
- [C-1-12] Cihazda Gelişmiş Şifreleme Standardı (AES) talimatları varsa (ARM tabanlı cihazlarda ARMv8 Şifreleme Uzantıları veya x86 tabanlı cihazlarda AES-NI gibi) dosya adı, dosya içeriği ve dosya sistemi meta veri şifrelemesi için yukarıdaki AES tabanlı seçeneklerin Adiantum değil, kullanılması ZORUNLUDUR.
- [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 alınamayan bir anahtar türetme işlevi (ör. HKDF-SHA512) kullanması ZORUNLUDUR. "Kriptografik olarak güçlü ve geri döndürülemez", anahtar türev işlevinin en az 256 bit güvenlik gücüne sahip olduğu ve girişlerinde sözde rastgele işlev ailesi gibi davrandığı anlamına gelir.
- [C-1-14] farklı şifreleme amaçlarıyla (ör. hem şifreleme hem de anahtar türetimi veya iki farklı şifreleme algoritması için) aynı Dosya Tabanlı Şifreleme (FBE) anahtarlarını veya alt anahtarlarını KULLANMAMALIDIR.
- [C-1-15], kalıcı depolama alanındaki silinmemiş tüm şifrelenmiş dosya içeriği bloklarının, hem dosyaya hem de dosya içindeki ofsete bağlı olan şifreleme anahtarı ve başlatma vektörü (IV) kombinasyonları kullanılarak şifrelenmesini ZORUNLUDUR. Ayrıca, şifrelemenin yalnızca 32 bitlik IV uzunluğunu destekleyen satır içi şifreleme donanımı kullanılarak yapıldığı durumlar dışında bu tür tüm kombinasyonların birbirinden farklı olması ZORUNLUDUR.
- [C-1-16] Farklı dizinlerdeki kalıcı depolama alanında bulunan silinmemiş tüm şifreli dosya adlarının, farklı şifreleme anahtarı ve başlatma vektörü (IV) kombinasyonları kullanılarak şifrelenmesi ZORUNLUDUR.
[C-1-17], kalıcı depolama alanındaki tüm şifrelenmiş dosya sistemi meta veri bloklarının farklı şifreleme anahtarı ve başlatma vektörü (IV) kombinasyonları kullanılarak şifrelenmesini ZORUNLUDUR.
CE ve DE depolama alanlarını ve dosya sistemi meta verilerini koruyan anahtarlar:
- [C-1-7] kriptografik olarak donanım destekli bir Anahtar Deposu'na bağlı olması ZORUNLUDUR. Bu anahtar deposunun Doğrulanmış Başlatma'ya ve cihazın donanım güven köküne bağlı olması ZORUNLUDUR.
- [C-1-8] CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine bağlı ZORUNLUDUR.
- [C-1-9] Kullanıcı kilit ekranı kimlik bilgilerini belirtmediğinde CE anahtarları varsayılan bir şifre koduna BAĞLI OLMALIDIR.
- [C-1-10] benzersiz ve farklı olmalıdır. Bir başka deyişle, hiçbir kullanıcının CE veya DE anahtarı, başka bir kullanıcının CE veya DE anahtarlarıyla eşleşmemelidir.
- [C-1-11] Zorunlu olarak desteklenen şifreler, anahtar uzunlukları ve modların kullanılması ZORUNLUDUR.
- [C-1-12] Bootloader'ın kilidi açılırken ve burada açıklandığı gibi kilitlenirken [C-1-12] güvenli bir şekilde silinmesi ZORUNLUDUR.
Önceden yüklenmiş gerekli uygulamaları (ör. Alarm, Telefon, Messenger) Doğrudan Başlatma'ya duyarlı hale getirmelisiniz.
Yukarı akış Android Açık Kaynak projesi, Linux çekirdeği "fscrypt" şifreleme özelliğine dayalı Dosya Tabanlı Şifreleme ve Linux çekirdeği "dm-default-key" özelliğine dayalı Meta Veri Şifreleme uygulamasını 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] Bölüm 9.5'te açıklandığı gibi, çok kullanıcılı desteğin etkinleştirilmiş olması GEREKİR.
- [C-1-2], ham bölümler veya mantıksal birimler kullanarak kullanıcı başına bölümlendirmeler ZORUNLUDUR.
- [C-1-3] temel blok cihazların şifrelenmesi için kullanıcı başına benzersiz ve ayrı şifreleme anahtarları KULLANMALIDIR.
[C-1-4], kullanıcı bölümlerinin blok düzeyinde şifrelemesi için AES-256-XTS'nin kullanılması ZORUNLUDUR.
Kullanıcı başına blok düzeyinde şifrelenmiş cihazları koruyan anahtarlar:
- [C-1-5], donanım destekli bir Anahtar Deposu'na kriptografik olarak bağlı OLMALIDIR. Bu anahtar deposunun Doğrulanmış Başlatma'ya ve cihazın donanım güven köküne bağlı olması ZORUNLUDUR.
- [C-1-6], ilgili kullanıcının kilit ekranı kimlik bilgilerine bağlı OLMALIDIR.
Kullanıcı başına blok düzeyinde şifreleme, kullanıcı başına bölümlendirmeler yerine Linux çekirdeği "dm-crypt" özelliği kullanılarak uygulanabilir.
9.9.4. Yeniden Başlatıldığında Devam Ettir
Yeniden Başlatmada Devam Ettirme özelliği, bir OTA tarafından başlatılan yeniden başlatma işleminden sonra henüz Doğrudan Başlatma'yı desteklemeyenler de dahil olmak üzere tüm uygulamaların CE depolama alanının kilidinin açılmasını sağlar. Bu özellik, kullanıcıların yeniden başlatma işleminden sonra yüklü uygulamalardan bildirim almasına olanak tanır.
Yeniden Başlatmada Devam Ettirme uygulamasının uygulanması, bir cihaz saldırganın eline geçtiğinde, cihaz açık, CE depolama alanının kilidi açık ve kullanıcı bir OTA aldıktan sonra cihazın kilidini açmış olsa bile saldırganın kullanıcının CE şifrelenmiş verilerini kurtarmasının son derece zor olmasını sağlamak için devam etmelidir. Kuruluş içi saldırılara karşı direnç için saldırganın yayın kriptografik imzalama anahtarlarına erişim sağladığını da varsayarız.
Özellikle:
[C-0-1] CE depolama alanı, cihaza fiziksel olarak sahip olup aşağıdaki özelliklere ve sınırlamalara sahip olan saldırganlar için bile okunamaz:
- Rastgele mesajları imzalamak için herhangi bir tedarikçinin veya şirketin imzalama anahtarını kullanabilir.
- Cihazın OTA almasına neden olabilir.
- Aşağıda ayrıntılı bir şekilde açıklanan durumlar 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 gecikme ve RAM içeriklerini yok eden bir güç döngüsü gerektirir.
- Üzerinde oynanmaya karşı korumalı donanımın (ör. Titan M) çalışma şekli değiştirilemez.
- Yayındaki cihazın RAM'i okunamıyor.
- Kullanıcının kimlik bilgisi (PIN, desen, şifre) alınamıyor veya başka bir şekilde girilmesine neden oluyor.
Örneğin, burada bulunan tüm açıklamaları uygulayan ve uyumlu bir cihaz uygulaması [C-0-1] ile uyumlu olacaktır.
9:10. Cihaz bütünlüğü
Aşağıdaki şartlar, cihaz bütünlüğünün durumu konusunda şeffaflık sağlar. Cihaz uygulamaları:
[C-0-1], bootloader durumunun sistem görüntüsünün yanıp sönmesine izin verip vermediğini
PersistentDataBlockManager.getFlashLockState()
System API yöntemi üzerinden 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 sürümlerinde Doğrulanmış Başlatma'yı desteklemeden başlatılmışsa ve sistem yazılımı güncellemesiyle bu özellik için destek sağlayamıyorsa bu zorunluluktan muaf tutulabilirler.
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 özelliği bayrağını
android.software.verified_boot
beyan etmelidir. - [C-1-2] Her başlatma sırasında doğrulama ZORUNLUDUR.
- [C-1-3] Doğrulamanın, güven kökü olan sabit bir donanım anahtarından başlatılması ve sistem bölmesine kadar tüm ayrıntılarıyla devam etmesi ZORUNLUDUR.
- [C-1-4], sonraki aşamada kodu yürütmeden önce bir sonraki aşamada tüm baytların bütünlüğünü ve özgünlüğünü kontrol etmek için doğrulamanın her aşamasını uygulamalıdır.
- [C-1-5], karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'nin güncel önerileri kadar güçlü doğrulama algoritmaları kullanmalıdır.
- [C-1-6] Kullanıcı yine de başlatmayı denemediği sürece, sistem doğrulaması başarısız olduğunda başlatma işleminin tamamlanmasına İZİN VERİLMEMELİDİR. Bu durumda, doğrulanmamış herhangi bir depolama blokuna ait verilerin kullanılmaması ZORUNLUDUR.
- [C-1-7] Kullanıcı bootloader'ın kilidini açık bir şekilde açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERİLMEMELİDİR.
- [C-SR-1] Cihazda birden çok ayrı çip varsa (ör. radyo, özel görüntü işlemcisi) bu yongaların her birinin başlatma işlemi, başlatma sırasındaki her aşamayı doğrulamak için ÖNERİLİR.
- [C-1-8], kurcalama algılamalı (bootloader'ın kilidinin açık olup olmadığını) depolamak için depolama alanı ZORUNLUDUR. Müdahale tespiti içeren depolama, bootloader'ın Android'in içinden depolama alanında değişiklik yapılıp yapılmadığını algılayabilmesini sağlar.
- [C-1-9], cihazı kullanırken kullanıcıya istem göstermeli ve bootloader kilitli modundan bootloader kilidi açık moduna geçişe izin vermeden önce fiziksel onay gerektirmelidir.
- [C-1-10], Android tarafından kullanılan bölümler için (ör. başlatma, sistem bölümleri) geri alma koruması uygulaması ve izin verilen minimum OS sürümünü belirlemek üzere kullanılan meta verileri depolamak için değişiklik algılama depolama alanı kullanması ZORUNLUDUR.
- [C-1-11] Bootloader'ın kilidini açma ve kilitleme sırasında tüm kullanıcı verilerinin "9.12" uyarınca güvenli bir şekilde silinmesi ZORUNLUDUR. Veri Silme" (kullanıcı verileri bölümü ve NVRAM alanları dahil).
- [C-SR-2] Tüm ayrıcalıklı uygulama APK dosyalarının Doğrulanmış Başlatma tarafından korunan bölümlerde köklenmiş bir güven zinciriyle doğrulanması ÖNEMLE ÖNERİLİR.
- [C-SR-3] Ayrıcalıklı bir uygulama tarafından APK dosyasının dışından yüklenen yürütülebilir yapıları (dinamik olarak yüklenen kod veya derlenmiş kod gibi) yürütmeden önce doğrulaması ya da hiç yürütmemesi ÖNEMLE ÖNERİLİR.
- Kalıcı donanım yazılımına (ör. modem, kamera) sahip tüm bileşenler için geri alma koruması uygulanmalıdır ve izin verilen minimum sürümü belirlemek üzere kullanılan meta verileri depolamak için değişiklik algılama depolama alanı KULLANILMALIDIR.
Cihaz uygulamaları, Android'in önceki sürümlerinde C-1-8'den C-1-11'e kadar desteklenmeden zaten başlatılmışsa ve sistem yazılımı güncellemesiyle bu gereksinimlere yönelik destek sağlayamıyorsa gereksinimlerden muaf tutulabilirler.
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 bootloader'a entegre edilebilir.
Cihaz uygulamaları
Cihaz uygulamaları, dosya içeriğini sayfa bazında doğrulayabiliyorsa:
[
C-0-3C-2-1], dosya içeriğinin tamamını okumadangüvenilir anahtara görekriptografik olarak doğrulamayı destekler.[
C-0-4C-2-2], okuma içeriğigüvenilir anahtara göre doğrulama yapmadığındayukarıdaki [C-2-1] uyarınca doğrulanmadığında korumalı dosyadaki okuma isteklerinin başarılı olmasına İZİN VERMEMELİDİR.
Yeni koşullarla başlayın
- [C-2-4], etkinleştirilmiş dosyalar için O(1) içinde dosya sağlama toplamının döndürülmesi ZORUNLUDUR.
Yeni şartları sonlandırma
Cihaz uygulamaları, önceki bir Android sürümünde dosya içeriğini güvenilir bir anahtarla doğrulama olanağı olmadan zaten başlatılmışsa ve sistem yazılımı güncellemesiyle bu özellik için destek sağlayamıyorsa bu zorunluluktan muaf tutulabilirler. Yukarı akış Android Açık Kaynak projesi, Linux çekirdeği fs-verity özelliğine göre bu özelliğin tercih edilen uygulamasını sağlar.
Cihaz uygulamaları:
- [C-SR-4] Android ProtectedApproval API'yi desteklemesi için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, Android ProtectedApproval API'yi destekliyorsa:
[C-3-1],
ConfirmationPrompt.isSupported()
API içintrue
değerini bildirmeli.[C-3-2] çekirdeği de dahil olmak üzere Android OS'te çalışan kodun, kötü amaçlı veya başka bir şekilde kullanıcı etkileşimi olmadan olumlu bir yanıt oluşturamayacağından emin olması ZORUNLUDUR.
[C-3-3], çekirdeği de dahil olmak üzere Android OS'in güvenliği ihlal edilmiş olsa bile kullanıcının istenen mesajı inceleyip onaylayabilmesi ZORUNLUDUR.
9:11. Anahtarlar ve Kimlik Bilgileri
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin şifreleme anahtarlarını bir kapsayıcıda depolamasına ve KeyChain API veya Keystore API aracılığıyla şifreleme işlemlerinde 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 izin verilmesi ZORUNLUDUR.
- [C-0-2] Kilit ekranı kimlik doğrulama işleminin, başarısız denemeler arasında bir zaman aralığı uygulaması ZORUNLUDUR. Başarısız deneme sayısı n olarak ayarlandığında, zaman aralığının 9 < n < 30 için en az 30 saniye olması ZORUNLUDUR. n > 29 için zaman aralığı değeri en az 30*2^floor((n-30)/10)) saniye veya en az 24 saat (hangisi daha küçükse) olmalıdır.
- Oluşturulabilecek anahtar sayısını SINIRLAMAMALIDIR.
Yeni koşullarla başlayın
- [C-0-3] Başarısız birincil kimlik doğrulama denemesi sayısını SINIRLAMALIDIR.
- [C-SR-2] 20 başarısız birincil kimlik doğrulama denemesi olan üst sınırın uygulanması ÖNERİLİR. Ayrıca, kullanıcılar izin verip özelliği etkinleştirirse, başarısız birincil kimlik doğrulama denemesi sayısını aştıktan sonra "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirmeleri ÖNERİLİR.
Cihaz uygulamaları, bilinen bir gizli anahtara dayalı olması halinde kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse ve ekranı kilitlemenin güvenli yolu olarak ele alınacak yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-SR-3] PIN'in en az 6 basamaklı veya eşdeğer bir şekilde 20 bit entropi olması ÖNEMLE ÖNERİLİR.
- [C-2-1] 6 haneden kısa bir PIN, PIN uzunluğunun açığa çıkmasını önlemek için kullanıcı etkileşimi olmadan otomatik girişe İZİN VERMEMELİDİR.
Yeni şartları sonlandırma
Cihaz uygulaması güvenli kilit ekranını desteklediğinde:
- [C-1-1], anahtar deposu uygulamasını izole bir yürütme ortamıyla yedeklemelidir.
- [C-1-2], Android KeyStore sisteminin desteklenen algoritmalarını, çekirdekteki koddan güvenli bir şekilde izole edilmiş bir alanda doğru şekilde desteklemek için RSA, AES, ECDSA, ECDH (IKeyMintDevice destekleniyorsa), 3DES ve HMAC şifreleme algoritmaları ile MD5, SHA1 ve SHA-2 aile karması işlevlerinin uygulamalarına SAHİP OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole ortamın dahili durumuna erişebileceği tüm potansiyel mekanizmaları Engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), bu gereksinimi Trusty uygulamasını kullanarak karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya üçüncü taraflarca incelenmiş ve hipervizör tabanlı uygun bir yalıtımın güvenli bir şekilde uygulanması, alternatif seçeneklerdir.
- [C-1-3] kilit ekranı kimlik doğrulamasını izole yürütme ortamında gerçekleştirmesi ZORUNLUDUR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verir. Kilit ekranı kimlik bilgilerinin, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulaması gerçekleştirebilmesini sağlayacak şekilde saklanabilmesi ZORUNLUDUR. 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 gerçekleştirildiği anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının, anahtarların cihaz tanımlayıcıları olarak kullanılmasını engelleyecek kadar çok sayıda cihaz arasında paylaşılması ZORUNLUDUR. Bu koşulu karşılamanın bir yolu,belirli bir SKU'dan en az 100.000 birim üretilmediği sürece aynı onay anahtarını paylaşmaktır. 100.000'den fazla SKU üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Cihaz uygulaması önceki bir Android sürümünde zaten başlatıldıysa bu tür bir cihaz, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint
özelliğini beyan etmediği sürece, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar onayını destekleme zorunluluğundan muaf olur.
- [C-1-5] Kullanıcının kilitli durumdan kilitli duruma geçiş için Uyku zaman aşımını seçmesine izin verilmelidir. En fazla 15 saniye uzunluğunda bir izin verilebilecek zaman aşımı olmalıdır. Ana birim kapatıldığında veya kullanıcı değiştirildiğinde ekranı kilitleyen otomotiv cihazlarında uyku zaman aşımı yapılandırmasına sahip OLMAZ.
- [C-1-6] IKeymasterDevice 4.0, IKeymasterDevice 4.1, IKeyMintDevice sürüm 1 veya IKeyMintDevice sürüm 2'yi DESTEKLEMELİDİR.
- [C-SR-1] IKeyMintDevice sürüm 1'i desteklemesi için ÖNEMLE ÖNERİLİR.
9.11.1. Güvenli Kilit Ekranı, Kimlik Doğrulama ve Sanal Cihazlar
AOSP uygulaması, bilgi fabrikasına dayalı birincil kimlik doğrulamasının ikincil güçlü bir biyometri veya daha zayıf üçüncül yöntemler ile desteklenebileceği katmanlı bir kimlik doğrulama modeli uygular.
Cihaz uygulamaları:
[C-SR-1] Birincil kimlik doğrulama yöntemi olarak aşağıdakilerden yalnızca birini ayarlaması ÖNEMLE ÖNERİLİR:
- Sayısal bir PIN
- Alfanümerik şifre
Tam olarak 3x3 noktalardan oluşan bir ızgarada kaydırma deseni
Yukarıdaki kimlik doğrulama yöntemlerinin, bu dokümanda önerilen birincil kimlik doğrulama yöntemleri olarak adlandırıldığını unutmayın.
Yeni koşullarla başlayın
- [C-0-1], başarısız birincil kimlik doğrulama denemesi sayısını SINIRLAMALIDIR.
- [C-SR-5] 20 başarısız birincil kimlik doğrulama girişiminden oluşan üst sınırın uygulanması ÖNERİLİR. Ayrıca, kullanıcıların izin verip özelliği etkinleştirmesi durumunda, başarısız birincil kimlik doğrulama denemesi sayısını aştıktan sonra "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirmeleri ÖNERİLİR.
Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemi olarak sayısal bir PIN ayarlıyorsa:
- [C-SR-6] PIN'in en az 6 haneli veya eşdeğer olarak 20 bit entropisine sahip olması ÖNEMLE ÖNERİLİR.
- [C-SR-7] 6 haneden kısa bir PIN, PIN uzunluğunun açığa çıkmasını önlemek amacıyla kullanıcı etkileşimi olmadan otomatik girişe izin vermek için ÖNEMLE ÖNERİLMEZ.
Yeni şartları sonlandırma
Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemenin güvenli yolu olarak yeni bir kimlik doğrulama yöntemi kullanırsa yeni kimlik doğrulama yöntemi:
- [C-2-1], Anahtar Kullanımı İçin Kullanıcı Kimlik Doğrulaması Gerektirme bölümünde açıklandığı gibi kullanıcı kimlik doğrulama yöntemi OLMALIDIR.
Cihaz uygulamaları, bilinen bir gizli anahtara dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse ve ekranı kilitlemenin güvenli yolu olarak kabul edilecek yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-3-1] İzin verilen en kısa giriş uzunluğunun entropisi 10 bitten büyük ZORUNLUDUR.
- [C-3-2] Olası tüm girişlerin maksimum entropisinin 18 bitten büyük olması ZORUNLUDUR.
- [C-3-3] Yeni kimlik doğrulama yöntemi, AOSP'de uygulanan ve sağlanan önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) hiçbirinin yerine GEÇMEMELİDİR.
- [C-3-4] Device Policy Controller (DPC) uygulaması, şifre koşulu politikasını DevicePolicyManager.setRequiredPasswordComplexity() aracılığıyla FACE_COMPLEXITY_NONE'den daha kısıtlayıcı bir karmaşıklık sabitiyle ayarladığında veya BIO_QUAKEsabit ayardan daha kısıtlayıcı bir sabit değer ile DevicePolicyManager.setPasswordQuality() yöntemi belirlendiğinde yeni kimlik doğrulama yönteminin devre dışı bırakılması ZORUNLUDUR.
- [C-3-5] Yeni kimlik doğrulama yöntemlerinin en fazla 72 saatte bir önerilen birincil kimlik doğrulama yöntemlerine (ör. PIN, desen, şifre) dönmesi VEYA kullanıcıya verilerinin gizliliğini korumak için bazı verilerin yedeklenmeyeceğini net bir şekilde açıklaması gerekir.
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 yolu olarak kabul edilen biyometriye dayalı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:
- [C-4-1], Sınıf 1 için bölüm 7.3.10'da (eski adıyla Kolaylık) açıklanan tüm şartları karşılamalıdır.
- [C-4-2], bilinen bir gizli anahtara dayalı, önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmasının olması ZORUNLUDUR.
- [C-4-3] Devre dışı bırakılmalı ve önerilen birincil kimlik doğrulamanın yalnızca Cihaz Politikası Denetleyici (DPC) uygulaması ilişkili biyometrik işaretlerden herhangi biriyle (ör.
KEYGUARD_DISABLE_BIOMETRICS
,KEYGUARD_DISABLE_FINGERPRINT
,KEYGUARD_DISABLE_FACE
veyaKEYGUARD_DISABLE_IRIS
)DevicePolicyManager.setKeyguardDisabledFeatures()
yöntemini çağırarak tuş koruyucu özellik politikasını ayarladığında ekranın kilidini açabilmesi için izin verilmelidir.
Biyometrik kimlik doğrulama yöntemleri bölüm 7.3.10'da açıklandığı gibi Sınıf 3 (eski adıyla Güçlü) şartlarını karşılamıyorsa:
- [C-5-1] Device Policy Denetleyicisi (DPC) uygulaması, şifre gereksinimleri kalite politikasını
PASSWORD_COMPLEXITY_LOW
ürününden daha kısıtlayıcı bir karmaşıklık paketiyle DevicePolicyManager.setRequiredPasswordComplexity() aracılığıyla veyaPASSWORD_QUALITY_BIOMETRIC_WEAK
ürününe göre daha kısıtlayıcı bir kalite sabitine sahip DevicePolicyManager.setPasswordQuality() yöntemi aracılığıyla ayarlamışsa yöntemlerin devre dışı bırakılması ZORUNLUDUR. - [C-5-2] Bölüm 7.3.10'da [C-1-7] ve [C-1-8]'de açıklandığı şekilde, önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için kullanıcıya sorgu gönderilmesi ZORUNLUDUR.
- [C-5-3] Yöntemler, güvenli kilit ekranı olarak GÖRÜLMEMELİDİR ve aşağıdaki bölümde yer alan C-8 ile başlayan şartları karşılamalıdır.
Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya değiştirirse ve fiziksel jetona veya konuma dayalı yeni bir kimlik doğrulama yöntemi varsa:
- [C-6-1] Bilinen bir gizli anahtarı temel alan ve güvenli kilit ekranı olarak değerlendirilme gereksinimlerini karşılayan, önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmasının olması ZORUNLUDUR.
- [C-6-2] Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı ayarlarken yeni yöntemin devre dışı bırakılması ve yalnızca önerilen birincil kimlik doğrulama yöntemlerinden birinin ekran kilidini açmasına izin verilmesi ZORUNLUDUR:
DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)
yöntemiPASSWORD_QUALITY_NONE
'ten daha kısıtlayıcı bir kalite sabitine sahipDevicePolicyManager.setPasswordQuality()
yöntemi.PASSWORD_COMPLEXITY_NONE
'ten daha kısıtlayıcı bir karmaşıklık paketine sahipDevicePolicyManager.setRequiredPasswordComplexity()
yöntemi.
- [C-6-3] Kullanıcıya en az 4 saatte bir veya daha kısa bir süre içinde, önerilen birincil kimlik doğrulama yöntemlerinden biri (ör. PIN, desen, şifre) için giriş yapılması ZORUNLUDUR. Fiziksel bir jeton, C-X'teki TrustAgent uygulamaları için gereksinimleri karşıladığında, bunun yerine C-9-5'te tanımlanan zaman aşımı kısıtlamaları geçerli olur.
- [C-6-4] Yeni yöntem, güvenli bir kilit ekranı olarak KULLANILMAMALIDIR ve aşağıdaki C-8'de listelenen kısıtlamalara UYMALIDIR.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService
System API'yi uygulayan bir veya daha fazla güven aracısı varsa bunlar:
- [C-7-1] Cihaz kilidi ertelendiğinde veya güven aracıları tarafından kilidi açılabildiğinde ayarlar menüsünde ve kilit ekranında açık bir uyarı olması gerekir. Örneğin, AOSP bu şartı ayarlar menüsünde "Ayarı otomatik olarak kilitle" ve "Güç düğmesi anında kilitlenir" şeklinde bir metin açıklaması ve kilit ekranında ayırt edilebilir bir simge göstererek karşılar.
- [C-7-2]
DevicePolicyManager
sınıfındakiKEYGUARD_DISABLE_TRUST_AGENTS
sabiti gibi tüm güven aracısı API'lerine saygı duymalı ve bunları tam olarak uygulamalıdır. - [C-7-3], birincil kişisel cihaz (ör. avuç içi) olarak kullanılan bir cihazda
TrustAgentService.addEscrowToken()
işlevini tam olarak UYGULAMAMALIDIR, ancak bu işlevi genellikle paylaşılan cihaz uygulamalarında (ör. Android Televizyon veya Automotive cihazı) tam olarak UYGULAMAYABİLİR. - [C-7-4],
TrustAgentService.addEscrowToken()
tarafından eklenen tüm depolanan jetonları şifrelemelidir. - [C-7-5] Şifreleme anahtarı veya emanet jetonunu, anahtarın kullanıldığı cihazda KORUMAMALIDIR. Örneğin, telefonda saklanan bir anahtarın TV'deki bir kullanıcı hesabının kilidini açmasına izin verilir. Otomotiv cihazlarında, emanet jetonunun aracın herhangi bir kısmında depolanmasına izin verilmez.
- [C-7-6], veri depolamanın şifresini çözmek için emanet jetonunu etkinleştirmeden önce kullanıcının güvenlik açısından etkileri konusunda kullanıcıyı bilgilendirmelidir.
- [C-7-7], önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmasının olması ZORUNLUDUR.
[C-7-8] Kullanıcının güvenliği (ör.sürücünün dikkatinin dağılması) endişe yaratmadığı sürece, en az 72 saatte bir veya daha kısa bir süre içinde, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biri için kullanıcının sorgulanması ZORUNLUDUR.- [C-7-9] Kullanıcının güvenliği (ör.sürücünün dikkatinin dağılması) açısından sorun teşkil etmiyorsa, bölüm 7.3.10'da [C-1-7] ve [C-1-8] numaralı maddelerde açıklandığı şekilde, önerilen birincil kimlik doğrulama yöntemlerinden birini (ör. PIN, desen, şifre) yapmak için kullanıcıya giriş sorgulaması ZORUNLUDUR.
- [C-7-10], güvenli kilit ekranı olarak KULLANILMAMALIDIR ve aşağıdaki C-8'de listelenen kısıtlamalara UYMALIDIR.
- [C-7-11] Birincil kişisel cihazlarda (ör.avuç içi) TrustAgent'ların cihazın kilidini açmasına İZİN VERMEMELİDİR ve bu cihazları yalnızca kilidi açılmış bir cihazı en fazla 4 saat boyunca kilitli durumda tutmak için kullanabilir. AOSP'de TrustManagerService'in varsayılan uygulaması bu gereksinimi karşılar.
- [C-7-12] Emanet jetonunu depolama cihazından hedef cihaza aktarmak için kriptografik olarak güvenli bir iletişim kanalı (ör.UKEY2) KULLANMALIDIR.
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 tuş koruyucunun kilidini açmak için yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-8-1] Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını
DevicePolicyManager.setPasswordQuality()
yöntemi aracılığıylaPASSWORD_QUALITY_NONE
ürününden daha kısıtlayıcı bir kalite sabiti ile veyaDevicePolicyManager.setRequiredPasswordComplexity()
üzerinden daha kısıtlayıcı bir karmaşıklık sabiti ile belirlerse bu yeni yöntemin devre dışı bırakılması ZORUNLUDUR. - [C-8-2]
DevicePolicyManager.setPasswordExpirationTimeout()
tarafından ayarlanan şifre geçerlilik süresi zamanlayıcılarını SIFIRLAMAMALIDIR. - [C-8-3] Kilit durumunun belirlenmesi için üçüncü taraf uygulamalarının kullanması için bir API KULLANMAMALIDIR.
Cihaz uygulamaları, uygulamaların ikincil sanal ekranlar oluşturmasına izin veriyor ve VirtualDeviceManager
gibi ilişkili giriş etkinliklerini desteklemiyorsa bunlar:
- [C-9-1] Cihazın varsayılan ekranı kilitliyken bu ikincil sanal ekranları kilitlemeli ve varsayılan ekranın kilidi açıkken bu ikincil sanal ekranların kilidini açmalıdır.
Cihaz uygulamaları, uygulamaların ikincil sanal ekranlar oluşturmasına ve VirtualDeviceManager aracılığıyla yaptığı gibi ilişkili giriş etkinliklerini desteklemesine izin veriyorsa)
- [C-10-1] Her sanal cihaz için ayrı kilit durumlarını DESTEKLEMELİDİR
- [C-10-2] Boşta kalma zaman aşımı olduğunda tüm sanal cihazların bağlantısının kesilmesi GEREKİR
- [C-10-3] Boşta kalma zaman aşımı olması ZORUNLUDUR
- [C-10-4] Kullanıcı bir tam kilitleme başlattığında, avuç içi cihazlar için gerekli olan kullanıcı tam kilitleme ücreti de dahil olmak üzere tüm ekranları kilitlenmelidir. (bkz. Bölüm 2.2.5[9.11/H-1-2]).
- [C-10-5] Her kullanıcı için ayrı sanal cihaz örneklerinin olması ZORUNLUDUR
- [C-10-6]
DevicePolicyManager.setNearbyAppStreamingPolicy
ile belirtildiğindeVirtualDeviceManager
üzerinden ilişkili giriş etkinliklerinin oluşturulmasını devre dışı bırakması ZORUNLUDUR - [C-10-7] yalnızca her sanal cihaz için ayrı bir pano kullanması (veya sanal cihazlar için panoyu devre dışı bırakması) ZORUNLUDUR
- [C-10-11] Sanal cihazlarda bilgi faktörü girişi ve biyometrik istemi dahil olmak üzere kimlik doğrulama kullanıcı arayüzünün devre dışı bırakılması GEREKİR
- [C-10-12] Bir sanal cihazdan başlatılan amaçların yalnızca aynı sanal cihazda görüntülenecek şekilde kısıtlanması ZORUNLUDUR
- [C-10-13] Android Anahtar Deposu Sistemi ile kullanıcı kimlik doğrulaması yetkilendirmesi olarak sanal bir cihaz kilidi durumu KULLANMAMALIDIR.
KeyGenParameterSpec.Builder.setUserAuthentication*
inceleyin.
Cihaz uygulamaları, kullanıcının birincil kimlik doğrulama bilgi faktörünü bir kaynak cihazdan hedef cihaza (ör. hedef cihazın ilk kurulumu için) aktarmasına olanak tanıdığında:
- [C-11-1] Bilgi faktörünü, kaynak cihazdan hedef cihaza aktarırken bilgi faktörünü Google Cloud Key Vault Hizmeti'nin güvenlik teknik belgesinde açıklananlara benzer bir koruma garantileriyle şifrelemesi ZORUNLUDUR.
- [C-11-2], bilgi faktörünü hedef cihaza aktarmadan önce kaynak cihazda kullanıcıdan kaynak cihazın bilgi faktörünü onaylamasını istemelidir.
- [C-11-3] Ayarlanmış birincil kimlik doğrulama bilgi faktörü bulunmayan bir hedef cihazda, söz konusu bilgi faktörünü hedef cihaz için birincil kimlik doğrulama bilgi faktörü olarak ayarlamadan ve bir kaynak cihazdan aktarılan herhangi bir veriyi kullanılabilir hale getirmeden önce kullanıcıdan hedef cihazda aktarılan bilgi faktörünü onaylamasını istemelisiniz.
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 şunları yapar:
- [C-12-1], yalnızca kendi kilit ekranı olan yakın bir fiziksel cihaza bağlandığında ve kullanıcı bu kilit ekranına dayanarak kimliğini doğruladığında
grantTrust()
adlı kişiyi bayrakla çağırmalıdır. Proxy cihazları, kullanıcının kimlik doğrulama koşulunu karşılamak için tek seferlik kullanıcı kilidi açıldıktan sonra bilekte veya üzerinizde olduğunu algılama mekanizmalarını kullanabilir. - [C-12-2], cihaz uygulamasını ekran kapalıyken (örneğin, düğmeye basma veya görüntüleme zaman aşımıyla) ve TrustAgent'ın güveni iptal etmemişken
TrustState.TRUSTABLE
durumuna getirmesi ZORUNLUDUR. AOSP bu koşulu karşılar. - [C-12-3] yalnızca, TrustAgent C-12-1'deki şartlara göre güven vermeye devam ediyorsa
cihazın
TrustState.TRUSTABLE
durumundanTrustState.TRUSTED
durumuna taşınması ZORUNLUDUR. - [C-12-4], güven verildikten sonra en fazla 24 saat, 8 saatlik boşta kalma aralığı veya yakındaki fiziksel cihazla temel bağlantı kesildiğinde
TrustManagerService.revokeTrust()
çağrısı GEREKİR.
Cihaz uygulamaları, uygulamaların ikincil sanal ekranlar oluşturmasına ve VirtualDeviceManager aracılığıyla olduğu gibi ilişkili giriş etkinliklerini desteklemesine izin veriyorsa ve ekranlar VIRTUAL_DISPLAY_FLAG_SECURE ile işaretlenmemişse):
- [C-13-8], android:canDisplayOnRemoteDevices özelliğine veya android.activity.can_display_on_remote_devices meta verisine sahip etkinliklerin sanal cihazda başlatılmasının false (yanlış) değerine ayarlanması GEREKİR.
- [C-13-9], akışı açıkça etkinleştirmeyen ve SurfaceView#setSecure, FLAG_SECURE veya SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS dahil olmak üzere hassas içerik gösterdiğini belirten etkinliklerin sanal cihazda başlatılmasını engellemelidir.
[C-13-10], sanal cihazlardan başlatılan uygulamaların yüklenmesinin devre dışı bırakılması ZORUNLUDUR.
Cihaz uygulamaları, DeviceStateManager
üzerinden ayrı ekran güç durumlarını destekliyor VE KeyguardDisplayManager
üzerinden ayrı ekran kilidi durumlarını destekliyorsa:
- [C-SR-2] Varsayılan cihaz ekranından bağımsız kilit açmayı etkinleştirmek için bölüm 9.11.1'de tanımlanan bir kimlik bilgisi karşılama koşullarını veya bölüm 7.3.10'da tanımlanan en az 1. Sınıf spesifikasyonları karşılayan bir biyometri spesifikasyonunu kullanması ÖNEMLE ÖNERİLİR.
- [C-SR-3] Tanımlanmış bir ekran zaman aşımı yoluyla ayrı ekran kilidinin açılmasını kısıtlamak için ÖNEMLE ÖNERİLİR.
- [C-SR-4] Kullanıcıların, birincil taşınabilir cihazda tam kilitleme aracılığıyla tüm ekranları küresel olarak kilitlemesine izin vermek için ÖNEMLE ÖNERİLİR.
9.11.2. Güçlü Kutu
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin şifreleme anahtarlarını yukarıda açıklanan izole yürütme ortamında ve özel bir güvenli işlemcide depolamasına olanak tanır. Böyle bir özel güvenli işlemciye "StrongBox" adı verilir. Aşağıdaki C-1-3 ile C-1-11 arasındaki şartlar, bir cihazın StrongBox olarak tanımlanması için karşılaması gereken gereksinimleri tanımlar.
Özel bir güvenli işlemciye sahip cihaz uygulamaları:
- [C-SR-1] StrongBox'u desteklemesi için ÖNEMLE ÖNERİLİR. StrongBox, gelecekteki bir sürümde muhtemelen gereklilik olacaktır.
Cihaz uygulamaları StrongBox'u destekliyorsa:
[C-1-1], FEATURE_STRONGBOX_KEYSTORE bildirmeli.
[C-1-2], anahtar deposunu desteklemek ve kullanıcı kimlik doğrulamasını güvence altına almak için kullanılan özel güvenli donanım SUNMALIDIR. Özel güvenli donanım başka amaçlar için de kullanılabilir.
[C-1-3] uygulama işlemcisiyle (AP) önbellek, DRAM, ek işlemciler veya diğer temel kaynakları paylaşmayan ayrı bir CPU'nun olması ZORUNLUDUR.
[C-1-4] AP ile paylaşılan çevre birimlerinin StrongBox işlemesini herhangi bir şekilde değiştirememesi veya StrongBox'tan herhangi bir bilgi almaması ZORUNLUDUR. AP, StrongBox'a erişimi devre dışı bırakabilir veya engelleyebilir.
[C-1-5] AP'nin manipülasyonundan etkilenmeyen, makul doğrulukta (+-%10) bir dahili saatin olması ZORUNLUDUR.
[C-1-6] eşit şekilde dağıtılmış ve öngörülemez sonuçlar üreten gerçek bir rastgele sayı oluşturucunun olması ZORUNLUDUR.
[C-1-7], fiziksel penetrasyona ve patlamaya karşı direnç dahil olmak üzere kurcalama direncine sahip OLMALIDIR.
[C-1-8] yan kanal direncine sahip olmalıdır. Buna güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla sızıntılara karşı direnç de dahildir.
[C-1-9] İçeriğin gizlilik, bütünlük, özgünlük, tutarlılık ve güncelliğini sağlayan güvenli bir depolama alanına sahip olması ZORUNLUDUR. Depolama, StrongBox API'lerinin izin verdiği durumlar dışında okunamaz veya değiştirilemez.
[C-1-3] ile [C-1-9] arasındaki uygunluğu doğrulamak için cihaz uygulamalarında:
- [C-1-10] BSI-CC-PP-0084-2014 Güvenli IC Koruma Profili'ne göre onaylanmış veya Akıllı Kartlara Saldırı Potansiyeli Ortak Kriterleri'ne göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesine sahip, ulusal olarak onaylanmış bir test laboratuvarı tarafından değerlendirilmiş olan donanımı içermesi ZORUNLUDUR.
- [C-1-11] Akıllı Kartlara Saldırı Potansiyeli Ortak Kriterleri'ne göre Yüksek saldırı potansiyeli güvenlik açığı değerlendirmesine sahip, ulusal onaylı bir test laboratuvarı tarafından değerlendirilen donanım yazılımını içermesi ZORUNLUDUR.
- [C-SR-2] AVA_VAN.5 ile artırılmış bir Güvenlik Hedefi, Değerlendirme Güvencesi Düzeyi (EAL) 5 kullanılarak değerlendirilen donanımı içermesi ÖNERİLİR. EAL 5 sertifikasyonu büyük olasılıkla gelecek sürümlerde bir gereklilik olacaktır.
- [C-SR-3] Kuruluş içi saldırılara karşı direnç (IAR) sağlaması ÖNERİLİR. Diğer bir deyişle, donanım yazılımı imzalama anahtarlarına erişimi olan bir kuruluş, StrongBox'un gizli anahtarları sızdırmasına, işlevsel güvenlik gereksinimlerini atlamasına veya hassas kullanıcı verilerine başka bir şekilde erişim sağlamasına neden olan donanım yazılımı üretemez. IAR'yi uygulamanın önerilen yolu, yalnızca birincil kullanıcı şifresi IAuthSecret HAL aracılığıyla sağlandığında donanım yazılımı güncellemelerine izin vermektir.
9.11.3. Kimlik Kimlik Bilgisi
Kimlik Kimlik Bilgisi Sistemi, android.security.identity.*
paketindeki tüm API'ler uygulanarak tanımlanır ve elde edilir. Bu API'ler, uygulama geliştiricilerinin kullanıcı kimliği dokümanlarını depolamasına ve almasına olanak tanır. Cihaz uygulamaları:
- [C-SR-1]'in, Kimlik Kimlik Bilgisi Sistemi'ni uygulamak için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, Kimlik Kimlik Bilgisi Sistemi'ni uyguluyorsa:
[C-1-1], IdentityCredentialStore#getInstance() yöntemi için boş olmayan bir değer döndürmelidir.
[C-1-2], Identity Credential System'ı (ör.
android.security.identity.*
API'leri) çekirdek ve üzeride çalışan koddan güvenli bir şekilde izole edilmiş bir alanda güvenilir bir uygulamayla iletişim kuran kodla uygulamalıdır. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole ortamın dahili durumuna erişebileceği tüm potansiyel mekanizmaları Engellemelidir.[C-1-3] Kimlik Kimlik Bilgisi Sistemi'ni (ör.
android.security.identity.*
API'leri) uygulamak için gereken şifreleme işlemlerinin tamamen güvenilir uygulamada gerçekleştirilmesi ZORUNLUDUR. Özel anahtar materyali, üst düzey API'ler (ör. createEphemeralKeyPair() yöntemi) tarafından özel olarak gerekli olmadığı sürece izole yürütme ortamından asla ayrılmamalıdır.[C-1-4] Güvenilir uygulamanın, Android hatalı davransa veya güvenliği ihlal etse bile güvenlik özellikleri etkilenmeyecek şekilde (ör. erişim denetimi koşulları karşılanmadığı sürece kimlik bilgisi verileri yayınlanmaz, rastgele veriler için MAC'ler üretilemez) uygulanmalıdır.
Yukarı akış Android Açık Kaynak Projesi, Kimlik Kimlik Bilgisi sistemini uygulamak için kullanılabilecek güvenilir bir uygulamaya (libeic) ilişkin 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şlemini gerçekleştirmeleri için bir mekanizma SAĞLAMALIDIR.
- [C-0-2] "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirilirken kullanıcı verileri dosya sistemindeki tüm verilerin silinmesi ZORUNLUDUR.
- [C-0-3], verileri "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirilirken NIST SP800-88 gibi ilgili endüstri standartlarını karşılayacak şekilde silmesi ZORUNLUDUR.
- [C-0-4] Birincil kullanıcının Device Policy Controller uygulaması tarafından
DevicePolicyManager.wipeData()
API çağrıldığında yukarıdaki "Fabrika Verilerine Sıfırlama" işlemini tetiklemesi ZORUNLUDUR. - Yalnızca mantıksal bir veri silme işlemi gerçekleştiren hızlı bir veri silme seçeneği SAĞLAYABİLİR.
9:13. Güvenli Başlatma Modu
Android, kullanıcıların 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 önyükleme yapmasını sağlayan Güvenli Başlatma Modu sağlar. "Güvenli Başlatma Modu" olarak bilinen bu mod, kullanıcıya zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı tanır.
Cihaz uygulamaları şunlardır:
- [C-SR-1] Güvenli Başlatma Modu'nun uygulanması Kesinlikle ÖNERİLİR.
Cihaz uygulamaları Güvenli Başlatma Modu'nu uygularsa:
[C-1-1] Üçüncü taraf uygulamasının bir Cihaz Politikası Denetleyicisi olduğu ve
UserManager.DISALLOW_SAFE_BOOT
işaretini doğru olarak ayarladığı durumlar dışında, kullanıcıya Güvenli Başlatma Modu'na cihazda yüklenen üçüncü taraf uygulamalarla kesintiye uğramayacak şekilde girme seçeneği sunmalıdır.[C-1-2], kullanıcıya Güvenli Mod'da üçüncü taraf uygulamalarını kaldırma özelliği SUNMALIDIR.
Kullanıcıya, normal başlatma işleminden farklı bir iş akışı kullanarak başlatma menüsünden Güvenli Başlatma Modu'na girme seçeneği sunulmalıdır.
9:14. Otomotiv Araç Sistemi Yalıtımı
Android Automotive cihazlarının, CAN veri yolu gibi araç ağları üzerinden mesaj gönderip almak için araç HAL'yi kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.
Bu alt sistemlerle kötü amaçlı veya istenmeyen etkileşimleri önlemek için Android çerçeve katmanlarının altına güvenlik özellikleri uygulanarak veri alışverişinin güvenliği sağlanabilir.
9:15. Abonelik Planları
"Abonelik planları", bir mobil operatör tarafından SubscriptionManager.setSubscriptionPlans()
üzerinden 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 bunları ilk sağlayan mobil operatör uygulamasına iade etmesi ZORUNLUDUR.
- [C-0-2] abonelik planlarını uzaktan YEDEKLEMEMELİ veya YÜKLEMEMELİDİR.
- [C-0-3] yalnızca şu anda geçerli abonelik planları sağlayan mobil operatör uygulamasındaki
SubscriptionManager.setSubscriptionOverrideCongested()
gibi geçersiz kılmalara izin VERMELİDİR.
9:16. Uygulama Verilerini Taşıma
Cihaz uygulamaları, bir cihazdan başka bir cihaza veri taşıma imkanı sunuyorsa ve cihazın kopyaladığı uygulama verilerini, manifest dosyasında android:fullBackupContent özelliği aracılığıyla uygulama geliştiricisi tarafından yapılandırılanla sınırlı değilse, bunlar:
- [C-1-1], kullanıcının 9.11.1 Güvenli Kilit Ekranı ve Kimlik Doğrulaması'nda açıklandığı gibi birincil kimlik doğrulama yöntemi ayarlamadığı cihazlardan uygulama verisi aktarımlarını BAŞLATMAMALIDIR.
- [C-1-2], kaynak cihazdaki birincil kimlik doğrulamasını güvenli bir şekilde onaylamalı ve herhangi bir veri aktarılmadan önce verilerin kaynak cihaza kopyalanacağını kullanıcı niyetiyle teyit etmelidir.
- [C-1-3] Cihazdan cihaza taşıma sırasında hem kaynak hem de hedef cihazın meşru Android cihazlar olduğundan ve kilitli bir bootloader'a sahip olduğundan emin olmak için güvenlik anahtarı onayının kullanılması ZORUNLUDUR.
- [C-1-4] Uygulama verilerini yalnızca hedef cihazdaki aynı uygulamaya, aynı paket adı VE imzalama sertifikasıyla taşımanın ZORUNLUDUR.
- [C-1-5] Ayarlar menüsünde, kaynak cihazdaki verilerin cihazdan cihaza veri taşıma işlemiyle taşındığına dair bir belirti GÖRÜNTÜLEMELİDİR. Kullanıcı bu göstergeyi SİLMEMELİDİR.
9:17. Android Sanallaştırma Çerçevesi
Cihaz, Android Virtualization Framework API'leri (android.system.virtualmachine.*
) için destek uyguluyorsa Android ana makinesi:
- [C-1-1],
android.system.virtualmachine
paketi tarafından tanımlanan tüm API'leri DESTEKLEMELİDİR. - [C-1-2] Android SELinux'u ve Korunan Sanal Makinelerin yönetimi için izin modelini (pVM) DEĞİŞTİRMEMELİDİR.
- [C-1-3] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistemde/sepolicy'de bulunan "her zaman izin verme" kurallarını DEĞİŞTİRMEMELİ, DEĞERLENDİRMEMELİ veya DEĞİŞTİRMEMELİDİR. Politika, mevcut tüm "izin ver" kuralları ile derlenmelidir.
- [C-1-4] yalnızca platform imzalı koda ve ayrıcalıklı uygulamalara izin VERMEMELİDİR
güvenilmeyen kodun (ör.3. taraf uygulamaları)Korumalı Sanal MakinepVM'si oluşturmasına ve çalıştırmasına izin VERİLMEMELİDİR. Not: Bu durum, gelecekteki Android sürümlerinde değişebilir.
- [C-1-5]
Korumalı Sanal MakineninpVM'nin fabrika görüntüsünün veya güncellemelerinin parçası olmayan bir kodu yürütmesine İZİN VERMEMELİDİR.Android Doğrulanmış Başlatma kapsamında olmayan uygulamaların (ör. internetten indirilen veya başka cihazdan yüklenen dosyalar) Korumalı Sanal Makine'de çalıştırılmasına izin VERİLMEMELİDİR.
Yeni koşullarla başlayın
- [C-1-5] yalnızca, hata ayıklanamayan bir pVM'nin fabrika görüntüsü veya platform güncellemelerinden kod yürütmesine (ayrıca ayrıcalıklı uygulamalarda yapılan güncellemeleri de içeren) izin vermesi ZORUNLUDUR.
Yeni şartları sonlandırma
Cihaz, Android Virtualization Framework API'leri (android.system.virtualmachine.*
) için destek uyguluyorsa tüm Protected Virtual Machine
pVM
örnekleri:
- [C-2-1] sanallaştırma APEX'te bulunan tüm işletim sistemlerini
Korumalı Sanal MakinepVM'de çalıştırabilmesi ZORUNLUDUR. - [C-2-2]
Korumalı Sanal MakineninpVM'nin , cihaz uygulayıcısı veya işletim sistemi tedarikçisi tarafından imzalanmamış bir işletim sistemini çalıştırmasına İZİN VERMEMELİDİR. - [C-2-3]
Korumalı Sanal MakineninpVM'nin verileri kod olarak yürütmesine izin VERMEMELİDİR (ör. SELinux asla execmem'e izin vermez).
- [C-2-4] yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy/microdroid içinde bulunan "her zaman izin verme" kurallarını DEĞİŞTİRMEMELİ, KALDIRMAMALIDIR veya DEĞİŞTİRMEMELİDİR.
- [C-2-5] Mikrodroid olmayan işletim sistemleri için bile
Korumalı Sanal MakinepVM 'nin derinlemesine savunma mekanizmalarını uygulamalıdır (ör. pVM'ler için SELinux). - [C-2-6] pVM'nin,
sanal makinenin çalışacağı ilk görüntüleri doğrulayamadığıdonanım yazılımının başlatmayı reddetmesinibaşarısız hale getirmesi gerekir. Doğrulamanın sanal makine içinde YAPILMALIDIR. - [C-2-7], ornek.img bütünlüğünün güvenliği ihlal edilirse pVM'nin başarısız olduğundan
donanım yazılımının açılmayı reddettiğindenemin olması ZORUNLUDUR.
Cihaz, Android Virtualization Framework API'leri (android.system.virtualmachine.*
) için destek uyguluyorsa hipervizör:
- [C-3-1] Yalnızca bir sanal makineye (pVM veya ana makine sanal makinesi) ait bellek sayfalarına, korumalı veya korumalı olmayan diğer sanal makineler tarafından değil, yalnızca sanal makinenin kendisi veya hipervizör tarafından erişilebilir olması ZORUNLUDUR.
Sayfa sahibi tarafından açıkça paylaşılmadıkça hiçbir pVM'nin başka bir varlığa (yani başka pVM veya hipervizöre ait bir sayfaya) erişmesine İZİN VERİLMEMELİDİR. Buna ana makine sanal makinesi de dahildir. Bu durum hem CPU hem de DMA erişimleri için geçerlidir. - [C-3-2] Bir sayfa, bir pVM tarafından kullanıldıktan ve ana makineye döndürülmeden (ör. pVM kaldırılmadan) önce sayfayı temizlemesi ZORUNLUDUR.
- [C-
3-3SR-1] pVM donanım yazılımının pVM'deki herhangi bir koddan önce yüklendiğinden ve yürütüldüğündenemin olmak içinÖNEMLE ÖNERİLİR. - [C-3-4] Her sanal makinenin, sanal makine başına bir gizli anahtar toplaması gerekir.
{Bir pVM örneğine sağlanan Önyükleme Sertifika Zinciri (BCC) ve Bileşik Cihaz Tanımlayıcısı (CDI'ler)yalnızca söz konusu sanal makine örneği tarafından türetilebilir ve fabrika ayarlarına sıfırlama ile OTA'daki değişiklikler.
Cihaz, Android Virtualization Framework API'leri için destek uyguluyorsa tüm alanlarda:
- [C-4-1], Android Güvenlik Modeli'nin atlanmasına olanak tanıyan bir pVM'ye işlev SAĞLAMAMALIDIR.
Cihaz, Android Virtualization Framework API'leri için destek uyguluyorsa:
- [C-5-1]'in izole edilmiş derlemeyi destekleyebilmesi ZORUNLUDUR, ancak
bir ART çalışma zamanı güncellemesinincihaz gönderiminde izole derleme özelliğini devre dışı bırakabilir.
Cihaz, Android Virtualization Framework API'leri için destek uyguluyorsa Key Management için:
- [C-6-1] Kilitsiz cihazlarda bile kullanıcının değiştiremeyeceği bir noktada DICE zincirinin rootlanması ZORUNLUDUR. (Adres sahteciliği yapılmayacağından emin olmak için).
- [C-SR-2
6-2] Sanal makine başına gizli anahtar türetme mekanizması olarak DICE'ın kullanılması ÖNEMLE ÖNERİLİR.ZORUN doğru şekilde yapılması, diğer bir deyişle doğru değerleri sağlamanız ZORUNLUDUR.
10. Yazılım Uyumluluğu Testi
Cihaz uygulamalarının bu bölümde açıklanan tüm testlerden geçmesi ZORUNLUDUR. Ancak hiçbir yazılım test paketinin tam kapsamlı olmadığını unutmayın. Bu nedenle, cihaz uygulayıcılarının Android Açık Kaynak Projesi'nde bulunan Android'in referansı ve tercih edilen uygulaması için mümkün olduğunca minimum sayıda değişiklik yapmaları ÖNERİLİR. Bu sayede, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara neden olabilecek hatalar oluşma ihtimali de en aza indirilir.
10.1. Uyumluluk Test Paketi
Cihaz uygulamaları:
[C-0-1], cihazdaki son gönderim yazılımını kullanarak Android Açık Kaynak Projesi'nde bulunan Android Uyumluluk Test Paketi'ni (CTS) geçmelidir.
[C-0-2], CTS'de belirsizlik durumlarında ve referans kaynak kodu bölümlerinin her türlü yeniden uygulanmasıyla ilgili uyumluluk sağlanmalıdır.
CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Herhangi bir yazılım gibi CTS’nin de kendisi hatalar içerebilir. CTS, bu Uyumluluk Tanımı'ndan bağımsız olarak kullanıma sunulur ve Android 14 için CTS'nin birden fazla revizyonu yayınlanabilir.
Cihaz uygulamaları:
[C-0-3] Cihaz yazılımı tamamlandığında mevcut olan en son CTS sürümünü geçmelidir.
Android Açık Kaynak ağacındaki referans uygulamayı mümkün olduğunca kullanmalıdır.
10.2. CTS Doğrulayıcı
CTS Doğrulayıcı, Uyumluluk Test Paketi'ne dahildir ve kamera ile sensörlerin doğru çalışması gibi otomatik sistem tarafından test edilemeyen işlevleri test etmek amacıyla gerçek bir kişi tarafından çalıştırılmak üzere tasarlanmıştır.
Cihaz uygulamaları:
- [C-0-1] CTS doğrulayıcıda geçerli tüm vakaları doğru şekilde yürütülmesi ZORUNLUDUR.
CTS Doğrulayıcı, isteğe bağlı bazı donanımlar da dahil olmak üzere birçok donanım türünü test eder.
Cihaz uygulamaları:
- [C-0-2] sahip olduğu donanıma yönelik tüm testleri geçmelidir. Örneğin, bir cihazın ivme ölçeri varsa CTS Doğrulayıcı'da İvmeölçer test durumunu doğru şekilde yürütmesi ZORUNLUDUR.
Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerin test durumları atlanabilir veya atlanabilir.
- [C-0-2] Yukarıda belirtildiği gibi her cihaz ve her derleme CTS Doğrulayıcı'yı doğru şekilde çalıştırmalıdır. Bununla birlikte, birçok derleme birbirine ç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 bir şekilde çalıştırması beklenmez. Özellikle, CTS Doğrulayıcı'yı yalnızca içerdiği yerel ayarlar, marka bilinci oluşturma vb. bakımından geçen bir uygulamadan farklı olan cihaz uygulamaları. CTS Doğrulayıcı testini atlayabilir.
11. Güncellenebilir Yazılım
[C-0-1] Cihaz uygulamaları, sistem yazılımının tamamının yerini alacak bir mekanizma İÇERMELİDİR. Mekanizmanın "canlı" yükseltme işlemleri gerçekleştirmesi gerekmez. Yani cihazın yeniden başlatılması gerekebilir. Cihaza önceden yüklenmiş yazılımın tamamının yerini alabilmesi şartıyla herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu gereksinimi karşılar:
- Yeniden başlatma aracılığıyla çevrimdışı güncelleme ile "Kablosuz (OTA)" indirme işlemleri.
- "Tethered" özelliği, ana bilgisayardan USB üzerinden güncellenir.
- "Çevrimdışı" seçeneği, çıkarılabilir depolama alanındaki bir dosyadan yeniden başlatma ve güncelleme yaparak güncellenir.
[C-0-2] Kullanılan güncelleme mekanizması, kullanıcı verileri silinmeden güncellemeleri DESTEKLEMELİDİR. Yani güncelleme mekanizmasının, uygulama özel verilerini ve uygulama paylaşılan verilerini KORUMALIDIR. Yayın öncesi Android yazılımının bu şartı karşılayan bir güncelleme mekanizması içerdiğini unutmayın.
[C-0-3] Güncellemenin tamamının imzalanması ZORUNLUDUR. Cihaz üzerinde güncelleme mekanizmasının, güncellemeyi ve imzayı cihazda depolanan bir ortak anahtarla doğrulaması GEREKİR.
[C-SR-1] Güncellemeye SHA-256 ile karma oluşturma işlemi uygulamak ve karmayı ECDSA NIST P-256 kullanarak ortak anahtarla doğrulamak için imzalama mekanizmasının ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sayaçsız bir veri bağlantısı desteği içeriyorsa:
- [C-1-1] Yeniden başlatma aracılığıyla çevrimdışı güncelleme ile OTA indirmelerini DESTEKLEMELİDİR.
Cihaz uygulamalarında, sistem görüntüsünün OTA'dan sonra beklenen sonuçla aynı ikili olduğu doğrulanmalıdır. Android 5.1'den itibaren eklenen ve 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, başlatma kontrolü HAL'sini kullanarak uygular.
Bir cihaz uygulaması yayınlandıktan sonra, ancak Android Uyumluluk Ekibi'nin tavsiyesi ile üçüncü taraf uygulamalarının uyumluluğunu etkilemesi için belirlenen makul ürün ömrü içinde bir hata tespit edilirse:
- [C-2-1] Cihaz uygulayıcısının az önce açıklanan mekanizmaya göre uygulanabilecek bir yazılım güncellemesi aracılığıyla hatayı düzeltmesi ZORUNLUDUR.
Android, Cihaz Sahibi uygulamasının (varsa) sistem güncellemelerinin yüklenmesini kontrol etmesini sağlayan özellikler içerir. Cihazlar için sistem güncelleme alt sistemi android.software.device_admin bildiriyorsa:
- [C-3-1], SystemUpdatePolicy sınıfında açıklanan davranışı uygulaması ZORUNLUDUR.
12. Doküman Değişiklik Günlüğü
Bu sürümdeki Uyumluluk Tanımı'nda yapılan değişikliklerin özeti için:
13. Bize Ulaşın
android-uyumluluk forumuna katılarak açıklama isteyebilir veya dokümanın kapsamadığını düşündüğünüz sorunları dile getirebilirsiniz.