1. Giriş
Bu dokümanda, cihazların Android 11 ile uyumlu olması için karşılanması gereken şartlar listelenmiştir.
"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" ve "OPTIONAL" kelimelerinin kullanımı RFC2119'da tanımlanan IETF standardına göredir.
Bu dokümanda "cihaz uygulayıcısı" veya "uygulayıcı", Android 11 çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluştur. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Cihaz uygulamalarının Android 11 ile uyumlu olarak kabul edilebilmesi için referansla dahil edilen tüm dokümanlar da dahil olmak üzere bu Uyumluluk Tanımı'nda sunulan şartları karşılaması GEREKİR.
Bu tanım veya 10. bölümde açıklanan yazılım testleri net değilse, eksikse ya da bu konuda bilgi verilmiyorsa mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcının sorumluluğundadır.
Bu nedenle, Android Açık Kaynak Projesi hem Android'in referans kaynağı hem de tercih edilen uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nde bulunan "yukarı yönlü" kaynak koduna dayandırmaları önemle ÖNERİLİR. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilir olsa da yazılım testlerini geçmek çok daha zor olacağından bu uygulamanın kullanılmaması önemle tavsiye edilir. Uyumluluk Testi Paketi dahil olmak üzere standart Android uygulamasıyla davranışsal olarak tam uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen değişimlerinin ve modifikasyonlarının bu dokümanda açıkça yasaklandığını unutmayın.
Bu dokümanda bağlantısı verilen kaynakların çoğu doğrudan veya dolaylı olarak Android SDK'sından türetilmiştir ve işlevsel olarak ilgili SDK'nın dokümanlarında yer alan bilgilerle aynıdır. Bu Uyumluluk Tanımlama Belgesi veya Uyumluluk Testi Paketi'nin SDK dokümanlarıyla çeliştiği durumlarda SDK dokümanları yetkili kabul edilir. Bu dokümanda bağlantı verilen kaynaklarda sağlanan tüm teknik ayrıntılar, bu Uyumluluk Tanımı'nın bir parçası olarak kabul edilir.
1.1 Doküman Yapısı
1.1.1. Cihaz türüne göre şartlar
2. Bölüm, belirli bir cihaz türü için geçerli olan tüm koşulları içerir. 2. Bölüm'ün her alt bölümü belirli bir cihaz türüne ayrılmıştır.
Tüm Android cihaz uygulamaları için evrensel olarak geçerli olan diğer tüm koşullar, 2. Bölüm'den sonraki bölümlerde listelenmiştir. Bu şartlara bu dokümanda "Temel Şartlar" olarak atıfta bulunulur.
1.1.2. Şart kimliği
ŞART koşulu için şart kimliği atanır.
- Kimlik yalnızca zorunlu koşullar için atanır.
- ÖNEMLE ÖNERİLİR koşulları [SR] olarak işaretlenir ancak kimlik atanmaz.
- Kimlik şuradan oluşur : Cihaz Türü Kimliği - Durum Kimliği - Şart Kimliği (ör. C-0-1).
Her kimlik aşağıdaki gibi tanımlanır:
- Cihaz Türü Kimliği (2. Cihaz Türleri)
- C: Temel (Tüm Android cihaz uygulamalarında geçerli olan şartlar)
- H: Android el cihazı
- T: Android Television cihaz
- C: Android Automotive uygulaması
- W: Android Watch uygulaması
- Sekme: Android tablet uygulaması
- Koşul kimliği
- Koşulsuz olduğunda bu kimlik 0 olarak ayarlanır.
- Koşul koşullu olduğunda 1. koşul için 1 atanır ve sayı aynı bölüm ve aynı cihaz türü içinde 1 artar.
- Şart kimliği
- Bu kimlik 1 ile başlar ve aynı bölümde ve aynı koşulda 1'er artar.
1.1.3. Bölüm 2'deki şart kimliği
2. Bölüm'deki Şart Kimliği, ilgili bölüm kimliğiyle başlar ve ardından yukarıda açıklanan Şart Kimliği gelir.
- 2.Bölüm'deki kimlik şuradan oluşur : Bölüm Kimliği / Cihaz Türü Kimliği - Koşul Kimliği - Şart 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 paketi sağlar. Bununla birlikte, nispeten daha iyi bir uygulama dağıtım ekosistemine sahip birkaç cihaz türü vardır.
Bu bölümde, bu cihaz türleri ve her cihaz türü için geçerli ek şartlar ve öneriler açıklanmaktadır.
Açıklanan cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamaları, bu Uyumluluk Tanımı'nın diğer bölümlerindeki tüm koşulları karşılamalıdır.
2.1 Cihaz Yapılandırmaları
Cihaz türüne göre donanım yapılandırmasında bulunan önemli farklılıklar için bu bölümde yer alan cihaza özgü gereksinimlere bakın.
2.2. El Cihazı Gereksinimleri
Android el cihazı, genellikle elinizde tutarak kullandığınız Android cihaz uygulamalarını (ör. mp3 çalar, telefon veya tablet) ifade eder.
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa El Cihazı olarak sınıflandırılır:
- Hareketlilik sağlayan bir güç kaynağı (ör. pil) olmalıdır.
- Fiziksel diyagonal ekran boyutu 3,3 inç ile 8 inç arasında olmalıdır (Android 11'den önceki bir API düzeyinde kullanıma sunulan cihazlar için 2,5 inç).
Bu bölümün geri kalanındaki ek şartlar, Android el cihazı uygulamalarında geçerlidir.
2.2.1. Donanım
Elde taşınabilir cihaz uygulamaları:
- [7.1.1.1/H-0-1] Bu dokümanda açıklanan tüm koşulları karşılayan en az bir Android uyumlu ekrana sahip OLMALIDIR.
- [7.1.1.3/H-SR] Kullanıcılara ekran boyutunu (ekran yoğunluğu) değiştirme olanağı sunulması önemle ÖNERİLİR.
El cihazı uygulamaları yazılım ekran rotasyonunu destekliyorsa:
- [7.1.1.1/H-1-1]* Üçüncü taraf uygulamaları için kullanıma sunulan mantıksal ekranın kısa kenarlarında en az 5,1 cm, uzun kenarlarında ise en az 6,8 cm olması GEREKİR. Bu dokümanda belirtilen API düzeyinden daha eski bir API düzeyinde kullanıma sunulan cihazlar bu şarttan muaftır.
El cihazı uygulamaları yazılım ekran rotasyonunu desteklemiyorsa:
- [7.1.1.1/H-2-1]* Üçüncü taraf uygulamaları için kullanıma sunulan mantıksal ekranın kısa kenarlarının en az 2,7 inç olması GEREKİR. Bu dokümanda belirtilen API düzeyinden daha eski bir API düzeyinde kullanıma sunulan cihazlar bu şarttan muaftır.
El cihazı uygulamaları Configuration.isScreenHdr()
aracılığıyla yüksek dinamik aralık ekranları için destek iddiasında bulunuyorsa:
- [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ının desteğini REKLAMLAMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [7.1.4.6/H-0-1] Cihazın GPU profil oluşturma özelliğini destekleyip desteklemediğini bir sistem özelliği
graphics.gpu.profiler.support
aracılığıyla bildirmelidir.
El cihazı uygulamaları, graphics.gpu.profiler.support
sistem özelliği aracılığıyla destek beyan ederse:
- [7.1.4.6/H-1-1] Çıkış olarak, Perfetto dokümanlarında tanımlanan GPU sayaçları ve GPU oluşturma aşamaları şemasına uygun bir protobuf izlemesi ORTAYA KOYULMASI GEREKİR.
- [7.1.4.6/H-1-2] Cihazın GPU sayaçları için gpu counter trace packet proto'yu izleyerek uyumlu değerler bildirmelidir.
- [7.1.4.6/H-1-3] Cihazın GPU RenderStages için render aşaması izleme paketi prototipini izleyerek uygun değerleri bildirmelidir.
- [7.1.4.6/H-1-4] GPU Frekansı izleme noktasını power/gpu_frequency biçiminde belirtildiği şekilde bildirmelidir.
Elde taşınabilir cihaz uygulamaları:
- [7.1.5/H-0-1] Yukarı akış Android açık kaynak kodu tarafından uygulanan eski uygulama uyumluluk modu için destek DAHİL OLMALIDIR. Yani cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİ ve uyumluluk modunun kendisinin 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 DAHİL OLMALIDIR.
- [7.2.3/H-0-3] Ana ekran sunan tüm Android uyumlu ekranlarda Ana ekran işlevi ZORUNLUDUR.
- [7.2.3/H-0-4] Tüm Android uyumlu ekranlarda Geri işlevi, Android uyumlu ekranlardan en az birinde de Son Aramalar işlevi 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ÖNDERMELİDİR. Bu etkinlikler sistem tarafından KULLANILMAMALISDIR ve Android cihazın dışından (ör. Android cihaza bağlı harici donanım klavyesi) TETİKLENEBİLİR. - [7.2.4/H-0-1] Dokunmatik ekran girişini DESTEKLEMELİDİR.
- [7.2.4/H-SR] Kullanıcı tarafından seçilen yardımcı uygulamayı (yani VoiceInteractionService'i uygulayan uygulamayı) veya ön plan etkinliği bu uzun basma etkinliklerini işlemiyorsa
KEYCODE_MEDIA_PLAY_PAUSE
veyaKEYCODE_HEADSETHOOK
düğmesine uzun basıldığındaACTION_ASSIST
'i işleyen bir etkinliği başlatmanız önemle ÖNERİLİR. - [7.3.1/H-SR] 3 eksenli ivme ölçer eklenmesi önemle ÖNERİLİR.
El cihazı uygulamalarında 3 eksenli ivme ölçer varsa:
- [7.3.1/H-1-1] En az 100 Hz'e kadar frekansta etkinlikleri raporlayabilmelidir.
El cihazı uygulamaları bir GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla bu özelliği uygulamalara bildiriyorsa:
- [7.3.3/H-2-1] GPS/GNSS'den hesaplanan bir konum henüz raporlanmasa bile GNSS ölçümleri bulunur bulunmaz raporlanmalıdır.
- [7.3.3/H-2-2] Konum belirlendikten sonra açık hava koşullarında sabitken veya 0,2 metrekare/saniyeden daha düşük ivmeyle hareket ederken konumu 20 metre, hızı ise 0,2 metre/saniye içinde hesaplamak için yeterli olan GNSS sanal menzilleri ve sanal menzil hızlarını bildirmelidir. Bu bildirimler, en az% 95 oranında sağlanmalıdır.
El cihazı uygulamalarında 3 eksenli jiroskop varsa:
- [7.3.4/H-3-1] En az 100 Hz'e kadar frekansta etkinlikleri bildirebilmelidir.
- [7.3.4/H-3-2] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Sesli arama yapabilen ve getPhoneType
alanında PHONE_TYPE_NONE
dışında bir değer gösterebilen el cihazı uygulamaları:
- [7.3.8/H] Yakınlık sensörü DAHİL OLMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [7.3.11/H-SR] 6 serbestlik derecesine sahip poz sensörünü desteklemeleri ÖNERİLİR.
- [7.4.3/H] Bluetooth ve Bluetooth LE desteği DAHİL OLMALIDIR.
Elde kullanılan cihaz uygulamaları, ücretli bağlantı içeriyorsa:
- [7.4.7/H-1-1] Veri tasarrufu modu ZORUNLUDUR.
Elde tutulan cihaz uygulamaları, CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
kullanarak özellikleri listeleyen mantıksal bir kamera cihazı içeriyorsa:
- [7.5.4/H-1-1] Varsayılan olarak normal görüş alanına (FOV) sahip OLMALI ve 50 ila 90 derece arasında OLMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [7.6.1/H-0-1] Uygulama özel verileri ("/data" bölümü olarak da bilinir) için en az 4 GB kalıcı depolama alanı BULUNMASI GEREKİR.
- [7.6.1/H-0-2] Çekirdek ve kullanıcı alanında 1 GB'tan az bellek bulunduğunda
ActivityManager.isLowRamDevice()
için "true" değerini İYİ DEĞERİNDE döndürmelidir.
El cihazı uygulamaları yalnızca 32 bit ABI'yi destekliyorsa:
-
[7.6.1/H-1-1] Varsayılan ekranda qHD'ye (ör. FWVGA) kadar ekran kartı çözünürlüğü kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 416 MB OLMALIDIR.
-
[7.6.1/H-2-1] Varsayılan ekran HD+'ye (ör. HD, WSVGA) kadar ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 592 MB OLMALIDIR.
-
[7.6.1/H-3-1] Varsayılan ekran FHD'ye (ör. WSXGA+) kadar ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 896 MB OLMALIDIR.
-
[7.6.1/H-4-1] Varsayılan ekran QHD'ye (ör. QWXGA) kadar ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1344 MB OLMALIDIR.
El cihazı uygulamaları herhangi bir 64 bit ABI'yi (32 bit ABI ile veya olmadan) destekliyorsa:
-
[7.6.1/H-5-1] Varsayılan ekranda qHD'ye (ör. FWVGA) kadar ekran kartı çözünürlüğü kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 816 MB OLMALIDIR.
-
[7.6.1/H-6-1] Varsayılan ekran HD+'ye (ör. HD, WSVGA) kadar ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 944 MB OLMALIDIR.
-
[7.6.1/H-7-1] Varsayılan ekran FHD'ye (ör.WSXGA+) kadar ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1. 280 MB OLMALIDIR.
-
[7.6.1/H-8-1] Varsayılan ekran QHD'ye (ör.QWXGA) kadar ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1. 824 MB OLMALIDIR.
Yukarıdaki "çekirdek ve kullanıcı alanında kullanılabilen bellek" ifadesinin, radyo ve video gibi donanım bileşenlerine ayrılmış belleklere ek olarak, cihaz uygulamalarında çekirdeğin kontrolü altında olmayan bellek alanını ifade ettiğini unutmayın.
El cihazı uygulamaları, çekirdek ve kullanıcı alanında kullanılabilen 1 GB'tan az veya 1 GB'a eşit bellek içeriyorsa:
- [7.6.1/H-9-1]
android.hardware.ram.low
özellik işaretini İLANI GEREKTİRİR. - [7.6.1/H-9-2] Uygulama özel verileri ("/data" bölümü olarak da bilinir) için en az 1,1 GB kalıcı depolama alanı OLMALIDIR.
El cihazı uygulamaları, çekirdek ve kullanıcı alanında kullanılabilen 1 GB'tan fazla bellek içeriyorsa:
- [7.6.1/H-10-1] Uygulama özel verileri ("/data" bölümü olarak da bilinir) için en az 4 GB kalıcı depolama alanı BULUNMASI GEREKİR.
- Özellik bayrağını
android.hardware.ram.normal
bildirmelidir.
Elde taşınabilir cihaz uygulamaları:
- [7.6.2/H-0-1] 1 GiB'den küçük bir uygulama paylaşılan depolama alanı SAĞLAMAMALIDIR.
- [7.7.1/H] Çevre birimi modunu destekleyen bir USB bağlantı noktası DAHİL OLMALIDIR.
El cihazı uygulamalarında çevre birimi modunu destekleyen bir USB bağlantı noktası varsa bu cihazlar:
- [7.7.1/H-1-1] Android Open Accessory (AOA) API'yi UYGULAMALIDIR.
El cihazı uygulamalarında ana makine modunu destekleyen bir USB bağlantı noktası varsa:
- [7.7.2/H-1-1] Android SDK dokümanlarında belirtildiği gibi USB ses sınıfını UYGULAMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [7.8.1/H-0-1] Mikrofon içermelidir.
- [7.8.2/H-0-1] Ses çıkışına sahip OLMALI ve
android.hardware.audio.output
değerini bildirmelidir.
El cihazı uygulamaları, VR modunu desteklemeyle ilgili tüm performans koşullarını karşılayabiliyorsa ve bu modu destekliyorsa:
- [7.9.1/H-1-1]
android.hardware.vr.high_performance
özellik bayrağını İLANI GEREKTİRİR. - [7.9.1/H-1-2]
android.app.Activity#setVrModeEnabled
aracılığıyla VR uygulamaları tarafından etkinleştirilebilenandroid.service.vr.VrListenerService
'yi uygulayan bir uygulama İÇERMELİDİR.
El cihazı uygulamaları, ana makine modunda bir veya daha fazla USB-C bağlantı noktası içeriyorsa ve (USB ses sınıfı) uygularsa 7.7.2 numaralı bölümdeki şartlara ek olarak aşağıdakileri de karşılamalıdır:
- [7.8.2.2/H-1-1] HID kodlarının aşağıdaki yazılım eşlemesini SAĞLAMALIDIR:
İşlev | Eşlemeler | 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 veya duraklat |
Giriş: Uzun basma Çıkış: Sesli komutu başlat Gönderilenler: Cihaz kilitliyse veya ekranı kapalıysa android.speech.action.VOICE_SEARCH_HANDS_FREE , aksi takdirde android.speech.RecognizerIntent.ACTION_WEB_SEARCH gönderilir
|
|||
Gelen arama |
Giriş: Kısa bas Çıkış: Aramayı kabul et |
||
Giriş: Uzun basma Çıkış: Aramayı reddet |
|||
Devam eden arama |
Giriş: Kısa bas Çıkış: Görüşmeyi sonlandır |
||
Giriş: Uzun basma Çıkış: Mikrofonun sesini kapatma veya açma |
|||
B |
HID kullanım sayfası: 0x0C HID kullanımı: 0x0E9 Çekirdek anahtarı: KEY_VOLUMEUP Android anahtarı: VOLUME_UP
|
Medya oynatma, Devam eden arama |
Giriş: Kısa veya uzun basma Çıkış: Sistem veya kulaklık ses seviyesini 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 arama |
Giriş: Kısa veya uzun basma Çıkış: Sistem veya kulaklık sesini azaltır |
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şlatma |
- [7.8.2.2/H-1-2] Fiş takıldığında ACTION_HEADSET_PLUG etkinleştirilmelidir ancak bu işlem yalnızca bağlı terminalin türünü belirlemek için USB ses arabirimleri ve uç noktaları düzgün bir şekilde numaralandırıldıktan sonra yapılmalıdır.
0x0302 USB ses terminali türleri algılandığında:
- [7.8.2.2/H-2-1] "microphone" ekstrası 0 olarak ayarlanmışken ACTION_HEADSET_PLUG intent'ini yayınlamalıdır.
0x0402 USB ses terminali türleri algılandığında:
- [7.8.2.2/H-3-1] "mikrofon" ek olarak 1 olarak ayarlanmışken ACTION_HEADSET_PLUG intent'ini YAYITLAMALIDIR.
USB çevre birimi bağlıyken API AudioManager.getDevices() çağrıldığında:
-
[7.8.2.2/H-4-1] USB ses terminali türü alanı 0x0302 ise AudioDeviceInfo.TYPE_USB_HEADSET türündeki bir cihazı ve rolü isSink() olarak listelemeLİDİR.
-
[7.8.2.2/H-4-2] USB ses terminali türü alanı 0x0402 ise AudioDeviceInfo.TYPE_USB_HEADSET türündeki bir cihazı ve rolü isSink() olarak listelemeLİDİR.
-
[7.8.2.2/H-4-3] USB ses terminali türü alanı 0x0402 ise AudioDeviceInfo.TYPE_USB_HEADSET türündeki bir cihazı ve rolü isSource() olarak listelemeLİDİR.
-
[7.8.2.2/H-4-4] USB ses terminali türü alanı 0x603 ise AudioDeviceInfo.TYPE_USB_DEVICE türündeki bir cihazı ve rolü isSink() olarak listelemeLİDİR.
-
[7.8.2.2/H-4-5] USB ses terminali türü alanı 0x604 ise AudioDeviceInfo.TYPE_USB_DEVICE türündeki bir cihazı ve rolü isSource() olarak listelemeLİDİR.
-
[7.8.2.2/H-4-6] USB ses terminali türü alanı 0x400 ise AudioDeviceInfo.TYPE_USB_DEVICE türündeki bir cihazı ve rolü isSink() olarak listelemeLİDİR.
-
[7.8.2.2/H-4-7] USB ses terminali türü alanı 0x400 ise AudioDeviceInfo.TYPE_USB_DEVICE türündeki bir cihazı ve rolü isSource() olarak listelemeLİDİR.
-
[7.8.2.2/H-SR] USB tanımlayıcılarının listelenmesini gerçekleştirmek, terminal türlerini tanımlamak ve 1.000 milisaniyeden kısa sürede ACTION_HEADSET_PLUG intent'ini yayınlamak için USB-C ses çevre birimi bağlandıktan sonra KESİNLİKLE ÖNERİLİR.
El cihazı uygulamalarında en az bir dokunma aktüatörü varsa bu aktüatörler:
- [7.10/H-SR]* Eksantrik dönen kütle (ERM) dokunma aktüatörü(titreşim motoru) KULLANMAMASI önemle ÖNERİLİR.
- [7.10/H]* Hareket ettiricinin yerleştirilmesi, cihazın genellikle ellerle tutulduğu veya dokunulduğu yere yakın olmalıdır.
- [7.10/H-SR]* android.view.HapticFeedbackConstants sınıfında net dokunma hissi için tüm herkese açık sabitlerin (CLOCK_TICK, CONTEXT_CLICK, KEYBOARD_PRESS, KEYBOARD_RELEASE, KEYBOARD_TAP, LONG_PRESS, TEXT_HANDLE_MOVE, VIRTUAL_KEY, VIRTUAL_KEY_RELEASE, CONFIRM, REJECT, GESTURE_START ve GESTURE_END) uygulanması önemle ÖNERİLİR.
- [7.10/H-SR]* android.os.VibrationEffect sınıfındaki net dokunma hissi için tüm herkese açık sabitlerin (EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK ve EFFECT_DOUBLE_CLICK) ve android.os.VibrationEffect.Composition sınıfındaki zengin dokunma hissi için tüm herkese açık sabitlerin (PRIMITIVE_CLICK ve PRIMITIVE_TICK) uygulanması önemle ÖNERİLİR.
- [7.10/H-SR]* Bu bağlı dokunma sabitleri eşlemelerinin kullanılması ö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() işlevini çalıştırarak genlik ölçeklenebilirliği özelliklerini doğrulamanız önemle ÖNERİLİR.
Doğrusal rezonanslı aktüatör (LRA), kütlenin istenen hareket yönünde hareket ettiği baskın bir rezonans frekansına sahip tek kütleli bir yay sistemidir.
El cihazı uygulamalarında en az bir doğrusal rezonanslı aktüatör varsa:
- [7,10/H]* dokunma hareketli aktüatörü dikey yönde X ekseninde HAREKET ETTİRİR.
El cihazı uygulamalarında X eksenli doğrusal rezonanslı aktüatör (LRA) olan bir dokunma aktüatörü varsa:
- [7.10/H-SR]* X eksenli LRA'nın rezonans frekansının 200 Hz'nin altında olması önemle ÖNERİLİR.
El cihazı uygulamaları dokunma sabitleri eşlemesini izliyorsa:
- [7.10/H-SR]* Dokunma sabitleri için kalite değerlendirmesi yapılması önemle ÖNERİLİR.
2.2.2. Multimedya
El cihazı uygulamaları aşağıdaki ses kodlama ve kod çözme biçimlerini desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [5.1/H-0-1] AMR-NB
- [5.1/H-0-2] AMR-WB
- [5.1/H-0-3] MPEG-4 AAC Profili (AAC LC)
- [5.1/H-0-4] MPEG-4 HE AAC Profili (AAC+)
- [5.1/H-0-5] AAC ELD (düşük gecikmeli gelişmiş AAC)
El cihazı uygulamaları aşağıdaki video kodlama biçimlerini desteklemeli ve üçüncü taraf uygulamalarına sunmalıdır:
El cihazı uygulamalarında aşağıdaki video kod çözme biçimleri desteklenmeli ve üçüncü taraf uygulamaları tarafından kullanılabilir olmalıdır:
2.2.3. Yazılım
Elde taşınabilir cihaz uygulamaları:
- [3.2.3.1/H-0-1]
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
,ACTION_OPEN_DOCUMENT_TREE
veACTION_CREATE_DOCUMENT
intent'lerini SDK dokümanlarındaki gibi işleyen veDocumentsProvider
API'yi kullanarak kullanıcıya doküman sağlayıcı verilerine erişme olanağı sunan bir uygulama BULUNMASI GEREKİR. - [3.2.3.1/H-0-2]* Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulamayı ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.
- [3.2.3.1/H-SR] E-posta göndermek için ACTION_SENDTO veya ACTION_SEND ya da ACTION_SEND_MULTIPLE intent'lerini işleyebilecek bir e-posta uygulamasının önceden yüklenmesi önemle ÖNERİLİR.
- [3.4.1/H-0-1]
android.webkit.Webview
API'sinin eksiksiz bir uygulamasını SAĞLAMALIDIR. - [3.4.2/H-0-1] Genel kullanıcı web tarama deneyimi için bağımsız bir tarayıcı uygulaması DAHİL OLMALIDIR.
- [3.8.1/H-SR] Kısayolların, widget'ların ve widgetFeatures öğelerinin uygulama içinde sabitlenmesini destekleyen bir varsayılan başlatıcının uygulanması önemle ÖNERİLİR.
- [3.8.1/H-SR] ShortcutManager API aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcının uygulanması önemle ÖNERİLİR.
- [3.8.1/H-SR] Uygulama simgelerinin rozetlerini 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ı desteklemek için ÇOK Ö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 VERMELİDİR. - [3.8.3/H-0-2] Zengin bildirimleri DESTEKLEMELİDİR.
- [3.8.3/H-0-3] Bildirimler için uyarıları desteklemelidir.
- [3.8.3/H-0-4] Bildirim gölgesi ZORUNLUDUR.Bu gölge, kullanıcıya işlem düğmeleri veya AOSP'de uygulanan kontrol paneli gibi kullanıcı özelliklerini kullanarak bildirimleri doğrudan kontrol etme (ör. yanıtlama, erteleme, reddetmek, engelleme) olanağı sunmalıdır.
- [3.8.3/H-0-5]
RemoteInput.Builder setChoices()
aracılığıyla sağlanan seçenekleri bildirim gölgesinde GÖSTERMELİ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 bildirim gölgesinde
RemoteInput.Builder setChoices()
aracılığıyla sağlanan tüm seçeneklerin gösterilmesi önemle ÖNERİLİR. - [3.8.3.1/H-SR]
Notification.Action.Builder.setContextual
içintrue
olarak ayarlanan işlemlerinNotification.Remoteinput.Builder.setChoices
tarafından gösterilen yanıtlarla birlikte satır içi olarak gösterilmesi önemle ÖNERİLİR. - [3.8.4/H-SR] Yardımcı işlem'i işlemek için cihaza bir asistan uygulamanız önemle ÖNERİLİR.
El cihazı uygulamaları Yardımcı işlem özelliğini destekliyorsa:
- [3.8.4/H-SR] 7.2.3 numaralı bölümde açıklandığı gibi, yardımcı uygulamayı başlatmak için belirlenen etkileşim olarak
HOME
tuşuna uzun basmanın KUVVETLE ÖNERİLDİĞİ. Kullanıcı tarafından seçilen yardımcı uygulamayı (yaniVoiceInteractionService
uygulamasını) veyaACTION_ASSIST
intent'ini işleyen bir etkinliği BAŞLATMALIDIR.
Avuç içi cihaz uygulamaları conversation notifications
'i destekliyorsa ve bunları uyarı ve sessiz olmayan ileti dizisi dışı bildirimlerden ayrı bir bölümde gruplandırıyorsa:
- [3.8.4/H-1-1]* Devam eden ön plan hizmet bildirimleri ve importance:high bildirimleri hariç olmak üzere, görüşme bildirimleri, görüşme dışı bildirimlerin önünde GÖSTERİLMELİDİR.
Android el cihazı uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/H-1-1] Medya Bildirim Şablonu dahil olmak üzere Kilit Ekranı Bildirimlerini GÖSTERMELİDİR.
El cihazı uygulamaları güvenli kilit ekranını destekliyorsa:
- [3.9/H-1-1] Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tamamını UYGULAMALIDIR.
- [3.9/H-1-2] Cihaz, kendisini düşük RAM'e sahip bir cihaz olarak bildirecek veya dahili (çıkarılamaz) depolama alanını paylaşılan depolama alanı olarak ayıracak şekilde yapılandırılmadığı sürece
android.software.managed_users
özellik işareti aracılığıyla yönetilen profillerin desteklendiğini BEYAN ETMELİDİR.
El cihazı uygulamaları ControlsProviderService
ve Control
API'leri için destek içeriyorsa ve üçüncü taraf uygulamalarının cihaz kontrolleri yayınlamasına izin veriyorsa:
- [3.8.16/H-1-1]
android.software.controls
özellik bayrağını tanımlamalı vetrue
olarak ayarlamalıdır. - [3.8.16/H-1-2]
ControlsProviderService
veControl
API'leri aracılığıyla üçüncü taraf uygulamaları tarafından kaydedilen denetimler arasından kullanıcının favori cihaz denetimlerini ekleme, düzenleme, seçme ve çalıştırma olanağı sunan bir kullanıcı özelliği ZORUNLUDUR. - [3.8.16/H-1-3] Varsayılan bir başlatıcıdan üç etkileşim içinde bu kullanıcı özelliğine erişim SAĞLANMALIDIR.
- [3.8.16/H-1-4] Bu kullanıcı özelliğinde,
ControlsProviderService
API aracılığıyla denetim sağlayan her üçüncü taraf uygulamasının adını ve simgesini, ayrıcaControl
API'leri tarafından sağlanan tüm belirtilen alanları doğru şekilde oluşturmalıdır.
Buna karşılık, el cihazı uygulamalarında bu tür kontroller uygulanmazsa:
- [3.8.16/H-2-1]
ControlsProviderService
veControl
API'leri içinnull
bildirmelidir. - [3.8.16/H-2-2]
android.software.controls
özellik bayrağını tanımlamalı vefalse
olarak ayarlamalıdır.
Elde taşınabilir 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 motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevselliğine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi önemle ÖNERİLİR.
- [3.11/H-0-1] Üçüncü taraf TTS motorlarının kurulumunu DESTEKLEMELİDİR.
- [3.11/H-SR] Cihazdaki dilleri destekleyen bir TTS motoru eklenmesi önemle ÖNERİLİR.
- [3.13/H-SR] 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ğini belirtiyorsa:
- [3.16/H-1-1] Tamamlayıcı cihaz eşleme özelliğini DESTEKLEMELİYDİR.
Gezinme işlevi ekranda, harekete dayalı bir işlem olarak sağlanıyorsa:
- [7.2.3/H] Ana Sayfa işlevi için hareket algılama bölgesi, ekranın alt kısmından en fazla 32 dp yükseklikte OLMALIDIR.
El cihazı uygulamaları, ekranın sol ve sağ kenarlarının herhangi bir yerinden hareketle gezinme işlevi sağlıyorsa:
- [7.2.3/H-0-1] Gezinme işlevinin hareket alanı her iki taraftan da 40 dp'den dar OLMALIDIR. Hareket alanı varsayılan olarak 24 dp genişliğinde OLMALIDIR.
2.2.4. Performans ve Güç
- [8.1/H-0-1] Kararlı kare gecikmesi. Tutarlı olmayan kare gecikmesi veya kare oluşturma gecikmesi saniyede 5 kareden daha sık OLMAMALISI ve saniyede 1 kareden az OLMALIDIR.
- [8.1/H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamalarında, Android Compatibility Test Suite (CTS) tarafından tanımlandığı şekilde 10.000 liste girişinin yer aldığı bir listeyi 36 saniyeden kısa sürede kaydırarak düşük gecikmeli kullanıcı deneyimi sağlanmalıdır.
- [8.1/H-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, zaten çalışan bir uygulamayı yeniden başlatmak 1 saniyeden kısa sürmelidir.
Elde taşınabilir cihaz uygulamaları:
- [8.2/H-0-1] En az 5 MB/sn. sıralı yazma performansı SAĞLAMALIDIR.
- [8.2/H-0-2] En az 0,5 MB/sn rastgele yazma performansı SAĞLAMALIDIR.
- [8.2/H-0-3] En az 15 MB/sn sıralı okuma performansı SAĞLAMALIDIR.
- [8.2/H-0-4] En az 3,5 MB/sn rastgele okuma performansı SAĞLAMALIDIR.
El cihazı uygulamaları, AOSP'de bulunan ve cihaz güç yönetimini iyileştirmeye yönelik veya AOSP'de bulunan özellikleri genişleten özellikler içeriyorsa:
- [8.3/H-1-1] Pil tasarrufu özelliğini etkinleştirmek ve devre dışı bırakmak için kullanıcılara uygun bir yöntem sunulmalıdır.
- [8.3/H-1-2] Uygulama Bekleme ve Uyku güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcılara kolaylık sağlamalıdır.
Elde taşınabilir cihaz uygulamaları:
- [8.4/H-0-1] Her donanım bileşeni için mevcut tüketim değerini ve Android Open Source Project sitesinde belirtildiği gibi bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına güç profili ZORUNLUDUR.
- [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 bildirmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/H-0-4] Bu güç kullanımını,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır. - [8,4/sa] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.
El cihazı uygulamalarında ekran veya video çıkışı varsa:
- [8.4/H-1-1]
android.intent.action.POWER_USAGE_SUMMARY
intent'ini dikkate almalı ve bu güç kullanımını gösteren bir ayarlar menüsü göstermelidir.
2.2.5. Güvenlik Modeli
Elde taşınabilir cihaz uygulamaları:
- [9.1/H-0-1] Üçüncü taraf uygulamalarının
android.permission.PACKAGE_USAGE_STATS
izni aracılığıyla kullanım istatistiklerine erişmesine izin VERMELİ veandroid.settings.ACTION_USAGE_ACCESS_SETTINGS
intent'ine yanıt olarak bu tür uygulamalara erişim izni vermek veya iptal etmek için kullanıcının erişebileceği bir mekanizma sağlamalıdır.
El cihazı uygulamaları (* Tablet için geçerli değildir):
- [9.11/H-0-2]* Anahtar deposu uygulamasını izole bir yürütme ortamıyla YEDEKLEMELİDİR.
- [9.11/H-0-3]* Android Keystore sisteminin desteklenen algoritmalarını çekirdekte ve daha üst katmanlarda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 karma oluşturma işlevlerinin uygulanmış olması GEREKİR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı yönlü Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu koşulu karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hipervizör tabanlı yalıtımın üçüncü taraflarca incelenmiş güvenli bir uygulaması da alternatif seçenekler arasındadır.
- [9.11/H-0-4]* Kilit ekranı kimlik doğrulamasını izole yürütme ortamında gerçekleştirmeli ve yalnızca başarılı olduğunda kimlik doğrulamasına bağlı anahtarların kullanılmasına izin vermelidir. Kilit ekranı kimlik bilgileri, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulamasını gerçekleştirmesine izin verecek şekilde SAKLANMALIDIR. Yukarı yönlü Android Açık Kaynak Projesi, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
- [9.11/H-0-5]* Onaylama imzalama anahtarının güvenli donanım tarafından korunduğu ve imzalamanın güvenli donanımda yapıldığı durumlarda anahtar onayı desteklenmelidir. Onaylama imzalama anahtarları, anahtarların cihaz tanımlayıcısı olarak kullanılmasını önlemek için yeterince çok sayıda cihazda PAYLAŞILMALIDIR. Bu koşulu karşılamak için,belirli bir SKU'dan en az 100.000 adet üretilmediği sürece aynı doğrulama anahtarını paylaşabilirsiniz. Bir SKU'dan 100.000'den fazla birim üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Bir cihaz uygulaması daha önce bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme şartından muaf olduğunu unutmayın. Bunun için cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint
özelliğini belirtmesi gerekir.
El 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ı (kilitli olmayan durumdan kilitli duruma geçiş süresi) 15 saniye veya daha kısa olarak seçmesine İZİN VERMELİDİR.
- [9.11/H-1-2] 9.11.1 Güvenli Kilit Ekranı bölümünde açıklanan birincil kimlik doğrulama dışındaki tüm kimlik doğrulama biçimlerini devre dışı bırakmak ve bildirimleri gizlemek için kullanıcıya olanak sağlanmalıdır. AOSP, kilitli mod olarak bu koşulu karşılar.
El cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini belirtmiyorsa:
- [9.5/H-2-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki yeteneklerini yönetmelerine 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 hızlıca oluşturabilir ve bu ortamlarda bulunan uygulamalarda daha ayrıntılı kısıtlamalar yönetebilir.
El cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini belirtiyorsa:
- [9.5/H-3-1] Kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'deki kontrollerin uygulanmasıyla uyumlu OLMALIDIR.
2.2.6. Geliştirici Araçları ve Seçenekleri Uyumluluğu
El cihazı uygulamaları (* Tablet için geçerli değildir):
- [6.1/H-0-1]*
cmd testharness
kabuk komutunu DESTEKLEMELİDİR.
El cihazı uygulamaları (* Tablet için geçerli değildir):
-
Perfetto
- [6.1/H-0-2]* Kabuk kullanıcısına
/system/bin/perfetto
ikili dosyası göstermeLİDİR. Bu ikili dosyanın komut satırı, perfetto belgelerine uygun olmalıdır. - [6.1/H-0-3]* perfetto ikili dosyası, giriş olarak perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırması kabul ETMELİDİR.
- [6.1/H-0-4]* perfetto ikili dosyası, çıkış olarak perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izlemesi yazmalıdır.
- [6.1/H-0-5]* perfetto ikili dosyası aracılığıyla en azından perfetto dokümanlarında açıklanan veri kaynaklarını SAĞLAMALIDIR.
- [6.1/H-0-6]* Perfeetto izlenen arka plan programı varsayılan olarak etkinleştirilmiş OLMALIDIR (
persist.traced.enable
sistem özelliği).
- [6.1/H-0-2]* Kabuk kullanıcısına
2.2.7 El Cihazında Medya Performansı Sınıfı
Medya performansı sınıfının tanımı için 7.11 bölümüne bakın.
2.2.7.1. Medya
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.R
döndürürse:
- [5.1/H-1-1]
CodecCapabilities.getMaxSupportedInstances()
veVideoCapabilities.getSupportedPerformancePoints()
yöntemleri aracılığıyla herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilen maksimum sayıda donanım video kod çözücü oturumunun reklamını YAPMALIDIR. - [5.1/H-1-2] 30 fps'de 720p çözünürlükte eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 6 donanım video kod çözücü oturumu (AVC veya HEVC) desteklenmelidir.
- [5.1/H-1-3]
CodecCapabilities.getMaxSupportedInstances()
veVideoCapabilities.getSupportedPerformancePoints()
yöntemleri aracılığıyla herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilen maksimum sayıda donanım video kodlayıcı oturumunun reklamını YAPMALIDIR. - [5.1/H-1-4] 30 fps'de 720p çözünürlükte eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 6 donanım video kodlayıcı oturumu (AVC veya HEVC) desteklemelidir.
- [5.1/H-1-5]
CodecCapabilities.getMaxSupportedInstances()
veVideoCapabilities.getSupportedPerformancePoints()
yöntemleri aracılığıyla herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek maksimum sayıda donanım video kodlayıcı ve kod çözücü oturumunun reklamını YAPMALIDIR. - [5.1/H-1-6] 30 fps'de 720p çözünürlükte aynı anda çalışan herhangi bir codec kombinasyonunda 6 donanım video kod çözücü ve donanım video kodlayıcı oturumu (AVC veya HEVC) desteklenmelidir.
- [5.1/H-1-7] Yük altındayken tüm donanım video kodlayıcılar (Dolby Vision codec'i dışında) için 1080p veya daha küçük video kodlama oturumunda 65 ms veya daha az codec başlatma gecikmesi OLMALIDIR. Buradaki yük, 1080p sesli/videolu kayıt başlatma işlemiyle birlikte donanım video codec'lerini kullanan eşzamanlı bir 1080p'den 720p'ye yalnızca video kod dönüştürme oturumu olarak tanımlanır.
- [5.1/H-1-8] Yük altındayken tüm ses kodlayıcılar için 128 Kb/sn veya daha düşük bit hızında ses kodlama oturumunda 50 ms veya daha kısa bir codec başlatma gecikmesi OLMALIDIR.Buradaki yük, 1080p sesli/videolu kayıt başlatma ile birlikte donanım video codec'lerini kullanan eşzamanlı 1080p'den 720p'ye yalnızca video kod dönüştürme oturumu olarak tanımlanır.
- [5.3/H-1-1] Yük altında 1080p 30 fps video oturumunda 10 saniyede 1'den fazla kare atlanmamalıdır (ör. kare atlama yüzdesi 0,333'ten az olmalıdır). Yük, donanım video codec'leri ve 128 Kb/sn AAC ses oynatma kullanılarak eşzamanlı olarak 1080p'den 720p'ye yalnızca video kod dönüştürme oturumu olarak tanımlanır.
- [5.3/H-1-2] Yük altındaki 30 fps video oturumunda video çözünürlüğü değişikliği sırasında 10 saniyede 1'den fazla kare atlanmamalıdır. Yük, donanım video codec'leri ve 128 Kb/sn AAC ses oynatma kullanılarak eşzamanlı olarak 1080p'den 720p'ye yalnızca video kod dönüştürme oturumu olarak tanımlanır.
- [5.6/H-1-1] OboeTester dokunma sesi testi veya CTS Verifier dokunma sesi testi kullanılarak 100 milisaniyeden kısa bir dokunma sesi gecikmesi OLMALIDIR.
2.2.7.2. Kamera
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.R
döndürürse:
- [7.5/H-1-1] En az 12 megapiksel çözünürlüğe sahip ve 30 fps'de 4K video çekimini destekleyen birincil arka kamera bulunmalıdır. Birincil arka kamera, en düşük kamera kimliğine sahip arka kameradır.
- [7.5/H-1-2] En az 4 megapiksel çözünürlüğe sahip ve 30 fps'de 1080p video çekimini destekleyen birincil bir ön kamera bulunmalıdır. Birincil ön kamera, en düşük kamera kimliğine sahip ön kameradır.
- [7.5/H-1-3] android.info.supportedHardwareLevel mülkünü arka birincil kamera için FULL veya daha iyi, ön birincil kamera için ise LIMITED veya daha iyi olarak desteklemelidir.
- [7.5/H-1-4] Her iki birincil kamera için de CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME desteklenmelidir.
- [7.5/H-1-5] Her iki birincil kamera için de kendi ışıklandırma koşullarında (3000K) CTS kamera Performans Testi tarafından ölçülen 1080p çözünürlükte kamera2 JPEG yakalama gecikmesi 1.000 ms'den az OLMALIDIR.
- [7.5/H-1-6] Her iki birincil kamera için de CTS kamera Performans Testi'nin kendi ışıklandırma koşullarında (3000K) ölçtüğü camera2 başlatma gecikmesi (kamerayı açıp ilk önizleme karesine kadar geçen süre) 600 ms'den AZ OLMALIDIR.
2.2.7.3. Donanım
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.R
döndürürse:
- [7.1.1.1/H-1-1] Ekran çözünürlüğü en az 1080p OLMALIDIR.
- [7.1.1.3/H-1-1] Ekran yoğunluğu en az 400 dpi OLMALIDIR.
- [7.6.1/H-1-1] En az 6 GB fiziksel belleğe sahip OLMALIDIR.
2.2.7.4. Performans
El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için android.os.Build.VERSION_CODES.R
döndürürse:
- [8.2/H-1-1] En az 100 MB/sn'lik sıralı yazma performansı SAĞLAMALIDIR.
- [8.2/H-1-2] En az 10 MB/sn rastgele yazma performansı SAĞLAMALIDIR.
- [8.2/H-1-3] En az 200 MB/sn sıralı okuma performansı SAĞLAMALIDIR.
- [8.2/H-1-4] En az 25 MB/sn rastgele okuma performansı SAĞLAMALIDIR.
2.3. Televizyon Gereksinimleri
Android TV cihazı, yaklaşık üç metre uzaklıkta oturan kullanıcılar için dijital medya, film, oyun, uygulama ve/veya canlı TV içeriklerini tüketmeye yönelik bir eğlence arayüzü olan Android cihaz uygulamasını ifade eder ("arkanıza yaslanın" veya "üç metrelik kullanıcı arayüzü").
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa TV olarak sınıflandırılır:
- Kullanıcıdan üç metre uzakta olabilecek ekranda oluşturulan kullanıcı arayüzünü uzaktan kontrol etmek için bir mekanizma sağlamış olmalıdır.
- Dikey uzunluğu 24 inçten büyük bir yerleşik ekrana sahip OLMALI VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası ya da ekran için kablosuz bağlantı noktası içermelidir.
Bu bölümün geri kalanındaki ek şartlar, Android TV cihaz uygulamalarında geçerlidir.
2.3.1. Donanım
Televizyon cihazı uygulamaları:
- [7.2.2/T-0-1] D-pad desteklenmelidir.
- [7.2.3/T-0-1] Ana Sayfa ve Geri işlevlerini İÇERMELİDİR.
- [7.2.3/T-0-2] Geri işlevinin (
KEYCODE_BACK
) hem normal hem de uzun basma etkinliğini ön plan uygulamasına GÖNDERMELİDİR. - [7.2.6.1/T-0-1] Oyun denetleyicileri için destek içermeli ve
android.hardware.gamepad
özellik işaretini belirtmelidir. - [7.2.7/T] Kullanıcıların dokunmadan gezinme ve temel gezinme tuşları girişlerine erişebileceği bir uzaktan kumanda SAĞLANMALIDIR.
Televizyon cihazı uygulamalarında 3 eksenli jiroskop varsa:
- [7.3.4/T-1-1] En az 100 Hz'e kadar frekansta etkinlikleri raporlayabilmelidir.
- [7.3.4/T-1-2] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Televizyon cihazı uygulamaları:
- [7.4.3/T-0-1] Bluetooth ve Bluetooth LE'yi DESTEKLEMELİDİR.
- [7.6.1/T-0-1] Uygulama özel verileri ("/data" bölümü olarak da bilinir) için en az 4 GB kalıcı depolama alanı BULUNMASI GEREKİR.
TV cihazı uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.5.3/T-1-1] Bu USB bağlantı noktası üzerinden bağlanan ancak her zaman bağlı olması gerekmeyen harici bir kamera için destek DAHİL OLMALIDIR.
TV cihazı uygulamaları 32 bit ise:
-
[7.6.1/T-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 896 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 dpi veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
TV cihazı uygulamaları 64 bit ise:
-
[7.6.1/T-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 dpi veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanında kullanılabilen bellek" ifadesinin, radyo ve video gibi donanım bileşenlerine ayrılmış belleklere ek olarak, cihaz uygulamalarında çekirdeğin kontrolü altında olmayan bellek alanını ifade ettiğini unutmayın.
Televizyon cihazı uygulamaları:
- [7.8.1/T] Mikrofon içermelidir.
- [7.8.2/T-0-1] Ses çıkışına sahip OLMALI ve
android.hardware.audio.output
değerini bildirmelidir.
2.3.2. Multimedya
Televizyon cihazı uygulamaları aşağıdaki ses kodlama ve kod çözme biçimlerini desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [5.1/T-0-1] MPEG-4 AAC Profili (AAC LC)
- [5.1/T-0-2] MPEG-4 HE AAC Profili (AAC+)
- [5.1/T-0-3] AAC ELD (düşük gecikmeli gelişmiş AAC)
Televizyon cihazı uygulamaları aşağıdaki video kodlama biçimlerini desteklemeli ve üçüncü taraf uygulamalarına sunmalıdır:
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ı desteklemeniz önemle ÖNERİLİR.
Televizyon cihazı uygulamaları aşağıdaki video kod çözme biçimlerini desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [5.3.3/T-0-1] MPEG-4 SP
- [5.3.4/T-0-2] H.264 AVC
- [5.3.5/T-0-3] H.265 HEVC
- [5.3.6/T-0-4] VP8
- [5.3.7/T-0-5] VP9
- [5.3.1/T-0-6] MPEG-2
Televizyon cihazı uygulamaları, Bölüm 5.3.1'de ayrıntılı olarak açıklandığı şekilde, aşağıdakiler dahil olmak üzere standart video kare hızlarında ve çözünürlüklerde MPEG-2 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.1/T-1-1] Ana Profil Yüksek Seviye ile saniyede 29,97 kare hızında HD 1080p.
- [5.3.1/T-1-2] Ana Profil Yüksek Seviye ile saniyede 59,94 kare HD 1080i. Aralıklı MPEG-2 videosunu çözmeli ve üçüncü taraf uygulamaların kullanımına sunmalıdır.
Televizyon cihazı uygulamaları, Bölüm 5.3.4'te ayrıntılı olarak açıklandığı şekilde, aşağıdakiler dahil olmak üzere standart video kare hızlarında ve çözünürlüklerde H.264 kod çözmeyi DESTEKLEMELİDİR:
- [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 Seviye 4.2 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücüleri bulunan televizyon cihazı uygulamaları, Bölüm 5.3.5'te ayrıntılı olarak açıklandığı şekilde, aşağıdakiler dahil olmak üzere standart video kare hızlarında ve çözünürlüklerde H.265 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.5/T-1-1] Ana Profil Seviye 4.1 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücüleri bulunan televizyon cihazı uygulamaları H.265 kod çözme ve UHD kod çözme profilini destekliyorsa:
- [5.3.5/T-2-1] Main10 5. Katman Ana Katman profili ile saniyede 60 kare hızında UHD kod çözme profilini DESTEKLEMELİDİR
Televizyon cihazı uygulamaları, Bölüm 5.3.6'da ayrıntılı olarak açıklandığı şekilde, aşağıdakiler dahil olmak üzere standart video kare hızlarında ve çözünürlüklerde VP8 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.6/T-1-1] saniyede 60 kare hızında HD 1080p kod çözme profili
VP9 donanım kod çözücüleri bulunan televizyon cihazı uygulamaları, 5.3.7 numaralı bölümde ayrıntılı olarak açıklandığı üzere, aşağıdakiler dahil olmak üzere standart video kare hızlarında ve çözünürlüklerde VP9 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.7/T-1-1] 0 numaralı profille (8 bit renk derinliği) saniyede 60 kare hızında HD 1080p
VP9 donanım kod çözücüleri olan televizyon cihazı uygulamaları VP9 kod çözme ve UHD kod çözme profilini destekliyorsa:
- [5.3.7/T-2-1] 0 numaralı profil (8 bit renk derinliği) ile saniyede 60 kare hızında UHD kod çözme profilini DESTEKLEMELİDİR.
- [5.3.7/T-2-1] 2. profil (10 bit renk derinliği) ile saniyede 60 kare hızında UHD kod çözme profilini desteklemeniz önemle ÖNERİLİR.
Televizyon cihazı uygulamaları:
- [5.5/T-0-1] Sıkıştırılmış ses aktarma çıkışı (cihaz üzerinde ses kod çözme işlemi yapılmaz) hariç olmak üzere, desteklenen çıkışlarda sistem ana ses seviyesi ve dijital ses çıkışı ses seviyesi azaltma desteği ZORUNLUDUR.
Televizyon cihazı uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlı harici bir ekran destekliyorsa:
- [5.8/T-0-1] HDMI çıkış modunu, 50 Hz veya 60 Hz yenileme hızıyla desteklenebilecek maksimum çözünürlüğü seçecek şekilde AYARILMASI GEREKİR.
- [5.8/T-SR] Kullanıcı tarafından yapılandırılabilir bir HDMI yenileme hızı seçicinin sağlanması önemle ÖNERİLİR.
- [5.8] HDMI çıkış modu yenileme hızı, cihazın satıldığı bölgenin video yenileme hızına bağlı olarak 50 Hz veya 60 Hz olarak AYARLANMALIDIR.
Televizyon cihazı uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlı harici bir ekran destekliyorsa:
- [5.8/T-1-1] HDCP 2.2'yi DESTEKLEMELİDİR.
Televizyon cihazı uygulamaları UHD kod çözmeyi desteklemiyorsa ancak HDMI üzerinden bağlı harici bir ekranı destekliyorsa:
- [5.8/T-2-1] HDCP 1.4'ü DESTEKLEMELİDİR
2.3.3. Yazılım
Televizyon cihazı uygulamaları:
- [3/T-0-1]
android.software.leanback
veandroid.hardware.type.television
özelliklerini İLANI GEREKTİRİR. - [3.2.3.1/T-0-1] Burada listelenen aşağıdaki uygulama intent'leriyle tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulamayı ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.
- [3.4.1/T-0-1]
android.webkit.Webview
API'sinin eksiksiz bir uygulamasını SAĞLAMALIDIR.
Android TV cihaz uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/T-1-1] Medya Bildirim Şablonu dahil olmak üzere Kilit Ekranı Bildirimleri gösterilmelidir.
Televizyon cihazı uygulamaları:
- [3.8.14/T-SR] Pencere içinde pencere (PIP) modunu çoklu pencerede desteklemeniz ö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 motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevselliğine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi önemle ÖNERİLİR.
Televizyon cihazı uygulamaları android.hardware.audio.output
özelliğini raporlarsa:
- [3.11/T-SR] Cihazdaki dilleri destekleyen bir TTS motoru eklenmesi önemle ÖNERİLİR.
- [3.11/T-1-1] Üçüncü taraf TTS motorlarının kurulumunu 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. Tutarlı olmayan kare gecikmesi veya kare oluşturma gecikmesi saniyede 5 kareden daha sık OLMAMALISI ve saniyede 1 kareden az OLMALIDIR.
- [8.2/T-0-1] En az 5 MB/sn sıralı yazma performansı SAĞLAMALIDIR.
- [8.2/T-0-2] En az 0,5 MB/sn rastgele yazma performansı SAĞLAMALIDIR.
- [8.2/T-0-3] En az 15 MB/sn sıralı okuma performansı SAĞLAMALIDIR.
- [8.2/T-0-4] En az 3,5 MB/sn rastgele okuma performansı SAĞLAMALIDIR.
Televizyon cihazı uygulamaları, AOSP'de bulunan ve cihaz güç yönetimini iyileştirmeye veya AOSP'de bulunan özellikleri genişletmeye yönelik özellikler içeriyorsa:
- [8.3/T-1-1] Pil tasarrufu özelliğini etkinleştirmek ve devre dışı bırakmak için kullanıcılara uygun bir yöntem sunulmalıdır.
Televizyon cihazı uygulamalarında pil yoksa:
- [8.3/T-1-2] Cihazın, Pilsiz Cihazları Destekleme bölümünde açıklandığı gibi pilsiz cihaz olarak kaydedilmesi GEREKİR.
Televizyon cihazı uygulamalarında pil varsa:
- [8.3/T-1-3] Uygulamada bekleme ve güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcılara kolaylık sağlanmalıdır.
Televizyon cihazı uygulamaları:
- [8.4/T-0-1] Her donanım bileşeninin mevcut tüketim değerini ve Android Open Source Project sitesinde belirtildiği gibi bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili ZORUNLUDUR.
- [8.4/T-0-2] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden bildirmelidir.
- [8.4/T-0-3] Her bir işlemin UID'si başına CPU güç tüketimini bildirmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/T] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.
- [8.4/T-0-4] Bu güç kullanımını,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır.
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] Android Keystore sisteminin desteklenen algoritmalarını çekirdekte ve daha üst katmanlarda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 karma oluşturma işlevlerinin uygulanması ZORUNLUDUR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı yönlü Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu koşulu karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hipervizör tabanlı yalıtımın üçüncü taraflarca incelenmiş güvenli bir uygulaması da alternatif seçenekler arasındadır.
- [9.11/T-0-3] Kilit ekranı kimlik doğrulamasını izole yürütme ortamında YAPMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamasına bağlı anahtarların kullanılmasına izin vermelidir. Kilit ekranı kimlik bilgileri, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulamasını gerçekleştirmesine izin verecek şekilde SAKLANMALIDIR. Yukarı yönlü Android Açık Kaynak Projesi, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
- [9.11/T-0-4] Onaylama imzalama anahtarının güvenli donanım tarafından korunduğu ve imzalamanın güvenli donanımda yapıldığı durumlarda anahtar onayı desteklenmelidir. Onaylama imzalama anahtarları, anahtarların cihaz tanımlayıcısı olarak kullanılmasını önlemek için yeterince çok sayıda cihazda PAYLAŞILMALIDIR. Bu koşulu karşılamak için,belirli bir SKU'dan en az 100.000 adet üretilmediği sürece aynı doğrulama anahtarını paylaşabilirsiniz. Bir SKU'dan 100.000'den fazla birim üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Bir cihaz uygulaması daha önce bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme şartından muaf olduğunu unutmayın. Bunun için cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint
özelliğini belirtmesi gerekir.
Televizyon cihazı uygulamaları güvenli kilit ekranını destekliyorsa:
- [9.11/T-1-1] Kullanıcının, kilidi açık durumdan kilitli duruma geçiş için Uyku zaman aşımını seçmesine izin VERMELİDİR. İzin verilen minimum zaman aşımı 15 saniye veya daha kısa olmalıdır.
Televizyon cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini belirtmiyorsa:
- [9.5/T-2-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki yeteneklerini yönetmelerine 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 hızlıca oluşturabilir ve bu ortamlarda bulunan uygulamalarda daha ayrıntılı kısıtlamalar yönetebilir.
Televizyon cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini belirtiyorsa:
- [9.5/T-3-1] Kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'deki kontrollerin uygulanmasıyla uyumlu OLMALIDIR.
2.3.6. Geliştirici Araçları ve Seçenekleri Uyumluluğu
Televizyon cihazı uygulamaları:
-
Perfetto
- [6.1/T-0-1] Kabuk kullanıcısına
/system/bin/perfetto
ikili dosyası göstermeLİDİR. Bu ikili dosyanın komut satırı, perfetto belgelerine uygun olmalıdır. - [6.1/T-0-2] perfetto ikili dosyası, giriş olarak perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırması kabul ETMELİDİR.
- [6.1/T-0-3] Perfetto ikili dosyası, çıkış olarak perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izlemesi yazmalıdır.
- [6.1/T-0-4] perfetto ikili dosyası aracılığıyla en azından perfetto dokümanlarında açıklanan veri kaynaklarını SAĞLAMALIDIR.
- [6.1/T-0-1] Kabuk kullanıcısına
2.4. İzleme Şartları
Android kol saati cihazı, vücutta (ör. bilekte) takılmak üzere tasarlanmış bir Android cihaz uygulamasıdır.
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa Kol Saati olarak sınıflandırılır:
- Fiziksel çapraz uzunluğu 1,1 ila 2,5 inç arasında olan bir ekrana sahip olmalıdır.
- Vücuda takılmak için bir mekanizmaya sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar, Android Watch cihaz uygulamalarında geçerlidir.
2.4.1. Donanım
Cihaz uygulamalarını izleme:
-
[7.1.1.1/W-0-1] Fiziksel diyagonal boyutu 1,1 ila 2,5 inç arasında olan bir ekrana sahip OLMALIDIR.
-
[7.2.3/W-0-1] Kullanıcının Ana Sayfa işlevini ve
UI_MODE_TYPE_WATCH
'de olmadığı sürece Geri işlevini kullanabilmesi GEREKİR. -
[7.2.4/W-0-1] Dokunmatik ekran girişini DESTEKLEMELİDİR.
-
[7.3.1/W-SR] 3 eksenli ivme ölçer eklenmesi önemle ÖNERİLİR.
Kol saati cihazı uygulamaları bir GPS/GNSS alıcı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla bu özelliği uygulamalara bildiriyorsa:
- [7.3.3/W-1-1] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile GNSS ölçümleri bulunur bulunmaz bildirilmelidir.
- [7.3.3/W-1-2] Konum belirlendikten sonra açık hava koşullarında sabitken veya 0,2 metrekare saniyeden daha az ivmeyle hareket ederken, konumu en az% 95 oranında 20 metre içinde, hızı ise 0,2 metre saniye içinde hesaplamak için yeterli olan GNSS sanal menzilleri ve sanal menzil hızlarını bildirmelidir.
Watch cihaz uygulamalarında 3 eksenli jiroskop varsa:
- [7.3.4/W-2-1] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Cihaz uygulamalarını izleme:
-
[7.4.3/W-0-1] Bluetooth'u DESTEKLEMELİDİR.
-
[7.6.1/W-0-1] Uygulama özel verileri ("/data" bölümü olarak da bilinir) için en az 1 GB kalıcı depolama alanı BULUNMASI GEREKİR.
-
[7.6.1/W-0-2] Çekirdek ve kullanıcı alanında en az 416 MB bellek BULUNMASI GEREKİR.
-
[7.8.1/W-0-1] Mikrofon içermelidir.
-
[7.8.2/W] Ses çıkışı OLABİLİR.
2.4.2. Multimedya
Ek koşul yoktur.
2.4.3. Yazılım
Cihaz uygulamalarını izleme:
- [3/W-0-1]
android.hardware.type.watch
özelliğini İLAN ETMELİDİR. - [3/W-0-2] uiMode = UI_MODE_TYPE_WATCH desteklenmelidir.
- [3.2.3.1/W-0-1] Burada listelenen aşağıdaki uygulama intent'leriyle tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulama ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.
Cihaz uygulamalarını izleme:
- [3.8.4/W-SR] Yardımcı işlem'i işlemek için cihaza bir yardımcı uygulamanın uygulanması önemle ÖNERİLİR.
android.hardware.audio.output
özellik işaretini açıklayan 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 motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevselliğine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi önemle ÖNERİLİR.
Kol saati cihazı uygulamaları android.hardware.audio.output özelliğini raporluyorsa:
-
[3.11/W-SR] Cihazdaki dilleri destekleyen bir TTS motoru eklenmesi ö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üç
Kol saati cihazı uygulamaları, AOSP'de bulunan ve cihaz güç yönetimini iyileştirmeye yönelik veya AOSP'de bulunan özellikleri genişleten özellikler içeriyorsa:
- [8.3/W-SR] Uygulama bekleme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaların gösterilmesi için kullanıcılara kolaylık sağlamak önemle ÖNERİLİR.
- [8.3/W-SR] Pil tasarrufu özelliğini etkinleştirmek ve devre dışı bırakmak için kullanıcılara kolaylık sağlamak önemle ÖNERİLİR.
Cihaz uygulamalarını izleme:
- [8.4/W-0-1] Her donanım bileşeninin mevcut tüketim değerini ve Android Open Source Project sitesinde belirtildiği gibi 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 bildirmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/W-0-4] Bu güç kullanımını,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır. - [8,4/W], donanım bileşeninin güç kullanımını bir uygulamaya bağlayamıyorsanız donanım bileşeninin kendisine bağlanmalıdır.
2.4.5. Güvenlik Modeli
Kol saati cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini belirtmiyorsa:
- [9.5/W-1-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki yeteneklerini yönetmelerine 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 hızlıca oluşturabilir ve bu ortamlarda bulunan uygulamalarda daha ayrıntılı kısıtlamalar yönetebilir.
Kol saati cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini belirtiyorsa:
- [9.5/W-2-1] Kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'deki kontrollerin uygulanmasıyla uyumlu OLMALIDIR.
2.5. Otomotiv Şartları
Android Automotive uygulaması, sistem ve/veya bilgi-eğlence işlevinin bir kısmı ya da tamamı için işletim sistemi olarak Android'i çalıştıran bir araç ana birimini ifade eder.
Android cihaz uygulamaları, android.hardware.type.automotive
özelliğini beyan ediyorsa veya aşağıdaki ölçütlerin tümünü karşılıyorsa Otomotiv olarak sınıflandırılır.
- Bir otomotiv aracının parçası olarak yerleştirilmiş veya bu araca takılabilir olmalıdır.
- Birincil ekran olarak sürücü koltuğu satırındaki bir ekran kullanıyorsanız.
Bu bölümün geri kalanındaki ek şartlar, Android Automotive cihaz uygulamalarında geçerlidir.
2.5.1. Donanım
Otomotiv cihaz uygulamaları:
- [7.1.1.1/A-0-1] Fiziksel diyagonal boyutu en az 6 inç olan bir ekrana sahip OLMALIDIR.
-
[7.1.1.1/A-0-2] En az 750 dp x 480 dp ekran boyutu düzenine sahip OLMALIDIR.
-
[7.2.3/A-0-1] Ana Sayfa işlevini ZORUNLU KULLANIYOR ve Geri ve Son İşlevleri KULLANIYOR OLABİLİR.
- [7.2.3/A-0-2] Geri işlevinin (
KEYCODE_BACK
) hem normal hem de uzun basma etkinliğini ön plandaki uygulamaya GÖNDERMELİDİR. - [7.3/A-0-1]
GEAR_SELECTION
,NIGHT_MODE
,PERF_VEHICLE_SPEED
vePARKING_BRAKE_ON
özelliklerini UYGULAMALI ve raporlamalıdır. - [7.3/A-0-2]
NIGHT_MODE
işaretinin değeri, gösterge paneli gündüz/gece moduyla tutarlı OLMALI ve ortam ışığı sensörünün girişine dayalı OLMALIDIR. Temel ortam ışığı sensörü, fotometre ile aynı OLABİLİR. - [7.3/A-0-3] Sağlanan her sensör için SensorAdditionalInfo kapsamında sensör ek bilgi alanı
TYPE_SENSOR_PLACEMENT
sağlanmalıdır. - [7.3/A-0-1] GPS/GNSS'yi ek sensörlerle birleştirerek konum tahmini YAPABİLİR. Konum tahmini ise ilgili sensör türlerini ve/veya kullanılan araç mülkü kimliklerini uygulamanız ve bildirmeniz önemle tavsiye edilir.
- [7.3/A-0-2] LocationManager#requestLocationUpdates() aracılığıyla istenen konum harita ile eşlenmemelidir.
Otomotiv cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/A-1-1] En az 100 Hz'e kadar frekanstaki etkinlikleri raporlayabilmelidir.
- [7.3.1/A-1-2] Android araç sensör koordinat sistemine UYGUN OLMALIDIR.
Otomotiv cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:
- [7.3.4/A-2-1] En az 100 Hz'e kadar frekansta etkinlikleri raporlayabilmelidir.
- [7.3.4/A-2-2]
TYPE_GYROSCOPE_UNCALIBRATED
sensörünü de UYGULAMALIDIR. - [7.3.4/A-2-3] Saniyede 250 dereceye kadar yön değişikliklerini ölçebilmelidir.
- [7.3.4/A-SR] Olası çözünürlüğü en üst düzeye çıkarmak için jiroskopun ölçüm aralığını +/-250dps olarak yapılandırmanızı önemle ÖNERİRİZ
Otomotiv cihaz uygulamaları bir GPS/GNSS alıcı içeriyor ancak hücresel ağa dayalı veri bağlantısı içermiyorsa:
- [7.3.3/A-3-1] GPS/GNSS alıcısı ilk açıldığında veya 4 günden uzun bir süre sonra 60 saniye içinde konumu BULMALIDIR.
- [7.3.3/A-3-2] Diğer tüm konum istekleri (ör.ilk kez gönderilmeyen veya 4 günden uzun süre sonra gönderilen istekler) için 7.3.3/C-1-2 ve 7.3.3/C-1-6'da açıklanan ilk düzeltme süresi ölçütlerini ETMELIDİR. 7.3.3/C-1-2 şartı, genellikle hücresel ağ tabanlı veri bağlantısı olmayan araçlarda, alıcıda hesaplanan GNSS yörünge tahminleri kullanılarak veya bilinen son araç konumu ile birlikte 7.3.3/C-1-3'ü karşılayan bir konum doğruluğuyla en az 60 saniye boyunca seyir hesaplaması yapma özelliği kullanılarak ya da her ikisinin bir kombinasyonu kullanılarak karşılanır.
Otomotiv cihaz uygulamaları:
- [7.4.3/A-0-1] Bluetooth'u DESTEKLEMELİ ve Bluetooth LE'yi DESTEKLEMELİDİR.
- [7.4.3/A-0-2] Android Automotive uygulamaları aşağıdaki Bluetooth profillerini DESTEKLEMELİDİR:
- 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 (PBAP) kullanılarak kişi paylaşımı.
-
[7.4.3/A-SR] Mesaj Erişim Profili'ni (MAP) desteklemeleri önemle ÖNERİLİR.
-
[7.4.5/A] Hücresel ağa dayalı veri bağlantısı desteği İÇERMELİDİR.
- [7.4.5/A] Sistem uygulamalarının kullanabileceği ağlar için Sistem API'si
NetworkCapabilities#NET_CAPABILITY_OEM_PAID
sabit değerini KULLANABİLİYOR.
Dış kamera, araç kamerası gibi cihaz uygulamasının dışındaki sahneleri görüntüleyen bir kameradır.
Otomotiv cihaz uygulamaları:
- Bir veya daha fazla dış kamera içermelidir.
Otomotiv cihaz uygulamalarında dış görüntü kamerası varsa bu kamera için:
- [7.5/A-1-1] Dış kameralar, kamera temel koşullarına uymadığı sürece Android Kamera API'leri aracılığıyla erişilebilir OLMAMALISDIR.
- [7.5/A-SR] Kamera önizlemesini döndürmemek veya yatay olarak yansıtmamak önemle ÖNERİLİR.
- [7.5.5/A-SR] Kameranın uzun boyutunun ufukla hizalanacak şekilde yönlendirilmesi önemle ÖNERİLİR.
- [7.5/A-SR] En az 1,3 megapiksel çözünürlüğe sahip olmaları önemle ÖNERİLİR.
- Sabit odaklı veya EDOF (geniş alan derinliği) donanımına sahip OLMALIDIR.
- Android senkronizasyon çerçevesini desteklemelidir.
- 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 ("/data" bölümü olarak da bilinir) için en az 4 GB kalıcı depolama alanı BULUNMASI GEREKİR.
-
[7.6.1/A] Veri bölümünü, flash depolamada daha iyi performans ve uzun ömür sağlamak için biçimlendirmelidir (ör.
f2fs
dosya sistemini kullanarak).
Automotive cihaz uygulamaları, çıkarılamayan dahili depolama alanının bir kısmı aracılığıyla paylaşılan harici depolama alanı sağlıyorsa:
- [7.6.1/A-SR] Harici depolama alanında gerçekleştirilen işlemlerde G/Ç ek yükünü azaltmak için
SDCardFS
kullanılarak GÜÇLÜ ŞEKİLDE ÖNERİLİR.
Otomotiv cihaz uygulamaları 32 bit ise:
-
[7.6.1/A-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği 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
- mdpi veya büyük ekranlarda daha düşük
-
[7.6.1/A-1-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanında kullanılabilen bellek en az 608 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya daha yüksek
- Büyük ekranlarda hdpi veya daha yüksek
- mdpi veya daha yüksek çözünürlüklü çok büyük ekranlar
-
[7.6.1/A-1-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 896 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 dpi veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
-
[7.6.1/A-1-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1344 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
Automotive cihaz uygulamaları 64 bit ise:
-
[7.6.1/A-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanında 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
- mdpi veya büyük ekranlarda daha düşük
-
[7.6.1/A-2-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 944 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya daha yüksek
- Büyük ekranlarda hdpi veya daha yüksek
- mdpi veya daha yüksek çözünürlüklü çok büyük ekranlar
-
[7.6.1/A-2-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 dpi veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
-
[7.6.1/A-2-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1.824 MB OLMALIDIR:
- Küçük/normal ekranlarda 560 dpi veya daha yüksek
- Büyük ekranlarda 400 dpi veya daha yüksek
- Ekstra büyük ekranlarda xhdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanında kullanılabilen bellek" ifadesinin, radyo ve video gibi donanım bileşenlerine ayrılmış belleklere ek olarak, cihaz uygulamalarında çekirdeğin kontrolü altında olmayan bellek alanını ifade ettiğini unutmayın.
Otomotiv cihaz uygulamaları:
- [7.7.1/A] Çevre birimi modunu destekleyen bir USB bağlantı noktası DAHİL OLMALIDIR.
Otomotiv cihaz uygulamaları:
- [7.8.1/A-0-1] Mikrofon içermelidir.
Otomotiv cihaz uygulamaları:
- [7.8.2/A-0-1] Ses çıkışına sahip OLMALI ve
android.hardware.audio.output
değerini beyan etmelidir.
2.5.2. Multimedya
Otomotiv cihaz uygulamaları aşağıdaki ses kodlama ve kod çözme biçimlerini desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [5.1/A-0-1] MPEG-4 AAC Profili (AAC LC)
- [5.1/A-0-2] MPEG-4 HE AAC Profili (AAC+)
- [5.1/A-0-3] AAC ELD (düşük gecikmeli gelişmiş AAC)
Otomotiv cihaz uygulamaları aşağıdaki video kodlama biçimlerini desteklemeli ve üçüncü taraf uygulamalarına sunmalıdır:
Otomotiv cihaz uygulamaları aşağıdaki video kod çözme biçimlerini desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:
Otomotiv cihaz uygulamalarının aşağıdaki video kod çözme işlemlerini desteklemesi ö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 İLANCA ETMELİSİN. -
[3/A-0-2] uiMode =
UI_MODE_TYPE_CAR
desteklenmelidir. -
[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
kullanarak özel bir API sağlıyorsa:
- [3/A-1-1] Sistem uygulamasının bu mülkleri kullanımına özel ayrıcalıklar eklememeli veya üçüncü taraf uygulamalarının bu mülkleri kullanmasını engellememelidir.
- [3/A-1-2] SDK'da zaten mevcut olan bir araç mülkünü kopyalamamalıdır.
Otomotiv cihaz uygulamaları:
-
[3.2.1/A-0-1] Otomotiv İzinleri referans sayfasında belirtildiği gibi tüm izin sabitlerini desteklemeli ve uygulamalıdır.
-
[3.2.3.1/A-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulamayı ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.
-
[3.4.1/A-0-1]
android.webkit.Webview
API'sinin eksiksiz bir uygulamasını SAĞLAMALIDIR. -
[3.8.3/A-0-1] Üçüncü taraf uygulamaları tarafından istendiğinde
Notification.CarExtender
API'sini kullanan bildirimleri GÖSTERMELİDİR. -
[3.8.4/A-SR] Yardımcı işlem'i gerçekleştirmek için cihaza bir asistan uygulamanız önemle tavsiye edilir.
Automotive cihaz uygulamaları bir bas konuş düğmesi içeriyorsa:
- [3.8.4/A-1-1] Kullanıcı tarafından seçilen yardımcı uygulamayı (yani
VoiceInteractionService
'i uygulayan uygulamayı) başlatmak için belirlenen etkileşim olarak kısa bir süre basılı tutulan bas konuş düğmesi KULLANILMALIDIR.
Otomotiv cihaz uygulamaları:
- [3.8.3.1/A-0-1] Kaynakları
Notifications on Automotive OS
SDK dokümanlarında açıklandığı gibi doğru şekilde oluşturmalıdır. - [3.8.3.1/A-0-2] Bildirim işlemleri için
Notification.Builder.addAction()
üzerinden sağlananların yerine OYNAT ve SESSİZ'i GÖSTERMELİDİR - [3.8.3.1/A] Bildirim kanalı başına denetimler gibi zengin yönetim görevlerinin kullanımını KISITLAMALIDIR. Denetimleri azaltmak için uygulama başına kullanıcı arayüzü olanağı kullanabilir.
Otomotiv cihaz uygulamaları:
- [3.14/A-0-1] 3.14 bölümünde açıklandığı gibi medya API'lerini kullanan üçüncü taraf uygulamalarını desteklemek için bir kullanıcı arayüzü çerçevesi İÇERMELİDİR.
- [3.14/A-0-2] Kullanıcının sürüş sırasında medya uygulamalarıyla güvenli bir şekilde etkileşim kurmasına izin VERMELİDİR.
- [3.14/A-0-3]
CAR_EXTRA_MEDIA_PACKAGE
ekstrasıylaCAR_INTENT_ACTION_MEDIA_TEMPLATE
örtülü Intent işlemini desteklemelidir. - [3.14/A-0-4] Bir medya uygulamasının tercih etkinliğine gitme olanağı SAĞLAMALIDIR ancak bunu yalnızca Araba Kullanıcı Deneyimi Kısıtlamaları geçerli olmadığında etkinleştirmelidir.
- [3.14/A-0-5] Medya Uygulamaları tarafından ayarlanan hata mesajlarını göstermeli ve isteğe bağlı ek özellikler olan
ERROR_RESOLUTION_ACTION_LABEL
veERROR_RESOLUTION_ACTION_INTENT
'ı desteklemelidir. - [3.14/A-0-6] Arama özelliğini destekleyen uygulamalarda uygulama içi arama özelliği desteklenmelidir.
- [3.14/A-0-7] MediaBrowser hiyerarşisini görüntülerken
CONTENT_STYLE_BROWSABLE_HINT
veCONTENT_STYLE_PLAYABLE_HINT
tanımlarına UYGUN OLMALIDIR.
Automotive cihaz uygulamaları varsayılan bir başlatıcı uygulaması içeriyorsa:
- [3.14/A-1-1] Medya hizmetlerini İÇERMELİ ve bunları
CAR_INTENT_ACTION_MEDIA_TEMPLATE
intent'iyle AÇMALIDIR.
Otomotiv cihaz uygulamaları:
- [3.8/A] Uygulama isteklerinin tam ekran moduna girmesini
immersive documentation
bölümünde açıklandığı şekilde kısıtlayabilir. - [3.8/A] Durum çubuğunu ve gezinme çubuğunu her zaman görünür tutabilir.
- [3.8/A] Uygulama isteklerinin, sistem kullanıcı arayüzü öğelerinin arkasındaki renkleri değiştirmesini kısıtlayabilir. Böylece bu öğeler her zaman net bir şekilde görünür.
2.5.4. Performans ve Güç
Otomotiv cihaz uygulamaları:
- [8.2/A-0-1] Sistem API'si
android.car.storagemonitoring.CarStorageMonitoringManager
aracılığıyla istatistiklerin geliştiricilere sunulabilmesi için her bir işlemin UID'si başına kalıcı olmayan depolama alanına okunan ve yazılan bayt sayısını bildirmelidir. Android Açık Kaynak Projesi,uid_sys_stats
çekirdek modülü aracılığıyla bu koşulu karşılar. - [8.3/A-1-3] Garaj Modu'nu desteklemelidir.
- [8.3/A] Aşağıdaki durumlar hariç her sürüşten sonra en az 15 dakika boyunca Garaj modunda OLMALIDIR:
- Pilin şarjı bitmiş olabilir.
- Boş işler planlanmaz.
- Sürücü, Garaj modundan çıkar.
- [8.4/A-0-1] Her donanım bileşeninin mevcut tüketim değerini ve Android Open Source Project sitesinde belirtildiği gibi bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili ZORUNLUDUR.
- [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 bildirmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/A] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.
- [8.4/A-0-4] Bu güç kullanımını,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır.
2.5.5. Güvenlik Modeli
Automotive cihaz uygulamaları birden fazla kullanıcıyı destekliyorsa:
- [9.5/A-1-1] Kullanıcıların cihaz sağlama dışında Başsız Sistem Kullanıcısı ile etkileşim kurmasına veya bu kullanıcıya geçmesine İZİN VERMEMELİDİR.
- [9.5/A-1-2]
BOOT_COMPLETED
'den önce İkincil Kullanıcı'ya geçmelisiniz. - [9.5/A-1-3] Bir cihazdaki maksimum kullanıcı sayısına ulaşıldığında 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] Android Keystore sisteminin desteklenen algoritmalarını çekirdekte ve daha üst katmanlarda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 karma oluşturma işlevlerinin uygulanması GEREKİR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı yönlü Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu koşulu karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hipervizör tabanlı yalıtımın üçüncü taraflarca incelenmiş güvenli bir uygulaması da alternatif seçenekler arasındadır.
- [9.11/A-0-3] Kilit ekranı kimlik doğrulamasını izole yürütme ortamında YAPMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamasına bağlı anahtarların kullanılmasına izin vermelidir. Kilit ekranı kimlik bilgileri, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulamasını gerçekleştirmesine izin verecek şekilde SAKLANMALIDIR. Yukarı yönlü Android Açık Kaynak Projesi, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
- [9.11/A-0-4] Onaylama imzalama anahtarının güvenli donanımla korunduğu ve imzalamanın güvenli donanımda yapıldığı durumlarda anahtar onayı desteklenmelidir. Onaylama imzalama anahtarları, anahtarların cihaz tanımlayıcısı olarak kullanılmasını önlemek için yeterince çok sayıda cihazda PAYLAŞILMALIDIR. Bu koşulu karşılamak için,belirli bir SKU'dan en az 100.000 adet üretilmediği sürece aynı doğrulama anahtarını paylaşabilirsiniz. Bir SKU'dan 100.000'den fazla birim üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Bir cihaz uygulaması daha önce bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme şartından muaf olduğunu unutmayın. Bunun için cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint
özelliğini belirtmesi gerekir.
Otomotiv cihaz uygulamaları:
- [9.14/A-0-1] Android çerçevesi araç alt sistemlerinden gelen mesajları kontrol etmelidir (ör. izin verilen mesaj türlerini ve mesaj kaynaklarını izin verilenler listesine ekleme).
- [9.14/A-0-2] Android çerçevesi veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı gözetmen olmalıdır. Bu sayede, araç ağını trafikle dolduran ve araç alt sistemlerinin çalışmamasına yol açabilecek kötü amaçlı yazılımlara karşı koruma sağlanır.
2.5.6. Geliştirici Araçları ve Seçenekleri Uyumluluğu
Otomotiv cihaz uygulamaları:
-
Perfetto
- [6.1/A-0-1] Kabuk kullanıcısına
/system/bin/perfetto
ikili dosyası göstermeLİDİR. Bu ikili dosyanın komut satırı, perfetto belgelerine uygun olmalıdır. - [6.1/A-0-2] perfetto ikili dosyası, giriş olarak perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırması kabul ETMELİDİR.
- [6.1/A-0-3] Perfetto ikili dosyası, çıkış olarak perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izlemesi yazmalıdır.
- [6.1/A-0-4] Perfetto dokümanlarında açıklanan veri kaynaklarının en azından bir kısmını, perfetto ikili dosyası aracılığıyla SAĞLAMALIDIR.
- [6.1/A-0-1] Kabuk kullanıcısına
2.6. Tablet Gereksinimleri
Android tablet cihaz, genellikle aşağıdaki tüm ölçütleri karşılayan bir Android cihaz uygulamasını ifade eder:
- İki elle tutularak kullanılır.
- Kapaklı veya dönüştürülebilir yapılandırma yoktur.
- Cihazla birlikte kullanılan fiziksel klavye uygulamaları standart bir bağlantı (ör. USB, Bluetooth) üzerinden bağlanır.
- Hareketliliği sağlayan bir güç kaynağına (ör. pil) sahiptir.
- Fiziksel çapraz ekran boyutu 7 ila 18 inç arasındadır.
Tablet cihaz uygulamalarının gereksinimleri, el cihazı uygulamalarınınkine benzer. İstisnalar ilgili bölümde * işaretiyle belirtilir ve bu bölümde referans olarak not edilir.
2.6.1. Donanım
Ekran Boyutu
- [7.1.1.1/Tab-0-1] 7 ila 18 inç arasında bir ekrana sahip OLMALIDIR.
Jiroskop
Tablet cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:
- [7.3.4/Tab-1-1] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Minimum Bellek ve Depolama (Bölüm 7.6.1)
El cihazı koşullarında küçük/normal ekranlar için listelenen ekran yoğunlukları tabletler için geçerli değildir.
USB çevre birimi modu (Bölüm 7.7.1)
Tablet cihaz uygulamaları, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.1/Tab] Android Open Accessory (AOA) API'yi UYGULAYABİ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 şartları tabletler için geçerli değildir.
2.6.2. Güvenlik Modeli
Anahtarlar ve Kimlik Bilgileri (Bölüm 9.11)
[9.11] bölümüne bakın.
Tablet cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini belirtmiyorsa:
- [9.5/T-1-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki yeteneklerini yönetmelerine 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 hızlıca oluşturabilir ve bu ortamlarda bulunan uygulamalarda daha ayrıntılı kısıtlamalar yönetebilir.
Tablet cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildirirse:
- [9.5/T-2-1] Kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'deki kontrollerin uygulanmasıyla uyumlu OLMALIDIR.
2.6.2. Yazılım
- [3.2.3.1/Tab-0-1] Burada listelenen aşağıdaki uygulama intent'leriyle tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulamayı ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.
3. Yazılım
3.1. Yönetilen API Uyumluluğu
Yönetilen Dalvik bayt kodu yürütme ortamı, Android uygulamaları için birincil araçtır. Android uygulama programlama arayüzü (API), yönetilen çalışma ortamı içinde çalışan uygulamalara sunulan Android platform arayüzleri grubudur.
Cihaz uygulamaları:
-
[C-0-1] Android SDK'sı tarafından sunulan tüm belgelenmiş API'lerin veya yayın öncesi Android kaynak kodunda "@SystemApi" işaretçisiyle süslenmiş tüm API'lerin, belgelenen tüm davranışlar da dahil olmak üzere eksiksiz uygulamalarını SAĞLAMALIDIR.
-
[C-0-2] TestApi ek açıklamasıyla (@TestApi) işaretlenmiş tüm sınıfları, yöntemleri ve ilişkili öğeleri desteklemeli/korumalıdır.
-
[C-0-3] Bu Uyumluluk Tanımı'nda özel olarak izin verildiği durumlar hariç, yönetilen API'leri atlamamalı, API arayüzlerini veya imzalarını değiştirmemeli, belgelenen davranıştan sapmamalı ya da işlem yapmama işlemleri içermemelidir.
-
[C-0-4] Android'in API'leri içerdiği bazı donanım özellikleri atlanmış olsa bile API'leri mevcut tutmalı ve makul bir şekilde davranmalıdır. Bu senaryoya özgü gereksinimler için 7. bölüme bakın.
-
[C-0-5] Üçüncü taraf uygulamaların, AOSP'deki önyükleme sınıf yolu içinde bulunan ve herkese açık SDK'nın bir parçası olmayan Java dil paketlerindeki yöntemler ve alanlar olarak tanımlanan SDK dışı arayüzleri kullanmasına İZİN VERMEMELİDİR. Buna, SDK dokümanlarında açıklandığı gibi
@hide
notasyonuyla süslenmiş ancak@SystemAPI
notasyonuyla süslenmemiş API'ler ve özel sınıf üyeleri dahildir. -
[C-0-6] AOSP'deki uygun API düzeyi dalının
prebuilts/runtime/appcompat/hiddenapi-flags.csv
yolundaki geçici ve engellenenler listesi işaretleri aracılığıyla sağlananla aynı kısıtlanmış listelerde bulunan her bir SDK dışı arayüzle birlikte GÖNDERİLMELİDİR. -
[C-0-7] AOSP'de mevcut olan herkese açık anahtarları kullanarak imzalı yapılandırmayı herhangi bir APK'ya yerleştirerek SDK dışı arayüzleri kısıtlanmış listeden kaldırmak için imzalı yapılandırma dinamik güncelleme mekanizmasını DESTEKLEMELİDİR.
Ancak:
- GİBİ, gizli bir API yoksa veya cihaz uygulamasında farklı şekilde uygulanmışsa gizli API'yi engellenenler listesine taşıyın ya da tüm kısıtlanmış listelerden (ör. açık gri, koyu gri, siyah) çıkarın.
- AOSP'de gizli bir API yoksa gizli API'yi kısıtlanmış listelerden birine (ör. açık gri, koyu gri, siyah) ekleyebilir.
3.1.1. Android Uzantıları
Android, belirli bir API düzeyinin uzantı sürümünü güncelleyerek söz konusu API düzeyinin yönetilen API yüzeyinin genişletilmesini destekler. android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel)
API, ilgili API düzeyi için uzantı varsa sağlanan apiLevel
öğesinin uzantı sürümünü döndürür.
Android cihaz uygulamaları:
-
[C-0-1] Hem paylaşılan kitaplık
ExtShared
hem de hizmetlerExtServices
için AOSP uygulamasını, her API düzeyi için izin verilen minimum sürümlerden daha büyük veya bu sürümlere eşit sürümlerle önceden yüklemelidir. Örneğin, API düzeyi 24'ü çalıştıran Android 7.0 cihaz uygulamaları en az 1. sürümü İÇERMELİDİR. -
[C-0-2] Yalnızca AOSP tarafından tanımlanmış geçerli uzantı sürüm numarasını döndürmelidir.
-
[C-0-3]
android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel)
tarafından döndürülen uzantı sürümleriyle tanımlanan tüm API'leri, 3.1 numaralı bölümdeki şartlara uygun olarak diğer yönetilen API'lerin desteklenmesiyle aynı şekilde DESTEKLEMELİDİR.
3.1.2. Android Kitaplığı
Apache HTTP istemcisinin desteğinin sonlandırılması nedeniyle cihaz uygulamaları:
- [C-0-1]
org.apache.http.legacy
kitaplığı, önyükleme sınıf yoluna YERLEŞTİRİLMEmelidir. - [C-0-2]
org.apache.http.legacy
kitaplığını uygulama sınıf yolu yoluna yalnızca uygulama aşağıdaki koşullardan birini karşıladığında eklemelidir:- API düzeyi 28 veya altını hedefler.
<uses-library>
öğesininandroid:name
özelliğiniorg.apache.http.legacy
olarak ayarlayarak manifest dosyasında kitaplığa ihtiyaç duyduğunu belirtir.
AOSP uygulaması bu koşulları karşılar.
3.2. Soft API Uyumluluğu
Android, 3.1 numaralı bölümdeki yönetilen API'lere ek olarak, uygulama derleme zamanında uygulanamayan Android uygulamalarının intent'leri, izinleri ve benzer yönleri gibi öğeler biçiminde yalnızca çalışma zamanında kullanılabilen önemli bir "yumuşak" API de içerir.
3.2.1. İzinler
- [C-0-1] Cihaz uygulayıcıları, izin referans sayfasında belirtildiği gibi tüm izin sabitlerini desteklemeli ve uygulamalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek koşulların listelendiğini unutmayın.
3.2.2. Derleme Parametreleri
Android API'leri, android.os.Build sınıfında mevcut cihazı tanımlamak için tasarlanmış bir dizi sabit içerir.
- [C-0-1] Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının uyması GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre | Ayrıntılar |
---|---|
VERSION.RELEASE | Şu anda çalışan Android sisteminin, kullanıcılar tarafından okunabilir biçimdeki sürümü. Bu alanda 11 bölümünde tanımlanan dize değerlerinden biri BULUNMASI GEREKİR. |
VERSION.SDK | Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 11 için bu alanda 11_INT tam sayı değeri BULUNMASI GEREKİR. |
VERSION.SDK_INT | Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 11 için bu alanda 11_INT tam sayı değeri BULUNMASI GEREKİR. |
VERSION.INCREMENTAL | Cihaz uygulayıcısı tarafından seçilen ve o anda çalışan Android sisteminin belirli derlemesini kullanıcılar tarafından okunabilir biçimde belirten bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişiklik tanımlayıcısının kullanıldığını belirtmektir. Bu alanın değeri, yazdırılabilir 7 bit ASCII olarak kodlanabilir ve "^[^ :\/~]+$" normal ifadesiyle eşleşmelidir. |
MASA | Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı kullanıcılar tarafından okunabilir biçimde tanımlayan bir değer. Bu alanın olası bir kullanımı, cihazı besleyen kartın belirli bir revizyonunu belirtmektir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
BRAND | Cihazla ilişkili marka adını son kullanıcıların bildiği şekilde yansıtan bir değer. Kullanıcı tarafından okunabilir biçimde OLMALI ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını temsil ETMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
SUPPORTED_ABIS | Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility. |
SUPPORTED_32_BIT_ABIS | Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility. |
SUPPORTED_64_BIT_ABIS | Yerel kodun ikinci talimat setinin (CPU türü + ABI kuralı) adı. 3.3. bölüme bakın. Native API Compatibility. |
CPU_ABI | Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility. |
CPU_ABI2 | Yerel kodun ikinci talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility. |
CİHAZ | Cihaz uygulayıcısı tarafından seçilen, cihazın donanım özelliklerinin yapılandırmasını ve endüstriyel tasarımını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEMELİDİR. |
FINGERPRINT |
Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunaklı OLMALIDIR. Şu şablona UYGUN OLMALIDIR:
$(BRAND)/$(PRODUCT)/ Örnek:
acme/myproduct/ Parmak izi boşluk karakteri İÇERMEMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALIDIR. |
DONANIM | Donanımın adı (çekirdek komut satırından veya /proc'ten). Makul ölçüde okunaklı OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
HOST | Derlemenin oluşturulduğu ana makineyi benzersiz şekilde tanımlayan, kullanıcıların okuyabileceği biçimde bir dize. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
Kimlik | Cihaz uygulayıcısı tarafından, belirli bir sürümü belirtmek için kullanıcı tarafından okunabilir biçimde seçilen bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapabileceği kadar anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir. |
ÜRETİCİ | Ürünün özgün donanım üreticisinin (OEM) ticari adı. Bu alanın biçimi için herhangi bir koşul yoktur. Yalnızca boş veya boş dize ("") OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEmelidir. |
MODEL | Cihaz uygulayıcısı tarafından seçilen ve son kullanıcının bildiği cihaz adını içeren bir değer. Bu, cihazın pazarlandığı ve son kullanıcılara satıldığı adla aynı OLMALIDIR. Bu alanın biçimi için herhangi bir koşul yoktur. Yalnızca boş veya boş dize ("") OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEmelidir. |
ÜRÜN | Cihaz uygulayıcısı tarafından seçilen ve belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değerdir. Bu değer, aynı marka içinde benzersiz OLMALIDIR. Kullanıcılar tarafından okunabilir OLMALIDIR ancak son kullanıcılar tarafından görüntülenmesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım süresi boyunca DEĞİŞTİRİLMEMELİDİR. |
SERİ | "UNKNOWN" değerini döndürmelidir. |
ETİKETLER | Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayırt edici hale getiren, virgülle ayrılmış etiket listesi. Etiketler 7 bit ASCII olarak kodlanabilir, "^[a-zA-Z0-9._-]+" normal ifadesiyle eşleşmeli ve üç tipik Android platformu imzalama yapılandırmasına karşılık gelen değerlerden birine sahip olmalıdır: release-keys, dev-keys ve test-keys. |
SÜRE | Derlemenin gerçekleştiği zamanın zaman damgasını temsil eden bir değer. |
TÜR | Derlemenin çalışma zamanı yapılandırmasını belirten, cihaz uygulayıcısı tarafından seçilen bir değer. Bu alanda, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri BULUNMASI GEREKİR: user, userdebug veya eng. |
KULLANICI | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı veya kullanıcı kimliği. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
VERSION.SECURITY_PATCH | Bir derlemenin güvenlik yaması düzeyini gösteren bir değer. Derlemenin, belirtilen Android Herkese Açık Güvenlik Bülteni'nde açıklanan sorunlardan hiçbirine karşı herhangi bir şekilde güvenlik açığı olmadığını GÖSTERMELİDİR. [YYYY-AA-GG] biçiminde OLMALIDIR ve Android Herkese Açık Güvenlik Bülteni veya Android Güvenlik Uyarısı'nda belirtilen bir dizeyle eşleşmelidir (ör. "2015-11-01"). |
VERSION.BASE_OS | Android Public Security Bulletin'da sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden bir değer. Doğru değeri bildirmelidir ve böyle bir derleme yoksa boş bir dize ("") bildirmelidir. |
BOOTLOADER | Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili önyükleyici sürümünü kullanıcılar tarafından okunabilir biçimde tanımlayan bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir. |
getRadioVersion() | Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili radyo/modem sürümünü kullanıcılar tarafından okunabilir biçimde tanımlayan bir değer OLMALIDIR (olmalıdır veya döndürmelidir). Bir cihazda dahili radyo/modem yoksa NULL döndürülmelidir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir. |
getSerial() | Donanım seri numarası OLMALIDIR (olmalıdır veya döndürülmelidir). Bu numara, aynı MODEL ve ÜRETİCİ'ye sahip cihazlarda mevcut ve benzersiz OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir. |
3.2.3. Intent Uyumluluğu
3.2.3.1. Yaygın Uygulama Amaçları
Android intent'leri, uygulama bileşenlerinin diğer Android bileşenlerinden işlev istemesine olanak tanır. Android yayın öncesi projesi, yaygın işlemleri gerçekleştirmek için çeşitli intent kalıpları uygulayan uygulamaların listesini içerir.
Cihaz uygulamaları:
- [C-SR] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulamanın ya da hizmet bileşeninin önceden yüklenmesi ve SDK'da açıklandığı gibi bu ortak uygulama intent'leri için geliştirici beklentisini karşılaması önemle ÖNERİLİR.
Her cihaz türü için zorunlu uygulama amaçları hakkında bilgi edinmek üzere lütfen 2. Bölüm'e bakın.
3.2.3.2. Amaç Çözümü
-
[C-0-1] Android genişletilebilir bir platform olduğundan cihaz uygulamalarında, Ayarlar hariç olmak üzere 3.2.3.1 numaralı bölümde belirtilen her intent kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına izin VERİLMELİDİR. Android açık kaynaklı üst yayını, buna varsayılan olarak izin verir.
-
[C-0-2] Cihaz uygulayıcıları, sistem uygulamalarının bu intent kalıplarını kullanımına özel ayrıcalıklar eklememeli veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü devralmasını engellememelidir. Bu yasak, özellikle kullanıcının tümü aynı intent kalıbını işleyen birden fazla uygulama arasından seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bunlarla sınırlı değildir.
-
[C-0-3] Cihaz uygulamalarında, kullanıcıların intent'ler için varsayılan etkinliği değiştirmesi amacıyla bir kullanıcı arayüzü ZORUNLUDUR.
-
Ancak cihaz uygulamaları, varsayılan etkinlik veri URI için daha spesifik bir özellik sağladığında belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten bir intent filtresi kalıbı, tarayıcının "http://" için temel intent kalıbından daha spesifiktir.
Android, üçüncü taraf uygulamalarının belirli türde web URI intent'leri için yetkili bir varsayılan uygulama bağlama davranışı beyan etmesine olanak tanıyan bir mekanizma da içerir. Bir uygulamanın intent filtresi kalıplarında bu tür yetkili beyanlar tanımlandığında cihaz uygulamaları:
- [C-0-4] Yukarı yönlü Android Açık Kaynak Projesi'ndeki Paket Yöneticisi tarafından uygulandığı şekilde Digital Asset Links spesifikasyonunda tanımlanan doğrulama adımlarını uygulayarak tüm intent filtrelerini doğrulamaya ÇALIŞMALIDIR.
- [C-0-5] Uygulamanın yüklenmesi sırasında niyet filtrelerinin doğrulanmasını DENEYMELİ ve başarıyla doğrulanmış tüm URI niyet filtrelerini URI'leri için varsayılan uygulama işleyicileri olarak ayarlamalıdır.
- Belirli URI intent filtrelerini, URI'leri için varsayılan uygulama işleyicileri olarak ayarlayabilir (bu filtreler başarıyla doğrulanmışsa ancak diğer URI filtresi adayları doğrulanamazsa). Bir cihaz uygulaması bunu yaparsa kullanıcıya ayarlar menüsünde URI başına uygun kalıp geçersiz kılma seçenekleri SUNULMALIDIR.
- Kullanıcıya Ayarlar'da uygulama başına Uygulama Bağlantıları kontrolleri sağlamalıdır. Bu kontroller aşağıdaki gibi olmalıdır:
- [C-0-6] Kullanıcı, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütünsel olarak geçersiz kılabilmelidir. Bu davranış, uygulamanın her zaman açılması, her zaman sorulması veya hiç açılmaması şeklinde olabilir ve tüm URI intent filtresi adayları için eşit şekilde geçerli olmalıdır.
- [C-0-7] Kullanıcı, URI intent filtresi adaylarının listesini görebilmelidir.
- Cihaz uygulaması, kullanıcıya başarılı bir şekilde doğrulanmış belirli URI intent filtrelerini intent filtresi bazında geçersiz kılma olanağı SUNABİLİR.
- [C-0-8] Cihaz uygulaması, bazı URI intent filtrelerinin doğrulamayı geçerken bazılarının başarısız olmasına izin veriyorsa kullanıcılara belirli URI intent filtrelerini görüntüleme ve geçersiz kılma olanağı SUNMALIDIR.
3.2.3.3. Intent Ad Alanları
- [C-0-1] Cihaz uygulamalarında, android veya com.android. ad alanındaki bir ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni intent veya yayın intent kalıplarını dikkate alan Android bileşenleri BULUNMAMALIDIR.
- [C-0-2] Cihaz uygulayıcıları, başka bir kuruluşa ait paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni intent'leri veya yayın intent'i kalıplarını dikkate alan Android bileşenleri İÇERMEMELİDİR.
- [C-0-3] Cihaz uygulayıcıları, 3.2.3.1 numaralı bölümde listelenen intent kalıplarından hiçbirini değiştirmemeli veya genişletmemelidir.
- Cihaz uygulamalarında, kendi kuruluşlarıyla açıkça ilişkili olan ad alanlarını kullanan intent kalıpları YER ALABİLİR. Bu yasak, 3.6 numaralı bölümde Java dil sınıfları için belirtilene benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişikliklerden haberdar olmak için belirli intent'leri yayınlamak üzere platformdan yararlanır.
Cihaz uygulamaları:
- [C-0-1] SDK dokümanlarında açıklandığı şekilde, uygun sistem etkinliklerine yanıt olarak burada listelenen herkese açık yayın intent'lerini YAYINLAMALIDIR. Arka plan uygulamalarıyla ilgili sınırlama SDK dokümanlarında da açıklandığı için bu şartın 3.5 numaralı bölümle çelişmediğini unutmayın. Ayrıca belirli yayın intent'leri donanım desteğine bağlıdır. Cihaz gerekli donanımı destekliyorsa intent'leri yayınlamalı ve SDK dokümanlarına uygun davranışı sağlamalıdır.
3.2.3.5. Koşullu Uygulama Amaçları
Android, kullanıcılara varsayılan uygulamalarını (ör. ana ekran veya SMS) kolayca seçmelerini sağlayan ayarlar içerir.
Uygun olduğu durumlarda, cihaz uygulamalarında benzer bir ayarlar menüsü sağlanmalı ve SDK dokümanlarında aşağıda açıklandığı şekilde intent filtresi kalıbı ve API yöntemleriyle uyumlu olmalıdır.
Cihaz uygulamaları android.software.home_screen
değerini raporluyorsa:
- [C-1-1] Ana ekran için varsayılan uygulama ayarları menüsü göstermek üzere
android.settings.HOME_SETTINGS
intent'ini İÇERİR OLMALIDIR.
Cihaz uygulamaları android.hardware.telephony
değerini raporluyorsa:
-
[C-2-1] Varsayılan SMS uygulamasını değiştirmek için bir iletişim kutusu göstermek üzere
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 vermek için bir iletişim kutusu göstermek üzere
android.telecom.action.CHANGE_DEFAULT_DIALER
intent'ini UYGULAMALIDIR.- Acil durum aramaları hariç gelen ve giden aramalar için kullanıcı tarafından seçilen varsayılan Telefon uygulamasının kullanıcı arayüzünü KULLANMAK ZORUNDADIR. Acil durum aramaları için önceden yüklenmiş Telefon uygulaması kullanılır.
-
[C-2-3]
PhoneAccounts
ile ilişkiliConnectionServices
'ı ve telekomünikasyon servis sağlayıcının giden arama yapmak için kullanacağı varsayılan PhoneAccount'ı yapılandırmak üzere kullanıcıya kolaylık sağlamak için android.telecom.action.CHANGE_PHONE_ACCOUNTS intent'ini UYGUNLAMALIDIR. AOSP uygulaması, "Aramalar" ayarlar menüsüne "Arama Hesapları seçeneği" menüsü ekleyerek bu koşulu karşılar. -
[C-2-4]
android.app.role.CALL_REDIRECTION
rolüne sahip bir uygulama içinandroid.telecom.CallRedirectionService
izni VERİLMELİDİR. - [C-2-5] Kullanıcıya
android.app.role.CALL_REDIRECTION
rolüne sahip bir uygulama seçme olanağı SUNULMALIDIR. - [C-2-6] android.intent.action.SENDTO ve android.intent.action.VIEW intent'lerini dikkate ALMALI ve SMS mesajları göndermek/görüntülemek 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 android.intent.action.DIAL niyetlerini, bu niyetleri işleyebilecek ve SDK'da açıklandığı şekilde yerine getirebilecek önceden yüklenmiş bir telefon uygulamasıyla yerine getirmeniz önemle tavsiye edilir.
Cihaz uygulamaları android.hardware.nfc.hce
değerini raporluyorsa:
- [C-3-1] Temassız ödeme için varsayılan uygulama ayarları menüsünü göstermek üzere android.settings.NFC_PAYMENT_SETTINGS intent'ini UYGUNLAMALIDIR.
- [C-3-2] SDK'da açıklandığı gibi, kullanıcıdan belirli bir kategori için varsayılan kart taklidi hizmetini değiştirmesini isteyen bir iletişim kutusu açan bir etkinlik göstermek üzere android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT intent'ini UYGUNLAMALIDIR.
Cihaz uygulamaları android.hardware.nfc
değerini raporluyorsa:
- [C-4-1] SDK'da açıklandığı gibi, geliştiricilerin bu intent'lerle ilgili beklentilerini karşılayan bir etkinlik göstermek için android.nfc.action.NDEF_DISCOVERED, android.nfc.action.TAG_DISCOVERED ve android.nfc.action.TECH_DISCOVERED intent'lerini İÇERİR.
Cihaz uygulamaları VoiceInteractionService
'ü destekliyorsa ve aynı anda bu API'yi kullanan birden fazla uygulama yüklüyse:
- [C-4-1] Sesli giriş ve asistan için varsayılan uygulama ayarları menüsü göstermek üzere
android.settings.ACTION_VOICE_INPUT_SETTINGS
intent'ini UYGULAMALIDIR.
Cihaz uygulamaları android.hardware.bluetooth
değerini raporluyorsa:
- [C-5-1] 'android.bluetooth.adapter.action.REQUEST_ENABLE' intent'ini dikkate ALMALI 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’ intent'ini dikkate ALMALI ve bulunabilir modu isteyen bir sistem etkinliği göstermelidir.
Cihaz uygulamaları, DND özelliğini destekliyorsa:
- [C-6-1]
ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS
intent'ine yanıt verecek bir etkinlik UYGULANMALIDIR. UI_MODE_TYPE_NORMAL ile yapılan uygulamalarda bu etkinlik, kullanıcının uygulamaya DND politikası yapılandırmalarına erişim izni verebileceği veya vermeyeceği bir etkinlik OLMALIDIR.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:
- [C-7-1]
android.settings.INPUT_METHOD_SETTINGS
intent'ine yanıt olarak üçüncü taraf giriş yöntemleri eklemek ve yapılandırmak için kullanıcının erişebileceği bir mekanizma SAĞLANMALIDIR.
Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-8-1] Önceden yüklenmiş erişilebilirlik hizmetlerinin yanı sıra üçüncü taraf erişilebilirlik hizmetlerini etkinleştirmek ve devre dışı bırakmak için kullanıcıların erişebileceği bir mekanizma sağlama
android.settings.ACCESSIBILITY_SETTINGS
amacına uymalıdır.
Cihaz uygulamaları, kablosuz kolay bağlantı desteği içeriyorsa ve bu işlevi üçüncü taraf uygulamalarına sunuyorsa:
- [C-9-1] Settings#ACTION_PROCESS_WIFI_EASY_CONNECT_URI Intent API'lerini SDK dokümanlarında açıklandığı gibi UYGULAMALIDIR.
Cihaz uygulamalarında veri tasarrufu modu sunuluyorsa: * [C-10-1] Ayarlar bölümünde, Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
intent'ini işleyen ve kullanıcıların izin verilenler listesine uygulama eklemesine veya listeden uygulama kaldırmasına olanak tanıyan bir kullanıcı arayüzü ZORUNLUDUR.
Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:
- [C-11-1]
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
intent'ini işleyen bir etkinliğe sahip OLMALI ancak bunu işlem yapmadan uygulayabilir.
Cihaz uygulamaları, kamera desteğini android.hardware.camera.any
üzerinden belirtiyorsa:
- [C-12-1]
android.media.action.STILL_IMAGE_CAMERA
veandroid.media.action.STILL_IMAGE_CAMERA_SECURE
intent'ini dikkate ALMALI ve kamerayı SDK'da açıklandığı gibi sabit resim modunda başlatmalıdır. - [C-12-2] Kamerayı video modunda başlatmak için SDK'da açıklandığı gibi
android.media.action.VIDEO_CAMERA
intent'ini İÇERMELİDİR. - [C-12-3] SDK belgesinde açıklandığı gibi, yalnızca önceden yüklenmiş Android uygulamalarının aşağıdaki intent'leri
MediaStore.ACTION_IMAGE_CAPTURE
,MediaStore.ACTION_IMAGE_CAPTURE_SECURE
veMediaStore.ACTION_VIDEO_CAPTURE
işlemesine izin vermelidir.
Cihaz uygulamaları android.software.device_admin
değerini raporluyorsa:
-
[C-13-1] Kullanıcıyı cihaz yöneticisini sisteme ekleme (veya reddetme) işlemine yönlendirecek bir kullanıcı arayüzü çağırmak için
android.app.action.ADD_DEVICE_ADMIN
intent'ini İÇERMELİDİR. -
[C-13-2] android.app.action.ADMIN_POLICY_COMPLIANCE, android.app.action.GET_PROVISIONING_MODE, android.app.action.PROVISIONING_SUCCESSFUL, android.app.action.PROVISION_MANAGED_DEVICE, android.app.action.PROVISION_MANAGED_PROFILE, android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD, android.app.action.SET_NEW_PASSWORD ve android.app.action.START_ENCRYPTION intent'lerini İÇERMELİDİR ve SDK'da burada açıklandığı gibi bu intent'leri yerine getirecek bir etkinliğe sahip olmalıdır.
Cihaz uygulamaları android.software.autofill
özellik işaretini beyan ederse:
- [C-14-1] Otomatik doldurmayı etkinleştirmek ve devre dışı bırakmak ve kullanıcı için varsayılan otomatik doldurma hizmetini değiştirmek üzere varsayılan bir uygulama ayarları menüsü göstermek için
AutofillService
veAutofillManager
API'lerini eksiksiz şekilde uygulamalı ve android.settings.REQUEST_SET_AUTOFILL_SERVICE intent'ini dikkate almalıdır.
Cihaz uygulamalarında önceden yüklenmiş bir uygulama varsa veya üçüncü taraf uygulamalarının kullanım istatistiklerine erişmesine izin vermek istiyorsanız:
- [C-SR]
android.permission.PACKAGE_USAGE_STATS
iznini açıklayan uygulamalar için android.settings.ACTION_USAGE_ACCESS_SETTINGS intent'ine yanıt olarak kullanıcıların erişebileceği bir mekanizma sağlayarak kullanım istatistiklerine erişim iznini verme veya iptal etme seçeneği sunmanız önemle ÖNERİLİR.
Cihaz uygulamalarında, önceden yüklenmiş uygulamalar da dahil olmak üzere hiçbir uygulamanın kullanım istatistiklerine erişmesine izin verilmek istemiyorsa:
- [C-15-1] android.settings.ACTION_USAGE_ACCESS_SETTINGS intent kalıbını işleyen bir etkinliğe sahip OLMALIDIR ancak bu etkinliği işlem yapmaz olarak uygulamalıdır. Yani kullanıcının erişimi reddedildiğinde olduğu gibi eşdeğer bir davranışa sahip olmalıdır.
Cihaz uygulamaları android.hardware.audio.output
özelliğini raporlarsa:
- [C-SR] android.intent.action.TTS_SERVICE, android.speech.tts.engine.INSTALL_TTS_DATA ve android.speech.tts.engine.GET_SAMPLE_TEXT intent'lerini dikkate almanız önemle tavsiye edilir. Bu intent'ler için SDK'da burada açıklandığı şekilde bir etkinlik sağlamalıdır.
Android, daha önce Düşler olarak adlandırılan etkileşimli ekran koruyucuları destekler. Ekran koruyucular, güç kaynağına bağlı bir cihaz boştayken veya masaüstü dock'ına yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Cihaz Uygulamaları:
- Ekran koruyucu desteği içermeli ve kullanıcıların
android.settings.DREAM_SETTINGS
intent'ine yanıt olarak ekran koruyucuları yapılandırmaları için bir ayar seçeneği sunmalıdır.
3.2.4. İkincil/çoklu ekranlardaki etkinlikler
Cihaz uygulamaları birden fazla ekranda normal Android etkinliklerinin başlatılmasına izin veriyorsa:
- [C-1-1]
android.software.activities_on_secondary_displays
özellik bayrağını AYARALAMALI. - [C-1-2] Birincil ekranda çalışan bir etkinliğe benzer API uyumluluğunu GARANTİ ETMELİDİR.
- [C-1-3] Yeni etkinlik,
ActivityOptions.setLaunchDisplayId()
API aracılığıyla bir hedef ekran belirtilmeden başlatıldığında yeni etkinliği, onu başlatan etkinlikle aynı ekrana ULAŞTIRMALIDIR. - [C-1-4]
Display.FLAG_PRIVATE
işareti olan bir ekran kaldırıldığında tüm etkinlikleri İYİCE yok etmelidir. - [C-1-5] Uygulama,
Activity#setShowWhenLocked()
API'yi kullanarak kilit ekranının üstünde gösterilmeyi etkinleştirmediği sürece, cihaz güvenli bir kilit ekranıyla kilitlendiğinde tüm ekranlardaki içeriği güvenli bir şekilde gizlemeLİDİR. - Gösterilmek, doğru şekilde çalışmak ve ikincil ekranda bir etkinlik başlatılırsa uyumluluğu korumak için söz konusu ekrana karşılık gelen
android.content.res.Configuration
olmalıdır.
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 bu ekranın, sistemin ve ekranda bulunan etkinliklerin sahibi bu ekranda uygulama başlatabilmelidir. Herkes android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda uygulama başlatabilir.
3.3. Yerel API Uyumluluğu
Yerel kod uyumluluğu zordur. Bu nedenle cihaz uygulayıcıları:
- [SR] Aşağıda listelenen kitaplıkların, Android Açık Kaynak Projesi'ndeki uygulamalarının kullanılması KESİNLİKLE ÖNERİLİR.
3.3.1. Uygulama İkili Arabirimleri
Managed Dalvik bayt kodu, uygulama .apk
dosyasında uygun cihaz donanım mimarisi için derlenmiş bir ELF .so
dosyası olarak sağlanan yerel kodu çağırabilir. Yerel kod, temel işlemci teknolojisine oldukça bağlı olduğundan Android, Android NDK'de bir dizi uygulama ikili arayüzü (ABI) tanımlar.
Cihaz uygulamaları:
- [C-0-1] Bir veya daha fazla tanımlanmış Android NDK ABI'si ile UYUMLU OLMALIDIR.
- [C-0-2] Standart Java Native Interface (JNI) semantiğini kullanarak yönetilen ortamda çalışan kodun yerel kodu çağırması için destek DAHİL OLMALIDIR.
- [C-0-3] Aşağıdaki listedeki her gerekli kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
- [C-0-5] Cihaz tarafından desteklenen 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
parametreleri aracılığıyla doğru şekilde bildirmelidir. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene göre sıralanmış ABI'lerin virgülle ayrılmış bir listesidir. -
[C-0-6] Yukarıdaki parametreler aracılığıyla aşağıdaki ABI listesinin bir alt kümesini bildirmeli ve listede bulunmayan ABI'leri bildirmemelidir.
-
armeabi
(NDK tarafından hedef olarak artık desteklenmiyor) -
armeabi-v7a
-
arm64-v8a
-
x86
-
x86-64
-
-
[C-0-7] Yerel API'ler sağlayan aşağıdaki kitaplıkların tümünü yerel kod içeren uygulamalara SUNMALIDIR:
- libaaudio.so (AAudio doğal ses desteği)
- libamidi.so (
android.software.midi
özelliği için 5.9 numaralı bölümde açıklandığı şekilde hak talebinde bulunuluyorsa yerel MIDI desteği) - libandroid.so (yerel Android etkinliği desteği)
- libc (C kitaplığı)
- libcamera2ndk.so
- libdl (dinamik bağlayıcı)
- libEGL.so (yerel OpenGL yüzey yönetimi)
- libGLESv1_CM.so (OpenGL ES 1.x)
- libGLESv2.so (OpenGL ES 2.0)
- libGLESv3.so (OpenGL ES 3.x)
- libicui18n.so
- libicuuc.so
- libjnigraphics.so
- liblog (Android günlük kaydı)
- libmediandk.so (yerel medya API'leri desteği)
- libm (matematik kitaplığı)
- libneuralnetworks.so (Neural Networks API)
- libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
- libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
- libRS.so
- libstdc++ (C++ için minimum destek)
- libvulkan.so (Vulkan)
- libz (Zlib sıkıştırması)
- JNI arayüzü
-
[C-0-8] Yukarıda listelenen yerel kitaplıklar için herkese açık işlevler EKLEMELİ veya KALDIRMAMALIDIR.
- [C-0-9]
/vendor/etc/public.libraries.txt
dosyasında doğrudan üçüncü taraf uygulamalarına sunulan AOSP dışındaki ek kitaplıklar ZORUNLUDIR. - [C-0-10] AOSP'de sistem kitaplıkları olarak uygulanan ve sağlanan diğer yerel kitaplıklar, API düzeyi 24 veya daha yüksek sürümleri hedefleyen üçüncü taraf uygulamalara gösterilmemelidir.
- [C-0-11] NDK'de tanımlandığı şekilde tüm OpenGL ES 3.1 ve Android Uzantı Paketi işlev simgelerini
libGLESv3.so
kitaplığı aracılığıyla DIŞA aktarmalıdır. Tüm sembollerin BULUNMASI GEREKİR ancak 7.1.4.1 numaralı bölümde, her bir ilgili işlevin tam olarak ne zaman uygulanacağıyla ilgili koşullar daha ayrıntılı olarak açıklanmaktadır. - [C-0-12] Temel Vulkan 1.0 işlev simgelerinin 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ığı aracılığıyla dışa aktarmalıdır. Tüm sembollerin BULUNMASI GEREKİR ancak 7.1.4.2 numaralı bölümde, her bir ilgili işlevin tam olarak ne zaman uygulanacağıyla ilgili koşullar daha ayrıntılı olarak açıklanmaktadır. - Yukarı akış Android Açık Kaynak Projesi'ndeki kaynak kod ve başlık dosyaları kullanılarak OLUŞTURULMALIDIR
Android'in gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın.
3.3.2. 32 bit ARM Yerel Kod Uyumluluğu
Cihaz uygulamaları armeabi
ABI'nin desteklendiğini bildirirse:
- [C-3-1]
armeabi
yalnızca eski uygulamalarla geriye dönük uyumluluk için olduğundanarmeabi-v7a
'ü de desteklemeli ve desteğini bildirmelidir.
Cihaz uygulamaları armeabi-v7a
ABI'nin desteklendiğini bildirirse bu ABI'yi kullanan uygulamalar:
-
[C-2-1]
/proc/cpuinfo
içine aşağıdaki satırları DAHİL ETMELİDİR ve diğer ABI'ler tarafından okunduğunda bile aynı cihazdaki değerleri DEĞİŞTİRMEMELİDİR.-
Features:
, ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi. -
CPU architecture:
, ardından cihazın desteklediği en yüksek ARM mimarisini açıklayan bir tam sayı (ör. ARMv8 cihazlar için "8").
-
-
[C-2-2] ABI'nin ARMv8 mimarisinde yerel CPU desteği veya yazılım emülasyonu aracılığıyla uygulandığı durumlarda bile aşağıdaki işlemleri her zaman kullanılabilir durumda tutmalıdır:
- 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 ZORUNLUDUR.
3.4. Web Uyumluluğu
3.4.1. WebView Uyumluluğu
Cihaz uygulamaları android.webkit.Webview
API'sinin eksiksiz bir uygulamasını sağlıyorsa:
- [C-1-1]
android.software.webview
bildirmelidir. - [C-1-2]
android.webkit.WebView
API'sinin uygulanması için Android 11 dalındaki yayın öncesi Android Açık Kaynak Projesi'nden Chromium Projesi derlemesi KULLANILMALIDIR. -
[C-1-3] WebView tarafından bildirilen kullanıcı aracısı dizesi şu biçimde OLMALIDIR:
Mozilla/5.0 (Linux; Android $(VERSION); [$(MODEL)] [Build/$(BUILD)]; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36
- $(VERSION) dizesinin değeri, android.os.Build.VERSION.RELEASE değerinin aynısı OLMALIDIR.
- $(MODEL) dizesi boş OLABİLİR ancak boş değilse android.os.Build.MODEL ile aynı değere sahip OLMALIDIR.
- "Derleme/$(BUILD)" atlanabilir ancak mevcutsa $(BUILD) dizesi android.os.Build.ID değeriyle aynı OLMALIDIR.
- $(CHROMIUM_VER) dizesinin değeri, yayın öncesi Android Açık Kaynak Projesi'ndeki Chromium sürümüyle BİÇİMSEL OLARAK aynı olmalıdır.
- Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobil'i atlayabilir.
-
WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliği için destek İÇERMELİDİR ve özelliği destekliyorsa HTML5 spesifikasyonuna uygun OLMALIDIR.
-
[C-1-3] Sağlanan içeriği veya uzak URL içeriğini, Web Görünümü'nü örnekleyen uygulamadan farklı bir işlemde oluşturmalıdır. Ayrı oluşturma işleminin daha düşük ayrıcalıklara sahip olması, ayrı bir kullanıcı kimliği olarak çalıştırılması, uygulamanın veri dizinine erişimi olmaması, doğrudan ağ erişimi olmaması ve yalnızca Binder üzerinden minimum düzeyde gerekli sistem hizmetlerine erişimi olması GEREKİR. Web Görünümü'nün AOSP uygulaması bu koşulu karşılar.
Cihaz uygulamalarının 32 bit olması veya android.hardware.ram.low
özellik işaretini belirtmesi durumunda C-1-3'ten muaf tutulduğunu unutmayın.
3.4.2. Tarayıcı Uyumluluğu
Cihaz uygulamaları, genel web tarayıcılığı için bağımsız bir tarayıcı uygulaması içeriyorsa:
- [C-1-1] HTML5 ile ilişkili aşağıdaki API'lerin her birini DESTEKLEMELİDİR:
- [C-1-2] HTML5/W3C webstorage API'yi destekleMELİ ve HTML5/W3C IndexedDB API'yi DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları web depolama yerine IndexedDB'i tercih etmeye başladığından, IndexedDB'in Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesinin beklendiğini unutmayın.
- Bağımsız Tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi YAYINLANABİLİR.
- Bağımsız Tarayıcı uygulamasında (üst akış WebKit Tarayıcı uygulamasına veya üçüncü taraf bir değişime dayalı olsun) mümkün olduğunca fazla HTML5 desteği UYGULANMALIDIR.
Ancak cihaz uygulamaları bağımsız bir Tarayıcı uygulaması içermiyorsa:
- [C-2-1] 3.2.3.1 numaralı bölümde açıklandığı gibi herkese açık intent kalıplarını desteklemeye DEVAM ETMELİDİR.
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 uygulamalarda API davranış uyumluluğunun uygulandığından EMİN OLMALIDIR.
- [C-0-10] API davranış uyumluluğunu yalnızca cihaz uygulayıcıları tarafından seçilen uygulamalar için sağlayan izin verilenler listesi yaklaşımını UYGULAMAMALIDIR.
API türlerinin her birinin (yönetilen, yumuşak, yerel ve web) davranışları, yayın öncesi Android Open Source Project'in tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumluluğun bazı belirli alanları şunlardır:
- [C-0-1] Cihazlar, standart bir intent'in davranışını veya anlamını DEĞİŞTİREMEZ.
- [C-0-2] Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, İçerik Sağlayıcı vb.) yaşam döngüsünü veya yaşam döngüsü anlamlarını DEĞİŞTİRMEMELİDİR.
- [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİREMEZ.
- Cihazlar, arka plan uygulamalarında uygulanan sınırlamaları DEĞİŞTİREMEZ. Arka plan uygulamaları için daha ayrıntılı olarak:
- [C-0-4]
GnssMeasurement
veGnssNavigationMessage
'ten çıkış almak için uygulama tarafından kaydedilen geri çağırma işlemlerini durdurmaları GEREKİR. - [C-0-5]
LocationManager
API sınıfı veyaWifiManager.startScan()
yöntemi aracılığıyla uygulamaya sağlanan güncellemelerin sıklığını hız sınırlamalı. - [C-0-6] Uygulama API düzeyi 25 veya üstünü hedefliyorsa yayın amacı
"signature"
veya"signatureOrSystem"
protectionLevel
izni gerektirmediği veya istisna listesinde yer almadığı sürece, uygulamanın manifest dosyasında standart Android intent'lerinin örtülü yayınları için yayın alıcılarının kaydedilmesine İZİN VERMEMELİDİR. - [C-0-7] Uygulama API düzeyi 25 veya üstünü hedefliyorsa, kullanıcı tarafından görülebilen bir görevi gerçekleştirmek için geçici izin verilenler listesine yerleştirilmediği sürece, uygulamanın arka plan hizmetlerini durdurması GEREKİR. Bu işlem, uygulama hizmetlerinin
stopSelf()
yöntemini çağırmış gibi yapılır. - [C-0-8] Uygulama API düzeyi 25 veya üstünü hedefliyorsa uygulamanın tuttuğu wakelock'ları AÇIKLAMASI GEREKİR.
- [C-0-4]
- [C-0-9] Uygulama,
insertProviderAt()
veyaremoveProvider()
aracılığıyla listeyi değiştirmediği sürece cihazlar,Security.getProviders()
yöntemindeki ilk yedi dizi değeri olarak aşağıdaki güvenlik sağlayıcıları belirli bir sırada ve belirli adlarla (Provider.getName()
tarafından döndürüldüğü şekilde) ve sınıflarla döndürmelidir. Cihazlar, aşağıdaki 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 listede olası her duruma yer verilmemiştir. Uyumluluk Test Paketi (CTS), platformun önemli bölümlerini davranışsal uyumluluk açısından test eder ancak tümünü test etmez. Android Open Source Project 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 sunulan kaynak kodu KULLANMALIDIR.
3.5.1. Uygulama Kısıtlaması
Cihaz uygulamaları, uygulamaları kısıtlamak için özel bir mekanizma uygularsa ve bu mekanizma Nadir Uygulama Bekleme Grubu'ndan daha kısıtlayıcıysa:
- [C-1-1] Kullanıcının kısıtlanmış uygulamaların listesini görebileceği bir kullanıcı özelliği ZORUNLUDUR.
- [C-1-2] Her uygulamadaki kısıtlamaları etkinleştirmek / devre dışı bırakmak için kullanıcılara uygun bir yöntem sunulmalıdır.
- [C-1-3] Kötü sistem sağlığı davranışı olduğuna dair kanıt olmadan kısıtlamaları otomatik olarak UYGULAMAMALIDIR ancak takılı uyanma kilitleri, uzun süre çalışan hizmetler ve diğer ölçütler gibi kötü sistem sağlığı davranışı tespit edildiğinde uygulamalara kısıtlamalar UYGULAYABİLİR. Ölçütler cihaz uygulayıcıları tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili OLMALIDIR. Uygulamanın pazardaki popülerliğinin olmaması gibi, yalnızca sistem sağlığıyla ilgili olmayan diğer ölçütler ölçüt olarak KULLANILMAMALISDIR.
- [C-1-4] Kullanıcı uygulama kısıtlamalarını manuel olarak devre dışı bıraktığında uygulamalara otomatik olarak uygulama kısıtlamaları UYGULAMAMALI ve kullanıcıya uygulama kısıtlamaları uygulamasını ÖNEREBİLİR.
- [C-1-5] Uygulama kısıtlamalarının bir uygulamaya otomatik olarak uygulanıp uygulanmadığını kullanıcılara BİLDİRMENİZ GEREKİR. Bu bilgiler, kısıtlamaların uygulanmasından sonraki 24 saat içinde SAĞLANMALIDIR.
- [C-1-6] Kısıtlanmış uygulama bu API'yi çağırdığında
ActivityManager.isBackgroundRestricted()
içintrue
döndürülmelidir. - [C-1-7] Kullanıcı tarafından açıkça kullanılan en üst ön plan uygulamasını KISITLAMAMALISINIZ.
- [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 uygulamadaki kısıtlamalar KESİNLİKLE askıya alınmalıdır.
3.6. API ad alanları
Android, Java programlama dili tarafından tanımlanan paket ve sınıf ad alanı kurallarına uyar. Cihaz uygulayıcıları, üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için aşağıdaki paket ad alanlarında yasaklanmış herhangi bir değişiklik YAPMAMALIDIR:
-
java.*
-
javax.*
-
sun.*
-
android.*
-
androidx.*
-
com.android.*
Yani:
- [C-0-1] Android platformunda herkese açık olarak sunulan API'lerde herhangi bir yöntem veya sınıf imzasını değiştirerek ya da sınıfları veya sınıf alanlarını kaldırarak DEĞİŞİKLİK YAPMAMALIDIR.
- [C-0-2] Yukarıdaki ad alanlarındaki API'lere herkese açık öğeler (ör. sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere alanlar ya da yöntemler) veya Test veya Sistem API'leri EKLENMEMELİDİR. "Herkese açık olarak sunulan öğe", yayın öncesi Android kaynak kodunda kullanılan "@hide" işaretçisiyle süslenmemiş tüm yapılardır.
Cihaz uygulayıcıları, API'lerin temel uygulamasını DEĞİŞTİREBİLİR ancak bu tür değişiklikler:
- [C-0-3] Herhangi bir herkese açık API'nin belirtilen davranışını ve Java dili imzasını ETKİLEMEmelidir.
- [C-0-4] Reklamı YAPILMAMALI veya geliştiricilere başka bir şekilde gösterilMEMELİ.
Ancak cihaz uygulayıcıları, standart Android ad alanının dışında özel API'ler EKLEYEBİLİRSE de bu özel API'ler:
- [C-0-5] Başka bir kuruluşa ait veya başka bir kuruluşu atıfta bulunan bir ad alanında OLMAYACAK. Örneğin, cihaz uygulayıcıları
com.google.*
veya benzer bir ad alanına API ekleMEmelidir: Bunu yalnızca Google yapabilir. Benzer şekilde, Google da diğer şirketlerin ad alanlarına API ekleMEmelidir. - [C-0-6] Yalnızca açıkça kullanan uygulamaların (<uses-library> mekanizması aracılığıyla) bu tür API'lerin artan bellek kullanımından etkilenmesi için bir Android paylaşılan kitaplığına paketlenmelidir.
Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarının birini iyileştirmeyi önerirse (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) source.android.com adresini ziyaret edip bu sitedeki bilgilere göre değişiklik ve kod katkıda bulunma sürecine BAŞLAMALIDIR.
Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmayla ilgili standart kurallara karşılık geldiğini unutmayın. Bu bölüm, bu kuralları pekiştirmeyi ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmeyi amaçlamaktadır.
3.7. Çalışma Zamanı Uyumluluğu
Cihaz uygulamaları:
-
[C-0-1] Tam Dalvik Yürütülebilir (DEX) biçimini ve Dalvik bayt kodu spesifikasyonunu ve anlamlarını desteklemelidir.
-
[C-0-2] Dalvik çalışma zamanlarını, yukarı akış Android platformuna uygun şekilde ve aşağıdaki tabloda belirtildiği gibi bellek ayıracak şekilde OLUŞTURMALIDIR. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 numaralı bölüme bakın.)
-
Android RunTime (ART), Dalvik Yürütülebilir Biçimi'nin referans yayın öncesi uygulaması ve referans uygulamanın paket yönetimi sistemini KULLANMALIDIR.
-
Çalışma ortamının kararlılığını sağlamak için çeşitli yürütme modları ve hedef mimariler altında fuzz testleri ÇALIŞTIRMALIDIR. 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 Watch | 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, bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerini alacak üçüncü taraf uygulamaları için destek içerir.
Cihaz uygulamaları, üçüncü taraf uygulamalarının cihaz ana ekranını değiştirmesine izin veriyorsa:
- [C-1-1]
android.software.home_screen
platform özelliğini İLKLE bildirmelidir. - [C-1-2] Üçüncü taraf uygulaması simgesini sağlamak için
<adaptive-icon>
etiketini kullandığında ve simgeleri almak içinPackageManager
yöntemleri çağrıldığındaAdaptiveIconDrawable
nesnesini İADE ETMELİDİR.
Cihaz uygulamaları, kısayolların uygulama içinde sabitlenmesini destekleyen varsayılan bir başlatıcı içeriyorsa:
- [C-2-1]
ShortcutManager.isRequestPinShortcutSupported()
içintrue
bildirmelidir. - [C-2-2]
ShortcutManager.requestPinShortcut()
API yöntemi aracılığıyla uygulamalar tarafından istenen bir kısayol eklemeden önce kullanıcıdan izin isteyen bir kullanıcı imkanı OLMALIDIR. - [C-2-3] Uygulama kısayolları sayfasında belirtildiği gibi sabitlenmiş kısayolları, dinamik ve statik kısayolları desteklemelidir.
Buna karşılık, cihaz uygulamaları kısayolların uygulama içinde sabitlenmesini desteklemiyorsa:
- [C-3-1]
ShortcutManager.isRequestPinShortcutSupported()
içinfalse
bildirmelidir.
Cihaz uygulamaları, ShortcutManager API aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uygularsa:
- [C-4-1] Belgelenen tüm kısayol özelliklerini (ör. statik ve dinamik kısayollar, kısayolları sabitleme) desteklemeli ve
ShortcutManager
API sınıfının API'lerini eksiksiz şekilde uygulamalıdır.
Cihaz uygulamalarında, uygulama simgelerinin rozetlerini gösteren varsayılan bir başlatıcı uygulaması varsa bu uygulamalar:
- [C-5-1]
NotificationChannel.setShowBadge()
API yöntemine UYGUN OLMALIDIR. Diğer bir deyişle, değertrue
olarak ayarlanmışsa uygulama simgesiyle ilişkili bir görsel imkanı gösterin ve uygulamanın tüm bildirim kanalları değerifalse
olarak ayarladığında herhangi bir uygulama simgesi rozeti şeması göstermeyin. - Üçüncü taraf uygulamaları, özel API'ler aracılığıyla özel rozet şemasını desteklediğini belirttiğinde uygulama simgesi rozetlerini özel rozet şemasıyla geçersiz kılabilir ancak SDK'da açıklanan bildirim rozetleri API'leri (ör.
Notification.Builder.setNumber()
veNotification.Builder.setBadgeIconType()
API'si) aracılığıyla sağlanan kaynakları ve değerleri kullanmalıdır.
3.8.2. Widget'lar
Android, uygulamaların son kullanıcıya "AppWidget" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü 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 BEYAN EDİLMELİDİR. - [C-1-2] Uygulama widget'ları için yerleşik destek içermeli ve doğrudan Başlatıcı'dan uygulama widget'ları eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü olanakları sunmalıdır.
- [C-1-3] Standart ızgara boyutunda 4 x 4 widget oluşturabilmelidir. Ayrıntılar için Android SDK dokümanlarındaki Uygulama Widget'ı Tasarım Kuralları'na bakın.
- Kilit ekranında uygulama widget'larını DESTEKLEYEBİLİR.
Cihaz uygulamaları, üçüncü taraf uygulama widget'larını ve kısayolların uygulama içinde sabitlenmesini destekliyorsa:
- [C-2-1]
AppWidgetManager.html.isRequestPinAppWidgetSupported()
içintrue
bildirmelidir. - [C-2-2]
AppWidgetManager.requestPinAppWidget()
API yöntemi aracılığıyla uygulamalar tarafından istenen bir kısayol eklemeden önce kullanıcıdan izin isteyen bir kullanıcı imkanı bulunmalıdır.
3.8.3. Bildirimler
Android, üçüncü taraf uygulama geliştiricilerin cihazın donanım bileşenlerini (ör. ses, titreşim ve ışık) ve yazılım özelliklerini (ör. bildirim gölgesi, sistem çubuğu) kullanarak kullanıcıları önemli etkinlikler hakkında bilgilendirmesine ve kullanıcıların dikkatini çekmesine olanak tanıyan Notification
ve NotificationManager
API'leri içerir.
3.8.3.1. Bildirimlerin sunumu
Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli olaylar hakkında bilgilendirmesine izin veriyorsa:
- [C-1-1] SDK dokümanlarında açıklandığı şekilde ve mümkün olduğunca cihaz uygulama donanımıyla donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim varsa titreşim API'lerinin doğru şekilde uygulanması GEREKİR. Bir cihaz uygulamasında donanım yoksa ilgili API'ler no-op olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmıştır.
- [C-1-2] Bildirimler için referans Android açık kaynak uygulaması tarafından sağlanan kullanıcı deneyiminden farklı bir kullanıcı deneyimi SUNABİLSE de API'lerde veya Durum/Sistem Çubuğu simge stil kılavuzunda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) DOĞRU şekilde oluşturmalıdır.
- [C-1-3] Bildirimleri güncellemek, kaldırmak ve gruplandırmak için API'ler için açıklanan davranışları doğru şekilde uygulamalıdır.
- [C-1-4] NotificationChannel API'sinin tam davranışını SDK'da belgelenmiş şekilde sağlamalıdır.
- [C-1-5] Her kanal ve uygulama paketi düzeyinde belirli bir üçüncü taraf uygulamasının bildirimini engellemek ve değiştirmek için kullanıcılara bir kolaylık sunmalıdır.
- [C-1-6] Ayrıca, silinen bildirim kanallarını görüntülemek için kullanıcılara bir kolaylık sağlamalıdır.
- [C-1-7] Notification.MessagingStyle aracılığıyla sağlanan tüm kaynakları (resimler, çıkartmalar, simgeler vb.) bildirim metninin yanında ek kullanıcı etkileşimi olmadan doğru şekilde oluşturmalıdır. Örneğin, setGroupConversation aracılığıyla ayarlanan bir grup görüşmesinde android.app.Person aracılığıyla sağlanan simgeler de dahil olmak üzere tüm kaynakları GÖSTERMELİDİR.
- [C-SR] Kullanıcı belirli bir üçüncü taraf uygulamasının bildirimini birden çok kez reddettikten sonra, her kanal ve uygulama paketi düzeyinde söz konusu bildirimi engellemek için kullanıcıya otomatik olarak bir kullanım imkanı sunulması önemle ÖNERİLİR.
- Zengin bildirimleri DESTEKLEMELİDİR.
- Bazı yüksek öncelikli bildirimleri uyarı bildirimleri olarak GÖSTERMELİDİR.
- Bildirimleri erteleme seçeneği kullanıcılara sunulmalıdır.
- Sürücünün dikkatinin dağılması gibi güvenlik sorunlarını azaltmak için üçüncü taraf uygulamalarının kullanıcıları önemli etkinlikler hakkında ne zaman bilgilendirebileceğinin görünürlüğünü ve zamanlamasını yönetebilir.
Android 11, MessagingStyle kullanan ve yayınlanmış bir Kişiler kısayol kimliği sağlayan görüşme bildirimleri için destek sunar.
Cihaz uygulamaları:
- [C-SR] Devam eden ön plan hizmet bildirimleri ve
importance:high
bildirimleri hariç olmak üzere,conversation notifications
'i sohbet dışı bildirimlerin önünde gruplandırmak ve görüntülemek önemle ÖNERİLİR.
Cihaz uygulamaları conversation notifications
'u destekliyorsa ve uygulama bubbles
için gerekli verileri sağlıyorsa:
- [C-SR] Bu görüşmenin baloncuk olarak gösterilmesi ö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ı KULLANMALIDIR. 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) GÖSTERMELİDİR.
Cihaz uygulamaları uyarı bildirimlerini destekliyorsa:
- [C-3-1] Bildirimler gösterilirken
Notification.Builder
API sınıfında açıklandığı gibi bildirim görünümünü ve kaynaklarını KULLANMALIDIR. - [C-3-2]
Notification.Builder.addAction()
aracılığıyla sağlanan işlemleri, SDK'da açıklandığı şekilde ek kullanıcı etkileşimi olmadan bildirim içeriğiyle birlikte GÖSTERMELİDİR.
3.8.3.2. Bildirim Dinleyici Hizmeti
Android, uygulamaların (kullanıcı tarafından açıkça etkinleştirildikten sonra) yayınlandıkları veya güncellendikleri sırada tüm bildirimlerin bir kopyasını almasına olanak tanıyan NotificationListenerService
API'lerini içerir.
Cihaz uygulamaları:
- [C-0-1] Bildirimlerin tamamını, Bildirim nesnesine eklenmiş tüm meta veriler dahil olmak üzere, yüklü ve kullanıcı tarafından etkinleştirilmiş tüm dinleyici hizmetlerinde doğru ve hızlı bir şekilde güncellemelidir.
- [C-0-2]
snoozeNotification()
API çağrısına uymalı, bildirimi kapatmalı ve API çağrısında ayarlanan erteleme süresinden sonra geri çağırma yapmalıdır.
Cihaz uygulamalarında bildirimleri erteleme olanağı sunuluyorsa:
- [C-1-1] Ertelenen bildirim durumunu
NotificationListenerService.getSnoozedNotifications()
gibi standart API'ler aracılığıyla düzgün şekilde YANSITLAMALIDIR. - [C-1-2] Kalıcı/ön plan hizmetlerinden gelenler hariç, yüklü her üçüncü taraf uygulamasının bildirimlerini ertelemek için bu kullanıcı özelliğini sunmalıdır.
3.8.3.3. DND (Rahatsız Etmeyin)
Cihaz uygulamaları, DND özelliğini destekliyorsa:
- [C-1-1] Cihaz uygulaması, kullanıcının üçüncü taraf uygulamalarına Rahatsız Etmeme politikası yapılandırmasına erişme izni vermesi veya vermemesi için bir yöntem sağladığında, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kuralların yanı sıra uygulamalar tarafından oluşturulan otomatik Rahatsız Etmeme kurallarını GÖSTERMELİDİR.
- [C-1-3]
NotificationManager.Policy
üzerinden iletilensuppressedVisualEffects
değerlerini dikkate ALMASI GEREKİR ve bir uygulama SUPPRESSED_EFFECT_SCREEN_OFF veya SUPPRESSED_EFFECT_SCREEN_ON işaretlerinden herhangi birini ayarlarsa kullanıcıya Görsel efektlerin, DND ayarları menüsünde devre dışı bırakıldığını belirtmelidir.
3.8.4. Arat
Android, geliştiricilerin uygulamalarına arama özelliğini dahil etmelerine ve uygulamalarının verilerini küresel sistem aramasına sunmalarına olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmelerine olanak tanıyan, kullanıcılar yazarken öneriler gösteren ve sonuçları gösteren tek bir sistem genelinde kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü yeniden kullanmasına ve ortak küresel arama kullanıcı arayüzüne sonuç sağlamasına olanak tanır.
- Android cihaz uygulamalarında, kullanıcı girişine yanıt olarak anlık öneriler sunabilen tek, paylaşılan, sistem genelinde bir arama kullanıcı arayüzü olan genel arama YER ALMALIDIR.
Cihaz uygulamaları genel arama arayüzünü uygularsa:
- [C-1-1] Üçüncü taraf uygulamalarının, genel arama modunda çalıştırıldığında arama kutusuna öneri eklemesine olanak tanıyan API'leri UYGULAMALIDIR.
Global aramayı kullanan üçüncü taraf uygulaması yüklü değilse:
- Varsayılan davranış, web arama motoru sonuçlarını ve önerilerini göstermektir.
Android, uygulamaların mevcut bağlamla ilgili ne kadar bilginin cihazdaki asistanla paylaşılacağı konusunda seçim yapmasına olanak tanımak için Assist API'lerini de içerir.
Cihaz uygulamaları Yardımcı Ol işlemini destekliyorsa:
- [C-2-1] Bağlam paylaşıldığında son kullanıcıya aşağıdakilerden biri aracılığıyla net bir şekilde AÇIKLANMALIDIR:
- Asistan uygulaması bağlama her eriştiğinde ekranın kenarlarında Android Open Source Project uygulamasının süresini ve parlaklığını karşılayan veya aşan beyaz bir ışık gösterilir.
- Önceden yüklenmiş yardımcı uygulama için varsayılan ses girişi ve yardımcı uygulama ayarları menüsünden ikiden az gezinme işlemiyle erişilebilen bir kullanıcı kolaylığı sağlama ve bağlamı yalnızca kullanıcı tarafından bir kısa kelime veya yardımcı gezinme tuşu girişi aracılığıyla açıkça çağrıldığında paylaşma.
- [C-2-2] 7.2.3 numaralı bölümde açıklandığı şekilde yardımcı uygulamayı başlatmak için belirlenen etkileşim, kullanıcı tarafından seçilen yardımcı uygulamayı (yani
VoiceInteractionService
'yi uygulayan uygulamayı) veyaACTION_ASSIST
intent'ini işleyen bir etkinliği BAŞLATMAK ZORUNDADIR.
3.8.5. Uyarılar ve pop-up'lar
Uygulamalar, son kullanıcıya kısa süre sonra kaybolan kısa, modal olmayan dizeler göstermek için Toast
API'yi, diğer uygulamaların üzerine yer paylaşımı olarak uyarı pencereleri göstermek için ise TYPE_APPLICATION_OVERLAY
pencere türü API'yi kullanabilir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
-
[C-1-1] Uygulamaların
TYPE_APPLICATION_OVERLAY
kullanan uyarı pencereleri göstermesini engellemek için kullanıcılara bir kolaylık sunulmalıdır . AOSP uygulaması, bildirim gölgesinde kontrollere sahip olarak bu koşulu karşılar. -
[C-1-2] Toast API'yi desteklemeli ve uygulamalardan son kullanıcılara gönderilen Toast'ları son derece görünür bir şekilde göstermelidir.
3.8.6. Temalar
Android, uygulamaların bir etkinliğin veya uygulamanın tamamına stil uygulamak için kullanabileceği bir mekanizma olarak "temalar" sağlar.
Android, Android SDK'sı tarafından tanımlanan Holo tema görünüm ve tarzını eşleştirmek isteyen uygulama geliştiricilerin kullanabileceği bir dizi tanımlanmış stil olarak "Holo" ve "Materyal" tema ailesini içerir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Uygulamalara sunulan Holo tema özelliklerinden hiçbirini DEĞİŞTİRMEMELİDİR.
- [C-1-2] "Material" tema ailesini DESTEKLEMELİ ve Material tema özelliklerinden veya uygulamalara sunulan öğelerinden hiçbirini DEĞİŞTİRMEMELİDİR.
- [C-1-3] "Sans-serif" yazı tipi ailesini, Roboto'nun desteklediği diller için Roboto 2.x sürümü olarak ayarlamalı veya "sans-serif" yazı tipi ailesinde kullanılan yazı tipini, Roboto'nun desteklediği diller için Roboto 2.x sürümü olarak değiştirmek üzere kullanıcılara bir kolaylık sunmalıdır.
Android, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünüm ve tarzını eşleştirmek isterse kullanabileceği bir dizi tanımlanmış stil olarak "Cihaz Varsayılan" tema ailesini de içerir.
- Cihaz uygulamaları, uygulamalara sunulan Cihaz Varsayılan teması özelliklerini DEĞİŞTİREBİLİR.
Android, yarı saydam sistem çubuklarına sahip bir varyant temayı destekler. Bu tema, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içerikleriyle doldurmasına olanak tanır. Bu yapılandırmada tutarlı bir geliştirici deneyimi sunmak için durum çubuğu simgesi stilinin farklı cihaz uygulamalarında korunması önemlidir.
Cihaz uygulamalarında sistem durum çubuğu varsa:
- [C-2-1] Simge sorunlu bir durumu belirtmediği veya bir uygulama SYSTEM_UI_FLAG_LIGHT_STATUS_BAR işaretini kullanarak açık renkli bir durum çubuğu istemediği sürece sistem durumu simgeleri (ör. sinyal gücü ve pil seviyesi) ve sistem tarafından gönderilen bildirimler için beyaz renk KULLANILMALIDIR.
- [C-2-2] Android cihaz uygulamaları, bir uygulama açık renkli durum çubuğu istediğinde sistem durum simgelerinin rengini siyah olarak DEĞİŞTİRMELİDİR (ayrıntılar için R.style bölümüne bakın).
3.8.7. Animasyonlu Duvar Kağıtları
Android, uygulamaların son kullanıcıya bir veya daha fazla "Canlı Duvar Kağıdı" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü 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 canlı duvar kağıtlarını işlevsellik açısından herhangi bir sınırlama olmadan, diğer uygulamalar üzerinde olumsuz bir etki oluşturmadan makul bir kare hızında çalıştırabiliyorsa canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabilir olarak kabul edilir. Donanımdaki sınırlamalar, duvar kağıtlarının ve/veya uygulamaların kilitlenmesine, arızalanmasına, aşırı CPU veya pil gücü tüketimine ya da kabul edilemeyecek kadar düşük kare hızlarında çalışmasına neden oluyorsa donanım, canlı duvar kağıdı çalıştıramaz. Örneğin, bazı canlı duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamı kullanabilir. OpenGL bağlamının canlı duvar kağıdı kullanımı, OpenGL bağlamı kullanan diğer uygulamalarla çakışabileceğinden canlı duvar kağıdı, birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.
- Yukarıda açıklandığı şekilde canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabilen cihaz uygulamaları canlı duvar kağıtlarını UYGULAMALIDIR.
Cihaz uygulamalarında canlı duvar kağıtları uygulanırsa:
- [C-1-1] Platform özellik işareti android.software.live_wallpaper bildirilmelidir.
3.8.8. Etkinlik Değiştirme
Yukarı akış Android kaynak kodu, görev değiştirme ve kullanıcının uygulamadan en son çıktığı andaki uygulamanın grafik durumunun küçük resmini kullanarak son erişilen etkinlikleri ve görevleri görüntülemek için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir.
7.2.3 numaralı bölümde ayrıntılı olarak açıklanan son aramalar işlevi gezinme anahtarı da dahil olmak üzere cihaz uygulamaları arayüzü DEĞİŞTİREBİLİR.
7.2.3 numaralı bölümde açıklandığı gibi son uygulamalar işlev gezinme anahtarı da dahil olmak üzere cihaz uygulamaları arayüzü değiştiriyorsa:
- [C-1-1] En az 7 görüntülenen etkinliği DESTEKLEMELİDİR.
- Bir seferde en az 4 etkinliğin başlığını GÖSTERMELİDİR.
- [C-1-2] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirip devre dışı bırakabileceği bir ayarlar menüsü sunmalıdır.
- Son aramalar bölümünde vurgu rengini, simgesini ve ekran başlığını GÖSTERMELİDİR.
- Kapatma imkanı ("x") gösterilMELİDİR ancak kullanıcı ekranlarla etkileşime geçene kadar bu işlem ertelenebilir.
- Önceki etkinliğe kolayca geçmek için bir kısayol UYGULANMALIDIR.
- Son uygulamalar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işlemini TETİKLEMELİDİR.
- Son uygulamalar işlev tuşuna uzun basıldığında, destekleniyorsa bölünmüş ekran çoklu pencere modunu TETİKLEMELİDİR.
- İlişkili son aramaları birlikte hareket eden bir grup olarak GÖSTEREBİLİR.
- [SR] Genel bakış ekranı için yayın öncesi Android kullanıcı arayüzünün (veya küçük resim tabanlı benzer bir arayüzün) kullanılması önemle ÖNERİLİR.
3.8.9. Giriş Yönetimi
Android, Giriş Yönetimi ve üçüncü taraf giriş yöntemi düzenleyicileri için destek içerir.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:
- [C-1-1] android.software.input_methods platform özelliğini İLANI ETMEK VE Android SDK dokümanlarında tanımlandığı şekilde IME API'lerini DESTEKLEMEK ZORUNLUDUR.
3.8.10. Kilit Ekranı Medya Kontrolü
Android 5.0'den itibaren Remote Control Client API'nin desteği sonlandırıldı. Bunun yerine, medya uygulamalarının kilit ekranında görüntülenen oynatma kontrolleriyle entegrasyonuna olanak tanıyan Media Notification Template kullanılacak.
3.8.11. Ekran koruyucular (eski adıyla Hayaller)
Ekran koruyucuları yapılandırmak için ayarlar isteği için 3.2.3.5 numaralı bölüme bakın.
3.8.12. Konum
Cihaz uygulamalarında, konum koordinatlarını sağlayabilen bir donanım sensörü (ör. GPS) varsa
- [C-1-2] Ayarlar'daki Konum menüsünde konumun mevcut durumunu GÖSTERMELİDİR.
- [C-1-3] Ayarlar'daki Konum menüsünde konum modlarını GÖSTERMEMELİDİR.
3.8.13. Unicode ve Yazı Tipi
Android, Unicode 10.0'da tanımlanan emoji karakterlerini destekler.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Bu emoji karakterlerini renkli glifte oluşturabilmelidir.
- [C-1-2] Şunlar için destek içermelidir:
- Cihazdaki diller için farklı kalınlıklara sahip Roboto 2 yazı tipi (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black, sans-serif-condensed, sans-serif-condensed-light).
- Latin, Yunanca ve Kiril alfabelerinin Unicode 7.0'daki tam kapsamı (Latin A, B, C ve D aralıkları ve Unicode 7.0'daki para birimi sembolleri bloğundaki tüm glifler dahil).
- Unicode Teknik Raporu 51'de belirtildiği gibi cilt tonunu ve çeşitli aile emojilerini DESTEKLEMELİDİR.
Cihaz uygulamalarında IME varsa:
- Bu emoji karakterleri için kullanıcıya bir giriş yöntemi SAĞLANMALIDIR.
Android, Myanmar yazı tiplerini oluşturma desteği içerir. Myanmar'da, Myanmar dillerini oluşturmak için genellikle "Zawgyi" olarak bilinen Unicode uyumlu olmayan birkaç yazı tipi vardır.
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 pencereler
Cihaz uygulamalarının aynı anda birden fazla etkinlik gösterme özelliği varsa:
- [C-1-1] Bu tür çoklu pencere modlarını, Android SDK çoklu pencere modu destek dokümanlarında açıklanan uygulama davranışlarına ve API'lere uygun şekilde uygulamalı ve aşağıdaki koşulları karşılamalıdır:
- [C-1-2] Bu SDK'da açıklandığı gibi,
AndroidManifest.xml
dosyasında bir uygulama tarafından ayarlananandroid:resizeableActivity
değerini dikkate ALMASI GEREKİR. - [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 etkinlikler 220 dp'den küçük bir boyuta yeniden boyutlandırılmamalıdır.
- Ekran boyutu
xlarge
olan cihaz uygulamaları serbest biçim modunu DESTEKLEMELİDİR.
Cihaz uygulamaları çoklu pencere modlarını ve bölünmüş ekran modunu destekliyorsa:
- [C-2-1] Varsayılan olarak yeniden boyutlandırılabilir bir başlatıcıyı önceden yüklemelidir.
- [C-2-2] Bölünmüş ekranlı çok pencereli bir uygulamanın sabitlenmiş etkinliğini kırpmalı ancak Başlatıcı uygulaması odaklanan pencereyse bazı içeriklerini GÖSTERMELİDİR.
- [C-2-3] Üçüncü taraf başlatıcı uygulamasının beyan edilen
AndroidManifestLayout_minWidth
veAndroidManifestLayout_minHeight
değerlerini dikkate ALMALISI ve sabitlenmiş etkinliğin bazı içeriklerini gösterirken bu değerleri geçersiz kılmaması GEREKİR.
Cihaz uygulamaları çoklu pencere modlarını ve Pencere İçinde Pencere çoklu pencere modunu destekliyorsa:
- [C-3-1] Uygulama şu durumlarda etkinlikleri pencere içinde pencere çoklu pencere modunda BAŞLATMALIDIR: * API düzeyi 26 veya üstünü hedefliyor ve
android:supportsPictureInPicture
bildiriyor * API düzeyi 25 veya altını hedefliyor ve hemandroid:resizeableActivity
hem deandroid:supportsPictureInPicture
bildiriyor. - [C-3-2]
setActions()
API aracılığıyla geçerli PIP etkinliği tarafından belirtildiği şekilde SystemUI'deki işlemleri göstermeLİDİR. - [C-3-3]
setAspectRatio()
API aracılığıyla PIP etkinliği tarafından belirtildiği gibi, 1:2,39'dan büyük veya eşit ve 2,39:1'den küçük veya eşit en boy oranlarını DESTEKLEMELİDİR. - [C-3-4] PIP penceresini kontrol etmek için
KeyEvent.KEYCODE_WINDOW
kullanılmalıdır; PIP modu uygulanmamışsa anahtar ön plan etkinliği tarafından kullanılabilir olmalıdır. - [C-3-5] Bir uygulamanın PIP modunda görüntülenmesini engellemek için kullanıcıya bir kolaylık sunmalıdır; AOSP uygulaması, bildirim gölgesinde kontrollere sahip olarak bu koşulu karşılar.
-
[C-3-6] Bir uygulama
AndroidManifestLayout_minWidth
veAndroidManifestLayout_minHeight
için herhangi bir değer bildirmediğinde PIP penceresi için aşağıdaki minimum genişliği ve yüksekliği AYIRTMASI GEREKİR:- Configuration.uiMode değeri
UI_MODE_TYPE_TELEVISION
dışında ayarlanmış cihazlar en az 108 dp genişlik ve yükseklik ayırmalıdır. - Configuration.uiMode değeri
UI_MODE_TYPE_TELEVISION
olarak ayarlanmış cihazlar en az 240 dp genişlik ve en az 135 dp yükseklik ayırmalıdır.
- Configuration.uiMode değeri
3.8.15. Ekran Kesimi
Android, SDK belgesinde açıklandığı gibi ekran kesiklerini destekler. DisplayCutout
API, ekranın kenarındaki bir ekran kesiği veya kavisli ekran nedeniyle uygulama için işlevsel olmayabilecek bir alanı tanımlar.
Cihaz uygulamalarında ekran kesikleri varsa bunlar:
- [C-1-5] Cihazın en boy oranı 1,0 (1:1) ise kesikler OLMAMALIDIR.
- [C-1-2] Kenar başına birden fazla kesik OLMAMALIDIR.
- [C-1-3] Uygulama tarafından
WindowManager.LayoutParams
API aracılığıyla ayarlanan ekran kesme işaretlerini SDK'da açıklandığı şekilde dikkate ALMASI GEREKİR. - [C-1-4]
DisplayCutout
API'de tanımlanan tüm kesit metrikleri için doğru değerleri ORTAYA KOYMALIDIR.
3.8.16. Cihaz Denetimleri
Android, üçüncü taraf uygulamalarının kullanıcılara hızlı durum ve işlem için cihaz kontrolleri yayınlamasına olanak tanıyan ControlsProviderService
ve Control
API'lerini içerir.
Cihaza özgü gereksinimler için 2_2_3 bölümüne bakın.
3.9. Cihaz Yönetimi
Android, güvenlik bilincine sahip uygulamaların Android Cihaz Yönetimi API'si aracılığıyla sistem düzeyinde cihaz yönetimi işlevleri (ör. şifre politikalarını uygulama veya uzaktan silme) gerçekleştirmesine olanak tanıyan özellikler içerir.
Cihaz uygulamaları, Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tamamını uygularsa:
- [C-1-1]
android.software.device_admin
beyan EDİLMELİDİR. - [C-1-2] 3.9.1 numaralı bölümde ve 3.9.1.1 numaralı bölümde açıklandığı şekilde 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
bildirirse:
- [C-1-1] Cihaz Politikası İstemcisinin (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
bildirmelidir. - [C-1-4] DPC uygulamasını,
android.app.action.PROVISION_MANAGED_DEVICE
intent işlemine yanıt olarak cihaz sahibi uygulaması olarak KAYDETMELİDİR. - [C-1-5] Cihaz,
android.hardware.nfc
özellik işareti aracılığıyla yakın alan iletişimi (NFC) desteğini beyan ederse ve MIME türüMIME_TYPE_PROVISIONING_NFC
olan bir kayıt içeren bir NFC mesajı alırsa DPC uygulamasını cihaz sahibi uygulaması olarak KAYDETMELİDİR.
- [C-1-3]
- Cihaz uygulamasında kullanıcı verileri varsa:
- [C-1-6]
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içinfalse
bildirmelidir. - [C-1-7] Artık hiçbir DPC uygulamasını Cihaz Sahibi Uygulaması olarak kaydettirmemelidir.
- [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ırlama sürecinden önce veya bu süreçte onay vermeyi gerektirmelidir. Kullanıcı işlemi veya programlı bir yöntemle izin verilebilir ancak cihaz sahibi temel hazırlığı başlatılmadan önce uygun açıklama bildirimi (AOSP'de belirtildiği şekilde) GÖSTERİLMELİDİR. Ayrıca, cihaz sahibi temel hazırlığı için kullanılan programatik cihaz sahibi rıza mekanizması (kuruluşlar tarafından), kurumsal olmayan kullanım için kutudan çıkar çıkmaz deneyimi etkilememelidir.
- [C-1-3] İzni sabit kodlamalı veya diğer cihaz sahibi uygulamalarının kullanımını engellememelidir.
Cihaz uygulamaları android.software.device_admin
değerini belirtiyorsa ancak özel bir cihaz sahibi yönetim çözümü de içeriyorsa ve çözümlerinde yapılandırılmış bir uygulamayı standart Android DevicePolicyManager API'leri tarafından tanınan standart "cihaz sahibi"nin "cihaz sahibi eşdeğeri" olarak tanıtımını yapacak bir mekanizma sağlıyorsa:
- [C-2-1] Tanıtılan belirli uygulamanın meşru bir kurumsal cihaz yönetimi çözümüne ait olduğunu ve tescilli çözümde "Cihaz Sahibi" ile eşdeğer haklara sahip olacak şekilde yapılandırıldığını doğrulamak için bir süreç ZORUNLUDUR.
- [C-2-2] DPC uygulaması "Cihaz Sahibi" olarak kaydedilmeden önce
android.app.action.PROVISION_MANAGED_DEVICE
tarafından başlatılan akışla aynı AOSP Cihaz Sahibi izin açıklamasını GÖSTERMELİDİR. - DPC uygulaması "Cihaz Sahibi" olarak kaydedilmeden önce cihazda kullanıcı verileri OLABİLİR.
3.9.1.2 Yönetilen profil sağlama
Cihaz uygulamaları android.software.managed_users
bildirirse:
-
[C-1-1] Cihaz Politikası Denetleyici (DPC) uygulamasının yeni bir yönetilen profilin sahibi olmasına olanak tanıyan API'leri UYGULAMALIDIR.
-
[C-1-2] Yönetilen profil sağlama süreci (android.app.action.PROVISION_MANAGED_PROFILE tarafından başlatılan akış) kullanıcı deneyimi AOSP uygulamasıyla UYUMLU OLMALIDIR.
-
[C-1-3] Cihaz Politikası Denetleyicisi (DPC) tarafından belirli bir sistem işlevi devre dışı bırakıldığında kullanıcıya belirtmek için Ayarlar'da aşağıdaki kullanıcı özelliklerini ZORUNLU KULLANINIZ:
- Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya başka bir kullanıcı özelliği (ör. yayın öncesi AOSP bilgi simgesi).
- Cihaz yöneticisi tarafından
setShortSupportMessage
üzerinden 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
bildirirse:
- [C-1-1]
android.app.admin.DevicePolicyManager
API'leri aracılığıyla yönetilen profilleri DESTEKLEMELİDİR. - [C-1-2] Yalnızca bir yönetilen profilin oluşturulmasına izin VERMELİDİR.
- [C-1-3] Yönetilen uygulamaları, widget'ları ve Son Aramalar ve Bildirimler gibi rozetli diğer kullanıcı arayüzü öğelerini temsil etmek için bir simge rozeti (AOSP yayın öncesi çalışma rozetine benzer) KULLANMALIDIR.
- [C-1-4] Kullanıcının yönetilen profil uygulamasında olduğunu belirtmek için bir bildirim simgesi (AOSP yayın öncesi iş rozetine benzer) GÖSTERMELİDİR.
- [C-1-5] Cihaz açıldığında (ACTION_USER_PRESENT) ve ön plan uygulaması yönetilen profildeyse kullanıcının yönetilen profilde olduğunu belirten bir pop-up GÖSTERMELİDİR.
- [C-1-6] Yönetilen profilin bulunduğu durumlarda, kullanıcının cihaz politikası denetleyicisi tarafından etkinleştirildiyse intent'i yönetilen profilden birincil kullanıcıya veya tam tersi şekilde yönlendirmesine izin vermek için intent "seçicisinde" görsel bir kolaylık gösterilmelidir.
- [C-1-7] Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı özelliklerini GÖSTERMELİDİR:
- Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması.
- Birincil kullanıcı veya yönetilen profilde yüklü VPN uygulamalarının bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profilde yüklü uygulamaların bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profildeki hesapların bağımsız yönetimi.
- [C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş numara çevirici, kişiler ve mesajlaşma uygulamalarının, birincil profildekilerin yanı sıra yönetilen profildeki (varsa) arayan bilgilerini aramasına ve bilmesine ZORUNLUDUR.
- [C-1-9] Yönetilen profil, birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa bile, birden fazla kullanıcının etkin olduğu cihazlar için geçerli tüm güvenlik şartlarını karşılamalıdır (9.5 numaralı bölüme bakın).
Cihaz uygulamaları android.software.managed_users
ve android.software.secure_lock_screen
'ü bildirirse:
- [C-2-1] Yalnızca yönetilen profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı belirtme özelliğini DESTEKLEMELİDİR.
- Cihaz uygulamalarında
DevicePolicyManager.ACTION_SET_NEW_PASSWORD
intent'i dikkate alınmalı ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmaya yönelik bir arayüz gösterilmelidir. - Yönetilen profilin kilit ekranı kimlik bilgileri, Android Açık Kaynak Projesi Sitesi'nde belirtildiği gibi üst profille aynı kimlik bilgisi depolama ve yönetim mekanizmalarını KULLANMAK ZORUNDADIR.
- getParentProfileInstance tarafından döndürülen
DevicePolicyManager
örneği çağrılmadığı sürece DPC şifre politikaları yalnızca yönetilen profilin kilit ekranı kimlik bilgileri için UYGULANMALIDIR.
- Cihaz uygulamalarında
- Yönetilen profildeki kişiler, önceden yüklenmiş arama günlüğünde, arama içi kullanıcı arayüzünde, devam eden ve kaçırılan arama bildirimlerinde, kişi ve mesajlaşma uygulamalarında gösterildiğinde yönetilen profil uygulamalarını belirtmek için kullanılan rozetle işaretlenmelidir.
3.9.3 Yönetilen Kullanıcı Desteği
Cihaz uygulamaları android.software.managed_users
bildirirse:
- [C-1-1]
isLogoutEnabled
true
döndürdüğünde, mevcut kullanıcının oturumunu kapatıp birden fazla kullanıcı oturumunda birincil kullanıcıya geri dönmek için kullanıcıya bir imkân sunulmalıdır. Kullanıcıya sunulan olanağa, cihazın kilidi açılmadan kilit ekranından erişilebilmelidir.
3.10. Erişilebilirlik
Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sağlar. Ayrıca Android, erişilebilirlik hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma alması ve metni konuşmaya dönüştürme, dokunma geri bildirimi ve izleme topu/d-pad gezinme gibi alternatif geri bildirim mekanizmaları oluşturmasını sağlayan platform API'leri sağlar.
Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-1-1] Accessibility API'leri SDK dokümanlarında açıklandığı şekilde Android erişilebilirlik çerçevesinin bir uygulamasını SAĞLAMALIDIR.
- [C-1-2] Erişilebilirlik etkinlikleri oluşturmalı ve SDK'da belirtildiği gibi kayıtlı tüm
AccessibilityService
uygulamalarına uygunAccessibilityEvent
göndermelidir. - [C-1-4] Etkin erişilebilirlik hizmetleri
AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON
bildirdiğinde kullanıcının erişilebilirlik hizmetini kontrol etmesine olanak tanıyan bir düğme sistem gezinme çubuğuna EKLENMELİDİR . Sistem gezinme çubuğu olmayan cihaz uygulamalarında bu şartın geçerli olmadığını, ancak cihaz uygulamalarının bu erişilebilirlik hizmetlerini kontrol etmek için kullanıcılara bir kolaylık sunması gerektiğini unutmayın.
Cihaz uygulamalarında önceden yüklenmiş erişilebilirlik hizmetleri varsa bu hizmetler:
- [C-2-1] Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde, önceden yüklenmiş bu erişilebilirlik hizmetlerini Doğrudan Açılışta Farkında uygulamalar olarak UYGULAMALIDIR.
- Kullanıcıların ilgili erişilebilirlik hizmetlerini etkinleştirmesi için kutudan çıkar çıkmaz kurulum akışında bir mekanizma ve yazı tipi boyutunu, ekran boyutunu ve büyütme hareketlerini ayarlama seçenekleri SAĞLANMALIDIR.
3.11. Metin Okuma
Android, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına ve servis sağlayıcıların TTS hizmetlerinin uygulamalarını sunmasına olanak tanıyan API'ler içerir.
android.hardware.audio.output özelliğini bildiren cihaz uygulamaları:
- [C-1-1] Android TTS çerçevesi API'lerini desteklemelidir.
Cihaz uygulamaları üçüncü taraf TTS motorlarının kurulumunu destekliyorsa:
- [C-2-1] Kullanıcının sistem düzeyinde kullanmak üzere bir TTS motoru seçmesine olanak tanımak için kullanıcıya kolaylık sağlamalıdır.
3.12. TV Girişi Çerçevesi
Android Television Giriş Çerçevesi (TIF), canlı içeriğin Android Television cihazlarına yayınını kolaylaştırır. TIF, Android TV 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
platform özelliğini İLKLE bildirmelidir. - [C-1-2] Tüm TIF API'lerini desteklemelidir. Böylece, bu API'leri ve üçüncü taraf TIF tabanlı girişler hizmetini kullanan bir uygulama cihaza yüklenip kullanılabilir.
3.13. Hızlı Ayarlar
Android, sık kullanılan veya acil olarak 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ı'nı destekliyorsa:
- [C-1-1] Kullanıcının,
quicksettings
API'leri aracılığıyla sağlanan karoları üçüncü taraf uygulamasından eklemesine veya kaldırmasına İZİN VERMELİDİR. - [C-1-2] Üçüncü taraf uygulamasından doğrudan Hızlı Ayarlar'a otomatik olarak kutu eklenmemelidir.
- [C-1-3] Sistem tarafından sağlanan hızlı ayar karolarının yanı sıra üçüncü taraf uygulamalarından kullanıcı tarafından eklenen tüm karoları GÖSTERMELİDİR.
3.14. Medya kullanıcı arayüzü
Cihaz uygulamalarında, MediaBrowser
veya MediaSession
aracılığıyla üçüncü taraf uygulamalarla etkileşime geçen, sesle etkinleştirilmeyen uygulamalar (Uygulamalar) varsa bu uygulamalar:
-
[C-1-2] getIconBitmap() veya getIconUri() aracılığıyla elde edilen simgeleri ve getTitle() aracılığıyla elde edilen başlıkları
MediaDescription
bölümünde açıklandığı şekilde net bir şekilde GÖSTERMELİDİR. Başlıklar, güvenlik yönetmeliklerine (ör. sürücünün dikkatinin dağılması) uymak için kısaltılabilir. -
[C-1-3] Bu üçüncü taraf uygulaması tarafından sağlanan içerik gösterilirken üçüncü taraf uygulama simgesi GÖSTERİLMELİDİR.
-
[C-1-4] Kullanıcının
MediaBrowser
hiyerarşisinin tamamıyla etkileşime geçmesine İZİN VERMELİDİR. Güvenlik yönetmeliklerine (ör. sürücünün dikkatinin dağılması) uymak için hiyerarşinin bir bölümüne erişimi KISITLAYABİLİR ancak içeriğe veya içerik sağlayıcıya göre tercihli muamele YAPMAMALIDIR. -
[C-1-5]
MediaSession.Callback#onMediaButtonEvent
içinKEYCODE_HEADSETHOOK
veyaKEYCODE_MEDIA_PLAY_PAUSE
'e iki kez dokunmayıKEYCODE_MEDIA_NEXT
olarak kabul ETMELİDİR.
3.15. Hazır Uygulamalar
Cihaz uygulamaları aşağıdaki koşulları karşılamalıdır:
- [C-0-1] Anında Uygulamalara yalnızca
android:protectionLevel
değeri"instant"
olan izinler VERİLMELİDİR. - [C-0-2] Aşağıdakilerden biri geçerli olmadığı sürece hazır uygulamalar, örtülü intent'ler aracılığıyla yüklü uygulamalarla etkileşimde BULUNMAMALIDIR:
- Bileşenin intent kalıbı filtresi gösterilir ve CATEGORY_BROWSABLE özelliğine sahiptir
- İşlem, ACTION_SEND, ACTION_SENDTO, ACTION_SEND_MULTIPLE seçeneklerinden biri olmalıdır.
- Hedef, android:visibleToInstantApps ile açıkça gösteriliyor
- [C-0-3] Bileşen, android:visibleToInstantApps aracılığıyla gösterilmediği sürece Hazır Uygulamalar, yüklü uygulamalarla açıkça etkileşime GİRMEMELİDİR.
- [C-0-4] Hazır uygulama, yüklü uygulamaya açıkça bağlanmadığı sürece yüklü uygulamalar, cihazdaki hazır uygulamalarla ilgili ayrıntıları GÖREMEZ.
Cihaz uygulamaları anında uygulamaları destekliyorsa:
- [C-1-1] Hızlı Uygulamalar ile etkileşim kurmak için aşağıdaki kullanıcı özelliklerini ZORUNLU KULLANINIZ. AOSP, varsayılan sistem kullanıcı arayüzü, ayarlar ve başlatıcı ile şartları karşılar.
- [C-1-2] Her uygulama paketi için yerel olarak önbelleğe alınan Hızlı Uygulamaları görüntüleme ve silme olanağı sunmalıdır.
- [C-1-3] Hazır uygulama ön planda çalışırken daraltılabilen kalıcı bir kullanıcı bildirimi SAĞLANMALIDIR. Bu kullanıcı bildirimi, Hazır Uygulamaların yüklenmesi gerekmediğini İÇERMELİDİR ve kullanıcıyı Ayarlar'daki uygulama bilgileri ekranına yönlendiren bir kullanıcı özelliği sağlamalıdır. İşlemi Intent.ACTION_VIEW olarak ayarlanmış ve şeması "http" veya "https" olan bir intent kullanılarak tanımlandığı üzere web intent'leri aracılığıyla başlatılan Instant Apps için ek bir kullanıcı özelliği, kullanıcının Instant App'i başlatmamasına ve cihazda tarayıcı varsa yapılandırılmış web tarayıcısında ilişkili bağlantıyı başlatmasına İZİN VERMELİDİR.
- [C-1-4] Cihazda Son Aramalar işlevi varsa çalışan Instant Apps'a Son Aramalar işlevinden erişilmesine İZİN VERMELİDİR.
- [C-1-5] Buradaki SDK'da listelenen intent'ler için bir intent işleyiciyle bir veya daha fazla uygulamayı ya da hizmet bileşenini önceden yüklemeli ve intent'leri Anında Uygulamalar için görünür hale getirmelidir.
3.16. Tamamlayıcı Cihaz Eşleme
Android, tamamlayıcı cihazlarla ilişkilendirmeyi daha etkili bir şekilde yönetmek için tamamlayıcı cihaz eşleme desteği içerir ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager
API'sini sağlar.
Cihaz uygulamaları, tamamlayıcı cihaz eşleme özelliğini destekliyorsa:
- [C-1-1] Özellik bayrağını
FEATURE_COMPANION_DEVICE_SETUP
bildirmelidir . - [C-1-2]
android.companion
paketindeki API'lerin tam olarak uygulandığından EMİN OLMALIDIR. - [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 kolaylıklar sağlanmalıdır.
3:17. Ağır Uygulamalar
Cihaz uygulamaları özelliği FEATURE_CANT_SAVE_STATE
olarak tanımlıyorsa:
- [C-1-1] Sistemde aynı anda
cantSaveState
çalıştırıldığını belirten yalnızca bir yüklü uygulama OLMALIDIR. Kullanıcı bu tür bir uygulamadan açıkça çıkmadan ayrılırsa (ör. sistemde etkin bir etkinlik kalmadığında geri tuşuna basmak yerine sistemde etkin bir etkinlikten ayrılırken ana sayfa tuşuna basarak) cihaz uygulamaları, ön plan hizmetleri gibi çalışmaya devam etmesi beklenen diğer öğeler için RAM'de bu uygulamaya öncelik VERMELİDİR. Bu tür bir uygulama arka planda olsa bile 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 tanımlanmış ikinci bir uygulamayı başlattığında normal durum kaydetme/geri yükleme mekanizmasına dahil edilmeyecek uygulamayı seçmek için bir kullanıcı arayüzü imkanı SAĞLANMALIDIR. - [C-1-3] Politikadaki diğer değişiklikler (ör. CPU performansını değiştirme veya planlama önceliğini değiştirme)
cantSaveState
belirten uygulamalara UYGULANMAMALIDIR.
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE
özelliğini beyan etmiyorsa:
- [C-1-1] Uygulamalar tarafından ayarlanan
cantSaveState
özelliğini yok saymalı ve uygulama davranışını bu özelliğe göre DEĞİŞTİRMEmelidir.
3.18. Kişiler
Android, uygulamaların cihazda depolanan kişi bilgilerini yönetmesine olanak tanıyan Contacts Provider
API'leri içerir. Doğrudan cihaza girilen iletişim verileri genellikle bir web hizmetiyle senkronize edilir ancak veriler yalnızca cihazda yerel olarak depolanıyor OLABİLİR. Yalnızca cihazda depolanan kişilere yerel kişiler denir.
Ham kişilerin ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları, hesabın ilgili Account.name ve Account.type alanlarıyla eşleştiğinde RawContacts, bir hesapla ilişkilendirilir veya "hesap içinde depolanır.
Varsayılan yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir hesapla ilişkili olmayan ham kişiler için bir hesaptır. Bu hesap, ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları için null değerleriyle oluşturulur.
Özel yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir hesapla ilişkilendirilmeyen ham kişiler için bir hesaptır. Bu hesap, ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları için en az bir null olmayan değer ile oluşturulur.
Cihaz uygulamaları:
- [C-SR] Özel yerel hesaplar oluşturmamak önemle ÖNERİLİR.
Cihaz uygulamalarında özel yerel hesap kullanılıyorsa:
- [C-1-1] Özel yerel hesabın
ACCOUNT_NAME
değeriContactsContract.RawContacts.getLocalAccountName
tarafından İADE EDİLMELİDİR - [C-1-2] Özel yerel hesabın
ACCOUNT_TYPE
değeriContactsContract.RawContacts.getLocalAccountType
tarafından İADE EDİLMELİDİR - [C-1-3] Üçüncü taraf uygulamaları tarafından varsayılan yerel hesapla (ör.
ACCOUNT_NAME
veACCOUNT_TYPE
için null değerler ayarlayarak) eklenen ham kişiler özel yerel hesaba EKLENMESİ GEREKİR. - [C-1-4] Özel yerel hesaba eklenen ham kişiler, hesap eklendiğinde veya kaldırıldığında KALDIRILMAMALIDIR.
- [C-1-5] Özel yerel hesaba yönelik olarak yapılan silme işlemleri,
CALLER\_IS\_SYNCADAPTER
parametresi yanlış olarak ayarlanmış veya belirtilmemiş olsa bile ham kişilerin hemen temizlenmesine (CALLER_IS_SYNCADAPTER
parametresi doğru olarak ayarlanmış gibi) SEBEP OLMALIDIR.
4. Uygulama Paketleme Uyumluluğu
Cihaz uygulamaları:
- [C-0-1] Resmi Android SDK'sında bulunan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarını yükleyip çalıştırabilmelidir.
- Yukarıdaki şart zor olabileceğinden, cihaz uygulamalarında AOSP referans uygulamasının paket yönetim sisteminin kullanılması ÖNERİLİR.
Cihaz uygulamaları:
- [C-0-2] APK İmza Şeması v3 , APK İmza Şeması v2 ve JAR imzalama kullanılarak ".apk" dosyalarının doğrulanmasını DESTEKLEMELİDİR.
- [C-0-3] .apk, Android Manifest, Dalvik bayt kodu veya RenderScript bayt kodu biçimlerini, bu dosyaların diğer uyumlu cihazlarda düzgün şekilde yüklenmesini ve çalışmasını engelleyecek şekilde UZATMASI GEREKMEZ.
-
[C-0-4] Paketin mevcut "kayıtlı yükleyicisi" dışındaki uygulamaların,
DELETE_PACKAGE
izni için SDK'da belirtildiği gibi, kullanıcı onayı olmadan uygulamayı sessizce kaldırmasına İZİN VERMEMELİDİR. Bunun tek istisnası, PACKAGE_NEEDS_VERIFICATION intent'ini işleyen sistem paket doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE intent'ini işleyen depolama alanı yöneticisi uygulamasıdır. -
[C-0-5]
android.settings.MANAGE_UNKNOWN_APP_SOURCES
amacını işleyen bir etkinliğe sahip OLMALIDIR. -
[C-0-6] Yükleme isteğinde bulunan uygulama aşağıdaki tüm koşulları karşılamadığı sürece uygulama paketlerini bilinmeyen kaynaklardan yüklememelidir:
REQUEST_INSTALL_PACKAGES
iznini beyan etmeli veyaandroid:targetSdkVersion
değerini 24 veya daha düşük bir değere ayarlamalıdır.- Kullanıcı tarafından bilinmeyen kaynaklardan uygulama yükleme izni verilmiş OLMALIDIR.
-
Uygulama başına bilinmeyen kaynaklardan uygulama yükleme iznini verme/iptal etme seçeneği sunmalıdır ancak cihaz uygulaması kullanıcıların bu seçeneği kullanmasına izin vermek istemiyorsa bunu işlem yapmadan uygulayıp
startActivityForResult()
içinRESULT_CANCELED
döndürebilir. Ancak bu gibi durumlarda bile kullanıcıya neden böyle bir seçenek sunulmadığını belirtmelidir. -
[C-0-7] Aynı sistem API'si
PackageManager.setHarmfulAppWarning
tarafından zararlı olabilecek olarak işaretlenmiş bir uygulamada etkinlik başlatmadan önce kullanıcıya sistem API'siPackageManager.setHarmfulAppWarning
aracılığıyla sağlanan uyarı dizesini içeren bir uyarı iletişim kutusu GÖSTERMELİDİR. -
Uyarı iletişiminde kullanıcılara uygulamayı kaldırmayı veya başlatmayı seçme olanağı VERİLMELİDİR.
-
[C-0-8] Burada belirtildiği gibi Artımlı Dosya Sistemi desteği UYGULANMALIDIR.
-
[C-0-9] APK İmza Şeması v4 kullanılarak .apk dosyalarının doğrulanmasını DESTEKLEMELİDİR.
-
Cihaz uygulamaları daha önce bir Android sürümünde kullanıma sunulmuşsa ve [C-0-8] ve [C-0-9] şartlarını sistem yazılımı güncellemesiyle karşılayamıyorsa bu şartlardan muaf tutulabilir.
5. Multimedya Uyumluluğu
Cihaz uygulamaları:
- [C-0-1]
MediaCodecList
tarafından beyan edilen her 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ı tarafından kullanılabilen kodlayıcılar ve kod çözücüler için
MediaCodecList
aracılığıyla destek beyan ETMEK VE RAPORLAMAK ZORUNLUDUR. - [C-0-3] Kodlayabileceği tüm biçimlerin kodunu doğru şekilde çözebilmeli ve üçüncü taraf uygulamalarına sunabilmelidir. Buna, kodlayıcılarının oluşturduğu tüm bit akışları ve
CamcorderProfile
'da raporlanan profiller dahildir.
Cihaz uygulamaları:
- Minimum codec gecikmesi hedeflenmelidir. Diğer bir deyişle,
- Giriş arabelleklerini tüketmemeli, depolamamalı ve yalnızca işlendikten sonra döndürmemelidir.
- Kodu çözülmüş arabellekleri standartta belirtilenden (ör. SPS) daha uzun süre tutmamalıdır.
- GOP yapısının gerektirdiğinden daha uzun süre kodlanmış arabellekleri TUTMAYACAK.
Aşağıdaki bölümde listelenen tüm codec'ler, Android Açık Kaynak Projesi'ndeki tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.
Google veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerinden arındırılmış olduğu konusunda herhangi bir beyanda bulunmadığını lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya paylaşımlı yazılım da dahil olmak üzere bu kodun uygulamalarının ilgili patent sahiplerinden patent lisansları gerektirebileceğini göz önünde bulundurması önerilir.
5.1. Medya codec'leri
5.1.1. Ses Kodlaması
Daha fazla bilgi için 5.1.3'e göz atın. Ses codec'leri ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.microphone
değerini belirtiyorsa aşağıdaki ses biçimlerinin kodlanmasını desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [C-1-1] PCM/WAVE
- [C-1-2] FLAC
- [C-1-3] Opus
Tüm ses kodlayıcılar ŞUNLARI desteklemelidir:
- [C-3-1]
android.media.MediaCodec
API aracılığıyla PCM 16 bit doğal bayt sırası ses çerçeveleri.
5.1.2. Ses Kod Çözme
Daha fazla bilgi için 5.1.3'e göz atın. Ses codec'leri ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.audio.output
özelliğini destekliyorsa aşağıdaki ses biçimlerinin kodunu çözmeyi desteklemelidir:
- [C-1-1] MPEG-4 AAC Profili (AAC LC)
- [C-1-2] MPEG-4 HE AAC Profili (AAC+)
- [C-1-3] MPEG-4 HE AACv2 Profili (geliştirilmiş AAC+)
- [C-1-4] AAC ELD (düşük gecikmeli gelişmiş AAC)
- [C-1-11] xHE-AAC (USAC Baseline Profile ve ISO/IEC 23003-4 Dynamic Range Control Profile'i içeren ISO/IEC 23003-3 Extended HE AAC Profile)
- [C-1-5] FLAC
- [C-1-6] MP3
- [C-1-7] MIDI
- [C-1-8] Vorbis
- [C-1-9] 24 bit, 192 KHz örnekleme hızı ve 8 kanala kadar yüksek çözünürlüklü ses biçimleri dahil PCM/WAVE. Bu şartın yalnızca kod çözme için geçerli olduğunu ve cihazın oynatma aşamasında örnekleme oranını düşürmesine ve sesleri azaltmasına izin verildiğini unutmayın.
- [C-1-10] Opus
Cihaz uygulamaları, android.media.MediaCodec
API'sindeki varsayılan AAC ses kod çözücü aracılığıyla çok kanallı akışların (ör. ikiden fazla kanal) AAC giriş arabelleklerinin PCM'ye kodunun çözülmesini destekliyorsa aşağıdakiler desteklenmelidir:
- [C-2-1] Kod çözme işlemi, aşağı karıştırma olmadan YAPILMALIDIR (ör. 5.0 AAC akışı beş kanal PCM olarak, 5.1 AAC akışı altı kanal PCM olarak kod çözülmelidir).
- [C-2-2] Dinamik aralık meta verileri, ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde ve ses kodlayıcının dinamik aralıkla ilgili davranışlarını yapılandırmak için
android.media.MediaFormat
DRC anahtarlarında tanımlandığı şekilde OLMALIDIR. AAC DRC anahtarları API 21'de kullanıma sunulmuştur ve şunlardır:KEY_AAC_DRC_ATTENUATION_FACTOR
,KEY_AAC_DRC_BOOST_FACTOR
,KEY_AAC_DRC_HEAVY_COMPRESSION
,KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
veKEY_AAC_ENCODED_TARGET_LEVEL
. - [SR] Yukarıdaki C-2-1 ve C-2-2 koşullarının tüm AAC ses kod çözücüleri tarafından karşılanması önemle ÖNERİLİR.
USAC ses kodunun çözülmesi sırasında MPEG-D (ISO/IEC 23003-4):
- [C-3-1] Ses seviyesi ve DRC meta verileri MPEG-D DRC Dinamik Aralık Kontrolü Profili 1. Seviyesine göre yorumlanmalı ve uygulanmalıdır.
- [C-3-2] Kod çözücü, aşağıdaki
android.media.MediaFormat
anahtarlarıyla ayarlanan yapılandırmaya göre DAVRANIYOR OLMALIDIR:KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
veKEY_AAC_DRC_EFFECT_TYPE
.
MPEG-4 AAC, HE AAC ve HE AACv2 profil kod çözücüleri:
- ISO/IEC 23003-4 Dinamik Aralık Kontrol Profili'ni kullanarak ses düzeyini ve dinamik aralığı kontrolünü DESTEKLEYEBİLİR.
ISO/IEC 23003-4 destekleniyorsa ve hem ISO/IEC 23003-4 hem de ISO/IEC 14496-3 meta verileri kod çözülmüş bit akışında mevcutsa:
- ISO/IEC 23003-4 meta verileri öncelikli OLUR.
Tüm ses kod çözücüler şu çıkışları desteklemelidir:
- [C-6-1]
android.media.MediaCodec
API aracılığıyla PCM 16 bit doğal bayt sıralı ses çerçeveleri.
5.1.3. Ses codec'leri hakkında ayrıntılı bilgi
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ındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
MPEG-4 HE AAC Profili (AAC+) | 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
MPEG-4 HE AACv2 Profili (geliştirilmiş AAC+) |
16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
AAC ELD (gelişmiş düşük gecikmeli AAC) | 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerikler desteklenir. |
|
USAC | 7,35 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. | MPEG-4 (.mp4, .m4a) |
AMR-NB | 8 kHz'te örneklenmiş 4,75 ila 12,2 Kb/sn | 3GPP (.3gp) |
AMR-WB | AMR-WB, Uyarlanabilir Çoklu Hız - Geniş Bant Konuşma Codec'i bölümünde tanımlandığı gibi, 16 kHz'te örneklenen 6,60 kbit/sn ila 23,85 kbit/sn arasında 9 hız | 3GPP (.3gp) |
FLAC | Hem kodlayıcı hem de kod çözücü için: En az Mono ve Stereo modları desteklenmelidir. 192 kHz'e kadar örnek hızları desteklenmelidir; 16 bit ve 24 bit çözünürlük desteklenmelidir. FLAC 24 bit ses verisi işleme, kayan nokta ses yapılandırmasıyla KESİNLİKLE kullanılabilir olmalıdır. |
|
MP3 | Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR) |
|
MIDI | MIDI Türü 0 ve 1. DLS 1 ve 2 sürümü. XMF ve Mobil XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek |
|
Vorbis |
|
|
PCM/WAVE | PCM codec'i 16 bit doğrusal PCM ve 16 bit kayan noktayı DESTEKLEMELİDİR. WAVE çıkarıcı, 16 bit, 24 bit, 32 bit doğrusal PCM ve 32 bit kayan nokta (donanım sınırına kadar hızlarda) desteklemelidir. Örnek hızları 8 kHz ile 192 kHz arasında OLMALIDIR. | WAVE (.wav) |
Opus |
Kod çözme: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızına sahip mono, stereo, 5.0 ve 5.1 içerikler desteklenir. Kodlama: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızına sahip mono ve stereo içerikler desteklenir. |
|
5.1.4. Resim Kodlaması
Daha fazla bilgi için 5.1.6. Resim codec'leri ayrıntıları.
Cihaz uygulamaları aşağıdaki resim kodlamasını desteklemelidir:
- [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
aracılığıyla HEIC kodlamayı 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
Daha fazla 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
- [C-0-6] Ham
Cihaz uygulamaları HEVC video kod çözme işlemini destekliyorsa: * [C-1-1] HEIF (HEIC) resim kod çözme işlemini DESTEKLEMELİDİR.
Yüksek bit derinliği biçimini (kanal başına 9 bit veya daha fazla) destekleyen resim kod çözücüler:
- [C-2-1] Uygulama tarafından istenirse (ör.
android.graphics.Bitmap
'ınARGB_8888
yapılandırması aracılığıyla) 8 bit eşdeğer biçimin çıkışını desteklemelidir.
5.1.6. Resim codec'leri ayrıntıları
Biçim/Codec | Ayrıntılar | Desteklenen dosya türleri/kapsayıcı biçimleri |
---|---|---|
JPEG | Taban+aşamalı | JPEG (.jpg) |
GIF | GIF (.gif) | |
PNG | PNG (.png) | |
BMP | BMP (.bmp) | |
WebP | WebP (.webp) | |
İşlenmemiş | ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw) | |
HEIF | Resim, Resim koleksiyonu, Resim dizisi | HEIF (.heif), HEIC (.heic) |
MediaCodec API aracılığıyla sunulan resim kodlayıcı ve kod çözücüler
-
[C-1-1]
CodecCapabilities
aracılığıyla YUV420 8:8:8 esnek renk biçimini (COLOR_FormatYUV420Flexible
) desteklemelidir. -
[SR] Giriş Yüzey modu için RGB888 renk biçiminin desteklenmesi önemle ÖNERİLİR.
-
[C-1-3] Planar veya yarı planar YUV420 8:8:8 renk biçimlerinden en az birini desteklemelidir:
COLOR_FormatYUV420PackedPlanar
(COLOR_FormatYUV420Planar
ile eşdeğer) veyaCOLOR_FormatYUV420PackedSemiPlanar
(COLOR_FormatYUV420SemiPlanar
ile eşdeğer). Her ikisinin de desteklenmesi önemle tavsiye edilir.
5.1.7. Video codec'leri
- Web video yayını ve video konferans hizmetlerinin kabul edilebilir kalitede olması için cihaz uygulamalarında koşulları karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
Cihaz uygulamalarında video kod çözücü veya kodlayıcı varsa:
-
[C-1-1] Video codec'leri, standart ve yapılandırma tarafından belirlenen 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ı desteklemeli ancak aşırı tahsis etmemelidir.
-
[C-1-2] Video kodlayıcılar ve kod çözücüler,
CodecCapabilities
ile YUV420 8:8:8 esnek renk biçimlerini (COLOR_FormatYUV420Flexible
) desteklemelidir. -
[C-1-3] Video kodlayıcılar ve kod çözücüler, düz veya yarı düz YUV420 8:8:8 renk biçimlerinden en az birini desteklemelidir:
COLOR_FormatYUV420PackedPlanar
(COLOR_FormatYUV420Planar
ile eşdeğer) veyaCOLOR_FormatYUV420PackedSemiPlanar
(COLOR_FormatYUV420SemiPlanar
ile eşdeğer). Her ikisini de desteklemeleri önemle ÖNERİLİR. -
[SR] Video kodlayıcıların ve kod çözücülerin, donanım için optimize edilmiş düz veya yarı düz YUV420 8:8:8 renk biçimlerinden en az birini (YV12, NV12, NV21 veya eşdeğer tedarikçi firma tarafından optimize edilmiş biçim) DESTEKLEMESİ ÖNERİLİR.
-
[C-1-5] Yüksek bit derinliği biçimini (kanal başına 9'dan fazla bit) destekleyen video kod çözücüler, uygulama tarafından istenirse 8 bit eşdeğer biçimi çıkışını desteklemelidir. Bu,
android.media.MediaCodecInfo
aracılığıyla YUV420 8:8:8 renk biçiminin desteklenmesi şeklinde YANSITILMALIDIR.
Cihaz uygulamaları Display.HdrCapabilities
aracılığıyla HDR profili desteğinin reklamını yapıyorsa:
- [C-2-1] HDR statik meta verilerini ayrıştırmayı ve işlemeyi DESTEKLEMELİDİR.
Cihaz uygulamaları, MediaCodecInfo.CodecCapabilities
sınıfındaki FEATURE_IntraRefresh
aracılığıyla yenileme içi desteğin reklamını yapıyorsa:
- [C-3-1] 10 ila 60 kare aralığındaki yenileme sürelerini desteklemeli ve yapılandırılmış yenileme süresinin% 20'si içinde doğru şekilde çalışmalıdır.
Uygulama, KEY_COLOR_FORMAT
biçim anahtarını kullanarak aksini belirtmediği sürece video kod çözücü uygulamaları:
- [C-4-1] Yüzey çıkışı kullanılarak yapılandırılmışsa varsayılan olarak donanım ekranı için optimize edilmiş renk biçimini KULLANMALIDIR.
- [C-4-2] Yüzey çıkışını kullanmamak üzere yapılandırılmışsa varsayılan olarak CPU okuma için optimize edilmiş bir YUV420 8:8:8 renk biçimi OLMALIDIR.
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 5.2 ve 5.3 bölümlerine bakın. |
|
H.265 HEVC | Ayrıntılar için 5.3 numaralı bölüme bakın. |
|
MPEG-2 | Ana Profil |
|
MPEG-4 SP |
|
|
VP8 | Ayrıntılar için 5.2 ve 5.3 bölümlerine bakın. |
|
VP9 | Ayrıntılar için 5.3 numaralı bölüme bakın. |
|
5.1.9. Medya Kod Çözücü Güvenliği
Cihaz uygulamaları, aşağıda açıklanan medya codec'i güvenlik özelliklerine uygunluğu SAĞLAMALIDIR.
Android, platformlar arası bir multimedya hızlandırma API'si olan OMX'in yanı sıra düşük yükü olan 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 (veya her ikisi) aracılığıyla medya codec'leri için destek SAĞLAMALI ve güvenlik korumalarını devre dışı bırakmamalı veya atlatmamalıdır. Bu, her codec'in OMX veya Codec 2.0 API'yi KULLANMASI GEREĞİ anlamına gelmez. Yalnızca bu API'lerden en az biri için destek BULUNMASI GEREĞİ ve mevcut API'ler için destekte mevcut güvenlik korumalarının YER ALMASI GEREĞİ anlamına gelir.
- [C-SR] Codec 2.0 API desteğinin eklenmesi ö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 Open Source Project'ten (varsa) ilgili OMX yazılım codec'ini İÇERMELİDİR.
- [C-2-2] "OMX.google." ile başlayan adlara sahip codec'ler Android Açık Kaynak Projesi kaynak koduna dayalı OLMALIDIR.
- [C-SR] OMX yazılım codec'lerinin, bellek eşleyiciler dışındaki donanım sürücülerine erişimi olmayan bir codec işleminde çalıştırılması önemle ÖNERİLİR.
Cihaz uygulamaları Codec 2.0 API'yi destekliyorsa:
- [C-3-1] Cihaz tarafından desteklenen her medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Open Source Project'ten (varsa) ilgili Codec 2.0 yazılım codec'ini İÇERMELİDİR.
- [C-3-2] Yazılım codec'lerine daha dar kapsamlı erişim izni verebilmek için Codec 2.0 yazılım codec'lerini Android Açık Kaynak Projesi'nde sağlandığı şekilde yazılım codec'i işlemine yerleştirmelidir.
- [C-3-3] "c2.android." ile başlayan adlara sahip codec'ler Android Açık Kaynak Projesi kaynak koduna dayalı OLMALIDIR.
5.1.10. Medya codec'i karakterizasyonu
Cihaz uygulamaları medya codec'lerini destekliyorsa:
- [C-1-1]
MediaCodecInfo
API aracılığıyla medya codec'i karakterizasyonunun doğru değerlerini DÖNDÜRMELİDİR.
Özellikle:
- [C-1-2] "OMX." ile başlayan adlara sahip codec'ler OMX API'lerini KULLANMALI ve OMX IL adlandırma kurallarına uygun adlara sahip olmalıdır.
- [C-1-3] "c2." ile başlayan adlara sahip codec'ler Codec 2.0 API'sini KULLANMALI ve adları Android için Codec 2.0 adlandırma kurallarına uygun olmalıdır.
- [C-1-4] "OMX.google." veya "c2.android." ile başlayan adlara sahip codec'ler Tedarikçi firma veya donanım hızlandırmalı olarak tanımlanmamalıdır.
- [C-1-5] Bellek ayırıcılar ve eşleyiciler dışındaki donanım sürücülerine erişimi olan bir codec işleminde (tedarikçi veya sistem) çalışan codec'ler YALNIZCA YAZILIM olarak tanımlanmamalıdır.
- [C-1-6] Android Açık Kaynak Projesi'nde bulunmayan veya bu projedeki kaynak koduna dayalı olmayan codec'ler tedarikçi olarak tanımlanmalıdır.
- [C-1-7] Donanım hızlandırması kullanan codec'ler donanım hızlandırmalı olarak tanımlanmalıdır.
- [C-1-8] Kodek adları yanıltıcı OLMAYACAK. Örneğin, "decoders" adlı codec'ler kod çözmeyi, "encoders" adlı codec'ler ise kodlamayı desteklemelidir. Adları medya biçimlerini içeren codec'ler bu biçimleri DESTEKLEMELİDİR.
Cihaz uygulamaları video codec'lerini destekliyorsa:
- [C-2-1] Tüm video codec'leri, codec tarafından destekleniyorsa aşağıdaki boyutlar için elde edilebilir kare hızı verilerini YAYINLAMALIDIR:
SD (düşük kalite) | SD (yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü |
|
|
|
1920 x 1080 piksel (MPEG4 dışında) | 3.840 x 2.160 piksel (HEVC, VP9) |
- [C-2-2] Donanım hızlandırmalı olarak tanımlanan video codec'leri PERFORMANS NOKTALARI bilgilerini YAYINLAMALIDIR. Başka bir desteklenen standart performans noktası tarafından kapsanmadığı sürece, her biri desteklenen tüm standart performans noktalarını (
PerformancePoint
API'de listelenmiştir) listelemelidir. - Ayrıca, listelenen standartlardan farklı bir şekilde sürekli video performansını destekliyorsa genişletilmiş performans noktalarını YAYINLAMALIDIR.
5.2. Video Kodlama
Cihaz uygulamaları herhangi bir video kodlayıcıyı destekliyorsa ve üçüncü taraf uygulamalarına sunuluyorsa:
- İki kaydırmalı pencerede, kare içi (I karesi) aralıkları arasındaki bit hızının% 15'inden fazla OLMAMALIDIR.
- 1 saniyelik hareketli bir pencerede bit hızının% 100'ünden fazla olmamalıdır.
Cihaz uygulamaları en az 2, 5 inç diyagonal uzunluğunda yerleşik bir ekran ekranı içeriyorsa veya video çıkış bağlantı noktası içeriyorsa ya da android.hardware.camera.any
özellik işareti aracılığıyla kamera desteğini belirtiyorsa:
- [C-1-1] VP8 veya H.264 video kodlayıcılarından en az birinin desteğini İÇERMELİ ve üçüncü taraf uygulamaları için kullanılabilir hale getirmelidir.
- Hem VP8 hem de H.264 video kodlayıcılarını desteklemeli ve üçüncü taraf uygulamaları için kullanılabilir hale getirmelidir.
Cihaz uygulamaları H.264, VP8, VP9 veya HEVC video kodlayıcılarından herhangi birini destekliyorsa ve bu kodlayıcıları üçüncü taraf uygulamalarına sunuyorsa:
- [C-2-1] Dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
- Video kodlayıcının anlık kare süresini giriş arabelleklerinin zaman damgasına göre belirlemesi ve bit grubunu bu kare süresine göre tahsis etmesi gereken değişken kare hızlarını DESTEKLEMELİDİR.
Cihaz uygulamaları MPEG-4 SP video kodlayıcıyı destekliyorsa ve üçüncü taraf uygulamaların kullanımına sunuyorsa:
- Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
Cihaz uygulamaları donanım hızlandırmalı video veya resim kodlayıcılar sağlıyorsa ve android.camera
API'leri aracılığıyla bir veya daha fazla bağlı ya da takılabilir donanım kamerayı destekliyorsa:
- [C-4-1] Tüm donanım hızlandırmalı video ve resim kodlayıcılar, donanım kameralardan kare kodlamayı DESTEKLEMELİDİR.
- Tüm video veya resim kodlayıcılar aracılığıyla donanım kameralarından kare kodlamayı DESTEKLEMELİDİR.
5.2.1. H.263
Cihaz uygulamaları H.263 kodlayıcıları destekliyorsa ve üçüncü taraf uygulamalarına sunuluyorsa:
- [C-1-1] Temel Profil 45. Seviyesini DESTEKLEMELİDİR.
- Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
5.2.2. H.264
Cihaz uygulamaları H.264 codec'ini destekliyorsa:
- [C-1-1] Temel Profil 3. Seviyesi desteklenmelidir. Ancak ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) için destek İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğu korumak için kodlayıcıların, referans profili için ASO, FMO ve RS kullanmaması ÖNERİLİR.
- [C-1-2] Aşağıdaki tabloda yer alan SD (Standart Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
- Ana Profil 4. Seviyeyi DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için H.264 kodlamanın desteklendiğini bildirirse:
- [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ı | 20 fps | 30 fps | 30 fps | 30 fps |
Video bit hızı | 384 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
5.2.3. VP8
Cihaz uygulamaları VP8 codec'ini destekliyorsa:
- [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
- Aşağıdaki HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
- [C-1-2] Matroska WebM dosyası yazmayı DESTEKLEMELİDİR.
- Web video yayını ve video konferans hizmetlerinin kabul edilebilir kalitede olmasını sağlamak için WebM projesi RTC donanım kodlama şartlarını karşılayan bir donanım VP8 codec'i SAĞLAMALIDIR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için VP8 kodlamanın desteklendiğini bildirirse:
- [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. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- [C-1-2] Profil 0 Seviye 3'ü desteklemelidir.
- [C-1-1] Matroska WebM dosyası yazmayı DESTEKLEMELİDİR.
- [C-1-3] CodecPrivate verileri OLUŞTURULMALIDIR.
- Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
- [SR], donanım kodlayıcı varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini desteklemesi İYİCE Ö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 | 3.840 x 2.160 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 2. Profili veya 3. Profili desteklediğini iddia ediyorsa:
- 12 bit biçim desteği İSTEĞE BAĞLIDIR.
5.2.5. H.265
Cihaz uygulamaları H.265 codec'ini destekliyorsa:
- [C-1-1] Ana Profil 3. Seviyesi desteklenmelidir.
- Aşağıdaki tabloda belirtilen HD kodlama profillerini DESTEKLEMELİDİR.
- [SR], donanım kodlayıcı varsa aşağıdaki tabloda belirtilen HD kodlama profillerini desteklemesi için ÇOK Ö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 | 3.840 x 2.160 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 kod çö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ıştaki standart Android API'leri aracılığıyla dinamik video çözünürlüğü ve kare hızı geçişini gerçek zamanlı olarak ve cihazdaki her codec'in desteklediği 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üzey'i desteklemelidir.
5.3.2. H.263
Cihaz uygulamaları H.263 kod çözücüleri destekliyorsa:
- [C-1-1] Temel Profil 30. ve 45. seviyelerini desteklemelidir.
5.3.3. MPEG-4
MPEG-4 kod çözücüleri olan cihaz uygulamaları:
- [C-1-1] Basit Profil 3. Seviyesi desteklenmelidir.
5.3.4. H.264
Cihaz uygulamaları H.264 kod çözücüleri destekliyorsa:
- [C-1-1] Ana Profil 3.1 Seviyesi ve Temel Profil desteklenmelidir. ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTİĞE BAĞLIDIR.
- [C-1-2] Aşağıdaki tabloda listelenen ve Temel Profil ile Ana Profil Seviye 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlük) profillerine sahip videoların kodunu çözebilmelidir.
- Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlük) profilleriyle videoların kodunu çözebilmelidir.
Display.getSupportedModes()
yöntemi tarafından bildirilen yükseklik, video çözünürlüğüne eşit veya video çözünürlüğünden büyükse cihaz uygulamaları:
- [C-2-1] Aşağıdaki tabloda yer alan HD 720p video kod çözme profillerini DESTEKLEMELİDİR.
- [C-2-2] Aşağıdaki tabloda yer alan HD 1080p video kod çözme profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 240 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 30 fps | 30 fps | 60 fps | 30 fps (60 fpsTelevizyon) |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.5. H.265 (HEVC)
Cihaz uygulamaları H.265 codec'ini destekliyorsa:
- [C-1-1] Ana Profil 3. Katman Ana katmanını ve SD video kod çözme profillerini aşağıdaki tabloda belirtildiği şekilde DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtilen 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 video çözünürlüğünden büyükse:
- [C-2-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin H.265 veya VP9 kod çözme işlemlerinden en az birini desteklemelidir.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü | 352 x 288 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3.840 x 2.160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30/60 fps (H.265 donanım kod çözme özelliğine sahip 60 fps televizyon) | 60 fps |
Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
Cihaz uygulamaları, Media API'leri aracılığıyla HDR Profili'ni desteklediğini iddia ediyorsa:
- [C-3-1] Cihaz uygulamalarında, uygulamadan gerekli HDR meta verilerinin kabul edilmesi ve bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerinin ayıklanması ve çıkarılması desteklenmelidir.
- [C-3-2] Cihaz uygulamalarında HDR içeriği, cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).
5.3.6. VP8
Cihaz uygulamaları VP8 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda yer alan SD kod çözme profillerini DESTEKLEMELİDİR.
- Şartları 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öntemi tarafından bildirilen yükseklik, video çözünürlüğüne eşit veya video çözünürlüğünden büyükse:
- [C-2-1] Cihaz uygulamaları, aşağıdaki tabloda yer alan 720p profillerini DESTEKLEMELİDİR.
- [C-2-2] Cihaz uygulamaları aşağıdaki tabloda yer alan 1080p profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps (60 fpsTelevizyon) | 30 (60 fpsTelevizyon) |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.7. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda belirtilen SD video kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları VP9 codec'ini ve donanım kod çözücüyü destekliyorsa:
- [C-2-1] Aşağıdaki tabloda 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 video çözünürlüğünden büyükse:
- [C-3-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin VP9 veya H.265 kod çözme işlemlerinden en az birini desteklemelidir.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3.840 x 2.160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps (60 fpsVP9 donanım kod çözme özelliğine sahip televizyonlar) | 60 fps |
Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
Cihaz uygulamaları, 'CodecProfileLevel' medya API'leri aracılığıyla VP9Profile2
veya VP9Profile3
'ü desteklediğini iddia ediyorsa:
- 12 bit biçim desteği İSTEĞE BAĞLIDIR.
Cihaz uygulamaları, medya API'leri aracılığıyla HDR Profili'ni (VP9Profile2HDR
, VP9Profile2HDR10Plus
, VP9Profile3HDR
, VP9Profile3HDR10Plus
) desteklediğini iddia ediyorsa:
- [C-4-1] Cihaz uygulamalarında, uygulamadan gerekli HDR meta verileri (tüm HDR profilleri için
KEY_HDR_STATIC_INFO
ve HDR10Plus profilleri için 'KEY_HDR10_PLUS_INFO') kabul EDİLMELİDİR. Ayrıca, bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerinin çıkarılmasını ve yayınlanmasını desteklemelidir. - [C-4-2] Cihaz uygulamalarında HDR içeriği, 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
aracılığıyla Dolby Vision kod çözücü desteğini belirtiyorsa:
- [C-1-1] Dolby Vision özellikli bir çıkarıcı sağlanmalıdır.
- [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) parça dizini, birleştirilmiş Dolby Vision katmanının parça dizini ile aynı olacak şekilde AYARLANMALIDIR.
5.3.9. AV1
Cihaz uygulamaları AV1 codec'ini destekliyorsa:
- [C-1-1] 10 bit içerik dahil olmak üzere 0 numaralı profili DESTEKLEMELİDİR.
5.4. Ses Kaydetme
Bu bölümde belirtilen şartlardan bazıları Android 4.3'ten beri "OLMALI" olarak listelenirken gelecek sürümlerin Uyumluluk Tanımı'nda bu şartlar "OLMALIDIR" olarak değiştirilmesi planlanmaktadır. Mevcut ve yeni Android cihazların, "GEREKİYOR" olarak listelenen bu koşulları karşılaması ŞİDDETLE ÖNERİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiğinde Android uyumluluğu elde edemezler.
5.4.1. Ham Ses Kaydı ve Mikrofon Bilgileri
Cihaz uygulamaları android.hardware.microphone
bildirirse:
-
[C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına İZİN VERMELİDİR:
- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 8.000, 11.025, 16.000, 44.100, 48.000 Hz
- Kanallar: Mono
-
Aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına izin VERMELİ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 olmadan yukarıdaki örnek hızlarında KAYDETMELİDİR.
- [C-1-3] Yukarıda verilen örnekleme hızları, azaltılmış örneklemeyle yakalandığında uygun bir kenar yumuşatma filtresi DAHİL EDİLMELİDİR.
-
Ham ses içeriğinin AM radyo ve DVD kalitesinde yakalanmasına izin VERMELİDİR. Bu, aşağıdaki ö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'yi dikkate ALMALI ve cihazdaki,AudioManager.getMicrophones()
API aracılığıyla üçüncü taraf uygulamaları tarafından erişilebilen mevcut mikrofonlar veAudioRecord.getActiveMicrophones()
ileMediaRecorder.getActiveMicrophones()
API'leri aracılığıyla üçüncü taraf uygulamaları tarafından erişilebilen etkin mikrofonlar hakkındaki 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 KAYDETMELİDİR.
- [C-2-2] Yukarı veya aşağı örnekleme için uygun bir kenar yumuşatma filtresi DAHİL EDİLMELİDİR.
5.4.2. Ses Tanıma için Kayıt
Cihaz uygulamaları android.hardware.microphone
bildirirse:
- [C-1-1]
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION
ses kaynağını 44.100 ve 48.000 örnekleme hızlarından birinde KAYDETMELİDİR. - [C-1-2]
AudioSource.VOICE_RECOGNITION
ses kaynağından ses akışı kaydederken varsayılan olarak tüm gürültü azaltma ses işlemeyi devre dışı bırakmalıdır. - [C-1-3]
AudioSource.VOICE_RECOGNITION
ses kaynağından ses akışı kaydederken varsayılan olarak tüm otomatik kazanç kontrollerini devre dışı bırakmalıdır. - Ses tanıma ses akışını, yaklaşık olarak düz bir genlik ve frekans özelliğiyle kaydetmelidir: Özellikle 100 Hz ile 4.000 Hz arasında ±3 dB.
- Ses tanıma ses akışını, giriş hassasiyeti 1000 Hz'de 90 dB ses gücü seviyesi (SPL) kaynağı 16 bit örnekler için 2500 RMS olacak şekilde ayarlanmış şekilde KAYDETMELİDİR.
- PCM genlik seviyelerinin, mikrofondaki 90 dB SPL'ye göre -18 dB ile +12 dB arasında en az 30 dB aralığındaki giriş SPL değişikliklerini doğrusal olarak izleyeceği şekilde ses tanıma ses akışını KAYDETMELİDİR.
- Ses tanıma ses akışını, mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için toplam harmonik bozulma (THD) %1'den az olacak şekilde KAYDETMELİDİR.
Cihaz uygulamaları, konuşma tanıma için ayarlanmış android.hardware.microphone
ve gürültü azaltma teknolojilerini belirtiyorsa:
- [C-2-1] Bu ses efektinin
android.media.audiofx.NoiseSuppressor
API ile kontrol edilebilir olmasına İZİN VERİLMELİDİR. - [C-2-2]
AudioEffect.Descriptor.uuid
alanı aracılığıyla her gürültü azaltma teknolojisi uygulamasını benzersiz şekilde tanımlamalıdır.
5.4.3. Oynatma işlemini yeniden yönlendirmek için yakalama
android.media.MediaRecorder.AudioSource
sınıfı, REMOTE_SUBMIX
ses kaynağını içerir.
Cihaz uygulamaları hem android.hardware.audio.output
hem de android.hardware.microphone
bildirirse:
-
[C-1-1]
REMOTE_SUBMIX
ses kaynağını düzgün bir şekilde uygulamalıdır. Böylece, bir uygulama bu ses kaynağından kayıt yapmak içinandroid.media.AudioRecord
API'yi kullandığında aşağıdakiler hariç tüm ses akışlarının bir karışımını yakalar:-
AudioManager.STREAM_RING
-
AudioManager.STREAM_ALARM
-
AudioManager.STREAM_NOTIFICATION
-
5.4.4. Akustik Yankı Önleyici
Cihaz uygulamaları android.hardware.microphone
bildirirse:
AudioSource.VOICE_COMMUNICATION
kullanılarak kayıt yapılırken sesli iletişim için ayarlanmış ve yakalama yoluna uygulanmış bir akustik yankı giderici (AEC) teknolojisi UYGULANMALIDIR
Cihaz uygulamaları, AudioSource.VOICE_COMMUNICATION
seçildiğinde kayıt ses yoluna eklenen bir akustik yankı giderici sağlıyorsa:
- [C-SR] bunu AcousticEchoCanceler API yöntemi AcousticEchoCanceler.isAvailable() aracılığıyla AÇIKÇA_ÖNERİLİR.
- [C-SR], bu ses efektinin AcousticEchoCanceler API ile kontrol edilebilir olmasına izin vermek için STRONGLY_RECOMMENDED.
- [C-SR] AudioEffect.Descriptor.uuid alanı aracılığıyla her AEC teknolojisi uygulamasını benzersiz şekilde tanımlamak için STRONGLY_RECOMMENDED.
5.4.5. Eşzamanlı yakalama
Cihaz uygulamaları android.hardware.microphone
değerini belirtiyorsa bu dokümanda açıklandığı gibi eşzamanlı yakalama özelliğini UYGULAMALARI 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 uygulama tarafından mikrofona eşzamanlı erişime izin VERMELİDİR. - [C-1-2] Asistan rolüne sahip önceden yüklenmiş bir uygulama ve
AudioSource.VOICE_COMMUNICATION
veyaAudioSource.CAMCORDER
dışındaki herhangi birAudioSource
ile kayıt yapan en az bir uygulamanın mikrofona eşzamanlı erişmesine izin VERMELİDİR. - [C-1-3] Bir uygulama
AudioSource.VOICE_COMMUNICATION
veyaAudioSource.CAMCORDER
ile kayıt yaparken erişilebilirlik hizmeti dışındaki diğer uygulamalar için ses kaydını SUSTURMALIDIR. Ancak bir uygulamaAudioSource.VOICE_COMMUNICATION
üzerinden kayıt yaparkenCAPTURE_AUDIO_OUTPUT
iznine sahip ayrıcalıklı (önceden yüklenmiş) bir uygulamaysa başka bir uygulama sesli görüşmeyi kaydedebilir. - [C-1-4] İki veya daha fazla uygulama aynı anda kayıt yapıyorsa ve hiçbir uygulamanın üst kısmında kullanıcı arayüzü yoksa en son kaydı başlatan uygulama ses alır.
5.4.6. Mikrofon kazanç seviyeleri
Cihaz uygulamaları android.hardware.microphone
bildirirse:
- Orta frekans aralığında yaklaşık olarak düz bir genlik-frekans özelliği GÖSTERMELİDİR: Ö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.
- Ses girişi hassasiyeti, ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofonda 90 dB ses basıncı düzeyinde (SPL) çalınan 1000 Hz sinüs dalga sesi kaynağının 16 bitlik örnekler için 2500 RMS (veya kayan nokta/çift hassasiyetli örnekler için -22,35 dB tam ölçek) yanıt vereceği şekilde AYARLANMALIDIR.
- [C-SR] için düşük frekans aralığındaki genlik seviyelerinin gösterilmesi önemle ÖNERİLİR: Özellikle ses tanıma ses kaynağını kaydetmek için kullanılan her bir mikrofonun orta frekans aralığına kıyasla 5 Hz ile 100 Hz arasında ±20 dB.
- [C-SR] için yüksek frekans aralığında genlik seviyelerinin gösterilmesi önemle ÖNERİLİR: Özellikle ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla 4.000 Hz ile 22 KHz arasında ±30 dB.
5.5. Ses Çalma
Android, 7.8.2 numaralı bölümde tanımlandığı şekilde uygulamaların ses çıkışı çevre birimi üzerinden ses oynatmasına izin veren desteği içerir.
5.5.1. Ham Ses Oynatma
Cihaz uygulamaları android.hardware.audio.output
bildirirse:
-
[C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına izin VERMELİDİR:
- Kaynak biçimleri: Doğrusal PCM, 16 bit, 8 bit, kayan nokta
- Kanallar: Mono, Stereo, en fazla 8 kanal içeren geçerli çok kanallı yapılandırmalar
-
Örnekleme hızları (Hz cinsinden):
- Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 32000, 44100, 48000
- Mono ve stereoda 96.000
-
Aşağıdaki özelliklere sahip ham ses içeriklerinin oynatılmasına İZİN VERİLMELİDİR:
- Örnekleme hızları: 24000, 48000
5.5.2. Ses Efektleri
Android, cihaz uygulamaları için ses efektleri API'si sağlar.
Cihaz uygulamaları android.hardware.audio.output
özelliğini beyan ederse:
- [C-1-1]
Equalizer
veLoudnessEnhancer
AudioEffect alt sınıfları aracılığıyla kontrol edilebilenEFFECT_TYPE_EQUALIZER
veEFFECT_TYPE_LOUDNESS_ENHANCER
uygulamalarını DESTEKLEMELİDİR. - [C-1-2]
Visualizer
sınıfı aracılığıyla kontrol edilebilen görselleştirici API uygulamasını DESTEKLEMELİDİR. - [C-1-3] AudioEffect alt sınıfı
DynamicsProcessing
aracılığıyla kontrol edilebilenEFFECT_TYPE_DYNAMICS_PROCESSING
uygulamasını DESTEKLEMELİDİR. AudioEffect
alt sınıflarıBassBoost
,EnvironmentalReverb
,PresetReverb
veVirtualizer
aracılığıyla kontrol edilebilenEFFECT_TYPE_BASS_BOOST
,EFFECT_TYPE_ENV_REVERB
,EFFECT_TYPE_PRESET_REVERB
veEFFECT_TYPE_VIRTUALIZER
uygulamalarını DESTEKLEMELİDİR.- [C-SR] Etkileri kayan nokta ve çok kanallı olarak desteklemeniz önemle ÖNERİLİR.
5.5.3. Ses Çıkışı Ses Seviyesi
Otomotiv cihaz uygulamaları:
- AudioAttributes tarafından tanımlanan içerik türü veya kullanım ve
android.car.CarAudioManager
'de herkese açık olarak tanımlanan araç ses kullanımı kullanılarak ses hacminin her ses akışı için ayrı ayrı ayarlanmasına İZİN VERMELİDİR.
5.6. Ses gecikmesi
Ses gecikmesi, ses sinyalinin sistemden geçerken yaşadığı zaman gecikmesidir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikme sürelerine ihtiyaç duyar.
Bu bölümde aşağıdaki tanımlar kullanılmaktadır:
- output latency. Bir uygulamanın PCM kodlu veri çerçevesi yazması ile ilgili sesin cihaz üzerindeki bir dönüştürücüde çevreye sunulması veya sinyalin bir bağlantı noktası üzerinden cihazdan çıkması ve harici olarak gözlemlenebilmesi arasındaki aralık.
- Soğuk çıkış gecikmesi. Ses çıkış sistemi istek öncesinde boşta ve kapalıyken ilk karenin çı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 üzerindeki bir dönüştürücüde cihaza sunulması veya sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın ilgili PCM kodlu veri çerçevesini okuması arasındaki aralık.
- Giriş kaybı. Giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.
- Soğuk giriş gecikmesi. Ses giriş sistemi istek öncesinde boşta ve kapalıyken, kaybedilen giriş süresinin ve ilk karenin giriş gecikmesinin toplamı.
- sürekli giriş gecikmesi. Cihaz ses kaydederken sonraki kareler için giriş gecikmesi.
- Soğuk çıkış jitter'i. Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- Soğuk giriş jitter'i. Soğuk giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesinin artı sürekli çıkış gecikmesinin artı bir arabellek döneminin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için zaman sağlar.
- OpenSL ES PCM arabellek sırası API'si. Android NDK'daki PCM ile ilgili OpenSL ES API'leri grubu.
- AAudio doğal ses API'si. Android NDK'daki AAudio API'leri grubu.
- Zaman damgası. Bir akıştaki göreli kare konumundan ve bu karenin ilişkili uç noktadaki ses işleme ardışık düzenine girip çıktığı tahmini zamandan oluşan bir çift. AudioTimestamp özelliğini de inceleyin.
- glitch. Ses sinyalinde geçici bir kesinti veya yanlış örnek değeri. Bu durum genellikle çıkış için arabellek eksikliğinden, giriş için arabellek taşmasından veya dijital ya da analog gürültü kaynaklarından kaynaklanır.
Cihaz uygulamaları android.hardware.audio.output
bildiriyorsa aşağıdaki şartları karşılamalı veya aşmalıdır:
- [C-1-1] AudioTrack.getTimestamp ve
AAudioStream_getTimestamp
tarafından döndürülen çıkış zaman damgası +/- 2 ms doğruluktadır. - [C-1-2] 500 milisaniye veya daha az soğuk çıkış gecikmesi.
Cihaz uygulamaları android.hardware.audio.output
değerini belirtiyorsa aşağıdaki şartları karşılamalarını veya aşmalarını önemle ÖNERİRİZ:
- [C-SR] 100 milisaniye veya daha az soğuk çıkış gecikmesi. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların bu şartları hemen karşılaması ÇOK ÖNEMLE ÖNERİLİR. 2021'de yapılacak bir sonraki platform sürümünde, soğuk çıkış gecikmesinin 200 ms veya daha az olması zorunlu olacaktır.
- [C-SR] 45 milisaniye veya daha az sürekli çıkış gecikmesi.
- [C-SR] Soğuk çıkış jitter'ini en aza indirin.
- [C-SR] AudioTrack.getTimestamp ve
AAudioStream_getTimestamp
tarafından döndürülen çıkış zaman damgası +/- 1 ms'ye kadar doğrudur.
Cihaz uygulamaları yukarıdaki koşulları karşılıyorsa ilk kalibrasyondan sonra, hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri kullanıldığında, en az bir desteklenen ses çıkış cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi değerleri şu şekildedir:
- [C-SR]
android.hardware.audio.low_latency
özellik bayrağını bildirerek düşük gecikmeli sesi bildirmeniz önemle ÖNERİLİR. - [C-SR] AAudio API aracılığıyla düşük gecikmeli sesle ilgili gereksinimleri karşılamak için ÇOK ÖNEMLİ.
- [C-SR]
AAudioStream_getPerformanceMode()
kaynağındanAAUDIO_PERFORMANCE_MODE_LOW_LATENCY
döndüren akışlar içinAAudioStream_getFramesPerBurst()
tarafından döndürülen değerin, mülk anahtarıAudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER
içinandroid.media.AudioManager.getProperty(String)
tarafından döndürülen değerden küçük veya ona eşit olmasını sağlamak ÖNERİLİR.
Cihaz uygulamaları hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri aracılığıyla düşük gecikmeli ses koşullarını karşılamıyorsa:
- [C-2-1] Düşük gecikmeli ses desteğini bildirmemelidir.
Cihaz uygulamalarında android.hardware.microphone
varsa aşağıdaki giriş ses koşullarını karşılamalıdır:
- [C-3-1] AudioRecord.getTimestamp veya
AAudioStream_getTimestamp
tarafından döndürülen giriş zaman damgalarındaki hatayı +/- 2 ms ile sınırlayın. Buradaki "Hata", doğru değerden sapma anlamına gelir. - [C-3-2] 500 milisaniye veya daha az soğuk giriş gecikmesi.
Cihaz uygulamalarında android.hardware.microphone
varsa aşağıdaki giriş ses koşullarını karşılamaları önemle Ö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 şartları hemen karşılaması ÇOK ÖNEMLE ÖNERİLİR. 2021'de yapılacak bir sonraki platform sürümünde, soğuk giriş gecikmesinin 200 ms veya daha az olması zorunlu olacaktır.
- [C-SR] 30 milisaniye veya daha az sürekli giriş gecikmesi.
- [C-SR] 50 milisaniye veya daha az sürekli gidiş dönüş gecikmesi.
- [C-SR] Soğuk giriş jitter'ini en aza indirin.
- [C-SR] AudioRecord.getTimestamp veya
AAudioStream_getTimestamp
tarafından döndürülen giriş zaman damgalarındaki hatayı +/- 1 ms ile sınırlayın.
5.7. Ağ Protokolleri
Cihaz uygulamaları, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemelidir.
Cihaz uygulamalarında ses veya video kod çözücü varsa:
-
[C-1-1] Bölüm 5.1'deki tüm gerekli codec'leri ve kapsayıcı biçimlerini HTTP(S) üzerinden DESTEKLEMELİDİR.
-
[C-1-2] HTTP Canlı Yayın taslak protokolü, 7. sürüm üzerinden aşağıdaki Medya Segmenti Biçimleri tablosunda gösterilen medya segmenti biçimlerini DESTEKLEMELİDİR.
-
[C-1-3] Aşağıdaki RTSP tablosunda yer alan aşağıdaki RTP ses video profilini ve ilgili codec'leri desteklemelidir. İstisnalar için lütfen 5.1 numaralı bölümdeki 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:
Ses codec'leri:
|
ADTS çerçeveleme ve ID3 etiketleri içeren AAC | ISO 13818-7 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme 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 5.1.3 numaralı bölüme bakın. |
MP4A-LATM | RFC 6416 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın. |
H263-1998 |
RFC 3551 RFC 4629 RFC 2190 |
H263 ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın. |
H263-2000 | RFC 4629 | H263 ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın. |
AMR | RFC 4867 | AMR-NB ile ilgili ayrıntılar için 5.1.1 numaralı bölüme bakın. |
AMR-WB | RFC 4867 | AMR-WB hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın. |
MP4V-ES | RFC 6416 | MPEG-4 SP ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın. |
mpeg4-generic | RFC 3640 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın. |
MP2T | RFC 2250 | Ayrıntılar için HTTP Canlı Akış'ın altındaki MPEG-2 Taşıma Akışı bölümüne bakın. |
5.8. Secure Media
Cihaz uygulamaları güvenli video çıkışını destekliyorsa ve güvenli yüzeyleri destekleyebiliyorsa:
- [C-1-1]
Display.FLAG_SECURE
için destek beyan ETMEK ZORUNLUDUR.
Cihaz uygulamaları Display.FLAG_SECURE
desteğini ve kablosuz ekran protokolünü destekliyorsa:
- [C-2-1] Miracast gibi kablosuz protokoller üzerinden bağlı ekranlar için bağlantıyı HDCP 2.x veya daha yeni bir sürüm gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİKLEŞTİRMELİDİR.
Cihaz uygulamaları Display.FLAG_SECURE
desteğini ve kablolu harici ekran desteğini belirtiyorsa:
- [C-3-1] Kullanıcının erişebildiği kablolu bağlantı noktası üzerinden bağlı tüm harici ekranlar için HDCP 1.2 veya daha yeni sürümleri DESTEKLEMELİDİR.
5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)
Cihaz uygulamaları, android.software.midi
özelliği için desteği android.content.pm.PackageManager
sınıfı üzerinden bildirirse:
-
[C-1-1] MIDI olmayan genel bağlantılar sağladıkları tüm MIDI özellikli donanım aktarımlarında MIDI'yi desteklemelidir. Bu tür aktarımlar:
- USB ana makine modu, bölüm 7.7
- Merkezi rolde çalışan 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 (yerel MIDI desteği) DAHİL OLMALIDIR
-
USB çevre birimi modu üzerinden MIDI'yi DESTEKLEMELİDİR, bölüm 7.7
5.10. Profesyonel Ses
Cihaz uygulamaları, android.hardware.audio.pro
özelliği için desteği android.content.pm.PackageManager sınıfı aracılığıyla bildirirse:
- [C-1-1]
android.hardware.audio.low_latency
özelliği için destek bildirmelidir. - [C-1-2] 5.6 Ses Gecikmesi bölümünde tanımlandığı gibi sürekli gidiş dönüş ses gecikmesi OLMALIDIR, 20 milisaniye veya daha az OLMALIDIR ve en az bir desteklenen yolda 10 milisaniye veya daha az OLMALIDIR.
- [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen USB bağlantı noktaları ZORUNLUDUR.
- [C-1-4]
android.software.midi
özelliği için destek bildirmelidir. - [C-1-5] Hem OpenSL ES PCM arabellek sırası API'sini hem de AAudio doğal ses API'sinin en az bir yolunu kullanarak gecikmeleri ve USB ses şartlarını karşılamalıdır.
- [SR] MMAP yolu üzerinden AAudio doğal ses API'sini kullanarak gecikmeleri ve USB ses şartlarını karşılamak için ÇOK ÖNEMLE ÖNERİLİR.
- [C-1-6] Soğuk çıkış gecikmesi 200 milisaniye veya daha az OLMALIDIR.
- [C-1-7] Soğuk giriş gecikmesi 200 milisaniye veya daha az OLMALIDIR.
- [SR] Ses etkinken ve CPU yükü değişirken tutarlı bir CPU performansı sağlamak için ÇOK ÖNEMLE ÖNERİLİR. Bu, SynthMark commit kimliği 09b13c6f49ea089f8c31e5d035f912cc405b7ab8'in Android uygulama sürümü kullanılarak test edilmelidir. SynthMark, sistem performansını ölçen, simüle edilmiş bir ses çerçevesinde ç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çlara ulaşması gerekir:
- voicemark.90 >= 32 ses
- latencymark.fixed.little <= 15 msec
- latencymark.dynamic.little <= 50 msec
Karşılaştırmaların açıklaması için SynthMark dokümanlarını inceleyin.
- Sesli saatin hatalı çalışmasını ve standart saate göre kaymasını en aza indirmelidir.
- Her ikisi de etkinken ses saati kaymasını CPU'ya göre en aza indirmelidir
CLOCK_MONOTONIC
. - Cihaz üzerindeki dönüştürücüler üzerinden ses gecikmesini en aza indirmelidir.
- USB dijital ses üzerinden ses gecikmesini en aza indirmelidir.
- Tüm yollardaki ses gecikmesi ölçümlerini belgelemelidir.
- Bu, geri arama tarafından kullanılan tam CPU bant genişliğinin yüzdesini etkilediği için ses arabelleğinin tamamlanması geri arama giriş zamanlarında gecikmeyi en aza indirmelidir.
- Bildirilen gecikmede normal kullanımda sıfır ses aksaklıklarına neden OLMAZ.
- Kanallar arası gecikme farkı sıfır OLMALIDIR.
- Tüm aktarımlarda MIDI ortalama gecikmesini en aza indirmelidir.
- Tüm aktarımlarda yük altında MIDI gecikmesi değişkenliğini (jitter) en aza indirmelidir.
- Tüm aktarımlarda doğru MIDI zaman damgaları SAĞLANMALIDIR.
- Soğuk başlatmadan hemen sonraki dönem de dahil olmak üzere cihaz üzerindeki dönüştürücülerde ses sinyali gürültüsünü en aza indirmelidir.
- Her ikisi de etkinken ilgili uç noktaların giriş ve çıkış tarafları arasında sıfır ses saati farkı SAĞLANMALIDIR. İlgili uç noktalara örnek olarak cihaz üzerindeki mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.
- Her ikisi de etkinken aynı iş parçacığındaki ilgili uç noktaların giriş ve çıkış tarafları için ses arabelleği tamamlama geri çağırma işlevlerini İŞLEMELİDİR ve giriş geri çağırma işlevinden döndükten hemen sonra çıkış geri çağırma işlevine girmelidir. Yada geri çağırmaların aynı iş parçacığında işlenmesi mümkün değilse uygulamanın giriş ve çıkış taraflarında tutarlı bir zamanlamaya sahip olması için giriş geri çağırma işlevini girdikten kısa bir süre sonra çıkış geri çağırma işlevini girin.
- İlgili uç noktaların giriş ve çıkış tarafları için HAL ses arabelleği arasındaki faz farkını en aza indirmelidir.
- Dokunma gecikmesini en aza indirmelidir.
- Yük altında dokunma gecikmesi değişkenliğini (jitter) en aza indirmelidir.
- Dokunma girişinden ses çıkışına kadar olan gecikmenin 40 ms'den az veya bu değere eşit olması GEREKİR.
Cihaz uygulamaları yukarıdaki koşulların tümünü karşılıyorsa:
- [SR]
android.hardware.audio.pro
özelliği için desteğiandroid.content.pm.PackageManager
sınıfı aracılığıyla bildirmeniz önemle tavsiye edilir.
Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:
- [C-2-1] Ses jakı yolu üzerinden sürekli gidiş dönüş ses gecikmesinin 20 milisaniye veya daha az olması GEREKİR.
- [SR] Kablolu Mikrofonlu Kulaklık Spesifikasyonu (v1.1)'nun Mobil cihaz (jak) özellikleri bölümüne uyulması önemle ÖNERİLİR.
- Ses jakı yolu üzerinden sürekli gidiş dönüş ses gecikmesi 10 milisaniye veya daha az OLMALIDIR.
Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı atlanmışsa ve USB ana makine modunu destekleyen USB bağlantı noktaları eklenmişse:
- [C-3-1] USB ses sınıfını UYGULAMALI.
- [C-3-2] USB ses sınıfını kullanan USB ana makine modu bağlantı noktasında 20 milisaniye veya daha az sürekli gidiş dönüş ses gecikmesi OLMALIDIR.
- USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktası üzerinden sürekli gidiş dönüş ses gecikmesi 10 milisaniye veya daha az OLMALIDIR.
- [C-SR] Bu gereksinimleri de destekleyen USB ses çevre birimleriyle kullanıldığında her yönde 8 kanala kadar eşzamanlı G/Ç, 96 kHz örnekleme hızı ve 24 bit veya 32 bit derinlik desteklemesi önemle ÖNERİLİR.
Cihaz uygulamalarında HDMI bağlantı noktası varsa:
- En az bir yapılandırmada, bit derinliği kaybı veya yeniden örnekleme olmadan 20 bit veya 24 bit derinlikte ve 192 kHz'te stereo ve sekiz kanalda çıkış desteklenmelidir.
5.11. İşlenmemiş için yakalama
Android, android.media.MediaRecorder.AudioSource.UNPROCESSED
ses kaynağı aracılığıyla işlenmemiş ses kaydı için destek içerir. OpenSL ES'de, SL_ANDROID_RECORDING_PRESET_UNPROCESSED
kayıt hazır ayarı ile erişilebilir.
Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemeyi ve üçüncü taraf uygulamalarına sunmayı amaçlıyorsa:
-
[C-1-1] Desteği
android.media.AudioManager
mülkü PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED aracılığıyla bildirmelidir. -
[C-1-2] Orta frekans aralığında yaklaşık olarak düz bir genlik-frekans özelliği GÖSTERMELİDİR: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 100 Hz ile 7.000 Hz arasında ±10 dB.
-
[C-1-3] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla düşük frekans aralığındaki genlik seviyelerini GÖSTERMELİDİR: Özellikle 5 Hz ile 100 Hz arasında ±20 dB.
-
[C-1-4] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla yüksek frekans aralığındaki genlik seviyelerini GÖSTERMELİDİR: Özellikle 7.000 Hz ile 22 KHz arasında ±30 dB.
-
[C-1-5] Ses girişi hassasiyeti, işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonda 94 dB ses basıncı düzeyinde (SPL) çalınan 1000 Hz sinüs dalga kaynağının 16 bitlik örnekler için 520 RMS (veya kayan nokta/çift hassasiyetli örnekler için -36 dB tam ölçek) yanıt vereceği şekilde AYARLANMALIDIR.
-
[C-1-6] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun sinyal-gürültü oranı (SNR) 60 dB veya daha yüksek OLMALIDIR. (SNR ise 94 dB SPL ile kendi kendine gürültünün eşdeğer SPL'si arasındaki fark olarak ölçülür, A ağırlıklı).
-
[C-1-7] İşlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için toplam harmonik bozulma (THD) %1'den az OLMALIDIR.
-
Seviyeyi istenen aralığa getirmek için yolda seviye çarpanı dışında başka bir sinyal işleme (ör. otomatik kazanç kontrolü, yüksek geçiş filtresi veya yankı iptali) OLMAMALIDIR. Başka bir deyişle:
- [C-1-8] Mimaride herhangi bir nedenle sinyal işleme varsa devre dışı bırakılmalı ve sinyal yoluna etkili bir şekilde sıfır gecikme veya ek gecikme eklenmelidir.
- [C-1-9] Seviye çarpanı, yolda olmasına izin verilirken sinyal yolunda gecikme veya gecikmeli veri girişi OLMAMALIDIR.
Tüm SPL ölçümleri, test edilen mikrofonun hemen yanında yapılır. Birden fazla mikrofon yapılandırması varsa bu koşullar her mikrofon için geçerlidir.
Cihaz uygulamaları android.hardware.microphone
değerini beyan ediyor ancak işlenmemiş ses kaynağını desteklemiyorsa:
- [C-2-1] Destek eksikliğini doğru şekilde belirtmek için
AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED)
API yöntemi içinnull
döndürülmelidir. - [SR], işlenmemiş kayıt kaynağının sinyal yolu ile ilgili koşulların çoğunu karşılamak için yine de önemle ÖNERİLİR.
6. Geliştirici Araçları ve Seçenekleri 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'sında belirtildiği şekilde adb'yi ve AOSP'de sağlanan kabuk komutlarını desteklemelidir. Bu komutlar,
dumpsys
dahil olmak üzere uygulama geliştiriciler tarafından kullanılabilir.cmd stats
- [C-0-11]
cmd testharness
kabuk komutunu DESTEKLEMELİDİR. Kalıcı veri bloğu olmayan önceki bir Android sürümünden cihaz uygulamalarını yükseltmek C-0-11'den muaf tutulabilir. - [C-0-3] dumpsys komutu aracılığıyla kaydedilen cihaz sistemi etkinliklerinin (batterystats , diskstats, fingerprint, graphicsstats, netstats, notification, procstats) biçimini veya içeriğini DEĞİŞTİRMEMELİDİR.
- [C-0-10] Aşağıdaki etkinlikleri eksiksiz bir şekilde kaydetmeli ve
cmd stats
kabuk komutu ileStatsManager
Sistem API sınıfı tarafından erişilebilir ve kullanılabilir hale getirmelidir.- ActivityForegroundStateChanged
- AnomalyDetected
- AppBreadcrumbReported
- AppCrashOccurred
- AppStartOccurred
- BatteryLevelChanged
- BatterySaverModeStateChanged
- BleScanResultReceived
- BleScanStateChanged
- ChargingStateChanged
- DeviceIdleModeStateChanged
- ForegroundServiceStateChanged
- GpsScanStateChanged
- JobStateChanged
- PluggedStateChanged
- ScheduledJobStateChanged
- ScreenStateChanged
- SyncStateChanged
- SystemElapsedRealtime
- UidProcessStateChanged
- WakelockStateChanged
- WakeupAlarmOccurred
- WifiLockStateChanged
- WifiMulticastLockStateChanged
- WifiScanStateChanged
- [C-0-4] Cihaz tarafındaki adb daemon'ın varsayılan olarak etkin olmaması VE Android Hata Ayıklama Köprüsü'nü etkinleştirmek için kullanıcının erişebileceği bir mekanizmanın olması ZORUNLUDUR.
- [C-0-5] MUST support secure adb. Android, güvenli adb desteği içerir. Güvenli adb, kimliği doğrulanmış bilinen ana makinelerde adb'yi etkinleştirir.
- [C-0-6] adb'nin ana makineden bağlanmasına olanak tanıyan bir mekanizma YETERLİ OLMALIDIR. Özellikle:
USB bağlantı noktası olmayan cihaz uygulamaları çevre birimi modunu destekliyorsa:
- [C-3-1] adb'yi yerel alan ağı (Ethernet veya kablosuz ağ gibi) üzerinden UYGULAMALIDIR.
- [C-3-2] Geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows 7, 8 ve 10 sürücüleri ZORUNLUDUR.
Cihaz uygulamaları, kablosuz ağ üzerinden ana makineyle adb bağlantılarını destekliyorsa:
- [C-4-1]
AdbManager#isAdbWifiSupported()
yönteminintrue
döndürmesi GEREKİR.
Cihaz uygulamaları, kablosuz ağ üzerinden ana makineyle adb bağlantılarını destekliyorsa ve en az bir kamera içeriyorsa:
- [C-5-1]
AdbManager#isAdbWifiQrSupported()
yönteminintrue
döndürmesi GEREKİR.
- [C-0-2] Android SDK'sında belirtildiği şekilde adb'yi ve AOSP'de sağlanan kabuk komutlarını desteklemelidir. Bu komutlar,
-
Dalvik Debug Monitor Service (ddms)
- [C-0-7] Android SDK'sında belirtildiği gibi tüm ddms özelliklerini DESTEKLEMELİDİR. ddms, adb kullandığından ddms desteği varsayılan olarak devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Hata Ayıklama Köprüsü'nü etkinleştirdiğinde desteklenmelidir.
-
Monkey
- [C-0-8] Monkey çerçevesini İÇERMELİ ve uygulamaların kullanabileceği şekilde kullanıma sunmalıdır.
-
SysTrace
- [C-0-9] Android SDK'da belirtildiği gibi systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak devre dışı olmalıdır ve Systrace'i etkinleştirmek için kullanıcının erişebileceği bir mekanizma BULUNMASI GEREKİR.
-
Perfetto
- [C-SR] Kabuk kullanıcısına, cmdline'i perfetto dokümanlarına uygun olan bir
/system/bin/perfetto
ikili dosyası göstermeniz önemle ÖNERİLİR. - [C-SR] Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırması giriş olarak kabul etmesi için perfetto ikilisinin KESİNLİKLE ÖNERİLİR.
- [C-SR] Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izleme çıktısı yazması için perfetto ikilisinin KESİNLİKLE ÖNERİLİR.
- [C-SR] Perfetto dokümanlarında açıklanan veri kaynaklarının en azından bir kısmını, perfetto ikili dosyası aracılığıyla sağlamanız önemle ÖNERİLİR.
- [C-SR] Kabuk kullanıcısına, cmdline'i perfetto dokümanlarına uygun olan bir
-
Düşük Bellek Öldürücü
- [C-0-10] Bir uygulama Düşük Bellek Öldürücü tarafından sonlandırıldığında statsd günlüğüne
LMK_KILL_OCCURRED_FIELD_NUMBER
Atom yazılmalıdır.
- [C-0-10] Bir uygulama Düşük Bellek Öldürücü tarafından sonlandırıldığında statsd günlüğüne
-
Test Bandı Modu Cihaz uygulamaları
cmd testharness
kabuk komutunu destekliyorsa vecmd testharness enable
'i çalıştırırsa:- [C-2-1] MUST return
true
forActivityManager.isRunningInUserTestHarness()
- [C-2-2] Test Bandı Modu, Test Bandı Modu dokümanlarında açıklandığı şekilde UYGULANMALIDIR.
- [C-2-1] MUST return
Cihaz uygulamaları, android.hardware.vulkan.version
özellik işaretleri aracılığıyla Vulkan 1.0 veya sonraki sürümlerin desteklendiğini bildirirse:
- [C-1-1] Uygulama geliştiricinin GPU hata ayıklama katmanlarını etkinleştirmesi/devre dışı bırakması için bir imkân sağlanmalıdır.
- [C-1-2] GPU hata ayıklama katmanları etkinleştirildiğinde, vkEnumerateInstanceLayerProperties() ve vkCreateInstance() API yöntemlerini desteklemek için hata ayıklanabilir uygulamaların ana dizininde bulunan harici araçlar tarafından sağlanan kitaplıklardaki katmanları (ör. platformun veya uygulama paketinin parçası olmayan) saymalıdır.
6.2. Geliştirici seçenekleri
Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmasına yönelik destek içerir.
Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sunmalıdır. Bu uygulamalar:
- [C-0-1] Uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS intent'ini UYGUNLAMALIDIR. Yukarı akış Android uygulaması, Geliştirici Seçenekleri menüsünü varsayılan olarak gizler ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesine yedi (7) kez bastıktan sonra Geliştirici Seçenekleri'ni başlatmasını sağlar.
- [C-0-2] Varsayılan olarak Geliştirici Seçenekleri'ni gizlemelidir.
- [C-0-3] Geliştirici Seçenekleri'ni etkinleştirmek için bir üçüncü taraf uygulamasına diğerine kıyasla tercihli muamele yapmayan net bir mekanizma SAĞLANMALIDIR. Geliştirici Seçenekleri'nin nasıl etkinleştirileceğini açıklayan herkese açık bir doküman veya web sitesi ZORUNLUDUR. Bu doküman veya web sitesi, Android SDK dokümanlarından bağlantı verilebilir OLMALIDIR.
- Geliştirici Seçenekleri etkinleştirildiğinde ve kullanıcının güvenliğiyle ilgili endişeler olduğunda kullanıcıya sürekli görsel bildirim gösterilmelidir.
- Kullanıcının güvenliğinin önemli olduğu senaryolarda dikkat dağıtıcı durumları ö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 SINIRLAYABİLİR.
7. Donanım Uyumluluğu
Bir cihazda, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir donanım bileşeni varsa:
- [C-0-1] Cihaz uygulaması, bu API'yi Android SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime geçiyorsa ve cihaz uygulamasında bu bileşen yoksa:
- [C-0-2] Bileşen API'leri için tam sınıf tanımları (SDK tarafından belirtildiği şekilde) yine de sunulmalıdır.
- [C-0-3] API'nin davranışları makul bir şekilde işlemsiz olarak uygulanmalıdır.
- [C-0-4] API yöntemleri, SDK dokümanlarında izin verildiğinde null değerler DÖNDÜRMELİDİR.
- [C-0-5] API yöntemleri, SDK dokümanlarında null değerlere izin verilmeyen sınıfların işlemsiz uygulamalarını DÖNDÜRMELİDİR.
- [C-0-6] API yöntemleri, SDK dokümanlarında belirtilmeyen istisnalar ÇIKARTMAMALIDIR.
- [C-0-7] Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki
getSystemAvailableFeatures()
vehasSystemFeature(String)
yöntemleri aracılığıyla tutarlı bir şekilde doğru donanım yapılandırma bilgilerini bildirmelidir.
Bu koşulların geçerli olduğu bir senaryoya tipik bir örnek, telefon API'sidir: Telefon olmayan cihazlarda bile bu API'ler makul bir şekilde işlem yapmaz olarak uygulanmalıdır.
7.1. Görüntü ve Grafikler
Android, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında sorunsuz şekilde çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan özellikler içerir. Tüm üçüncü taraf Android uyumlu uygulamaların çalışabileceği Android uyumlu ekranlarda, cihaz uygulamalarında bu API'ler ve davranışlar bu bölümde ayrıntılı olarak açıklandığı şekilde düzgün şekilde uygulanmalıdır.
Bu bölümdeki şartlarda referans verilen birimler aşağıdaki şekilde tanımlanır:
- Fiziksel çapraz boyut. Ekranın aydınlatılmış kısmının iki karşıt köşesi arasındaki mesafe (inç cinsinden).
- inç başına nokta sayısı (dpi). 1 inçlik doğrusal yatay veya dikey bir açıklık tarafından kapsanan piksel sayısı. dpi değerlerinin listelendiği yerlerde hem yatay hem de dikey dpi aralık içinde olmalıdır.
- en boy oranı. Uzun boyuttaki piksellerin ekranın kısa boyutuna oranı. Örneğin, 480x854 piksel boyutunda bir ekran için 854/480 = 1, 779 veya yaklaşık olarak "16:9" değeri elde edilir.
- yoğunluktan bağımsız piksel (dp). 160 dpi ekrana göre normalleştirilmiş sanal piksel birimi. Şu şekilde hesaplanır: piksel = dp * (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ırmadaki ekran düzeni boyutunu sorgulamasına olanak tanır.
Cihaz uygulamaları:
-
[C-0-1] Android SDK dokümanlarında tanımlandığı şekilde
Configuration.screenLayout
için doğru düzen boyutunu bildirmelidir. Daha açık belirtmek gerekirse, cihaz uygulamaları aşağıdaki gibi doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını bildirmelidir:Configuration.uiMode
parametresi UI_MODE_TYPE_WATCH dışında bir değere ayarlanmış veConfiguration.screenLayout
içinsmall
boyutu raporlayan cihazların en az 426 dp x 320 dp boyutunda olması GEREKİR.Configuration.screenLayout
içinnormal
boyutu bildiren cihazların en az 480 dp x 320 dp olması GEREKİR.Configuration.screenLayout
içinlarge
boyutu bildiren cihazların en az 640 dp x 480 dp olması GEREKİR.Configuration.screenLayout
içinxlarge
boyutu bildiren cihazların en az 960 dp x 720 dp olması GEREKİR.
-
[C-0-2] Android SDK dokümanlarında açıklandığı gibi, AndroidManifest.xml dosyasında <
supports-screens
> özelliği aracılığıyla uygulamaların ekran boyutları için belirtilen desteği doğru şekilde karşılamalıdır. -
Yuvarlatılmış köşeleri olan Android uyumlu ekranlara sahip OLABİLİR.
Cihaz uygulamaları UI_MODE_TYPE_NORMAL
'ü destekliyorsa ve yuvarlatılmış köşeleri olan Android uyumlu ekranlar içeriyorsa:
- [C-1-1] Aşağıdaki koşullardan en az birinin karşılandığından EMİN OLMALIDIR:
- Yuvarlatılmış köşelerin yarıçapı 38 dp'den az veya buna eşit olmalıdır.
-
Mantıksal ekranın her köşesine 15 dp x 15 dp boyutunda bir kutu sabitlendiğinde, her kutunun en az bir pikseli ekranda görünür.
-
Dikdörtgen köşeli görüntüleme moduna geçmek için kullanıcılara kolaylık sağlayan bir öğe YER ALMALIDIR.
Cihaz uygulamaları, katlanabilir Android uyumlu ekranlar veya birden fazla ekran paneli arasında katlanabilir bir menteşe içeriyorsa ve bu ekranları üçüncü taraf uygulamaları oluşturmak için kullanıyorsa:
- [C-2-1] Window Manager Jetpack kitaplığı tarafından kullanılacak extensions API'nin mevcut en son kararlı sürümünü veya sidecar API'nin kararlı sürümünü UYGULAMALIDIR.
Cihaz uygulamaları, katlanabilir Android uyumlu ekranlar veya birden fazla ekran paneli arasında katlanabilir bir menteşe içeriyorsa ve menteşe veya katlama, tam ekran bir uygulama penceresini geçiyorsa:
- [C-3-1] Uygulamaya, menteşe veya katlama öğesinin konumunu, sınırlarını ve durumunu uzantılar ya da yan araç API'leri aracılığıyla bildirmelidir.
Yan araç veya uzantı API'lerini doğru şekilde uygulama hakkında ayrıntılı bilgi için Window Manager Jetpack'in herkese açık dokümanlarına bakın.
7.1.1.2. Ekran En Boy Oranı
Android uyumlu ekranlar için fiziksel ekranın en boy oranıyla ilgili herhangi 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 raporlanan yükseklik ve genişlik değerlerinden türetilebilir) aşağıdaki koşulları karşılamalıdır:
-
[C-0-1]
Configuration.uiMode
değeriUI_MODE_TYPE_NORMAL
olarak ayarlanmış cihaz uygulamalarında, uygulama aşağıdaki koşullardan birini karşılamıyorsa en boy oranı değeri 1,86'dan (yaklaşık 16:9) küçük veya bu değere eşit OLMALIDIR:- Uygulama,
android.max_aspect
meta veri değeri aracılığıyla daha büyük bir ekran en boy oranını desteklediğini beyan etti. - Uygulama, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabilir olduğunu belirtir.
- Uygulama, API düzeyi 24 veya sonraki sürümleri hedefliyor ve izin verilen en boy oranını kısıtlayacak bir
android:maxAspectRatio
beyan etmiyor.
- Uygulama,
-
[C-0-2]
Configuration.uiMode
değeriUI_MODE_TYPE_NORMAL
olarak ayarlanmış cihaz uygulamalarında, uygulama aşağıdaki koşullardan birini karşılayarak daha geniş bir şekilde uzatılamıyorsa en boy oranı değeri 1,3333 (4:3) veya daha yüksek olmalıdır:- Uygulama, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabilir olduğunu belirtir.
- Uygulama, izin verilen en boy oranını kısıtlayacak bir
android:minAspectRatio
beyan ediyor.
-
[C-0-3]
Configuration.uiMode
'ninUI_MODE_TYPE_WATCH
olarak ayarlandığı cihaz uygulamalarında en boy oranı değeri 1,0 (1:1) olarak AYARLANMIŞ OLMALIDIR.
7.1.1.3. Ekran Yoğunluğu
Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar.
-
[C-0-1] Cihaz uygulamaları varsayılan olarak
DENSITY_DEVICE_STABLE
API aracılığıylaDisplayMetrics
'te listelenen Android çerçeve yoğunluklarından yalnızca birini bildirMELİDİR ve bu değer hiçbir zaman değişmemelidir. Ancak cihaz, ilk önyüklemeden sonra kullanıcı tarafından yapılan ekran yapılandırması değişikliklerine (ör. ekran boyutu) göre farklı bir rastgele yoğunluk bildirebilir. -
Cihaz uygulamaları, mantıksal yoğunluk bildirilen ekran boyutunu desteklenen minimum boyutun altına düşürmediği sürece, ekranın fiziksel yoğunluğuna sayısal olarak en yakın standart Android çerçeve yoğunluğunu tanımlamalıdır. Fiziksel yoğunluğa sayısal olarak en yakın standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuna neden oluyorsa cihaz uygulamaları bir sonraki en düşük standart Android çerçeve yoğunluğunu bildirmelidir.
Cihazın ekran boyutunu değiştirme seçeneği varsa:
- [C-1-1] Görüntü boyutu, doğal yoğunluğun 1,5 katına kadar ölçeklendirilmemeli veya hangisi önce gerçekleşirse 320 dp'den (kaynak tanımlayıcısı sw320dp'ye eşdeğer) daha küçük etkili bir minimum ekran boyutu üretmemelidir.
- [C-1-2] Görüntü boyutu, doğal yoğunluğun 0,85 katından daha küçük bir ölçekte OLMAMALIDIR.
- İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için doğal görüntüleme seçeneklerinin aşağıdaki ölçeklendirmesinin sağlanması ÖNERİLİR (yukarıda belirtilen sınırlara uyulmalıdır)
- Küçük: 0,85x
- Varsayılan: 1x (yerel ekran ölçeği)
- Büyük: 1,15x
- Daha büyük: 1,3 kat
- En büyük 1,45x
7.1.2. Görüntülü Reklam Metrikleri
Cihaz uygulamaları Android uyumlu ekranları veya Android uyumlu ekranlara video çıkışı içeriyorsa:
- [C-1-1]
android.util.DisplayMetrics
API'de tanımlanan tüm Android uyumlu görüntüleme metrikleri için doğru değerleri ORTAYA KOYMALIDIR.
Cihaz uygulamaları yerleşik ekran veya video çıkışı içermiyorsa:
- [C-2-1] Android uyumlu ekranın, taklit edilen varsayılan
view.Display
içinandroid.util.DisplayMetrics
API'sinde tanımlandığı şekilde doğru değerleri bildirmelidir.
7.1.3. Ekran Yönlendirme
Cihaz uygulamaları:
- [C-0-1] Desteklenen ekran yönlerini (
android.hardware.screen.portrait
ve/veyaandroid.hardware.screen.landscape
) bildirmeli ve en az bir desteklenen yönü bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yatay ekrana sahip bir cihaz yalnızcaandroid.hardware.screen.landscape
değerini bildirmelidir. - [C-0-2]
android.content.res.Configuration.orientation
,android.view.Display.getOrientation()
veya diğer API'ler aracılığıyla sorgulandığı her zaman cihazın mevcut yönü için doğru değeri bildirmelidir.
Cihaz uygulamaları her iki ekran yönünü de destekliyorsa:
- [C-1-1] Dikey veya yatay ekran yönüne sahip uygulamalar tarafından dinamik yönü DESTEKLEMELİDİR. Yani cihaz, uygulamanın belirli bir ekran yönü isteğini dikkate almalıdır.
- [C-1-2] Yön değiştirilirken bildirilen ekran boyutu veya yoğunluğu DEĞİŞTİRİLMEMELİDİR.
- Varsayılan olarak dikey veya yatay yönü seçebilir.
7.1.4. 2D ve 3D Grafik Hızlandırma
7.1.4.1 OpenGL ES
Cihaz uygulamaları:
- [C-0-1] Yönetilen API'ler (ör.
GLES10.getString()
yöntemi) ve yerel API'ler aracılığıyla desteklenen OpenGL ES sürümlerini (1.1, 2.0, 3.0, 3.1, 3.2) DOĞRU şekilde tanımlamalıdır. - [C-0-2] Desteklendiğini belirttikleri her OpenGL ES sürümü için ilgili tüm yönetilen API'ler ve yerel API'ler için destek DAHİL OLMALIDIR.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Android SDK dokümanlarında belirtildiği şekilde hem OpenGL ES 1.1 hem de 2.0'ı DESTEKLEMELİDİR.
- [C-SR] OpenGL ES 3.1'i desteklemeniz önemle ÖNERİLİR.
- OpenGL ES 3.2'yi DESTEKLEMELİDİR.
Cihaz uygulamaları OpenGL ES sürümlerinden herhangi birini destekliyorsa:
- [C-2-1] Uygulamaya koydukları diğer OpenGL ES uzantılarını OpenGL ES yönetilen API'leri ve yerel API'ler aracılığıyla bildirMELİDİR ve tam tersine, desteklemedikleri uzantı dizelerini bildirMEmelidir.
- [C-2-2]
EGL_KHR_image
,EGL_KHR_image_base
,EGL_ANDROID_image_native_buffer
,EGL_ANDROID_get_native_client_buffer
,EGL_KHR_wait_sync
,EGL_KHR_get_all_proc_addresses
,EGL_ANDROID_presentation_time
,EGL_KHR_swap_buffers_with_damage
,EGL_ANDROID_recordable
veEGL_ANDROID_GLES_layers
uzantılarını DESTEKLEMELİDİR. - [C-SR]
EGL_KHR_partial_update
veOES_EGL_image_external
uzantılarının desteklenmesi önemle ÖNERİLİR. - Destekledikleri doku sıkıştırma biçimlerini (genellikle tedarikçiye özeldir)
getString()
yöntemi aracılığıyla doğru şekilde bildirmelidir.
Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2 desteğini belirtiyorsa:
- [C-3-1] libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev simgelerine ek olarak bu sürümler için ilgili işlev simgelerini dışa aktarmalıdır.
- [SR]
OES_EGL_image_external_essl3
uzantısını desteklemeniz önemle ÖNERİLİR.
Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa:
- [C-4-1] OpenGL ES Android Uzatma Paketi'nin tamamını desteklemelidir.
Cihaz uygulamaları OpenGL ES Android Uzatma Paketi'ni tamamen destekliyorsa:
- [C-5-1]
android.hardware.opengles.aep
özellik işareti aracılığıyla desteği tanımlamalıdır.
Cihaz uygulamaları EGL_KHR_mutable_render_buffer
uzantısını destekliyorsa:
- [C-6-1]
EGL_ANDROID_front_buffer_auto_refresh
uzantısını da desteklemelidir.
7.1.4.2 Vulkan
Android , yüksek performanslı 3D grafikler için düşük maliyetli, platformlar arası bir API olan Vulkan desteği içerir.
Cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:
- [SR] Vulkan 1.1 desteğinin eklenmesi önemle ÖNERİLİR.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- Vulkan 1.1 desteği DAHİL OLMALIDIR.
Vulkan dEQP testleri, her biri ilişkili bir tarih/sürüme sahip olan çeşitli test listelerine bölünür. Bunlar external/deqp/android/cts/main/vk-master-YYYY-MM-DD.txt
adresindeki Android kaynak ağacındadır. Kendi beyanı doğrultusunda Vulkan'ı destekleyen bir cihaz, bu seviye ve önceki seviyelerdeki tüm test listelerindeki dEQP testlerini geçebileceğini gösterir.
Cihaz uygulamaları Vulkan 1.0 veya sonraki sürümleri destekliyorsa:
- [C-1-1]
android.hardware.vulkan.level
veandroid.hardware.vulkan.version
özellik işaretleriyle doğru tam sayı değerini bildirmelidir. - [C-1-2] Vulkan yerel API'si
vkEnumeratePhysicalDevices()
için en az birVkPhysicalDevice
sayılmalıdır . - [C-1-3] Her bir listelenen
VkPhysicalDevice
için Vulkan 1.0 API'lerini eksiksiz şekilde UYGULAMALIDIR. - [C-1-4] Uygulama paketinin yerel kitaplık dizininde
libVkLayer*.so
olarak adlandırılan yerel kitaplıklarda bulunan katmanları Vulkan yerel API'lerivkEnumerateInstanceLayerProperties()
vevkEnumerateDeviceLayerProperties()
aracılığıyla listelemeLİDİR . - [C-1-5] Uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanları listelememeli veya uygulamada
android:debuggable
özelliğitrue
olarak ayarlanmadığı sürece Vulkan API'yi izlemenin ya da yakalamanın başka yollarını sağlamamalıdır. - [C-1-6] Desteklediği tüm uzantı dizelerini Vulkan yerel API'leri aracılığıyla bildirmeli ve tam olarak desteklemediği uzantı dizelerini bildirmemelidir.
- [C-1-7] VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain ve VK_KHR_incremental_present uzantılarını DESTEKLEMELİDİR.
- [C-1-8]
android.software.vulkan.deqp.level
özellik işareti 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 üzere en az132317953
sürümünü (1 Mart 2019'dan itibaren) desteklemelidir. - [C-1-10]
132317953
sürümü ileandroid.software.vulkan.deqp.level
özellik işaretinde belirtilen sürüm arasındaki test listelerindeki tüm Vulkan dEQP testlerini GEÇMELİDİR. - [C-SR] VK_KHR_driver_properties ve VK_GOOGLE_display_timing uzantılarının desteklenmesi önemle ÖNERİLİR.
Cihaz uygulamaları Vulkan 1.0 desteği içermiyorsa:
- [C-2-1] Vulkan özellik işaretlerinden hiçbirini (ör.
android.hardware.vulkan.level
,android.hardware.vulkan.version
) İLAN ETMEmelidir. - [C-2-2] Vulkan doğal API'si
vkEnumeratePhysicalDevices()
için herhangi birVkPhysicalDevice
dizini AÇILMAZ.
Cihaz uygulamaları Vulkan 1.1 desteği içeriyorsa ve Vulkan özellik işaretlerinden herhangi birini belirtiyorsa:
- [C-3-1]
SYNC_FD
harici semafor ve imleç türleri veVK_ANDROID_external_memory_android_hardware_buffer
uzantısı için destek sunmalıdır.
7.1.4.3 RenderScript
- [C-0-1] Cihaz uygulamalarında, Android SDK dokümanlarında ayrıntılı olarak açıklandığı gibi Android RenderScript desteklenmelidir.
7.1.4.4 2D Grafik Hızlandırma
Android, uygulamaların android:hardwareAccelerated manifest etiketi veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini beyan etmelerini sağlayan bir mekanizma içerir.
Cihaz uygulamaları:
- [C-0-1] Varsayılan olarak donanım hızlandırmayı etkinleştirmeli ve geliştirici 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 bunu talep ederse donanım hızlandırmayı devre dışı bırakmalıdır.
- [C-0-2] Donanım hızlandırma ile ilgili Android SDK dokümanlarıyla tutarlı bir davranış sergilemelidir.
Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak doğrudan entegre etmesine olanak tanıyan bir TextureView nesnesi içerir.
Cihaz uygulamaları:
- [C-0-3] TextureView API'yi DESTEKLEMELİ ve yayın öncesi Android uygulamasıyla tutarlı davranış sergileMELİDİR.
7.1.4.5 Geniş renk gamına sahip ekranlar
Cihaz uygulamaları , Configuration.isScreenWideColorGamut()
aracılığıyla geniş renk gamına sahip ekranları desteklediğini iddia ediyorsa:
- [C-1-1] Renk kalibre edilmiş bir ekrana sahip OLMALIDIR.
- [C-1-2] CIE 1931 xyY alanında sRGB renk gamını tamamen kapsayan bir ekrana sahip OLMALIDIR.
- [C-1-3] CIE 1931 xyY alanında DCI-P3'ün en az% 90'ı kadar alanı olan bir ekrana sahip OLMALIDIR.
- [C-1-4] OpenGL ES 3.1 veya 3.2'yi desteklemeli ve düzgün şekilde bildirmelidir.
- [C-1-5]
EGL_KHR_no_config_context
,EGL_EXT_pixel_format_float
,EGL_KHR_gl_colorspace
,EGL_EXT_gl_colorspace_scrgb
,EGL_EXT_gl_colorspace_scrgb_linear
,EGL_EXT_gl_colorspace_display_p3
,EGL_EXT_gl_colorspace_display_p3_linear
veEGL_EXT_gl_colorspace_display_p3_passthrough
uzantılarının desteğini İLAN ETMELİSİNİZ. - [C-SR]
GL_EXT_sRGB
için DESTEKLENMESİ KESİNLİKLE ÖNERİLİR.
Buna karşılık, cihaz uygulamaları geniş renk 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ı KAPLAYABİLİR.
7.1.5. Eski Uygulama Uyumluluğu Modu
Android, çerçevenin ekran boyutundan bağımsızlık özelliğinin bulunmadığı eski Android sürümleri için geliştirilmemiş eski uygulamaların yararına, çerçevenin "normal" ekran boyutu eşdeğeri (320 dp genişlik) modunda çalıştığı bir "uyumluluk modu" belirtir.
7.1.6. Ekran Teknolojisi
Android platformu, uygulamaların Android uyumlu bir ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. Bu belgede özel olarak izin verilmediği sürece cihazlar, Android SDK'sı tarafından tanımlanan bu API'lerin tümünü desteklemelidir.
Bir cihaz uygulamasının Android uyumlu tüm ekranları:
- [C-0-1] 16 bit renkli grafik oluşturabilmelidir.
- 24 bit renkli grafikler görüntüleyebilen ekranları DESTEKLEMELİDİR.
- [C-0-2] Animasyonları oluşturabilmelidir.
- [C-0-3] Piksel en boy oranı (PAR) 0,9 ile 1,15 arasında OLMALIDIR. Yani piksel en boy oranı, %10-15 toleransla kare (1,0) değerine yakın OLMALIDIR.
7.1.7. İkincil Ekranlar
Android, medya paylaşımı özelliklerini etkinleştirmek için ikincil Android uyumlu ekranlar ve harici ekranlara erişmek için geliştirici API'leri desteği içerir.
Cihaz uygulamaları kablolu, kablosuz veya yerleşik ek ekran bağlantısı üzerinden harici ekranı destekliyorsa:
- [C-1-1]
DisplayManager
sistem hizmetini ve API'sini Android SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
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ı ZORUNLUDUR.
7.2.1. Klavye
Cihaz uygulamaları, üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek içeriyorsa:
- [C-1-1]
android.software.input_methods
özellik bayrağını İLANI GEREKTİRİR. - [C-1-2]
Input Management Framework
'i eksiksiz şekilde UYGULAMALI - [C-1-3] Önceden yüklenmiş bir yazılım klavyesi OLMALIDIR.
Cihaz uygulamaları: * [C-0-1] android.content.res.Configuration.keyboard içinde belirtilen biçimlerden biriyle eşleşmeyen bir donanım klavyesi İÇERMEMELİDİR (QWERTY veya 12 tuşlu). * Ek yumuşak klavye uygulamaları DAHİL EDİLMELİDİR. * Donanım klavyesi içerebilir.
7.2.2. Dokunmatik olmayan gezinme
Android, dokunmatik olmayan gezinme mekanizmaları olarak d-pad, izleme topu ve tekerlek desteği içerir.
Cihaz uygulamaları:
- [C-0-1] android.content.res.Configuration.navigation için doğru değeri bildirmelidir.
Cihaz uygulamalarında dokunma dışı gezinme yoksa:
- [C-1-1] Metin seçimi ve düzenleme için Giriş Yönetimi Motorları ile uyumlu makul bir alternatif kullanıcı arayüzü mekanizması SAĞLANMALIDIR. Yukarı yönlü Android açık kaynak uygulaması, dokunmatik olmayan gezinme girişlerine sahip cihazlarla kullanıma uygun bir seçim mekanizması içerir.
7.2.3. Gezinme Tuşları
Genellikle özel bir fiziksel düğme veya dokunmatik ekranın farklı bir kısmıyla etkileşim yoluyla sağlanan Ana Sayfa, En Son ve Geri işlevleri, Android gezinme paradigması ve dolayısıyla cihaz uygulamaları için gereklidir:
- [C-0-1]
ACTION=MAIN
veCATEGORY=LAUNCHER
ile ayarlanmış<intent-filter>
etkinliği olan yüklü uygulamaları başlatmak için kullanıcılara bir kolaylık sunmalıdır veya televizyon cihazı uygulamaları içinCATEGORY=LEANBACK_LAUNCHER
kullanmalıdır. Bu kullanıcı özelliği için mekanizma Ana Sayfa işlevi OLMALIDIR. - Son Kullanılanlar ve Geri işlevi için düğmeler YER ALMALIDIR.
Ana Sayfa, Son Aramalar veya Geri işlevleri sağlanıyorsa:
- [C-1-1] Bunlardan herhangi birine erişilebiliyorsa tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir.
- [C-1-2] Her işlevi hangi tek bir işlemin tetikleyeceğine dair net bir açıklama YAZILMALIDIR. Düğmeye basıldığında görünen bir simge, ekranın gezinme çubuğu bölümünde bir yazılım simgesi göstermek veya kutudan çıkar çıkmaz kurulum deneyimi sırasında kullanıcıyı adım adım rehberli bir demo akışında yönlendirmek bu tür bir gösterge örneğidir.
Cihaz uygulamaları:
- [SR], Android 4.0'dan beri işlem çubuğu lehine desteği sonlandırıldığı için 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üğmesi GÖSTERİLMELİDİR.
- [C-2-2] İşlem çubuğundaki taşma düğmesi seçilerek gösterilen işlem taşma pop-up'ının konumunu DEĞİŞTİRMEMELİDİR ancak menü işlevi seçilerek gösterildiğinde işlem taşma pop-up'ını ekranda değiştirilmiş bir konumda oluşturabilir.
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 anahtarı veya hareketler aracılığıyla Menü işlevini uygulamalara sunmalıdır. Diğer gezinme işlevleriyle birlikte gizlenmediği sürece bu menü işlevine erişilebilir olmalıdır.
Cihaz uygulamaları Yardım işlevini sağlıyorsa:
- [C-4-1] Diğer gezinme tuşlarına erişilebildiğinde Yardım işlevine tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir.
- [SR] Bu belirlenen etkileşim olarak ANA SAYFA işlevinde uzun basma özelliğinin kullanılması önemle ÖNERİLİR.
Cihaz uygulamaları, gezinme tuşlarını görüntülemek için ekranın farklı bir bölümünü kullanıyorsa:
- [C-5-1] Gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANABİLİR ve uygulamaların kullanabileceği ekran bölümünü GÖZDEN KAÇIRMASIN veya başka bir şekilde engelleMESİN.
- [C-5-2] Ekranın bir bölümünü, 7.1.1 numaralı bölümde tanımlanan koşulları karşılayan uygulamalara sunmalıdır.
- [C-5-3] Ekranın bu belirgin kısmının (diğer adıyla gezinme çubuğu) SDK'da belirtildiği gibi düzgün bir şekilde gizlenmesi için uygulama tarafından
View.setSystemUiVisibility()
API yöntemi aracılığıyla ayarlanan işaretleri UYGUNLAMALI.
Gezinme işlevi ekranda, harekete dayalı bir işlem olarak sağlanıyorsa:
- [C-6-1]
WindowInsets#getMandatorySystemGestureInsets()
yalnızca Ana Sayfa hareket tanıma alanını bildirmek için KULLANILMALIDIR. - [C-6-2] Ön plan uygulaması tarafından
View#setSystemGestureExclusionRects()
aracılığıyla sağlanan ancakWindowInsets#getMandatorySystemGestureInsets()
dışındaki bir hariç tutma dikdörtgeninde başlayan hareketler,View#setSystemGestureExclusionRects()
dokümanlarında belirtilen maksimum hariç tutma sınırı içinde hariç tutma dikdörtgenine izin verildiği sürece gezinme işlevi için durdurulmamalıdır. - [C-6-3] Ön plan uygulamasına daha önce bir
MotionEvent.ACTION_DOWN
etkinliği gönderildiyse dokunma işlemleri bir sistem hareketi için engellenmeye başlandığında ön plan uygulamasına birMotionEvent.ACTION_CANCEL
etkinliği GÖNDERMELİDİR. - [C-6-4] Ekran üzerinde düğme tabanlı gezinmeye (ör. Ayarlar'da) geçiş yapmak için kullanıcılara bir imkân sunulmalıdır.
- Ekranın mevcut yönünün alt kenarından yukarı kaydırarak ana sayfa işlevi SAĞLANMALIDIR.
- Son aramalar işlevi, Ana ekran hareketiyle aynı alandan yukarı kaydırıp bırakmadan önce basılı tutularak sağlanmalıdır.
WindowInsets#getMandatorySystemGestureInsets()
içinde başlayan hareketler, ön plan uygulaması tarafındanView#setSystemGestureExclusionRects()
aracılığıyla sağlanan hariç tutma dikdörtgenlerinden ETKİLENMEMELİDİR.
Ekranın mevcut yönünün sol ve sağ kenarlarından herhangi bir yerden gezinme işlevi sağlanıyorsa:
- [C-7-1] Gezinme işlevi Geri olmalı ve ekranın mevcut yönünün hem sol hem de sağ kenarından kaydırma şeklinde sağlanmalıdır.
- [C-7-2] Sol veya sağ kenarlarda özel kaydırılabilir sistem panelleri sağlanıyorsa bu paneller, ekranın üst 1/3'üne yerleştirilmeli ve ekrana doğru sürüklendiğinde söz konusu panellerin çağrılacağı, dolayısıyla Geri'nin çağrılmayacağına dair net ve kalıcı bir görsel gösterge sunulmalıdır. Sistem paneli, kullanıcı tarafından ekran kenarlarının üst 1/3'ünün altına gelecek şekilde yapılandırılabilir ancak sistem paneli, kenarların 1/3'ünden uzun olmamalıdır.
- [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şlemi AOSP'de uygulandığı şekilde (SDK'da belirtildiği şekilde) davranmalıdır. - [C-7-4] Ön plan uygulamasında
View.SYSTEM_UI_FLAG_IMMERSIVE
veyaView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
işaretleri ayarlandığında, kullanıcı AOSP'de uygulandığı şekilde sistem çubuklarını (ör. gezinme ve durum çubuğu) getirene kadar özel kaydırılabilir sistem panelleri GİZLENMELİDİR.
7.2.4. Dokunmatik Ekran Girişi
Android; dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunmatik giriş cihazları gibi çeşitli işaretçi giriş sistemlerini destekler. Dokunmatik ekran tabanlı cihaz uygulamaları, kullanıcının ekrandaki öğelerle doğrudan etkileşim kurduğu izlenimi verecek şekilde bir ekranla ilişkilendirilir. Kullanıcı doğrudan ekrana dokunduğundan sistem, üzerinde işlem yapılan nesneleri belirtmek için ek kolaylıklara ihtiyaç duymaz.
Cihaz uygulamaları:
- Bir tür işaretçi giriş sistemi (fare benzeri veya dokunmatik) OLMALIDIR.
- Tam bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.
Cihaz uygulamalarında birincil Android uyumlu ekranda dokunmatik ekran (tek dokunma veya daha iyi) varsa:
- [C-1-1]
Configuration.touchscreen
API alanı içinTOUCHSCREEN_FINGER
değerini bildirmelidir. - [C-1-2]
android.hardware.touchscreen
veandroid.hardware.faketouch
özellik işaretlerini bildirmelidir.
Cihaz uygulamalarında, birincil Android uyumlu ekranda tek bir dokunma yerine birden fazla dokunmayı izleyebilen bir dokunmatik ekran varsa:
- [C-2-1] Cihazdaki belirli 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 ekranda giriş için fare veya izleme topu gibi harici bir giriş cihazına (yani doğrudan ekrana dokunmaz) dayanıyorsa ve 7.2.5 numaralı bölümdeki sahte dokunma şartlarını karşılıyorsa:
- [C-3-1]
android.hardware.touchscreen
ile başlayan özellik işaretlerini BİLDİRMEMELİDİR. - [C-3-2] Yalnızca
android.hardware.faketouch
raporlanmalıdır. - [C-3-3]
Configuration.touchscreen
API alanı içinTOUCHSCREEN_NOTOUCH
değerini bildirmelidir.
7.2.5. Sahte Dokunmatik Giriş
Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesine yakın bir kullanıcı girişi sistemi sağlar. Örneğin, ekranda bir imleci hareket ettiren fare veya uzaktan kumanda, dokunmaya benzer ancak kullanıcının önce imleci veya odak noktasını seçip ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi, jiroskop işaretçisi, kontrol çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı, sahte dokunma etkileşimlerini destekleyebilir. Android, android.hardware.faketouch özelliğini içerir. Bu özellik, dokunmatik tabanlı girişi (temel hareket desteği dahil) yeterince taklit 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şlevinin taklit edilmiş bir alt kümesini desteklediğini belirtir.
Cihaz uygulamalarında dokunmatik ekran bulunmasa da kullanıma sunmak istedikleri başka bir işaretçi giriş sistemi varsa:
android.hardware.faketouch
özellik işareti için destek beyan etmelidir.
Cihaz uygulamaları android.hardware.faketouch
için destek belirtiyorsa:
- [C-1-1] İşaretçi konumunun mutlak X ve Y ekran konumlarını bildirmeli ve ekranda görsel bir işaretçi göstermelidir.
- [C-1-2] Dokunma etkinliğini, işaretçinin ekranda aşağı veya yukarı hareket etmesiyle oluşan durum değişikliğini belirten işlem koduyla bildirmelidir.
- [C-1-3] Ekrandaki bir nesneye işaretçiyi aşağı ve yukarı hareket ettirme özelliği DESTEKLENMELİDİR. Bu özellik, kullanıcıların ekrandaki bir nesneye dokunmayı taklit etmesine olanak tanır.
- [C-1-4] Ekranda bir nesnenin üzerinde, belirli bir süre içinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketlerinin yapılmasını desteklemelidir. Bu sayede kullanıcılar ekrandaki bir nesneye çift dokunmayı taklit edebilir.
- [C-1-5] Ekrandaki herhangi bir noktada aşağı bakan bir işaretçiyi, ekrandaki herhangi bir noktada yukarı bakan bir işaretçiyi ve ardından kullanıcıların dokunma sürüklemesini taklit etmesine olanak tanıyan yukarı bakan bir işaretçiyi desteklemelidir.
- [C-1-6] İşaretçinin aşağı doğru hareket etmesini desteklemeli, ardından kullanıcıların nesneyi ekranda hızlıca farklı bir konuma taşımasına ve ardından ekranda yukarı doğru hareket etmesine izin vermelidir. Bu sayede kullanıcılar ekranda bir nesneyi fırlatabilir.
Cihaz uygulamaları android.hardware.faketouch.multitouch.distinct
için destek beyan ediyorsa:
- [C-2-1]
android.hardware.faketouch
için destek beyan ETMELI. - [C-2-2] İki veya daha fazla bağımsız işaretçi girişinin ayrı ayrı izlenmesini DESTEKLEMELİDİR.
Cihaz uygulamaları android.hardware.faketouch.multitouch.jazzhand
için destek beyan ediyorsa:
- [C-3-1]
android.hardware.faketouch
için destek beyan ETMELI. - [C-3-2] 5 veya daha fazla işaretçi girişinin tamamen bağımsız olarak ayrı ayrı izlenmesini DESTEKLEMELİDİR.
7.2.6. Oyun Kumandası Desteği
7.2.6.1. Düğme Eşlemeleri
Cihaz uygulamaları:
- [C-1-1] HID etkinliklerini aşağıdaki tablolarda listelenen ilgili
InputEvent
sabitleriyle eşleyebilmelidir. Yukarı akış Android uygulaması bu koşulu karşılar.
Cihaz uygulamalarında, aşağıdaki tablolarda listelenen tüm etkinlikleri girme olanağı sunan bir kumanda yerleştirilmişse veya kutuda ayrı bir kumanda gönderiliyorsa:
- [C-2-1]
android.hardware.gamepad
özellik işaretini İLANI GEREKTİRİR
Düğme | HID Kullanımı2 | Android düğmesi |
---|---|---|
A1 | 0x09 0x0001 | KEYCODE_BUTTON_A (96) |
B1 | 0x09 0x0002 | KEYCODE_BUTTON_B (97) |
X1 | 0x09 0x0004 | KEYCODE_BUTTON_X (99) |
Y1 | 0x09 0x0005 | KEYCODE_BUTTON_Y (100) |
D-pad yukarı1 D-pad aşağı1 |
0x01 0x00393 | AXIS_HAT_Y4 |
D-pad sola1 D-pad sağa1 |
0x01 0x00393 | AXIS_HAT_X4 |
Sol üst kenar düğmesi1 | 0x09 0x0007 | KEYCODE_BUTTON_L1 (102) |
Sağ üst kenar düğmesi1 | 0x09 0x0008 | KEYCODE_BUTTON_R1 (103) |
Sol çubuk tıklama1 | 0x09 0x000E | KEYCODE_BUTTON_THUMBL (106) |
Sağ çubuğun tıklanması1 | 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'sında (0x01 0x0005) tanımlanmalıdır.
3 Bu kullanım için mantıksal minimum 0, mantıksal maksimum 7, fiziksel minimum 0, fiziksel maksimum 315, birim derece ve rapor boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde dönme olarak tanımlanır. Örneğin, 0 olan mantıksal değer, dönme olmadığını ve yukarı düğmesine basıldığını gösterirken 1 olan mantıksal değer, 45 derecelik bir dönme olduğunu ve hem yukarı hem de sol tuşlarına basıldığını gösterir.
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 |
AXIS_X AXIS_Y |
Sağ kontrol çubuğu |
0x01 0x0032 0x01 0x0035 |
AXIS_Z AXIS_RZ |
7.2.7. Uzaktan Kumanda
Cihaza özgü gereksinimler için 2.3.1 numaralı bölüme bakın.
7.3. Sensörler
Cihaz uygulamalarında, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türü varsa cihaz uygulaması bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
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]
SensorManager.getSensorList()
ve benzer yöntemler aracılığıyla desteklenen sensörlerin doğru listesini DÖNDÜRMELİDİR. - [C-0-3] Diğer tüm sensör API'leri için makul davranmalıdır (ör. uygulamalar dinleyici kaydetmeye çalıştığında uygun şekilde
true
veyafalse
döndürerek, ilgili sensörler mevcut olmadığında sensör dinleyicilerini çağırmamak vb.).
Cihaz uygulamalarında, üçüncü taraf geliştiriciler için ilgili bir API'si olan belirli bir sensör türü varsa geliştiriciler:
- [C-1-1] Android SDK dokümanlarında tanımlandığı şekilde her sensör türü için ilgili Uluslararası Birim Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini bildirmelidir.
- [C-1-2] Uygulama işlemcisi etkinken maksimum istenen gecikmesi 0 ms olan bir sensör akışı olması durumunda, sensör verilerini maksimum 100 milisaniye + 2 * sample_time gecikmesiyle raporlamalıdır. Bu gecikmeye filtreleme gecikmeleri dahil değildir.
- [C-1-3] İlk sensör örneğini, sensörün etkinleştirilmesinden sonraki 400 milisaniye + 2 * sample_time içinde bildirmelidir. Bu örneğin doğruluğunun 0 olması kabul edilebilir.
- [C-1-4] Android SDK dokümanları tarafından sürekli sensör olarak belirtilen API'ler için cihaz uygulamalarında, ardışık etkinlikler arasındaki raporlanan zaman damgası değerlerinin farkının standart sapması olarak tanımlanan ve %3'ün altında olması gereken jitter değerine sahip düzenli veri örnekleri sürekli olarak sağlanmalıdır.
- [C-1-5] Sensör etkinlik akışının, cihazın CPU'sunun askıya alma durumuna girmesini veya askıya alma durumundan uyandırılmasını ÖNLEMEDİĞİNDEN EMİN OLMALIDIR.
- [C-1-6] Android SDK dokümanlarında tanımlandığı şekilde nanosaniye cinsinden etkinlik zamanını bildirmelidir. Bu zaman, etkinliğin gerçekleştiği zamanı temsil eder ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edilir.
- [C-SR] Zaman damgası senkronizasyon hatasının 100 milisaniyenin altında olması İYİCE Ö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, tek tek sensörlerin raporlanan güç tüketiminin toplamını AŞMAMALIDIR.
Yukarıdaki liste kapsamlı değildir. Android SDK'sının ve sensörler ile ilgili Android Açık Kaynak Dokümanları'nın belgelenmiş davranışı yetkili kabul edilir.
Cihaz uygulamaları, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türü içeriyorsa geliştiriciler:
- [C-1-6] Tüm sensörler için sıfır olmayan bir çözünürlük ayarlamalı ve değeri
Sensor.getResolution()
API yöntemi aracılığıyla bildirmelidir.
Bazı sensör türleri karmadır. Yani bir veya daha fazla sensör tarafından sağlanan verilerden türetilebilirler. (Yön sensörü ve doğrusal hızlanma sensörü buna örnek gösterilebilir.)
Cihaz uygulamaları:
- Sensör türleri bölümünde açıklanan ön koşul fiziksel sensörleri içerdiğinde bu sensör türlerini UYGULAMALIDIR.
Cihaz uygulamaları kompozit sensör içeriyorsa:
- [C-2-1] Sensörü, kompozit sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
Cihaz uygulamaları, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türü içeriyorsa ve sensör yalnızca bir değer raporluyorsa cihaz uygulamaları:
- [C-3-1] Sensör için çözünürlüğü 1 olarak ayarlamalı ve değeri
Sensor.getResolution()
API yöntemi aracılığıyla bildirmelidir.
Cihaz uygulamalarında SensorAdditionalInfo#TYPE_VEC3_CALIBRATION özelliğini destekleyen belirli bir sensör türü varsa ve bu sensör üçüncü taraf geliştiricilere sunuluyorsa geliştiriciler:
- [C-4-1] Sağlanan verilere sabit, fabrikada belirlenmiş kalibrasyon parametreleri DAHİL EDİLMEMELİDİR.
Cihaz uygulamalarında 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü veya manyetometre sensörü kombinasyonu varsa bunlar:
- [C-SR] İvme ölçer, jiroskop ve manyetometrenin sabit bir göreli konuma sahip olmasını sağlamak için ÇOK ÖNEMLİ ÖNERİLİR.Böylece, cihaz dönüştürülebilirse (ör. katlanabilir) sensör eksenleri, tüm olası cihaz dönüşüm durumları boyunca sensör koordinat sistemiyle hizalı ve tutarlı kalır.
7.3.1. İvme ölçer
Cihaz uygulamaları:
- [C-SR] 3 eksenli ivme ölçer eklemeniz önemle ÖNERİLİR.
Cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [C-1-1] En az 50 Hz'ye kadar sıklıktaki etkinlikleri raporlayabilmelidir.
- [C-1-2]
TYPE_ACCELEROMETER
sensörünü uygulamalı ve bildirmelidir. - [C-1-3] Android API'lerinde açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR.
- [C-1-4] Herhangi bir eksende serbest düşüşten başlayarak yerçekiminin dört katına(4 g) kadar veya daha fazlasını ölçebilmelidir.
- [C-1-5] En az 12 bit çözünürlüğe sahip OLMALIDIR.
- [C-1-6] Standart sapma en fazla 0,05 m/s^2 olmalıdır.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına hesaplanır.
TYPE_SIGNIFICANT_MOTION
karma sensörünü uygulamak için [SR] ŞİDDETLE ÖNERİLİR.- [SR]
TYPE_ACCELEROMETER_UNCALIBRATED
sensörünü uygulamak ve raporlamak için ÇOK ÖNEMLE ÖNERİLİR. Android cihazların bu koşulu karşılaması önemle ÖNERİLİR. Böylece, bu koşulun zorunlu olabileceği gelecekteki platform sürümüne yükseltme yapabileceklerdir. TYPE_SIGNIFICANT_MOTION
,TYPE_TILT_DETECTOR
,TYPE_STEP_DETECTOR
,TYPE_STEP_COUNTER
birleşik sensörlerini Android SDK belgesinde açıklandığı şekilde UYGULAMALIDIR.- En az 200 Hz'e kadar olan etkinlikleri raporlamalıdır.
- Çözünürlüğü en az 16 bit olmalıdır.
- Özellikler yaşam döngüsü boyunca değişirse ve telafi edilirse kullanım sırasında kalibre EDİLMELİDİR ve cihaz yeniden başlatılırken telafi parametreleri korunmalıdır.
- Sıcaklık dengelenmelidir.
Cihaz uygulamalarında 3 eksenli bir ivmeölçer varsa ve TYPE_SIGNIFICANT_MOTION
, TYPE_TILT_DETECTOR
, TYPE_STEP_DETECTOR
, TYPE_STEP_COUNTER
karma sensörlerinden herhangi biri uygulanmışsa:
- [C-2-1] Güç tüketimlerinin toplamı her zaman 4 mW'tan az OLMALIDIR.
- Her biri 2 mW'ın ve cihaz dinamik veya statik durumdayken 0,5 mW'ın 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
birleşik sensörlerini UYGULAMALI. - [C-SR]
TYPE_GAME_ROTATION_VECTOR
karma sensörün uygulanması önemle ÖNERİLİR.
Cihaz uygulamalarında 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü ve manyetometre sensörü varsa:
- [C-4-1]
TYPE_ROTATION_VECTOR
birleşik sensörü UYGULANMALIDIR.
7.3.2. Manyetometre
Cihaz uygulamaları:
- [C-SR] 3 eksenli bir manyetometre (pusula) eklenmesi önemle ÖNERİLİR.
Cihaz uygulamaları 3 eksenli bir manyetometre içeriyorsa:
- [C-1-1]
TYPE_MAGNETIC_FIELD
sensörünü UYGULAMALIDIR. - [C-1-2] En az 10 Hz'ye kadar sıklıkta etkinlikleri raporlayabİLMELİ ve en az 50 Hz'ye kadar sıklıkta etkinlikleri raporlaMALIDIR.
- [C-1-3] Android API'lerinde açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR.
- [C-1-4] Doygunluk öncesi her eksende -900 µT ile +900 µT arasında ölçüm yapabilmelidir.
- [C-1-5] Manyetometre, dinamik (akımla indüklenen) ve statik (mıknatısla indüklenen) manyetik alanlardan uzak bir yere yerleştirilerek sabit demir ofset değeri 700 µT'den az OLMALIDIR ve 200 µT'nin altında bir değere sahip OLMALIDIR.
- [C-1-6] 0,6 µT'ye eşit veya daha yoğun bir çözünürlüğe sahip OLMALIDIR.
- [C-1-7] Sabit demir önyargısının çevrimiçi kalibrasyonunu ve telafisini desteklemeli ve cihaz yeniden başlatmaları arasında telafi parametrelerini korumalıdır.
- [C-1-8] Yumuşak demir telafisi uygulanmış OLMALIDIR. Kalibre işlemi, cihaz kullanılırken veya cihazın üretimi sırasında yapılabilir.
- [C-1-9] En hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına hesaplanmış standart sapma 1, 5 µT'den yüksek OLMAYACAK; standart sapma 0, 5 µT'den yüksek OLMAYACAK.
- [C-SR]
TYPE_MAGNETIC_FIELD_UNCALIBRATED
sensörünün uygulanması önemle ÖNERİLİR.
Cihaz uygulamalarında 3 eksenli manyetometre, ivme ölçer sensörü ve 3 eksenli jiroskop sensörü varsa:
- [C-2-1]
TYPE_ROTATION_VECTOR
birleşik sensörü UYGULANMALIDIR.
Cihaz uygulamaları 3 eksenli bir manyetometre ve ivme ölçer içeriyorsa:
TYPE_GEOMAGNETIC_ROTATION_VECTOR
sensörünü UYGULAYABİLİR.
Cihaz uygulamaları 3 eksenli manyetometre, ivme ölçer ve TYPE_GEOMAGNETIC_ROTATION_VECTOR
sensörü içeriyorsa:
- [C-3-1] 10 mW'tan az güç tüketmelidir.
- Sensör 10 Hz'de toplu mod için kaydedildiğinde 3 mW'den az güç TÜKETMELİDİR.
7.3.3. GPS
Cihaz uygulamaları:
- [C-SR] GPS/GNSS alıcısı eklemeniz önemle ÖNERİLİR.
Cihaz uygulamaları bir GPS/GNSS alıcı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla bu özelliği uygulamalara bildiriyorsa:
- [C-1-1]
LocationManager#requestLocationUpdate
üzerinden istendiğinde konum çıkışlarını en az 1 Hz hızda DESTEKLEMELİDİR. - [C-1-2] 0, 5 Mb/sn veya daha hızlı veri hızına sahip bir internet bağlantısına bağlıyken açık hava koşullarında (güçlü sinyaller, ihmal edilebilir çoklu yol, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı zaman) konumu belirleyebilmelidir. Bu şart genellikle GPS/GNSS kilitlenme süresini en aza indirmek için Yardımlı veya Tahmini GPS/GNSS tekniği kullanılarak karşılanır (Yardım verileri Referans Zaman, Referans Konum ve Uydu Ephemeris/Kronometre içerir).
- [C-1-6] Cihaz uygulamaları, bu tür bir konum hesaplaması yaptıktan sonra, konum istekleri yeniden başlatıldığında, ilk konum hesaplamasından sonraki bir saate kadar, sonraki istek veri bağlantısı olmadan yapıldığında ve/veya güç döngüsü uygulandığında bile açık havada konumunu 5 saniye içinde belirlemelidir.
-
Açık hava koşullarında, konum belirlendikten sonra sabitken veya saniye kare başına 1 metreden daha az ivmeyle hareket ederken:
- [C-1-3] En az% 95 oranında, konumu 20 metre içinde ve hızı saniyede 0, 5 metre içinde belirleyebilmelidir.
- [C-1-4] Bir takımyıldızındaki en az 8 uyduyu aynı anda
GnssStatus.Callback
üzerinden izlemeli ve bildirmelidir. - Birden fazla takımyıldızından (ör. GPS + Glonass, Beidou, Galileo'dan en az biri) en az 24 uyduyu aynı anda izleyebilmelidir.
- [C-SR] Acil durum telefon araması sırasında GNSS Konum Sağlayıcı API'leri aracılığıyla normal GPS/GNSS konum çıkışlarını vermeye devam etmeniz önemle ÖNERİLİR.
- [C-SR] SBAS hariç, izlenen tüm takımyıldızlarından (GnssStatus mesajlarında bildirildiği gibi) GNSS ölçümlerinin bildirilmesi önemle ÖNERİLİR.
- [C-SR] AGC ve GNSS ölçümünün sıklığını bildirmeniz önemle ÖNERİLİR.
- [C-SR] Her GPS/GNSS konumunun bir parçası olarak tüm doğruluk tahminlerinin (Yön, Hız ve Dikey dahil) raporlanması önemle ÖNERİLİR.
- [C-SR] GPS/GNSS'den hesaplanan bir konum henüz raporlanmasa bile GNSS ölçümlerinin bulunduğu anda raporlanması önemle ÖNERİLİR.
- [C-SR] Konum belirlendikten sonra açık hava koşullarında sabitken veya saniye kare başına 0,2 metreden daha az ivmeyle hareket ederken GNSS sanal menzilleri ve sanal menzil hızlarının bildirilmesi önemle ÖNERİLİR. Bu değerler, konumu en az% 95 oranında 20 metre içinde, hızı ise saniyede 0,2 metre içinde hesaplamak için yeterlidir.
7.3.4. Jiroskop
Cihaz uygulamaları:
- [C-SR] Jiroskop sensörü eklemeniz önemle ÖNERİLİR.
Cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:
- [C-1-1] En az 50 Hz'ye kadar sıklıktaki etkinlikleri raporlayabilmelidir.
- [C-1-2]
TYPE_GYROSCOPE
sensörünü UYGULAMALI veTYPE_GYROSCOPE_UNCALIBRATED
sensörünü de UYGULAMASI ÖNEMLE TAVSİYE EDİLİR. - [C-1-4] 12 bit veya daha yüksek çözünürlükte OLMALIDIR ve 16 bit veya daha yüksek çözünürlükte OLMALIDIR.
- [C-1-5] Sıcaklık dengeleme özelliği OLMALIDIR.
- [C-1-6] Kullanım sırasında kalibre edilmeli ve telafi edilmeli, ayrıca cihaz yeniden başlatılırken telafi parametreleri korunmalıdır.
- [C-1-7] Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) daha büyük bir varyansa SAHİP OLMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle SINIRLANDIRILMALIDIR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz bu değer 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
- [SR] Cihaz oda sıcaklığında sabitken kalibrasyon hatasının 0,01 rad/s'den az olması önemle ÖNERİLİR.
- En az 200 Hz'e kadar olan etkinlikleri raporlamalıdır.
Cihaz uygulamalarında 3 eksenli jiroskop, ivme ölçer sensörü ve manyetometre sensörü varsa:
- [C-2-1]
TYPE_ROTATION_VECTOR
birleşik sensörü UYGULANMALIDIR.
Cihaz uygulamalarında 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü varsa:
- [C-3-1]
TYPE_GRAVITY
veTYPE_LINEAR_ACCELERATION
birleşik sensörlerini UYGULAMALI. - [C-SR]
TYPE_GAME_ROTATION_VECTOR
karma sensörü uygulamanız önemle ÖNERİLİR.
7.3.5. Barometre
Cihaz uygulamaları:
- [C-SR] Barometre (ortam hava basıncı sensörü) eklemeniz önemle ÖNERİLİR.
Cihaz uygulamaları barometre içeriyorsa:
- [C-1-1]
TYPE_PRESSURE
sensörünü uygulamalı ve bildirmelidir. - [C-1-2] Etkinlikleri 5 Hz veya daha yüksek bir hızda yayınlayABİLMELİDİR.
- [C-1-3] Sıcaklık dengeleme özelliği OLMALIDIR.
- [SR] 300hPa ila 1100hPa aralığındaki basınç ölçümlerini raporlayabilmek için ÇOK ÖNEMLİ.
- Mutlak doğruluğu 1 hPa OLMALIDIR.
- 20 hPa aralığında 0,12 hPa bağıl doğruluğa SAHİP OLMALIDIR (deniz seviyesinde ~200 m değişimde ~1 m doğruluğa eşdeğerdir).
7.3.6. Termometre
Cihaz uygulamaları ortam termometresi (sıcaklık sensörü) içeriyorsa:
- [C-1-1] Ortam sıcaklığı sensörü için
SENSOR_TYPE_AMBIENT_TEMPERATURE
tanımlanmalıdır ve sensör, kullanıcının cihazla etkileşim kurduğu yerin ortam (oda/araç kabini) sıcaklığını santigrat derece cinsinden ölçmelidir.
Cihaz uygulamaları, ortam sıcaklığı dışında bir sıcaklığı (ör. CPU sıcaklığı) ölçen bir termometre sensörü içeriyorsa:
- [C-2-1] Sıcaklık sensörü için
SENSOR_TYPE_AMBIENT_TEMPERATURE
tanımlanmamalıdır.
7.3.7. Fotoğraf ölçer
- Cihaz uygulamaları bir fotometre (ortam ışığı sensörü) İÇERİEBİLİR.
7.3.8. Yakınlık Sensörü
- Cihaz uygulamaları bir yakınlık sensörü içerEBİLİR.
Cihaz uygulamalarında yakınlık sensörü varsa:
- [C-1-1] Bir nesnenin yakınlığını ekranla aynı yönde ölçmelidir. Yani, bu sensör türünün birincil amacı kullanıcının kullandığı telefonu algılamak olduğundan yakınlık sensörü ekrana yakın nesneleri algılayacak şekilde yönlendirilmiş OLMALIDIR. Cihaz uygulamalarında başka bir yönde yakınlık sensörü varsa bu API üzerinden erişilememelidir.
- [C-1-2] 1 bit veya daha fazla doğruluk olmalıdır.
7.3.9. Yüksek Doğruluk Oranı Sunan Sensörler
Cihaz uygulamaları bu bölümde tanımlandığı şekilde daha yüksek kaliteli sensörler içeriyorsa ve bunları üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
android.hardware.sensor.hifi_sensors
özellik bayrağı aracılığıyla özelliği tanımlaması GEREKİR.
Cihaz uygulamaları android.hardware.sensor.hifi_sensors
bildirirse:
-
[C-2-1]
TYPE_ACCELEROMETER
sensörüne sahip OLMALIDIR. Bu sensör:- Ölçüm aralığı en az -8 g ile +8 g arasında OLMALIDIR ve en az -16 g ile +16 g arasında bir ölçüm aralığına sahip olması önemle Ö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ı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel
RATE_VERY_FAST
özelliğini DESTEKLEMELİDİR. - Ölçüm gürültüsü 400 μg/√Hz'den yüksek OLMAMALIDIR.
- Bu sensörün, en az 3.000 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
- Gruplandırma güç tüketimi en fazla 3 mW olmalıdır.
- [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliği ve bu bant genişliğinde beyaz gürültü spektrumu olması önemle ÖNERİLİR.
- Oda sıcaklığında test edilen rastgele hız yürüyüşü 30 μg √Hz'den az OLMALIDIR.
- Sıcaklığa göre önyargı değişikliğinin +/- 1 mg/°C'den az olması GEREKİR.
- En iyi uyum çizgisi doğrusal olmayanlığı %0,5'ten az, sıcaklığa göre hassasiyet değişimi ise %0,03/°C'den az OLMALIDIR.
- Cihazın çalışma sıcaklığı aralığında enine eksen hassasiyeti % 2,5'ten az ve enine eksen hassasiyeti değişimi% 0,2'den az OLMALIDIR.
-
[C-2-2]
TYPE_ACCELEROMETER
ile aynı kalite koşullarına sahip birTYPE_ACCELEROMETER_UNCALIBRATED
OLMALIDIR. -
[C-2-3]
TYPE_GYROSCOPE
sensörüne sahip OLMALIDIR. Bu sensör:- En az -1000 ile +1000 dps arasında bir ölçüm aralığına sahip OLMALIDIR.
- Ölçüm çözünürlüğü en az 16 LSB/dps olmalıdır.
- Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel
RATE_VERY_FAST
özelliğini DESTEKLEMELİDİR. - Ölçüm gürültüsü 0,014°/s/√Hz'den yüksek OLMAMALIDIR.
- [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliği ve bu bant genişliğinde beyaz gürültü spektrumu olması önemle ÖNERİLİR.
- Oda sıcaklığında test edildiğinde 0,001 °/s √Hz'den düşük bir rastgele yürüyüş hızı OLMALIDIR.
- Sıcaklığa göre önyargı değişimi ≤ +/- 0,05 °/ s / °C olmalıdır.
- Sıcaklığa göre hassasiyet değişimi %0,02/°C'den az OLMALIDIR.
- En iyi uyum doğrusunun doğrusal olmayanlığı %0,2'den az OLMALIDIR.
- Gürültü yoğunluğu ≤ 0,007 °/s/√Hz olmalıdır.
- Cihaz sabitken 10 ila 40 ℃ sıcaklık aralığında kalibrasyon hatası 0,002 rad/s'den az OLMALIDIR.
- 0,1°/s/g'den düşük g hassasiyetine sahip OLMALIDIR.
- Cihazın çalışma sıcaklığı aralığında enine eksen hassasiyeti % 4,0'ün ve enine eksen hassasiyeti değişimi% 0,3'ün altında OLMALIDIR.
-
[C-2-4]
TYPE_GYROSCOPE
ile aynı kalite koşullarına sahip birTYPE_GYROSCOPE_UNCALIBRATED
OLMALIDIR. -
[C-2-5]
TYPE_GEOMAGNETIC_FIELD
sensörüne sahip OLMALIDIR. Bu sensör:- Ölçüm aralığı en az -900 ile +900 μT arasında OLMALIDIR.
- Ölçüm çözünürlüğü en az 5 LSB/uT OLMALIDIR.
- Minimum ölçüm frekansı 5 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansı 50 Hz veya daha yüksek olmalıdır.
- Ölçüm gürültüsü 0,5 uT'tan yüksek OLMAMALIDIR.
-
[C-2-6]
TYPE_GEOMAGNETIC_FIELD
ile aynı kalite koşullarına sahip birTYPE_MAGNETIC_FIELD_UNCALIBRATED
'ye SAHİP OLMALIDIR ve ek olarak:- Bu sensörün, en az 600 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
- [C-SR] Rapor hızı 50 Hz veya daha yüksek olduğunda 1 Hz ile en az 10 Hz arasında beyaz gürültü spektrumu kullanılması önemle ÖNERİLİR.
-
[C-2-7]
TYPE_PRESSURE
sensörüne sahip OLMALIDIR. Bu sensör:- En az 300 ile 1.100 hPa arasında bir ölçüm aralığına sahip OLMALIDIR.
- Ölçüm çözünürlüğü en az 80 LSB/hPa OLMALIDIR.
- Minimum ölçüm sıklığı 1 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansı 10 Hz veya daha yüksek olmalıdır.
- Ölçüm gürültüsü 2 Pa/√Hz'den yüksek OLMAMALIDIR.
- Bu sensörün, en az 300 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
- Gruplandırma güç tüketimi en fazla 2 mW olmalıdır.
- [C-2-8]
TYPE_GAME_ROTATION_VECTOR
sensörü OLMALIDIR. - [C-2-9] Şu özelliklere sahip bir
TYPE_SIGNIFICANT_MOTION
sensörü OLMALIDIR:- Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
- [C-2-10]
TYPE_STEP_DETECTOR
sensörü şunlara sahip OLMALIDIR:- Bu sensörün, en az 100 sensör etkinliği arabelleğe alma özelliğine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
- Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek güç tüketimine sahip OLMAZ.
- Gruplandırma güç tüketimi en fazla 4 mW olmalıdır.
- [C-2-11]
TYPE_STEP_COUNTER
sensörüne sahip OLMALIDIR. Bu sensör:- Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek güç tüketimine sahip OLMAZ.
- [C-2-12]
TILT_DETECTOR
sensörü ZORUNLUDUR. Bu sensör:- Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek güç tüketimine sahip OLMAZ.
- [C-2-13] İvmeölçer, jiroskop ve manyetometre tarafından raporlanan aynı fiziksel etkinliğin etkinlik zaman damgası 2, 5 milisaniye içinde olmalıdır. İvmeölçer ve jiroskop tarafından raporlanan aynı fiziksel etkinliğin etkinlik zaman damgası 0,25 milisaniye içinde OLMALIDIR.
- [C-2-14] Jiroskop sensör etkinliği zaman damgalarının, kamera alt sistemiyle aynı zaman tabanında ve 1 milisaniyelik hata payında olması GEREKİR.
- [C-2-15] Veriler yukarıdaki fiziksel sensörlerden herhangi birinde mevcut olduğu andan itibaren 5 milisaniye içinde uygulamalara örnekler göndermelidir.
- [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz sabitken 0,5 mW'den, cihaz hareket halindeyken 2,0 mW'den daha yüksek güç tüketimine SAHİP OLMAYACAK:
-
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 tampon kapasitesine sahip OLMALIDIR.
Bu bölümdeki tüm güç tüketimi şartlarının, uygulama işlemcisinin güç tüketimini içermediğini unutmayın. Sensör zincirinin tamamı (sensör, destekleyici devreler, özel sensör işleme sistemi vb.) tarafından çekilen gücü içerir.
Cihaz uygulamaları doğrudan sensör desteği içeriyorsa:
- [C-3-1] Doğrudan kanal türleri ve doğrudan rapor oranları düzeyindeki desteği
isDirectChannelTypeSupported
vegetHighestDirectReportRateLevel
API üzerinden doğru şekilde beyan ETMELI. - [C-3-2] Sensör doğrudan kanalı desteğini beyan eden tüm sensörler için iki sensör doğrudan kanal türünden en az birini DESTEKLEMELİDİR.
- Aşağıdaki türlerde birincil sensör (uyandırma dışı varyant) için sensör doğrudan kanalı üzerinden etkinlik raporlamasını DESTEKLEMELİDİR:
-
TYPE_ACCELEROMETER
-
TYPE_ACCELEROMETER_UNCALIBRATED
-
TYPE_GYROSCOPE
-
TYPE_GYROSCOPE_UNCALIBRATED
-
TYPE_MAGNETIC_FIELD
-
TYPE_MAGNETIC_FIELD_UNCALIBRATED
-
7.3.10. Biyometri Sensörleri
Biyometrik Kilit Açma Güvenliği'ni Ölçme hakkında daha fazla bilgi için lütfen Biyometrik Güvenlik Ölçümü belgelerine bakın.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa:
- Biyometrik sensör içermelidir
Biyometri sensörleri, kimliğe bürünme ve sahtekarlık kabul oranlarına ve biyometri ardışık düzeninin güvenliğine göre 3. sınıf (eski adıyla Güçlü), 2. sınıf (eski adıyla Zayıf) veya 1. sınıf (eski adıyla Rahat) olarak sınıflandırılabilir. Bu sınıflandırma, biyometrik sensörün platformla ve üçüncü taraf uygulamalarla 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 istiyorsa aşağıda ayrıntılı olarak açıklanan ek koşulları karşılaması gerekir. Hem Sınıf 2 hem de Sınıf 3 biyometrileri aşağıda ayrıntılı olarak açıklanan ek özelliklere sahiptir.
Cihaz uygulamaları, android.hardware.biometrics.BiometricManager, android.hardware.biometrics.BiometricPrompt ve android.provider.Settings.ACTION_BIOMETRIC_ENROLL aracılığıyla biyometrik sensörü üçüncü taraf uygulamaların kullanımına sunuyorsa:
- [C-4-1] Bu dokümanda tanımlandığı şekilde 3. sınıf veya 2. sınıf biyometri şartlarına UYGUN OLMALIDIR.
- [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ı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 biyometrisine sahip cihazlarda ACTION_BIOMETRIC_ENROLL işlemini UYGULAMALIDIR. Bu işlem yalnızca Sınıf 3 veya Sınıf 2 biyometrileri için kayıt giriş noktalarını GÖSTERMELİDİR.
Cihaz uygulamaları pasif biyometriyi destekliyorsa:
- [C-5-1] Varsayılan olarak ek bir onay adımı (ör. düğmeye basma) İSTEMELİDİR.
- [C-SR] Kullanıcıların uygulama tercihini geçersiz kılmasına izin veren ve her zaman onay adımı gerektiren bir ayar bulunması önemle ÖNERİLİR.
- [C-SR] Onay işleminin, işletim sistemi veya çekirdek güvenliğinin ihlal edilmesi durumunda kimliğe bürünemeyecek şekilde güvence altına alınması KESİNLİKLE ÖNERİLİR. Örneğin, bu durum fiziksel bir düğmeye dayalı onay işleminin, fiziksel düğmeye basmaktan başka bir yöntemle çalıştırılamayacak güvenli bir öğenin (SE) yalnızca girişe yönelik genel amaçlı giriş/çıkış (GPIO) pini üzerinden yönlendirildiği anlamına gelir.
- [C-5-2] Ayrıca, uygulamaların oturum açma akışlarında kullanabileceği setConfirmationRequired (boolean) değerine karşılık gelen bir dolaylı kimlik doğrulama akışı(onay adımı olmadan) UYGULANMALIDIR.
Cihaz uygulamalarında birden fazla biyometrik sensör varsa:
- [C-SR] Kimlik doğrulama başına yalnızca bir biyometrik doğrulama yapılmasının İSTENDİĞİ ÖNEMLE ÖNERİLİR (ör. cihazda hem parmak izi hem de yüz sensörü varsa bunlardan herhangi biri doğrulandıktan sonra onAuthenticationSucceeded gönderilmelidir).
Cihaz uygulamalarının, üçüncü taraf uygulamaların anahtar mağazası anahtarlarına erişmesine izin vermesi için:
- [C-6-1] Aşağıdaki bölümde tanımlandığı şekilde 3. Sınıf şartlarını karşılamalıdır.
- [C-6-2] Kimlik doğrulama için BIOMETRIC_STRONG gerekli olduğunda veya kimlik doğrulama bir CryptoObject ile çağrıldığında yalnızca 3. Sınıf biyometrik veriler sunulmalıdır.
Cihaz uygulamaları bir biyometrik sensörü Sınıf 1 (eski adıyla Kolaylık) olarak işlemek istiyorsa:
- [C-1-1] Yanlış kabul oranı %0,002'den düşük OLMALIDIR.
- [C-1-2] Bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceğini ve etkinleştirmenin risklerini açıkça belirtmesi GEREKİR. Android Biyometri Test Protokolleri'ne göre kimliğe bürünme ve sahtekarlık kabul oranları% 7'den yüksekse bu modun etkinleştirilmesiyle ilgili riskler açıkça belirtilmelidir.
- [C-1-3] Biyometrik doğrulama için beş yanlış denemeden sonra denemelerin hızını en az 30 saniye boyunca sınırlamalıdır. Yanlış deneme, kayıtlı bir biyometrik ile eşleşmeyen yeterli yakalama kalitesine (
BIOMETRIC_ACQUIRED_GOOD
) sahip denemedir. - [C-1-4] Öncelikle bir güven zinciri oluşturmadan yeni biyometriklerin eklenmesini ÖNLEMELİDİR. Bunun için kullanıcıdan mevcut kimlik bilgilerini onaylamasını veya TEE tarafından korunan yeni bir cihaz kimlik bilgisi (PIN/desen/şifre) eklemesini isteyin. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevede mekanizmayı sağlar.
- [C-1-5] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama dahil) kullanıcının kimliği tanımlayabilecek tüm biyometrik verileri tamamen kaldırmalıdır.
- [C-1-6] Bu biyometrik için ayrı bayrağı (ör.
DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT
,DevicePolicymanager.KEYGUARD_DISABLE_FACE
veyaDevicePolicymanager.KEYGUARD_DISABLE_IRIS
) UYGUNLAŞTIRMALIDIR. - [C-1-7] Android 10 sürümüyle kullanıma sunulan yeni cihazlarda 24 saatte bir veya daha kısa sürede, daha eski Android sürümlerinden yükseltilen cihazlarda ise 72 saatte bir veya daha kısa sürede kullanıcıdan önerilen birincil kimlik doğrulamayı (ör. PIN, desen, şifre) İSTEMELİDİR.
-
[C-1-8] Aşağıdakilerden biri gerçekleştikten sonra kullanıcıdan önerilen birincil kimlik doğrulamayı (ör. PIN, desen, şifre) İSTEMELİDİR:
- 4 saatlik boşta kalma zaman aşımı süresi VEYA
- 3 başarısız biyometrik kimlik doğrulama girişimi.
- Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasından sonra, işlem yapılmadığında zaman aşımı süresi ve başarısız kimlik doğrulama sayısı sıfırlanır.
Daha eski bir Android sürümünden yükseltilen cihazlar C-1-8'den muaf tutulabilir. * [C-SR] Yeni cihazlar için [C-1-7] ve [C-1-8]'de belirtilen kısıtlamaları uygulamak üzere Android Open Source Project tarafından sağlanan çerçevedeki mantığın kullanılması önemle ÖNERİLİR. * [C-SR] Cihaz üzerinde ölçülen yanlış reddetme oranının %10'un altında olması önemle ÖNERİLİR. * [C-SR] Kayıtlı her biyometrik için, biyometrik algılandığı andan ekranın kilidinin açılmasına kadar geçen sürenin 1 saniyenin altında 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 Sınıf 1 ile ilgili tüm şartları karşılamalıdır.
- [C-2-2] Android Biyometri Test Protokolleri tarafından ölçülen sahtecilik ve kimliğe bürünme kabul oranı en fazla% 20 olmalıdır.
- [C-2-3] Biyometrik eşleştirmeyi, Android kullanıcı veya çekirdek alanı dışındaki izole bir yürütme ortamında (ör. Güvenilir Yürütme Ortamı (TEE)) veya izole yürütme ortamına güvenli bir kanalı olan bir çipte YAPMALIDIR.
- [C-2-4] Tanımlanabilir tüm verilerin, Android Open Source Project sitesindeki uygulama yönergelerinde belirtildiği şekilde, izole yürütme ortamının dışında veya izole yürütme ortamına güvenli bir kanalı olan bir çipin dışında edinilemeyecek, okunamayacak veya değiştirilemeyecek şekilde şifrelenmiş ve kriptografik olarak kimliği doğrulanmış olması GEREKİR.
- [C-2-5] Kamera tabanlı biyometri için, biyometri tabanlı kimlik doğrulama veya kayıt işlemi sırasında:
- Kamerayı, kamera karelerinin izole yürütme ortamının dışında okunmasını veya değiştirilmesini önleyen bir modda veya izole yürütme ortamına güvenli bir kanalı olan bir çipte çalıştırmalıdır.
- RGB tek kameralı çözümlerde, kamera kareleri, kayıt için önizleme gibi işlemleri desteklemek amacıyla izole yürütme ortamının dışında okunabilir ancak değiştirilemez OLMALIDIR.
- [C-2-6] Üçüncü taraf uygulamalarının biyometrik kayıtları ayırt etmesine İZİN VERİLMEMELİDİR.
- [C-2-7] Uygulama işlemcisinin, TEE bağlamı dışında kimliği tanımlayabilecek biyometrik verilere veya bunlardan türetilen verilere (ör. yerleştirilenler) şifresiz erişmesine İZİN VERMEMELİDİR.
-
[C-2-8] İşletim sistemi veya çekirdek güvenliğinin ihlal edilmesi durumunda, kullanıcı olarak yanlış kimlik doğrulaması yapmak için verilerin doğrudan eklenmesine izin vermeyecek şekilde güvenli bir işleme ardışık düzeni OLMALIDIR.
Cihaz uygulamaları daha önce bir Android sürümünde kullanıma sunulmuşsa ve C-2-8 şartını sistem yazılımı güncellemesiyle karşılayamıyorsa bu cihazlar şarttan muaf tutulabilir.
-
[C-SR] Tüm biyometrik modlar için canlı algılama ve yüz biyometrisi için dikkat algılama özelliğinin eklenmesi önemle ÖNERİLİR.
Cihaz uygulamaları bir biyometrik sensörü 3. sınıf (eski adıyla Güçlü) olarak değerlendirmek istiyorsa:
- [C-3-1], [C-1-7] ve [C-1-8] hariç olmak üzere yukarıdaki Sınıf 2'nin tüm koşullarını karşılamalıdır. Daha eski bir Android sürümünden yükseltilen cihazlar C-2-7'den muaf tutulmaz.
- [C-3-2] Donanım destekli bir anahtar deposu uygulaması OLMALIDIR.
- [C-3-3] Android Biyometri Test Protokolleri tarafından ölçülen sahtecilik ve kimliğe bürünme kabul oranının% 7'den yüksek OLMAMALIDIR.
- [C-3-4] 72 saatte bir veya daha kısa sürede kullanıcıdan önerilen birincil kimlik doğrulamayı (ör. PIN, desen, şifre) İSTEMELİDİR.
7.3.12. Poz Sensörü
Cihaz uygulamaları:
- 6 serbestlik derecesine sahip poz sensörünü DESTEKLEYEBİLİR.
Cihaz uygulamaları 6 serbestlik derecesine sahip poz sensörünü destekliyorsa:
- [C-1-1]
TYPE_POSE_6DOF
sensörünü uygulamalı ve bildirmelidir. - [C-1-2] Yalnızca rotasyon vektöründen daha doğru OLMALIDIR.
7.3.13. Menteşe Açısı Sensörü
Cihaz uygulamaları menteşe açı sensörünü destekliyorsa:
- [C-1-1]
TYPE_HINGLE_ANGLE
'i uygulamalı ve bildirmelidir. - [C-1-2] 0 ile 360 derece arasında en az iki okumayı (0 ve 360 derece dahil) DESTEKLEMELİDİR.
- [C-1-3]
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)
için uyandırma sensörü döndürülmelidir.
7.4. Veri Bağlantısı
7.4.1. Telefon Hizmeti
Android API'leri ve bu belge tarafından kullanılan "Telefon" terimi, özellikle GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanıma atıfta bulunur. Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak Android'in amaçları doğrultusunda, aynı ağ kullanılarak uygulanabilecek veri bağlantılarından bağımsız olarak kabul edilir. 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ından bağımsız olarak telefon cihazı olarak kabul edilmez.
- Android, telefon donanımı içermeyen cihazlarda KULLANILABİLİR. Yani Android, telefon olmayan cihazlarla uyumludur.
Cihaz uygulamaları GSM veya CDMA telefon görüşmelerini içeriyorsa:
- [C-1-1]
android.hardware.telephony
özellik bayrağını ve diğer alt özellik bayraklarını teknolojiye göre İLANI GEREKTİRİR. - [C-1-2] Söz konusu teknolojinin API'si için TAM destek uygulanmalıdır.
Cihaz uygulamaları telefon donanımı içermiyorsa:
- [C-2-1] API'lerin tamamını no-ops olarak UYGULAMALI.
Cihaz uygulamaları eUICC'leri veya eSIM'leri/yerleşik SIM'leri destekliyorsa ve eSIM işlevini üçüncü taraf geliştiricilere sunmak için özel bir mekanizma içeriyorsa:
- [C-3-1]
EuiccManager API
'un eksiksiz bir şekilde uygulanması ZORUNLUDUR.
7.4.1.1. Numara Engelleme Uyumluluğu
Cihaz uygulamaları android.hardware.telephony feature
değerini raporlarsa:
- [C-1-1] Numara engelleme desteği ZORUNLUDUR
- [C-1-2]
BlockedNumberContract
ve ilgili API'yi SDK dokümanlarında açıklandığı şekilde eksiksiz bir şekilde UYGULAMALIDIR. - [C-1-3] "BlockedNumberProvider"daki bir telefon numarasından gelen tüm aramaları ve mesajları, uygulamalarla herhangi bir etkileşimde bulunmadan ENGELLEMELİDİR. Tek istisna, SDK dokümanlarında açıklandığı gibi numara engellemenin geçici olarak kaldırılmasıdır.
- [C-1-4] Engellenen bir arama için platform arama kaydı sağlayıcısına YAZMAMALIDIR.
- [C-1-5] Engellenen bir mesaj için Telefon hizmeti sağlayıcıya yazı YAZMAMALIDIR.
- [C-1-6]
TelecomManager.createManageBlockedNumbersIntent()
yöntemi tarafından döndürülen intent ile açılan engellenen numara yönetimi kullanıcı arayüzü UYGULANMALIDIR. - [C-1-7] Android platformu, birincil kullanıcının cihazdaki tek bir telefon hizmeti örneği üzerinde tam kontrole sahip olduğunu varsaydığından ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzü ikincil kullanıcılar için GİZLENMELİDİR ve engellenen listeye yine UYULMALIDIR.
- Cihaz Android 7.0'a güncellendiğinde engellenen numaralar sağlayıcıya taşınmalıdır.
7.4.1.2. Telecom API
Cihaz uygulamaları android.hardware.telephony
değerini raporluyorsa:
- [C-1-1] SDK'da açıklanan
ConnectionService
API'lerini DESTEKLEMELİDİR. - [C-1-2] Kullanıcı,
CAPABILITY_SUPPORT_HOLD
üzerinden belirtilen bekletme özelliğini desteklemeyen bir üçüncü taraf uygulaması tarafından yapılan ve devam eden bir görüşmedeyken yeni bir gelen aramayı göstermeli ve kullanıcıya gelen aramayı kabul etme veya reddetme olanağı sunmalıdır. - [C-1-3] InCallService'i uygulayan bir uygulama OLMALIDIR.
-
[C-SR] Kullanıcıya, gelen bir aramayı yanıtlamanın devam eden aramayı sonlandıracağını bildirmeniz önemle ÖNERİLİR.
AOSP uygulaması, kullanıcıya gelen bir aramayı yanıtlamanın diğer aramanın kesilmesine neden olacağını belirten bir uyarı bildirimi göstererek bu şartları karşılar.
-
[C-SR] Üçüncü taraf uygulaması
PhoneAccount
'dakiEXTRA_LOG_SELF_MANAGED_CALLS
ekstra anahtarınıtrue
olarak ayarladığında, arama günlüğünde bir arama günlüğü girişini ve üçüncü taraf uygulamasının adını gösteren varsayılan çevirici uygulamasının önceden yüklenmesi önemle ÖNERİLİR. - [C-SR]
android.telecom
API'leri için ses kulaklıklarınınKEYCODE_MEDIA_PLAY_PAUSE
veKEYCODE_HEADSETHOOK
etkinliklerini aşağıdaki gibi ele almanız önemle ÖNERİLİR:- Devam eden bir arama sırasında önemli etkinliğe kısa basma algılanırsa
Connection.onDisconnect()
çağrısı yapılır. - Gelen bir arama sırasında önemli etkinliğe kısa basıldığı algılandığında
Connection.onAnswer()
çağrısı. - Gelen bir arama sırasında önemli etkinliğe uzun basıldığı algılanırsa
Connection.onReject()
çağrısı yapılır. CallAudioState
düğmesinin sessiz durumunu değiştirin.
- Devam eden bir arama sırasında önemli etkinliğe kısa basma algılanırsa
7.4.2. IEEE 802.11 (Kablosuz)
Cihaz uygulamaları:
- 802.11'in bir veya daha fazla biçimi için destek DAHİL OLMALIDIR.
Cihaz uygulamaları 802.11 desteği içeriyorsa ve işlevi üçüncü taraf bir uygulamaya sunuyorsa:
- [C-1-1] İlgili Android API'sini UYGULAMASI GEREKMEKTEDİR.
- [C-1-2] Donanım özelliği işaretini
android.hardware.wifi
bildirmelidir. - [C-1-3] Çoklu yayın API'sini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
- [C-1-4] Çoklu yayın DNS'yi (mDNS) desteklemeli ve aşağıdakiler dahil olmak üzere herhangi bir çalışma zamanında mDNS paketlerini (224.0.0.251) filtrelememelidir:
- Ekran etkin durumda olmasa bile.
- Android TV cihaz uygulamalarında, güç bekleme durumundayken bile.
- [C-1-5]
WifiManager.enableNetwork()
API yöntemi çağrısını, uygulama trafiği için varsayılan olarak kullanılan vegetActiveNetwork
veregisterDefaultNetworkCallback
gibiConnectivityManager
API yöntemleri tarafından döndürülen etkinNetwork
'ı değiştirmek için yeterli bir gösterge olarak DEĞİLDİR. Diğer bir deyişle, yalnızca kablosuz ağın internet erişimi sağladığını başarıyla doğrularsa diğer ağ sağlayıcılar (ör. mobil veri) tarafından sağlanan internet erişimini devre dışı bırakabilir. - [C-1-6]
ConnectivityManager.reportNetworkConnectivity()
API yöntemi çağrıldığındaNetwork
'daki internet erişimini yeniden değerlendirmeniz ve değerlendirme sonucunda mevcutNetwork
'ın artık internet erişimi sağlamadığı belirlendiğinde internet erişimi sağlayan başka bir ağa (ör. mobil veri) geçmeniz önemle ÖNERİLİR. - [C-SR] STA bağlantısı kapalıyken her taramanın başında bir kez, kaynak MAC adresini ve keşif isteği çerçevelerinin sıra numarasını rastgele ayarlamanızı önemle ÖNERİRİZ.
- Bir taramadan oluşan her prob isteği çerçevesi grubu, tek bir tutarlı MAC adresi kullanmalıdır (MAC adresi, taramanın ortasında rastgele hale GETİRİLMEMELİDİR).
- Prob isteği sıra numarası, bir taramada prob istekleri arasında normal şekilde (sıralı olarak) iterasyon yapmalıdır.
- Keşif isteği sıra numarası, bir taramanın son keşif isteği ile bir sonraki taramanın ilk keşif isteği arasında rastgele ayarlanmalıdır.
- [C-SR] STA bağlantısı kesildiğinde, yalnızca aşağıdaki öğelerin keşif isteği çerçevelerinde kullanılması KESİNLİKLE ÖNERİLİR:
- SSID Parametre Grubu (0)
- DS Parametre Grubu (3)
Cihaz uygulamaları, IEEE 802.11 standardında tanımlandığı şekilde kablosuz güç tasarrufu modu desteği içeriyorsa:
- [C-3-1] Bir uygulama
WifiManager.createWifiLock()
veWifiManager.WifiLock.acquire()
API'leri aracılığıylaWIFI_MODE_FULL_HIGH_PERF
kilidi veyaWIFI_MODE_FULL_LOW_LATENCY
kilidini edindiğinde ve kilit etkin olduğunda kablosuz güç tasarrufu modunu KAPATMASI GEREKİR. - [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üş gecikmesi, kablosuz yüksek performans kilidi (WIFI_MODE_FULL_HIGH_PERF
) modundaki gecikmeden DAHA KISA OLMALIDIR. - [C-SR] Düşük Gecikmeli Kilit (
WIFI_MODE_FULL_LOW_LATENCY
) edinildiğinde ve etkinleştiğinde kablosuz ağ gidiş dönüş gecikmesini en aza indirmek için ÇOK ÖNEMLE TAVSİYE EDİLİR.
Cihaz uygulamaları kablosuz bağlantıyı destekliyorsa ve konum taraması için kablosuz bağlantıyı kullanıyorsa:
- [C-2-1]
WifiManager.isScanAlwaysAvailable
API yöntemi aracılığıyla okunan değeri etkinleştirmek/devre dışı bırakmak için kullanıcıya bir kolaylık sunulmalıdır.
7.4.2.1. Kablosuz Doğrudan Bağlantı
Cihaz uygulamaları:
- Wi-Fi Direct (eşler arası kablosuz bağlantı) desteği DAHİL OLMALIDIR.
Cihaz uygulamaları Wi-Fi Direct desteği içeriyorsa:
- [C-1-1] İlgili Android API'sini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
- [C-1-2]
android.hardware.wifi.direct
donanım özelliğini bildirmelidir. - [C-1-3] Normal kablosuz bağlantıyı desteklemelidir.
- [C-1-4] Kablosuz ve kablosuz doğrudan işlemleri eşzamanlı olarak DESTEKLEMELİDİR.
7.4.2.2. Kablosuz Tünel Doğrudan Bağlantısı Kurulumu
Cihaz uygulamaları:
- Android SDK Dokümanları'nda açıklandığı gibi Wi-Fi Tünellenmiş Doğrudan Bağlantı Kurulumu (TDLS) desteği İÇERMELİDİR.
Cihaz uygulamaları TDLS desteği içeriyorsa ve TDLS, WiFiManager API tarafından etkinleştirildiyse:
- [C-1-1]
WifiManager.isTdlsSupported
üzerinden TDLS desteğini BEYAN ETMESİ GEREKİR. - TDLS yalnızca mümkün olduğunda VE faydalı olduğunda kullanılmalıdır.
- Performansı kablosuz erişim noktası üzerinden gitmekten daha kötü olabilecek durumlarda TDLS'yi KULLANMAMALI ve bazı sezgisel yöntemlere sahip OLMALIDIR.
7.4.2.3. Wi-Fi Aware
Cihaz uygulamaları:
- Wi-Fi Aware desteğini İÇERMELİDİR.
Cihaz uygulamaları, kablosuz ağ farkındalığı 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 UYGULAMALIDIR. - [C-1-2]
android.hardware.wifi.aware
özellik bayrağını İLANI GEREKTİRİR. - [C-1-3] Kablosuz bağlantı ve kablosuz bağlantı bilinir işlemlerini eşzamanlı olarak DESTEKLEMELİDİR.
- [C-1-4] Bir Aware menzil belirleme işlemi devam etmediği veya Aware veri yolu etkin olmadığı sürece (veri yolu etkin olduğu sürece rastgeleleştirme beklenmez) Wi-Fi Aware yönetim arayüzü adresini 30 dakikadan uzun olmayan aralıklarla ve Wi-Fi Aware etkinleştirildiğinde rastgele oluşturmalıdır.
Cihaz uygulamaları, 7.4.2.5 numaralı bölümde açıklandığı şekilde kablosuz bağlantı bilinirliği ve kablosuz bağlantı konumu desteği içeriyorsa ve bu işlevleri üçüncü taraf uygulamalarına sunuyorsa:
- [C-2-1] Şu konum bilinir keşif API'lerini UYGULAMALIDIR: setRangingEnabled, setMinDistanceMm, setMaxDistanceMm ve onServiceDiscoveredWithinRange.
7.4.2.4. Kablosuz Passpoint
Cihaz uygulamaları 802.11 (kablosuz) desteği içeriyorsa:
- Kablosuz Passpoint desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Passpoint desteği içeriyorsa:
- [C-1-2] Passpoint ile ilgili
WifiManager
API'lerini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR. - [C-1-3] Özellikle Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi ağ bulma ve seçimle ilgili IEEE 802.11u standardını DESTEKLEMELİDİR.
Aksine, cihaz uygulamaları Wi-Fi Passpoint desteği içermiyorsa:
- [C-2-1] Passpoint ile ilgili
WifiManager
API'lerinin uygulanmasıUnsupportedOperationException
oluşturmalıdır.
7.4.2.5. Kablosuz konumu (Kablosuz gidiş dönüş süresi - RTT)
Cihaz uygulamaları:
- Kablosuz Ağ Konumu desteği İÇERMELİDİR.
Cihaz uygulamaları kablosuz ağ konumu 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 UYGULAMALIDIR. - [C-1-2]
android.hardware.wifi.rtt
özellik bayrağını İLANI GEREKTİRİR. - [C-1-3] RTT'nin yürütüldüğü kablosuz arayüz bir erişim noktasıyla ilişkili değilken yürütülen her RTT patlaması için kaynak MAC adresini rastgele hale GETİRMELİDİR.
7.4.2.6. Kablosuz Ağda Soluk Kalma Aktarımı
Cihaz uygulamaları:
- Kablosuz ağda keepalive aktarımı için destek DAHİL OLMALIDIR.
Cihaz uygulamaları, kablosuz bağlantıda tutma özelliğinin devre dışı bırakılması için destek sağlıyorsa ve bu işlevi üçüncü taraf uygulamalarına sunuyorsa:
-
[C-1-1] SocketKeepAlive API'sini DESTEKLEMELİDİR.
-
[C-1-2] Kablosuz ağ üzerinden en az üç eşzamanlı keepalive yuvasını ve hücresel ağ üzerinden en az bir keepalive yuvasını DESTEKLEMELİDİR.
Cihaz uygulamalarında kablosuz bağlantıda keepalive aktarımı desteği yoksa:
- [C-2-1]
ERROR_UNSUPPORTED
döndürmelidir.
7.4.2.7. Wi-Fi Easy Connect (Cihaz Temel Hazırlama Protokolü)
Cihaz uygulamaları:
- Kablosuz Kolay Bağlantı (DPP) desteği İÇERMELİDİR.
Cihaz uygulamaları, kablosuz kolay bağlantı desteği içeriyorsa ve bu işlevi üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1] WifiManager#isEasyConnectSupported() yönteminin
true
değerini döndürmesi GEREKİR.
7.4.3. Bluetooth
Cihaz uygulamaları Bluetooth ses profilini destekliyorsa:
- Gelişmiş Ses Codec'lerini ve Bluetooth Ses Codec'lerini (ör. LDAC) DESTEKLEMELİDİR.
Cihaz uygulamaları HFP, A2DP ve AVRCP'yi destekliyorsa:
- En az 5 bağlı cihazı desteklemelidir.
Cihaz uygulamaları android.hardware.vr.high_performance
özelliğini beyan ederse:
- [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzatma özelliğini DESTEKLEMELİDİR.
Android, Bluetooth ve Bluetooth Düşük Enerji desteği içerir.
Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:
- [C-2-1] İlgili platform özelliklerini (sırasıyla
android.hardware.bluetooth
veandroid.hardware.bluetooth_le
) beyan ETMEK VE platform API'lerini uygulamak ZORUNLUDUR. - Cihaz için uygun olan A2DP, AVRCP, OBEX, HFP gibi ilgili Bluetooth profillerini UYGULAMALIDIR.
Cihaz uygulamaları Bluetooth Düşük Enerji (BDE) desteği içeriyorsa:
- [C-3-1]
android.hardware.bluetooth_le
donanım özelliğini İLKLEŞTİRMELİDİR. - [C-3-2] GATT (genel özellik profili) tabanlı Bluetooth API'lerini SDK dokümanlarında ve android.bluetooth'ta açıklandığı şekilde etkinleştirmeniz GEREKİR.
- [C-3-3] ScanFilter API sınıflarının filtreleme mantığının uygulanıp uygulanmadığını belirtmek için
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ğeri ORTAYA KOYMALIDIR. - [C-3-5] Cihaz tarama veya reklam için BLE'yi etkin bir şekilde kullanırken kullanıcı gizliliğini korumak amacıyla 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulamalı ve zaman aşımı olduğunda adresi döndürmelidir. Zamanlama saldırılarını önlemek için zaman aşımı aralıkları da 5 ile 15 dakika arasında rastgele ayarlanmalıdır.
- ScanFilter API'yi uygularken filtreleme mantığının Bluetooth yonga setine aktarılmasını DESTEKLEMELİDİR.
- Toplu taramanın Bluetooth yonga setine aktarılmasını desteklemelidir.
- En az 4 yuva içeren çoklu reklamı DESTEKLEMELİDİR.
Cihaz uygulamaları Bluetooth LE'yi destekliyorsa ve konum taraması için Bluetooth LE kullanıyorsa:
- [C-4-1] Sistem API'si
BluetoothAdapter.isBleScanAlwaysAvailable()
üzerinden okunan değeri etkinleştirmek/devre dışı bırakmak için kullanıcıya bir imkân sunulmalıdır.
Cihaz uygulamaları, Bluetooth LE'yi Kullanarak İşitme Cihazı Ses Desteği bölümünde 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
döndürülmelidir.
7.4.4. Yakın Alan İletişimi
Cihaz uygulamaları:
- Near Field Communication (NFC) için bir alıcı/verici ve ilgili donanım İÇERMELİDİR.
- [C-0-1] NFC desteği içermese veya sınıflar protokolden bağımsız bir veri temsili biçimi temsil ettiği için
android.hardware.nfc
özelliğini beyan etmese bileandroid.nfc.NdefMessage
veandroid.nfc.NdefRecord
API'lerini UYGULAMALIDIR.
Cihaz uygulamaları NFC donanımı içeriyorsa ve bu donanımı üçüncü taraf uygulamalarına sunmayı planlıyorsa:
- [C-1-1]
android.hardware.nfc
özelliğiniandroid.content.pm.PackageManager.hasSystemFeature()
yönteminden raporlamalıdır. - Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarını okuyup yazabilmelidir:
- [C-1-2] Aşağıdaki NFC standartları aracılığıyla NFC Forum okuyucu/yazar (NFC Forum teknik spesifikasyonu 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 Forumu Etiket Türleri 1, 2, 3, 4, 5 (NFC Forumu tarafından tanımlanmıştır)
-
[SR] Aşağıdaki NFC standartları aracılığıyla ham verilerin yanı sıra NDEF mesajlarını okuyup yazabilmeniz KESİNLİKLE ÖNERİLİR. NFC standartlarının "ŞİDDETLE ÖNERİLİR" olarak belirtilmesine rağmen, gelecekteki bir sürümün Uyumluluk Tanımı'nda bu standartların "ZORUNLU" olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları şimdiden karşılamaları önemle tavsiye edilir.
-
[C-1-13] NFC keşif modundayken desteklenen tüm teknolojiler için anket YAPMALIDIR.
- Cihaz açıkken ekran etkin ve kilit ekranı kilidi açıkken NFC keşif modunda OLMALIDIR.
- Thinfilm NFC Barkod ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.
Yukarıda belirtilen JIS, ISO ve NFC Forumu spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.
Android, NFC ana kart emülasyonu (HCE) modunu destekler.
Cihaz uygulamaları, HCE (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 bildirmelidir. - [C-2-2] Android SDK'sında tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.
Cihaz uygulamaları, NfcF için HCE'yi destekleyen bir NFC denetleyici yonga seti içeriyorsa ve bu özelliği üçüncü taraf uygulamaları için uyguluyorsa:
- [C-3-1]
android.hardware.nfc.hcef
özellik sabitini ZORUNLUDIR. - [C-3-2] Android SDK'da tanımlandığı şekilde NfcF Kart Emülasyonu API'lerini UYGULAMALIDIR.
Cihaz uygulamaları bu bölümde açıklanan genel NFC desteğini içeriyorsa ve okuyucu/yazar rolünde MIFARE teknolojilerini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:
- [C-4-1] İlgili Android API'lerini Android SDK'sında belirtildiği şekilde UYGULAMALIDIR.
- [C-4-2]
android.content.pm.PackageManager.hasSystemFeature
() yöntemindencom.nxp.mifare
özelliğini bildirmelidir. Bunun standart bir Android özelliği olmadığını ve bu nedenleandroid.content.pm.PackageManager
sınıfında sabit olarak görünmediğini unutmayın.
7.4.5. Ağ protokolleri ve API'leri
7.4.5.1. Minimum Ağ İşlevi
Cihaz uygulamaları:
- [C-0-1] Bir veya daha fazla veri ağı biçimi için destek ZORUNLUDUR. Daha açık belirtmek gerekirse, cihaz uygulamalarında 200 Kb/sn veya daha yüksek hızda en az bir veri standardı desteği BULUNMASI GEREKİR. Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet ve Bluetooth PAN verilebilir.
- Birincil veri bağlantısı fiziksel bir ağ standardı (ör. Ethernet) olduğunda 802.11 (Kablosuz ağ) gibi en az bir ortak kablosuz veri standardı desteği de DAHİL OLMALIDIR.
- Birden fazla veri bağlantısı biçimi UYGULAYABİLİR.
7.4.5.2. IPv6
Cihaz uygulamaları:
- [C-0-2] Bir IPv6 ağ yığınını İÇERMELİ ve
java.net.Socket
vejava.net.URLConnection
gibi yönetilen API'lerin yanı sıraAF_INET6
soketleri gibi yerel API'leri kullanarak IPv6 iletişimini desteklemelidir. - [C-0-3] IPv6 varsayılan olarak etkinleştirilmelidir.
- IPv6 iletişiminin IPv4 kadar güvenilir olmasını SAĞLAMALIDIR. Örneğin:
- [C-0-4] Uyku modunda IPv6 bağlantısını ZORUNLU KULLANINIZ.
- [C-0-5] Hız sınırlaması, cihazın en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu herhangi bir ağda IPv6 bağlantısını kaybetmesine NEDEN OLMAYACAK.
- [C-0-6] Üçüncü taraf uygulamalarına, IPv6 ağına bağlıyken cihazda yerel olarak herhangi bir adres veya bağlantı noktası çevirisi yapılmadan ağa doğrudan IPv6 bağlantısı sağlamalıdır. Hem
Socket#getLocalAddress
veyaSocket#getLocalPort
gibi yönetilen API'ler hem degetsockname()
veyaIPV6_PKTINFO
gibi NDK API'leri, ağda paket göndermek ve almak için gerçekten kullanılan ve internet (web) sunucularına kaynak IP ve bağlantı noktası olarak görünen IP adresini ve bağlantı noktasını İYİCE İADE ETMELİDİR.
Gerekli IPv6 desteği düzeyi, aşağıdaki şartlarda gösterildiği gibi ağ türüne bağlıdır.
Cihaz uygulamaları kablosuz bağlantıyı destekliyorsa:
- [C-1-1] Kablosuz ağda çift yığın ve yalnızca IPv6 işlevini DESTEKLEMELİDİR.
Cihaz uygulamaları Ethernet'i destekliyorsa:
- [C-2-1] Ethernet'te çift yığın ve yalnızca IPv6 işlevini DESTEKLEMELİDİR.
Cihaz uygulamaları hücresel veriyi destekliyorsa:
- [C-3-1] Hücresel ağda IPv6 işlevini (yalnızca IPv6 ve muhtemelen çift yığın) desteklemelidir.
Cihaz uygulamaları birden fazla ağ türünü destekliyorsa (ör. (Kablosuz ağ ve hücresel veri) kullanırken:
- [C-4-1] Cihaz birden fazla ağ türüne aynı anda bağlıyken her ağda yukarıdaki koşulları aynı anda karşılamalıdır.
7.4.5.3. Giriş Portalları
Giriş portalı, internet erişimi elde etmek için oturum açılmasını gerektiren bir ağdır.
Cihaz uygulamaları android.webkit.Webview API
'in tam bir uygulamasını sağlıyorsa:
- [C-1-1] Sistem API'sine
ConnectivityManager#startCaptivePortalApp(Network, Bundle)
çağrıda bulunarakACTION_CAPTIVE_PORTAL_SIGN_IN
niyetini işleyen ve bu niyeti göndererek özel portal giriş sayfasını görüntüleyen bir özel portal uygulaması SAĞLAMALIDIR. - [C-1-2] Cihaz hücresel/mobil ağ, kablosuz ağ, Ethernet veya Bluetooth gibi herhangi bir ağ türüne bağlıyken giriş portallarını algılamalı ve giriş portalı uygulaması üzerinden giriş yapmayı desteklemelidir.
- [C-1-3] Cihaz, gizli DNS'nin katı modunu kullanacak şekilde yapılandırıldığında, açık metin DNS kullanarak özel portallara giriş yapmayı DESTEKLEMELİDİR.
- [C-1-4]
android.net.LinkProperties.getPrivateDnsServerName
için SDK dokümanları uyarınca veandroid.net.LinkProperties.isPrivateDnsActive
için, kapalı devre portalla açıkça iletişim kurmayan tüm ağ trafiğinde şifrelenmiş DNS KULLANILMALIDIR. - [C-1-5] Kullanıcı bir captive portala giriş yaparken uygulamaların kullandığı varsayılan ağın (
ConnectivityManager.getActiveNetwork
,ConnectivityManager.registerDefaultNetworkCallback
tarafından döndürülen ve java.net.Socket gibi Java ağ API'leri ve connect() gibi yerel API'ler tarafından varsayılan olarak kullanılan şekilde) varsa internet erişimi sağlayan diğer kullanılabilir ağlardan biri olduğundan EMİN OLMALIDIR.
7.4.6. Senkronizasyon Ayarları
Cihaz uygulamaları:
- [C-0-1]
getMasterSyncAutomatically()
yönteminin "true" değerini döndürmesi için varsayılan olarak ana otomatik senkronizasyon ayarının AÇIK olması GEREKİR.
7.4.7. Veri Tasarrufu
Cihaz uygulamaları ölçülen bağlantı içeriyorsa:
- [SR] Veri tasarrufu modunu sunmanı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ÜRMELİDİR - [C-2-2]
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED
yayını YAPILMAYACAK.
7.4.8. Güvenlik Unsurları
Cihaz uygulamaları, Open Mobile API özellikli güvenli öğeleri destekliyorsa ve bunları üçüncü taraf uygulamalarına sunarsa:
-
[C-1-1] Mevcut güvenli öğe okuyucularını
android.se.omapi.SEService.getReaders()
API aracılığıyla saymalıdır. -
[C-1-2] UICC tabanlı güvenli öğeler içeren cihaz için
android.hardware.se.omapi.uicc
, eSE tabanlı güvenli öğeler içeren cihaz içinandroid.hardware.se.omapi.ese
ve SD tabanlı güvenli öğeler içeren cihaz içinandroid.hardware.se.omapi.sd
aracılığıyla doğru özellik işaretlerini İLANI GEREKTİRİR.
7.5. Kameralar
Cihaz uygulamaları en az bir kamera içeriyorsa:
- [C-1-1]
android.hardware.camera.any
özellik bayrağını İLANI GEREKTİRİR. - [C-1-2] Temel önizleme ve fotoğraf çekme amacıyla kamera açıkken, uygulamanın cihazdaki en yüksek çözünürlüklü kamera sensörü tarafından üretilen resimlerin boyutuna eşit 3 RGBA_8888 bitmap'i aynı anda ayırması ZORUNLUDUR.
- [C-1-3] Alıcı uygulamada
ACCESS_FINE_LOCATION
bulunmadığında, alıcı uygulamaya gönderilmeden önce resim meta verilerindeki kullanıcı konumunun kaldırılmasından, önceden yüklenmiş varsayılan kamera uygulamasının istemlerini (MediaStore.ACTION_IMAGE_CAPTURE
,MediaStore.ACTION_IMAGE_CAPTURE_SECURE
veyaMediaStore.ACTION_VIDEO_CAPTURE
) işleyenin sorumlu olmasını SAĞLAMALIDIR.
7.5.1. Arka Kamera
Arka kamera, cihazın ekranın karşısındaki tarafında bulunan bir kameradır. Yani geleneksel bir kamera gibi cihazın uzak tarafındaki sahneleri görüntüler.
Cihaz uygulamaları:
- Arka kamera içermelidir.
Cihaz uygulamalarında en az bir arka kamera varsa:
- [C-1-1]
android.hardware.camera
veandroid.hardware.camera.any
özellik işaretlerini bildirmelidir. - [C-1-2] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
- Kamera sürücüsünde donanım otomatik odaklama veya yazılım otomatik odaklama uygulanmış OLMALIDIR (uygulama yazılımı için şeffaf).
- Sabit odaklı veya EDOF (geniş alan derinliği) donanımına sahip OLABİLİR.
- FLAŞ içerebilir.
Kamerada flaş varsa:
- [C-2-1] Uygulama,
Camera.Parameters
nesnesininFLASH_MODE_AUTO
veyaFLASH_MODE_ON
özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece, birandroid.hardware.Camera.PreviewCallback
örneği bir kamera önizleme yüzeyine kaydedilmişken flaş yanMAMALIDIR. Bu kısıtlamanın cihazın yerleşik sistem kamera uygulaması için değil, yalnızcaCamera.PreviewCallback
kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Kamera
Ön kamera, cihazın ekranla aynı tarafında bulunan bir kameradır. Yani genellikle görüntülü konferans ve benzeri uygulamalarda kullanıcının görüntüsünü almak için kullanılan bir kameradır.
Cihaz uygulamaları:
- Ön kamera içerebilir.
Cihaz uygulamalarında en az bir ön kamera varsa:
- [C-1-1]
android.hardware.camera.any
veandroid.hardware.camera.front
özellik işaretlerini bildirmelidir. - [C-1-2] En az VGA (640x480 piksel) çözünürlüğe sahip OLMALIDIR.
- [C-1-3] Camera API için varsayılan olarak ön kamera KULLANMAMALI ve API'yi, cihazdaki tek kamera olsa bile ön kamerayı varsayılan arka kamera olarak ele alacak şekilde yapılandırmamalıdır.
- [C-1-4] Geçerli uygulama,
android.hardware.Camera.setDisplayOrientation()
yöntemine yapılan bir çağrı aracılığıyla kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesi, uygulama tarafından belirtilen yönde yatay olarak yansıtılmalıdır. Buna karşılık, geçerli uygulamaandroid.hardware.Camera.setDisplayOrientation()
yöntemine çağrı göndererek kamera ekranının döndürülmesini açıkça istemediğinde önizleme cihazın varsayılan yatay ekseni boyunca YANSITILMALIDIR. - [C-1-5] Uygulama geri çağırmalarına döndürülen veya medya depolama alanına bağlanan nihai çekilen hareketsiz resim veya video akışlarını yansıtmamalıdır.
- [C-1-6] Son görüntüleme tarafından gösterilen görüntüyü, kamera önizleme resim akışıyla aynı şekilde yansıtmalıdır.
- 7.5.1 numaralı bölümde açıklandığı gibi, arkaya bakan kameralarda kullanılabilen özellikler (ör. otomatik odaklama, flaş vb.) DAHİL OLABİLİR.
Cihaz uygulamaları kullanıcı tarafından döndürülebiliyorsa (ör. bir ivmeölçer aracılığıyla otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak):
- [C-2-1] Kamera önizlemesi, cihazın mevcut yönüne göre yatay olarak aynalanmalıdır.
7.5.3. Harici Kamera
Cihaz uygulamaları:
- Her zaman bağlı olması gerekmeyen harici bir kamera desteği OLABİLİR.
Cihaz uygulamaları harici kamera desteği içeriyorsa:
- [C-1-1] Platform özellik işareti
android.hardware.camera.external
veandroid.hardware camera.any
İSTENİR. - [C-1-2] Harici kamera USB ana bilgisayar 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 harici kamera cihazı bağlıyken kamera CTS testlerini ZORUNLU ŞEKİLDE geçmelidir. Kamera CTS testinin ayrıntılarını 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ırma biçimlerini DESTEKLEMELİDİR.
- Birden fazla kamerayı DESTEKLEYEBİLİR.
- Kamera tabanlı video kodlamayı DESTEKLEYEBİLİR.
Kamera tabanlı video kodlaması destekleniyorsa:
- [C-2-1] Cihaz uygulaması, eşzamanlı olarak kodlanmamış / MJPEG akışına (QVGA veya daha yüksek çözünürlük) erişebilmelidir.
7.5.4. Kamera API'si Davranışı
Android, kameraya erişmek için iki API paketi içerir. Daha yeni android.hardware.camera2 API, verimli sıfır kopyalama art arda çekim/akış akışları ve pozlama, kazanç, beyaz denge kazançları, renk dönüştürme, gürültü giderme, keskinleştirme ve daha fazlası gibi kare başına kamera kontrolleri de dahil olmak üzere uygulamaya daha düşük düzeyde kamera kontrolü sunar.
Eski API paketi android.hardware.Camera
, Android 5.0'de desteği sonlandırılmış olarak işaretlenmiştir ancak uygulamaların kullanabilmesi için hâlâ kullanılabilir durumdadır. Android cihaz uygulamalarında, bu bölümde ve Android SDK'sında açıklandığı şekilde API'nin desteğinin devam etmesini sağlamanız GEREKİR.
Desteği sonlandırılan android.hardware.Camera sınıfı ile daha yeni android.hardware.camera2 paketi arasında ortak olan tüm özelliklerin her iki API'de de eşdeğer performansa ve kaliteye sahip OLMASI GEREKİR. Örneğin, eşdeğer ayarlarda otomatik odaklama hızı ve doğruluğu aynı, çekilen resimlerin kalitesi de aynı olmalıdır. İki API'nin farklı anlamlarına bağlı olan özelliklerin eşleşen hıza veya kaliteye sahip olması gerekmez ancak mümkün olduğunca yakın bir şekilde eşleşmelidir.
Cihaz uygulamaları, mevcut tüm kameralar için kamerayla ilgili API'lerde aşağıdaki davranışları UYGULAMALIDIR. Cihaz uygulamaları:
- [C-0-1] Bir uygulama
android.hardware.Camera.Parameters.setPreviewFormat(int)
'u hiç çağırmamışsa uygulama geri çağırmalarına sağlanan önizleme verileri içinandroid.hardware.PixelFormat.YCbCr_420_SP
kullanılmalıdır. - [C-0-2] Ayrıca, bir uygulama bir
android.hardware.Camera.PreviewCallback
örneği kaydettiğinde ve sistemonPreviewFrame()
yöntemini çağrdığında ve önizleme biçimi YCbCr_420_SP olduğunda byte[] içindeki verileronPreviewFrame()
'a aktarılırken NV21 kodlama biçiminde OLMALIDIR. Yani NV21 varsayılan OLMALIDIR. - [C-0-3]
android.hardware.Camera
için hem ön hem de arka kameraların kamera önizlemelerinde YV12 biçimini (android.graphics.ImageFormat.YV12
sabitiyle belirtilir) DESTEKLEMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüşümü DESTEKLEMELİDİR.) - [C-0-4]
android.request.availableCapabilities
'teREQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE
özelliğinin reklamını yapanandroid.hardware.camera2
cihazlar içinandroid.media.ImageReader
API üzerindenandroid.hardware.ImageFormat.YUV_420_888
veandroid.hardware.ImageFormat.JPEG
biçimlerini çıkış olarak DESTEKLEMELİDİR. - [C-0-5] Cihazın donanım otomatik odaklama veya başka özellikler içerip içermediğine bakılmaksızın, Android SDK dokümanlarında yer alan Kamera API'nin tamamını uygulamalıdır. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı tüm
android.hardware.Camera.AutoFocusCallback
örneklerini çağırmaya DEVAM ETMELİDİR (otomatik odaklama özelliği olmayan bir kamerayla alakalı olmasa bile). Bunun ön kameralar için geçerli olduğunu unutmayın. Örneğin, çoğu ön kamera otomatik odaklama özelliğini desteklemese bile API geri çağırmalarının açıklandığı şekilde "taklit" edilmesi 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ıdır ve bu parametre adlarını dikkate almalıdır. Buna karşılık, cihaz uygulamalarıandroid.hardware.Camera.Parameters
üzerinde sabit olarak belgelenenler dışındaandroid.hardware.Camera.setParameters()
yöntemine iletilen dize sabitlerini HİÇBİR ŞEKİLDE dikkate ALMAMALI veya tanımamalıdır. Yani cihaz uygulamaları, donanım izin veriyorsa tüm standart kamera parametrelerini DESTEKLEMELİ ve özel kamera parametresi 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ıCamera.SCENE_MODE_HDR
kamera parametresini desteklemelidir. - [C-0-7] Android SDK'sında açıklandığı şekilde
android.info.supportedHardwareLevel
mülküyle uygun destek düzeyini ve uygun çerçeve özellik işaretlerini bildirmelidir. - [C-0-8] Ayrıca
android.request.availableCapabilities
mülkü aracılığıylaandroid.hardware.camera2
kamera özelliklerini ve uygun özellik işaretlerini de beyan ETMELİDİR; Bağlı kamera cihazlarından herhangi biri özelliği destekliyorsa özellik işaretini tanımlamalıdır. - [C-0-9] Kamera tarafından yeni bir resim çekildiğinde ve resmin girişi medya mağazasına eklendiğinde
Camera.ACTION_NEW_PICTURE
intent'ini YAYITLAMALIDIR. - [C-0-10] Kamera tarafından yeni bir video kaydedildiğinde ve resmin girişi medya mağazasına eklendiğinde
Camera.ACTION_NEW_VIDEO
intent'ini YAYITLAMALIDIR. - [C-0-11] Desteği sonlandırılan
android.hardware.Camera
API üzerinden erişilebilen tüm kameralaraandroid.hardware.camera2
API üzerinden de erişilebilmelidir. - [C-0-12] Herhangi bir
android.hardware.camera2
veyaandroid.hardware.Camera
API'sinde yüz geometrisi, yüz cilt tonu veya yüz cildinin pürüzsüzleştirilmesi dahil ancak bunlarla sınırlı olmamak üzere yüz görünümünün DEĞİŞTİRİLMEDİĞİNDEN EMİN OLMALIDIR. - [C-SR] Aynı yöne bakan birden fazla RGB kamerası olan cihazlarda, fiziksel alt cihazlar olarak bu yöne bakan tüm RGB kameralardan oluşan
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
özelliğini 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]
android.hardware.camera2
API'sini kullanarak bu tür bir kamera API'si UYGULANMALIDIR. android.hardware.camera2
API'sine tedarikçi firma etiketleri ve/veya uzantıları sağlayabilir.
7.5.5. Kamera yönü
Cihaz uygulamalarında ön veya arka kamera varsa bu kameralar:
- [C-1-1] Kameranın uzun boyutu ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmelidir. Yani cihaz yatay yönde tutulduğunda kameralar YATAŞ YÖNÜNDE resim çekmeLİDİR. Bu, cihazın doğal yöneliminden bağımsız olarak geçerlidir. Yani hem yatay birincil cihazlar hem de dikey birincil cihazlar için 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 KULLANABİLECEKLERİ bir İndirme Yöneticisi İÇERMELİDİR ve en az 100 MB boyutunda tekil dosyaları varsayılan "önbelleğe alma" konumuna indirebilmelidir.
7.6.2. Uygulama Ortak Depolama Alanı
Cihaz uygulamaları:
- [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı ZORUNLUDUR. Bu depolama alanı genellikle "paylaşılan harici depolama alanı", "uygulama tarafından paylaşılan depolama alanı" veya "/sdcard" Linux yolu olarak da adlandırılır.
- [C-0-2] Depolama alanının dahili bir depolama bileşeninde mi yoksa çıkarılabilir bir depolama ortamında (ör. Secure Digital kart yuvası) mı uygulandığından bağımsız olarak, varsayılan olarak bağlı ortak depolama alanıyla yapılandırılmış OLMALIDIR.
- [C-0-3] Uygulamanın ortak depolama alanını doğrudan
sdcard
Linux yoluna bağlamalı veyasdcard
ile gerçek bağlama noktasına bir Linux sembolik bağlantısı eklemelidir. - [C-0-4] API düzeyi 29 veya üstünü hedefleyen tüm uygulamalarda varsayılan olarak kapsamlı depolama özelliği etkinleştirilmelidir. Bununla birlikte, aşağıdaki durum hariçtir:
- Uygulama, manifest dosyasında
android:requestLegacyExternalStorage="true"
isteğinde bulunduğunda.
- Uygulama, manifest dosyasında
- [C-0-5] Çağrıcı uygulama
ACCESS_MEDIA_LOCATION
iznine sahip olmadığı sürece, medya dosyalarınaMediaStore
üzerinden erişildiğinde bu dosyalarda depolanan GPS Exif etiketleri gibi konum meta verilerini çıkartmalıdır.
Cihaz uygulamaları aşağıdakilerden birini kullanarak yukarıdaki koşulları karşılayabilir:
- Kullanıcının erişebildiği çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası).
- Android Açık Kaynak Projesi'nde (AOSP) uygulandığı şekliyle dahili (çıkarılamaz) depolama alanının bir bölümü.
Cihaz uygulamaları yukarıdaki koşulları karşılamak için çıkarılabilir depolama alanı kullanıyorsa:
- [C-1-1] Yuvaya depolama ortamı takılı değilken kullanıcıyı uyaran bir pop-up veya kısa mesaj kullanıcı arayüzü UYGULANMALIDIR.
- [C-1-2] FAT biçimli bir depolama ortamı (ör. SD kart) İÇERMELİDİR veya satın alma sırasında kutuda ve diğer materyallerde depolama ortamının ayrı olarak satın alınması gerektiği belirtilmelidir.
Cihaz uygulamaları, yukarıdaki şartları karşılamak için çıkarılabilir olmayan depolama alanının bir kısmını kullanıyorsa:
- Dahili uygulama paylaşılan depolama alanının AOSP uygulamasını KULLANMALIDIR.
- Depolama alanını uygulamanın özel verileriyle paylaşabilir.
Cihaz uygulamalarında USB çevre birimi modu desteğine sahip bir USB bağlantı noktası varsa:
- [C-3-1] Uygulamanın ortak depolama alanındaki verilere ana bilgisayardan erişmek için bir mekanizma SAĞLANMALIDIR.
- Android'in medya tarayıcısı hizmeti ve
android.provider.MediaStore
aracılığıyla her iki depolama yolundaki içerikleri şeffaf bir şekilde GÖSTERMELİDİR. - USB yığın depolama alanı kullanabilir ancak bu koşulu karşılamak için Medya Aktarım Protokolü KULLANMALIDIR.
Cihaz uygulamalarında USB çevre birimi modu olan ve Medya Aktarımı Protokolü'nü destekleyen bir USB bağlantı noktası varsa:
- Referans Android MTP ana makinesi Android Dosya Aktarımı ile UYUMLU OLMALIDIR.
- 0x00 USB cihaz sınıfını raporlamalıdır.
- "MTP" USB arayüzü adını bildirmelidir.
7.6.3. Dahili Hale Getirilebilir Depolama Alanı
Cihazın, televizyonun aksine mobil olması bekleniyorsa cihaz uygulamaları şunlardır:
- [SR] Kabul edilebilir depolama alanının yanlışlıkla bağlantısının kesilmesi veri kaybına/bozulmasına neden olabileceğinden, kabul edilebilir depolama alanını uzun süreli olarak sabit bir konumda uygulamanız önemle ÖNERİLİR.
Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya başka bir koruyucu kılıf gibi uzun süreli sabit bir konumdaysa cihaz uygulamaları şu şekildedir:
- [SR] Dahili hale getirilebilir depolama alanı uygulanması önemle ÖNERİLİR.
7.7. USB
Cihaz uygulamalarında USB bağlantı noktası varsa:
- USB çevre birimi modunu 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ı, standart A tipi veya C tipi USB bağlantı noktası olan bir USB ana makinesine bağlanabilmelidir.
- [C-1-2] USB standart cihaz tanımlayıcısı içinde
android.os.Build.SERIAL
aracılığıylaiSerialNumber
değerinin doğru değerini bildirmelidir. - [C-1-3] Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını algılamalı ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri algılamalıdır.
- [SR] Bağlantı noktası mikro-B, mikro-AB veya Type-C USB form faktörünü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için BU ŞARTLARI KARŞILAMASI KESİNLİKLE ÖNERİLİR.
- [SR] Bağlantı noktası, cihazın alt kısmında (doğal yönü) yer ALMALIDIR veya cihaz alt tarafa bakacak şekilde yönlendirildiğinde ekranın doğru şekilde çizilmesi için tüm uygulamalarda (ana ekran dahil) yazılım ekranı döndürmeyi etkinleştirmelidir. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılamaları önemle ÖNERİLİR.
- [SR] USB Pil Şarjı spesifikasyonunun 1.2 revizyonunda belirtildiği gibi, HS bip sesi ve trafik sırasında 1,5 A akım çekme desteği UYGULANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılaması önemle ÖNERİLİR.
- [SR] Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya alıcı/kaynak rollerini değiştiren özel şarj yöntemlerinin desteklenmemesi önemle ÖNERİLİR. Aksi takdirde, standart USB Güç Aktarımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunları yaşanabilir. Bu, "ŞİDDETLE ÖNERİLİR" olarak belirtilse de gelecekteki Android sürümlerinde tüm C tipi cihazların standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemesi GEREKEBİLİR.
- [SR] Type-C USB ve USB ana makine modunu desteklediklerinde veri ve güç rolü değişimi için Güç Bağlantısı'nı desteklemeleri önemle ÖNERİLİR.
- Yüksek voltajlı şarj için güç aktarımı ve ekran çıkışı gibi alternatif modları desteklemelidir.
- Android Open Accessory (AOA) API'sini ve spesifikasyonunu Android SDK dokümanlarında belirtildiği gibi 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 EDİLMELİDİR. - [C-2-2] USB toplu depolama sınıfı, USB toplu depolama biriminin arayüz açıklaması
iInterface
dizeninin sonunda "android" dizesini İÇERMELİDİR.
7.7.2. USB ana makine modu
Cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-1-1] Android USB ana makine API'sini Android SDK'da belirtildiği şekilde UYGULAMALI ve
android.hardware.usb.host
donanım özelliği için destek BEYAN ETMELİDİR. - [C-1-2] Standart USB çevre birimlerini bağlamak için destek UYGULAMALIDIR. Diğer bir deyişle, aşağıdakilerden birini YAPMALIDIR:
- Cihaz üzerinde C tipi bağlantı noktası bulunmalıdır veya cihaz üzerinde özel bir bağlantı noktasını standart USB C tipi bağlantı noktasına uyarlayan kablolar (USB Type-C cihaz) gönderilmelidir.
- Cihaz üzerinde A tipi bir bağlantı noktası bulunmalıdır veya cihaz üzerinde özel bir bağlantı noktasını standart bir USB A tipi bağlantı noktasına uyarlayan kablolar gönderilmelidir.
- Cihaz üzerinde mikro AB bağlantı noktası olmalıdır. Bu bağlantı noktası, standart A tipi bağlantı noktasına uyarlanabilen bir kabloyla birlikte gönderilmelidir.
- [C-1-3] USB A tipi veya mikro-AB bağlantı noktalarını Type-C bağlantı noktasına (priz) dönüştüren bir adaptörle birlikte GÖNDERİLMEMELİDİR.
- [C-SR] Android SDK dokümanlarında belirtildiği gibi USB ses sınıfını uygulamanız önemle ÖNERİLİR.
- Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini desteklemelidir; USB Type-C konnektörler için USB Type-C Kablo ve Konnektör Spesifikasyonu 1.2 Sürümünün Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1, 5 A kaynak akımı reklamı yapmalı veya Micro-AB konnektörler için USB Pil Şarjı Spesifikasyonları 1.2 Sürümünde belirtildiği gibi Aşağı Akım Şarj Bağlantı Noktası(CDP) çıkış akımı aralığını kullanmalıdır.
- USB Type-C standartlarını uygulamalı ve desteklemelidir.
Cihaz uygulamaları, ana makine modunu ve USB ses sınıfını destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-2-1] USB HID sınıfını desteklemelidir.
- [C-2-2] USB HID Kullanım Tabloları ve Sesli Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının algılanması ve
KeyEvent
sabitleriyle eşlenmesi İÇİNDE OLMALIDIR:- 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ında ana makine modunu ve Depolama Aksesuarı Çerçevesi'ni (SAF) destekleyen bir USB bağlantı noktası varsa:
- [C-3-1] Uzaktan bağlı tüm MTP (Medya Aktarım Protokolü) cihazlarını TANIMALI ve içeriklerini
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
veACTION_CREATE_DOCUMENT
intent'leri aracılığıyla erişilebilir hâle GETİRMELİDİR. .
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 UYGULAMALIDIR.
- [SR] DisplayPort'u desteklemesi İYİCE ÖNERİLİR, USB Süper Hızlı Veri Hızlarını DESTEKLEMELİDİR ve veri ve güç rolü değişimi için Güç Aktarımı'nı desteklemesi İYİCE ÖNERİLİR.
- [SR] USB Type-C Kablo ve Konnektör Spesifikasyonu 1.2 Sürümünün A Eki'nde açıklandığı şekilde Ses Adaptörü Aksesuar Modu'nun DESTEKLENMEMESİ KESİNLİKLE ÖNERİLİR.
- Cihaz form faktörüne en uygun Try.* modelini UYGULAMALIDIR. Örneğin, el cihazı Try.SNK modelini UYGULAMALIDIR.
7.8. Ses
7.8.1. Mikrofon
Cihaz uygulamalarında mikrofon varsa:
- [C-1-1]
android.hardware.microphone
özellik sabitini ZORUNLUDIR. - [C-1-2] 5.4 numaralı bölümdeki ses kaydı koşullarını karşılamalıdır.
- [C-1-3] 5.6 numaralı bölümdeki ses gecikmesi koşullarını karşılamalıdır.
- [SR] 7.8.3 numaralı bölümde açıklandığı şekilde ultrason benzeri kayıt özelliğinin desteklenmesi önemle ÖNERİLİR.
Cihaz uygulamalarında mikrofon atlanmışsa:
- [C-2-1]
android.hardware.microphone
özellik sabitini HİÇBİR ZAMAN bildirmemelidir. - [C-2-2] Ses kaydı API'sini 7. bölüm uyarınca en azından işlemsiz olarak UYGULAMALIDIR.
7.8.2. Ses Çıkışı
Cihaz uygulamalarında, 4 iletkenli 3,5 mm ses jakı veya USB ses sınıfını kullanan USB ana makine modu bağlantı noktası gibi bir ses çıkışı çevre birimi için hoparlör ya da ses/multimedya çıkış bağlantı noktası varsa:
- [C-1-1]
android.hardware.audio.output
özellik sabitini ZORUNLUDIR. - [C-1-2] 5.5 numaralı bölümdeki ses çalma koşullarını karşılamalıdır.
- [C-1-3] 5.6 numaralı bölümdeki ses gecikmesi koşullarını karşılamalıdır.
- [SR] 7.8.3 numaralı bölümde açıklandığı şekilde ultrason yakın oynatma özelliğinin desteklenmesi önemle ÖNERİLİR.
Cihaz uygulamaları hoparlör veya ses çıkışı bağlantı noktası içermiyorsa:
- [C-2-1]
android.hardware.audio.output
özelliğini bildirmemelidir. - [C-2-2] Ses çıkışıyla ilgili API'ler en azından işlemsiz olarak uygulanmalıdır.
Bu bölümde "çı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ı" içerme olarak kabul edilmez.
7.8.2.1. Analog Ses Bağlantı Noktaları
Android ekosisteminde 3,5 mm ses fişi kullanan kulaklık ve diğer ses aksesuarlarıyla uyumlu olmak için cihaz uygulamalarında bir veya daha fazla analog ses bağlantı noktası varsa bu bağlantı noktaları:
- [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] Mikrofonlu stereo kulaklıklarda ve stereo kulaklıklarda ses oynatmayı DESTEKLEMELİDİR.
- [C-1-2] CTIA pin-out sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR.
- [C-1-3] Ses fişindeki mikrofon ile topraklama iletkenleri arasındaki aşağıdaki 3 eşdeğer empedans aralığı için anahtar kodlarının algılanması ve eşlenmesi desteklenmelidir:
-
70 ohm veya daha az:
KEYCODE_HEADSETHOOK
-
210-290 ohm:
KEYCODE_VOLUME_UP
-
360-680 ohm:
KEYCODE_VOLUME_DOWN
-
70 ohm veya daha az:
- [C-1-4]
ACTION_HEADSET_PLUG
, fiş takıldığında tetiklenmelidir ancak yalnızca fişteki tüm kontaklar, jaktaki ilgili segmentlerine değdikten sonra tetiklenmelidir. - [C-1-5] 32 ohm hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
- [C-1-6] Mikrofon önyargı voltajı 1,8 V ile 2,9 V arasında OLMALIDIR.
- [C-1-7] Ses fişindeki mikrofon ile topraklama iletkenleri arasındaki eşdeğer empedans aralığı için aşağıdaki anahtar kodunu algılayıp eşlemelidir:
-
110-180 ohm:
KEYCODE_VOICE_ASSIST
-
110-180 ohm:
- [C-SR] OMTP pin-out sırasına sahip ses fişlerinin desteklenmesi önemle ÖNERİLİR.
- [C-SR] Mikrofonlu stereo kulaklıklardan ses kaydını desteklemeniz önemle ÖNERİLİR.
Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa, mikrofon destekleniyorsa ve android.intent.action.HEADSET_PLUG
değerini mikrofon ek değeri 1 olarak ayarlayarak yayınlıyorsa:
- [C-2-1] Takılı ses aksesuarındaki mikrofonun algılanması desteklenmelidir.
7.8.2.2. Dijital Ses Bağlantı Noktaları
USB-C konnektörleri kullanan ve Android USB kulaklık spesifikasyonunda tanımlandığı şekilde Android ekosisteminde uygulanan (USB ses sınıfı) kulaklıklarla ve diğer ses aksesuarlarıyla uyumlu olmak için.
Cihaza özgü gereksinimler için 2.2.1 bölümüne bakın.
7.8.3. Ultrasona yakın
Ultrasonik sesin yakınındaki ses, 18,5 kHz ile 20 kHz arasındaki banttır.
Cihaz uygulamaları:
- AudioManager.getProperty API'si aracılığıyla ultrason yakın ses özelliğinin desteğini aşağıdaki şekilde doğru şekilde bildirmelidir:
PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND
"true" ise VOICE_RECOGNITION
ve UNPROCESSED
ses kaynakları aşağıdaki koşulları KESİNLİKLE karşılamalıdır:
- [C-1-1] Mikrofonun 18,5 kHz ila 20 kHz bandındaki ortalama güç yanıtı, 2 kHz'deki yanıttan en fazla 15 dB daha düşük OLMALIDIR.
- [C-1-2] -26 dBFS'de 19 kHz ton için mikrofonun 18,5 kHz ile 20 kHz arasındaki ağırlanmamış sinyal-gürültü oranı 50 dB'den düşük OLMAMALIDIR.
PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND
"true" ise:
- [C-2-1] Hoparlörün 18,5 kHz - 20 kHz arasındaki ortalama yanıtı, 2 kHz'deki yanıtın 40 dB altında OLMAYACAK.
7.8.4. Sinyal Bütünlüğü
Cihaz uygulamaları: * El cihazlarında hem giriş hem de çıkış akışları için aksaklık içermeyen bir ses sinyali yolu SAĞLAMALIDIR. Bu, yol başına bir dakikalık test sırasında sıfır aksaklık ölçülmesiyle 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 jakta ve/veya USB-C - 3, 5 mm adaptörle birlikte kullanılan bir ses geri gönderme dongle'ı gerekir. Tüm ses çıkış bağlantı noktaları TEST EDİLMELİDİR.
OboeTester şu anda AAudio yollarını desteklediğinden aşağıdaki kombinasyonlar AAudio kullanılarak aksaklıklar açısından TEST EDİLMELİDİR:
Performans Modu | Paylaşılıyor | Çıkış Örnek Hızı | Chan'larda | Out Chans |
---|---|---|---|---|
LOW_LATENCY | ÖZEL | BELİRTİLMEDİ | 1 | 2 |
LOW_LATENCY | ÖZEL | BELİRTİLMEDİ | 2 | 1 |
LOW_LATENCY | PAYLAŞILDI | BELİRTİLMEDİ | 1 | 2 |
LOW_LATENCY | 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 yayın, 2000 Hz sinüs için sinyal-gürültü oranı (SNR) ve toplam harmonik bozulma (THD) açısından aşağıdaki ölçütleri karşılamalıdır.
Transdüser | THD | SNR |
---|---|---|
Harici bir referans mikrofon kullanılarak ölçülen birincil yerleşik hoparlör | < %3,0 | >= 50 dB |
Harici bir referans hoparlör kullanılarak ölçülen birincil yerleşik mikrofon | < %3,0 | >= 50 dB |
Yerleşik analog 3,5 mm jaklar, döngüsel adaptör kullanılarak test edilmiştir | <%1 | >= 60 dB |
Telefonla birlikte verilen USB adaptörleri, döngüsel adaptör kullanılarak test edilmiştir | < %1,0 | >= 60 dB |
7.9. Sanal Gerçeklik
Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "Sanal Gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamalarında bu API'ler ve davranışlar bu bölümde açıklandığı şekilde doğru şekilde uygulanmalıdır.
7.9.1. Sanal Gerçeklik Modu
Android, bildirimlerin stereoskopik olarak oluşturulmasını yöneten ve bir VR uygulaması kullanıcının odağındayken tek gözlü sistem kullanıcı arayüzü bileşenlerini devre dışı bırakan VR Modu desteği içerir.
7.9.2. Sanal Gerçeklik Modu - Yüksek Performans
Cihaz uygulamaları VR modunu destekliyorsa:
- [C-1-1] En az 2 fiziksel çekirdeğe sahip OLMALIDIR.
- [C-1-2]
android.hardware.vr.high_performance
özelliğini İLANI GEREKTİRİR. - [C-1-3] Sürekli performans modunu DESTEKLEMELİDİR.
- [C-1-4] OpenGL ES 3.2'nin desteklenmesi önemle ÖNERİLİR.
- [C-1-5]
android.hardware.vulkan.level
0 değerini desteklemelidir. android.hardware.vulkan.level
1 veya daha yüksek 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
uzantılarını UYGULAMALI ve uzantıları kullanılabilir EGL uzantıları listesinde göstermeli. - [C-1-8]
GL_EXT_multisampled_render_to_texture2
,GL_OVR_multiview
,GL_OVR_multiview2
,GL_EXT_protected_textures
özelliklerini UYGULAMALI ve uzantıları kullanılabilir GL uzantıları listesinde göstermeli. - [C-SR]
GL_EXT_external_buffer
,GL_EXT_EGL_image_array
,GL_OVR_multiview_multisampled_render_to_texture
özelliklerini uygulamanız ve uzantıları mevcut GL uzantıları listesinde göstermeniz önemle ÖNERİLİR. - [C-SR] Vulkan 1.1'i desteklemeniz önemle ÖNERİLİR.
- [C-SR]
VK_ANDROID_external_memory_android_hardware_buffer
,VK_GOOGLE_display_timing
,VK_KHR_shared_presentable_image
özelliklerini uygulamanız ve mevcut Vulkan uzantıları listesinde göstermeniz önemle ÖNERİLİR. - [C-SR]
flags
'nin hemVK_QUEUE_GRAPHICS_BIT
hem deVK_QUEUE_COMPUTE_BIT
içerdiği vequeueCount
'ın en az 2 olduğu en az bir Vulkan sıra ailesi göstermeniz önemle ÖNERİLİR. - [C-1-7] GPU ve ekran, paylaşılan ön arabelleğe erişimi senkronize edebilmelidir. Böylece, VR içeriğinin iki oluşturma bağlamıyla 60 fps'de dönüşümlü olarak oluşturulması, görünür yırtılma kusurları olmadan görüntülenebilir.
- [C-1-9] NDK'da açıklandığı gibi
AHardwareBuffer
işaretleriAHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER
,AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA
veAHARDWAREBUFFER_USAGE_PROTECTED_CONTENT
için destek UYGULANMALIDIR. - [C-1-10] En azından şu biçimler için
AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT
,AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE
,AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT
kullanım işaretlerinin herhangi bir kombinasyonuylaAHardwareBuffer
'ler için destek UYGULAMALI:AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM
,AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM
,AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM
,AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT
. - [C-SR] C-1-10'da belirtilen birden fazla katman, işaret ve biçim içeren
AHardwareBuffer
'lerin ayrılmasını desteklemek için ÇOK ÖNEMLE ÖNERİLİR. - [C-1-11] Ortalama 40 Mb/sn'ye sıkıştırılmış (30 fps-10 Mb/sn'de 4 adet 1920 x 1080 veya 60 fps-20 Mb/sn'de 2 adet 1920 x 1080'e eşdeğer) en az 3840 x 2160 çözünürlükte 30 fps H.264 kod çözme özelliği ZORUNLUDUR.
- [C-1-12] HEVC ve VP9'yi DESTEKLEMELİ, ortalama 10 Mb/sn. sıkıştırılmış 30 fps'de en az 1920 x 1080 çözme özelliğine SAHİP OLMALI ve 30 fps-20 Mb/sn'de 3840 x 2160 çözme özelliğine SAHİP OLMALIDIR (30 fps-5 Mb/sn'de 4 adet 1920 x 1080'e eşdeğer).
- [C-1-13]
HardwarePropertiesManager.getDeviceTemperatures
API'yi desteklemeli ve deri sıcaklığı için doğru değerler döndürmelidir. - [C-1-14] Yerleşik ekrana sahip OLMALIDIR ve çözünürlüğü en az 1.920 x 1.080 OLMALIDIR.
- [C-SR] En az 2560 x 1440 ekran çözünürlüğüne sahip olmanız önemle ÖNERİLİR.
- [C-1-15] Ekran, VR modundayken en az 60 Hz'de güncellenmelidir.
- [C-1-17] Ekran, 5 milisaniyeden az kalıcılığa sahip düşük kalıcılığa sahip bir modu DESTEKLEMELİDİR. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
- [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzatma bölümü 7.4.3 desteklenmelidir.
- [C-1-19] Aşağıdaki varsayılan sensör türlerinin tümü için Doğrudan Kanal Türü'nü desteklemeli ve doğru ş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ü desteklemeniz önemle ÖNERİLİR. - [C-1-21]
android.hardware.hifi_sensors
için jiroskop, ivme ölçer ve manyetometreyle ilgili gereksinimleri bölüm 7.3.9'da belirtildiği şekilde karşılamalıdır. - [C-SR]
android.hardware.sensor.hifi_sensors
özelliğinin desteklenmesi önemle ÖNERİLİR. - [C-1-22] Uçtan uca hareketten fotona gecikmesi 28 milisaniyeden yüksek OLMAMALIDIR.
- [C-SR] Uçtan uca hareketten fotona gecikmenin 20 milisaniyeden yüksek olmaması önemle ÖNERİLİR.
- [C-1-23] İlk kare oranına sahip OLMALIDIR. İlk kare oranı, siyahtan beyaza geçişten sonraki ilk karedeki piksellerin parlaklığı ile sabit durumdaki beyaz piksellerin parlaklığı arasındaki orandır ve en az %85 olmalıdır.
- [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 üstteki ön plan uygulamasına özel CPU çekirdeklerinin numaralarını döndürmek için
Process.getExclusiveCores
API'yi destekleyebilir.
Özel çekirdek destekleniyorsa çekirdek:
- [C-2-1] Uygulama tarafından kullanılan cihaz sürücüleri hariç olmak üzere başka kullanıcı alanı işlemlerinin çalışmasına izin VERMEMELİDİR ancak bazı çekirdek işlemlerinin gerektiğinde çalışmasına izin VEREBİLİR.
7.10. Dokunma teknolojisi
Cihaza özgü gereksinimler için 2.2.1 bölümüne bakın.
7.11. Medya Performansı Sınıfı
Cihaz uygulamasının medya performans sınıfı, android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
API'sinden elde edilebilir. Medya performansı sınıfı ile ilgili şartlar, R (30 sürümü) ile başlayan her Android sürümü için tanımlanır. 0 özel değeri, cihazın medya performansı sınıfında olmadığını gösterir.
Cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için sıfır olmayan bir değer döndürürse:
[C-1-1] En az
android.os.Build.VERSION_CODES.R
değerini döndürmelidir.[C-1-2] El cihazı uygulaması OLMALIDIR.
[C-1-3] 2.2.7 numaralı bölümde açıklanan "Medya Performansı Sınıfı" ile ilgili tüm koşulları karşılamalıdır.
Cihaza özgü gereksinimler için 2.2.7 numaralı bölüme bakın.
8. Performans ve Güç
Bazı minimum performans ve güç ölçütleri kullanıcı deneyimi açısından kritiktir ve geliştiricilerin uygulama geliştirirken kullanacağı temel varsayımları etkiler.
8.1. Kullanıcı Deneyimi Tutarlılığı
Uygulamalar ve oyunlar için tutarlı bir kare hızı ve yanıt süreleri sağlamak üzere belirli minimum şartlar karşılanıyorsa son kullanıcıya sorunsuz bir kullanıcı arayüzü sağlanabilir. Cihaz türlerine bağlı olarak cihaz uygulamalarında, 2. bölümde açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev geçişi için ölçülebilir koşullar OLABİLİR.
8.2. Dosya G/Ç Erişim Performansı
Uygulamanın özel veri depolama alanında (/data
bölümü) tutarlı bir dosya erişim performansı için ortak bir referans noktası sağlamak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak uygun bir beklenti belirlemelerine olanak tanır. Cihaz türlerine bağlı olarak cihaz uygulamalarında, aşağıdaki okuma ve yazma işlemleri için 2. bölümde açıklanan belirli şartlar OLABİLİR:
- Sıralı yazma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazılarak ölçülmüştür.
- Rastgele yazma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazılarak ölçülür.
- Sıralı okuma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosyanın okunmasıyla ölçülür.
- Arızi okuma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülür.
8.3. Güç Tasarrufu Modları
Cihaz uygulamalarında, AOSP'ye dahil olan ve cihaz güç yönetimini iyileştirmeye yönelik özellikler (ör. Uygulama Bekleme Grubu, Doze) yer alıyorsa veya Nadir Uygulama Bekleme Grubu'ndan daha katı kısıtlamalar uygulamayan özellikler genişletilmişse:
- [C-1-1] Uygulamada bekleme ve Doze güç tasarrufu modlarının tetiklenmesi, bakımı, uyanma algoritmaları ve genel sistem ayarlarının kullanımı için AOSP uygulamasından AYRILMAMALIDIR.
- [C-1-2] Uygulama bekleme için her gruptaki uygulamalarda işlerin, alarmların ve ağın sınırlanmasını yönetmek üzere genel ayarların kullanımıyla ilgili olarak AOSP uygulamasından AYRILMAMALIDIR.
- [C-1-3] Uygulamada bekleme için kullanılan uygulama bekleme kapları sayısı, AOSP uygulamasından farklı OLMAYACAK.
- [C-1-4] Güç Yönetimi bölümünde açıklandığı şekilde Uygulama Bekleme Havuzları ve Doze'yi UYGULAMALIDIR.
- [C-1-5] Cihaz güç tasarrufu modundayken
PowerManager.isPowerSaveMode()
içintrue
döndürülmelidir. - [C-SR] Pil tasarrufu özelliğini etkinleştirmek ve devre dışı bırakmak için kullanıcılara kolaylık sağlamak önemle ÖNERİLİR.
- [C-SR] Uygulama bekleme ve güç tasarrufu modlarından muaf tutulan tüm uygulamaların gösterilmesi için kullanıcılara kolaylık sağlamak KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları, AOSP'ye dahil olan güç yönetimi özelliklerini genişletiyorsa ve bu uzantı Nadir Uygulama Bekleme Grubu'ndan daha katı kısıtlamalar uyguluyorsa 3.5.1 numaralı bölüme bakın.
Android cihaz uygulamaları, güç tasarrufu modlarına ek olarak Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) tarafından tanımlanan 4 uyku güç durumunun herhangi birini veya tümünü UYGULAYABİLİR.
Cihaz uygulamaları, ACPI tarafından tanımlanan S4 güç durumlarını uygularsa:
- [C-1-1] Bu duruma yalnızca kullanıcı cihazı etkin olmayan duruma getirmek için açık bir işlem yaptıktan (ör. cihazın fiziksel bir parçası olan bir kapağı kapatarak veya bir aracı ya da televizyonu kapatarak) ve cihazı yeniden etkinleştirmeden (ör. kapağı açarak veya aracı ya da televizyonu tekrar açarak) önce girilmelidir.
Cihaz uygulamaları, ACPI tarafından tanımlandığı şekilde S3 güç durumlarını uygularsa:
-
[C-2-1] Yukarıdaki C-1-1 koşulunu karşılamalı VEYA yalnızca üçüncü taraf uygulamaları sistem kaynaklarına (ör. ekran, CPU) ihtiyaç duymadığında S3 durumuna girmelidir.
Buna karşılık, üçüncü taraf uygulamaları sistem kaynaklarına ihtiyaç duyduğunda bu SDK'da açıklandığı gibi S3 durumundan ÇIKMALIDIR.
Örneğin, üçüncü taraf uygulamaları
FLAG_KEEP_SCREEN_ON
aracılığıyla ekranın açık kalmasını veyaPARTIAL_WAKE_LOCK
aracılığıyla CPU'nun çalışmasını isterken, C-1-1'de açıklandığı gibi kullanıcı cihazı etkin olmayan bir duruma getirmek için açık bir işlem yapmadığı sürece cihaz S3 durumuna GİRMEMELİDİR. Buna karşılık, üçüncü taraf uygulamalarının JobScheduler aracılığıyla uyguladığı bir görevin tetiklendiği veya Firebase Cloud Messaging'in üçüncü taraf uygulamalarına gönderildiği bir zamanda, kullanıcı cihazı etkin olmayan bir duruma getirmediği sürece cihazın S3 durumundan çıkması GEREKİR. Bunlar kapsamlı örnekler değildir ve AOSP, bu durumdan uyandırmayı tetikleyen kapsamlı uyanma sinyalleri uygular.
8.4. Güç Tüketimi Muhasebesi
Güç tüketiminin daha doğru bir şekilde hesaplanması ve raporlanması, uygulama geliştiriciye uygulamanın güç kullanım şeklini optimize etmek için hem teşvikler hem de araçlar sağlar.
Cihaz uygulamaları:
- [SR] Her donanım bileşeninin mevcut tüketim değerini ve Android Open Source Project sitesinde belirtildiği gibi bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına güç profili sağlanmalıdır.
- [SR] Tüm güç tüketimi değerlerinin miliamper saat (mAh) cinsinden raporlanması önemle ÖNERİLİR.
- [SR] Her işlemin UID'si başına CPU güç tüketimini bildirmeniz önemle ÖNERİLİR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [SR] Bu güç kullanımını
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiriciye sunmanız önemle ÖNERİLİR. - Donanım bileşeninin güç kullanımını bir uygulamaya bağlayamıyorsanız donanım bileşeninin kendisine bağlanmalıdır.
8.5. Tutarlı Performans
Yüksek performanslı ve uzun süre çalışan uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırlamaları nedeniyle CPU'nun sınırlandırılması nedeniyle önemli ölçüde dalgalanabilir. Android, cihaz uygun olduğunda ön plandaki en üst uygulamanın bu tür dalgalanmaları gidermek için sistemin kaynakların tahsisini optimize etmesini isteyebilmesi amacıyla programatik arayüzler içerir.
Cihaz uygulamaları:
-
[C-0-1] Sürdürülebilir Performans Modu'nun desteğini
PowerManager.isSustainedPerformanceModeSupported()
API yöntemi aracılığıyla doğru şekilde bildirmelidir. -
Sürdürülebilir Performans Modu'nu DESTEKLEMELİDİR.
Cihaz uygulamaları, Sürdürülebilir Performans Modu'nu desteklediğini bildirirse:
- [C-1-1] Uygulama istediğinde, en üstteki ön plan uygulamasına en az 30 dakika boyunca tutarlı bir performans düzeyi SAĞLAMALIDIR.
- [C-1-2]
Window.setSustainedPerformanceMode()
API'sini ve ilgili diğer API'leri UYGUNLAMALIDIR.
Cihaz uygulamaları iki veya daha fazla CPU çekirdeği içeriyorsa:
- En üst ön plan uygulaması tarafından ayrılabilecek en az bir özel çekirdek SAĞLANMALIDIR.
Cihaz uygulamaları, en üstteki ön plan uygulaması için özel bir çekirdek ayırmayı destekliyorsa:
- [C-2-1] Üst ön plan uygulaması tarafından ayrılabilecek özel çekirdeklerin kimlik numaralarını
Process.getExclusiveCores()
API yöntemi aracılığıyla bildirmelidir. - [C-2-2] Uygulamanın özel çekirdeklerde çalışması için kullandığı cihaz sürücüleri dışındaki kullanıcı alanı işlemlerine izin VERMEMELİDİR ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına izin VEREBİLİR.
Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:
- [C-3-1]
Process.getExclusiveCores()
API yöntemi aracılığıyla boş bir liste DÖNDÜRMELİDİR.
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamaları:
-
[C-0-1] Android geliştirici dokümanlarında API'ler için Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli UYGULANMALIDIR.
-
[C-0-2] Üçüncü taraflardan/yetkililerden ek izinler/sertifikalar gerektirmeden kendi kendine imzalanan uygulamaların yüklenmesini DESTEKLEMELİDİR. Daha açık belirtmek gerekirse, uyumlu cihazlar aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını DESTEKLEMELİDİR.
9.1. İzinler
Cihaz uygulamaları:
-
[C-0-1] Android geliştirici belgelerinde tanımlandığı şekilde Android izin modelini DESTEKLEMELİDİR. Daha açık belirtmek gerekirse, SDK dokümanlarında açıklandığı şekilde tanımlanan her izni ZORUNLU KILINACAK. Hiçbir izin atlanmamalı, değiştirilmemeli veya yok sayılmamalıdır.
-
Yeni izin kimliği dizelerinin
android.\*
ad alanında olmaması koşuluyla ek izinler EKLEYEBİLİRİ. -
[C-0-2]
PROTECTION_FLAG_PRIVILEGED
protectionLevel
değerine sahip izinler YALNIZCA sistem resminin ayrıcalıklı yollarına önceden yüklenmiş uygulamalara ve her uygulama için açıkça izin verilenler listesinde yer alan izinlerin alt kümesine verilmelidir. AOSP uygulaması,etc/permissions/
yolundaki dosyalardan her uygulama için izin verilenler listesindeki izinleri okuyup dikkate alarak ve ayrıcalıklı yol olaraksystem/priv-app
yolunu kullanarak bu koşulu karşılar.
Tehlikeli koruma düzeyine sahip izinler çalışma zamanı izinleridir. targetSdkVersion
değeri 22'den büyük olan uygulamalar bunları çalışma zamanında ister.
Cihaz uygulamaları:
- [C-0-3] Kullanıcının istenen çalışma zamanı izinlerini verip vermeyeceğine karar vermesi için özel bir arayüz GÖSTERMELİDİR ve ayrıca kullanıcının çalışma zamanı izinlerini yönetmesi için bir arayüz sağlamalıdır.
- [C-0-4] Her iki kullanıcı arayüzünün de yalnızca bir uygulaması OLMALIDIR.
- [C-0-5] Aşağıdaki durumlar hariç olmak üzere önceden yüklenmiş uygulamalara çalışma zamanı izni VERMEMELİDİR:
- Uygulama, bu verileri kullanmadan önce kullanıcıdan izin alabilir.
- Çalışma zamanında istenen izinler, önceden yüklenmiş uygulamanın varsayılan işleyici olarak ayarlandığı bir intent kalıbıyla ilişkilendirilir.
- [C-0-6]
android.permission.RECOVER_KEYSTORE
iznini yalnızca uygun şekilde güvenli bir Kurtarma Aracı kaydeden sistem uygulamalarına VERMELİDİR. Düzgün bir şekilde korunan bir kurtarma aracısı, kilit ekranı bilgi faktörüne yönelik deneme yanılma saldırılarını önlemek için Google Cloud Key Vault Hizmeti'nde açıklanan korumaya eşdeğer veya daha güçlü korumaya sahip güvenli donanımla donatılmış, cihaz dışı bir uzak depolama alanıyla senkronize olan cihaz üzerinde bir yazılım aracısı olarak tanımlanır.
Cihaz uygulamaları:
-
[C-0-7] Bir uygulama, standart Android API'si veya özel mekanizma aracılığıyla konum veya fiziksel aktivite verilerini istediğinde Android konum izni özelliklerine UYGUN OLMALIDIR. 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 açık belirtmek gerekirse cihaz uygulamaları:
- [C-0-8] Bir uygulamanın konum veya fiziksel aktivite verilerine erişmesine izin vermek için kullanıcı izni ALMALARI GEREKİR.
- [C-0-9] Çalışma zamanında izin, YALNIZCA SDK'da açıklandığı şekilde yeterli izne sahip olan uygulamaya verilmelidir.
Örneğin,
TelephonyManager#getServiceState,
android.permission.ACCESS_FINE_LOCATION
gerektirir.
İzinler, davranışlarını değiştirerek kısıtlanmış olarak işaretlenebilir.
-
[C-0-10]
hardRestricted
işaretiyle işaretlenmiş izinler, aşağıdaki durumlar hariç olmak üzere bir uygulamaya VERİLMEMELİDİR:- Uygulama APK dosyası sistem bölümündedir.
- Kullanıcı, bir uygulamaya
hardRestricted
izinleriyle ilişkili bir rol atar. - Yükleyici,
hardRestricted
iznini bir uygulamaya verir. - Bir uygulamaya önceki bir Android sürümünde
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şim almalı ve tam erişim elde etmemelidir. SDK'da hersoftRestricted
izni (ör.READ_EXTERNAL_STORAGE
) için tam ve sınırlı erişim tanımlanır.
Cihaz uygulamaları, ACTION_MANAGE_OVERLAY_PERMISSION
intent'ini işleyen bir etkinlikle hangi uygulamaların diğer uygulamaların üzerine çizebileceğini seçmek için kullanıcılara bir kolaylık sağlıyorsa:
- [C-2-1] Başlatıcı uygulamadan veya sağladığı bilgilerden bağımsız olarak,
ACTION_MANAGE_OVERLAY_PERMISSION
intent'i için intent filtreleri olan tüm etkinliklerin aynı kullanıcı arayüzü ekranına sahip olmasını SAĞLAMALIDIR.
9.2. UID ve İşlem İzolasyon
Cihaz uygulamaları:
- [C-0-1] Her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alanı modelini DESTEKLEMELİDİR.
- [C-0-2] Güvenlik ve İzinler referansında tanımlandığı şekilde, uygulamaların düzgün bir ş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 izinleri
Cihaz uygulamaları:
- [C-0-1] Güvenlik ve İzinler referansında tanımlandığı şekilde Android dosya erişim izinleri modelini DESTEKLEMELİDİR.
9.4. Alternatif Yürütme Ortamları
Cihaz uygulamalarında, Dalvik Yürütülebilir Biçimi veya yerel koddan başka bir yazılım ya da teknoloji kullanarak uygulamaları çalıştıran çalışma ortamı olsa bile Android güvenlik ve izin modelinin tutarlılığı korunmalıdır. Başka bir deyişle:
-
[C-0-1] Alternatif çalışma ortamları Android uygulamaları OLMALIDIR ve 9. bölümde başka bir yerde açıklandığı gibi standart Android güvenlik modeline uymalıdır.
-
[C-0-2] Alternatif çalışma zamanlarına, çalışma zamanının
AndroidManifest.xml
dosyasında istenmeyen izinlerle korunan kaynaklara <uses-permission
> mekanizması aracılığıyla erişim İZİN VERİLMEMELİDİR. -
[C-0-3] Alternatif çalışma ortamları, uygulamaların sistem uygulamalarıyla kısıtlanmış Android izinleriyle korunan özellikleri kullanmasına İZİN VERMEMELİDİR.
-
[C-0-4] Alternatif çalışma ortamları Android korumalı alan modeline UYMALIDIR ve alternatif çalışma ortamı kullanan yüklü uygulamalar, cihazda yüklü başka bir uygulamanın korumalı alanını KULLANMAMALIDIR (ortak kullanıcı kimliği ve imzalama sertifikası gibi standart Android mekanizmaları hariç).
-
[C-0-5] Alternatif çalışma ortamları, diğer Android uygulamalarına karşılık gelen korumalı alanlarla başlatılmamalı, bu alanlara erişim izni vermemeli veya bu alanlara erişim izni almamalıdır.
-
[C-0-6] Alternatif çalışma zamanları, süper kullanıcının (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılmamalı, bu ayrıcalıklara sahip olmamalı ya da diğer uygulamalara bu ayrıcalıkları vermemelidir.
-
[C-0-7] Alternatif çalışma zamanlarının
.apk
dosyaları cihaz uygulamalarının sistem resmine dahil edildiğinde, cihaz uygulamalarında yer alan diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla İMZALANACAK. -
[C-0-8] Alternatif çalışma zamanları, uygulamaları yüklerken uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMAK ZORUNDADIR.
-
[C-0-9] Bir uygulamanın, karşılık gelen bir Android izninin bulunduğu bir cihaz kaynağını (ör. kamera, GPS vb.) kullanması gerektiğinde alternatif çalışma zamanı, kullanıcıyı uygulamanın bu kaynağa erişebileceği konusunda BİLGİLENDİRMELİDİR.
-
[C-0-10] Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmediğinde, çalışma zamanı ortamı, bu çalışma zamanını kullanan herhangi bir uygulamayı yüklerken çalışma zamanının sahip olduğu tüm izinleri LİSTELEMELİDİR.
-
Alternatif çalışma ortamları, uygulamaları
PackageManager
üzerinden ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir. -
Alternatif çalışma ortamları, alternatif çalışma ortamı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 ve tam kullanıcı izolasyonu desteği sunar.
- Birincil harici depolama alanı için çıkarılabilir medya kullanan cihaz uygulamaları çok kullanıcılı özelliği etkinleştirebilir ancak etkinleştirmemelidir.
Cihaz uygulamaları birden fazla kullanıcı içeriyorsa:
- [C-1-1] Çok kullanıcılı destek ile ilgili aşağıdaki şartları karşılamalıdır.
- [C-1-2] Her kullanıcı için, API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli UYGULAMALIDIR.
- [C-1-3] Her kullanıcı örneği için ayrı ve izole edilmiş paylaşılan uygulama depolama alanı (
/sdcard
olarak da bilinir) dizinleri OLMALIDIR. - [C-1-4] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolanmış olsa bile başka bir kullanıcıya ait dosyaları listelemediğinden, okumadığından veya bu dosyalara yazmadığından EMİN OLMALIDIR.
- [C-1-5] Çok kullanıcılı mod etkinleştirildiğinde, cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanıyorsa yalnızca sistem tarafından erişilebilen, çıkarılabilir olmayan bir medyada depolanan bir anahtar kullanarak SD kartın içeriğini şifrelemelidir. Bu durumda, ana bilgisayar PC'leri medya dosyalarını okuyamayacağından, ana bilgisayar PC'lerine mevcut kullanıcının verilerine erişim sağlamak için cihaz uygulamalarının MTP'ye veya benzer bir sisteme geçmesi gerekir.
9.6. Premium SMS Uyarısı
Android, kullanıcıları giden premium SMS mesajları hakkında uyarma desteği içerir. Premium SMS mesajları, operatöre kayıtlı bir hizmete gönderilen ve kullanıcıdan ücret alınabilecek kısa mesajlardır.
Cihaz uygulamaları android.hardware.telephony
için destek beyan ediyorsa:
- [C-1-1] Cihazdaki
/data/misc/sms/codes.xml
dosyasında tanımlanan normal ifadeyle tanımlanan numaralara SMS mesajı göndermeden önce kullanıcıları UYARMALIDIR. Android Açık Kaynak Projesi, bu koşulu karşılayan bir uygulama sağlar.
9.7. Güvenlik Özellikleri
Cihaz uygulamalarında, aşağıda açıklandığı şekilde hem çekirdek hem de platformdaki güvenlik özelliklerine uyulmalıdır.
Android Korumalı Alanı, Güvenlik Gelişmiş Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikleri içerir. Cihaz uygulamaları:
- [C-0-1] SELinux veya başka güvenlik özellikleri Android çerçevesinin altında uygulansa bile mevcut uygulamalarla uyumluluğu KORUMALIDIR.
- [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ü OLMAMALISIDIR ancak engellenmemiş bir güvenlik ihlali meydana geldiğinde ve bu ihlal başarılı bir şekilde istismar edildiğinde görünür bir kullanıcı arayüzü OLABİLİR.
- [C-0-3] SELinux'u veya Android çerçevesinin altında uygulanan diğer güvenlik özelliklerini kullanıcı veya uygulama geliştirici tarafından yapılandırılabilir hale GETİRMEMELİDİR.
- [C-0-4] Bir API (ör. Cihaz Yönetimi API'si) aracılığıyla başka bir uygulamayı etkileyebilecek bir uygulamanın, uyumluluğu bozan bir politika yapılandırmasına İZİN VERMEMELİDİR.
- [C-0-5] Android Açık Kaynak Projesi sitesinde açıklandığı gibi her işleme daha dar kapsamlı erişim izni verilebilmesi için medya çerçevesinin birden fazla işleme bölünmesi GEREKİR.
- [C-0-6] Çok iş parçacıklı programlardan yapılandırılabilir bir politika kullanılarak sistem çağrılarının filtrelenmesine olanak tanıyan bir çekirdek uygulama korumalı alan mekanizması UYGULANMALIDIR. Yukarı yönlü Android Açık Kaynak Projesi, source.android.com'un Çekirdek Yapılandırması bölümünde açıklandığı gibi, seccomp-BPF'yi threadgroup senkronizasyonu (TSYNC) ile etkinleştirerek bu koşulu karşılar.
Çekirdek bütünlüğü ve kendi kendini koruma özellikleri, Android güvenliğinin ayrılmaz bir parçasıdır. Cihaz uygulamaları:
- [C-0-7] Çekirdek yığın arabellek taşması koruma mekanizmaları UYGULANMALIDIR. 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ülemez ve yazılamaz, yazılabilir verilerin ise yürütülemez olduğu (ör.
CONFIG_DEBUG_RODATA
veyaCONFIG_STRICT_KERNEL_RWX
) katı çekirdek bellek korumaları UYGULANMALIDIR. - [C-0-9] API düzeyi 28 veya daha yüksek bir sürümle birlikte gönderilen cihazlarda kullanıcı alanı ile çekirdek alanı (ör.
CONFIG_HARDENED_USERCOPY
) arasındaki kopyalarda statik ve dinamik nesne boyutu sınırları kontrolü ZORUNLUDUR. - [C-0-10] API düzeyi 28 veya daha yüksek sürümlerle birlikte gönderilen cihazlarda çekirdek modunda (ör. donanım PXN veya
CONFIG_CPU_SW_DOMAIN_PAN
ya daCONFIG_ARM64_SW_TTBR0_PAN
aracılığıyla taklit edilen) çalışırken kullanıcı alanı belleğini UYGULAMAMALIDIR. - [C-0-11] API düzeyi 28 veya daha yüksek sürümlerle birlikte gönderilen cihazlarda, normal kullanıcı kopyası erişim API'leri (ör. donanım PAN'ı veya
CONFIG_CPU_SW_DOMAIN_PAN
ya daCONFIG_ARM64_SW_TTBR0_PAN
aracılığıyla taklit edilen) dışındaki çekirdekte kullanıcı alanı belleği OKUMAYACAĞI VE YAZMAYACAĞI - [C-0-12] Donanım, API düzeyi 28 veya daha yüksek sürümlerle birlikte gönderilen tüm cihazlarda (ör.
CONFIG_PAGE_TABLE_ISOLATION
veyaCONFIG_UNMAP_KERNEL_AT_EL0
) CVE-2017-5754'e karşı savunmasızsa çekirdek sayfa tablosu izolasyonu UYGULANMALIDIR. - [C-0-13] Donanım, API düzeyi 28 veya daha yüksek bir sürümle ilk kez kullanıma sunulan tüm cihazlarda (ör.
CONFIG_HARDEN_BRANCH_PREDICTOR
) CVE-2017-5715'e karşı savunmasızsa dal tahmini güçlendirme uygulanmalıdır. - [SR] Yalnızca başlatma sırasında yazılan çekirdek verilerinin, başlatma işleminden sonra salt okunur olarak işaretlenmesi önemle ÖNERİLİR (ör.
__ro_after_init
). -
[C-SR] Çekirdek kodunun ve belleğin düzenini rastgele hale getirmek ve rastgeleleştirmeyi tehlikeye atacak maruz kalmalardan kaçınmak (ör.
/chosen/kaslr-seed Device Tree node
veyaEFI_RNG_PROTOCOL
aracılığıyla önyükleyici entropisi ileCONFIG_RANDOMIZE_BASE
) KESİNLİKLE ÖNERİLİR. -
[C-SR] Kod yeniden kullanma saldırılarına (ör.
CONFIG_CFI_CLANG
veCONFIG_SHADOW_CALL_STACK
) karşı ek koruma sağlamak için çekirdekte kontrol akışı bütünlüğünü (CFI) etkinleştirmeniz önemle ÖNERİLİR. - [C-SR] Etkin olan bileşenlerde Kontrol Akışı Bütünlüğü'nü (CFI), Gölge Çağrı Yığını'nı (SCS) veya Tam Sayı Taşması Temizleme'yi (IntSan) devre dışı bırakmamanız önemle ÖNERİLİR.
- [C-SR] CFI ve IntSan'da açıklandığı gibi, güvenlik açısından hassas olan ek kullanıcı alanı bileşenleri için CFI, SCS ve IntSan'ın etkinleştirilmesi önemle ÖNERİLİR.
- [C-SR] İlklenmemiş yerel değişkenlerin (
CONFIG_INIT_STACK_ALL
veyaCONFIG_INIT_STACK_ALL_ZERO
) kullanımını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi önemle ÖNERİLİR. Ayrıca, cihaz uygulamalarında yerel değişkenleri başlatmak için derleyici tarafından kullanılan değer varsayılmamalıdır. - [C-SR] İlklenmemiş yığın tahsislerinin (
CONFIG_INIT_ON_ALLOC_DEFAULT_ON
) kullanımını önlemek için çekirdekte yığın ilklendirmesinin etkinleştirilmesi önemle ÖNERİLİR ve bu tahsisleri başlatmak için çekirdek tarafından kullanılan değeri varsaymaları GEREKMEZ.
Cihaz uygulamalarında Linux çekirdeği kullanılıyorsa:
- [C-1-1] SELinux'u UYGULAMALI.
- [C-1-2] SELinux'un genel yaptırım moduna ayarlanması GEREKİR.
- [C-1-3] Tüm alanlar zorunlu modda yapılandırılmalıdır. Bir cihaza/tedarikçiye özgü alanlar da dahil olmak üzere izin verilen mod alan adlarına izin verilmez.
- [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan system/sepolicy klasöründeki neverallow kuralları DEĞİŞTİRİLMEMELİ, ATILMAMALI veya DEĞİŞTİRİLMELİDİR ve politika hem AOSP SELinux alanları hem de cihaza/tedarikçiye özgü alanlar için mevcut tüm neverallow kurallarıyla derlenmelidir.
- [C-1-5] API düzeyi 28 veya üstünü hedefleyen üçüncü taraf uygulamaları, her uygulamanın özel veri dizininde uygulama başına SELinux kısıtlamaları olan uygulama başına SELinux korumalı alanlarında ÇALIŞTIRMALIDIR.
- Yukarı yönlü Android Open Source Project'in system/sepolicy klasöründe sağlanan varsayılan SELinux politikasını muhafaza ETMELI ve yalnızca kendi cihazlarına özel yapılandırmaları için bu politikaya başka öğeler eklemelidir.
Cihaz uygulamaları daha önce bir Android sürümünde kullanıma sunulmuşsa ve [C-1-1] ile [C-1-5] koşullarını sistem yazılımı güncellemesiyle karşılayamıyorsa bu koşullardan muaf tutulabilir.
Cihaz uygulamalarında Linux dışında bir çekirdek kullanılıyorsa:
- [C-2-1] SELinux'a eşdeğer zorunlu bir erişim denetimi sistemi KULLANMALIDIR.
Android, cihaz güvenliğinin ayrılmaz bir parçası olan birden fazla ayrıntılı savunma özelliği içerir.
9.8. Gizlilik
9.8.1. Kullanım Geçmişi
Android, kullanıcının seçimlerinin geçmişini depolar ve bu geçmişi UsageStatsManager tarafından yönetir.
Cihaz uygulamaları:
- [C-0-1] Bu tür kullanıcı geçmişini makul bir saklama süresi boyunca SAKLAMALIDIR.
- [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 geçmişi StatsManager
ile IncidentManager
System API üzerinden yönetir.
Cihaz uygulamaları:
- [C-0-2] Sistem API sınıfı
IncidentManager
tarafından oluşturulan olay raporunda yalnızcaDEST_AUTOMATIC
ile işaretlenmiş alanları İÇERMELİDİR. - [C-0-3]
StatsLog
SDK belgelerinde açıklananlardan başka bir etkinliği günlüğe kaydetmek için sistem etkinlik tanımlayıcılarını KULLANMAMALIDIR. Günlüğe kaydedilen ek sistem etkinlikleri, 100.000 ile 200.000 arasındaki farklı bir atom tanımlayıcı KULLANABİLİR.
9.8.2. Kayıt
Cihaz uygulamaları:
- [C-0-1] Kullanıcının izni olmadan veya devam eden bildirimleri temizlemeden kullanıcının özel bilgilerini (ör. tuş vuruşları, ekranda görüntülenen metin, hata raporu) cihazdan gönderen yazılım bileşenlerini kutudan çıkar çıkmaz önceden yüklememeli veya dağıtmamalıdır.
- [C-0-2]
MediaProjection
veya özel API'ler aracılığıyla ekran aktarma ya da ekran kaydı etkinleştirildiğinde kullanıcının ekranında görüntülenen hassas bilgilerin yakalanmasına izin veren açık bir kullanıcı rızası gösterilmeli ve alınmalıdır. Kullanıcılara, kullanıcı izninin gelecekte gösterilmesini devre dışı bırakma olanağı SUNMAMALIDIR. - [C-0-3] Ekran yansıtma veya ekran kaydı etkinken kullanıcıya sürekli bir bildirim gösterilmelidir. AOSP, durum çubuğunda devam eden bildirim simgesi göstererek bu koşulu karşılar.
Cihaz uygulamalarında, sistemde ekranda görüntülenen içerikleri yakalayan ve/veya cihazda çalınan ses akışını Sistem API'si ContentCaptureService
veya 9.8.6 İçerik Yakalama Bölümü'nde açıklanan diğer tescilli yöntemler dışında kaydeden işlevler varsa:
- [C-1-1] Bu işlev etkinleştirildiğinde ve aktif olarak görüntü/ses kaydı yapıldığında kullanıcıya sürekli bildirim gönderilmelidir.
Cihaz uygulamalarında, kutudan çıkar çıkmaz etkinleştirilen ve ortam sesini kaydedebilen ve/veya kullanıcının bağlamıyla ilgili yararlı bilgiler elde etmek için cihazda çalınan sesi kaydedebilen bir bileşen varsa bu bileşenler:
- [C-2-1] Kayıtlı ham sesi veya orijinal sese veya benzer bir kopyaya dönüştürülebilecek herhangi bir biçimi, açık kullanıcı izni olmadan kalıcı cihaz üzerinde depolama alanında saklamamalı veya cihazdan aktarmamalıdır.
9.8.3. Bağlantı
Cihaz uygulamalarında USB çevre birimi modu desteğine sahip bir USB bağlantı noktası varsa:
- [C-1-1] USB bağlantı noktası üzerinden paylaşılan depolama alanının içeriğine erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü GÖSTERMELİDİR.
9.8.4. Ağ Trafiği
Cihaz uygulamaları:
- [C-0-1] Sistem tarafından güvenilen sertifika yetkilisi (CA) deposu için, yayın öncesi Android Açık Kaynak Projesi'nde sağlanan kök sertifikalarla aynı kök sertifikaları önceden yüklemelidir.
- [C-0-2] Boş bir kullanıcı kök CA mağazasıyla gönderilmelidir.
- [C-0-3] Kullanıcı kök CA'sı eklendiğinde kullanıcıya, ağ trafiğinin izlenebilir olduğunu belirten bir uyarı GÖSTERMELİDİR.
Cihaz trafiği bir VPN üzerinden yönlendiriliyorsa cihaz uygulamaları:
- [C-1-1] Kullanıcıya şunu belirten bir uyarı GÖSTERMELİDİR:
- Bu ağ trafiği izlenebilir.
- Bu ağ trafiği, VPN'yi sağlayan belirli VPN uygulaması üzerinden yönlendirilir.
Cihaz uygulamalarında, ağ veri trafiğini bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN
izni verilmiş bir VPN hizmetini önceden yükleme) varsayılan olarak etkin olan bir mekanizma varsa bu mekanizmalar:
- [C-2-1] VPN, Cihaz Politikası Denetleyicisi tarafından
DevicePolicyManager.setAlwaysOnVpnPackage()
aracılığıyla etkinleştirilmediği sürece, bu mekanizmayı etkinleştirmeden önce kullanıcının izni İSTENMELİDİR. Bu durumda kullanıcının ayrı bir izin vermesi gerekmez ancak YALNIZCA bilgilendirilmelidir.
Cihaz uygulamaları, üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için bir kullanıcı özelliği uygularsa:
- [C-3-1] Her zaman açık VPN hizmetini desteklemeyen uygulamalar için
AndroidManifest.xml
dosyasındaSERVICE_META_DATA_SUPPORTS_ALWAYS_ON
özelliğinifalse
olarak ayarlayarak bu kullanıcı özelliğini DEVRE DIŞI BIRAKMALIDIR.
9.8.5. Cihaz Tanımlayıcıları
Cihaz uygulamaları:
- [C-0-1] Aşağıdaki koşullardan birini karşılamadığı sürece, bir uygulamadan cihaz seri numarasına ve varsa IMEI/MEID, SIM seri numarasına ve Uluslararası Mobil Abone Kimliği'ne (IMSI) erişimi ÖNLEMELİDİR:
- cihaz üreticileri tarafından doğrulanmış, imzalanmış bir operatör uygulamasıdır.
- kullanıcısına
READ_PRIVILEGED_PHONE_STATE
izni 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 sahibidir.- (Yalnızca SIM seri numarası/ICCID için) Uygulamanın, abonenin kimliğindeki değişiklikleri algılaması yerel düzenlemeler gereğidir.
9.8.6. İçerik Yakalama
Android, sistem API'si ContentCaptureService
aracılığıyla veya özel diğer yöntemlerle, cihaz uygulamalarının uygulamalar ile kullanıcı arasındaki aşağıdaki etkileşimleri yakalaması için bir mekanizmayı destekler.
AssistStructure
API aracılığıyla bildirimler ve yardım verileri de dahil ancak bunlarla sınırlı olmamak üzere ekranda oluşturulan metinler 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'si veya benzer özelliklere sahip özel bir API aracılığıyla sisteme sağladığı diğer tüm etkinlikler. - Metnin anlamını anlamak ve metne göre tahmin edilen 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 depolanan bu tür tüm veriler ŞİFRELENMELİDİR. Bu şifreleme, Android Dosya Tabanlı Şifreleme veya Cipher SDK'da açıklanan API sürümü 26 ve sonraki sürümler olarak listelenen şifrelerden herhangi biri kullanılarak YAPILABİLİR.
- [C-1-2] Android yedekleme yöntemlerini veya başka yedekleme yöntemlerini kullanarak ham veya şifrelenmiş verileri YEDEKLEMEMELİDİR.
- [C-1-3] Bu tür tüm verileri ve cihazın günlük kaydını yalnızca gizliliği koruma mekanizması kullanarak GÖNDERMELİDİR. Gizliliği koruma mekanizması, kullanıcı başına verilerin içsel olarak incelenmesini önlemek için "yalnızca toplu analize izin veren ve günlüğe kaydedilen etkinliklerin veya türetilmiş sonuçların bireysel kullanıcılarla eşleştirilmesini önleyen" olarak tanımlanır (ör.
RAPPOR
gibi diferansiyel gizlilik teknolojisi kullanılarak uygulanır). - [C-1-4] Veriler her ilişkilendirildiğinde kullanıcının açık izni dışında, bu tür veriler cihazdaki herhangi bir kullanıcı kimliğiyle (ör.
Account
) İLİŞKİLENDİRİLMEMELİDİR. - [C-1-5] Bu tür veriler, her paylaşıldığında açık kullanıcı izni dışında başka uygulamalarla PAYLAŞILMAMALISIDIR.
- [C-1-6] Veriler cihazda herhangi bir biçimde depolanmışsa
ContentCaptureService
veya özel araçlar tarafından toplanan bu tür verileri silmek için kullanıcıya olanak sağlanmalıdır.
Cihaz uygulamaları, Sistem API'sini ContentCaptureService
uygulayan bir hizmet veya yukarıda açıklandığı şekilde verileri yakalayan herhangi bir özel hizmet içeriyorsa:
- [C-2-1] Kullanıcıların içerik yakalama hizmetini kullanıcı tarafından yüklenebilecek bir uygulama veya hizmetle değiştirmesine İZİN VERMEMELİDİR ve yalnızca önceden yüklenmiş hizmetin bu tür verileri yakalamasına İZİN VERMELİDİR.
- [C-2-2] Önceden yüklenmiş içerik yakalama hizmeti mekanizması dışındaki uygulamaların bu tür verileri yakalamasına İZİN VERMEMELİDİR.
- [C-2-3] İçerik yakalama hizmetini devre dışı bırakmak için kullanıcıya olanak tanımalıdır.
- [C-2-4] İçerik yakalama hizmeti tarafından tutulan Android izinlerini yönetmek için kullanıcıya sunulan olanağı atlamamalı ve Bölüm 9.1'de açıklandığı şekilde Android izinleri modelini izlemelidir. İzin.
-
[C-SR] İçerik yakalama hizmeti bileşenlerinin, aşağıdakiler hariç diğer sistem bileşenlerinden ayrı tutulması (ör. hizmeti bağlamamak veya işlem kimliklerini paylaşmamak) ö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 veya şu anda odaktaki uygulama değilse panoda kırpılmış verileri (ör.
ClipboardManager
API aracılığıyla) İADE ETMEmelidir.
9.8.8. Konum
Cihaz uygulamaları:
- [C-0-1] Cihaz konum ayarını ve kablosuz bağlantı/Bluetooth tarama ayarlarını, kullanıcının açık izni veya kullanıcının başlatması olmadan AÇMAMALI/KAPATMAMALIDIR.
- [C-0-2] Son konum istekleri, uygulama düzeyinde izinler ve konum belirlemek için kablosuz ağ/Bluetooth taramasının kullanımı da dahil olmak üzere konumla ilgili bilgilere erişmek için kullanıcıya olanak tanımalıdır.
- [C-0-3] Acil Durum Konum Atlama API'sini [LocationRequest.setLocationSettingsIgnored()] kullanan uygulamanın, kullanıcı tarafından başlatılan bir acil durum oturumu (ör. 911'i arama veya 911'e mesaj gönderme) olduğundan EMİN OLMALIDIR. Ancak Otomotiv için bir araç, trafik kazası/kaza algılanması durumunda (ör. eCall şartlarını karşılamak için) etkin kullanıcı etkileşimi olmadan acil durum oturumu BAŞLATABİLİR.
- [C-0-4] Acil Durum Konumu Atlama API'sinin, ayarları değiştirmeden cihaz konum ayarlarını atlama özelliğini KORUMALIDIR.
- [C-0-5] Arka plandaki bir uygulama [
ACCESS_BACKGROUND_LOCATION
] iznini kullanarak kullanıcının konumuna eriştikten sonra kullanıcıya hatırlatıcı bir bildirim planlamalıdır.
9.8.9. Yüklü uygulamalar
API düzeyi 30 veya sonraki sürümleri hedefleyen Android uygulamaları, varsayılan olarak yüklü diğer uygulamalarla ilgili ayrıntıları göremez (Android SDK dokümanlarında Paket görünürlüğü bölümüne bakın).
Cihaz uygulamaları:
- [C-0-1] API düzeyi 30 veya üstünü hedefleyen hiçbir uygulamaya, yönetilen API'ler aracılığıyla diğer yüklü uygulamalarla ilgili ayrıntıları göremediği sürece diğer yüklü uygulamalarla ilgili ayrıntıları göstermemelidir. Buna, cihaz uygulayıcısı tarafından eklenen özel API'ler tarafından sunulan veya dosya sistemi üzerinden erişilebilen ayrıntılar dahildir ancak bunlarla sınırlı değildir.
9.8.10. Bağlantı Hata Raporu
Cihaz uygulamaları, BugreportManager ile Sistem API'si BUGREPORT_MODE_TELEPHONY
'ni kullanarak hata raporları oluşturuyorsa:
- [C-1-1] Sistem API'si
BUGREPORT_MODE_TELEPHONY
rapor oluşturmak için her çağrıldığında kullanıcı izni ALMALIDIR ve kullanıcıdan uygulamadan gelecek tüm istekleri onaylamamasını İSTEMEmelidir. - [C-1-2] Raporlar oluşturulmaya başladığında açık kullanıcı rızası gösterilmeli ve alınmalıdır. Oluşturulan rapor, açık kullanıcı rızası olmadan istek yapan uygulamaya İADE EDİLMEMELİDİR.
- [C-1-3] İstenen raporlar en az aşağıdaki bilgileri içermelidir:
- TelephonyDebugService dökümü
- TelephonyRegistry dökümü
- WifiService dökümü
- ConnectivityService dökümü
- Arayan paketinin CarrierService örneğinin dökümü (bağlıysa)
- Radyo günlük arabelleği
- [C-1-4] Oluşturulan raporlara aşağıdakiler DAHİL EDİLMEMELİDİR:
- Bağlantı hata ayıklamayla ilgili olmayan her türlü bilgi.
- Kullanıcı tarafından yüklenen her türlü uygulama trafik günlükleri veya kullanıcı tarafından yüklenen uygulamaların/paketlerin ayrıntılı profilleri (kullanıcı kimlikleri kabul edilir, paket adları kabul edilmez).
- Herhangi bir kullanıcı kimliğiyle ilişkili olmayan ek bilgiler içerebilir. (ör. tedarikçi günlükleri).
Cihaz uygulamalarında hata raporuna ek bilgiler (ör.satıcı günlükleri) eklenmişse ve bu bilgilerin gizlilik/güvenlik/pil/depolama/bellek üzerinde etkisi varsa:
- [C-SR] Geliştirici ayarının varsayılan olarak devre dışı olması KESİNLİKLE ÖNERİLİR. AOSP, geliştirici ayarlarında
Enable verbose vendor logging
seçeneğini sunarak hata raporlarına cihaza özgü ek satıcı günlükleri ekleme olanağı tanır.
9.8.11. Veri kümesi paylaşımı
Android, BlobStoreManager aracılığıyla uygulamaların, seçili bir uygulama grubuyla paylaşılmak üzere sisteme veri kümeleri eklemesine izin verir.
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 verilenin ötesinde paylaşmamalıdır (ör. varsayılan erişimin kapsamı ve BlobStoreManager.session#allowPackageAccess(), BlobStoreManager.session#allowSameSignatureAccess() veya BlobStoreManager.session#allowPublicAccess() kullanılarak belirtilebilecek diğer erişim modları DEĞİŞTİRİLMEMELİDİR). AOSP referans uygulaması bu koşulları karşılar.
- [C-1-2] Veri kümelerinin güvenli karma oluşturma işlemlerini (erişimi kontrol etmek için kullanılır) cihazdan göndermemeli veya diğer uygulamalarla paylaşmamalıdır.
9.9. Veri Depolama Şifreleme
Tüm cihazlar 9.9.1 numaralı bölümün şartlarını karşılamalıdır. Bu dokümanda belirtilenden daha eski bir API düzeyinde kullanıma sunulan cihazlar, 9.9.2 ve 9.9.3 bölümlerindeki şartlardan muaftır. Bunun yerine, cihazın kullanıma sunulduğu API düzeyine karşılık gelen Android Uyumluluk Tanımı belgesinin 9.9 numaralı bölümündeki şartları karşılamalıdır.
9.9.1. Doğrudan Başlatma
Cihaz uygulamaları:
-
[C-0-1] Depolama alanı şifrelemeyi desteklemeseler bile doğrudan önyükleme modu API'lerini UYGULAMALARI GEREKİR.
-
[C-0-2] Doğrudan Açılış'tan haberdar olan uygulamalara Cihaz Şifrelenmiş (DE) ve Kimlik Bilgisi Şifrelenmiş (CE) depolama konumlarının kullanıcı tarafından kullanılabileceğini bildirmek için
ACTION_LOCKED_BOOT_COMPLETED
veACTION_USER_UNLOCKED
Intent'leri yine de yayınlanmalıdır.
9.9.2. Şifreleme şartları
Cihaz uygulamaları:
- [C-0-1] Uygulamanın özel verilerini (
/data
bölümü) ve cihazın kalıcı, çıkarılamayan bir parçasıysa uygulamanın ortak depolama alanı bölümünü (/sdcard
bölümü) ŞİFRELEMELİYDİR. - [C-0-2] Kullanıcı ilk kurulum deneyimini tamamladığında veri depolama alanı şifrelemesini varsayılan olarak etkinleştirmelidir.
-
[C-0-3] Aşağıdaki iki şifreleme yönteminden birini uygulayarak yukarıdaki veri depolama şifreleme şartını karşılamalıdır:
- 9.9.3.1 numaralı bölümde açıklandığı gibi Dosya Tabanlı Şifreleme (FBE) ve Meta Veri Şifreleme.
- 9.9.3.2 numaralı bölümde açıklandığı gibi kullanıcı başına blok düzeyinde şifreleme.
9.9.3. Şifreleme Yöntemleri
Cihaz uygulamaları şifrelenmişse:
- [C-1-1] Kullanıcıdan kimlik bilgileri istemeden başlatılmalı ve
ACTION_LOCKED_BOOT_COMPLETED
mesajı yayınlandıktan sonra Doğrudan Açılış bilincine sahip uygulamaların Cihaz Şifrelenmiş (DE) depolama alanına erişmesine izin vermelidir. - [C-1-2] Kimlik Bilgisi Şifrelenmiş (CE) depolamaya 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 VERMELİDİR. - [C-1-13] Kullanıcı tarafından sağlanan kimlik bilgileri, kayıtlı bir emanet anahtarı veya 9.9.4 numaralı bölümdeki şartları karşılayan yeniden başlatma işleminde devam etmeden CE korumalı depolama alanının kilidini açma yöntemi SUNMAMALIDIR.
- [C-1-4] Doğrulanmış Başlatma özelliği ZORUNLUDUR.
9.9.3.1. Meta Veri Şifreleme ile Dosya Tabanlı Şifreleme
Cihaz uygulamalarında meta veri şifrelemesiyle dosya tabanlı şifreleme kullanılıyorsa:
- [C-1-5] Dosya içerikleri ve dosya sistemi meta verileri AES-256-XTS veya Adiantum kullanılarak ŞİFRELENMELİDİR. AES-256-XTS, XTS modunda çalışan 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'i ifade eder. Dosya sistemi meta verileri; dosya boyutları, sahiplik, modlar ve genişletilmiş özellikler (xattrs) gibi verilerdir.
- [C-1-6] Dosya adları AES-256-CBC-CTS veya Adiantum kullanılarak ŞİFRELENMELİDİR.
- [C-1-12] Cihazda Gelişmiş Şifreleme Standardı (AES) talimatları varsa (ör. ARM tabanlı cihazlarda ARMv8 Kriptografi Uzantıları veya x86 tabanlı cihazlarda AES-NI) dosya adı, dosya içeriği ve dosya sistemi meta veri şifrelemesi için yukarıdaki AES tabanlı seçenekler kullanılmalıdır. Adiantum kullanılmamalıdır.
- [C-1-13] CE ve DE anahtarlarından gerekli tüm alt anahtarları (ör. dosya başına anahtarlar) türetmek için şifreleme açısından güçlü ve geri döndürülebilir olmayan bir anahtar türetme işlevi (ör. HKDF-SHA512) KULLANMALIDIR. "Kriptografik olarak güçlü ve geri döndürülemez", anahtar türetme işlevinin en az 256 bit güvenlik gücüne sahip olduğu ve girişleri üzerinde sanal rasgele işlev ailesi gibi davrandığı anlamına gelir.
-
[C-1-14] Aynı Dosya Tabanlı Şifreleme (FBE) anahtarlarını veya alt anahtarlarını farklı şifreleme amaçları için (ör. hem şifreleme hem de anahtar türetme veya iki farklı şifreleme algoritması için) KULLANMAMALIDIR.
-
CE ve DE depolama alanlarını ve dosya sistemi meta verilerini koruyan anahtarlar:
-
[C-1-7] Kriptografik olarak donanım destekli bir anahtar deposuna bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma ve cihazın donanım kök güven kaynağına BAĞLANMALIDIR.
- [C-1-8] CE anahtarları kullanıcının kilit ekranı kimlik bilgilerine BAĞLI OLMALIDIR.
- [C-1-9] Kullanıcı kilit ekranı kimlik bilgilerini belirtmemişse CE anahtarları varsayılan bir şifre koduna BAĞLANMALIDIR.
- [C-1-10] Benzersiz ve farklı OLMALIDIR. Başka bir deyişle, hiçbir kullanıcının CE veya DE anahtarı başka bir kullanıcının CE veya DE anahtarıyla eşleşmemelidir.
-
[C-1-11] Zorunlu olarak desteklenen şifreler, anahtar uzunlukları ve modlar KULLANILMALIDIR.
-
Önceden yüklenmiş temel uygulamaları (ör. Alarm, Telefon, Mesajlar) Doğrudan Önyükleme'den haberdar ETMELI.
Yukarı yönlü Android Açık Kaynak projesi, Linux çekirdeğinin "fscrypt" şifreleme özelliğine dayalı Dosya Tabanlı Şifreleme ve Linux çekirdeğinin "dm-default-key" özelliğine dayalı Meta Veri Şifreleme için tercih edilen bir uygulama sağlar.
9.9.3.2. Kullanıcı Başına Blok Seviyesinde Şifreleme
Cihaz uygulamalarında kullanıcı başına blok düzeyinde şifreleme kullanılıyorsa:
- [C-1-1] 9.5 numaralı bölümde açıklandığı gibi çok kullanıcılı desteği ETKİNLETMEK ZORUNDADIR.
- [C-1-2] Ham bölüm veya mantıksal birim kullanarak kullanıcı başına bölüm sağlanmalıdır.
- [C-1-3] Temel blok cihazların şifrelenmesi için kullanıcı başına benzersiz ve farklı şifreleme anahtarları KULLANMALIDIR.
-
[C-1-4] Kullanıcı bölümlerinin blok düzeyinde şifrelenmesi için AES-256-XTS KULLANILMALIDIR.
-
Kullanıcı başına blok düzeyinde şifrelenmiş cihazları koruyan anahtarlar:
-
[C-1-5] Kriptografik olarak donanım destekli bir anahtar deposuna bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma ve cihazın donanım kök güven kaynağına BAĞLANMALIDIR.
- [C-1-6] İlgili kullanıcının kilit ekranı kimlik bilgilerine BAĞLI OLMALIDIR.
Kullanıcı başına blok düzeyinde şifreleme, kullanıcı başına bölümlerde Linux çekirdeği "dm-crypt" özelliği kullanılarak uygulanabilir.
9.9.4. Yeniden başlatıldığında devam ettir
Yeniden başlatıldığında devam et özelliği, OTA tarafından başlatılan bir yeniden başlatma işleminden sonra henüz Doğrudan Önyükleme'yi desteklemeyenler de dahil olmak üzere tüm uygulamaların CE depolama alanının kilidinin açılmasına olanak tanır. Bu özellik, kullanıcıların yeniden başlatma işleminden sonra yüklü uygulamalardan bildirim almasına olanak tanır.
Yeniden Başlatma Üzerine Devam özelliğinin uygulanması, bir cihaz saldırganın eline geçtiğinde, cihaz açık olsa, CE depolama alanının kilidi açık olsa ve kullanıcı bir OTA aldıktan sonra cihazın kilidini açmış olsa bile saldırganın kullanıcının CE ile şifrelenmiş verilerini kurtarmasının son derece zor olmasını sağlamalıdır. Çalışan saldırılarına karşı direnç için saldırganın, şifreleme imzalama anahtarlarına da eriştiğini varsayıyoruz.
Özellikle:
-
[C-0-1] CE depolama alanı, cihaza fiziksel olarak sahip olan ve aşağıdaki özelliklere ve sınırlamalara sahip olan saldırganlar tarafından bile okunaBİLMELİDİR:
- Rastgele iletileri imzalamak için herhangi bir tedarikçinin veya şirketin imzalama anahtarını kullanabilir.
- Cihazın OTA alması için neden olabilir.
- Aşağıda ayrıntılı olarak açıklananlar hariç herhangi bir donanımın (AP, flaş 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ü içerir.
- Kurcalamaya dayanıklı donanımın (ör. Titan M) çalışması değiştirilemez.
- Canlı cihazın RAM'i okunamıyor.
- Kullanıcının kimlik bilgilerini (PIN, desen, şifre) elde edemez veya başka bir şekilde girilmesine neden olamaz.
Örneğin, burada bulunan tüm açıklamaları uygulayan ve bunlara uyan 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 durumuyla ilgili şeffaflık sağlar. Cihaz uygulamaları:
-
[C-0-1] Sistem API yöntemi
PersistentDataBlockManager.getFlashLockState()
aracılığıyla, önyükleyici durumunun sistem görüntüsünün yanıp sönmesine izin verip vermediğini DOĞRU şekilde bildirmelidir.FLASH_LOCK_UNKNOWN
durumu, bu yeni sistem API yönteminin mevcut olmadığı Android'in önceki bir sürümünden yükseltilen cihaz uygulamaları için ayrılmıştır. -
[C-0-2] Cihaz bütünlüğü için Doğrulanmış Başlatma özelliğini DESTEKLEMELİDİR.
Cihaz uygulamaları, Android'in önceki bir sürümünde Doğrulanmış Önyükleme'yi desteklemeden kullanıma sunulmuşsa ve sistem yazılımı güncellemesiyle bu özellik için destek ekleyemiyorsa bu cihazlar şarttan muaf tutulabilir.
Doğrulanmış Başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Cihaz uygulamaları özelliği destekliyorsa:
- [C-1-1] Platform özelliği bayrağı
android.software.verified_boot
İSTENİR. - [C-1-2] Her önyükleme sırasında doğrulama YAPILMALIDIR.
- [C-1-3] Doğrulama, güvenin kökü olan ve sistem bölümüne kadar giden değişmez bir donanım anahtarından BAŞLATILMALIDIR.
- [C-1-4] Bir sonraki aşamadaki kodu yürütmeden önce bir sonraki aşamadaki tüm baytların bütünlüğünü ve özgünlüğünü kontrol etmek için doğrulamanın her aşamasını UYGULAMALIDIR.
- [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'nin mevcut önerileri kadar güçlü doğrulama algoritmaları KULLANMALIDIR.
- [C-1-6] Kullanıcı yine de önyükleme yapmayı denemeyi kabul etmediği sürece, sistem doğrulaması başarısız olduğunda önyüklemenin tamamlanmasına İZİN VERMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALISDIR.
- [C-1-7] Kullanıcı, önyükleyicinin kilidini açıkça açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERMEMELİDİR.
- [C-SR] Cihazda birden fazla ayrı çip (ör. radyo, özel görüntü işlemcisi) varsa bu çiplerin her birinin önyükleme işleminin, önyükleme sırasında her aşamanın doğrulanması için KESİNLİKLE ÖNERİLİR.
- [C-1-8] Açılış yükleyicinin kilidinin açık olup olmadığını depolamak için bozulmaya karşı korumalı depolama alanı KULLANMALIDIR. Bozulmaya karşı korumalı depolama, önyükleyicinin depolama alanında Android'in içinden müdahale edilip edilmediğini algılayabileceği anlamına gelir.
- [C-1-9] Kullanıcıdan, cihazı kullanırken bootloader kilitli moddan bootloader kilidi açık moda geçiş yapmadan önce fiziksel onay İSTEKLENMELİDİR.
- [C-1-10] Android tarafından kullanılan bölümler (ör. önyükleme, sistem bölümleri) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum OS sürümünü belirlemek için kullanılan meta verileri depolamak amacıyla bozulmaya karşı korumalı depolama alanı kullanılmalıdır.
- [C-SR] Tüm ayrıcalıklı uygulama APK dosyalarının, Doğrulanmış Önyükleme ile korunan bölümlere dayalı 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ın (ör. dinamik olarak yüklenen kod veya derlenmiş kod) yürütülmeden önce doğrulanması veya hiç yürütülmemesi önemle ÖNERİLİR.
- Kalıcı donanım yazılımı (ör. modem, kamera) içeren tüm bileşenler için geri alma koruması UYGULANMALIDIR ve izin verilen minimum sürümü belirlemek için kullanılan meta verileri depolamak üzere bozulmaya karşı korumalı depolama alanı KULLANILMALIDIR.
Cihaz uygulamaları, Android'in önceki bir sürümünde C-1-8 ile C-1-10 arasında desteklenmeden kullanıma sunulmuşsa ve sistem yazılımı güncellemesiyle bu şartlara destek eklenemiyorsa bu cihazlar şartlardan MUAF tutulabilir.
Android Açık Kaynak Projesi, external/avb/
deposunda bu özelliğin tercih edilen bir uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleyiciye entegre edilebilir.
Cihaz uygulamaları:
- [C-0-3] Dosyanın tamamını okumadan dosya içeriğinin güvenilir bir anahtarla şifreleme yoluyla doğrulanmasını desteklemelidir.
- [C-0-4] Okunmuş içerik güvenilir bir anahtarla doğrulanmadığında, korunan bir dosyadaki okuma isteklerinin başarılı olmasına İZİN VERMEMELİDİR.
Cihaz uygulamaları, daha önceki bir Android sürümünde dosya içeriğini güvenilir bir anahtarla doğrulama özelliği olmadan kullanıma sunulmuşsa ve sistem yazılımı güncellemesiyle bu özellik için destek ekleyemiyorsa bu uygulamalar şarttan muaf tutulabilir. Yukarı yönlü Android Açık Kaynak projesi, Linux çekirdeği fs-verity özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.
Cihaz uygulamaları:
- [C-R] Android Protected Confirmation API'yi desteklemeleri ÖNERİLİR.
Cihaz uygulamaları Android Protected Confirmation API'yi destekliyorsa:
-
[C-3-1]
ConfirmationPrompt.isSupported()
API içintrue
bildirmelidir. -
[C-3-2] Android OS'te çalışan kodun (çekirdeği dahil, kötü amaçlı veya başka bir şekilde) kullanıcı etkileşimi olmadan olumlu bir yanıt oluşturamamasını SAĞLAMALIDIR.
-
[C-3-3] Çekirdek dahil Android OS'nin güvenliği ihlal edilmiş olsa bile kullanıcının istenen mesajı inceleyip onaylayabildiğinden EMİN OLMALIDIR.
9.11. Anahtarlar ve Kimlik Bilgileri
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları bir kapsayıcıda depolamalarına ve KeyChain API veya Keystore API aracılığıyla kriptografik işlemlerde 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 İZİN VERMELİDİR.
- [C-0-2] Kilit ekranı kimlik doğrulaması, deneme sayısını sınırlamalı ve üstel bir geri çekilme algoritmasına sahip olmalıdır. 150 başarısız denemeden sonra, deneme başına en az 24 saat bekleme süresi OLMALIDIR.
- Oluşturulabilecek anahtar sayısını sınırlamamalıdır
Cihaz uygulaması güvenli kilit ekranını desteklediğinde:
- [C-1-1] Anahtar deposu uygulamasını izole bir yürütme ortamıyla YEDEKLEMELİDİR.
- [C-1-2] Android Keystore sisteminin desteklenen algoritmalarını çekirdekte ve daha üst katmanda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 karma oluşturma işlevlerinin uygulanması ZORUNLUDUR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın dahili durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı yönlü Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu koşulu karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hipervizör tabanlı yalıtımın üçüncü taraflarca incelenmiş güvenli bir uygulaması da alternatif seçenekler arasındadır.
- [C-1-3] Kilit ekranı kimlik doğrulamasını izole yürütme ortamında YAPMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamasına bağlı anahtarların kullanılmasına izin vermelidir. Kilit ekranı kimlik bilgileri, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulamasını gerçekleştirmesine izin verecek şekilde SAKLANMALIDIR. Yukarı yönlü Android Açık Kaynak Projesi, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
- [C-1-4] Onaylama imzalama anahtarının güvenli donanım tarafından korunduğu ve imzalamanın güvenli donanımda yapıldığı durumlarda anahtar onayı desteklenmelidir. Onaylama imzalama anahtarları, anahtarların cihaz tanımlayıcısı olarak kullanılmasını önlemek için yeterince çok sayıda cihazda PAYLAŞILMALIDIR. Bu koşulu karşılamak için,belirli bir SKU'dan en az 100.000 adet üretilmediği sürece aynı doğrulama anahtarını paylaşabilirsiniz. Bir SKU'dan 100.000'den fazla birim üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Bir cihaz uygulaması daha önce bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme şartından muaf olduğunu unutmayın. Bunun için cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint
özelliğini belirtmesi gerekir.
- [C-1-5] Kullanıcının, kilidi açık durumdan kilitli duruma geçiş için uyku zaman aşımını seçmesine izin VERMELİDİR. İzin verilen minimum zaman aşımı 15 saniyedir. Ana birim kapatıldığında veya kullanıcı değiştirildiğinde ekranı kilitleyen otomotiv cihazlarda Uyku zaman aşımı yapılandırması OLABİLMEZ.
9.11.1. Güvenli Kilit Ekranı ve Kimlik Doğrulama
AOSP uygulaması, bilgi fabrikasına dayalı birincil kimlik doğrulamanın ikincil güçlü bir biyometrik veya daha zayıf üçüncül modalitelerle desteklenebileceği katmanlı bir kimlik doğrulama modelini izler.
Cihaz uygulamaları:
- [C-SR] Birincil kimlik doğrulama yöntemi olarak aşağıdakilerden yalnızca birini ayarlamanızı önemle ÖNERİRİZ:
- Sayısal PIN
- Alfasayısal şifre
- Tam olarak 3x3 nokta içeren bir ızgaradaki kaydırma modeli
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ştirir ve ekranı kilitlemek için güvenli bir yöntem 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ı Zorunluluğu bölümünde açıklanan kullanıcı kimlik doğrulama yöntemi OLMALIDIR.
Cihaz uygulamaları, bilinen bir gizliye dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yöntem olarak kabul edilecek yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-3-1] İzin verilen en kısa giriş uzunluğunun entropisi 10 bitten büyük OLMALIDIR.
- [C-3-2] Olası tüm girişlerin maksimum entropisi 18 bitten büyük OLMALIDIR.
- [C-3-3] Yeni kimlik doğrulama yöntemi, AOSP'de uygulanan ve sunulan önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) hiçbirini İÇERMEMELİDİR.
- [C-3-4] Cihaz Politikası Denetleyicisi (DPC) uygulaması, şifre kalitesi politikasını
PASSWORD_QUALITY_SOMETHING
'ten daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla ayarladığında yeni kimlik doğrulama yöntemi DEVRE DIŞI BIRAKILMALIDIR. - [C-3-5] Yeni kimlik doğrulama yöntemleri, 72 saatte bir veya daha kısa bir süre içinde önerilen birincil kimlik doğrulama yöntemlerine (ör. PIN, desen, şifre) geri dönmeli VEYA kullanıcının verilerinin gizliliğini korumak için bazı verilerin yedeklenmeyeceğini açıkça belirtmelidir.
Cihaz uygulamaları, kilit ekranının kilidini açmak için önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirir ve ekranı kilitlemek için güvenli bir yöntem olarak kabul edilecek biyometriye dayalı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:
- [C-4-1] Sınıf 1 (eski adıyla kolaylık) için 7.3.10 numaralı bölümde açıklanan tüm koşulları karşılamalıdır.
- [C-4-2] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bilinen bir gizliye dayalı yedek mekanizmaya SAHİP OLMALIDIR.
- [C-4-3] Devre dışı bırakılmalı ve yalnızca Device Policy Controller (DPC) uygulaması, ilişkili biyometrik işaretlerden herhangi birini (ör.
KEYGUARD_DISABLE_BIOMETRICS
,KEYGUARD_DISABLE_FINGERPRINT
,KEYGUARD_DISABLE_FACE
veyaKEYGUARD_DISABLE_IRIS
) kullanarakDevicePolicyManager.setKeyguardDisabledFeatures()
yöntemini çağırarak anahtar koruma özelliği politikasını ayarladığında ekranın kilidini açmak için önerilen birincil kimlik doğrulamasına izin vermelidir.
Biyometrik kimlik doğrulama yöntemleri, 7.3.10 numaralı bölümde açıklanan 3. Sınıf (eski adıyla Güçlü) gereksinimlerini karşılamıyorsa:
- [C-5-1] Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını
PASSWORD_QUALITY_BIOMETRIC_WEAK
'dan daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla ayarladıysa yöntemler devre dışı bırakılmalıdır. - [C-5-2] Kullanıcıdan, 7.3.10 numaralı bölümdeki [C-1-7] ve [C-1-8]'de açıklandığı şekilde önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) isteğinde bulunulmalıdır.
- [C-5-3] Yöntemler güvenli kilit ekranı olarak DEĞİLDİR ve aşağıdaki bölümde C-8 ile başlayan koşulları karşılamalıdır.
Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya değiştirirse ve yeni bir kimlik doğrulama yöntemi fiziksel bir jetona veya konuma dayanıyorsa:
- [C-6-1] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bilinen bir gizliye dayalı ve güvenli kilit ekranı olarak değerlendirilme şartlarını karşılayan bir yedek mekanizmaya sahip OLMALIDIR.
- [C-6-2] Yeni yöntem DEVRE DIŞI BIRAKILMALIDIR ve Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı
DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)
yöntemiyle veyaPASSWORD_QUALITY_UNSPECIFIED
'den daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemiyle ayarladığında ekranın kilidini açmak için yalnızca önerilen birincil kimlik doğrulama yöntemlerinden birine izin vermelidir. - [C-6-3] Kullanıcıdan, önerilen birincil kimlik doğrulama yöntemlerinden biri (ör. PIN, desen, şifre) için en az 4 saatte bir istek GÖNDERİLMESİ GEREKİR.
- [C-6-4] Yeni yöntem, güvenli kilit ekranı olarak DEĞERLENDİRİLMEMELİ ve aşağıdaki C-8 bölümünde listelenen kısıtlamalara uymalıdır.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService
sistem API'sini uygulayan bir veya daha fazla güven aracısı varsa bu cihazlar:
- [C-7-1] Cihaz kilidinin ertelendiği veya güven aracıları tarafından kilidinin açılabileceği durumlarda ayarlar menüsünde ve kilit ekranında net bir şekilde belirtilmelidir. Örneğin, AOSP bu koşulu, ayarlar menüsünde "Otomatik kilitleme ayarı" ve "Güç düğmesi anında kilitler" için metin açıklaması ve kilit ekranında ayırt edilebilir bir simge göstererek karşılar.
- [C-7-2]
DevicePolicyManager
sınıfındaki tüm güven aracısı API'lerine (ör.KEYGUARD_DISABLE_TRUST_AGENTS
sabit) uymalı ve bunları eksiksiz şekilde uygulamalıdır. - [C-7-3] Birincil kişisel cihaz (ör. el cihazı) olarak kullanılan bir cihazda
TrustAgentService.addEscrowToken()
işlevini tam olarak UYGULAMAMALI ancak genellikle paylaşılan cihaz uygulamalarında (ör. Android TV veya Automotive cihaz) işlevi tam olarak UYGULAYABİLİR. - [C-7-4]
TrustAgentService.addEscrowToken()
tarafından eklenen tüm depolanmış jetonları ŞİFRELEMELİDİR. - [C-7-5] Şifreleme anahtarını veya emanet jetonunu, anahtarın kullanıldığı cihazda DEPOLAMAMALIDIR. Örneğin, telefonda depolanan bir anahtarın TV'deki bir kullanıcı hesabının kilidini açmasına izin verilir. Otomotiv cihazlarda, emanet jetonunun aracın herhangi bir yerinde depolanmasına izin verilmez.
- [C-7-6] Veri depolama alanının şifresini çözmek için emanet jetonunu etkinleştirmeden önce kullanıcıyı güvenlikle ilgili sonuçlar hakkında BİLGİLENDİRMELİDİR.
- [C-7-7] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizmaya SAHİP OLMALIDIR.
- [C-7-8] Kullanıcının güvenliği (ör.sürücünün dikkatinin dağılması) söz konusu olmadığı sürece, kullanıcıdan en az 72 saatte bir veya daha kısa bir süre içinde önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biri için istek GÖNDERİLMELİDİR.
- [C-7-9] Kullanıcının güvenliği (ör.sürücünün dikkatinin dağılması) söz konusu olmadığı sürece, 7.3.10 numaralı bölümdeki [C-1-7] ve [C-1-8]'de açıklandığı şekilde önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biri için kullanıcıdan istek GÖNDERİLMELİDİR.
- [C-7-10] Güvenli kilit ekranı olarak İŞLENMEMELİDİR ve aşağıdaki C-8 bölümünde listelenen kısıtlamalara UYMALIDIR.
- [C-7-11] Birincil kişisel cihazlardaki (ör.el cihazı) TrustAgent'ların cihazın kilidini açmasına İZİN VERMEMELİDİR ve bunları yalnızca kilidi açık olan bir cihazı en fazla 4 saat boyunca kilitli durumda tutmak için kullanabilir. AOSP'teki TrustManagerService'in varsayılan uygulaması bu koşulu karşılar.
- [C-7-12] Alıkonma jetonunu depolama cihazından hedef cihaza iletmek için kriptografik olarak güvenli (ör.UKEY2) bir iletişim kanalı KULLANMALIDIR.
Cihaz uygulamaları, yukarıda açıklandığı gibi güvenli olmayan kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya değiştirir ve kilit ekranının 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ı
PASSWORD_QUALITY_UNSPECIFIED
'ten daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla ayarladığında yeni yöntem DEVRE DIŞI BIRAKILMALIDIR. - [C-8-2]
DevicePolicyManager.setPasswordExpirationTimeout()
tarafından ayarlanan şifre geçerlilik süresi zamanlayıcılarını SIFIRLAMAMALIDIR. - [C-8-3] Kilit durumunu değiştirmek için üçüncü taraf uygulamaları tarafından kullanılacak bir API AÇIKLAMAMALIDIR.
9.11.2. StrongBox
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları hem özel bir güvenli işlemcide hem de yukarıda açıklanan izole yürütme ortamında depolamalarına olanak tanır. Bu tür özel güvenli işlemcilere "StrongBox" adı verilir. Aşağıdaki C-1-3 ile C-1-11 arasındaki şartlar, bir cihazın StrongBox olarak kabul edilmek için karşılaması gereken şartları tanımlar.
Özel bir güvenli işlemciye sahip cihaz uygulamaları:
- [C-SR] StrongBox'u desteklemeniz önemle ÖNERİLİR. StrongBox, gelecekteki bir sürümde zorunlu hale gelecektir.
Cihaz uygulamaları StrongBox'u destekliyorsa:
-
[C-1-1] FEATURE_STRONGBOX_KEYSTORE bildirilmelidir.
-
[C-1-2] Anahtar deposunu desteklemek ve kullanıcı kimlik doğrulamasını güvence altına almak için kullanılan özel güvenli donanım sağlanmalıdır. Özel güvenli donanım, başka amaçlar için de kullanılabilir.
-
[C-1-3] Uygulama işlemcisiyle (AP) hiçbir önbellek, DRAM, yardımcı işlemci veya diğer çekirdek kaynaklarını paylaşmayan ayrı bir CPU'ya sahip OLMALIDIR.
-
[C-1-4] AP ile paylaşılan çevre birimlerinin StrongBox işlemeyi hiçbir şekilde değiştirememesini veya StrongBox'tan bilgi edinememesini SAĞLAMALIDIR. AP, StrongBox'a erişimi devre dışı bırakabilir veya engelleyebilir.
-
[C-1-5] Makul doğruluk (+-%10) değerine sahip ve AP tarafından değiştirilemeyen bir dahili saate SAHİP OLMALIDIR.
-
[C-1-6] Eşit dağıtılmış ve tahmin edilemeyen çıkışlar üreten gerçek bir rastgele sayı üreteci OLMALIDIR.
-
[C-1-7] Fiziksel penetrasyona ve aksamalara karşı direnç de dahil olmak üzere bozulmaya karşı dirençli OLMALIDIR.
-
[C-1-8] Güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla bilgi sızıntısına karşı direnç de dahil olmak üzere yan kanal direncine SAHİP OLMALIDIR.
-
[C-1-9] İçeriklerin gizliliğini, bütünlüğünü, özgünlüğünü, tutarlılığını ve güncelliğini sağlayan güvenli bir depolama alanına SAHİP OLMALIDIR. Depolama alanı, StrongBox API'leri tarafından izin verilen durumlar dışında okunaMAZ veya değiştirilemez.
-
[C-1-3] ile [C-1-9] arasındaki politikalara uygunluğu doğrulamak için cihaz uygulamalarında:
- [C-1-10] Güvenli IC Koruma Profili BSI-CC-PP-0084-2014'e göre sertifikalandırılmış veya Akıllı Kartlara Saldırı Potansiyeli Ortak Kriterleri Uygulaması'na göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesini içeren ulusal olarak onaylı bir test laboratuvarı tarafından değerlendirilmiş donanımı İÇERMELİDİR.
- [C-1-11] Akıllı Kartlara Saldırı Potansiyeli Ortak Kriterleri Uygulaması'na göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesini içeren, ulusal olarak onaylı bir test laboratuvarı tarafından değerlendirilen donanım yazılımını İÇERMELİDİR.
- [C-SR] AVA_VAN.5 ile desteklenen Güvenlik Hedefi, Değerlendirme Güvencesi Seviyesi (EAL) 5 kullanılarak değerlendirilen donanımın eklenmesi önemle ÖNERİLİR. EAL 5 sertifikası, gelecekteki bir sürümde zorunlu hale gelecektir.
-
[C-SR]'nin, şirket içinden saldırılara karşı direnç (IAR) sağlaması önemle ÖNERİLİR. Bu, donanım yazılımı imzalama anahtarlarına erişimi olan bir şirket çalışanının, StrongBox'un gizli bilgileri sızdırmasına, işlevsel güvenlik şartlarını atlatmasına veya başka bir şekilde hassas kullanıcı verilerine erişmesine neden olan donanım yazılımı üretemeyeceği anlamına gelir. IAR'ın uygulanması için önerilen yöntem, donanım yazılımı güncellemelerine yalnızca birincil kullanıcı şifresi IAuthSecret HAL aracılığıyla sağlandığında izin vermektir.
9.11.3. Identity Credential
Kimlik Bilgisi Sistemi, android.security.identity.*
paketindeki tüm API'lerin uygulanmasıyla tanımlanır ve elde edilir. Bu API'ler, uygulama geliştiricilerin kullanıcı kimlik belgelerini depolamalarına ve almalarını sağlar. Cihaz uygulamaları:
- [C-SR] Kimlik Bilgisi Sistemi'ni uygulamanız önemle ÖNERİLİR.
Cihaz uygulamaları Kimlik Bilgisi Sistemi'ni uygularsa:
-
[C-0-1] IdentityCredentialStore#getInstance() yöntemi için null olmayan bir değer DÖNDÜRMELİDİR.
-
[C-0-2] Kimlik Kimlik Bilgisi Sistemi'ni (ör.
android.security.identity.*
API'leri), çekirdekte ve daha üst düzeyde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda güvenilir bir uygulamayla iletişim kuran kodla UYGULAMALIDIR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. -
[C-0-3] Kimlik Kimlik Bilgisi Sistemi'ni (ör.
android.security.identity.*
API'leri) uygulamak için gereken kriptografik işlemler tamamen güvenilir uygulamada YAPILMALIDIR ve gizli anahtar materyali, üst düzey API'ler (ör. createEphemeralKeyPair() yöntemi) tarafından özel olarak gerekli olmadığı sürece yalıtılmış yürütme ortamından ASLA ayrılmamalıdır. -
[C-0-4] Güvenilir uygulama, Android'de kötüye kullanım veya güvenlik ihlali olsa bile güvenlik özelliklerinin etkilenmeyeceği şekilde uygulanmalıdır (ör. erişim denetimi koşulları karşılanmadığı sürece kimlik bilgisi verileri yayınlanmaz, MAC'ler rastgele veriler için üretilemez).
9.12. Veri Silme
Tüm cihaz uygulamaları:
- [C-0-1] Kullanıcılara "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirebilecekleri bir mekanizma SUNMALIDIR.
- [C-0-2] userdata dosya sistemindeki tüm veriler silinmelidir.
- [C-0-3] Verileri NIST SP800-88 gibi ilgili endüstri standartlarını karşılayacak şekilde SİLMELİYDİR.
- [C-0-4] Birincil kullanıcının Cihaz Politikası Denetleyici uygulaması tarafından
DevicePolicyManager.wipeData()
API çağrıldığında yukarıdaki "Fabrika Verilerini Sıfırla" işlemini TETİKLEMELİDİR. - Yalnızca mantıksal veri silme işlemi gerçekleştiren hızlı bir veri silme seçeneği SUNABİLİR.
9.13. Güvenli Önyükleme 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ına olanak tanıyan Güvenli Modda Başlatma modunu sunar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcıya zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı sunar.
Cihaz uygulamaları şunlardır:
- [SR] STRONGLY RECOMMENDED to implement Safe Boot Mode.
Cihaz uygulamaları Güvenli Önyükleme Modu'nu uygularsa:
-
[C-1-1] Kullanıcıya, üçüncü taraf uygulaması bir cihaz politikası denetleyicisi olup
UserManager.DISALLOW_SAFE_BOOT
işaretini doğru olarak ayarlamadığı sürece, cihaza yüklenen üçüncü taraf uygulamaları tarafından kesintiye uğramayacak şekilde Güvenli Modda Başlatma moduna girme seçeneği ZORUNLUDUR. -
[C-1-2] Kullanıcıya, güvenli modda üçüncü taraf uygulamalarını kaldırma olanağı SUNMALIDIR.
-
Kullanıcıya, normal önyüklemeden farklı bir iş akışı kullanarak önyükleme menüsünden Güvenli Önyükleme moduna girme seçeneği SUNMALIDIR.
9.14. Otomotiv Araç Sistemi İzolasyon
Android Automotive cihazların, CAN bus gibi araç ağları üzerinden mesaj gönderip almak için araç HAL'ini kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.
Bu alt sistemlerle kötü amaçlı veya kasıtsız etkileşimi önlemek için Android framework katmanlarının altına güvenlik özellikleri uygulanarak veri alışverişi güvence altına alınabilir.
9.15. Abonelik Planları
"Abonelik planları", bir mobil operatör tarafından SubscriptionManager.setSubscriptionPlans()
aracılığıyla sağlanan faturalandırma ilişkisi planı ayrıntılarını ifade eder.
Tüm cihaz uygulamaları:
- [C-0-1] Abonelik planlarını yalnızca başlangıçta sağlayan mobil operatör uygulamasına döndürmelidir.
- [C-0-2] Abonelik planlarını uzaktan yedeklememeli veya yüklememeli.
- [C-0-3] Yalnızca geçerli abonelik planları sunan mobil operatör uygulamasından
SubscriptionManager.setSubscriptionOverrideCongested()
gibi geçersiz kılma işlemlerine izin VERMELİDİR.
9.16. Uygulama Verileri Taşıma
Cihaz uygulamaları, verileri bir cihazdan başka bir cihaza taşıma özelliğine sahipse ve kopyalanan uygulama verilerini android:fullBackupContent özelliği aracılığıyla uygulama geliştiricisi tarafından manifest dosyasında yapılandırılanla sınırlandırmıyorsa:
- [C-1-1] Kullanıcının 9.11.1 Güvenli Kilit Ekranı ve Kimlik Doğrulaması bölümünde açıklandığı şekilde birincil kimlik doğrulaması ayarlamadığı cihazlardan uygulama verisi aktarımı BAŞLATMAMALIDIR.
- [C-1-2] Herhangi bir veri aktarılmadan önce kaynak cihazdaki birincil kimlik doğrulamayı güvenli bir şekilde onaylamalı ve kaynak cihazdaki verileri kopyalama niyetini kullanıcıdan onaylamalıdır.
- [C-1-3] Cihazdan cihaza taşıma işleminde 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ı tasdiki KULLANMALIDIR.
- [C-1-4] Uygulama verileri, yalnızca hedef cihazdaki aynı uygulamaya, aynı paket adıyla VE imzalama sertifikasıyla taşınmalıdır.
- [C-1-5] Ayarlar menüsünde, kaynak cihazdan cihaza veri taşıma işlemiyle veri taşındığını belirten bir gösterge OLMALIDIR. Kullanıcılar bu göstergeyi kaldırAMAMALIDIR.
10. Yazılım Uyumluluğu Testi
Cihaz uygulamaları bu bölümde açıklanan tüm testleri ZORUNLU ŞEKİLDE geçmelidir. Ancak hiçbir yazılım test paketinin her şeyi kapsamadığını unutmayın. Bu nedenle, cihaz uygulayıcılarının Android Açık Kaynak Projesi'nde bulunan Android referans ve tercih edilen uygulamasında mümkün olduğunca az sayıda değişiklik yapması ŞİDDETLE ÖNERİLİR. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara neden olan hataların ortaya çıkma riskini en aza indirir.
10.1. Compatibility Test Suite
Cihaz uygulamaları:
-
[C-0-1] Cihazdaki nihai gönderim yazılımını kullanarak Android Açık Kaynak Projesi'nde bulunan Android Uyumluluk Test Paketi'ni (CTS) ZORUNLU ŞEKİLDE geçmelidir.
-
[C-0-2] CTS'de belirsizlik olduğunda ve referans kaynak kodunun bölümlerinin yeniden uygulandığı durumlarda uyumluluğu SAĞLAMALIDIR.
CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Her yazılım gibi CTS de hata içerebilir. CTS, bu Uyumluluk Tanımı'ndan bağımsız olarak sürümlendirilir ve Android 11 için CTS'nin birden fazla düzeltmesi yayınlanabilir.
Cihaz uygulamaları:
-
[C-0-3] Cihaz yazılımı tamamlandığında mevcut olan en son CTS sürümünü ZORUNLU ŞEKİLDE geçmelidir.
-
Mümkün olduğunca Android Açık Kaynak ağacındaki referans uygulamayı kullanmalıdır.
10.2. CTS Doğrulayıcı
CTS Doğrulayıcı, Uyumluluk Test Paketi'ne dahildir ve kameranın ve sensörlerin doğru çalışması gibi otomatik bir sistem tarafından test edilemeyecek işlevleri test etmek için bir operatör tarafından çalıştırılmak üzere tasarlanmıştır.
Cihaz uygulamaları:
- [C-0-1] CTS doğrulayıcısında geçerli tüm durumları doğru şekilde YÜRÜTMELİDİR.
CTS Doğrulayıcı, isteğe bağlı olan bazı donanımlar da dahil olmak üzere birçok donanım türü için testler içerir.
Cihaz uygulamaları:
- [C-0-2] Sahip olduğu donanımla ilgili tüm testleri GEÇMELİDİR. Örneğin, bir cihazda ivmeölçer varsa CTS Doğrulayıcı'da ivmeölçer testini doğru şekilde yürütmelidir.
Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test durumları atlanabilir veya çıkarılabilir.
- [C-0-2] Her cihaz ve her derleme, yukarıda belirtildiği gibi CTS Doğrulayıcı'yı doğru şekilde çalıştırmalıdır. Ancak birçok derleme birbirine çok benzediğinden, cihaz uygulayıcılarının yalnızca önemsiz farklılıklar gösteren derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Daha açık belirtmek gerekirse, CTS Doğrulayıcı'yı yalnızca dahil edilen yerel ayarların, markanın vb. kümesiyle geçmiş bir uygulamadan farklı olan cihaz uygulamaları CTS Doğrulayıcı testini ATLAYABİLİR.
11. Güncellenebilir Yazılımlar
-
[C-0-1] Cihaz uygulamalarında, sistem yazılımının tamamını değiştirecek bir mekanizma BULUNMASI GEREKİR. Mekanizmanın "canlı" yükseltmeler yapması gerekmez. Yani cihazın yeniden başlatılması GEREKEBİLİR. Cihazın önceden yüklenmiş yazılımının tamamını değiştirebildiği sürece herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:
- Yeniden başlatma yoluyla çevrimdışı güncellemeyle "Kablosuz (OTA)" indirme.
- Ana makine PC'den USB üzerinden "bağlantılı" güncellemeler.
- Yeniden başlatma ve çıkarılabilir depolama alanındaki bir dosyadan güncelleme yoluyla "Çevrimdışı" güncellemeler.
-
[C-0-2] Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri DESTEKLEMELİDİR. Yani güncelleme mekanizması, uygulamanın gizli verilerini ve uygulamanın paylaşılan verilerini muhafaza ETMELIDİR. Yukarı akış Android yazılımının bu koşulu karşılayan bir güncelleme mekanizması içerdiğini unutmayın.
-
[C-0-3] Güncellemenin tamamı İMZALANACAK ve cihaz üzerindeki güncelleme mekanizması, güncellemeyi ve imzayı cihazda depolanan herkese açık bir anahtarla doğrulayacaktır.
- [C-SR] İmza mekanizmasının, güncellemeyi SHA-256 ile karma oluşturması ve ECDSA NIST P-256 kullanarak karma oluşturma işlemini ortak anahtarla doğrulaması önemle ÖNERİLİR.
Cihaz uygulamaları, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sınırsız veri bağlantısı desteği içeriyorsa:
- [C-1-1] Yeniden başlatma yoluyla çevrimdışı güncellemeyle OTA indirmelerini desteklemelidir.
Android 6.0 ve sonraki sürümlerle kullanıma sunulan cihaz uygulamalarında güncelleme mekanizması, OTA'dan sonra sistem resminin ikili olarak beklenen sonuçla aynı olduğunu doğrulamayı DESTEKLEMELİDİR. Android 5.1'den beri eklenen, yayın öncesi Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu koşulu karşılar.
Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP, bu özelliği önyükleme denetimi HAL'ini kullanarak uygular.
Bir cihaz uygulamasında, cihaz piyasaya sürüldükten sonra ancak Android Uyumluluk Ekibi ile yapılan danışma sonucunda belirlenen makul ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa:
- [C-2-1] Cihaz uygulayıcısı, hatayı az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesi aracılığıyla DÜZELTMELİDİR.
Android, cihaz sahibi uygulamasının (varsa) sistem güncellemelerinin yüklenmesini kontrol etmesine olanak tanıyan özellikler içerir. Cihazlar için sistem güncelleme alt sistemi android.software.device_admin iznini bildirirse:
- [C-3-1] SystemUpdatePolicy sınıfında açıklanan davranışı UYGULAMALIDIR.
12. Doküman Değişiklik Günlüğü
Bu sürümde Uyumluluk Tanımı'nda yapılan değişikliklerin özeti için:
Kişiler bölümlerindeki değişikliklerin özeti:
- Giriş
- Cihaz Türleri
- Yazılım
- Uygulama Paketleme
- 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ülemeyle İlgili İpuçları
Değişiklikler aşağıdaki şekilde işaretlenir:
-
CDD
Uyumluluk koşullarında önemli değişiklikler. -
Dokümanlar
Kozmetik veya derlemeyle ilgili değişiklikler.
En iyi görüntüleme için pretty=full
ve no-merges
URL parametrelerini değişiklik günlüğü URL'lerinize ekleyin.
13. Bize Ulaşın
Android uyumluluk forumuna katılarak açıklama isteyebilir veya dokümanda yer almadığını düşündüğünüz sorunları gündeme getirebilirsiniz.