Android 11 Uyumluluk Tanımı

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.

Not: Android tablet cihazlar için geçerli olmayan şartlar * ile işaretlenmiştir.

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 ve VK_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:

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 da KEYCODE_HEADSETHOOK tuşuna uzun basıldığında ACTION_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:

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ından android.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:

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:

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:

  • [5.2/H-0-1] H.264 AVC
  • [5.2/H-0-2] VP8

Elde taşınabilir cihaz uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamalarına sunmalıdır:

  • [5.3/H-0-1] H.264 AVC
  • [5.3/H-0-2] H.265 HEVC
  • [5.3/H-0-3] MPEG-4 SP
  • [5.3/H-0-4] VP8
  • [5.3/H-0-5] VP9

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 ve ACTION_CREATE_DOCUMENT amaçlarını işleyen bir uygulamaya sahip OLMALI ve DocumentsProvider 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 ve NotificationManager 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ırda Notification.Action.Builder.setContextual değerinin true 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şle VoiceInteractionService uygulayan uygulamayı) veya ACTION_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İ ve true olarak ayarlanmalıdır.
  • [3.8.16/H-1-2] ControlsProviderService ve Control 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ıca Control 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:

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:

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İ ve android.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).

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() ve VideoCapabilities.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() ve VideoCapabilities.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() ve VideoCapabilities.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:

  • [5.2/T-0-1] H.264
  • [5.2/T-0-2] VP8

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:

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 ve android.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:

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ı:

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 ve PARKING_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:

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:

  • [5.2/A-0-1] H.264 AVC
  • [5.2/A-0-2] VP8

Otomotiv cihaz uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİ ve bunları üçüncü taraf uygulamalarına sunmalıdır:

  • [5.3/A-0-1] H.264 AVC
  • [5.3/A-0-2] MPEG-4 SP
  • [5.3/A-0-3] VP8
  • [5.3/A-0-4] VP9

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ı:

Otomotiv cihaz uygulamaları varsayılan bir başlatıcı uygulaması içeriyorsa:

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:

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.

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 hizmetler ExtServices 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> öğesinin android:name özelliğini org.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)/
    $(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)

Örneğin:

acme/myproduct/
    mydevice:11/LMYXX/3359:userdebug/test-keys

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:

Cihaz uygulamaları android.hardware.telephony bildiriyorsa:

Cihaz uygulamaları android.hardware.nfc.hce bildiriyorsa:

Cihaz uygulamaları android.hardware.nfc bildiriyorsa:

Cihaz uygulamaları VoiceInteractionService özelliğini destekliyorsa ve aynı anda bu API'yi kullanan birden fazla uygulama yüklüyse:

Cihaz uygulamaları android.hardware.bluetooth bildiriyorsa:

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:

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:

Cihaz uygulamaları, android.hardware.camera.any üzerinden kamera desteği sunduğunu belirtiyorsa:

Cihaz uygulamaları android.software.device_admin bildiriyorsa:

Cihaz uygulamaları android.software.autofill özellik işaretini beyan ediyorsa:

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 ve android.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.

  • [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 ve VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, VK_KHR_maintenance1 ve VK_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 ve GnssNavigationMessage'dan çıkış almak için kaydedilen geri çağırma işlemlerini DURDURMALIDIR.
    • [C-0-5] LocationManager API sınıfı veya WifiManager.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-9] Uygulama, listeyi insertProviderAt() veya removeProvider() 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.
    1. AndroidNSSP - android.security.net.config.NetworkSecurityConfigProvider
    2. AndroidOpenSSL - com.android.org.conscrypt.OpenSSLProvider
    3. CertPathProvider - sun.security.provider.CertPathProvider
    4. AndroidKeyStoreBCWorkaround - android.security.keystore.AndroidKeyStoreBCWorkaroundProvider
    5. BC - com.android.org.bouncycastle.jce.provider.BouncyCastleProvider
    6. HarmonyJSSE - com.android.org.conscrypt.JSSEProvider
    7. AndroidKeyStore - android.security.keystore.AndroidKeyStoreProvider

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çin true 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çin PackageManager yöntemleri çağrıldığında AdaptiveIconDrawable nesnesi döndürülmelidir.

Cihaz uygulamaları, kısayolların uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı içeriyorsa:

Aksine, cihaz uygulamaları uygulama içi kısayol sabitlemeyi desteklemiyorsa:

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ğer true olarak ayarlanmışsa uygulama simgesiyle ilişkili görsel bir ipucu gösterin ve uygulamanın tüm bildirim kanalları değeri false 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() ve Notification.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:

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 iletilen suppressedVisualEffects 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.

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ı) veya ACTION_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.

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

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ığı gibi AndroidManifest.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 ve AndroidManifestLayout_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 hem android:resizeableActivity hem de android: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 ve AndroidManifestLayout_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.

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:
  • [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.
  • 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 uygun AccessibilityEvent 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ı:

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 veya KEYCODE_MEDIA_PLAY_PAUSE tuşuna iki kez dokunmanın, MediaSession.Callback#onMediaButtonEvent için KEYCODE_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çin ContactsContract.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 ve ACCOUNT_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İ veya android: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çin RESULT_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'si PackageManager.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:

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 ve KEY_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 ve KEY_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:

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.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
  • ADTS ham AAC (.aac, ADIF desteklenmez)
  • MPEG-TS (.ts, aranamaz, yalnızca kod çözme)
  • Matroska (.mkv, yalnızca kod çözme)
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.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
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.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
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.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
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.
  • FLAC (.flac)
  • MPEG-4 (.mp4, .m4a, yalnızca kod çözme)
  • Matroska (.mkv, yalnızca kod çözme)
MP3 Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR)
  • MP3 (.mp3)
  • MPEG-4 (.mp4, .m4a, yalnızca kod çözme)
  • Matroska (.mkv, yalnızca kod çözme)
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
  • Tür 0 ve 1 (.mid, .xmf, .mxmf)
  • RTTTL/RTX (.rtttl, .rtx)
  • iMelody (.imy)
Vorbis
  • Ogg (.ogg)
  • MPEG-4 (.mp4, .m4a, yalnızca kod çözme)
  • Matroska (.mkv)
  • Webm (.webm)
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.
  • Ogg (.ogg)
  • MPEG-4 (.mp4, .m4a, yalnızca kod çözme)
  • Matroska (.mkv)
  • Webm (.webm)

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'nin ARGB_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) veya COLOR_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) veya COLOR_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
  • 3GPP (.3gp)
  • MPEG-4 (.mp4)
  • Matroska (.mkv, yalnızca kod çözme)
H.264 AVC Ayrıntılar için 5.2 ve 5.3 bölümlerine bakın.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4)
  • MPEG-2 TS (.ts, aranamaz)
  • Matroska (.mkv, yalnızca kod çözme)
H.265 HEVC Ayrıntılar için 5.3 bölümüne bakın.
  • MPEG-4 (.mp4)
  • Matroska (.mkv, yalnızca kod çözme)
MPEG-2 Ana Profil
  • MPEG2-TS (.ts, aranamaz)
  • MPEG-4 (.mp4, yalnızca kod çözme)
  • Matroska (.mkv, yalnızca kod çözme)
MPEG-4 SP
  • 3GPP (.3gp)
  • MPEG-4 (.mp4)
  • Matroska (.mkv, yalnızca kod çözme)
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üğü
  • 176 x 144 piksel (H263, MPEG2, MPEG4)
  • 352 x 288 piksel (MPEG4 kodlayıcı, H263, MPEG2)
  • 320 x 180 piksel (VP8, VP8)
  • 320 x 240 piksel (diğer)
  • 704 x 576 piksel (H263)
  • 640 x 360 piksel (VP8, VP9)
  • 640 x 480 piksel (MPEG4 kodlayıcı)
  • 720 x 480 piksel (diğer)
  • 1408 x 1152 piksel (H263)
  • 1280 x 720 piksel (diğer)
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 ve AudioManager.getMicrophones() API aracılığıyla üçüncü taraf uygulamalarının erişebildiği cihazdaki mevcut mikrofonlar ile AudioRecord.getActiveMicrophones() ve MediaRecorder.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çin android.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:

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 bir AudioSource 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 veya AudioSource.CAMCORDER hariç herhangi bir AudioSource 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 veya AudioSource.CAMCORDER ile kayıt yaparken erişilebilirlik hizmeti hariç diğer tüm uygulamalarda ses kaydını kapatMALIDIR. Ancak bir uygulama AudioSource.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 ve EFFECT_TYPE_LOUDNESS_ENHANCER uygulamaları, AudioEffect alt sınıfları Equalizer ve LoudnessEnhancer 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 subclass DynamicsProcessing.
  • EFFECT_TYPE_BASS_BOOST, EFFECT_TYPE_ENV_REVERB, EFFECT_TYPE_PRESET_REVERB ve EFFECT_TYPE_VIRTUALIZER uygulamalarını AudioEffect alt sınıfları BassBoost, EnvironmentalReverb, PresetReverb ve Virtualizer 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:

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:
  • H264 AVC
  • MPEG-4 SP
  • MPEG-2
H264 AVC, MPEG2-4 SP ve MPEG-2 ile ilgili ayrıntılar için bölüm 5.1.3'ü inceleyin.

Ses codec'leri:

  • AAC
AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.1'e bakın.
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:

  • [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ğini android.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:

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çin null 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.
  • Android Debug Bridge (adb)

    • [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 ve StatsManager 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öntemi true 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öntemi true döndürmelidir.
  • 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.
  • 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.
  • Test Bandı Modu Cihaz uygulamaları cmd testharness kabuk komutunu destekliyorsa ve cmd 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.

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() ve hasSystemFeature(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ış ve Configuration.screenLayout için small boyutu bildiren cihazlar en az 426 dp x 320 dp olmalıdır.
    • normal boyutu bildiren cihazlarda Configuration.screenLayout için en az 480 dp x 320 dp olmalıdır.
    • large için Configuration.screenLayout boyutunu bildiren cihazlar en az 640 dp x 480 dp olmalıdır.
    • Configuration.screenLayout için xlarge 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:

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ğeri UI_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.
  • [C-0-2] Configuration.uiMode değeri UI_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:

  • [C-0-3] Configuration.uiMode değeri UI_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.

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çin android.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/veya android.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 YALNIZCA android.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 ve EGL_ANDROID_GLES_layers uzantılarını DESTEKLEMELİDİR.
  • [C-SR] EGL_KHR_partial_update ve OES_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 ve android.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 bir VkPhysicalDevice 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'leri vkEnumerateInstanceLayerProperties() ve vkEnumerateDeviceLayerProperties() aracılığıyla listelenmelidir .
  • [C-1-5] Uygulamada android:debuggable özelliği true 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 az 132317953 sürümünü (1 Mart 2019'dan itibaren) desteklemelidir.
  • [C-1-10] 132317953 sürümü ile android.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 bir vkEnumeratePhysicalDevices() 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 ile VK_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 ve EGL_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ı:

7.2.1. Klavye

Cihaz uygulamaları, üçüncü taraf giriş yöntemi düzenleyici (IME) uygulamaları için destek içeriyorsa:

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ı:

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 ve CATEGORY=LAUNCHER veya CATEGORY=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:

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 veya View.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 veya View.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çin TOUCHSCREEN_FINGER raporlanmalıdır.
  • [C-1-2] android.hardware.touchscreen ve android.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çin TOUCHSCREEN_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.

4 MotionEvent

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

1 MotionEvent

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 veya false 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 ve TYPE_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 ve TYPE_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 ve TYPE_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:

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 ve getHighestDirectReportRateLevel 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 veya DevicePolicymanager.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:

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:

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 üzerindeki EXTRA_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ın KEYCODE_MEDIA_PLAY_PAUSE ve KEYCODE_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.

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 ve getActiveNetwork ile registerDefaultNetworkCallback gibi ConnectivityManager API yöntemleri tarafından döndürülen, şu anda etkin olan Network'ı 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ığında Network üzerindeki internet erişimini yeniden değerlendirmeleri ve değerlendirme sonucunda mevcut Network'ü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() ve WifiManager.WifiLock.acquire() API'leri aracılığıyla WIFI_MODE_FULL_HIGH_PERF veya WIFI_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.

Cihaz uygulamaları:

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ı:

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:

7.4.2.4. Wi-Fi Passpoint

Cihaz uygulamaları 802.11 (Kablosuz) desteği içeriyorsa:

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ı:

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:

7.4.2.7. Wi-Fi Easy Connect (Cihaz Temel Hazırlığı Protokolü)

Cihaz uygulamaları:

Cihaz uygulamaları, Wi-Fi Easy Connect desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:

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 ve android.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:

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 ve android.nfc.NdefRecord API'leri, NFC desteği içermese veya android.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önteminden android.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önteminden com.nxp.mifare özelliğini RAPORLAMALIDIR. Bunun standart bir Android özelliği olmadığını ve bu nedenle android.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 ve java.net.URLConnection gibi yönetilen API'lerin yanı sıra AF_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 veya Socket#getLocalPort gibi yönetilen API'ler hem de getsockname() veya IPV6_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 API ConnectivityManager#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 ve android.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:

7.4.8. Güvenlik Unsurları

Cihaz uygulamaları Open Mobile API özellikli güvenli öğeleri destekleyip üçüncü taraf uygulamalarına sunuyorsa:

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 veya MediaStore.ACTION_VIDEO_CAPTURE amaçlarını işleyen önceden yüklenmiş varsayılan kamera uygulamasının, alıcı uygulamada ACCESS_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 ve android.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 bir Camera.Parameters nesnesinin FLASH_MODE_AUTO veya FLASH_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ızca Camera.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 ve android.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 uygulama android.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 and android.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çin android.hardware.PixelFormat.YCbCr_420_SP KULLANILMALIDIR.
  • [C-0-2] Bir uygulama android.hardware.Camera.PreviewCallback örneği kaydettiğinde, sistem onPreviewFrame() 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ölgesinde REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE özelliğinin reklamını yapan android.hardware.camera2 cihazlar için android.media.ImageReader API'si aracılığıyla çıkış olarak android.hardware.ImageFormat.YUV_420_888 ve android.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 ve android.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 ve android.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ığıyla android.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 kameralara android.hardware.camera2 API üzerinden de erişilebilmelidir.
  • [C-0-12] android.hardware.camera2 veya android.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:

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ı veya sdcard 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
  • [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ı:

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ında iSerialNumber 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

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 ve ACTION_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
  • [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
  • [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 hem VK_QUEUE_GRAPHICS_BIT hem de VK_QUEUE_COMPUTE_BIT içerdiğinde ve queueCount 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şaretleri AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER, AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA ve AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT için destek uygulanmalıdır.
  • [C-1-10] En azından şu biçimler için AHardwareBuffers'nin AHARDWAREBUFFER_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çin true 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ı veya PARTIAL_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ı:

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:

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ğeri PROTECTION_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 ve system/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 her softRestricted 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ı:

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 ve CONFIG_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 veya CONFIG_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 da CONFIG_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 da CONFIG_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 da CONFIG_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 veya EFI_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 ve CONFIG_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 veya CONFIG_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 class IncidentManager.
  • [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ğini false 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:

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 ve ACTION_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:

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ı:

Cihaz uygulamaları Android Protected Confirmation API'yi destekliyorsa:

  • [C-3-1] ConfirmationPrompt.isSupported() API'si için true 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:

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öntemiyle PASSWORD_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, or KEYGUARD_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 sabitiyle DevicePolicyManager.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 sabitiyle DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS) yöntemi veya DevicePolicyManager.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 sabitiyle DevicePolicyManager.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:

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:

  1. Giriş
  2. Cihaz Türleri
  3. Yazılım
  4. Uygulama Paketleme
  5. Multimedya
  6. Geliştirici Araçları ve Seçenekleri
  7. Donanım Uyumluluğu
  8. Performans ve Güç
  9. Güvenlik Modeli
  10. Yazılım Uyumluluğu Testi
  11. Güncellenebilir Yazılımlar
  12. Doküman Değişiklik Günlüğü
  13. 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.