1. Giriş
Bu belgede, cihazların Android 11 ile uyumlu olması için karşılanması gereken şartlar listelenmektedir.
"MUST" ("GEREKLİ"), "MUST NOT" ("GEREKLİ DEĞİL"), "REQUIRED" ("ZORUNLU"), "SHALL" ("OLACAK"), "SHALL NOT" ("OLMAYACAK"), "SHOULD" ("OLMALI"), "SHOULD NOT" ("OLMAMALI"), "RECOMMENDED" ("ÖNERİLİR"), "MAY" ("OLABİLİR") ve "OPTIONAL" ("İSTEĞE BAĞLI") ifadelerinin kullanımı, RFC2119'da tanımlanan IETF standardına uygundur.
Bu belgede kullanıldığı şekliyle "cihaz uygulayıcı" veya "uygulayıcı", Android 11'i çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluş anlamına gelir. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Cihaz uygulamalarının Android 11 ile uyumlu olarak kabul edilebilmesi için referans yoluyla dahil edilen tüm belgeler de dahil olmak üzere bu Uyumluluk Tanımı'nda belirtilen şartları KARŞILAMASI GEREKİR.
Bu tanımın veya bölüm 10'da açıklanan yazılım testlerinin sessiz, belirsiz ya da eksik olduğu durumlarda, mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcısının sorumluluğundadır.
Bu nedenle, Android Açık Kaynak Projesi hem referans hem de tercih edilen Android uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nde bulunan "yukarı akış" kaynak koduna dayandırmaları ŞİDDETLE TAVSİYE EDİLİR. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilse de yazılım testlerini geçmek önemli ölçüde zorlaşacağından bu uygulamanın kullanılmaması ŞİDDETLE TAVSİYE EDİLİR. Compatibility Test Suite de dahil olmak üzere standart Android uygulamasıyla tam davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşenlerin değiştirilmesi ve modifikasyonlarının bu belgeyle açıkça yasaklandığını unutmayın.
Bu belgede bağlantısı verilen kaynakların çoğu doğrudan veya dolaylı olarak Android SDK'dan alınmıştır ve bu SDK'nın dokümanlarındaki bilgilerle işlevsel olarak aynıdır. Bu Uyumluluk Tanımlama Belgesi veya Uyumluluk Test Paketi'nin SDK dokümanlarıyla uyuşmadığı durumlarda, SDK dokümanları yetkili olarak kabul edilir. Bu belgedeki bağlantılı kaynaklarda sağlanan tüm teknik ayrıntılar, dahil edilerek bu Uyumluluk Tanımı'nın bir parçası olarak kabul edilir.
1.1 Belge Yapısı
1.1.1. Cihaz Türüne Göre Gereksinimler
2. Bölüm, belirli bir cihaz türü için geçerli olan tüm koşulları içerir. Bölüm 2'nin her alt bölümü belirli bir cihaz türüne ayrılmıştır.
Herhangi bir Android cihaz uygulaması için geçerli olan diğer tüm koşullar, Bölüm 2'den sonraki bölümlerde listelenmiştir. Bu şartlar, bu belgede "Temel Şartlar" olarak adlandırılır.
1.1.2. Şart Kimliği
ZORUNLU koşullar için koşul kimliği atanır.
- Kimlik yalnızca ZORUNLU koşullar için atanır.
- ŞİDDETLE TAVSİYE EDİLEN koşullar [SR] olarak işaretlenir ancak kimlik atanmaz.
- Kimlik; Cihaz Türü Kimliği, Durum Kimliği ve Şart Kimliği'nden (ör. C-0-1) oluşur.
Her kimlik aşağıda tanımlanmıştır:
- Cihaz Türü Kimliği (2. Cihaz Türleri)
- C: Temel (Tüm Android cihaz uygulamaları için geçerli olan şartlar)
- H: Android el cihazı
- T: Android Television cihaz
- Y: Android Automotive uygulaması
- W: Android Watch implementation
- Sekme: Android tablet uygulaması
- Koşul kimliği
- Koşulsuz olduğunda bu kimlik 0 olarak ayarlanır.
- Koşul zorunlu olduğunda 1. koşul için 1 atanır ve aynı bölüm ile aynı cihaz türünde sayı 1 artar.
- Şart kimliği
- Bu kimlik 1'den başlar ve aynı bölüm ile aynı koşulda 1'er artar.
1.1.3. 2. Bölümdeki şart kimliği
Bölüm 2'deki Şart Kimliği, ilgili bölüm kimliğiyle başlar ve yukarıda açıklanan Şart Kimliği ile devam eder.
- Bölüm 2'deki kimlik şu bölümlerden oluşur : Bölüm Kimliği / Cihaz Türü Kimliği - Durum Kimliği - Ş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 yığını sağlasa da uygulama dağıtım ekosistemi nispeten daha iyi kurulmuş birkaç cihaz türü vardır.
Bu bölümde, söz konusu cihaz türleri ve her cihaz türü için geçerli olan ek şartlar ve öneriler açıklanmaktadır.
Açıklanan cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamaları, bu Uyumluluk Tanımı'nın diğer bölümlerindeki tüm koşulları karşılamaya DEVAM ETMELİDİR.
2.1 Cihaz Yapılandırmaları
Cihaz türüne göre donanım yapılandırmasındaki temel farklılıklar için bu bölümdeki cihazlara özgü gereksinimlere bakın.
2.2. Elde Taşınabilir Cihaz Gereksinimleri
Android el cihazı, genellikle elde tutularak kullanılan bir Android cihaz uygulamasıdır (ör. MP3 çalar, telefon veya tablet).
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa elde taşınabilir cihaz olarak sınıflandırılır:
- Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
- 3,3 inç (veya Android 11'den önceki bir API seviyesinde kullanıma sunulan cihazlar için 2,5 inç) ile 8 inç arasında fiziksel bir diyagonal ekran boyutuna sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar, Android el cihazı uygulamalarına özeldir.
2.2.1. Donanım
Elde taşınabilir cihaz uygulamaları:
- [7.1.1.1/H-0-1] Bu belgede açıklanan tüm şartları karşılayan en az bir Android uyumlu ekran OLMALIDIR.
- [7.1.1.3/H-SR] Kullanıcılara ekran boyutunu (ekran yoğunluğu) değiştirme olanağı sunmaları ŞİDDETLE TAVSİYE EDİLİR.
Elde taşınabilir cihaz uygulamaları, yazılımla ekran döndürmeyi destekliyorsa:
- [7.1.1.1/H-1-1]* Üçüncü taraf uygulamaları için kullanılabilen mantıksal ekran, kısa kenarlarda en az 5 cm, uzun kenarlarda ise en az 6,8 cm olmalıdır. Bu belgedeki API düzeyinden daha eski bir API düzeyinde kullanıma sunulan cihazlar bu şarttan muaftır.
Elde taşınabilir cihaz uygulamaları, yazılımla ekran döndürmeyi desteklemiyorsa:
- [7.1.1.1/H-2-1]* Üçüncü taraf uygulamaları için kullanılabilen mantıksal ekran, kısa kenarlarda en az 2,7 inç olmalıdır. Bu belgedeki API düzeyinden daha eski bir API düzeyinde kullanıma sunulan cihazlar bu şarttan muaftır.
Elde taşınabilir cihaz uygulamaları , Configuration.isScreenHdr()
aracılığıyla yüksek dinamik aralıklı ekranları desteklediğini iddia ediyorsa:
- [7.1.4.5/H-1-1]
EGL_EXT_gl_colorspace_bt2020_pq
,EGL_EXT_surface_SMPTE2086_metadata
,EGL_EXT_surface_CTA861_3_metadata
,VK_EXT_swapchain_colorspace
veVK_EXT_hdr_metadata
uzantıları için destek reklamı YAPILMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [7.1.4.6/H-0-1] Cihazın,
graphics.gpu.profiler.support
sistem özelliği aracılığıyla GPU profil oluşturma özelliğini destekleyip desteklemediğini bildirmesi ZORUNLUDUR.
Elde taşınabilir cihaz uygulamaları, bir sistem özelliği graphics.gpu.profiler.support
aracılığıyla destek beyan ediyorsa:
- [7.1.4.6/H-1-1] Perfetto dokümanlarında tanımlanan GPU sayaçları ve GPU oluşturma aşamaları şemasına uygun bir protobuf izini çıkış olarak bildirmelidir.
- [7.1.4.6/H-1-2] gpu counter trace packet proto'ya uygun olarak cihazın GPU sayaçları için uygun değerler RAPORLANMALIDIR.
- [7.1.4.6/H-1-3] render stage trace packet proto'ya uygun olarak cihazın GPU RenderStages'i için uygun değerler RAPORLANMALIDIR.
- [7.1.4.6/H-1-4] MUST report a GPU Frequency tracepoint as specified by the format: power/gpu_frequency.
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 desteğini İÇERMELİDİR. Yani, cihaz uygulamaları uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri değiştirmemeli ve uyumluluk modunun davranışını değiştirmemelidir.
- [7.2.1/H-0-1] Üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek içermelidir.
- [7.2.3/H-0-3] Ana ekranı sağlayan tüm Android uyumlu ekranlarda Ana ekran işlevi SAĞLANMALIDIR.
- [7.2.3/H-0-4] Android ile uyumlu tüm ekranlarda Geri işlevi, Android ile uyumlu ekranlardan en az birinde ise Son Kullanılanlar işlevi SAĞLANMALIDIR.
- [7.2.3/H-0-2] Geri işlevinin (
KEYCODE_BACK
) hem normal hem de uzun basma etkinliği, ön plandaki uygulamaya GÖNDERİLMELİDİR. Bu etkinlikler sistem tarafından KULLANILMAMALI ve Android cihazın dışından (ör. Android cihaza bağlı harici donanım klavyesi) tetiklenebilir. - [7.2.4/H-0-1] Dokunmatik ekran girişi DESTEKLENMELİDİR.
- [7.2.4/H-SR] Ön plandaki etkinlik bu uzun basma etkinliklerini işlemediği takdirde, kullanıcının seçtiği asistan uygulamasının (diğer bir deyişle VoiceInteractionService'i uygulayan uygulama) veya
KEYCODE_MEDIA_PLAY_PAUSE
ya daKEYCODE_HEADSETHOOK
tuşuna uzun basıldığındaACTION_ASSIST
işleyen bir etkinliğin başlatılması ŞİDDETLE TAVSİYE EDİLİR. - [7.3.1/H-SR] 3 eksenli ivme ölçer içermeleri ŞİDDETLE TAVSİYE EDİLİR.
Elde taşınabilir cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/H-1-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.
Elde taşınabilir cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa:
- [7.3.3/H-2-1] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile, GNSS ölçümleri bulunur bulunmaz BİLDİRİLMELİDİR.
- [7.3.3/H-2-2] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekareden daha az ivmeyle hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıkları ve sahte aralık hızları, zamanın en az% 95'inde bildirilmelidir.
Elde taşınabilir cihaz uygulamalarında 3 eksenli jiroskop varsa:
- [7.3.4/H-3-1] En az 100 Hz sıklıkta etkinlik bildirebilmelidir.
- [7.3.4/H-3-2] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Sesli arama yapabilen ve getPhoneType
içinde PHONE_TYPE_NONE
dışında bir değer belirtebilen elde taşınır cihaz uygulamaları:
- [7.3.8/H] Yakınlık sensörü İÇERMELİDİR.
Elde taşınabilir cihaz uygulamaları:
- [7.3.11/H-SR] 6 serbestlik dereceli poz sensörünü desteklemeleri ÖNERİLİR.
- [7.4.3/H] Bluetooth ve Bluetooth LE desteği İÇERMELİDİR.
Elde taşınabilir cihaz uygulamaları, ölçülü bağlantı içeriyorsa:
- [7.4.7/H-1-1] Veri tasarrufu modu SAĞLANMALIDIR.
Elde taşınabilir 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 bu alan 50 ile 90 derece arasında OLMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [7.6.1/H-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
- [7.6.1/H-0-2] Çekirdek ve kullanıcı alanı için 1 GB'tan az bellek olduğunda
ActivityManager.isLowRamDevice()
için "true" değeri DÖNDÜRÜLMELİDİR.
Elde taşınabilir cihaz uygulamaları yalnızca 32 bit ABI'yi desteklediğini beyan ediyorsa:
-
[7.6.1/H-1-1] Varsayılan ekranda qHD'ye kadar (ör. FWVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 416 MB OLMALIDIR.
-
[7.6.1/H-2-1] Varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 592 MB OLMALIDIR.
-
[7.6.1/H-3-1] Varsayılan ekranda FHD'ye (ör. WSXGA+) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR.
-
[7.6.1/H-4-1] Varsayılan ekranda QHD'ye (ör. QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1344 MB OLMALIDIR.
Elde taşınabilir cihaz uygulamaları herhangi bir 64 bit ABI'yi (32 bit ABI ile veya 32 bit ABI olmadan) desteklediğini beyan ediyorsa:
-
[7.6.1/H-5-1] Varsayılan ekranda qHD'ye kadar (ör. FWVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 816 MB OLMALIDIR.
-
[7.6.1/H-6-1] Varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 944 MB OLMALIDIR.
-
[7.6.1/H-7-1] Varsayılan ekranda FHD'ye (ör.WSXGA+) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1. 280 MB OLMALIDIR.
-
[7.6.1/H-8-1] Varsayılan ekranda QHD'ye (ör. QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1824 MB OLMALIDIR.
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Elde taşınabilir cihaz uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan az veya 1 GB kullanılabilir bellek içeriyorsa:
- [7.6.1/H-9-1]
android.hardware.ram.low
özellik işaretini BEYAN ETMELİDİR. - [7.6.1/H-9-2] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1,1 GB kalıcı depolama alanı OLMALIDIR.
Elde taşınabilir cihaz uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan fazla bellek içeriyorsa:
- [7.6.1/H-10-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
android.hardware.ram.normal
özellik bayrağını BEYAN ETMELİDİR.
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ı İÇERMELİDİR.
Elde taşınabilir cihaz uygulamaları, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.1/H-1-1] Android Open Accessory (AOA) API'si uygulanmalıdır.
Elde taşınabilir cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.2/H-1-1] Android SDK belgelerinde belirtildiği şekilde USB ses sınıfı uygulanmalıdır.
Elde taşınabilir cihaz uygulamaları:
- [7.8.1/H-0-1] Mikrofon içermelidir.
- [7.8.2/H-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.output
beyan edilmelidir.
Elde taşınabilir cihaz uygulamaları, VR modunu desteklemeye yönelik tüm performans koşullarını karşılayabiliyor ve VR modu desteği içeriyorsa:
- [7.9.1/H-1-1]
android.hardware.vr.high_performance
özellik bayrağı BELİRTİLMELİDİR. - [7.9.1/H-1-2]
android.service.vr.VrListenerService
işlevini uygulayan ve VR uygulamaları tarafındanandroid.app.Activity#setVrModeEnabled
aracılığıyla etkinleştirilebilen bir uygulama İÇERMELİDİR.
Elde taşınabilir cihaz uygulamaları, ana makine modunda bir veya daha fazla USB-C bağlantı noktası içeriyorsa ve bölüm 7.7.2'deki şartlara ek olarak (USB ses sınıfı) uyguluyorsa:
- [7.8.2.2/H-1-1] HID kodlarının aşağıdaki yazılım eşlemesi SAĞLANMALIDIR:
İşlev | Eşlemeler | Bağlam | Davranış |
---|---|---|---|
A |
HID kullanım sayfası: 0x0C HID kullanımı: 0x0CD Kernel anahtarı: KEY_PLAYPAUSE Android anahtarı: KEYCODE_MEDIA_PLAY_PAUSE
|
Medya oynatma |
Giriş: Kısa basın Çıkış: Oynatma veya duraklatma |
Giriş: Uzun basın Çıkış: Sesli komutu başlatma Gönderir: Cihaz kilitliyse veya ekranı kapalıysa android.speech.action.VOICE_SEARCH_HANDS_FREE , aksi takdirde android.speech.RecognizerIntent.ACTION_WEB_SEARCH gönderir.
|
|||
Gelen arama |
Giriş: Kısa basın Çıkış: Aramayı kabul etme |
||
Giriş: Uzun basın Çıkış: Aramayı reddetme |
|||
Devam eden arama |
Giriş: Kısa basın Çıkış: Görüşmeyi sonlandırma |
||
Giriş: Uzun basın Çıkış: Mikrofonun sesini kapatma veya açma |
|||
B |
HID kullanım sayfası: 0x0C HID kullanımı: 0x0E9 Kernel anahtarı: KEY_VOLUMEUP Android anahtarı: VOLUME_UP
|
Medya oynatma, Devam eden görüşme |
Giriş: Kısa veya uzun basın Çıkış: Sistem veya kulaklık sesini yükseltir. |
C |
HID kullanım sayfası: 0x0C HID kullanımı: 0x0EA Çekirdek anahtarı: KEY_VOLUMEDOWN Android anahtarı: VOLUME_DOWN
|
Medya oynatma, Devam eden görüşme |
Giriş: Kısa veya uzun basın Çıkış: Sistem veya kulaklık sesini azaltır. |
D |
HID kullanım sayfası: 0x0C HID kullanımı: 0x0CF Kernel anahtarı: KEY_VOICECOMMAND Android anahtarı: KEYCODE_VOICE_ASSIST
|
Tümü'ne dokunun. Herhangi bir örnekte tetiklenebilir. |
Giriş: Kısa veya uzun basın Çıkış: Sesli komutu başlatma |
- [7.8.2.2/H-1-2] Bir fiş takıldığında ACTION_HEADSET_PLUG tetiklenmelidir ancak yalnızca bağlı terminalin türünü belirlemek için USB ses arayüzleri ve uç noktaları düzgün şekilde numaralandırıldıktan sonra tetiklenmelidir.
0x0302 türündeki USB ses terminali algılandığında:
- [7.8.2.2/H-2-1] "microphone" ekstrası 0 olarak ayarlanmış Intent ACTION_HEADSET_PLUG'ı yayınLAMALIDIR.
0x0402 türündeki USB ses terminali algılandığında:
- [7.8.2.2/H-3-1] "microphone" ekstrası 1 olarak ayarlanmış ACTION_HEADSET_PLUG Intent'ini yayınLAMALIDIR.
USB çevre birimi bağlıyken AudioManager.getDevices() API'si ç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ünde bir cihaz listelenmeli ve role isSink() olmalıdır.
-
[7.8.2.2/H-4-2] USB ses terminali türü alanı 0x0402 ise AudioDeviceInfo.TYPE_USB_HEADSET türünde bir cihazı ve role isSink() değerini LİSTELEMELİDİR.
-
[7.8.2.2/H-4-3] USB ses terminali türü alanı 0x0402 ise AudioDeviceInfo.TYPE_USB_HEADSET türünde ve role isSource() olan bir cihaz LİSTELENMELİDİR.
-
[7.8.2.2/H-4-4] USB ses terminali türü alanı 0x603 ise AudioDeviceInfo.TYPE_USB_DEVICE türünde ve role isSink() olan bir cihazı LİSTELEMELİDİR.
-
[7.8.2.2/H-4-5] USB ses terminali türü alanı 0x604 ise AudioDeviceInfo.TYPE_USB_DEVICE türünde bir cihazı ve role isSource() değerini listelemelidir.
-
[7.8.2.2/H-4-6] USB ses terminali türü alanı 0x400 ise AudioDeviceInfo.TYPE_USB_DEVICE türünde ve role isSink() olan bir cihaz LİSTELENMELİDİR.
-
[7.8.2.2/H-4-7] USB ses terminali türü alanı 0x400 ise AudioDeviceInfo.TYPE_USB_DEVICE türünde ve role isSource() olan bir cihazı LİSTELEMELİDİR.
-
[7.8.2.2/H-SR] USB tanımlayıcılarının numaralandırılması, terminal türlerinin tanımlanması ve Intent ACTION_HEADSET_PLUG'ın 1.000 milisaniyeden kısa sürede yayınlanması için USB-C ses çevre birimi bağlandığında ŞİDDETLE TAVSİYE EDİLİR.
Elde taşınabilir cihaz uygulamaları en az bir dokunsal aktüatör içeriyorsa:
- [7.10/H-SR]* Eksantrik dönen kütleli (ERM) dokunsal aktüatör(titreşim motoru) KULLANILMAMASI ŞİDDETLE TAVSİYE EDİLİR.
- [7.10/H]* Aktüatörün yerleşimi, cihazın genellikle elle tutulduğu veya dokunulduğu yere yakın olmalıdır.
- [7.10/H-SR]* android.view.HapticFeedbackConstants içinde net dokunsal geri bildirimler 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ı ŞİDDETLE TAVSİYE EDİLİR.
- [7.10/H-SR]* android.os.VibrationEffect'te net dokunsal geri bildirimler için (EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK ve EFFECT_DOUBLE_CLICK) ve android.os.VibrationEffect.Composition'da zengin dokunsal geri bildirimler için (PRIMITIVE_CLICK ve PRIMITIVE_TICK) tüm herkese açık sabitlerin uygulanması ŞİDDETLE TAVSİYE EDİLİR.
- [7.10/H-SR]* Bu bağlı dokunsal sabit eşlemelerin kullanılması ŞİDDETLE TAVSİYE EDİLİR.
- [7.10/H-SR]* createOneShot() ve createWaveform() API'leri için kalite değerlendirmesi yapılması ŞİDDETLE TAVSİYE EDİLİR.
- [7.10/H-SR]* android.os.Vibrator.hasAmplitudeControl() çalıştırılarak genlik ölçeklenebilirliği özelliklerinin doğrulanması ŞİDDETLE TAVSİYE EDİLİR.
Doğrusal rezonans aktüatörü (LRA), kütlenin istenen hareket yönünde hareket ettiği baskın bir rezonans frekansına sahip tek kütleli yay sistemidir.
Elde taşınabilir cihaz uygulamaları en az bir doğrusal rezonans aktüatörü içeriyorsa:
- [7.10/H]* Haptik aktüatörü dikey yönün X ekseninde hareket ettirmelidir.
Elde taşınabilir cihaz uygulamalarında X eksenli doğrusal rezonans aktüatörü (LRA) olan bir dokunsal aktüatör varsa:
- [7.10/H-SR]* X ekseni LRA'nın rezonans frekansının 200 Hz'in altında olması ŞİDDETLE TAVSİYE EDİLİR.
Eldeki cihaz uygulamaları, dokunsal sabitler eşlemesini takip ediyorsa:
- [7.10/H-SR]* Haptik sabitler için kalite değerlendirmesi yapılması ŞİDDETLE TAVSİYE EDİLİR.
2.2.2. Multimedya
Elde taşınabilir cihaz uygulamaları, aşağıdaki ses kodlama ve kod çözme biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamalarına sunmalıdır:
- [5.1/H-0-1] AMR-NB
- [5.1/H-0-2] AMR-WB
- [5.1/H-0-3] MPEG-4 AAC Profili (AAC LC)
- [5.1/H-0-4] MPEG-4 HE AAC Profili (AAC+)
- [5.1/H-0-5] AAC ELD (geliştirilmiş düşük gecikmeli AAC)
Elde taşınabilir cihaz uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamalarına sunmalıdır:
Elde taşınabilir cihaz uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamalarına sunmalıdır:
2.2.3. Yazılım
Elde taşınabilir cihaz uygulamaları:
- [3.2.3.1/H-0-1] SDK dokümanlarında açıklandığı şekilde
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
,ACTION_OPEN_DOCUMENT_TREE
veACTION_CREATE_DOCUMENT
amaçlarını işleyen bir uygulamaya sahip OLMALI veDocumentsProvider
API'sini kullanarak doküman sağlayıcı verilerine erişmek için kullanıcıya olanak tanımalıdır. - [3.2.3.1/H-0-2]* Burada listelenen aşağıdaki uygulama amaçları tarafından tanımlanan tüm genel amaç filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini amaç işleyiciyle önceden yükLEMELİDİR.
- [3.2.3.1/H-SR] E-posta göndermek için ACTION_SENDTO, ACTION_SEND veya ACTION_SEND_MULTIPLE amaçlarını işleyebilen bir e-posta uygulamasının önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.4.1/H-0-1]
android.webkit.Webview
API'nin eksiksiz bir uygulamasını SAĞLAMALIDIR. - [3.4.2/H-0-1] Genel kullanıcı web'de gezinmesi için bağımsız bir Tarayıcı uygulaması İÇERMELİDİR.
- [3.8.1/H-SR] Kısayolların, widget'ların ve widgetFeatures'ın uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.1/H-SR] Üçüncü taraf uygulamalarının ShortcutManager API'si aracılığıyla sağladığı ek kısayollara hızlı erişim sunan varsayılan bir başlatıcı uygulaması kullanılması ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.1/H-SR] Uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması eklemeniz ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.2/H-SR] Üçüncü taraf uygulama widget'larının desteklenmesi ŞİDDETLE TAVSİYE EDİ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 etkinliklerden haberdar etmesine İZİN VERİLMELİDİR. - [3.8.3/H-0-2] Zengin bildirimler desteklenmelidir.
- [3.8.3/H-0-3] Anlık bildirimler desteklenmelidir.
- [3.8.3/H-0-4] Kullanıcıya, AOSP'de uygulandığı gibi işlem düğmeleri veya kontrol paneli gibi kullanıcı kolaylığı aracılığıyla bildirimleri doğrudan kontrol etme (ör. yanıtlama, erteleme, kapatma, engelleme) olanağı sağlayan bir bildirim gölgesi İÇERMELİDİR.
- [3.8.3/H-0-5]
RemoteInput.Builder setChoices()
aracılığıyla sunulan seçenekler, bildirim gölgesinde GÖSTERİLMELİ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 ŞİDDETLE TAVSİYE EDİLİR. - [3.8.3/H-SR] Kullanıcı, bildirim gölgesindeki tüm bildirimleri genişlettiğinde
RemoteInput.Builder setChoices()
aracılığıyla sunulan tüm seçeneklerin bildirim gölgesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [3.8.3.1/H-SR]
Notification.Remoteinput.Builder.setChoices
tarafından gösterilen yanıtlarla aynı satırdaNotification.Action.Builder.setContextual
değerinintrue
olarak ayarlandığı işlemlerin gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [3.8.4/H-SR] Yardımcı işlemine yönelik istekleri işlemek için cihazda bir asistan uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Elde taşınabilir cihaz uygulamaları Asistan işlemini destekliyorsa:
- [3.8.4/H-SR]
HOME
tuşuna uzun basmanın, bölüm 7.2.3'te açıklandığı gibi yardım uygulamasını başlatmak için belirlenen etkileşim olarak kullanılması ŞİDDETLE TAVSİYE EDİLİR. Kullanıcı tarafından seçilen yardımcı uygulamayı (diğer bir deyişleVoiceInteractionService
uygulayan uygulamayı) veyaACTION_ASSIST
amacını işleyen bir etkinliği BAŞLATMALIDIR.
Elde taşınabilir cihaz uygulamaları conversation notifications
özelliğini destekliyorsa ve bunları uyarı bildirimleri ile sessiz olmayan ileti dizisi dışı bildirimlerden ayrı bir bölümde gruplandırıyorsa:
- [3.8.4/H-1-1]* Devam eden ön plan hizmeti bildirimleri ve importance:high bildirimleri hariç olmak üzere, görüşme bildirimleri görüşme dışı bildirimlerden önce GÖSTERİLMELİDİR.
Android el cihazı uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/H-1-1] Medya Bildirim Şablonu da dahil olmak üzere kilit ekranı bildirimleri GÖSTERİLMELİDİR.
Elde taşınabilir cihaz uygulamaları güvenli bir kilit ekranını destekliyorsa:
- [3.9/H-1-1] Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tamamı uygulanmalıdır.
- [3.9/H-1-2] Cihaz, kendisini düşük RAM'li bir cihaz olarak bildirecek veya dahili (çıkarılamayan) depolama alanını paylaşılan depolama alanı olarak tahsis edecek şekilde yapılandırılmadığı sürece,
android.software.managed_users
özellik işareti aracılığıyla yönetilen profillerin desteği BELİRTİLMELİDİR.
Elde taşınabilir cihaz uygulamaları ControlsProviderService
ve Control
API'lerini destekliyor ve üçüncü taraf uygulamalarının cihaz kontrolleri yayınlamasına izin veriyorsa:
- [3.8.16/H-1-1]
android.software.controls
özellik bayrağı DEKLARA EDİLMELİ vetrue
olarak ayarlanmalıdır. - [3.8.16/H-1-2]
ControlsProviderService
veControl
API'leri aracılığıyla üçüncü taraf uygulamaları tarafından kaydedilen denetimlerden kullanıcının favori cihaz denetimlerini ekleme, düzenleme, seçme ve çalıştırma olanağı sağlayan bir kullanıcı arayüzü sunULMALIDIR. - [3.8.16/H-1-3] Varsayılan Başlatıcı'dan itibaren üç etkileşim içinde bu kullanıcı kolaylığına erişim SAĞLANMALIDIR.
- [3.8.16/H-1-4]
ControlsProviderService
API'si aracılığıyla kontroller sağlayan her üçüncü taraf uygulamasının adını ve simgesini, ayrıcaControl
API'leri tarafından sağlanan belirtilen alanları bu kullanıcı kolaylığında DOĞRU şekilde oluşturmalıdır.
Aksine, elde taşınabilir cihaz uygulamaları bu tür kontrolleri uygulamıyorsa:
- [3.8.16/H-2-1]
ControlsProviderService
veControl
API'leri içinnull
raporu VERİLMELİDİR. - [3.8.16/H-2-2]
android.software.controls
özellik bayrağı DEKLARA EDİLMELİ vefalse
olarak ayarlanmalıdır.
Elde taşınabilir cihaz uygulamaları:
- [3.10/H-0-1] Üçüncü taraf erişilebilirlik hizmetleri desteklenmelidir.
- [3.10/H-SR] TalkBack açık kaynak projesinde belirtildiği şekilde, Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.11/H-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
- [3.11/H-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.13/H-SR] Hızlı Ayarlar kullanıcı arayüzü bileşeni içermesi ŞİDDETLE TAVSİYE EDİLİR.
Android avuç içi cihaz uygulamaları FEATURE_BLUETOOTH
veya FEATURE_WIFI
desteği beyan ediyorsa:
- [3.16/H-1-1] Tamamlayıcı cihaz eşleme özelliği desteklenmelidir.
Gezinme işlevi ekranda hareket tabanlı bir işlem olarak sağlanıyorsa:
- [7.2.3/H] Ana Sayfa işlevi için hareket tanıma alanı, ekranın alt kısmından en fazla 32 dp yüksekliğinde OLMALIDIR.
Elde taşınabilir cihaz uygulamaları, ekranın sol ve sağ kenarlarının herhangi bir yerinden hareketle gezinme işlevi sağlıyorsa:
- [7.2.3/H-0-1] Gezinme işlevinin hareket alanı, her iki tarafta da 40 dp'den daha az genişliğe SAHİP OLMALIDIR. Hareket alanı varsayılan olarak 24 dp genişliğinde OLMALIDIR.
2.2.4. Performans ve Güç
- [8.1/H-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
- [8.1/H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları, Android Uyumluluk Test Paketi (CTS) tarafından tanımlanan 10.000 liste girişinden oluşan bir listenin 36 saniyeden kısa sürede kaydırılmasını sağlayarak düşük gecikmeli kullanıcı deneyimi sunmalıdır.
- [8.1/H-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, başlatılmış ve çalışmakta olan bir uygulamanın yeniden başlatılması 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ğlamalıdır.
- [8.2/H-0-2] En az 0,5 MB/sn rastgele yazma performansı sağlamalıdır.
- [8.2/H-0-3] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
- [8.2/H-0-4] En az 3,5 MB/sn rastgele okuma performansı sağlamalıdır.
Elde taşınabilir cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/H-1-1] Pil tasarrufu özelliğini etkinleştirme ve devre dışı bırakma için kullanıcıya olanak TANINMALIDIR.
- [8.3/H-1-2] Uygulama Bekletme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANINMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [8.4/H-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/H-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/H-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/H-0-4] Bu güç kullanımı,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNULMALIDIR. - [8.4/H] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
Elde taşınabilir cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [8.4/H-1-1]
android.intent.action.POWER_USAGE_SUMMARY
amacına UYULMALI ve bu güç kullanımını gösteren bir ayarlar menüsü görüntülenmelidir.
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 İZİN VERİLMELİ veandroid.settings.ACTION_USAGE_ACCESS_SETTINGS
amacına yanıt olarak bu tür uygulamalara erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma sağlanmalıdır.
Elde taşınabilir cihaz uygulamaları (* Tablet için geçerli değildir):
- [9.11/H-0-2]* MUST back up the keystore implementation with an isolated execution environment.
- [9.11/H-0-3]* Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 ailesi karma oluşturma işlevlerinin uygulamaları OLMALIDIR. Güvenli izolasyon, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole edilmiş ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
- [9.11/H-0-4]* Kilit ekranı kimlik doğrulaması, izole yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Bu şartı karşılamak için Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty, yukarı akış Android Açık Kaynak Projesi tarafından sağlanır.
- [9.11/H-0-5]* Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Anahtarların cihaz tanımlayıcı olarak kullanılmasını önlemek için onay imzalama anahtarları yeterli sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamanın bir yolu,belirli bir SKU'nun en az 100.000 birimi üretilmediği sürece aynı onay anahtarını paylaşmaktır. Bir SKU'nun 100.000'den fazla birimi üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulduysa bu cihaz, android.hardware.fingerprint
özelliğini (izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektirir) beyan etmediği sürece, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaftır.
Elde taşınabilir cihaz uygulamaları güvenli bir kilit ekranını desteklediğinde:
- [9.11/H-1-1] KULLANICININ, KİLİDİ AÇIK DURUMDAN KİLİTLİ DURUMA GEÇİŞ SÜRESİ OLAN EN KISA UYKU ZAMAN AŞIMI SÜRESİNİ (15 SANİYE VEYA DAHA KISA) SEÇMESİNE İZİN VERİLMELİDİR.
- [9.11/H-1-2] Bildirimleri gizlemek ve 9.11.1 Güvenli Kilit Ekranı'nda açıklanan birincil kimlik doğrulama dışında tüm kimlik doğrulama biçimlerini devre dışı bırakmak için kullanıcıya olanak tanınmalıdır. AOSP, tam kilitleme modu olarak bu koşulu karşılar.
Elde taşınabilir cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildirmezse:
- [9.5/H-2-1] Cihaz sahiplerinin cihazdaki ek kullanıcıları ve bu kullanıcıların özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlıca oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
Elde taşınabilir cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildiriyorsa:
- [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 kontrollerin AOSP uygulamasında yer almasına UYGUN OLMALIDIR.
2.2.6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
Elde taşınabilir cihaz uygulamaları (* Tablet için geçerli değildir):
- [6.1/H-0-1]* MUST support the shell command
cmd testharness
.
Elde taşınabilir cihaz uygulamaları (* Tablet için geçerli değildir):
-
Perfetto
- [6.1/H-0-2]* MUST expose a
/system/bin/perfetto
binary to the shell user which cmdline complies with the perfetto documentation. - [6.1/H-0-3]* Perfetto ikili dosyası, giriş olarak Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf yapılandırması KABUL ETMELİDİR.
- [6.1/H-0-4]* Perfetto ikili dosyası, çıkış olarak Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf izi YAZMALIDIR.
- [6.1/H-0-5]* MUST provide, through the perfetto binary, at least the data sources described in the perfetto documentation.
- [6.1/H-0-6]* Perfetto izleme arka plan programı varsayılan olarak etkinleştirilmelidir (sistem özelliği
persist.traced.enable
).
- [6.1/H-0-2]* MUST expose a
2.2.7 Taşınabilir Medya Performans Sınıfı
Medya performansı sınıfının tanımı için Bölüm 7.11'e bakın.
2.2.7.1. Medya
Elde taşınabilir cihaz uygulamaları android.os.Build.VERSION_CODES.R
için android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
değerini döndürürse:
- [5.1/H-1-1]
CodecCapabilities.getMaxSupportedInstances()
veVideoCapabilities.getSupportedPerformancePoints()
yöntemleriyle herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek maksimum donanım video kod çözücü oturumu sayısını REKLAM YAPMALIDIR. - [5.1/H-1-2] 720p çözünürlükte ve 30 fps'de eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 6 donanım video kod çözücü oturumu (AVC veya HEVC) desteklenmelidir. (AVC veya HEVC) in any codec combination running concurrently at 720p resolution@30 fps.
- [5.1/H-1-3]
CodecCapabilities.getMaxSupportedInstances()
veVideoCapabilities.getSupportedPerformancePoints()
yöntemleriyle herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek maksimum donanım video kodlayıcı oturumu sayısını REKLAM YAPMALIDIR. - [5.1/H-1-4] Herhangi bir codec kombinasyonunda eşzamanlı olarak 720p çözünürlükte ve 30 fps'de çalışan 6 donanım video kodlayıcı oturumu (AVC veya HEVC) DESTEKLENMELİDİR.
- [5.1/H-1-5] Herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek maksimum donanım video kodlayıcı ve kod çözücü oturumu sayısını
CodecCapabilities.getMaxSupportedInstances()
veVideoCapabilities.getSupportedPerformancePoints()
yöntemleriyle REKLAM YAPMALIDIR. - [5.1/H-1-6] 720p@30 fps çözünürlükte eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 6 donanım video kod çözücü ve donanım video kodlayıcı oturumunu (AVC veya HEVC) DESTEKLEMELİDİR.
- [5.1/H-1-7] Yük altındayken tüm donanım video kodlayıcıları (Dolby Vision kodlayıcı hariç) için 1080p veya daha küçük bir video kodlama oturumunda 65 ms ya da daha kısa bir kodlayıcı başlatma gecikmesine SAHİP OLMALIDIR. Buradaki yük, 1080p sesli video kaydı başlatma işlemiyle birlikte donanım video codec'leri kullanılarak yapılan eşzamanlı bir 1080p - 720p 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ızlı ses kodlama oturumunda 50 ms ya da daha az codec başlatma gecikmesine SAHİP OLMALIDIR.Yük burada, 1080p ses-video kaydı başlatma ile birlikte donanım video codec'leri kullanılarak yapılan eşzamanlı 1080p - 720p yalnızca video kod dönüştürme oturumu olarak tanımlanır.
- [5.3/H-1-1] Yük altındayken 1080p 30 FPS video oturumunda 10 saniyede 1'den fazla kare düşmemelidir (yani kare düşme oranı %0,333'ten az olmalıdır). Yük, donanım video codec'leri kullanılarak yapılan eşzamanlı 1080p - 720p video kod dönüştürme oturumu ve 128 kbps AAC ses çalma 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 DÜŞÜRÜLMEMELİDİR. Yük, donanım video codec'leri kullanılarak yapılan eşzamanlı bir 1080p - 720p video kod dönüştürme oturumu ve 128 Kbps AAC ses çalma olarak tanımlanır.
- [5.6/H-1-1] OboeTester dokunarak ton testini veya CTS Verifier dokunarak ton testini kullanarak 100 milisaniyeden daha kısa bir dokunarak ton gecikmesine SAHİP OLMALIDIR.
2.2.7.2. Kamera
Elde taşınabilir cihaz uygulamaları android.os.Build.VERSION_CODES.R
için android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
değerini döndürürse:
- [7.5/H-1-1] 4k@30fps'de video çekimini destekleyen, en az 12 megapiksel çözünürlüğe sahip birincil arka kamerası OLMALIDIR. Birincil arka kamera, en düşük kamera kimliğine sahip arka kameradır.
- [7.5/H-1-2] 1080p@30fps'de video çekimini destekleyen, çözünürlüğü en az 4 megapiksel olan birincil ön kameraya SAHİP OLMALIDIR. Birincil ön kamera, en düşük kamera kimliğine sahip ön kameradır.
- [7.5/H-1-3] Arka birincil kamera için android.info.supportedHardwareLevel özelliğini FULL veya daha iyi, ön birincil kamera için ise LIMITED veya daha iyi olarak desteklemelidir. 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'ı desteklemelidir.
- [7.5/H-1-5] Birincil kameraların her ikisi için de ITS aydınlatma koşulları (3.000 K) altında CTS kamera PerformanceTest ile ölçülen 1080p çözünürlükte kamera2 JPEG yakalama gecikmesi < 1.000 ms OLMALIDIR.
- [7.5/H-1-6] Birincil kameraların her ikisi için de ITS aydınlatma koşulları (3000K) altında CTS kamera PerformanceTest ile ölçüldüğünde camera2 başlatma gecikmesi (kamerayı açma ile ilk önizleme karesi arasındaki süre) 600 ms'den kısa OLMALIDIR.
2.2.7.3. Donanım
Elde taşınabilir cihaz uygulamaları android.os.Build.VERSION_CODES.R
için android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
değerini döndürüyorsa:
- [7.1.1.1/H-1-1] En az 1080p ekran çözünürlüğüne SAHİP OLMALIDIR.
- [7.1.1.3/H-1-1] En az 400 dpi ekran yoğunluğuna SAHİP OLMALIDIR.
- [7.6.1/H-1-1] En az 6 GB fiziksel belleğe SAHİP OLMALIDIR.
2.2.7.4. Performans
Elde taşınabilir cihaz uygulamaları android.os.Build.VERSION_CODES.R
için android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
değerini döndürüyorsa:
- [8.2/H-1-1] En az 100 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.
- [8.2/H-1-2] En az 10 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.
- [8.2/H-1-3] En az 200 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
- [8.2/H-1-4] En az 25 MB/sn'lik rastgele okuma performansı SAĞLANMALIDIR.
2.3. Televizyonla İlgili Şartlar
Android TV cihazı, kullanıcının yaklaşık üç metre uzakta oturarak dijital medya, film, oyun, uygulama ve/veya canlı TV içeriklerini tüketebileceği bir eğlence arayüzü olan Android cihaz uygulamasıdır ("arkaya yaslanma" veya "3 metrelik kullanıcı arayüzü").
Android cihaz uygulamaları, aşağıdaki tüm ölçütleri karşılıyorsa televizyon olarak sınıflandırılır:
- Kullanıcıdan üç metre uzakta olabilecek ekranda oluşturulan kullanıcı arayüzünü uzaktan kontrol etme mekanizması sağlamış olmalıdır.
- Köşegen uzunluğu 24 inçten büyük olan yerleşik bir ekranı olmalı VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası ya da ekran için kablosuz bir bağlantı noktası içermelidir.
Bu bölümün geri kalanındaki ek şartlar, Android TV cihaz uygulamalarına özeldir.
2.3.1. Donanım
Televizyon cihazı uygulamaları:
- [7.2.2/T-0-1] D-pad desteklenmelidir.
- [7.2.3/T-0-1] Ana Sayfa ve Geri işlevleri SAĞLANMALIDIR.
- [7.2.3/T-0-2] Geri işlevinin (
KEYCODE_BACK
) hem normal hem de uzun basma etkinliği, ön plandaki uygulamaya GÖNDERİLMELİDİR. - [7.2.6.1/T-0-1] Oyun kumandası desteği içermeli ve
android.hardware.gamepad
özellik işaretini bildirmelidir. - [7.2.7/T] Kullanıcılara dokunmadan gezinme ve temel gezinme tuşları girişlerine erişebilecekleri bir uzaktan kumanda SAĞLANMALIDIR.
Televizyon cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:
- [7.3.4/T-1-1] En az 100 Hz sıklıkta etkinlik 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 (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
Televizyon cihazı uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.5.3/T-1-1] Bu USB bağlantı noktası üzerinden bağlanan ancak her zaman bağlı olması gerekmeyen harici bir kamera için destek İÇERMELİDİR.
TV cihazı uygulamaları 32 bit ise:
-
[7.6.1/T-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
TV cihazı uygulamaları 64 bit ise:
-
[7.6.1/T-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Televizyon cihazı uygulamaları:
- [7.8.1/T] Mikrofon içermelidir.
- [7.8.2/T-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.output
beyan edilmelidir.
2.3.2. Multimedya
Televizyon cihazı uygulamaları, aşağıdaki ses kodlama ve kod çözme biçimlerini DESTEKLEMELİ ve üçü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 (gelişmiş düşük gecikmeli AAC)
Televizyon cihaz uygulamaları, aşağıdaki video kodlama biçimlerini desteklemeli ve üçüncü taraf uygulamaların kullanımına sunmalıdır:
Televizyon cihazı uygulamaları:
- [5.2.2/T-SR] 720p ve 1080p çözünürlüklü videoların 30 kare/saniye hızında H.264 kodlamasını desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihaz uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİ ve üçü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ığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde MPEG-2 kod çözme işlemini DESTEKLEMELİDİR:
- [5.3.1/T-1-1] Ana Profil Yüksek Düzey ile saniyede 29,97 kare hızında HD 1080p.
- [5.3.1/T-1-2] Main Profile High Level ile saniyede 59,94 kare hızında HD 1080i. İç içe geçmiş MPEG-2 videoları mutlaka çö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ığı gibi, standart video kare hızlarında ve aşağıdaki çözünürlüklerde H.264 kod çözme işlemini DESTEKLEMELİDİR:
- [5.3.4/T-1-1] Baseline Profili 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] High Profile Level 4.2 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.5'te ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde H.265 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.5/T-1-1] Main Profile Level 4.1 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülerine sahip televizyon cihaz uygulamaları H.265 kod çözme ve UHD kod çözme profilini destekliyorsa:
- [5.3.5/T-2-1] Main10 Level 5 Main Tier profiliyle saniyede 60 kare hızında UHD kod çözme profilini DESTEKLEMELİDİR.
Televizyon cihazı uygulamaları, Bölüm 5.3.6'da ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdaki çözünürlüklerde VP8 kod çözme işlemini DESTEKLEMELİDİR:
- [5.3.6/T-1-1] Saniyede 60 kare hızında HD 1080p çözme profili
VP9 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.7'de ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde VP9 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.7/T-1-1] Profil 0 ile saniyede 60 kare hızında HD 1080p (8 bit renk derinliği)
VP9 donanım kod çözücülerine sahip televizyon cihazı uygulamaları VP9 kod çözmeyi ve UHD kod çözme profilini destekliyorsa:
- [5.3.7/T-2-1] 60 kare/saniye hızında, profil 0 (8 bit renk derinliği) ile UHD kod çözme profilini DESTEKLEMELİDİR.
- [5.3.7/T-2-1] 2. profille (10 bit renk derinliği) saniyede 60 kare hızında UHD kod çözme profilini desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihazı uygulamaları:
- [5.5/T-0-1] Sıkıştırılmış ses geçiş çıkışı (cihazda ses kod çözme işlemi yapılmaz) hariç olmak üzere, desteklenen çıkışlarda sistemin ana ses seviyesi ve dijital ses çıkışı ses seviyesi zayıflatma desteği İÇERMELİDİR.
Televizyon cihaz uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlanan harici ekran destekleniyorsa:
- [5.8/T-0-1] HDMI çıkış modu, 50 Hz veya 60 Hz yenileme hızıyla desteklenebilecek maksimum çözünürlüğü seçecek şekilde AYARLANMALIDIR.
- [5.8/T-SR] Kullanıcı tarafından yapılandırılabilen bir HDMI yenileme hızı seçici sunulması ŞİDDETLE TAVSİYE EDİLİR.
- [5.8] Cihazın satıldığı bölgedeki video yenileme hızına bağlı olarak HDMI çıkış modu yenileme hızını 50 Hz veya 60 Hz olarak AYARLAMALIDIR.
Televizyon cihaz uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlanan harici ekran destekleniyorsa:
- [5.8/T-1-1] HDCP 2.2'yi desteklemelidir.
Televizyon cihaz uygulamaları UHD kod çözme özelliğini desteklemiyorsa ancak HDMI üzerinden bağlanan harici bir ekranı destekliyorsa:
- [5.8/T-2-1] HDCP 1.4 desteklenmelidir.
2.3.3. Yazılım
Televizyon cihazı uygulamaları:
- [3/T-0-1]
android.software.leanback
veandroid.hardware.type.television
özellikleri BEYAN EDİLMELİDİR. - [3.2.3.1/T-0-1] Burada listelenen aşağıdaki uygulama amaçları tarafından tanımlanan tüm herkese açık amaç filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini amaç işleyiciyle birlikte önceden yükLEMELİDİR.
- [3.4.1/T-0-1]
android.webkit.Webview
API'nin eksiksiz bir uygulamasını SAĞLAMALIDIR.
Android TV cihaz uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/T-1-1] Medya Bildirim Şablonu da dahil olmak üzere kilit ekranı bildirimleri GÖSTERİLMELİDİR.
Televizyon cihazı uygulamaları:
- [3.8.14/T-SR] Pencere içinde pencere (PIP) modunda çoklu pencere özelliğini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.10/T-0-1] Üçüncü taraf erişilebilirlik hizmetleri DESTEKLENMELİDİR.
- [3.10/T-SR] TalkBack açık kaynak projesinde belirtildiği gibi, cihazda Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihaz uygulamaları android.hardware.audio.output
özelliğini bildiriyorsa:
- [3.11/T-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermeleri ŞİDDETLE TAVSİYE EDİLİR.
- [3.11/T-1-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
Televizyon cihazı uygulamaları:
- [3.12/T-0-1] TV Giriş Çerçevesi desteklenmelidir.
2.3.4. Performans ve Güç
- [8.1/T-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
- [8.2/T-0-1] En az 5 MB/sn sıralı yazma performansı SAĞLANMALIDIR.
- [8.2/T-0-2] En az 0,5 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.
- [8.2/T-0-3] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
- [8.2/T-0-4] En az 3,5 MB/sn rastgele okuma performansı sağlamalıdır.
Televizyon cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/T-1-1] Pil tasarrufu özelliğinin etkinleştirilmesi ve devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.
Televizyon cihaz uygulamalarında pil yoksa:
- [8.3/T-1-2] Cihazı, Pilsiz Cihazları Destekleme bölümünde açıklandığı gibi pilsiz cihaz olarak KAYDETMELİDİR.
Televizyon cihaz uygulamalarında pil varsa:
- [8.3/T-1-3] Uygulama Bekletme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANINMALIDIR.
Televizyon cihazı uygulamaları:
- [8.4/T-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/T-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/T-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu 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ı,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNULMALIDIR.
2.3.5. Güvenlik Modeli
Televizyon cihazı uygulamaları:
- [9.11/T-0-1] Anahtar deposu uygulaması, yalıtılmış bir yürütme ortamıyla desteklenmelidir.
- [9.11/T-0-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 ailesi karma oluşturma işlevlerinin uygulamaları OLMALIDIR. Güvenli izolasyon, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole edilmiş ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
- [9.11/T-0-3] Kilit ekranı kimlik doğrulaması, izole yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Bu şartı karşılamak için Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty, yukarı akış Android Açık Kaynak Projesi tarafından sağlanır.
- [9.11/T-0-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Anahtarların cihaz tanımlayıcı olarak kullanılmasını önlemek için onay imzalama anahtarları yeterli sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamanın bir yolu,belirli bir SKU'nun en az 100.000 birimi üretilmediği sürece aynı onay anahtarını paylaşmaktır. Bir SKU'nun 100.000'den fazla birimi üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulduysa bu cihaz, android.hardware.fingerprint
özelliğini (izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektirir) beyan etmediği sürece, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaftır.
Televizyon cihaz uygulamaları güvenli bir kilit ekranını destekliyorsa:
- [9.11/T-1-1] Kilitli olmayan durumdan kilitli duruma geçiş için kullanıcının uyku zaman aşımını seçmesine İZİN VERİLMELİDİR. İzin verilen minimum zaman aşımı 15 saniye veya daha kısa olmalıdır.
Televizyon cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildirmezse:
- [9.5/T-2-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlıca oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
Televizyon cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildiriyorsa:
- [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 kontrollerin AOSP uygulamasında yer almasına UYGUN OLMALIDIR.
2.3.6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
Televizyon cihazı uygulamaları:
-
Perfetto
- [6.1/T-0-1] MUST, kabuk kullanıcısına Perfto belgelerine uygun bir komut satırı içeren
/system/bin/perfetto
ikili dosyasını sunmalıdır. - [6.1/T-0-2] Perfetto ikilisi, giriş olarak Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırmasını KABUL ETMELİDİR.
- [6.1/T-0-3] Perfetto ikili dosyası, Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izi yazmalıdır.
- [6.1/T-0-4] MUST provide, through the perfetto binary, at least the data sources described in the perfetto documentation.
- [6.1/T-0-1] MUST, kabuk kullanıcısına Perfto belgelerine uygun bir komut satırı içeren
2.4. Saat Gereksinimleri
Android Watch cihaz, vücuda (ör. bileğe) takılmak üzere tasarlanmış bir Android cihaz uygulamasıdır.
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa Kol Saati olarak sınıflandırılır:
- Fiziksel diyagonal uzunluğu 1,1 ile 2,5 inç arasında olan bir ekrana sahip olmalıdır.
- Vücutta taşınmak üzere tasarlanmış bir mekanizmaya sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar, Android Watch cihaz uygulamalarına özeldir.
2.4.1. Donanım
Cihaz uygulamalarını izleyin:
-
[7.1.1.1/W-0-1] 1,1 ila 2,5 inç arasında fiziksel diyagonal boyuta sahip bir ekran OLMALIDIR.
-
[7.2.3/W-0-1] Kullanıcıya Ana Sayfa işlevi sunulmalı ve
UI_MODE_TYPE_WATCH
dışında Geri işlevi kullanılabilmelidir. -
[7.2.4/W-0-1] Dokunmatik ekran girişi desteklenmelidir.
-
[7.3.1/W-SR] 3 eksenli ivme ölçer içermesi ŞİDDETLE TAVSİYE EDİLİR.
Watch cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa:
- [7.3.3/W-1-1] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile GNSS ölçümleri bulunur bulunmaz BİLDİRİLMELİDİR.
- [7.3.3/W-1-2] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekarelik ivmeden daha az bir hızla hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıkları ve sahte aralık hızları, zamanın en az% 95'inde bildirilmelidir.
Watch cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:
- [7.3.4/W-2-1] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
Cihaz uygulamalarını izleyin:
-
[7.4.3/W-0-1] Bluetooth'u desteklemelidir.
-
[7.6.1/W-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1 GB kalıcı depolama alanı OLMALIDIR.
-
[7.6.1/W-0-2] Çekirdek ve kullanıcı alanı için en az 416 MB kullanılabilir bellek OLMALIDIR.
-
[7.8.1/W-0-1] Mikrofon içermelidir.
-
[7.8.2/W] Ses çıkışı OLABİLİR.
2.4.2. Multimedya
Ek şart yoktur.
2.4.3. Yazılım
Cihaz uygulamalarını izleyin:
- [3/W-0-1]
android.hardware.type.watch
özelliği DEKLARA EDİLMELİDİR. - [3/W-0-2] MUST support uiMode = UI_MODE_TYPE_WATCH.
- [3.2.3.1/W-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini intent işleyiciyle önceden yüklemelidir.
Cihaz uygulamalarını izleyin:
- [3.8.4/W-SR] Yardımcı işlemini gerçekleştirmek için cihazda bir yardımcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
android.hardware.audio.output
özellik işaretini bildiren cihaz uygulamalarını izleyin:
- [3.10/W-1-1] Üçüncü taraf erişilebilirlik hizmetleri DESTEKLENMELİDİR.
- [3.10/W-SR] TalkBack açık kaynak projesinde belirtildiği şekilde, cihazda Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Kol saati cihaz uygulamaları android.hardware.audio.output özelliğini bildiriyorsa:
-
[3.11/W-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermesi ŞİDDETLE TAVSİYE EDİLİR.
-
[3.11/W-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
2.4.4. Performans ve Güç
Wear cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/W-SR] Uygulama Bekletme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya kolaylık sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
- [8.3/W-SR] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya kolaylık sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarını izleyin:
- [8.4/W-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/W-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/W-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/W-0-4] Bu güç kullanımı, uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla SUNULMALIDIR. - [8.4/W] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atfedilmelidir.
2.4.5. Güvenlik Modeli
Watch cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildirmezse:
- [9.5/W-1-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlıca oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
Watch cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildiriyorsa:
- [9.5/W-2-1] Kısıtlanmış profilleri desteklememelidir ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için kontrollerin AOSP uygulamasında yer alması gerekir.
2.5. Otomotiv Şartları
Android Automotive uygulaması, sistemin 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 ederse veya aşağıdaki ölçütlerin tümünü karşılarsa Otomotiv olarak sınıflandırılır.
- Otomotiv araçlarının bir parçası olarak yerleştirilmiş veya bu araçlara takılabilir olmalıdır.
- Sürücü koltuğu sırasındaki bir ekranı birincil ekran olarak kullanıyorsanız.
Bu bölümün geri kalanındaki ek şartlar, Android Automotive cihaz uygulamalarına özeldir.
2.5.1. Donanım
Otomotiv cihaz uygulamaları:
- [7.1.1.1/A-0-1] En az 6 inç fiziksel diyagonal boyutta bir ekrana SAHİP OLMALIDIR.
-
[7.1.1.1/A-0-2] En az 750 dp x 480 dp ekran boyutu düzenine SAHİP OLMALIDIR.
-
[7.2.3/A-0-1] Ana Sayfa işlevi SAĞLANMALIDIR ve Geri ile Son Kullanılanlar işlevleri SAĞLANABİLİR.
- [7.2.3/A-0-2] Geri işlevinin (
KEYCODE_BACK
) normal ve uzun basma etkinliklerinin her ikisi de ön plandaki uygulamaya GÖNDERİLMELİDİR. - [7.3/A-0-1]
GEAR_SELECTION
,NIGHT_MODE
,PERF_VEHICLE_SPEED
vePARKING_BRAKE_ON
uygulanmalı ve raporlanmalıdır. - [7.3/A-0-2]
NIGHT_MODE
işaretinin değeri, kontrol paneli gündüz/gece moduyla tutarlı OLMALI ve ortam ışığı sensörü girişine dayanmalıdır. Altta yatan ortam ışığı sensörü, fotometreyle aynı OLABİLİR. - [7.3/A-0-3] Sağlanan her sensör için SensorAdditionalInfo'nun bir parçası olarak sensör ek bilgi alanı
TYPE_SENSOR_PLACEMENT
SAĞLANMALIDIR. - [7.3/A-0-1] GPS/GNSS'yi ek sensörlerle birleştirerek konumu tahmin edebilir. Konum tahmini olarak hesaplanıyorsa kullanılan ilgili Sensör türlerinin ve/veya Araç Özelliği Kimliklerinin uygulanması ve raporlanması ŞİDDETLE TAVSİYE EDİLİR.
- [7.3/A-0-2] LocationManager#requestLocationUpdates() aracılığıyla istenen Konum, harita eşleştirmesi YAPILMAMALIDIR.
Otomotiv cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/A-1-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.
- [7.3.1/A-1-2] Android araba sensörü koordinat sistemi ile UYUMLU OLMALIDIR.
Otomotiv cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:
- [7.3.4/A-2-1] Etkinlikleri en az 100 Hz sıklıkta bildirebilmelidir.
- [7.3.4/A-2-2]
TYPE_GYROSCOPE_UNCALIBRATED
sensörü DE uygulanmalıdır. - [7.3.4/A-2-3] Saniyede 250 dereceye kadar yön değişikliklerini ölçebilmelidir.
- [7.3.4/A-SR] Mümkün olan çözünürlüğü en üst düzeye çıkarmak için jiroskopun ölçüm aralığının +/-250dps olarak yapılandırılması ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları GPS/GNSS alıcısı içeriyor ancak hücresel ağ tabanlı veri bağlantısı içermiyorsa:
- [7.3.3/A-3-1] GPS/GNSS alıcısı ilk kez açıldığında veya 4 günden uzun bir süre sonraki ilk 60 saniye içinde konum belirlenmelidir.
- [7.3.3/A-3-2] Diğer tüm konum istekleri (yani ilk kez yapılmayan veya 4 günden uzun süre sonra yapılan istekler) için 7.3.3/C-1-2 ve 7.3.3/C-1-6'da açıklanan ilk düzeltme süresi ölçütlerini karşılamalıdır. 7.3.3/C-1-2 şartı, genellikle hücresel ağa dayalı veri bağlantısı olmayan araçlarda alıcı üzerinde hesaplanan GNSS yörünge tahminleri kullanılarak veya 7.3.3/C-1-3'ü karşılayan bir konum doğruluğuyla en az 60 saniye boyunca tahmini konum belirleme özelliğiyle birlikte bilinen son araç konumu 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 görüşmesi yapma.
- 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 yapılan kişi paylaşımı.
-
[7.4.3/A-SR] Mesaj Erişim Profili'nin (MAP) desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
-
[7.4.5/A] Hücresel ağ tabanlı veri bağlantısı desteği İÇERMELİDİR.
- [7.4.5/A] Sistem uygulamaları tarafından kullanılabilmesi gereken ağlar için
NetworkCapabilities#NET_CAPABILITY_OEM_PAID
sabitini kullanabilir.
Dış görünüm kamerası, cihaz uygulamasının dışındaki sahnelerin görüntülerini alan bir kameradır (ör. araç kamerası).
Otomotiv cihaz uygulamaları:
- Bina dışı görünüm kameraları içermelidir.
Otomotiv cihaz uygulamalarında dış görünüm kamerası varsa bu tür kameralar:
- [7.5/A-1-1] Kamera temel şartlarına uymadıkları sürece, Android Kamera API'leri aracılığıyla erişilebilen dış görünüm kameraları OLMAMALIDIR.
- [7.5/A-SR] Kamera önizlemesinin döndürülmemesi veya yatay olarak yansıtılmaması ŞİDDETLE TAVSİYE EDİLİR.
- [7.5.5/A-SR] Kameranın uzun boyutunun ufuk çizgisiyle aynı hizada olması ŞİDDETLE TAVSİYE EDİLİR.
- [7.5/A-SR] En az 1,3 megapiksel çözünürlüğe sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanımı OLMALIDIR.
- Android senkronizasyon çerçevesi desteklenmelidir.
- Kamera sürücüsünde donanım otomatik odaklaması veya yazılım otomatik odaklaması uygulanmış OLABİLİR.
Otomotiv cihaz uygulamaları:
-
[7.6.1/A-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
-
[7.6.1/A] Veri bölümü, flash depolamada daha iyi performans ve uzun ömür sunmak için biçimlendirilmelidir. Örneğin,
f2fs
dosya sistemi kullanılmalıdır.
Otomotiv cihaz uygulamaları, dahili çıkarılamayan depolama alanının bir bölümü aracılığıyla paylaşılan harici depolama alanı sağlıyorsa:
- [7.6.1/A-SR] Harici depolama alanında gerçekleştirilen işlemlerde G/Ç ek yükünü azaltmak için (ör.
SDCardFS
kullanarak) ŞİDDETLE TAVSİYE EDİ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ı için kullanılabilir bellek en az 512 MB OLMALIDIR:
- Küçük/normal ekranlarda 280 dpi veya daha düşük
- Ekstra büyük ekranlarda ldpi veya daha düşük
- Büyük ekranlarda mdpi veya daha düşük
-
[7.6.1/A-1-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 608 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya daha yüksek
- Büyük ekranlarda hdpi veya daha yüksek
- Çok büyük ekranlarda mdpi veya daha yüksek
-
[7.6.1/A-1-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
-
[7.6.1/A-1-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.344 MB OLMALIDIR:
- Küçük/normal ekranlarda 560 dpi veya daha yüksek
- Büyük ekranlarda 400 DPI veya daha yüksek
- Ekstra büyük ekranlarda xhdpi veya daha yüksek
Otomotiv cihaz uygulamaları 64 bit ise:
-
[7.6.1/A-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 816 MB OLMALIDIR:
- Küçük/normal ekranlarda 280 dpi veya daha düşük
- Ekstra büyük ekranlarda ldpi veya daha düşük
- Büyük ekranlarda mdpi veya daha düşük
-
[7.6.1/A-2-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 944 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya daha yüksek
- Büyük ekranlarda hdpi veya daha yüksek
- Çok büyük ekranlarda mdpi veya daha yüksek
-
[7.6.1/A-2-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
-
[7.6.1/A-2-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.824 MB OLMALIDIR:
- Küçük/normal ekranlarda 560 dpi veya daha yüksek
- Büyük ekranlarda 400 DPI veya daha yüksek
- Ekstra büyük ekranlarda xhdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Otomotiv cihaz uygulamaları:
- [7.7.1/A] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
Otomotiv cihaz uygulamaları:
- [7.8.1/A-0-1] Mikrofon içermelidir.
Otomotiv cihaz uygulamaları:
- [7.8.2/A-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.output
beyan etmelidir.
2.5.2. Multimedya
Otomotiv cihaz uygulamaları, aşağıdaki ses kodlama ve kod çözme biçimlerini DESTEKLEMELİ ve bunları üçüncü taraf uygulamalarına sunmalıdır:
- [5.1/A-0-1] MPEG-4 AAC Profili (AAC LC)
- [5.1/A-0-2] MPEG-4 HE AAC Profili (AAC+)
- [5.1/A-0-3] AAC ELD (enhanced low delay AAC)
Otomotiv cihaz uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamalarına sunmalıdır:
Otomotiv cihaz uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİ ve bunları üçüncü taraf uygulamalarına sunmalıdır:
Otomotiv cihaz uygulamalarının aşağıdaki video kod çözme işlemlerini desteklemesi ŞİDDETLE TAVSİYE EDİ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ği BELİRTİLMELİDİR. -
[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'ler desteklenmelidir.
Otomotiv cihaz uygulamaları, android.car.VehiclePropertyIds
ile android.car.CarPropertyManager
kullanarak tescilli bir API sağlıyorsa:
- [3/A-1-1] Sistem uygulamasının bu özellikleri kullanmasına özel ayrıcalıklar eklenmemeli veya üçüncü taraf uygulamaların bu özellikleri kullanması engellenmemelidir.
- [3/A-1-2] SDK'da zaten mevcut olan bir araç özelliğini kopyALAMAZ.
Otomotiv cihaz uygulamaları:
-
[3.2.1/A-0-1] Otomotiv İzni referans sayfasında belirtilen tüm izin sabitlerini desteklemeli ve zorunlu kılmalıdır.
-
[3.2.3.1/A-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini intent işleyiciyle önceden yükLEMELİDİR.
-
[3.4.1/A-0-1]
android.webkit.Webview
API'nin 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şlemine yönelik istekleri işlemek için cihazda bir asistan uygulanması önemle tavsiye edilir.
Otomotiv cihaz uygulamalarında bas-konuş düğmesi varsa:
- [3.8.4/A-1-1] Kullanıcı tarafından seçilen asistan uygulamasını (diğer bir deyişle
VoiceInteractionService
'yi uygulayan uygulama) başlatmak için belirlenen etkileşim olarak bas-konuş düğmesine kısa basma işlemi KULLANILMALIDIR.
Otomotiv cihaz uygulamaları:
- [3.8.3.1/A-0-1] Kaynakları,
Notifications on Automotive OS
SDK dokümanlarında açıklandığı şekilde doğru şekilde oluşturmalıdır. - [3.8.3.1/A-0-2]
Notification.Builder.addAction()
aracılığıyla sağlananlar yerine bildirim işlemlerinde PLAY (OYNAT) ve MUTE (SESSİZE AL) gösterilmelidir. - [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ü kolaylığı KULLANILABİLİR.
Otomotiv cihaz uygulamaları:
- [3.14/A-0-1] 3.14 bölümünde açıklandığı gibi medya API'lerini kullanan üçüncü taraf uygulamaları desteklemek için bir kullanıcı arayüzü çerçevesi İÇERMELİDİR.
- [3.14/A-0-2] Kullanıcının sürüş sırasında Medya Uygulamaları ile güvenli bir şekilde etkileşim kurmasına İZİN VERİLMELİDİR.
- [3.14/A-0-3]
CAR_EXTRA_MEDIA_PACKAGE
ekstrasıylaCAR_INTENT_ACTION_MEDIA_TEMPLATE
örtülü Intent işlemini DESTEKLEMELİDİR. - [3.14/A-0-4] Bir medya uygulamasının tercih etkinliğine gitmek için bir olanak SAĞLANMALIDIR ancak bu olanak YALNIZCA araba kullanıcı arayüzü kısıtlamaları geçerli olmadığında etkinleştirilmelidir.
- [3.14/A-0-5] Medya Uygulamaları tarafından ayarlanan hata mesajları GÖSTERİLMELİ ve isteğe bağlı ekstralar
ERROR_RESOLUTION_ACTION_LABEL
veERROR_RESOLUTION_ACTION_INTENT
DESTEKLENMELİDİR. - [3.14/A-0-6] Arama özelliğini destekleyen uygulamalarda uygulama içi arama işlevini DESTEKLEMELİDİR.
- [3.14/A-0-7] MediaBrowser hiyerarşisi görüntülenirken
CONTENT_STYLE_BROWSABLE_HINT
veCONTENT_STYLE_PLAYABLE_HINT
tanımlarına UYULMALIDIR.
Otomotiv cihaz uygulamaları varsayılan bir başlatıcı uygulaması içeriyorsa:
- [3.14/A-1-1] Medya hizmetlerini içermeli ve
CAR_INTENT_ACTION_MEDIA_TEMPLATE
niyetiyle açmalıdır.
Otomotiv cihaz uygulamaları:
- [3.8/A]
immersive documentation
bölümünde açıklandığı gibi, tam ekran moduna girme uygulama isteklerini KISITLAYABİLİR. - [3.8/A] Durum çubuğunu ve gezinme çubuğunu her zaman görünür tutabilir.
- [3.8/A] Sistem kullanıcı arayüzü öğelerinin her zaman net bir şekilde görünmesini sağlamak için, uygulama isteklerini sistem kullanıcı arayüzü öğelerinin arkasındaki renkleri değiştirecek şekilde kısıtlayabilir.
2.5.4. Performans ve Güç
Otomotiv cihaz uygulamaları:
- [8.2/A-0-1] İstatistiklerin Sistem API'si
android.car.storagemonitoring.CarStorageMonitoringManager
aracılığıyla geliştiricilere sunulabilmesi için her 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 şartı 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 Modu'nda OLMALIDIR:
- Pil bitti.
- Boşta iş planlanmamış.
- Sürücü, Garaj Modu'ndan çıkar.
- [8.4/A-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/A-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/A-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/A] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
- [8.4/A-0-4] Bu güç kullanımını,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNMALIDIR.
2.5.5. Güvenlik Modeli
Otomotiv cihaz uygulamaları birden fazla kullanıcıyı destekliyorsa:
- [9.5/A-1-1] Cihaz sağlama dışında, kullanıcıların başsız sistem kullanıcısıyla etkileşim kurmasına veya bu kullanıcıya geçmesine İZİN VERİLMEMELİDİR.
- [9.5/A-1-2]
BOOT_COMPLETED
tarihinden önce İkincil Kullanıcı'ya geçiş YAPILMALIDIR. - [9.5/A-1-3] Bir cihazdaki maksimum kullanıcı sayısına ulaşılmış olsa bile Misafir Kullanıcı oluşturma özelliği DESTEKLENMELİDİR.
Otomotiv cihaz uygulamaları:
- [9.11/A-0-1] Anahtar deposu uygulaması, yalıtılmış bir yürütme ortamıyla YEDEKLENMELİDİR.
- [9.11/A-0-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 ailesi karma oluşturma işlevlerinin uygulamaları OLMALIDIR. Güvenli izolasyon, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole edilmiş ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
- [9.11/A-0-3] Kilit ekranı kimlik doğrulaması, izole edilmiş yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Bu şartı karşılamak için Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty, yukarı akış Android Açık Kaynak Projesi tarafından sağlanır.
- [9.11/A-0-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Anahtarların cihaz tanımlayıcı olarak kullanılmasını önlemek için onay imzalama anahtarları yeterli sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamanın bir yolu,belirli bir SKU'nun en az 100.000 birimi üretilmediği sürece aynı onay anahtarını paylaşmaktır. Bir SKU'nun 100.000'den fazla birimi üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulduysa bu cihaz, android.hardware.fingerprint
özelliğini (izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektirir) beyan etmediği sürece, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaftır.
Otomotiv cihaz uygulamaları:
- [9.14/A-0-1] Android çerçevesi araç alt sistemlerinden gelen mesajları kontrol etmelidir. Örneğin, izin verilen mesaj türlerini ve mesaj kaynaklarını izin verilenler listesine ekleme.
- [9.14/A-0-2] Android çerçevesinden veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı watchdog işlevi KULLANILMALIDIR. Bu, kötü amaçlı yazılımların araç ağını trafikle doldurmasını önler. Aksi takdirde, araç alt sistemlerinde arıza meydana gelebilir.
2.5.6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
Otomotiv cihaz uygulamaları:
-
Perfetto
- [6.1/A-0-1] Kabuk kullanıcısına, komut satırının Perfto belgelerine uygun olduğu bir
/system/bin/perfetto
ikili dosyası sunulmalı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 izi YAZMALIDIR.
- [6.1/A-0-4] Mükemmeliyet dokümanlarında açıklanan veri kaynaklarının en azından birini, mükemmeliyet ikilisi aracılığıyla SAĞLAMALIDIR.
- [6.1/A-0-1] Kabuk kullanıcısına, komut satırının Perfto belgelerine uygun olduğu bir
2.6. Tablet Gereksinimleri
Android Tablet cihaz, genellikle aşağıdaki tüm ölçütleri karşılayan bir Android cihaz uygulamasıdır:
- İki elle tutularak kullanılır.
- Clamshell veya dönüştürülebilir yapılandırmaya sahip olmamalıdır.
- Cihazla kullanılan fiziksel klavye uygulamaları, standart bir bağlantı (ör. USB, Bluetooth) aracılığıyla bağlanır.
- Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
- 7-18 inç arasında fiziksel bir çapraz ekran boyutuna sahip olmalıdır.
Tablet cihaz uygulamaları, elde taşınabilir cihaz uygulamalarına benzer gereksinimlere sahiptir. İstisnalar ilgili bölümde * işaretiyle belirtilir ve bu bölümde referans için not edilir.
2.6.1. Donanım
Ekran Boyutu
- [7.1.1.1/Tab-0-1] 7-18 inç arasında bir ekrana SAHİP 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 Alanı (Bölüm 7.6.1)
Elde taşınabilir cihaz gereksinimlerinde küçük/normal ekranlar için listelenen ekran yoğunlukları tabletler için geçerli değildir.
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çeklikte 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 bildirmezse:
- [9.5/T-1-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlıca oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
Tablet cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildiriyorsa:
- [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 kontrollerin AOSP uygulamasında yer almasına UYGUN OLMALIDIR.
2.6.2. Yazılım
- [3.2.3.1/Tab-0-1] Burada listelenen aşağıdaki uygulama amaçları tarafından tanımlanan tüm herkese açık amaç filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini amaç işleyiciyle önceden yükLEMELİDİR.
3. Yazılım
3.1. Yönetilen API Uyumluluğu
Yönetilen Dalvik bayt kodu yürütme ortamı, Android uygulamaları için birincil araçtır. Android uygulama programlama arayüzü (API), yönetilen çalışma zamanı ortamında çalışan uygulamalara sunulan Android platform arayüzleri kümesidir.
Cihaz uygulamaları:
-
[C-0-1] Android SDK tarafından kullanıma sunulan veya yukarı akış Android kaynak kodunda "@SystemApi" işaretçisiyle süslenmiş tüm API'lerin, belgelenmiş tüm davranışlar dahil olmak üzere eksiksiz uygulamalarını SAĞLAMALIDIR.
-
[C-0-2] TestApi ek açıklaması (@TestApi) ile işaretlenen tüm sınıfları, yöntemleri ve ilişkili öğeleri desteklemeli/korumalıdır.
-
[C-0-3] Bu Uyumluluk Tanımı'nda özellikle izin verilen durumlar hariç olmak üzere, yönetilen API'ler atlanmamalı, API arayüzleri veya imzaları değiştirilmemeli, belgelenen davranıştan sapılmamalı ya da hiçbir işlem yapmayan işlemler eklenmemelidir.
-
[C-0-4] Android'in API'ler içerdiği bazı donanım özellikleri atlandığında bile API'ler mevcut olmaya ve makul bir şekilde davranmaya DEVAM ETMELİDİR. Bu senaryoya özgü şartlar için 7. bölüme bakın.
-
[C-0-5] Üçüncü taraf uygulamaların, AOSP'deki önyükleme sınıf yolunda bulunan ve herkese açık SDK'nın bir parçası olmayan Java dil paketlerindeki yöntemler ve alanlar olarak tanımlanan SDK dışı arayüzleri kullanmasına İZİN VERİLMEMELİDİR. Bu, SDK belgelerinde açıklandığı gibi
@hide
ek açıklamasıyla süslenmiş ancak@SystemAPI
ile süslenmemiş API'leri, özel ve paket özel sınıf üyelerini içerir. -
[C-0-6] AOSP'deki uygun API düzeyi dalı için
prebuilts/runtime/appcompat/hiddenapi-flags.csv
yolunda geçici ve izin verilmeyenler listesi işaretleri aracılığıyla sağlananlarla aynı kısıtlanmış listelerdeki her bir SDK dışı arayüzle birlikte gönderilmelidir. -
[C-0-7] AOSP'de bulunan mevcut ortak anahtarları kullanarak, imzalı yapılandırmayı herhangi bir APK'ya yerleştirerek SDK dışı arayüzleri kısıtlanmış bir listeden kaldırmak için imzalı yapılandırma dinamik güncelleme mekanizmasını DESTEKLEMELİDİR.
Ancak:
- MAY, eğer gizli bir API yoksa veya cihaz uygulamasında farklı şekilde uygulanmışsa gizli API'yi kara listeye taşıyın ya da tüm kısıtlanmış listelerden (ör. açık gri, koyu gri, siyah) çıkarın.
- MAY: AOSP'de gizli bir API yoksa gizli API'yi kısıtlanmış listelerden herhangi birine (ör. açık gri, koyu gri, siyah) ekleyin.
3.1.1. Android Uzantıları
Android, belirli bir API düzeyinin yönetilen API yüzeyini, bu API düzeyinin uzantı sürümünü güncelleyerek genişletmeyi destekler. android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel)
API, sağlanan apiLevel
için uzantılar varsa bu API düzeyinin 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ümlere eşit veya daha yüksek sürümlerle önceden yükLEMELİDİR. Örneğin, API düzeyi 24'ü çalıştıran Android 7.0 cihaz uygulamaları EN AZ sürüm 1'i içermelidir. -
[C-0-2] YALNIZCA AOSP tarafından tanımlanan geçerli uzantı sürüm numarası döndürülmelidir.
-
[C-0-3]
android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel)
tarafından döndürülen uzantı sürümlerinde tanımlanan tüm API'leri, bölüm 3.1'deki şartlara uyarak diğer yönetilen API'ler gibi desteklemelidir.
3.1.2. Android Kitaplığı
Apache HTTP istemcisinin desteği sonlandırıldığından cihaz uygulamaları:
- [C-0-1]
org.apache.http.legacy
kitaplığı, bootclasspath'e yerleştirilmemelidir. - [C-0-2] YALNIZCA uygulama aşağıdaki koşullardan birini karşıladığında
org.apache.http.legacy
kitaplığı uygulama sınıf yoluna eklenmelidir:- API düzeyi 28 veya daha düşük bir sürümü hedefliyorsa
<uses-library>
öğesininandroid:name
özelliğiniorg.apache.http.legacy
olarak ayarlayarak kitaplığa ihtiyacı olduğunu manifest dosyasında belirtir.
AOSP uygulaması bu koşulları karşılar.
3.2. Yazılım API'si Uyumluluğu
Android, bölüm 3.1'deki yönetilen API'lere ek olarak, yalnızca çalışma zamanında kullanılabilen önemli bir "yumuşak" API de içerir. Bu API, niyetler, izinler ve Android uygulamalarının derleme zamanında zorunlu kılınamayan benzer yönleri gibi öğeler biçimindedir.
3.2.1. İzinler
- [C-0-1] Cihaz uygulayıcıları, izin referans sayfasında belirtildiği şekilde tüm izin sabitlerini desteklemeli ve zorunlu kılmalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek şartların listelendiğini unutmayın.
3.2.2. Oluşturma Parametreleri
Android API'leri, android.os.Build sınıfında mevcut cihazı tanımlaması amaçlanan çeşitli sabitler 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 UYMASI GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre | Ayrıntılar |
---|---|
VERSION.RELEASE | Şu anda yürütülen Android sisteminin sürümü, okunabilir biçimde. Bu alan, 11'de tanımlanan dize değerlerinden birini İÇERMELİDİR. |
VERSION.SDK | Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 11 için bu alanın değeri 11_INT tam sayısı OLMALIDIR. |
VERSION.SDK_INT | Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 11 için bu alanın değeri 11_INT tam sayısı OLMALIDIR. |
VERSION.INCREMENTAL | Cihaz uygulayıcısı tarafından seçilen ve o anda yürütülen Android sisteminin belirli derlemesini belirten, kullanıcılar tarafından okunabilir biçimde bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişikliği tanımlayıcısının kullanıldığını belirtmektir. Bu alanın değeri, yazdırılabilir 7 bitlik ASCII olarak kodlanabilir OLMALI ve "^[^ :\/~]+$" normal ifadesiyle eşleşmelidir. |
MASA | Cihaz uygulayıcısı tarafından seçilen ve cihazın kullandığı belirli dahili donanımı tanımlayan, kullanıcılar tarafından okunabilir biçimdeki bir değer. Bu alan, cihazı çalıştıran kartın belirli bir revizyonunu belirtmek için kullanılabilir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
BRAND | Cihazla ilişkili marka adını son kullanıcılara bilindiği şekliyle yansıtan bir değer. Okunabilir biçimde OLMALI ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını TEMSİL ETMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
SUPPORTED_ABIS | Yerel kodun talimat kümesinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
SUPPORTED_32_BIT_ABIS | Yerel kodun talimat kümesinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
SUPPORTED_64_BIT_ABIS | Yerel kodun ikinci talimat setinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
CPU_ABI | Yerel kodun talimat kümesinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
CPU_ABI2 | Yerel kodun ikinci talimat setinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
CİHAZ | Cihaz uygulayıcısı tarafından seçilen ve cihazın donanım özelliklerinin ve endüstriyel tasarımının yapılandırması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 kodlanabilmeli ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
PARMAK İZİ |
Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunabilir OLMALIDIR. Şu şablona UYULMALIDIR:
$(BRAND)/$(PRODUCT)/ Örneğin:
acme/myproduct/ Parmak izi, boşluk karakterleri içermemelidir. Bu alanın değeri 7 bitlik ASCII olarak kodlanabilmelidir. |
DONANIM | Donanımın adı (çekirdek komut satırından veya /proc'tan). Makul ölçüde okunabilir OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
HOST | Derlemenin oluşturulduğu ana makineyi benzersiz bir şekilde tanımlayan, kullanıcıların okuyabileceği biçimde bir dize. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır. |
ID | Cihaz uygulayıcısı tarafından belirli bir sürümü belirtmek için seçilen, insanlar tarafından okunabilir biçimde bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapabilmesi için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir. |
ÜRETİCİ | Ürünün Özgün Donanım Üreticisi'nin (OEM) ticari adı. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalıdır veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca değişmemelidir. |
MODEL | Cihaz uygulayıcısı tarafından seçilen ve cihazın son kullanıcı tarafından bilinen adını içeren bir değer. Bu, cihazın son kullanıcılara pazarlandığı ve satıldığı adla AYNI OLMALIDIR. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalıdır veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca değişmemelidir. |
ÜRÜN | Cihaz uygulayıcısı tarafından seçilen ve aynı marka içinde benzersiz OLMASI GEREKEN belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değer. Kullanıcıların okuyabileceği bir biçimde OLMALIDIR ancak son kullanıcıların görüntülemesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilmeli ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
SERIAL | "UNKNOWN" döndürmelidir. |
ETİKETLER | Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayırt eden virgülle ayrılmış etiket listesi. Etiketler 7 bit ASCII olarak kodlanabilir OLMALI, "^[a-zA-Z0-9._-]+" normal ifadesiyle eşleşmeli ve üç tipik Android platformu imzalama yapılandırmasına (release-keys, dev-keys ve test-keys) karşılık gelen değerlerden birine sahip OLMALIDIR. |
SÜRE | Derlemenin gerçekleştiği zaman damgasını temsil eden bir değer. |
TÜR | Cihaz uygulayıcısı tarafından seçilen ve derlemenin çalışma zamanı yapılandırmasını belirten bir değer. Bu alan, üç tipik Android çalışma zamanı yapılandırmasına (user, userdebug veya eng) karşılık gelen değerlerden birini içermelidir. |
KULLANICI | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı ya da kullanıcı kimliği. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır. |
VERSION.SECURITY_PATCH | Bir derlemenin güvenlik yaması düzeyini gösteren değer. Bu, derlemenin, belirlenen Android herkese açık güvenlik bülteninde açıklanan sorunlardan herhangi birine karşı hiçbir şekilde güvenlik açığı içermediğini göstermelidir. Android Herkese Açık Güvenlik Bülteni veya Android Güvenlik Tavsiyesi'nde belgelenen tanımlı bir dizeyle eşleşen [YYYY-AA-GG] biçiminde OLMALIDIR. Örneğin, "2015-11-01". |
VERSION.BASE_OS | Android Public Security Bulletin'de sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden bir değer. Doğru değeri RAPORLAMALI ve böyle bir derleme yoksa boş bir dize ("") raporlamalıdır. |
BOOTLOADER | Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili önyükleyici sürümünü tanımlayan, kullanıcılar tarafından okunabilir biçimdeki değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir. |
getRadioVersion() | Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili radyo/modem sürümünü tanımlayan bir değeri, kullanıcılar tarafından okunabilir biçimde İÇERMELİDİR (veya döndürmelidir). Bir cihazda dahili radyo/modem yoksa NULL döndürmesi GEREKİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir. |
getSerial() | Aynı MODEL ve ÜRETİCİYE sahip cihazlarda kullanılabilir ve benzersiz olması GEREKEN bir donanım seri numarası (olmalı veya döndürmelidir). Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir. |
3.2.3. Amaca Uygunluk
3.2.3.1. Yaygın uygulama amaçları
Android intent'leri, uygulama bileşenlerinin diğer Android bileşenlerinden işlev isteğinde bulunmasına olanak tanır. Android upstream projesi, yaygın işlemleri gerçekleştirmek için çeşitli amaç kalıplarını uygulayan uygulamaların bir listesini içerir.
Cihaz uygulamaları:
- [C-SR] Burada listelenen uygulama amaçları tarafından tanımlanan tüm genel amaç filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini amaç işleyiciyle önceden yüklemeniz ve SDK'da açıklandığı gibi bu yaygın uygulama amaçları için geliştiricinin beklentilerini karşılayacak şekilde yerine getirme sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
Her cihaz türü için zorunlu uygulama amaçları hakkında bilgi edinmek üzere lütfen 2. Bölüm'e bakın.
3.2.3.2. Amaç Çözümleme
-
[C-0-1] Android genişletilebilir bir platform olduğundan cihaz uygulamaları, Ayarlar hariç bölüm 3.2.3.1'de referans verilen her amaç kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına İZİN VERMELİDİR. Yukarı akış Android açık kaynak uygulaması, bu işleme varsayılan olarak izin verir.
-
[C-0-2] Cihaz uygulayıcıları, sistem uygulamalarının bu amaç kalıplarını kullanmasına özel ayrıcalıklar TANIMLAMAMALI veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü ele geçirmesini ENGELLEMEMELİDİR. Bu yasak, özellikle kullanıcının aynı amaç kalıbını işleyen birden fazla uygulama arasında seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bununla sınırlı değildir.
-
[C-0-3] Cihaz uygulamaları, kullanıcıların amaçlar için varsayılan etkinliği değiştirebileceği bir kullanıcı arayüzü SAĞLAMALIDIR.
-
Ancak, varsayılan etkinlik, veri URI'si için daha spesifik bir özellik sağladığında cihaz uygulamaları belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten bir amaç filtresi kalıbı, tarayıcının "http://" için temel amaç kalıbından daha spesifiktir.
Android ayrıca üçüncü taraf uygulamalarının, belirli web URI amaçları türleri için yetkili bir varsayılan uygulama bağlantısı davranışı bildirmesine olanak tanıyan bir mekanizma içerir. Bu tür yetkili beyanlar bir uygulamanın amaç filtresi kalıplarında tanımlandığında cihaz uygulamaları:
- [C-0-4] MUST, yukarı akış Android Açık Kaynak Projesi'ndeki Paket Yöneticisi tarafından uygulanan Digital Asset Links spesifikasyonunda tanımlanan doğrulama adımlarını gerçekleştirerek tüm amaç filtrelerini doğrulamaya çalışmalıdır.
- [C-0-5] Uygulama yüklenirken niyet filtrelerinin doğrulanması DENENMELİ ve başarıyla doğrulanan tüm URI niyet filtreleri, URI'leri için varsayılan uygulama işleyicileri olarak ayarlanmalıdır.
- Başarıyla doğrulanırsa ancak diğer aday URI filtreleri doğrulanamazsa URI'leri için belirli URI amaç filtrelerini varsayılan uygulama işleyicileri olarak AYARLAYABİLİR. Bir cihaz uygulaması bunu yaparsa ayarlar menüsünde kullanıcıya URI başına uygun kalıp geçersiz kılma işlemleri SAĞLAMALIDIR.
- Kullanıcıya Ayarlar'da uygulama başına uygulama bağlantıları kontrolleri aşağıdaki şekilde SAĞLANMALIDIR:
- [C-0-6] Kullanıcı, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütünsel olarak geçersiz kılabilmelidir. Bu davranış, her zaman açma, her zaman sorma veya hiçbir zaman açma şeklinde olmalı ve tüm aday URI amaç filtreleri için eşit şekilde geçerli olmalıdır.
- [C-0-7] Kullanıcı, aday URI amaç filtrelerinin listesini GÖREBİLMELİDİR.
- Cihaz uygulaması, kullanıcıya başarıyla doğrulanmış belirli aday URI amaç filtrelerini amaç filtresi bazında geçersiz kılma olanağı SAĞLAYABİLİR.
- [C-0-8] Cihaz uygulaması, bazı aday URI amaç filtrelerinin doğrulamayı geçmesine, bazılarının ise başarısız olmasına izin veriyorsa kullanıcıların belirli aday URI amaç filtrelerini görüntülemesine ve geçersiz kılmasına olanak tanımalıdır.
3.2.3.3. Niyet Ad Alanları
- [C-0-1] Cihaz uygulamaları, android. veya com.android. ad alanında ACTION, CATEGORY ya da başka bir anahtar dizesi kullanarak yeni bir intent veya yayın intent kalıbını destekleyen herhangi bir Android bileşeni İÇERMEMELİDİR.
- [C-0-2] Cihaz uygulayıcıları, başka bir kuruluşa ait paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni bir intent ya da yayın intent kalıplarını destekleyen Android bileşenleri içermemelidir.
- [C-0-3] Cihaz uygulayıcıları, 3.2.3.1 bölümünde listelenen amaç kalıplarından hiçbirini değiştirmemeli veya genişletmemelidir.
- Cihaz uygulamaları, kendi kuruluşlarıyla açık ve belirgin bir şekilde ilişkili ad alanlarını kullanan amaç kalıplarını içerebilir. Bu yasak, bölüm 3.6'da Java dili sınıfları için belirtilen yasağa benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikleri bildirmek için belirli amaçları yayınlamak üzere platforma güvenir.
Cihaz uygulamaları:
- [C-0-1] SDK belgelerinde açıklandığı gibi uygun sistem etkinliklerine yanıt olarak burada listelenen herkese açık yayın amaçlarını yayınLAMALIDIR. Arka plan uygulamalarıyla ilgili sınırlama SDK dokümanlarında da açıklandığı için bu şartın 3.5 bölümüyle çelişmediğini unutmayın. Ayrıca, belirli yayın amaçları donanım desteğine bağlıdır. Cihaz gerekli donanımı destekliyorsa amaçları yayınlamalı ve SDK belgelerinde belirtilen davranışları sağlamalıdır.
3.2.3.5. Koşullu uygulama amaçları
Android'de, kullanıcılara varsayılan uygulamalarını (ör. ana ekran veya SMS için) kolayca seçme olanağı sunan ayarlar bulunur.
Cihaz uygulamaları, anlamlı olduğu durumlarda benzer bir ayarlar menüsü sağlamalı ve SDK belgelerinde aşağıda açıklandığı gibi amaç filtresi kalıbı ve API yöntemleriyle uyumlu olmalıdır.
Cihaz uygulamaları android.software.home_screen
bildiriyorsa:
- [C-1-1] Ana ekran için varsayılan uygulama ayarları menüsünü gösterme
android.settings.HOME_SETTINGS
amacına UYULMALIDIR.
Cihaz uygulamaları android.hardware.telephony
bildiriyorsa:
-
[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
amacını çağıracak bir ayarlar menüsü SAĞLANMALIDIR. -
[C-2-2] Kullanıcının varsayılan Telefon uygulamasını değiştirmesine izin vermek için bir iletişim kutusu gösterme
android.telecom.action.CHANGE_DEFAULT_DIALER
amacına UYULMALIDIR.- Acil durum aramaları hariç gelen ve giden aramalar için kullanıcının seçtiği varsayılan Telefon uygulamasının kullanıcı arayüzü KULLANILMALIDIR. Acil durum aramalarında ise önceden yüklenmiş Telefon uygulaması kullanılır.
-
[C-2-3] android.telecom.action.CHANGE_PHONE_ACCOUNTS amacına uygun olarak,
PhoneAccounts
ile ilişkiliConnectionServices
'ı yapılandırmak için kullanıcıya kolaylık sağlamalı ve telekomünikasyon hizmeti sağlayıcısının giden aramalar yapmak için kullanacağı varsayılan bir PhoneAccount'u desteklemelidir. AOSP uygulaması, "Aramalar" ayarları menüsünde "Arama Hesapları seçeneği" menüsünü ekleyerek bu şartı 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ünü üstlenen bir uygulamayı seçme olanağı TANINMALIDIR. - [C-2-6] android.intent.action.SENDTO ve android.intent.action.VIEW amaçlarına UYULMALI ve SMS mesajları göndermek/görüntülemek için bir etkinlik sağlanmalıdır.
- [C-SR] android.intent.action.ANSWER, android.intent.action.CALL, android.intent.action.CALL_BUTTON, android.intent.action.VIEW ve android.intent.action.DIAL niyetlerinin, bu niyetleri işleyebilen ve SDK'da açıklandığı şekilde yerine getirebilen önceden yüklenmiş bir çevirici uygulamasıyla karşılanması önemle tavsiye edilir.
Cihaz uygulamaları android.hardware.nfc.hce
bildiriyorsa:
- [C-3-1] Temassız ödeme için varsayılan uygulama ayarları menüsünü göstermek üzere android.settings.NFC_PAYMENT_SETTINGS amacına UYULMALIDIR.
- [C-3-2] SDK'da açıklandığı gibi, kullanıcının belirli bir kategori için varsayılan kart emülasyon hizmetini değiştirmesini isteyen bir iletişim kutusu açan bir etkinliği göstermek üzere android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT amacına UYULMALIDIR.
Cihaz uygulamaları android.hardware.nfc
bildiriyorsa:
- [C-4-1] SDK'da açıklandığı gibi, geliştiricilerin bu amaçlarla ilgili beklentilerini karşılayan bir etkinlik göstermek için android.nfc.action.NDEF_DISCOVERED, android.nfc.action.TAG_DISCOVERED ve android.nfc.action.TECH_DISCOVERED amaçlarına UYULMALIDIR.
Cihaz uygulamaları VoiceInteractionService
özelliğini destekliyorsa ve aynı anda bu API'yi kullanan birden fazla uygulama yüklüyse:
- [C-4-1] Sesli giriş ve yardım için varsayılan uygulama ayarları menüsünü gösterme
android.settings.ACTION_VOICE_INPUT_SETTINGS
amacına UYULMALIDIR.
Cihaz uygulamaları android.hardware.bluetooth
bildiriyorsa:
- [C-5-1] "android.bluetooth.adapter.action.REQUEST_ENABLE" amacına UYULMALI ve kullanıcının Bluetooth'u açmasına izin vermek için bir sistem etkinliği gösterilmelidir.
- [C-5-2] "android.bluetooth.adapter.action.REQUEST_DISCOVERABLE" amacına UYULMALI ve bulunabilir mod isteğinde bulunan bir sistem etkinliği gösterilmelidir.
Cihaz uygulamaları DND özelliğini destekliyorsa:
- [C-6-1]
ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS
amacına yanıt verecek bir etkinlik uygulanmalıdır. UI_MODE_TYPE_NORMAL ile uygulamalarda bu, kullanıcının uygulamaya rahatsız etmeyin politikası yapılandırmalarına erişim izni verebileceği veya erişimi reddedebileceği bir etkinlik olmalıdır.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:
- [C-7-1]
android.settings.INPUT_METHOD_SETTINGS
amacına yanıt olarak üçüncü taraf giriş yöntemlerini eklemek ve yapılandırmak için kullanıcı tarafından erişilebilen bir mekanizma SAĞLANMALIDIR.
Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-8-1] Önceden yüklenmiş erişilebilirlik hizmetlerinin yanı sıra üçüncü taraf erişilebilirlik hizmetlerini etkinleştirmek ve devre dışı bırakmak için kullanıcı tarafından erişilebilen bir mekanizma sağlama
android.settings.ACCESSIBILITY_SETTINGS
amacına UYULMALIDIR.
Cihaz uygulamaları, Wi-Fi Easy Connect desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-9-1] SDK dokümanlarında açıklandığı gibi Settings#ACTION_PROCESS_WIFI_EASY_CONNECT_URI Intent API'lerini uygulamalıdır.
Cihaz uygulamaları, veri tasarrufu modunu sağlıyorsa: * [C-10-1] Ayarlarda Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
amacını işleyen bir kullanıcı arayüzü sağlamalıdır. Bu arayüz, kullanıcıların izin verilenler listesine uygulama eklemesine veya listeden uygulama kaldırmasına olanak tanır.
Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:
- [C-11-1]
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
amacını işleyen bir etkinliğe SAHİP OLMALI ancak bunu işlem yapmayan bir işlev olarak uygulayabilir.
Cihaz uygulamaları, android.hardware.camera.any
üzerinden kamera desteği sunduğunu belirtiyorsa:
- [C-12-1]
android.media.action.STILL_IMAGE_CAMERA
veandroid.media.action.STILL_IMAGE_CAMERA_SECURE
amacına UYULMALI ve SDK'da açıklandığı gibi kamera, hareketsiz görüntü modunda başlatılmalıdır. - [C-12-2] SDK'da açıklandığı gibi, kamerayı video modunda başlatma
android.media.action.VIDEO_CAMERA
amacına UYULMALIDIR. - [C-12-3] SDK dokümanında açıklandığı gibi, yalnızca önceden yüklenmiş Android uygulamalarının aşağıdaki amaçları
MediaStore.ACTION_IMAGE_CAPTURE
,MediaStore.ACTION_IMAGE_CAPTURE_SECURE
veMediaStore.ACTION_VIDEO_CAPTURE
işlemesine izin VERİLMELİDİR.
Cihaz uygulamaları android.software.device_admin
bildiriyorsa:
-
[C-13-1] Kullanıcıyı, cihaz yöneticisini sisteme ekleme (veya bunu reddetmesine izin verme) sürecine yönlendirmek için bir kullanıcı arayüzü çağırma amacına
android.app.action.ADD_DEVICE_ADMIN
UYULMALIDIR. -
[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 amaçlarını karşılamalı ve SDK'da burada açıklandığı gibi bu amaçları yerine getirecek bir etkinliğe sahip olmalıdır.
Cihaz uygulamaları android.software.autofill
özellik işaretini beyan ediyorsa:
- [C-14-1]
AutofillService
veAutofillManager
API'leri tamamen uygulanmalı ve kullanıcının otomatik doldurmayı etkinleştirmesine/devre dışı bırakmasına ve varsayılan otomatik doldurma hizmetini değiştirmesine olanak tanıyan varsayılan uygulama ayarları menüsünü göstermek için android.settings.REQUEST_SET_AUTOFILL_SERVICE intent'i desteklenmelidir.
Cihaz uygulamaları önceden yüklenmiş bir uygulama içeriyorsa veya üçüncü taraf uygulamaların kullanım istatistiklerine erişmesine izin vermek istiyorsa:
- [C-SR]
android.permission.PACKAGE_USAGE_STATS
iznini bildiren uygulamalar için android.settings.ACTION_USAGE_ACCESS_SETTINGS amacına yanıt olarak kullanım istatistiklerine erişim izni verme veya erişimi iptal etme konusunda kullanıcı tarafından erişilebilen bir mekanizma sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, önceden yüklenmiş uygulamalar da dahil olmak üzere uygulamaların kullanım istatistiklerine erişmesini engellemek istiyorsa:
- [C-15-1] android.settings.ACTION_USAGE_ACCESS_SETTINGS intent kalıbını işleyen bir etkinliğe sahip olmaya DEVAM ETMELİ ancak bunu no-op olarak uygulamalıdır. Yani, kullanıcıya erişim reddedildiğinde olduğu gibi eşdeğer bir davranışa sahip olmalıdır.
Cihaz uygulamaları android.hardware.audio.output
özelliğini bildiriyorsa:
- [C-SR] android.intent.action.TTS_SERVICE, android.speech.tts.engine.INSTALL_TTS_DATA ve android.speech.tts.engine.GET_SAMPLE_TEXT amaçlarını karşılamak için SDK'da burada açıklandığı şekilde bir etkinliğe sahip olmaları önemle tavsiye edilir.
Android, daha önce Dreams olarak adlandırılan etkileşimli ekran koruyucuları destekler. Ekran koruyucular, bir güç kaynağına bağlı cihaz boşta durduğunda veya masaüstü dock'ına yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Cihaz Uygulamaları:
- Ekran koruyucu desteği İÇERMELİ ve kullanıcılara
android.settings.DREAM_SETTINGS
amacına yanıt olarak ekran koruyucuları yapılandırmaları için bir ayar seçeneği SUNMALIDIR.
3.2.4. İkincil/birden fazla ekrandaki etkinlikler
Cihaz uygulamaları, normal Android Etkinlikleri'nin birden fazla ekranda başlatılmasına izin veriyorsa:
- [C-1-1]
android.software.activities_on_secondary_displays
özellik bayrağı AYARLANMALIDIR. - [C-1-2] Birincil ekranda çalışan bir etkinliğe benzer şekilde API uyumluluğu GARANTİ EDİLMELİDİR.
- [C-1-3] Yeni etkinlik,
ActivityOptions.setLaunchDisplayId()
API'si aracılığıyla hedef ekran belirtilmeden başlatıldığında yeni etkinliği başlatan etkinlikle aynı ekranda başlatILMALIDIR. - [C-1-4]
Display.FLAG_PRIVATE
bayraklı bir ekran kaldırıldığında TÜM etkinlikler yok EDİLMELİDİR. - [C-1-5] Uygulama,
Activity#setShowWhenLocked()
API'sini kullanarak kilit ekranının üstünde göstermeyi etkinleştirmediği sürece, cihaz güvenli bir kilit ekranıyla kilitlendiğinde tüm ekranlardaki içerik güvenli bir şekilde gizlenmelidir. - Bir etkinlik ikincil ekranda başlatılırsa gösterilmesi, doğru şekilde çalışması ve uyumluluğun korunması için bu ekrana karşılık gelen
android.content.res.Configuration
olmalıdır.
Cihaz uygulamaları, ikincil ekranlarda normal Android Etkinlikleri'nin başlatılmasına izin veriyorsa ve ikincil ekranda android.view.Display.FLAG_PRIVATE işareti varsa:
- [C-3-1] Yalnızca söz konusu ekranın, sistemin ve ekranda zaten bulunan etkinliklerin sahibi, ekranı başlatabilmelidir. Herkes, android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda başlatma işlemi yapabilir.
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 uygulamalarını yukarı akış Android Açık Kaynak Projesi'nden kullanmanız KESİNLİKLE ÖNERİLİR.
3.3.1. Uygulama İkili Arabirimleri
Yönetilen Dalvik bayt kodu, uygulamada uygun cihaz donanım mimarisi için derlenmiş bir ELF .so
dosyası olarak sağlanan yerel kodu çağırabilir..apk
Yerel kod, temel işlemci teknolojisine büyük ölçüde bağlı olduğundan Android, Android NDK'da bir dizi Uygulama İkili Arabirimi (ABI) tanımlar.
Cihaz uygulamaları:
- [C-0-1] Tanımlanmış bir veya daha fazla Android NDK ABI'si ile uyumlu OLMALIDIR.
- [C-0-2] Standart Java Native Interface (JNI) semantiğini kullanarak yönetilen ortamda çalışan kodun yerel kodu çağırması için destek içermelidir.
- [C-0-3] Aşağıdaki listede yer alan her bir gerekli kitaplıkla kaynak uyumlu (yani başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
- [C-0-5]
android.os.Build.SUPPORTED_ABIS
,android.os.Build.SUPPORTED_32_BIT_ABIS
veandroid.os.Build.SUPPORTED_64_BIT_ABIS
parametreleri aracılığıyla cihaz tarafından desteklenen yerel Uygulama İkili Arabirimi'ni (ABI) doğru şekilde bildirmelidir. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene doğru sıralanmış, virgülle ayrılmış ABI listeleridir. -
[C-0-6] Yukarıdaki parametreler aracılığıyla aşağıdaki ABI listesinin bir alt kümesini RAPORLAMALI ve listede olmayan hiçbir ABI'yi RAPORLAMAMALIDIR.
-
armeabi
(artık NDK tarafından hedef olarak desteklenmiyor) -
armeabi-v7a
-
arm64-v8a
-
x86
-
x86-64
-
-
[C-0-7] Yerel API'ler sağlayan aşağıdaki tüm kitaplıklar, yerel kod içeren uygulamalarda KULLANILABİLİR olmalıdır:
- libaaudio.so (AAudio yerel ses desteği)
- libamidi.so (5.9 bölümünde açıklandığı gibi
android.software.midi
özelliği talep edildiyse yerel MIDI desteği) - libandroid.so (yerel Android etkinliği desteği)
- libc (C kitaplığı)
- libcamera2ndk.so
- libdl (dinamik bağlayıcı)
- libEGL.so (yerel OpenGL yüzey yönetimi)
- libGLESv1_CM.so (OpenGL ES 1.x)
- libGLESv2.so (OpenGL ES 2.0)
- libGLESv3.so (OpenGL ES 3.x)
- libicui18n.so
- libicuuc.so
- libjnigraphics.so
- liblog (Android günlük kaydı)
- libmediandk.so (yerel medya API'leri desteği)
- libm (matematik kitaplığı)
- libneuralnetworks.so (Neural Networks API)
- libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
- libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
- libRS.so
- libstdc++ (C++ için minimum destek)
- libvulkan.so (Vulkan)
- libz (Zlib sıkıştırması)
- JNI arayüzü
-
[C-0-8] Yukarıda listelenen yerel kitaplıklar için herkese açık işlevler eklenmemeli veya kaldırılmamalıdır.
- [C-0-9]
/vendor/etc/public.libraries.txt
içinde doğrudan üçüncü taraf uygulamalarına sunulan ek AOSP dışı kitaplıkları LİSTELEMELİDİR. - [C-0-10] AOSP'de sistem kitaplıkları olarak uygulanan ve sağlanan diğer yerel kitaplıklar, ayrılmış oldukları için API düzeyi 24 veya sonraki sürümleri hedefleyen üçüncü taraf uygulamalarına sunulmamalıdır.
- [C-0-11] NDK'da tanımlandığı şekilde,
libGLESv3.so
kitaplığı aracılığıyla tüm OpenGL ES 3.1 ve Android Extension Pack işlev sembollerini dışa aktarmalıdır. Tüm sembollerin bulunması GEREKTİĞİNİ ancak bölüm 7.1.4.1'de, ilgili işlevlerin tam olarak uygulanmasının beklendiği durumlarla ilgili koşulların daha ayrıntılı olarak açıklandığını unutmayın. - [C-0-12]
libvulkan.so
kitaplığı aracılığıyla temel Vulkan 1.0 işlev simgeleri veVK_KHR_surface
,VK_KHR_android_surface
,VK_KHR_swapchain
,VK_KHR_maintenance1
veVK_KHR_get_physical_device_properties2
uzantıları için işlev simgelerini dışa aktarmalıdır. Tüm sembollerin bulunması GEREKTİĞİNİ, ancak bölüm 7.1.4.2'de her bir ilgili işlevin tam olarak uygulanmasının beklendiği durumlarla ilgili koşulların daha ayrıntılı olarak açıklandığını unutmayın. - Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kodu ve başlık dosyaları kullanılarak oluşturulmalıdır.
Android'in gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın.
3.3.2. 32 bit ARM Yerel Kod Uyumluluğu
Cihaz uygulamaları armeabi
ABI'nin desteklendiğini bildiriyorsa:
- [C-3-1]
armeabi-v7a
de desteklenmeli ve desteklendiği bildirilmelidir.armeabi
yalnızca eski uygulamalarla geriye dönük uyumluluk için kullanılır.
Cihaz uygulamaları armeabi-v7a
ABI'nin desteklendiğini bildiriyorsa bu ABI'yi kullanan uygulamalar:
-
[C-2-1]
/proc/cpuinfo
içinde aşağıdaki satırları İÇERMELİ ve aynı cihazdaki değerleri, diğer ABI'ler tarafından okunduklarında bile DEĞİŞTİRMEMELİDİR.-
Features:
ve ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi. -
CPU architecture:
ve ardından cihazın desteklediği en yüksek ARM mimarisini açıklayan bir tam sayı (ör. ARMv8 cihazlar için "8").
-
-
[C-2-2] ABI, ARMv8 mimarisinde yerel CPU desteği veya yazılım emülasyonu aracılığıyla uygulanmış olsa bile aşağıdaki işlemler her zaman kullanılabilir olmalıdır:
- SWP ve SWPB talimatları.
- SETEND talimatı.
- CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri.
-
[C-2-3] Advanced SIMD (diğer adıyla NEON) uzantısı için destek İÇERMELİDİR.
3.4. Web Uyumluluğu
3.4.1. WebView Uyumluluğu
Cihaz uygulamaları, android.webkit.Webview
API'nin eksiksiz bir uygulamasını sağlıyorsa:
- [C-1-1]
android.software.webview
BİLDİRİLMELİDİR. - [C-1-2]
android.webkit.WebView
API'sinin uygulanması için Android 11 dalında, yukarı akış Android Açık Kaynak Projesi'nden alınan 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ğerine eşit OLMALIDIR.
- $(MODEL) dizesi BOŞ olabilir ancak boş değilse android.os.Build.MODEL ile aynı değere SAHİP OLMALIDIR.
- "Build/$(BUILD)" atlanabilir ancak mevcutsa $(BUILD) dizesi android.os.Build.ID değeriyle aynı OLMALIDIR.
- $(CHROMIUM_VER) dizesinin değeri, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium sürümü OLMALIDIR.
- Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobile'ı ATLAYABİLİR.
-
WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliğini desteklemelidir ve özelliği destekliyorsa HTML5 spesifikasyonuna uygun olmalıdır.
-
[C-1-3] Sağlanan içeriği veya uzaktan URL içeriğini, WebView'u başlatan uygulamadan farklı bir işlemde oluşturmalıdır. Özellikle ayrı oluşturma işlemi daha düşük ayrıcalığa sahip OLMALI, ayrı bir kullanıcı kimliği olarak ÇALIŞTIRILMALI, uygulamanın veri dizinine erişimi OLMAMALI, doğrudan ağ erişimi OLMAMALI ve yalnızca Binder üzerinden minimum düzeyde gerekli sistem hizmetlerine erişimi OLMALIDIR. WebView'ın AOSP uygulaması bu koşulu karşılar.
Cihaz uygulamaları 32 bit ise veya android.hardware.ram.low
özellik işaretini bildiriyorsa C-1-3'ten muaf tutulur.
3.4.2. Tarayıcı Uyumluluğu
Cihaz uygulamaları genel web'de gezinme için bağımsız bir Tarayıcı uygulaması içeriyorsa:
- [C-1-1] HTML5 ile ilişkili şu API'lerin her birini DESTEKLEMELİDİR:
- [C-1-2] HTML5/W3C webstorage API'sini DESTEKLEMELİ ve HTML5/W3C IndexedDB API'sini DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları, web depolama yerine IndexedDB'yi tercih etmeye başladığından IndexedDB'nin Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesi beklenmektedir.
- Bağımsız tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi gönderilebilir.
- Bağımsız tarayıcı uygulamasında (yukarı akış WebKit tarayıcı uygulamasına veya üçüncü taraf bir alternatife dayalı olsun ya da olmasın) mümkün olduğunca fazla HTML5 desteği uygulanmalıdır.
Ancak cihaz uygulamaları bağımsız bir Tarayıcı uygulaması içermiyorsa:
- [C-2-1] 3.2.3.1 bölümünde açıklandığı gibi herkese açık amaç kalıplarını desteklemeye DEVAM ETMELİDİR.
3.5. API Davranış Uyumluluğu
Cihaz uygulamaları:
- [C-0-9] Bölüm 3.5.1'de açıklandığı şekilde kısıtlanmadıkları sürece, yüklü tüm uygulamalarda API davranış uyumluluğunun uygulandığından EMİN OLMALIDIR.
- [C-0-10] YALNIZCA cihaz uygulayıcıları tarafından seçilen uygulamalar için API davranış uyumluluğunu sağlayan izin verilenler listesi yaklaşımı UYGULANMAMALIDIR.
API türlerinin (yönetilen, yumuşak, yerel ve web) her birinin davranışları, yukarı akış Android Açık Kaynak Projesi'nin tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumlulukla ilgili bazı özel alanlar şunlardır:
- [C-0-1] Cihazlar, standart bir amacın davranışını veya semantiğini DEĞİŞTİRMEMELİDİR.
- [C-0-2] Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, ContentProvider vb.) yaşam döngüsünü veya yaşam döngüsü semantiğini değiştirmemelidir.
- [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEMELİDİR.
- Cihazlar, arka plan uygulamalarına uygulanan sınırlamaları DEĞİŞTİRMEMELİDİR. Daha açık şekilde belirtmek gerekirse, arka planda çalışan uygulamalar için:
- [C-0-4] Uygulama tarafından
GnssMeasurement
veGnssNavigationMessage
'dan çıkış almak için kaydedilen geri çağırma işlemlerini DURDURMALIDIR. - [C-0-5]
LocationManager
API sınıfı veyaWifiManager.startScan()
yöntemi aracılığıyla uygulamaya sağlanan güncellemelerin sıklığını SINIRLANDIRMALIDIR. - [C-0-6] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa yayın amacı
"signature"
veya"signatureOrSystem"
protectionLevel
izni gerektirmediği ya da muafiyet listesinde olmadığı sürece, uygulamanın manifest dosyasında standart Android amaçlarının örtülü yayınları için yayın alıcılarının kaydedilmesine İZİN VERMEMELİDİR. - Uygulama, API düzeyi 25 veya üstünü hedefliyorsa kullanıcıya görünür bir görevi yerine getirmek için geçici izin verilenler listesine yerleştirilmediği sürece, hizmetlerin
stopSelf()
yöntemi çağrılmış gibi uygulamanın arka plan hizmetlerini DURDURMALIDIR. [C-0-7] - Uygulama API düzeyi 25 veya üstünü hedefliyorsa [C-0-8] uygulamanın tuttuğu uyandırma kilitlerini serbest bırakması ZORUNLUDUR.
- [C-0-4] Uygulama tarafından
- [C-0-9] Uygulama, listeyi
insertProviderAt()
veyaremoveProvider()
aracılığıyla değiştirmemişse cihazlar,Security.getProviders()
yönteminden döndürülen ilk yedi dizi değeri olarak aşağıdaki güvenlik sağlayıcıları, verilen sırada ve verilen adlarla (Provider.getName()
tarafından döndürüldüğü gibi) ve sınıflarla döndürmelidir. Cihazlar, aşağıdaki belirtilen sağlayıcı listesinden sonra ek sağlayıcılar döndü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ış uyumluluğu açısından test eder ancak tüm bölümlerini test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcılar sistemin önemli kısımlarını yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodunu KULLANMALIDIR.
3.5.1. Uygulama Kısıtlaması
Cihaz uygulamaları, uygulamaları kısıtlamak için tescilli bir mekanizma kullanıyorsa ve bu mekanizma Rare App Standby Bucket'tan 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ı olanağı SAĞLANMALIDIR.
- [C-1-2] Her uygulamadaki kısıtlamaları etkinleştirmek / devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR.
- [C-1-3] Sistem sağlığıyla ilgili kötü davranış kanıtı olmadan kısıtlamalar otomatik olarak uygulanMAMALI, ancak takılı uyanık tutma kilitleri ve uzun süredir çalışan hizmetler gibi sistem sağlığıyla ilgili kötü davranışlar tespit edildiğinde uygulamalara kısıtlamalar uygulanABİLİR. Ölçütler, cihaz uygulayıcıları tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili OLMALIDIR. Uygulamanın piyasada popüler olmaması gibi, tamamen sistem sağlığıyla ilgili olmayan diğer ölçütler kullanılmamalıdır.
- [C-1-4] Kullanıcı, uygulama kısıtlamalarını manuel olarak devre dışı bıraktığında uygulamalara yönelik uygulama kısıtlamaları otomatik olarak uygulanMAMALI ve kullanıcıya uygulama kısıtlamalarını uygulaması ÖNERİLEBİLİR.
- [C-1-5] Uygulama kısıtlamaları bir uygulamaya otomatik olarak uygulanırsa kullanıcıları bilgilendirmelidir. Bu tür bilgiler, kısıtlamaların uygulanmasından sonraki 24 saat içinde sağlanmalıdır.
- [C-1-6] Kısıtlanmış uygulama bu API'yi çağırdığında
ActivityManager.isBackgroundRestricted()
içintrue
döndürmelidir. - [C-1-7] Kullanıcı tarafından açıkça kullanılan ön plandaki en üst uygulama kısıtlanMAMALIDIR.
- [C-1-8] Kullanıcı, kısıtlanmış olan uygulamayı açıkça kullanmaya başladığında, en üstteki ön plan uygulaması haline gelen uygulamadaki kısıtlamalar ASKIYA ALINMALIDIR.
3.6. API ad alanları
Android, Java programlama dili tarafından tanımlanan paket ve sınıf ad alanı kurallarını izler. Cihaz uygulayıcıları, üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için bu paket ad alanlarında yasaklanmış değişiklikler (aşağıya bakın) YAPMAMALIDIR:
-
java.*
-
javax.*
-
sun.*
-
android.*
-
androidx.*
-
com.android.*
Yani:
- [C-0-1] Android platformunda herkese açık olarak sunulan API'ler, herhangi bir yöntem veya sınıf imzası değiştirilerek ya da sınıflar veya sınıf alanları kaldırılarak değiştirilmemelidir.
- [C-0-2] Yukarıdaki ad alanlarındaki API'lere herkese açık olarak sunulan öğeler (ör. sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere alanlar ya da yöntemler) ya da Test veya Sistem API'leri eklenmemelidir. "Herkese açık öğe", yukarı akış Android kaynak kodunda kullanılan "@hide" işaretçisiyle süslenmemiş tüm yapılardır.
Cihaz uygulayıcıları, API'lerin temel uygulamasını DEĞİŞTİREBİLİR ancak bu tür değişiklikler:
- [C-0-3] Herhangi bir herkese açık API'nin belirtilen davranışını ve Java dili imzasını etkilememelidir.
- [C-0-4] Reklamı yapılmamalı veya geliştiricilere başka bir şekilde gösterilmemelidir.
Ancak, cihaz uygulayıcıları standart Android ad alanı dışında özel API'ler ekleyebilir. Bununla birlikte, özel API'ler:
- [C-0-5] Başka bir kuruluşa ait olan veya başka bir kuruluşu ifade eden bir ad alanında OLMAMALIDIR. Örneğin, cihaz uygulayıcılar
com.google.*
veya benzer ad alanına API eklememelidir. Bunu yalnızca Google yapabilir. Benzer şekilde, Google da diğer şirketlerin ad alanlarına API eklememelidir. - [C-0-6] Yalnızca bunları 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 Android paylaşılan kitaplığı olarak paketlenmelidir.
Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarından birini iyileştirmeyi (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) teklif ederse uygulayıcı source.android.com adresini ziyaret etmeli ve bu sitedeki bilgilere göre değişiklik ve kod katkısında bulunma sürecini başlatmalıdır.
Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmayla ilgili standart kurallara karşılık geldiğini unutmayın. Bu bölümün amacı yalnızca bu kuralları pekiştirmek ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmektir.
3.7. Çalışma Zamanı Uyumluluğu
Cihaz uygulamaları:
-
[C-0-1] MUST support the full Dalvik Executable (DEX) format and Dalvik bytecode specification and semantics.
-
[C-0-2] Dalvik çalışma zamanlarını, yukarı akış Android platformuna uygun olarak ve aşağıdaki tabloda belirtildiği şekilde bellek ayıracak şekilde yapılandırmalıdır. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 bölümüne bakın.)
-
Android RunTime (ART), Dalvik Executable Format'ın referans upstream uygulaması ve referans uygulamanın paket yönetim sistemi KULLANILMALIDIR.
-
Çalışma zamanının kararlılığını sağlamak için çeşitli yürütme modları ve hedef mimariler altında bulanıklaştırma testleri YAPILMALIDIR. Android Açık Kaynak Projesi web sitesindeki JFuzz ve DexFuzz bölümlerine bakın.
Aşağıda belirtilen bellek değerlerinin minimum değerler olduğu ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceği unutulmamalıdır.
Ekran Düzeni | Ekran Yoğunluğu | Minimum Uygulama Belleği |
---|---|---|
Android Watch | 120 dpi (ldpi) | 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 | |
large | 120 dpi (ldpi) | 32MB |
140 dpi (140dpi) | 48MB | |
160 dpi (mdpi) | ||
180 dpi (180dpi) | 80MB | |
200 dpi (200dpi) | ||
213 dpi (tvdpi) | ||
220 dpi (220dpi) | ||
240 dpi (hdpi) | ||
280 dpi (280dpi) | 96MB | |
320 dpi (xhdpi) | 128MB | |
360 dpi (360dpi) | 160MB | |
400 dpi (400dpi) | 192MB | |
420 dpi (420dpi) | 228MB | |
480 dpi (xxhdpi) | 256MB | |
560 dpi (560dpi) | 384MB | |
640 dpi (xxxhdpi) | 512MB | |
xlarge | 120 dpi (ldpi) | 48MB |
140 dpi (140dpi) | 80MB | |
160 dpi (mdpi) | ||
180 dpi (180dpi) | 96MB | |
200 dpi (200dpi) | ||
213 dpi (tvdpi) | ||
220 dpi (220dpi) | ||
240 dpi (hdpi) | ||
280 dpi (280dpi) | 144MB | |
320 dpi (xhdpi) | 192MB | |
360 dpi (360dpi) | 240MB | |
400 dpi (400dpi) | 288MB | |
420 dpi (420dpi) | 336MB | |
480 dpi (xxhdpi) | 384MB | |
560 dpi (560dpi) | 576MB | |
640 dpi (xxxhdpi) | 768MB |
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.1. Başlatıcı (Ana Ekran)
Android'de bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerine üçüncü taraf uygulamaları kullanma desteği bulunur.
Cihaz uygulamaları, üçüncü taraf uygulamaların cihazın ana ekranının yerini almasına izin veriyorsa:
- [C-1-1] Platform özelliği
android.software.home_screen
BİLDİRİLMELİDİR. - [C-1-2] Üçüncü taraf uygulaması, simgesini sağlamak için
<adaptive-icon>
etiketini kullandığında ve simgeleri almak içinPackageManager
yöntemleri çağrıldığındaAdaptiveIconDrawable
nesnesi döndürülmelidir.
Cihaz uygulamaları, kısayolların uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı içeriyorsa:
- [C-2-1]
ShortcutManager.isRequestPinShortcutSupported()
içintrue
raporlanmalıdır. - [C-2-2] Uygulamalar tarafından
ShortcutManager.requestPinShortcut()
API yöntemiyle istenen kısayolları eklemeden önce kullanıcıya soran bir kullanıcı arayüzü OLMALIDIR. - [C-2-3] Uygulama kısayolları sayfasında belirtildiği gibi, sabitlenmiş kısayollar ile dinamik ve statik kısayollar desteklenmelidir.
Aksine, cihaz uygulamaları uygulama içi kısayol sabitlemeyi desteklemiyorsa:
- [C-3-1]
ShortcutManager.isRequestPinShortcutSupported()
içinfalse
bildirilmelidir.
Cihaz uygulamaları, ShortcutManager API aracılığıyla üçüncü taraf uygulamalarının sağladığı ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uyguluyorsa:
- [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 tam olarak uygulamalıdır.
Cihaz uygulamalarında, uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması varsa:
- [C-5-1]
NotificationChannel.setShowBadge()
API yöntemine UYMALIDIR. Diğer bir deyişle, değertrue
olarak ayarlanmışsa uygulama simgesiyle ilişkili görsel bir ipucu gösterin ve uygulamanın tüm bildirim kanalları değerifalse
olarak ayarlamışsa herhangi bir uygulama simgesi rozet şeması göstermeyin. - Üçüncü taraf uygulamaları, özel API'ler kullanarak özel rozet şemasını desteklediğini belirttiğinde uygulama simgesi rozetlerini özel rozet şemasıyla geçersiz KILABİLİR 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 KULLANMALIDIR.
3.8.2. Widget'lar
Android, uygulamaların son kullanıcıya bir "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] Platform özelliği
android.software.app_widgets
için destek beyan EDİLMELİDİR. - [C-1-2] AppWidget'ler için yerleşik destek İÇERMELİ ve AppWidget'leri doğrudan Başlatıcı'ya 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 boyutundaki widget'ları oluşturabilmelidir. Ayrıntılar için Android SDK belgelerindeki 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 uygulama içi kısayol sabitlemeyi destekliyorsa:
- [C-2-1]
AppWidgetManager.html.isRequestPinAppWidgetSupported()
içintrue
bildirilmelidir. - [C-2-2] Uygulamalar tarafından
AppWidgetManager.requestPinAppWidget()
API yöntemiyle istenen kısayolları eklemeden önce kullanıcıya soran bir kullanıcı arayüzü OLMALIDIR.
3.8.3. Bildirimler
Android'de, üçüncü taraf uygulama geliştiricilerin kullanıcılara önemli etkinlikleri bildirmesine ve cihazın donanım bileşenlerini (ör. ses, titreşim ve ışık) ve yazılım özelliklerini (ör. bildirim gölgesi, sistem çubuğu) kullanarak kullanıcıların dikkatini çekmesine olanak tanıyan Notification
ve NotificationManager
API'leri bulunur.
3.8.3.1. Bildirimlerin Sunulması
Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli etkinlikler hakkında bilgilendirmesine izin veriyorsa:
- [C-1-1] SDK dokümanlarında açıklandığı gibi ve cihaz uygulamasının donanımıyla mümkün olduğu ölçüde, donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim motoru varsa titreşim API'lerini DOĞRU şekilde uygulaması ZORUNLUDUR. Bir cihaz uygulamasında donanım eksikse ilgili API'ler işlem yapmayan işlemler olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmıştır.
- [C-1-2] API'lerde veya Durum/Sistem Çubuğu Simgeleri Stil Kılavuzu'nda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) doğru şekilde oluşturmalıdır. Bununla birlikte, referans Android Açık Kaynak uygulaması tarafından sağlanan bildirimlerden farklı bir kullanıcı deneyimi sunabilir.
- [C-1-3] Bildirimleri güncellemek, kaldırmak ve gruplandırmak için API'ler ile ilgili açıklanan davranışlara uymalı ve bunları doğru şekilde uygulamalıdır.
- [C-1-4] SDK'da belgelenen NotificationChannel API'sinin tam davranışını SAĞLAMALIDIR.
- [C-1-5] Belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek ve değiştirmek için kullanıcıya bir olanak SUNULMALIDIR.
- [C-1-6] SİLİNMİŞ bildirim kanallarını görüntülemek için kullanıcıya bir olanak SAĞLANMALIDIR.
- [C-1-7] Notification.MessagingStyle aracılığıyla sağlanan tüm kaynaklar (resimler, çıkartmalar, simgeler vb.), bildirim metniyle birlikte ek kullanıcı etkileşimi olmadan DOĞRU şekilde oluşturulmalıdır. Örneğin, setGroupConversation ile ayarlanan bir grup görüşmesinde android.app.Person aracılığıyla sağlanan simgeler de dahil olmak üzere tüm kaynaklar GÖSTERİLMELİDİR.
- [C-SR] Kullanıcı bu bildirimi birden çok kez kapattıktan sonra belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek için kullanıcıya otomatik olarak bir seçenek sunulması ŞİDDETLE TAVSİYE EDİLİR.
- Zengin bildirimleri DESTEKLEMELİDİR.
- Daha yüksek öncelikli bazı bildirimleri uyarı bildirimi olarak göstermelidir.
- Bildirimleri ertelemek için kullanıcıya bir seçenek SUNULMALIDIR.
- MAY, sürücünün dikkatinin dağılması gibi güvenlik sorunlarını azaltmak için yalnızca üçüncü taraf uygulamalarının kullanıcıları önemli etkinliklerden ne zaman haberdar edebileceğinin görünürlüğünü ve zamanlamasını yönetir.
Android 11, MessagingStyle kullanan ve yayınlanmış bir People kısayol kimliği sağlayan görüşme bildirimleri için destek sunar.
Cihaz uygulamaları:
- [C-SR] Devam eden ön plan hizmeti bildirimleri ve
importance:high
bildirimleri hariç olmak üzere,conversation notifications
bildirimlerinin, görüşme bildirimleri olmayan bildirimlerden önce gruplandırılması ve gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları conversation notifications
özelliğini destekliyorsa ve uygulama bubbles
için gerekli verileri sağlıyorsa:
- [C-SR] Bu görüşmenin baloncuk olarak gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. AOSP uygulaması, varsayılan Sistem Kullanıcı Arayüzü, Ayarlar ve Başlatıcı ile bu şartları 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ı eksiksiz biçimde 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 metni) SUNMALIDIR.
Cihaz uygulamaları, heads-up bildirimlerini destekliyorsa:
- [C-3-1] Önizleme bildirimleri gösterilirken
Notification.Builder
API sınıfında açıklandığı gibi önizleme bildirimi görünümü ve kaynakları KULLANILMALIDIR. - [C-3-2]
Notification.Builder.addAction()
aracılığıyla sağlanan işlemler, SDK'da açıklandığı gibi ek kullanıcı etkileşimi olmadan bildirim içeriğiyle birlikte GÖSTERİLMELİDİR.
3.8.3.2. Bildirim Dinleyici Hizmeti
Android, uygulamaların (kullanıcı tarafından açıkça etkinleştirildikten sonra) yayınlandıkları veya güncellendikleri sırada tüm bildirimlerin bir kopyasını almasına olanak tanıyan NotificationListenerService
API'lerini içerir.
Cihaz uygulamaları:
- [C-0-1] Bildirim nesnesine eklenen tüm meta veriler de dahil olmak üzere, bu tür yüklü ve kullanıcı tarafından etkinleştirilmiş dinleyici hizmetlerindeki bildirimleri doğru ve hızlı bir şekilde eksiksiz olarak güncellemelidir.
- [C-0-2]
snoozeNotification()
API çağrısına UYULMALI, bildirim kapatılmalı ve API çağrısında ayarlanan erteleme süresinden sonra geri arama yapılmalıdır.
Cihaz uygulamalarında bildirimleri ertelemek için kullanıcıya sunulan bir özellik varsa:
- [C-1-1]
NotificationListenerService.getSnoozedNotifications()
gibi standart API'ler aracılığıyla ertelenen bildirim durumunu doğru şekilde yansıtmalıdır. - [C-1-2] Kalıcı/ön plan hizmetlerinden gelmedikleri sürece, yüklü her üçüncü taraf uygulamasından gelen bildirimleri ertelemek için bu kullanıcı işlevini KULLANIMA SUNMALIDIR.
3.8.3.3. DND (Rahatsız Etmeyin)
Cihaz uygulamaları DND özelliğini destekliyorsa:
- [C-1-1] Cihaz uygulaması, kullanıcının üçüncü taraf uygulamalarına Rahatsız Etmeyin politikası yapılandırmasına erişim izni vermesini veya bu erişimi reddetmesini sağlayacak bir yöntem sunuyorsa uygulamalar tarafından oluşturulan Otomatik Rahatsız Etmeyin kurallarını, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kurallarla birlikte GÖSTERMELİDİR.
- [C-1-3]
NotificationManager.Policy
ile iletilensuppressedVisualEffects
değerlerine UYULMALIDIR ve bir uygulama SUPPRESSED_EFFECT_SCREEN_OFF veya SUPPRESSED_EFFECT_SCREEN_ON işaretlerinden herhangi birini ayarladıysa kullanıcılara, görsel efektlerin Rahatsız Etmeyin ayarları menüsünde devre dışı bırakıldığını BELİRTMELİDİR.
3.8.4. Arat
Android, geliştiricilerin uygulamalarına arama işlevini eklemelerine ve uygulamalarının verilerini küresel sistem aramasında göstermelerine olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmesine, yazarken önerileri göstermesine ve sonuçları görüntülemesine olanak tanıyan 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 geliştiricilerin ortak global arama kullanıcı arayüzüne sonuçlar sunmasına olanak tanır.
- Android cihaz uygulamaları, kullanıcı girişine yanıt olarak anlık öneriler sunabilen, sistem genelinde tek bir paylaşılan arama kullanıcı arayüzü olan genel aramayı İÇERMELİDİR.
Cihaz uygulamaları genel arama arayüzünü uyguluyorsa:
- [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 uygulamalıdır.
Genel aramayı kullanan üçüncü taraf uygulamaları yüklü değilse:
- Varsayılan davranış, web arama motoru sonuçlarını ve önerilerini göstermek OLMALIDIR.
Android ayrıca, uygulamaların mevcut bağlamdaki bilgilerin ne kadarının cihazdaki asistanla paylaşılacağını seçmesine olanak tanıyan Assist API'lerini de içerir.
Cihaz uygulamaları Asistan işlemini destekliyorsa:
- [C-2-1] Aşağıdaki yöntemlerden biriyle bağlamın paylaşıldığı zamanı son kullanıcıya net bir şekilde BELİRTİN:
- Asistan uygulaması bağlama her eriştiğinde, Android Açık Kaynak Projesi uygulamasının süresini ve parlaklığını karşılayan veya aşan bir süre boyunca ekranın kenarlarında beyaz ışık gösterilir.
- Önceden yüklenmiş asistan uygulaması için, varsayılan sesli giriş ve asistan uygulaması ayarları menüsünden iki gezinmeden daha az uzaklıkta bir kullanıcı olanağı sunulması ve bağlamın yalnızca asistan uygulaması, kullanıcı tarafından bir etkin kelime veya asistan gezinme anahtarı girişi aracılığıyla açıkça çağrıldığında paylaşılması.
- [C-2-2] Bölüm 7.2.3'te belirtildiği gibi, yardım uygulamasını başlatmak için belirlenen etkileşim, kullanıcı tarafından seçilen yardım uygulamasını (diğer bir deyişle
VoiceInteractionService
'yi uygulayan uygulamayı) veyaACTION_ASSIST
amacını işleyen bir etkinliği başlatmalıdır.
3.8.5. Uyarılar ve Bildirimler
Uygulamalar, kısa bir süre sonra kaybolan kısa ve modsuz dizeleri son kullanıcıya göstermek için Toast
API'sini, uyarı pencerelerini diğer uygulamaların üzerinde katman olarak göstermek için ise TYPE_APPLICATION_OVERLAY
pencere türü API'sini kullanabilir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
-
[C-1-1] Bir uygulamanın
TYPE_APPLICATION_OVERLAY
kullanarak uyarı pencereleri göstermesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR . AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu koşulu karşılar. -
[C-1-2] Toast API'yi desteklemeli ve uygulamalardan gelen Toast'ları son kullanıcılara kolayca görülebilecek şekilde göstermelidir.
3.8.6. Temalar
Android, uygulamaların bir Etkinlik veya uygulamanın tamamında stil uygulaması için "temalar" sunar.
Android, uygulama geliştiricilerin Android SDK'da tanımlandığı şekilde Holo tema görünümüne ve hissine uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir dizi stil olarak "Holo" ve "Material" tema ailesini içerir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Uygulamalara sunulan Holo tema özelliklerinden hiçbirini değiştirmemelidir.
- [C-1-2] "Material" tema ailesini DESTEKLEMELİ ve Material tema özelliklerinin hiçbirini veya uygulamalara sunulan öğelerini DEĞİŞTİRMEMELİDİR.
- [C-1-3] Roboto'nun desteklediği dillerde "sans-serif" yazı ailesini Roboto 2.x sürümü olarak ayarlamalı veya Roboto'nun desteklediği dillerde "sans-serif" yazı ailesi için kullanılan yazı tipini Roboto 2.x sürümü olarak değiştirmek için kullanıcıya bir olanak sunmalıdır.
Android'de ayrıca, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünüm ve tarzına uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir dizi stil olarak "Cihazda kullanılan tema" tema ailesi de bulunur.
- Cihaz uygulamaları, uygulamalara sunulan Device Default tema özelliklerini değiştirebilir.
Android, yarı saydam sistem çubuklarına sahip bir tema varyantını destekler. Bu tema, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içerikleriyle doldurmasına olanak tanır. Bu yapılandırmada tutarlı bir geliştirici deneyimi sağlamak için durum çubuğu simge stilinin farklı cihaz uygulamalarında korunması önemlidir.
Cihaz uygulamaları sistem durumu çubuğu içeriyorsa:
- [C-2-1] Simge, sorunlu bir durumu belirtmediği veya bir uygulama 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 verilen bildirimler için BEYAZ renk KULLANILMALIDIR.
- [C-2-2] Bir uygulama açık renkli bir durum çubuğu istediğinde Android cihaz uygulamaları, sistem durumu simgelerinin rengini siyaha çevirmelidir (ayrıntılar için R.style'a bakın).
3.8.7. Animasyonlu Duvar Kağıtları
Android, uygulamaların son kullanıcıya bir veya daha fazla "Canlı Duvar Kağıdı" göstermesine olanak tanıyan bir bileşen türü, ilgili API ve yaşam döngüsü tanımlar. Canlı duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak gösterilen, sınırlı giriş özelliklerine sahip animasyonlar, desenler veya benzer resimlerdir.
Donanımın, işlevsellik açısından herhangi bir sınırlama olmaksızın, diğer uygulamalar üzerinde olumsuz bir etkisi olmadan ve makul bir kare hızında tüm canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabildiği durumlarda canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabildiği kabul edilir. Donanımdaki sınırlamalar nedeniyle duvar kağıtları ve/veya uygulamalar kilitleniyor, düzgün çalışmıyor, aşırı CPU veya pil gücü tüketiyor ya da kabul edilemeyecek kadar düşük kare hızlarında çalışıyorsa donanımın canlı duvar kağıdı çalıştırması mümkün değildir. Örneğin, bazı canlı duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamını kullanabilir. Canlı duvar kağıdı, OpenGL bağlamlarının kullanımı diğer uygulamalarla çakışabileceğinden birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.
- Yukarıda açıklandığı gibi animasyonlu duvar kağıtlarını güvenilir bir şekilde çalıştırabilen cihaz uygulamaları, animasyonlu duvar kağıtlarını uygulamalıdır.
Cihaz uygulamaları animasyonlu duvar kağıtlarını destekliyorsa:
- [C-1-1] android.software.live_wallpaper platform özellik işaretini bildirmelidir.
3.8.8. Etkinlikler Arasında Geçiş
Yukarı akış Android kaynak kodu, kullanıcının uygulamadan en son ayrıldığı andaki uygulamanın grafik durumunun küçük resmini kullanarak görev değiştirme ve son erişilen etkinlikleri ve görevleri görüntüleme için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi navigasyon tuşunu içeren cihaz uygulamaları arayüzü değiştirebilir.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi gezinme tuşunu içeren cihaz uygulamaları arayüzü değiştirirse:
- [C-1-1] En az 7 görüntülenen etkinliği desteklemelidir.
- En az 4 etkinliğin başlığını aynı anda GÖSTERMELİDİR.
- [C-1-2] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirmek/devre dışı bırakmak için bir ayarlar menüsü sunmalıdır.
- Son kullanılanlarda vurgu rengi, simge ve ekran başlığı GÖSTERİLMELİDİR.
- Kapatma işlevi ("x") GÖSTERİLMELİDİR ancak bu işlev, kullanıcı ekranlarla etkileşime girene kadar GECİKTİRİLEBİLİR.
- Önceki etkinliğe kolayca geçmek için bir kısayol UYGULANMALIDIR.
- Son kullanılanlar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işlemini TETİKLEMELİDİR.
- Destekleniyorsa son işlevler tuşuna uzun basıldığında bölünmüş ekran çoklu pencere modu TETİKLENMELİDİR.
- Bağlı kuruluşlara ait son öğeleri birlikte hareket eden bir grup olarak GÖSTEREBİLİR.
- [SR] Genel bakış ekranı için yukarı akış Android kullanıcı arayüzünün (veya benzer bir küçük resim tabanlı arayüzün) kullanılması ŞİDDETLE TAVSİYE EDİLİR.
3.8.9. Giriş Yönetimi
Android, Giriş Yönetimi'ni ve üçüncü taraf giriş yöntemi düzenleyicilerini destekler.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:
- [C-1-1] MUST declare the platform feature android.software.input_methods and support IME APIs as defined in the Android SDK documentation.
3.8.10. Kilit ekranında medya kontrolü
Android 5.0'dan itibaren, medya uygulamalarının kilit ekranında gösterilen oynatma kontrolleriyle entegre olmasına olanak tanıyan Medya Bildirimi Şablonu lehine Uzaktan Kumanda İstemcisi API'sinin desteği sonlandırılmıştır.
3.8.11. Ekran koruyucular (eski adıyla İlham Sahnesi)
Ekran koruyucuları yapılandırma amaçlı ayarlar için 3.2.3.5 bölümüne bakın.
3.8.12. Konum
Cihaz uygulamaları, konum koordinatlarını sağlayabilen bir donanım sensörü (ör. GPS) içeriyorsa
- [C-1-2] Ayarlar'daki Konum menüsünde konumun mevcut durumu GÖSTERİLMELİDİR.
- [C-1-3] Ayarlar'daki Konum menüsünde konum modları GÖSTERİLMEMELİDİR.
3.8.13. Unicode ve Yazı Tipi
Android, Unicode 10.0'da tanımlanan emoji karakterlerini destekler.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Bu emoji karakterlerini renkli glif olarak oluşturabilmelidir.
- [C-1-2] Aşağıdakiler için destek içermelidir:
- Cihazda kullanılabilen diller için farklı ağırlıklara sahip Roboto 2 yazı tipi (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black, sans-serif-condensed, sans-serif-condensed-light).
- Latin Extended A, B, C ve D aralıkları ile Unicode 7.0'ın para birimi sembolleri bloğundaki tüm glifler dahil olmak üzere Latin, Yunan ve Kiril alfabelerinin Unicode 7.0'daki tüm karakterleri
- Unicode Teknik Raporu #51'de belirtildiği gibi cilt tonu ve çeşitli aile emojilerini DESTEKLEMELİDİR.
Cihaz uygulamaları bir IME içeriyorsa:
- Bu emoji karakterleri için kullanıcıya bir giriş yöntemi SAĞLAMALIDIR.
Android, Myanmar yazı tiplerini oluşturma desteği içerir. Myanmar'da Myanmar dillerini oluşturmak için "Zawgyi" olarak bilinen, Unicode uyumlu olmayan çeşitli yazı tipleri 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ı aynı anda birden fazla etkinliği görüntüleyebiliyorsa:
- [C-1-1] Android SDK çoklu pencere modu destek belgelerinde açıklanan uygulama davranışlarına ve API'lere uygun olarak bu tür çoklu pencere modlarını uygulamalı ve aşağıdaki koşulları karşılamalıdır:
- [C-1-2]
android:resizeableActivity
, bu SDK'da açıklandığı gibiAndroidManifest.xml
dosyasında bir uygulama tarafından ayarlanmış olmalıdır. - [C-1-3] Ekran yüksekliği 440 dp'den az ve ekran genişliği 440 dp'den azsa bölünmüş ekran veya serbest biçim modu sunULMAMALIDIR.
- [C-1-4] Etkinlik, pencere içinde pencere dışındaki çok pencereli modlarda 220 dp'den küçük bir boyuta yeniden boyutlandırılMAMALIDIR.
- 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ı önceden yüklenmelidir.
- [C-2-2] Başlatıcı uygulaması odaklanılan pencereyse bölünmüş ekranlı çok pencereli bir uygulamanın yerleştirilmiş etkinliği KESİLMELİ ancak bu etkinliğin bazı içerikleri GÖSTERİLMELİDİR.
- [C-2-3] Üçüncü taraf başlatıcı uygulamasının beyan edilen
AndroidManifestLayout_minWidth
veAndroidManifestLayout_minHeight
değerlerine UYULMALI ve yerleştirilmiş etkinliğin bazı içerikleri gösterilirken bu değerler geçersiz kılınmamalıdır.
Cihaz uygulamaları çoklu pencere modlarını ve pencere içinde pencere çoklu pencere modunu destekliyorsa:
- [C-3-1] Uygulama şu durumlarda etkinlikleri resim içinde resim çoklu pencere modunda başlatmalıdır: * API düzeyi 26 veya sonraki sürümleri hedefliyorsa ve
android:supportsPictureInPicture
beyan ediyorsa * API düzeyi 25 veya önceki sürümleri hedefliyorsa ve hemandroid:resizeableActivity
hem deandroid:supportsPictureInPicture
beyan ediyorsa. - [C-3-2]
setActions()
API'si aracılığıyla, mevcut PIP etkinliğinde belirtildiği şekilde SystemUI'deki işlemleri kullanıma sunmalıdır. - [C-3-3]
setAspectRatio()
API'si aracılığıyla PIP etkinliğinde belirtildiği gibi, 1:2,39'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 tuş, ön plandaki etkinlik için kullanılabilir olmalıdır. - [C-3-5] Bir uygulamanın PIP modunda görüntülenmesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR. AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu şartı karşılar.
-
[C-3-6] Bir uygulama
AndroidManifestLayout_minWidth
veAndroidManifestLayout_minHeight
için herhangi bir değer belirtmediğinde PIP penceresi için aşağıdaki minimum genişlik ve yükseklik ayrılmalıdır:- Configuration.uiMode'u
UI_MODE_TYPE_TELEVISION
dışında bir değere ayarlanmış cihazlar minimum 108 dp genişlik ve yükseklik ayırmalıdır. - Configuration.uiMode'u
UI_MODE_TYPE_TELEVISION
olarak ayarlanmış cihazlar minimum 240 dp genişlik ve 135 dp yükseklik ayırmalıdır.
- Configuration.uiMode'u
3.8.15. Ekran Kesimi
Android, SDK dokümanında açıklandığı gibi ekran kesimini destekler. DisplayCutout
API, ekranın kenarında bir alanı tanımlar. Bu alan, ekran kesimi veya kenarlardaki kavisli ekran nedeniyle bir uygulama için işlevsel olmayabilir.
Cihaz uygulamaları ekran kesiklerini içeriyorsa:
- [C-1-5] Cihazın en boy oranı 1,0 (1:1) ise kesik olmamalıdır.
- [C-1-2] Kenar başına birden fazla kesik olmamalıdır.
- [C-1-3] SDK'da açıklandığı gibi, uygulama tarafından
WindowManager.LayoutParams
API'si aracılığıyla ayarlanan ekran kesme işaretlerine UYMALIDIR. - [C-1-4]
DisplayCutout
API'sinde tanımlanan tüm kesme metrikleri için doğru değerler RAPORLANMALIDIR.
3.8.16. Cihaz Denetimleri
Android, üçüncü taraf uygulamalarının kullanıcılar için hızlı durum ve işlem amacıyla cihaz kontrolleri yayınlamasına olanak tanıyan ControlsProviderService
ve Control
API'lerini içerir.
Cihaza özgü şartlar için Bölüm 2_2_3'e bakın.
3.9. Cihaz Yönetimi
Android, güvenlik konusunda hassas uygulamaların Android Device Administration API aracılığıyla sistem düzeyinde cihaz yönetimi işlevlerini (ör. şifre politikalarını zorunlu kılma veya uzaktan silme) gerçekleştirmesine olanak tanıyan özellikler içerir.
Cihaz uygulamaları, Android SDK belgelerinde tanımlanan cihaz yönetimi politikalarının tamamını uyguluyorsa:
- [C-1-1]
android.software.device_admin
BİLDİRİLMELİDİR. - [C-1-2] Bölüm 3.9.1 ve Bölüm 3.9.1.1'de açıklandığı gibi cihaz sahibi tarafından sağlama işlemini desteklemelidir.
3.9.1 Cihaz Temel Hazırlığı
3.9.1.1 Cihaz sahibi temel hazırlığı
Cihaz uygulamaları android.software.device_admin
beyan ederse:
- [C-1-1] Aşağıda açıklandığı gibi bir Cihaz Politikası İstemcisi'nin (DPC) 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
raporlanmalıdır. - [C-1-4]
android.app.action.PROVISION_MANAGED_DEVICE
amaç işlemine yanıt olarak DPC uygulamasını Cihaz Sahibi uygulaması olarak KAYDETMELİDİR. - [C-1-5] Cihaz, özellik işareti
android.hardware.nfc
aracılığıyla Near Field Communication (NFC) desteği bildiriyorsa ve MIME türüMIME_TYPE_PROVISIONING_NFC
olan bir kayıt içeren bir NFC mesajı alıyorsa DPC uygulaması, cihaz sahibi uygulaması olarak kaydedilmelidir.
- [C-1-3]
- Cihaz uygulamasında kullanıcı verileri varsa:
- [C-1-6]
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içinfalse
raporu VERİLMELİDİR. - [C-1-7] Artık hiçbir DPC uygulamasını cihaz sahibi uygulaması olarak kaydetmemelidir.
- [C-1-6]
- Cihaz uygulamasında henüz kullanıcı verisi yoksa:
- [C-1-2] Uygulamanın cihaz sahibi olarak ayarlanmasına izin vermek için temel hazırlık sürecinden önce veya bu süreç sırasında olumlu bir işlem YAPILMALIDIR. İzin, kullanıcı işlemiyle veya programatik olarak alınabilir ancak cihaz sahibi temel hazırlığı başlatılmadan önce uygun açıklama bildirimi (AOSP'de belirtildiği gibi) GÖSTERİLMELİDİR. Ayrıca, cihaz sahibi sağlama için (işletmeler tarafından) kullanılan programatik cihaz sahibi izni mekanizması, işletme dışı kullanımda kutudan çıkarma deneyimine MÜDAHALE ETMEMELİDİR.
- [C-1-3] İzin sabit kodlanmamalı veya diğer cihaz sahibi uygulamalarının kullanılması engellenmemelidir.
Cihaz uygulamaları android.software.device_admin
beyan ediyorsa ancak tescilli 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" ile "Cihaz Sahibi eşdeğeri" olarak tanıtma mekanizması sağlıyorsa:
- [C-2-1] Tanıtımı yapılan uygulamanın, yasal 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ğrulayan bir süreç OLMALIDIR.
- [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 izni açıklamasını göstermelidir. - DPC uygulaması "Cihaz Sahibi" olarak kaydedilmeden önce cihazda kullanıcı verileri OLABİLİR.
3.9.1.2 Yönetilen profil temel hazırlığı
Cihaz uygulamaları android.software.managed_users
beyan ederse:
-
[C-1-1] Bir cihaz politikası denetleyici (DPC) uygulamasının yeni bir yönetilen profilin sahibi olmasına izin veren API'ler uygulanmalıdır.
-
[C-1-2] Kullanıcıların deneyimlediği yönetilen profil sağlama süreci (android.app.action.PROVISION_MANAGED_PROFILE tarafından başlatılan akış), AOSP uygulamasıyla uyumlu OLMALIDIR.
-
[C-1-3] Belirli bir sistem işlevi Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığında kullanıcıya bildirmek için Ayarlar'da aşağıdaki kullanıcı kolaylıkları SAĞLANMALIDIR:
- Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya başka bir kullanıcı olanağı (ör. yukarı akış AOSP bilgi simgesi).
- Cihaz yöneticisi tarafından
setShortSupportMessage
aracılığıyla sağlanan kısa bir açıklama mesajı. - DPC uygulamasının simgesi.
3.9.2 Yönetilen Profil Desteği
Cihaz uygulamaları android.software.managed_users
beyan ederse:
- [C-1-1]
android.app.admin.DevicePolicyManager
API'leri aracılığıyla yönetilen profiller desteklenmelidir. - [C-1-2] Yalnızca bir yönetilen profilin oluşturulmasına İZİN VERİLMELİDİR.
- [C-1-3] Yönetilen uygulamaları, widget'ları ve diğer rozetli kullanıcı arayüzü öğelerini (ör. Son Kullanılanlar ve Bildirimler) temsil etmek için simge rozeti (AOSP'deki yukarı akış iş rozetine benzer) KULLANILMALIDIR.
- [C-1-4] Kullanıcının yönetilen bir profil uygulamasında olduğunu belirtmek için bildirim simgesi (AOSP yukarı akış iş rozetine benzer) GÖSTERİLMELİDİR.
- [C-1-5] Cihaz uyandığında (ACTION_USER_PRESENT) ve ön plandaki uygulama yönetilen profilin içindeyse kullanıcıya yönetilen profilde olduğunu belirten bir kısa mesaj GÖSTERİLMELİDİR.
- [C-1-6] Yönetilen profil varsa Cihaz Politikası Denetleyicisi tarafından etkinleştirilmişse kullanıcının, yönetilen profilden birincil kullanıcıya veya tam tersi yönde niyet iletmesine izin vermek için Niyet "Seçici"de görsel bir kolaylık GÖSTERİLMELİDİR.
- [C-1-7] Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı olanakları SUNULMALIDIR:
- Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması.
- Birincil kullanıcı veya yönetilen profile yüklenen VPN uygulamalarının bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profile yüklenen uygulamaların bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profil içindeki hesapların bağımsız yönetimi.
- [C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş çevirici, kişiler ve mesajlaşma uygulamalarının, arayan bilgilerini birincil profildeki bilgilerle birlikte yönetilen profilde (varsa) arayabilmesini ve bulabilmesini SAĞLAMALIDIR.
- [C-1-9] Yönetilen profil, birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa da birden fazla kullanıcının etkin olduğu bir cihaz için geçerli olan tüm güvenlik şartlarını karşıladığından EMİN OLMALIDIR (9.5 bölümüne bakın).
Cihaz uygulamaları android.software.managed_users
ve android.software.secure_lock_screen
'yi bildiriyorsa:
- [C-2-1] Yalnızca yönetilen profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı belirtme özelliğini DESTEKLEMELİDİR.
- Cihaz uygulamaları,
DevicePolicyManager.ACTION_SET_NEW_PASSWORD
amacına uymalı ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmak üzere bir arayüz göstermelidir. - Yönetilen profilin kilit ekranı kimlik bilgileri, Android Açık Kaynak Projesi Sitesi'nde belgelendiği gibi üst profil ile aynı kimlik bilgisi depolama ve yönetim mekanizmalarını KULLANMALIDIR.
- DPC şifre politikaları, getParentProfileInstance tarafından döndürülen
DevicePolicyManager
örneği çağrılmadığı sürece YALNIZCA yönetilen profilin kilit ekranı kimlik bilgilerine uygulanmalıdır.
- Cihaz uygulamaları,
- Yönetilen profildeki kişiler, önceden yüklenmiş arama günlüğünde, görüşme içi kullanıcı arayüzünde, devam eden ve cevapsız arama bildirimlerinde, kişiler ve mesajlaşma uygulamalarında gösterildiğinde, yönetilen profil uygulamalarını belirtmek için kullanılan rozetle aynı rozetle işaretlenmelidir.
3.9.3 Yönetilen Kullanıcı Desteği
Cihaz uygulamaları android.software.managed_users
beyan ederse:
- [C-1-1]
isLogoutEnabled
,true
değerini döndürdüğünde çok kullanıcılı oturumda mevcut kullanıcıdan çıkış yapıp birincil kullanıcıya geri dönmek için kullanıcıya bir olanak SAĞLANMALIDIR. Kullanıcı arayüzü, cihazın kilidi açılmadan kilit ekranından erişilebilir OLMALIDIR.
3.10. Erişilebilirlik
Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sağlar. Ayrıca Android, erişilebilirlik hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma almasını ve metin okuma, dokunsal geri bildirim ve trackball/d-pad navigasyonu gibi alternatif geri bildirim mekanizmaları oluşturmasını sağlayan platform API'leri sunar.
Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-1-1] Accessibility API'leri SDK dokümanında açıklandığı gibi Android erişilebilirlik çerçevesinin bir uygulamasını SAĞLAMALIDIR.
- [C-1-2] Erişilebilirlik etkinlikleri OLUŞTURULMALI ve SDK'da belirtildiği gibi tüm kayıtlı
AccessibilityService
uygulamalarına uygunAccessibilityEvent
sunulmalıdır. - [C-1-4] Etkinleştirilen erişilebilirlik hizmetleri
AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON
beyan ettiğinde, kullanıcının erişilebilirlik hizmetini kontrol etmesine olanak tanıyan bir düğme, sistemin 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ıya bir olanak SUNMASI gerektiğini unutmayın.
Cihaz uygulamaları önceden yüklenmiş erişilebilirlik hizmetleri içeriyorsa:
- [C-2-1] Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde bu önceden yüklenmiş erişilebilirlik hizmetleri Direct Boot Aware uygulamaları olarak uygulanmalıdır.
- Kullanıcılara ilgili erişilebilirlik hizmetlerini etkinleştirmeleri için kutudan çıkarma kurulum akışında bir mekanizma SUNULMALIDIR. Ayrıca yazı tipi boyutunu, ekran boyutunu ve büyütme hareketlerini ayarlama seçenekleri de SUNULMALIDIR.
3.11. Metin Okuma
Android, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına olanak tanıyan API'ler içerir ve hizmet sağlayıcıların TTS hizmetlerinin uygulamalarını sağlamasına izin verir.
android.hardware.audio.output özelliğini bildiren cihaz uygulamaları:
- [C-1-1] Android TTS çerçevesi API'leri DESTEKLENMELİDİR.
Cihaz uygulamaları, üçüncü taraf TTS motorlarının yüklenmesini destekliyorsa:
- [C-2-1] Kullanıcının sistem düzeyinde kullanılacak bir TTS motoru seçmesine olanak tanıyan kullanıcı olanağı SAĞLANMALIDIR.
3.12. TV Input Framework
Android Television Input Framework (TIF), canlı içeriklerin Android Television cihazlarına iletilmesini 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] Platform özelliği
android.software.live_tv
BİLDİRİLMELİDİR. - [C-1-2] Bu API'leri ve üçüncü taraf TIF tabanlı girişler hizmetini kullanan bir uygulamanın cihaza yüklenip kullanılabilmesi için tüm TIF API'lerini desteklemelidir.
3.13. Hızlı Ayarlar
Android, sık kullanılan veya acilen ihtiyaç duyulan işlemlere hızlı erişim sağlayan bir Hızlı Ayarlar kullanıcı arayüzü bileşeni sunar.
Cihaz uygulamaları Hızlı Ayarlar kullanıcı arayüzü bileşeni içeriyorsa ve üçüncü taraf Hızlı Ayarlar'ı destekliyorsa:
- [C-1-1] Kullanıcının,
quicksettings
API'leri aracılığıyla sağlanan kutucukları üçüncü taraf uygulamasına eklemesine veya üçüncü taraf uygulamasından kaldırmasına İZİN VERİLMELİDİR. - [C-1-2] Üçüncü taraf uygulamalarından alınan kutular doğrudan Hızlı Ayarlar'a otomatik olarak eklenMEMELİDİR.
- [C-1-3] Sistem tarafından sağlanan hızlı ayar kutucuklarının yanı sıra kullanıcı tarafından eklenen tüm üçüncü taraf uygulama kutucukları GÖSTERİLMELİDİR.
3.14. Medya kullanıcı arayüzü
Cihaz uygulamaları, MediaBrowser
veya MediaSession
aracılığıyla üçüncü taraf uygulamalarıyla etkileşime giren sesle etkinleştirilmeyen uygulamalar (Uygulamalar) içeriyorsa Uygulamalar:
-
[C-1-2]
MediaDescription
bölümünde açıklandığı gibi, getIconBitmap() veya getIconUri() ile alınan simgeler ve getTitle() ile alınan başlıklar NET BİR ŞEKİLDE gösterilmelidir. Güvenlik düzenlemelerine (ör. sürücünün dikkatinin dağılması) uymak için başlıkları kısaltabilir. -
[C-1-3] Bu üçüncü taraf uygulaması tarafından sağlanan içerik gösterilirken üçüncü taraf uygulama simgesi GÖSTERİLMELİDİR.
-
[C-1-4] Kullanıcının
MediaBrowser
hiyerarşisinin tamamıyla etkileşim kurmasına İZİN VERİLMELİDİR. Güvenlik düzenlemelerine (ör. sürücünün dikkatini dağıtma) uymak için hiyerarşinin bir kısmına erişimi KISITLAYABİLİR ancak içerik veya içerik sağlayıcıya göre ayrıcalıklı muamele YAPMAMALIDIR. -
[C-1-5]
KEYCODE_HEADSETHOOK
veyaKEYCODE_MEDIA_PLAY_PAUSE
tuşuna iki kez dokunmanın,MediaSession.Callback#onMediaButtonEvent
içinKEYCODE_MEDIA_NEXT
olarak değerlendirilmesi ZORUNLUDUR.
3.15. Hazır Uygulamalar
Cihaz uygulamaları AŞAĞIDAKİ koşulları karşılamalıdır:
- [C-0-1] Anlık uygulamalara YALNIZCA
android:protectionLevel
değeri"instant"
olarak ayarlanmış izinler verilmelidir. - [C-0-2] Aşağıdaki durumlardan biri geçerli OLMADIĞI SÜRECE hazır uygulamalar, örtülü amaçlar aracılığıyla yüklü uygulamalarla etkileşimde BULUNMAMALIDIR:
- Bileşenin amaç kalıbı filtresi kullanıma sunulur ve CATEGORY_BROWSABLE içerir.
- İşlem, ACTION_SEND, ACTION_SENDTO veya ACTION_SEND_MULTIPLE işlemlerinden biridir.
- Hedef, android:visibleToInstantApps ile açıkça gösteriliyor.
- [C-0-3] Bileşen, android:visibleToInstantApps aracılığıyla kullanıma sunulmadığı sürece hazır uygulamalar, yüklü uygulamalarla açıkça etkileşimde BULUNMAMALIDIR.
- [C-0-4] Yüklü uygulamalar, hazır uygulama yüklü uygulamaya açıkça bağlanmadığı sürece cihazdaki hazır uygulamalarla ilgili ayrıntıları GÖRMEMELİDİR.
Cihaz uygulamaları anlık uygulamaları destekliyorsa:
- [C-1-1] Anlık Uygulamalarla etkileşim için aşağıdaki kullanıcı kolaylıkları SAĞLANMALIDIR. AOSP, varsayılan Sistem Kullanıcı Arayüzü, Ayarlar ve Başlatıcı ile şartları karşılar.
- [C-1-2] Her bir uygulama paketi için yerel olarak önbelleğe alınan Anlık Uygulamaları görüntülemek ve silmek üzere kullanıcıya bir olanak SAĞLANMALIDIR.
- [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üklenmesinin gerekmediğini İÇERMELİ ve kullanıcıyı Ayarlar'daki uygulama bilgileri ekranına yönlendiren bir kullanıcı olanağı sağlamalıdır. Web amaçları aracılığıyla başlatılan hazır uygulamalar için (eylemi Intent.ACTION_VIEW olarak ayarlanmış ve şeması "http" veya "https" olan bir amaç kullanılarak tanımlandığı şekilde) ek bir kullanıcı olanağı, kullanıcının hazır uygulamayı başlatmamasına ve cihazda bir tarayıcı varsa yapılandırılmış web tarayıcısıyla ilişkili bağlantıyı başlatmasına İZİN VERMELİDİR.
- [C-1-4] Cihazda Son Kullanılanlar işlevi varsa Son Kullanılanlar işlevinden anlık uygulamalara erişilmesine İZİN VERİLMELİDİR.
- [C-1-5] MUST preload one or more applications or service components with an intent handler for the intents listed in the SDK here and make the intents visible for Instant Apps.
3.16. Yardımcı Cihaz Eşleme
Android, yardımcı cihazlarla eşlemeyi destekleyerek yardımcı cihazlarla ilişkilendirmeyi daha etkili bir şekilde yönetmenizi sağlar ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager
API'sini sunar.
Cihaz uygulamaları, yardımcı cihaz eşleme özelliğini destekliyorsa:
- [C-1-1] Özellik bayrağı
FEATURE_COMPANION_DEVICE_SETUP
BEYAN EDİLMELİDİR . - [C-1-2]
android.companion
paketindeki API'lerin tamamen uygulandığından EMİN OLMALIDIR. - [C-1-3] Kullanıcının, eşlik eden bir cihazın mevcut ve çalışır durumda olduğunu seçmesi/onaylaması için kullanıcıya olanaklar SUNULMALIDIR.
3:17. Yüksek Boyutlu Uygulamalar
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE
özelliğini beyan ediyorsa:
- [C-1-1] Sistemde aynı anda yalnızca bir tane
cantSaveState
çalıştıran uygulama yüklü OLMALIDIR. Kullanıcı, bu tür bir uygulamadan açıkça çıkmadan ayrılırsa (ör. sistemde etkin bir etkinlikten ayrılırken sistemde etkin etkinlik kalmadığında geri düğmesine basmak yerine ana sayfa düğmesine basarak) cihaz uygulamaları, RAM'de bu uygulamaya öncelik VERMELİDİR. Bu, ön plan hizmetleri gibi çalışmaya devam etmesi beklenen diğer öğeler için de geçerlidir. Bu tür bir uygulama arka plandayken sistem, CPU ve ağ erişimini sınırlama gibi güç yönetimi özelliklerini uygulamaya devam edebilir. - [C-1-2] Kullanıcı,
cantSaveState
özelliğiyle beyan edilen ikinci bir uygulamayı başlattıktan sonra normal durum kaydetme/geri yükleme mekanizmasına katılmayacak uygulamayı seçmek için bir kullanıcı arayüzü olanağı SAĞLANMALIDIR. - [C-1-3]
cantSaveState
belirten uygulamalara, CPU performansını değiştirme veya planlama önceliğini değiştirme gibi başka politika değişiklikleri UYGULANMAMALIDIR.
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE
özelliğini beyan etmiyorsa:
- [C-1-1] Uygulamalar tarafından ayarlanan
cantSaveState
özelliği YOK SAYILMALI ve uygulama davranışı bu özelliğe göre DEĞİŞTİRİLMEMELİDİR.
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 kişi verileri genellikle bir web hizmetiyle senkronize edilir ancak veriler yalnızca cihazda yerel olarak da bulunabilir. Yalnızca cihazda depolanan kişilere yerel kişiler denir.
RawContacts, ham kişilerin ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları hesabın ilgili Account.name ve Account.type alanlarıyla eşleştiğinde bir Account ile "ilişkilendirilir" veya Account'ta "saklanır".
Varsayılan yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir hesapla ilişkilendirilmeyen, ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları için null değerleriyle oluşturulan, işlenmemiş kişilere ait hesap.
Özel yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir hesapla ilişkilendirilmeyen, ACCOUNT_NAME
ve ACCOUNT_TYPE
sütunları için en az bir sıfır olmayan değerle oluşturulan, işlenmemiş kişilerin hesabı.
Cihaz uygulamaları:
- [C-SR] Özel yerel hesaplar oluşturulmaması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları özel bir yerel hesap kullanıyorsa:
- [C-1-1]
ACCOUNT_NAME
, özel yerel hesap içinContactsContract.RawContacts.getLocalAccountName
tarafından İADE EDİLMELİDİR. - [C-1-2] Özel yerel hesabın
ACCOUNT_TYPE
,ContactsContract.RawContacts.getLocalAccountType
tarafından döndürülmelidir. - [C-1-3] Varsayılan yerel hesap ile üçüncü taraf uygulamaları tarafından eklenen ham kişiler (ör.
ACCOUNT_NAME
veACCOUNT_TYPE
için boş değerler ayarlanarak) özel yerel hesaba eklenmelidir. - [C-1-4] Hesaplar eklendiğinde veya kaldırıldığında özel yerel hesaba eklenen ham kişiler KALDIRILMAMALIDIR.
- [C-1-5]
CALLER\_IS\_SYNCADAPTER
parametresi yanlış olarak ayarlanmış veya belirtilmemiş olsa bile, özel yerel hesapta gerçekleştirilen silme işlemleri,CALLER_IS_SYNCADAPTER
parametresi doğru olarak ayarlanmış gibi, ham kişilerin hemen temizlenmesiyle sonuçlanmalıdır.
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ırmalıdır.
- Yukarıdaki koşul zorlayıcı olabileceğinden cihaz uygulamalarının, AOSP referans uygulamasının paket yönetim sistemini kullanması Ö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ı DESTEKLENMELİDİR.
- [C-0-3] .apk, Android Manifest, Dalvik bytecode veya RenderScript bytecode biçimlerini, bu dosyaların diğer uyumlu cihazlara doğru şekilde yüklenmesini ve bu cihazlarda doğru şekilde çalışmasını engelleyecek şekilde genişLETMEMELİDİR.
-
[C-0-4] Paket için geçerli "kayıtlı yükleyici" dışındaki uygulamaların,
DELETE_PACKAGE
izniyle ilgili SDK'da belirtildiği gibi, kullanıcı onayı olmadan uygulamayı sessizce kaldırmasına İZİN VERİLMEMELİDİR. Tek istisnalar, PACKAGE_NEEDS_VERIFICATION amacını işleyen sistem paketi doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE amacını işleyen depolama yöneticisi uygulamasıdır. -
[C-0-5]
android.settings.MANAGE_UNKNOWN_APP_SOURCES
amacını işleyen bir etkinliğe SAHİP OLMALIDIR. -
[C-0-6] Yükleme isteğinde bulunan uygulama aşağıdaki şartların tümünü karşılamadığı sürece bilinmeyen kaynaklardan uygulama paketleri yüklememelidir:
REQUEST_INSTALL_PACKAGES
iznini BEYAN ETMELİ veyaandroid:targetSdkVersion
değeri 24 ya da daha düşük olmalıdır.- Kullanıcı, bilinmeyen kaynaklardan uygulama yüklemek için İZİN VERMİŞ OLMALIDIR.
-
Uygulamaların bilinmeyen kaynaklardan yüklenmesi iznini uygulama bazında verme/iptal etme konusunda kullanıcıya bir seçenek SUNMALIDIR. Ancak cihaz uygulamasının kullanıcıların bu seçeneğe sahip olmasına izin vermek istememesi durumunda bu seçeneği işlem yapmayan bir işlev olarak uygulamayı ve
startActivityForResult()
içinRESULT_CANCELED
döndürmeyi SEÇEBİLİR. Ancak bu gibi durumlarda bile, kullanıcıya neden böyle bir seçenek sunulmadığını BELİRTMEK ZORUNDADIRLAR. -
[C-0-7] Aynı sistem API'si
PackageManager.setHarmfulAppWarning
tarafından zararlı olabileceği belirtilen bir uygulamada etkinlik başlatmadan önce, sistem API'siPackageManager.setHarmfulAppWarning
aracılığıyla sağlanan uyarı dizesini içeren bir uyarı iletişim kutusu kullanıcıya GÖSTERİLMELİDİR. -
Uyarı iletişim kutusunda uygulamayı kaldırmayı veya başlatmayı seçmek için kullanıcıya bir seçenek SUNULMALIDIR.
-
[C-0-8] Burada belirtildiği gibi Artımlı Dosya Sistemi desteği uygulanmalıdır.
-
[C-0-9] APK İmza Şeması v4 kullanılarak .apk dosyalarının doğrulanmasını DESTEKLEMELİDİR.
-
Cihaz uygulamaları daha önceki bir Android sürümünde kullanıma sunulduysa ve sistem yazılımı güncellemesiyle [C-0-8] ve [C-0-9] şartlarını karşılayamıyorsa bu şartlardan MUAF TUTULABİLİR.
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ı, çözücüleri, dosya türlerini ve kapsayıcı biçimlerini desteklemelidir. - [C-0-2]
MediaCodecList
aracılığıyla üçüncü taraf uygulamalarına sunulan kodlayıcıların ve kod çözücülerin desteği BİLDİRİLMELİ ve RAPORLANMALIDIR. - [C-0-3] Kodlayabildiği tüm biçimleri düzgün şekilde çözebilmeli ve üçüncü taraf uygulamalarına sunabilmelidir. Bu, kodlayıcılarının oluşturduğu tüm bit akışlarını ve
CamcorderProfile
içinde bildirilen profilleri içerir.
Cihaz uygulamaları:
- SHOULD aim for minimum codec latency, in others words, they
- Giriş arabelleklerini tüketmemeli ve depolamamalı, yalnızca işlendikten sonra giriş arabelleklerini döndürmelidir.
- Çözülen arabellekler, standartta (ör. SPS) belirtilenden daha uzun süre tutulmamalıdır.
- Kodlanmış arabellekleri GOP yapısının gerektirdiğinden daha uzun süre tutmamalıdır.
Aşağıdaki bölümde listelenen tüm codec'ler, Android Açık Kaynak Projesi'nin tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.
Google veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerinden muaf olduğuna dair herhangi bir beyanda bulunmadığını lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya paylaşılan yazılım da dahil olmak üzere bu kodun uygulamaları için ilgili patent sahiplerinden patent lisansı alması gerekebileceği konusunda bilgilendirilir.
5.1. Medya Codec'leri
5.1.1. Ses kodlama
Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.microphone
beyan ediyorsa aşağıdaki ses biçimlerinin kodlanmasını desteklemeli ve bu biçimleri üçü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'si aracılığıyla PCM 16 bit yerel bayt sırası ses çerçeveleri.
5.1.2. Ses kod çözme
Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.audio.output
özelliğini desteklediğini beyan ediyorsa aşağıdaki ses biçimlerinin kodunu çözmeyi desteklemesi gerekir:
- [C-1-1] MPEG-4 AAC Profili (AAC LC)
- [C-1-2] MPEG-4 HE AAC Profili (AAC+)
- [C-1-3] MPEG-4 HE AACv2 Profili (gelişmiş AAC+)
- [C-1-4] AAC ELD (gelişmiş düşük gecikmeli AAC)
- [C-1-11] xHE-AAC (ISO/IEC 23003-3 Extended HE AAC Profile, which includes the USAC Baseline Profile, and ISO/IEC 23003-4 Dynamic Range Control 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 alt örnekleme ve alt karıştırma yapmasına izin verildiğini unutmayın.
- [C-1-10] Opus
Cihaz uygulamaları, android.media.MediaCodec
API'deki varsayılan AAC ses kod çözücüsü aracılığıyla çok kanallı akışların (ör. ikiden fazla kanal) AAC giriş arabelleklerinin PCM'ye kod çözülmesini destekliyorsa aşağıdakiler DESTEKLENMELİDİR:
- [C-2-1] Kod çözme işlemi, aşağı karıştırma olmadan yapılmalıdır (ör. 5.0 AAC akışı, beş kanallı PCM olarak, 5.1 AAC akışı ise altı kanallı PCM olarak çözülmelidir).
- [C-2-2] Dinamik aralık meta verileri, ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde tanımlandığı gibi olmalıdır ve
android.media.MediaFormat
DRC anahtarları, ses kod çözücünün dinamik aralıkla ilgili davranışlarını yapılandırmak için kullanılmalıdır. AAC DRC anahtarları API 21'de kullanıma sunulmuştur ve şunlardır:KEY_AAC_DRC_ATTENUATION_FACTOR
,KEY_AAC_DRC_BOOST_FACTOR
,KEY_AAC_DRC_HEAVY_COMPRESSION
,KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
veKEY_AAC_ENCODED_TARGET_LEVEL
. - [SR] Yukarıdaki C-2-1 ve C-2-2 şartlarının tüm AAC ses kod çözücüleri tarafından karşılanması ŞİDDETLE TAVSİYE EDİLİR.
USAC ses kodunu çözerken MPEG-D (ISO/IEC 23003-4):
- [C-3-1] Ses yüksekliği ve DRC meta verileri, MPEG-D DRC Dinamik Aralık Kontrolü Profili Düzey 1'e göre yorumlanmalı ve uygulanmalıdır.
- [C-3-2] Kod çözücü, aşağıdaki
android.media.MediaFormat
tuşlarıyla ayarlanan yapılandırmaya göre davranmalıdır:KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
veKEY_AAC_DRC_EFFECT_TYPE
.
MPEG-4 AAC, HE AAC ve HE AACv2 profil kod çözücüleri:
- MAY, ISO/IEC 23003-4 Dinamik Aralık Kontrolü Profili'ni kullanarak ses yüksekliği ve dinamik aralık kontrolünü destekleyebilir.
ISO/IEC 23003-4 destekleniyorsa ve hem ISO/IEC 23003-4 hem de ISO/IEC 14496-3 meta verileri kod çözümü yapılmış bir bit akışında bulunuyorsa:
- ISO/IEC 23003-4 meta verileri öncelikli OLACAKTIR.
Tüm ses kod çözücüleri aşağıdaki çıkışları desteklemelidir:
- [C-6-1]
android.media.MediaCodec
API'si aracılığıyla PCM 16 bit yerel bayt sırası ses çerçeveleri.
5.1.3. Ses Codec'leri Ayrıntıları
Biçim/Codec | Ayrıntılar | Desteklenecek dosya türleri/kapsayıcı biçimleri |
---|---|---|
MPEG-4 AAC Profili (AAC LC) |
8-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
MPEG-4 HE AAC Profili (AAC+) | 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
MPEG-4 HE AACv2 Profili (gelişmiş AAC+) |
16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
AAC ELD (gelişmiş düşük gecikmeli AAC) | 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. |
|
USAC | 7,35-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. | MPEG-4 (.mp4, .m4a) |
AMR-NB | 8 kHz'de örneklenmiş 4,75 ila 12,2 kb/sn | 3GPP (.3gp) |
AMR-WB | AMR-WB, Adaptive Multi-Rate - Wideband Speech Codec'te tanımlandığı gibi, 16 kHz'de örneklenmiş 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız | 3GPP (.3gp) |
FLAC | Hem kodlayıcı hem de kod çözücü için: En az Mono ve Stereo modları desteklenmelidir. 192 kHz'ye kadar örnek hızları DESTEKLENMELİDİR. 16 bit ve 24 bit çözünürlük DESTEKLENMELİDİR. FLAC 24 bit ses verisi işleme, kayan noktalı ses yapılandırmasıyla KULLANILABİLİR 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ümleri. XMF ve Mobile 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 nokta biçimini 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 olan hızlar) biçimlerini desteklemelidir. Örnekleme hızları 8 kHz ile 192 kHz arasında OLMALIDIR. | WAVE (.wav) |
Opus |
Kod çözme: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono, stereo, 5.0 ve 5.1 içerik desteği. Kodlama: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono ve stereo içerik desteği. |
|
5.1.4. Resim Kodlama
Daha fazla ayrıntı için 5.1.6. Resim Codec'leri Ayrıntıları.
Cihaz uygulamaları, aşağıdaki görüntü kodlamasını 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
üzerinden 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 ayrıntı için 5.1.6. Resim Codec'leri Ayrıntıları.
Cihaz uygulamaları, aşağıdaki görüntü kodlamasının çözülmesini DESTEKLEMELİDİR:
- [C-0-1] JPEG
- [C-0-2] GIF
- [C-0-3] PNG
- [C-0-4] BMP
- [C-0-5] WebP
- [C-0-6] Ham
Cihaz uygulamaları HEVC video kod çözme özelliğini destekliyorsa: * [C-1-1] HEIF (HEIC) görüntü kod çözme özelliğini DESTEKLEMELİDİR.
Yüksek bit derinliği biçimini (kanal başına 9+ bit) destekleyen görüntü kod çözücüler:
- [C-2-1] Uygulama tarafından istenirse (ör.
android.graphics.Bitmap
'ninARGB_8888
yapılandırması aracılığıyla) 8 bit eşdeğer biçim çıkışını desteklemelidir.
5.1.6. Görüntü Codec'leri Ayrıntıları
Biçim/Codec | Ayrıntılar | Desteklenen Dosya Türleri/Kapsayıcı Biçimleri |
---|---|---|
JPEG | Taban+aşamalı | JPEG (.jpg) |
GIF | GIF (.gif) | |
PNG | PNG (.png) | |
BMP | BMP (.bmp) | |
WebP | WebP (.webp) | |
İşlenmemiş | ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw) | |
HEIF | Resim, Resim koleksiyonu, Resim dizisi | HEIF (.heif), HEIC (.heic) |
MediaCodec API aracılığıyla kullanıma sunulan görüntü kodlayıcı ve kod çözücüler
-
[C-1-1]
CodecCapabilities
aracılığıyla YUV420 8:8:8 esnek renk biçimini (COLOR_FormatYUV420Flexible
) DESTEKLEMELİDİR. -
[SR] Giriş yüzeyi modu için RGB888 renk biçiminin desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
-
[C-1-3] Düzlemsel veya yarı düzlemsel YUV420 8:8:8 renk biçimlerinden en az birini desteklemelidir:
COLOR_FormatYUV420PackedPlanar
(COLOR_FormatYUV420Planar
ile eşdeğer) veyaCOLOR_FormatYUV420PackedSemiPlanar
(COLOR_FormatYUV420SemiPlanar
ile eşdeğer). Her ikisinin de desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
5.1.7. Video Codec'leri
- Web'de video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olması için cihaz uygulamalarında, koşulları karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
Cihaz uygulamaları video kod çözücü veya kodlayıcı içeriyorsa:
-
[C-1-1] Video codec'leri, standart ve yapılandırma tarafından belirlenen en büyük olası sıkıştırılmış ve sıkıştırılmamış kareyi barındıran çıkış ve giriş bytebuffer boyutlarını desteklemeli ancak genel olarak fazla yer ayırmamalıdır.
-
[C-1-2] Video kodlayıcılar ve kod çözücüler,
CodecCapabilities
aracılığıyla YUV420 8:8:8 esnek renk biçimlerini (COLOR_FormatYUV420Flexible
) desteklemelidir. -
[C-1-3] Video kodlayıcılar ve kod çözücüler, düzlemsel veya yarı düzlemsel 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 ŞİDDETLE TAVSİYE EDİLİR. -
[SR] Video kodlayıcıların ve kod çözücülerin, donanım için optimize edilmiş düzlemsel veya yarı düzlemsel YUV420 8:8:8 renk biçimlerinden (YV12, NV12, NV21 ya da eşdeğer satıcı tarafından optimize edilmiş biçim) en az birini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
-
[C-1-5] Yüksek bit derinliği biçimini (kanal başına 9+ bit) destekleyen video kod çözücüler, uygulama tarafından istenmesi durumunda 8 bit eşdeğer biçim çıkışını desteklemelidir. Bu,
android.media.MediaCodecInfo
aracılığıyla YUV420 8:8:8 renk biçiminin desteklenmesiyle YANSITILMALIDIR.
Cihaz uygulamaları, Display.HdrCapabilities
üzerinden HDR profili desteği sunduğunu belirtiyorsa:
- [C-2-1] HDR statik meta veri ayrıştırması ve işlenmesi DESTEKLENMELİDİR.
Cihaz uygulamaları, MediaCodecInfo.CodecCapabilities
sınıfında FEATURE_IntraRefresh
aracılığıyla yenileme içi desteği duyuruyorsa:
- [C-3-1] 10-60 kare aralığındaki yenileme sürelerini desteklemeli ve yapılandırılmış yenileme süresinin% 20'si içinde doğru şekilde çalışmalıdır.
Uygulama, KEY_COLOR_FORMAT
biçim anahtarını kullanarak aksi belirtilmediği sürece video kod çözücü uygulamaları:
- [C-4-1] Surface çıkışı kullanılarak yapılandırılmışsa varsayılan olarak donanım ekranı için optimize edilmiş renk biçimini KULLANMALIDIR.
- [C-4-2] Yüzey çıkışı kullanılmayacak şekilde yapılandırılmışsa varsayılan olarak CPU okuma için optimize edilmiş bir YUV420 8:8:8 renk biçimi KULLANILMALIDIR.
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 bölümüne 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 bölümüne bakın. |
|
5.1.9. Medya Codec'i Güvenliği
Cihaz uygulamaları, aşağıda açıklandığı gibi medya codec'i güvenlik özelliklerine uygunluğu SAĞLAMALIDIR.
Android, platformlar arası multimedya hızlandırma API'si olan OMX'in yanı sıra düşük ek yük multimedya hızlandırma API'si olan Codec 2.0'ı da destekler.
Cihaz uygulamaları multimedyayı destekliyorsa:
- [C-1-1] Android Açık Kaynak Projesi'nde olduğu gibi, medya codec'leri için OMX veya Codec 2.0 API'leri (ya da her ikisi) aracılığıyla destek sağlamalı ve güvenlik korumalarını devre dışı bırakmamalı veya atlatmamalıdır. Bu, özellikle her codec'in OMX veya Codec 2.0 API'sini KULLANMASI gerektiği anlamına gelmez. Yalnızca bu API'lerden en az birinin desteklenmesi ve mevcut API'lerin desteklenmesinin güvenlik korumalarını içermesi GEREKİR.
- [C-SR] Codec 2.0 API desteği eklemeleri ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Codec 2.0 API'sini desteklemiyorsa:
- [C-2-1] Cihazın desteklediği her medya biçimi ve türü (kodlayıcı veya çözücü) için Android Açık Kaynak Projesi'ndeki ilgili OMX yazılım codec'i (varsa) İÇERMELİDİR.
- [C-2-2] Adları "OMX.google." ile başlayan codec'ler Android Açık Kaynak Projesi kaynak koduna dayanmalıdır.
- [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ı ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Codec 2.0 API'sini destekliyorsa:
- [C-3-1] Cihaz tarafından desteklenen her medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Açık Kaynak Projesi'ndeki ilgili Codec 2.0 yazılım codec'i (varsa) İÇERMELİDİR.
- [C-3-2] Yazılım codec'lerine erişimi daha dar kapsamlı olarak mümkün kılmak için Codec 2.0 yazılım codec'lerini Android Açık Kaynak Projesi'nde sağlandığı şekilde yazılım codec'i sürecinde barındırmalıdır.
- [C-3-3] Adları "c2.android." ile başlayan codec'ler Android Açık Kaynak Projesi kaynak koduna dayanmalıdır.
5.1.10. Medya Codec'i Karakterizasyonu
Cihaz uygulamaları medya codec'lerini destekliyorsa:
- [C-1-1]
MediaCodecInfo
API'si aracılığıyla medya codec'i karakterizasyonunun doğru değerleri DÖNDÜRÜLMELİDİR.
Özellikle:
- [C-1-2] Adları "OMX." ile başlayan codec'ler OMX API'leri KULLANILMALI ve OMX IL adlandırma kurallarına uygun adlar verilmelidir.
- [C-1-3] Adları "c2." ile başlayan codec'ler Codec 2.0 API'si KULLANILMALIDIR ve Android için Codec 2.0 adlandırma kurallarına uygun adlar verilmelidir.
- [C-1-4] Adları "OMX.google." veya "c2.android." ile başlayan codec'ler Tedarikçi veya donanım hızlandırmalı olarak nitelendirilmemelidir.
- [C-1-5] Bir codec işleminde (satıcı veya sistem) çalışan ve bellek ayırıcılar ile eşleyiciler dışındaki donanım sürücülerine erişimi olan codec'ler yalnızca yazılım olarak nitelendirilmemelidir.
- [C-1-6] Android Açık Kaynak Projesi'nde bulunmayan veya bu projedeki kaynak koduna dayanmayan codec'ler, satıcıya ait olarak nitelendirilmelidir.
- [C-1-7] Donanım hızlandırmayı kullanan codec'ler, donanım hızlandırmalı olarak tanımlanmalıdır.
- [C-1-8] Codec adları yanıltıcı OLMAMALIDIR. Örneğin, "decoders" adlı codec'ler kod çözmeyi, "encoders" adlı codec'ler ise kodlamayı DESTEKLEMELİDİR. Adlarında medya biçimleri bulunan codec'ler bu biçimleri desteklemelidir.
Cihaz uygulamaları video codec'lerini destekliyorsa:
- [C-2-1] Tüm video codec'leri, codec tarafından destekleniyorsa aşağıdaki boyutlar için ulaşılabilir kare hızı verilerini YAYINLAMALIDIR:
SD (düşük kalite) | SD (yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü |
|
|
|
1920 x 1080 piksel (MPEG4 hariç) | 3840 x 2160 piksel (HEVC, VP9) |
- [C-2-2] Donanım hızlandırmalı olarak nitelendirilen video codec'leri, performans puanı bilgilerini yayınlamalıdır. Desteklenen başka bir standart performans noktası kapsamında olmadıkları sürece, her biri desteklenen tüm standart performans noktalarını (
PerformancePoint
API'sinde listelenmiştir) listelemelidir. - Ayrıca, listelenen standart performans noktalarından farklı bir sürekli video performansını destekliyorlarsa genişletilmiş performans noktalarını YAYINLAMALIDIRLAR.
5.2. Video Kodlama
Cihaz uygulamaları herhangi bir video kodlayıcıyı destekleyip üçüncü taraf uygulamalarına sunuyorsa:
- İki kayan pencere arasında, kare içi (I-frame) aralıklar arasındaki bit hızının% 15'inden fazla OLMAMALIDIR.
- 1 saniyelik hareketli bir aralıkta bit hızının% 100'ünden fazla OLMAMALIDIR.
Cihaz uygulamaları, köşegen uzunluğu en az 2,5 inç olan yerleşik bir ekran içeriyorsa, video çıkışı bağlantı noktası içeriyorsa veya android.hardware.camera.any
özellik işareti aracılığıyla kamera desteği beyan ediyorsa:
- [C-1-1] VP8 veya H.264 video kodlayıcılarından en az birinin desteğini içermeli ve bunu üçüncü taraf uygulamalarının kullanımına sunmalıdır.
- Hem VP8 hem de H.264 video kodlayıcılarını desteklemeli ve bunları üçüncü taraf uygulamalarının kullanımına sunmalıdır.
Cihaz uygulamaları H.264, VP8, VP9 veya HEVC video kodlayıcılarından herhangi birini destekleyip üçüncü taraf uygulamalarına sunuyorsa:
- [C-2-1] Dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
- DEĞİŞKEN kare hızları DESTEKLENMELİDİR. Bu durumda video kodlayıcı, anlık kare süresini giriş arabelleklerinin zaman damgalarına göre BELİRLEMELİ ve bit aralığını bu kare süresine göre AYIRMALIDIR.
Cihaz uygulamaları MPEG-4 SP video kodlayıcıyı destekliyorsa ve üçüncü taraf uygulamaların kullanımına sunuyorsa:
- Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
Cihaz uygulamaları, donanım hızlandırmalı video veya resim kodlayıcılar sağlıyorsa ve android.camera
API'leri aracılığıyla kullanıma sunulan bir veya daha fazla bağlı ya da takılabilir donanım kamerasını destekliyorsa:
- [C-4-1] Donanımla hızlandırılmış tüm video ve görüntü kodlayıcılar, donanım kameralarından gelen karelerin kodlanmasını DESTEKLEMELİDİR.
- Tüm video veya resim kodlayıcılar aracılığıyla donanım kameralarından gelen karelerin kodlanmasını DESTEKLEMELİDİR.
5.2.1. H.263
Cihaz uygulamaları H.263 kodlayıcıları destekliyorsa ve üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1] Temel Profil Düzeyi 45'i 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 Seviye 3'ü DESTEKLEMELİDİR. Ancak ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğu korumak için kodlayıcıların Baseline Profile'da ASO, FMO ve RS'yi KULLANMAMASI ÖNERİLİR.
- [C-1-2] Aşağıdaki tabloda yer alan SD (Standart Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
- Ana Profil Düzeyi 4'ü DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için H.264 kodlamasının desteklendiğini bildiriyorsa:
- [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 240 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 20 fps | 30 fps | 30 fps | 30 fps |
Video bit hızı | 384 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
5.2.3. VP8
Cihaz uygulamaları VP8 codec'ini destekliyorsa:
- [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
- Aşağıdaki HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
- [C-1-2] Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
- Web video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olmasını sağlamak için WebM projesi RTC donanım kodlama şartlarını karşılayan bir donanım VP8 codec'i SAĞLAMALIDIR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için VP8 kodlamasının desteklendiğini bildiriyorsa:
- [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
5.2.4. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- [C-1-2] MUST support Profile 0 Level 3.
- [C-1-1] Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
- [C-1-3] CodecPrivate verileri OLUŞTURMALIDIR.
- Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
- Donanım kodlayıcı varsa [SR], aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini desteklemesi KESİNLİKLE ÖNERİLİR.
SD | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|
Video çözünürlüğü | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
Video bit hızı | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
Cihaz uygulamaları, Media API'leri aracılığıyla Profil 2 veya Profil 3'ü desteklediğini iddia ediyorsa:
- 12 bit biçim desteği İSTEĞE BAĞLIDIR.
5.2.5. H.265
Cihaz uygulamaları H.265 codec'ini destekliyorsa:
- [C-1-1] Ana Profil Seviye 3'ü DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD kodlama profillerini DESTEKLEMELİDİR.
- Donanım kodlayıcı varsa [SR], aşağıdaki tabloda belirtildiği gibi HD kodlama profillerini desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
SD | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|
Video çözünürlüğü | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
Video bit hızı | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
5.3. Video kod çözme
Cihaz uygulamaları VP8, VP9, H.264 veya H.265 codec'lerini destekliyorsa:
- [C-1-1] Aynı akışta VP8, VP9, H.264 ve H.265 codec'lerinin tümü için gerçek zamanlı olarak ve cihazda her codec'in desteklediği maksimum çözünürlüğe kadar standart Android API'leri aracılığıyla dinamik video çözünürlüğü ve kare hızı geçişini DESTEKLEMELİDİR.
5.3.1. MPEG-2
Cihaz uygulamaları MPEG-2 kod çözücülerini destekliyorsa:
- [C-1-1] Ana Profil Yüksek Seviyesi desteklenmelidir.
5.3.2. H.263
Cihaz uygulamaları H.263 kod çözücülerini destekliyorsa:
- [C-1-1] Baseline Profile Level 30 ve Level 45'i DESTEKLEMELİDİR.
5.3.3. MPEG-4
MPEG-4 kod çözücülerle cihaz uygulamaları varsa:
- [C-1-1] MUST support Simple Profile Level 3.
5.3.4. H.264
Cihaz uygulamaları H.264 kod çözücülerini destekliyorsa:
- [C-1-1] Main Profile Level 3.1 ve Baseline Profile'ı DESTEKLEMELİDİR. ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR.
- [C-1-2] Aşağıdaki tabloda listelenen ve Baseline Profile ile Main Profile Level 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlük) profillerine sahip videoları çözebilmelidir.
- Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlük) profillerine sahip videoları çözebilmelidir.
Display.getSupportedModes()
yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse cihaz uygulamaları:
- [C-2-1] Aşağıdaki tabloda yer alan HD 720p video kod çözme profillerini DESTEKLEMELİDİR.
- [C-2-2] Aşağıdaki tabloda yer alan HD 1080p video kod çözme profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 240 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 30 fps | 30 fps | 60 fps | 30 fps (60 fpsTelevizyon) |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.5. H.265 (HEVC)
Cihaz uygulamaları H.265 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda belirtildiği gibi Ana Profil Seviye 3 Ana katmanını ve SD video kod çözme profillerini 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öntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-2-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin H.265 veya VP9 kod çözme işlemlerinden en az birini desteklemelidir.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü | 352 x 288 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30/60 fps (60 fpsH.265 donanım kod çözme özelliğine sahip televizyon) | 60 fps |
Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
Cihaz uygulamaları, Media API'leri aracılığıyla bir HDR profilini desteklediğini iddia ediyorsa:
- [C-3-1] Cihaz uygulamaları, uygulamadan gelen gerekli HDR meta verilerini KABUL ETMELİ, bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerini ayıklamayı ve çıkışını desteklemelidir.
- [C-3-2] Cihaz uygulamaları, HDR içeriğini 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 tablodaki SD kod çözme profillerini DESTEKLEMELİDİR.
- Koşulları 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öntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-2-1] Cihaz uygulamaları, aşağıdaki tablodaki 720p profillerini DESTEKLEMELİDİR.
- [C-2-2] Cihaz uygulamaları, aşağıdaki tabloda yer alan 1080p profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps (60 fpsTelevizyon) | 30 (60 fpsTelevizyon) |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.7. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda belirtildiği gibi SD video kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda 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 belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes()
yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-3-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin VP9 veya H.265 kod çözme işlemlerinden en az birini desteklemelidir.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps (60 fpsVP9 donanım kod çözme özelliğine sahip televizyon) | 60 fps |
Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
Cihaz uygulamaları, CodecProfileLevel medya API'leri aracılığıyla VP9Profile2
veya VP9Profile3
'yi desteklediğini iddia ediyorsa:
- 12 bit biçim desteği İSTEĞE BAĞLIDIR.
Cihaz uygulamaları, medya API'leri aracılığıyla bir HDR profilini (VP9Profile2HDR
, VP9Profile2HDR10Plus
, VP9Profile3HDR
, VP9Profile3HDR10Plus
) desteklediğini iddia ediyorsa:
- [C-4-1] Cihaz uygulamaları, uygulamadan gelen gerekli HDR meta verilerini (tüm HDR profilleri için
KEY_HDR_STATIC_INFO
, HDR10Plus profilleri için 'KEY_HDR10_PLUS_INFO') KABUL ETMELİDİR. Ayrıca, bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerini ayıklamayı ve çıkışını yapmayı DESTEKLEMELİDİR. - [C-4-2] Cihaz uygulamaları, HDR içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).
5.3.8. Dolby Vision
Cihaz uygulamaları HDR_TYPE_DOLBY_VISION
aracılığıyla Dolby Vision kod çözücüsünü desteklediğini beyan ediyorsa:
- [C-1-1] Dolby Vision özellikli bir çıkarıcı SAĞLANMALIDIR.
- [C-1-2] Dolby Vision içeriği, 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 diziniyle aynı OLMALIDIR.
5.3.9. AV1
Cihaz uygulamaları AV1 codec'ini destekliyorsa:
- [C-1-1] 10 bit içerik de dahil olmak üzere Profil 0'ı DESTEKLEMELİDİR.
5.4. Ses Kaydetme
Bu bölümde belirtilen şartlardan bazıları Android 4.3'ten beri SHOULD olarak listeleniyor olsa da gelecekteki sürümlerin Uyumluluk Tanımı'nda bunların MUST olarak değiştirilmesi planlanmaktadır. Mevcut ve yeni Android cihazların, GEREKLİ olarak listelenen bu koşulları karşılaması ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiklerinde Android uyumluluğu elde edemezler.
5.4.1. Ham Ses Yakalama ve Mikrofon Bilgileri
Cihaz uygulamaları android.hardware.microphone
beyan ederse:
-
[C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına İZİN VERİLMELİ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çeriklerinin yakalanmasına İZİN VERİLMELİDİR:
- Biçim: Doğrusal PCM, 16 bit ve 24 bit
- Örnekleme hızları: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Hz
- Kanallar: Cihazdaki mikrofon sayısı kadar kanal
-
[C-1-2] Yukarı örnekleme yapmadan yukarıdaki örnek hızlarında kayıt YAPILMALIDIR.
- [C-1-3] Yukarıda verilen örnekleme hızları, alt örnekleme ile yakalandığında uygun bir yumuşatma filtresi İÇERMELİDİR.
-
AM radyo ve DVD kalitesinde ham ses içeriği yakalamaya İZİN VERİLMELİDİR. Bu, aşağıdaki özelliklerin karşılanması anlamına gelir:
- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 22050, 48000 Hz
- Kanallar: Stereo
- [C-1-4]
MicrophoneInfo
API'si KULLANILMALIDIR veAudioManager.getMicrophones()
API aracılığıyla üçüncü taraf uygulamalarının erişebildiği cihazdaki mevcut mikrofonlar ileAudioRecord.getActiveMicrophones()
veMediaRecorder.getActiveMicrophones()
API'leri aracılığıyla üçüncü taraf uygulamalarının erişebildiği, şu anda etkin olan mikrofonlarla ilgili bilgiler doğru şekilde doldurulmalıdır. Cihaz uygulamaları, AM radyo ve ham ses içeriğinin DVD kalitesinde yakalanmasına izin veriyorsa:
-
[C-2-1] 16000:22050 veya 44100:48000'den yüksek bir oranda örnekleme artırılmadan kayıt YAPILMALIDIR.
- [C-2-2] Herhangi bir yukarı örnekleme veya aşağı örnekleme için uygun bir yumuşatma filtresi İÇERMELİDİR.
5.4.2. Ses tanıma için yakalama
Cihaz uygulamaları android.hardware.microphone
beyan ederse:
- [C-1-1]
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION
ses kaynağını 44.100 ve 48.000 örnekleme hızlarından birinde yakalamalıdır. - [C-1-2]
AudioSource.VOICE_RECOGNITION
ses kaynağından ses yayını kaydederken varsayılan olarak tüm gürültü azaltma ses işlemlerini devre dışı BIRAKMALIDIR. - [C-1-3]
AudioSource.VOICE_RECOGNITION
ses kaynağından ses akışı kaydederken varsayılan olarak otomatik kazanç kontrolünü devre dışı BIRAKMALIDIR. - Ses tanıma ses akışını, frekans özelliklerine göre yaklaşık olarak düz genlikle kaydetmelidir. Özellikle 100 Hz ile 4.000 Hz arasında ±3 dB olmalıdır.
- Ses tanıma ses akışını, giriş hassasiyeti 1000 Hz'de 90 dB ses gücü seviyesine (SPL) sahip bir kaynak 16 bitlik örnekler için 2.500 RMS verecek şekilde ayarlanmış olarak KAYDETMELİDİR.
- Mikrofonda 90 dB SPL'ye göre -18 dB ile +12 dB arasında en az 30 dB aralığında PCM genlik seviyeleri, giriş SPL değişikliklerini doğrusal olarak takip edecek şekilde ses tanıma ses akışını KAYDETMELİDİR.
- Mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için% 1'den az toplam harmonik bozulma (THD) ile ses tanıma ses akışını KAYDETMELİDİR.
Cihaz uygulamaları, android.hardware.microphone
ve konuşma tanıma için ayarlanmış gürültü bastırma (azaltma) teknolojilerini beyan ediyorsa:
- [C-2-1] Bu ses efektinin
android.media.audiofx.NoiseSuppressor
API ile kontrol edilmesine İZİN VERİLMELİDİR. - [C-2-2]
AudioEffect.Descriptor.uuid
alanı aracılığıyla her gürültü bastırma teknolojisi uygulamasını benzersiz şekilde tanımlamalıdır.
5.4.3. Oynatmanın yeniden yönlendirilmesi için yakalama
android.media.MediaRecorder.AudioSource
sınıfı, REMOTE_SUBMIX
ses kaynağını içerir.
Cihaz uygulamaları hem android.hardware.audio.output
hem de android.hardware.microphone
beyan ederse:
-
[C-1-1]
REMOTE_SUBMIX
Ses kaynağı, bir uygulama bu ses kaynağından kayıt yapmak içinandroid.media.AudioRecord
API'sini kullandığında aşağıdakiler hariç tüm ses akışlarının karışımını yakalayacak şekilde düzgün bir şekilde uygulanmalıdır:-
AudioManager.STREAM_RING
-
AudioManager.STREAM_ALARM
-
AudioManager.STREAM_NOTIFICATION
-
5.4.4. Akustik Yankı Önleyici
Cihaz uygulamaları android.hardware.microphone
beyan ederse:
AudioSource.VOICE_COMMUNICATION
kullanılarak yakalama yapılırken yakalama yoluna uygulanan ve sesli iletişim için ayarlanmış bir akustik yankı giderici (AEC) teknolojisi uygulamalıdır.
Cihaz uygulamaları, AudioSource.VOICE_COMMUNICATION
seçildiğinde yakalama ses yoluna yerleştirilen bir akustik yankı giderici sağlıyorsa:
- [C-SR] bu durumu AcousticEchoCanceler API yöntemi AcousticEchoCanceler.isAvailable() ile bildirmelidir.
- [C-SR], bu ses efektinin AcousticEchoCanceler API ile kontrol edilebilmesine izin vermesi ÖNEMLE_TAVSİYE edilir.
- [C-SR], AudioEffect.Descriptor.uuid alanı aracılığıyla her AEC teknolojisi uygulamasını benzersiz şekilde tanımlamak için ŞİDDETLE_TAVSİYE_EDİLİR.
5.4.5. Eşzamanlı Yakalama
Cihaz uygulamaları android.hardware.microphone
özelliğini beyan ediyorsa bu belgede açıklandığı gibi eşzamanlı yakalama özelliğini uygulamaları ZORUNLUDUR. Özellikle:
- [C-1-1]
AudioSource.VOICE_RECOGNITION
ile kayıt yapan bir erişilebilirlik hizmetinin ve herhangi birAudioSource
ile kayıt yapan en az bir uygulamanın mikrofona eşzamanlı erişimine İZİN VERİLMELİDİR. - [C-1-2] Asistan rolüne sahip önceden yüklenmiş bir uygulamanın ve
AudioSource.VOICE_COMMUNICATION
veyaAudioSource.CAMCORDER
hariç herhangi birAudioSource
ile kayıt yapan en az bir uygulamanın mikrofona eşzamanlı erişmesine İZİN VERİLMELİDİR. - [C-1-3] Bir uygulama
AudioSource.VOICE_COMMUNICATION
veyaAudioSource.CAMCORDER
ile kayıt yaparken erişilebilirlik hizmeti hariç diğer tüm uygulamalarda ses kaydını kapatMALIDIR. Ancak bir uygulamaAudioSource.VOICE_COMMUNICATION
üzerinden kayıt yaparken başka bir uygulama,CAPTURE_AUDIO_OUTPUT
izni olan ayrıcalıklı (önceden yüklenmiş) bir uygulama ise sesli görüşmeyi kaydedebilir. - [C-1-4] İki veya daha fazla uygulama aynı anda kayıt yapıyorsa ve hiçbir uygulamanın üstte kullanıcı arayüzü yoksa sesi en son kayıt yapmaya başlayan uygulama alır.
5.4.6. Mikrofon Kazanç Düzeyleri
Cihaz uygulamaları android.hardware.microphone
beyan ederse:
- Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri GÖSTERMELİDİR: Özellikle ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofon için 100 Hz ile 4.000 Hz arasında ±3 dB.
- Ses giriş hassasiyeti, 90 dB ses basıncı seviyesinde (SPL) çalınan 1.000 Hz sinüs dalgası ton kaynağının, ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofon için 16 bit örneklerde 2.500 RMS (veya kayan nokta/çift duyarlıklı örneklerde -22,35 dB tam ölçek) ile yanıt verecek şekilde AYARLANMALIDIR.
- [C-SR] kategorisinde, düşük frekans aralığında genlik seviyelerinin gösterilmesi ŞİDDETLE TAVSİYE EDİLİR: Özellikle ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla 5 Hz ile 100 Hz arasında ±20 dB.
- [C-SR] kategorisindeki mikrofonların, yüksek frekans aralığında genlik seviyeleri göstermesi ÖNEMLE TAVSİYE EDİLİR: Özellikle ses tanıma ses kaynağını kaydetmek için kullanılan her bir mikrofonda orta frekans aralığına kıyasla 4.000 Hz ile 22 kHz arasında ±30 dB.
5.5. Ses Çalma
Android, uygulamaların 7.8.2 bölümünde tanımlandığı şekilde ses çıkışı çevre birimi üzerinden ses oynatmasına olanak tanıyan desteği içerir.
5.5.1. Ham Ses Oynatma
Cihaz uygulamaları android.hardware.audio.output
beyan ederse:
-
[C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına İZİN VERİLMELİDİR:
- Kaynak biçimler: Doğrusal PCM, 16 bit, 8 bit, kayan nokta
- Kanallar: Mono, Stereo, 8 kanala kadar geçerli çok kanallı yapılandırmalar
-
Örnekleme hızları (Hz cinsinden):
- Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 32000, 44100, 48000
- Mono ve stereo olarak 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 ediyorsa:
- [C-1-1]
EFFECT_TYPE_EQUALIZER
veEFFECT_TYPE_LOUDNESS_ENHANCER
uygulamaları, AudioEffect alt sınıflarıEqualizer
veLoudnessEnhancer
aracılığıyla kontrol edilebilir şekilde DESTEKLENMELİ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] MUST support the
EFFECT_TYPE_DYNAMICS_PROCESSING
implementation controllable through the AudioEffect subclassDynamicsProcessing
. EFFECT_TYPE_BASS_BOOST
,EFFECT_TYPE_ENV_REVERB
,EFFECT_TYPE_PRESET_REVERB
veEFFECT_TYPE_VIRTUALIZER
uygulamalarınıAudioEffect
alt sınıflarıBassBoost
,EnvironmentalReverb
,PresetReverb
veVirtualizer
aracılığıyla kontrol edilebilir şekilde DESTEKLEMELİDİR.- [C-SR] Kayan noktalı ve çok kanallı efektleri desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
5.5.3. Ses Çıkış Ses Düzeyi
Otomotiv cihaz uygulamaları:
- AudioAttributes tarafından tanımlanan içerik türü veya kullanım ve
android.car.CarAudioManager
içinde herkese açık olarak tanımlanan araç ses sistemi kullanımı kullanılarak her ses akışı için ses seviyesinin ayrı ayrı ayarlanmasına İZİN VERİLMELİDİR.
5.6. Ses Gecikmesi
Ses gecikmesi, bir ses sinyalinin sistemden geçerken yaşadığı zaman gecikmesidir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikme sürelerine ihtiyaç duyar.
Bu bölümün amaçları doğrultusunda aşağıdaki tanımları kullanın:
- output latency. Bir uygulamanın PCM kodlu bir veri çerçevesini yazdığı zaman ile karşılık gelen sesin cihaz üzerinde bir dönüştürücüde ortama sunulduğu veya bir bağlantı noktası üzerinden cihazdan ayrılıp harici olarak gözlemlenebildiği zaman arasındaki aralık.
- Soğuk çıktı gecikmesi. Ses çıkışı sistemi istekten önce boşta kalıp kapatıldığında ilk karenin çıkış gecikmesi.
- sürekli çıkış gecikmesi. Cihaz ses çalmaya başladıktan sonraki karelerin çıkış gecikmesi.
- giriş gecikmesi. Bir sesin ortam tarafından cihazda bulunan bir dönüştürücüye sunulması veya bir sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın PCM kodlu verilerin ilgili çerçevesini okuması arasındaki aralık.
- kayıp giriş. Giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.
- Soğuk giriş gecikmesi. Ses girişi sistemi istekten önce boşta kalıp kapatıldığında, kaybolan giriş süresi ile ilk kare için giriş gecikmesinin toplamı.
- sürekli giriş gecikmesi. Cihaz ses yakalarken sonraki karelerin giriş gecikmesi.
- cold output jitter. Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- soğuk giriş titremesi. Soğuk giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesi, sürekli çıkış gecikmesi ve bir arabellek süresinin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için zaman tanır.
- OpenSL ES PCM arabellek sırası API'si. Android NDK'deki PCM ile ilgili OpenSL ES API'leri kümesi.
- AAudio yerel ses API'si. Android NDK'deki AAudio API'leri kümesi.
- Zaman damgası. Bir akış içindeki göreli kare konumundan ve bu karenin ilişkili uç noktadaki ses işleme ardışık düzenine girdiği veya bu ardışık düzenden çıktığı tahmini zamandan oluşan bir çift. AudioTimestamp başlıklı makaleyi de inceleyin.
- glitch. Genellikle çıkış için arabellek yetersizliği, giriş için arabellek taşması veya başka bir dijital ya da analog gürültü kaynağı nedeniyle oluşan, ses sinyalindeki geçici kesinti veya yanlış örnek değeri.
Cihaz uygulamaları android.hardware.audio.output
özelliğini destekliyorsa 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ğrulukta olmalıdır. - [C-1-2] 500 milisaniye veya daha az soğuk çıkış gecikmesi.
Cihaz uygulamaları android.hardware.audio.output
beyan ediyorsa aşağıdaki şartları karşılaması veya aşması ŞİDDETLE TAVSİYE EDİLİR:
- [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 koşulları hemen karşılaması ŞİDDETLE TAVSİYE EDİLİR. 2021'de yayınlanacak gelecekteki bir platform sürümünde, 200 ms veya daha az soğuk çıkış gecikmesi ZORUNLU olacaktır.
- [C-SR] 45 milisaniye veya daha az sürekli çıkış gecikmesi.
- [C-SR] Soğuk çıkış titremesini 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 şartları karşılıyorsa, ilk kalibrasyondan sonra hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri kullanılırken, desteklenen en az bir ses çıkışı cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için:
- [C-SR]
android.hardware.audio.low_latency
özellik bayrağı bildirilerek düşük gecikmeli sesin bildirilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] AAudio API aracılığıyla düşük gecikmeli ses gereksinimlerini karşılamak KESİNLİKLE ÖNERİLİR.
- [C-SR]
AAudioStream_getPerformanceMode()
kaynağındanAAUDIO_PERFORMANCE_MODE_LOW_LATENCY
döndüren yayınlarda,AAudioStream_getFramesPerBurst()
tarafından döndürülen değerin,AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER
özellik anahtarı içinandroid.media.AudioManager.getProperty(String)
tarafından döndürülen değerden küçük veya ona eşit olması ŞİDDETLE TAVSİYE EDİ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 gereksinimlerini karşılamıyorsa:
- [C-2-1] Düşük gecikmeli ses desteği bildirilmemelidir.
Cihaz uygulamaları android.hardware.microphone
içeriyorsa aşağıdaki giriş sesi şartlarını KARŞILAMALIDIR:
- [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ı android.hardware.microphone
içeriyorsa aşağıdaki giriş sesi şartlarını karşılamaları ŞİDDETLE TAVSİYE EDİ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 koşulları hemen karşılaması ŞİDDETLE TAVSİYE EDİLİR. 2021'de yayınlanacak gelecekteki bir platform sürümünde, 200 ms veya daha az soğuk giriş gecikmesi ZORUNLU olacaktır.
- [C-SR] 30 milisaniye veya daha az sürekli giriş gecikmesi.
- [C-SR] Gidiş dönüş gecikmesinin sürekli olarak 50 milisaniye veya daha az olması.
- [C-SR] Soğuk giriş titremesini 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ı ses veya video kod çözücü içeriyorsa:
-
[C-1-1] 5.1 bölümündeki tüm gerekli codec'leri ve kapsayıcı biçimlerini HTTP(S) üzerinden desteklemelidir.
-
[C-1-2] HTTP Live Streaming taslak protokolü, Sürüm 7 üzerinden aşağıdaki Medya Segmenti Biçimleri tablosunda gösterilen medya segmenti biçimlerini desteklemelidir.
-
[C-1-3] Aşağıdaki RTSP tablosunda belirtilen RTP ses ve video profilini ve ilgili codec'leri DESTEKLEMELİDİR. İstisnalar için lütfen bölüm 5.1'deki tablo dipnotlarına bakın.
Medya segmenti biçimleri
Segment biçimleri | Referanslar | Gerekli codec desteği |
---|---|---|
MPEG-2 Taşıma Akışı | ISO 13818 |
Video codec'leri:
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 bölümüne bakın. |
WebVTT | WebVTT |
RTSP (RTP, SDP)
Profil adı | Referanslar | Gerekli codec desteği |
---|---|---|
H264 AVC | RFC 6184 | H264 AVC ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
MP4A-LATM | RFC 6416 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 bölümüne bakın. |
H263-1998 |
RFC 3551 RFC 4629 RFC 2190 |
H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
H263-2000 | RFC 4629 | H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
AMR | RFC 4867 | AMR-NB ile ilgili ayrıntılar için 5.1.1 bölümüne bakın. |
AMR-WB | RFC 4867 | AMR-WB ile ilgili ayrıntılar için 5.1.1 bölümüne bakın. |
MP4V-ES | RFC 6416 | MPEG-4 SP ile ilgili ayrıntılar için 5.1.3 bölümüne bakın. |
mpeg4-generic | RFC 3640 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 bölümüne bakın. |
MP2T | RFC 2250 | Ayrıntılar için HTTP Live Streaming bölümündeki MPEG-2 Taşıma Akışı konusuna bakın. |
5.8. Güvenli Medya
Cihaz uygulamaları güvenli video çıkışını destekliyorsa ve güvenli yüzeyleri destekleyebiliyorsa:
- [C-1-1]
Display.FLAG_SECURE
desteği BEYAN EDİLMELİDİR.
Cihaz uygulamaları Display.FLAG_SECURE
desteği beyan ediyorsa ve kablosuz ekran protokolünü destekliyorsa:
- [C-2-1] Miracast gibi kablosuz protokollerle bağlanan ekranlar için bağlantıyı HDCP 2.x veya daha yüksek gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİ HALE GETİRMELİDİR.
Cihaz uygulamaları Display.FLAG_SECURE
desteğini ve kablolu harici ekranı desteklediğini beyan ediyorsa:
- [C-3-1] Kullanıcı tarafından erişilebilen kablolu bir bağlantı noktası üzerinden bağlanan tüm harici ekranlar için HDCP 1.2 veya daha yüksek bir sürüm desteklenmelidir.
5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)
Cihaz uygulamaları, android.content.pm.PackageManager
sınıfı aracılığıyla android.software.midi
özelliğinin desteklendiğini bildiriyorsa:
-
[C-1-1] Bu tür aktarımlar aşağıdaki durumlarda geçerli olmak üzere, genel MIDI dışı bağlantı sağladıkları tüm MIDI özellikli donanım aktarımlarında MIDI'yi desteklemelidir:
- USB ana makine modu, bölüm 7.7
- Bluetooth LE üzerinden MIDI, merkezi rolü üstlenir, bölüm 7.4.3
-
[C-1-2] Uygulamalar arası MIDI yazılım aktarımını (sanal MIDI cihazları) DESTEKLEMELİDİR.
-
[C-1-3] libamidi.so (yerel MIDI desteği) içermelidir.
-
USB çevre birimi modunda MIDI'yi DESTEKLEMELİDİR, 7.7 bölümü
5.10. Profesyonel Ses
Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla android.hardware.audio.pro
özelliğinin desteklendiğini bildiriyorsa:
- [C-1-1]
android.hardware.audio.low_latency
özelliği için destek bildirimi ZORUNLUDUR. - [C-1-2] Bölüm 5.6 Ses Gecikmesi'nde tanımlandığı şekilde sürekli gidiş dönüş ses gecikmesi en fazla 20 milisaniye OLMALI ve desteklenen en az bir yolda en fazla 10 milisaniye OLMALIDIR.
- [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen bir veya daha fazla USB bağlantı noktası İÇERMELİDİR.
- [C-1-4]
android.software.midi
özelliği için destek raporlanmalıdır. - [C-1-5] Hem OpenSL ES PCM arabellek sırası API'si hem de AAudio yerel ses API'sinin en az bir yolu kullanılarak gecikme ve USB ses gereksinimleri karşılanmalıdır.
- [SR] MMAP yolu yerine AAudio yerel ses API'sini kullanarak gecikme ve USB ses gereksinimlerini karşılamak için ŞİDDETLE ÖNERİLİR.
- [C-1-6] 200 milisaniye veya daha az soğuk çıkış gecikmesine SAHİP OLMALIDIR.
- [C-1-7] Soğuk giriş gecikmesi 200 milisaniye veya daha az OLMALIDIR.
- [SR] Ses etkin durumdayken ve CPU yükü değişirken tutarlı bir CPU performansı seviyesi sağlamak için KESİNLİKLE ÖNERİLİR. Bu, SynthMark'ın Android uygulama sürümüyle 09b13c6f49ea089f8c31e5d035f912cc405b7ab8 commit kimliği 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ı, "Otomatik Test" seçeneği kullanılarak çalıştırılmalı ve aşağıdaki sonuçlar elde edilmelidir:
- voicemark.90 >= 32 ses
- latencymark.fixed.little <= 15 ms
- latencymark.dynamic.little <= 50 ms
Karşılaştırma testlerinin açıklaması için SynthMark dokümanlarını inceleyin.
- Ses saatiyle ilgili standart saate kıyasla yanlışlık ve sapma EN AZA İNDİRİLMELİDİR.
- Her ikisi de etkinken CPU'ya
CLOCK_MONOTONIC
göre ses saati kaymasını en aza İNDİRMELİDİR. - Cihaz içi dönüştürücülerde ses gecikmesini EN AZA İNDİRMELİDİR.
- USB dijital ses üzerinden ses gecikmesini EN AZA İNDİRMELİDİR.
- Tüm yollardaki ses gecikmesi ölçümleri belgelenmelidir.
- Geri arama, tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediğinden ses arabelleği tamamlama geri arama giriş sürelerindeki titreşim EN AZA İNDİRİLMELİDİR.
- Bildirilen gecikme süresinde normal kullanımda sıfır ses hatası SAĞLAMALIDIR.
- Kanallar arası gecikme farkı sıfır olmalıdır.
- Tüm aktarımlarda MIDI ortalama gecikmesi en aza indirilmelidir.
- Tüm aktarımlarda yük altındaki MIDI gecikme süresi değişkenliğini (titreme) EN AZA İNDİRMELİDİR.
- 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 İNDİRMELİDİR.
- Her ikisi de etkin olduğunda, karşılık gelen uç noktaların giriş ve çıkış tarafları arasında sıfır ses saati farkı SAĞLAMALIDIR. Karşılık gelen uç noktalara örnek olarak cihazdaki mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.
- Her ikisi de etkin olduğunda, aynı iş parçacığındaki karşılık gelen uç noktaların giriş ve çıkış tarafları için ses arabelleği tamamlama geri çağırmalarını İŞLEMELİ ve giriş geri çağırmasından döndükten hemen sonra çıkış geri çağırmasına girmelidir. Geri aramaları aynı iş parçacığında işlemek mümkün değilse uygulamanın giriş ve çıkış taraflarında tutarlı bir zamanlama sağlamak için çıkış geri aramasını giriş geri aramasından kısa bir süre sonra girin.
- Giriş ve çıkış tarafları için HAL ses arabelleğe alma arasındaki faz farkı en aza İNDİRİLMELİDİR.
- Dokunma gecikmesi en aza indirilmelidir.
- Yük altındayken dokunma gecikmesi değişkenliğini (titreme) EN AZA İNDİRMELİDİR.
- Dokunma girişinden ses çıkışına kadar olan gecikme süresi 40 ms veya daha az OLMALIDIR.
Cihaz uygulamaları yukarıdaki koşulların tümünü karşılıyorsa:
- [SR]
android.hardware.audio.pro
özelliğinin desteklendiğiniandroid.content.pm.PackageManager
sınıfı aracılığıyla bildirmeniz ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakı içeriyorsa:
- [C-2-1] Ses jakı yolu üzerinden sürekli gidiş dönüş ses gecikmesi 20 milisaniye veya daha az OLMALIDIR.
- [SR] Kablolu Ses Kulaklığı Spesifikasyonu (v1.1)'nun Mobil cihaz (jak) spesifikasyonları bölümüne uymanız ŞİDDETLE TAVSİYE EDİLİR.
- Ses jakı yolu üzerinden sürekli gidiş dönüş ses gecikmesi 10 milisaniye veya daha az OLMALIDIR.
Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakını atlıyor ve USB ana makine modunu destekleyen USB bağlantı noktaları içeriyorsa:
- [C-3-1] USB ses sınıfı UYGULANMALIDIR.
- [C-3-2] USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktası üzerinden 20 milisaniye veya daha az sürekli gidiş dönüş ses gecikmesine SAHİP 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 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 KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları HDMI bağlantı noktası içeriyorsa:
- En az bir yapılandırmada, stereo ve sekiz kanallı çıkışı 20 bit veya 24 bit derinlikte ve 192 kHz'de bit derinliği kaybı veya yeniden örnekleme olmadan desteklemelidir.
5.11. İşlenmemiş için Yakalama
Android, android.media.MediaRecorder.AudioSource.UNPROCESSED
ses kaynağı aracılığıyla işlenmemiş ses kaydını destekler. OpenSL ES'de, kayıt ön ayarıyla SL_ANDROID_RECORDING_PRESET_UNPROCESSED
erişilebilir.
Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemeyi ve üçüncü taraf uygulamalarına sunmayı amaçlıyorsa:
-
[C-1-1] Desteği
android.media.AudioManager
özelliği PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED üzerinden bildirmelidir. -
[C-1-2] Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri sergilemelidir: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 100 Hz ile 7.000 Hz arasında ±10 dB.
-
[C-1-3] Düşük frekans aralığında genlik seviyeleri GÖSTERMELİDİR: Özellikle, işlenmemiş 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-1-4] Yüksek frekans aralığında genlik seviyeleri GÖSTERMELİDİR: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofonun orta frekans aralığına kıyasla 7.000 Hz ile 22 kHz arasında ±30 dB.
-
[C-1-5] Ses girişi hassasiyeti, 94 dB ses basıncı seviyesinde (SPL) çalınan 1.000 Hz sinüs tonu kaynağının, işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofon için 16 bit örneklerde 520 RMS (veya kayan nokta/çift duyarlıklı örneklerde -36 dB tam ölçek) ile yanıt verecek şekilde AYARLANMALIDIR.
-
[C-1-6] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun 60 dB veya daha yüksek bir sinyal-gürültü oranına (SNR) sahip olması ZORUNLUDUR. (SNR, 94 dB SPL ile öz 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 seviye çarpanı dışında, yolda başka bir sinyal işleme (ör. otomatik kazanç kontrolü, yüksek geçiren filtre veya yankı iptali) olmamalıdır. Başka bir deyişle:
- [C-1-8] Mimaride herhangi bir nedenle sinyal işleme varsa bu işleme DEVRE DIŞI BIRAKILMALI ve sinyal yolunda etkili bir şekilde sıfır gecikme veya ek gecikme oluşturulmalıdır.
- [C-1-9] Seviye çarpanının yolda olmasına izin verilir ancak sinyal yolunda gecikmeye veya gecikme süresine neden OLMAMALIDIR.
Tüm SPL ölçümleri, test edilen mikrofonun hemen yanında yapılır. Birden fazla mikrofon yapılandırması için bu koşullar her mikrofon için geçerlidir.
Cihaz uygulamaları android.hardware.microphone
beyan ediyorsa ancak işlenmemiş ses kaynağını desteklemiyorsa:
- [C-2-1] Desteklenmediğini düzgün ş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 yoluyla ilgili mümkün olduğunca çok sayıda koşulu karşılamak için hâlâ ŞİDDETLE TAVSİYE EDİLİR.
6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
6.1. Geliştirici araçları
Cihaz uygulamaları:
- [C-0-1] Android SDK'da sağlanan Android Geliştirici Araçları desteklenmelidir.
-
- [C-0-2] Android SDK'sında ve AOSP'de sağlanan kabuk komutlarında belgelendiği şekilde adb'yi desteklemelidir. Bu komutlar, uygulama geliştiriciler tarafından kullanılabilir. Örneğin:
dumpsys
cmd stats
- [C-0-11] MUST support the shell command
cmd testharness
. Cihaz uygulamalarını kalıcı veri bloğu olmadan önceki bir Android sürümünden yükseltme, C-0-11'den MUAF TUTULABİLİR. - [C-0-3] MUST NOT alter the format or the contents of device system events (batterystats , diskstats, fingerprint, graphicsstats, netstats, notification, procstats) logged via the dumpsys command.
- [C-0-10] Aşağıdaki etkinlikleri eksiksiz olarak kaydetmeli ve
cmd stats
kabuk komutuna veStatsManager
System API sınıfına erişilebilir ve kullanılabilir hale getirmelidir.- ActivityForegroundStateChanged
- AnormallikAlgılandı
- 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'ı varsayılan olarak etkin olmamalı ve Android Debug Bridge'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma olmalıdır.
- [C-0-5] Güvenli adb'yi DESTEKLEMELİDİR. Android, güvenli adb'yi destekler. Güvenli adb, bilinen kimliği doğrulanmış ana makinelerde adb'yi etkinleştirir.
- [C-0-6] adb'nin bir ana makineden bağlanmasına izin veren bir mekanizma SAĞLANMALIDIR. Özellikle:
USB bağlantı noktası olmayan cihaz uygulamaları, çevre birimi modunu destekliyorsa:
- [C-3-1] Yerel alan ağı (ör. Ethernet veya kablosuz) üzerinden adb uygulaması ZORUNLUDUR.
- [C-3-2] Geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows 7, 8 ve 10 sürücüleri SAĞLANMALIDIR.
Cihaz uygulamaları, kablosuz bağlantı üzerinden bir ana makineye adb bağlantılarını destekliyorsa:
- [C-4-1]
AdbManager#isAdbWifiSupported()
yöntemitrue
döndürmelidir.
Cihaz uygulamaları, kablosuz bağlantı üzerinden bir ana makineye adb bağlantılarını destekliyorsa ve en az bir kamera içeriyorsa:
- [C-5-1]
AdbManager#isAdbWifiQrSupported()
yöntemitrue
döndürmelidir.
- [C-0-2] Android SDK'sında ve AOSP'de sağlanan kabuk komutlarında belgelendiği şekilde adb'yi desteklemelidir. Bu komutlar, uygulama geliştiriciler tarafından kullanılabilir. Örneğin:
-
Dalvik Debug Monitor Service (ddms)
- [C-0-7] Android SDK'da belgelendiği şekilde tüm ddms özelliklerini DESTEKLEMELİDİR. ddms, adb'yi kullandığından ddms desteği varsayılan olarak devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Debug Bridge'i etkinleştirdiğinde desteklenmelidir.
-
Monkey
- [C-0-8] Monkey çerçevesini içermeli ve uygulamaların kullanabilmesi için kullanılabilir hale getirmelidir.
-
SysTrace
- [C-0-9] Android SDK'da belgelendiği şekilde systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak devre dışı olmalı ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma OLMALIDIR.
-
Perfetto
- [C-SR] Perfeito dokümanlarına uygun bir komut satırı içeren
/system/bin/perfetto
ikilisinin kabuk kullanıcısına sunulması ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] Perfetto ikilisinin, Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf yapılandırmasını giriş olarak kabul etmesi ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf izi oluşturmak için perfetto ikili dosyasının KULLANILMASI ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Peretto dokümanlarında açıklanan veri kaynaklarının en azından bir kısmının, perfetto ikilisi aracılığıyla sağlanması ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Perfeito dokümanlarına uygun bir komut satırı içeren
-
Low Memory Killer
- [C-0-10] Bir uygulama Low Memory Killer tarafından sonlandırıldığında statsd günlüğüne bir
LMK_KILL_OCCURRED_FIELD_NUMBER
Atom YAZILMALIDIR.
- [C-0-10] Bir uygulama Low Memory Killer tarafından sonlandırıldığında statsd günlüğüne bir
-
Test Bandı Modu Cihaz uygulamaları
cmd testharness
kabuk komutunu destekliyorsa vecmd testharness enable
komutunu çalıştırıyorsa:- [C-2-1]
true
,ActivityManager.isRunningInUserTestHarness()
için İADE EDİLMELİDİR. - [C-2-2] Test Bandı Modu belgelerinde açıklandığı şekilde Test Bandı Modu uygulanmalıdır.
- [C-2-1]
Cihaz uygulamaları, android.hardware.vulkan.version
özellik işaretleri aracılığıyla Vulkan 1.0 veya sonraki sürümlerin desteklendiğini bildiriyorsa:
- [C-1-1] Uygulama geliştiricinin GPU hata ayıklama katmanlarını etkinleştirmesine/devre dışı bırakmasına olanak tanıyan bir özellik SAĞLANMALIDIR.
- [C-1-2] GPU hata ayıklama katmanları etkinleştirildiğinde, vkEnumerateInstanceLayerProperties() ve vkCreateInstance() API yöntemlerini desteklemek için hata ayıklanabilir uygulamaların temel dizininde bulunan, harici araçlar tarafından sağlanan kitaplıklardaki (yani platformun veya uygulama paketinin parçası olmayan) katmanları numaralandIRMALIDIR.
6.2. Geliştirici seçenekleri
Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmasına olanak tanır.
Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sağlamalıdır. Bu bağlamda:
- [C-0-1] Uygulama geliştirme ile ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS amacına UYULMALIDIR. Yukarı akış Android uygulaması, Geliştirici Seçenekleri menüsünü varsayılan olarak gizler ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesine yedi (7) kez basarak Geliştirici Seçenekleri'ni başlatmasına olanak tanır.
- [C-0-2] Geliştirici Seçenekleri varsayılan olarak GİZLENMELİDİR.
- [C-0-3] Geliştirici Seçenekleri'nin etkinleştirilmesi için bir üçüncü taraf uygulamasına diğerine göre ayrıcalıklı muamele yapmayan net bir mekanizma SAĞLANMALIDIR. Geliştirici Seçenekleri'nin nasıl etkinleştirileceğini açıklayan, herkese açık bir doküman veya web sitesi SAĞLANMALIDIR. Bu doküman veya web sitesi, Android SDK dokümanlarından BAĞLANABİLİR olmalıdır.
- Geliştirici Seçenekleri etkinleştirildiğinde ve kullanıcının güvenliği söz konusu olduğunda kullanıcıya sürekli görsel bildirim GÖNDERMELİDİR.
- Kullanıcının güvenliğinin söz konusu olduğu durumlarda dikkat dağıtılmasını önlemek için Geliştirici Seçenekleri menüsüne erişimi, menüyü görsel olarak gizleyerek veya devre dışı bırakarak GEÇİCİ OLARAK sınırlayabilir.
7. Donanım Uyumluluğu
Bir cihazda, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir donanım bileşeni varsa:
- [C-0-1] Cihaz uygulaması, bu API'yi Android SDK belgelerinde açıklandığı şekilde uygulamalıdır.
SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime giriyorsa ve cihaz uygulamasında bu bileşen yoksa:
- [C-0-2] Bileşen API'leri için sınıf tanımları (SDK tarafından belgelendiği şekilde) yine sunulmalıdır.
- [C-0-3] API'nin davranışları, makul bir şekilde işlem yapmayan işlemler olarak uygulanmalıdır.
- [C-0-4] API yöntemleri, SDK belgelerinde izin verilen yerlerde null değerler döndürmelidir.
- [C-0-5] API yöntemleri, SDK belgelerinde boş değerlere izin verilmeyen sınıfların no-op uygulamalarını döndürmelidir.
- [C-0-6] API yöntemleri, SDK belgelerinde açıklanmayan istisnalar oluşturmamalıdır.
- [C-0-7] Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki
getSystemAvailableFeatures()
vehasSystemFeature(String)
yöntemleriyle tutarlı bir şekilde doğru donanım yapılandırma bilgilerini bildirmelidir.
Bu şartların geçerli olduğu senaryolara tipik bir örnek, telefon API'sidir: Bu API'ler, telefon olmayan cihazlarda bile makul bir şekilde işlem yapmayan (no-op) olarak uygulanmalıdır.
7.1. Ekran ve Grafik
Android, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında iyi çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan olanaklar içerir. Tüm üçüncü taraf Android uyumlu uygulamaların çalışabileceği Android uyumlu ekranlarda, cihaz uygulamaları bu API'leri ve davranışları bu bölümde ayrıntılı olarak açıklandığı şekilde doğru bir şekilde uygulamalıdır.
Bu bölümdeki şartların referans verdiği birimler aşağıdaki şekilde tanımlanır:
- fiziksel çapraz boyut. Ekranın aydınlatılmış kısmının iki zıt köşesi arasındaki mesafedir.
- İnç başına nokta sayısı (dpi). 1 inçlik doğrusal yatay veya dikey bir aralığın kapsadığı piksel sayısı. DPI değerleri listelendiğinde hem yatay hem de dikey DPI aralığın içinde olmalıdır.
- en boy oranı. Ekranın uzun boyutunun piksellerinin kısa boyutunun piksellerine oranı. Örneğin, 480x854 piksel boyutundaki bir ekranın en-boy oranı 854/480 = 1, 779 veya yaklaşık olarak "16:9" olur.
- Yoğunluktan bağımsız piksel (dp). 160 DPI ekrana göre normalleştirilmiş sanal piksel birimi. Piksel sayısı = DP sayısı * (yoğunluk/160) şeklinde hesaplanır.
7.1.1. Ekran Yapılandırması
7.1.1.1. Ekran Boyutu ve Şekli
Android kullanıcı arayüzü çerçevesi, çeşitli farklı mantıksal ekran düzeni boyutlarını destekler ve uygulamaların Configuration.screenLayout
ile SCREENLAYOUT_SIZE_MASK
ve Configuration.smallestScreenWidthDp
kullanarak mevcut yapılandırmanın ekran düzeni boyutunu sorgulamasına olanak tanır.
Cihaz uygulamaları:
-
[C-0-1] Android SDK dokümanlarında tanımlandığı şekilde
Configuration.screenLayout
için doğru düzen boyutunu bildirmelidir. Daha net bir ifadeyle, cihaz uygulamaları aşağıdaki gibi doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını bildirmelidir:Configuration.uiMode
değeri UI_MODE_TYPE_WATCH dışında bir değer olarak ayarlanmış veConfiguration.screenLayout
içinsmall
boyutu bildiren cihazlar en az 426 dp x 320 dp olmalıdır.normal
boyutu bildiren cihazlardaConfiguration.screenLayout
için en az 480 dp x 320 dp olmalıdır.large
içinConfiguration.screenLayout
boyutunu bildiren cihazlar en az 640 dp x 480 dp olmalıdır.Configuration.screenLayout
içinxlarge
boyutu bildiren cihazlar en az 960 dp x 720 dp olmalıdır.
-
[C-0-2] Android SDK belgelerinde açıklandığı gibi, AndroidManifest.xml dosyasındaki <
supports-screens
> özelliği aracılığıyla uygulamaların ekran boyutları için belirttiği desteği DOĞRU şekilde karşılamalıdır. -
Köşeleri yuvarlatılmış Android uyumlu ekranlara SAHİP OLABİLİR.
Cihaz uygulamaları UI_MODE_TYPE_NORMAL
özelliğini destekliyorsa ve yuvarlak köşeli Android uyumlu ekranlar içeriyorsa:
- [C-1-1] AŞAĞIDAKİ ŞARTLARDAN EN AZ BİRİNİN KARŞILANDIĞINDAN EMİN OLMALIDIR:
- Yuvarlatılmış köşelerin yarıçapı 38 dp'ye eşit veya daha az olmalıdır.
-
Mantıksal ekranın her köşesine 15 dp x 15 dp boyutlarında 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çiş için kullanıcıya olanak tanınmalıdır.
Cihaz uygulamaları, katlanabilir bir Android uyumlu ekran içeriyorsa veya birden fazla ekran paneli arasında katlanabilir bir menteşe içeriyorsa ve bu ekranların üçüncü taraf uygulamaları oluşturmak için kullanılabilmesini sağlıyorsa:
- [C-2-1] extensions API'nin mevcut en son kararlı sürümünü veya Window Manager Jetpack kitaplığı tarafından kullanılacak sidecar API'nin kararlı sürümünü uygulamalıdır.
Cihaz uygulamaları, katlanabilir bir Android uyumlu ekran içeriyorsa veya birden fazla ekran paneli arasında katlanabilir bir menteşe içeriyorsa ve menteşe ya da katlama, tam ekran bir uygulama penceresini kesiyorsa:
- [C-3-1] Menteşenin veya katlamanın konumunu, sınırlarını ve durumunu uzantılar ya da sidecar API'leri aracılığıyla uygulamaya bildirmelidir.
Sidecar 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 ile uyumlu ekranların fiziksel ekranının en boy oranıyla ilgili bir kısıtlama olmasa da üçüncü taraf uygulamalarının oluşturulduğu mantıksal ekranın en boy oranı(view.Display
API'leri ve Configuration API'leri aracılığıyla bildirilen yükseklik ve genişlik değerlerinden elde edilebilir) aşağıdaki şartları KARŞILAMALIDIR:
-
[C-0-1]
Configuration.uiMode
değeriUI_MODE_TYPE_NORMAL
olarak ayarlanmış cihaz uygulamaları, uygulama aşağıdaki koşullardan birini karşılamadığı sürece 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 belirtmiş. - 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ı, aşağıdaki koşullardan birini karşılayarak uygulamanın daha genişletilebilmesi haricinde 1,3333'e (4:3) eşit veya daha büyük bir en-boy oranına sahip OLMALIDIR:- 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
değeriUI_MODE_TYPE_WATCH
olarak ayarlanmış cihaz uygulamalarında en boy oranı değeri 1,0 (1:1) olarak ayarlanmalıdır.
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
DisplayMetrics
'da listelenen Android çerçeve yoğunluklarından yalnızca biriniDENSITY_DEVICE_STABLE
API'si aracılığıyla bildirmelidir ve bu değer hiçbir zaman değişmemelidir. Ancak cihaz, ilk başlatmadan sonra ayarlanan, kullanıcı tarafından yapılan ekran yapılandırma değişikliklerine (ör. ekran boyutu) göre farklı bir rastgele yoğunluk bildirebilir. -
Cihaz uygulamaları, bildirilen ekran boyutu desteklenen minimum boyutun altına düşmediği sürece, ekranın fiziksel yoğunluğuna sayısal olarak en yakın olan standart Android çerçeve yoğunluğunu tanımlamalıdır. Fiziksel yoğunluğa sayısal olarak en yakın olan standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuyla sonuçlanıyorsa cihaz uygulamaları, bir sonraki en düşük standart Android çerçeve yoğunluğunu bildirmelidir.
Cihazın ekran boyutunu değiştirme imkanı varsa:
- [C-1-1] Ekran boyutu, yerel yoğunluğun 1,5 katından daha fazla ölçeklendirilmemeli veya önce hangisi gerçekleşirse gerçekleşsin 320 dp'den (kaynak niteleyicisi sw320dp'ye eşdeğer) daha küçük bir etkili minimum ekran boyutu oluşturmamalıdır.
- [C-1-2] Ekran 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 (yukarıda belirtilen sınırlara uyarak) Yerel Görüntüleme seçeneklerinin aşağıdaki şekilde ölçeklendirilmesi ÖNERİLİR.
- Küçük: 0,85x
- Varsayılan: 1x (Yerel ekran ölçeği)
- Büyük: 1,15 kat
- Daha büyük: 1,3 kat
- En büyük 1,45x
7.1.2. Görüntüleme Metrikleri
Cihaz uygulamaları, Android ile uyumlu ekranları veya Android ile uyumlu ekranlara yönelik video çıkışını içeriyorsa:
- [C-1-1]
android.util.DisplayMetrics
API'sinde tanımlanan Android ile uyumlu tüm görüntülü reklam metrikleri için doğru değerler RAPORLANMALIDIR.
Cihaz uygulamaları yerleşik bir ekran veya video çıkışı içermiyorsa:
- [C-2-1] Emüle edilen varsayılan
view.Display
içinandroid.util.DisplayMetrics
API'de tanımlandığı şekilde Android ile uyumlu ekranın doğru değerlerini bildirmelidir.
7.1.3. Ekran Yönlendirme
Cihaz uygulamaları:
- [C-0-1] Hangi ekran yönlerini desteklediklerini (
android.hardware.screen.portrait
ve/veyaandroid.hardware.screen.landscape
) BİLDİRMELİ ve en az bir desteklenen yön bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönlü yatay ekranı olan bir cihaz YALNIZCAandroid.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ığında 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] Uygulamalar tarafından dikey veya yatay ekran yönüne dinamik yönlendirmeyi DESTEKLEMELİDİR. Yani cihaz, uygulamanın belirli bir ekran yönü isteğine uymalı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ünü SEÇEBİLİR.
7.1.4. 2D ve 3D Grafik Hızlandırma
7.1.4.1 OpenGL ES
Cihaz uygulamaları:
- [C-0-1] Yönetilen API'ler (ör.
GLES10.getString()
yöntemi aracılığıyla) ve yerel API'ler aracılığıyla desteklenen OpenGL ES sürümlerini (1.1, 2.0, 3.0, 3.1, 3.2) doğru şekilde tanımlamalıdır. - [C-0-2] Destekleneceği belirlenen her OpenGL ES sürümü için ilgili tüm yönetilen API'ler ve yerel API'ler desteklenmelidir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Android SDK belgelerinde belirtildiği ve ayrıntılı olarak açıklandığı gibi hem OpenGL ES 1.1 hem de 2.0'ı desteklemelidir.
- [C-SR] OpenGL ES 3.1'i desteklemesi ÖNEMLE TAVSİYE EDİLİR.
- OpenGL ES 3.2'yi DESTEKLEMELİDİR.
Cihaz uygulamaları OpenGL ES sürümlerinden birini destekliyorsa:
- [C-2-1] Uyguladıkları diğer OpenGL ES uzantılarını OpenGL ES yönetilen API'leri ve yerel API'ler aracılığıyla bildirmeli ve desteklemedikleri uzantı dizelerini bildirmemelidir.
- [C-2-2]
EGL_KHR_image
,EGL_KHR_image_base
,EGL_ANDROID_image_native_buffer
,EGL_ANDROID_get_native_client_buffer
,EGL_KHR_wait_sync
,EGL_KHR_get_all_proc_addresses
,EGL_ANDROID_presentation_time
,EGL_KHR_swap_buffers_with_damage
,EGL_ANDROID_recordable
veEGL_ANDROID_GLES_layers
uzantılarını DESTEKLEMELİDİR. - [C-SR]
EGL_KHR_partial_update
veOES_EGL_image_external
uzantılarını desteklemek için ŞİDDETLE TAVSİYE EDİLİR. - Genellikle satıcıya özel olan, destekledikleri tüm doku sıkıştırma biçimlerini
getString()
yöntemiyle doğru şekilde bildirmelidir.
Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2'yi desteklediğini beyan ediyorsa:
- [C-3-1] libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev sembollerine ek olarak bu sürümler için ilgili işlev sembollerini DIŞA AKTARMALIDIR.
- [SR]
OES_EGL_image_external_essl3
uzantısını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa:
- [C-4-1] OpenGL ES Android Extension Pack'in tamamını DESTEKLEMELİDİR.
Cihaz uygulamaları, OpenGL ES Android Extension Pack'i tamamen destekliyorsa:
- [C-5-1]
android.hardware.opengles.aep
özellik işaretiyle desteği TANIMLAMALIDIR.
Cihaz uygulamaları EGL_KHR_mutable_render_buffer
uzantısı için destek sunuyorsa:
- [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 ek yüke sahip, platformlar arası bir API olan Vulkan'ı destekler.
Cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:
- [SR] Vulkan 1.1 desteği EKLEMESİ ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- Vulkan 1.1 desteği OLMALIDIR.
Vulkan dEQP testleri, her biri ilişkili bir tarih/sürüm içeren bir dizi test listesine ayrılmıştır. Bunlar, Android kaynak ağacında external/deqp/android/cts/main/vk-master-YYYY-MM-DD.txt
konumunda bulunur. Kendi kendine bildirilen düzeyde Vulkan'ı destekleyen bir cihaz, bu düzeydeki ve önceki tüm test listelerindeki dEQP testlerini geçebileceğini gösterir.
Cihaz uygulamaları Vulkan 1.0 veya sonraki sürümlerin desteğini içeriyorsa:
- [C-1-1]
android.hardware.vulkan.level
veandroid.hardware.vulkan.version
özellik işaretleriyle doğru tam sayı değeri RAPORLANMALIDIR. - [C-1-2] Vulkan yerel API'si
vkEnumeratePhysicalDevices()
için en az birVkPhysicalDevice
numaralandırılmalıdır . - [C-1-3] MUST fully implement the Vulkan 1.0 APIs for each enumerated
VkPhysicalDevice
. - [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 listelenmelidir . - [C-1-5] Uygulamada
android:debuggable
özelliğitrue
olarak ayarlanmadığı sürece, uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanlar numaralandırılmamalı veya Vulkan API'yi izlemenin ya da engellemenin başka yolları sunulmamalıdır. - [C-1-6] Destekledikleri tüm uzantı dizelerini Vulkan yerel API'leri aracılığıyla bildirmeli ve buna karşılık doğru şekilde desteklemedikleri uzantı dizelerini BİLDİRMEMELİDİR.
- [C-1-7] MUST support the VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, and VK_KHR_incremental_present extensions.
- [C-1-8]
android.software.vulkan.deqp.level
özellik işareti aracılığıyla desteklenen Vulkan dEQP Testlerinin maksimum sürümü RAPORLANMALIDIR. - [C-1-9]
android.software.vulkan.deqp.level
özellik işaretinde belirtildiği gibi 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 listelerinde yer alan tüm Vulkan dEQP testlerini GEÇMELİDİR. - [C-SR] VK_KHR_driver_properties ve VK_GOOGLE_display_timing uzantılarını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Vulkan 1.0 desteği içermiyorsa:
- [C-2-1] Vulkan özellik işaretlerinden herhangi birini (ör.
android.hardware.vulkan.level
,android.hardware.vulkan.version
) BEYAN ETMEMELİDİR. - [C-2-2] Vulkan yerel API'si
VkPhysicalDevice
için herhangi birvkEnumeratePhysicalDevices()
numaralandırılMAMALIDIR.
Cihaz uygulamaları Vulkan 1.1 desteği içeriyorsa ve Vulkan özellik işaretlerinden herhangi birini beyan ediyorsa:
- [C-3-1]
SYNC_FD
harici semafor ve işleme türleri ileVK_ANDROID_external_memory_android_hardware_buffer
uzantısı için destek sunULMALIDIR.
7.1.4.3 RenderScript
- [C-0-1] Cihaz uygulamaları, Android SDK belgelerinde ayrıntılı olarak açıklandığı gibi Android RenderScript'i desteklemelidir.
7.1.4.4 2D Graphics Acceleration
Android, uygulamaların android:hardwareAccelerated adlı bir manifest etiketi veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini bildirmelerine olanak tanıyan bir mekanizma içerir.
Cihaz uygulamaları:
- [C-0-1] Varsayılan olarak donanım hızlandırma ETKİNLEŞTİRİLMELİ ve geliştirici android:hardwareAccelerated="false” değerini ayarlayarak veya doğrudan Android View API'leri üzerinden donanım hızlandırmayı devre dışı bırakarak talep ederse donanım hızlandırma DEVRE DIŞI BIRAKILMALIDIR.
- [C-0-2] Donanım hızlandırma ile ilgili Android SDK belgeleriyle tutarlı bir davranış sergilemelidir.
Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını doğrudan kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak entegre etmesine olanak tanıyan bir TextureView nesnesi içerir.
Cihaz uygulamaları:
- [C-0-3] TextureView API'yi desteklemeli ve yukarı akış Android uygulamasıyla tutarlı davranış sergilemelidir.
7.1.4.5 Geniş Gama Aralığına Sahip Ekranlar
Cihaz uygulamaları , Configuration.isScreenWideColorGamut()
aracılığıyla geniş gamlı ekran desteği sunduğunu iddia ediyorsa:
- [C-1-1] Renk kalibrasyonu yapılmış bir ekrana sahip OLMALIDIR.
- [C-1-2] Gamı, CIE 1931 xyY alanında sRGB renk gamını tamamen kapsayan bir ekrana SAHİP OLMALIDIR.
- [C-1-3] CIE 1931 xyY alanında gamı, DCI-P3'ün en az% 90'ı kadar bir alana sahip bir ekrana SAHİP OLMALIDIR.
- [C-1-4] OpenGL ES 3.1 veya 3.2'yi DESTEKLEMELİ ve bunu düzgün şekilde bildirmelidir.
- [C-1-5]
EGL_KHR_no_config_context
,EGL_EXT_pixel_format_float
,EGL_KHR_gl_colorspace
,EGL_EXT_gl_colorspace_scrgb
,EGL_EXT_gl_colorspace_scrgb_linear
,EGL_EXT_gl_colorspace_display_p3
,EGL_EXT_gl_colorspace_display_p3_linear
veEGL_EXT_gl_colorspace_display_p3_passthrough
uzantılarını desteklediğini REKLAMLA YÜKÜMLÜDÜR. - [C-SR]
GL_EXT_sRGB
'ı desteklemek için KESİNLİKLE ÖNERİLİR.
Aksine, cihaz uygulamaları geniş gamlı ekranları desteklemiyorsa:
- [C-2-1] Ekran renk gamı tanımlanmamış olsa da CIE 1931 xyY alanında sRGB'nin% 100'ünü veya daha fazlasını kapsamalıdır.
7.1.5. Eski Uygulama Uyumluluk Modu
Android, ekran boyutu bağımsızlığından önceki eski Android sürümleri için geliştirilmemiş eski uygulamaların yararına olmak üzere, çerçevenin "normal" ekran boyutuna eşdeğer (320 dp genişlik) bir modda çalıştığı bir "uyumluluk modu" belirtir.
7.1.6. Ekran Teknolojisi
Android platformunda, uygulamaların Android uyumlu bir ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler bulunur. Bu belgede özellikle izin verilmediği sürece cihazlar, Android SDK tarafından tanımlanan bu API'lerin tümünü desteklemelidir.
Bir cihaz uygulamasının Android ile uyumlu tüm ekranları:
- [C-0-1] 16 bit renkli grafikleri işleyebilmelidir.
- 24 bit renkli grafikler görüntüleyebilen ekranları DESTEKLEMELİDİR.
- [C-0-2] Animasyonları oluşturabilmelidir.
- [C-0-3] 0,9 ile 1,15 arasında bir piksel en boy oranına (PAR) SAHİP OLMALIDIR. Yani piksel en boy oranı, %10-15 toleransla kareye (1,0) yakın OLMALIDIR.
7.1.7. İkincil Ekranlar
Android, medya paylaşım özelliklerini ve harici ekranlara erişmek için geliştirici API'lerini etkinleştirmek üzere Android ile uyumlu ikincil ekranlar için destek içerir.
Cihaz uygulamaları, kablolu, kablosuz veya yerleşik ek ekran bağlantısı üzerinden harici ekranı destekliyorsa:
- [C-1-1] Android SDK belgelerinde açıklandığı şekilde
DisplayManager
sistem hizmetini ve API'yi uygulamalıdır.
7.2. Giriş Cihazları
Cihaz uygulamaları:
- [C-0-1] Kullanıcı arayüzü öğeleri arasında gezinmek için dokunmatik ekran veya dokunmatik olmayan gezinme gibi bir giriş mekanizması İÇERMELİDİR.
7.2.1. Klavye
Cihaz uygulamaları, üçüncü taraf giriş yöntemi düzenleyici (IME) uygulamaları için destek içeriyorsa:
- [C-1-1]
android.software.input_methods
özellik bayrağı BEYAN EDİLMELİDİR. - [C-1-2]
Input Management Framework
tam olarak uygulanmalıdır. - [C-1-3] Önceden yüklenmiş bir yazılım klavyesi OLMALIDIR.
Cihaz uygulamaları: * [C-0-1] android.content.res.Configuration.keyboard içinde belirtilen biçimlerden biriyle (QWERTY veya 12 tuşlu) eşleşmeyen bir donanım klavyesi İÇERMEMELİDİR. * Ek yazılım klavyesi uygulamaları İÇERMELİDİR. * Donanım klavyesi İÇEREBİLİR.
7.2.2. Dokunmadan gezinme
Android, dokunmatik olmayan gezinme için d-pad, trackball ve tekerlek mekanizmalarını destekler.
Cihaz uygulamaları:
- [C-0-1] android.content.res.Configuration.navigation için doğru değer RAPORLANMALIDIR.
Cihaz uygulamalarında dokunma dışı gezinme özellikleri yoksa:
- [C-1-1] Metin seçimi ve düzenlemesi için, Giriş Yönetimi Motorları ile uyumlu makul bir alternatif kullanıcı arayüzü mekanizması SAĞLANMALIDIR. Yukarı akış Android açık kaynak uygulaması, dokunma dışı gezinme girişleri olmayan cihazlarla kullanıma uygun bir seçim mekanizması içerir.
7.2.3. Gezinme Tuşları
Genellikle özel bir fiziksel düğmeyle veya dokunmatik ekranın ayrı bir bölümüyle etkileşim yoluyla sağlanan Ana Sayfa, Son Kullanılanlar ve Geri işlevleri, Android gezinme paradigması için gereklidir ve bu nedenle cihaz uygulamaları:
- [C-0-1] Televizyon cihaz uygulamaları için
<intent-filter>
,ACTION=MAIN
veCATEGORY=LAUNCHER
veyaCATEGORY=LEANBACK_LAUNCHER
ile ayarlanmış bir etkinliğe sahip yüklü uygulamaları başlatmak için kullanıcıya bir olanak SAĞLANMALIDIR. Bu kullanıcı kolaylığı için ana sayfa işlevi mekanizma OLMALIDIR. - Son Kullanılanlar ve Geri işlevleri için düğmeler SAĞLANMALIDIR.
Ana Sayfa, Son Öğeler veya Geri işlevleri sağlanıyorsa bunlar:
- [C-1-1] Herhangi biri erişilebilir olduğunda tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir OLMALIDIR.
- [C-1-2] Her bir işlevi hangi tek eylemin tetikleyeceği net bir şekilde belirtilmelidir. Düğmeye basılmış görünür bir simge, ekranın gezinme çubuğu bölümünde bir yazılım simgesi gösterme veya kutudan çıkarma kurulum deneyimi sırasında kullanıcıya adım adım rehberli bir demo akışı sunma gibi yöntemler bu tür bir göstergeye örnek olarak verilebilir.
Cihaz uygulamaları:
- Android 4.0'dan beri işlem çubuğu lehine desteği sonlandırıldığından [SR]'nin Menü işlevi için giriş mekanizması sağlamAMASI ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Menü işlevini sağlıyorsa:
- [C-2-1] İşlem taşması menüsü pop-up'ı boş olmadığında ve işlem çubuğu görünür olduğunda işlem taşması düğmesi GÖSTERİLMELİDİR.
- [C-2-2] İşlem çubuğundaki taşma düğmesi seçilerek görüntülenen işlem taşması pop-up'ının konumu DEĞİŞTİRİLMEMELİDİR ancak Menü işlevi seçilerek görüntülendiğinde işlem taşması pop-up'ı ekranda değiştirilmiş bir konumda oluşturulabilir.
Cihaz uygulamaları Menü işlevini sağlamıyorsa geriye dönük uyumluluk için:
- [C-3-1]
targetSdkVersion
değeri 10'dan küçük olduğunda Menü işlevini fiziksel bir düğme, yazılım tuşu veya hareketler aracılığıyla uygulamalarda KULLANILABİLİR hale GETİRMELİDİR. Bu menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmediği sürece erişilebilir olmalıdır.
Cihaz uygulamaları Yardımcı işlevini sağlıyorsa:
- [C-4-1] Diğer gezinme tuşlarına erişilebiliyorsa YARDIMCI işlevine tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir.
- [SR] Bu etkileşim için ANA SAYFA işlevine uzun basma KULLANMANIZ ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, gezinme tuşlarını göstermek için ekranın ayrı bir bölümünü kullanıyorsa:
- [C-5-1] Gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANMALI ve uygulamalar tarafından kullanılabilen ekran bölümünü kapatMAMALI veya başka bir şekilde engellememelidir.
- [C-5-2] Ekranın bir bölümünü, bölüm 7.1.1'de tanımlanan koşulları karşılayan uygulamaların kullanımına SUNMALIDIR.
- [C-5-3] Ekranın bu ayrı bölümünün (diğer adıyla gezinme çubuğu) SDK'da belgelendiği şekilde düzgün bir şekilde gizlenmesi için uygulamanın
View.setSystemUiVisibility()
API yöntemiyle ayarladığı işaretlere UYULMALIDIR.
Gezinme işlevi ekranda hareket tabanlı bir işlem olarak sağlanıyorsa:
- [C-6-1]
WindowInsets#getMandatorySystemGestureInsets()
YALNIZCA Ana Sayfa hareketi tanıma alanını bildirmek için kullanılmalıdır. - [C-6-2] Ön plan uygulaması tarafından
View#setSystemGestureExclusionRects()
aracılığıyla sağlanan ancakWindowInsets#getMandatorySystemGestureInsets()
dışında 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 engellenmemelidir. - [C-6-3] Ön plandaki uygulamaya daha önce bir
MotionEvent.ACTION_DOWN
etkinliği gönderilmişse sistem hareketi için dokunmalar yakalanmaya başlandığında ön plandaki uygulamaya birMotionEvent.ACTION_CANCEL
etkinliği GÖNDERİLMELİDİR. - [C-6-4] Ekran üzerinde düğme tabanlı bir gezinmeye geçiş için kullanıcıya olanak TANINMALIDIR (örneğin, Ayarlar'da).
- Ana Sayfa işlevi, ekranın mevcut yönlendirmesinin alt kenarından yukarı kaydırılarak sağlanmalıdır.
- Yayınlanmadan önce, Ana Sayfa hareketiyle aynı alanda, yukarı kaydırıp basılı tutarak Son Kullanılanlar işlevini SUNMALIDIR.
WindowInsets#getMandatorySystemGestureInsets()
içinde başlayan hareketler, ön plan uygulaması tarafındanView#setSystemGestureExclusionRects()
aracılığıyla sağlanan dışlama dikdörtgenlerinden ETKİLENMEMELİDİR.
Ekranın mevcut yönlendirmesinin sol ve sağ kenarlarının herhangi bir yerinden gezinme işlevi sağlanıyorsa:
- [C-7-1] Gezinme işlevi GERİ olmalı ve ekranın mevcut yönünün hem sol hem de sağ kenarından kaydırma hareketiyle sağlanmalıdır.
- [C-7-2] Sol veya sağ kenarlarda özel kaydırılabilir sistem panelleri varsa bunlar ekranın üst 1/3'lük kısmına yerleştirilmeli ve sürükleyerek içeri alma işleminin yukarıda belirtilen panelleri (Geri değil) açacağını gösteren net ve kalıcı bir görsel işaret bulunmalıdır. Bir sistem paneli, ekran kenarlarının üst 1/3'lük kısmının altında kalacak şekilde kullanıcı tarafından yapılandırılabilir ancak sistem paneli, kenarların 1/3'ünden daha uzun olmamalıdır.
- [C-7-3] Ön plandaki uygulamada
View.SYSTEM_UI_FLAG_IMMERSIVE
veyaView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
işaretleri ayarlandığında, kenarlardan kaydırma işlemi SDK'da belgelenen AOSP'de uygulandığı şekilde çalışmalıdır. - [C-7-4] Ön plandaki uygulamada
View.SYSTEM_UI_FLAG_IMMERSIVE
veyaView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
işaretleri ayarlandığında, kullanıcı AOSP'de uygulandığı şekilde sistem çubuklarını (diğer adıyla 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ş sistemleri için destek içerir. Dokunmatik ekran tabanlı cihaz uygulamaları, kullanıcıya ekrandaki öğeleri doğrudan kontrol ediyormuş izlenimi verecek şekilde bir ekranla ilişkilendirilir. Kullanıcı ekrana doğrudan dokunduğu için sistem, üzerinde işlem yapılan nesneleri belirtmek için ek bir çaba gerektirmez.
Cihaz uygulamaları:
- Bir tür işaretçi giriş sistemi (fare benzeri veya dokunmatik) OLMALIDIR.
- Tamamen bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.
Cihaz uygulamaları, Android ile uyumlu birincil ekranda dokunmatik ekran (tek dokunuş veya daha iyi) içeriyorsa:
- [C-1-1]
Configuration.touchscreen
API alanı içinTOUCHSCREEN_FINGER
raporlanmalıdır. - [C-1-2]
android.hardware.touchscreen
veandroid.hardware.faketouch
özellik işaretleri BİLDİRİLMELİDİR.
Cihaz uygulamaları, Android ile uyumlu birincil ekranda tek bir dokunuştan fazlasını takip edebilen bir dokunmatik ekran içeriyorsa:
- [C-2-1] Cihazdaki dokunmatik ekranın türüne karşılık gelen uygun özellik işaretlerini
android.hardware.touchscreen.multitouch
,android.hardware.touchscreen.multitouch.distinct
,android.hardware.touchscreen.multitouch.jazzhand
bildirmelidir.
Cihaz uygulamaları, birincil Android uyumlu ekranda giriş için fare veya trackball gibi harici bir giriş cihazına (yani ekrana doğrudan dokunulmaz) dayanıyorsa ve 7.2.5 bölümündeki sahte dokunma şartlarını karşılıyorsa:
- [C-3-1]
android.hardware.touchscreen
ile başlayan hiçbir özellik işaretini bildirmemelidir. - [C-3-2] Yalnızca
android.hardware.faketouch
raporlanmalıdır. - [C-3-3]
Configuration.touchscreen
API alanı içinTOUCHSCREEN_NOTOUCH
raporlanmalıdır.
7.2.5. Sahte Dokunmatik Giriş
Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesini taklit eden bir kullanıcı girişi sistemi sağlar. Örneğin, ekrandaki imleci hareket ettiren bir fare veya uzaktan kumanda, dokunma etkisini taklit eder ancak kullanıcının önce işaret etmesini veya odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresini, jiroskop işaretçisi, oyun çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı sahte dokunma etkileşimlerini destekleyebilir. Android, dokunmaya dayalı girişi (temel hareket desteği dahil) yeterli düzeyde taklit edebilen ve cihazın dokunmatik ekran işlevselliğinin taklit edilmiş bir alt kümesini desteklediğini belirten, fare veya izleme paneli gibi yüksek doğruluklu dokunmatik olmayan (işaretçi tabanlı) bir giriş cihazına karşılık gelen android.hardware.faketouch özelliğini içerir.
Cihaz uygulamaları dokunmatik ekran içermiyorsa ancak kullanılabilir hale getirmek istedikleri başka bir işaretçi giriş sistemi içeriyorsa:
android.hardware.faketouch
özellik işaretinin desteklendiğini BEYAN ETMELİDİR.
Cihaz uygulamaları android.hardware.faketouch
desteğini beyan ediyorsa:
- [C-1-1] İmleç konumunun mutlak X ve Y ekran konumları RAPORLANMALI ve ekranda görsel bir imleç gösterilmelidir.
- [C-1-2] Ekranda aşağı veya yukarı hareket eden işaretçide meydana gelen durum değişikliğini belirten işlem koduyla dokunma etkinliği RAPORLANMALIDIR.
- [C-1-3] Ekranda bir nesneye dokunma ve nesneyi bırakma hareketleri desteklenmelidir. Bu sayede kullanıcılar, ekrandaki bir nesneye dokunma hareketini taklit edebilir.
- [C-1-4] Kullanıcıların ekrandaki bir nesneye çift dokunmayı taklit etmesine olanak tanıyan bir süre eşiği içinde, ekrandaki bir nesnenin aynı yerinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketlerini desteklemelidir.
- [C-1-5] Kullanıcıların dokunarak sürükleme hareketini taklit etmesine olanak tanıyan, ekrandaki rastgele bir noktada işaretçi aşağı, ekrandaki başka bir rastgele noktaya işaretçi hareket ettirme ve ardından işaretçi yukarı hareketlerini desteklemelidir.
- [C-1-6] İşaretçi aşağı hareketini desteklemeli, ardından kullanıcıların nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ekranda işaretçi yukarı hareketini yapmasına izin vermelidir. Bu sayede kullanıcılar ekrandaki bir nesneyi fırlatabilir.
Cihaz uygulamaları android.hardware.faketouch.multitouch.distinct
desteğini beyan ediyorsa:
- [C-2-1]
android.hardware.faketouch
desteği BEYAN EDİLMELİDİR. - [C-2-2] İki veya daha fazla bağımsız işaretçi girişinin ayrı ayrı izlenmesi DESTEKLENMELİDİR.
Cihaz uygulamaları android.hardware.faketouch.multitouch.jazzhand
desteğini beyan ediyorsa:
- [C-3-1]
android.hardware.faketouch
desteği BEYAN EDİLMELİDİR. - [C-3-2] 5 (parmaklı bir eli takip etme) veya daha fazla işaretçi girişinin tamamen bağımsız olarak ayrı ayrı izlenmesini DESTEKLEMELİDİR.
7.2.6. Oyun Kumandası Desteği
7.2.6.1. Düğme Eşlemeleri
Cihaz uygulamaları:
- [C-1-1] HID etkinliklerini aşağıdaki tablolarda listelenen ilgili
InputEvent
sabitlerine eşleyebilmelidir. Yukarı akış Android uygulaması bu şartı karşılar.
Cihaz uygulamaları, aşağıdaki tablolarda listelenen tüm etkinliklerin girilmesini sağlayacak bir kumanda yerleştiriyorsa veya kutuda ayrı bir kumandayla birlikte gönderiliyorsa:
- [C-2-1] Özellik işaretini BEYAN ETMELİDİR
android.hardware.gamepad
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 sol1 D-pad sağ1 |
0x01 0x00393 | AXIS_HAT_X4 |
Sol omuz düğmesi1 | 0x09 0x0007 | KEYCODE_BUTTON_L1 (102) |
Sağ üst kenar düğmesi1 | 0x09 0x0008 | KEYCODE_BUTTON_R1 (103) |
Sol çubuğu tıklama1 | 0x09 0x000E | KEYCODE_BUTTON_THUMBL (106) |
Sağ çubuğu tıklama1 | 0x09 0x000F | KEYCODE_BUTTON_THUMBR (107) |
Ev1 | 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) beyan edilmelidir.
3 Bu kullanımın mantıksal minimum değeri 0, mantıksal maksimum değeri 7, fiziksel minimum değeri 0, fiziksel maksimum değeri 315, birimi derece ve rapor boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde dönüş olarak tanımlanır. Örneğin, 0 mantıksal değeri dönüş olmadığını ve yukarı düğmesine basıldığını, 1 mantıksal değeri ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını gösterir.
Analog Kontroller1 | HID Kullanımı | Android 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 Bölüm 2.3.1'e bakın.
7.3. Sensörler
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa cihaz uygulaması, bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulamalıdır.
Cihaz uygulamaları:
- [C-0-1]
android.content.pm.PackageManager
sınıfına göre sensörlerin varlığını veya yokluğunu doğru bir şekilde bildirmelidir. - [C-0-2]
SensorManager.getSensorList()
ve benzeri yöntemlerle desteklenen sensörlerin doğru bir listesini döndürmelidir. - [C-0-3] Diğer tüm sensör API'leri için makul şekilde 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ğırmayarak vb.).
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa:
- [C-1-1] Android SDK belgelerinde tanımlandığı şekilde, her sensör türü için ilgili Uluslararası Birimler Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini bildirmelidir.
- [C-1-2] Uygulama işlemcisi etkin olduğunda, maksimum istenen gecikme süresi 0 ms olan bir sensör akışı için sensör verilerini maksimum 100 milisaniye + 2 * sample_time gecikme süresiyle BİLDİRMELİDİR. Bu gecikmeye filtreleme gecikmeleri dahil değildir.
- [C-1-3] Etkinleştirilen sensörün ilk sensör örneği, 400 milisaniye + 2 * sample_time içinde RAPORLANMALIDIR. Bu örnekte doğruluk değerinin 0 olması kabul edilebilir.
- [C-1-4] Android SDK belgelerinde sürekli sensör olduğu belirtilen tüm API'ler için cihaz uygulamaları, aralıklı olarak veri örnekleri sağlamaya DEVAM ETMELİDİR. Bu örneklerde, jitter'ın %3'ün altında olması GEREKİR. Jitter, bildirilen zaman damgası değerlerinin ardışık etkinlikler arasındaki farkının standart sapması olarak tanımlanır.
- [C-1-5] SENSÖR ETKİNLİK AKIŞININ, CİHAZ CPU'SUNUN ASKIYA ALMA DURUMUNA GİRMESİNİ VEYA ASKIYA ALMA DURUMUNDAN UYANMASINI ENGELLEMEMESİ GEREKİR.
- [C-1-6] Etkinliğin gerçekleştiği ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edildiği zamanı temsil eden, Android SDK belgelerinde tanımlandığı şekilde etkinlik zamanını nanosaniye cinsinden bildirmelidir.
- [C-SR] Zaman damgası senkronizasyon hatasının 100 milisaniyenin altında olması ŞİDDETLE TAVSİYE EDİLİR ve zaman damgası senkronizasyon hatasının 1 milisaniyenin altında olması GEREKİR.
- Birden fazla sensör etkinleştirildiğinde güç tüketimi, tek tek sensörlerin bildirilen güç tüketiminin toplamını AŞMAMALIDIR.
Yukarıdaki liste kapsamlı değildir. Android SDK'nın belgelenmiş davranışı ve sensörler ile ilgili Android Açık Kaynak Belgeleri yetkili olarak kabul edilir.
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa:
- [C-1-6] Tüm sensörler için sıfır olmayan bir çözünürlük AYARLANMALI ve değer,
Sensor.getResolution()
API yöntemiyle bildirilmelidir.
Bazı sensör türleri bileşiktir. Bu türler, bir veya daha fazla sensörün sağladığı verilerden elde edilebilir. (Örneğin, yön sensörü ve doğrusal ivme sensörü.)
Cihaz uygulamaları:
- Sensör türleri bölümünde açıklandığı gibi ön koşul olan fiziksel sensörleri içerdiğinde bu sensör türlerini uygulamalıdır.
Cihaz uygulamaları birleşik sensör içeriyorsa:
- [C-2-1] Sensörü, bileşik sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulamalıdır.
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa ve sensör yalnızca bir değer bildiriyorsa cihaz uygulamaları:
- [C-3-1] Sensörün çözünürlüğü 1 olarak ayarlanmalı ve değer
Sensor.getResolution()
API yöntemiyle bildirilmelidir.
Cihaz uygulamaları, SensorAdditionalInfo#TYPE_VEC3_CALIBRATION'ı destekleyen belirli bir sensör türü içeriyorsa ve sensör üçüncü taraf geliştiricilere sunuluyorsa:
- [C-4-1] Sağlanan verilerde sabit, fabrikada belirlenmiş kalibrasyon parametreleri bulunmamalıdır.
Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü veya manyetometre sensörü kombinasyonunu içeriyorsa:
- [C-SR] İvme ölçer, jiroskop ve manyetometrenin sabit bir göreceli konuma sahip olması ŞİDDETLE TAVSİYE EDİLİR.Böylece cihaz dönüştürülebilir (ör. katlanabilir) olsa bile sensör eksenleri, olası tüm cihaz dönüştürme durumlarında sensör koordinat sistemiyle uyumlu ve tutarlı kalır.
7.3.1. İvme ölçer
Cihaz uygulamaları:
- [C-SR] 3 eksenli ivme ölçer İÇERMESİ KESİNLİKLE ÖNERİLİR.
Cihaz uygulamalarında 3 eksenli ivme ölçer varsa:
- [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
- [C-1-2]
TYPE_ACCELEROMETER
sensörünü uygulamalı ve raporlamalıdır. - [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.
- [C-1-4] Herhangi bir eksende serbest düşüşten yerçekiminin dört katına(4g) veya daha fazlasına kadar ölçüm yapabilmelidir.
- [C-1-5] En az 12 bit çözünürlüğe SAHİP OLMALIDIR.
- [C-1-6] Standart sapması en fazla 0,05 m/sn^ olmalıdır.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen bazında hesaplanmalıdır.
- [SR]
TYPE_SIGNIFICANT_MOTION
bileşik sensörünün uygulanması KESİNLİKLE TAVSİYE EDİLİR. - [SR] cihazların
TYPE_ACCELEROMETER_UNCALIBRATED
sensörünü uygulaması ve raporlaması ŞİDDETLE TAVSİYE EDİLİR. Bu koşulu karşılayabilmeleri ve bu koşulun ZORUNLU olabileceği gelecekteki platform sürümüne yükseltebilmeleri için Android cihazların kullanılması ŞİDDETLE TAVSİYE EDİLİR. - Android SDK dokümanında açıklandığı şekilde
TYPE_SIGNIFICANT_MOTION
,TYPE_TILT_DETECTOR
,TYPE_STEP_DETECTOR
,TYPE_STEP_COUNTER
bileşik sensörleri uygulamalıdır. - En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.
- En az 16 bit çözünürlüğe SAHİP OLMALIDIR.
- Özellikler yaşam döngüsü boyunca değişirse kullanılmaktayken kalibre edilmeli ve telafi edilmeli, telafi parametreleri cihaz yeniden başlatıldığında korunmalıdır.
- Sıcaklık dengelenmelidir.
Cihaz uygulamalarında 3 eksenli bir ivmeölçer ve TYPE_SIGNIFICANT_MOTION
, TYPE_TILT_DETECTOR
, TYPE_STEP_DETECTOR
, TYPE_STEP_COUNTER
bileşik sensörlerinden herhangi biri uygulanıyorsa:
- [C-2-1] Güç tüketimlerinin toplamı HER ZAMAN 4 mW'tan az olmalıdır.
- Cihaz dinamik veya statik durumdayken her biri 2 mW ve 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 uygulamalıdır. - [C-SR]
TYPE_GAME_ROTATION_VECTOR
bileşik sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü ve manyetometre sensörü içeriyorsa:
- [C-4-1]
TYPE_ROTATION_VECTOR
bileşik sensör uygulaması ZORUNLUDUR.
7.3.2. Manyetometre
Cihaz uygulamaları:
- [C-SR] 3 eksenli manyetometre (pusula) içermesi KESİNLİKLE ÖNERİLİR.
Cihaz uygulamalarında 3 eksenli manyetometre varsa:
- [C-1-1]
TYPE_MAGNETIC_FIELD
sensörü UYGULANMALIDIR. - [C-1-2] Etkinlikleri en az 10 Hz sıklıkta raporlayabilmeli ve en az 50 Hz sıklıkta raporlamalıdır.
- [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.
- [C-1-4] Doygunluğa ulaşmadan önce her eksende -900 µT ile +900 µT arasında ölçüm yapabilmelidir.
- [C-1-5] Manyetometre, dinamik (akım kaynaklı) ve statik (mıknatıs kaynaklı) manyetik alanlardan uzağa yerleştirilerek 700 µT'den düşük bir sert demir dengeleme değerine SAHİP OLMALI ve 200 µT'nin altında bir değere SAHİP OLMALIDIR.
- [C-1-6] 0,6 µT'ye eşit veya daha yoğun bir çözünürlüğe SAHİP OLMALIDIR.
- [C-1-7] Sert demir sapmasının online kalibrasyonunu ve telafisini DESTEKLEMELİ ve telafi parametrelerini cihaz yeniden başlatmaları arasında KORUMALIDIR.
- [C-1-8] Yumuşak demir telafisi uygulanmalıdır. Kalibrasyon, cihaz kullanılırken veya ü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 hesaplanan standart sapma en fazla 1, 5 µT OLMALIDIR; standart sapma en fazla 0, 5 µT OLMALIDIR.
- [C-SR]
TYPE_MAGNETIC_FIELD_UNCALIBRATED
sensörünün uygulanması ÖNEMLE TAVSİYE EDİLİR.
Cihaz uygulamaları 3 eksenli manyetometre, ivme ölçer sensörü ve 3 eksenli jiroskop sensörü içeriyorsa:
- [C-2-1]
TYPE_ROTATION_VECTOR
bileşik sensörü uygulamalıdır.
Cihaz uygulamalarında 3 eksenli manyetometre ve ivme ölçer varsa:
TYPE_GEOMAGNETIC_ROTATION_VECTOR
sensörünü UYGULAYABİLİR.
Cihaz uygulamalarında 3 eksenli manyetometre, ivme ölçer ve TYPE_GEOMAGNETIC_ROTATION_VECTOR
sensörü varsa:
- [C-3-1] 10 mW'tan daha az güç tüketmelidir.
- Sensör, 10 Hz'de toplu mod için kaydedildiğinde 3 mW'tan daha az güç tüketmelidir.
7.3.3. GPS
Cihaz uygulamaları:
- [C-SR] GPS/GNSS alıcısı içermesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa:
- [C-1-1]
LocationManager#requestLocationUpdate
üzerinden istendiğinde konum çıkışlarını en az 1 Hz hızında destekLEMELİDİR. - [C-1-2] 0,5 Mb/sn veya daha hızlı bir veri hızıyla internet bağlantısı kurulduğunda, açık hava koşullarında (güçlü sinyaller, ihmal edilebilir çok yollu yayılım, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı süre) konum belirleyebilmelidir. Bu koşul genellikle GPS/GNSS kilitleme süresini en aza indirmek için bir tür Destekli veya Tahmini GPS/GNSS tekniği kullanılarak karşılanır (Yardım verileri; Referans Zaman, Referans Konum ve Uydu Efemerisi/Saati içerir).
- [C-1-6] Bu tür bir konum hesaplaması yapıldıktan sonra, cihaz uygulamaları, konum istekleri yeniden başlatıldığında, ilk konum hesaplamasından sonraki bir saat içinde, sonraki istek veri bağlantısı olmadan ve/veya güç döngüsünden sonra bile açık havada konumunu 5 saniye içinde belirlemelidir.
-
Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 1 metrekareden daha az ivmeyle hareket ederken:
- [C-1-3] Konumu en az% 95 oranında 20 metre, hızı ise 0, 5 metre/saniye içinde belirleyebilmelidir.
- [C-1-4] Bir takımyıldızdan en az 8 uyduyu aynı anda
GnssStatus.Callback
üzerinden izlemeli ve raporlamalıdır. - Birden fazla takımyıldızdan (ör. GPS + Glonass, Beidou, Galileo'dan en az biri) en az 24 uyduyu aynı anda takip edebilmelidir.
- [C-SR] Acil durum telefon görüşmesi sırasında GNSS Konum Sağlayıcı API'leri aracılığıyla normal GPS/GNSS konum çıkışları sağlamaya devam etmeleri ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] SBAS hariç olmak üzere, izlenen tüm takımyıldızlardan gelen GNSS ölçümlerinin (GnssStatus mesajlarında bildirildiği gibi) bildirilmesi KESİNLİKLE ÖNERİLİR.
- [C-SR] AGC ve GNSS ölçüm sıklığının bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Tüm doğruluk tahminlerinin (Yön, Hız ve Dikey dahil) her GPS/GNSS konumunun bir parçası olarak bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile, GNSS ölçümlerinin bulunur bulunmaz bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekareden daha az ivmeyle hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıklarını ve sahte aralık hızlarını en az% 95 oranında bildirmeleri ŞİDDETLE TAVSİYE EDİLİR.
7.3.4. Jiroskop
Cihaz uygulamaları:
- [C-SR] Jiroskop sensörü İÇERMESİ ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 3 eksenli jiroskop varsa:
- [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
- [C-1-2]
TYPE_GYROSCOPE
sensörünü UYGULAMALIDIR veTYPE_GYROSCOPE_UNCALIBRATED
sensörünü de UYGULAMASI ŞİDDETLE TAVSİYE EDİLİR. - [C-1-4] Çözünürlük 12 bit veya daha yüksek OLMALIDIR ve 16 bit veya daha yüksek OLMASI GEREKİR.
- [C-1-5] Sıcaklık dengelenmelidir.
- [C-1-6] Kullanım sırasında KALİBRE EDİLMELİ ve telafi edilmeli, cihaz yeniden başlatıldığında telafi parametreleri 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 OLMAMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle sınırlanması ZORUNLUDUR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
- [SR] Cihaz oda sıcaklığında sabitken kalibrasyon hatasının 0,01 rad/sn'den az olması ŞİDDETLE TAVSİYE EDİLİR.
- En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.
Cihaz uygulamaları 3 eksenli jiroskop, ivme ölçer sensörü ve manyetometre sensörü içeriyorsa:
- [C-2-1]
TYPE_ROTATION_VECTOR
bileşik sensörü uygulamalıdır.
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 uygulamalıdır. - [C-SR]
TYPE_GAME_ROTATION_VECTOR
bileşik sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.
7.3.5. Barometre
Cihaz uygulamaları:
- [C-SR] Barometre (ortam hava basıncı sensörü) içermesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları barometre içeriyorsa:
- [C-1-1]
TYPE_PRESSURE
sensörü uygulanmalı ve raporlanmalıdır. - [C-1-2] Etkinlikler 5 Hz veya daha yüksek bir sıklıkta yayınlanmalıdır.
- [C-1-3] Sıcaklık dengelenmelidir.
- [SR] 300 hPa ile 1.100 hPa aralığındaki basınç ölçümlerini raporlayabilmek için KESİNLİKLE ÖNERİLİR.
- 1 hPa mutlak doğruluğa SAHİP OLMALIDIR.
- 20 hPa aralığında 0,12 hPa göreceli doğruluğa sahip OLMALIDIR (deniz seviyesinde ~200 m değişiklikte ~1 m doğruluğa eşdeğer).
7.3.6. Termometre
Cihaz uygulamalarında ortam termometresi (sıcaklık sensörü) varsa:
- [C-1-1] Ortam sıcaklığı sensörü için
SENSOR_TYPE_AMBIENT_TEMPERATURE
TANIMLANMALIDIR ve sensör, kullanıcının cihazla etkileşim kurduğu ortamın (oda/araç kabini) sıcaklığını santigrat derece cinsinden ÖLÇMELİDİR.
Cihaz uygulamaları, ortam sıcaklığı dışında bir sıcaklığı (ör. CPU sıcaklığı) ölçen bir termometre sensörü içeriyorsa:
- [C-2-1] Sıcaklık sensörü için
SENSOR_TYPE_AMBIENT_TEMPERATURE
tanımlanMAMALIDIR.
7.3.7. Fotometre
- Cihaz uygulamaları, fotometre (ortam ışığı sensörü) içerebilir.
7.3.8. Yakınlık Sensörü
- Cihaz uygulamaları yakınlık sensörü içerebilir.
Cihaz uygulamalarında yakınlık sensörü varsa:
- [C-1-1] Bir nesnenin yakınlığını ekranla aynı yönde ÖLÇMELİDİR. Yani, bu sensör türünün asıl amacı kullanıcının kullandığı telefonu algılamak olduğundan yakınlık sensörü, ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Cihaz uygulamalarında başka bir yöne bakan yakınlık sensörü varsa bu sensöre bu API aracılığıyla erişilememelidir.
- [C-1-2] Doğruluk değeri en az 1 bit 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 bir sensör grubu içeriyorsa ve bunları üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
android.hardware.sensor.hifi_sensors
özellik bayrağı aracılığıyla özelliği TANIMLAMALIDIR.
Cihaz uygulamaları android.hardware.sensor.hifi_sensors
beyan ediyorsa:
-
[C-2-1] Aşağıdaki özelliklere sahip bir
TYPE_ACCELEROMETER
sensörü OLMALIDIR:- Ölçüm aralığı en az -8g ile +8g arasında OLMALIDIR ve ölçüm aralığının en az -16g ile +16g arasında olması ŞİDDETLE TAVSİYE EDİLİR.
- En az 2.048 LSB/g ölçüm çözünürlüğüne SAHİP OLMALIDIR.
- En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı
RATE_VERY_FAST
destekLEMELİDİR. - 400 μg/√Hz'den fazla ölçüm gürültüsüne sahip OLMAMALIDIR.
- Bu sensörün, en az 3.000 sensör etkinliğini arabelleğe alma özelliğine sahip, uyandırma içermeyen bir biçimini uygulamalıdır.
- 3 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- Oda sıcaklığında test edildiğinde 30 μg √Hz'den daha az bir ivme rastgele yürüyüşüne SAHİP OLMALIDIR.
- Sıcaklığa karşı ≤ +/- 1 mg/°C'lik bir sapma değişikliği OLMALIDIR.
- En iyi uyum doğrusallık dışı değeri ≤ %0,5 ve sıcaklığa karşı hassasiyet değişimi ≤ %0,03/C° olmalıdır.
- Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyeti < %2,5 ve eksenler arası hassasiyet varyasyonu < %0,2 OLMALIDIR.
-
[C-2-2]
TYPE_ACCELEROMETER_UNCALIBRATED
,TYPE_ACCELEROMETER
ile aynı kalite koşullarına sahip OLMALIDIR. -
[C-2-3] Aşağıdaki özelliklere sahip bir
TYPE_GYROSCOPE
sensörü OLMALIDIR:- En az -1000 ile +1000 dps arasında bir ölçüm aralığı OLMALIDIR.
- En az 16 LSB/dps ölçüm çözünürlüğüne SAHİP OLMALIDIR.
- En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı
RATE_VERY_FAST
destekLEMELİDİR. - Ölçüm gürültüsü 0,014°/s/√Hz'den fazla OLMAMALIDIR.
- [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- Oda sıcaklığında test edildiğinde 0,001 °/s √Hz'den daha düşük bir hız rastgele yürüyüşüne SAHİP OLMALIDIR.
- Sıcaklığa karşı ≤ +/- 0,05 °/ s / °C değerinde bir sapma değişikliği OLMALIDIR.
- Sıcaklığa karşı ≤ %0,02 / °C hassasiyet değişikliği OLMALIDIR.
- En iyi uyum doğrusu doğrusal olmama değeri ≤ %0,2 OLMALIDIR.
- ≤ 0,007 °/s/√Hz gürültü yoğunluğuna SAHİP OLMALIDIR.
- Cihaz sabitken 10-40 °C sıcaklık aralığında kalibrasyon hatası 0,002 rad/sn'den az OLMALIDIR.
- 0,1°/sn/g'den daha az g hassasiyetine SAHİP OLMALIDIR.
- Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyeti < %4,0 ve eksenler arası hassasiyet değişimi < %0,3 OLMALIDIR.
-
[C-2-4]
TYPE_GYROSCOPE_UNCALIBRATED
,TYPE_GYROSCOPE
ile aynı kalite koşullarına sahip OLMALIDIR. -
[C-2-5] Aşağıdaki özelliklere sahip bir
TYPE_GEOMAGNETIC_FIELD
sensörü OLMALIDIR:- En az -900 ile +900 μT arasında bir ölçüm aralığı OLMALIDIR.
- En az 5 LSB/uT ölçüm çözünürlüğüne sahip OLMALIDIR.
- En az 5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 50 Hz veya daha yüksek OLMALIDIR.
- Ölçüm gürültüsü 0,5 uT'yi geçmemelidir.
-
[C-2-6]
TYPE_MAGNETIC_FIELD_UNCALIBRATED
,TYPE_GEOMAGNETIC_FIELD
ile aynı kalite koşullarına sahip OLMALI ve ayrıca:- En az 600 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırmayan bir biçimini uygulamalıdır.
- [C-SR] Rapor hızı 50 Hz veya daha yüksek olduğunda 1 Hz'den en az 10 Hz'ye kadar beyaz gürültü spektrumu olması ŞİDDETLE TAVSİYE EDİLİR.
-
[C-2-7] Aşağıdaki özelliklere sahip bir
TYPE_PRESSURE
sensörü OLMALIDIR:- En az 300 ile 1.100 hPa arasında bir ölçüm aralığı OLMALIDIR.
- En az 80 LSB/hPa ölçüm çözünürlüğüne SAHİP OLMALIDIR.
- En az 1 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 10 Hz veya daha yüksek OLMALIDIR.
- 2 Pa/√Hz'yi aşmayan bir ölçüm gürültüsüne SAHİP OLMALIDIR.
- En az 300 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırma içermeyen bir biçimini uygulamalıdır.
- 2 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-2-8]
TYPE_GAME_ROTATION_VECTOR
sensörü OLMALIDIR. - [C-2-9] Aşağıdaki özelliklere sahip bir
TYPE_SIGNIFICANT_MOTION
sensörü OLMALIDIR:- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- [C-2-10] Aşağıdaki özelliklere sahip bir
TYPE_STEP_DETECTOR
sensörü OLMALIDIR:- En az 100 sensör etkinliğinin arabelleğe alınabileceği, bu sensörün uyandırma içermeyen bir biçimi UYGULANMALIDIR.
- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- 4 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-2-11] Aşağıdaki özelliklere sahip bir
TYPE_STEP_COUNTER
sensörü OLMALIDIR:- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- [C-2-12] Aşağıdaki özelliklere sahip bir
TILT_DETECTOR
sensörü OLMALIDIR:- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- [C-2-13] İvmeölçer, jiroskop ve manyetometre tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 2,5 milisaniye içinde OLMALIDIR. İvmeölçer ve jiroskop tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 0,25 milisaniye içinde OLMALIDIR.
- [C-2-14] Jiroskop sensörü etkinliklerinin zaman damgaları, kamera alt sistemiyle aynı zaman tabanında ve 1 milisaniye hata payı içinde OLMALIDIR.
- [C-2-15] Veriler yukarıdaki fiziksel sensörlerden herhangi birinde uygulamaya sunulduktan sonraki 5 milisaniye içinde uygulamalara örnekler sunULMALIDIR.
- [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz statik durumdayken güç tüketimi 0,5 mW'tan, hareket hâlindeyken ise 2,0 mW'tan yüksek OLMAMALIDIR:
-
SENSOR_TYPE_SIGNIFICANT_MOTION
-
SENSOR_TYPE_STEP_DETECTOR
-
SENSOR_TYPE_STEP_COUNTER
-
SENSOR_TILT_DETECTORS
-
- [C-2-17]
TYPE_PROXIMITY
sensörü OLABİLİR ancak varsa minimum 100 sensör etkinliği arabellek kapasitesine SAHİP 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, destekleyici devreler, özel sensör işleme sistemi vb. gibi tüm sensör zincirinin çektiği gücü içerir.
Cihaz uygulamaları doğrudan sensör desteği içeriyorsa:
- [C-3-1]
isDirectChannelTypeSupported
vegetHighestDirectReportRateLevel
API'si aracılığıyla doğrudan kanal türleri ve doğrudan raporlama hızı düzeyinin desteğini DOĞRU şekilde bildirmelidir. - [C-3-2] Sensör doğrudan kanalını desteklediğini belirten tüm sensörler için iki sensör doğrudan kanal türünden en az birini DESTEKLEMELİDİR.
- Aşağıdaki türlerdeki 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. Biyometrik Sensörler
Biyometrik Kilit Açma Güvenliğini Ölçme hakkında daha fazla bilgi için lütfen Biyometrik Güvenliği Ölçme dokümanlarına bakın.
Cihaz uygulamaları güvenli bir kilit ekranı içeriyorsa:
- Biyometrik sensör İÇERMELİDİR.
Biyometrik sensörler, sahtecilik ve kimliğe bürünme kabul oranlarına ve biyometrik işlem hattının 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 Kolaylık) olarak sınıflandırılabilir. Bu sınıflandırma, biyometrik sensörün platform ve üçüncü taraf uygulamalarıyla etkileşim kurmak için sahip olması gereken özellikleri belirler. Sensörler varsayılan olarak 1. Sınıf olarak sınıflandırılır ve 2. Sınıf veya 3. Sınıf olarak sınıflandırılmak isteniyorsa aşağıda ayrıntılı olarak açıklanan ek şartları karşılaması gerekir. Hem 2. Sınıf hem de 3. Sınıf biyometrik verileri, aşağıda ayrıntılı olarak açıklanan ek özellikler kazanır.
Cihaz uygulamaları, android.hardware.biometrics.BiometricManager, android.hardware.biometrics.BiometricPrompt ve android.provider.Settings.ACTION_BIOMETRIC_ENROLL aracılığıyla üçüncü taraf uygulamalarına biyometrik sensör sunuyorsa:
- [C-4-1] Bu belgede tanımlandığı şekilde 3. Sınıf veya 2. Sınıf biyometri şartlarını KARŞILAMALIDIR.
- [C-4-2] Authenticators sınıfında sabit olarak tanımlanan her parametre adını ve bunların tüm kombinasyonlarını tanımalı ve bunlara uymalıdır. Aksine, canAuthenticate(int) ve setAllowedAuthenticators(int) yöntemlerine iletilen ve Authenticators'da herkese açık sabitler olarak belgelenenler ile bunların herhangi bir kombinasyonu dışında kalan tam sayı sabitlerini kabul etmemeli veya tanımamalıdır.
- [C-4-3] 3. Sınıf veya 2. Sınıf biyometriye sahip cihazlarda ACTION_BIOMETRIC_ENROLL işlemi UYGULANMALIDIR. Bu işlem YALNIZCA 3. Sınıf veya 2. Sınıf biyometri için kayıt giriş noktalarını sunmalıdır.
Cihaz uygulamaları pasif biyometriyi destekliyorsa:
- [C-5-1] Varsayılan olarak ek bir onay adımı (ör. düğmeye basma) GEREKLİ OLMALIDIR.
- [C-SR] Kullanıcıların uygulama tercihlerini geçersiz kılmasına izin veren ve her zaman onay adımı gerektiren bir ayar OLMASI ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Onay işleminin, işletim sistemi veya çekirdek ihlali tarafından sahteciliğe karşı korunması ŞİDDETLE TAVSİYE EDİLİR. Örneğin, bu, fiziksel bir düğmeye dayalı onay işleminin, güvenli öğenin (SE) yalnızca giriş için kullanılan genel amaçlı bir giriş/çıkış (GPIO) pimi üzerinden yönlendirildiği anlamına gelir. Bu pim, fiziksel bir düğmeye basma dışında başka bir şekilde çalıştırılamaz.
- [C-5-2] Ek olarak, uygulamaların oturum açma akışlarında kullanmak üzere ayarlayabileceği setConfirmationRequired(boolean) işlevine karşılık gelen, onay adımı içermeyen örtülü bir kimlik doğrulama akışı UYGULAMALIDIR.
Cihaz uygulamalarında birden fazla biyometrik sensör varsa:
- [C-SR] Kimlik doğrulama başına yalnızca bir biyometrik verinin onaylanması ŞİDDETLE TAVSİYE EDİLİR (ör. cihazda hem parmak izi hem de yüz sensörleri varsa bunlardan herhangi biri onaylandıktan sonra onAuthenticationSucceeded gönderilmelidir).
Cihaz uygulamalarının, üçüncü taraf uygulamaların anahtar deposu anahtarlarına erişmesine izin vermesi için:
- [C-6-1] Aşağıdaki bu bölümde tanımlandığı şekilde 3. Sınıf şartlarını KARŞILAMALIDIR.
- [C-6-2] Kimlik doğrulama için BIOMETRIC_STRONG gerekliyse veya kimlik doğrulama bir CryptoObject ile çağrılıyorsa YALNIZCA 3. Sınıf biyometrik veriler sunulmalıdır.
Cihaz uygulamaları, biyometrik sensörü 1. Sınıf (eski adıyla Kolaylık) olarak değerlendirmek istiyorsa:
- [C-1-1] YANLIŞ KABUL ORANI %0,002'den az OLMALIDIR.
- [C-1-2] Android Biyometri Test Protokolleri ile ölçüldüğünde sahtecilik ve kimliğe bürünme kabul oranları% 7'den yüksekse bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceği ve etkinleştirmenin riskleri açıkça belirtilmelidir.
- [C-1-3] Biyometrik doğrulama için beş başarısız denemeden sonra deneme sıklığına en az 30 saniye sınırlama GETİRİLMELİDİR. Başarısız deneme, kayıtlı bir biyometrik veriyle eşleşmeyen, yeterli yakalama kalitesine (
BIOMETRIC_ACQUIRED_GOOD
) sahip bir denemedir. - [C-1-4] Kullanıcının mevcut bir cihaz kimliğini (PIN/desen/şifre) onaylamasını veya TEE ile güvenli hale getirilmiş yeni bir cihaz kimliği eklemesini sağlayarak önce güven zinciri oluşturmadan yeni biyometrik verilerin eklenmesini ENGELLEMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
- [C-1-5] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama dahil) kullanıcının tanımlanabilir tüm biyometrik verileri tamamen kaldırmalıdır.
- [C-1-6] Söz konusu biyometri için bireysel işaretleme (ör.
DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT
,DevicePolicymanager.KEYGUARD_DISABLE_FACE
veyaDevicePolicymanager.KEYGUARD_DISABLE_IRIS
) KABUL EDİLMELİDİR. - [C-1-7] Android 10 sürümüyle kullanıma sunulan yeni cihazlarda 24 saatte bir veya daha kısa sürede, önceki Android sürümlerinden yükseltme yapılan cihazlarda ise 72 saatte bir veya daha kısa sürede kullanıcıdan önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) yöntemiyle kimliğini doğrulaması İSTENİR.
-
[C-1-8] Aşağıdakilerden biri gerçekleştiğinde kullanıcıdan önerilen birincil kimlik doğrulama yöntemini (ör. PIN, desen, şifre) kullanmasını İ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ının ardından boşta kalma zaman aşımı süresi ve başarısız kimlik doğrulama sayısı sıfırlanır.
Cihazları daha eski bir Android sürümünden yükseltme işlemi C-1-8'den muaf tutulabilir. * [C-SR] Yeni cihazlarda [C-1-7] ve [C-1-8] içinde belirtilen kısıtlamaları zorunlu kılmak için Android Açık Kaynak Projesi tarafından sağlanan çerçevedeki mantığın kullanılması ŞİDDETLE TAVSİYE EDİLİR. * [C-SR] Cihazda ölçüldüğü üzere %10'dan düşük bir yanlış ret oranına sahip olması ŞİDDETLE TAVSİYE EDİLİR. * [C-SR] Kayıtlı her biyometrik için, biyometriğin algılanmasından ekranın kilidinin açılmasına kadar geçen sürenin 1 saniyeden kısa olması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, biyometrik sensörü 2. Sınıf (eski adıyla Zayıf) olarak değerlendirmek istiyorsa:
- [C-2-1] Yukarıdaki 1. Sınıf için tüm şartları karşılamalıdır.
- [C-2-2] Android Biometrics Test Protocols (Android Biyometri Test Protokolleri) ile ölçüldüğünde, sahtecilik ve kimliğe bürünme kabul oranı% 20'den yüksek OLMAMALIDIR.
- [C-2-3] Biyometrik eşleştirme, Android kullanıcı veya çekirdek alanının dışında, güvenilir yürütme ortamı (TEE) gibi izole bir yürütme ortamında ya da izole yürütme ortamına güvenli bir kanal sağlayan bir çip üzerinde YAPILMALIDIR.
- [C-2-4] Tüm tanımlanabilir veriler, Android Open Source Project sitesindeki uygulama yönergelerinde belirtildiği gibi, izole yürütme ortamı veya izole yürütme ortamına güvenli kanal içeren bir çip dışında elde edilemeyecek, okunamayacak veya değiştirilemeyecek şekilde şifrelenmeli ve kriptografik olarak doğrulanmalıdır.
- [C-2-5] Kameraya dayalı biyometrik veriler için, biyometriye dayalı kimlik doğrulama veya kayıt işlemi gerçekleşirken:
- Kamerayı, kamera karelerinin yalıtılmış yürütme ortamı veya yalıtılmış yürütme ortamına güvenli kanal içeren bir çip dışında okunmasını ya da değiştirilmesini engelleyen bir modda ÇALIŞTIRMAK ZORUNLUDUR.
- RGB tek kameralı çözümlerde, kayıt için önizleme gibi işlemleri desteklemek amacıyla kamera çerçeveleri yalıtılmış yürütme ortamının dışında okunabilir ancak yine de değiştirilemez.
- [C-2-6] Üçüncü taraf uygulamalarının, biyometrik kayıtlar arasında ayrım yapmasına İZİN VERİLMEMELİDİR.
- [C-2-7] TEE bağlamı dışında, tanımlanabilir biyometrik verilere veya bunlardan türetilen verilere (ör. yerleştirmeler) Uygulama İşlemcisi'ne şifrelenmemiş erişime İZİN VERİLMEMELİDİR.
-
[C-2-8] İşletim sistemi veya çekirdek güvenliğinin ihlal edilmesi durumunda verilerin doğrudan eklenerek kullanıcı olarak kimlik doğrulamasının yanlış yapılmasını engelleyecek güvenli bir işleme hattına SAHİP OLMALIDIR.
Cihaz uygulamaları daha önceki bir Android sürümünde kullanıma sunulduysa ve sistem yazılımı güncellemesiyle C-2-8 şartını karşılayamıyorsa şarttan MUAF TUTULABİLİR.
-
[C-SR] Tüm biyometrik yöntemler için canlılık algılama ve yüz biyometrisi için dikkat algılama özelliklerinin eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, biyometrik sensörü 3. Sınıf (eski adıyla Güçlü) olarak değerlendirmek istiyorsa:
- [C-3-1] [C-1-7] ve [C-1-8] hariç olmak üzere yukarıdaki 2. Sınıf'ın tüm şartlarını karşılamalıdır. Cihazları daha eski bir Android sürümünden yükseltme işlemi yapanlar C-2-7'den muaf tutulmaz.
- [C-3-2] Donanım destekli bir anahtar deposu uygulaması OLMALIDIR.
- [C-3-3] Android Biometrics Test Protocols (Android Biyometri Test Protokolleri) ile ölçüldüğünde, sahtecilik ve kimliğe bürünme kabul oranı% 7'den yüksek OLMAMALIDIR.
- [C-3-4] Kullanıcıya, önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için 72 saatte bir veya daha kısa aralıklarla meydan OKUMALIDIR.
7.3.12. Poz Sensörü
Cihaz uygulamaları:
- 6 serbestlik derecesiyle poz sensörünü DESTEKLEYEBİLİR.
Cihaz uygulamaları 6 serbestlik dereceli duruş sensörünü destekliyorsa:
- [C-1-1]
TYPE_POSE_6DOF
sensörünü uygulamalı ve raporlamalıdır. - [C-1-2] Yalnızca dönüş vektöründen daha doğru OLMALIDIR.
7.3.13. Menteşe Açısı Sensörü
Cihaz uygulamaları menteşe açısı sensörünü destekliyorsa:
- [C-1-1]
TYPE_HINGLE_ANGLE
uygulanmalı ve raporlanmalıdır. - [C-1-2] 0 ile 360 derece (0 ve 360 derece dahil) arasında en az iki okuma desteklenmelidir.
- [C-1-3]
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)
için uyandırma sensörü DÖNDÜRMELİDİR.
7.4. Veri Bağlantısı
7.4.1. Telefon Hizmeti
Android API'leri ve bu belgede kullanılan "Telefon Hizmetleri" terimi, özellikle GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanımı ifade eder. Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak Android açısından aynı ağ kullanılarak uygulanabilecek veri bağlantısından bağımsız olarak kabul edilir. Başka bir deyişle, Android'deki "telefon" işlevi ve API'ler özellikle sesli aramalar ve SMS ile ilgilidir. Örneğin, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarına bakılmaksızın arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, telefon işlevi olan 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 özelliğini içeriyorsa:
- [C-1-1]
android.hardware.telephony
özellik bayrağını ve diğer alt özellik bayraklarını teknolojiye göre BİLDİRMELİDİR. - [C-1-2] Söz konusu teknoloji için API'ye tam destek uygulamalıdır.
Cihaz uygulamaları telefon donanımı içermiyorsa:
- [C-2-1] MUST implement the full APIs as no-ops.
Cihaz uygulamaları eUICC'leri veya eSIM'leri/gömülü SIM'leri destekliyorsa ve eSIM işlevini üçüncü taraf geliştiricilerin kullanımına sunmak için tescilli bir mekanizma içeriyorsa:
- [C-3-1]
EuiccManager API
'ın eksiksiz bir uygulaması SAĞLANMALIDIR.
7.4.1.1. Numara Engelleme Uyumluluğu
Cihaz uygulamaları android.hardware.telephony feature
değerini bildiriyorsa:
- [C-1-1] Numara engelleme desteği İÇERMELİDİR.
- [C-1-2] SDK dokümanlarında açıklandığı gibi
BlockedNumberContract
ve ilgili API'yi eksiksiz bir şekilde uygulamalıdır. - [C-1-3] "BlockedNumberProvider"daki bir telefon numarasından gelen tüm aramalar ve mesajlar, uygulamalarla etkileşim olmadan ENGELLENMELİDİR. Tek istisna, SDK dokümanlarında açıklandığı gibi numara engellemenin geçici olarak kaldırıldığı durumdur.
- [C-1-4] Engellenen bir arama için platform arama kaydı sağlayıcısına yazılMAMALIDIR.
- [C-1-5] Engellenen bir mesaj için Telefon hizmeti sağlayıcısına yazılMAMALIDIR.
- [C-1-6]
TelecomManager.createManageBlockedNumbersIntent()
yöntemi tarafından döndürülen amaçla açılan, engellenen numaraların yönetimi için bir kullanıcı arayüzü uygulamalıdır. - [C-1-7] Android platformu, birincil kullanıcının cihazdaki tek bir örnek olan telefon hizmetleri üzerinde tam kontrol sahibi olduğunu varsaydığından, ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERİLMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzü, ikincil kullanıcılar için GİZLENMELİ ve engellenenler listesine uyulmaya DEVAM EDİLMELİDİR.
- Bir 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
bildiriyorsa:
- [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 devam eden bir görüşmedeyken yeni bir gelen aramayı GÖSTERMELİ ve kullanıcıya gelen aramayı kabul etme veya reddetme olanağı SUNMALIDIR. - [C-1-3] InCallService'i uygulayan bir uygulamaya SAHİP OLMALIDIR.
-
[C-SR] Gelen bir aramaya yanıt vermenin devam eden bir aramayı sonlandıracağını kullanıcıya bildirmesi ŞİDDETLE TAVSİYE EDİLİR.
AOSP uygulaması, kullanıcının gelen bir aramayı yanıtlaması durumunda diğer aramanın sonlandırılacağını belirten bir uyarı bildirimiyle bu şartları karşılar.
-
[C-SR] Üçüncü taraf uygulaması,
PhoneAccount
üzerindekiEXTRA_LOG_SELF_MANAGED_CALLS
ekstralar anahtarınıtrue
olarak ayarladığında arama günlüğünde arama günlüğü girişi ve üçüncü taraf uygulamasının adını gösteren varsayılan çevirici uygulamasının önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] Aşağıdaki gibi
android.telecom
API'leri için ses kulaklığınınKEYCODE_MEDIA_PLAY_PAUSE
veKEYCODE_HEADSETHOOK
etkinliklerini işlemesi ŞİDDETLE TAVSİYE EDİLİR:- Devam eden bir arama sırasında önemli etkinliğe kısa basma algılandığında
Connection.onDisconnect()
işlevini çağırın. - Gelen arama sırasında önemli etkinliğe kısa basma algılandığında
Connection.onAnswer()
işlevini çağırır. - Gelen arama sırasında önemli etkinliğe uzun basma işlemi algılandığında
Connection.onReject()
işlevini çağırın. CallAudioState
simgesinin sesi kapatma durumunu değiştirin.
- Devam eden bir arama sırasında önemli etkinliğe kısa basma algılandığında
7.4.2. IEEE 802.11 (Kablosuz)
Cihaz uygulamaları:
- 802.11'in bir veya daha fazla biçimi için destek İÇERMELİDİR.
Cihaz uygulamaları 802.11 desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1] Karşılık gelen Android API'yi uygulamalıdır.
- [C-1-2] Donanım özelliği işaretini
android.hardware.wifi
bildirmelidir. - [C-1-3] SDK belgelerinde açıklandığı gibi çoklu yayın API'si uygulanmalıdır.
- [C-1-4] Çoklu yayın DNS'yi (mDNS) DESTEKLEMELİ ve mDNS paketlerini (224.0.0.251) aşağıdakiler dahil olmak üzere çalışma süresince HİÇBİR ZAMAN filtrelememelidir:
- Ekran etkin durumda olmasa bile.
- Android Television cihaz uygulamaları için (bekleme güç durumundayken bile).
- [C-1-5]
WifiManager.enableNetwork()
API yöntemi çağrısı, uygulama trafiği için varsayılan olarak kullanılan vegetActiveNetwork
ileregisterDefaultNetworkCallback
gibiConnectivityManager
API yöntemleri tarafından döndürülen, şu anda etkin olanNetwork
'ı değiştirmek için yeterli bir gösterge olarak değerlendirilmemelidir. Başka bir deyişle, yalnızca kablosuz ağın internet erişimi sağladığını başarıyla doğrularlarsa diğer ağ sağlayıcılar (ör. mobil veri) tarafından sağlanan internet erişimini devre dışı bırakabilirler. - [C-1-6]
ConnectivityManager.reportNetworkConnectivity()
API yöntemi çağrıldığındaNetwork
üzerindeki internet erişimini yeniden değerlendirmeleri ve değerlendirme sonucunda mevcutNetwork
'ün artık internet erişimi sağlamadığı belirlendiğinde internet erişimi sağlayan başka bir kullanılabilir ağa (ör. hücresel veri) geçmeleri ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] STA bağlantısı kesilmişken her taramanın başında bir kez olmak üzere, kaynak MAC adresinin ve araştırma isteği çerçevelerinin sıra numarasının rastgele hale getirilmesi ŞİDDETLE TAVSİYE EDİLİR.
- Bir taramayı oluşturan her bir araştırma isteği çerçevesi grubu, tutarlı bir MAC adresi kullanmalıdır (MAC adresi, taramanın ortasında rastgele hale GETİRİLMEMELİDİR).
- Yoklama isteği sıra numarası, taramadaki yoklama istekleri arasında normal şekilde (sırayla) tekrarlanmalıdır.
- Yoklama isteği sıra numarası, bir taramanın son yoklama isteği ile bir sonraki taramanın ilk yoklama isteği arasında rastgele olmalıdır.
- STA bağlantısı kesilmişken yalnızca aşağıdaki öğelerin araştırma isteği çerçevelerinde kullanılması için [C-SR] ŞİDDETLE TAVSİYE EDİLİR:
- SSID Parametre Seti (0)
- DS Parametre Kümesi (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
veyaWIFI_MODE_FULL_LOW_LATENCY
kilidi aldığında ve kilit etkin olduğunda Wi-Fi güç tasarrufu modu KAPATILMALIDIR. - [C-3-2] Cihaz, düşük gecikmeli kablosuz bağlantı kilidi (
WIFI_MODE_FULL_LOW_LATENCY
) modundayken cihaz ile erişim noktası arasındaki ortalama gidiş dönüş gecikmesi, yüksek performanslı kablosuz bağlantı kilidi (WIFI_MODE_FULL_HIGH_PERF
) modundaki gecikmeden daha az OLMALIDIR. - [C-SR] Düşük gecikme kilidi (
WIFI_MODE_FULL_LOW_LATENCY
) alındığında ve geçerli olduğunda Wi-Fi gidiş dönüş gecikmesini en aza indirmek için ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları kablosuz ağ özelliğini destekliyorsa ve konum taraması için kablosuz ağ kullanıyorsa:
- [C-2-1]
WifiManager.isScanAlwaysAvailable
API yöntemiyle okunan değerin etkinleştirilmesi/devre dışı bırakılması için kullanıcıya bir olanak SAĞLANMALIDIR.
7.4.2.1. Kablosuz Doğrudan Bağlantı
Cihaz uygulamaları:
- Wi-Fi Direct (Wi-Fi eşler arası) desteği OLMALIDIR.
Cihaz uygulamaları Wi-Fi Direct desteği içeriyorsa:
- [C-1-1] SDK belgelerinde açıklandığı şekilde ilgili Android API'sini uygulamalıdır.
- [C-1-2]
android.hardware.wifi.direct
donanım özelliği RAPORLANMALIDIR. - [C-1-3] Normal kablosuz bağlantı çalışmasını DESTEKLEMELİDİR.
- [C-1-4] Aynı anda kablosuz ve kablosuz doğrudan işlemlerini desteklemelidir.
7.4.2.2. Wi-Fi Tunneled Direct Link Setup
Cihaz uygulamaları:
- Android SDK Dokümanlarında açıklandığı gibi Wi-Fi Tunneled Direct Link Setup (TDLS) desteği İÇERMELİDİR.
Cihaz uygulamaları TDLS desteği içeriyorsa ve TDLS, WiFiManager API'si tarafından etkinleştirilmişse:
- [C-1-1]
WifiManager.isTdlsSupported
üzerinden TDLS desteği beyan EDİLMELİDİR. - TDLS'yi YALNIZCA mümkün OLDUĞUNDA ve faydalı OLDUĞUNDA kullanmalıdır.
- Performansı kablosuz erişim noktası üzerinden gitmekten daha kötü olabileceği durumlarda sezgisel bir yaklaşıma sahip OLMALI ve TDLS KULLANMAMALIDIR.
7.4.2.3. Wi-Fi Aware
Cihaz uygulamaları:
- Wi-Fi Aware desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Aware desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
WifiAwareManager
API'lerini SDK belgelerinde açıklandığı şekilde uygulamalıdır. - [C-1-2]
android.hardware.wifi.aware
özellik bayrağı BEYAN EDİLMELİDİR. - [C-1-3] MUST support Wi-Fi and Wi-Fi Aware operations concurrently.
- [C-1-4] MUST randomize the Wi-Fi Aware management interface address at intervals no longer than 30 minutes and whenever Wi-Fi Aware is enabled unless an Aware ranging operation is ongoing or an Aware data-path is active (randomization is not expected for as long as the data-path is active).
Cihaz uygulamaları, Bölüm 7.4.2.5'te açıklandığı gibi Wi-Fi Aware ve Wi-Fi Konum desteği içeriyorsa ve bu işlevleri üçüncü taraf uygulamalarına sunuyorsa:
- [C-2-1] Konum algılamaya yönelik keşif API'leri (setRangingEnabled, setMinDistanceMm, setMaxDistanceMm ve onServiceDiscoveredWithinRange) uygulanmalıdır.
7.4.2.4. Wi-Fi Passpoint
Cihaz uygulamaları 802.11 (Kablosuz) desteği içeriyorsa:
- Wi-Fi Passpoint desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Passpoint desteği içeriyorsa:
- [C-1-2] MUST implement the Passpoint related
WifiManager
APIs as described in the SDK documentation. - [C-1-3] IEEE 802.11u standardını, özellikle de Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi Ağ Keşfi ve Seçimi ile ilgili olarak DESTEKLEMELİDİR.
Aksine, cihaz uygulamaları Wi-Fi Passpoint desteği içermiyorsa:
- [C-2-1] Passpoint ile ilgili
WifiManager
API'lerinin uygulanmasıUnsupportedOperationException
istisnası oluşturmalıdır.
7.4.2.5. Kablosuz Konum (Kablosuz Gidiş Dönüş Süresi - RTT)
Cihaz uygulamaları:
- Kablosuz konum desteği İÇERMELİDİR.
Cihaz uygulamaları, kablosuz konum desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
WifiRttManager
API'lerini SDK dokümanlarında açıklandığı şekilde uygulamalıdır. - [C-1-2]
android.hardware.wifi.rtt
özellik bayrağı BEYAN EDİLMELİDİR. - [C-1-3] RTT'nin yürütüldüğü kablosuz arayüzü bir erişim noktasıyla ilişkilendirilmemişken yürütülen her RTT patlaması için kaynak MAC adresi rastgele hale GETİRİLMELİDİR.
7.4.2.6. Kablosuz bağlantıyı etkin tutma aktarımı
Cihaz uygulamaları:
- Wi-Fi keepalive offload desteği İÇERMELİDİR.
Cihaz uygulamaları, Wi-Fi keepalive offload desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
-
[C-1-1] SocketKeepAlive API'si DESTEKLENMELİDİR.
-
[C-1-2] Wi-Fi üzerinden en az üç eşzamanlı etkin tutma yuvasını ve hücresel üzerinden en az bir etkin tutma yuvasını DESTEKLEMELİDİR.
Cihaz uygulamaları, Wi-Fi keepalive offload'u desteklemiyorsa:
- [C-2-1]
ERROR_UNSUPPORTED
döndürmelidir.
7.4.2.7. Wi-Fi Easy Connect (Cihaz Temel Hazırlığı Protokolü)
Cihaz uygulamaları:
- Wi-Fi Easy Connect (DPP) desteği İÇERMELİDİR.
Cihaz uygulamaları, Wi-Fi Easy Connect desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1] WifiManager#isEasyConnectSupported() yöntemi
true
değerini döndürmelidir.
7.4.3. Bluetooth
Cihaz uygulamaları Bluetooth Ses profilini destekliyorsa:
- Gelişmiş ses codec'lerini ve Bluetooth ses codec'lerini (ör. LDAC) DESTEKLEMELİDİR.
Cihaz uygulamaları HFP, A2DP ve AVRCP'yi destekliyorsa:
- Toplamda en az 5 bağlı cihazı DESTEKLEMELİDİR.
Cihaz uygulamaları android.hardware.vr.high_performance
özelliğini beyan ediyorsa:
- [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı desteklenmelidir.
Android, Bluetooth ve Bluetooth Düşük Enerji'yi destekler.
Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:
- [C-2-1] İlgili platform özelliklerini (sırasıyla
android.hardware.bluetooth
veandroid.hardware.bluetooth_le
) BEYAN ETMELİ ve platform API'lerini uygulamalıdır. - Cihaza uygun şekilde A2DP, AVRCP, OBEX, HFP gibi alakalı Bluetooth profillerini uygulamalıdır.
Cihaz uygulamaları Bluetooth Düşük Enerji (BLE) desteği içeriyorsa:
- [C-3-1]
android.hardware.bluetooth_le
donanım özelliğini BEYAN ETMELİDİR. - [C-3-2] SDK dokümanlarında ve android.bluetooth'ta açıklandığı gibi GATT (genel özellik profili) tabanlı Bluetooth API'leri ETKİNLEŞTİRİLMELİDİR.
- [C-3-3] ScanFilter API sınıfları için filtreleme mantığının uygulanıp uygulanmadığını belirtmek üzere
BluetoothAdapter.isOffloadedFilteringSupported()
için doğru değeri RAPORLAMALIDIR. - [C-3-4] Düşük Enerjili Reklamcılığın desteklenip desteklenmediğini belirtmek için
BluetoothAdapter.isMultipleAdvertisementSupported()
için doğru değeri RAPORLAMALIDIR. - [C-3-5] Cihaz, tarama veya reklam için BLE'yi etkin olarak 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ında adresi döndürmelidir. Zamanlama saldırılarını önlemek için zaman aşımı aralıkları da 5 ile 15 dakika arasında rastgele belirlenmelidir.
- ScanFilter API uygulanırken filtreleme mantığının Bluetooth yonga setine aktarılması DESTEKLENMELİDİR.
- Toplu taramanın Bluetooth yonga setine aktarılması DESTEKLENMELİDİR.
- En az 4 yerleşimle birden fazla reklamı desteklemelidir.
Cihaz uygulamaları Bluetooth LE'yi destekliyorsa ve konum taraması için Bluetooth LE'yi kullanıyorsa:
- [C-4-1] Sistem API'si
BluetoothAdapter.isBleScanAlwaysAvailable()
aracılığıyla okunan değerin etkinleştirilmesi/devre dışı bırakılması için kullanıcıya bir olanak SAĞLANMALIDIR.
Cihaz uygulamaları, Bluetooth LE Kullanarak İşitme Cihazı Ses Desteği bölümünde açıklandığı gibi Bluetooth LE ve İşitme Cihazları Profili desteği içeriyorsa:
- [C-5-1] BluetoothAdapter.getProfileProxy(context, listener, BluetoothProfile.HEARING_AID) için
true
döndürmelidir.
7.4.4. Near-Field Communications
Cihaz uygulamaları:
- Yakın alan iletişimi (NFC) için bir alıcı-verici ve ilgili donanım İÇERMELİDİR.
- [C-0-1]
android.nfc.NdefMessage
veandroid.nfc.NdefRecord
API'leri, NFC desteği içermese veyaandroid.hardware.nfc
özelliğini beyan etmese bile uygulamalıdır. Bunun nedeni, sınıfların protokolden bağımsız bir veri gösterimi biçimini temsil etmesidir.
Cihaz uygulamaları NFC donanımı içeriyorsa ve bu donanımı üçüncü taraf uygulamalarına sunmayı planlıyorsa:
- [C-1-1]
android.content.pm.PackageManager.hasSystemFeature()
yöntemindenandroid.hardware.nfc
özelliğini raporlaması ZORUNLUDUR. - Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarını okuyup yazabilmelidir:
- [C-1-2] Aşağıdaki NFC standartları aracılığıyla NFC Forum okuyucu/yazıcı (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0'da tanımlandığı gibi) olarak işlev görebilmelidir:
- NfcA (ISO14443-3A)
- NfcB (ISO14443-3B)
- NfcF (JIS X 6319-4)
- IsoDep (ISO 14443-4)
- NFC Forum Etiket Türleri 1, 2, 3, 4, 5 (NFC Forum tarafından tanımlanır)
-
[SR] Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarının yanı sıra ham verileri de okuyup yazabilmesi KESİNLİKLE ÖNERİLİR. NFC standartlarının ŞİDDETLE TAVSİYE EDİLEN olarak belirtildiğini ancak gelecekteki bir sürümün Uyumluluk Tanımı'nda bunların ZORUNLU olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları hemen karşılamaları önemle tavsiye edilir.
-
[C-1-13] NFC keşif modundayken desteklenen tüm teknolojiler için yoklama YAPILMALIDIR.
- Cihaz uyanıkken, ekran etkin durumdayken ve kilit ekranı açıkken NFC keşif modunda OLMALIDIR.
- Thinfilm NFC Barcode ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.
Yukarıda belirtilen JIS, ISO ve NFC Forum spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.
Android, NFC ana kart emülasyonu (HCE) modunu destekler.
Cihaz uygulamaları, HCE (NfcA ve/veya NfcB için) özellikli bir NFC denetleyici yonga seti içeriyorsa ve uygulama kimliği (AID) yönlendirmesini destekliyorsa:
- [C-2-1]
android.hardware.nfc.hce
özelliği sabiti RAPORLANMALIDIR. - [C-2-2] Android SDK'da tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.
Cihaz uygulamaları, NfcF için HCE'yi destekleyen bir NFC denetleyici yonga seti içeriyorsa ve özelliği üçüncü taraf uygulamaları için uyguluyorsa:
- [C-3-1]
android.hardware.nfc.hcef
özelliği sabiti RAPORLANMALIDIR. - [C-3-2] Android SDK'da tanımlandığı şekilde NfcF Card Emulation API'leri uygulanmalıdır.
Cihaz uygulamaları bu bölümde açıklandığı gibi genel NFC desteği içeriyorsa ve okuyucu/yazıcı rolünde MIFARE teknolojilerini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:
- [C-4-1] İlgili Android API'lerini Android SDK'sında belgelendiği şekilde uygulamalıdır.
- [C-4-2]
android.content.pm.PackageManager.hasSystemFeature
() yöntemindencom.nxp.mifare
özelliğini RAPORLAMALIDIR. Bunun standart bir Android özelliği olmadığını ve bu nedenleandroid.content.pm.PackageManager
sınıfında sabit olarak görünmediğini unutmayın.
7.4.5. Ağ protokolleri ve API'ler
7.4.5.1. Minimum Ağ İşlevi
Cihaz uygulamaları:
- [C-0-1] Bir veya daha fazla veri ağı biçimi için destek içermelidir. Daha net bir ifadeyle, cihaz uygulamaları en az 200 Kbit/sn veya daha yüksek hızda veri standardını desteklemelidir. Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet ve Bluetooth PAN verilebilir.
- Fiziksel bir ağ standardı (ör. Ethernet) birincil veri bağlantısı olduğunda 802.11 (kablosuz) gibi en az bir yaygın kablosuz veri standardı için de destek içermelidir.
- Birden fazla veri bağlantısı biçimi uygulayabilir.
7.4.5.2. IPv6
Cihaz uygulamaları:
- [C-0-2]
java.net.Socket
vejava.net.URLConnection
gibi yönetilen API'lerin yanı sıraAF_INET6
yuvaları gibi yerel API'leri kullanarak IPv6 iletişimini desteklemeli ve bir IPv6 ağ yığını içermelidir. - [C-0-3] Varsayılan olarak IPv6'yı etkinleştirmelidir.
- IPv6 iletişiminin IPv4 kadar güvenilir olmasını SAĞLAMALIDIR. Örneğin:
- [C-0-4] Uyku modunda IPv6 bağlantısı SÜRDÜRÜLMELİDİR.
- [C-0-5] Hız sınırlama, en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu ağlarda cihazın IPv6 bağlantısını kaybetmesine NEDEN OLMAMALIDIR.
- [C-0-6] IPv6 ağına bağlandığında, cihazda yerel olarak herhangi bir adres veya bağlantı noktası çevirisi yapılmadan üçüncü taraf uygulamalarına ağa doğrudan IPv6 bağlantısı SAĞLANMALIDIR. Hem
Socket#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 kullanılan ve internet (web) sunucularına kaynak IP ve bağlantı noktası olarak görünen IP adresini ve bağlantı noktasını DÖNDÜRMELİDİR.
Gerekli IPv6 desteği düzeyi, aşağıdaki şartlarda gösterildiği gibi ağ türüne bağlıdır.
Cihaz uygulamaları Wi-Fi'yi destekliyorsa:
- [C-1-1] Kablosuz ağda çift yığınlı ve yalnızca IPv6 çalışmasını DESTEKLEMELİDİR.
Cihaz uygulamaları Ethernet'i destekliyorsa:
- [C-2-1] Ethernet'te çift yığınlı ve yalnızca IPv6 çalışmasını DESTEKLEMELİDİR.
Cihaz uygulamaları hücresel veriyi destekliyorsa:
- [C-3-1] Hücresel bağlantıda IPv6 işlemini (yalnızca IPv6 ve muhtemelen çift yığın) desteklemelidir.
Cihaz uygulamaları birden fazla ağ türünü destekliyorsa (ör. Kablosuz ağ ve hücresel veri) kullanılıyorsa:
- [C-4-1] Cihaz aynı anda birden fazla ağ türüne bağlıyken her ağda yukarıdaki şartları aynı anda karşılamalıdır.
7.4.5.3. Giriş Portalları
Giriş portalı, internet erişimi elde etmek için oturum açılmasını gerektiren bir ağdır.
Cihaz uygulamaları android.webkit.Webview API
'nın eksiksiz bir uygulamasını sağlıyorsa:
- [C-1-1]
ACTION_CAPTIVE_PORTAL_SIGN_IN
amacını işlemek ve System APIConnectivityManager#startCaptivePortalApp(Network, Bundle)
çağrısında bu amacı göndererek giriş portalı giriş sayfasını göstermek için bir giriş portalı uygulaması SAĞLAMALIDIR. - [C-1-2] Cihaz hücresel/mobil ağ, kablosuz ağ, Ethernet veya Bluetooth dahil olmak üzere herhangi bir ağ türüne bağlandığında giriş portallarını algılamalı ve giriş portalı uygulaması üzerinden oturum açmayı desteklemelidir.
- [C-1-3] Cihaz, katı Gizli DNS modu kullanacak şekilde yapılandırıldığında, net metin DNS kullanarak bağlantı noktası sayfalarında oturum açmayı DESTEKLEMELİDİR.
- [C-1-4]
android.net.LinkProperties.getPrivateDnsServerName
veandroid.net.LinkProperties.isPrivateDnsActive
için SDK belgelerinde belirtildiği şekilde, açıkça captive portal ile iletişim kurmayan tüm ağ trafiği için şifrelenmiş DNS KULLANILMALIDIR. - [C-1-5] Kullanıcı bir captive portal'a giriş yaparken uygulamalar tarafından kullanılan varsayılan ağın (
ConnectivityManager.getActiveNetwork
,ConnectivityManager.registerDefaultNetworkCallback
tarafından döndürülen ve java.net.Socket gibi Java ağ API'leri ile connect() gibi yerel API'ler tarafından varsayılan olarak kullanılan) varsa internet erişimi sağlayan başka bir ağ olduğundan EMİN OLMALIDIR.
7.4.6. Senkronizasyon Ayarları
Cihaz uygulamaları:
- [C-0-1]
getMasterSyncAutomatically()
yönteminin "true" değerini döndürmesi için ana otomatik senkronizasyon ayarı varsayılan olarak açık OLMALIDIR.
7.4.7. Veri Tasarrufu
Cihaz uygulamaları, ölçülü bağlantı içeriyorsa:
- [SR] Veri tasarrufu modunun sağlanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları veri tasarrufu modunu sağlıyorsa:
- [C-1-1] SDK belgelerinde açıklandığı gibi
ConnectivityManager
sınıfındaki tüm API'leri desteklemelidir.
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ınlanmamalıdır.
7.4.8. Güvenlik Unsurları
Cihaz uygulamaları Open Mobile API özellikli güvenli öğeleri destekleyip üçüncü taraf uygulamalarına sunuyorsa:
-
[C-1-1]
android.se.omapi.SEService.getReaders()
API aracılığıyla kullanılabilir güvenli öğe okuyucular listelenmelidir. -
[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şaretleri BEYAN EDİLMELİDİR.
7.5. Kameralar
Cihaz uygulamaları en az bir kamera içeriyorsa:
- [C-1-1]
android.hardware.camera.any
özellik bayrağı BEYAN EDİLMELİDİR. - [C-1-2] Temel önizleme ve fotoğraf çekme amacıyla kamera açıkken bir uygulamanın, cihazdaki en yüksek çözünürlüklü kamera sensörünün ürettiği görüntülerin boyutuna eşit 3 RGBA_8888 bit eşlemi aynı anda ayırması GEREKİR.
- [C-1-3]
MediaStore.ACTION_IMAGE_CAPTURE
,MediaStore.ACTION_IMAGE_CAPTURE_SECURE
veyaMediaStore.ACTION_VIDEO_CAPTURE
amaçlarını işleyen önceden yüklenmiş varsayılan kamera uygulamasının, alıcı uygulamadaACCESS_FINE_LOCATION
yoksa görüntüyü alıcı uygulamaya göndermeden önce görüntü meta verilerindeki kullanıcı konumunu kaldırması ZORUNLUDUR.
7.5.1. Arka Kamera
Arka kamera, cihazın ekrana bakan tarafının tersinde bulunan bir kameradır. Yani cihazın uzak tarafındaki sahnelerin fotoğrafını çeker.
Cihaz uygulamaları:
- Arka kamera İÇERMELİDİR.
Cihaz uygulamaları en az bir arka kamera içeriyorsa:
- [C-1-1]
android.hardware.camera
veandroid.hardware.camera.any
özellik işaretini BİLDİRMELİDİR. - [C-1-2] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
- Kamera sürücüsünde (uygulama yazılımı için şeffaf) donanım veya yazılım otomatik odaklama özelliği OLMALIDIR.
- Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanımı OLABİLİR.
- Flaş İÇEREBİLİR.
Kamerada flaş varsa:
- [C-2-1] Bir
android.hardware.Camera.PreviewCallback
örneği Kamera önizleme yüzeyine kaydedilmişken, uygulama birCamera.Parameters
nesnesininFLASH_MODE_AUTO
veyaFLASH_MODE_ON
özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece flaş lambası YAKILMAMALIDIR. Bu kısıtlamanın, cihazın yerleşik sistem kamera uygulaması için değil, yalnızcaCamera.PreviewCallback
kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Kamera
Ön kamera, cihazın ekranıyla aynı tarafta bulunan bir kameradır. Genellikle kullanıcıyı görüntülemek için kullanılır (ör. video konferans ve benzeri uygulamalar).
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şaretini BİLDİRMELİDİR. - [C-1-2] En az VGA (640x480 piksel) çözünürlüğe sahip OLMALIDIR.
- [C-1-3] Ön kamerayı Camera API'nin varsayılanı olarak KULLANMAMALI ve cihazda tek kamera olsa bile API'yi ön kamerayı varsayılan arka kamera olarak kabul edecek şekilde YAPILANDIRMAMALIDIR.
- [C-1-4] Geçerli uygulama,
android.hardware.Camera.setDisplayOrientation()
yöntemi çağrısıyla Kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesi, uygulama tarafından belirtilen yöne göre yatay olarak yansıtılmalıdır. Aksine, mevcut uygulamaandroid.hardware.Camera.setDisplayOrientation()
yöntemi çağrısıyla Kamera ekranının döndürülmesini açıkça istemediğinde önizleme, cihazın varsayılan yatay ekseni boyunca yansıtılmalıdır. - [C-1-5] Uygulama geri çağırmalarına döndürülen veya medya depolama alanına kaydedilen son yakalanan hareketsiz görüntü ya da video akışları YANSITILMAMALIDIR.
- [C-1-6] MUST mirror the image displayed by the postview in the same manner as the camera preview image stream.
- Bölüm 7.5.1'de açıklandığı gibi, arkaya bakan kameralarda kullanılabilen özellikler (ör. otomatik odaklama, flaş vb.) İÇEREBİLİR.
Cihaz uygulamaları kullanıcı tarafından döndürülebiliyorsa (ör. ivmeölçer aracılığıyla otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak):
- [C-2-1] Kamera önizlemesi, cihazın mevcut yönüne göre yatay olarak aynalanmalıdır.
7.5.3. Harici Kamera
Cihaz uygulamaları:
- Her zaman bağlı olması gerekmeyen harici bir kamera için destek içerebilir.
Cihaz uygulamaları harici kamera desteği içeriyorsa:
- [C-1-1] MUST declare the platform feature flag
android.hardware.camera.external
andandroid.hardware camera.any
. - [C-1-2] Harici kamera USB ana bağlantı noktası üzerinden bağlanıyorsa USB Video Class (UVC 1.0 veya üzeri) desteklenmelidir.
- [C-1-3] Fiziksel bir harici kamera cihazı bağlıyken kamera CTS testlerini GEÇMELİDİR. Kamera CTS testiyle ilgili ayrıntıları source.android.com adresinde bulabilirsiniz.
- Yüksek kaliteli kodlanmamış akışların (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırmalarını DESTEKLEMELİDİR.
- MAY, birden fazla kamerayı destekleyebilir.
- Kameraya dayalı video kodlamayı DESTEKLEYEBİLİR.
Kameraya dayalı video kodlama destekleniyorsa:
- [C-2-1] Cihaz uygulamasında eşzamanlı olarak kodlanmamış / MJPEG akışı (QVGA veya daha yüksek çözünürlük) ERİŞİLEBİLMELİDİR.
7.5.4. Kamera API'sinin Davranışı
Android, kameraya erişmek için iki API paketi içerir. Daha yeni olan android.hardware.camera2 API, uygulamaya daha düşük düzeyde kamera kontrolü sunar. Bu kontrol; verimli sıfır kopyalı seri çekim/akış akışları ve pozlama, kazanç, beyaz dengesi kazançları, renk dönüştürme, gürültü azaltma, keskinleştirme gibi özelliklerin kare başına kontrolünü içerir.
Eski API paketi,android.hardware.Camera
, Android 5.0'da kullanımdan kaldırılmış olarak işaretlenir ancak uygulamaların kullanmaya devam edebilmesi gerekir. Android cihaz uygulamaları, bu bölümde ve Android SDK'da açıklandığı şekilde API'nin sürekli olarak desteklenmesini sağlamalıdır.
Kullanımdan kaldırılan android.hardware.Camera sınıfı ile daha yeni olan android.hardware.camera2 paketi arasındaki tüm ortak özellikler, her iki API'de de eşdeğer performans ve kaliteye sahip OLMALIDIR. Örneğin, eşdeğer ayarlarda otomatik odaklama hızı ve doğruluğu aynı olmalı, çekilen görüntülerin kalitesi de aynı olmalıdır. İki API'nin farklı semantiklerine bağlı özelliklerin eşleşen hıza veya kaliteye sahip olması gerekmez ancak mümkün olduğunca yakın olmalıdır.
Cihaz uygulamaları, mevcut tüm kameralar için kamerayla ilgili API'lerde aşağıdaki davranışları uygulamalıdır. Cihaz uygulamaları:
- [C-0-1] Bir uygulama hiçbir zaman
android.hardware.Camera.Parameters.setPreviewFormat(int)
'u çağırmadığında, uygulama geri çağırmalarına sağlanan önizleme verileri içinandroid.hardware.PixelFormat.YCbCr_420_SP
KULLANILMALIDIR. - [C-0-2] Bir uygulama
android.hardware.Camera.PreviewCallback
örneği kaydettiğinde, sistemonPreviewFrame()
yöntemini çağırdığında ve önizleme biçimi YCbCr_420_SP olduğunda,onPreviewFrame()
'ye geçirilen byte[] içindeki veriler de NV21 kodlama biçiminde OLMALIDIR. Yani NV21, varsayılan olmalıdır. - [C-0-3]
android.hardware.Camera
için hem ön hem de arka kameraların kamera önizlemelerinde YV12 biçimi (android.graphics.ImageFormat.YV12
sabitiyle gösterildiği gibi) DESTEKLENMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüştürmeyi DESTEKLEMELİDİR.) - [C-0-4]
android.request.availableCapabilities
bölgesindeREQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE
özelliğinin reklamını yapanandroid.hardware.camera2
cihazlar içinandroid.media.ImageReader
API'si aracılığıyla çıkış olarakandroid.hardware.ImageFormat.YUV_420_888
veandroid.hardware.ImageFormat.JPEG
biçimleri DESTEKLENMELİDİR. - [C-0-5] Cihazda donanım otomatik odaklama veya başka özellikler olup olmadığına bakılmaksızın, Android SDK dokümanlarında yer alan Camera API'nin tamamı uygulanmalıdır. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı
android.hardware.Camera.AutoFocusCallback
örneklerini yine de çağırmalıdır (bu, otomatik odaklama özelliği olmayan bir kamera için geçerli olmasa bile). Bunun öne bakan kameralar için geçerli olduğunu unutmayın. Örneğin, öne bakan kameraların çoğu otomatik odaklamayı desteklemese de API geri çağırmaları yine de açıklandığı gibi "taklit edilmelidir". - [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ı TANIMALI ve KABUL ETMELİDİR. Bunun aksine, cihaz uygulamaları,android.hardware.Camera.setParameters()
yöntemine iletilen veandroid.hardware.Camera.Parameters
üzerinde sabit olarak belgelenenler dışındaki dize sabitlerini kabul etmemeli veya tanımamalıdır. Yani, donanım izin veriyorsa cihaz uygulamaları tüm standart kamera parametrelerini desteklemeli ve özel kamera parametre türlerini desteklememelidir. Örneğin, yüksek dinamik aralıklı (HDR) görüntüleme tekniklerini kullanarak görüntü yakalamayı destekleyen cihaz uygulamaları,Camera.SCENE_MODE_HDR
kamera parametresini DESTEKLEMELİDİR. - [C-0-7] Android SDK'da açıklandığı şekilde
android.info.supportedHardwareLevel
özelliğiyle uygun destek düzeyini BİLDİRMELİ ve uygun çerçeve özellik işaretlerini BİLDİRMELİDİR. - [C-0-8]
android.hardware.camera2
aracılığıylaandroid.request.availableCapabilities
özelliği üzerinden kendi kamera özelliklerini de beyan ETMELİ ve uygun özellik işaretlerini beyan ETMELİDİR. Ekli kamera cihazlarından herhangi biri özelliği destekliyorsa özellik işareti tanımlanmalıdır. - [C-0-9] Kamera ile yeni bir fotoğraf çekildiğinde ve fotoğrafın girişi medya deposuna eklendiğinde
Camera.ACTION_NEW_PICTURE
amacını yayınLAMALIDIR. - [C-0-10] Kamera tarafından yeni bir video kaydedildiğinde ve resim girişi medya deposuna eklendiğinde
Camera.ACTION_NEW_VIDEO
amacı YAYINLANMALIDIR. - [C-0-11] Kullanımdan kaldırılan
android.hardware.Camera
API üzerinden erişilebilen tüm kameralaraandroid.hardware.camera2
API üzerinden de erişilebilmelidir. - [C-0-12]
android.hardware.camera2
veyaandroid.hardware.Camera
API'leri için yüz geometrisini, yüz cilt tonunu veya yüz cildini düzeltme dahil ancak bunlarla sınırlı olmamak üzere yüz görünümünün DEĞİŞTİRİLMEMESİ sağlanmalıdır. - [C-SR] Aynı yöne bakan birden fazla RGB kamerası olan cihazların, bu yöne bakan tüm RGB kameraları fiziksel alt cihazlar olarak içeren
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
özelliğini listeleyen mantıksal bir kamera cihazını desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, üçüncü taraf uygulamalarına özel bir kamera API'si sağlıyorsa:
- [C-1-1]
android.hardware.camera2
API'sini kullanarak bu tür bir kamera API'si uygulamalıdır. - MAY,
android.hardware.camera2
API'sine satıcı etiketleri ve/veya uzantıları SAĞLAYABİLİR.
7.5.5. Kamera Yönü
Cihaz uygulamalarında ön veya arka kamera varsa bu kameralar:
- [C-1-1] Kameranın uzun kenarı, ekranın uzun kenarıyla aynı yönde olacak şekilde yerleştirilmelidir. Yani cihaz yatay yönde tutulduğunda kameralar, görüntüleri yatay yönde çekmelidir. Bu, cihazın doğal yönü ne olursa olsun (yani yatay öncelikli cihazlar ve dikey öncelikli 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İLECEĞİ bir İndirme Yöneticisi İÇERMELİDİR ve en az 100 MB boyutundaki dosyaları varsayılan "önbellek" konumuna indirebilmelidir.
7.6.2. Uygulama Ortak Depolama Alanı
Cihaz uygulamaları:
- [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı sunULMALIDIR. Bu alan genellikle "paylaşılan harici depolama alanı", "uygulama tarafından paylaşılan depolama alanı" veya Linux yolu "/sdcard" olarak da adlandırılır.
- [C-0-2] Depolama biriminin dahili bir depolama bileşeninde mi yoksa çıkarılabilir bir depolama ortamında mı (ör.Secure Digital kart yuvası) uygulandığına bakılmaksızın, varsayılan olarak bağlı paylaşılan depolama birimiyle yapılandırılmalıdır. Diğer bir deyişle, "kullanıma hazır" olmalıdır.
- [C-0-3] Uygulama tarafından paylaşılan depolama alanı doğrudan Linux yoluna
sdcard
bağlanmalı veyasdcard
konumundan gerçek bağlama noktasına bir Linux sembolik bağlantısı içermelidir. - [C-0-4] Aşağıdaki durum hariç olmak üzere, API düzeyi 29 veya sonraki sürümleri hedefleyen tüm uygulamalarda varsayılan olarak kapsamlı depolama etkinleştirilmelidir:
- Uygulama, manifest dosyasında
android:requestLegacyExternalStorage="true"
istediğinde
- Uygulama, manifest dosyasında
- [C-0-5] Arayan uygulama
ACCESS_MEDIA_LOCATION
iznine sahip olmadığı sürece,MediaStore
üzerinden erişilen medya dosyalarında depolanan GPS Exif etiketleri gibi konum meta verileri REDAKTE EDİLMELİDİR.
Cihaz uygulamaları, yukarıdaki koşulları aşağıdaki yöntemlerden birini kullanarak karşılayabilir:
- Kullanıcı tarafından erişilebilen çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası).
- Android Açık Kaynak Projesi'nde (AOSP) uygulanan dahili (çıkarılamayan) depolama alanının bir kısmı.
Cihaz uygulamaları yukarıdaki koşulları karşılamak için çıkarılabilir depolama birimi kullanıyorsa:
- [C-1-1] Yuvaya depolama ortamı takılmadığında kullanıcıyı uyaran bir kısa mesaj veya pop-up kullanıcı arayüzü uygulamalıdır.
- [C-1-2] FAT biçimli bir depolama ortamı (ör. SD kart) İÇERMELİ veya satın alma sırasında kutuda ve diğer materyallerde depolama ortamının ayrı olarak satın alınması gerektiği gösterilmelidir.
Cihaz uygulamaları yukarıdaki şartları karşılamak için çıkarılamayan 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ı uygulama özel verileriyle paylaşabilir.
Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:
- [C-3-1] Uygulamanın paylaşılan depolama alanındaki verilere ana bilgisayardan erişmek için bir mekanizma SAĞLANMALIDIR.
- Android'in medya tarayıcı hizmeti ve
android.provider.MediaStore
aracılığıyla her iki depolama yolundaki içerikleri şeffaf bir şekilde kullanıma sunMALIDIR. - USB yığın depolama kullanabilir ancak bu şartı karşılamak için Medya Aktarım Protokolü KULLANMALIDIR.
Cihaz uygulamalarında USB çevre birimi moduna sahip bir USB bağlantı noktası varsa ve Medya Aktarım Protokolü destekleniyorsa:
- Referans Android MTP ana makinesi Android Dosya Aktarımı ile uyumlu OLMALIDIR.
- 0x00 USB cihaz sınıfı bildirmelidir.
- "MTP" USB arayüzü adını bildirmelidir.
7.6.3. Dahili hale getirilebilir depolama alanı
Cihazın televizyon gibi olmaması ve mobil olması bekleniyorsa cihaz uygulamaları şunlardır:
- [SR] Adaptable storage'ı uzun vadede sabit bir konumda uygulamanız ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, yanlışlıkla bağlantısını kesmek veri kaybına/bozulmasına neden olabilir.
Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya başka bir koruyucu kapak gibi uzun süreli sabit bir konumdaysa cihaz uygulamaları:
- [SR] Dahili hale getirilebilir depolama alanı özelliğinin uygulanması ÖNEMLE TAVSİYE EDİLİR.
7.7. USB
Cihaz uygulamalarında USB bağlantı noktası varsa:
- USB çevre birimi modunu DESTEKLEMELİ ve USB ana makine modunu DESTEKLEMELİDİR.
7.7.1. USB çevre birimi modu
Cihaz uygulamalarında çevre birimi modunu destekleyen bir USB bağlantı noktası varsa:
- [C-1-1] Bağlantı noktası, standart Type-A veya Type-C USB bağlantı noktasına sahip bir USB ana makinesine bağlanabilmelidir.
- [C-1-2]
android.os.Build.SERIAL
aracılığıyla USB standart cihaz tanımlayıcısındaiSerialNumber
değerini doğru şekilde bildirmelidir. - [C-1-3] Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını ALGILAMALI ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri ALGILAMALIDIR.
- [SR] Bağlantı noktası, micro-B, micro-AB veya Type-C USB form faktörünü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Bağlantı noktası, cihazın alt kısmında (doğal yönlendirmeye göre) yer almalıdır veya yazılım ekran döndürme özelliği tüm uygulamalar (ana ekran dahil) için etkinleştirilmelidir. Böylece, cihaz bağlantı noktası altta olacak şekilde yönlendirildiğinde ekran doğru şekilde çizilir. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
- [SR], USB Pil Şarjı spesifikasyonu, revizyon 1.2'de belirtildiği gibi HS chirp ve trafik sırasında 1,5 A akım çekme desteğini uygulamalıdır. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya alıcı/kaynak rollerini değiştiren tescilli şarj yöntemlerinin desteklenmemesi KESİNLİKLE ÖNERİLİR. Aksi takdirde, standart USB Güç Dağıtımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunları yaşanabilir. Bu durum "KESİNLİKLE Ö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 ZORUNLU olabilir.
- [SR] Type-C USB ve USB ana makine modunu desteklediklerinde veri ve güç rolü değiştirme için Güç Aktarımı'nın desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- Yüksek voltajlı şarj için Power Delivery'yi ve ekran çıkışı gibi alternatif modları desteklemelidir.
- Android Open Accessory (AOA) API'sini ve spesifikasyonunu Android SDK dokümanlarında belirtildiği şekilde uygulamalıdır.
Cihaz uygulamaları bir 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 yığın depolama biriminin arayüz açıklaması
iInterface
dizesinin sonunda "android" dizesi BULUNMALIDIR.
7.7.2. USB ana makine modu
Cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-1-1] Android SDK'da belgelendiği şekilde Android USB ana makine API'si uygulanmalı ve
android.hardware.usb.host
donanım özelliği için destek beyan edilmelidir. - [C-1-2] Standart USB çevre birimlerinin bağlanması için destek sağlanmalıdır. Diğer bir deyişle, şunlardan biri YAPILMALIDIR:
- Cihazda Type-C bağlantı noktası bulunmalı veya cihazda bulunan tescilli bağlantı noktasını standart USB Type-C bağlantı noktasına (USB Type-C cihaz) dönüştüren kablolarla birlikte gönderilmelidir.
- Cihaz üzerinde A tipi bağlantı noktası olmalı veya cihaz üzerinde bulunan tescilli bir bağlantı noktasını standart USB A tipi bağlantı noktasına dönüştüren kablolarla birlikte gönderilmelidir.
- Cihazda, standart bir A tipi bağlantı noktasına uyarlanmış bir kabloyla birlikte GÖNDERİLMESİ GEREKEN bir cihaz içi micro-AB bağlantı noktası olmalıdır.
- [C-1-3] USB A veya micro-AB bağlantı noktalarını C tipi bağlantı noktasına (priz) dönüştüren bir adaptörle birlikte gönderilmemelidir.
- [C-SR] Android SDK belgelerinde belirtildiği gibi USB ses sınıfının uygulanması ŞİDDETLE TAVSİYE EDİLİR.
- Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini DESTEKLEMELİDİR.USB Type-C konnektörleri için USB Type-C Kablosu ve Konnektör Spesifikasyonu Revizyon 1.2'nin Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1,5 A kaynak akımı reklamı yapmalı veya Micro-AB konnektörleri için USB Pil Şarjı Spesifikasyonları, Revizyon 1.2'de belirtildiği gibi Şarj Edilen Aşağı Akım Bağlantı Noktası(CDP) çıkış akımı aralığını kullanmalıdır.
- USB Type-C standartlarını uygulamalı ve desteklemelidir.
Cihaz uygulamaları, ana makine modunu ve USB ses sınıfını destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-2-1] USB HID sınıfını desteklemelidir.
- [C-2-2] USB HID Kullanım Tabloları ve Sesli Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının
KeyEvent
sabitleriyle eşlenmesini ve algılanmasını aşağıdaki gibi DESTEKLEMELİDİR:- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CD):
KEYCODE_MEDIA_PLAY_PAUSE
- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0E9):
KEYCODE_VOLUME_UP
- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0EA):
KEYCODE_VOLUME_DOWN
- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CF):
KEYCODE_VOICE_ASSIST
- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CD):
Cihaz uygulamaları, ana makine modunu ve Depolama Erişim Çerçevesi'ni (SAF) destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-3-1] Uzaktan bağlı tüm MTP (Medya Aktarım Protokolü) cihazları TANIMLAMALI ve içeriklerine
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
veACTION_CREATE_DOCUMENT
amaçları üzerinden erişilebilmesini SAĞLAMALIDIR. .
Cihaz uygulamaları, ana makine modunu ve USB Type-C'yi destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-4-1] USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rol Bağlantı Noktası işlevselliği uygulanmalıdır.
- [SR] DisplayPort'u desteklemesi ŞİDDETLE TAVSİYE EDİLİR, USB SuperSpeed veri hızlarını desteklemesi GEREKİR ve veri ile güç rolü değiştirme için Güç Aktarımı'nı desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [SR] USB Type-C Kablosu ve Konnektör Spesifikasyonu Revizyon 1.2'nin Ek A bölümünde açıklandığı gibi Ses Adaptörü Aksesuar Modu'nun desteklenmemesi ŞİDDETLE TAVSİYE EDİLİR.
- Cihazın form faktörüne en uygun olan Try.* modelini uygulamalıdır. Örneğin, elde taşınabilir bir cihaz Try.SNK modelini uygulamalıdır.
7.8. Ses
7.8.1. Mikrofon
Cihaz uygulamaları mikrofon içeriyorsa:
- [C-1-1]
android.hardware.microphone
özelliği sabiti RAPORLANMALIDIR. - [C-1-2] 5.4 bölümündeki ses kaydı koşullarını KARŞILAMALIDIR.
- [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
- [SR] 7.8.3 bölümünde açıklandığı gibi, ultrasona yakın kayıt özelliğini desteklemek için KESİNLİKLE ÖNERİLİR.
Cihaz uygulamalarında mikrofon yoksa:
- [C-2-1]
android.hardware.microphone
özelliği sabiti RAPORLANMAMALIDIR. - [C-2-2] 7. bölüm uyarınca ses kaydı API'si en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.
7.8.2. Ses Çıkışı
Cihaz uygulamalarında USB ses sınıfı kullanılarak 4 iletkenli 3, 5 mm ses jakı veya 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
özelliği sabiti RAPORLANMALIDIR. - [C-1-2] 5.5 bölümündeki ses çalma koşullarını KARŞILAMALIDIR.
- [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
- [SR] 7.8.3 bölümünde açıklandığı gibi, ultrasona yakın oynatmayı desteklemeniz KESİNLİKLE ÖNERİLİR.
Cihaz uygulamalarında hoparlör veya ses çıkışı bağlantı noktası yoksa:
- [C-2-1]
android.hardware.audio.output
özelliği RAPORLANMAMALIDIR. - [C-2-2] Ses çıkışıyla ilgili API'ler en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.
Bu bölümdeki amaçlar doğrultusunda "çıkış bağlantı noktası", 3, 5 mm ses jakı, HDMI veya USB ses sınıfına sahip USB ana bilgisayar modu bağlantı noktası gibi bir fiziksel arayüzdür. Bluetooth, kablosuz veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" olarak kabul edilmez.
7.8.2.1. Analog Ses Bağlantı Noktaları
Android ekosisteminde 3,5 mm ses fişini kullanan kulaklıklar ve diğer ses aksesuarlarıyla uyumlu olabilmek için cihaz uygulamaları bir veya daha fazla analog ses bağlantı noktası içeriyorsa:
- [C-SR] Ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:
- [C-1-1] Stereo kulaklıklarda ve mikrofonlu stereo kulaklıklarda ses çalmayı DESTEKLEMELİDİR.
- [C-1-2] CTIA pin çıkışı sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR.
- [C-1-3] Ses fişindeki mikrofon ve toprak iletkenleri arasında aşağıdaki 3 eşdeğer empedans aralığı için algılama ve tuş kodlarına eşleme DESTEKLENMELİDİR:
-
70 ohm veya daha az:
KEYCODE_HEADSETHOOK
-
210-290 ohm:
KEYCODE_VOLUME_UP
-
360-680 ohm:
KEYCODE_VOLUME_DOWN
-
70 ohm veya daha az:
- [C-1-4] Fiş takıldığında
ACTION_HEADSET_PLUG
tetiklenmelidir ancak yalnızca fişteki tüm kontaklar jak üzerindeki ilgili segmentlere temas ettikten sonra tetiklenmelidir. - [C-1-5] 32 ohm hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
- [C-1-6] 1,8 V ~ 2,9 V arasında bir mikrofon önyargı voltajına SAHİP OLMALIDIR.
- [C-1-7] Ses fişindeki mikrofon ve toprak iletkenleri arasında aşağıdaki eşdeğer empedans aralığı için tuş kodunu algılamalı ve tuş koduyla eşlemelidir:
-
110-180 ohm:
KEYCODE_VOICE_ASSIST
-
110-180 ohm:
- [C-SR] OMTP pin çıkışı sırasına sahip ses fişlerini desteklemek için KESİNLİKLE ÖNERİLİR.
- [C-SR] Mikrofonlu stereo kulaklıklardan ses kaydının desteklenmesi ÖNEMLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 4 iletkenli 3,5 mm ses jakı varsa, mikrofon destekleniyorsa ve android.intent.action.HEADSET_PLUG
, ek değerli mikrofon ayarı 1 olarak yayınlanıyorsa:
- [C-2-1] Takılı ses aksesuarındaki mikrofonun algılanması DESTEKLENMELİDİR.
7.8.2.2. Dijital Ses Bağlantı Noktaları
USB-C konnektörleri kullanan ve Android USB kulaklık spesifikasyonunda tanımlandığı gibi Android ekosisteminde (USB ses sınıfı) uygulayan kulaklıklar ve diğer ses aksesuarlarıyla uyumlu olmak için.
Cihaza özgü gereksinimler için Bölüm 2.2.1'e bakın.
7.8.3. Near-Ultrasound
Yakın ultrasonik ses, 18,5 kHz ile 20 kHz arasındaki banttır.
Cihaz uygulamaları:
- AudioManager.getProperty API aracılığıyla yakın ultrason ses özelliği desteğini aşağıdaki şekilde DOĞRU olarak bildirmelidir:
PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND
değeri "true" ise VOICE_RECOGNITION
ve UNPROCESSED
ses kaynakları aşağıdaki şartları KARŞILAMALIDIR:
- [C-1-1] Mikrofonun 18,5 kHz ile 20 kHz bandındaki ortalama güç yanıtı, 2 kHz'deki yanıttan en fazla 15 dB daha düşük OLMALIDIR.
- [C-1-2] Mikrofonun 18,5 kHz - 20 kHz aralığındaki ağırlıksız sinyal-gürültü oranı, -26 dBFS'de 19 kHz ton için 50 dB'den düşük OLMAMALIDIR.
PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND
"true" ise:
- [C-2-1] Hoparlörün 18,5 kHz - 20 kHz aralığındaki ortalama yanıtı, 2 kHz'deki yanıttan en fazla 40 dB daha düşük OLMALIDIR.
7.8.4. Sinyal Bütünlüğü
Cihaz uygulamaları: * Elde taşınabilir cihazlarda 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 ölçülen sıfır aksaklık olarak tanımlanır. [OboeTester] (https://github.com/google/oboe/tree/master/apps/OboeTester) "Automated Glitch Test" ile test edin.
Test için doğrudan 3, 5 mm jakta ve/veya USB-C - 3, 5 mm adaptörüyle birlikte kullanılan bir ses geri döngü dongle'ı gerekir. Tüm ses çıkışı bağlantı noktaları TEST EDİLMELİDİR.
OboeTester şu anda AAudio yollarını desteklemektedir. Bu nedenle, aşağıdaki kombinasyonlar AAudio kullanılarak aksaklıklar açısından TEST EDİLMELİDİR:
Performans Modu | Paylaşım | Çıkış Örnekleme Hızı | In Chans | Out Chans |
---|---|---|---|---|
LOW_LATENCY | ÖZEL | BELİRTİLMEMİŞ | 1 | 2 |
LOW_LATENCY | ÖZEL | BELİRTİLMEMİŞ | 2 | 1 |
LOW_LATENCY | PAYLAŞILDI | BELİRTİLMEMİŞ | 1 | 2 |
LOW_LATENCY | PAYLAŞILDI | BELİRTİLMEMİŞ | 2 | 1 |
YOK | PAYLAŞILDI | 48000 | 1 | 2 |
YOK | PAYLAŞILDI | 48000 | 2 | 1 |
YOK | PAYLAŞILDI | 44100 | 1 | 2 |
YOK | PAYLAŞILDI | 44100 | 2 | 1 |
YOK | PAYLAŞILDI | 16000 | 1 | 2 |
YOK | PAYLAŞILDI | 16000 | 2 | 1 |
Güvenilir bir akış, 2.000 Hz sinüs için sinyal-gürültü oranı (SNR) ve toplam harmonik bozulma (THD) açısından aşağıdaki ölçütleri KARŞILAMALIDIR.
Transdüser | THD | SNR |
---|---|---|
birincil yerleşik hoparlör, harici referans mikrofon kullanılarak ölçülür | < %3,0 | >= 50 dB |
Harici referans hoparlör kullanılarak ölçülen birincil yerleşik mikrofon | < %3,0 | >= 50 dB |
Döngü adaptörü kullanılarak test edilmiş yerleşik analog 3, 5 mm jaklar | <%1 | >= 60 dB |
Telefonla birlikte verilen USB adaptörleri, geri döngü adaptörü kullanılarak test edilmiştir. | < %1,0 | >= 60 dB |
7.9. Sanal Gerçeklik
Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "sanal gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamaları, bu bölümde ayrıntılı olarak açıklandığı gibi bu API'leri ve davranışları düzgün bir şekilde uygulamalıdır.
7.9.1. Sanal Gerçeklik Modu
Android, bildirimlerin stereoskopik olarak işlenmesini sağlayan ve bir VR uygulaması kullanıcı odağındayken tek gözlü sistem kullanıcı arayüzü bileşenlerini devre dışı bırakan VR Modu'nu destekler.
7.9.2. Sanal Gerçeklik Modu - Yüksek Performans
Cihaz uygulamaları VR modunu destekliyorsa:
- [C-1-1] En az 2 fiziksel çekirdeğe SAHİP OLMALIDIR.
- [C-1-2]
android.hardware.vr.high_performance
özelliği BİLDİRİLMELİDİR. - [C-1-3] Sürekli performans modu desteklenmelidir.
- [C-1-4] OpenGL ES 3.2'nin desteklenmesi ÖNEMLE TAVSİYE EDİLİR.
- [C-1-5]
android.hardware.vulkan.level
0 desteklenmelidir. android.hardware.vulkan.level
1 veya daha yeni bir sürüm desteklenmelidir.- [C-1-6]
EGL_KHR_mutable_render_buffer
,EGL_ANDROID_front_buffer_auto_refresh
,EGL_ANDROID_get_native_client_buffer
,EGL_KHR_fence_sync
,EGL_KHR_wait_sync
,EGL_IMG_context_priority
,EGL_EXT_protected_content
,EGL_EXT_image_gl_colorspace
uygulanmalı ve uzantılar, kullanılabilir EGL uzantılarının listesinde gösterilmelidir. - [C-1-8]
GL_EXT_multisampled_render_to_texture2
,GL_OVR_multiview
,GL_OVR_multiview2
,GL_EXT_protected_textures
uygulanmalı ve uzantılar, kullanılabilir GL uzantıları listesinde gösterilmelidir. - [C-SR]
GL_EXT_external_buffer
,GL_EXT_EGL_image_array
,GL_OVR_multiview_multisampled_render_to_texture
'ı uygulamaları ve uzantıları, kullanılabilir GL uzantıları listesinde göstermeleri ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] Vulkan 1.1'i desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR]
VK_ANDROID_external_memory_android_hardware_buffer
,VK_GOOGLE_display_timing
,VK_KHR_shared_presentable_image
'ı uygulamaları ve kullanılabilir Vulkan uzantıları listesinde göstermeleri ŞİDDETLE TAVSİYE EDİLİR. - [C-SR]
flags
hemVK_QUEUE_GRAPHICS_BIT
hem deVK_QUEUE_COMPUTE_BIT
içerdiğinde vequeueCount
en az 2 olduğunda en az bir Vulkan sıra ailesinin kullanıma sunulması ŞİDDETLE TAVSİYE EDİLİR. - [C-1-7] GPU ve ekran, paylaşılan ön arabelleğe erişimi senkronize edebilmelidir. Böylece, iki oluşturma bağlamıyla 60 FPS'de VR içeriğinin alternatif gözle oluşturulması, görünür yırtılma artefaktları olmadan gösterilir.
- [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 uygulanmalıdır. - [C-1-10] En azından şu biçimler için
AHardwareBuffer
s'ninAHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT
,AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE
,AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT
kullanım işaretlerinin herhangi bir kombinasyonuyla desteklenmesi ZORUNLUDUR:AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM
,AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM
,AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM
,AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT
. - [C-SR]
AHardwareBuffer
ile C-1-10'da belirtilen bayrak ve biçimlerin tahsisini desteklemek için ŞİDDETLE TAVSİYE EDİLİR. - [C-1-11] Sıkıştırılmış olarak ortalama 40 Mb/sn (30 kare/sn hızında 10 Mb/sn ile 1920 x 1080 çözünürlükte 4 örnek veya 60 kare/sn hızında 20 Mb/sn ile 1920 x 1080 çözünürlükte 2 örnek) ile en az 3840 x 2160 çözünürlükte ve 30 kare/sn hızında H.264 kod çözme işlemini desteklemelidir.
- [C-1-12] HEVC ve VP9'u DESTEKLEMELİ, ortalama 10 Mb/sn'ye sıkıştırılmış 30 kare/sn hızında en az 1.920 x 1.080 çözünürlükte kod çözme İŞLEMİNİ YAPABİLMELİ ve 30 kare/sn hızında 20 Mb/sn (30 kare/sn hızında 5 Mb/sn hızında 1.920 x 1.080 çözünürlükte 4 örneğe eşdeğer) hızında 3.840 x 2.160 çözünürlükte kod çözme İŞLEMİNİ YAPABİLMELİDİR.
- [C-1-13]
HardwarePropertiesManager.getDeviceTemperatures
API'yi desteklemeli ve cilt sıcaklığı için doğru değerler döndürmelidir. - [C-1-14] Gömülü bir ekranı OLMALI ve çözünürlüğü EN AZ 1920 x 1080 olmalıdır.
- [C-SR] En az 2560 x 1440 ekran çözünürlüğüne sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-15] Ekran, VR modundayken en az 60 Hz hızında güncellenmelidir.
- [C-1-17] Ekran, kalıcılığı ≤ 5 milisaniye olan düşük kalıcılık modunu desteklemelidir. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
- [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı 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ü desteklemek üzere ŞİDDETLE TAVSİYE EDİLİR. - [C-1-21] Bölüm 7.3.9'da belirtildiği gibi
android.hardware.hifi_sensors
için jiroskop, ivme ölçer ve manyetometre ile ilgili şartları KARŞILAMALIDIR. - [C-SR]
android.hardware.sensor.hifi_sensors
özelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR. - [C-1-22] Uçtan uca hareketten fotona gecikme süresi 28 milisaniyeden yüksek OLMAMALIDIR.
- [C-SR] Uçtan uca hareketten fotona gecikme süresinin 20 milisaniyeden yüksek olmaması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-23] Siyah-beyaz geçişinden sonraki ilk karedeki piksellerin parlaklığı ile sabit durumdaki beyaz piksellerin parlaklığı arasındaki oran olan ilk kare oranı EN AZ %85 olmalıdır.
- [C-SR] İlk kare oranının en az %90 olması KESİNLİKLE ÖNERİLİR.
- Ön plandaki uygulamaya özel bir çekirdek sağlayabilir ve en üstteki ön plan uygulamasına özel CPU çekirdeklerinin sayısını döndürmek için
Process.getExclusiveCores
API'sini destekleyebilir.
Özel çekirdek destekleniyorsa çekirdek:
- [C-2-1] Üzerinde başka kullanıcı alanı işlemlerinin çalışmasına izin VERMEMELİDİR (uygulama tarafından kullanılan cihaz sürücüleri hariç), ancak gerektiğinde bazı çekirdek işlemlerinin çalışmasına İZİN VEREBİLİR.
7.10. Dokunma teknolojisi
Cihaza özgü gereksinimler için Bölüm 2.2.1'e bakın.
7.11. Medya Performansı Sınıfı
Cihaz uygulamasının medya performans sınıfı, android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
API'sinden alınabilir. Medya performans sınıfıyla ilgili şartlar, R (30. sürüm) ile başlayan her Android sürümü için tanımlanır. 0 özel değeri, cihazın medya performansı sınıfında olmadığını gösterir.
Cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
için sıfır olmayan bir değer döndürürse:
[C-1-1] MUST return at least a value of
android.os.Build.VERSION_CODES.R
.[C-1-2] Elde taşınabilir cihaz uygulaması OLMALIDIR.
[C-1-3] Bölüm 2.2.7'de açıklanan "Medya Performans Sınıfı" ile ilgili tüm koşulları karşılamalıdır.
Cihaza özgü gereksinimler için 2.2.7 bölümüne bakın.
8. Performans ve Güç
Minimum performans ve güç ölçütlerinden bazıları, kullanıcı deneyimi açısından kritik öneme sahiptir ve geliştiricilerin uygulama geliştirirken sahip olacağı temel varsayımları etkiler.
8.1. Kullanıcı Deneyimi Tutarlılığı
Uygulamalar ve oyunlar için tutarlı bir kare hızı ve yanıt süreleri sağlamak üzere belirli minimum gereksinimler varsa son kullanıcıya sorunsuz bir kullanıcı arayüzü sunulabilir. Cihaz uygulamaları, cihaz türüne bağlı olarak bölüm 2'de açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev değiştirme için ölçülebilir gereksinimlere SAHİP OLABİLİR.
8.2. Dosya G/Ç Erişim Performansı
Uygulamanın özel veri depolama alanında (/data
bölümü) tutarlı bir dosya erişimi performansı için ortak bir temel oluşturmak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak uygun beklentiler belirlemesine olanak tanır. Cihaz uygulamaları, cihaz türüne bağlı olarak aşağıdaki okuma ve yazma işlemleri için 2. bölümde açıklanan belirli şartlara sahip OLABİLİR:
- Sıralı yazma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
- Rastgele yazma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
- Sıralı okuma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.
- Rastgele okuma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.
8.3. Güç tasarrufu modları
Cihaz uygulamaları, AOSP'de yer alan (ör. uygulama bekleme grubu, Doze) veya nadiren kullanılan uygulama bekleme grubu'ndan daha katı kısıtlamalar uygulamayan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [C-1-1] Uygulama Bekletme ve Doze güç tasarrufu modlarının tetikleme, bakım, uyandırma algoritmaları ve genel sistem ayarlarının kullanımı için AOSP uygulamasından sapılMAMALIDIR.
- [C-1-2] Uygulama beklemede özelliği için her gruptaki uygulamalarda işlerin, alarmın ve ağın sıklık sınırını yönetmek üzere genel ayarların kullanımıyla ilgili AOSP uygulamasından SAPMAMALIDIR.
- [C-1-3] Uygulama Bekletme için kullanılan Uygulama Bekletme Grupları sayısı bakımından AOSP uygulamasından sapmamalıdır.
- [C-1-4] Uygulama Bekletme Grupları ve Doze, Güç Yönetimi'nde açıklandığı şekilde uygulanmalıdır.
- [C-1-5] Cihaz güç tasarrufu modundayken
PowerManager.isPowerSaveMode()
içintrue
DÖNMELİDİR. - [C-SR] Pil tasarrufu özelliğini etkinleştirme ve devre dışı bırakma konusunda kullanıcıya kolaylık sağlamak KESİNLİKLE ÖNERİLİR.
- [C-SR] Uygulama Bekletme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak tanınması KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları, AOSP'de yer alan güç yönetimi özelliklerini genişletiyorsa ve bu genişletme, Nadiren Kullanılan Uygulama Bekletme Paketi'nden daha katı kısıtlamalar uyguluyorsa 3.5.1 bölümüne bakın.
Android cihaz uygulamaları, güç tasarrufu modlarına ek olarak Advanced Configuration and Power Interface (ACPI) tarafından tanımlanan 4 uyku güç durumunun herhangi birini veya tamamını uygulayabilir.
Cihaz uygulamaları, ACPI tarafından tanımlanan S4 güç durumlarını uyguluyorsa:
- [C-1-1] YALNIZCA kullanıcı cihazı etkin olmayan bir duruma getirmek için açık bir işlem yaptıktan sonra (ör. cihazın fiziksel bir parçası olan bir kapağı kapatarak veya bir aracı ya da televizyonu kapatarak) ve kullanıcı cihazı yeniden etkinleştirmeden önce (ör. kapağı açarak veya aracı ya da televizyonu tekrar açarak) bu duruma girmelidir.
Cihaz uygulamaları, ACPI tarafından tanımlanan S3 güç durumlarını uyguluyorsa:
-
[C-2-1] Yukarıdaki C-1-1 koşulunu KARŞILAMALI veya yalnızca üçüncü taraf uygulamalarının sistem kaynaklarına (ör. ekran, CPU) ihtiyacı olmadığında S3 durumuna girmelidir.
Aksine, üçüncü taraf uygulamaların sistem kaynaklarına ihtiyacı olduğunda bu SDK'da açıklandığı gibi S3 durumundan çıkılması GEREKİR.
Ö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ışmaya devam etmesini isterken, C-1-1'de açıklandığı gibi kullanıcı cihazı etkin olmayan bir duruma getirmek için açıkça işlem yapmadığı sürece cihaz S3 durumuna GİRMEMELİDİR. Buna karşılık, üçüncü taraf uygulamalarının JobScheduler aracılığıyla uyguladığı bir görev tetiklendiğinde veya Firebase Cloud Messaging üçüncü taraf uygulamalarına teslim edildiğinde, kullanıcı cihazı etkin olmayan bir duruma getirmediği sürece cihaz S3 durumundan çıkmalıdır. Bunlar kapsamlı örnekler değildir ve AOSP, bu durumdan uyandırmayı tetikleyen kapsamlı uyandırma sinyalleri uygular.
8.4. Güç Tüketimi Muhasebesi
Güç tüketiminin daha doğru bir şekilde muhasebeleştirilmesi ve raporlanması, uygulama geliştiriciye hem teşvikler hem de uygulamanın güç kullanım şeklini optimize etme araçları sağlar.
Cihaz uygulamaları:
- [SR] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her bir donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili sağlanması ÖNEMLE TAVSİYE EDİLİR.
- [SR] Tüm güç tüketimi değerlerinin miliamper saat (mAh) cinsinden bildirilmesi KESİNLİKLE ÖNERİLİR.
- [SR] Her işlemin UID'si başına CPU güç tüketiminin bildirilmesi ÖNEMLE TAVSİYE EDİ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ın, uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla sunulması KESİNLİKLE ÖNERİLİR. - Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
8.5. Tutarlı Performans
Yüksek performanslı ve uzun süre çalışan uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırları nedeniyle CPU'nun hızını düşürmesi nedeniyle önemli ölçüde değişebilir. Android, cihazın kapasitesi yeterli olduğunda en üstteki ön plan uygulamasının, sistemden kaynakların dağıtımını optimize etmesini isteyebilmesi için programatik arayüzler içerir.
Cihaz uygulamaları:
-
[C-0-1]
PowerManager.isSustainedPerformanceModeSupported()
API yöntemiyle Sürekli Performans Modu desteğini doğru şekilde bildirmelidir. -
Sürekli Performans Modu desteklenmelidir.
Cihaz uygulamaları, Sürekli Performans Modu'nu desteklediğini bildiriyorsa:
- [C-1-1] Uygulama istediğinde, ön plandaki en üst uygulamaya en az 30 dakika boyunca tutarlı bir performans düzeyi SAĞLANMALIDIR.
- [C-1-2]
Window.setSustainedPerformanceMode()
API'si ve diğer ilgili API'ler KULLANILMALIDIR.
Cihaz uygulamaları iki veya daha fazla CPU çekirdeği içeriyorsa:
- En az bir özel çekirdek sağlamalıdır. Bu çekirdek, ön plandaki en üst uygulama tarafından ayrılabilir.
Cihaz uygulamaları, üstteki ön plan uygulaması için özel bir çekirdek ayırmayı destekliyorsa:
- [C-2-1] Üstteki ön plan uygulaması tarafından ayrılabilen özel çekirdeklerin kimlik numaralarını
Process.getExclusiveCores()
API yöntemiyle bildirmelidir. - [C-2-2] Uygulamanın özel çekirdeklerde çalışması için kullanılan cihaz sürücüleri dışında hiçbir kullanıcı alanı sürecine izin VERİLMEMELİDİR ancak gerektiğinde bazı çekirdek süreçlerinin çalışmasına İZİN VERİLEBİLİR.
Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:
- [C-3-1]
Process.getExclusiveCores()
API yöntemiyle boş bir liste döndürmelidir.
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamaları:
-
[C-0-1] Android geliştirici belgelerindeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.
-
[C-0-2] Üçüncü taraflardan/yetkililerden ek izinler/sertifikalar gerektirmeden, kendi kendine imzalanmış uygulamaların yüklenmesini DESTEKLEMELİDİR. Daha net bir ifadeyle, 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 desteklemelidir. Özellikle, SDK belgelerinde tanımlandığı şekilde her izni uygulamaları ZORUNLUDUR. Hiçbir izin atlanamaz, değiştirilemez veya göz ardı edilemez.
-
Yeni izin kimliği dizeleri
android.\*
ad alanında olmadığı sürece ek izinler EKLEYEBİLİR. -
[C-0-2]
protectionLevel
değeriPROTECTION_FLAG_PRIVILEGED
olan izinler YALNIZCA sistem görüntüsünün ayrıcalıklı yollarında önceden yüklenmiş uygulamalara ve her uygulama için açıkça izin verilenler listesindeki izinlerin alt kümesine verilmelidir. AOSP uygulaması,etc/permissions/
yolundaki dosyalardan her uygulama için izin verilenler listesindeki izinleri okuyup uygulayarak vesystem/priv-app
yolunu ayrıcalıklı yol olarak kullanarak bu şartı karşılar.
Tehlikeli koruma düzeyine sahip izinler, çalışma zamanı izinleridir. targetSdkVersion
> 22 olan uygulamalar, çalışma zamanında bunları ister.
Cihaz uygulamaları:
- [C-0-3] Kullanıcıya, istenen çalışma zamanı izinlerini verip vermeyeceğine karar verebileceği özel bir arayüz GÖSTERİLMELİ ve çalışma zamanı izinlerini yönetebileceği bir arayüz SAĞLANMALIDIR.
- [C-0-4] Her iki kullanıcı arayüzünün de yalnızca bir uygulaması OLMALIDIR.
- [C-0-5] Önceden yüklenmiş uygulamalara şu durumlar hariç çalışma zamanı izni VERİLMEMELİDİR:
- Kullanıcının izni, uygulama kullanmadan önce alınabilir.
- Çalışma zamanında istenen izinler, önceden yüklenmiş uygulamanın varsayılan işleyici olarak ayarlandığı bir amaç kalıbıyla ilişkilendirilir.
- [C-0-6] YALNIZCA düzgün şekilde güvenliği sağlanmış bir kurtarma aracısı kaydeden sistem uygulamalarına
android.permission.RECOVER_KEYSTORE
izni VERİLMELİDİR. Düzgün şekilde güvenliği sağlanmış bir kurtarma aracısı, cihaz dışı uzak depolama ile senkronize olan, cihaz üzerinde çalışan bir yazılım aracısı olarak tanımlanır. Bu aracılar, 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ü bir korumaya sahip güvenli donanımla donatılmıştır.
Cihaz uygulamaları:
-
[C-0-7] Bir uygulama, standart Android API'si veya tescilli mekanizma aracılığıyla konum ya da fiziksel aktivite verilerini istediğinde Android konum izni özelliklerine UYMALIDIR. Bu tür veriler 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 ya da cihazın bağlı olduğu ağın konumu).
- Kullanıcının fiziksel aktivitesi veya fiziksel aktivitenin sınıflandırılması.
Daha spesifik olarak cihaz uygulamaları:
- [C-0-8] Bir uygulamanın konum veya fiziksel aktivite verilerine erişmesine izin vermek için kullanıcı izni ALINMALIDIR.
- [C-0-9] YALNIZCA SDK'da açıklandığı şekilde yeterli izne sahip olan uygulamaya çalışma zamanı izni VERMELİDİR.
Örneğin,
TelephonyManager#getServiceState için
android.permission.ACCESS_FINE_LOCATION
izni gerekir.
İzinler, davranışlarını değiştirecek şekilde kısıtlanmış olarak işaretlenebilir.
-
[C-0-10]
hardRestricted
işaretiyle işaretlenmiş izinler, aşağıdaki durumlar hariç uygulamalara 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, bir uygulamaya
hardRestricted
izni verir. - Bir uygulamaya, önceki bir Android sürümünde
hardRestricted
izni verilir.
-
[C-0-11]
softRestricted
izni olan uygulamalar YALNIZCA sınırlı erişim elde ETMELİ ve SDK'da açıklandığı şekilde izin verilenler listesine eklenene kadar tam erişim KAZANMAMALIDIR. Burada, tam ve sınırlı erişim hersoftRestricted
izni için tanımlanır (örneğin,READ_EXTERNAL_STORAGE
).
Cihaz uygulamaları, ACTION_MANAGE_OVERLAY_PERMISSION
amacını işleyen bir etkinlik aracılığıyla hangi uygulamaların diğer uygulamaların üzerinde çizim yapabileceğini seçmek için kullanıcıya bir olanak sunuyorsa:
- [C-2-1]
ACTION_MANAGE_OVERLAY_PERMISSION
intent'i için intent filtreleri olan tüm etkinliklerin, başlatıcı uygulamadan veya sağladığı bilgilerden bağımsız olarak aynı kullanıcı arayüzü ekranına sahip olmasını SAĞLAMALIDIR.
9.2. UID ve süreç izolasyonu
Cihaz uygulamaları:
- [C-0-1] Her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alan modelini DESTEKLEMELİDİR.
- [C-0-2] Uygulamaların Güvenlik ve İzinler referansında tanımlandığı şekilde uygun şekilde imzalanıp oluşturulması koşuluyla, aynı Linux kullanıcı kimliği olarak birden fazla uygulamanın çalıştırılmasını DESTEKLEMELİDİR.
9.3. Dosya Sistemi İzinleri
Cihaz uygulamaları:
- [C-0-1] Güvenlik ve İzinler referansında tanımlandığı şekilde Android dosya erişimi izinleri modelini DESTEKLEMELİDİR.
9.4. Alternatif Yürütme Ortamları
Cihaz uygulamaları, Dalvik Yürütülebilir Biçimi veya yerel kod dışında bir yazılım ya da teknoloji kullanarak uygulamaları yürüten çalışma zamanı ortamları içerse bile Android güvenlik ve izin modelinin tutarlılığını KORUMALIDIR. Başka bir deyişle:
-
[C-0-1] Alternatif çalışma zamanları, 9. bölümde başka bir yerde açıklandığı gibi Android uygulamaları olmalı ve 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 <uses-permission
> mekanizması aracılığıyla istenmeyen izinlerle korunan kaynaklara erişim izni VERİLMEMELİDİR. -
[C-0-3] Alternatif çalışma zamanları, uygulamaların sistem uygulamalarıyla sınırlı Android izinleriyle korunan özelliklerden yararlanmasına İZİN VERMEMELİDİR.
-
[C-0-4] Alternatif çalışma zamanları, Android korumalı alan modeline uymalıdır ve alternatif çalışma zamanı kullanılarak yüklenen uygulamalar, paylaşılan kullanıcı kimliği ve imzalama sertifikası gibi standart Android mekanizmaları dışında cihazda yüklü başka bir uygulamanın korumalı alanını yeniden kullanamaz.
-
[C-0-5] Alternatif çalışma zamanları, diğer Android uygulamalarına karşılık gelen sanal ortamlara erişim başlatmamalı, erişim vermemeli veya bu sanal ortamlara erişim verilmemelidir.
-
[C-0-6] Alternatif çalışma zamanları, süper kullanıcı (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılmamalı, bu ayrıcalıklar verilmemeli ya da diğer uygulamalara verilmemelidir.
-
[C-0-7] Alternatif çalışma zamanlarının
.apk
dosyaları cihaz uygulamalarının sistem görüntüsüne dahil edildiğinde, cihaz uygulamalarıyla birlikte gelen diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla İMZALANMALIDIR. -
[C-0-8] Uygulamalar yüklenirken alternatif çalışma zamanları, uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMALIDIR.
-
[C-0-9] Bir uygulamanın, karşılık gelen bir Android izni olan 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 bilgilendirmelidir.
-
[C-0-10] Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmediğinde, bu çalışma zamanını kullanan herhangi bir uygulama yüklenirken çalışma zamanının sahip olduğu tüm izinleri LİSTELEMELİDİR.
-
Alternatif çalışma zamanları, uygulamaları
PackageManager
aracılığıyla ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir. -
Alternatif çalışma zamanları, alternatif çalışma zamanını kullanan tüm uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlayabilir.
9.5. Çok Kullanıcılı Destek
Android, birden fazla kullanıcıyı destekler ve kullanıcıların tamamen izole edilmesini sağlar.
- Cihaz uygulamaları, birincil harici depolama için çıkarılabilir medya kullanıyorsa çok kullanıcılı modu etkinleştirebilir ancak ETKİNLEŞTİRMEMELİDİR.
Cihaz uygulamaları birden fazla kullanıcı içeriyorsa:
- [C-1-1] Çoklu kullanıcı desteği ile ilgili aşağıdaki şartları KARŞILAMALIDIR.
- [C-1-2] MUST, her kullanıcı için API'lerde Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.
- [C-1-3] Her kullanıcı örneği için ayrı ve yalıtılmış paylaşılan uygulama depolama alanı (diğer adıyla
/sdcard
) dizinleri OLMALIDIR. - [C-1-4] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolansa bile başka bir kullanıcıya ait dosyaları listelemesine, okumasına ya da bu dosyalara yazmasına İZİN VERİLMEMELİDİR.
- [C-1-5] Cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanıyorsa çok kullanıcılı mod etkinleştirildiğinde SD kartın içeriği, yalnızca sistemin erişebildiği ve çıkarılamayan medyada depolanan bir anahtarla ŞİFRELENMELİDİR. Bu durum, ana bilgisayarın medyayı okuyamamasına neden olacağından cihaz uygulamalarının, ana bilgisayarlara mevcut kullanıcının verilerine erişim sağlamak için MTP'ye veya benzer bir sisteme geçmesi gerekir.
9.6. Premium SMS Uyarısı
Android, kullanıcılara gönderilen premium SMS mesajları hakkında uyarı verme özelliğini destekler. Premium SMS iletileri, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıya ücret yansıtılmasına neden olabilecek kısa mesajlardır.
Cihaz uygulamaları android.hardware.telephony
desteğini beyan ediyorsa:
- [C-1-1] Cihazdaki
/data/misc/sms/codes.xml
dosyasında tanımlanan normal ifadelerle belirlenen numaralara SMS mesajı göndermeden önce kullanıcıları UYARMALIDIR. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılayan bir uygulama sağlar.
9.7. Güvenlik Özellikleri
Cihaz uygulamaları, hem çekirdekte hem de platformda aşağıdaki gibi açıklanan güvenlik özelliklerine uygunluğu SAĞLAMALIDIR.
Android korumalı alanı, Security-Enhanced Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikleri içerir. Cihaz uygulamaları:
- [C-0-1] SELinux veya diğer güvenlik özellikleri Android çerçevesinin altında uygulandığında bile mevcut uygulamalarla uyumluluk KORUNMALIDIR.
- [C-0-2] Aşağıdaki Android çerçevesinin altında uygulanan güvenlik özelliği tarafından bir güvenlik ihlali algılanıp başarıyla engellendiğinde görünür bir kullanıcı arayüzüne SAHİP OLMAMALI, ancak engellenmemiş bir güvenlik ihlali gerçekleşip başarılı bir saldırıya yol açtığında görünür bir kullanıcı arayüzüne SAHİP OLABİLİR.
- [C-0-3] SELinux'u veya Android çerçevesinin altında uygulanan diğer güvenlik özelliklerini kullanıcı ya da uygulama geliştirici tarafından yapılandırılabilir HALE GETİRMEMELİDİR.
- [C-0-4] Bir API (ör. Cihaz Yönetimi API'si) aracılığıyla başka bir uygulamayı etkileyebilen bir uygulamanın, uyumluluğu bozan bir politika yapılandırmasına İZİN VERİLMEMELİDİR.
- [C-0-5] Medya çerçevesi, Android Açık Kaynak Projesi sitesinde açıklandığı gibi her işlem için erişimin daha dar kapsamlı olarak verilebilmesi amacıyla birden fazla işleme bölünmelidir.
- [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ı akış Android Açık Kaynak Projesi, source.android.com'un çekirdek yapılandırması bölümünde açıklandığı gibi iş parçacığı grubu senkronizasyonu (TSYNC) ile seccomp-BPF'yi etkinleştirerek bu koşulu karşılar.
Çekirdek bütünlüğü ve kendi kendini koruma özellikleri, Android güvenliğinin ayrılmaz bir parçasıdır. Cihaz uygulamaları:
- [C-0-7] Çekirdek yığını arabellek taşması koruma mekanizmalarını uygulamalıdır. Bu tür mekanizmalara örnek olarak
CC_STACKPROTECTOR_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
) sıkı çekirdek belleği korumaları UYGULANMALIDIR. - [C-0-9] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda, kullanıcı alanı ile çekirdek alanı arasındaki kopyaların statik ve dinamik nesne boyutu sınırları kontrolünü (ör.
CONFIG_HARDENED_USERCOPY
) uygulamalıdır. - [C-0-10] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda çekirdek modunda yürütülürken (ör. donanım PXN veya
CONFIG_CPU_SW_DOMAIN_PAN
ya daCONFIG_ARM64_SW_TTBR0_PAN
aracılığıyla emüle edilmiş) kullanıcı alanı belleği yürütülmemelidir. - [C-0-11] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda, normal usercopy erişim API'leri (ör. donanım PAN veya
CONFIG_CPU_SW_DOMAIN_PAN
ya daCONFIG_ARM64_SW_TTBR0_PAN
üzerinden emüle edilmiş) dışında çekirdekteki kullanıcı alanı belleği okunmamalı veya yazılmamalıdır. - [C-0-12] Donanım, API düzeyi 28 veya sonraki sürümlerle (ör.
CONFIG_PAGE_TABLE_ISOLATION
ya daCONFIG_UNMAP_KERNEL_AT_EL0
) birlikte gönderilen tüm cihazlarda CVE-2017-5754 güvenlik açığına karşı savunmasızsa çekirdek sayfa tablosu izolasyonu uygulanmalıdır. - [C-0-13] Donanım, API düzeyi 28 veya sonraki sürümlerle birlikte gönderilen tüm cihazlarda (ör.
CONFIG_HARDEN_BRANCH_PREDICTOR
) CVE-2017-5715'e karşı savunmasızsa dal tahmini güçlendirmesi 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 (ör.
__ro_after_init
) KESİNLİKLE ÖNERİLİR. -
[C-SR] Çekirdek kodu ve belleğin düzeninin rastgele hale getirilmesi ve rastgele hale getirme işlemini tehlikeye atacak ifşalardan (ör.
CONFIG_RANDOMIZE_BASE
/chosen/kaslr-seed Device Tree node
veyaEFI_RNG_PROTOCOL
aracılığıyla önyükleyici entropisi) kaçınılması ŞİDDETLE TAVSİYE EDİLİR. -
[C-SR] Kodun yeniden kullanılması 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ün (CFI) etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] Üzerinde etkinleştirilmiş bileşenlerde Kontrol Akışı Bütünlüğü (CFI), Gölge Çağrı Yığını (SCS) veya Tam Sayı Taşması Temizleme (IntSan) özelliklerinin devre dışı bırakılmaması ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] CFI ve IntSan'da açıklandığı gibi, ek güvenlik açısından hassas kullanıcı alanı bileşenleri için CFI, SCS ve IntSan'ın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Başlatılmamış yerel değişkenlerin (
CONFIG_INIT_STACK_ALL
veyaCONFIG_INIT_STACK_ALL_ZERO
) kullanılmasını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR. Ayrıca, cihaz uygulamaları, yerelleri başlatmak için derleyici tarafından kullanılan değeri varsaymamalıdır. - [C-SR] Başlatılmamış yığın ayırmalarının kullanılmasını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR (
CONFIG_INIT_ON_ALLOC_DEFAULT_ON
) ve çekirdek tarafından bu ayırmaları başlatmak için kullanılan değerin varsayılmaması GEREKİR.
Cihaz uygulamaları Linux çekirdeği kullanıyorsa:
- [C-1-1] SELinux'u uygulamalıdır.
- [C-1-2] SELinux, genel zorlama moduna AYARLANMALIDIR.
- [C-1-3] Tüm alanlar zorunlu kılma modunda yapılandırılmalıdır. Cihaza/tedarikçiye özgü alanlar da dahil olmak üzere izin verilen mod alanlarına izin verilmez.
- [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy klasöründe bulunan neverallow kuralları değiştirilmemeli, atlanmamalı veya bunların yerine başka kurallar konmamalıdır. Politika, hem AOSP SELinux alanları hem de cihaza/tedarikçiye özel alanlar için mevcut tüm neverallow kurallarıyla derlenmelidir.
- [C-1-5] API düzeyi 28 veya daha yüksek sürümleri hedefleyen üçüncü taraf uygulamaları, her uygulamanın özel veri dizininde uygulama başına SELinux kısıtlamalarıyla uygulama başına SELinux sanal alanlarında ÇALIŞTIRILMALIDIR.
- Yukarı akış Android Açık Kaynak Projesi'nin system/sepolicy klasöründe sağlanan varsayılan SELinux politikasını KORUMALI ve yalnızca kendi cihaza özel yapılandırmaları için bu politikaya eklemeler YAPMALIDIR.
Cihaz uygulamaları daha önceki bir Android sürümünde kullanıma sunulduysa ve sistem yazılımı güncellemesiyle [C-1-1] ve [C-1-5] şartlarını karşılayamıyorsa bu şartlardan MUAF TUTULABİLİR.
Cihaz uygulamaları Linux dışında bir çekirdek kullanıyorsa:
- [C-2-1] SELinux'a eşdeğer zorunlu bir erişim denetimi sistemi KULLANILMALIDIR.
Android, cihaz güvenliğinin ayrılmaz bir parçası olan birden fazla derinlemesine 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 saklar ve bu geçmişi UsageStatsManager ile yönetir.
Cihaz uygulamaları:
- [C-0-1] Bu tür kullanıcı geçmişi için makul bir saklama süresi OLMALIDIR.
- [SR] AOSP uygulamasında varsayılan olarak yapılandırılan 14 günlük saklama süresinin korunması ŞİDDETLE TAVSİYE EDİLİR.
Android, sistem etkinliklerini StatsLog
tanımlayıcılarını kullanarak depolar ve bu tür geçmişi StatsManager
ile IncidentManager
System API'si aracılığıyla yönetir.
Cihaz uygulamaları:
- [C-0-2] MUST only include the fields marked with
DEST_AUTOMATIC
in the incident report created by the System API classIncidentManager
. - [C-0-3]
StatsLog
SDK dokümanlarında açıklanan etkinlikler dışında başka bir etkinliği günlüğe kaydetmek için sistem etkinliği tanımlayıcıları KULLANILMAMALIDIR. Ek sistem etkinlikleri kaydedilirse 100.000 ile 200.000 arasındaki aralıkta farklı bir atom tanımlayıcısı KULLANILABİLİR.
9.8.2. Kayıt
Cihaz uygulamaları:
- [C-0-1] Kullanıcının izni veya devam eden net bildirimler olmadan kullanıcının kişisel bilgilerini (ör. tuş vuruşları, ekranda gösterilen metin, hata raporu) cihazdan gönderen yazılım bileşenleri kutudan çıkarıldığında önceden yüklenmemeli veya dağıtılmamalıdır.
- [C-0-2]
MediaProjection
veya tescilli API'ler aracılığıyla ekran yayını ya da ekran kaydı etkinleştirildiğinde kullanıcının ekranında gösterilen hassas bilgilerin yakalanmasına izin veren açık kullanıcı izni GÖSTERİLMELİ ve ALINMALIDIR. Kullanıcılara, kullanıcı izninin gelecekte gösterilmesini devre dışı bırakma olanağı SUNULMAMALIDIR. - [C-0-3] Ekran yayını veya ekran kaydı etkinleştirildiğinde kullanıcıya sürekli bir bildirim gösterilmelidir. AOSP, durum çubuğunda devam eden bir bildirim simgesi göstererek bu şartı karşılar.
Cihaz uygulamaları, sistemde ekran üzerinde gösterilen içerikleri yakalayan ve/veya cihazda çalınan ses akışını Sistem API'si ContentCaptureService
dışında kaydeden işlevler içeriyorsa ya da Bölüm 9.8.6 İçerik Yakalama'da açıklanan diğer tescilli yöntemleri kullanıyorsa:
- [C-1-1] Bu işlev etkinleştirildiğinde ve aktif olarak yakalama/kayıt yapıldığında kullanıcıya sürekli bir bildirim GÖSTERİLMELİDİR.
Cihaz uygulamaları, ortam sesini kaydetme ve/veya cihazda çalınan sesi kaydetme özelliğiyle kullanıcının bağlamı hakkında faydalı bilgiler elde etme imkanı sunan, kutudan çıkarıldığında etkinleştirilmiş bir bileşen içeriyorsa:
- [C-2-1] Kaydedilen ham ses veya orijinal sese ya da neredeyse aynı olan bir kopyaya geri dönüştürülebilen herhangi bir biçim, kullanıcının açık izni olmadan cihazdaki kalıcı depolama alanında saklanmamalı veya cihazın dışına aktarılmamalıdır.
9.8.3. Bağlantı
Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:
- [C-1-1] USB bağlantı noktası üzerinden paylaşılan depolama alanının içeriğine erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü SUNULMALIDIR.
9.8.4. Ağ Trafiği
Cihaz uygulamaları:
- [C-0-1] Sistem tarafından güvenilen Sertifika Yetkilisi (CA) deposu için, yukarı akış Android Açık Kaynak Projesi'nde sağlanan kök sertifikalarla aynı kök sertifikalar önceden yüklenmelidir.
- [C-0-2] Boş bir kullanıcı kök CA deposuyla gönderilmelidir.
- [C-0-3] Kullanıcı kök CA'sı eklendiğinde, ağ trafiğinin izlenebileceğini belirten bir uyarı kullanıcıya GÖSTERİLMELİDİR.
Cihaz trafiği VPN üzerinden yönlendiriliyorsa cihaz uygulamaları:
- [C-1-1] Kullanıcıya aşağıdakilerden birini belirten bir uyarı GÖSTERİLMELİDİR:
- Bu ağ trafiği izlenebilir.
- Bu ağ trafiği, VPN'i sağlayan belirli VPN uygulaması üzerinden yönlendirilir.
Cihaz uygulamalarında, ağ verisi trafiğini bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN
izniyle bir VPN hizmetini önceden yükleme) ve varsayılan olarak kutudan çıkarıldığında etkin olan bir mekanizma varsa:
- [C-2-1] Bu VPN,
DevicePolicyManager.setAlwaysOnVpnPackage()
aracılığıyla Cihaz Politikası Denetleyicisi tarafından 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, yalnızca bilgilendirilmesi YETERLİDİR.
Cihaz uygulamaları, üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için kullanıcıya bir kolaylık sunuyorsa:
- [C-3-1]
AndroidManifest.xml
dosyasında her zaman açık VPN hizmetini desteklemeyen uygulamalar için bu kullanıcı kolaylığını,SERVICE_META_DATA_SUPPORTS_ALWAYS_ON
özelliğinifalse
olarak ayarlayarak DEVRE DIŞI BIRAKMALIDIR.
9.8.5. Cihaz Tanımlayıcıları
Cihaz uygulamaları:
- [C-0-1] Aşağıdaki koşullardan birini karşılamadığı sürece, cihazın seri numarasına ve geçerli olduğu durumlarda IMEI/MEID, SIM seri numarası ve Uluslararası Mobil Abone Kimliği'ne (IMSI) uygulamadan erişimi ENGELLEMELİDİR:
- Cihaz üreticileri tarafından doğrulanmış, imzalı bir operatör uygulamasıdır.
READ_PRIVILEGED_PHONE_STATE
izni verilmiş olmalıdır.- UICC Carrier Privileges'da tanımlandığı şekilde operatör ayrıcalıklarına sahip olmalıdır.
READ_PHONE_STATE
izni verilmiş bir cihaz sahibi veya profil sahibi olmalıdır.- (Yalnızca SIM seri numarası/ICCID için) Uygulamanın, abonenin kimliğindeki değişiklikleri algılamasıyla ilgili yerel düzenleme şartı vardır.
9.8.6. İçerik Yakalama
Android, System API ContentCaptureService
aracılığıyla veya diğer tescilli yöntemlerle cihaz uygulamalarının uygulamalar ile kullanıcı arasındaki aşağıdaki etkileşimleri yakalamasına yönelik bir mekanizmayı destekler.
AssistStructure
API'si aracılığıyla bildirimler ve yardım verileri dahil ancak bunlarla sınırlı olmamak üzere ekranda oluşturulan metin ve grafikler.- Cihaz tarafından kaydedilen veya oynatılan ses ya da video gibi medya verileri
- Giriş etkinlikleri (ör. tuş, fare, hareket, ses, video ve erişilebilirlik).
- Bir uygulamanın
Content Capture
API'si veya benzer şekilde yetenekli, tescilli bir API aracılığıyla sisteme sağladığı diğer tüm etkinlikler. TextClassifier API
aracılığıyla System TextClassifier'a (yani metnin anlamını anlamak ve metne dayalı olarak tahmin edilen sonraki işlemleri oluşturmak için kullanılan 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 verilerin tümü ŞİFRELENMELİDİR. Bu şifreleme, Android Dosya Tabanlı Şifreleme veya Cipher SDK'da API sürümü 26+ olarak listelenen şifrelerden herhangi biri kullanılarak YAPILABİLİR.
- [C-1-2] Android yedekleme yöntemlerini veya başka bir yedekleme yöntemini kullanarak ham ya da şifrelenmiş verileri YEDEKLEMEMELİDİR.
- [C-1-3] Bu tür verilerin ve cihazın günlüğünün tamamını yalnızca gizliliği koruyan bir mekanizma kullanarak göndermelidir. Gizliliği korumaya yönelik mekanizma, "yalnızca toplu analizlere izin veren ve kaydedilen etkinliklerin veya türetilmiş sonuçların tek tek kullanıcılarla eşleştirilmesini engelleyen" olarak tanımlanır.Bu sayede, kullanıcı başına verilerin incelenmesi önlenir (ör.
RAPPOR
gibi farklı gizlilik teknolojisi kullanılarak uygulanır). - [C-1-4] Bu tür veriler, her ilişkilendirme için açık kullanıcı izni alınmadığı sürece cihazdaki herhangi bir kullanıcı kimliğiyle (ör.
Account
) ilişkilendirilmemelidir. - [C-1-5] Bu tür veriler, her paylaşıldığında kullanıcının açık izni alınmadığı sürece diğer uygulamalarla PAYLAŞILMAMALIDIR.
- [C-1-6] Veriler cihazda herhangi bir biçimde depolanıyorsa
ContentCaptureService
veya tescilli araçlar tarafından toplanan bu tür verilerin silinmesi için kullanıcıya olanak TANINMALIDIR.
Cihaz uygulamaları, Sistem API'sini ContentCaptureService
uygulayan bir hizmet veya verileri yukarıda açıklandığı şekilde yakalayan herhangi bir tescilli hizmet içeriyorsa:
- [C-2-1] Kullanıcıların, içerik yakalama hizmetini kullanıcı tarafından yüklenebilen bir uygulama veya hizmetle değiştirmesine İZİN VERİLMEMELİ ve bu tür verilerin yalnızca önceden yüklenmiş hizmet tarafından yakalanmasına İZİN VERİLMELİ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 VERİLMEMELİDİR.
- [C-2-3] İçerik yakalama hizmetini devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR.
- [C-2-4] İçerik yakalama hizmetinin sahip olduğu Android izinlerini yönetmek için kullanıcı kolaylığı sağlanmalıdır ve Bölüm 9.1'de açıklandığı gibi Android izin modeli izlenmelidir. İzin.
-
[C-SR] İçerik yakalama hizmeti bileşenlerinin ayrı tutulması ŞİDDETLE TAVSİYE EDİLİR. Örneğin, hizmeti bağlamayın veya işlem kimliklerini aşağıdaki bileşenler hariç diğer sistem bileşenleriyle paylaşmayın:
- Telefon, Kişiler, Sistem Kullanıcı Arayüzü ve Medya
9.8.7. Pano Erişimi
Cihaz uygulamaları:
- [C-0-1] Uygulama varsayılan IME değilse veya şu anda odaklanılmış uygulama değilse panoda kırpılmış veriler (ör.
ClipboardManager
API'si aracılığıyla) döndÜRÜLMEMELİDİR.
9.8.8. Konum
Cihaz uygulamaları:
- [C-0-1] Kullanıcının açık izni veya kullanıcı başlatması olmadan cihazın konum ayarı ile kablosuz/Bluetooth tarama ayarları AÇILMAMALI/KAPATILMAMALIDIR.
- [C-0-2] Kullanıcıya, son konum istekleri, uygulama düzeyinde izinler ve konumu belirlemek için kablosuz/Bluetooth taramasının kullanımı dahil olmak üzere konumla ilgili bilgilere erişme olanağı SAĞLANMALIDIR.
- [C-0-3] Acil Durum Konumunu 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'de, bir kaza/olay algılandığında araç, etkin kullanıcı etkileşimi olmadan acil durum oturumu başlatabilir (ör. eCall şartlarını karşılamak için).
- [C-0-4] Acil Durum Konumunu Atlatma API'sinin, ayarları değiştirmeden cihaz konum ayarlarını atlatma özelliği KORUNMALIDIR.
- [C-0-5] Arka plandaki bir uygulama, [
ACCESS_BACKGROUND_LOCATION
] iznini kullanarak kullanıcının konumuna eriştiğinde kullanıcıyı hatırlatan bir bildirim planLANMALIDIR.
9.8.9. Yüklü uygulamalar
API düzeyi 30 veya sonraki sürümleri hedefleyen Android uygulamaları, varsayılan olarak diğer yüklü uygulamalarla ilgili ayrıntıları göremez (Android SDK belgelerindeki Paket görünürlüğü bölümüne bakın).
Cihaz uygulamaları:
- [C-0-1] Uygulama, yönetilen API'ler aracılığıyla diğer yüklü uygulamayla ilgili ayrıntıları görme iznine sahip değilse API düzeyi 30 veya üstünü hedefleyen hiçbir uygulamaya diğer yüklü uygulamalarla ilgili ayrıntıları sunMAMALIDIR. Bu, cihaz uygulayıcısı tarafından eklenen veya dosya sistemi üzerinden erişilebilen özel API'ler tarafından açığa çıkarılan ayrıntıları içerir ancak bunlarla sınırlı değildir.
9.8.10. Bağlantı Hata Raporu
Cihaz uygulamaları, BugreportManager ile System API BUGREPORT_MODE_TELEPHONY
kullanarak hata raporları oluşturuyorsa:
- [C-1-1] Sistem API'si
BUGREPORT_MODE_TELEPHONY
bir rapor oluşturmak için her çağrıldığında kullanıcı izni ALINMALIDIR ve kullanıcıdan uygulamadan gelen tüm gelecekteki istekleri onaylaması İSTENMEMELİDİR. - [C-1-2] Raporlar oluşturulmaya başlandığında açık kullanıcı izni GÖSTERİLMELİ ve ALINMALIDIR. Oluşturulan rapor, açık kullanıcı izni olmadan istekte bulunan uygulamaya döndÜRÜLMEMELİDİR.
- [C-1-3] En azından aşağıdaki bilgileri içeren istenen raporları OLUŞTURMALIDIR:
- TelephonyDebugService dökümü
- TelephonyRegistry dökümü
- WifiService dökümü
- ConnectivityService dökümü
- Arayan paketin 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ıklamasıyla ilgisi olmayan her türlü bilgi.
- Kullanıcı tarafından yüklenen uygulama trafiği günlükleri veya kullanıcı tarafından yüklenen uygulamaların/paketlerin ayrıntılı profilleri (UID'ler kabul edilir, paket adları kabul edilmez).
- Herhangi bir kullanıcı kimliğiyle ilişkilendirilmeyen ek bilgiler İÇEREBİLİR. (ör. tedarikçi günlükleri).
Cihaz uygulamaları hata raporuna ek bilgiler (ör.satıcı günlükleri) ekliyorsa ve bu bilgiler gizlilik/güvenlik/pil/depolama/bellek üzerinde etki yaratıyorsa:
- [C-SR] Geliştirici ayarının varsayılan olarak devre dışı bırakılması KESİNLİKLE ÖNERİLİR. AOSP, geliştirici ayarlarında
Enable verbose vendor logging
seçeneğini sunarak bu koşulu karşılar. Bu seçenek, cihaza özgü ek satıcı günlüklerinin hata raporlarına dahil edilmesini sağlar.
9.8.11. Veri bloblarını paylaşma
Android, BlobStoreManager aracılığıyla uygulamaların, seçilen bir uygulama grubuyla paylaşılmak üzere Sisteme veri blobları göndermesine olanak tanır.
Cihaz uygulamaları, SDK dokümanlarında açıklandığı gibi paylaşılan veri blob'larını destekliyorsa:
- [C-1-1] Uygulamalara ait veri blobları, izin verilmesi amaçlanan kapsamın (ör. varsayılan erişim kapsamı ve BlobStoreManager.session#allowPackageAccess(), BlobStoreManager.session#allowSameSignatureAccess() veya BlobStoreManager.session#allowPublicAccess() kullanılarak belirtilebilen diğer erişim modları) ötesinde paylaşılMAMALIDIR. AOSP referans uygulaması bu koşulları karşılar.
- [C-1-2] Veri bloblarının (erişimi kontrol etmek için kullanılan) güvenli karma değerleri cihazdan dışarı gönderilmemeli veya diğer uygulamalarla paylaşılmamalıdır.
9.9. Veri Depolama Şifrelemesi
Tüm cihazlar, 9.9.1 bölümündeki şartları KARŞILAMALIDIR. Bu belgedeki API düzeyinden daha eski bir API düzeyinde kullanıma sunulan cihazlar, 9.9.2 ve 9.9.3 bölümlerindeki şartlardan muaftır. Bunun yerine, cihazın kullanıma sunulduğu API düzeyine karşılık gelen Android Uyumluluk Tanımı belgesinin 9.9 bölümündeki şartları KARŞILAMALIDIR.
9.9.1. Doğrudan Başlatma
Cihaz uygulamaları:
-
[C-0-1] Depolama Şifreleme'yi desteklemeseler bile Direct Boot modu API'lerini uygulamalıdır.
-
[C-0-2]
ACTION_LOCKED_BOOT_COMPLETED
veACTION_USER_UNLOCKED
amaçları, doğrudan başlatmaya uygun uygulamalara cihaz şifrelemeli (DE) ve kimlik bilgisi şifrelemeli (CE) depolama konumlarının kullanıcı için kullanılabilir olduğunu bildirmek üzere yayınlanmaya DEVAM ETMELİDİR.
9.9.2. Şifreleme koşulları
Cihaz uygulamaları:
- [C-0-1] Uygulama özel verileri (
/data
bölümü) ve cihazın kalıcı, çıkarılamayan bir parçasıysa uygulama ortak depolama bölümü (/sdcard
bölümü) ŞİFRELENMELİDİR. - [C-0-2] Kullanıcı, ilk çalıştırma deneyimi kurulumunu tamamladığında veri depolama şifrelemesi varsayılan olarak ETKİNLEŞTİRİLMELİDİR.
-
[C-0-3] Aşağıdaki iki şifreleme yönteminden birini uygulayarak yukarıdaki veri depolama şifreleme şartını KARŞILAMALIDIR:
- Bölüm 9.9.3.1'de açıklandığı gibi Dosya Tabanlı Şifreleme (FBE) ve Meta Veri Şifreleme.
- Bölüm 9.9.3.2'de açıklandığı gibi kullanıcı başına blok düzeyinde şifreleme.
9.9.3. Şifreleme Yöntemleri
Cihaz uygulamaları şifrelenmişse:
- [C-1-1] Kullanıcıdan kimlik bilgisi istemeden başlatılmalı ve
ACTION_LOCKED_BOOT_COMPLETED
mesajı yayınlandıktan sonra Doğrudan Başlatma özelliğini destekleyen uygulamaların Cihaz Şifreleme (DE) depolama alanına erişmesine izin verilmelidir. - [C-1-2] Kullanıcı, kimlik bilgilerini (ör. geçiş kodu, PIN, desen veya parmak izi) girerek cihazın kilidini açtıktan ve
ACTION_USER_UNLOCKED
mesajı yayınlandıktan sonra yalnızca Kimlik Bilgisi Şifreli (CE) depolama alanına erişime İZİN VERİLMELİDİR. - [C-1-13] Kullanıcı tarafından sağlanan kimlik bilgileri, kayıtlı bir emanet anahtarı veya bölüm 9.9.4'teki şartları karşılayan yeniden başlatma sonrası devam ettirme uygulaması olmadan CE korumalı depolama alanının kilidini açmak için herhangi bir yöntem SUNULMAMALIDIR.
- [C-1-4] Doğrulanmış Başlatma KULLANILMALIDIR.
9.9.3.1. Meta Veri Şifreleme ile Dosya Tabanlı Şifreleme
Cihaz uygulamaları, meta veri şifrelemeli dosya tabanlı şifreleme kullanıyorsa:
- [C-1-5] Dosya içerikleri ve dosya sistemi meta verileri AES-256-XTS veya Adiantum kullanılarak ŞİFRELENMELİDİR. AES-256-XTS, XTS modunda çalıştırılan 256 bit şifreleme anahtarı uzunluğuna sahip Gelişmiş Şifreleme Standardı'nı ifade eder. Anahtarın tam uzunluğu 512 bittir. Adiantum, https://github.com/google/adiantum adresinde belirtildiği şekilde Adiantum-XChaCha12-AES'i ifade eder. Dosya sistemi meta verileri; dosya boyutları, sahiplik, modlar ve genişletilmiş özellikler (xattrs) gibi verilerdir.
- [C-1-6] Dosya adları AES-256-CBC-CTS veya Adiantum kullanılarak ŞİFRELENMELİDİR.
- [C-1-12] Cihazda Gelişmiş Şifreleme Standardı (AES) talimatları (ör. ARM tabanlı cihazlarda ARMv8 Cryptography Extensions veya x86 tabanlı cihazlarda AES-NI) varsa dosya adı, dosya içeriği ve dosya sistemi meta verileri şifreleme için yukarıdaki AES tabanlı seçenekler KULLANILMALIDIR, Adiantum değil.
- [C-1-13] CE ve DE anahtarlarından gerekli alt anahtarları (ör. dosya başına anahtarlar) türetmek için kriptografik olarak güçlü ve geri döndürülemez bir anahtar türetme işlevi (ör. HKDF-SHA512) KULLANILMALIDIR. "Şifreleme açısından güçlü ve geri döndürülemez", anahtar türetme işlevinin en az 256 bitlik bir güvenlik gücüne sahip olduğu ve girişleri üzerinde sözde rastgele işlev ailesi gibi davrandığı anlamına gelir.
-
[C-1-14] Farklı şifreleme amaçları için (ör. hem şifreleme hem de anahtar türetme veya iki farklı şifreleme algoritması için) aynı dosya tabanlı şifreleme (FBE) anahtarları veya alt anahtarları KULLANMAMALIDIR.
-
CE ve DE depolama alanlarını ve dosya sistemi meta verilerini koruyan anahtarlar:
-
[C-1-7] Donanım destekli bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma'ya ve cihazın donanım güven köküne BAĞLI OLMALIDIR.
- [C-1-8] CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine BAĞLANMALIDIR.
- [C-1-9] Kullanıcı kilit ekranı kimlik bilgilerini belirtmediyse CE anahtarları varsayılan bir şifre koduna bağlanmalıdır.
- [C-1-10] Benzersiz ve farklı OLMALIDIR. Başka bir deyişle, hiçbir kullanıcının CE veya DE anahtarı başka bir kullanıcının CE veya DE anahtarıyla eşleşmemelidir.
-
[C-1-11] Zorunlu olarak desteklenen şifreler, anahtar uzunlukları ve modlar KULLANILMALIDIR.
-
Önceden yüklenmiş temel uygulamalar (ör. Alarm, Telefon, Mesajlaşma) doğrudan başlatma özelliğini desteklemelidir.
Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeğindeki "fscrypt" şifreleme özelliğine dayalı dosya tabanlı şifrelemenin ve Linux çekirdeğindeki "dm-default-key" özelliğine dayalı meta veri şifrelemenin tercih edilen bir uygulamasını sağlar.
9.9.3.2. Kullanıcı Başına Blok Düzeyinde Şifreleme
Cihaz uygulamaları, kullanıcı başına blok düzeyinde şifreleme kullanıyorsa:
- [C-1-1] 9.5 bölümünde açıklandığı gibi çok kullanıcılı desteği ETKİNLEŞTİRMELİDİR.
- [C-1-2] Ham bölümler veya mantıksal birimler kullanarak kullanıcı başına bölümler SAĞLANMALIDIR.
- [C-1-3] Temel blok cihazların şifrelenmesi için kullanıcı başına benzersiz ve farklı şifreleme anahtarları KULLANILMALIDIR.
-
[C-1-4] Kullanıcı bölümlerinin blok düzeyinde şifrelenmesi için AES-256-XTS KULLANILMALIDIR.
-
Kullanıcı başına blok düzeyinde şifrelenmiş cihazları koruyan anahtarlar:
-
[C-1-5] Donanım destekli bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma'ya ve cihazın donanım güven köküne BAĞLI OLMALIDIR.
- [C-1-6] İlgili kullanıcının kilit ekranı kimlik bilgilerine BAĞLI OLMALIDIR.
Kullanıcı başına blok düzeyinde şifreleme, kullanıcı başına bölümlerde Linux çekirdeğinin "dm-crypt" özelliği kullanılarak uygulanabilir.
9.9.4. Yeniden Başlatmada Devam Ettirme
Yeniden başlatmada devam etme özelliği, OTA tarafından başlatılan yeniden başlatma işleminden sonra, henüz doğrudan başlatmayı desteklemeyenler de dahil olmak üzere tüm uygulamaların CE 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ını sağlar.
Yeniden başlatmada devam ettirme özelliğinin uygulanması, bir cihaz saldırganın eline geçtiğinde saldırganın, cihaz açık olsa, CE depolama alanı kilidi açılmış olsa ve kullanıcı OTA aldıktan sonra cihazın kilidini açmış olsa bile kullanıcının CE ile şifrelenmiş verilerini kurtarmasının son derece zor olmasını sağlamaya devam etmelidir. Çalışanların oluşturduğu saldırılara karşı direnç için saldırganın, yayın şifreleme imzalama anahtarlarına erişim kazandığını da 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 OKUNAMAZ:
- Rastgele iletileri imzalamak için herhangi bir satıcının veya şirketin imzalama anahtarını kullanabilir.
- Cihazın OTA almasına neden olabilir.
- Aşağıda ayrıntılı olarak açıklananlar dışında herhangi bir donanımın (AP, flash vb.) çalışmasını değiştirebilir ancak bu tür değişiklikler en az bir saatlik gecikmeye ve RAM içeriğini yok eden bir güç döngüsüne neden olur.
- Kurcalamaya karşı korumalı donanımın (ör. Titan M) çalışması değiştirilemez.
- Canlı cihazın RAM'i okunamıyor.
- Kullanıcının kimlik bilgisini (PIN, desen, şifre) alamaz 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 olacaktır.
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'si yöntemi aracılığıyla
PersistentDataBlockManager.getFlashLockState()
, önyükleyici durumunun sistem görüntüsünün yüklenmesine izin verip vermediğini doğru şekilde bildirmelidir.FLASH_LOCK_UNKNOWN
durumu, bu yeni sistem API'si yönteminin mevcut olmadığı Android'in önceki bir sürümünden yükseltme yapan cihaz uygulamaları için ayrılmıştır. -
[C-0-2] Cihaz bütünlüğü için Doğrulanmış Başlatma'yı DESTEKLEMELİDİR.
Cihaz uygulamaları, Android'in önceki bir sürümünde Doğrulanmış Başlatma'yı desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu özellik için destek eklenemiyorsa gereklilikten MUAF TUTULABİLİR.
Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Cihaz uygulamaları bu özelliği destekliyorsa:
- [C-1-1] Platform özellik bayrağı
android.software.verified_boot
BİLDİRİLMELİDİR. - [C-1-2] Her başlatma sırasında doğrulama YAPILMALIDIR.
- [C-1-3] Güvenin kökü olan değişmez bir donanım anahtarından doğrulama başlatılmalı ve sistem bölümüne kadar devam edilmelidir.
- [C-1-4] Bir sonraki aşamadaki kodu yürütmeden önce, bir sonraki aşamadaki tüm baytların bütünlüğünü ve gerçekliğini kontrol etmek için doğrulamanın her aşamasını uygulamalıdır.
- [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'in mevcut önerileri kadar güçlü doğrulama algoritmaları KULLANILMALIDIR.
- [C-1-6] Kullanıcı yine de başlatmayı denemeyi kabul etmediği sürece, sistem doğrulaması başarısız olduğunda başlatmanın tamamlanmasına İZİN VERİLMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALIDIR.
- [C-1-7] Kullanıcı, önyükleyiciyi açıkça kilidini açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERİLMEMELİDİR.
- [C-SR] Cihazda birden fazla ayrı çip varsa (ör. radyo, özel görüntü işleme birimi) her bir çipin başlatma sürecinde, başlatma sırasında her aşamanın doğrulanması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-8] Önyükleyicinin kilidinin açık olup olmadığını depolamak için kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR. Kurcalamaya karşı korumalı depolama, önyükleyicinin depolamanın Android'in içinden kurcalanıp kurcalanmadığını algılayabileceği anlamına gelir.
- [C-1-9] Cihaz kullanılırken kullanıcıya istem göstermeli ve bootloader'ın kilitli olduğu moddan bootloader'ın kilidinin açık olduğu moda geçişe izin vermeden önce fiziksel onay istemelidir.
- [C-1-10] Android tarafından kullanılan bölümler (ör. önyükleme, sistem bölümleri) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum işletim sistemi sürümünü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.
- [C-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ı ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Ayrıcalıklı bir uygulama tarafından APK dosyası dışından yüklenen yürütülebilir yapıtların (ör. dinamik olarak yüklenen kod veya derlenmiş kod) yürütülmeden önce doğrulanması ŞİDDETLE TAVSİYE EDİLİR veya hiç yürütülmemesi ŞİDDETLE TAVSİYE EDİLİR.
- Kalıcı yazılıma sahip tüm bileşenler (ör. modem, kamera) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum sürümü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.
Cihaz uygulamaları, Android'in önceki bir sürümünde C-1-8 ile C-1-10 arasındaki gereksinimleri desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu gereksinimler için destek eklenemiyorsa gereksinimlerden MUAF TUTULABİLİR.
Yukarı akış Android Açık Kaynak Projesi, bu özelliğin external/avb/
deposunda tercih edilen bir uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleyiciye entegre edilebilir.
Cihaz uygulamaları:
- [C-0-3] Dosyanın tamamını okumadan dosya içeriğini güvenilir bir anahtara karşı kriptografik olarak doğrulamayı DESTEKLEMELİDİR.
- [C-0-4] Okunan içerik güvenilir bir anahtarla doğrulanmadığında, korunan bir dosyadaki okuma isteklerinin başarılı olmasına İZİN VERİLMEMELİDİR.
Cihaz uygulamaları, dosya içeriğini önceki bir Android sürümünde güvenilir bir anahtara göre doğrulama özelliği olmadan başlatıldıysa ve sistem yazılımı güncellemesiyle bu özellik için destek eklenemiyorsa bu şarttan MUAF TUTULABİLİR. Yukarı akış Android Açık Kaynak Projesi, bu özelliğin Linux çekirdeği fs-verity özelliğine dayalı olarak 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'si içintrue
raporlanmalıdır. -
[C-3-2] Çekirdeği de dahil olmak üzere Android işletim sisteminde çalışan kodun, kötü amaçlı olsun veya olmasın, kullanıcı etkileşimi olmadan olumlu yanıt oluşturamayacağından EMİN OLMALIDIR.
-
[C-3-3] Çekirdeği de dahil olmak üzere Android işletim sisteminin güvenliği ihlal edilmiş olsa bile kullanıcının istem mesajını inceleyip onaylayabilmesini SAĞLAMALIDIR.
9.11. Anahtarlar ve Kimlik Bilgileri
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları bir kapsayıcıda depolamasına ve KeyChain API veya Keystore API aracılığıyla kriptografik işlemlerde kullanmasına olanak tanır. Cihaz uygulamaları:
- [C-0-1] En az 8.192 anahtarın içe aktarılmasına veya oluşturulmasına İZİN VERİLMELİDİR.
- [C-0-2] Kilit ekranı kimlik doğrulamasında deneme sayısı sınırlandırılmalı ve üstel geri çekilme algoritması kullanılmalıdır. 150 başarısız denemeden sonra, her deneme için gecikme SÜRESİ en az 24 saat OLMALIDIR.
- Oluşturulabilecek anahtar sayısını SINIRLAMAMALIDIR.
Cihaz uygulaması güvenli bir kilit ekranını desteklediğinde:
- [C-1-1] MUST back up the keystore implementation with an isolated execution environment.
- [C-1-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 ailesi karma oluşturma işlevlerinin uygulamalarına SAHİP OLMALIDIR. Güvenli izolasyon, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole edilmiş ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
- [C-1-3] Kilit ekranı kimlik doğrulaması, izole edilmiş yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Bu şartı karşılamak için Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty, yukarı akış Android Açık Kaynak Projesi tarafından sağlanır.
- [C-1-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Anahtarların cihaz tanımlayıcı olarak kullanılmasını önlemek için onay imzalama anahtarları yeterli sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamanın bir yolu,belirli bir SKU'nun en az 100.000 birimi üretilmediği sürece aynı onay anahtarını paylaşmaktır. Bir SKU'nun 100.000'den fazla birimi üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulduysa bu cihaz, android.hardware.fingerprint
özelliğini (izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektirir) beyan etmediği sürece, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaftır.
- [C-1-5] Kilitli olmayan durumdan kilitli duruma geçiş için uyku zaman aşımını seçmesine izin VERİLMELİDİR. İzin verilen minimum zaman aşımı 15 saniyedir. Baş ünite kapatıldığında veya kullanıcı değiştirildiğinde ekranı kilitleyen otomotiv cihazlarında uyku zaman aşımı yapılandırması OLMAYABİLİR.
9.11.1. Güvenli kilit ekranı ve kimlik doğrulama
AOSP uygulaması, bilgi faktörüne dayalı birincil kimlik doğrulamanın ikincil güçlü bir biyometri veya daha zayıf üçüncül yöntemlerle desteklenebileceği katmanlı bir kimlik doğrulama modelini izler.
Cihaz uygulamaları:
- [C-SR] Aşağıdakilerden yalnızca birinin birincil kimlik doğrulama yöntemi olarak ayarlanması ŞİDDETLE TAVSİYE EDİLİR:
- Sayısal bir PIN
- Alfanümerik bir şifre
- Tam olarak 3x3 noktalı bir ızgarada kaydırma deseni
Yukarıdaki kimlik doğrulama yöntemlerinin bu belgede önerilen birincil kimlik doğrulama yöntemleri olarak adlandırıldığını unutmayın.
Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yol olarak yeni bir kimlik doğrulama yöntemi kullanırsa yeni kimlik doğrulama yöntemi:
- [C-2-1] Anahtar Kullanımı İçin Kullanıcı Kimlik Doğrulaması Gerektirme bölümünde açıklandığı gibi kullanıcı kimlik doğrulama yöntemi OLMALIDIR.
Cihaz uygulamaları, bilinen bir sırra dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bunları değiştirirse ve ekranı kilitlemenin güvenli bir yolu olarak kabul edilecek yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-3-1] Girişlerin izin verilen en kısa uzunluğunun entropisi 10 bit'ten büyük OLMALIDIR.
- [C-3-2] Olası tüm girişlerin maksimum entropisi 18 bit'ten büyük OLMALIDIR.
- [C-3-3] Yeni kimlik doğrulama yöntemi, AOSP'de uygulanan ve sağlanan önerilen birincil kimlik doğrulama yöntemlerinin (ör. PIN, desen, şifre) hiçbirinin yerini ALMAMALIDIR.
- [C-3-4] Cihaz Politikası Denetleyicisi (DPC) uygulaması,
DevicePolicyManager.setPasswordQuality()
yöntemiylePASSWORD_QUALITY_SOMETHING
değerinden daha kısıtlayıcı bir kalite sabitiyle şifre kalitesi politikasını 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 sürede önerilen birincil kimlik doğrulama yöntemlerine (ör. PIN, desen, şifre) geri dönmelidir YA DA kullanıcının verilerinin gizliliğini korumak için bazı verilerin yedeklenmeyeceğini açıkça belirtmelidir.
Cihaz uygulamaları, kilit ekranının kilidini açmak için önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemenin güvenli bir yolu olarak kabul edilecek biyometriye dayalı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:
- [C-4-1] 1. Sınıf (eski adıyla Kolaylık) için 7.3.10 bölümünde açıklanan tüm koşulları karşılamalıdır.
- [C-4-2] Bilinen bir sırra dayalı olan, önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmaya SAHİP OLMALIDIR.
- [C-4-3] MUST be disabled and only allow the recommended primary authentication to unlock the screen when the Device Policy Controller (DPC) application has set the keyguard feature policy by calling the method
DevicePolicyManager.setKeyguardDisabledFeatures()
, with any of the associated biometric flags (i.e.KEYGUARD_DISABLE_BIOMETRICS
,KEYGUARD_DISABLE_FINGERPRINT
,KEYGUARD_DISABLE_FACE
, orKEYGUARD_DISABLE_IRIS
).
Biyometrik kimlik doğrulama yöntemleri, bölüm 7.3.10'da açıklandığı gibi Sınıf 3 (eski adıyla Güçlü) şartlarını karşılamıyorsa:
- [C-5-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması,
PASSWORD_QUALITY_BIOMETRIC_WEAK
değerinden daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla şifre kalitesi politikasını ayarladıysa yöntemler DEVRE DIŞI BIRAKILMALIDIR. - [C-5-2] Kullanıcı, bölüm 7.3.10'daki [C-1-7] ve [C-1-8]'de açıklandığı gibi önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için zorunlu olarak sorgulanmalıdır.
- [C-5-3] Yöntemler güvenli kilit ekranı olarak değerlendirilmemeli ve aşağıdaki bu bölümde C-8 ile başlayan koşulları karşılamalıdır.
Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bunları değiştirirse ve yeni kimlik doğrulama yöntemi fiziksel bir jetona ya da konuma dayanıyorsa:
- [C-6-1] Bilinen bir sırra dayalı olan ve güvenli bir kilit ekranı olarak kabul edilme şartlarını karşılayan, önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için geri dönüş mekanizması OLMALIDIR.
- [C-6-2] Yeni yöntem DEVRE DIŞI BIRAKILMALIDIR ve Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı
PASSWORD_QUALITY_UNSPECIFIED
'dan daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)
yöntemi veyaDevicePolicyManager.setPasswordQuality()
yöntemiyle ayarladığında ekranın kilidinin açılması için yalnızca önerilen birincil kimlik doğrulama yöntemlerinden birine izin verilmelidir. - [C-6-3] Kullanıcı, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle en az 4 saatte bir veya daha kısa aralıklarla sorgulanmalıdır.
- [C-6-4] Yeni yöntem, güvenli bir kilit ekranı olarak değerlendirilmemeli 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
System API'yi uygulayan bir veya daha fazla güven aracısı varsa:
- [C-7-1] Cihaz kilidi ertelendiğinde veya güvenilir aracı(lar) tarafından kilidi açılabildiğinde ayarlar menüsünde ve kilit ekranında net bir gösterge OLMALIDIR. Örneğin, AOSP, ayarlar menüsünde "Otomatik kilitleme ayarı" ve "Güç düğmesiyle anında kilitleme" için metin açıklaması göstererek ve kilit ekranında ayırt edilebilir bir simge kullanarak bu şartı karşılar.
- [C-7-2]
DevicePolicyManager
sınıfındaki tüm güven aracısı API'leri (ör.KEYGUARD_DISABLE_TRUST_AGENTS
sabiti) dikkate alınmalı ve tam olarak uygulanmalıdır. - [C-7-3] Birincil kişisel cihaz olarak kullanılan bir cihazda (ör. el cihazı)
TrustAgentService.addEscrowToken()
işlevi tam olarak uygulanMAMALIDIR ancak genellikle paylaşılan cihaz uygulamalarında (ör. Android TV veya otomotiv cihazı) işlev tam olarak uygulanABİLİR. - [C-7-4]
TrustAgentService.addEscrowToken()
tarafından eklenen tüm depolanmış jetonlar ŞİFRELENMELİDİR. - [C-7-5] Şifreleme anahtarı veya emanet jetonu, anahtarın kullanıldığı cihazda saklanmamalıdır. Örneğin, telefonda depolanan bir anahtarın TV'deki kullanıcı hesabının kilidini açmasına izin verilir. Otomotiv cihazlarında, emanet jetonunun aracın herhangi bir bölümünde depolanmasına izin verilmez.
- [C-7-6] MUST inform the user about the security implications before enabling the escrow token to decrypt the data storage.
- [C-7-7] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizma 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 aralıklarla önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle kimlik doğrulaması İSTENMELİ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, bölüm 7.3.10'daki [C-1-7] ve [C-1-8] bölümlerinde açıklandığı gibi, kullanıcının önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle kimliği doğrulanmalıdır.
- [C-7-10] Güvenli bir kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8'de listelenen kısıtlamalara uymalıdır.
- [C-7-11] Birincil kişisel cihazlarda (ör.elde taşınabilir cihaz) TrustAgent'ların cihazın kilidini açmasına İZİN VERİLMEMELİDİR ve yalnızca halihazırda kilidi açılmış bir cihazı en fazla 4 saat boyunca kilidi açık durumda tutmak için kullanılabilirler. AOSP'deki TrustManagerService'in varsayılan uygulaması bu koşulu karşılar.
- [C-7-12] Depolama cihazından hedef cihaza emanet jetonunu aktarmak için kriptografik olarak güvenli (ör.UKEY2) bir iletişim kanalı KULLANILMALIDIR.
Cihaz uygulamaları, yukarıda açıklandığı gibi güvenli bir kilit ekranı olmayan kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse ve anahtar korumasının kilidini açmak için yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-8-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması,
PASSWORD_QUALITY_UNSPECIFIED
değerinden daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla şifre kalitesi politikasını ayarladığında yeni yöntem DEVRE DIŞI BIRAKILMALIDIR. - [C-8-2]
DevicePolicyManager.setPasswordExpirationTimeout()
tarafından ayarlanan şifre geçerlilik sonu zamanlayıcılarını sıfırlamamalıdır. - [C-8-3] Kilit durumunu değiştirmek için üçüncü taraf uygulamalarının kullanabileceği bir API sunMAMALIDIR.
9.11.2. StrongBox
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları özel bir güvenli işlemcide ve yukarıda açıklanan izole yürütme ortamında depolamasına olanak tanır. Bu tür özel güvenli işlemcilere "StrongBox" adı verilir. Aşağıdaki C-1-3 ile C-1-11 arasındaki şartlar, bir cihazın StrongBox olarak nitelendirilmek için karşılaması gereken şartları tanımlar.
Özel bir güvenli işlemciye sahip cihaz uygulamaları:
- [C-SR] StrongBox'ı desteklemek için ŞİDDETLE TAVSİYE EDİLİR. StrongBox, gelecekteki bir sürümde zorunlu hale gelebilir.
Cihaz uygulamaları StrongBox'ı destekliyorsa:
-
[C-1-1] FEATURE_STRONGBOX_KEYSTORE beyan EDİLMELİDİR.
-
[C-1-2] Anahtar deposunu yedeklemek ve kullanıcı kimlik doğrulamasını güvenli hale getirmek için kullanılan özel bir güvenli donanım SAĞLANMALIDIR. Özel güvenli donanım başka amaçlar için de kullanılabilir.
-
[C-1-3] Önbelleği, DRAM'i, yardımcı işlemcileri veya diğer temel kaynakları uygulama işlemcisi (AP) ile paylaşmayan ayrı bir CPU'ya SAHİP OLMALIDIR.
-
[C-1-4] AP ile paylaşılan tüm çevre birimlerinin StrongBox işlemesini hiçbir şekilde değiştiremeyeceğinden veya StrongBox'tan herhangi bir bilgi alamayacağından EMİN OLMALIDIR. AP, StrongBox'a erişimi devre dışı bırakabilir veya engelleyebilir.
-
[C-1-5] AP'nin manipülasyonuna karşı bağışıklığı olan, makul doğrulukta (+-%10) bir dahili saate SAHİP OLMALIDIR.
-
[C-1-6] MUST have a true random number generator that produces uniformly-distributed and unpredictable output.
-
[C-1-7] Fiziksel nüfuz ve aksaklıklara karşı direnç de dahil olmak üzere kurcalamaya karşı dirençli OLMALIDIR.
-
[C-1-8] Güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla bilgi sızdırılmasına karşı direnç de dahil olmak üzere yan kanal direnci OLMALIDIR.
-
[C-1-9] İçeriğin gizliliğini, bütünlüğünü, gerçekliğini, tutarlılığını ve güncelliğini sağlayan güvenli depolama alanı OLMALIDIR. StrongBox API'leri tarafından izin verilen durumlar dışında depolama birimi okunamaz veya değiştirilemez.
-
[C-1-3] ile [C-1-9] arasındaki şartlara uygunluğu doğrulamak için cihaz uygulamaları:
- [C-1-10] MUST include the hardware that is certified against the Secure IC Protection Profile BSI-CC-PP-0084-2014 or evaluated by a nationally accredited testing laboratory incorporating High attack potential vulnerability assessment according to the Common Criteria Application of Attack Potential to Smartcards.
- [C-1-11] Ortak Kriterler: Saldırı Potansiyelinin Akıllı Kartlara Uygulanması'na göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesini içeren, ulusal olarak akredite edilmiş bir test laboratuvarı tarafından değerlendirilen donanım yazılımını içermelidir.
- [C-SR] AVA_VAN.5 ile desteklenen bir Güvenlik Hedefi, Değerlendirme Güvence Düzeyi (EAL) 5 kullanılarak değerlendirilen donanımı içermesi ŞİDDETLE TAVSİYE EDİLİR. EAL 5 sertifikası, gelecekteki bir sürümde zorunlu hale gelebilir.
-
[C-SR] öğelerinin, içeriden saldırıya karşı direnç (IAR) sağlaması ŞİDDETLE TAVSİYE EDİLİR. Bu, yazılım imzası anahtarlarına erişimi olan bir içeriden saldırganın, StrongBox'ın sırları sızdırmasına, işlevsel güvenlik şartlarını atlamasına veya hassas kullanıcı verilerine erişimi başka şekilde etkinleştirmesine neden olan yazılımlar üretemeyeceği anlamına gelir. IAR'yi uygulamanın önerilen yolu, donanım yazılımı güncellemelerine yalnızca IAuthSecret HAL üzerinden birincil kullanıcı şifresi sağlandığında izin vermektir.
9.11.3. Identity Credential
Kimlik Bilgisi Sistemi, android.security.identity.*
paketindeki tüm API'ler uygulanarak tanımlanır ve elde edilir. Bu API'ler, uygulama geliştiricilerin kullanıcı kimlik belgelerini saklamasına ve almasına olanak tanır. Cihaz uygulamaları:
- [C-SR] kimlik bilgisi sistemini uygulamaları ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, Kimlik Kimlik Bilgisi Sistemi'ni uyguluyorsa:
-
[C-0-1] IdentityCredentialStore#getInstance() yöntemi için boş olmayan bir değer döndürülmelidir.
-
[C-0-2] Kimlik bilgisi sistemini (ör.
android.security.identity.*
API'leri) çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde yalıtılmış bir alanda güvenilir bir uygulamayla iletişim kuran kodla uygulamalıdır. Güvenli izolasyon, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole edilmiş ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. -
[C-0-3] Kimlik Bilgisi Sistemi'ni uygulamak için gereken şifreleme işlemleri (ör.
android.security.identity.*
API'leri) tamamen güvenilir uygulamada gerçekleştirilmelidir ve özel anahtar materyali, daha üst düzey API'ler (ör. createEphemeralKeyPair() yöntemi) tarafından özellikle gerekmedikçe asla izole edilmiş yürütme ortamından ayrılmamalıdır. -
[C-0-4] Güvenilir uygulama, Android düzgün çalışmıyor veya güvenliği ihlal edilmiş olsa bile güvenlik özelliklerinin etkilenmeyeceği (ör. erişim kontrolü koşulları karşılanmadığı sürece kimlik bilgisi verileri yayınlanmaz, rastgele veriler için MAC'ler oluşturulamaz) şekilde uygulanmalıdır.
9.12. Veri Silme
Tüm cihaz uygulamaları:
- [C-0-1] Kullanıcılara "Fabrika Verilerine Sıfırlama" işlemi yapabilecekleri bir mekanizma SAĞLANMALIDIR.
- [C-0-2] Kullanıcı verileri dosya sistemindeki tüm veriler SİLİNMELİDİR.
- [C-0-3] Verileri, NIST SP800-88 gibi ilgili endüstri standartlarını karşılayacak şekilde SİLMELİDİR.
- [C-0-4] Birincil kullanıcının Cihaz Politikası Denetleyici uygulaması tarafından
DevicePolicyManager.wipeData()
API'si çağrıldığında yukarıdaki"Fabrika Verilerine Sıfırlama" işlemi TETİKLENMELİDİR. - Yalnızca mantıksal veri silme işlemi yapan hızlı bir veri silme seçeneği SUNABİLİR.
9.13. Güvenli Önyükleme Modu
Android, kullanıcılara yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda başlatma olanağı sunan güvenli başlatma modu sağlar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcılara 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 uyguluyorsa:
-
[C-1-1] Üçüncü taraf uygulama bir cihaz politikası denetleyicisi değilse ve
UserManager.DISALLOW_SAFE_BOOT
işaretini doğru olarak ayarlamamışsa cihazda yüklü üçüncü taraf uygulamaları tarafından kesintiye uğratılmayacak şekilde kullanıcıya güvenli modda başlatma seçeneği SUNULMALIDIR. -
[C-1-2] Kullanıcıya, güvenli modda üçüncü taraf uygulamalarını kaldırma özelliği SAĞLANMALIDIR.
-
Kullanıcıya, normal başlatma iş akışından farklı bir iş akışı kullanarak başlatma menüsünden güvenli modda başlatma seçeneği SUNULMALIDIR.
9.14. Otomotiv Araç Sistemi İzolasyonu
Android Automotive cihazların, CAN veri yolu gibi araç ağları üzerinden mesaj göndermek ve almak için araç HAL'ını kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.
Veri alışverişi, bu alt sistemlerle kötü amaçlı veya kasıtsız etkileşimi önlemek için Android framework katmanlarının altında güvenlik özellikleri uygulanarak güvenli hale getirilebilir.
9.15. Abonelik Planları
"Abonelik planları", 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üklememelidir.
- [C-0-3] YALNIZCA şu anda geçerli abonelik planları sunan mobil operatör uygulamasından
SubscriptionManager.setSubscriptionOverrideCongested()
gibi geçersiz kılmalara izin VERİLMELİDİR.
9.16. Uygulama Verilerini Taşıma
Cihaz uygulamaları, verileri bir cihazdan başka bir cihaza taşıma özelliğini içeriyorsa ve kopyaladığı uygulama verilerini, uygulama geliştirici tarafından manifestte android:fullBackupContent özelliği aracılığıyla yapılandırılanlarla sınırlamıyorsa:
- [C-1-1] Kullanıcının 9.11.1 Güvenli Kilit Ekranı ve Kimlik Doğrulama bölümünde açıklandığı gibi birincil kimlik doğrulama ayarlamadığı cihazlardan uygulama verilerinin aktarılmasını BAŞLATMAMALIDIR.
- [C-1-2] Herhangi bir veri aktarılmadan önce kaynak cihazdaki birincil kimlik doğrulama güvenli bir şekilde onaylanmalı ve kaynak cihazdaki verilerin kopyalanması kullanıcı isteğiyle onaylanmalıdır.
- [C-1-3] Cihazdan cihaza geçişte hem kaynak cihazın hem de hedef cihazın meşru Android cihazlar olduğundan ve bootloader'ının kilitli olduğundan emin olmak için güvenlik anahtarı onayı KULLANILMALIDIR.
- [C-1-4] YALNIZCA hedef cihazdaki aynı uygulamaya, aynı paket adı VE imzalama sertifikasıyla uygulama verileri taşınmalıdır.
- [C-1-5] Kaynak cihazda, cihazdan cihaza veri taşıma işlemiyle veri taşındığını gösteren bir ibare ayarlar menüsünde GÖSTERİLMELİDİR. Kullanıcı bu göstergeyi KALDIRMAMALIDIR.
10. Yazılım Uyumluluğu Testi
Cihaz uygulamaları, bu bölümde açıklanan tüm testleri GEÇMELİDİR. Ancak hiçbir yazılım test paketinin tam kapsamlı olmadığını unutmayın. Bu nedenle, cihaz uygulayıcıların Android Açık Kaynak Projesi'nden edinilebilen Android'in referans ve tercih edilen uygulamasında mümkün olduğunca az değişiklik yapması ŞİDDETLE TAVSİYE EDİ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 son gönderim yazılımı kullanılarak Android Açık Kaynak Projesi'nden edinilebilen Android Uyumluluk Test Paketi'ni (CTS) GEÇMELİDİR.
-
[C-0-2] CTS'de belirsizlik olması ve referans kaynak kodunun bazı bölümlerinin yeniden uygulanması durumlarında uyumluluğu SAĞLAMALIDIR.
CTS, gerçek bir cihazda çalıştırılmak üzere tasarlanmıştır. Diğer yazılımlar gibi CTS de hatalar içerebilir. CTS, bu Uyumluluk Tanımı'ndan bağımsız olarak sürü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ü GEÇMELİDİR.
-
Android Açık Kaynak ağacındaki referans uygulamayı mümkün olduğunca çok kullanmalıdır.
10.2. CTS Doğrulayıcı
CTS Verifier, Uyumluluk Test Paketi'ne dahildir ve otomatik bir sistem tarafından test edilemeyen işlevleri (ör. kamera ve sensörlerin doğru çalışması) test etmek için bir operatör tarafından çalıştırılması amaçlanmıştır.
Cihaz uygulamaları:
- [C-0-1] CTS doğrulayıcıdaki geçerli tüm testleri doğru şekilde yürütmelidir.
CTS Verifier, isteğe bağlı olanlar da dahil olmak üzere birçok donanım türü için testler içerir.
Cihaz uygulamaları:
- [C-0-2] Sahip oldukları donanımla ilgili tüm testleri GEÇMELİDİR. Örneğin, bir cihazda ivmeölçer varsa CTS Verifier'daki ivmeölçer test senaryosunu DOĞRU şekilde çalıştırmalıdır.
Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test senaryoları atlanabilir veya çıkarılabilir.
- [C-0-2] Yukarıda belirtildiği gibi, her cihaz ve her derleme, CTS Verifier'ı doğru şekilde ÇALIŞTIRMALIDIR. Ancak birçok derleme çok benzer olduğundan, cihaz uygulayıcıların yalnızca önemsiz şekillerde farklılık gösteren derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Daha açık belirtmek gerekirse, CTS Verifier'ı geçen bir uygulamadan yalnızca dahil edilen yerel ayarlar, markalama vb. açısından farklılık gösteren cihaz uygulamaları CTS Verifier testini ATLAYABİLİR.
11. Güncellenebilir Yazılımlar
-
[C-0-1] Cihaz uygulamaları, sistem yazılımının tamamını değiştirecek bir mekanizma içermelidir. Mekanizmanın "canlı" yükseltme yapması gerekmez. Yani cihazın yeniden başlatılması GEREKEBİLİR. Cihazda önceden yüklenmiş yazılımın tamamını 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üncelleme ile "kablosuz (OTA)" indirmeleri.
- Ana makine PC'sinden USB üzerinden "bağlı" güncellemeler.
- Yeniden başlatma ve çıkarılabilir depolama birimindeki bir dosyadan güncelleme yoluyla "çevrimdışı" güncellemeler.
-
[C-0-2] Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri desteklemelidir. Yani güncelleme mekanizması, uygulamaya özel verileri ve uygulamada paylaşılan verileri KORUMALIDIR. Yukarı akış Android yazılımının bu şartı karşılayan bir güncelleme mekanizması içerdiğini unutmayın.
-
[C-0-3] Güncellemenin tamamı imzalanmalı ve cihazdaki güncelleme mekanizması, güncellemeyi ve imzayı cihazda depolanan bir genel anahtara göre doğrulamalıdır.
- [C-SR] İmzalama mekanizmasının, güncellemeyi SHA-256 ile karma oluşturması ve ECDSA NIST P-256 kullanarak karmayı ortak anahtara göre doğrulaması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sınırsız veri bağlantısı desteği içeriyorsa:
- [C-1-1] Yeniden başlatma yoluyla çevrimdışı güncelleme ile OTA indirmelerini desteklemelidir.
Android 6.0 ve sonraki sürümlerle kullanıma sunulan cihaz uygulamalarında, güncelleme mekanizması, OTA'dan sonra sistem görüntüsünün beklenen sonuçla ikili olarak aynı olduğunu doğrulama özelliğini DESTEKLEMELİDİR. Android 5.1'den beri eklenen, yukarı akış Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu şartı karşılar.
Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP, bu özelliği önyükleme denetimi HAL'sini kullanarak uygular.
Bir cihaz uygulaması yayınlandıktan sonra ancak Android Uyumluluk Ekibi ile istişare edilerek belirlenen ve üçüncü taraf uygulamalarının uyumluluğunu etkileyecek makul ürün ömrü içinde bir hata bulunursa:
- [C-2-1] Cihaz uygulayıcı, hatayı az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesiyle DÜZELTMELİDİR.
Android, cihaz sahibi uygulamasına (varsa) sistem güncellemelerinin yüklenmesini kontrol etme olanağı tanıyan özellikler içerir. Cihazlar için sistem güncelleme alt sistemi android.software.device_admin'i bildiriyorsa:
- [C-3-1] SystemUpdatePolicy sınıfında açıklanan davranış uygulanmalıdır.
12. Doküman değişiklik günlüğü
Bu sürümdeki Uyumluluk Tanımlama Belgesi değişikliklerinin özetini görmek için:
Bölümlerdeki değişikliklerin özeti için:
- 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 ilgili ipuçları
Değişiklikler aşağıdaki şekilde işaretlenir:
-
CDD
Uyumluluk şartlarında önemli değişiklikler yapıldı. -
Docs
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-compatibility forumuna katılarak açıklama isteyebilir veya dokümanda yer almadığını düşündüğünüz sorunları gündeme getirebilirsiniz.