1. Giriş
Bu dokümanda, cihazların Android 11 ile uyumlu olması için karşılanması gereken şartlar açıklanmaktadır.
"ZORUNLU", "ZORUNLU OLMAMALIDIR", "ZORUNLU", "YAPILMAYACAK", "YAPILMAYACAK", "ÖNERİLMEZ", "ÖNERİLİR" ve "İSTEĞE BAĞLI" ifadeleri, RFC2119'da tanımlanan IETF standardına göre yapılır.
Bu belgede de belirtildiği gibi "cihaz uygulayıcı" veya "uygulayıcı", Android 11 çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluşu ifade eder. "Cihaz uygulaması" veya "uygulama" bu kadar gelişmiş bir donanım/yazılım çözümü.
Cihaz uygulamalarının Android 11 ile uyumlu olarak kabul edilmesi için bu Uyumluluk Tanımı'nda belirtilen gereksinimleri (referans yoluyla dahil edilen tüm dokümanlar dahil) karşılaması ZORUNLUDUR.
Bu tanımın veya bölüm 10'da 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'in hem referans hem de tercih edilen uygulaması Android Açık Kaynak Projesi'dir. Cihaz uygulayıcılarının, uygulamalarını mümkün olan en geniş kapsamda Android Açık Kaynak Projesi'nde bulunan "yukarı akış" kaynak koduna dayandırması Ö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'sından türetilmiştir ve söz konusu SDK'nın dokümanlarındaki bilgilerle işlevsel olarak aynı olacaktır. Bu Uyumluluk Tanımı'nın veya Uyumluluk Test Paketi'nin, SDK dokümanlarını kabul etmediği durumlarda, SDK dokümanları güvenilir olarak kabul edilir. Bu belgedeki bağlantılı kaynaklarda sağlanan tüm teknik ayrıntılar, dahil etme işlemiyle 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 şartları içerir. 2. Bölüm'ün her alt bölümü belirli bir cihaz türüne özeldir.
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 "Temel Şartlar" olarak belirtilmiştir değineceğiz.
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 - Durum 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 (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.
- Koşul koşullu olduğunda, 1. koşul için 1 değeri atanır ve bu sayı, aynı bölüm ve aynı cihaz türünde 1'er artar.
- Gereklilik kimliği
- Bu kimlik 1'den başlar ve aynı bölüm ve aynı koşul içinde 1'er artar.
1.1.3. Bölüm 2'deki gereklilik kimliği
Bölüm 2'deki Gereksinim Kimliği, ilgili bölüm kimliğiyle başlar ve ardından yukarıda açıklanan Gereksinim Kimliği gelir.
- 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. Bununla birlikte, nispeten daha iyi yerleşik bir uygulama dağıtım ekosistemine sahip 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ının yine de bu Uyumluluk Tanımı'nın diğer bölümlerindeki tüm şartları karşılaması ZORUNLUDUR.
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 özgü gereksinimlere bakın.
2.2. Elle Birlikte Kullanılabilen Gereksinimler
Android Avuç İçi Cihaz, genellikle mp3 çalar, telefon veya tablet gibi elinde tutarak kullanılan 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.
- 3,3 inç (veya Android 11'den önceki bir API düzeyinde kullanıma sunulan cihazlar için 2,5 inç) ile 8 inç arasında fiziksel diyagonal ekran boyutuna sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar Android Avuç İçi cihaz uygulamalarına özeldir.
2.2.1. Donanım
Avuç içi cihaz uygulamaları:
- [7.1.1.1/H-0-1] Bu dokümanda açıklanan tüm şartları karşılayan en az bir tane Android uyumlu ekrana sahip olması ZORUNLUDUR.
- [7.1.1.3/H-SR] Kullanıcılara görüntü boyutunu (ekran yoğunluğu) değiştirme fırsatı sunmak için ÖNEMLE ÖNERİLİR.
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 kullanılabilecek mantıksal ekranın kısa kenarlarında en az 2 inç, uzun kenarlarında ise en az 2,7 inç olması ZORUNLUDUR. Bu belgede belirtilenden daha eski bir API düzeyinde başlatılan cihazlar bu gereklilikten muaftır.
Avuç içi cihaz uygulamaları, yazılımda ekran döndürmeyi desteklemiyorsa:
- [7.1.1.1/H-2-1]* Üçüncü taraf uygulamaları için kullanılabilecek mantıksal ekranın kısa kenarlarında en az 2,7 inç olması ZORUNLUDUR. Bu belgede belirtilenden daha eski bir API düzeyinde başlatılan cihazlar bu gereklilikten muaftır.
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ına yönelik desteğin reklamını yapmalıdır.
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
BELİRTMELİDİR.
Avuç içi cihaz uygulamaları, bir sistem mülkü graphics.gpu.profiler.support
aracılığıyla 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 izlemesi çıktı olarak Bildirilmelidir.
- [7.1.4.6/H-1-2] gpu sayaç izleme paketi protokolünden yararlanarak cihazın GPU sayaçları için uyumlu değerleri Bildirmelisiniz.
- [7.1.4.6/H-1-3] oluşturma aşaması izleme paketi protokolünden sonra cihazın GPU RenderStages değerleri için uyumlu değerler BELİRTMELİDİR.
- [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 davranışını DEĞİŞTİRMEMELİDİR.
- [7.2.1/H-0-1] Üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek OLMALIDIR.
- [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 Android ile uyumlu ekranların en az birinde Son Arananlar işlevini sağlaması ZORUNLUDUR.
- [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 dışında (ör. Android cihaza bağlı harici donanım klavyesi) tetiklenebilir. - [7.2.4/H-0-1] Dokunmatik ekran girişini DESTEKLEMELİDİR.
- [7.2.4/H-SR] Kullanıcı tarafından seçilen destek uygulamasını, diğer bir deyişle VoiceEtkileşim Hizmeti'ni uygulayan uygulamayı veya
KEYCODE_MEDIA_PLAY_PAUSE
ya da ön plandaki etkinlik bu uzun basma etkinliklerini yapmıyorsaKEYCODE_HEADSETHOOK
tuşuna uzun basıldığındaACTION_ASSIST
'i işleyen bir etkinliği başlatmak için ÖNEMLE ÖNERİLİR. - [7.3.1/H-SR] 3 eksenli ivme ölçer eklemeniz ÖNEMLE ÖNERİLİR.
Avuç içi cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/H-1-1] işlevinin en az 100 Hz frekansına kadar olan etkinlikleri bildirebilmesi ZORUNLUDUR.
Avuç içi cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve yeteneği uygulamalara android.hardware.location.gps
özellik bayrağı aracılığıyla bildirirlerse:
- [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 sözde aralıklarının ve yapay aralık oranlarının bildirilmesi gerekir. Bu değer, konum belirlendikten sonra açık gökyüzü koşullarında, sabit bir şekilde veya saniye başına 0,2 metreden daha düşük ivme karesiyle hareket ederken 20 metre içinde konumun ve 0,2 metreden 0,2 metreden daha kısa sürede hesaplama için 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.
getPhoneType
içinde, sesli arama yapabilen ve PHONE_TYPE_NONE
dışında bir değer belirtebilen 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] 6 serbestlik derecesine sahip poz sensörünü desteklemesi ÖNERİLİR.
- [7.4.3/H] Bluetooth ve Bluetooth LE desteği İÇERMELİDİR.
Avuç içi cihaz uygulamaları sayaçlı bağlantı içeriyorsa:
- [7.4.7/H-1-1] için veri tasarrufu modunun sağlanması ZORUNLUDUR.
Avuç içi cihaz uygulamaları, CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
kullanan özellikleri listeleyen mantıksal bir kamera cihazı içeriyorsa:
- [7.5.4/H-1-1] varsayılan olarak normal görüş alanına (FOV) sahip OLMALI ve 50 ile 90 derece arasında olması ZORUNLUDUR.
Avuç içi cihaz uygulamaları:
- [7.6.1/H-0-1], uygulama özel verileri (diğer adıyla "/veri" bölümü) için en az 4 GB kalıcı depolama alanına sahip OLMALIDIR.
- [7.6.1/H-0-2], çekirdek ve kullanıcı alanında 1 GB'tan az bellek olduğunda
ActivityManager.isLowRamDevice()
için "true" (doğru) döndürmelidir.
Avuç içi cihaz uygulamaları yalnızca 32 bit ABI desteklediğini belirtiyorsa:
-
[7.6.1/H-1-1] Varsayılan ekran qHD'ye kadar (ör. FWVGA) çerçeve arabelleği çözünürlükleri kullanı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 ZORUNLUDUR.
-
[7.6.1/H-3-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 896 MB ZORUNLUDUR.
-
[7.6.1/H-4-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. 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) çerçeve arabelleği çö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) çerçeve arabelleği çö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.
"Çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek" Yukarıdaki ifade, radyo, video vb. gibi donanım bileşenlerine ayrılmış olan ve cihaz uygulamalarında çekirdeğin kontrolünde olmayan belleğe ek olarak sağlanan bellek alanını ifade eder.
Avuç içi cihaz uygulamaları, çekirdek ve kullanıcı alanı için kullanılabilir durumda 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 için en az 1,1 GB kalıcı depolama alanına ("/veri" bölümü olarak da bilinir) sahip OLMALIDIR.
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], uygulama özel verileri (diğer adıyla "/veri" bölümü) için en az 4 GB kalıcı depolama alanına sahip olmalıdır.
- Özellik bayrağını
android.hardware.ram.normal
BELİRTMELİ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:
- [7.7.1/H-1-1], Android Open Accessory (AOA) API'sinin uygulanması 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 şekilde USB ses sınıfını uygulaması 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 desteklemeye ilişkin tüm performans gereksinimlerini karşılayabiliyor ve destek sağlıyorsa:
- [7.9.1/H-1-1] uyarınca,
android.hardware.vr.high_performance
özellik bayrağı beyan edilmelidir. - [7.9.1/H-1-2], VR uygulamaları tarafından
android.app.Activity#setVrModeEnabled
aracılığıyla etkinleştirilebilen,android.service.vr.VrListenerService
uygulamasını kullanan bir uygulamanın bulunması ZORUNLUDUR.
Avuç içi cihaz uygulamaları, bölüm 7.7.2'deki şartlara ek olarak, ana makine modunda bir veya daha fazla USB-C bağlantı noktası ve uygulama (USB ses sınıfı) içeriyorsa:
- [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ış |
---|---|---|---|
A |
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ın veya duraklatın |
Giriş: Uzun basın Çıkış: Sesli komutu başlat Gönderilmesi: Cihaz kilitli veya ekranı kapalıysa android.speech.action.VOICE_SEARCH_HANDS_FREE . Aksi takdirde android.speech.RecognizerIntent.ACTION_WEB_SEARCH gönderir
|
|||
Gelen arama |
Giriş: Kısa basma Çıkış: Çağrıyı kabul etme |
||
Giriş: Uzun basın Çıkış: Çağrıyı reddet |
|||
Devam eden arama |
Giriş: Kısa basma Çıkış: Çağrıyı sonlandır |
||
Giriş: Uzun basın Çıkış: Mikrofonun sesini kapatın veya açın |
|||
B |
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 kısar |
D |
HID kullanım sayfası: 0x0C HID kullanımı: 0x0CF Çekirdek anahtarı: KEY_VOICECOMMAND Android anahtarı: KEYCODE_VOICE_ASSIST
|
Tümü'ne dokunun. Herhangi bir durumda tetiklenebilir. |
Giriş: Kısa veya uzun basma Çıkış: Sesli komutu başlat |
- [7.8.2.2/H-1-2], bir fiş taktıktan sonra ACTION_HEADSET_PLUG'u tetiklemelidir; ancak bu durumda, USB ses arayüzleri ve uç noktalar, bağlanılan terminalin türünü tanımlamak 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] ACTION_HEADSET_PLUG amacını "microphone" ile yayınlamalıdır ekstra 0 olarak ayarlanır.
USB ses terminali türleri 0x0402 algılandığında:
- [7.8.2.2/H-3-1] ACTION_HEADSET_PLUG amacını "microphone" ile yayınlamalıdır ekstra 1 olarak ayarlanır.
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İSTESİNDE OLMALIDIR.
-
[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() türünde bir cihaz LİSTESİNDE OLMALIDIR.
-
[7.8.2.2/H-4-5] AudioDeviceInfo.TYPE_USB_DEVICE ve USB ses terminali türü alanı 0x604 ise role isSource() türünde bir cihaz LİSTELENMELİDİR.
-
[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 ve USB ses terminali türü alanı 0x400 ise role isSource() türünde bir cihaz LİSTELENMELİDİR.
-
[7.8.2.2/H-SR] USB-C ses çevre birimi bağlandıktan sonra, USB tanımlayıcılarının numaralandırılması, terminal türlerini tanımlamak ve ACTION_HEADSET_PLUG amacını 1000 milisaniyeden kısa bir sürede yayınlamak için ÖNEMLE ÖNERİLİR.
Avuç içi cihaz uygulamaları en az bir dokunma teknolojisi etkinleştirici içeriyorsa:
- [7.10/H-SR]* Eksantrik dönen kütle (ERM) dokunsal aktüatör(titreşim) KULLANMAMASI ÖNEMLE ÖNERİLİR.
- [7.10/H]* Aktüatörün yerleşiminin genellikle cihazın ellerle tutulduğu veya dokunulan yerin yakınına konması gerekir.
- [7.10/H-SR]* android.os.VibrationEffect'te net dokunma teknolojisi için tüm herkese açık sabit değerleri (rich.tICK, fi_TIK_TIKLAMA, EF_HEAVY_CLICKS ve EF_DOUBLE_TIKLAMA) hem de zengin dokunma teknolojisi ile zengin medya
- [7.10/H-SR]* Bu bağlantılı dokunma sabit eşlemelerini kullanmanız ÖNEMLE ÖNERİLİR.
- [7.10/H-SR]* createOneShot() ve createWaveform() API'leri için kalite değerlendirmesini uygulamanız ÖNEMLE ÖNERİLİR.
- [7.10/H-SR]* android.os.Vibrator.hasAmplitudeControl() komutunu çalıştırarak genlik ölçeklenebilirliğini doğrulamak için ÖNEMLE ÖNERİLİR.
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 doğrusal rezonant aktüatör içeriyorsa:
- [7.10/H]* Dokunsal uyarıcıyı dikey yöndeki X ekseninde hareket ettirmeniz GEREKİR.
Avuç içi cihaz uygulamalarında X ekseninde doğrusal rezonant aktüatör (LRA) olan bir dokunma teknolojisi aktüatörü varsa:
- [7.10/H-SR]* X ekseni LRA'nın rezonans frekansının 200 Hz'in altında olması ÖNEMLE ÖNERİLİR.
Avuç içi cihaz uygulamaları, dokunsal sabit değer eşlemesini takip ediyorsa:
- [7.10/H-SR]* Dokunsal sabitler için kalite değerlendirmesi yapmanız ÖNEMLE ÖNERİLİ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 kodu çö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 dokümanlarında 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
API'yi kullanarak belge sağlayıcı verilerine erişme olanağı 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 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.
- [3.2.3.1/H-SR] E-posta göndermek için ACTION_SENDTO, ACTION_SEND veya ACTION_SEND_MULTIPLE niyetini 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 eksiksiz bir şekilde uygulanması ZORUNLUDUR. - [3.4.2/H-0-1] Genel kullanıcının web'de gezinmesi için bağımsız bir Tarayıcı uygulaması İÇERMELİDİR.
- [3.8.1/H-SR] Kısayolların, widget'ların ve widgetFeatures özelliklerinin uygulama içinde sabitlenmesini destekleyen bir varsayılan başlatıcı uygulamanız için ÖNEMLE ÖNERİLİR.
- [3.8.1/H-SR] Üçü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] Uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması eklemeniz ÖNEMLE ÖNERİLİR.
- [3.8.2/H-SR] Üçüncü taraf uygulama widget'larını desteklemesi için ÖNEMLE ÖNERİLİR.
- [3.8.3/H-0-1] Üçüncü taraf uygulamalarının,
Notification
veNotificationManager
API sınıfları aracılığıyla kullanıcıları önemli olaylar hakkında bilgilendirmesine İZİN VERİLMELİDİR. - [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()
ile sağlanan seçenekler bildirim gölgesinde GÖRÜNTÜLENMELİDİR. - [3.8.3/H-SR]
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] 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östermesi ÖNEMLE ÖNERİLİR. - [3.8.3.1/H-SR]
Notification.Action.Builder.setContextual
'in,Notification.Remoteinput.Builder.setChoices
tarafından görüntülenen yanıtlarla aynı hizadatrue
olarak ayarlandığı işlemleri görüntülemesi ÖNEMLE ÖNERİLİR. - [3.8.4/H-SR] Destek işlemini gerçekleştirmek üzere cihaza bir asistanın uygulanması ÖNEMLE ÖNERİLİR.
Avuç içi cihaz uygulamaları, Destek İşlemi'ni destekliyorsa:
- [3.8.4/H-SR] Asistan uygulamasını başlatmak için bölüm 7.2.3'te açıklandığı şekilde, belirtilen etkileşim olarak
HOME
tuşuna uzun basmanız ÖNEMLE ÖNERİLİR. Kullanıcının seçtiği yardım uygulamasının, diğer bir deyişleVoiceInteractionService
kullanan bir uygulamanın veyaACTION_ASSIST
amacını işleyen bir etkinliğin başlatılması 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 sohbet bildirimleri GÖRÜNTÜLEMELİDİR.
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ün uygulanması ZORUNLUDUR.
- [3.9/H-1-2], yönetilen profillerin desteğini
android.software.managed_users
özellik bayrağı aracılığıyla beyan etmelidir. Ancak, cihazın kendini düşük RAM'e sahip cihaz olarak bildirecek veya dahili (kaldırılamaz) depolama alanını paylaşılan depolama alanı olarak ayıracak şekilde yapılandırıldıysa.
Avuç içi cihaz uygulamaları, ControlsProviderService
ve Control
API'leri için destek sağlıyorsa ve üçüncü taraf uygulamalarını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'leri aracılığıyla üçüncü taraf uygulamalar tarafından kaydedilen denetimlerden kullanıcının favori cihaz denetimlerini ekleme, düzenleme, seçme ve çalıştırma imkanı SUNMALIDIR. - [3.8.16/H-1-3] Varsayılan bir Başlatıcı'dan üç etkileşimde bu kullanıcıya erişim imkânının sağlanması 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 simgesi,Control
API'leri tarafından sağlanan tüm belirtilen alanları bu kullanıcıda doğru bir şekilde OLUŞTURMALIDIR.
Bunun aksine, Avuç içi cihaz uygulamalarında bu tür denetimler uygulanmazsa:
- [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ı:
- [3.10/H-0-1] üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.
- [3.10/H-SR] 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] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermesi ÖNEMLE ÖNERİLİR.
- [3.13/H-SR] Bir Hızlı Ayarlar kullanıcı arayüzü bileşeni eklemeniz ÖNEMLE ÖNERİLİR.
Android avuç içi cihaz uygulamaları FEATURE_BLUETOOTH
veya FEATURE_WIFI
desteği beyan ederse:
- [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ında 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 OLMALIDIR. Hareket alanının genişliği varsayılan olarak 24 dp olmalıdır.
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 OLMAMALIDIR 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 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ışan 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'de yer alan özelliklerin kapsamını genişletecek özellikler içeriyorsa bunlar:
- [8.3/H-1-1], pil tasarrufu özelliğini etkinleştirmesi ve devre dışı bırakması için kullanıcıya destek sağlaması ZORUNLUDUR.
- [8.3/H-1-2]; 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.
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ı aracılığı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ı bir uygulamayla ilişkilendirilemezse 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
niyetini dikkate almalı ve bu güç kullanımını gösteren bir ayarlar menüsünü görüntülemelidir.
2.2.5. Güvenlik Modeli
Avuç içi cihaz uygulamaları:
- [9.1/H-0-1] Üçüncü taraf uygulamalarının,
android.permission.PACKAGE_USAGE_STATS
izni üzerinden kullanım istatistiklerine erişmesine İZİN VERMELİ 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 sağlamak ZORUNLUDUR.
Avuç içi cihaz uygulamaları (* Tablet için geçerli değildir):
- [9.11/H-0-2]*, anahtar deposu uygulamasını yalıtılmış bir yürütme ortamıyla yedeklemelidir.
- [9.11/H-0-3]*, çekirdek ve üst kısımda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda, Android KeyStore sisteminin desteklenen algoritmalarını düzgün bir ş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 olması ZORUNLUDUR. 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 olası mekanizmaları Engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu gereksinimi karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun hipervizör tabanlı yalıtımın üçüncü taraflarca incelendiği güvenli bir uygulama, alternatif seçeneklerdir.
- [9.11/H-0-4]*, izole yürütme ortamında kilit ekranı kimlik doğrulamasını gerçekleştirmesi ZORUNLUDUR. Kimlik doğrulamasına bağlı anahtarların, yalnızca bu kod yalnızca başarılı olduğunda 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 şartı 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ı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.
Önceki Android sürümünde bir cihaz uygulaması 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 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 dışında, bildirimleri gizlemesi ve tüm kimlik doğrulama biçimlerini devre dışı bırakması için kullanıcıya destek sağlanması ZORUNLUDUR. AOSP, tam gizlilik modu koşulunu karşılar.
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önetmesine olanak tanıyan 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 kullanıcılar:
- [9.5/H-3-1] kısıtlı 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.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, perfetto belgelerine uygun cmdline'ın bir
/system/bin/perfetto
ikili programını kullanıma sunması ZORUNLUDUR. - [6.1/H-0-3]* Perfetto ikilisi, perfetto belgelerinde tanımlanan şemayla uyumlu bir protobuf yapılandırması girişi olarak KABUL ETMELİDİR.
- [6.1/H-0-4]* Perfetto ikilisi, perfetto belgelerinde tanımlanan şemayla uyumlu olan bir protobuf izlemesi çıktısı olarak yazılmalı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ştirilmiş olması ZORUNLUDUR (sistem özelliği
persist.traced.enable
).
- [6.1/H-0-2]* Kabuk kullanıcısına, perfetto belgelerine uygun cmdline'ın bir
2.2.7 Avuç İçi Medya Performans Sınıfı
Medya performans sınıfının tanımı için Bölüm 7.11'e bakın.
2.2.7.1. Medya
Avuç içi cihaz uygulamaları, şunun için android.os.Build.VERSION_CODES.R
döndürürse:
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
kullanıcısıysanız:
- [5.1/H-1-1] Maksimum sayıda donanım video kod çözücüsünün reklamını yapması ZORUNLUDUR
üzerinden herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek
CodecCapabilities.getMaxSupportedInstances()
. veVideoCapabilities.getSupportedPerformancePoints()
yöntemlerine göz atın. - [5.1/H-1-2] 6 farklı donanım video kod çözücü oturumunu DESTEKLEMELİDİR (AVC veya HEVC), 720p'de eş zamanlı olarak çalışan herhangi bir codec kombinasyonunda (30 fps'de çözünürlük)
- [5.1/H-1-3] Maksimum sayıda donanımla video kodlayıcının tanıtımını yapması ZORUNLUDUR
üzerinden herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek
CodecCapabilities.getMaxSupportedInstances()
. veVideoCapabilities.getSupportedPerformancePoints()
yöntem. - [5.1/H-1-4] donanım videosu kodlayıcı oturumlarının 6 örneğini DESTEKLEMELİDİR (AVC veya HEVC), 720p'de eş zamanlı olarak çalışan herhangi bir codec kombinasyonunda (30 fps'de çözünürlük)
- [5.1/H-1-5] Maksimum sayıda donanımla video kodlayıcının tanıtımını yapmalı
Herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilen kod çözücü oturumları
CodecCapabilities.getMaxSupportedInstances()
üzerinden veVideoCapabilities.getSupportedPerformancePoints()
yöntem. - [5.1/H-1-6] 6 farklı donanım video kod çözücüyü ve donanımını DESTEKLEMELİDİR çalışan herhangi bir codec kombinasyonunda (AVC veya HEVC) video kodlayıcı oturumları aynı anda 30 fps çözünürlükte 720p'de.
- [5.1/H-1-7] için bir codec başlatma gecikmesinin 65 ms veya daha az olması ZORUNLUDUR Tüm donanım video kodlayıcıları için 1080p veya daha küçük video kodlama oturumu (Dolby Vision codec'i dışında) yüklenmelidir. Buraya yükleme şu şekilde tanımlanır: donanım videosu kullanarak eşzamanlı 1080p - 720p arası yalnızca video kod dönüştürme oturumu codec'lerini 1080p ses-video kaydı başlatma ile birlikte destekler.
- [5.1/H-1-8] için bir codec başlatma gecikmesinin 50 ms veya daha az olması ZORUNLUDUR Aşağıdaki durumlarda tüm ses kodlayıcıları için 128 kb/sn veya daha düşük bit hızı ses kodlama oturumu yükleme sırasında.Buraya yükle, eş zamanlı 1080p ile 720p arası yalnızca video 1080p ile birlikte donanım video codec'lerini kullanarak kod dönüştürme oturumu ses-video kaydını başlatma.
- [5.3/H-1-1] 10 saniyede 1 kareden fazla DEVAM ETMEMELİDİR 1080p 30 fps video oturumu için (yani yüzde 0,333'ten az kare düşüşü) yardımcı olabilir. Yükleme, 1080p ile 720p arası eşzamanlı yalnızca video olarak tanımlanır kullanarak bir üçüncü taraf veri sunucusu tarafından değil, aynı zamanda 128 kb/sn AAC ses oynatma.
- [5.3/H-1-2] Video sırasında 10 saniyede 1 kareden fazla DEVAM ETMEMELİDİR yükleme altındaki 30 fps video oturumunda çözünürlük değişikliği. Yükleme, donanım videosu kullanarak eşzamanlı 1080p - 720p arası yalnızca video kod dönüştürme oturumu codec'lerin yanı sıra 128 Kb/sn AAC ses çalma imkanı sunar.
- [5.6/H-1-1] için dokunma tonu gecikmesinin 100 milisaniyeden az olması ZORUNLUDUR OboeTester dokunarak ton testi veya CTS Doğrulayıcı dokunma ton testini kullanabilirsiniz.
2.2.7.2. Kamera
Avuç içi cihaz uygulamaları, şunun için android.os.Build.VERSION_CODES.R
döndürürse:
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
kullanıcısıysanız:
- [7.5/H-1-1] Çözünürlüğünde birincil arka kamera olması ZORUNLUDUR 4k'lık, 30 fps'de video yakalamayı destekleyen en az 12 megapiksel. Birincil Arka kamera, en düşük kamera kimliğine sahip arka kameradır.
- [7.5/H-1-2] Çözünürlüğünde bir birincil ön kamera olması ZORUNLUDUR 1080p'de 30 fps'de video yakalamayı destekleyen en az 4 megapiksel. Birincil ön kamera, en düşük kamera kimliğine sahip ön kameradır.
- [7.5/H-1-3] android.info.supportedDonanımLevel özelliğini şu şekilde DESTEKLEMELİDİR: Arka birincil için TAM veya daha iyi, ön birincil için LIMITED veya daha iyi bulun.
- [7.5/H-1-4] DESTEKLEMELİDİR KameraMeta Verileri.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME kullanabilirsiniz.
- [7.5/H-1-5] kamera2 JPEG yakalama gecikmesi < Şunun için 1.000 ms: CTS kamera PerformanceTest tarafından ölçüldüğü şekliyle 1080p çözünürlük Her iki birincil kamera için ITS ışıklandırma koşulları (3000K).
- [7.5/H-1-6] kamera2 başlatma gecikmesinin olması ZORUNLUDUR (ilk önizleme için kamerayı açın) çerçeve) < ITS kapsamındaki CTS kamera Performans Testi tarafından ölçüldüğü şekliyle 600 ms. ışık koşulları (3000 K) sağlaması gerekir.
2.2.7.3. Donanım
Avuç içi cihaz uygulamaları android.os.Build.VERSION_CODES.R
sonucunu döndürürse
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için:
- [7.1.1.1/H-1-1] En az 1080p ekran çözünürlüğü ZORUNLUDUR.
- [7.1.1.3/H-1-1] En az 400 dpi ekran yoğunluğuna sahip olması ZORUNLUDUR.
- [7.6.1/H-1-1] en az 6 GB fiziksel belleğe sahip olması ZORUNLUDUR.
2.2.7.4. Performans
Avuç içi cihaz uygulamaları android.os.Build.VERSION_CODES.R
sonucunu döndürürse
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için:
- [8.2/H-1-1] En az 100 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 200 MB/sn'lik sıralı okuma performansı sağlaması ZORUNLUDUR.
- [8.2/H-1-4] En az 25 MB/sn'lik rastgele bir okuma performansı sağlanması ZORUNLUDUR.
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 ("3 metrelik kullanıcı arayüzü") tüketimine yönelik 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 olarak 24 inçten daha büyük 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 Televizyon cihazı uygulamalarına özgüdür.
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ğını beyan etmelisiniz. - [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 frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [7.3.4/T-1-2] saniyede 1000 dereceye kadar yön değişikliklerini ölçebilmesi ZORUNLUDUR.
Televizyon cihazı uygulamaları:
- [7.4.3/T-0-1] Bluetooth ve Bluetooth LE'yi desteklemektedir.
- [7.6.1/T-0-1], uygulama özel verileri (diğer adıyla "/veri" bölümü) için en az 4 GB kalıcı depolama alanına sahip 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 OLMALIDIR:
- 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
"Çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek" Yukarıdaki ifade, radyo, video vb. gibi donanım bileşenlerine ayrılmış olan ve cihaz uygulamalarında çekirdeğin kontrolünde olmayan 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
olarak belirtilmesi 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] Saniyede 30 kare hızında 720p ve 1080p çözünürlüklü videoların H.264 kodlamasını desteklemeleri ÖNEMLE ÖNERİLİR.
Televizyon cihazı uygulamalarının, aşağıdaki video kodu çö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üzeyi ile saniyede 29,97 kare hızında HD 1080p.
- [5.3.1/T-1-2] Ana Profil Yüksek Düzeyi ile 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, aşağıdaki standart video kare hızlarında ve çö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ındaki 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ındaki UHD kod çözme profilini desteklemelidir.
- [5.3.7/T-2-1] Profil 2 (10 bit renk derinliği) ile saniyede 60 kare hızında UHD kod çözme profilini desteklemeleri Ö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], 50 Hz veya 60 Hz yenileme hızıyla desteklenebilecek maksimum çözünürlüğü seçmek için HDMI çıkış modunun ayarlanması ZORUNLUDUR.
- [5.8/T-SR] Kullanıcı tarafından yapılandırılabilen bir HDMI yenileme hızı seçici sunulması Ö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 değil, bunun yerine HDMI üzerinden bağlanan bir harici 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 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.
- [3.4.1/T-0-1],
android.webkit.Webview
API'nin eksiksiz bir şekilde uygulanması ZORUNLUDUR.
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] Pencere içinde pencere (PIP) modundaki çoklu pencerenin desteklenmesi için ÖNEMLE ÖNERİLİR.
- [3.10/T-0-1] üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.
- [3.10/T-SR] 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.
Televizyon cihazı uygulamaları android.hardware.audio.output
özelliğini bildirirse:
- [3.11/T-SR] 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 OLMAMALIDIR 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ştirmek ve devre dışı bırakmak için kullanıcıya ödeme yapması GEREKİR.
Televizyon cihazı uygulamalarının pili yoksa:
- [8.3/T-1-2] Pilsiz Cihazları Destekleme başlıklı makalede açıklandığı gibi cihazı pilsiz bir cihaz olarak kaydettirmeniz ZORUNLUDUR.
Televizyon cihazı uygulamalarında pil varsa:
- [8.3/T-1-3]; Uygulama Bekletme ve Doz Güç Tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya gerekli gücü 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 rapor etmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülünün uygulanması aracılığı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.11/T-0-1], anahtar deposu uygulamasını izole bir yürütme ortamıyla yedeklemelidir.
- [9.11/T-0-2], çekirdekte ve sonraki sürümlerde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Anahtar Deposu sisteminin desteklenen algoritmalarını düzgün bir şekilde desteklemek için RSA, AES, ECDSA ve HMAC şifreleme algoritmaları ile MD5, SHA1 ve SHA-2 ailesi karma işlevlerinin uygulamalarının SAĞLANMALIDIR. 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 olası mekanizmaları Engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu gereksinimi karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun hipervizör tabanlı yalıtımın üçüncü taraflarca incelendiği güvenli bir uygulama, 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 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 şartı karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
- [9.11/T-0-4], onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda 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.
Önceki Android sürümünde bir cihaz uygulaması 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 ya da daha kısa bir zaman aşımı olması gerekir.
Televizyon cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik bayrağını bildirmezseler:
- [9.5/T-2-1], cihaz sahiplerinin ek kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesine olanak tanıyan 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 bildiriyorsa, kullanıcılar:
- [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.
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, perfetto belgelerine uygun cmdline'ın bir
/system/bin/perfetto
ikili programını kullanıma sunması ZORUNLUDUR. - [6.1/T-0-2] Perfetto ikilisi, perfetto dokümanlarında tanımlanan şemayla uyumlu bir protobuf yapılandırması girişi olarak KABUL ETMELİDİR.
- [6.1/T-0-3] Perfetto ikilisi, perfetto dokümanlarında tanımlanan şemayla uyumlu bir protobuf izlemesi çıktısı olarak yazılmalıdır.
- [6.1/T-0-4] Perfetto ikili programı üzerinden en azından perfetto belgelerinde açıklanan veri kaynaklarını sağlaması ZORUNLUDUR.
- [6.1/T-0-1] Kabuk kullanıcısına, perfetto belgelerine uygun cmdline'ın 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], fiziksel köşegen boyutu 1,1 ile 2,5 inç arasında olan bir ekran OLMALIDIR.
-
[7.2.3/W-0-1],
UI_MODE_TYPE_WATCH
içinde olması haricinde Ana Sayfa işlevinin ve 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] 3 eksenli ivme ölçer eklemeniz ÖNEMLE ÖNERİLİR.
Saat cihazı uygulamaları bir GPS/GNSS alıcısı içeriyorsa ve yeteneği, android.hardware.location.gps
özellik bayrağı aracılığıyla uygulamalara bildiriyorsa:
- [7.3.3/W-1-1] GPS/GNSS kullanılarak hesaplanan bir konum henüz raporlanmamış olsa bile GNSS ölçümlerini bulunur bulunmaz raporlanması gerekir.
- [7.3.3/W-1-2] GNSS sözde aralıklarının ve yapay aralık oranlarının BİLDİRİLMESİ GEREKİR. Açık gökyüzü koşullarında, konum belirlendikten sonra sabit bir şekilde veya 0,2 metreden daha düşük ivme karesiyle hareket ederken, 20 metre içinde 20 metre içinde ve 0,2 metreden daha yüksek bir sürede hızın hesaplanması için 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ı depolama alanına sahip OLMALIDIR.
-
[7.6.1/W-0-2] çekirdek ve kullanıcı alanında en az 416 MB kullanılabilir bellek 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],
android.hardware.type.watch
özelliğini beyan etmek 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] Destek işlemini gerçekleştirmek üzere cihaza bir asistanın uygulanması ÖNEMLE ÖNERİLİR.
android.hardware.audio.output
özellik işaretini tanımlayan cihaz uygulamalarını izleyin:
- [3.10/W-1-1] üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.
- [3.10/W-SR] 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] 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'deki özelliklerin kapsamını genişleten özellikler içeriyorsa:
- [8.3/W-SR] Uygulama Bekletme ve Doz Güç Tasarrufu modlarından muaf olan tüm uygulamaları görüntülemesi için kullanıcıya gerekli gücün sağlanması ÖNEMLE ÖNERİLİR.
- [8.3/W-SR] 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 miliamper saat (mAh) cinsinden 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ı aracılığı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ı bir uygulamayla ilişkilendirilemezse donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.
2.4.5. Güvenlik Modeli
Saat cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildirmiyorsa kullanıcılar:
- [9.5/W-1-1], cihaz sahiplerinin ek kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesine olanak tanıyan 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.
Saat cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildiriyorsa kullanıcılar:
- [9.5/W-2-1] kısıtlı 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.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.hardware.type.automotive
özelliğini tanımlayan veya aşağıdaki tüm ölçütleri karşılayan Android cihaz uygulamaları 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] diyagonal olarak en az 6 inç boyutunda bir ekran OLMALIDIR.
-
[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 SAĞLAMALIDIR 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 bildirmesi ZORUNLUDUR. - [7.3/A-0-2]
NIGHT_MODE
işareti 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ı OLABİLİR. - [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
ZORUNLUDUR. - [7.3/A-0-1] GPS/GNSS'yi ek sensörlerle birleştirerek Konum'da ö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-2] LocationManager#requestLocationUpdates() aracılığıyla istenen Konum, eşlemeyle eşleşmemesi ZORUNLUDUR.
Otomotiv cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/A-1-1] en az 100 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [7.3.1/A-1-2], Android araba sensörü koordinat sistemine UYMALIDIR.
Otomotiv cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [7.3.4/A-2-1] en az 100 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [7.3.4/A-2-2]
TYPE_GYROSCOPE_UNCALIBRATED
sensörünü de uygulaması ZORUNLUDUR. - [7.3.4/A-2-3] saniyede 250 dereceye kadar yön değişikliklerini ölçebilmesi ZORUNLUDUR.
- [7.3.4/A-SR] Mümkün olan çözünürlüğü en üst düzeye çıkarmak üzere jiroskopun ölçüm aralığının +/-250 dps olarak yapılandırılması ÖNEMLE ÖNERİLİR
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 (ilk kez veya 4 günden sonra olmayan 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şılaması gerekir. 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ıda 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 hata yapma veya her ikisinin kombinasyonu kullanılı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ı için aşağıdaki Bluetooth profillerinin desteklenmesi ZORUNLUDUR:
- 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] İleti Erişimi 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ı tarafından kullanılabilmesi gereken ağlarda System API
NetworkCapabilities#NET_CAPABILITY_OEM_PAID
sabiti KULLANILABİLİR.
Dış görüş kamerası, araç uygulamasının dışındaki sahneleri (ör. kontrol kamerası) 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 böyle bir kamera için dış görüş kamerası varsa:
- [7.5/A-1-1], kamera temel gereksinimlerini karşılamadıkları sürece dıştan görünüm kameralarına Android Kamera API'leri üzerinden erişilebilmelidir.
- [7.5/A-SR] Kamera önizlemesini döndürmemeniz veya yatay olarak yansıtmamanız ÖNERİLİR.
- [7.5.5/A-SR] Kameranın uzun boyutunun ufukla aynı olması için doğrultulması ÖNEMLE ÖNERİLİR.
- [7.5/A-SR] En az 1,3 megapiksel çözünürlüğe sahip olması ÖNEMLE ÖNERİLİR.
- Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanıma sahip olması gerekir.
- Android senkronizasyon çerçevesini DESTEKLEMELİDİR.
- Kamera sürücüsünde donanım otomatik odaklama veya yazılım otomatik odaklama uygulanmış OLABİLİR.
Otomotiv cihaz uygulamaları:
-
[7.6.1/A-0-1], uygulama özel verileri (diğer adıyla "/veri" bölümü) için en az 4 GB kalıcı depolama alanına sahip OLMALIDIR.
-
[7.6.1/A] Flash depolama alanında (örneğin,
f2fs
dosya sistemi kullanılarak) daha iyi performans ve kullanım ömrü sunmak için veri bölmesinin biçimlendirilmesi GEREKİR.
Otomotiv 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] Örneğin,
SDCardFS
kullanarak harici depolamada gerçekleştirilen işlemlerde G/Ç ek yükünü azaltmak için ÖNEMLE ÖNERİLİR.
Otomotiv cihaz uygulamaları 32 bitse:
-
[7.6.1/A-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 512 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-1-2] Aşağıdaki yoğunluklardan herhangi biri kullanılırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 608 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-1-3] Aşağıdaki yoğunluklardan herhangi biri kullanılırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 896 MB OLMALIDIR:
- 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-1-4] Aşağıdaki yoğunluklardan herhangi biri kullanılırsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 1.344 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
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
"Çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek" Yukarıdaki ifade, radyo, video vb. gibi donanım bileşenlerine ayrılmış olan ve cihaz uygulamalarında çekirdeğin kontrolünde olmayan 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
olarak belirtilmesi 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ının kullanımı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ının kullanımına sunması ZORUNLUDUR:
Otomotiv cihaz uygulamalarının, aşağıdaki video kodu çö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 kodu çözmeyi desteklemesi için ÖNEMLE ÖNERİLİR:
- [5.3/A-SR] H.265 HEVC
2.5.3. Yazılım
Otomotiv cihaz uygulamaları:
-
[3/A-0-1],
android.hardware.type.automotive
özelliğini bildirmesi 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.
Otomotiv 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 mevcut olan bir araç özelliğini ÇoğaltMAMALIDIR.
Otomotiv cihaz uygulamaları:
-
[3.2.1/A-0-1], Otomotiv İzni referans sayfasında belirtildiği şekilde 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 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.
-
[3.4.1/A-0-1],
android.webkit.Webview
API'nin eksiksiz bir şekilde uygulanması ZORUNLUDUR. -
[3.8.3/A-0-1], üçüncü taraf uygulamaları tarafından istendiğinde
Notification.CarExtender
API'yi kullanan bildirimleri görüntülemelidir. -
[3.8.4/A-SR] 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
'i kullanan uygulamayı başlatmak için belirlenen etkileşim olarak bas ve konuş düğmesine kısa bir süre basılması ZORUNLUDUR.
Otomotiv cihaz uygulamaları:
- [3.8.3.1/A-0-1], kaynakları
Notifications on Automotive OS
SDK'sı dokümanlarında açıklandığı şekilde 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ı:
- [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
implicit Intent işleminiCAR_EXTRA_MEDIA_PACKAGE
ekstrasıyla desteklemesi ZORUNLUDUR. - [3.14/A-0-4] bir Medya Uygulaması'nın tercih edilen etkinliğine gitmek için uygun bir olanak ZORUNLUDUR, ancak bu özelliği yalnızca Araba Kullanıcı Deneyimi Kısıtlamaları geçerli olmadığında ETKİNLEŞTİRMELİDİR.
- [3.14/A-0-5], Medya Uygulamaları tarafından ayarlanan hata mesajlarını GÖRÜNTÜLEMELİ 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 özelliklerini 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 isteklerinin tam ekran moduna girmesini kısıtlayabilirsiniz. - [3.8/A] Durum çubuğu ve gezinme çubuğu her zaman görünür durumda OLABİLİR.
- [3.8/A] Sistem kullanıcı arayüzü öğelerinin her zaman net bir şekilde görünür olmasını sağlamak için uygulama isteklerini sistem kullanıcı arayüzü öğelerinin arkasındaki renkleri değiştirmeyle Kısıtlayabilir.
2.5.4. Performans ve Güç
Otomotiv cihaz uygulamaları:
- [8.2/A-0-1], istatistiklerin geliştiricilere System API
android.car.storagemonitoring.CarStorageMonitoringManager
üzerinden kullanılabilmesi için 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İ GEREKİR. 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 miliamper saat (mAh) cinsinden 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ı aracılığı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.
Otomotiv cihaz uygulamaları:
- [9.11/A-0-1], anahtar deposu uygulamasını izole bir yürütme ortamıyla yedeklemelidir.
- [9.11/A-0-2], çekirdekte ve daha üst kısımda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda, Android anahtar deposu sisteminin desteklenen algoritmalarını düzgün bir şekilde desteklemek için RSA, AES, ECDSA ve HMAC şifreleme 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 olası mekanizmaları Engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu gereksinimi karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun hipervizör tabanlı yalıtımın üçüncü taraflarca incelendiği güvenli bir uygulama, 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 şartı 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ı 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.
Önceki Android sürümünde bir cihaz uygulaması 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 gizli mesaj mesajlarının (ör. izin verilen mesaj türlerinin ve mesaj kaynaklarının izin verilenler listesine eklenmesi) 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ı ZORUNLUDUR. 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, perfetto belgelerine uygun cmdline'ın bir
/system/bin/perfetto
ikili programını kullanıma sunması ZORUNLUDUR. - [6.1/A-0-2] Perfetto ikilisi, perfetto dokümanlarında tanımlanan şemayla uyumlu bir protobuf yapılandırması girişi olarak KABUL ETMELİDİR.
- [6.1/A-0-3] Perfetto ikilisi, perfetto dokümanlarında tanımlanan şemayla uyumlu bir protobuf izlemesi çıktısı olarak yazılmalıdır.
- [6.1/A-0-4] Perfetto ikili programı üzerinden en azından perfetto belgelerinde açıklanan veri kaynaklarını sağlaması ZORUNLUDUR.
- [6.1/A-0-1] Kabuk kullanıcısına, perfetto belgelerine uygun cmdline'ın bir
2.6. Tablet Gereksinimleri
Android Tablet cihaz, genellikle aşağıdaki ölçütlerin tümünü karşılayan Android cihaz uygulamaları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ı (ör. USB, Bluetooth) aracılığıyla bağlanır.
- Pil gibi hareket sağlayan bir güç kaynağına sahip olmalıdır.
- Fiziksel çapraz ekran boyutu 7-18 inç aralığında 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 ifade edilmiş ve bu bölümde referans olarak belirtilmiştir.
2.6.1. Donanım
Ekran Boyutu
- [7.1.1.1/Tab-0-1] 7 - 18 inç aralığında bir ekran olması ZORUNLUDUR.
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 belirtilen ekran yoğunlukları tabletler için geçerli değildir.
USB çevre birimi modu (Bölüm 7.7.1)
Tablet cihaz uygulamalarında çevre birimi modunu destekleyen bir USB bağlantı noktası varsa:
- [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ı beyan etmiyorlarsa:
- [9.5/T-1-1], cihaz sahiplerinin ek kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesine olanak tanıyan 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 bayrağını 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] Aşağıdaki uygulama amaçlarıyla burada listelenen tüm genel amaç filtre kalıpları için bir veya daha fazla uygulamanın ya da 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ının birincil aracıdır. Android Uygulama Programlama Arayüzü (API), yönetilen çalışma zamanı ortamında çalışan uygulamalara sunulan 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ıyla (@TestApi) 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 açıkça 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 olmaya devam etmesi ve makul bir şekilde davranması ZORUNLUDUR. Bu senaryoya ilişkin özel şartlar 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 kısıtlanmış tüm listelerden (ör. açık gri, koyu gri, siyah) çıkarın.
- AOSP'de halihazırda gizli bir API yoksa, gizli API'yi kısıtlanmış listelerden herhangi birine (ör. açık gri, koyu gri, siyah) ekleyebilirsiniz.
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ÜKLEMELİDİR. Örneğin, API düzeyi 24 çalıştıran Android 7.0 cihaz uygulamalarının en az sürüm 1'i 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 şartlara uygun şekilde, 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
Android, bölüm 3.1'deki yönetilen API'lere ek olarak, Android uygulamalarının uygulama derleme zamanında zorunlu kılınamayan niyetler, izinler ve 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 belirtildiği şekilde tüm izin sabit değerlerini desteklemeli ve uygulamalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek gereksinimlerin listelendiğini unutmayın.
3.2.2. Derleme Parametreleri
Android API'leri, android.os.Build sınıfında geçerli cihazı tanımlamak için kullanılan bazı sabit değerler 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, 11 içinde tanımlanan dize değerlerinden biri OLMALIDIR. |
VERSION.SDK | Şu anda yürütülen Android sisteminin, üçüncü taraf uygulama kodunun erişebileceği bir biçimdeki sürümü. Android 11 için bu alanda 11_INT tam sayı değeri ZORUNLUDUR. |
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 11 için bu alanda 11_INT tam sayı değeri ZORUNLUDUR. |
SÜRÜM.EK | Cihaz uygulayıcısı tarafından seçilen ve o anda yürütülen Android sisteminin özel derlemesini insan tarafından okunabilir biçimde tanımlayan 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 | Cihazla ilişkilendirilmiş ve son kullanıcılar tarafından bilinen marka adını yansıtan bir değerdir. İnsanlar tarafından okunabilir bir 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. Bu cihaz adı, ürünün kullanım ömrü boyunca 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:
$(MARKA)/$(ÇARPIM)/ Ö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 herhangi bir şart yoktur. |
Kimlik | 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ı. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur. Bu alan, ürünün kullanım ömrü boyunca 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. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur. 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. |
SERİ | "UNKNOWN" değerini döndürülmesi ZORUNLUDUR. |
ETİKETLER | Derlemeyi daha fazla ayırt eden, cihaz uygulayıcısı tarafından seçilen etiketlerin virgülle ayrılmış bir listesi. Etiketlerin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9._-]+” normal ifadesiyle eşleşmesi ZORUNLUDUR. Ayrıca, etiketlerin, Android platform imzalayan üç tipik yapılandırma yapılandırmasına karşılık gelen değerlerden 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 herhangi bir şart yoktur. |
SÜRÜM.SECURITY_PATCH | Bir derlemenin güvenlik yaması seviyesini gösteren değer. Yapının, belirlenen Android Kamu Güvenliği Bülteni'nde açıklanan sorunlardan herhangi birine karşı herhangi bir güvenlik açığına karşı herhangi bir güvenlik açığı olmadığının belirtilmesi ZORUNLUDUR. Bu değerin [YYYY-AA-GG] biçiminde olması ve Android Kamu Güvenliği Bülteni'nde veya Android Güvenlik Uyarısı'nda (örneğin, "2015-11-01") belgelenen tanımlı bir dizeyle eşleşmesi gerekir. |
VERSION.BASE_OS | 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 yoksa 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çilen ve cihazda kullanılan belirli dahili radyo/modem sürümünü tanımlayan bir değerin insan tarafından okunabilecek biçimde OLMALIDIR. Bir cihazın dahili radyo/modemi 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şlevsellik 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] Bir veya daha fazla uygulamanın veya hizmet bileşenini 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 önceden yüklemesi ÖNERİLİR ve SDK'da açıklandığı gibi bu yaygın uygulama amaçlarıyla ilgili geliştiricilerin beklentilerini karşılayabilir.
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ı, 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 vermelidir. Yukarı akış Android açık kaynak uygulaması varsayılan olarak buna izin verir.
-
[C-0-2] Cihaz uygulamaları, sistem uygulamalarına özel ayrıcalıklar EKLEMEMELİDİR. ya da üçüncü taraf uygulamaların bu kalıplara bağlanmasını ve bunların kontrolünü üstlenmesini önleyebilirsiniz. Bu yasak, kullanıcının tümü aynı amaç kalıbını işleyen birden çok uygulama arasından seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını özellikle kapsar ancak bununla sınırlı değildir.
-
[C-0-3] Cihaz uygulamalarında, kullanıcıların amaçlar için varsayılan etkinliği değiştirmeleri için bir kullanıcı arayüzü SAĞLANMALIDIR.
-
Bununla birlikte, varsayılan etkinlik veri URI'si için daha belirli 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 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ışı beyan etmesine de olanak tanıyan bir mekanizmaya sahiptir. Bir uygulamanın intent filtresi modellerinde bu tür yetkili bildirimler tanımlandığında cihaz uygulamaları:
- [C-0-4], yukarı akış Android açık kaynak projesindeki Paket Yöneticisi tarafından uygulanan 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şleyici olarak ayarlamalıdır.
- Belirli URI intent filtreleri, başarılı bir şekilde doğrulanır ancak diğer aday URI filtreleri doğrulamada başarısız olursa URI'ları için varsayılan uygulama işleyiciler olarak AYARLANABİLİR. Bir cihaz uygulaması bunu yapıyorsa kullanıcıya ayarlar menüsünde her URI için uygun kalıp geçersiz kılmalarının sağlanması ZORUNLUDUR.
- Kullanıcıya, Ayarlar'da uygulama bazında Uygulama Bağlantıları denetimlerinin aşağıdaki gibi sağlanması ZORUNLUDUR:
- [C-0-6] Kullanıcının, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütünsel 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 intent filtrelerinin listesini görmesi ZORUNLUDUR.
- Cihaz uygulaması, kullanıcıya, amaca göre filtre 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 doğrulamada başarılı olmasına izin verirken bazıları da başarısız olabiliyorsa cihaz uygulaması, 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'de ACTION, CATEGORY veya başka bir anahtar dizesini kullanan yeni bir amacı veya yayın amacı kalıplarını dikkate alan herhangi bir Android bileşeni İÇERMEMELİDİR. veya com.android. ad alanını kullanı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 intent ya da yayın amacı kalıplarını dikkate alan Android bileşenleri İÇERMEMELİDİR.
- [C-0-3] Cihaz uygulamaları, bölüm 3.2.3.1'de listelenen intent kalıplarından hiçbirini DEĞİŞTİRMEMELİ veya GENİŞLETMEMELİDİR.
- Cihaz uygulamaları, kendi kuruluşları ile açık ve bariz bir şekilde ilişkilendirilmiş ad alanları kullanan intent kalıpları İÇEREBİLİR. Bu yasak, bölüm 3.6'da Java dili sınıfları için belirtilen yasaka benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikleri bildirmek üzere belirli amaçları yayınlamak için platformu kullanır.
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ıyla ilgili sınırlamalar SDK dokümanlarında da açıklandığından bu şartın bölüm 3.5 ile çelişmediğini unutmayın. Ayrıca belirli yayın amaçları, donanım desteğine bağlı olarak belirlenir. Cihazın gerekli donanımı desteklemesi durumunda amaçları yayınlaması ve davranışı SDK dokümanlarına göre satır içinde sağlaması GEREKİR.
3.2.3.5. Koşullu Uygulama Amaçları
Android'de, kullanıcıların ana ekran veya SMS gibi varsayılan uygulamalarını kolayca seçebilmelerini sağlayan ayarlar bulunur.
Anlamlı olduğu durumlarda, cihaz uygulamalarının benzer bir ayarlar menüsü sağlaması ve aşağıdaki SDK dokümanlarında 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östermek üzere
android.settings.HOME_SETTINGS
niyetine uygun olmalıdır.
Cihaz uygulamaları android.hardware.telephony
bildiriminde bulunursa:
-
[C-2-1], varsayılan SMS uygulamasını değiştirmeye yönelik bir iletişim kutusu göstermek için
android.provider.Telephony.ACTION_CHANGE_DEFAULT
intent'ini çağıracak 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östermek için
android.telecom.action.CHANGE_DEFAULT_DIALER
niyetine riayet edilmelidir.- Önceden yüklü 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], kullanıcıya
PhoneAccounts
ile ilişkiliConnectionServices
ürününün yapılandırılması için android.telecom.action.CHANGE_PHONE_ACCOUNTS amacının yanı sıra telekomünikasyon servis sağlayıcısının giden aramalar yapmak için kullanacağı varsayılan bir Telefon Hesabı'nı da dahil etmelidir. AOSP uygulaması, bir "Arama Hesapları seçeneği" ekleyerek bu şartı karşılar. "Aramalar"daki menü Ayarlar menüsüne gidin. -
[C-2-4]
android.app.role.CALL_REDIRECTION
rolüne sahip bir uygulama içinandroid.telecom.CallRedirectionService
uygulamasına İZİN VERMELİDİR. - [C-2-5], kullanıcıya
android.app.role.CALL_REDIRECTION
rolüne sahip bir uygulama seçmesi için zaman tanımalıdır. - [C-2-6]; android.intent.action.SENDTO ve android.intent.action.VIEW amaçlarına uygun hareket etmeli ve SMS mesajı göndermek/göstermek için bir etkinlik sağlamalıdır.
- [C-SR] android.intent.action.ANSWER, android.intent.action.CALL, android.intent.action.CALL_Button, android.intent.action.VIEW ve Bu amaçları işleyebilen ve SDK'da açıklandığı şekilde istek karşılama sağlayan önceden yüklenmiş bir çevirici uygulamasına sahip android.intent.action.DIAL niyetleri.
Cihaz uygulamaları android.hardware.nfc.hce
bildiriminde bulunursa:
- [C-3-1], temassız ödeme için varsayılan uygulama ayarları menüsünün gösterilmesi için android.settings.NFC_PAYMENT_SETTINGS niyetine uygun olmalıdır.
- [C-3-2], bir etkinlik göstermek için android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT amacını dikkate almalıdır. Bu amacı, 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çar.
Cihaz uygulamaları android.hardware.nfc
bildiriminde bulunursa:
- [C-4-1] şu amaçları yerine getirmelidir: android.nfc.action.NDEF_DISCOVERED, android.nfc.action.TAG_DISCOVERED ve android.nfc.action.TECH_DISCOVERED ile başlar.
Cihaz uygulamaları VoiceInteractionService
özelliğini destekliyorsa ve aynı anda bu API'yi kullanan birden fazla uygulama yüklüyse:
- [C-4-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 riayet 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] amacına
ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS
yanıt verecek bir etkinlik gerçekleştirmesi ZORUNLUDUR. UI_MODE_TYPE_NORMAL ile uygulamalarda, kullanıcının DND politika yapılandırmalarına uygulama erişimine izin verebileceği veya uygulamayı reddetebileceğ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öntemleri 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], ö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ğlamak üzere
android.settings.ACCESSIBILITY_SETTINGS
niyetini dikkate almalıdır.
Cihaz uygulamaları Wi-Fi Easy Connect desteği içeriyorsa ve bu 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ığı şekilde 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 olanak tanıyan bir kullanıcı arayüzü SAĞLAMALIDIR.
Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:
- [C-11-1],
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
amacını işleyen bir etkinlik İÇERMELİDİR ancak bunu işlemsiz olarak uygulayabilir.
Cihaz uygulamaları, android.hardware.camera.any
üzerinden kamera desteğini beyan ederse:
- [C-12-1],
android.media.action.STILL_IMAGE_CAMERA
ileandroid.media.action.STILL_IMAGE_CAMERA_SECURE
amacını dikkate almalı ve kamerayı SDK'da açıklandığı şekilde hareketsiz görüntü modunda başlatmalıdır. - [C-12-2], SDK'da açıklandığı gibi, kamerayı video modunda başlatmak için
android.media.action.VIDEO_CAMERA
amacına uygun hareket etmelidir. - [C-12-3] yalnızca önceden yüklenmiş Android uygulamalarının
MediaStore.ACTION_IMAGE_CAPTURE
,MediaStore.ACTION_IMAGE_CAPTURE_SECURE
veMediaStore.ACTION_VIDEO_CAPTURE
amaçlarının SDK dokümanında açıklandığı şekilde 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ıya bir kullanıcı arayüzü çağırmak
android.app.action.ADD_DEVICE_ADMIN
amacını dikkate almalıdır. -
android.app.action.START_ENCRYPTION ve bu amaçları gerçekleştirmek için buradaki SDK'da açıklandığı şekilde bir etkinliğiniz olmalıdır.
Cihaz uygulamaları android.software.autofill
özellik bayrağını beyan ederse bunlar:
- [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 varsayılan uygulama ayarları menüsünü göstermek için android.settings.REQUEST_SET_autoFILL_SERVICE niyetini dikkate almalıdır.
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],
android.permission.PACKAGE_USAGE_STATS
iznini beyan eden uygulamalar için android.settings.ACTION_USAGE_ACCESS_SETTINGS amacına yanıt olarak kullanım istatistiklerine erişim izni vermek veya erişimi iptal etmek üzere kullanıcının erişebildiği mekanizmaları ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, önceden yüklenmiş uygulamalar da dahil olmak üzere hiçbir uygulamanın kullanım istatistiklerine erişmesine izin vermemeyi amaçlıyorsa:
- [C-15-1] yine de android.settings.ACTION_USAGE_ACCESS_SETTINGS intent kalıbını işleyen bir etkinliğe sahip olmalıdır ancak bunu işlem yok olarak uygulaması GEREKİR. Diğer bir deyişle, kullanıcının erişimi reddedildiğinde geçerli olan benzer bir davranışa sahip olmalıdır.
Cihaz uygulamaları android.hardware.audio.output
özelliğini bildirirse:
- [C-SR] android.intent.action.TTS_SERVICE, android.speech.tts.engine.INSTALL_TTS_DATA ve android.speech.tts.engine.GET_ornek_TEXT amaçları, buradaki SDK'da açıklandığı şekilde bu amaçların karşılanmasını 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 göre ekran koruyucuları yapılandırmaları için bir ayar seçeneği sunulmalıdır.
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ıştırılan etkinliğe benzer şekilde API uyumluluğu garanti edilmesi ZORUNLUDUR.
- Yeni etkinlik,
ActivityOptions.setLaunchDisplayId()
API aracılığıyla bir hedef ekran belirtmeden başlatıldığında, yeni etkinliği başlatan etkinlikle aynı ekrana yönlendirmelidir. [C-1-3] Display.FLAG_PRIVATE
işaretini içeren bir ekran kaldırıldığında [C-1-4], tüm etkinlikleri yok etmelidir.- Uygulama,
Activity#setShowWhenLocked()
API'yi kullanarak kilit ekranının üstünde göstermeyi etkinleştirilmediğ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. - İkincil ekranda bir etkinlik başlatılırsa görüntülenmesi, düzgün çalışması ve uyumluluğun korunması için söz konusu ekrana karşılık gelen
android.content.res.Configuration
SAHİBİ 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 o ekranın, sistemin ve ekranda zaten bulunan etkinliklerin sahibi tarafından başlatılabilmesi ZORUNLUDUR. Herkes android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda başlatabilir.
3.3. Yerel API Uyumluluğu
Yerel kod uyumluluğu zordur. Bu nedenle, cihaz uygulayıcıları şunlardır:
- [SR] Yukarı akış Android Açık Kaynak Projesi'nde yer alan, aşağıda listelenen kitaplıkların uygulamalarını kullanmanız ÖNERİLİR.
3.3.1. Uygulama İkili Arabirimleri
Yönetilen Dalvik bayt kodu, uygulama .apk
dosyasında sağlanan yerel kodu, uygun cihaz donanım mimarisi için derlenmiş bir ELF .so
dosyası olarak ç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'ni (ABI'ler) 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) semantiğini kullanarak yerel koda çağrı yapmak için yönetilen ortamda çalışan kod desteği içermesi 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, her biri en çok tercih edilenden en az tercih edilene doğru sıralanmış şekilde virgülle ayrılmış bir ABI'ler listesiyle doğru bir şekilde bildirmelidir. -
[C-0-6], yukarıdaki parametreler aracılığıyla aşağıdaki ABI'lerin 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ü KULLANMALIDIR:
- libaaudio.so (AAudio yerel ses desteği)
- libamidi.so (yerel MIDI desteği,
android.software.midi
özelliği Bölüm 5.9'da açıklandığı şekilde 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 GEREKİR. - [C-0-10] AOSP'de sistem kitaplığı olarak uygulanan ve sağlanan diğer yerel kitaplıkları, API düzeyi 24 veya sonraki sürümleri 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 olmakla birlikte, bölüm 7.1.4.1'de, karşılık gelen her bir işlevin tam olarak uygulanması beklenen şartlar daha ayrıntılı olarak açıklanmaktadır. - [C-0-12] Temel Vulkan 1.0 işlev sembollerinin yanı sıra
VK_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 olmakla birlikte, bölüm 7.1.4.2'de karşılık gelen her bir işlevin tam olarak uygulanması beklenen şartlar daha ayrıntılı olarak açıklanmaktadır. - Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kodu ve başlık dosyaları kullanılarak oluşturulmalıdır
Android'in gelecekteki sürümlerinin ek ABI'ler için destek sunabileceğ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 bildirmelidir.
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 diğer ABI'ler tarafından okunsa bile aynı cihazda değerler 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. "8" (ARMv8 cihazlar için).
-
-
[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ı.
- SETEND talimatı.
- CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri.
-
[C-2-3] Advanced SIMD (NEON olarak da bilinir) uzantısı için destek OLMALIDIR.
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 kullanılması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 11 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 benzeri) Sürüm/4.0 $(CHROMIUM_VER) Mobile 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.
- "Derleme/$(BUILD)" Atlanabilir, ancak varsa $(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-3] 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 yalnızca Bağlayıcı üzerinden gereken minimum gerekli sistem hizmetlerine erişiminin olması ZORUNLUDUR. WebView'un AOSP uygulaması bu koşulu karşılar.
32 bit cihaz uygulamaları veya android.hardware.ram.low
özellik bayrağını beyan eden cihaz uygulamalarının C-1-3'ten muaf tutulacağını unutmayın.
3.4.2. Tarayıcı Uyumluluğu
Cihaz uygulamaları, genel web'e göz atma için bağımsız bir Tarayıcı uygulaması içeriyorsa, bunlar:
- [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'ye öncelik verirken 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 üçüncü taraf bir alternatife dayalı olarak) olsun, bağımsız Tarayıcı uygulamasında mümkün olduğunca çok HTML5 desteğinin uygulanması GEREKİR.
Ancak, cihaz uygulamaları tek başına 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, yüklü tüm uygulamalara API davranış uyumluluğunun uygulanması ZORUNLUDUR.
- [C-0-10] yalnızca cihaz uygulayıcıları tarafından seçilen uygulamalar için API davranış uyumluluğunu 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. Uyumlulukla ilgili belirli 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ünün (ö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]
LocationManager
API sınıfı veyaWifiManager.startScan()
yöntemi üzerinden uygulamaya sağlanan güncellemelerin sıklığının hız sınırlamasının zorunlu olması gerekir. - [C-0-6] Uygulama, API düzeyi 25 veya üstünü hedefliyorsa yayın amacı
"signature"
ya da"signatureOrSystem"
protectionLevel
izni gerektirmediği veya muafiyet listesinde olmadığı sürece, uygulamanın manifest dosyasında standart Android amaçlarının örtülü yayınları için yayın alıcılarının kaydedilmesine İZİN VERİLMEMELİDİR. - [C-0-7] Uygulama, API düzeyi 25 veya sonraki sürümleri hedefliyorsa uygulamanın kullanıcının görebildiği bir görevi işlemek için geçici bir izin verilenler listesine eklenmediği sürece, 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-9] Cihazların, uygulama listeyi
insertProviderAt()
veyaremoveProvider()
aracılığıyla değiştirmediği sürece cihazların, belirtilen sırada ve belirtilen adlarla (Provider.getName()
tarafından döndürülen şekilde) ve sınıflarlaSecurity.getProviders()
yönteminden elde edilen ilk yedi dizi değeri olarak aşağıdaki güvenlik sağlayıcılarını 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 büyük bölümünü davranış uyumluluğu açısından test eder, ancak hepsini test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak, uygulayıcının sorumluluğundadır. Bu nedenle cihaz uygulayıcıları 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 uyguluyorsa ve bu mekanizma Nadir Uygulama Bekleme Paketi'nden daha kısıtlayıcıysa:
- [C-1-1] Kullanıcının kısıtlanmış uygulamaların listesini görebileceği şekilde kullanıcıya erişim imkanı ZORUNLUDUR.
- [C-1-2] Her bir uygulamadaki kısıtlamaları etkinleştirmek veya devre dışı bırakmak için kullanıcıya ödeme yapması GEREKİR.
- [C-1-3] Sistem sağlığının kötü davranışına dair kanıtlar olmadan otomatik olarak kısıtlama uygulamaması ZORUNLUDUR. Ancak, sistem sağlığıyla ilgili kötü davranışlar (takılı kalan uyanık kalma kilitleri, uzun süre çalışan hizmetler ve diğer ölçütler gibi) tespit edildiğinde kısıtlamalar uygulansın mı? Kriterler, cihazı uygulayıcılar tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili OLMALIDIR. Uygulamanın pazardaki popülerliğinin düşük olması gibi tamamen sistem sağlığıyla ilgili olmayan diğer ölçütler kriter olarak KULLANILMAMALIDIR.
- Kullanıcı uygulama kısıtlamalarını manuel olarak devre dışı bıraktığında [C-1-4], uygulamalar için uygulama kısıtlamalarının otomatik olarak uygulanmaması ZORUNLUDUR ve kullanıcıya uygulama kısıtlamaları uygulamasını önerebilir.
- [C-1-5], bir uygulamaya otomatik olarak uygulama kısıtlamaları uygulanırsa kullanıcıları bilgilendirmelidir. Bu tür bilgilerin, kısıtlamaların uygulanmasından sonraki 24 saat içinde sağlanması ZORUNLUDUR.
- Kısıtlanmış uygulama bu API'yi çağırdığında
ActivityManager.isBackgroundRestricted()
için [C-1-6]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] Kullanıcı önceden kısıtlanmış olan uygulamayı açıkça kullanmaya başladığında, en üst ön plan uygulaması haline gelen bir uygulamadaki kısıtlamaların askıya alınması ZORUNLUDUR.
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 şu 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] 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 Android platformunda herkese açık API'lerde DEĞİŞTİRİLMEMELİ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ş her türlü yapıdı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 sitelerine API EKLEMEMELİDİR. ad alanları. - [C-0-6] Android'in paylaşılan bir kitaplıkta paketlenmesi ZORUNLUDUR. Böylece, API'lerin artan bellek kullanımından yalnızca bunları açıkça kullanan uygulamalar (<uses-library> mekanizması ile) etkilenir.
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 söz konusu sitedeki bilgilere göre değişiklikler ve kod ekleme işlemine 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ı, söz konusu 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ğerler 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] Uygulamalar tarafından
ShortcutManager.requestPinShortcut()
API yöntemi aracılığıyla istenen bir kısayolu eklemeden önce kullanıcıya sorması GEREKİR. - [C-2-3] Uygulama Kısayolları sayfasında belirtildiği gibi sabitlenmiş kısayolları ve 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 varsayılan bir 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şkilendirilmiş görsel bir uygun olma ve uygulamanın tüm bildirim kanalları değerifalse
olarak ayarladığında uygulama simgesi rozet şeması gösterme. - Üçüncü taraf uygulamalar tescilli API'ler aracılığıyla ö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 aracılığıyla sağlanan kaynakları ve değerleri (ör.
Notification.Builder.setNumber()
veNotification.Builder.setBadgeIconType()
API) KULLANMALISINIZ.
3.8.2. Widget'lar
Android, bir bileşen türü ve uygulamaların son kullanıcıya "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
platform özelliği için destek verdiğini beyan etmelidir. - [C-1-2] AppWidget'lar için yerleşik destek içermeli ve AppWidget'ları doğrudan Başlatıcı'da eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü seçeneklerini sunmak ZORUNLUDUR.
- [C-1-3] Widget'ları standart ızgara boyutunda 4 x 4 boyutunda oluşturabilmelidir. 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ı uygulama içinde sabitlemeyi destekliyorsa:
- [C-2-1]
AppWidgetManager.html.isRequestPinAppWidgetSupported()
içintrue
adlı kişiyi bildirmesi GEREKİR. - [C-2-2] Uygulamalar tarafından
AppWidgetManager.requestPinAppWidget()
API yöntemi aracılığıyla istenen bir kısayolu eklemeden önce kullanıcıya sorması GEREKİR.
3.8.3. Bildirimler
Android, üçüncü taraf uygulama geliştiricilerin kullanıcıları önemli etkinlikler hakkında bilgilendirmesine ve kullanıcıların ilgisini çekmesine olanak tanıyan Notification
ve NotificationManager
API'lerini içerir. 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 dikkatli olun.
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, bir cihaz uygulaması titreşim içeriyorsa titreşim API'lerini doğru bir şekilde uygulaması ZORUNLUDUR. 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ı (simgeler, animasyon dosyaları vb.) doğru şekilde OLUŞTURMALIDIR ancak bildirimler için referans Android Açık Kaynak uygulamasının sağladığından farklı bir kullanıcı deneyimi sağlayabilir.
- [C-1-3] API'lerin bildirimlerinin güncellenmesi, kaldırılması ve gruplandırılması için açıklanan davranışları benimsemeli ve doğru şekilde uygulamalıdır.
- [C-1-4], NotificationChannel API'sinin SDK'da belgelenen 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ı sunmak ZORUNLUDUR.
- [C-1-7] Notification.MessagingStyle aracılığıyla sağlanan tüm kaynakları (resimler, çıkartmalar, simgeler vb.) ek kullanıcı etkileşimi olmadan bildirim metniyle birlikte 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] 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 engelleme fırsatı sunması Ö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 önemli etkinlikleri kullanıcılara bildirebileceği zamanların görünürlüğünü ve zamanlamasını yönetebilir.
Android 11, MessagingStyle'ı kullanan ve yayınlanmış Kişiler Kısayol Kimliği sağlayan bildirimler olan sohbet bildirimleri için destek sunar.
Cihaz uygulamaları:
- [C-SR] Devam eden ön plan hizmeti bildirimleri ve
importance:high
bildirimleri hariç görüşme dışı bildirimlerden önceconversation notifications
'i gruplandırmak ve göstermek için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları conversation notifications
'i destekliyorsa ve uygulama bubbles
için gerekli verileri sağlıyorsa:
- [C-SR] 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ın aynısını kullanmalıdır. Notification.Style
API sınıfında ve alt sınıflarında tanımlanan her bir kaynak öğesini (ör. simge, başlık ve özet metin) SUNMALISINIZ.
Cihaz uygulamaları, uyarı bildirimlerini destekliyorsa:
- [C-3-1], uyarı bildirimleri sunulduğunda
Notification.Builder
API sınıfında açıklanan 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ÜLEMELİDİR.
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, yüklü ve kullanıcı tarafından etkinleştirilen tüm dinleyici hizmetlerinde bildirimlerin 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 üzerinden düzgün bir şekilde yansıtmalıdır. - [C-1-2] Bu kullanıcı, kalıcı/ön plan hizmetlerinden olmadığı sürece, yüklenen her üçüncü taraf uygulamasının bildirimlerini ertelemek için bu kullanıcıya fırsat sunmalıdır.
3.8.3.3. Rahatsız Etmeyin (Rahatsız Etmeyin)
Cihaz uygulamaları DND özelliğini destekliyorsa:
- [C-1-1] Cihaz uygulaması, kullanıcının DND politika yapılandırmasına erişim izni vermesi veya reddetmesi için bir yol sağladığında, kullanıcılar tarafından oluşturulan 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 edilmelidir. Bir uygulama supPRESSED_EF_SCREEN_OFF veya supPRESSED_EF_SCREEN_ON işaretlerinden herhangi birini ayarlamışsa, kullanıcıya DND ayarları menüsünde görsel efektlerin basıldığını belirtmelidir.
3.8.4. Arama
Android, geliştiricilerin aramayı uygulamalarına dahil etmelerine ve uygulama verilerini küresel sistem aramasına sergilemelerine olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmesine olanak tanıyan, kullanıcı yazarken önerileri gösteren ve sonuçları gösteren, sistem genelinde tek bir kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü tekrar kullanmalarına ve geliştiricilerin, yaygın genel arama kullanıcı arayüzüne sonuçlar sağlamalarına olanak tanır.
- Android cihaz uygulamaları, genel arama özelliğini, kullanıcı girişlerine yanıt olarak gerçek zamanlı önerilerde bulunabilen, sistem çapında tek bir paylaşılan arama kullanıcı arayüzünü, yani genel aramayı İÇERMELİDİR.
Cihaz uygulamaları genel arama arayüzünü uygularsa:
- [C-1-1] Üçüncü taraf uygulamalar genel arama modunda çalıştırıldığında arama kutusuna öneriler eklemesine izin veren API'lerin uygulanması ZORUNLUDUR.
Genel aramayı kullanan üçüncü taraf uygulaması yüklü değilse:
- Varsayılan davranış, web arama motoru sonuçlarını ve önerileri görüntülemek GEREKİR.
Android ayrıca, uygulamaların mevcut bağlam hakkında ne kadar bilginin cihazdaki asistanla paylaşılacağını belirlemesine olanak tanıyan Destek API'leri de 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 GEREKTİRMELİ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üne ikisinden daha az gezinme imkanı sunan ve içeriği yalnızca kullanıcı tarafından özel 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, asistan uygulamasını başlatmak için belirtilen etkileşimin, kullanıcı tarafından seçilen destek uygulamasını, diğer bir deyişle
VoiceInteractionService
'yi uygulayan 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
window type 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,
TYPE_APPLICATION_OVERLAY
kullanan bir uygulamanın uyarı pencerelerini görüntülemesini engelleme imkanı OLMALIDIR . AOSP uygulaması, bildirim gölgesinde denetimler bulundurarak bu koşulu karşılar. -
[C-1-2], Toast API'yi dikkate almalı ve uygulamalardaki Toast'ları son kullanıcılara kolayca görülebilir bir şekilde görüntülemelidir.
3.8.6. Temalar
Android, uygulamaların bir Etkinliğin veya uygulamanın tamamında stilleri uygulayabilmesi için bir mekanizma olarak "tema" sunar.
Android'de bir "Holo" ve "Material" bulunuyor tema ailesi, uygulama geliştiricilerin Android SDK tarafından tanımlanan Holo teması görünüm ve tarzına uygun hale getirmek isterlerse kullanabilecekleri, tanımlanmış bir dizi stil olarak sunulur.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1], uygulamalarda kullanıma sunulan 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] "sans-serif" yazı tipi ailesini, Roboto'nun desteklediği diller için Roboto sürüm 2.x'e ayarlayın veya "sans-serif" için kullanılan yazı tipini değiştirmek için bir kullanıcıya ödeme sağlayın yazı tipi ailesini Roboto sürüm 2.x'e yükseltin.
Android ayrıca, cihaz temasının cihaz temasını uygulayan kullanıcı tarafından tanımlanan görünüm ve tarzıyla uyumlu olmasını isteyen uygulama geliştiricilerin 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] Simgenin sorunlu bir durumu belirtmediği veya bir uygulama SYSTEM_UI_FLAG_LIGHT_STATUS_BAR işaretini kullanarak ışıklı bir durum çubuğu istemediği sürece, sistem durum simgeleri (sinyal gücü ve pil düzeyi gibi) ve sistem tarafından gönderilen bildirimler için beyaz renk kullanılması ZORUNLUDUR.
- [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 GEREKİR (ayrıntılar için R.style'a bakın).
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ı son kullanıcıya göstermesine olanak tanıyan API ve 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ı olumsuz etkilemeden 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 kilitlenmesine, 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 olursa 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 bir şekilde çalışmaz çünkü bir OpenGL bağlamının canlı 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ı KULLANMALIDIR.
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 kodu, görev arasında geçiş yapmak ve son erişilen etkinlik ile görevleri görüntülemek için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir. Bu kullanıcı arayüzü, kullanıcının uygulamadan son ayrıldığı andaki grafik durumunun küçük resmini kullanır.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı şekilde, son kullanılanlar işlevi gezinme tuşu dahil olmak üzere 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 kapatmak için kullanabileceği 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 kullanılanlar işlevleri tuşuna uzun basıldığında bölünmüş ekran çoklu pencere modunu TEŞVİK ETMELİDİR.
- İlişkili sonları birlikte hareket eden bir grup olarak GÖRÜNTÜLENEBİLİR.
- [SR] 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 dokümanlarında belirtildiği 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:
- Farklı ağırlıklara sahip Roboto 2 yazı tipi: cihazda kullanılabilen diller için (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-Black, sans-serif-condensed, sans-serif-condensed-light).
- Latince Genişletilmiş A, B, C ve D aralıkları ile Unicode 7.0'ın para birimi simge blokundaki tüm glifler dahil olmak üzere Latin, Yunan ve Kiril alfabesinin tam Unicode 7.0 kapsamı.
- Unicode Teknik Raporu #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 çeşitli yazı tipleri bulunur.
Cihaz uygulamaları Burmaca desteği içeriyorsa:
* [C-2-1] MUST render text with Unicode compliant font as default;
non-Unicode compliant font MUST NOT be set as default font unless the user
chooses it in the language picker.
* [C-2-2] MUST support a Unicode font and a non-Unicode compliant font if a
non-Unicode compliant font is supported on the device. Non-Unicode
compliant font MUST NOT remove or overwrite the Unicode font.
* [C-2-3] MUST render text with non-Unicode compliant font ONLY IF a
language code with [script code Qaag](
http://unicode.org/reports/tr35/#unicode_script_subtag_validity) is
specified (e.g. my-Qaag). No other ISO language or region codes (whether
assigned, unassigned, or reserved) can be used to refer to non-Unicode
compliant font for Myanmar. App developers and web page authors can
specify my-Qaag as the designated language code as they would for any
other language.
3.8.14. Çoklu Pencere
Cihaz uygulamaları aynı anda birden fazla etkinliği görüntüleme özelliğine sahipse:
- [C-1-1] bu tür çoklu pencere modlarını, Android SDK'sının ç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 içinde pencere dışındaki çoklu pencere modlarında bir etkinliğin boyutu 220 dp'den küçük bir boyuta YENİDEN DEĞİŞTİRİLMEMELİ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-1] varsayılan olarak yeniden boyutlandırılabilir bir başlatıcıyı önceden YÜKLEMELİDİR.
- [C-2-2], bölünmüş ekranlı bir çoklu pencerenin yuvaya yerleştirilmiş etkinliğini kırpmak ZORUNLUDUR. Ancak, Başlatıcı uygulaması odaklanılan pencereyse bunun bir kısmını gösteren içeriğin bir kısmını göstermesi GEREKİR.
- [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 etkinliklerin pencere içinde pencere çoklu pencere modunda başlatılması ZORUNLUDUR: * API düzeyi 26 veya üstü hedefleniyor ve
android:supportsPictureInPicture
* Hedef API düzeyi 25 veya daha düşük ise ve hemandroid:resizeableActivity
hem deandroid:supportsPictureInPicture
beyan ediliyor. - [C-3-2], mevcut PIP etkinliğinde belirtildiği şekilde, SystemUI'deki işlemleri
setActions()
API aracılığıyla göstermelidir. - [C-3-3],
setAspectRatio()
API aracılığıyla gerçekleşen PIP etkinliğinde belirtildiği üzere, en boy oranı 1:2,39'dan büyük veya 2,39:1'e eşit ya da 2,39:1'e eşit olan en boy oranlarını desteklemelidir. - [C-3-4] PIP penceresini kontrol etmek için
KeyEvent.KEYCODE_WINDOW
KULLANILMALIDIR; PIP modu uygulanmazsa anahtarın ön plan etkinliğinde kullanılabilmesi ZORUNLUDUR. - [C-3-5] Kullanıcıya, bir uygulamanın PIP modunda görüntülenmesini engelleme fırsatı OLMALIDIR; AOSP uygulaması, bildirim gölgesinde denetimler bulundurarak bu koşulu karşılamaktadır.
-
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.UI_MODE_TYPE_TELEVISION
olarak ayarlanmış Configuration.uiMode'a sahip cihazların en az 240 dp, en az 135 dp yükseklik ayırması ZORUNLUDUR.
3.8.15. Ekran Kesimi
Android, SDK dokümanında açıklandığı gibi bir ekran kesimini destekler. DisplayCutout
API, ekranın kenarındaki bir alanı tanımlar. Bu alan, ekran kesimi veya kenarlardaki kavisli ekran nedeniyle uygulama için çalışmayabilir.
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ığı gibi,
WindowManager.LayoutParams
API'si aracılığıyla uygulama tarafından ayarlanan ekran kesimi işaretlerine UYMALIDIR. - [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'de ControlsProviderService
ve Control
API'leri bulunur. Bu API'ler, üçüncü taraf uygulamaların kullanıcılar için hızlı durum ve işlem için cihaz denetimleri yayınlamasına olanak tanır.
Cihaza özel gereksinimler için Bölüm 2_2_3'e bakın.
3.9. Cihaz Yönetimi
Android, güvenliğe duyarlı uygulamaların sistem düzeyinde cihaz yönetimi işlevlerini gerçekleştirmesine (şifre politikalarını uygulama veya uzaktan silme işlemi gerçekleştirme gibi) Android Device Management API aracılığıyla olanak tanıyan özellikler 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 henüz kullanıcı verisi yoksa:
- [C-1-3]
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içintrue
adlı kişiyi bildirmesi GEREKİR. - [C-1-4]
android.app.action.PROVISION_MANAGED_DEVICE
intent işlemine yanıt olarak DPC uygulamasını Cihaz Sahibi uygulaması olarak kaydetmeniz GEREKİR. - [C-1-5] Cihaz,
android.hardware.nfc
özellik bayrağı aracılığıyla Near Field Communication (NFC) desteği beyan ederse veMIME_TYPE_PROVISIONING_NFC
MIME türünde kayıt içeren bir NFC mesajı alırsa DPC uygulamasını Cihaz Sahibi uygulaması olarak kaydetmesi GEREKİR.
- [C-1-3]
- Cihaz uygulamasında kullanıcı verileri olduğunda:
- [C-1-6]
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içinfalse
adlı kişiyi bildirmesi GEREKİR. - [C-1-7] Artık herhangi bir DPC uygulamasını Cihaz Sahibi Uygulaması olarak kaydetmemek GEREKİR.
- [C-1-6]
- Cihaz uygulamasında henüz kullanıcı verisi yoksa:
- [C-1-2], uygulamanın Cihaz Sahibi olarak ayarlanmasına izin vermek için temel hazırlık işleminden önce veya bu işlem sırasında bazı olumlu işlemlerin yapılmasını ZORUNLUDUR. İzin, kullanıcı işlemi aracılığıyla veya bazı programatik yollarla yapılabilir. Ancak, cihaz sahibi temel hazırlığı başlatılmadan önce uygun açıklama bildiriminin (AOSP'de belirtildiği şekilde) gösterilmesi ZORUNLUDUR. Ayrıca, cihaz sahibi temel hazırlığı için (kurumlar tarafından) kullanılan programatik cihaz sahibi izin mekanizması, kurumsal olmayan kullanım için kullanıma hazır deneyime müdahale ETMEMELİDİR.
- [C-1-3] İzni sabit bir şekilde kodlamamalı veya cihaz sahibi diğer uygulamaların kullanımını engellememelidir.
Cihaz uygulamalarında android.software.device_admin
beyan ediliyor, ancak aynı zamanda özel bir Cihaz Sahibi yönetim çözümü bulunuyorsa ve çözümlerinde "Cihaz Sahibi eşdeğeri" olarak yapılandırılan bir uygulamanın tanıtımını yapmak için bir mekanizma sağlanıyorsa yeni "Cihaz Sahibi"ne
standart Android DevicePolicyManager API'leri tarafından tanınan şekilde:
- [C-2-1] Tanıtımı yapılmakta olan uygulamanın, meşru bir kurumsal cihaz yönetimi çözümüne ait olduğunun doğrulanması ve özel çözümde "Cihaz Sahibi" ile eşdeğer haklara sahip olacak şekilde zaten yapılandırılmış olduğunun doğrulanması için bir sürecin 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ı gösterilmelidir. - DPC uygulamasını "Cihaz Sahibi" olarak kaydetmeden önce cihazda kullanıcı verileri OLABİLİR.
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] Kullanıcıların deneyimi, yönetilen profil temel hazırlığı süreci (android.app.action.PROVISION_MANAGED_PROFILE tarafından başlatılan akış) 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 bildirmek 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 bilgisi simgesi).
- Cihaz Yöneticisi tarafından
setShortSupportMessage
aracılığıyla sağlanan kısa bir açıklama mesajı. - DPC uygulamasının simgesi.
3.9.2 Yönetilen Profil Desteği
Cihaz uygulamaları android.software.managed_users
bildiriyorsa:
- [C-1-1],
android.app.admin.DevicePolicyManager
API'leri üzerinden yönetilen profilleri DESTEKLEMELİDİR. - [C-1-2] Bir veya yalnızca bir yönetilen profil oluşturulmasına izin verilmesi ZORUNLUDUR.
- [C-1-3] Yönetilen uygulamaları, widget'ları ve Son Kullanılanlar ve Bildirimler.
- [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 profilde olduğunda kullanıcının yönetilen profilde olduğunu belirten bir kısa mesaj GÖRÜNTÜLEMELİDİR.
- [C-1-6] Yönetilen profilin mevcut olduğu durumlarda, "Seçici" Amaç alanında görsel bir uygun bilginin gösterilmesi ZORUNLUDUR kullanıcının, niyeti yönetilen profilden birincil kullanıcıya veya Device Policy (Cihaz Politikası Denetleyicisi) tarafından etkinleştirildiyse birincil kullanıcıya iletmesine izin verir.
- [C-1-7] Yönetilen bir profilin mevcut olduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için kullanıcı tarafından sağlanan aşağıdaki olanakları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üklenen VPN uygulamalarının bağımsız yönetimi.
- Birincil kullanıcıya veya yönetilen profile yüklenen uygulamaların bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profilde hesapların bağımsız olarak yönetilmesi.
- [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 arayıp 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 etkinleştirildiği bir cihaz için geçerli olan tüm güvenlik şartlarını karşılaması gerekir (bkz. 9.5).
Cihaz uygulamaları android.software.managed_users
ve android.software.secure_lock_screen
tanımlıyorsa, bunlar:
- [C-2-1] yalnızca yönetilen profilde çalışan uygulamalara erişim izni vermek için aşağıdaki gereksinimleri karşılayan ayrı bir kilit ekranı belirtme özelliğini DESTEKLEMELİDİR.
- 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, ana 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, görüşme sırasında kullanıcı arayüzünde, devam eden ve cevapsız arama bildirimlerinde, kişilerde ve mesajlaşma uygulamalarında görüntülendiğinde bu kişilere, yönetilen profil uygulamalarını belirtmek için kullanılan rozetin aynısı SUNULMALIDIR.
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 geçiş imkanı SUNMALIDIR. Cihaz kilidi açılmadan, kullanıcıya kilit ekranından erişilebilmesi ZORUNLUDUR.
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 geribildirim ve iztopu/d-pad ile gezinme gibi alternatif geri bildirim mekanizmaları oluşturmak üzere erişilebilirlik hizmeti uygulamalarına imkan veren platform API'leri sağlar.
Cihaz uygulamaları, üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-1-1], erişilebilirlik API'leri SDK dokümanlarında açıklandığı şekilde Android erişilebilirlik çerçevesinin uygulamasını SUNMALIDIR.
- [C-1-2], erişilebilirlik etkinlikleri oluşturmalı ve SDK'da belgelendiği şekilde, kayıtlı tüm
AccessibilityService
uygulamalarına uygunAccessibilityEvent
öğesini sunmalıdır. - [C-1-4] Etkinleştirilen erişilebilirlik hizmetleri
AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON
bildirdiğinde sistemin gezinme çubuğuna kullanıcının erişilebilirlik hizmetini kontrol etmesini sağlayan bir düğme eklenmesi ZORUNLUDUR . Sistem gezinme çubuğu olmayan cihaz uygulamalarında bu şartın geçerli olmadığını ancak cihaz uygulamalarının kullanıcıya bu erişilebilirlik hizmetlerini kontrol etme imkanı SAĞLAMASI 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ştirmek için 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 olanak 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 DESTEKLEMELİDİR. Öyle ki, bu API'leri ve üçüncü taraf TIF tabanlı girişler hizmetini kullanan bir uygulama cihaza yüklenebilir ve 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 simgelerin ve getTitle() aracılığıyla edinilen başlıkların,
MediaDescription
içinde açıklandığı gibi açıkça görüntülenmesi ZORUNLUDUR. 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 İZİN VERMELİDİR. Güvenlik düzenlemelerine (ör. sürücünün dikkatinin dağılması) uymak için hiyerarşinin bir kısmına erişimi Kısıtabilir, ancak içerik veya içerik sağlayıcıya göre imtiyazlı muamele VERMEMELİDİR. -
[C-1-5],
MediaSession.Callback#onMediaButtonEvent
içinKEYCODE_HEADSETHOOK
veyaKEYCODE_MEDIA_PLAY_PAUSE
simgesine iki kez dokunmanınKEYCODE_MEDIA_NEXT
olarak düşünülmesi gerekir.
3:15. Hazır Uygulamalar
Cihaz uygulamalarının aşağıdaki gereksinimleri karşılaması ZORUNLUDUR:
- [C-0-1] Hazır Uygulamalar'a yalnızca
android:protectionLevel
öğesinin"instant"
olarak ayarlandığı izinlerin verilmesi ZORUNLUDUR. - [C-0-2] Hazır Uygulamalar, aşağıdakilerden biri geçerli olmadığı sürece dolaylı intentler aracılığıyla yüklü uygulamalarla 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-0-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-0-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ı hazır uygulamaları destekliyorsa:
- [C-1-1] Hazır Uygulamalar ile etkileşim için aşağıdaki kullanıcı olanaklarını SUNMALIDIR. AOSP, varsayılan Sistem Kullanıcı Arayüzü, Ayarlar ve Başlatıcı ile ilgili gereksinimleri karşılar.
- [C-1-2] Her bir uygulama paketi için yerel olarak önbelleğe alınmış Hazır Uygulamalar'ı görüntüleme ve silme olanağının bir kullanıcıya sunulması ZORUNLUDUR.
- [C-1-3] 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ükleme gerektirmediğini ve kullanıcıyı Ayarlar'daki uygulama bilgileri ekranına yönlendiren bir kullanıcı ücretini sağlaması ZORUNLUDUR. Web intent'leri aracılığıyla başlatılan Hazır Uygulamalar için Intent.ACTION_VIEW olarak ayarlanmış bir intent ve "http" düzeni kullanılarak tanımlanan şekilde. veya "https" ifadesini görüyorsanız kullanıcının Hazır Uygulamayı başlatmaması ve yapılandırılmış web tarayıcısı ile ilişkili bağlantıyı başlatmaması (cihazda bir tarayıcı varsa)
- [C-1-4] Son Kullanılanlar işlevi cihazda kullanılabiliyorsa, Hazır Uygulamalar'ın çalıştırılmasına Son Kullanılanlar işlevinden erişilmesine İZİN VERİLMELİDİR.
- [C-1-5] Bir veya daha fazla uygulama ya da hizmet bileşenini, burada SDK'da listelenen amaçlar için 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şlemeyi destekler ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager
API'yi 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 uygulanmasını ZORUNLUDUR. - [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
'in ç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 kalan etkin etkinlik olmadan geri düğmesine basmak yerine sistemdeki etkin bir etkinlikten ayrılırken ana sayfa düğmesine basarsa) cihaz uygulamalarının, ön plan hizmetleri gibi çalışması beklenen diğer işlemler için yaptığı gibi, RAM'de de uygulamaya öncelik vermesi gerekir. Bu tür bir uygulama arka plandayken sistem, CPU ve ağ erişimini sınırlama gibi güç yönetimi özelliklerini uygulamaya devam edebilir. - [C-1-2], kullanıcı,
cantSaveState
özelliğiyle beyan edilen ikinci bir uygulamayı başlattı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 kişi bilgilerini yönetmesine olanak tanıyan Contacts Provider
API'lerini 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.
RawContacts, "şununla ilişkilidir" veya "depolanan" Ham kişilere ait ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunlarının, hesabın ilgili Account.name ve Account.type alanlarıyla eşleştiği Hesap.
Varsayılan yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir Hesapla ilişkilendirilmeyen, ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları için null değerlerle oluşturulan işlenmemiş kişilerle ilgili bir hesaptır.
Özel yerel hesap: Yalnızca cihazda depolanan ve Hesap Yöneticisi'ndeki bir Hesapla ilişkilendirilmeyen, ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları için en az bir boş olmayan değerle oluşturulan işlenmemiş kişilerle ilgili bir hesaptır.
Cihaz uygulamaları:
- [C-SR] Ö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
tarihine kadar iade edilmelidir. - [C-1-2] Özel yerel hesaba ait
ACCOUNT_TYPE
ContactsContract.RawContacts.getLocalAccountType
tarihine kadar iade edilmelidir. - [C-1-3] Varsayılan yerel hesaba sahip üçüncü taraf uygulamalar tarafından (ör.
ACCOUNT_NAME
veACCOUNT_TYPE
için boş değerler ayarlayarak) eklenen ham kişilerin ö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şlemleri,
CALLER\_IS\_SYNCADAPTER
parametresi yanlış değerine ayarlanmış veya belirtilmemiş olsa bile ham kişilerin hemen kalıcı olarak silinmesiyle (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 çalıştırabilmelidir.
- Yukarıdaki koşul zorlayıcı olabileceğinden, AOSP referans uygulamasının paket yönetim sistemini kullanmak üzere cihaz uygulamalarının ÖNERİLİR.
Cihaz uygulamaları:
- [C-0-2] ".apk" dosyalarının 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] Mevcut "kayıtlı yükleyici" dışındaki uygulamalara İZİN VERİLMEMELİDİR
DELETE_PACKAGE
izniyle ilgili SDK'da belirtildiği şekilde, paketin herhangi bir kullanıcı onayı olmadan uygulamayı sessizce kaldırmasına izin verilmez. Bunun tek istisnası, PACKAGE_NEEDS_VERIFICATION amacını işleyen sistem paketi doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE amacını işleyen depolama alanı yöneticisi uygulamasıdır. -
[C-0-5],
android.settings.MANAGE_UNKNOWN_APP_SOURCES
amacını işleyen bir etkinlik İÇERMELİDİR. -
[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 uygulamaya bilinmeyen kaynaklardan uygulama yüklemesi için 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
startActivityForResult()
içinRESULT_CANCELED
değerini döndürmeyi SEÇMELİDİR. 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
üzerinden sağlanan uyarı dizesi içeren bir uyarı iletişim kutusu GÖRÜNTÜLEMELİDİR. -
Kullanıcıya, uyarı iletişim kutusunda bir uygulamayı kaldırmayı veya başlatmayı seçme imkanı OLMALIDIR.
-
[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 kullanılarak doğrulanmasını desteklemektedir.
-
Daha eski bir Android sürümünde kullanıma sunulan cihaz uygulamaları sistem yazılımı güncellemesi yoluyla [C-0-8] ve [C-0-9] koşullarını karşılayamıyorsa bu şartlardan muaf tutulabilirler.
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 ve kod çözücüler için
MediaCodecList
üzerinden destek bildirmeli ve bildirmeli. - [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ın oluşturduğu tüm bit akışları ve
CamcorderProfile
bölümünde bildirilen profiller dahildir.
Cihaz uygulamaları:
- Minimum codec gecikmesini hedeflenmeli, diğer bir deyişle
- Giriş arabelleklerini ve giriş arabelleklerini yalnızca bir kez işlendikten sonra TÜKETMEMELİ ve DEĞERLENDİRMEMELİDİR.
- Kodu çözülmüş arabelleklerde, 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.
Ne Google ne de Open Handset Alliance'ın, bu codec'lerin üçüncü taraf patentlerden bağımsız olduğu konusunda herhangi bir beyanda bulunmadığını unutmayın. Bu kaynak kodu donanım veya yazılım ürünlerinde kullanmak isteyen kişilere, açık kaynak yazılımlar veya paylaşılan yazılımlar da dahil olmak üzere bu kodu uygulamak için ilgili patent sahiplerinden patent lisansları alınması gerekebileceği tavsiye edilir.
5.1. Medya Codec'leri
5.1.1. Ses Kodlama
5.1.3. Ses Codec'leri Ayrıntıları.
android.hardware.microphone
belirtilen cihaz uygulamaları, aşağıdaki ses biçimlerinin kodlanmasını desteklemeli ve bunları üçüncü taraf uygulamalarında kullanılabilir hale getirmelidir:
- [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 üzerinden PCM 16 bit yerel bayt siparişi ses kareleri.
5.1.2. Ses Kodu Çözme
5.1.3. Ses Codec'leri Ayrıntıları.
android.hardware.audio.output
özelliğinin desteklendiğini beyan eden cihaz uygulamalarının aşağıdaki ses biçimlerinin kodunu çözmeyi desteklemesi gerekir:
- [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 ve ISO/IEC 23003-4 Dinamik Aralık Kontrol Profili'ni içeren ISO/IEC 23003-3 Genişletilmiş HE AAC Profili)
- [C-1-5] FLAC
- [C-1-6] MP3
- [C-1-7] MIDI
- [C-1-8] Vorbis
- [C-1-9] 24 bit'e 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'sinde varsayılan AAC ses kod çözücüyü kullanarak çok kanallı akışların (yani ikiden fazla kanal) AAC giriş arabelleklerinin şifresinin PCM'ye kodlanmasını destekliyorsa, aşağıdakiler desteklenmelidir:
- [C-2-1] Kod çözme işlemi aşağı karıştırılmadan yapılmalıdır (örneğin, 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, "Dinamik Aralık Kontrolü (DRC)" bölümünde tanımlandığı gibi ZORUNLUDUR ve
android.media.MediaFormat
DRC tuşlarını kullanarak ses kod çözücünün dinamik aralıkla ilgili davranışlarını yapılandırın. 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
. - [SR] Tüm AAC ses kod çözücülerin yukarıdaki C-2-1 ve C-2-2 şartlarını karşılaması Ö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 Düzeyi 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ü desteklenebilir.
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 üzerinden PCM 16 bit yerel bayt siparişi ses kareleri.
5.1.3. Ses Codec'leri Ayrıntıları
Biçim/Codec | Ayrıntılar | Desteklenecek dosya türleri/Kapsayıcı Biçimleri |
---|---|---|
MPEG-4 AAC profili (AAC LC) |
8 ila 48 kHz arasında standart örnekleme hızlarıyla mono/stereo/5.0/5.1 içerik desteği. |
|
MPEG-4 HE AAC Profili (AAC+) | 16 ila 48 kHz arasında standart örnekleme hızlarıyla mono/stereo/5.0/5.1 içerik desteği. |
|
MPEG-4 HE AACv2 Profil (geliştirilmiş AAC+) |
16 ila 48 kHz arasında standart örnekleme hızlarıyla mono/stereo/5.0/5.1 içerik desteği. |
|
AAC ELD (geliştirilmiş düşük gecikmeli AAC) | Standart örnekleme hızları 16 ila 48 kHz arasında olan mono/stereo içerik desteği. |
|
USAC | 7,35 ila 48 kHz arasında standart örnekleme hızlarıyla mono/stereo içerik desteği. | MPEG-4 (.mp4, .m4a) |
AMR ve NB | 8 kHz'de örneklenmiş 4,75 - 12,2 kb/sn | 3GPP (.3gp) |
AMR-WB | AMR-WB, Uyarlanabilir Çoklu Hız - Geniş Bantlı Konuşma Codec'te tanımlandığı gibi, 16 kHz'de örneklenmiş 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız | 3GPP (.3gp) |
FLAC | Hem kodlayıcı hem de kod çözücü için: En azından Mono ve Stereo modların desteklenmesi ZORUNLUDUR. 192 kHz'e kadar örnek hızlarının desteklenmesi ZORUNLUDUR; 16 bit ve 24 bit çözünürlüklerin desteklenmesi ZORUNLUDUR. FLAC 24 bit ses verileri işlemenin, kayan nokta ses yapılandırmasıyla kullanılabilmesi ZORUNLUDUR. |
|
MP3 | Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR) |
|
MIDI | MIDI Tür 0 ve 1. DLS Sürüm 1 ve 2. XMF ve Mobile XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek |
|
Vorbis |
|
|
PCM/DALGA | PCM codec'inin 16 bit doğrusal PCM'yi ve 16 bit kayan noktalı desteği DESTEKLEMELİDİR. WAVE ayıklayıcısı 16 bit, 24 bit, 32 bit doğrusal PCM'yi ve 32 bit kayan noktalı desteği desteklemelidir (donanım sınırına kadar hızlanır). Örnekleme hızlarının 8 kHz ile 192 kHz arasında desteklenmesi ZORUNLUDUR. | DALGA (.wav) |
Opus |
Kod çözme: 8000, 12000, 16000, 24000 ve 48.000 Hz örnekleme hızlarıyla mono, stereo, 5.0 ve 5.1 içerik için destek. Kodlama: 8000, 12000, 16000, 24000 ve 48.000 Hz örnekleme hızlarıyla mono ve stereo içerik için destek. |
|
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
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 donanım hızlandırmalı bir 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
Cihaz uygulamaları, HEVC video kodu çözmeyi destekliyorsa: * [C-1-1], HEIF (HEIC) resim 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 (örneğin,
android.graphics.Bitmap
ARGB_8888
yapılandırması aracılığıyla) isteniyorsa 8 bitlik eşdeğer bir 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) |
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. -
[SR] Yüzey modu girişi için RGB888 renk biçimini desteklemesi ÖNEMLE ÖNERİLİR.
-
[C-1-3], düzlemsel 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
'ye eşdeğer). Her ikisini de desteklemeleri ÖNEMLE Ö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 belirlenen ancak genelleştirme dışındaki, uygulanabilir en büyük sıkıştırılmış ve sıkıştırılmamış kareyi barındıran çı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 desteklemelidir. -
[C-1-3] Video kodlayıcılar ve kod çözücüler, 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
'ye eşdeğerdir). Her ikisini de desteklemeleri ÖNEMLE ÖNERİLİR. -
[SR] Video kodlayıcıların ve kod çözücülerin, donanım açısından optimize edilmiş düz veya yarı düzlemli YUV420 8:8:8 renk biçimlerinden (YV12, NV12, NV21 veya satıcı tarafından optimize edilmiş eşdeğer biçim) en az birini desteklemeleri Ö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 çıkışı desteklemesi ZORUNLUDUR. Bu durum,
android.media.MediaCodecInfo
üzerinden bir 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
aracılığıyla yenileme desteği reklamı 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 belirtmedikçe 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 okuması 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 |
|
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 ya OMX ya da 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] Codec 2.0 API desteği içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları Codec 2.0 API'yi desteklemiyorsa:
- [C-2-1], cihaz tarafından desteklenen her medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Açık Kaynak Projesi'nden (varsa) ilgili OMX yazılım codec'ini 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] OMX yazılım codec'lerinin, bellek eşleştiriciler 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 vermeyi mümkün kılmak için Android Açık Kaynak Projesi'nde belirtildiği gibi yazılım codec'i işleminde 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'si 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'lerinin kullanılması ve OMX IL adlandırma yönergelerine 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" ile başlayan adlara sahip codec'ler. veya "c2.android" yazın. Tedarikçi firma olarak veya donanım hızlandırmalı olarak nitelendirilmemelidir.
- [C-1-5] Bellek ayırıcılar ve eşleyiciler 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ırma kullanan 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 desteklemelidir ve "kodlayıcılar" olarak adlandırılanlar Kodlamanın desteklenmesi ZORUNLUDUR. Medya biçimlerini içeren adlara sahip codec'lerin bu biçimleri desteklemesi ZORUNLUDUR.
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ı verileri 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 hariç) | 3840 x 2160 piksel (HEVC, VP9) |
- [C-2-2] Donanım hızlandırmalı olarak nitelenen video codec'lerinin, performans noktası bilgilerini yayınlaması ZORUNLUDUR. Desteklenen başka bir standart performans noktası kapsamında olmadıkları sürece her birinin desteklenen tüm standart performans noktalarını (
PerformancePoint
API'sinde listelenir) listelemesi ZORUNLUDUR. - Ayrıca, listelenen standart puanlardan biri dışında sürekli video performansını destekleyen genişletilmiş performans puanları YAYINLAMALIDIR.
5.2. Video Kodlaması
Cihaz uygulamaları, herhangi bir video kodlayıcıyı destekliyor ve bunu üçüncü taraf uygulamalarının kullanımına sunuyorsa:
- İki kayan pencerenin üzerinde, çerçeve içi (I-çerçeve) aralıkları arasındaki bit hızının% 15'ten fazla üzerinde olmaması gerekir.
- 1 saniyelik kayan bir pencerede bit hızının% 100'ün üzerinde OLMAMALIDIR.
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 bunu üçüncü taraf uygulamalarında kullanılabilir hale getirmelidir.
- Hem VP8 hem de H.264 video kodlayıcıları desteklemeli ve bunları üçüncü taraf uygulamalarında kullanılabilir hale getirmelisiniz.
Cihaz uygulamaları H.264, VP8, VP9 veya HEVC video kodlayıcılarından 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.
- Video kodlayıcı, giriş arabelleklerinin zaman damgalarına göre anlık kare süresini belirlemeli ve bit grubunu 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 resim 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 kodlama çerçevelerini 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.
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'i DESTEKLEMELİ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 Makro Blok Siparişi) ve RS (Gereksiz Dilimler) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğun korunması için kodlayıcılar tarafından Temel Profilde 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 üzerinden 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 üzerinden 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.
- [SR], 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] Ana Profil Düzeyi 3'ü DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği şekilde HD kodlama profillerini DESTEKLEMELİDİR.
- [SR]'nin, aşağıdaki tabloda belirtildiği gibi 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 |
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ını 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 ve Düzey 45'i DESTEKLEMELİDİR.
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 ile Ana Profil Düzeyi 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlüklü) profillerine sahip videoların kodunu çözebilmesi ZORUNLUDUR.
- Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlüklü) profillerine 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 belirtilen 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ında; 720, 1080 ve UHD profillerine ait H.265 veya VP9 kod çözme yöntemlerinden en az birinin desteklenmesi 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, uygulamadan gerekli HDR meta verilerini kabul etmesi ve ayrıca gerekli HDR meta verilerinin bit akışından ve/veya kapsayıcıdan çıkartılması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 bundan büyükse:
- [C-2-1] Cihaz uygulamaları, aşağıdaki tabloda yer alan 720p profilleri desteklemektedir.
- [C-2-2] Cihaz uygulamaları, aşağıdaki tabloda yer alan 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 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-3-1] Cihaz uygulamalarında; 720, 1080 ve UHD profillerine ait VP9 veya H.265 kod çözme yöntemlerinden en az birinin desteklenmesi 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 gerekir. Ayrıca bit akışından ve/veya kapsayıcı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 bildirirse:
- [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) izleme dizininin, birleştirilmiş Dolby Vision katmanının parkur diziniyle aynı olacak şekilde ayarlanması ZORUNLUDUR.
5.3.9. AV1
Cihaz uygulamaları AV1 codec'i destekliyorsa:
- [C-1-1], 10 bit içerik dahil olmak üzere Profil 0'ı DESTEKLEMELİDİR.
5.4. Ses Kaydetme
Bu bölümde açıklanan gereksinimlerden bazıları Android 4.3'ten itibaren KULLANILMALIDIR olarak listelenmiş olsa da 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] Aşağıdaki özelliklere sahip işlenmemiş ses içeriğinin yakalanmasına İZİN VERİLMELİDİR:
- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 8000, 11025, 16000, 44100, 48.000 Hz
- Kanallar: Mono
-
Aşağıdaki özelliklere sahip işlenmemiş ses içeriğinin yakalanmasına İZİN VERİLMELİDİR:
- 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 hızları 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 şu özellikleri ifade eder:
- 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ı veAudioManager.getMicrophones()
API üzerinden üçüncü taraf uygulamaların erişebildiği cihazdaki mevcut mikrofonlar ileAudioRecord.getActiveMicrophones()
veMediaRecorder.getActiveMicrophones()
API'ler aracılığıyla üçüncü taraf uygulamalarının erişebildiği mevcut durumda etkin 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 bir oranda yukarı örnekleme olmadan yakalama GEREKİR.
- [C-2-2] Yukarı örnekleme 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 özellikli ses işlemenin devre dışı bırakılması ZORUNLUDUR. - [C-1-3]
AudioSource.VOICE_RECOGNITION
ses kaynağından ses akışı kaydederken varsayılan olarak otomatik kazanç kontrolünün devre dışı bırakılması ZORUNLUDUR. - Ses tanıma ses akışını, yaklaşık olarak düz genlik ve frekans özellikleriyle (özellikle, ±3 dB, 100 Hz ile 4000 Hz arasında) kaydetmeniz GEREKİR.
- Ses tanıma ses akışını, 1000 Hz'deki 90 dB ses gücü seviyesi (SPL) kaynağı, 16 bitlik örnekler için 2500 RMS sağlayacak şekilde giriş hassasiyeti ayarlanmış şekilde kaydetmeniz gerekir.
- Ses tanıma ses akışını, PCM genlik düzeyleri giriş SPL'sinin mikrofonda -18 dB ile +12 dB, 90 dB SPL arasında 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) teknolojileri beyan ederse:
- [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çeriyor.
Cihaz uygulamalarında hem android.hardware.audio.output
hem de android.hardware.microphone
tanımlanıyorsa:
-
[C-1-1]
REMOTE_SUBMIX
ses kaynağını doğru bir şekilde uygulamalıdır. Böylece, bir uygulama bu ses kaynağından kayıt yapmak içinandroid.media.AudioRecord
API'sini 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 Uygulanmalıdır
Cihaz uygulamaları, AudioSource.VOICE_COMMUNICATION
seçildiğinde ses yakalama yoluna eklenen bir Akustik Yankı İptal Edici sağlıyorsa:
- [C-SR] bunu AcousticEchoCanceler API yöntemi AcousticEchoCanceler.isAvailable() ile bildirmesi için STRONGLY_RECOMMENDED
- [C-SR], bu ses efektinin AcousticEchoCanceler API'si ile kontrol edilebilmesi için STRONGLY_RECOMMENDED şeklindedir.
- [C-SR], her bir AEC teknolojisi uygulamasını AudioEffect.Descriptor.uuid alanı yoluyla benzersiz bir şekilde tanımlamak için STRONGLY_RECOMMENDED şeklindedir.
5.4.5. Eşzamanlı Yakalama
Cihaz uygulamalarında android.hardware.microphone
belirtildiğinde,bu belgede açıklandığı gibi eşzamanlı yakalamanın uygulanması GEREKİR. Özellikle:
- [C-1-1]
AudioSource.VOICE_RECOGNITION
ile kayıt yapan bir erişilebilirlik hizmeti ve herhangi birAudioSource
ile kayıt yapan en az bir uygulamanın mikrofona eşzamanlı olarak erişmesine İZİN VERMELİDİR. - [C-1-2] Asistan rolüne sahip önceden yüklenmiş bir uygulamanın ve
AudioSource.VOICE_COMMUNICATION
veyaAudioSource.CAMCORDER
dışında herhangi birAudioSource
ile kayıt 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 ses kaydederken erişilebilirlik hizmeti hariç diğer uygulamalar için ses yakalamanın sesi SAĞLANMALIDIR. Ancak, bir uygulamaAudioSource.VOICE_COMMUNICATION
ile görüntü yakalamaya çalışıyorsaCAPTURE_AUDIO_OUTPUT
izni olan ayrıcalıklı (önceden yüklenmiş) bir uygulama ise başka bir uygulama sesli aramayı yakalayabilir. - [C-1-4] İki veya daha fazla uygulama aynı anda kayıt yapıyorsa ve her iki uygulamanın da kullanıcı arayüzü yoksa en son ses kaydını başlatan uygulama sesi alır.
5.4.6. Mikrofon Kazanç Düzeyleri
Cihaz uygulamaları android.hardware.microphone
bildiriyorsa:
- Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri sergilemelidir. Bu durum özellikle, 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.
- Ses girişi hassasiyetini, 90 dB Ses Basınç Düzeyinde (SPL) çalınan 1000 Hz sinüsoidal ton kaynağıyla, 16 bit örnek için 2.500 RMS ile yanıt verecek şekilde (veya her bir kayan nokta/çift hassasiyetli ses tanıma örneği kaydetmek üzere kullanılan her ses kaynağı için -22,35 dB Tam Ölçekli) yanıt verecek şekilde ayarlamak GEREKİR.
- [C-SR] 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 düzeylerini sergilemesi ÖNEMLE ÖNERİLİR: özellikle 5 Hz ile 100 Hz arasındaki ±20 dB'den 100 Hz'e.
- [C-SR] 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 düzeylerini sergilemesi ÖNEMLE ÖNERİLİR. Bu, özellikle 4.000 Hz ile 22 KHz arasındaki ±30 dB'dir.
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 veren 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 çalınmasına İZİN VERİLMELİDİR:
- Kaynak biçimler: Doğrusal PCM, 16-bit, 8-bit, kayan
- Kanallar: Mono, Stereo, 8 adede kadar kanal içeren geçerli çok kanallı yapılandırmalar
-
Örnekleme hızları (Hz olarak):
- Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 32000, 44100, 48000
- 96.000 mono ve stereo
-
Aşağıdaki özelliklere sahip ham ses içeriğinin çalınmasına İZİN VERİLMELİDİR:
- Örnekleme ücretleri: 24.000, 48.000
5.5.2. Ses Efektleri
Android, cihaz uygulamalarına yönelik bir ses efektleri API'si sağlar.
Cihaz uygulamaları android.hardware.audio.output
özelliğini beyan ederse:
- [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. 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] 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ği ve
android.car.CarAudioManager
politikasında herkese açık olarak tanımlanan araç sesi kullanımı tarafından tanımlanan içerik türü veya kullanımı kullanılarak ses düzeyinin her ses akışı için ayrı ayrı ayarlanmasına izin VERİLMELİDİ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ümün amaçları doğrultusunda, aşağıdaki tanımları kullanın:
- çıkış gecikmesi. Bir uygulamanın PCM kodlu verilerin bir çerçevesini yazması ile cihaz üzerindeki bir dönüştürücüde veya sinyalin ortama karşılık gelen sesin bir bağlantı noktası aracılığıyla cihazdan ayrılması ve harici olarak gözlemlenmesi arasındaki zaman aralığı.
- soğuk çıkış gecikmesi. Ses çıkış sistemi istekten önce boşta ve kapalı olduğunda ilk kare için çıkış gecikmesi.
- Sürekli çıkış gecikmesi. Cihaz ses çaldıktan sonra, sonraki kareler için çıkış gecikmesi.
- giriş gecikmesi. Bir sesin ortam tarafından cihaz üzerinde bir transdüser veya sinyalin cihaza sunulması ile cihazın bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın PCM kodlu verilerin karşılık gelen çerçevesini okuması arasında geçen aralık.
- kayıp giriş. Giriş sinyalinin kullanılamıyor veya kullanılamayan ilk kısmı.
- soğuk giriş gecikmesi. İstekten önce ses giriş sistemi boşta ve kapalı olduğunda ilk kare için kaybedilen giriş süresi ile giriş gecikmesinin toplamı.
- sürekli giriş gecikmesi. Cihaz ses kaydederken sonraki kareler için giriş gecikmesi.
- soğuk çıkış ses dalgalanması. Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- soğuk giriş ses dalgalanması. Baştan gelen giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- 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ı. Akış içindeki göreli kare konumundan ve bu karenin ilişkili uç noktadaki ses işleme ardışık düzenine girdiği veya bu ardışık düzenden ayrıldığı 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ğin az çalışması, giriş için arabellek aşımı durumu ya da başka herhangi bir dijital veya analog gürültü kaynağından kaynaklanır.
Cihaz uygulamalarında android.hardware.audio.output
belirtilmişse, 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.
android.hardware.audio.output
tanımlanan cihaz uygulamaları, aşağıdaki gereksinimleri karşılamaları veya aşmaları ÖNEMLE ÖNERİLİR:
- [C-SR] 100 milisaniye veya daha kısa soğuk çıkış gecikmesi. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların bu gereksinimleri karşılaması için şu anda ÇOK ÖNERİLİR. 2021'de kullanıma sunulacak yeni bir platform sürümünde 200 ms veya daha az Soğuk çıkış gecikmesi gerekli olacaktır.
- [C-SR] 45 milisaniye veya daha kısa sürekli çıkış gecikmesi.
- [C-SR] Soğuk çıkış ses dalgalanmasını en aza indirin.
- [C-SR] AudioTrack.getTimestamp ve
AAudioStream_getTimestamp
tarafından döndürülen çıkış zaman damgası +/- 1 ms. değerine eşit.
Cihaz uygulamaları yukarıdaki şartları karşılıyorsa ilk kalibrasyondan sonra hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri kullanılırken en az bir desteklenen ses çıkış cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için şu şartlar geçerlidir:
- [C-SR]
android.hardware.audio.low_latency
özellik bayrağını beyan ederek düşük gecikmeli sesi bildirmesi ÖNEMLE ÖNERİLİR. - [C-SR] AAudio API aracılığıyla düşük gecikmeli ses gereksinimlerini karşılaması ÖNEMLE ÖNERİLİR.
- [C-SR]
AAudioStream_getPerformanceMode()
öğesindenAAUDIO_PERFORMANCE_MODE_LOW_LATENCY
değeri 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 olduğundan emin olmak amacıyla ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri üzerinden düşük gecikmeli ses gereksinimlerini karşılamıyorsa:
- [C-2-1] Düşük gecikmeli ses desteği için BİLDİRMEMELİDİR.
Cihaz uygulamaları android.hardware.microphone
içeriyorsa ses girişiyle ilgili aşağıdaki gereksinimlerin karşılanması ZORUNLUDUR:
- [C-3-1] AudioRecord.getTimestamp veya
AAudioStream_getTimestamp
ile döndürülen giriş zaman damgalarındaki hatayı +/- 2 ms ile sınırlandırın. "Hata" doğru değerden sapma anlamına gelir. - [C-3-2] 500 milisaniye veya daha az soğuk giriş gecikmesi.
Cihaz uygulamaları android.hardware.microphone
içeriyorsa aşağıdaki ses girişi gereksinimlerini karşılamaları ÖNERİLİR:
- [C-SR] 100 milisaniye veya daha az soğuk giriş gecikmesi. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların bu gereksinimleri karşılaması için şu anda ÇOK ÖNERİLİR. 2021'de kullanıma sunulacak yeni bir platform sürümünde 200 ms veya daha az soğuk giriş gecikmesi gerekli olacaktır.
- [C-SR] 30 milisaniye veya daha kısa sürekli giriş gecikmesi.
- [C-SR] 50 milisaniye veya daha kısa kesintisiz gidiş dönüş gecikmesi.
- [C-SR] Soğuk giriş ses dalgalanmasını en aza indirir.
- [C-SR] AudioRecord.getTimestamp veya
AAudioStream_getTimestamp
tarafından döndürülen giriş zaman damgalarındaki hatayı +/- 1 ms ile sınırlandırın.
5.7. Ağ Protokolleri
Cihaz uygulamalarının, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemesi ZORUNLUDUR.
Cihaz uygulamaları ses veya video kod çözücü içeriyorsa:
-
[C-1-1], HTTP(S) üzerinden bölüm 5.1'de belirtilen tüm gerekli codec'leri ve kapsayıcı biçimlerini DESTEKLEMELİDİR.
-
[C-1-2], aşağıdaki Medya Segmenti Biçimleri tablosunda HTTP Canlı Yayın taslak protokolü, Sürüm 7 üzerinde gösterilen medya segmenti biçimlerini DESTEKLEMELİDİR.
-
[C-1-3] aşağıdaki RTSP tablosunda yer alan aşağıdaki RTP ses videosu profilini ve ilgili codec'leri DESTEKLEMELİDİR. İstisnalar için lütfen bölüm 5.1'deki tablo dipnotlarına bakın.
Medya Segmenti Biçimleri
Segment biçimleri | Referanslar | Gerekli codec desteği |
---|---|---|
MPEG-2 Taşıma Akışı | ISO 13818 |
Video codec'leri:
ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. ve MPEG-2. 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.3'e bakın. |
MP4A-LATM | RFC 6416 | AAC ve varyantları hakkında ayrıntılar için bölüm 5.1.1'e bakın. |
H263-1998 |
RFC 3551 RFC 4629 RFC 2190 |
H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
H263-2.000 | RFC 4629 | H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
AMR | RFC 4867 | AMR-NB ile ilgili ayrıntılar için bölüm 5.1.1'e bakın. |
AMR-WB | RFC 4867 | AMR-WB hakkında ayrıntılı bilgi için bölüm 5.1.1'e bakın. |
MP4V-ES | RFC 6416 | MPEG-4 SP ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
mpeg4-genel | RFC 3640 | AAC ve varyantları hakkında ayrıntılar için bölüm 5.1.1'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ı destekliyor ve güvenli yüzeyleri destekleyebiliyorsa:
- [C-1-1],
Display.FLAG_SECURE
için destek bildirmeli.
Cihaz uygulamaları Display.FLAG_SECURE
desteği olduğunu beyan ediyor ve kablosuz görüntü protokolünü destekliyorsa:
- [C-2-1], Miracast gibi kablosuz protokollerle bağlanan ekranlarda, HDCP 2.x veya sonraki bir sürümü gibi kriptografik olarak güçlü bir mekanizma ile bağlantıyı 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ı üzerinden 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], MIDI olmayan genel bağlantı sağlayan tüm MIDI özellikli donanım aktarımlarında MIDI'yı desteklemelidir. Bu aktarımlar şunlardır:
- 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ı (sanal MIDI cihazları) DESTEKLEMELİDİR
-
[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ğine yönelik desteği bildiriyorsa:
- [C-1-1],
android.hardware.audio.low_latency
özelliği için desteği BİLDİRMELİDİR. - [C-1-2], bölüm 5.6'daki Ses Gecikmesi'nde tanımlandığı gibi, kesintisiz gidiş dönüş ses gecikmesine sahip OLMALIDIR. Desteklenen bir yol boyunca en az 20 milisaniye olması ve bu sürenin 10 milisaniye veya daha kısa olması ZORUNLUDUR.
- [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] hem OpenSL ES PCM arabellek sırası API'sini hem de AAudio yerel ses API'sinin en az bir yolunu kullanarak gecikmeleri ve USB ses gereksinimlerini karşılamalıdır.
- [SR] Gecikmeleri ve USB ses gereksinimlerini MMAP yolu üzerinden AAudio yerel ses API'sini kullanarak karşılamak için ÖNEMLE ÖNERİLİ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.
- [SR] 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 kayıt kimliğinin 09b13c6f49ea089f8c31e5d035f912cc405b7ab8 Android uygulama sürümü 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. 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
Karşılaştırmaların açıklaması için SynthMark dokümanlarına bakın.
- 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.
- Geri çağırma ile tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediğinden ses arabelleği tamamlama geri çağırma giriş sürelerinde dalgalanmayı en aza indirmelisiniz.
- 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.
- Soğuk 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 bitiş noktalarına ö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ış noktaları için ses arabelleği tamamlama geri çağırmalarını işlemeli ve giriş geri çağırmasından 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ını 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.
- Dokunmatik girişten ses çıkışına kadar gecikme süresinin 40 ms'den az veya daha az olması gerekir.
Cihaz uygulamaları yukarıdaki gereksinimlerin tümünü karşılıyorsa:
- [SR]
android.hardware.audio.pro
özelliğine yönelik desteğinandroid.content.pm.PackageManager
sınıfı üzerinden bildirilmesi ÖNERİLİR.
Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakı içeriyorsa bunlar:
- [C-2-1], kesintisiz gidiş dönüş ses gecikmesinin, ses jakı yolunda en fazla 20 milisaniye olması ZORUNLUDUR.
- [SR] Kablolu Ses Mikrofonlu Kulaklık Spesifikasyonu'nun (v1.1) Mobil cihaz (jak) spesifikasyonlarına uygun olması için ÖNEMLE ÖNERİLİR.
- Kesintisiz gidiş-dönüş ses gecikmesi, ses jakı yolunda 10 milisaniye veya daha az olmalıdı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 en fazla 20 milisaniyelik kesintisiz bir gidiş dönüş ses gecikmesine sahip olmalıdır.
- Sürekli gidiş dönüş ses gecikmesi, USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktasından 10 milisaniye veya daha az olmalıdır.
- [C-SR] 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ği desteklemeleri Ö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ışı DESTEKLEMELİDİR.
5:11. İşlenmemiş İçerikleri Yakalama
Android, android.media.MediaRecorder.AudioSource.UNPROCESSED
ses kaynağı aracılığıyla işlenmemiş seslerin kaydedilmesini destekler. OpenSL ES'de, SL_ANDROID_RECORDING_PRESET_UNPROCESSED
kayıt hazır ayarıyla 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 üzerinden BİLDİRMELİDİR. -
[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.
-
[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ğında, 16 bit örnek için 520 RMS ile (veya kullanılan her mikrofonlu kaynak/çift hassasiyetli kaynak işlemede -36 dB Tam Ölçekli) yanıt verecek şekilde ayarlamak ZORUNLUDUR.
-
[C-1-6] işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofon için 60 dB veya daha yüksek bir sinyal-gürültü oranına (SNR) sahip olması ZORUNLUDUR. (SNR ise 94 dB SPL ile kendi gürültünün eşdeğer SPL'si (A ağırlıklı) arasındaki fark olarak ölçülür.
-
[C-1-7] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonda ve her bir mikrofonda 90 dB SPL giriş düzeyinde 1 kHZ için% 1'in altında bir toplam harmonik bozulmanın (THD) olması ZORUNLUDUR.
-
Yolda, seviyeyi 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-8] Herhangi bir nedenle mimaride herhangi bir sinyal işleme mevcutsa devre dışı bırakılmalı ve sinyal yoluna etkin bir şekilde sıfır gecikme veya ekstra gecikme uygulanmalıdır.
- [C-1-9] Seviye çarpanı, yolda olmasına izin verilirken, sinyal yolunda gecikme veya gecikme SAĞLANMAMALIDIR.
Tüm SPL ölçümleri test edilen mikrofonun hemen yanında yapılır. Birden fazla mikrofon yapılandırmasında bu koşullar 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
sonucunu döndürmelidir. - İşlenmemiş kayıt kaynağının sinyal yoluyla ilgili gerekli birçok koşulu karşılamak için [SR] yine de ÖNEMLE ÖNERİLİR.
6. Geliştirici Araçları ve Seçenek Uyumluluğu
6.1. Geliştirici araçları
Cihaz uygulamaları:
- [C-0-1], Android SDK'da 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. Bunlar,
dumpsys
cmd stats
dahil olmak üzere uygulama geliştiriciler tarafından kullanılabilir. - [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, bildirim, 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 hale 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 etkin olmaması ve Android Debug Bridge'i 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ğ üzerinden bir ana makineye adb bağlantılarını destekliyorsa:
- [C-4-1]
AdbManager#isAdbWifiSupported()
yönteminintrue
işlevi döndürmesi ZORUNLUDUR.
Cihaz uygulamaları, kablosuz ağ üzerinden bir ana makineye adb bağlantılarını destekliyorsa ve en az bir kamera içeriyorsa:
- [C-5-1],
AdbManager#isAdbWifiQrSupported()
yöntemi döndürmesi (true
) ZORUNLUDUR.
- [C-0-2], Android SDK'da belirtildiği gibi adb'yi ve AOSP'de sağlanan kabuk komutlarını DESTEKLEMELİDİR. Bunlar,
-
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 kullanıcı yukarıdaki gibi Android Hata Ayıklama Köprüsü'nü her etkinleştirdiğinde bu özelliğin desteklenmesi ZORUNLUDUR.
-
Maymun
- [C-0-8] Monkey çerçevesini içermeli ve uygulamaların çalışması için kullanılabilir hale getirmelidir.
-
SysTrace
- [C-0-9], Android SDK'da belirtildiği şekilde systrace aracını DESTEKLEMELİDİR. Systrace, varsayılan olarak etkin olmamalı ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma ZORUNLUDUR.
-
Perfetto
- [C-SR] Kabuk kullanıcısına, perfetto belgelerine uygun cmdline'ın bir
/system/bin/perfetto
ikili programını açığa çıkarması ÖNEMLE ÖNERİLİR. - [C-SR] 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] Perfetto ikili programının, perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izlemesi çıktısı olarak yazılması ÖNEMLE ÖNERİLİR.
- [C-SR] Perfetto ikili programı üzerinden en azından perfetto dokümanlarında açıklanan veri kaynaklarını sağlamanız ÖNEMLE ÖNERİLİR.
- [C-SR] Kabuk kullanıcısına, perfetto belgelerine uygun cmdline'ın bir
-
Zayıf Bellek Açıcısı
- [C-0-10] bir uygulama Low Memory Kiler tarafından sonlandırıldığında istatistiksel günlüğe bir
LMK_KILL_OCCURRED_FIELD_NUMBER
Atom yazmalıdır.
- [C-0-10] bir uygulama Low Memory Kiler tarafından sonlandırıldığında istatistiksel günlüğe 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
İadeSİ ZORUNLUDUR - [C-2-2], Test Kayışı Modu dokümanlarında açıklandığı şekilde Test Kayışı Modu'nu uygulamalıdır.
- [C-2-1]
Cihaz uygulamaları, android.hardware.vulkan.version
özellik bayrakları aracılığıyla Vulkan 1.0 veya sonraki sürümleri desteklediğini bildiriyorsa:
- [C-1-1] Uygulama geliştiricisinin GPU hata ayıklama katmanlarını etkinleştirmesi/devre dışı bırakması için ücret ALINMASI GEREKİR.
- [C-1-2] GPU hata ayıklama katmanları etkinleştirildiğinde, hata ayıklaması yapılabilir uygulamaların içinde bulunan harici araçlar (platform veya uygulama paketinin bir parçası olmayan) tarafından sağlanan kitaplıklardaki katmanları numaralandırma GEREKİR vkEnumerateInstancelayerProperties() ve vkCreateInstance() API yöntemlerini destekleyen temel dizin
6.2. Geliştirici seçenekleri
Android'de, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmaları için destek sunulur.
Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim SAĞLANMALIDIR. Bu özellikler:
- [C-0-1], uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS niyetini dikkate almalıdır. Yukarı yönlü 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ü öğesi.
- [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 SUNMALIDIR. 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 dokümanlarından 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 SAĞLANMALIDIR.
- 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ığı şekilde ilgili API'yi uygulaması ZORUNLUDUR.
SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime girerse 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 dokümanlarının izin verdiği yerlerde 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öntemlerinin, SDK dokümanlarında 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 bilgilerinin tutarlı bir şekilde raporlanması ZORUNLUDUR.
Bu şartların geçerli olduğu tipik bir senaryo örneği telephony API'dir: Telefon olmayan cihazlarda bile bu API'ler makul şekilde işlemsiz olarak uygulanmalıdır.
7.1. Ekran ve Grafikler
Android'de, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında iyi bir şekilde ç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. 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ı GEREKİR.
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ı kısmının iki karşıt köşesi arasındaki inç cinsinden mesafe.
- inç başına nokta (dpi). 1 inçlik doğrusal bir yatay veya dikey aralığın kapsadığı piksel sayısı. Dpi değerleri listelendiğinde, hem yatay hem de dikey dpi aralık içinde olmalıdır.
- en boy oranı. Uzun boyut piksellerinin, ekranın kısa olan 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). Sanal piksel birimi, 160 dpi ekrana göre normalleştirilir ve şu şekilde hesaplanır: piksel = dps * (yoğunluk/160).
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
ile Configuration.screenLayout
üzerinden mevcut yapılandırmanın ekran düzeni boyutunu sorgulamasına olanak tanır.
Cihaz uygulamaları:
-
[C-0-1], Android SDK dokümanlarında tanımlandığı gibi
Configuration.screenLayout
için doğru düzen boyutunu Bildirmelidir. Özellikle, cihaz uygulamalarının doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını aşağıdaki gibi bildirmesi ZORUNLUDUR:Configuration.uiMode
özelliğinin UI_MODE_TYPE_Watch dışında bir değere ayarlandığı 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 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] Başvurulara doğru şekilde riayet edilmesi ZORUNLUDUR' Android SDK dokümanlarında açıklandığı gibi, AndroidManifest.xml dosyasındaki <
supports-screens
> özelliği aracılığıyla ekran boyutları için sağlanan desteğin sonlandırılması gereklidir. -
Köşeleri yuvarlanmış Android ile uyumlu ekranlara sahip OLABİLİR.
UI_MODE_TYPE_NORMAL
destekleyen ve köşeleri yuvarlanmış Android uyumlu ekranlar içeren cihaz uygulamaları:
- [C-1-1] Aşağıdaki şartlardan en az birinin karşılanması 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 15 dp x 15 dp boyutunda bir kutu sabitlendiğinde, ekranda her kutudan en az bir piksel 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.
Cihaz uygulamaları, katlanabilir Android uyumlu ekranlar içeriyorsa veya birden fazla ekran paneli arasında katlanabilir menteşe içeriyorsa ve bu tür ekranları üçüncü taraf uygulamalarının oluşturulması için kullanılabilir hale getirirse:
- [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 BİLDİRMELİDİR.
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.
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ı karşılamalıdır:
-
[C-0-1]
Configuration.uiMode
ayarıUI_MODE_TYPE_NORMAL
olarak ayarlanmış cihaz uygulamalarının, en boy oranı değeri 1,86 veya daha az (yaklaşık 16:9) ZORUNLUDUR (uygulama 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 etti. - 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-2]
Configuration.uiMode
ayarıUI_MODE_TYPE_NORMAL
olarak ayarlanmış cihaz uygulamalarının en boy oranı değeri 1,3333 (4:3) veya daha büyük olmalıdır.Ancak aşağıdaki koşullardan biri karşılandığında uygulama genişletilebilir:- Uygulama, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabileceğini beyan eder.
- Uygulama, izin verilen en boy oranını kısıtlayacak bir
android:minAspectRatio
bildiriyor.
-
[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ştiricilerinin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar.
-
[C-0-1] Varsayılan olarak, cihaz uygulamalarının
DisplayMetrics
ürünündeDENSITY_DEVICE_STABLE
API aracılığıyla listelenen Android çerçeve yoğunluklarından yalnızca birini Bildirmesi ZORUNLUDUR ve bu değer herhangi bir zamanda DEĞİŞMEMELİDİR; ancak cihaz, ilk başlatma işleminden sonra kullanıcının yaptığı ekran yapılandırması değişikliklerine (örneğin, görüntü boyutu) bağlı olarak farklı rastgele bir yoğunluk rapor edebilir. -
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ı, bir sonraki en düşük standart Android çerçeve yoğunluğunu Bildirmelidir.
Cihazın ekran boyutunu değiştirme imkanı varsa:
- [C-1-1] Görüntü boyutu, yerel yoğunluğun 1,5 katından daha büyük bir şekilde ölçeklenmemelidir veya 320 dp'den küçük (kaynak niteleyici sw320 dp'ye eşdeğerdir) etkili bir minimum ekran boyutu üretmemelidir (hangisi önce gerçekleşirse).
- [C-1-2] Görüntü boyutu, yerel yoğunluğun 0,85 katından daha küçük olacak şekilde ölçeklendirilemez.
- İ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'sinde 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'sinde tanımlandığı şekilde 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 bildirmelidir. - [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 ayrıntılı olarak açıklandığı şekilde hem OpenGL ES 1.1 hem de 2.0'ı desteklemelidir.
- [C-SR] OpenGL ES 3.1'i desteklemeleri için ÖNEMLE ÖNERİLİR.
- OpenGL ES 3.2'yi DESTEKLEMELİDİR.
Cihaz uygulamaları OpenGL ES sürümlerinden herhangi birini destekliyorsa, bunlar:
- [C-2-1], uyguladığı OpenGL ES tarafından yönetilen API'ler ve yerel API'ler aracılığıyla raporlamalı, diğer yandan da 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-SR]
EGL_KHR_partial_update
veOES_EGL_image_external
uzantılarını desteklemeleri için ÖNEMLE ÖNERİLİR. getString()
yöntemi (destekledikleri herhangi bir doku sıkıştırma biçimi) aracılığıyla doğru şekilde rapor ALINMALIDIR. Bu genellikle satıcıya özgü bir durumdur.
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 de dışa aktarmalıdır.
- [SR]
OES_EGL_image_external_essl3
uzantısını desteklemeleri Ö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 Paket'i tamamen destekliyorsa:
- [C-5-1], desteği
android.hardware.opengles.aep
özellik bayrağı aracılığıyla 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:
- [SR] Vulkan 1.1 desteği içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- Vulkan 1.1 desteği İÇERMELİDİ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-master-YYYY-MM-DD.txt
adresindeki Android kaynak ağacında yer alır. 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ümü 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 yerel API'si
vkEnumeratePhysicalDevices()
için en az birVkPhysicalDevice
Numaralandırması ZORUNLUDUR . - [C-1-3] Numaralı her
VkPhysicalDevice
için Vulkan 1.0 API'lerini tam olarak uygulamalıdır. - [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], uygulamanın
android:debuggable
özelliğitrue
olarak ayarlanmamışsa uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanları Numaralandırmamalı veya Vulkan API'yi izlemek ya da ona müdahale etmek için başka yöntemler SUNMAMALIDIR. - [C-1-6], Vulkan'da yerel API'ler 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-SR] VK_KHR_driver_properties ve VK_GOOGLE_display_timing uzantılarını desteklemeleri için ÖNEMLE ÖNERİLİR.
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
Numaralandırılmamalı.
Cihaz uygulamaları, Vulkan 1.1 desteği içeriyorsa ve Vulkan özellik bayraklarından herhangi birini bildirirse:
- [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 ZORUNLUDUR.
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 2D grafikler için Uygulama, Etkinlik, Pencere veya Görünüm düzeyinde donanım hızlandırmayı etkinleştirmek istediklerini android:hardwareAccelerated manifest etiketi veya doğrudan API çağrıları aracılığıyla etkinleştirmek istediklerini 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ştiricinin istekte bulunması durumunda android:hardwareAccelerated="false" değerini ayarlayarak veya donanım hızlandırmayı doğrudan Android View API'leri aracılığıyla devre dışı bırakarak donanım hızlandırmayı devre dışı bırakmalısınız.
- [C-0-2] donanım hızlandırma ile ilgili Android SDK dokümanlarıyla uyumlu davranış sergilemelidir.
Android, geliştiricilerin donanımla hızlandırılmış 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ı akış Android uygulamasıyla tutarlı davranış sergilemelidir.
7.1.4.5 Geniş Ekranlar
Cihaz uygulamaları , Configuration.isScreenWideColorGamut()
üzerinden geniş gamlı ekranları desteklediğini iddia ediyorsa aşağıdaki durumlar geçerli olur:
- [C-1-1] Ekran rengi kalibre edilmiş olmalıdır.
- [C-1-2] SRGB renk gamını CIE 1931 xyY alanında tamamen kapsayan bir ekrana sahip olması gerekir.
- [C-1-3] CIE 1931 xyY alanında, gamının en az% 90'ı DCI-P3'e sahip bir ekranın olması ZORUNLUDUR.
- [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ı için desteğin reklamını YAPMALIDIR. - [C-SR]
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, çerçevenin "normal" olarak çalıştığı bir "uyumluluk modu" belirtir Bu mod, ekran boyutu bağımsızlığından önceki Android sürümleri için geliştirilmemiş olan eski uygulamaların avantajını sunar.
7.1.6. Ekran Teknolojisi
Android platformu, uygulamaların Android uyumlu bir ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. 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ı (PAR) OLMALIDIR. Diğer bir deyişle, piksel en boy oranı, 10 ila% 15 toleransla kareye (1.0) yakın bir yerde OLMALIDIR.
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 olmayan 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ının sunulması ZORUNLUDUR. 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 bölümü aracılığıyla sağlanan Ana Ekran, Son Kullanılanlar ve Geri işlevleri, Android gezinme paradigması açısından oldukça önemlidir. Bu yüzden cihaz uygulamaları da iyi bir uygulamadır:
- [C-0-1], bir kullanıcıya etkinliği olan yüklü uygulamaları,
ACTION=MAIN
veCATEGORY=LAUNCHER
veyaCATEGORY=LEANBACK_LAUNCHER
ile ayarlanmış yüklü uygulamaları, Televizyon cihazı uygulamaları için başlatması ZORUNLUDUR.<intent-filter>
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] erişimi varsa tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir olması ZORUNLUDUR.
- [C-1-2], her bir işlevin hangi tek bir işlemi tetikleyeceğini net bir şekilde göstermelidir. Düğmenin üzerinde görünür bir simge olması, ekranın gezinme çubuğu bölümünde 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östermek bu tür göstergelere örnek olarak verilebilir.
Cihaz uygulamaları:
- [SR], Android 4.0'dan itibaren işlem çubuğunu kullanarak kullanımdan kaldırıldığından Menü işlevi için giriş mekanizması sağlamaması ÖNEMLE ÖNERİLİ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ı ekranda 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]
targetSdkVersion
10'dan az olduğunda, fiziksel bir düğme, yazılım tuşu veya hareketler aracılığıyla Menü işlevini uygulamalarda kullanılabilir hale getirmesi 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:
- [C-4-1] Diğer gezinme tuşları erişilebilir olduğunda Asistan işlevini tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir hale getirmelidir.
- [SR] ANA SAYFA işlevine uzun basmanın bu belirtilen etkileşim olarak kullanılması Ö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ı, uygulamalarda kullanılamaz ve ekranın uygulamalar tarafından kullanılabilir olan bölümünü gizlememeli veya başka bir şekilde engellememelidir.
- [C-5-2] Bölüm 7.1.1'de belirtilen şartları karşılayan uygulamalar için ekranın bir kısmını kullanıma sunması ZORUNLUDUR.
- [C-5-3], uygulamanın
View.setSystemUiVisibility()
API yöntemiyle belirlediği işaretleri dikkate almalıdır. Böylece, ekranın farklı bir bölümü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 Evdeki hareketi tanıma alanını bildirmek için kullanılmalıdır. - [C-6-2]
View#setSystemGestureExclusionRects()
aracılığıyla ön plan uygulaması tarafından sağlanan,WindowInsets#getMandatorySystemGestureInsets()
dışında bir hariç tutma düzenlemesi içinde başlayan ancakWindowInsets#getMandatorySystemGestureInsets()
dışında kalan hareketlere,View#setSystemGestureExclusionRects()
belgelerinde 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önderilmişse sistem hareketi için dokunmalar kesilmeye başladığında ön plan uygulamasına birMotionEvent.ACTION_CANCEL
etkinliği GÖNDERMELİDİR. - [C-6-4] kullanıcının ekran, düğme tabanlı bir gezinmeye (örneğin, Ayarlar'dan) geçiş yapması için olanak ZORUNLUDUR.
- Ana Ekran işlevini, ekranın mevcut 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 bırakmadan önce basılı tutma işlevi olarak SUNMALISINIZ.
WindowInsets#getMandatorySystemGestureInsets()
içinde başlayan hareketler,View#setSystemGestureExclusionRects()
üzerinden ön plan uygulamasının 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 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 yukarıda belirtilen panelleri çağıracağına ve dolayısıyla Geri'ye gerek olmadığına dair net ve kalıcı bir görsel işaretlere sahip olarak ekranın 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 fazlasını KULLANMAMALIDIR.
- [C-7-3] Ön plan uygulamasında
View.SYSTEM_UI_FLAG_IMMERSIVE
veyaView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
işaretleri ayarlandığında, kenarlardan kaydırma işleminin SDK'daki AOSP'de uygulandığı şekilde davranması ZORUNLUDUR. - [C-7-4] Ön plan uygulamasında
View.SYSTEM_UI_FLAG_IMMERSIVE
veyaView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
işaretleri ayarlanmışsa kullanıcı, AOSP'de uygulanan sistem çubukları (gezinme ve durum çubuğu) içerene kadar özel kaydırılabilir sistem panellerinin gizlenmesi ZORUNLUDUR.
7.2.4. Dokunmatik Ekranlı Giriş
Android, dokunmatik ekran, dokunmatik alan ve sahte dokunmatik giriş cihazı gibi çeşitli işaretçi giriş sistemlerini destekler. Dokunmatik ekrana dayalı cihaz uygulamaları, kullanıcının ekrandaki öğeleri doğrudan değiştiriyor izlenimi vereceği bir ekranla ilişkilendirilir. Kullanıcı ekrana doğrudan dokunduğundan, sistem, manipüle edilen nesneleri göstermek için herhangi bir ek ücret gerektirmez.
Cihaz uygulamaları:
- Bir tür işaretçi giriş sistemine (fare gibi veya dokunmaya benzer) 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ı Bildirmelidir.
Cihaz uygulamaları, birincil Android uyumlu ekrana birden fazla dokunmayı izleyebilen bir dokunmatik ekran içeriyorsa:
- [C-2-1], cihazdaki dokunmatik ekranın türüne karşılık gelen uygun özellik işaretlerini
android.hardware.touchscreen.multitouch
,android.hardware.touchscreen.multitouch.distinct
,android.hardware.touchscreen.multitouch.jazzhand
Bildirmelidir.
Cihaz uygulamaları, birincil Android uyumlu ekrana giriş için fare veya izleme topu gibi (yani ekrana doğrudan dokunmamak) bir harici giriş cihazı gerektiriyorsa 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 yönlendiren bir fare veya uzaktan kumanda, dokunmaya yaklaşır ancak önce kullanıcının üzerine gelmesini veya odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi, jiroskop işaretçisi, kontrol çubuğu ve çok dokunmalı dokunmatik yüzey gibi çok sayıda giriş cihazı, sahte dokunma etkileşimlerini destekleyebilir. Android'de sabit bir android.hardware.faketouch özelliği bulunur. Bu özellik, dokunmatik olmayan girişlere (temel hareket desteği dahil) yeterince 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.
android.hardware.faketouch
için destek bildirilen cihaz uygulamaları:
- [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çinin ekranda aşağı veya yukarı gitme sırasında gerçekleşen durum değişikliğini belirten işlem koduyla BİLDİRMELİDİR.
- [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] bir zaman eşiği dahilinde, kullanıcıların ekrandaki bir nesneye iki kez dokunmasına olanak tanıyan işaretçi aşağı, yukarı işaretçi, aşağı ve ardından yukarıyı ve ardından ekrandaki bir nesnedeki aynı yeri DESTEKLEMELİDİR.
- [C-1-5] İşaretçiyi ekranda rastgele bir nokta üzerinde aşağı doğru DESTEKLEMELİDİR. İşaretçinin ekranda rastgele bir noktaya hareket etmesi ve ardından yukarıya doğru işaretçi hareket etmesi gerekir. Bu şekilde kullanıcılar dokunarak sürüklemeyi emüle edebilir.
- [C-1-6] İşaretçiyi aşağı doğru desteklemeli, sonra da kullanıcıların nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ardından işaretçiyi ekranda yukarıya taşımasına izin vermelidir. Bu özellik, kullanıcının ekrandaki bir nesneyi hızla kaydırmasına olanak tanır.
android.hardware.faketouch.multitouch.distinct
için destek bildirilen cihaz uygulamaları:
- [C-2-1],
android.hardware.faketouch
için destek bildirmeli. - [C-2-2] İki veya daha fazla bağımsız işaretçi girişinin ayrı şekilde izlenmesini DESTEKLEMELİDİR.
android.hardware.faketouch.multitouch.jazzhand
için destek bildirilen cihaz uygulamaları:
- [C-3-1],
android.hardware.faketouch
için destek beyanı ZORUNLUDUR. - [C-3-2] 5'in ayrı takibini (parmak ellerini takip etme) veya daha fazla işaretçi girişini tamamen bağımsız olarak 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) |
Ana Sayfa1 | 0x0c 0x0223 | KEYCODE_HOME (3) |
Geri1 | 0x0c 0x0224 | KEYCODE_BACK (4) |
1 KeyEvent
2 Yukarıdaki HID kullanımları bir Oyun Kumandası CA (0x01 0x0005) içinde belirtilmelidir.
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ğeri 1 ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını belirtir.
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 |
EKS_X Eksen_Y |
Sağ kontrol çubuğu |
0x01 0x0032 0x01 0x0035 |
EKST_Z Eksen_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 hakkındaki Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.
Cihaz uygulamaları:
- [C-0-1],
android.content.pm.PackageManager
sınıfına göre sensörlerin varlığını veya yokluğunu doğru şekilde Bildirmelidir. - [C-0-2], desteklenen sensörlerin
SensorManager.getSensorList()
ve benzer yöntemler aracılığıyla 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 dinleyicileri kaydetmeye çalıştığında
true
veyafalse
uygun şekilde döndürülmelidir; ilgili sensörler mevcut olmadığında sensör dinleyicileri çağrılmamalıdır 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 dokümanlarında 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 aktifken maksimum 0 ms'lik bir istenen gecikmeyle sensör akışı için maksimum 100 milisaniye + 2 x sample_time değerinde sensör verilerini rapor etmelidir. Bu gecikme, filtreleme gecikmelerini içermez.
- [C-1-3], ilk sensör örneğinin, etkinleştirilmekte olan sensörün 400 milisaniye + 2 * sample_time içinde raporlanması ZORUNLUDUR. 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 düzenli olarak %3'ün altında bir ses dalgalanmasına sahip olması GEREKİ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 dokümanlarında tanımlandığı gibi, etkinliğin gerçekleştiği ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edildiği nanosaniye cinsinden etkinlik zamanını bildirmelidir.
- [C-SR] Zaman damgası senkronizasyon hatasının 100 milisaniyenin altında olması ÖNEMLE ÖNERİLİR ve zaman damgası senkronizasyon hatasının 1 milisaniyenin altında olması GEREKİR.
- Birden fazla sensör etkinleştirildiğinde, güç tüketimi, her bir sensörün bildirilen güç tüketiminin toplamını AŞAMAMALIDIR.
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ışı 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 raporlamalıdır.
Bazı sensör türleri kompozittir. Diğer bir deyişle, başka bir veya daha fazla sensörün sağladığı verilerden elde edilebilir. (Örnek olarak yön sensörü ve doğrusal ivme sensörü verilebilir.)
Cihaz uygulamaları:
- Bu sensör türleri, sensör türleri bölümünde açıklandığı gibi, ön koşul niteliğindeki fiziksel sensörleri içerdiklerinde KULLANILMALIDIR.
Cihaz uygulamaları bir kompozit sensör içeriyorsa:
- [C-2-1] sensörü, birleşik sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulaması 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 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 bunlar:
- [C-SR] İ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 aynı hizada ve tutarlı kalır.
7.3.1. İvme ölçer
Cihaz uygulamaları:
- [C-SR] 3 eksenli ivme ölçer içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [C-1-1] En az 50 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [C-1-2]
TYPE_ACCELEROMETER
sensörünü uygulamalı ve bildirmeli. - [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 itibaren yer çekiminin dört katını(4 g) veya daha fazlasını ölçebilmesi ZORUNLUDUR.
- [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.
- [SR],
TYPE_SIGNIFICANT_MOTION
kompozit sensörünü uygulamak için ÖNEMLE ÖNERİLİR. TYPE_ACCELEROMETER_UNCALIBRATED
sensörünün uygulanması ve bildirilmesi için [SR] Şiddetle ÖNERİLİR. Android cihazların bu gereksinimi karşılaması ÖNEMLE ÖNERİLİR. Bu sayede, GEREKLİ hale getirilebilecek gelecekteki platform sürümlerine geçilebilir.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.- Maksimum 200 Hz'e kadar olan etkinlikler Bildirilmelidir.
- Çözünürlüğü en az 16 bit olmalıdır.
- Kullanım sırasında özelliklerin yaşam döngüsü içinde değişip dengelenmesi durumunda kullanım sırasında kalibre edilmesi gerekir. Ayrıca, cihazı yeniden başlatma işlemleri arasında dengeleme parametrelerini korumak gerekir.
- Sıcaklık dengelemenin yapılması GEREKİR.
Cihaz uygulamaları 3 eksenli ivme ölçer ve TYPE_SIGNIFICANT_MOTION
, TYPE_TILT_DETECTOR
, TYPE_STEP_DETECTOR
, TYPE_STEP_COUNTER
kompozit sensörlerinden herhangi biri uygulanmışsa:
- [C-2-1] Bu cihazların güç tüketimlerinin 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 OLMALIDIR.
Cihaz uygulamaları 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü içeriyorsa:
- [C-3-1]
TYPE_GRAVITY
veTYPE_LINEAR_ACCELERATION
kompozit sensörlerini uygulaması ZORUNLUDUR. - [C-SR]
TYPE_GAME_ROTATION_VECTOR
kompozit sensörünü uygulamak için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü ve manyetometre sensörü içeriyorsa:
- [C-4-1] bir
TYPE_ROTATION_VECTOR
kompozit sensör uygulaması ZORUNLUDUR.
7.3.2. Manyetometre
Cihaz uygulamaları:
- [C-SR] 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 raporlayabilmeli ve en az 50 Hz'e kadar olan etkinlikleri raporlamalıdır.
- [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] manyetometreyi dinamik (akımla oluşturulan) ve statik (mıknatıstan kaynaklanan) manyetik alanlardan uzağa yerleştirerek [C-1-5]'in sert demir ofset değerinin 700 μT'den az olması ve 200 μT'nin altında bir değere 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 yangısını dengelemeyi desteklemeli ve cihazın yeniden başlatılması 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 başına hesaplanmış olarak (1,5 μT'den fazla olmayan) standart bir sapma OLMALIDIR; 0,5 μT'den büyük olmayan bir standart sapmaya sahip olmalıdır.
- [C-SR]
TYPE_MAGNETIC_FIELD_UNCALIBRATED
sensörünün uygulanması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları 3 eksenli 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, toplu mod için 10 Hz'de kaydedildiğinde 3 mW'dan az güç tüketmelidir.
7.3.3. GPS
Cihaz uygulamaları:
- [C-SR] GPS/GNSS alıcısı içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve yeteneği uygulamalara android.hardware.location.gps
özellik bayrağı aracılığıyla bildiriyorsa:
- [C-1-1],
LocationManager#requestLocationUpdate
üzerinden istendiğinde en az 1 Hz konum çıkışlarını DESTEKLEMELİDİR. - [C-1-2] 0,5 Mb/sn veya daha hızlı veri hızına sahip 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ın kapanmasından sonra 5 saniye içinde açık gökyüzünde konumunu belirlemesi ZORUNLUDUR.
-
Konum belirlendikten sonra açık gökyüzü koşullarında, sabit durumdayken veya saniye başına 1 metreden daha düşük hızla hareket ederken:
- [C-1-3] 20 metre içindeki konumu ve saniyenin en az% 95'inde hızı 0,5 metre içinde belirleyebilmelidir.
- [C-1-4] Bir takımyıldıza ait en az 8 uyduyu
GnssStatus.Callback
aracılığıyla aynı anda takip edip rapor etmelidir. - Birden fazla takımyıldızdan en az 24 uyduyu aynı anda izleyebilmeli (ör. GPS + Glonass, Beidou, Galileo'dan en az biri).
- [C-SR] Acil durum telefon araması sırasında GNSS Konum Sağlayıcı API'leri üzerinden normal GPS/GNSS konum çıkışları sunmaya devam etmek için ÖNEMLE ÖNERİLİR.
- [C-SR] SBAS hariç olmak üzere, izlenen tüm takım yıldızlardan GNSS ölçümlerinin raporlanması ÖNERİLİR (GnssStatus mesajlarında bildirildiği gibi).
- [C-SR] AGC'nin ve GNSS ölçümünün sıklığının bildirilmesi için ÖNEMLE ÖNERİLİR.
- [C-SR] 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] GPS/GNSS kullanılarak hesaplanan bir konum henüz raporlanmamış olsa bile GNSS ölçümlerini bulunur bulunmaz raporlanması ÖNEMLE ÖNERİLİR.
- [C-SR] GNSS sözde aralıklarının ve yapay aralık oranlarını raporlamak için ÖNEMLE ÖNERİLİR. Konum belirlendikten sonra açık gökyüzü koşullarında, 20 metrelik bir karede 0,2 metreden daha düşük bir ivmeyle sabit veya hareket halindeyken 20 metre içinde konumun ve saniyede en az% 0,2 metre içinde hızın hesaplanması yeterlidir.
7.3.4. Jiroskop
Cihaz uygulamaları:
- [C-SR] Jiroskop sensörü içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [C-1-1] En az 50 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
- [C-1-2]
TYPE_GYROSCOPE
sensörünü uygulaması ZORUNLUDUR. AyrıcaTYPE_GYROSCOPE_UNCALIBRATED
sensörünü uygulaması da ÖNERİLİR. - [C-1-4] çözünürlüğünün 12 bit veya daha yüksek olması ve 16 bit veya daha yüksek çö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 (Hz başına varyans veya rad^2 / s) üzerinde bir varyans OLMALIDIR. Varyansın, örnekleme hızıyla birlikte değişmesine izin verilir, ancak bu değerle sınırlandırılması ZORUNLUDUR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz, 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
- [SR] Cihaz oda sıcaklığında hareketsizken kalibrasyon hatasının 0,01 rad/sn'den düşük olması ÖNEMLE ÖNERİLİR.
- Maksimum 200 Hz'e kadar olan etkinlikler Bildirilmelidir.
Cihaz uygulamaları 3 eksenli jiroskop, ivme ölçer sensörü ve manyetometre sensörü içeriyorsa:
- [C-2-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-3-1]
TYPE_GRAVITY
veTYPE_LINEAR_ACCELERATION
kompozit sensörlerini uygulaması ZORUNLUDUR. - [C-SR]
TYPE_GAME_ROTATION_VECTOR
kompozit sensörünü uygulamak için ÖNEMLE ÖNERİLİR.
7.3.5. Barometre
Cihaz uygulamaları:
- [C-SR] 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.
- [SR] 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ı gerekir (deniz seviyesinde yaklaşık 200 metrelik 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 olarak ö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.
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 bunlar:
- [C-1-1], ekranla aynı yöndeki bir nesnenin yakınlığını ölçmesi ZORUNLUDUR. Diğer bir deyişle, yakınlık sensörünün ekrana yakın nesneleri algılayacak şekilde Yönde olması ZORUNLUDUR, çünkü bu sensör türünün birincil amacı, kullanıcı tarafından kullanılan bir telefonu algılamaktır. Cihaz uygulamaları, başka bir yöne sahip yakınlık sensörü içeriyorsa bu sensöre bu API üzerinden ERİŞİLEMEMELİDİR.
- [C-1-2] 1 bit veya daha yüksek doğrulukta olması ZORUNLUDUR.
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
DESTEKLEMELİDİR. - Ölçüm gürültüsünün 400 μg/abilen Hz'in üzerinde olması ZORUNLUDUR.
- Bu sensörün uyandırılmadan ve en az 3.000 sensör olayına sahip arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
- Toplu işlem güç tüketiminin 3 mW'dan düşük olmaması ZORUNLUDUR.
- [C-SR] Nyquist frekansının en az% 80'inde 3 dB ölçüm bant genişliğine ve bu bant genişliği dahilinde beyaz gürültü spektrumuna sahip olması ÖNEMLE ÖNERİLİR.
- Oda sıcaklığında test edilen rastgele hızda rastgele yürüyüş hızı 30 μg'nin Vazgeçilmez'den az olması gerekir.
- 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.
- Eksenler arası hassasiyeti < Eksenler arası hassasiyette % 2,5 ve değişim < Cihazın çalışma sıcaklığı aralığında% 0,2.
-
[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
DESTEKLEMELİDİR. - 0,014°/s/çalışmasının ölçüm paraziti olması ZORUNLUDUR.
- [C-SR] Nyquist frekansının en az% 80'inde 3 dB ölçüm bant genişliğine ve bu bant genişliği dahilinde 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 Vazgeçilmez 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.
- Eksenler arası hassasiyeti < %4,0 ve eksenler arası hassasiyet değişimi < Cihazın çalışma sıcaklığı aralığında% 0,3.
-
[C-2-4],
TYPE_GYROSCOPE
ile aynı kalite şartlarına 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 uyandırılmadan ve en az 600 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
- [C-SR] 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 uyandırılmadan ve en az 300 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip 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 hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha 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 uyandırılmadan ve en az 100 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
- Güç tüketimi, cihaz hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha 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 hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha 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 hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha 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ğe ait etkinlik zaman damgası birbirinden en fazla 0,25 milisaniye uzakta OLMALIDIR.
- [C-2-14] Jiroskop sensör etkinliği zaman damgalarının kamera alt sistemiyle aynı zaman tabanında ve hatadan en fazla 1 milisaniye uzakta olması gerekir.
- [C-2-15], yukarıdaki fiziksel sensörlerden herhangi birinde veri bulunan verileri uygulamaya takiben 5 milisaniye içinde uygulamalara örnekler iletmelidir.
- [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz statikken 0,5 mW'tan, cihaz hareket ederken ise 2,0 mW'dan yüksek bir güç tüketimi SAĞLANMAMALIDIR:
-
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 en az 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ğinin ve doğrudan rapor ücretlerinin destek 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örlerde iki sensör doğrudan kanal türünden en az birini DESTEKLEMELİDİR.
- Aşağıdaki türlerdeki birincil sensör (uyandırma dışı varyant) için sensör doğrudan kanalı üzerinden olay raporlamasının DESTEKLENMELİDİ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ü dokümanlarına 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 varsayılan olarak Sınıf 1 olarak sınıflandırılır ve Sınıf 2 veya Sınıf 3 olarak sınıflandırılmak istediklerinde aşağıda açıklanan ek şartları karşılamaları gerekir. Hem 2. Sınıf hem de 3. Sınıf biyometriye sahip olan ek özellikler, aşağıda ayrıntılı bir şekilde açıklanmıştır.
Cihaz uygulamaları; android.hardware.biometrics.Biometrics.BiometricManager, android.hardware.biometrics.BiometricPrompt ve android.provider.Settings.ACTION_BIOMETRIC_ENROLL aracılığıyla bir biyometrik sensörün üçüncü taraf uygulamalarına sunulmasını sağlıyorsa aşağıdaki işlevler:
- [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. Buna karşılık, 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ı sabitleri KOŞULMAMALIDIR veya TANIMLANMAMALIDIR.
- [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 gösterilmesi 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] 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] İşletim sisteminin veya çekirdek güvenlik ihlalinin, taklit edememesi için işlemin güvenli hale getirilmesini sağlamanız ÖNEMLE ÖNERİLİR. Örneğin, fiziksel bir düğmeye dayalı onaylama işleminin, bir güvenli öğenin (SE) yalnızca giriş amaçlı genel amaçlı giriş/çıkış (GPIO) pim üzerinden yönlendirildiği ve fiziksel bir düğmeye basma dışında hiçbir şekilde sağlanmadığı anlamına gelir.
- [C-5-2] Ek olarak, uygulamaların oturum açma akışları için kullanacak şekilde ayarlayabileceği setConfirmationRequired (boole) parametresine karşılık gelen bir örtülü kimlik doğrulama akışı(onay adımı olmadan) uygulaması ZORUNLUDUR.
Cihaz uygulamalarında birden fazla biyometrik sensör varsa:
- [C-SR] 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 bunlardan 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 BIOMETRIC_STRONG gerektirdiğinde 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ü Sınıf 1 (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 sahte kabul oranlarının% 7'nin üzerinde olması halinde bu modun etkinleştirilmesinin risklerini açıkça belirtmesi ZORUNLUDUR.
- [C-1-3] Biyometrik doğrulama için beş yanlış denemeden sonra en az 30 saniye boyunca hız sınırlaması DENEMELERİ GEREKİR. Yanlış deneme, kayıtlı biyometri ile eşleşmeyen yeterli yakalama kalitesine (
BIOMETRIC_ACQUIRED_GOOD
) sahip bir denemedir. - [C-1-4] Kullanıcının mevcut kimlik bilgisini (TEE tarafından korunan PIN/desen/şifre) onaylaması veya yeni bir cihaz kimlik bilgisi (PIN/desen/şifre) eklemesi yoluyla bir güven zinciri oluşturmadan yeni biyometrilerin eklenmesinin önlenmesi ZORUNLUDUR; Android Açık Kaynak Projesi'nin uygulanması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
- [C-1-5] Bir kullanıcının hesabı kaldırıldığında, kullanıcıya ait tüm tanımlanabilir biyometrik verilerin tamamen kaldırılması (fabrika ayarlarına sıfırlama işlemi dahil) 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
) uygun olması gerekir. - [C-1-7], Android sürüm 10 ile başlatılan yeni cihazlarda en fazla 24 saatte bir, önceki Android sürümünden yeni sürüme geçen cihazlarda ise 72 saatte bir veya daha kısa bir süre içinde, önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için kullanıcıyı sorgulamalıdır.
-
[C-1-8], aşağıdakilerden birini yaptıktan sonra önerilen birincil kimlik doğrulaması (ör. PIN, desen, şifre) için kullanıcıyı zorlayın:
- 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.
Önceki bir Android sürümünden cihazların yükseltilmesi, C-1-8'den muaf tutulabilir. * [C-SR] Yeni cihazlarda [C-1-7] ve [C-1-8]'de belirtilen kısıtlamaları uygulamak için Android Açık Kaynak Projesi tarafından sağlanan çerçevedeki mantığı kullanması ÖNEMLE ÖNERİLİR. * [C-SR] Cihazda ölçülen yanlış ret oranının %10'dan az olması ÖNEMLE ÖNERİLİR. * [C-SR] Kayıtlı her biyometri için, biyometrinin algılandığı andan ekranın kilidi açılana kadar ölçülen 1 saniyeden az gecikme olması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları bir biyometrik sensörü Sınıf 2 (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] Android Biyometri Test Protokolleri tarafından yapılan ölçümlere göre adres sahteciliği ve sahtecilik konulu kabul oranının% 20'den yüksek olmaması ZORUNLUDUR.
- [C-2-3] Biyometrik eşleştirmenin, güvenilir yürütme ortamı (TEE) gibi Android kullanıcısı veya çekirdek alanı dışındaki izole bir yürütme ortamında ya da izole yürütme ortamına yönelik güvenli kanala sahip bir çipte gerçekleştirmesi ZORUNLUDUR.
- [C-2-4], Android Açık Kaynaklı Proje sitesindeki uygulama yönergelerinde belgelendiği gibi, izole yürütme ortamı veya izole yürütme ortamına güvenli kanalı olan bir çip dışında toplanamaz, okunamayacak veya değiştirilemeyecek şekilde tüm tanımlanabilir verilerin şifrelenmesine ve kriptografik olarak doğrulanması ZORUNLUDUR.
- [C-2-5] Kamera tabanlı biyometri için biyometrik kimlik doğrulama veya kayıt işlemi yapılır:
- Kameranın, izole yürütme ortamı veya izole yürütme ortamına giden güvenli kanala sahip bir çip dışında kamera çerçevelerinin okunmasını veya değiştirilmesini önleyen bir modda çalıştırılması 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, bağımsız 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 bağlamı dışında Uygulama İşleyen'e şifrelenmemiş erişime İZİN VERİLMEMELİDİR.
-
[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, kullanıcının kimliğini doğru bir şekilde doğrulamak için verilerin doğrudan yerleştirilmesine izin verememelidir.
Daha eski bir Android sürümünde sunulan cihaz uygulamaları, sistem yazılımı güncellemesi yoluyla C-2-8 şartını karşılayamıyorsa bu şarttan muaf tutulabilir.
-
[C-SR] Tüm biyometrik yöntemler için canlılık algılama ve yüz biyometrisi için dikkat algılama özelliğini içermesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları bir biyometrik sensörü Sınıf 3 (eski adıyla Güçlü) olarak değerlendirmek istiyorsa:
- [C-3-1], [C-1-7] ve [C-1-8] hariç yukarıdaki Sınıf 2'nin tüm şartlarını karşılamalıdır. Önceki bir Android sürümünden cihazların yükseltilmesi C-2-7'den muaf tutulmaz.
- [C-3-2] Donanım destekli bir anahtar deposu uygulaması ZORUNLUDUR.
- [C-3-3] Android Biyometri Test Protokolleri tarafından yapılan ölçümlere göre adres sahteciliği ve sahtecilik konulu kabul oranının% 7'nin üzerinde olmaması ZORUNLUDUR.
- [C-3-4] 72 saatte bir veya daha kısa bir sürede bir kullanıcıyı önerilen birincil kimlik doğrulaması (ör. PIN, desen, şifre) için sınaması ZORUNLUDUR.
7.3.12. 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.13. 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 olmak üzere) 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.4. Veri Bağlantısı
7.4.1. Telefon Hizmeti
Android API'ları tarafından kullanılan "telefon" ve bu dokümanda özellikle, bir GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanımla ilgilidir. 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 işaretlerini teknolojiye göre beyan etmelidir. - [C-1-2] bu teknolojiye yönelik API için tam destek uygulaması ZORUNLUDUR.
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],
EuiccManager API
'ın eksiksiz bir şekilde uygulanması ZORUNLUDUR.
7.4.1.1. Numara Engelleme Uyumluluğu
Cihaz uygulamaları android.hardware.telephony feature
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] "BlockedNumberProvider" içindeki bir telefon numarasından gelen tüm çağrıları ve mesajları engellemelidir Google Trendler'i kullanabilirsiniz. Bunun tek istisnası, numara engellemenin SDK dokümanlarında açıklandığı gibi geçici olarak kaldırılmasıdır.
- [C-1-4], engellenen bir arama için platform çağrı kaydı sağlayıcısına YAZMAMALIDIR.
- [C-1-5], engellenen bir mesaj için Telefon hizmeti sağlayıcısına YAZMAMALIDIR.
- [C-1-6],
TelecomManager.createManageBlockedNumbersIntent()
yönteminin döndürdüğü niyetle açılan bir engellenen sayılar yönetimi kullanıcı arayüzü uygulaması ZORUNLUDUR. - [C-1-7] Android platformu birincil kullanıcının cihazdaki telefon hizmetleri üzerinde tam kontrole sahip 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.
- Cihaz Android 7.0 sürümüne güncellendiğinde, engellenen numaraları sağlayıcıya taşımanız GEREKİR.
7.4.1.2. Telekom API'sı
Cihaz uygulamaları android.hardware.telephony
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 görüşmedayken gelen aramayı kabul etmeli veya reddetmelidir. - [C-1-3] InCallService kullanan bir uygulamaya sahip olması ZORUNLUDUR.
-
[C-SR] Gelen aramayı yanıtlarken devam eden aramadan çıkılacağı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] Üçüncü taraf uygulaması,
PhoneAccount
öğesindekiEXTRA_LOG_SELF_MANAGED_CALLS
extras tuşunutrue
olarak ayarladığında, çağrı kaydı girişini ve çağrı kaydında bir üçüncü taraf uygulamasının adını gösteren varsayılan numara çevirici uygulamasının önceden yüklenmesi ÖNERİLİR. - [C-SR] 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 süre basıldığı algılandığında
Connection.onDisconnect()
numaralı telefonu arayın. - Gelen bir arama sırasında önemli etkinliğe kısa bir süre 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 ara. CallAudioState
için yoksayma durumunu değiştirin.
- Devam eden bir arama sırasında önemli etkinliğe kısa bir süre basıldığı algılandığında
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 aşağıdakiler dahil olmak üzere herhangi bir işlem sırasında mDNS paketlerini (224.0.0.251) Filtrelememelidir:
- Ekran etkin durumda olmadığında bile.
- Android Televizyon cihaz uygulamaları için, bekleme modundaki güçlerde bile.
- [C-1-5]
WifiManager.enableNetwork()
API yöntem çağrısını, uygulama trafiği için varsayılan olarak kullanılan vegetActiveNetwork
ya daregisterDefaultNetworkCallback
gibiConnectivityManager
API yöntemleri tarafından döndürülen etkin durumdakiNetwork
değişkeninin değiştirilmesi için yeterli bir gösterge olarak DEĞERLENDİRMEMELİDİR. Diğer bir deyişle, başka bir ağ sağlayıcısının (örneğin, mobil veri) sağladığı internet erişimini yalnızca kablosuz ağın internet erişimi sağladığını başarılı bir şekilde doğrularsa devre dışı SAĞLAYABİLİR. - [C-1-6]
ConnectivityManager.reportNetworkConnectivity()
API yöntemi çağrıldığında,Network
üzerinden internet erişimini yeniden değerlendirin ve değerlendirme sonucundaNetwork
adlı operatörün artık internet erişimi sağlamadığını belirlediğinde internet erişimi sağlayan başka bir ağa (ör. mobil veri) geçin. - [C-SR] Kaynak MAC adresinin ve yoklama isteği çerçevelerinin sıra numarasını rastgele hale getirmesi ÖNERİLİR. Bu işlemler, STA bağlantısı olmadan her taramanın başında bir kez yapılır.
- Bir taramadan oluşan her yoklama isteği çerçeveleri grubu tek bir tutarlı MAC adresi kullanmalıdır (MAC adresini tarama işleminin ortasında rastgele hale getirmemek gerekir).
- Yoklama isteği sıra numarası, bir taramada yoklama istekleri arasında normal şekilde (sıralı olarak) yinelenmelidir.
- Kontrol isteği sıra numarası, bir taramanın son yoklama isteği ile bir sonraki taramanın ilk yoklama isteği arasında rastgele bir değere sahip olmalıdır.
- [C-SR] Kontrol isteği çerçevelerinde yalnızca aşağıdaki öğelere izin vermek için STA bağlantısı kesildiğinde ÖNEMLE ÖNERİLİR:
- SSID Parametresi Grubu (0)
- DS Parametre Grubu (3)
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 [C-3-1] kablosuz güç tasarrufu modunu KAPATMAYALIDIR. - [C-3-2] Cihaz Kablosuz Düşük Gecikme Kilidi (
WIFI_MODE_FULL_LOW_LATENCY
) modundayken cihaz ile erişim noktası arasındaki ortalama gidiş dönüş gecikmesinin, Kablosuz Yüksek Perf Kilidi (WIFI_MODE_FULL_HIGH_PERF
) modu sırasındaki gecikmeden daha az olması ZORUNLUDUR. - [C-SR] Düşük Gecikme Kilidi (
WIFI_MODE_FULL_LOW_LATENCY
) algılanıp 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 ücretsiz destek SUNMALIDIR.
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], ilgili Android API'yi SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.
- [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.
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ştirilmişse:
- [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ı Wi-Fi erişim noktasından daha kötü olduğunda TDLS'nin biraz sezgisel olması ve TDLS'yi KULLANMAMALIDIR.
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] bir Aware aralığı işlemi devam etmiyorsa veya bir Aware veri yolu etkin değilse (veri yolu etkin olduğu sürece rastgele hale getirme beklenmez) 30 dakikadan uzun aralıklarla ve Kablosuz Aware özelliği etkinleştirildiğinde Wi-Fi Aware yönetim arayüzü adresini rastgele hale getirmesi ZORUNLUDUR.
Cihaz uygulamaları, Bölüm 7.4.2.5'te açıklandığı gibi Kablosuz Duyarlı 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, setMinReachMm , setMaxLengthMm ve onServiceExploreedWithinRange.
7.4.2.4. Kablosuz Ağ Şifre Noktası
Cihaz uygulamaları:
- Wi-Fi Passpoint desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Passpoint desteği içeriyorsa:
- [C-1-1], Passpoint ile ilişkili
WifiManager
API'lerini SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR. - [C-1-2] Genel Reklamcılık 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ı DESTEKLEMELİDİR.
Bunun aksine, cihaz uygulamaları kablosuz ağ Passpoint desteğini içermiyorsa:
- [C-2-1] Passpoint ile ilgili
WifiManager
API'leri uygulanırkenUnsupportedOperationException
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 bu 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 çekimi için kaynak MAC adresini rastgele hale getirmesi ZORUNLUDUR.
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 işlevi üçüncü taraf uygulamalarına sunuyorsa:
-
[C-1-1] SocketKeepAlive API'sini DESTEKLEMELİDİR.
-
[C-1-2] Kablosuz ağ üzerinde en az üç eşzamanlı keepalive yuvasını ve hücresel ağ üzerinde en az bir 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 bu işlevleri üçüncü taraf uygulamalarında kullanıma sunuyorsa:
- [C-1-1], WifiManager#isEasyConnectSupported() yönteminin
true
döndürülmesi ZORUNLUDUR.
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ği beyan ederse:
- [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
) beyan etmeli 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ümanında açıklandığı şekilde ETKİNLEŞTİRMELİDİR.
- [C-3-3], ScanFilter API sınıflarına yönelik 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 reklamcılığı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 kullanırken kullanıcı gizliliğini korumak için 15 dakikadan uzun olmayan bir Çözülebilir Özel Adres (RPA) zaman aşımı uygulamalı ve kullanıcı gizliliğini korumak amacıyla 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 ayarlanması 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 taraması için Bluetooth LE'yi kullanıyorsa:
- [C-4-1],
BluetoothAdapter.isBleScanAlwaysAvailable()
sistem API'si ü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'yi Kullanarak İşitme Cihazı Sesi Desteği başlıklı makalede açıklandığı gibi Bluetooth LE ve İşitme Cihazı Profili desteği içeriyorsa:
- [C-5-1], BluetoothAdapter.getProfileProxy(context, listener, BluetoothProfile.HEARING_AID) için
true
sonucunu döndürmelidir.
7.4.4. Near Field Communication
Cihaz uygulamaları:
- Near Field Communication (NFC) için 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 veri gösterimi biçimini temsil ettiği için
android.hardware.nfc
özelliğini beyan etmese 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 okuyabilmesi ve yazabilmesi ZORUNLUDUR:
- [C-1-2] Aşağıdaki NFC standartlarına göre bir NFC Forumu okuyucusu/yazarı (NFC Forumu teknik özelliği NFCForum-TS-DigitalProtocol-1.0 tarafından tanımlandığı şekilde) olarak hareket edebilmelidir:
- 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)
-
[SR] Aşağıdaki NFC standartlarını kullanarak ham verilerin yanı sıra NDEF mesajlarını da okuyup yazabilmesi Ö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çebilmeleri için bu gereksinimleri şimdi 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 Forumu 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 uygulamalarında 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 uygulaması ZORUNLUDUR.
Cihaz uygulamaları bu bölümde açıklandığı gibi genel NFC desteğini içeriyorsa ve okuyucu/yazar rolünde MIFARE teknolojisini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:
- [C-4-1], Android SDK'da belirtildiği şekilde ilgili Android API'lerini 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ğı türü 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 bir ağ standardı (Ethernet gibi) 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ğ yığını içermeli ve
java.net.Socket
ilejava.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.
- [C-0-6], IPv6 ağına bağlıyken üçüncü taraf uygulamalarının ağa doğrudan IPv6 bağlantısı SAĞLAMALI. Bu durumda herhangi bir adres veya bağlantı noktası çevirisi cihazda yerel olarak gerçekleşmelidir.
Socket#getLocalAddress
veyaSocket#getLocalPort
gibi yönetilen API'lerin vegetsockname()
ya daIPV6_PKTINFO
gibi NDK API'lerinin, aslında ağ üzerinde paket göndermek ve almak için kullanılan ve kaynak IP ve internet (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 ağ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 ve hücresel veri),
- Cihaz aynı anda birden fazla ağ türüne bağlandığında [C-4-1] her 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 ağları ifade eder.
Cihaz uygulamaları, android.webkit.Webview API
'ın eksiksiz bir şekilde uygulanmasını sağlıyorsa:
- [C-1-1]
ACTION_CAPTIVE_PORTAL_SIGN_IN
amacını işlemek için giriş portalı uygulaması sağlanmalıdır. Ayrıca, System APIConnectivityManager#startCaptivePortalApp(Network, Bundle)
çağrısında 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 bu 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ı, doğrulama amacıyla yönlendirme yapan bir portala giriş yaparken uygulamalar tarafından kullanılan (
ConnectivityManager.getActiveNetwork
,ConnectivityManager.registerDefaultNetworkCallback
tarafından döndürüldüğü 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 herhangi bir ağ olduğundan emin olması ZORUNLUDUR.
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:
- [SR] Veri tasarrufu modunu sağlamanız Ö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
İLE İLGİLİ YAYINLANMAMALIDIR.
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'si aracılığıyla numaralandırması ZORUNLUDUR. -
[C-1-2], UICC tabanlı güvenlik öğeleri içeren cihaz için
android.hardware.se.omapi.uicc
, eSE tabanlı güvenlik öğeleri içeren 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.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, aynı anda cihazdaki en büyük çözünürlüklü kamera sensörü tarafından üretilen resimlerin boyutuna eşit 3 RGBA_8888 bit eşlem ayırması; temel önizleme ve görüntü yakalamaya devam etmek için kameranın da açık olması gerekir.
- [C-1-3] Alıcı uygulamada
ACCESS_FINE_LOCATION
bulunmadığında resim meta verilerindeki kullanıcı konumunu, alıcı uygulamaya göndermeden önce, önceden yüklenmiş varsayılan kamera uygulaması işleme amaçlarıMediaStore.ACTION_IMAGE_CAPTURE
,MediaStore.ACTION_IMAGE_CAPTURE_SECURE
veyaMediaStore.ACTION_VIDEO_CAPTURE
'ın bu işlemden sorumlu olması ZORUNLUDUR.
7.5.1. Arka Kamera
Arka kamera, cihazın yan tarafında, ekranın karşısındaki kameradır. Yani, geleneksel bir kamera gibi cihazın uzak tarafındaki sahneleri görüntüler.
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ı YANMAMALIDIR. Bu kısıtlamanın, cihazdaki yerleşik 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 video konferans ve benzer uygulamalarda olduğu gibi genellikle kullanıcının görüntüsünü almak için kullanılan bir kamera.
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 bir ö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 uygulama tarafından belirtilen yöne göre yatay olarak yansıtılması ZORUNLUDUR. Buna karşılık, 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 istemediğinde önizlemenin cihazın varsayılan yatay ekseni boyunca yansıtılması ZORUNLUDUR. - [C-1-5], uygulama geri çağırma işlevinde döndürülen veya medya depolama alanına kaydedilen nihai hareketsiz görüntü ya da video akışlarını YAZMAMALIDIR.
- [C-1-6], yayın sonrası tarafından görüntülenen resmi, 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.) içerebilir.
Cihaz uygulamaları, kullanıcı tarafından döndürülebiliyorsa (örneğin, bir ivme ölçer ile 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
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ıyorsa USB Video Sınıfı'nı (UVC 1.0 veya üzeri) DESTEKLEMELİDİR.
- [C-1-3] Fiziksel bir 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 (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırmalarını DESTEKLEMELİDİR.
- Birden fazla kamerayı destekleyebilir.
- Kamera tabanlı video kodlamayı destekleyebilir.
Kamera tabanlı video kodlama destekleniyorsa:
- [C-2-1] Cihaz uygulaması için aynı anda kodlanmamış bir / MJPEG akışına (QVGA veya daha yüksek çözünürlük) erişilebilmesi 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 ise uygulamaya düşük düzeyli kamera kontrolü sunar. Bunlar arasında verimli sıfır kopyalı seri çekim/akış akışları ve kare başına pozlama, kazanç, beyaz dengesi kazanımları, renk dönüştürme, parazit giderme, keskinleştirme ve daha birçok özellik bulunur.
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ında, bu bölümde ve Android SDK'sında açıklandığı şekilde API'nin desteklenmeye devam etmesi ZORUNLUDUR.
Kullanımdan kaldırılan android.hardware.Kamera sınıfı ile yeni android.hardware.camera2 paketi arasındaki ortak özelliklerin tümünün 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 aynı olmalıdır. İki API'nin farklı anlamlarına bağlı özelliklerin, hızı veya kaliteyi eşleştirmesi zorunlu değildir ancak bunların mümkün olduğunca yakın eşleşmesi GEREKİR.
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. - Bir uygulama
android.hardware.Camera.PreviewCallback
örneği kaydettiğinde ve sistemonPreviewFrame()
yöntemini çağırdığında ve önizleme biçimi YCbCr_420_SP olduğunda [C-0-2] yine NV21 kodlama biçiminde OLMALIDIR. Bayttaki veriler[]onPreviewFrame()
içine aktarılır. 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 ZORUNLUDUR.) - [C-0-4],
android.request.availableCapabilities
ürünündeREQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE
özelliğini tanıtanandroid.hardware.camera2
cihazlar içinandroid.media.ImageReader
API üzerinden çıkış olarakandroid.hardware.ImageFormat.YUV_420_888
veandroid.hardware.ImageFormat.JPEG
biçimlerini desteklemelidir. - Cihazın donanımda otomatik odaklama veya başka özellikler içerip içermediğine bakılmaksızın [C-0-5] yine de Android SDK belgelerindeki Kamera API'sinin tamamını uygulaması ZORUNLUDUR. Örneğin, otomatik odaklama özelliği olmayan kameraların kayıtlı tüm
android.hardware.Camera.AutoFocusCallback
örneklerini çağırması ZORUNLUDUR (bunun, otomatik odaklama olmayan bir kamerayla alakası olmasa bile). Bunun ön kameralar için geçerli olduğunu unutmayın; Örneğin, ön yüzündeki kameraların çoğu 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
sınıfında 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 dikkate ALMAMALIDIR 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ık (HDR) görüntüleme teknikleri kullanılarak görüntü yakalamayı destekleyen cihaz uygulamalarında,Camera.SCENE_MODE_HDR
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 özelliği işaretlerini bildirmelidir. - [C-0-8],
android.hardware.camera2
ürününün ayrı kamera özelliklerini deandroid.request.availableCapabilities
özelliği aracılığıyla ve uygun özellik bayraklarını beyan etmelidir; Takılı kamera cihazlarından herhangi biri özelliği destekliyorsa özellik bayrağı TANIMLANMALIDIR. - Kamera tarafından yeni bir resim çekildiğinde ve resim medya mağazasına eklendiğinde [C-0-9]
Camera.ACTION_NEW_PICTURE
intent'ini yayınlamalıdır. - 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
niyetini yayınlamalıdır. - [C-0-11] Tüm kameralara desteği sonlandırılmış
android.hardware.Camera
API'si aracılığıylaandroid.hardware.camera2
API'si aracılığıyla da erişilebilmesi ZORUNLUDUR. - [C-0-12]
android.hardware.camera2
veyaandroid.hardware.Camera
API'lerde yüz geometrisinin, yüz cilt tonunun veya yüz cilt 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] Aynı yöne bakan birden fazla RGB kamerası olan cihazlarda, bu yöne bakan tüm RGB kameraları fiziksel alt cihaz olarak içeren
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
yeteneklerini listeleyen mantıksal bir kamera cihazının desteklenmesi ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, üçüncü taraf uygulamalarına özel bir kamera API'si sağlıyorsa:
- [C-1-1] bu tür bir kamera API'sini
android.hardware.camera2
API'sini kullanarak uygulaması ZORUNLUDUR. android.hardware.camera2
API'ye 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 yönlendirilmelidir. Yani, cihaz yatay yönde tutulduğunda, kameraların yatay yönde resim çekmesi GEREKİR. Bu, cihazın doğal yönü ne olursa olsun geçerlidir; Yani, yatay birincil cihazların yanı sıra dikey birincil cihazlar için de geçerlidir.
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'lık tek tek dosyaları indirebilmelidir.
7.6.2. Uygulama Paylaşılan Depolama Alanı
Cihaz uygulamaları:
- [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı SUNMALIDIR. Bu depolama alanı genellikle "paylaşılan harici depolama", "uygulama paylaşılan depolama" olarak da bilinir. veya "/sdcard" Linux yolunu kullanarak monte edildiğini unutmayın.
- [C-0-2], depolama alanının dahili depolama bileşeni veya çıkarılabilir depolama ortamında (ör. Güvenli Dijital kart yuvası) uygulanmış olmasından bağımsız olarak, varsayılan olarak, yani "kullanıma hazır" bir paylaşılan depolama biriminin eklenmesi gerekir.
- [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 durum haricinde, API düzeyi 29 veya üstünü hedefleyen tüm uygulamalar için kapsamlı depolama varsayılan olarak ETKİNLEŞTİRİLMELİDİR:
- Uygulama, manifest dosyasında
android:requestLegacyExternalStorage="true"
isteğinde bulunduğunda.
- Uygulama, manifest dosyasında
- [C-0-5], çağıran uygulamanın
ACCESS_MEDIA_LOCATION
iznine sahip olmadığı durumlar dışında,MediaStore
üzerinden erişilen 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ı.
Yukarıdaki gereksinimleri karşılamak için çıkarılabilir depolama alanı kullanılan cihaz uygulamalarında şunlar geçerli olur:
- [C-1-1] Yuvada depolama ortamı olmadığında kullanıcıyı uyaran bir bildirim mesajı veya pop-up kullanıcı arayüzü GEREKİR.
- [C-1-2] FAT biçiminde bir depolama ortamı (ör. SD kart) veya kutu üzerinde ve satın alma sırasında mevcut olan ve ayrıca satın alınması gereken diğer materyallerde yer alması 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 uygulamanın 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 TAŞI VERMELİDİR. - USB yığın depolama birimi KULLANABİ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:
- [SR] Kabul edilebilir depolama alanının yanlışlıkla kesilmesi veri kaybına veya bozulmaya neden olabileceğinden, bu depolama alanının uzun ömürlü sabit bir konumda uygulanması ÖNEMLE ÖNERİLİR.
Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya diğer koruyucu kapaklar gibi uzun vadede sabit bir yerdeyse cihaz uygulamaları şunlardır:
- [SR] Kabul edilebilir depolama alanı uygulamanız Ö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.
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 BİLDİRMELİDİR. - [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 ALGILAMALIDIR.
- [SR] 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.
- [SR] 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ürmenin etkinleştirilmesi gerekir. Böylece, cihaz alttaki bağlantı noktası olacak şekilde doğrultulduğunda ekran doğru şekilde çizilebilir. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçebilmesi için bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR.
- [SR] USB Pil Şarj özelliği, düzeltme 1.2'de belirtildiği gibi, HS sesi ve trafik sırasında 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.
- [SR] Vbus voltajını varsayılan düzeylerin ötesinde değiştiren özel şarj yöntemlerini desteklememesi veya bu şekilde havuz/kaynak rollerini değiştirmesi, standart USB Güç Aktarımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunlarına neden olabilir. Bu özellik "ŞİMDİ ÖNERİLİR" 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.
- [SR] Type-C USB ve USB ana makine modunu desteklediğinde veri ve güç rolü değişimi için Güç Aktarımı'nı desteklemesi Ö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 beyanı ZORUNLUDUR. - [C-2-2] USB yığın depolama sınıfının "android" dizesini içermesi ZORUNLUDUR USB yığın depolama alanının
iInterface
dizesi arayüz açıklamasının sonunda
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ı GEREKLİDİR. Diğer bir deyişle, şunlardan biri OLMALIDIR:
- Cihaz üzerinde C tipi bağlantı noktasına sahip olun veya cihazdaki ö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 cihaza sahip olun veya cihazdaki ö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] Android SDK dokümanlarında belirtildiği gibi USB ses sınıfının uygulanması ÖNEMLE ÖNERİLİR.
- Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini DESTEKLEMELİDİR; USB Type-C konnektörleri için USB Type-C Kablo ve Konnektör Spesifikasyonu Düzeltmesi 1.2 belgesinin Fesih Parametreleri bölümünde belirtildiği şekilde veya Mikro AB konnektörleri için USB Pil Şarj özellikleri, düzeltme 1.2'de belirtildiği şekilde Aşağı Akış Bağlantı Noktası(CDP) çıkış akım aralığı kullanılarak en az 1,5 A'lık bir akım kullanılması.
- USB Type-C standartları uygulanmalı ve desteklenmelidir.
Cihaz uygulamaları, ana makine modunu ve USB ses sınıfını destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-2-1] USB HID sınıfını 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 aşağıdaki gibi
KeyEvent
sabitleriyle 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ış tüm 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.
- [SR] DisplayPort'u desteklemesi ÖNERİLİR, USB SuperSpeed Veri Hızlarını DESTEKLEMELİDİR, veri ve güç rolü değiştirme için Güç Aktarımı'nı desteklemek ÖNERİLİR.
- [SR] USB Type-C Kablo ve Konnektör Spesifikasyonu Düzeltmesi 1.2 belgesindeki 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 Deneme.* modelini uygulamalısınız. Örneğin, bir avuç içi cihazda Try.SNK modelini uygulaması 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.
- [SR] Bölüm 7.8.3'te açıklandığı gibi ultrasona yakın kaydı desteklemeleri Ö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ı, USB ses sınıfı kullanan 4 iletkenli 3,5 mm ses jakı veya USB ana makine modu bağlantı noktası gibi ses çıkışı çevre birimi için bir hoparlör ya da 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 belirtilen ses çalma şartlarını karşılamalıdır.
- [C-1-3] Bölüm 5.6'da belirtilen ses gecikmesi şartlarını karşılamalıdır.
- [SR] Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın oynatmanın desteklenmesi Ö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 amacı doğrultusunda bir "çı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 ağ veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" olarak değerlendirilmez.
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] 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ıklarda 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 ile ses fişindeki toprak iletkenleri arasında bulunan aşağıdaki 3 eşdeğer empedans aralığı için anahtar kodlarını algılamayı ve 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 bunun için, fişteki tüm temas noktaları jaktaki ilgili segmentlerine dokunmalıdır. - [C-1-5] 32 ohm hoparlör empedansı üzerindeki çıkış voltajının en az 150 mV ±% 10'unu taşıyabilmesi ZORUNLUDUR.
- [C-1-6] 1,8 V ~ 2,9 V arasında bir mikrofon sapma voltajı OLMALIDIR.
- [C-1-7], mikrofon ile ses fişindeki toprak iletkenleri arasındaki eşdeğer empedans aralığının anahtar kodunu algılamalı ve bu koda eşlenmelidir:
-
110-180 ohm:
KEYCODE_VOICE_ASSIST
-
110-180 ohm:
- [C-SR] OMTP pin çıkış sırasına sahip ses fişlerini desteklemeleri için ÖNEMLE ÖNERİLİR.
- [C-SR] Mikrofonlu stereo kulaklıklardan gelen ses kayıtlarının desteklenmesi için ÖNEMLE ÖNERİLİR.
Cihaz uygulamalarında 4 iletkenli 3,5 mm ses jakı varsa ve mikrofon destekliyorsa ve android.intent.action.HEADSET_PLUG
cihazını ekstra değer mikrofonu 1 olarak ayarlayarak yayınlarsa:
- [C-2-1], takılı ses aksesuarındaki mikrofonun algılanmasını DESTEKLEMELİDİR.
7.8.2.2. Dijital Ses Bağlantı Noktaları
USB-C konnektörleri kullanan ve Android USB mikrofonlu kulaklık spesifikasyonunda tanımlandığı şekilde Android ekosistemindeki uygulama (USB ses sınıfı) ile mikrofonlu kulaklıklar ve diğer ses aksesuarlarıyla uyumlu olmak amacıyla.
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ı:
- Ultrasona yakın ses özelliği desteğini AudioManager.getProperty API'si aracılığıyla 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ığında 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'den 20 kHz'e kadar 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 sıfır arızayla tanımlanır. [OboeTester] (https://github.com/google/oboe/tree/master/apps/OboeTester) "Otomatik Glitch Testi"ni kullanarak test edin.
Test için doğrudan 3, 5 mm'lik jakda ve/veya USB-C - 3, 5 mm arasında 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 Bozukluk (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, "Sanal Gerçeklik" oluşturmak için API'ler ve olanaklar sunar (VR) uygulamaları (yüksek kaliteli mobil VR deneyimleri) Cihaz uygulamalarının bu API'leri ve davranışları doğru bir şekilde uygulaması GEREKİR.
7.9.1. Sanal Gerçeklik Modu
Android'de VR Modu desteği sunulur. Bu özellik, VR uygulamasında 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 desteklemesi için ÖNEMLE ÖNERİLİ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]
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
uygulaması ve mevcut EGL uzantıları listesinde uzantıları göstermek ZORUNLUDUR. - [C-1-8]
GL_EXT_multisampled_render_to_texture2
,GL_OVR_multiview
,GL_OVR_multiview2
,GL_EXT_protected_textures
işlemlerini uygulamalı ve uzantıları kullanılabilir GL uzantıları listesinde göstermelidir. - [C-SR]
GL_EXT_external_buffer
,GL_EXT_EGL_image_array
,GL_OVR_multiview_multisampled_render_to_texture
uygulamasının uygulanması ve uzantıları mevcut GL uzantıları listesinde gösterilmesi ÖNEMLE ÖNERİLİR. - [C-SR] Vulkan 1.1'i desteklemeleri Kesinlikle ÖNERİLİR.
- [C-SR]
VK_ANDROID_external_memory_android_hardware_buffer
,VK_GOOGLE_display_timing
,VK_KHR_shared_presentable_image
uygulamalarını uygulayıp mevcut Vulkan uzantıları listesinde göstermeniz ÖNEMLE ÖNERİLİR. - [C-SR]
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ıra 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 sanal gerçeklik içeriğinin iki oluşturma bağlamıyla, dönüşümlü olarak oluşturulması, hiçbir gözyaşı görüntüsü olmadan görüntülenir.
- [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 desteği uygulamalıdır. - [C-1-10]
AHardwareBuffer
'lar için,AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT
,AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE
,AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT
kullanım işaretlerinin herhangi bir kombinasyonuyla en azından şu biçimler için destek uygulaması ZORUNLUDUR:AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM
,AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM
,AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM
,AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT
. - [C-SR] Birden fazla katman ve C-1-10 maddelerinde belirtilen işaretler ve biçimlerle
AHardwareBuffer
öğelerinin ayrılmasını desteklemek için ÖNEMLE ÖNERİLİR. - [C-1-11] 30 fps'de ortalama 40 Mb/sn'de (30 fps-10 Mb/sn - 10 Mb/sn veya 20 fps 20 fps'de 20 fps'de 2 0 fps'de 40 Mb/sn) sıkıştırılmış olarak 30 fps'de en az 3840 x 2160 H.260 kod çözme işlemini desteklemelidir.
- [C-1-12] HEVC ve VP9'U DESTEKLEMELİDİR, ortalama 10 Mb/sn. olacak şekilde sıkıştırılmış 30 fps'de en az 1920 x 1.080 çözünürlüğün kodunu çözebilmeli ve 30 fps'de 10-8 ex4 Mb/sn.-00-80 Mb/sn.-20 Mb/sn'lik 0-8 e-posta değerlerinde 3840 x 2160'ın kodunu çözebilmelidir.
- [C-1-13],
HardwarePropertiesManager.getDeviceTemperatures
API'yi DESTEKLEMELİ ve deri sıcaklığı için doğru değerleri döndürmelidir. - [C-1-14] cihazınızın yerleşik bir ekranı olması ve çözünürlüğünün en az 1920 x 1080 olması ZORUNLUDUR.
- [C-SR] 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ılık içeren düşük kalıcılık modunu desteklemesi ZORUNLUDUR. 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] Yukarıda listelenen tüm Doğrudan Kanal Türleri için
TYPE_HARDWARE_BUFFER
doğrudan kanal türünü desteklemeleri konusunda ÖNEMLE ÖNERİLİR. - [C-1-21], bölüm 7.3.9'da belirtildiği gibi,
android.hardware.hifi_sensors
ürünü için jiroskop, ivme ölçer ve manyetometreyle ilgili şartları karşılamalıdır. - [C-SR]
android.hardware.sensor.hifi_sensors
özelliğini desteklemesi için ÖNEMLE ÖNERİLİR. - [C-1-22] uçtan uca hareket ile foton gecikmesi arasında 28 milisaniye'den uzun süre OLMAMALIDIR.
- [C-SR] Uçtan uca hareket ile foton gecikmesinin 20 milisaniyeyi aşmaması ÖNEMLE ÖNERİLİR.
- [C-1-23] ilk kare oranına sahip olmalıdır. Bu, siyahtan beyaza geçişten sonra ilk karede bulunan piksellerin parlaklığı ile sabit durumda beyaz piksellerin parlaklığı arasındaki orandır. Bu oran, en az %85'tir.
- [C-SR] İlk kare oranının en az %90 olması ÖNEMLE ÖNERİLİR.
- Ön plan uygulamasına özel bir çekirdek sağlayabilir ve en üst ön plan uygulamasına özel CPU çekirdeği 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
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ı şuradan edinilebilir:
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
API. Şartlar
ile başlayan her Android sürümü için medya performans sınıfı tanımlıdır.
R (sürüm 30). 0 özel değeri, cihazın
medya performansı sınıfı.
Cihaz uygulamaları,
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
, onlar:
[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] "Medya Performans Sınıfı" ile ilgili tüm koşulların karşılanması ZORUNLUDUR açıklandı bölüm 2.2.7'de bulabilirsiniz.
Cihaza özel bilgi için bölüm 2.2.7'ye bakın. gereksinimlerini karşılayı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 oyunlar için tutarlı bir kare hızı ve yanıt süreleri sağlamak üzere belirli minimum gereksinimler varsa 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 türüne bağlı olarak, aşağıdaki okuma ve yazma işlemleriyle ilgili olarak cihaz uygulamalarının 2. bölümünde 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ılarak ö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'lık 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 Nadir Uygulama Bekleme Paketi'nden daha zor kısıtlamalar uygulamayan özelliklerin kapsamını genişletiyorsa:
- [C-1-1]; tetikleme, bakım, uyandırma algoritmaları ve Uygulama Bekletme ile Doz güç tasarrufu modlarının genel sistem ayarlarının kullanımı için AOSP uygulamasından AYRICA ALMAMALIDIR.
- [C-1-2], Uygulama bekleme moduna yönelik olarak her bir paketteki uygulamalar için işlerin, alarmın ve ağın kısıtlanmasını yönetmek amacıyla genel ayarların kullanımına yönelik AOSP uygulamasından AYRICA ALMAMALIDIR.
- [C-1-3], Uygulamayı Beklemeye Alma özelliği için kullanılan Uygulama Bekleme Paketleri sayısı için AOSP uygulamasından farklı OLMAMALIDIR.
- [C-1-4] Güç Yönetimi'nde açıklandığı gibi Uygulama Bekleme Paketleri ve Doz'u uygulaması ZORUNLUDUR.
- Cihaz güç tasarrufu modundayken [C-1-5]
PowerManager.isPowerSaveMode()
boyuncatrue
geri dönmelidir. - [C-SR] Pil tasarrufu özelliğini etkinleştirmesi ve devre dışı bırakması için kullanıcıya ödeme yapılması ÖNERİLİR.
- [C-SR] Uygulama Bekletme ve Doz güç tasarrufu modlarından muaf olan tüm Uygulamaları görüntüleme olanağı sunması ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, AOSP'deki 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. cihazın fiziksel olarak 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) bu duruma girmelidir.
Cihaz uygulamaları, ACPI tarafından tanımlandığı şekilde 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 tutmak veya CPU'yuPARTIAL_WAKE_LOCK
tarihine kadar çalıştırmak için istekte bulunurken, kullanıcı C-1-1'de açıklandığı gibi, kullanıcı cihazı devre dışı bırakmaya yönelik 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 sinyallerini 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 modelini optimize edecek teşvikler ve araçlar sağlar.
Cihaz uygulamaları:
- [SR] Android Açık Kaynak Projesi sitesinde belirtildiği üzere, her bir donanım bileşeninin 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 güç profili sağlanması ÖNERİLİR.
- [SR] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden raporlamanız ÖNEMLE ÖNERİLİR.
- [SR] Her işlemin UID'sine göre CPU güç tüketimini bildirmeniz ÖNEMLE ÖNERİLİR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülünün uygulanması aracılığıyla bu gereksinimi karşılar. - [SR] Bu güç kullanımının uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla sağlanması 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 talep ettiğinde üst ön plan uygulamasına en az 30 dakika boyunca tutarlı bir performans düzeyi sunmalı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:
- Ön plandaki uygulama tarafından ayırtılabilecek en az bir tane özel çekirdek sağlanmalıdır.
Cihaz uygulamaları, en üstteki ön plan uygulaması için tek bir özel çekirdeğin ayrılmasını destekliyorsa:
- [C-2-1], ü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 kullanılan cihaz sürücülerinin özel çekirdeklerde çalışması için kullanılan cihazlar dışında hiçbir kullanıcı alanı işlemine izin VERMEMELİDİR, ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına izin SAĞLAYABİLİR.
Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:
- [C-3-1],
Process.getExclusiveCores()
API yöntemiyle boş bir liste döndürmesi ZORUNLUDUR.
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamaları:
-
[C-0-1] Android geliştirici dokümanlarındaki API'lerde yer alan Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli UYGULAMALIDIR.
-
[C-0-2], herhangi bir üçüncü taraftan/yetkililerden ek izin/sertifika gerektirmeden, kendinden imzalı uygulamaların yüklenmesini DESTEKLEMELİDİR. Özellikle, uyumlu cihazların aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını desteklemesi ZORUNLUDUR.
9.1. İzinler
Cihaz uygulamaları:
-
[C-0-1], Android geliştirici dokümanlarında tanımlandığı gibi Android izin modelini DESTEKLEMELİDİR. Özellikle, SDK belgelerinde açıklanan şekilde her bir iznin uygulanması ZORUNLUDUR; hiçbir izin çıkarılamaz, değiştirilemez veya yoksayılamaz.
-
Yeni izin kimliği dizelerinin
android.\*
ad alanında olmaması koşuluyla ek izinler ETABİ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ında ve her uygulama için açıkça izin verilenler listesine eklenmiş izinlerin alt kümesinde önceden yüklenmiş uygulamalara verilmelidir. AOSP uygulaması,etc/permissions/
yolundaki dosyalarda bulunan her bir uygulama için izin verilenler listesine eklenmiş izinleri okuyup kabul ederek vesystem/priv-app
yolunu ayrıcalıklı yol olarak kullanarak bu şartı karşılar.
Tehlikeli koruma seviyesi olan izinler, çalışma zamanında istenen izinlerdir. targetSdkVersion
içeren uygulamalar > 22 bunları çalışma zamanında isteyin.
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 ayrıca kullanıcının çalışma zamanında istenen izinleri yönetebileceği bir arayüz de sunmalısınız.
- [C-0-4] Her iki kullanıcı arayüzünün de yalnızca bir kez uygulanması ZORUNLUDUR.
- [C-0-5] Aşağıdaki durumlar haricinde, önceden yüklenmiş uygulamalara çalışma zamanında istenen izin VERMEMELİDİR:
- Kullanıcının izni, uygulama tarafından kullanılmadan önce alınabilir.
- Çalışma zamanı izinleri, önceden yüklenen uygulamanın varsayılan işleyici olarak ayarlandığı bir intent kalıbıyla ilişkilendirilir.
- [C-0-6]
android.permission.RECOVER_KEYSTORE
izninin yalnızca düzgün şekilde güvenliği sağlanmış bir Kurtarma Aracısı kaydeden sistem uygulamalarına verebilmesi GEREKİR. Düzgün bir şekilde güvenli hale getirilmiş bir Kurtarma Aracısı, cihaz dışındaki bir uzak depolama alanıyla senkronize edilen, kilit ekranı bilgi faktörüne yönelik kaba kuvvet saldırıları önlemek üzere Google Cloud Key Vault Hizmeti'nde açıklananlardan daha güçlü veya eşdeğer koruma özellikleriyle 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:
- 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 verileri olabilir.
- [C-0-9]
gerekir.
Örneğin,
TelephonyManager#getServiceState için
android.permission.ACCESS_FINE_LOCATION
gerekir.
İ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ığı şekilde izin verilenler listesine eklenene kadar yalnızca 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
).
Cihaz uygulamaları, kullanıcıya hangi uygulamaların ACTION_MANAGE_OVERLAY_PERMISSION
amacına yönelik etkinlik içeren diğer uygulamaların üzerine gelebileceğini seçme olanağını sunuyorsa:
- [C-2-1], başlatan uygulamadan veya sağladığı bilgilerden bağımsız olarak,
ACTION_MANAGE_OVERLAY_PERMISSION
amacı için intent filtreleri olan tüm etkinliklerin aynı kullanıcı arayüzü ekranına sahip olmasını ZORUNLUDUR.
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şlem içinde çalıştığı Android uygulaması korumalı alan modelini desteklemelidir.
- [C-0-2], uygulamaların Güvenlik ve İzinler referansında tanımlandığı gibi düzgün şekilde imzalanmış 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ımlandığı gibi Android dosya erişimi izinleri modelini DESTEKLEMELİDİR.
9.4. Alternatif Yürütme Ortamları
Cihaz uygulamalarının, Dalvik Yürütülebilir Biçim 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 modeli tutarlılığı ZORUNLUDUR. Başka bir deyişle:
-
[C-0-1] Alternatif çalışma zamanlarının kendilerinin Android uygulamaları olması ve 9. bölümde açıklanan standart Android güvenlik modeline uyması ZORUNLUDUR.
-
[C-0-2] Alternatif çalışma zamanlarına, <
uses-permission
>AndroidManifest.xml
mekanizması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 uyması ZORUNLUDUR. Ayrıca, 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ı YENİDEN KULLANMAMALIDIR.
-
[C-0-5] Alternatif çalışma zamanlarının, diğer Android uygulamalarına karşılık gelen korumalı alanlarla BAŞLATILMAMALIDIR veya bu uygulamalara 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 dahil edildiğ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] Uygulamaları yüklerken, alternatif çalışma zamanlarının uygulama tarafından kullanılan Android izinleri için kullanıcının izni 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 ve tam kullanıcı izolasyonu desteği sağlar.
- Cihaz uygulamaları, birincil harici depolama olarak çıkarılabilir medya kullanıyorlarsa çoklu kullanıcı özelliğini ETKİNLEŞTİRMEYE BAŞLAMAMALIDIR.
Cihaz uygulamaları birden fazla kullanıcı içeriyorsa:
- [C-1-1], çok kullanıcılı destek ile ilgili aşağıdaki koşulları karşılamalıdır.
- [C-1-2] Her kullanıcı için, API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı üzere 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ıya ait olan ve belirli bir kullanıcı adına çalıştırılan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolanıyor olsa bile, başka bir kullanıcının sahip olduğu dosyaları listeleyememesi, okumaması veya bunlara yazması mümkün OLMALIDIR.
- [C-1-5] Çoklu kullanıcı etkinleştirildiğinde, yalnızca sistem tarafından erişilebilen çıkarılamayan medyada depolanan bir anahtar kullanılarak SD kartın içeriğini şifrelemek 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'ye veya benzer bir sisteme geçmek için cihaz uygulamalarının yapılması gerekecektir.
9.6. Premium SMS Uyarısı
Android, giden premium SMS mesajları ile ilgili olarak kullanıcıları uyarma desteği sunar. Premium SMS mesajları, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıdan ücret alınabilecek kısa mesajlardır.
android.hardware.telephony
için destek bildirilen cihaz uygulamaları:
- [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-Advanced 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] Android çerçevesinin altında SELinux veya başka güvenlik özellikleri uygulanmış olsa bile mevcut uygulamalarla uyumluluğun sürdürülmesi ZORUNLUDUR.
- [C-0-2] Bir güvenlik ihlali algılandığında ve Android çerçevesinin altında uygulanan güvenlik özelliği tarafından başarıyla engellendiğinde görünür bir kullanıcı arayüzü BULUNMAMALIDIR. Ancak, başarılı 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 (Cihaz Yönetimi API'si gibi) aracılığıyla başka bir uygulamayı etkileyebilecek uygulamaların, uyumluluğa uymayan bir politika yapılandırmasına izin VERMEMELİDİR.
- [C-0-5] Android Açık Kaynak Proje sitesinde açıklandığı üzere her 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ının uygulanması ZORUNLUDUR. Yukarı akış Android Açık Kaynak Projesi, source.android.com sayfasının Kernel Yapılandırması bölümünde açıklandığı gibi, iş parçacığı grubu senkronizasyonu (TSYNC) ile seccomp-BPF'yi etkinleştirerek bu şartı 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ındaki kopyaların statik ve dinamik nesne boyutu sınırlarının kontrol edilmesi ZORUNLUDUR. - [C-0-10], orijinal olarak API düzeyi 28 veya sonraki bir sürümle 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 üzeri olarak 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 düzeyi 28 veya sonraki sürümleri (ö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 izolasyonunun uygulanması ZORUNLUDUR. - [C-0-13] Donanım, orijinal olarak API düzeyi 28 veya üzeriyle gönderilen tüm cihazlarda (ör.
CONFIG_HARDEN_BRANCH_PREDICTOR
) CVE-2017-5715 güvenlik açığına karşı savunmasızsa dal tahmini sağlamlaştırma uygulanması ZORUNLUDUR. - [SR] Yalnızca başlatma sırasında yazılan ve başlatma işleminden sonra salt okunur olarak işaretlenen çekirdek verilerinin tutulması ÖNERİLİR (ör.
__ro_after_init
). -
[C-SR] Çekirdek kodunun ve belleğin düzenini rastgele hale getirmek ve rastgele hale getirmeyi tehlikeye sokabilecek 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] Kod yeniden kullanımı saldırılarına (ör.
CONFIG_CFI_CLANG
veCONFIG_SHADOW_CALL_STACK
) karşı ek koruma sağlamak üzere çekirdekte denetim akışı bütünlüğünün (CFI) etkinleştirilmesi için ÖNEMLE ÖNERİLİR. - [C-SR] Etkinleştirilmiş bileşenlerde Control-Akış Bütünlüğü (CFI), Gölge Çağrı Yığını (SCS) veya Tam Sayı Taşma Temizliği'ni (IntSan) devre dışı bırakmaması ÖNEMLE ÖNERİLİR.
- [C-SR] Güvenlik açısından hassas kullanıcı alanı bileşenleri için CFI ve IntSan'da açıklandığı şekilde CFI, SCS ve IntSan'ın etkinleştirilmesi ÖNEMLE ÖNERİLİR.
- [C-SR] 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 ÖNERİLİR. Ayrıca, cihaz uygulamalarında, yerel kullanıcıları başlatmak için derleyici tarafından kullanılan değeri GEÇERSİZ ETMEMELİDİR. - [C-SR] 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 Ö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ı 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 modundaki alanlara izin verilmez.
- [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy klasöründe bulunan "hiçbir 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ı için mevcut tüm "izin verilmemesi" kurallarıyla derlenmesi ZORUNLUDUR.
- [C-1-5] Her uygulamanın özel veri dizininde, uygulama başına SELinux kısıtlamalarına sahip uygulama başına SELinux korumalı alanlarında API düzeyi 28 veya üstünü hedefleyen üçüncü taraf uygulamaların çalıştırılması ZORUNLUDUR.
- Yukarı akış Android Açık Kaynak Projesi'nin sistem/sepolicy klasöründe sağlanan varsayılan SELinux politikasını korumalı ve bu politikaya yalnızca kendi cihaza özel yapılandırmaları için ekleme yapmalıdır.
Daha eski bir Android sürümünde kullanıma sunulan cihaz uygulamaları sistem yazılımı güncellemesi yoluyla [C-1-1] ve [C-1-5] koşullarını karşılayamıyorsa bu şartlardan muaf tutulabilirler.
Cihaz uygulamaları Linux dışında bir çekirdek kullanıyorsa:
- [C-2-1] SELinux'a eşdeğer bir zorunlu erişim denetimi sistemi KULLANILMALIDIR.
Android, cihaz güvenliğinin ayrılmaz bir parçası olan birçok derinlemesine savunma özelliği içerir.
9.8. Gizlilik
9.8.1. Kullanım Geçmişi
Android, kullanıcının seçimlerini saklar ve bu 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.
- [SR] 14 günlük saklama süresinin, AOSP uygulamasında varsayılan olarak yapılandırıldığı şekilde tutulması ÖNEMLE ÖNERİLİR.
Android, sistem etkinliklerini StatsLog
tanımlayıcılarını kullanarak depolar ve bu tür geçmişi StatsManager
ile IncidentManager
System API ü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 etkinliği 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] 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 olmadan veya devam eden bildirimleri temizlemeden önceden YÜKLENMEMELİ veya DAĞITMAMALIDIR.
- [C-0-2] Hassas bilgilere izin veren bir şekilde açık kullanıcı izinlerinin gösterilmesi ve
yakalanacak şekilde kullanıcının ekranında gösterilen tüm bilgiler
ekran yayınlama veya ekran kaydı özelliği
MediaProjection
ya da özel API'ler. Kullanıcılara ileride devre dışı bırakma olanağı VERMEMELİDİR kullanıcı izni görüntülenir. - [C-0-3] Ekran yayınlama veya ekran kaydı etkinleştirildiğinde kullanıcıya sürekli bir bildirim SUNMALIDIR. AOSP, durum çubuğunda sürekli bir bildirim simgesi göstererek bu şartı karşılar.
Cihaz uygulamaları; sistemde, ekranda görüntülenen içeriği yakalayan ve/veya System API ContentCaptureService
dışında cihazda çalınan ses akışını kaydeden bir işlev ya da Bölüm 9.8.6 İçerik Yakalama bölümünde açıklanan diğer tescilli yöntemler içeriyorsa:
- [C-1-1] Bu işlev her etkinleştirildiğinde ve etkin bir şekilde görüntü kaydederken/kaydettiğinde kullanıcıya sürekli bir bildirim OLMALIDIR.
Cihaz uygulamaları; ortam sesini ve/veya cihazda çalan sesi kaydedebilen, kullanıma hazır bir bileşen içeriyorsa kullanıcının bağlamıyla ilgili faydalı bilgiler edinmesi için şunları yapar:
- [C-2-1] Kullanıcının açık bir şekilde izni olmadığı sürece, cihaz üzerindeki kalıcı depolama alanında saklanmamalı veya kaydedilen ham sesi ya da orijinal sese veya yakın bir faksa dönüştürülebilecek herhangi bir biçimi cihazdan dışarı aktarabilirsiniz.
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 onayını 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) mağazası için yukarı akış Android Açık Kaynak Projesi'nde sağlanan kök sertifikaların önceden yüklenmesi ZORUNLUDUR.
- [C-0-2] boş bir kullanıcı kök CA deposuyla gönderilmesi ZORUNLUDUR.
- [C-0-3], bir kullanıcı kök sertifika yetkilisi eklendiğinde kullanıcıya ağ trafiğinin izlenebileceğini belirten bir 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, ağ veri trafiğini bir proxy sunucu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN
verilmiş bir VPN hizmetini önceden yükleyen) ve varsayılan olarak kullanıma hazır şekilde etkinleştirilen bir mekanizma varsa:
- [C-2-1] Söz konusu mekanizma etkinleştirmeden önce kullanıcının iznini istemelidir. Söz konusu VPN, Cihaz Politikası Denetleyicisi tarafından
DevicePolicyManager.setAlwaysOnVpnPackage()
üzerinden etkinleştirilmemişse kullanıcının ayrı bir izin vermesi gerekmez ancak yalnızca bilgilendirilmesi ZORUNLUDUR.
Cihaz uygulamaları, "her zaman açık VPN"yi etkinleştirmek için bir kullanıcı olanağı sunuyorsa işlevini yerine getiriyorsa:
- [C-3-1]
AndroidManifest.xml
dosyasında her zaman açık VPN hizmetini desteklemeyen uygulamalar içinSERVICE_META_DATA_SUPPORTS_ALWAYS_ON
özelliğifalse
olarak ayarlanarak bu kullanıcı fırsatının devre dışı bırakılması ZORUNLUDUR.
9.8.5. Cihaz Tanımlayıcıları
Cihaz uygulamaları:
- [C-0-1] Bir uygulama aşağıdaki şartlardan birini karşılamıyorsa cihazın seri numarasına ve geçerli olduğunda IMEI/MEID'ye, SIM seri numarasına ve Uluslararası Mobil Abone Kimliği'ne (IMSI) erişememesi GEREKİR:
- 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 yönetmelik şartına sahiptir.
9.8.6. İçerik Yakalama
Android, System API ContentCaptureService
aracılığıyla veya özel başka yöntemlerle, uygulamalar ile kullanıcı arasındaki aşağıdaki etkileşimlerin yakalanması 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).
- Bir uygulamanın
Content Capture
API veya benzer özelliklere sahip özel bir API aracılığıyla sisteme sağladığı diğer tüm etkinlikler. - Metnin anlamını anlamak ve metne dayalı sonraki işlemleri oluşturmak için
TextClassifier API
aracılığıyla Sistem Metin Sınıflandırıcı'ya (yani sistem hizmetine) gönderilen tüm metinler veya diğer veriler.
Cihaz uygulamaları yukarıdaki verileri 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ümlerde listelenen şifreler 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 ve cihazın günlüğünün yalnızca gizliliği korumaya yönelik bir mekanizma kullanarak GÖNDERMELİDİR. Gizliliği korumaya yönelik mekanizma, kullanıcı başına verilerin içeri alınmamasını (ör.
RAPPOR
gibi diferansiyel gizlilik teknolojisi kullanılarak uygulanan) önlemek için "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 önleyen uygulamalar" olarak tanımlanır. - [C-1-4], veriler her ilişkilendirildiğinde kullanıcının açık izni olması haricinde bu tür verileri cihazdaki herhangi bir kullanıcı kimliğiyle (ör.
Account
) İLİŞKİLENDİRMEMELİDİR. - [C-1-5] Bu tür verileri, her paylaşılışında kullanıcının açık izni olması haricinde diğer uygulamalarla PAYLAŞMAMALIDIR.
- [C-1-6] Cihazda herhangi bir biçimde depolanması durumunda
ContentCaptureService
veya özel araçlar tarafından toplanan verilerin silinmesi için kullanıcıya destek vermesi ZORUNLUDUR.
Cihaz uygulamaları, ContentCaptureService
System API'sini uygulayan bir hizmeti veya yukarıda açıklandığı gibi verileri yakalayan herhangi bir özel hizmeti içeriyorsa:
- [C-2-1] Kullanıcıların içerik yakalama hizmetini kullanıcı tarafından yüklenebilir bir uygulama veya hizmetle değiştirmelerine İZİN VERİLMEMELİDİR ve bu tür verileri yalnızca önceden yüklenmiş hizmetin yakalamasına izin verilmelidir.
- [C-2-2] Önceden yüklenmiş içerik yakalama hizmet mekanizması dışındaki hiçbir uygulamanın bu tür verileri yakalamasına izin VERMEMELİDİR.
- [C-2-3] İçerik yakalama hizmetini devre dışı bırakmak için kullanıcıya ödeme yapması GEREKİR.
- [C-2-4], içerik yakalama hizmeti tarafından tutulan Android izinlerini yönetme ve Bölüm 9.1. İzin.
-
[C-SR] İçerik yakalama hizmet bileşenlerini, örneğin hizmet veya paylaşım işlemi kimliklerini aşağıdakiler hariç diğer sistem bileşenlerinden bağlamaması için ÖNEMLE ÖNERİLİR:
- Telefon, Kişiler, Sistem Kullanıcı Arayüzü ve Medya
9.8.7. Pano Erişimi
Cihaz uygulamaları:
- [C-0-1], uygulama varsayılan IME değilse veya o anda odaklanılan uygulama değilse kırpılmış verileri panoda (ör.
ClipboardManager
API üzerinden) DÖNMEMELİDİR.
9.8.8. Konum
Cihaz uygulamaları:
- [C-0-1], kullanıcının açık bir şekilde izni veya kullanıcının başlatması olmadan cihaz konum ayarını ve Kablosuz/Bluetooth tarama ayarlarını AÇMAMALI/KAPAMAMALIDIR.
- [C-0-2], kullanıcıya son konum istekleri, uygulama düzeyinde izinler ve konumun belirlenmesi için kablosuz/Bluetooth taramasının kullanımı da dahil olmak üzere konumla ilgili bilgilere erişim imkanı sunmalıdır.
- [C-0-3] Acil Konum Atlama API'sini [LocationRequest.setLocationSettingsignored()] kullanan uygulamanın, kullanıcı tarafından başlatılan bir acil durum oturumu olduğundan (ör. 911'i çevirin veya 911'e kısa mesaj gönderin) emin olması ZORUNLUDUR. 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şlatabilir.
- [C-0-4] Acil Durum Konum Atlama API'sinin, 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 PLANLAMALIDIR.
9.8.9. Yüklü uygulamalar
API düzeyi 30 veya üstünü hedefleyen Android uygulamaları varsayılan olarak diğer yüklü 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'u veya sonraki sürümleri hedefleyen uygulamaların hiçbirine 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.
9.8.10. Bağlantı Hatası Raporu
Cihaz uygulamaları, BugreportManager ile System API BUGREPORT_MODE_TELEPHONY
'yi kullanarak hata raporları oluşturuyorsa:
- [C-1-1], rapor oluşturmak için System API
BUGREPORT_MODE_TELEPHONY
her çağrıldığında kullanıcının izninin alınması GEREKİR ve kullanıcıdan gelecekte uygulamadan gelecek tüm isteklere izin vermesini SAĞLAMAMALIDIR. - [C-1-2] Raporlar oluşturulmaya başladığında açık kullanıcı izninin gösterilmesi ve alınması ZORUNLUDUR. Oluşturulan rapor, istekte bulunan uygulamaya kullanıcının açık izni olmadan DÖNMEMELİDİR.
- [C-1-3] En azından aşağıdaki bilgileri içeren istenen raporları OLUŞTURMALIDIR:
- 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
- [C-1-4] Oluşturulan raporlarda aşağıdakileri İÇERMEMELİDİR:
- Bağlantı hata ayıklamasıyla ilgisi olmayan her türlü bilgi.
- Kullanıcı tarafından yüklenmiş 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 raporunda ek bilgiler (ör.tedarikçi günlükleri) içeriyorsa ve bu bilgiler gizlilik/güvenlik/pil/depolama/bellek üzerinde etkiye sahipse:
- [C-SR] Geliştirici ayarının varsayılan olarak devre dışı bırakılmış olması ÖNEMLE ÖNERİLİR. AOSP, hata raporlarına cihaza özgü ilave satıcı günlükleri eklemek için geliştirici ayarlarında
Enable verbose vendor logging
seçeneğini sunarak bu durumu karşılamaktadır.
9.8.11. Veri blob'ları paylaşımı
Android, BlobStoreManager aracılığıyla uygulamaların belirli bir uygulama grubuyla paylaşılması için Sistem'e veri blob'larıyla katkıda bulunmasına olanak tanır.
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 amaçlananların dışında PAYLAŞMAMALIDIR (ör. varsayılan erişim kapsamı ve BlobStoreManager.session#allowPackageAccess(), BlobStoreManager.session#allowAccess() veya SameBlobStoreManager.session#allowPublicAccess be() kullanılarak belirtilebilecek diğer erişim modları). AOSP referans uygulaması bu koşulları 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.9. Veri Depolama Şifrelemesi
Tüm cihazlar bölüm 9.9.1'deki şartları karşılamalıdır. Bu belgede belirtilenden daha eski bir API düzeyinde kullanıma sunulan cihazlar, Bölüm 9.9.2 ve 9.9.3'teki şartlardan muaftır; Bunun yerine, cihazın kullanıma sunulduğu API düzeyiyle ilgili Android Uyumluluk Tanımlama Belgesi (Bölüm 9.9)'ndaki ş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] Doğrudan Başlatmaya duyarlı uygulamalara, Cihazda Şifrelenmiş (DE) ve Kimlik Bilgisiyle Şifrelenmiş (CE) depolama konumlarının kullanıcının kullanılabilir olduğunu bildirmek için
ACTION_LOCKED_BOOT_COMPLETED
veACTION_USER_UNLOCKED
Amaçlarının 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 uygulama 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 biri kullanılarak yukarıdaki veri depolama şifrelemesi koşulunun karşılanması ZORUNLUDUR:
- 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ının kimlik bilgilerini alması için kullanıcıyı zorlamadan başlatılmalı ve
ACTION_LOCKED_BOOT_COMPLETED
mesajı yayınlandıktan sonra Doğrudan Başlatmaya duyarlı uygulamaların Cihazla Şifrelenmiş (DE) depolama alanına erişmesine izin verilmelidir. - [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] Kullanıcı tarafından sağlanan kimlik bilgileri, kayıtlı emanet anahtarı veya bölüm 9.9.4'teki koşulları karşılayan yeniden başlatma uygulaması sırasında öz geçmiş olmadan CE korumalı depolama alanının kilidini açmak için herhangi bir yöntem SUNMAMALIDIR.
- [C-1-4] Doğrulanmış Başlatma'nın kullanılması 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 belirtir. 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 veya Adiantum kullanarak şifrelemelidir.
- [C-1-12] Cihazda Gelişmiş Şifreleme Standardı (AES) talimatları varsa (ARM tabanlı cihazlarda ARMv8 Kriptografi 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 alınamaz" anahtar türev işlevinin en az 256 bit güvenlik gücüne sahip olduğu ve girişlerine göre bir sahte 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.
-
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 kaynağına 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ĞLANMALIDIR.
- [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.
-
Önceden yüklenmiş gerekli uygulamaları (ör. Alarm, Telefon, Messenger) Doğrudan Başlatma'ya karşı duyarlı hale getirmelisiniz.
Yukarı akış Android Açık Kaynak projesi, Linux çekirdeği "fscrypt"e dayalı olarak tercih edilen Dosya Tabanlı Şifreleme uygulamasını sağlar. şifreleme özelliğini ve Meta Veri Şifreleme'yi destekleyen, Linux çekirdeği "dm-default-key" özelliğini kullanabilirsiniz.
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 kullanılarak kullanıcı başına bölümlendirme sağlanmalıdır.
- [C-1-3] temel blok cihazların şifrelenmesi için her kullanıcı için benzersiz ve ayrı şifreleme anahtarları KULLANMALIDIR.
-
[C-1-4], kullanıcı bölümlerinin blok düzeyinde şifrelemesi için AES-256-XTS 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 kaynağına bağlı olması ZORUNLUDUR.
- [C-1-6] ilgili kullanıcının kilit ekranı kimlik bilgilerine bağlı olması ZORUNLUDUR.
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, OTA tarafından başlatılan bir 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 sonrasında yüklü uygulamalardan bildirim almasına olanak tanır.
Yeniden Başlatmada Devam Ettirme uygulamasının uygulanması, bir cihaz saldırganın eline düştüğünde, 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 özellikler ve sınırlamalara sahip olan saldırganlar için bile okunamayacaktır:
- Rastgele mesajları imzalamak için herhangi bir tedarikçi firmanın 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 bir değişiklik, en az bir saatlik bir gecikme ve RAM içeriğini 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 olmuyor.
Örneğin, burada bulunan tüm açıklamaları uygulayan ve uyumlu bir cihaz uygulaması [C-0-1] ile uyumlu olur.
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 durumlarının sistem görüntüsünün yanıp sönmesine izin verip vermediğini kontrol etmek için
PersistentDataBlockManager.getFlashLockState()
System API yöntemi aracılığıyla doğru şekilde BİLDİRMELİDİR.FLASH_LOCK_UNKNOWN
durumu, bu yeni sistem API yönteminin bulunmadığı önceki bir Android sürümünden yükseltme yapan cihaz uygulamaları için ayrılmıştır. -
[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ğlamıyorsa bu uygulamalar gereklilikten muaf tutulabilir.
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
BELİRTMELİDİR. - [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 devam etmesi ZORUNLUDUR.
- [C-1-4], sonraki aşamada kodu yürütmeden önce, 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ının kullanılması ZORUNLUDUR.
- [C-1-6] Sistem doğrulaması başarısız olduğunda başlatmanın tamamlanmasına İZİN VERİLMEMELİDİR. Kullanıcı yine de başlatmayı denemesini kabul etmez. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALIDIR.
- [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] 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şamanın doğrulanması için ÖNEMLE Ö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 tespit etme özelliği sayesinde bootloader, Android'in içinden depolama alanında değişiklik yapılıp yapılmadığını algılayabilir.
- [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 geri alma koruması (ör. başlatma, sistem bölümleri) uygulamalı 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ı kullanmalıdır.
- [C-SR] 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] 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şenlerde geri alma koruması uygulanmalıdır ve izin verilen minimum sürümü belirlemek üzere kullanılan meta verileri depolamak için kurcalama algılamalı depolama alanı KULLANILMALIDIR.
Android'in önceki sürümlerinde C-1-8'den C-1-10'a kadar olan cihazlar C-1-8'den C-1-10'a desteklenmeden sunulan cihaz uygulamaları, sistem yazılımı güncellemesiyle bu gereksinimlere yönelik destek sağlayamıyorsa şartlardan muaf tutulabilir.
Yukarı akış Android Açık Kaynak Projesi, external/avb/
deposunda bu özelliğin tercih edilen uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan bootloader'a entegre edilebilir.
Cihaz uygulamaları:
- [C-0-3], dosya içeriğinin tamamını okumadan güvenilir bir anahtarla kriptografik olarak doğrulamayı DESTEKLEMELİDİR.
- [C-0-4] Okuma içeriği güvenilir bir anahtara göre doğrulanmadığında, korunan dosyadaki okuma isteklerinin başarılı olmasına İZİN VERİLMEMELİDİR.
Cihaz uygulamaları, önceki Android sürümlerinde güvenilir bir anahtarla dosya içeriğini doğrulama olanağı olmadan zaten başlatılmışsa ve sistem yazılımı güncellemesiyle bu özellik için destek sağlamıyorsa bu tür uygulamalar gereklilikten muaf tutulabilir. Yukarı akış Android Açık Kaynak projesi, Linux çekirdek fs-verity özelliğine göre bu özelliğin tercih edilen bir uygulamasını sağlar.
Cihaz uygulamaları:
- [C-R] Android ProtectedApproval API'yi desteklemesi ÖNERİLİR.
Cihaz uygulamaları Android ProtectedApproval API'yi destekliyorsa:
-
[C-3-1]
ConfirmationPrompt.isSupported()
API içintrue
URL'sini bildirmesi GEREKİR. -
[C-3-2] Android OS'te çalışan çekirdek de dahil olmak üzere kötü amaçlı veya başka bir şekilde çalıştırılan kodun, kullanıcı etkileşimi olmadan olumlu bir yanıt oluşturamaması 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ştiricilerinin şifreleme anahtarlarını bir kapsayıcıda depolamalarına ve KeyChain API veya Keystore API üzerinden şifreleme işlemlerinde kullanmaları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ğrulaması için hız sınırı denemeleri ZORUNLUDUR ve bir üstel geri yükleme algoritması ZORUNLUDUR. 150 başarısız denemeden sonra, gecikmenin deneme başına en az 24 saat olması ZORUNLUDUR.
- Oluşturulabilecek anahtar sayısını SINIRLAMAMALIDIR.
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ı, çekirdekte ve daha ü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 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 olası mekanizmaları Engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu gereksinimi karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun hipervizör tabanlı yalıtımın üçüncü taraflarca incelendiği güvenli bir uygulama, alternatif seçeneklerdir.
- [C-1-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 ş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.
Önceki Android sürümünde bir cihaz uygulaması 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 moddan kilitli duruma geçiş için uyku zaman aşımını seçmesine izin verilmelidir ve minimum 15 saniyeye kadar izin verilebilir bir 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.
9.11.1. Güvenli Kilit Ekranı ve Kimlik Doğrulama
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] 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.
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 sayfasında açıklanan kullanıcı kimlik doğrulama yöntemi OLMALIDIR.
Cihaz uygulamaları, bilinen bir gizli anahtara dayalı olması durumunda 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-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] Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını
DevicePolicyManager.setPasswordQuality()
yöntemi aracılığıylaPASSWORD_QUALITY_SOMETHING
değerinden daha kısıtlayıcı bir kalite sabitiyle ayarladığında 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ılara verilerinin gizliliğini korumak için bazı verilerin yedeklenmeyeceğini açıkça belirtmesi 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 edilecek biyometriye dayalı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:
- [C-4-1], 1. Sınıf 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ğrulamasının yalnızca Cihaz Politikası Denetleyicisi (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çmasına 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] Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını
DevicePolicyManager.setPasswordQuality()
yöntemi aracılığıylaPASSWORD_QUALITY_BIOMETRIC_WEAK
değerinden daha kısıtlayıcı bir kalite sabitiyle ayarlamışsa yöntemlerin devre dışı bırakılması ZORUNLUDUR. - [C-5-2] Bölüm 7.3.10'daki [C-1-7] ve [C-1-8] bölümlerinde 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ÜLEMEMELİ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 bu yöntemleri değiştirirse ve fiziksel bir 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ı gibi değerlendirilme şartlarını 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ı
DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)
veyaDevicePolicyManager.setPasswordQuality()
yöntemiylePASSWORD_QUALITY_UNSPECIFIED
yönteminden daha kısıtlayıcı bir kalite sabitiyle ayarladığında, 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. - [C-6-3] Kullanıcıya, önerilen birincil kimlik doğrulama yöntemlerinden biri (ör. PIN, desen, şifre) için en az 4 saatte bir veya daha kısa bir süre içinde sınanılması ZORUNLUDUR.
- [C-6-4] Yeni yöntem, güvenli 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 koşulu "Ayarı otomatik olarak kilitle" şeklinde bir metin açıklaması göstererek karşılar. ve "Güç düğmesi anında kilitlenir" ve kilit ekranında ayırt edilebilir bir simge görürsünüz.
- [C-7-2]
DevicePolicyManager
sınıfındakiKEYGUARD_DISABLE_TRUST_AGENTS
sabiti gibi tüm güven aracısı API'lerine saygı göstermeli ve bu API'leri 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 genellikle paylaşılan cihaz uygulamalarında (ör. Android Televizyon veya Automotive cihazı) işlevi 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 bölümünde depolanmasına izin verilmez.
- [C-7-6], veri depolama alanını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ı) açısından sorun teşkil etmedikçe, en az 72 saatte bir, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) birini yapması için kullanıcının sorgulanması ZORUNLUDUR.
- [C-7-9] Kullanıcının güvenliğiyle (ör.sürücünün dikkatinin dağılması) endişe duyulmadığı sürece, [C-1-7] ve [C-1-8] numaralı bölümde bölüm 7.3.10'da açıklandığı şekilde, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biri için kullanıcının sorgulanması 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 izin VERMEMELİDİR ve bu cihazları yalnızca, kilidi açılmış durumdaki bir cihazı en fazla 4 saat süreyle kilitli durumda tutmak için kullanabilir. AOSP'de TrustManagerService'in varsayılan uygulaması bu şartı karşılar.
- [C-7-12] Emanet jetonunu depolama cihazından hedef cihaza aktarmak için kriptografik olarak güvenli (ör.UKEY2) bir iletişim kanalı 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öntemlerini ekler veya 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_UNSPECIFIED
değerinden daha kısıtlayıcı bir kalite sabitiyle ayarladığında 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] Üçüncü taraf uygulamalarının kilit durumunu değiştirmek amacıyla kullanması için bir API KULLANMAMALIDIR.
9.11.2. Güçlü Kutu
Android Anahtar Deposu Sistemi, uygulama geliştiricilerinin ş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" denir. Aşağıdaki C-1-3 ile C-1-11 arasındaki şartlar, bir cihazın StrongBox sayılabilmesi için karşılaması gereken şartları tanımlar.
Özel bir güvenli işlemciye sahip cihaz uygulamaları:
- [C-SR] StrongBox'un desteklenmesi için ÖNEMLE ÖNERİLİR. StrongBox, gelecekteki sürümlerden birinde muhtemelen gereklilik olacaktır.
Cihaz uygulamaları StrongBox'u destekliyorsa:
-
[C-1-1], FEATURE_STRONGBOX_KEYSTORE bildirmeli.
-
[C-1-2], anahtar deposunu yedeklemek ve kullanıcı kimlik doğrulamasını güvenli hale getirmek için kullanılan özel güvenli donanımın sağlanması ZORUNLUDUR. Özel güvenli donanım başka amaçlarla da kullanılabilir.
-
[C-1-3] Uygulama işlemcisi (AP) ile ö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ı gerekir. 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ı gerekir.
-
[C-1-6] eşit şekilde dağıtılmış ve öngörülemez çıktılar üreten gerçek bir rastgele sayı oluşturucunun olması ZORUNLUDUR.
-
[C-1-7], fiziksel penetrasyona ve arızaya karşı direnç dahil olmak üzere, kurcalama direncine sahip OLMALIDIR.
-
[C-1-8]; güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla bilgi sızıntısına karşı direnç dahil olmak üzere yan kanal direncine sahip olmalıdır.
-
[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 Genel Kriterleri'ne göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesine sahip, ulusal olarak akredite edilmiş bir test laboratuvarı tarafından değerlendirilmiş olan donanımı içermesi ZORUNLUDUR.
- [C-1-11] Akıllı Kartlara Saldırı Potansiyeli için Ortak Kriterler doğrultusunda Yüksek saldırı potansiyeli güvenlik açığı değerlendirmesine sahip, ulusal olarak onaylanmış bir test laboratuvarı tarafından değerlendirilen donanım yazılımını içermesi ZORUNLUDUR.
- [C-SR] 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 gelecekteki sürümlerde bir gereklilik olacaktır.
-
[C-SR], kuruluş içi saldırılara karşı direnç (IAR) sağlaması için ÖNEMLE Ö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şilmesine 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 Bilgileri Sistemi, tüm API'ler android.security.identity.*
paketinde uygulanarak tanımlanır ve sağlanır. Bu API'ler, uygulama geliştiricilerinin kullanıcı kimlik dokümanlarını depolamasına ve almasına olanak tanır. Cihaz uygulamaları:
- [C-SR], Kimlik Kimlik Bilgisi Sistemi'ni uygulamak için ÖNEMLE ÖNERİLİR.
Cihaz uygulamaları, Kimlik Kimlik Bilgisi Sistemi'ni uyguluyorsa:
-
[C-0-1], IdentityCredentialStore#getInstance() yöntemi için boş olmayan bir değer döndürmelidir.
-
[C-0-2], çekirdekte ve sonraki sürümlerde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda, güvenilir bir uygulamayla iletişim kuran bir kodla Kimlik Kimlik Bilgileri Sistemi'ni (ör.
android.security.identity.*
API'leri) 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 olası mekanizmaları Engellemelidir. -
[C-0-3] Kimlik Kimlik Bilgileri 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, daha üst düzey API'ler (ör. createEphemeralKeyPair() yöntemi) tarafından özel olarak gerekli olmadığı sürece izole yürütme ortamından asla çıkmamalıdır. -
[C-0-4] Android hatalı davransa veya güvenliği ihlal etse bile güvenilir uygulamanın, 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.
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] Kullanıcı verisi dosya sistemindeki tüm verilerin silinmesi ZORUNLUDUR.
- [C-0-3], verileri NIST SP800-88 gibi ilgili endüstri standartlarını karşılayacak şekilde silmelidir.
- [C-0-4] yukarıdaki "Fabrika Verilerine Sıfırlama" işlemini tetiklemelidir
DevicePolicyManager.wipeData()
API, birincil kullanıcının Device Policy Controller uygulaması tarafından çağrıldığında geçerli olur. - 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:
- [SR] Güvenli Başlatma Modu'nun uygulanması Ö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üklü üçüncü taraf uygulamalarıyla 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 geçme seçeneği SUNMALIDIR.
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'sini 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ün SubscriptionManager.setSubscriptionPlans()
üzerinden sağladığı fatura ilişkisi planı ayrıntılarına bakın.
Tüm cihaz uygulamaları:
- [C-0-1] abonelik planlarını yalnızca bunları ilk sağlayan mobil operatör uygulamasına iade etmesi GEREKİR.
- [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ılma işlemlerine izin verilmesi ZORUNLUDUR.
9:16. Uygulama Verilerini Taşıma
Cihaz uygulamaları, bir cihazdan başka bir cihaza veri taşıma özelliği içeriyorsa ve kopyalanan uygulama verilerini, manifest'te uygulama geliştiricisi tarafından android:fullBackupContent özelliği aracılığıyla yapılandırılan uygulama verileri ile sınırlandırmıyorsa:
- [C-1-1], 9.11.1 Güvenli Kilit Ekranı ve Kimlik Doğrulama bölümünde açıklandığı gibi, kullanıcının 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 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 cihazın 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 gösterge göstermelidir. Bir kullanıcı bu göstergeyi KALDIRAMAMALIDIR.
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ına Android Açık Kaynak Projesi'nin sağladığı referans ve tercih edilen Android uygulamasında mümkün olduğunca minimum sayıda değişiklik yapmaları ÖNERİLİR. Bu sayede, yeniden çalışma gerektiren uyumsuzluklara neden olabilecek hatalar ve olası cihaz güncellemeleri riski en aza indirilir.
10.1. Uyumluluk Test Paketi
Cihaz uygulamaları:
-
[C-0-1] cihazın 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 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 kendisi de hatalar içerebilir. CTS'nin sürümü bu Uyumluluk Tanımı'ndan bağımsız olarak oluşturulacaktır ve Android 11 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 çok KULLANMALIDIR.
10.2. CTS Doğrulayıcı
Uyumluluk Test Paketi'nde yer alan CTS Doğrulayıcı, kamera ve sensörlerin doğru çalışması gibi otomatik sistem tarafından test edilemeyen işlevleri test etmek amacıyla gerçek kişi olan bir operatör 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ım için tüm testlerden geçmelidir; Örneğin, bir cihazın ivme ölçer varsa CTS Doğrulayıcı'da İvme Ölçer test durumunu doğru şekilde yürütülmesi ZORUNLUDUR.
Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerin test durumları atlanabilir veya çıkarılabilir.
- [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 benzediği için cihaz uygulayıcılarını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ı geçmiş bir uygulamadan farklı olan cihaz uygulamaları, yalnızca içerdiği yerel ayarlar, marka vb. bakımından farklıdır. 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 yapması 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 şartı 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. Diğer bir deyişle, güncelleme mekanizması, uygulamanın ö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] 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, bunlar:
- [C-1-1] Yeniden başlatma aracılığıyla çevrimdışı güncelleme ile OTA indirmelerini DESTEKLEMELİDİR.
Android 6.0 ve sonraki sürümlerde başlatılan cihaz uygulamalarında, güncelleme mekanizması, sistem görüntüsünün, bir OTA'dan sonra beklenen sonuçla aynı ikili program olduğunu doğrulamayı DESTEKLEMELİDİR. Android 5.1'den itibaren eklenen, yukarı akış Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu şartı karşılar.
Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP bu özelliği, başlatma kontrolü HAL'sini kullanarak uygular.
Bir cihaz uygulaması yayınlandıktan sonra, ancak Android Uyumluluk Ekibi'ne danışılarak üçüncü taraf uygulamaların uyumluluğunu etkilemeye karar verilen 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:
Bireysel bölümlerde yapılan değişikliklerin özeti için:
- Giriş
- Cihaz Türleri
- Yazılım
- Uygulama Paketi
- Multimedya
- Geliştirici Araçları ve Seçenekleri
- Donanım Uyumluluğu
- Performans ve Güç
- Güvenlik Modeli
- Yazılım Uyumluluğu Testi
- Güncellenebilir Yazılımlar
- Doküman Değişiklik Günlüğü
- Bize Ulaşın
12.1. Değişiklik Günlüğünü Görüntüleme İpuçları
Değişiklikler şu şekilde işaretlenmiştir:
-
CDD
Uyumluluk gereksinimlerinde önemli değişiklikler yapılmıştır. -
Dokümanlar
Kozmetik veya inşaatla ilgili değişiklikler.
En iyi görüntüleme için, değişiklik günlüğü URL'lerinize pretty=full
ve no-merges
URL parametrelerini ekleyin.
13. Bize Ulaşın
android-uyumluluk forumu'na katılarak açıklama isteyebilir veya dokümanın kapsamadığını düşündüğünüz sorunları dile getirebilirsiniz.