Android 14 Uyumluluk Tanımı

1. Giriş

Bu dokümanda, cihazların Android 14 ile uyumlu olması için karşılanması gereken şartlar listelenmiştir.

"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" ve "OPTIONAL" kelimelerinin kullanımı RFC2119'da tanımlanan IETF standardına göredir.

Bu dokümanda "cihaz uygulayıcısı" veya "uygulayıcı" olarak atıfta bulunulan kişi ya da kuruluş, Android 14 çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluştur. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.

Cihaz uygulamalarının Android 14 ile uyumlu olarak kabul edilebilmesi için referansla dahil edilen tüm dokümanlar da dahil olmak üzere bu Uyumluluk Tanımı'nda sunulan şartları karşılaması GEREKİR.

Bu tanım veya 10. bölümde açıklanan yazılım testleri açıkça belirtilmemiş, belirsiz veya eksik olduğunda mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcının sorumluluğundadır.

Bu nedenle, Android Açık Kaynak Projesi hem Android'in referans kaynağı hem de tercih edilen uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nden edinilebilen "yukarı yönlü" kaynak koduna dayandırmaları önemle ÖNERİLİR. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilir olsa da yazılım testlerini geçmek önemli ölçüde daha zor olacağından bu uygulamanın kullanılmaması önemle tavsiye edilir. Compatibility Test Suite dahil ve hariç olmak üzere standart Android uygulamasıyla davranışsal olarak tam uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen değişimlerinin ve modifikasyonlarının bu dokümanda açıkça yasaklandığını unutmayın.

Bu dokümanda bağlantısı verilen kaynakların çoğu doğrudan veya dolaylı olarak Android SDK'sından türetilmiştir ve işlevsel olarak ilgili SDK'nın dokümanlarında yer alan bilgilerle aynıdır. Bu Uyumluluk Tanımı veya Uyumluluk Testi Paketi'nin SDK dokümanlarıyla çeliştiği durumlarda SDK dokümanları yetkili kabul edilir. Bu doküman boyunca bağlantı verilen kaynaklarda sağlanan tüm teknik ayrıntılar, bu uyumluluk tanımının bir parçası olarak kabul edilir.

1.1 Doküman Yapısı

1.1.1. Cihaz türüne göre şartlar

2. Bölüm, belirli bir cihaz türü için geçerli olan tüm şartları içerir. 2. Bölüm'ün her alt bölümü belirli bir cihaz türüne ayrılmıştır.

Tüm Android cihaz uygulamaları için evrensel olarak geçerli olan diğer tüm koşullar, 2. Bölüm'den sonraki bölümlerde listelenir. Bu şartlara bu dokümanda "Temel Şartlar" olarak atıfta bulunulur.

1.1.2. Şart kimliği

ŞART koşulu için şart kimliği atanır.

  • Kimlik yalnızca zorunlu koşullar için atanır.
  • ÖNEMLE ÖNERİLİR koşulları [SR] olarak işaretlenir ancak kimlik atanmaz.
  • Kimlik şuradan oluşur : Cihaz Türü Kimliği - Koşul Kimliği - Şart Kimliği (ör. C-0-1).

Her kimlik aşağıdaki şekilde tanımlanır:

  • Cihaz Türü Kimliği (2. Cihaz Türleri)
    • C: Temel (Tüm Android cihaz uygulamalarında geçerli olan şartlar)
    • H: Android el cihazı
    • T: Android Television cihaz
    • C: Android Automotive uygulaması
    • W: Android Watch uygulaması
    • Sekme: Android tablet uygulaması
  • Koşul kimliği
    • Koşulsuz olduğunda bu kimlik 0 olarak ayarlanır.
    • Koşul koşullu olduğunda 1. koşul için 1 atanır ve sayı aynı bölümde ve aynı cihaz türünde 1 artar.
  • Şart kimliği
    • Bu kimlik 1 ile başlar ve aynı bölümde, aynı koşulda 1'er artar.

1.1.3. Bölüm 2'deki şart kimliği

2. Bölüm'deki şart kimlikleri iki bölümden oluşur. İlki, yukarıda açıklandığı gibi bir bölüm kimliğine karşılık gelir. İkinci bölümde form faktörü ve form faktörüne özgü şart belirtilir.

bölüm kimliği ve ardından yukarıda açıklanan Şart Kimliği.

  • 2.Bölüm'deki kimlik şuradan oluşur:Bölüm Kimliği / Cihaz Türü Kimliği - Koşul Kimliği - Şart Kimliği (ör. 7.4.3/A-0-1).

2. Cihaz Türleri

Android Açık Kaynak Projesi, çeşitli cihaz türleri ve form faktörleri için kullanılabilecek bir yazılım yığını sağlar. Cihazlardaki güvenliği desteklemek için, değiştirilen işletim sistemi veya alternatif çekirdek uygulaması da dahil olmak üzere yazılım yığınının, 9. bölümde ve bu CDD'nin diğer bölümlerinde açıklandığı gibi güvenli bir ortamda çalıştırılması beklenir. Uygulama dağıtım ekosistemi nispeten daha iyi olan birkaç cihaz türü vardır.

Bu bölümde, bu cihaz türleri ve her cihaz türü için geçerli ek koşullar ve öneriler açıklanmaktadır.

Açıklanan cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamaları, bu Uyumluluk Tanımı'nın diğer bölümlerindeki tüm koşulları karşılamalıdır.

2.1 Cihaz Yapılandırmaları

Cihaz türüne göre donanım yapılandırmasında bulunan önemli farklılıklar için bu bölümde yer alan cihaza özgü şartlara bakın.

2.2. El Cihazı Gereksinimleri

Android el cihazı, genellikle elinizde tutarak kullandığınız Android cihaz uygulamalarını (ör. mp3 çalar, telefon veya tablet) ifade eder.

Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa El Cihazı olarak sınıflandırılır:

  • Hareketlilik sağlayan bir güç kaynağı (ör. pil) olmalıdır.
  • Fiziksel köşeden köşeye çapraz ekran boyutu 4 inç ile 3,3 inç (veya API seviyesi 29 veya önceki sürümlerde kullanıma sunulan cihaz uygulamaları için 2,5 inç) ila 8 inç arasında olmalıdır.
  • Dokunmatik ekran giriş arayüzü olmalıdır.

Bu bölümün geri kalanındaki ek şartlar, Android el cihazı uygulamalarında geçerlidir.

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] En az bir Android uyumlu bu dokümanda açıklanan tüm koşulları karşılayan ekrana sahip OLMALIDIR. Kısa kenarı en az 2,2 inç, uzun kenarı en az 3,4 inç olan ekran.
  • [7.1.1.3/H-SR-1] Kullanıcılara ekran boyutunu (ekran yoğunluğu) değiştirme olanağı sunmak için ÇOK ÖNEMLİ.

  • [7.1.1.1/H-0-2] En az dahili ekranın en yüksek çözünürlüğüne eşit büyüklükte grafik arabelleklerinin GPU kompozisyonunu desteklemelidir.

Yeni şartlar başlatma

  • [7.1.1.1/H-0-3]* Üçüncü taraf uygulamaları için kullanıma sunulan her UI_MODE_NORMAL ekranı, kısa kenarı en az 2,2 inç ve uzun kenarı en az 3,4 inç olan engelsiz bir fiziksel ekran alanına eşlemelidir.

  • [7.1.1.3/H-0-1]* DENSITY_DEVICE_STABLE değerini, ilgili ekranın gerçek fiziksel yoğunluğundan% 92 veya daha yüksek olacak şekilde AYARALAMALIDIR.

Yeni şartların sona ermesi

El cihazı uygulamaları yazılım ekran rotasyonunu destekliyorsa:

  • [7.1.1.1/H-1-1]* Üçüncü taraf uygulamaların kullanımına sunulan mantıksal ekranın kısa kenarlarında en az 5,1 cm, uzun kenarlarında ise en az 6,8 cm olması GEREKİR. Android API düzeyi 29 veya önceki sürümleri çalıştıran cihazlar bu şarttan muaf tutulabilir.

El cihazı uygulamaları yazılım ekran rotasyonunu desteklemiyorsa:

  • [7.1.1.1/H-2-1]* Üçüncü taraf uygulamaları için kullanıma sunulan mantıksal ekranın kısa kenarlarında en az 2,7 inç olması GEREKİR. Android API düzeyi 29 veya önceki sürümleri çalıştıran cihazlar bu şarttan muaf tutulabilir.

Yeni şartlar başlatma

El cihazı uygulamalarında Vulkan desteği varsa:

Yeni şartların sona ermesi

El cihazı uygulamaları, Configuration.isScreenHdr() aracılığıyla yüksek dinamik aralık ekranları için destek iddiasında bulunuyorsa:

  • [7.1.4.5/H-1-1] EGL_EXT_gl_colorspace_bt2020_pq, EGL_EXT_surface_SMPTE2086_metadata, EGL_EXT_surface_CTA861_3_metadata, VK_EXT_swapchain_colorspace ve VK_EXT_hdr_metadata uzantılarına yönelik destek reklamı YAPMALIDIR.

Elde taşınabilir cihaz uygulamaları:

  • [7.1.4.6/H-0-1] Cihazın GPU profil oluşturma özelliğini destekleyip desteklemediğini bir sistem mülkü graphics.gpu.profiler.support aracılığıyla bildirmelidir.

El cihazı uygulamaları bir sistem mülkü aracılığıyla destek beyan ederse graphics.gpu.profiler.support:

Elde taşınabilir cihaz uygulamaları:

  • [7.1.5/H-0-1] Yukarı akış Android açık kaynak kodu tarafından uygulandığı şekilde eski uygulama uyumluluk modu için destek DAHİL OLMALIDIR. Yani cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİ ve uyumluluk modunun kendisinin davranışını DEĞİŞTİRMEMELİDİR.
  • [7.2.1/H-0-1] Üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek DAHİL OLMALIDIR.
  • [7.2.3/H-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliğini ön plan uygulamasına GÖNDERMELİDİR. Bu etkinlikler sistem tarafından KULLANILMAMALISDIR ve Android cihazın dışından (ör. Android cihaza bağlı harici donanım klavyesi) tetiklenebilir.
  • [7.2.3/H-0-3] Ana ekran sunan tüm Android uyumlu ekranlarda Ana ekran işlevi ZORUNLUDUR.
  • [7.2.3/H-0-4] Tüm Android uyumlu ekranlarda Geri işlevi, Android uyumlu ekranlardan en az birinde de Son Aramalar işlevi ZORUNLUDUR.
  • [7.2.4/H-0-1] Dokunmatik ekran girişini DESTEKLEMELİDİR.
  • [7.2.4/H-SR-1] Kullanıcı tarafından seçilen yardımcı uygulamayı (yani VoiceInteractionService'i uygulayan uygulamayı) veya ön plan etkinliği bu uzun basma etkinliklerini işlemiyorsa KEYCODE_MEDIA_PLAY_PAUSE veya KEYCODE_HEADSETHOOK düğmesine uzun basıldığında ACTION_ASSIST işlevini işleyen bir etkinliği başlatmanız önemle ÖNERİLİR.
  • [7.3.1/H-SR-1] 3 eksenli ivme ölçer eklenmesi önemle ÖNERİLİR.

El cihazı uygulamalarında 3 eksenli ivme ölçer varsa:

  • [7.3.1/H-1-1] En az 100 Hz'e kadar frekansta etkinlikleri bildirebilmelidir.

El cihazı uygulamaları bir GPS/GNSS alıcısı içeriyorsa ve bu özelliği android.hardware.location.gps özellik işareti aracılığıyla uygulamalara bildiriyorsa:

  • [7.3.3/H-2-1] GPS/GNSS'den hesaplanan bir konum henüz raporlanmasa bile GNSS ölçümleri bulunur bulunmaz raporlanmalıdır.
  • [7.3.3/H-2-2] Konum belirlendikten sonra açık hava koşullarında sabitken veya 0,2 metrekare saniyeden daha az ivmeyle hareket ederken, en az% 95 oranında konumu 20 metre içinde ve hızı 0,2 metre saniye içinde hesaplamak için yeterli olan GNSS sanal menzilleri ve sanal menzil hızlarını bildirmelidir.

El cihazı uygulamalarında 3 eksenli jiroskop varsa:

  • [7.3.4/H-3-1] En az 100 Hz'e kadar frekansta etkinlikleri bildirebilmelidir.
  • [7.3.4/H-3-2] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.

Sesli arama yapabilen ve getPhoneType alanında PHONE_TYPE_NONE dışında bir değer gösterebilen el cihazı uygulamaları:

  • [7.3.8/H] Yakınlık sensörü DAHİL OLMALIDIR.

Elde taşınabilir cihaz uygulamaları:

  • [7.3.11/H-SR-1] 6 serbestlik derecesine sahip poz sensörünü desteklemek için ÇOK ÖNERİLİR.
  • [7.4.3/H] Bluetooth ve Bluetooth LE desteği DAHİL OLMALIDIR.

Cihazlar, PackageManager.FEATURE_WIFI_AWARE bildirerek kablosuz ağ komşu farkındalığı ağı (NAN) protokolünü ve PackageManager.FEATURE_WIFI_RTT bildirerek kablosuz konumu (Kablosuz Ağ Geçiş Süresi - RTT) destekliyorsa:

  • [7.4.2.5/H-1-1] WifiRttManager#startRanging Android API aracılığıyla gözlemlendiği üzere, 10 cm, 1 m, 3 m ve 5 m mesafelerde 68. yüzdelik dilimde 160 MHz bant genişliğinde +/-1 metre, 68. yüzdelik dilimde 80 MHz bant genişliğinde +/-2 metre, 68. yüzdelik dilimde 40 MHz bant genişliğinde +/-4 metre ve 68. yüzdelik dilimde 20 MHz bant genişliğinde +/-8 metre içinde doğru bir şekilde raporlamalıdır.

  • [7.4.2.5/H-SR-1] WifiRttManager#startRanging Android API aracılığıyla gözlemlendiği üzere, 10 cm mesafelerde 90. yüzdelik dilimde 160 MHz bant genişliğinde +/-1 metre, 80 MHz bant genişliğinde +/-2 metre, 40 MHz bant genişliğinde +/-4 metre ve 20 MHz bant genişliğinde +/-8 metre olarak kapsam aralığını doğru şekilde bildirmeniz önemle tavsiye edilir.

Bulunma Kalibrasyonu bölümünde belirtilen ölçüm kurulum adımlarını uygulamanız önemle tavsiye edilir.

Yeni şartlar başlatma

El cihazı uygulamaları FEATURE_BLUETOOTH_LE bildirirse:

  • [7.4.3/H-1-3] Ortalama BLE RSSI'nin ADVERTISE_TX_POWER_HIGH frekansında yayın yapan bir referans cihazdan 1 m mesafede -50 dBm +/-15 dB olmasını sağlamak için Rx ofsetini ölçmeli ve telafi etmelidir.
  • [7.4.3/H-1-4] 1 m mesafede konumlandırılmış ve ADVERTISE_TX_POWER_HIGH frekansında yayın yapan bir referans cihazdan tarama yaparken ortalama BLE RSSI'nin -50 dBm +/-15 dB olmasını sağlamak için Tx ofsetini ölçmeli ve telafi etmelidir.

Yeni şartların sona ermesi

Elde tutulan cihaz uygulamaları, CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA kullanarak özellikleri listeleyen mantıksal bir kamera cihazı içeriyorsa:

  • [7.5.4/H-1-1] Varsayılan olarak normal görüş alanına (FOV) sahip OLMALIDIR ve 50 ila 80 derece arasında OLMALIDIR.

Elde taşınabilir cihaz uygulamaları:

  • [7.6.1/H-0-1] Uygulamanın özel verileri ("/data" bölümü olarak da bilinir) için en az 4 GB kalıcı depolama alanı BULUNMASI GEREKİR.
  • [7.6.1/H-0-2] Çekirdek ve kullanıcı alanında 1 GB'tan az bellek bulunduğunda ActivityManager.isLowRamDevice() için "true" değerini İYİ DEĞERİNDE döndürmelidir.

El cihazı uygulamaları yalnızca 32 bit ABI'yi destekliyorsa:

  • [7.6.1/H-1-1] Varsayılan ekranda qHD'ye (ör. FWVGA) kadar ekran kartı çözünürlüğü kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 416 MB OLMALIDIR.

  • [7.6.1/H-2-1] Varsayılan ekran HD+'ye kadar ekran kartı çözünürlüğü kullanıyorsa (ör. HD, WSVGA) çekirdek ve kullanıcı alanının kullanabileceği bellek en az 592 MB OLMALIDIR.

  • [7.6.1/H-3-1] Varsayılan ekran FHD'ye (ör. WSXGA+) kadar ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 896 MB OLMALIDIR.

  • [7.6.1/H-4-1] Varsayılan ekran QHD'ye (ör.QWXGA) kadar çerçeve kartı çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1. 344 MB OLMALIDIR.

El cihazı uygulamaları herhangi bir 64 bit ABI'yi (32 bit ABI ile veya olmadan) destekliyorsa:

  • [7.6.1/H-5-1] Varsayılan ekranda qHD'ye (ör. FWVGA) kadar ekran kartı çözünürlüğü kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 816 MB OLMALIDIR.

  • [7.6.1/H-6-1] Varsayılan ekran HD+'ye kadar (ör. HD, WSVGA) ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 944 MB OLMALIDIR.

  • [7.6.1/H-7-1] Varsayılan ekran FHD'ye (ör.WSXGA+) kadar ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1. 280 MB OLMALIDIR.

  • [7.6.1/H-8-1] Varsayılan ekran QHD'ye (ör.QWXGA) kadar ekran kartı çözünürlüğü kullanıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1. 824 MB OLMALIDIR.

Yukarıdaki "çekirdek ve kullanıcı alanında kullanılabilen bellek" ifadesinin, radyo ve video gibi donanım bileşenlerine ayrılmış belleklere ek olarak, cihaz uygulamalarında çekirdeğin kontrolü altında olmayan bellek alanını ifade ettiğini unutmayın.

El cihazı uygulamaları, çekirdek ve kullanıcı alanında kullanılabilen 1 GB'tan az veya 1 GB'a eşit miktarda bellek içeriyorsa:

  • [7.6.1/H-9-1] Özellik işaretini bildirmelidirandroid.hardware.ram.low.
  • [7.6.1/H-9-2] Uygulama özel verileri ("/data" bölümü olarak da bilinir) için en az 1,1 GB kalıcı depolama alanı OLMALIDIR.

El cihazı uygulamaları, çekirdek ve kullanıcı alanında kullanılabilen 1 GB'tan fazla bellek içeriyorsa:

  • [7.6.1/H-10-1] Uygulama özel verileri ("/data" bölümü olarak da bilinir) için en az 4 GB kalıcı depolama alanı BULUNMASI GEREKİR.
  • Özellik bayrağını android.hardware.ram.normal bildirmelidir.

El cihazı uygulamaları, çekirdek ve kullanıcı alanında kullanılabilen 2 GB'tan büyük veya eşit ve 4 GB'tan az bellek içeriyorsa:

  • [7.6.1/H-SR-1] Yalnızca 32 bit kullanıcı alanını (hem uygulamalar hem de sistem kodu) desteklemeniz önemle ÖNERİLİR

El cihazı uygulamaları, çekirdek ve kullanıcı alanı için 2 GB'tan az bellek içeriyorsa:

  • [7.6.1/H-1-1] Yalnızca tek bir ABI'yi (yalnızca 64 bit veya yalnızca 32 bit) desteklemelidir.

Elde taşınabilir cihaz uygulamaları:

  • [7.6.2/H-0-1] Uygulama için 1 GiB'tan küçük bir paylaşılan depolama alanı SAĞLAMAMALIDIR.
  • [7.7.1/H] Çevre birimi modunu destekleyen bir USB bağlantı noktası DAHİL OLMALIDIR.

El cihazı uygulamalarında çevre birimi modunu destekleyen bir USB bağlantı noktası varsa:

  • [7.7.1/H-1-1] Android Open Accessory (AOA) API'sini UYGULAMALIDIR.

El cihazı uygulamalarında ana makine modunu destekleyen bir USB bağlantı noktası varsa bu cihazlar:

Elde taşınabilir cihaz uygulamaları:

  • [7.8.1/H-0-1] Mikrofon içermelidir.
  • [7.8.2/H-0-1] Ses çıkışına sahip OLMALI ve android.hardware.audio.output bildirmelidir.

El cihazı uygulamaları, VR modunu desteklemek için gereken tüm performans koşullarını karşılayabiliyorsa ve bu modu destekliyorsa:

  • [7.9.1/H-1-1] android.hardware.vr.high_performance özellik bayrağını İLANI GEREKTİRİR.
  • [7.9.1/H-1-2] android.app.Activity#setVrModeEnabled aracılığıyla VR uygulamaları tarafından etkinleştirilebilen android.service.vr.VrListenerService'yi uygulayan bir uygulama İÇERMELİDİR.

El cihazı uygulamaları, 7.7.2 numaralı bölümdeki şartlara ek olarak ana makine modunda bir veya daha fazla USB-C bağlantı noktası içeriyorsa ve (USB ses sınıfı) uygularsa:

  • [7.8.2.2/H-1-1] HID kodlarının aşağıdaki yazılım eşlemesini SAĞLAMALIDIR:
İşlev Eşlemeler Bağlam Davranış
A HID kullanım sayfası: 0x0C
HID kullanımı: 0x0CD
Çekirdek anahtarı: KEY_PLAYPAUSE
Android anahtarı: KEYCODE_MEDIA_PLAY_PAUSE
Medya oynatma Giriş: Kısa basma
Çıkış: Oynat veya duraklat
Giriş: Uzun basma
Çıkış: Sesli komutu başlat
Gönderilir: android.speech.action.VOICE_SEARCH_HANDS_FREE Cihaz kilitliyse veya ekranı kapalıysa. Aksi takdirde android.speech.RecognizerIntent.ACTION_WEB_SEARCH gönderilir
Gelen arama Giriş: Kısa bas
Çıkış: Aramayı kabul et
Giriş: Uzun basma
Çıkış: Aramayı reddetme
Devam eden arama Giriş: Kısa bas
Çıkış: Görüşmeyi sonlandır
Giriş: Uzun basma
Çıkış: Mikrofonun sesini kapatma veya açma
B HID kullanım sayfası: 0x0C
HID kullanımı: 0x0E9
Çekirdek anahtarı: KEY_VOLUMEUP
Android anahtarı: VOLUME_UP
Medya oynatma, Devam eden arama Giriş: Kısa veya uzun basma
Çıkış: Sistem veya kulaklık sesini artırır
C HID kullanım sayfası: 0x0C
HID kullanımı: 0x0EA
Çekirdek anahtarı: KEY_VOLUMEDOWN
Android anahtarı: VOLUME_DOWN
Medya oynatma, Devam eden arama Giriş: Kısa veya uzun basma
Çıkış: Sistem veya kulaklık sesini azaltır
D HID kullanım sayfası: 0x0C
HID kullanımı: 0x0CF
Çekirdek anahtarı: KEY_VOICECOMMAND
Android anahtarı: KEYCODE_VOICE_ASSIST
Tümü'ne dokunun. Herhangi bir durumda tetiklenebilir. Giriş: Kısa veya uzun basma
Çıkış: Sesli komutu başlatma
  • [7.8.2.2/H-1-2] Fiş takıldığında ACTION_HEADSET_PLUG etkinleştirilmelidir ancak bu işlem yalnızca USB ses arabirimlerinin ve uç noktalarının, bağlı terminalin türünü tanımlamak için düzgün bir şekilde numaralandırılmasından sonra yapılmalıdır.

0x0302 USB ses terminali türleri algılandığında:

  • [7.8.2.2/H-2-1] "microphone" ekstrası 0 olarak ayarlanmışken ACTION_HEADSET_PLUG intent'ini YAYITLAMALIDIR.

0x0402 USB ses terminali türleri algılandığında:

  • [7.8.2.2/H-3-1] "microphone" ek olarak 1 olarak ayarlanmışken ACTION_HEADSET_PLUG intent'ini YAYITLAMALIDIR.

USB çevre birimi bağlıyken API AudioManager.getDevices() çağrıldığında:

  • [7.8.2.2/H-4-1] USB ses terminali türü alanı 0x0302 ise AudioDeviceInfo.TYPE_USB_HEADSET türündeki bir cihazı listelemeLİDİR ve rol 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ündeki bir cihazı listelemeLİDİR ve rolü isSink() olmalıdır.

  • [7.8.2.2/H-4-3] USB ses terminali türü alanı 0x0402 ise AudioDeviceInfo.TYPE_USB_HEADSET türündeki bir cihazı ve rolü isSource() olarak listelemeLİDİR.

  • [7.8.2.2/H-4-4] USB ses terminali türü alanı 0x603 ise AudioDeviceInfo.TYPE_USB_DEVICE türündeki bir cihazı listelemeLİDİR ve rol isSink() olmalıdır.

  • [7.8.2.2/H-4-5] USB ses terminali türü alanı 0x604 ise AudioDeviceInfo.TYPE_USB_DEVICE türündeki bir cihazı ve rolü isSource() olarak listelemeLİDİR.

  • [7.8.2.2/H-4-6] USB ses terminali türü alanı 0x400 ise AudioDeviceInfo.TYPE_USB_DEVICE türündeki bir cihazı ve rolü isSink() olarak listelemeLİDİR.

  • [7.8.2.2/H-4-7] USB ses terminali türü alanı 0x400 ise AudioDeviceInfo.TYPE_USB_DEVICE türündeki bir cihazı ve rolü isSource() olarak listelemeLİDİR.

  • [7.8.2.2/H-SR-1] USB-C ses çevre birimi bağlandıktan sonra USB tanımlayıcılarının listelenmesini gerçekleştirmek, terminal türlerini tanımlamak ve 1.000 milisaniyeden kısa sürede ACTION_HEADSET_PLUG intent'ini yayınlamak için ÇOK ÖNEMLE ÖNERİLİR.

El cihazı uygulamaları android.hardware.audio.output ve android.hardware.microphone bildirirse:

  • [5.6/H-1-1] Aşağıdaki veri yollarında: "hoparlörden mikrofona", 3, 5 mm döngü adaptörü (destekleniyorsa), USB döngüsü (destekleniyorsa) 5 ölçümde ortalama sürekli gidiş dönüş gecikmesi 300 milisaniye veya daha az, ortalama mutlak sapma ise 30 ms'den az OLMALIDIR.

  • [5.6/H-1-2] Hoparlör ile mikrofon veri yolu arasında en az 5 ölçümde ortalama 300 milisaniye veya daha az dokunma-ses gecikmesi OLMALIDIR.

El cihazı uygulamalarında en az bir dokunma aktüatörü varsa bu aktüatörler:

Doğrusal rezonanslı aktüatör (LRA), kütlenin istenen hareketin yönünde hareket ettiği baskın bir rezonans frekansına sahip tek kütleli bir yay sistemidir.

Elde kullanılan cihaz uygulamaları en az bir genel amaçlı 7.10 doğrusal rezonanslı aktüatör içeriyorsa:

Yeni şartlar başlatma

  • [7.10/H] Hareket ettiricinin konumunu, cihazın genellikle ellerle tutulduğu veya dokunulduğu yere yakın bir yere yerleştirmelidir.

Yeni şartların sona ermesi

  • [7.10/H] Dokunsal aktüatörü cihazın doğal dikey yönünün X ekseninde (sol-sağ) hareket ettirmelidir.

El cihazı uygulamalarında X eksenli doğrusal rezonanslı aktüatör (LRA) olan genel amaçlı bir dokunma aktüatörü varsa:

  • [7.10/H] X eksenli LRA'nın rezonans frekansı 200 Hz'nin altında OLMALIDIR.

El cihazı uygulamaları dokunma sabitleri eşlemesini izliyorsa:

2.2.2. Multimedya

El cihazı uygulamaları aşağıdaki ses kodlama ve kod çözme biçimlerini desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:

  • [5.1/H-0-1] AMR-NB
  • [5.1/H-0-2] AMR-WB
  • [5.1/H-0-3] MPEG-4 AAC Profili (AAC LC)
  • [5.1/H-0-4] MPEG-4 HE AAC Profili (AAC+)
  • [5.1/H-0-5] AAC ELD (düşük gecikmeli gelişmiş AAC)

El cihazı uygulamalarında aşağıdaki video kodlama biçimleri desteklenmeli ve üçüncü taraf uygulamalarına sunulmalıdır:

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

Yeni şartlar başlatma

  • [5.2/H-0-3] AV1

Yeni şartların sona ermesi

El cihazı uygulamaları aşağıdaki video kod çözme biçimlerini desteklemeli 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

Yeni şartlar başlatma

  • [5.3/H-0-6] AV1

Yeni şartların sona ermesi

2.2.3. Yazılım

Elde taşınabilir cihaz uygulamaları:

  • [3.2.3.1/H-0-1] ACTION_GET_CONTENT, ACTION_OPEN_DOCUMENT, ACTION_OPEN_DOCUMENT_TREE ve ACTION_CREATE_DOCUMENT isteklerini SDK dokümanlarındaki gibi işleyen ve DocumentsProvider API'yi kullanarak kullanıcıya doküman sağlayıcı verilerine erişme olanağı sunan bir uygulama SAHİP OLMALIDIR.
  • [3.2.3.1/H-0-2]* Burada listelenen aşağıdaki uygulama amaçları tarafından tanımlanan tüm herkese açık amaç filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulama ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.
  • [3.2.3.1/H-SR-1] E-posta gönderme amacıyla ACTION_SENDTO veya ACTION_SEND veya ACTION_SEND_MULTIPLE intent'lerini işleyebilecek bir e-posta uygulamasının önceden yüklenmesi önemle ÖNERİLİR.
  • [3.4.1/H-0-1] android.webkit.Webview API'sinin eksiksiz bir uygulamasını SAĞLAMALIDIR.
  • [3.4.2/H-0-1] Genel kullanıcı web tarama deneyimi için bağımsız bir tarayıcı uygulaması DAHİL OLMALIDIR.
  • [3.8.1/H-SR-1] Kısayolların, widget'ların ve widgetFeatures öğelerinin uygulama içinde sabitlenmesini destekleyen varsayılan bir başlatıcının uygulanması önemle ÖNERİLİR.
  • [3.8.1/H-SR-2] ShortcutManager API aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcının uygulanması önemle ÖNERİLİR.
  • [3.8.1/H-SR-3] Uygulama simgelerinin rozetlerini gösteren varsayılan bir başlatıcı uygulaması eklemeniz önemle ÖNERİLİR.
  • [3.8.2/H-SR-1] Üçüncü taraf uygulama widget'larını desteklemek için KESİNLİKLE ÖNERİ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 olaylar hakkında bilgilendirmesine İZİN VERİLMELİDİR.
  • [3.8.3/H-0-2] Zengin bildirimleri DESTEKLEMELİDİR.
  • [3.8.3/H-0-3] Bildirimler için uyarıları desteklemelidir.
  • [3.8.3/H-0-4] Bildirim gölgesi ZORUNLUDUR.Bu gölge, kullanıcıya işlem düğmeleri veya AOSP'de uygulanan kontrol paneli gibi kullanıcı özelliklerini kullanarak bildirimleri doğrudan kontrol etme (ör. yanıtlama, erteleme, kapatma, engelleme) olanağı sunar.
  • [3.8.3/H-0-5] RemoteInput.Builder setChoices() üzerinden sağlanan seçenekleri bildirim gölgesinde GÖSTERMELİDİR.
  • [3.8.3/H-SR-1] RemoteInput.Builder setChoices() aracılığıyla sağlanan ilk seçeneğin, ek kullanıcı etkileşimi olmadan bildirim gölgesinde gösterilmesi önemle ÖNERİLİR.
  • [3.8.3/H-SR-2] Kullanıcı bildirim gölgesindeki tüm bildirimleri genişlettiğinde bildirim gölgesinde RemoteInput.Builder setChoices() aracılığıyla sağlanan tüm seçeneklerin gösterilmesi önemle ÖNERİLİR.
  • [3.8.3.1/H-SR-1] Notification.Action.Builder.setContextual için true olarak ayarlanan işlemlerin, Notification.Remoteinput.Builder.setChoices tarafından gösterilen yanıtlarla birlikte satır içi olarak gösterilmesi önemle ÖNERİLİR.
  • [3.8.4/H-SR-1] Yardımcı işlem'i işlemek için cihaza bir yardımcı uygulamanın eklenmesi önemle ÖNERİLİR.

El cihazı uygulamaları MediaStyle bildirimlerini destekliyorsa:

  • [3.8.3.1/H-SR-2] Bir uygulama MediaSession jetonu içeren bir MediaStyle bildirimi yayınladığında, sistem kullanıcı arayüzünden erişilebilen ve kullanıcıların uygun mevcut medya yolları (ör. MediaRouter2Manager için sağlanan Bluetooth cihazlar ve yollar) arasında geçiş yapmasına olanak tanıyan bir kullanıcı özelliği (ör. çıkış değiştirici) sunulması önemle ÖNERİLİR.

Yeni şartlar başlatma

7.2.3 bölümünde ayrıntılı olarak açıklandığı gibi, son uygulamalar işlev navigasyon tuşunu içeren cihaz uygulamaları arayüzü değiştiriyorsa:

  • [3.8.3/H-1-1] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirip devre dışı bırakabileceği bir ayarlar menüsü sağlamalıdır.

Yeni şartların sona ermesi

El cihazı uygulamaları Yardımcı işlem özelliğini destekliyorsa:

  • [3.8.4/H-SR-2] 7.2.3 numaralı bölümde açıklandığı gibi yardımcı uygulamayı başlatmak için belirlenen etkileşim olarak HOME tuşuna uzun basmanın KUVVETLE ÖNERİLDİĞİ. Kullanıcı tarafından seçilen yardımcı uygulamayı (yani VoiceInteractionService uygulamasını uygulayan uygulamayı) veya ACTION_ASSIST intent'ini işleyen bir etkinliği BAŞLATMALIDIR.

Avuç içi cihaz uygulamaları conversation notifications bildirimleri destekleyip bunları uyarı ve sessiz olmayan ileti dizisi dışı bildirimlerden ayrı bir bölümde gruplandırırsa:

  • [3.8.4/H-1-1]* Devam eden ön plan hizmet bildirimleri ve önem:yüksek bildirimleri hariç olmak üzere, görüşme bildirimleri, görüşme dışı bildirimlerin önünde GÖSTERİLMELİDİR.

Android el cihazı uygulamaları kilit ekranını destekliyorsa:

  • [3.8.10/H-1-1] Medya Bildirim Şablonu dahil Kilit Ekranı Bildirimleri GÖSTERİLMELİDİR.

El cihazı uygulamaları güvenli kilit ekranını destekliyorsa:

  • [3.9/H-1-1] Android SDK dokümanlarında tanımlanan tüm cihaz yönetimi politikalarını UYGULAMALIDIR.

El cihazı uygulamaları ControlsProviderService ve Control API'leri için destek içeriyorsa ve üçüncü taraf uygulamalarının cihaz kontrolleri yayınlamasına izin veriyorsa:

  • [3.8.16/H-1-1] Özellik işaretini android.software.controls bildirmeli ve true olarak ayarlamalıdır.
  • [3.8.16/H-1-2] ControlsProviderService ve Control API'leri aracılığıyla üçüncü taraf uygulamaları tarafından kaydedilen kontroller arasından kullanıcının favori cihaz kontrollerini ekleme, düzenleme, seçme ve çalıştırma olanağı sunan bir kullanıcı özelliği ZORUNLUDUR.
  • [3.8.16/H-1-3] Varsayılan bir başlatıcıdan üç etkileşim içinde bu kullanıcı özelliğine erişim SAĞLANMALIDIR.
  • [3.8.16/H-1-4] Bu kullanıcı özelliğinde, ControlsProviderService API aracılığıyla denetim sağlayan her üçüncü taraf uygulamasının adını ve simgesini, ayrıca Control API'leri tarafından sağlanan tüm belirtilen alanları doğru şekilde oluşturmalıdır.

  • [3.8.16/H-1-5] Uygulama tarafından belirlenen kimlik doğrulama için önemsiz cihaz denetimlerini, üçüncü taraf uygulamaları tarafından ControlsProviderService ve Control Control.isAuthRequired API aracılığıyla kaydedilen denetimlerden devre dışı bırakmak için kullanıcılara bir kolaylık sunmalıdır.

Yeni şartlar başlatma

  • [3.8.16/H-1-6] Cihaz uygulamalarında kullanıcı olanağı şu şekilde doğru şekilde oluşturulmalıdır:
    • Cihaz config_supportsMultiWindow=true değerini ayarladıysa ve uygulama, geçerli bir etkinliğin ComponentName değeri (API tarafından tanımlandığı şekilde) dahil olmak üzere meta verileri ControlsProviderService beyanında META_DATA_PANEL_ACTIVITY olarak tanımladıysa uygulama, söz konusu etkinliği bu kullanıcı özelliğine yerleştirmelidir.
    • Uygulama meta veri META_DATA_PANEL_ACTIVITY bildirmiyorsa belirtilen alanları ControlsProviderService API'si tarafından sağlandığı şekilde ve Denetleme API'leri tarafından sağlanan tüm belirtilen alanları oluşturmalıdır.
  • [3.8.16/H-1-7] Uygulama meta verileri META_DATA_PANEL_ACTIVITY beyan ediyorsa, yerleşik etkinliği başlatırken [3.8.16/H-1-5] bölümünde tanımlanan ayarın değerini EXTRA_LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS kullanarak İLETMELİDİR.

Yeni şartların sona ermesi

Buna karşılık, el cihazı uygulamaları bu tür kontrolleri uygulamazsa:

El cihazı uygulamaları kilit görev modunda çalışmıyorsa içerik panoya kopyalandığında:

  • [3.8.17/H-1-1] Kullanıcıya, verilerin panosuna kopyalandığına dair bir onay gösterilmelidir (ör. "İçerik kopyalandı" başlıklı bir küçük resim veya uyarı). Ayrıca, pano verilerinin cihazlar arasında senkronize edilip edilmeyeceğine dair bir gösterge de buraya eklenmelidir.

Elde taşınabilir cihaz uygulamaları:

  • [3.10/H-0-1] Üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.
  • [3.10/H-SR-1] Talkback açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevlerine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi önemle ÖNERİLİR.
  • [3.11/H-0-1] Üçüncü taraf TTS motorlarının yüklenmesini DESTEKLEMELİDİR.
  • [3.11/H-SR-1] Cihazdaki dilleri destekleyen bir TTS motoru eklenmesi önemle ÖNERİLİR.
  • [3.13/H-SR-1] Hızlı Ayarlar kullanıcı arayüzü bileşeni eklemeniz önemle ÖNERİLİR.

Android avuç içi cihaz uygulamaları FEATURE_BLUETOOTH veya FEATURE_WIFI desteğini belirtiyorsa:

  • [3.16/H-1-1] Arkadaş cihaz eşleme özelliğini DESTEKLEMELİYDİR.

Gezinme işlevi ekranda, harekete dayalı bir işlem olarak sağlanıyorsa:

  • [7.2.3/H] Ana Sayfa işlevi için hareket tanıma bölgesi, ekranın alt kısmından en fazla 32 dp yükseklikte OLMALIDIR.

El cihazı uygulamaları, ekranın sol ve sağ kenarlarının herhangi bir yerinden hareketle gezinme işlevi sağlıyorsa:

  • [7.2.3/H-0-1] Gezinme işlevinin hareket alanı her iki taraftan da 40 dp'den dar OLMALIDIR. Hareket alanı varsayılan olarak 24 dp genişliğinde OLMALIDIR.

El cihazı uygulamaları güvenli kilit ekranını destekliyorsa ve çekirdek ile kullanıcı alanında 2 GB'dan fazla veya 2 GB'a eşit miktarda bellek varsa:

  • [3.9/H-1-2] Yönetilen profillerin desteğini android.software.managed_users özellik işareti aracılığıyla BEYAN ETMEK ZORUNDADIR.

Android el cihazı uygulamaları, kamera desteğini android.hardware.camera.any üzerinden bildirirse:

Cihaz uygulamasının ayarlar uygulaması, etkinlik yerleştirme özelliğini kullanarak bölünmüş işlevsellik uyguluyorsa:

Yeni şartlar başlatma

Cihaz uygulamaları kullanıcıların her türlü aramayı yapmasına izin veriyorsa

Yeni şartların sona ermesi

2.2.4. Performans ve Güç

  • [8.1/H-0-1] Kararlı kare gecikmesi. Tutarlı olmayan kare gecikmesi veya kare oluşturma gecikmesi saniyede 5 kareden fazla olmamalı ve saniyede 1 kareden az olmalıdır.
  • [8.1/H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamalarında, Android Uyumluluk Testi Paketi (CTS) tarafından tanımlandığı şekilde 10.000 liste girişinin yer aldığı bir listeyi 36 saniyeden kısa sürede kaydırarak düşük gecikmeli kullanıcı deneyimi sağlanmalıdır.
  • [8.1/H-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, başlatılmış 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ĞLAMALIDIR.
  • [8.2/H-0-2] En az 0,5 MB/sn rastgele yazma performansı SAĞLAMALIDIR.
  • [8.2/H-0-3] En az 15 MB/sn sıralı okuma performansı SAĞLAMALIDIR.
  • [8.2/H-0-4] En az 3,5 MB/sn rastgele okuma performansı SAĞLAMALIDIR.

El cihazı uygulamaları, AOSP'de bulunan ve cihaz güç yönetimini iyileştirmeye yönelik veya AOSP'de bulunan özellikleri genişleten özellikler içeriyorsa:

  • [8.3/H-1-1] Pil tasarrufu özelliğini etkinleştirmek ve devre dışı bırakmak için kullanıcıya kolaylık sağlanmalıdır.
  • [8.3/H-1-2] Uygulama bekleme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcılara kolaylık sağlanmalıdır.

Elde taşınabilir cihaz uygulamaları:

  • [8.4/H-0-1] Her donanım bileşeni için mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini Android Açık Kaynak Projesi sitesinde belirtildiği şekilde tanımlayan bileşen başına güç profili ZORUNLUDUR.
  • [8.4/H-0-2] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden bildirmelidir.
  • [8.4/H-0-3] Her işlemin UID'si başına CPU güç tüketimini bildirmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
  • [8.4/H-0-4] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır.
  • [8,4/sa] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.

El cihazı uygulamalarında ekran veya video çıkışı varsa:

Elde taşınabilir cihaz uygulamaları:

  • [8.5/H-0-1] Ayarlar menüsünde, etkin ön plan hizmetleri veya kullanıcı tarafından başlatılan işler içeren tüm uygulamaları (SDK belgesinde açıklandığı şekilde başlatıldıktan sonraki süreleri de dahil) görmeyi sağlayan bir kullanıcı özelliği sunmalıdır. Ayrıca, ön plan hizmeti veya kullanıcı tarafından başlatılan iş çalıştıran bir uygulamayı durdurma olanağı da sağlanmalıdır.Ayrıca, ön plan hizmeti çalıştıran bir uygulamayı durdurma ve etkin ön plan hizmetleri olan tüm uygulamaları ve bu hizmetlerin her birinin SDK belgesinde açıklandığı şekilde başlatıldıktan sonraki sürelerini görüntüleme olanağı da sağlanmalıdır.
    • Bazı uygulamalar, SDK belgesinde açıklandığı şekilde durdurulmaktan veya bu tür bir kullanıcı özelliğinde listelenmekten muaf tutulabilir.

Yeni şartlar başlatma

  • [8.5/H-0-2]Ön plan hizmeti veya kullanıcı tarafından başlatılan bir iş çalıştıran bir uygulamayı durdurmak için kullanıcılara bir kolaylık sunmalıdır.

Yeni şartların sona ermesi

2.2.5. Güvenlik Modeli

Elde taşınabilir cihaz uygulamaları:

  • [9/H-0-1] android.hardware.security.model.compatible özelliğini bildirmelidir.
  • [9.1/H-0-1] Üçüncü taraf uygulamalarının android.permission.PACKAGE_USAGE_STATS izni aracılığıyla kullanım istatistiklerine erişmesine izin VERMELİ ve android.settings.ACTION_USAGE_ACCESS_SETTINGS intent'ine yanıt olarak bu tür uygulamalara erişim izni vermek veya iptal etmek için kullanıcının erişebileceği bir mekanizma sağlamalıdır.

Yeni şartlar başlatma

Cihaz uygulamaları android.hardware.telephony için destek belirtiyorsa:

  • [9.5/H-1-1] UserManager.isHeadlessSystemUserMode, true olarak AYARLANMAMALIDIR.

Yeni şartların sona ermesi

Elde taşınabilir cihaz uygulamaları:

  • [9.11/H-0-2] Anahtar deposu uygulamasını, izole bir yürütme ortamıyla YEDEKLEMELİDİR.
  • [9.11/H-0-3] Android Keystore sisteminin desteklenen algoritmalarını, çekirdekte ve daha üst katmanlarda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 karma oluşturma işlevlerinin uygulanmış olması GEREKİR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Ana Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu koşulu karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hipervizör tabanlı yalıtımın üçüncü taraflarca incelenmiş güvenli bir uygulaması da alternatif seçenekler arasındadır.
  • [9.11/H-0-4] Kilit ekranı kimlik doğrulamasını izole yürütme ortamında gerçekleştirmeli ve yalnızca başarılı olduğunda kimlik doğrulamasına bağlı anahtarların kullanılmasına izin vermelidir. Kilit ekranı kimlik bilgileri, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulamasını gerçekleştirmesine izin verecek şekilde SAKLANMALIDIR. Android Açık Kaynak Projesi'nin üst akışında, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty bulunur.
  • [9.11/H-0-5] Onaylama imzalama anahtarının güvenli donanım tarafından korunduğu ve imzalamanın güvenli donanımda yapıldığı durumlarda anahtar doğrulamayı DESTEKLEMELİDİR. Onaylama imzalama anahtarları, cihaz tanımlayıcısı olarak kullanılmasını önlemek için yeterince çok sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamak için,belirli bir SKU'dan en az 100.000 adet üretilmediği sürece aynı doğrulama anahtarını paylaşabilirsiniz. Bir SKU'dan 100.000'den fazla birim üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.

Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme şartından muaf olduğunu unutmayın. Bunun için izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini belirtmesi gerekir.

El cihazı uygulamaları güvenli kilit ekranını desteklediğinde:

  • [9.11/H-1-1] Kullanıcının en kısa uyku zaman aşımını (kilitli olmayan durumdan kilitli duruma geçiş süresi) 15 saniye veya daha kısa olarak seçmesine İZİN VERMELİDİR.
  • [9.11/H-1-2] Bildirimleri gizleme ve 9.11.1 Güvenli Kilit Ekranı bölümünde açıklanan birincil kimlik doğrulama dışındaki tüm kimlik doğrulama biçimlerini devre dışı bırakma seçeneği kullanıcıya sunulmalıdır. AOSP, tam gizlilik modu olarak koşulu karşılar.

Yeni şartlar başlatma

Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService sistem API'sini uygulayan bir veya daha fazla güven aracısı varsa bu cihazlar:

  • [9.11.1/H-1-1] Kullanıcıdan, önerilen birincil kimlik doğrulama yöntemlerinden birini (ör. PIN, desen, şifre) 72 saatte bir defadan daha sık istemelidir.

Yeni şartların sonlandırılması

El cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini belirtmiyorsa:

  • [9.5/H-2-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmelerine olanak tanıyan bir özellik olan kısıtlanmış profilleri DESTEKLEMELİDİR. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlıca oluşturabilir ve bu ortamlarda bulunan uygulamalarda daha ayrıntılı kısıtlamalar yönetebilir.

El cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini belirtiyorsa:

  • [9.5/H-3-1] Kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'nin kontrolleri uygulamasıyla uyumlu OLMALIDIR.

Yeni şartlar başlatma

El cihazı uygulamaları UserManager.isHeadlessSystemUserMode değerini true olarak ayarlarsa

  • [9.5/H-4-1] eUICC'ler veya arama özelliğine sahip eSIM'ler için destek İÇERMEMELİDİR.
  • [9.5/H-4-2] android.hardware.telephony için destek beyan ETMEmelidir.

Yeni şartların sona ermesi

Android, System API VoiceInteractionService aracılığıyla mikrofon erişimi göstergesi olmadan güvenli, her zaman açık özel kelime algılama ve mikrofon veya kamera erişimi göstergesi olmadan her zaman açık sorgu algılama mekanizmasını destekler.

El cihazı uygulamaları, Sistem API'siniHotwordDetectionService veya mikrofon erişimi göstergesi olmadan özel kelime algılama için başka bir mekanizmayı destekliyorsa:

  • [9.8/H-1-1] Önemli kelime algılama hizmetinin yalnızca sisteme, ContentCaptureService'e veya SpeechRecognizer#createOnDeviceSpeechRecognizer() tarafından oluşturulan cihaz üzerinde konuşma tanıma hizmetine veri aktarabildiğinden EMİN OLMALIDIR.
  • [9.8/H-1-2] Önemli kelime algılama hizmetinin yalnızca HotwordDetectionService API üzerinden mikrofon ses verilerini veya bu verilerden türetilen verileri sistem sunucusuna, ContentCaptureManager API üzerinden ise ContentCaptureService'a iletebildiğinden EMİN OLMALIDIR.
  • [9.8/H-1-3] Hızlı kelime algılama hizmetine gönderilen, donanım tarafından tetiklenen tek bir istek için 30 saniyeden uzun mikrofon sesi SAĞLANMAMALIDIR.
  • [9.8/H-1-4] Özel kelime algılama hizmetine yapılan tek bir istek için 8 saniyeden eski arabelleğe alınmış mikrofon sesi SAĞLANMAMALIDIR.
  • [9.8/H-1-5] Ses etkileşimi hizmetine veya benzer bir öğeye 30 saniyeden eski arabelleğe alınmış mikrofon sesi SAĞLAMAMALIDIR.
  • [9.8/H-1-6] Her başarılı hotword sonucunda HotwordAudioStream üzerinden iletilen ses verileri hariç olmak üzere 100 bayttan fazla verinin hotword algılama hizmetinden iletilmesine İZİN VERMEMELİDİR.
  • [9.8/H-1-7] Her negatif anahtar kelime sonucunda anahtar kelime algılama hizmetinden 5 bitten fazla veri aktarılmasına İZİN VERMEMELİDİR.
  • [9.8/H-1-8] Yalnızca sistem sunucusundan gelen bir hit kelime doğrulama isteğinde hit kelime algılama hizmetinden veri aktarımına izin VERMELİDİR.
  • [9.8/H-1-9] Kullanıcı tarafından yüklenebilen bir uygulamanın, özel kelime algılama hizmetini sağlamasına İZİN VERMEMELİDİR.
  • [9.8/H-1-10] Kullanıcı arayüzünde, önemli kelime algılama hizmeti tarafından mikrofon kullanımıyla ilgili nicel veriler GÖSTERİLMEMELİDİR.
  • [9.8/H-1-11] Güvenlik araştırmacılarının denetleme yapmasına olanak tanımak için, popüler kelime algılama hizmetinden her iletiye eklenen bayt sayısını KAYDETMELİDİR.
  • [9.8/H-1-12] Güvenlik araştırmacılarının incelemesine izin vermek için, özel kelime algılama hizmetinden gelen her iletimin ham içeriğini günlükleyen bir hata ayıklama modu desteklenmelidir.
  • [9.8/H-1-14] Sesli etkileşim hizmetine veya benzer bir öğeye başarılı bir kısa kelime sonucu aktarıldığında 9.8.2 bölümünde açıklandığı şekilde mikrofon göstergesini GÖSTERMELİDİR.

Yeni şartlar başlatma

  • [9.8/H-1-15] Başarılı özel kelime sonuçlarında sağlanan ses akışlarının, özel kelime algılama hizmetinden ses etkileşimi hizmetine tek yönlü olarak iletilmesini SAĞLAMALIDIR.

Yeni şartların sona ermesi

  • [9.8/H-SR-1] Bir uygulamayı, önemli kelime algılama hizmetinin sağlayıcısı olarak ayarlamadan önce kullanıcıları bilgilendirmeniz önemle ÖNERİLİR.
  • [9.8/H-SR-2] Anahtar kelime algılama hizmetinden yapılandırılmamış verilerin aktarılmasına izin verilmemesi önemle ÖNERİLİR.
  • [9.8/H-SR-3] Sıcak kelime algılama hizmetini barındıran işlemi en az saatte bir veya en geç 30 donanım tetikleyici etkinliğinden sonra (hangisi önceyse) yeniden başlatmanız önemle ÖNERİLİR.

Cihaz uygulamalarında, mikrofon kullanımı göstergesi olmadan sıcak kelime algılama için Sistem API'sini HotwordDetectionServiceveya benzer bir mekanizmayı kullanan bir uygulama varsa uygulama:

  • [9.8/H-2-1] Desteklenen her sıcak kelime öbeği için kullanıcıya açık bir bildirim VERMELİDİR.
  • [9.8/H-2-2] Önemli kelime algılama hizmeti aracılığıyla ham ses verilerini veya bu verilerden türetilen verileri KORUMAMALIDIR.
  • [9.8/H-2-3] ContentCaptureService veya cihaz üzerinde konuşma tanıma hizmetine aktarılmaları hariç olmak üzere, özel kelime algılama hizmetinden, ses verilerinden, sesi (tamamen veya kısmen) yeniden oluşturmak için kullanılabilecek verilerden veya özel kelimeyle alakalı olmayan ses içeriklerinden BİLGİ Aktarılmamalıdır.

Yeni şartlar başlatma

El cihazı uygulamaları, mikrofon ve/veya kamera erişimi göstergesi olmadan sorgu algılama için Sistem API'siniVisualQueryDetectionService veya başka bir mekanizmayı destekliyorsa:

  • [9.8/H-3-1] Sorgu algılama hizmetinin yalnızca sisteme, ContentCaptureService'e veya cihaz üzerinde konuşma tanıma hizmetine (SpeechRecognizer#createOnDeviceSpeechRecognizer() tarafından oluşturulur) veri aktarabildiğinden EMİN OLMALIDIR.
  • [9.8/H-3-2] ContentCaptureService veya cihaz üzerinde konuşma tanıma hizmeti dışında VisualQueryDetectionService dışında ses veya video bilgilerinin iletilmesine İZİN VERMEMELİDİR.
  • [9.8/H-3-3] Cihaz, kullanıcının Dijital Asistan Uygulaması ile etkileşim kurma niyetini algıladığında (ör.kamera aracılığıyla kullanıcının varlığını algılayarak) Sistem Kullanıcı Arayüzünde kullanıcı bildirimi GÖSTERMELİDİR.
  • [9.8/H-3-4] Kullanıcı sorgusu algılanır algılanmaz kullanıcı sorgusunu algılayan mikrofon göstergesi ve algılanan kullanıcı sorgusunu kullanıcı arayüzünde GÖSTERMELİDİR.
  • [9.8/H-3-5] Kullanıcı tarafından yüklenebilen bir uygulamanın görsel sorgu algılama hizmetini sağlamasına İZİN VERMEMELİDİR.

Yeni şartların sona ermesi

El cihazı uygulamaları android.hardware.microphone bildirirse:

  • [9.8.2/H-4-1] Bir uygulama mikrofondaki ses verilerine erişirken mikrofon göstergesini GÖSTERMELİDİR ancak mikrofona yalnızca HotwordDetectionService,SOURCE_HOTWORD,ContentCaptureService veya CDD tanımlayıcısıyla [C-4-X] bölüm 9.1'de belirtilen rolleri elinde tutan uygulamalar erişiyorsa mikrofon göstergesi GÖSTERİLMEMELİDİR.
  • [9.8.2/H-4-2] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen mikrofonu kullanan son ve etkin uygulamaların listesini, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERMELİDİR.

El cihazı uygulamaları android.hardware.camera.any bildirirse:

  • [9.8.2/H-5-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesini GÖSTERMELİDİR ancak kameraya yalnızca CDD tanımlayıcısıyla [C-4-X] 9.1 numaralı bölümde belirtilen rollere sahip uygulamalar tarafından erişiliyorsa kamera göstergesi GÖSTERİLMEMELİDİR.
  • [9.8.2/H-5-2] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen kamerayı kullanarak Son ve Etkin uygulamaları, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERMELİDİR.

2.2.6. Geliştirici Araçları ve Seçenekleri Uyumluluğu

El cihazı uygulamaları (* Tablet için geçerli değildir):

  • [6.1/H-0-1]* kabuk komutunu desteklemelidircmd testharness.

El cihazı uygulamaları (* Tablet için geçerli değildir):

  • Perfetto
    • [6.1/H-0-2]* Kabuk kullanıcısına /system/bin/perfettoperfetto dokümanlarına uygun bir cmdline içeren bir ikili dosya GÖSTERMELİDİR.
    • [6.1/H-0-3]* perfetto ikili dosyası, giriş olarak perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırması kabul ETMELİDİR.
    • [6.1/H-0-4]* perfetto ikili dosyası, perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izleme çıktısı yazmalıdır.
    • [6.1/H-0-5]*, perfetto ikili dosyası aracılığıyla en azından perfetto dokümanlarında açıklanan veri kaynaklarını SAĞLAMALIDIR.
    • [6.1/H-0-6]* Perfeto izlenen arka plan programı varsayılan olarak etkinleştirilmiş OLMALIDIR (persist.traced.enable sistem özelliği).

2.2.7. El Cihazında Medya Performansı Sınıfı

Medya performansı sınıfının tanımı için 7.11 numaralı bölüme bakın.

2.2.7.1. Medya

El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.T döndürürse:

Yeni şartlar başlatma

El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.U döndürürse:

  • [5.1/H-1-1] CodecCapabilities.getMaxSupportedInstances() ve VideoCapabilities.getSupportedPerformancePoints() yöntemleri aracılığıyla herhangi bir codec kombinasyonunda aynı anda çalıştırılabilecek maksimum sayıda donanım video kod çözücü oturumunun reklamını YAPMALIDIR.
  • [5.1/H-1-2] 30 fps'de 1080p çözünürlükte 3 oturum ve 30 fps'de 4K çözünürlükte 3 oturumla eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 6 adet 8 bit (SDR) donanım video kod çözücü oturumu (AVC, HEVC, VP9, AV1 veya sonraki sürümler) desteklemelidir. AV1 codec'lerinin yalnızca 1080p çözünürlüğü desteklemesi gerekir ancak 1080p30fps'de 6 örneği desteklemesi de gerekir.
  • [5.1/H-1-3] CodecCapabilities.getMaxSupportedInstances() ve VideoCapabilities.getSupportedPerformancePoints() yöntemleri aracılığıyla herhangi bir codec kombinasyonunda aynı anda çalıştırılabilecek maksimum sayıda donanım video kodlayıcı oturumunun reklamını YAPMALIDIR.
  • [5.1/H-1-4] 30 fps'de 1080p çözünürlükte 4 oturum ve 30 fps'de 4K çözünürlükte 2 oturumla eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 6 tane 8 bit (SDR) donanım video kodlayıcı oturumu (AVC, HEVC, VP9, AV1 veya sonraki sürümler) desteklemelidir. AV1 codec'lerinin yalnızca 1080p çözünürlüğü desteklemesi gerekir ancak 1080p30fps'de 6 örneği desteklemesi de gerekir.
  • [5.1/H-1-5] CodecCapabilities.getMaxSupportedInstances() ve VideoCapabilities.getSupportedPerformancePoints() yöntemleri aracılığıyla herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek maksimum sayıda donanım video kodlayıcı ve kod çözücü oturumunun reklamını YAPMALIDIR.
  • [5.1/H-1-6] 30 fps 4K çözünürlükte 3 oturumla eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 6 adet 8 bit (SDR) donanım video kod çözücü ve donanım video kodlayıcı oturumu (AVC, HEVC, VP9, AV1 veya sonraki sürümler) desteklemelidir. Bu oturumlardan en fazla 2'si kodlayıcı oturumları, 3'ü ise 1080p çözünürlükte olmalıdır. AV1 codec'lerinin yalnızca 1080p çözünürlüğü desteklemesi gerekir ancak 1080p30fps'de 6 örneği desteklemesi de gerekir.
  • [5.1/H-1-19] 30 fps'de 4K çözünürlükte çalışan herhangi bir codec kombinasyonunda 10 bit (HDR) donanım video kod çözücü ve donanım video kodlayıcı oturumları (AVC, HEVC, VP9, AV1 veya sonraki sürümler) için en fazla 1 kodlayıcı oturumu olmak üzere 3 örnek desteklemelidir. Bu kodlayıcı oturumu, GL yüzeyi aracılığıyla RGBA_1010102 giriş biçiminde yapılandırılabilir. GL yüzeyinden kodlama yapılıyorsa kodlayıcı tarafından HDR meta verisi oluşturma işlemi gerekli değildir. AV1 codec oturumları, bu şart 4K'yı gerektirse bile yalnızca 1080p çözünürlüğü desteklemek için gereklidir.
  • [5.1/H-1-7] Yük altındayken tüm donanım video kodlayıcılar için 1080p veya daha küçük video kodlama oturumunda 40 ms veya daha kısa bir codec başlatma gecikmesi OLMALIDIR. Buradaki yük, 1080p sesli/videolu kayıt başlatma işlemiyle birlikte donanım video codec'lerini kullanan eşzamanlı bir 1080p'den 720p'ye yalnızca video kod dönüştürme oturumu olarak tanımlanır. Dolby Vision codec'i için codec başlatma gecikmesi 50 ms veya daha az OLMALIDIR.
  • [5.1/H-1-8] Yük altındayken tüm ses kodlayıcılar için 128 kb/sn veya daha düşük bit hızı ses kodlama oturumunda 30 ms veya daha az codec başlatma gecikmesi OLMALIDIR. Buradaki yük, 1080p sesli/videolu kayıt başlatma işlemiyle birlikte donanım video codec'lerini kullanan eşzamanlı bir 1080p'den 720p'ye yalnızca video kod dönüştürme oturumu olarak tanımlanır.
  • [5.1/H-1-9] Hem 8 bit (SDR) hem de 10 bit HDR içerik için 30 fps'de 1080p çözünürlükte eşzamanlı olarak çalışan herhangi bir codec kombinasyonunda 2 güvenli donanım video kod çözücü oturumu (AVC, HEVC, VP9, AV1 veya sonraki sürümler) desteklemelidir.
  • [5.1/H-1-10] 30 fps'de 4K çözünürlükte çalışan 3 oturumla (bir güvenli kod çözücü oturumu ve 1080p çözünürlükte 30 fps'de çalışan 1 güvenli olmayan oturum dahil) herhangi bir codec kombinasyonunda 1 güvenli donanım video kod çözücü oturumuyla birlikte 3 güvenli olmayan donanım video kod çözücü oturumu (toplam 4 oturum) (AVC, HEVC, VP9, AV1 veya sonraki sürümler) desteklemelidir. Bu oturumlardan en fazla 2'si 10 bit HDR'de olabilir. AV1 codec oturumları, bu şart 4K'yı gerektirse bile yalnızca 1080p çözünürlüğü desteklemek için gereklidir.
  • [5.1/H-1-11] Cihazdaki her donanım AVC, HEVC, VP9 veya AV1 kod çözücü için güvenli bir kod çözücü desteklemelidir.
  • [5.1/H-1-12] Yük altındayken tüm donanım video kod çözücüler için 1080p veya daha küçük video kod çözme oturumunda 40 ms veya daha kısa bir codec başlatma gecikmesi OLMALIDIR. Buradaki yük, 1080p sesli/videolu oynatma başlatma işlemiyle birlikte donanım video codec'leri kullanan eşzamanlı bir 1080p'den 720p'ye yalnızca video kod dönüştürme oturumu olarak tanımlanır. Dolby Vision codec'i için codec başlatma gecikmesi 50 ms veya daha az OLMALIDIR.
  • [5.1/H-1-13] Yük altındayken tüm ses kod çözücüler için 128 kb/sn veya daha düşük bit hızında ses kod çözme oturumunda 30 ms veya daha kısa bir codec başlatma gecikmesi OLMALIDIR. Buradaki yükleme, 1080p sesli/videolu oynatma başlatma işlemiyle birlikte donanım video codec'leri kullanılarak 1080p'den 720p'ye eşzamanlı olarak yalnızca video aktarma oturumu olarak tanımlanır.
  • [5.1/H-1-14] AV1 donanım kod çözücüsü Ana 10, Seviye 4.1 ve film taneciklerini desteklemelidir.
  • [5.1/H-1-15] 4K60'ı destekleyen en az 1 donanım video kod çözücüsü OLMALIDIR.
  • [5.1/H-1-16] 4K60'ı destekleyen en az 1 donanım video kodlayıcı bulunmalıdır.
  • [5.3/H-1-1] Yük altındaki 4K 60 fps video oturumunda 10 saniyede 1'den fazla kare atlama (ör. yüzde 0,167'den az kare atlama) OLMAZ.
  • [5.3/H-1-2] 4K oturum için yük altındaki 60 FPS video oturumunda video çözünürlüğü değişikliği sırasında 10 saniyede 1'den fazla kare atlanmamalıdır.
  • [5.6/H-1-1] CTS Doğrulayıcı dokunma-ses testi kullanılarak 80 milisaniye veya daha kısa bir dokunma-ses gecikmesi OLMALIDIR.
  • [5.6/H-1-2] En az bir desteklenen veri yolunda 80 milisaniye veya daha az gidiş dönüş ses gecikmesi OLMALIDIR.
  • [5.6/H-1-3] Düşük gecikme ve akış yapılandırmaları için veri yolunun tamamında destekliyorsa 3,5 mm ses jakları üzerinden stereo çıkış için >=24 bit ses ve USB ses üzerinden destekleniyorsa desteklemelidir. Düşük gecikmeli yapılandırma için uygulama, AAudio'yu düşük gecikmeli geri çağırma modunda kullanmalıdır. Akış yapılandırması için uygulama tarafından bir Java AudioTrack kullanılmalıdır. Hem düşük gecikmeli hem de akış yapılandırmalarında HAL çıkış alıcısı, hedef çıkış biçimi için AUDIO_FORMAT_PCM_24_BIT, AUDIO_FORMAT_PCM_24_BIT_PACKED, AUDIO_FORMAT_PCM_32_BIT veya AUDIO_FORMAT_PCM_FLOAT'i kabul etmelidir.
  • [5.6/H-1-4] >=4 kanallı USB ses cihazlarını DESTEKLEMELİDİR (Bu özellik, DJ kontrolörleri tarafından şarkıları önizlemek için kullanılır.)
  • [5.6/H-1-5] Sınıf uyumlu MIDI cihazları desteklemeli ve MIDI özellik işaretini belirtmelidir.
  • [5.6/H-1-9] En az 12 kanallı miksajı desteklemelidir. Bu, 7.1.4 kanal maskesi içeren bir AudioTrack'i açma ve tüm kanalları stereo olarak düzgün bir şekilde uzamsallaştırma veya kanalları stereo olarak azaltma olanağı anlamına gelir.
  • [5.6/H-SR] 9.1.6 ve 22.2 kanal maskeleri için en az destek ile 24 kanallı miksajı desteklemek İYİCE ÖNERİLİR.
  • [5.7/H-1-2] Aşağıdaki içerik şifre çözme özellikleriyle MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL desteklenmelidir.
Minimum örnek boyutu 4 MiB
Minimum Alt Örnek Sayısı - H264 veya HEVC 32
Minimum Alt Örnek Sayısı - VP9 9
Minimum Alt Örnek Sayısı - AV1 288
Minimum alt örnek arabelleği boyutu 1 MiB
Minimum genel kriptografi arabelleği boyutu 500 KiB
Minimum eşzamanlı oturum sayısı 30
Oturum başına minimum anahtar sayısı 20
Minimum Toplam Anahtar Sayısı (tüm oturumlar) 80
Minimum Toplam DRM Anahtarı Sayısı (tüm oturumlar) 6
Mesaj Boyutu 16 KiB
Saniyedeki Şifre Çözme İşlemi Yapılan Kare Sayısı 60 fps
  • [5.1/H-1-17] AVIF Baseline Profile'i destekleyen en az 1 donanım resim kod çözücü BULUNMASI GEREKİR.
  • [5.1/H-1-18] 30 fps ve 1 Mb/sn'de 480p çözünürlüğe kadar kodlayabilen AV1 kodlayıcıyı DESTEKLEMELİDİR.
  • [5.12/H-1-1] ŞU ZORUNLUDUR [5.12/H-SR] Cihazda bulunan tüm donanım AV1 ve HEVC kodlayıcılarında Feature_HdrEditing özelliğinin desteklenmesi Kesinlikle Önerilir.
  • [5.12/H-1-2] Cihazdaki tüm donanım AV1 ve HEVC kodlayıcıları için RGBA_1010102 renk biçimini DESTEKLEMELİDİR.
  • [5.12/H-1-3] Hem 8 hem de 10 bitlik YUV dokularından örnek almak için EXT_YUV_target uzantısının desteğinin reklamını YAPMALIDIR.
  • [7.1.4/H-1-1] Ekran işleme biriminde (DPU) en az 6 donanım yer paylaşımı OLMALIDIR. Bunlardan en az 2'si 10 bit video içeriği gösterebilmelidir.

El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.U döndürüyorsa ve donanım AVC veya HEVC kodlayıcı desteği içeriyorsa:

Yeni şartların sona ermesi

2.2.7.2. Kamera

El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.T döndürürse:

Yeni şartlar başlatma

El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.U döndürürse:

  • [7.5/H-1-1] En az 12 megapiksel çözünürlüğe sahip ve 4K@30 fps'de video çekimini destekleyen birincil arka kamera bulunmalıdır. Birincil arka kamera, en düşük kamera kimliğine sahip arka kameradır.
  • [7.5/H-1-2] En az 6 megapiksel çözünürlüğe sahip ve 30 fps'de 1080p video çekimini destekleyen birincil bir ön kamera OLMALIDIR. Birincil ön kamera, en düşük kamera kimliğine sahip ön kameradır.
  • [7.5/H-1-3] android.info.supportedHardwareLevel mülkünü arka birincil kamera için FULL veya daha iyi, ön birincil kamera için ise LIMITED veya daha iyi olarak desteklemelidir.
  • [7.5/H-1-4] Her iki birincil kamera için CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME desteklenmelidir.
  • [7.5/H-1-5] Her iki birincil kamera için de CTS kamera Performans Testi'nin kendi ışıklandırma koşullarında (3000K) ölçtüğü 1080p çözünürlükte kamera2 JPEG yakalama gecikmesi 1000 900 ms'den az OLMALIDIR.
  • [7.5/H-1-6] Her iki birincil kamera için de CTS kamera Performans Testi'nin kendi ışıklandırma koşullarında (3000K) ölçtüğü kamera2 başlatma gecikmesi (kameranın açılmasından ilk önizleme çerçevesine kadar) 500 ms'den az OLMALIDIR.
  • [7.5/H-1-8] Birincil arka kamera için CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_RAW ve android.graphics.ImageFormat.RAW_SENSOR desteklenmelidir.
  • [7.5/H-1-9] 240 fps'de 720p veya 1080p'yi destekleyen arkaya bakan birincil kamera ZORUNLUDUR.
  • [7.5/H-1-10] Aynı yöne bakan ultra geniş RGB kamera varsa birincil kameralar için ZOOM_RATIO minimum değeri 1,0'dan küçük olmalıdır.
  • [7.5/H-1-11] Birincil kameralarda eşzamanlı ön-arka akış uygulanmalıdır.
  • [7.5/H-1-12] Hem birincil ön hem de birincil arka kamera için CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION desteklenmelidir.
  • [7.5/H-1-13] 1'den fazla RGB arka kamera varsa birincil arka kamera için LOGICAL_MULTI_CAMERA özelliğini DESTEKLEMELİDİR.
  • [7.5/H-1-14] Hem birincil ön hem de birincil arka kamera için STREAM_USE_CASE özelliğini DESTEKLEMELİDİR.
  • [7.5/H-1-15] Birincil kameralar için hem CameraX hem de Camera2 uzantıları aracılığıyla Bokeh ve Gece modu uzantılarını desteklemelidir.
  • [7.5/H-1-16] Birincil kameralar için DYNAMIC_RANGE_TEN_BIT özelliğini DESTEKLEMELİDİR.
  • [7.5/H-1-17] Birincil kameralar için CONTROL_SCENE_MODE_FACE_PRIORITY ve yüz algılama (STATISTICS_FACE_DETECT_MODE_SIMPLE veya STATISTICS_FACE_DETECT_MODE_FULL) desteği ZORUNLUDUR.

Yeni şartların sona ermesi

2.2.7.3. Donanım

El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.T döndürürse:

Yeni şartlar başlatma

El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.U döndürürse:

  • [7.1.1.1/H-2-1] Ekran çözünürlüğü en az 1080p OLMALIDIR.
  • [7.1.1.3/H-2-1] Ekran yoğunluğu en az 400 dpi OLMALIDIR.
  • [7.1.1.3/H-3-1] Ortalama en az 1.000 nit destekleyen bir HDR ekrana sahip OLMALIDIR.
  • [7.6.1/H-2-1] En az 8 GB fiziksel bellek bulunmalıdır.

Yeni şartların sona ermesi

2.2.7.4. Performans

El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.T döndürürse:

Yeni şartlar başlatma

El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.U döndürürse:

  • [8.2/H-1-1] En az 150 MB/sn'lik sıralı yazma performansı SAĞLAMALIDIR.
  • [8.2/H-1-2] En az 10 MB/sn rastgele yazma performansı SAĞLAMALIDIR.
  • [8.2/H-1-3] En az 250 MB/sn sıralı okuma performansı SAĞLAMALIDIR.
  • [8.2/H-1-4] En az 100 MB/sn rastgele okuma performansı SAĞLAMALIDIR.
  • [8.2/H-1-5] En az 50 MB/sn okuma ve 1 MB/sn yazma performansıyla paralel sıralı okuma ve yazma performansı SAĞLAMALIDIR.

Yeni şartların sona ermesi

2.3. Televizyon Gereksinimleri

Android TV cihazı, yaklaşık üç metre uzaklıktaki kullanıcılar için dijital medya, film, oyun, uygulama ve/veya canlı TV içeriklerini tüketmeye yönelik bir eğlence arayüzü olan Android cihaz uygulamasını ifade eder ("arkanıza yaslanın" veya "üç metrelik kullanıcı arayüzü").

Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa televizyon olarak sınıflandırılır:

  • Kullanıcıdan üç metre uzakta olabilecek ekranda oluşturulan kullanıcı arayüzünü uzaktan kontrol etmek için bir mekanizma sağlamış olmalıdır.
  • Çapraz uzunluğu 24 inçten büyük yerleşik bir ekrana sahip OLMALI VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası veya ekran için kablosuz bağlantı noktası içermelidir.

Bu bölümün geri kalanındaki ek şartlar, Android TV cihaz uygulamalarında geçerlidir.

2.3.1. Donanım

Televizyon cihazı uygulamaları:

  • [7.2.2/T-0-1] D-pad desteklenmelidir.
  • [7.2.3/T-0-1] Ana Sayfa ve Geri işlevlerini İÇERMELİDİR.
  • [7.2.3/T-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliğini ön plan uygulamasına GÖNDERMELİDİR.
  • [7.2.6.1/T-0-1] Oyun kontrol cihazları için destek içermeli ve android.hardware.gamepad özellik işaretini belirtmelidir.
  • [7.2.7/T] Kullanıcıların dokunmadan gezinme ve temel gezinme tuşları girişlerine erişebileceği bir uzaktan kumanda SAĞLANMALIDIR.

Televizyon cihazı uygulamalarında 3 eksenli jiroskop varsa:

  • [7.3.4/T-1-1] En az 100 Hz'e kadar frekansta etkinlikleri bildirebilmelidir.
  • [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] Uygulamanın özel verileri ("/data" bölümü olarak da bilinir) için en az 4 GB kalıcı depolama alanı BULUNMASI GEREKİR.

TV cihazı uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:

  • [7.5.3/T-1-1] Bu USB bağlantı noktası üzerinden bağlanan ancak her zaman bağlı olması gerekmeyen harici bir kamera desteği DAHİL OLMALIDIR.

TV cihazı uygulamaları 32 bit ise:

  • [7.6.1/T-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 896 MB OLMALIDIR:

    • Küçük/normal ekranlarda 400 dpi veya daha yüksek
    • Büyük ekranlarda xhdpi veya daha yüksek
    • Ekstra büyük ekranlarda tvdpi veya daha yüksek

TV cihazı uygulamaları 64 bit ise:

  • [7.6.1/T-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1.280 MB OLMALIDIR:

    • Küçük/normal ekranlarda 400 dpi veya daha yüksek
    • Büyük ekranlarda xhdpi veya daha yüksek
    • Ekstra büyük ekranlarda tvdpi veya daha yüksek

Yukarıdaki "çekirdek ve kullanıcı alanında kullanılabilen bellek" ifadesinin, radyo ve video gibi donanım bileşenlerine ayrılmış ve cihaz uygulamalarında çekirdeğin kontrolü altında olmayan belleklere 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ışına sahip OLMALI ve android.hardware.audio.output bildirmelidir.

2.3.2. Multimedya

Televizyon cihazı uygulamaları aşağıdaki ses kodlama ve kod çözme biçimlerini desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:

  • [5.1/T-0-1] MPEG-4 AAC Profili (AAC LC)
  • [5.1/T-0-2] MPEG-4 HE AAC Profili (AAC+)
  • [5.1/T-0-3] AAC ELD (düşük gecikmeli gelişmiş AAC)

Televizyon cihazı uygulamaları aşağıdaki video kodlama biçimlerini desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:

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

Yeni şartlar başlatma

  • [5.2/T-0-3] AV1

Yeni şartların sona ermesi

Televizyon cihazı uygulamaları:

  • [5.2.2/T-SR-1] 720p ve 1080p çözünürlüklü videoların saniyede 30 kare hızında H.264 kodlamasını desteklemeniz önemle ÖNERİLİR.

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

Yeni şartlar başlatma

Yeni şartların sona ermesi

Televizyon cihazı uygulamaları, Bölüm 5.3.1'de ayrıntılı olarak açıklandığı üzere, aşağıdakiler dahil olmak üzere standart video kare hızlarında ve çözünürlüklerinde MPEG-2 kod çözmeyi DESTEKLEMELİDİR:

  • [5.3.1/T-1-1] Ana Profil Yüksek Seviye ile saniyede 29,97 kare hızında HD 1080p.
  • [5.3.1/T-1-2] Ana Profil Yüksek Seviye ile saniyede 59,94 kare HD 1080i. Aralıklı MPEG-2 videonun aralıklılığını kaldırıp üçüncü taraf uygulamalarına sunmaları GEREKİR.

Bölüm 5.3.4'te ayrıntılı olarak açıklandığı üzere, televizyon cihazı uygulamaları aşağıdakiler dahil olmak üzere standart video kare hızlarında ve çözünürlüklerinde H.264 kod çözmeyi DESTEKLEMELİDİR:

  • [5.3.4/T-1-1] Temel Profil ile saniyede 60 kare hızında HD 1080p
  • [5.3.4/T-1-2] Ana Profil ile saniyede 60 kare hızında HD 1080p
  • [5.3.4/T-1-3] Yüksek Profil Seviye 4.2 ile saniyede 60 kare hızında HD 1080p

H.265 donanım kod çözücüleri bulunan televizyon cihazı uygulamaları, Bölüm 5.3.5'te ayrıntılı olarak açıklandığı şekilde, 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] Ana Profil Seviye 4.1 ile saniyede 60 kare hızında HD 1080p

H.265 donanım kod çözücüleri bulunan televizyon cihazı uygulamaları H.265 kod çözme ve UHD kod çözme profilini destekliyorsa:

  • [5.3.5/T-2-1] Main10 5. Katman Ana Katman 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ığı şekilde, aşağıdakiler dahil olmak üzere standart video kare hızlarında ve çözünürlüklerinde VP8 kod çözmeyi desteklemelidir:

  • [5.3.6/T-1-1] saniyede 60 kare hızında HD 1080p kod çözme profili

VP9 donanım kod çözücüleri olan televizyon cihazı uygulamalarında, Bölüm 5.3.7'de açıklandığı şekilde standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde VP9 kod çözme desteklenmelidir:

  • [5.3.7/T-1-1] Profil 0 (8 bit renk derinliği) ile saniyede 60 kare hızında HD 1080p

VP9 donanım kod çözücüleri olan televizyon cihazı uygulamaları VP9 kod çözmeyi ve UHD kod çözme profilini destekliyorsa:

  • [5.3.7/T-2-1] 0 numaralı profille (8 bit renk derinliği) saniyede 60 kare hızında UHD kod çözme profilini DESTEKLEMELİDİR.
  • [5.3.7/T-SR1] 2. profil (10 bit renk derinliği) ile saniyede 60 kare hızında UHD kod çözme profilini desteklemeniz önemle ÖNERİLİR.

Televizyon cihazı uygulamaları:

  • [5.5/T-0-1] Sıkıştırılmış ses aktarma çıkışı (cihaz üzerinde ses kod çözme işlemi yapılmaz) hariç olmak üzere, desteklenen çıkışlarda sistem ana ses seviyesi ve dijital ses çıkışı ses seviyesi azaltma desteği ZORUNLUDUR.

Televizyon cihazı uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlı harici bir ekran destekliyorsa:

  • [5.8/T-0-1] HDMI çıkış modunu, cihazın satıldığı bölgenin video yenileme hızına bağlı olarak harici ekranda 50 Hz veya 60 Hz yenileme hızıyla çalışan, seçilen piksel biçimi için en yüksek çözünürlüğe AYARLAMALIDIR. 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-1] Kullanıcı tarafından yapılandırılabilir bir HDMI yenileme hızı seçicinin sağlanması önemle ÖNERİLİR.
  • [5.8] HDMI çıkış modu yenileme hızını, cihazın satıldığı bölgenin video yenileme hızına bağlı olarak 50 Hz veya 60 Hz olarak AYARACAK.

Televizyon cihazı uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlı harici bir ekran destekliyorsa:

  • [5.8/T-1-1] HDCP 2.2'yi DESTEKLEMELİDİR.

Televizyon cihazı uygulamaları UHD kod çözmeyi desteklemiyorsa ancak HDMI üzerinden bağlı harici bir ekranı destekliyorsa:

  • [5.8/T-2-1] HDCP 1.4'ü DESTEKLEMELİDİR

2.3.3. Yazılım

Televizyon cihazı uygulamaları:

  • [3/T-0-1] android.software.leanback ve android.hardware.type.television özelliklerini İLANI GEREKTİRİR.
  • [3.2.3.1/T-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulama ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.
  • [3.4.1/T-0-1] android.webkit.Webview API'sinin eksiksiz bir uygulamasını SAĞLAMALIDIR.

Android TV cihaz uygulamaları kilit ekranını destekliyorsa:

  • [3.8.10/T-1-1] Medya Bildirim Şablonu dahil olmak üzere Kilit Ekranı Bildirimlerini GÖSTERMELİDİR.

Televizyon cihazı uygulamaları:

  • [3.8.14/T-SR-1] Resim içinde resim (PIP) modunu çoklu pencerede desteklemek için ÇOK TAVSİYE EDİLİR.
  • [3.10/T-0-1] Üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.
  • [3.10/T-SR-1] Talkback açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevselliğine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi önemle ÖNERİLİR.

Televizyon cihazı uygulamaları özelliği android.hardware.audio.output olarak raporlarsa:

  • [3.11/T-SR-1] Cihazdaki dilleri destekleyen bir TTS motoru eklenmesi önemle ÖNERİLİR.
  • [3.11/T-1-1] Üçüncü taraf TTS motorlarının yüklenmesini desteklemelidir.

Televizyon cihazı uygulamaları:

  • [3.12/T-0-1] TV Giriş Çerçevesi'ni DESTEKLEMELİDİR.

2.3.4. Performans ve Güç

  • [8.1/T-0-1] Kararlı kare gecikmesi. Tutarlı olmayan kare gecikmesi veya kare oluşturma gecikmesi saniyede 5 kareden fazla olmamalı ve saniyede 1 kareden az olmalıdır.
  • [8.2/T-0-1] En az 5 MB/sn sıralı yazma performansı SAĞLAMALIDIR.
  • [8.2/T-0-2] En az 0,5 MB/sn rastgele yazma performansı SAĞLAMALIDIR.
  • [8.2/T-0-3] En az 15 MB/sn sıralı okuma performansı SAĞLAMALIDIR.
  • [8.2/T-0-4] En az 3,5 MB/sn rastgele okuma performansı SAĞLAMALIDIR.

Televizyon cihazı uygulamaları, AOSP'de bulunan ve cihaz güç yönetimini iyileştirmeye yönelik veya AOSP'de bulunan özellikleri genişleten özellikler içeriyorsa:

  • [8.3/T-1-1] Pil tasarrufu özelliğini etkinleştirmek ve devre dışı bırakmak için kullanıcılara uygun bir yöntem sunulmalıdır.

Televizyon cihazı uygulamalarında pil yoksa:

Televizyon cihazı uygulamalarında pil varsa:

  • [8.3/T-1-3] Uygulama bekleme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcılara olanak sağlanmalıdır.

Televizyon cihazı uygulamaları:

  • [8.4/T-0-1] Her donanım bileşeni için mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini Android Açık Kaynak Projesi sitesinde belirtildiği şekilde tanımlayan bileşen başına güç profili ZORUNLUDUR.
  • [8.4/T-0-2] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden bildirmelidir.
  • [8.4/T-0-3] Her işlemin UID'si başına CPU güç tüketimini bildirmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
  • [8.4/T] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.
  • [8.4/T-0-4] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır.

2.3.5. Güvenlik Modeli

Televizyon cihazı uygulamaları:

  • [9/T-0-1] android.hardware.security.model.compatible özelliğini BEYAN ETMELİDİR.
  • [9.11/T-0-1] Anahtar deposu uygulamasını izole bir yürütme ortamıyla YEDEKLEMELİDİR.
  • [9.11/T-0-2] Android Keystore sisteminin desteklenen algoritmalarını, çekirdekte ve daha üst katmanlarda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 karma oluşturma işlevlerinin uygulanmış olması GEREKİR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Ana Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu koşulu karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hipervizör tabanlı yalıtımın üçüncü taraflarca incelenmiş güvenli bir uygulaması da alternatif seçenekler arasındadır.
  • [9.11/T-0-3] Kilit ekranı kimlik doğrulamasını izole yürütme ortamında YAPMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamasına bağlı anahtarların kullanılmasına izin vermelidir. Kilit ekranı kimlik bilgileri, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulamasını gerçekleştirmesine izin verecek şekilde SAKLANMALIDIR. Android Açık Kaynak Projesi'nin üst akışında, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty bulunur.
  • [9.11/T-0-4] Onaylama imzalama anahtarının güvenli donanım tarafından korunduğu ve imzalamanın güvenli donanımda yapıldığı durumlarda anahtar onayı desteklenmelidir. Onaylama imzalama anahtarları, cihaz tanımlayıcısı olarak kullanılmasını önlemek için yeterince çok sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamak için,belirli bir SKU'dan en az 100.000 adet üretilmediği sürece aynı doğrulama anahtarını paylaşabilirsiniz. Bir SKU'dan 100.000'den fazla birim üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.

Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme şartından muaf olduğunu unutmayın. Bunun için izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini belirtmesi gerekir.

Televizyon cihazı uygulamaları güvenli kilit ekranını destekliyorsa:

  • [9.11/T-1-1] Kullanıcının, kilidi açık durumdan kilitli duruma geçiş için Uyku modu zaman aşımını seçmesine izin VERMELİDİR. İzin verilen minimum zaman aşımı 15 saniye veya daha kısa olmalıdır.

Televizyon cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini belirtmiyorsa:

  • [9.5/T-2-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki yetkilerini yönetmelerine olanak tanıyan bir özellik olan kısıtlanmış profilleri DESTEKLEMELİDİR. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlıca oluşturabilir ve bu ortamlarda bulunan uygulamalarda daha ayrıntılı kısıtlamalar yönetebilir.

Televizyon cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini belirtiyorsa:

  • [9.5/T-3-1] Kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'deki kontrollerin uygulanmasıyla uyumlu OLMALIDIR.

Televizyon cihazı uygulamaları android.hardware.microphone bildirirse:

  • [9.8.2/T-4-1] Bir uygulama mikrofondan ses verilerine erişirken mikrofon göstergesini GÖSTERMELİDİR ancak mikrofona yalnızca HotwordDetectionService, SOURCE_HOTWORD, ContentCaptureService veya Bölüm 9.1'de belirtilen rolleri (CDD tanımlayıcısı C-3-X ile) tutan uygulamalar erişiyorsa mikrofon göstergesi GÖSTERİLMEMELİDİR.
  • [9.8.2/T-4-2] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamalarında mikrofon göstergesi gizlenmemelidir.

Televizyon cihazı uygulamaları android.hardware.camera.any bildirirse:

  • [9.8.2/T-5-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesini GÖSTERMELİDİR ancak kameraya yalnızca Bölüm 9.1 CDD tanımlayıcısı [C-3-X] ile izinler bölümünde belirtilen rollere sahip uygulamalar tarafından erişildiğinde GÖSTERMEMELİDİR.
  • [9.8.2/T-5-2] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için kamera göstergesini gizlememelidir.

2.3.6. Geliştirici Araçları ve Seçenekleri Uyumluluğu

Televizyon cihazı uygulamaları:

  • Perfetto
    • [6.1/T-0-1] Kabuk kullanıcısına /system/bin/perfetto ikili dosyası göstermeLİDİR. Bu ikili dosyanın komut satırı, perfetto belgelerine uygun olmalıdır.
    • [6.1/T-0-2] Perfetto ikili dosyası, giriş olarak perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırması kabul ETMELİDİR.
    • [6.1/T-0-3] perfetto ikili dosyası, perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izlemesi çıkışı yazmalıdır.
    • [6.1/T-0-4] Perfetto dokümanlarında açıklanan veri kaynaklarının en azından bir kısmını, perfetto ikili dosyası aracılığıyla SAĞLAMALIDIR.

2.4. İzleme Şartları

Android kol saati cihazı, vücutta (ör. bilekte) takılmak üzere tasarlanmış bir Android cihaz uygulamasıdır.

Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa İzleme olarak sınıflandırılır:

  • Fiziksel çapraz uzunluğu 1,1 ila 2,5 inç arasında olan bir ekrana sahip olmalıdır.
  • Vücuda takılmak için bir mekanizmaya sahip olmalıdır.

Bu bölümün geri kalanındaki ek şartlar, Android Watch cihaz uygulamalarında geçerlidir.

2.4.1. Donanım

Cihaz uygulamalarını izleme:

  • [7.1.1.1/W-0-1] Fiziksel çapraz boyutu 1,1 ila 2,5 inç arasında olan bir ekrana sahip OLMALIDIR.

  • [7.2.3/W-0-1] Kullanıcının Ana Sayfa işlevini ve UI_MODE_TYPE_WATCH'de olmadığı sürece Geri işlevini kullanabilmesi GEREKİR.

  • [7.2.4/W-0-1] Dokunmatik ekran girişini DESTEKLEMELİDİR.

  • [7.3.1/W-SR-1] 3 eksenli bir ivmeölçer eklenmesi önemle ÖNERİLİR.

Kol saati cihazı uygulamaları bir GPS/GNSS alıcı içeriyorsa ve bu özelliği android.hardware.location.gps özellik işareti aracılığıyla uygulamalara bildirirse:

  • [7.3.3/W-1-1] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile GNSS ölçümleri bulunur bulunmaz bildirilmelidir.
  • [7.3.3/W-1-2] Konum belirlendikten sonra açık hava koşullarında sabitken veya 0,2 metrekare saniyeden daha az ivmeyle hareket ederken en az% 95 oranında konumu 20 metre, hızı ise 0,2 metre saniye içinde hesaplamak için yeterli olan GNSS sanal menzilleri ve sanal menzil hızlarını bildirmelidir.

Watch cihaz uygulamalarında 3 eksenli jiroskop varsa:

  • [7.3.4/W-2-1] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.

Cihaz uygulamalarını izleme:

  • [7.4.3/W-0-1] Bluetooth'u DESTEKLEMELİDİR.

  • [7.6.1/W-0-1] Uygulama özel verileri ("/data" bölümü olarak da bilinir) için en az 1 GB kalıcı depolama alanı BULUNMASI GEREKİR.

  • [7.6.1/W-0-2] Çekirdek ve kullanıcı alanında en az 416 MB bellek BULUNMASI GEREKİR.

  • [7.8.1/W-0-1] Mikrofon içermelidir.

  • [7.8.2/W] Ses çıkışı OLABİLİR.

2.4.2. Multimedya

Ek koşul yoktur.

2.4.3. Yazılım

Cihaz uygulamalarını izleme:

  • [3/W-0-1] Özelliği bildirmelidirandroid.hardware.type.watch.
  • [3/W-0-2] uiMode = UI_MODE_TYPE_WATCH değerini desteklemelidir.
  • [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 intent işleyiciyle bir veya daha fazla uygulama ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.

Cihaz uygulamalarını izleme:

  • [3.8.4/W-SR-1] Yardımcı işlem'i işlemek için cihaza bir yardımcı uygulamanın eklenmesi önemle ÖNERİLİR.

android.hardware.audio.output özellik işaretini bildiren cihaz uygulamalarını izleyin:

  • [3.10/W-1-1] Üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.
  • [3.10/W-SR-1] TalkBack açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevselliğine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi önemle ÖNERİLİR.

Kol saati cihazı uygulamaları android.hardware.audio.output özelliğini raporluyorsa:

  • [3.11/W-SR-1] Cihazdaki dilleri destekleyen bir TTS motoru eklenmesi önemle ÖNERİLİR.

  • [3.11/W-0-1] Üçüncü taraf TTS motorlarının yüklenmesini DESTEKLEMELİDİR.

2.4.4. Performans ve Güç

Kol saati cihazı uygulamalarında, AOSP'de bulunan ve cihaz güç yönetimini iyileştirmeye yönelik özellikler veya AOSP'de bulunan özellikleri genişleten özellikler varsa:

  • [8.3/W-SR-1] Uygulama bekleme ve Doze güç tasarrufu modlarından muaf tutulan tüm uygulamaların gösterilmesi için kullanıcılara kolaylık sağlamak önemle ÖNERİLİR.
  • [8.3/W-SR-2] Kullanıcıların pil tasarrufu özelliğini etkinleştirmesi ve devre dışı bırakması için İYİCE ÖNERİLİR.

Cihaz uygulamalarını izleme:

  • [8.4/W-0-1] Her donanım bileşeni için mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini Android Open Source Project sitesinde belirtildiği şekilde tanımlayan bileşen başına güç profili ZORUNLUDUR.
  • [8.4/W-0-2] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden bildirmelidir.
  • [8.4/W-0-3] Her işlemin UID'si başına CPU güç tüketimini bildirmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
  • [8.4/W-0-4] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır.
  • [8,4/W], donanım bileşeninin güç tüketimi bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.

2.4.5. Güvenlik Modeli

Cihaz uygulamalarını izleme:

  • [9/W-0-1] android.hardware.security.model.compatible özelliğini bildirmelidir.

Watch cihazı uygulamalarında birden fazla kullanıcı varsa ve android.hardware.telephony özellik işareti tanımlanmamışsa:

  • [9.5/W-1-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki yetkilerini yönetmelerine olanak tanıyan bir özellik olan kısıtlanmış profilleri DESTEKLEMELİDİR. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlıca oluşturabilir ve bu ortamlarda bulunan uygulamalarda daha ayrıntılı kısıtlamalar yönetebilir.

Kol saati cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini belirtiyorsa:

  • [9.5/W-2-1] Kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'deki kontrollerin uygulanmasıyla uyumlu OLMALIDIR.

Yeni şartlar başlatma

Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService sistem API'sini uygulayan bir veya daha fazla güven aracısı varsa bu cihazlar:

  • [9.11.1/W-1-1] Kullanıcıdan, önerilen birincil kimlik doğrulama yöntemlerinden birini (ör. PIN, desen, şifre) 72 saatte bir defadan daha sık istemelidir.

Yeni şartların sona ermesi

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 ediyorsa veya aşağıdaki tüm ölçütleri karşılıyorsa Automotive olarak sınıflandırılır.

  • Bir otomotiv aracının parçası olarak yerleştirilmiş veya bu araca takılabilir olmalıdır.
  • Birincil ekran olarak sürücü koltuğu satırındaki bir ekran kullanıyorsanız.

Bu bölümün geri kalanındaki ek şartlar, Android Automotive cihaz uygulamalarında geçerlidir.

2.5.1. Donanım

Otomotiv cihaz uygulamaları:

  • [7.1.1.1/A-0-1] Fiziksel diyagonal boyutu en az 6 inç olan bir ekrana sahip OLMALIDIR.
  • [7.1.1.1/A-0-2] En az 750 dp x 480 dp ekran boyutunda bir düzene sahip OLMALIDIR.
  • [7.2.3/A-0-1] Ana Sayfa işlevini ZORUNLU KULLANIYOR ve Geri ve Son işlevlerini KULLANABİLİYOR olmalıdır.
  • [7.2.3/A-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliğini ön plan uygulamasına GÖNDERMELİDİR.
  • [7.3/A-0-1] GEAR_SELECTION, NIGHT_MODE, PERF_VEHICLE_SPEED ve PARKING_BRAKE_ON özelliklerini UYGULAMALI ve raporlamalıdır.
  • [7.3/A-0-2] NIGHT_MODE işaretinin değeri, gösterge paneli gündüz/gece moduyla tutarlı OLMALI ve ortam ışığı sensörünün girişine dayalı OLMALIDIR. Temel ortam ışığı sensörü, fotometre ile aynı OLABİLİR.
  • [7.3/A-0-3] Sağlanan her sensör için SensorAdditionalInfo kapsamında bir sensör ek bilgi alanı TYPE_SENSOR_PLACEMENT sağlanmalıdır.
  • [7.3/A-SR1] GPS/GNSS'yi ek sensörlerle birleştirerek konum tahmini YAPABİLİR. Konum, seyirle belirleniyorsa kullanılan ilgili sensör türlerini ve/veya araç mülkü kimliklerini uygulamanız ve bildirmeniz önemle tavsiye edilir.
  • [7.3/A-0-4] LocationManager#requestLocationUpdates() aracılığıyla istenen konum harita ile eşleşmemelidir.

  • [7.3.1/A-0-4] Android araç sensör koordinat sistemine UYGUN OLMALIDIR.

  • [7.3/A-SR-1] 3 eksenli ivme ölçer ve 3 eksenli jiroskop eklemeniz önemle ÖNERİLİR.

  • [7.3/A-SR-2] TYPE_HEADING sensörünü uygulamak ve bildirmek için STRONGLY_RECOMMENDED.

Otomotiv cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:

  • [7.1.4.1/A-0-1] OpenGL ES 3.1 veya sonraki bir sürümü BEYAN ETMELİDİR.
  • [7.1.4.1/A-0-2] Vulkan 1.1'i DESTEKLEMELİDİR.
  • [7.1.4.1/A-0-3] Vulkan yükleyiciyi İÇERMELİ ve tüm sembolleri DIŞA aktarmalıdır.

Otomotiv cihaz uygulamaları bir ivmeölçer içeriyorsa:

  • [7.3.1/A-1-1] En az 100 Hz'e kadar frekansta etkinlikleri bildirebilmelidir.

Cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:

  • [7.3.1/A-SR-1] Sınırlı eksen ivme ölçer için birleşik sensörün uygulanması önemle ÖNERİLİR.

Otomotiv cihaz uygulamaları 3'ten az eksene sahip bir ivme ölçer içeriyorsa:

  • [7.3.1/A-1-3] TYPE_ACCELEROMETER_LIMITED_AXES sensörünü uygulamalı ve bildirmelidir.
  • [7.3.1/A-1-4] TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED sensörünü uygulamalı ve bildirmelidir.

Otomotiv cihaz uygulamaları jiroskop içeriyorsa:

  • [7.3.4/A-2-1] En az 100 Hz'e kadar frekansta etkinlikleri bildirebilmelidir.
  • [7.3.4/A-2-3] Saniyede 250 dereceye kadar yön değişikliklerini ölçebilmelidir.
  • [7.3.4/A-SR-1] Mümkün olan çözünürlüğü en üst düzeye çıkarmak için jiroskopun ölçüm aralığını +/-250 dps olarak yapılandırmanız önemle ÖNERİLİR.

Otomotiv cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:

  • [7.3.4/A-SR-2] Sınırlı eksenli jiroskop için karma sensörün uygulanması önemle ÖNERİLİR.

Otomotiv cihaz uygulamaları 3'ten az eksene sahip bir jiroskop içeriyorsa:

  • [7.3.4/A-4-1] TYPE_GYROSCOPE_LIMITED_AXES sensörünü uygulamalı ve bildirmelidir.
  • [7.3.4/A-4-2] TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED sensörünü uygulamalı ve bildirmelidir.

Otomotiv cihaz uygulamaları bir GPS/GNSS alıcı içeriyor ancak hücresel ağa dayalı veri bağlantısı içermiyorsa:

  • [7.3.3/A-3-1] GPS/GNSS alıcısı ilk açıldığında veya 4 günden uzun bir süre sonra 60 saniye içinde konumu BULMALIDIR.
  • [7.3.3/A-3-2] Diğer tüm konum istekleri (ör.ilk kez gönderilmeyen veya 4 günden uzun süre sonra gönderilen istekler) için 7.3.3/C-1-2 ve 7.3.3/C-1-6'da açıklanan ilk düzeltme süresi ölçütlerini karşılamalıdır. 7.3.3/C-1-2 şartı, genellikle hücresel ağ tabanlı veri bağlantısı olmayan araçlarda, alıcıda hesaplanan GNSS yörünge tahminleri kullanılarak veya bilinen son araç konumu ile birlikte 7.3.3/C-1-3'ü karşılayan bir konum doğruluğuyla en az 60 saniye boyunca seyir hesaplaması yapma özelliği kullanılarak ya da her ikisinin bir kombinasyonu kullanılarak karşılanır.

Otomotiv cihaz uygulamaları bir TYPE_HEADING sensörü içeriyorsa:

  • [7.3.4/A-4-3] En az 1 Hz'ye kadar bir sıklıkta etkinlikleri bildirebilmelidir.
  • [7.3.4/A-SR-3] En az 10 Hz'ye kadar frekansta etkinlikleri bildirmek için STRONGLY_RECOMMENDED.
  • Gerçek kuzeye göre OLMALIDIR.
  • Araç hareketsizken bile kullanılabilir.
  • En az 1 derece çözünürlüğe sahip OLMALIDIR.

Otomotiv cihaz uygulamaları:

  • [7.4.3/A-0-1] Bluetooth'u DESTEKLEMELİDİR ve Bluetooth LE'yi DESTEKLEMELİDİR.
  • [7.4.3/A-0-2] Android Automotive uygulamaları aşağıdaki Bluetooth profillerini DESTEKLEMELİDİR:
    • Eller Serbest Profili (HFP) üzerinden telefon araması.
    • Ses Dağıtım Profili (A2DP) üzerinden medya oynatma.
    • Uzaktan Kumanda Profili (AVRCP) üzerinden medya oynatma kontrolü.
    • Telefon Rehberi Erişim Profili (PBAP) kullanılarak kişi paylaşımı.
  • [7.4.3/A-SR-1] Mesaj Erişim Profili'ni (MAP) desteklemeleri önemle ÖNERİLİR.

  • [7.4.5/A] Hücresel ağa dayalı veri bağlantısı desteği İÇERMELİDİR.

  • [7.4.5/A] Sistem uygulamalarının kullanabileceği ağlar için Sistem API'si NetworkCapabilities#NET_CAPABILITY_OEM_PAID sabit değerini KULLANABİLİR.

Yeni şartlar başlatma

Cihaz uygulamaları AM/FM yayın radyosu desteği içeriyorsa ve bu işlevi herhangi bir uygulamaya sunuyorsa:

  • [7.4.10/A-0-1] FEATURE_BROADCAST_RADIO için destek beyan ETMELIDİR.

Yeni şartların sona ermesi

Dış görüntü kamerası, arka görüş kamerası gibi cihaz uygulamasının dışındaki sahneleri görüntüleyen bir kameradır.

Otomotiv cihaz uygulamaları:

  • Bir veya daha fazla dış kamera içermelidir.

Otomotiv cihaz uygulamalarında dış görüntü kamerası varsa bu kamera için:

  • [7.5/A-1-1] Dış kameralar, kamera temel şartlarına uymadığı sürece Android Kamera API'leri aracılığıyla erişilebilir OLMAMALISDIR.
  • [7.5/A-SR-1] Kamera önizlemesini döndürmemek veya yatay olarak yansıtmamak önemle ÖNERİLİR.

  • [7.5/A-SR-2] En az 1,3 megapiksel çözünürlüğe sahip olmaları önemle ÖNERİLİR.

  • Sabit odaklı veya EDOF (geniş alan derinliği) donanımına sahip OLMALIDIR.

  • Kamera sürücüsünde donanım otomatik odaklama veya yazılım otomatik odaklama uygulanmış OLABİLİR.

Otomotiv cihazı uygulamaları bir veya daha fazla dış görünüm kamerası içeriyorsa ve Dış Görünüm Sistemi (EVS) hizmetini yüklüyorsa bu tür bir kamera için:

  • [7.5/A-2-1] Kamera önizlemesini döndürmemeli veya yatay olarak yansıtmamalıdır.

Otomotiv cihaz uygulamaları:

  • Üçüncü taraf uygulamaları tarafından kullanılabilen bir veya daha fazla kamera içerebilir.

Otomotiv cihaz uygulamaları en az bir kamera içeriyorsa ve bu kamerayı üçüncü taraf uygulamalarına sunuyorsa:

  • [7.5/A-3-1] android.hardware.camera.any özellik işaretini bildirmelidir.
  • [7.5/A-3-2] Kamerayı sistem kamerası olarak beyan etmemelidir.
  • 7.5.3 numaralı bölümde açıklanan harici kameraları DESTEKLEYEBİLİR.
  • 7.5.1 numaralı bölümde açıklandığı gibi arkaya bakan kameralarda kullanılabilen özellikleri (otomatik odaklama vb.) İÇERİYE ALMAYABİLİR.

Yeni şartlar başlatma

Arka kamera, araçtaki herhangi bir yerde bulunabilen ve araç kabininin dışına bakan, yani araç gövdesinin uzak tarafındaki sahneleri görüntüleyen, dışa bakan bir kamera anlamına gelir (arka görüş kamerası gibi).

Ön kamera, araçtaki herhangi bir yerde bulunabilen ve araç kabininin içine bakan, yani kullanıcıyı görüntüleyen (ör. görüntülü toplantı ve benzeri uygulamalar için) kullanıcıya bakan bir kamera anlamına gelir.

Otomotiv cihaz uygulamaları:

  • [7.5/A-SR-1] Bir veya daha fazla dışa dönük kameranın eklenmesi önemle ÖNERİLİR.
  • Bir veya daha fazla kullanıcıya bakan kamera içerebilir.
  • [7.5/A-SR-2] Birden fazla kameranın eşzamanlı olarak yayınını desteklemek için ÇOK ÖNEMLİ ÖNERİLİR.

Otomotiv cihazı uygulamalarında dünyaya bakan en az bir kamera varsa bu tür kameralar için:

  • [7.5/A-1-1] Kameranın uzun boyutu, Android Automotive sensör eksenlerinin X-Y düzlemiyle hizalanacak şekilde yönlendirilmelidir.
  • [7.5/A-SR-3] Sabit odaklı veya EDOF (Geniş Alan Derinliği) donanıma sahip olmanız önemle ÖNERİLİR.
  • [7.5/A-1-2] Birincil dışa dönük kamera, en düşük kamera kimliğine sahip dışa dönük kamera OLMALIDIR.

Otomotiv cihazı uygulamalarında kullanıcıya bakan en az bir kamera varsa bu tür bir kamera için:

  • [7.5/A-2-1] Birincil kullanıcıya dönük kamera, en düşük kamera kimliğine sahip kullanıcıya dönük kamera OLMALIDIR.
  • Kameranın uzun boyutu, Android Automotive sensör eksenlerinin X-Y düzlemiyle hizalanacak şekilde yönlendirilebilir.

Otomotiv cihaz uygulamaları, android.hardware.Camera veya android.hardware.camera2 API'si aracılığıyla erişilebilen bir kamera içeriyorsa:

  • [7.5/A-3-1] 7.5 numaralı bölümdeki temel kamera koşullarını İÇERİYOR OLMALIDIR.

Otomotiv cihaz uygulamaları, android.hardware.Camera veya android.hardware.camera2 API'si aracılığıyla erişilemeyen bir kamera içeriyorsa:

  • [7.5/A-4-1] Genişletilmiş Görünüm Sistemi hizmeti üzerinden erişilebilir OLMALIDIR.

Otomotiv cihazı uygulamalarında, Geniş Görünüm Sistem Hizmeti aracılığıyla erişilebilen bir veya daha fazla kamera varsa bu tür kameralar için:

  • [7.5/A-5-1] Kamera önizlemesini döndürmemeli veya yatay olarak yansıtmamalıdır.
  • [7.5/A-SR-4] En az 1,3 megapiksel çözünürlüğe sahip olmaları önemle ÖNERİLİR.

Otomotiv cihazı uygulamaları hem Geniş Görünüm Sistem Hizmeti hem de android.hardware.Camera veya android.hardware.Camera2 API aracılığıyla erişilebilen bir veya daha fazla kamera içeriyorsa bu tür bir kamera için:

  • [7.5/A-6-1] Aynı kamera kimliğini bildirmelidir.

Otomotiv cihaz uygulamaları özel bir kamera API'si sağlıyorsa:

  • [7.5/A-7-1] android.hardware.camera2 API'sini veya Geniş Görünüm Sistemi API'sini kullanarak bu tür bir kamera API'si UYGULAMALIDIR.

Yeni şartların sona ermesi

Otomotiv cihaz uygulamaları:

  • [7.6.1/A-0-1] Uygulamanın özel verileri ("/data" bölümü olarak da bilinir) için en az 4 GB kalıcı depolama alanı BULUNMASI GEREKİR.

  • [7.6.1/A] Veri bölümünü, flash depolama alanında daha iyi performans ve uzun ömür sağlamak için biçimlendirmelidir (ör. f2fs dosya sistemini kullanarak).

Automotive cihaz uygulamaları, çıkarılamayan dahili depolama alanının bir kısmı aracılığıyla paylaşılan harici depolama alanı sağlıyorsa:

  • [7.6.1/A-SR-1] Harici depolama alanında gerçekleştirilen işlemlerde G/Ç yükü azaltmak için SDCardFS kullanılarak GÜÇLÜ ÖNERİLİR.

Automotive cihaz uygulamaları 64 bit ise:

  • [7.6.1/A-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 816 MB OLMALIDIR:

    • Küçük/normal ekranlarda 280 dpi veya daha düşük
    • Ekstra büyük ekranlarda ldpi veya daha düşük
    • mdpi veya büyük ekranlarda daha düşük
  • [7.6.1/A-2-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 944 MB OLMALIDIR:

    • Küçük/normal ekranlarda xhdpi veya daha yüksek
    • Büyük ekranlarda hdpi veya daha yüksek
    • mdpi veya daha yüksek çözünürlüklü çok büyük ekranlar
  • [7.6.1/A-2-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1.280 MB OLMALIDIR:

    • Küçük/normal ekranlarda 400 dpi veya daha yüksek
    • Büyük ekranlarda xhdpi veya daha yüksek
    • Ekstra büyük ekranlarda tvdpi veya daha yüksek
  • [7.6.1/A-2-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanının kullanabileceği bellek en az 1.824 MB OLMALIDIR:

    • Küçük/normal ekranlarda 560 dpi veya daha yüksek
    • Büyük ekranlarda 400 dpi veya daha yüksek
    • Ekstra büyük ekranlarda xhdpi veya daha yüksek

Yukarıdaki "çekirdek ve kullanıcı alanında kullanılabilen bellek" ifadesinin, radyo ve video gibi donanım bileşenlerine ayrılmış belleklere ek olarak, cihaz uygulamalarında çekirdeğin kontrolü altında olmayan bellek alanını ifade ettiğini unutmayın.

Otomotiv cihaz uygulamaları:

  • [7.7.1/A] Çevre birimi modunu destekleyen bir USB bağlantı noktası DAHİL OLMALIDIR.

Otomotiv cihaz uygulamaları:

  • [7.8.1/A-0-1] Mikrofon içermelidir.

Otomotiv cihaz uygulamaları:

  • [7.8.2/A-0-1] Ses çıkışına sahip OLMALI ve android.hardware.audio.output bildirmelidir.

2.5.2. Multimedya

Otomotiv cihaz uygulamaları aşağıdaki ses kodlama ve kod çözme biçimlerini desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:

  • [5.1/A-0-1] MPEG-4 AAC Profili (AAC LC)
  • [5.1/A-0-2] MPEG-4 HE AAC Profili (AAC+)
  • [5.1/A-0-3] AAC ELD (düşük gecikmeli gelişmiş AAC)

Otomotiv cihazı uygulamaları aşağıdaki video kodlama biçimlerini desteklemeli ve bunları üçü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 desteklemeli 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 önemle ÖNERİLİR:

  • [5.3/A-SR-1] H.265 HEVC

2.5.3. Yazılım

Otomotiv cihaz uygulamaları:

  • [3/A-0-1] android.hardware.type.automotive özelliğini İLANI ETMEK ZORUNDADIR.

  • [3/A-0-2] uiMode = UI_MODE_TYPE_CAR desteklenmelidir.

  • [3/A-0-3] android.car.* ad alanındaki tüm herkese açık API'leri desteklemelidir.

Automotive cihaz uygulamaları, android.car.VehiclePropertyIds ile android.car.CarPropertyManager kullanarak özel bir API sağlıyorsa:

  • [3/A-1-1] Sistem uygulamasının bu mülkleri kullanımına özel ayrıcalıklar eklememeli veya üçüncü taraf uygulamalarının bu mülkleri kullanmasını engellememelidir.
  • [3/A-1-2] SDK'da zaten mevcut olan bir araç mülkünü kopyalamamalıdır.

Otomotiv cihaz uygulamaları:

  • [3.2.1/A-0-1] Otomotiv İzinleri referans sayfasında belirtildiği gibi tüm izin sabitlerini desteklemeli ve 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 intent işleyiciyle bir veya daha fazla uygulama ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.

  • [3.4.1/A-0-1] android.webkit.Webview API'sinin eksiksiz bir uygulamasını SAĞLAMALIDIR.

Yeni şartlar başlatma

  • [3.8/A-0-1] Mevcut ön plan kullanıcısı olmayan tam ikincil kullanıcıların etkinlikleri başlatmasına ve herhangi bir ekranda kullanıcı arayüzüne erişmesine İZİN VERMEMELİDİR.

Yeni şartların sona ermesi

  • [3.8.3/A-0-1] Üçüncü taraf uygulamaları tarafından talep edildiğinde Notification.CarExtender API'sini kullanan bildirimleri GÖSTERMELİDİR.

  • [3.8.4/A-SR-1] Yardımcı işlem'i gerçekleştirmek için cihaza bir asistan uygulamanız önemle tavsiye edilir.

Automotive cihaz uygulamaları bir bas konuş düğmesi içeriyorsa:

  • [3.8.4/A-1-1] Kullanıcı tarafından seçilen yardımcı uygulamayı (yani VoiceInteractionService'i uygulayan uygulamayı) başlatmak için belirlenen etkileşim olarak kısa bir süre basılı tutulan bas konuş düğmesi ZORUNLUDUR.

Otomotiv cihaz uygulamaları:

  • [3.8.3.1/A-0-1] Kaynakları Notifications on Automotive OS SDK dokümanlarında açıklandığı gibi doğru şekilde oluşturmalıdır.
  • [3.8.3.1/A-0-2] Bildirim işlemleri için Notification.Builder.addAction() üzerinden sağlananlar yerine OYNA ve SESSİZ'i GÖSTERMELİDİR
  • [3.8.3.1/A] Bildirim kanalı başına kontroller gibi zengin yönetim görevlerinin kullanımını Kısıtlamalıdır. Denetimleri azaltmak için uygulama başına kullanıcı arayüzü olanağı kullanabilir.

Otomotiv cihaz uygulamaları kullanıcı HAL özelliklerini destekliyorsa:

Otomotiv cihaz uygulamaları:

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

Otomotiv cihaz uygulamaları:

  • [3.8/A] Uygulamanın tam ekran moduna girme isteklerini immersive documentation'te açıklandığı şekilde kısıtlayabilir.
  • [3.8/A] Durum çubuğunu ve gezinme çubuğunu her zaman görünür tutabilir.
  • [3.8/A] Uygulama isteklerinin, sistem kullanıcı arayüzü öğelerinin arkasındaki renkleri değiştirmesini kısıtlayabilir. Böylece bu öğeler her zaman net bir şekilde görünür.

2.5.4. Performans ve Güç

Otomotiv cihaz uygulamaları:

  • [8.2/A-0-1] Geliştiricilerin istatistikleri Sistem API'si android.car.storagemonitoring.CarStorageMonitoringManager üzerinden kullanabilmesi için her bir işlemin UID'si başına kalıcı olmayan depolama alanında okunan ve yazılan bayt sayısını bildirmelidir. Android Açık Kaynak Projesi, uid_sys_stats çekirdek modülü aracılığıyla bu koşulu karşılar.
  • [8.3/A-1-3] Garaj Modu'nu desteklemelidir.
  • [8.3/A] Aşağıdaki durumlar hariç olmak üzere her sürüşten sonra en az 15 dakika boyunca Garaj modunda OLMALIDIR:
    • Pilin şarjı bitmiş olabilir.
    • Boş işler planlanmaz.
    • Sürücü, Garaj modundan çıkar.
  • [8.4/A-0-1] Her donanım bileşeni için mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini Android Açık Kaynak Projesi sitesinde belirtildiği şekilde tanımlayan bileşen başına güç profili ZORUNLUDUR.
  • [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üketimini bildirmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
  • [8.4/A] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.
  • [8.4/A-0-4] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır.

2.5.5. Güvenlik Modeli

Automotive cihaz uygulamaları birden fazla kullanıcıyı destekliyorsa:

Yeni şartlar başlatma

Otomotiv cihaz uygulamaları android.hardware.microphone değerini belirtiyorsa:

  • [9.8.2/A-1-1] Bir uygulama mikrofondaki ses verilerine erişirken mikrofon göstergesini GÖSTERMELİDİR ancak mikrofona yalnızca HotwordDetectionService, SOURCE_HOTWORD, ContentCaptureService veya CDD tanımlayıcısıyla [C-4-X] 9.1 numaralı bölümde belirtilen rolleri elinde tutan uygulamalar erişiyorsa mikrofon göstergesi GÖSTERİLMEMELİDİR.
  • [9.8.2/A-1-2] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için mikrofon göstergesinin gizlenmemesi GEREKİR.
  • [9.8.2/A-1-3] Ayarlar uygulamasında mikrofonu açma/kapatma seçeneği için kullanıcılara bir imkân sunulmalıdır.

Yeni şartların sona ermesi

Otomotiv cihaz uygulamaları android.hardware.camera.any değerini beyan ederse:

  • [9.8.2/A-2-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesini GÖSTERMELİDİR ancak kameraya yalnızca CDD tanımlayıcısı [C-4-X][C-3-X] ile 9.1. Bölüm İzinler'de tanımlandığı şekilde rollere sahip uygulamalar tarafından erişiliyorsa kamera göstergesi GÖSTERİLMEMELİDİR.
  • [9.8.2/A-2-2] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için kamera göstergesinin gizlenmemesi GEREKİR.

Yeni şartlar başlatma

  • [9.8.2/A-2-3] Ayarlar uygulamasında kamerayı açma/kapatma seçeneği kullanıcılara sunulmalıdır.
  • [9.8.2/A-2-4] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen kamerayı kullanarak Son ve Etkin uygulamaları, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERMELİDİR.

Yeni şartların sona ermesi

Otomotiv cihaz uygulamaları:

  • [9/A-0-1] android.hardware.security.model.compatible özelliğini BEYAN ETMELİDİR.
  • [9.11/A-0-1] Anahtar deposu uygulamasını izole bir yürütme ortamıyla YEDEKLEMELİDİR.
  • [9.11/A-0-2] Android Keystore sisteminin desteklenen algoritmalarını, çekirdekte ve daha üst katmanlarda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 karma oluşturma işlevlerinin uygulanmış olması GEREKİR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Ana Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu koşulu karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hipervizör tabanlı yalıtımın üçüncü taraflarca incelenmiş güvenli bir uygulaması da alternatif seçenekler arasındadır.
  • [9.11/A-0-3] Kilit ekranı kimlik doğrulamasını izole yürütme ortamında gerçekleştirmeli ve yalnızca başarılı olduğunda kimlik doğrulamasına bağlı anahtarların kullanılmasına izin vermelidir. Kilit ekranı kimlik bilgileri, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulamasını gerçekleştirmesine izin verecek şekilde SAKLANMALIDIR. Android Açık Kaynak Projesi'nin üst akışında, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty bulunur.
  • [9.11/A-0-4] Onaylama imzalama anahtarının güvenli donanımla korunduğu ve imzalamanın güvenli donanımda yapıldığı durumlarda anahtar onayı desteklenmelidir. Onaylama imzalama anahtarları, cihaz tanımlayıcısı olarak kullanılmasını önlemek için yeterince çok sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamak için,belirli bir SKU'dan en az 100.000 adet üretilmediği sürece aynı doğrulama anahtarını paylaşabilirsiniz. Bir SKU'dan 100.000'den fazla birim üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.

Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme şartından muaf olduğunu unutmayın. Bunun için izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini belirtmesi gerekir.

Otomotiv cihaz uygulamaları:

  • [9.14/A-0-1] Android çerçeve aracı alt sistemlerinden gelen mesajları (ör. izin verilen mesaj türlerini ve mesaj kaynaklarını izin verilenler listesine ekleme) kontrol etmelidir.
  • [9.14/A-0-2] Android çerçevesi veya üçüncü taraf uygulamalarından gelen hizmet kesintisi saldırılarına karşı gözetmen olmalıdır. Bu sayede, araç ağını trafiğe boğan ve araç alt sistemlerinin çalışmamasına yol açabilecek kötü amaçlı yazılımlara karşı koruma sağlanır.

2.5.6. Geliştirici Araçları ve Seçenekleri Uyumluluğu

Otomotiv cihaz uygulamaları:

  • Perfetto
    • [6.1/A-0-1] Kabuk kullanıcısına, cmdline'in perfetto belgelerine uygun olduğu bir /system/bin/perfetto ikili dosyası GÖSTERMELİ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ı, perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izleme çıktısı yazmalıdır.
    • [6.1/A-0-4] Perfetto dokümanlarında açıklanan veri kaynaklarının en azından bir kısmını, perfetto ikili dosyası aracılığıyla SAĞLAMALIDIR.

2.6. Tablet Gereksinimleri

Android tablet cihaz, genellikle aşağıdaki ölçütlerin tümünü karşılayan bir Android cihaz uygulamasını ifade eder:

  • İki elle tutularak kullanılır.
  • Kapaklı veya dönüştürülebilir yapılandırma yoktur.
  • Cihazla birlikte kullanılan fiziksel klavye uygulamaları standart bir bağlantı (ör. USB, Bluetooth) üzerinden bağlanır.
  • Hareketliliği sağlayan bir güç kaynağına (ör. pil) sahiptir.

  • Ekran ekran boyutu, diyagonal olarak ölçüldüğünde 7 inçten büyük ve 18 inçten küçük olmalıdır.

Tablet cihaz uygulamalarının gereksinimleri, el cihazı uygulamalarınınkine benzerdir. İstisnalar ilgili bölümde * işaretiyle belirtilir ve bu bölümde referans olarak not edilir.

2.6.1. Donanım

Jiroskop

Tablet cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:

  • [7.3.4/Tab-1-1] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.

Minimum Bellek ve Depolama (Bölüm 7.6.1)

El cihazı koşullarında küçük/normal ekranlar için listelenen ekran yoğunlukları tabletler için geçerli değildir.

USB çevre birimi modu (Bölüm 7.7.1)

Tablet cihaz uygulamaları, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:

  • [7.7.1/Tab] Android Open Accessory (AOA) API'yi UYGULAYABİLİR.

Sanal Gerçeklik Modu (Bölüm 7.9.1)

Sanal Gerçeklik Yüksek Performans (Bölüm 7.9.2)

Sanal gerçeklik şartları tabletler için geçerli değildir.

2.6.2. Güvenlik Modeli

Anahtarlar ve Kimlik Bilgileri (Bölüm 9.11)

[9.11] bölümüne bakın.

Tablet cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini belirtmiyorsa:

  • [9.5/T-1-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki yeteneklerini yönetmelerine olanak tanıyan bir özellik olan kısıtlanmış profilleri DESTEKLEMELİDİR. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlıca oluşturabilir ve bu ortamlarda bulunan uygulamalarda daha ayrıntılı kısıtlamalar yönetebilir.

Tablet cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini belirtiyorsa:

  • [9.5/T-2-1] Kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'deki kontrollerin uygulanmasıyla uyumlu OLMALIDIR.

2.6.2. Yazılım

  • [3.2.3.1/Tab-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulama ya da hizmet bileşenini ÖNCEDEN YÜKLEMELİDİR.

3. Yazılım

3.1. Yönetilen API Uyumluluğu

Yönetilen Dalvik bayt kodu yürütme ortamı, Android uygulamalarının birincil aracıdır. Android uygulama programlama arayüzü (API), yönetilen çalışma ortamı içinde çalışan uygulamalara sunulan Android platform arayüzleri grubudur.

Cihaz uygulamaları:

  • [C-0-1] Android SDK'sı tarafından kullanıma sunulan tüm belgelenmiş API'lerin veya yayın öncesi Android kaynak kodunda "@SystemApi" işaretçisiyle süslenmiş tüm API'lerin, belgelenen tüm davranışlar dahil olmak üzere eksiksiz uygulamalarını SAĞLAMALIDIR.

  • [C-0-2] TestApi ek açıklaması (@TestApi) ile işaretlenmiş tüm sınıfları, yöntemleri ve ilişkili öğeleri desteklemeli/korumalıdır.

  • [C-0-3] Bu Uyumluluk Tanımı'nda açıkça izin verildiği durumlar hariç, yönetilen API'leri atlamamalı, API arayüzlerini veya imzalarını değiştirmemeli, belgelenen davranıştan sapmamalı ya da hiçbir işlem içermemelidir.

  • [C-0-4] Android'in API'leri içerdiği bazı donanım özellikleri atlanmış olsa bile API'leri mevcut tutmalı ve makul bir şekilde davranmalıdır. Bu senaryoya özgü gereksinimler için 7. bölüme bakın.

  • [C-0-5] Üçüncü taraf uygulamaların, AOSP'deki önyükleme sınıf yolu içinde bulunan ve herkese açık SDK'nın bir parçası olmayan Java dil paketlerindeki yöntemler ve alanlar olarak tanımlanan SDK dışı arayüzleri kullanmasına İZİN VERMEMELİDİR. Buna, SDK dokümanlarındaki açıklamaya göre @hide notasyonuyla süslenmiş ancak @SystemAPI notasyonuyla süslenmemiş API'ler ve özel sınıf üyeleri dahildir.

  • [C-0-6] AOSP'deki uygun API düzeyi dalının prebuilts/runtime/appcompat/hiddenapi-flags.csv yolundaki geçici ve engellenenler listesi işaretleri aracılığıyla sağlananla aynı kısıtlanmış listelerde SDK olmayan her bir arayüzle birlikte GÖNDERİLMELİDİR.

  • [C-0-7] AOSP'de bulunan mevcut herkese açık anahtarları kullanarak imzalanan yapılandırmayı herhangi bir APK'ya yerleştirerek SDK dışı arayüzleri kısıtlanmış listeden kaldırmak için imzalı yapılandırma dinamik güncelleme mekanizmasını DESTEKLEMELİDİR.

    Ancak:

    • GİBİ, gizli bir API yoksa veya cihaz uygulamasında farklı şekilde uygulanmışsa gizli API'yi reddedilenler listesine taşıyın ya da tüm kısıtlanmış listelerden çıkarın.
    • AOSP'de gizli bir API yoksa gizli API'yi kısıtlanmış listelerden birine ekleyebilir.

Yeni şartlar başlatma

  • [C-0-8] 23'ten düşük API düzeyini hedefleyen uygulamaların yüklenmesini DESTEKLEMEMELİDİR.

Yeni şartların sona ermesi

3.1.1. Android Uzantıları

Android, belirli bir API düzeyinin uzantı sürümünü güncelleyerek söz konusu API düzeyinin yönetilen API yüzeyinin genişletilmesini destekler. android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel) API, ilgili API düzeyi için uzantılar varsa sağlanan apiLevel'un uzantı sürümünü döndürür.

Android cihaz uygulamaları:

  • [C-0-1] Hem paylaşılan ExtShared kitaplığının hem de ExtServices hizmetlerinin AOSP uygulamasını, her API düzeyi için izin verilen minimum sürümlerden daha büyük veya bu sürümlere eşit sürümlerle önceden yüklemelidir. Örneğin, API düzeyi 24'ü çalıştıran Android 7.0 cihaz uygulamaları en az 1. sürümü İÇERMELİDİR.

  • [C-0-2] Yalnızca AOSP tarafından tanımlanmış geçerli uzantı sürüm numarasını döndürmelidir.

  • [C-0-3] android.os.ext.SdkExtensions.getExtensionVersion(int apiLevel) tarafından döndürülen uzantı sürümleriyle tanımlanan tüm API'leri, 3.1 numaralı bölümdeki şartlara uygun olarak diğer yönetilen API'lerin desteklenmesiyle aynı şekilde DESTEKLEMELİDİR.

3.1.2. Android Kitaplığı

Apache HTTP istemcisinin desteğinin sonlandırılması nedeniyle cihaz uygulamaları:

  • [C-0-1] org.apache.http.legacy kitaplığı, bootclasspath'e YERLEŞTİRİLMEMELİDİR.
  • [C-0-2] org.apache.http.legacy kitaplığını uygulama sınıf yoluna yalnızca uygulama aşağıdaki koşullardan birini karşıladığında eklemelidir:
    • API düzeyi 28 veya altını hedefler.
    • <uses-library> öğesinin android:name özelliğini org.apache.http.legacy olarak ayarlayarak manifest dosyasında kitaplığa ihtiyaç duyduğunu belirtir.

AOSP uygulaması bu koşulları karşılar.

3.2. Soft API Uyumluluğu

Android, 3.1 numaralı bölümdeki yönetilen API'lere ek olarak, Android uygulamalarının derleme sırasında uygulanamayan intent'ler, izinler ve benzer özellikleri gibi yalnızca çalışma zamanında kullanılabilen önemli bir "yumuşak" API de içerir.

3.2.1. İzinler

  • [C-0-1] Cihaz uygulayıcıları, izin referans sayfasında belirtildiği gibi tüm izin sabitlerini desteklemeli ve uygulamalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek şartların listelendiğini unutmayın.

3.2.2. Derleme Parametreleri

Android API'leri, android.os.Build sınıfında mevcut cihazı tanımlamak için tasarlanmış bir dizi sabit içerir.

  • [C-0-1] Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının uyması GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre Ayrıntılar
VERSION.RELEASE Şu anda çalışan Android sisteminin, kullanıcılar tarafından okunabilir biçimdeki sürümü. Bu alanda, Android 14 için İzin Verilen Sürüm Dizelerinde tanımlanan dize değerlerinden biri bulunmalıdır.
VERSION.SDK Üçüncü taraf uygulama kodunun erişebileceği bir biçimde, şu anda çalışan Android sisteminin sürümü. Android 14 için bu alanda 14_INT tam sayı değeri OLMALIDIR.
VERSION.SDK_INT Üçüncü taraf uygulama kodunun erişebileceği bir biçimde, şu anda çalışan Android sisteminin sürümü. Android 14 için bu alanın 14_INT tam sayı değerine sahip olması GEREKİR.
VERSION.INCREMENTAL Cihaz uygulayıcısı tarafından seçilen ve o anda çalışan Android sisteminin belirli derlemesini belirten, kullanıcı 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şiklik tanımlayıcısının kullanıldığını belirtmektir. Bu alanın değeri, yazdırılabilir 7 bit ASCII olarak kodlanabilir ve "^[^ :\/~]+$" normal ifadesiyle eşleşmelidir.
MASA Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı tanımlayan, kullanıcı tarafından okunabilir biçimde bir değer. Bu alanın olası bir kullanımı, cihazı besleyen kartın belirli bir revizyonunu belirtmektir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALIDIR ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir.
BRAND Son kullanıcıların bildiği şekilde cihazla ilişkili marka adını yansıtan bir değer. Kullanıcı tarafından okunabilir biçimde OLMALI ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını temsil ETMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir.
SUPPORTED_ABIS Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Yerel API Uyumluluğu.
SUPPORTED_32_BIT_ABIS Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Yerel API Uyumluluğu.
SUPPORTED_64_BIT_ABIS Yerel kodun ikinci talimat setinin (CPU türü + ABI kuralı) adı. 3.3. bölüme bakın. Yerel API Uyumluluğu.
CPU_ABI Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Yerel API Uyumluluğu.
CPU_ABI2 Yerel kodun ikinci talimat setinin (CPU türü + ABI kuralı) adı. 3.3. bölüme bakın. Yerel API Uyumluluğu.
CİHAZ Cihaz uygulayıcısı tarafından seçilen, donanım özelliklerinin yapılandırmasını ve cihazın endüstriyel tasarımını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
FINGERPRINT Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunaklı OLMALIDIR. Şu şablona UYGUN OLMALIDIR:

$(BRAND)/$(PRODUCT)/
    $(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)

Örnek:

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

Parmak izi boşluk karakteri İÇERMEMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALIDIR.

DONANIM Donanımın adı (çekirdek komut satırından veya /proc'ten). Makul ölçüde okunaklı OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir.
HOST Derlemenin oluşturulduğu ana makineyi benzersiz şekilde tanımlayan, kullanıcıların okuyabileceği biçimdeki bir dize. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Bununla birlikte, alanın boş veya boş dize ("") OLMAMASI gerekir.
Kimlik Cihaz uygulayıcısı tarafından, belirli bir sürümü belirtmek için insan tarafından okunabilir biçimde seçilen bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapması için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir.
ÜRETİCİ Ürünün özgün donanım üreticisinin (OEM) ticari adı. Bu alanın biçimi için herhangi bir koşul yoktur. Bununla birlikte, alanın boş veya boş dize ("") OLMAMASI gerekir. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEmelidir.
SOC_MANUFACTURER Üründe kullanılan birincil çip üzerinde sistem (SOC) üreticisinin ticari adı. Aynı SOC üreticisine sahip cihazlar aynı sabit değeri kullanmalıdır. Lütfen kullanılacak doğru sabit için SOC üreticisine danışın. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI, "^([0-9A-Za-z ]+)" normal ifadesiyle eşleşmeli, boşluk karakteriyle başlamamalı veya bitmemelidir ve "unknown" değerine eşit olmamalıdır. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEmelidir.
SOC_MODEL Üründe kullanılan birincil çip üzerinde sistem (SOC) modelinin adı. Aynı SOC modeline sahip cihazlar aynı sabit değeri kullanmalıdır. Lütfen kullanılacak doğru sabit için SOC üreticisine danışın. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^([0-9A-Za-z ._/+-]+)$" normal ifadesiyle eşleşmeli, boşluk karakteriyle başlamamalı veya boşluk karakteriyle bitmemelidir ve "unknown" değerine eşit olmamalıdır. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
MODEL Cihaz uygulayıcısı tarafından seçilen ve son kullanıcının bildiği cihaz adını içeren bir değer. Bu, cihazın pazarlandığı ve son kullanıcılara satıldığı ad ile aynı OLMALIDIR. Bu alanın biçimi için herhangi bir koşul yoktur. Bununla birlikte, alanın boş veya boş dize ("") OLMAMASI gerekir. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEmelidir.
ÜRÜN Cihaz uygulayıcısı tarafından seçilen ve belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değer. Bu değer, aynı marka içinde benzersiz OLMALIDIR. Kullanıcılar tarafından okunabilir OLMALIDIR ancak son kullanıcılar tarafından görüntülenmesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım süresi boyunca DEĞİŞTİRİLMEMELİDİR.
ODM_SKU Cihaz uygulayıcısı tarafından seçilen isteğe bağlı bir değerdir. Cihazın belirli yapılandırmalarını (ör. cihaz satılırken cihaza dahil edilen çevre birimleri) izlemek için kullanılan SKU'yu (stok tutma birimi) içerir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve ^([0-9A-Za-z.,_-]+)$ normal ifadesiyle eşleşmelidir.
SERİ "UNKNOWN" değerini döndürmelidir.
ETİKETLER Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayırt eden, virgülle ayrılmış bir etiket listesi. Etiketler 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-]+" normal ifadesiyle eşleşmeli ve üç tipik Android platformu imzalama yapılandırmasına karşılık gelen değerlerden birine sahip olmalıdır: release-keys, dev-keys ve test-keys.
SÜRE Derlemenin gerçekleştiği zamanın zaman damgasını temsil eden bir değer.
TÜR Derlemenin çalışma zamanı yapılandırmasını belirten, cihaz uygulayıcısı tarafından seçilen bir değer. Bu alanda, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri OLMALIDIR: user, userdebug veya eng.
KULLANICI Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı veya kullanıcı kimliği. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Bununla birlikte, alanın boş veya boş dize ("") OLMAMASI gerekir.
SECURITY_PATCH Bir derlemenin güvenlik yaması düzeyini gösteren bir değer. Derlemenin, belirlenen Android Herkese Açık Güvenlik Bülteni'nde açıklanan sorunlardan hiçbirine karşı herhangi bir şekilde güvenlik açığı olmadığını GÖSTERMELİDİR. [YYYY-AA-GG] biçiminde OLMALIDIR ve Android Herkese Açık Güvenlik Bülteninde veya Android Güvenlik Uyarısında belirtilen bir dizeyle eşleşmelidir (ör. "2015-11-01").
BASE_OS Android Public Security Bulletin'da sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden bir değer. Doğru değeri bildirmeli ve böyle bir derleme yoksa boş bir dize ("") bildirmelidir.
BOOTLOADER Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili önyükleyici sürümünü kullanıcılar tarafından okunabilir biçimde tanımlayan bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir.
getRadioVersion() Cihaz uygulayıcısı tarafından seçilen, cihazda kullanılan belirli dahili radyo/modem sürümünü tanımlayan, kullanıcı tarafından okunabilir biçimde bir değer OLMALIDIR (olmalıdır veya döndürmelidir). Bir cihazda dahili radyo/modem yoksa NULL döndürülmelidir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir.
getSerial() Donanım seri numarası OLMALIDIR (olmalıdır veya döndürülmelidir). Bu seri numarası, aynı MODEL ve ÜRETİCİ'ye sahip cihazlarda mevcut ve benzersiz OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9]+$" normal ifadesiyle eşleşmelidir.

3.2.3. Intent Uyumluluğu

3.2.3.1. Yaygın Uygulama Amaçları

Android intent'leri, uygulama bileşenlerinin diğer Android bileşenlerinden işlev istemesine olanak tanır. Android yayın öncesi projesi, yaygın işlemleri gerçekleştirmek için çeşitli intent kalıpları uygulayan uygulamaların bir listesini içerir.

Cihaz uygulamaları:

  • [C-SR-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulamanın ya da hizmet bileşeninin önceden yüklenmesi ve SDK'da açıklandığı gibi bu yaygın uygulama intent'leri için geliştirici beklentisini karşılaması önemle ÖNERİLİR.

Her cihaz türü için zorunlu uygulama amaçları hakkında bilgi edinmek üzere lütfen 2. Bölüm'e bakın.

3.2.3.2. Amaç Çözümü
  • [C-0-1] Android genişletilebilir bir platform olduğundan cihaz uygulamalarında, Ayarlar hariç olmak üzere 3.2.3.1 numaralı bölümde belirtilen her intent kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına izin VERİLMELİDİR. Android açık kaynak kodunun ana kolu, buna varsayılan olarak izin verir.

  • [C-0-2] Cihaz uygulayıcıları, sistem uygulamalarının bu intent kalıplarını kullanımına özel ayrıcalıklar eklememeli veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü üstlenmesini engellememelidir. Bu yasak, özellikle kullanıcının tümü aynı intent 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 bunlarla sınırlı değildir.

  • [C-0-3] Cihaz uygulamalarında, kullanıcıların intent'ler için varsayılan etkinliği değiştirmesi amacıyla bir kullanıcı arayüzü ZORUNLUDUR.

  • Ancak cihaz uygulamaları, varsayılan etkinlik veri URI için daha spesifik bir özellik sağladığında belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten bir intent filtresi kalıbı, tarayıcının "http://" için temel intent kalıbından daha spesifiktir.

Android, üçüncü taraf uygulamalarının belirli türde web URI intent'leri için yetkili bir varsayılan uygulama bağlama davranışı beyan etmesine olanak tanıyan bir mekanizma da içerir. Bir uygulamanın intent filtresi kalıplarında bu tür yetkili beyanlar tanımlandığında cihaz uygulamaları:

  • [C-0-4] Yukarı yönlü Android Open Source Project'te Paket Yöneticisi tarafından uygulandığı şekilde Digital Asset Links spesifikasyonunda tanımlanan doğrulama adımlarını uygulayarak tüm intent filtrelerini doğrulamaya ÇALIŞMALIDIR.
  • [C-0-5] Uygulamanın yüklenmesi sırasında intent filtrelerinin doğrulanmasını DENEYMELİ ve başarılı bir şekilde doğrulanmış tüm URI intent filtrelerini URI'leri için varsayılan uygulama işleyicileri olarak ayarlamalıdır.
  • Belirli URI intent filtrelerini, URI'leri için varsayılan uygulama işleyicileri olarak ayarlayabilir (bu filtreler başarıyla doğrulanmışsa ancak diğer URI filtresi adayları doğrulanamazsa). Bir cihaz uygulaması bunu yapıyorsa ayarlar menüsünde kullanıcıya uygun URI başına kalıp geçersiz kılmalarını sağlamalıdır.
  • Kullanıcıya Ayarlar'da uygulama başına Uygulama Bağlantıları kontrolleri sağlamalıdır. Bu kontroller aşağıdaki gibi olmalıdır:
    • [C-0-6] Kullanıcı, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütünsel olarak geçersiz kılabilmelidir. Bu davranış, uygulamanın her zaman açılması, her zaman sorulması veya hiç açılmaması şeklinde olabilir ve tüm URI intent filtresi adayları için eşit şekilde geçerli olmalıdır.
    • [C-0-7] Kullanıcı, URI intent filtresi adaylarının listesini GÖREBİLMELİDİR.
    • Cihaz uygulaması, kullanıcıya başarılı bir şekilde doğrulanmış belirli URI intent filtrelerini intent filtresi bazında geçersiz kılma olanağı SUNABİLİR.
    • [C-0-8] Cihaz uygulaması, bazı URI intent filtrelerinin doğrulamayı geçerken bazılarının başarısız olmasına izin veriyorsa kullanıcılara belirli URI intent filtrelerini görüntüleme ve geçersiz kılma olanağı SUNMALIDIR.
3.2.3.3. Intent Ad Alanları
  • [C-0-1] Cihaz uygulamalarında, android.* veya com.android.* ad alanındaki bir ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni intent veya yayın intent kalıplarını dikkate alan Android bileşenleri BULUNMAMALIDIR.
  • [C-0-2] Cihaz uygulayıcıları, başka bir kuruluşa ait bir paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni intent veya yayın intent kalıplarını dikkate alan Android bileşenleri İÇERMEMELİDİR.
  • [C-0-3] Cihaz uygulayıcıları, 3.2.3.1 numaralı bölümde listelenen intent kalıplarından hiçbirini değiştirmemeli veya genişletmemelidir.
  • Cihaz uygulamalarında, kendi kuruluşlarıyla açıkça ilişkilendirilmiş açık alan adları kullanan intent kalıpları YER ALABİLİR. Bu yasak, 3.6 numaralı bölümde Java dil sınıfları için belirtilene benzer.
3.2.3.4. Yayın Amaçları

Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikleri bildirmek için belirli intent'leri yayınlamak üzere platformdan yararlanır.

Cihaz uygulamaları:

  • [C-0-1] SDK dokümanlarında açıklandığı şekilde, uygun sistem etkinliklerine yanıt olarak burada listelenen herkese açık yayın intent'lerini YAYINLAMALIDIR. Arka plan uygulamalarıyla ilgili sınırlama SDK dokümanlarında da açıklandığı için bu şartın 3.5 numaralı bölümle çelişmediğini unutmayın. Ayrıca belirli yayın intent'leri donanım desteğine bağlıdır. Cihaz gerekli donanımı destekliyorsa intent'leri yayınlamalı ve SDK dokümanlarına uygun davranışı sağlamalıdır.
3.2.3.5. Koşullu Uygulama Amaçları

Android, kullanıcılara varsayılan uygulamalarını (ör. ana ekran veya SMS) kolayca seçmelerini sağlayan ayarlar içerir.

Uygun olduğu durumlarda cihaz uygulamalarında benzer bir ayarlar menüsü sağlanmalı ve SDK dokümanlarında aşağıda açıklandığı şekilde intent filtresi kalıbı ve API yöntemleriyle uyumlu olmalıdır.

Cihaz uygulamaları android.software.home_screen değerini raporluyorsa:

Cihaz uygulamaları android.hardware.telephony.calling değerini raporluyorsa:

Cihaz uygulamaları android.hardware.nfc.hce değerini raporluyorsa:

Cihaz uygulamaları android.hardware.nfc değerini raporluyorsa:

Cihaz uygulamaları android.hardware.bluetooth değerini raporluyorsa:

Cihaz uygulamaları, DND özelliğini destekliyorsa:

  • [C-6-1] ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS intent'ine yanıt verecek bir etkinlik UYGULANMALIDIR. UI_MODE_TYPE_NORMAL ile yapılan uygulamalarda bu etkinlik, kullanıcının uygulamaya DND politikası yapılandırmalarına erişim izni verebileceği veya reddedebileceği bir etkinlik OLMALIDIR.

Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:

  • [C-7-1] android.settings.INPUT_METHOD_SETTINGS intent'ine yanıt olarak üçüncü taraf giriş yöntemleri eklemek ve yapılandırmak için kullanıcının erişebileceği bir mekanizma SAĞLAMALIDIR.

Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:

  • [C-8-1] Önceden yüklenmiş erişilebilirlik hizmetlerinin yanı sıra üçüncü taraf erişilebilirlik hizmetlerini etkinleştirmek ve devre dışı bırakmak için kullanıcıların erişebileceği bir mekanizma sağlama android.settings.ACCESSIBILITY_SETTINGS amacına uymalıdır.

Cihaz uygulamaları, kablosuz kolay bağlantı desteği içeriyorsa ve bu işlevi üçüncü taraf uygulamalarına sunuyorsa:

Cihaz uygulamaları veri tasarrufu modunu sağlıyorsa:

Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:

Cihaz uygulamaları android.hardware.camera.any aracılığıyla kamerayı desteklediğini beyan ederse:

Cihaz uygulamaları android.software.device_admin değerini raporluyorsa:

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

Cihaz uygulamaları önceden yüklenmiş bir uygulama içeriyorsa veya üçüncü taraf uygulamalarının kullanım istatistiklerine erişmesine izin vermek istiyorsa:

  • [C-SR-2] android.permission.PACKAGE_USAGE_STATS iznine sahip uygulamaların, android.settings.ACTION_USAGE_ACCESS_SETTINGS intent'ine yanıt olarak kullanım istatistiklerine erişim izni vermek veya bu izni iptal etmek için kullanıcının erişebileceği bir mekanizma sağlaması önemle ÖNERİLİR.

Cihaz uygulamaları, önceden yüklenmiş uygulamalar da dahil olmak üzere hiçbir uygulamanın kullanım istatistiklerine erişmesine izin vermiyorsa:

  • [C-15-1] android.settings.ACTION_USAGE_ACCESS_SETTINGS intent kalıbını işleyen bir etkinliğe sahip olmaya devam etmeli ancak bunu işlem yapmaz olarak uygulamalıdır. Yani kullanıcının erişimi reddedildiğinde olduğu gibi eşdeğer bir davranışa sahip olmalıdır.

Cihaz uygulamaları, Ayarlar'da AutofillService_passwordsActivity tarafından belirtilen etkinliklerin bağlantılarını veya benzer bir mekanizma aracılığıyla kullanıcı şifrelerinin bağlantılarını gösteriyorsa:

  • [C-16-1] Yüklü tüm otomatik doldurma hizmetleri için bu tür bağlantılar GÖSTERİLMELİDİR.

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

Cihaz uygulamaları android.hardware.audio.output özelliğini raporluyorsa:

  • [C-SR-3] android.intent.action.TTS_SERVICE, android.speech.tts.engine.INSTALL_TTS_DATA ve android.speech.tts.engine.GET_SAMPLE_TEXT intent'lerinin, SDK'da burada açıklandığı şekilde bu intent'leri yerine getirecek bir etkinliğe sahip olması önemle ÖNERİLİR.

Android, daha önce Rüyalar olarak adlandırılan etkileşimli ekran koruyucuları destekler. Ekran koruyucular, güç kaynağına bağlı bir cihaz boştayken veya masaüstü dock'ına yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Cihaz Uygulamaları:

  • Ekran koruyucu desteği içermeli ve kullanıcıların android.settings.DREAM_SETTINGS intent'ine yanıt olarak ekran koruyucuları yapılandırmaları için bir ayar seçeneği sunmalıdır.

Yeni şartlar başlatma

Cihaz uygulamaları android.hardware.nfc.uicc veya android.hardware.nfc.ese raporluyorsa:

Yeni şartların sona ermesi

3.2.4. İkincil/çoklu ekranlardaki etkinlikler

Cihaz uygulamaları, normal Android etkinliklerinin birden fazla ekranda başlatılmasına izin veriyorsa:

  • [C-1-1] android.software.activities_on_secondary_displays özellik bayrağını AYARALAMALIDIR.
  • [C-1-2] Birincil ekranda çalışan bir etkinliğe benzer API uyumluluğunu GARANTİ ETMELİDİR.
  • [C-1-3] Yeni etkinlik, ActivityOptions.setLaunchDisplayId() API aracılığıyla hedef ekran belirtilmeden başlatıldığında yeni etkinliği, etkinliği başlatan etkinlikle aynı ekrana AÇMALIDIR.
  • [C-1-4] Display.FLAG_PRIVATE işareti olan bir ekran kaldırıldığında tüm etkinlikleri İYİCE yok etmelidir.
  • [C-1-5] Uygulama, Activity#setShowWhenLocked() API'sini kullanarak kilit ekranının üstünde gösterilmeyi etkinleştirmediği sürece, cihaz güvenli bir kilit ekranıyla kilitlendiğinde tüm ekranlardaki içeriği güvenli bir şekilde gizlemeLİDİR.
  • Gösterilmek, doğru şekilde çalışmak ve ikincil ekranda bir etkinlik başlatılırsa uyumluluğu korumak için ilgili ekrana karşılık gelen android.content.res.Configuration olmalıdır.

Cihaz uygulamaları, ikincil ekranlarda normal Android etkinliklerinin başlatılmasına izin veriyorsa ve ikincil ekranda android.view.Display.FLAG_PRIVATE işareti varsa:

  • [C-3-1] Yalnızca bu ekranın, sistemin ve ekranda bulunan etkinliklerin sahibi bu ekranda uygulama başlatabilmelidir. Herkes android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda uygulamayı başlatabilir.

3.3. Yerel API Uyumluluğu

Yerel kod uyumluluğu zordur. Bu nedenle cihaz uygulayıcıları:

  • [C-SR-1] Aşağıda listelenen kitaplıkların, Android Açık Kaynak Projesi'ndeki uygulamalarını KULLANMANIZI ÖNERİRİZ.

3.3.1. Uygulama İkili Arabirimleri

Yönetilen Dalvik bayt kodu, uygulama .apk dosyasında uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak sağlanan yerel kodu çağırabilir. Yerel kod, temel işlemci teknolojisine oldukça bağlı olduğundan Android, Android NDK'de bir dizi uygulama ikili arayüzü (ABI) tanımlar.

Cihaz uygulamaları:

  • [C-0-1] Bir veya daha fazla tanımlanmış Android NDK ABI'si ile UYUMLU OLMALIDIR.
  • [C-0-2] Standart Java Native Interface (JNI) semantiklerini kullanarak yönetilen ortamda çalışan kodun yerel kodu çağırması için destek DAHİL OLMALIDIR.
  • [C-0-3] Aşağıdaki listedeki her gerekli kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
  • [C-0-5] Cihaz tarafından desteklenen yerel Uygulama İkili Arabirimi'ni (ABI) android.os.Build.SUPPORTED_ABIS, android.os.Build.SUPPORTED_32_BIT_ABIS ve android.os.Build.SUPPORTED_64_BIT_ABIS parametreleri aracılığıyla doğru şekilde bildirmelidir. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene göre sıralanmış ABI'lerin virgülle ayrılmış bir listesidir.
  • [C-0-6] Yukarıdaki parametreler aracılığıyla aşağıdaki ABI listesinin bir alt kümesini bildirmeli ve listede bulunmayan ABI'leri bildirmemelidir.

  • [C-0-7] Yerel API'ler sağlayan aşağıdaki kitaplıkların tümünü yerel kod içeren uygulamalara SUNMALIDIR:

    • libaaudio.so (AAudio doğal ses desteği)
    • libamidi.so (android.software.midi özelliği için 5.9 numaralı bölümde açıklandığı şekilde hak talebinde bulunuluyorsa yerel MIDI desteği)
    • libandroid.so (yerel Android etkinliği desteği)
    • libc (C kitaplığı)
    • libcamera2ndk.so
    • libdl (dinamik bağlayıcı)
    • libEGL.so (yerel OpenGL yüzey yönetimi)
    • libGLESv1_CM.so (OpenGL ES 1.x)
    • libGLESv2.so (OpenGL ES 2.0)
    • libGLESv3.so (OpenGL ES 3.x)
    • libicui18n.so
    • libicuuc.so
    • libjnigraphics.so
    • liblog (Android günlük kaydı)
    • libmediandk.so (yerel medya API'leri desteği)
    • libm (matematik kitaplığı)
    • libneuralnetworks.so (Neural Networks API)
    • libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
    • libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
    • libRS.so
    • libstdc++ (C++ için minimum destek)
    • libvulkan.so (Vulkan)
    • libz (Zlib sıkıştırması)
    • JNI arayüzü
  • [C-0-8] Yukarıda listelenen yerel kitaplıklar için herkese açık işlevler EKLEMELİ veya KALDIRMAMALIDIR.

  • [C-0-9] /vendor/etc/public.libraries.txt dosyasında doğrudan üçüncü taraf uygulamalarına sunulan AOSP dışındaki ek kitaplıkları LİSTELEMELİDİR.

  • [C-0-10] AOSP'de sistem kitaplıkları olarak uygulanan ve sağlanan diğer yerel kitaplıklar, API düzeyi 24 veya daha yüksek olan üçüncü taraf uygulamalara gösterilmemelidir.

  • [C-0-11] NDK'de tanımlandığı şekilde tüm OpenGL ES 3.1 ve Android Uzatma Paketi işlev simgelerini libGLESv3.so kitaplığı aracılığıyla DIŞA aktarmalıdır. Tüm sembollerin BULUNMASI GEREKİR ancak 7.1.4.1 numaralı bölümde, her ilgili işlevin tam olarak ne zaman uygulanması gerektiğine dair koşullar daha ayrıntılı olarak açıklanmaktadır.

  • [C-0-12] Temel Vulkan 1.0 Vulkan 1.1 işlev simgelerinin yanı sıra VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, VK_KHR_maintenance1 ve VK_KHR_get_physical_device_properties2 uzantılarının işlev simgelerini libvulkan.so kitaplığı aracılığıyla İHRAÇ ETMELİDİR. Tüm sembollerin BULUNMASI GEREKİR ancak 7.1.4.2 numaralı bölümde, her bir ilgili işlevin tam olarak ne zaman uygulanacağıyla ilgili şartlar daha ayrıntılı olarak açıklanmaktadır.

  • Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kod ve başlık dosyaları kullanılarak OLUŞTURULMALIDIR.

Android'in gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın.

3.3.2. 32 bit ARM Yerel Kod Uyumluluğu

Cihaz uygulamaları armeabi ABI'nin desteklendiğini bildirirse:

  • [C-3-1] armeabi yalnızca eski uygulamalarla geriye dönük uyumluluk için olduğundan armeabi-v7a'ü de desteklemeli ve desteğini bildirmelidir.

Cihaz uygulamaları armeabi-v7a ABI'nin desteklendiğini bildirirse bu ABI'yi kullanan uygulamalar:

  • [C-2-1] /proc/cpuinfo içine aşağıdaki satırları DAHİL ETMELİDİR ve diğer ABI'ler tarafından okunduğunda bile aynı cihazdaki değerleri DEĞİŞTİRMEMELİDİR.

    • Features:, ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi.
    • CPU architecture:, ardından cihazın desteklediği en yüksek ARM mimarisini tanımlayan bir tam sayı (ör. ARMv8 cihazlar için "8").
  • [C-2-2] ABI'nin ARMv8 mimarisinde yerel CPU desteği veya yazılım emülasyonu aracılığıyla uygulandığı durumlarda bile aşağıdaki işlemleri her zaman kullanılabilir durumda tutmalıdır:

    • SWP ve SWPB talimatları.
    • CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri.
  • [C-2-3] Advanced SIMD (NEON olarak da bilinir) uzantısı için destek ZORUNLUDUR.

3.4. Web Uyumluluğu

3.4.1. WebView Uyumluluğu

Cihaz uygulamaları android.webkit.Webview API'sinin eksiksiz bir uygulamasını sağlıyorsa:

  • [C-1-1] android.software.webview bildirmelidir.
  • [C-1-2] android.webkit.WebView API'sinin uygulanması için Android 14 dalındaki yayın öncesi Android Açık Kaynak Projesi'nden Chromium Projesi derlemesi KULLANILMALIDIR.
  • [C-1-3] WebView tarafından bildirilen kullanıcı aracısı dizesi şu biçimde OLMALIDIR:

    Mozilla/5.0 (Linux; Android $(VERSION); [$(MODEL)] [Build/$(BUILD)]; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36

    • $(VERSION) dizesinin değeri, android.os.Build.VERSION.RELEASE değerinin aynısı OLMALIDIR.
    • $(MODEL) dizesi boş OLABİLİR ancak boş değilse android.os.Build.MODEL ile aynı değere sahip OLMALIDIR.
    • "Derleme/$(BUILD)" atlanabilir ancak mevcutsa $(BUILD) dizesi android.os.Build.ID değeriyle aynı OLMALIDIR.
    • $(CHROMIUM_VER) dizesinin değeri, Android Açık Kaynak Projesi'ndeki Chromium sürümünün OLMALIDIR.
    • Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobil'i atlayabilir.
  • WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliği için destek İÇERMELİDİR ve özelliği destekliyorsa HTML5 spesifikasyonuna uygun OLMALIDIR.

  • [C-1-4] Sağlanan içeriği veya uzak URL içeriğini, Web Görünümü'nü örnekleyen uygulamadan farklı bir işlemde oluşturmalıdır. Ayrı oluşturma işleminin daha düşük ayrıcalıklara sahip olması, ayrı bir kullanıcı kimliği olarak çalıştırılması, uygulamanın veri dizinine erişimi olmaması, doğrudan ağ erişimi olmaması ve yalnızca Binder üzerinden minimum düzeyde gerekli sistem hizmetlerine erişimi olması GEREKİR. Web Görünümü'nün AOSP uygulaması bu koşulu karşılar.

Cihaz uygulamalarının 32 bit olması veya özellik işaretini android.hardware.ram.low beyan etmesi durumunda C-1-3'ten muaf tutulduğunu unutmayın.

3.4.2. Tarayıcı Uyumluluğu

Cihaz uygulamaları, genel web'de gezinme için bağımsız bir Tarayıcı uygulaması içeriyorsa:

  • [C-1-1] HTML5 ile ilişkili aşağıdaki API'lerin her birini desteklemelidir:
  • [C-1-2] HTML5/W3C webstorage API'yi destekleMELİDİR ve HTML5/W3C IndexedDB API'yi destekleMELİDİR. Web geliştirme standartları kuruluşları web depolama yerine IndexedDB'i tercih etmeye başladığından, IndexedDB'in Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesinin beklendiğini unutmayın.
  • Bağımsız Tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi YAYINLANABİLİR.
  • Bağımsız Tarayıcı uygulamasında mümkün olduğunca fazla HTML5 desteği UYGULANMALIDIR (Yukarı akış WebKit Tarayıcı uygulamasına veya üçüncü taraf bir değişime dayalı olsun).

Ancak cihaz uygulamaları bağımsız bir Tarayıcı uygulaması içermiyorsa:

3.5. API Davranış Uyumluluğu

Cihaz uygulamaları:

  • [C-0-9] 3.5.1 Bölümü'nde açıklandığı şekilde kısıtlanmadığı sürece, yüklü tüm uygulamalar için API davranış uyumluluğunun uygulandığından EMİN OLMALIDIR.
  • [C-0-10] Yalnızca cihaz uygulayıcıları tarafından seçilen uygulamalar için API davranış uyumluluğunu sağlayan izin verilenler listesi yaklaşımını UYGULAMAMALIDIR.

API türlerinin her birinin (yönetilen, yumuşak, yerel ve web) davranışları, yayın öncesi Android Open Source Project'in tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumluluğun bazı belirli alanları şunlardır:

  • [C-0-1] Cihazlar, standart bir intent'in davranışını veya anlamını DEĞİŞTİRMEmelidir.
  • [C-0-2] Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, İçerik Sağlayıcı vb.) yaşam döngüsünü veya yaşam döngüsü anlamlarını DEĞİŞTİRMEMELİDİR.
  • [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİREMEZ.
  • Cihazlar, arka plan uygulamalarında uygulanan sınırlamaları DEĞİŞTİREMEZ. Arka plan uygulamaları için daha ayrıntılı olarak belirtmek gerekirse:
    • [C-0-4] GnssMeasurement ve GnssNavigationMessage'ten çıkış almak için uygulama tarafından kaydedilen geri çağırma işlemlerini durdurmaları GEREKİR.
    • [C-0-5] LocationManager API sınıfı veya WifiManager.startScan() yöntemi aracılığıyla uygulamaya sağlanan güncellemelerin sıklığını sınırlamalıdır.
    • [C-0-6] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa, yayın amacı "signature" veya "signatureOrSystem" protectionLevel iznine ihtiyaç duymadığı veya istisna listesinde yer almadığı sürece, uygulamanın manifest dosyasında standart Android intent'lerinin örtülü yayınları için yayın alıcılarının kaydedilmesine izin VERMEMELİDİR.
    • [C-0-7] Uygulama, API düzeyi 25 veya üstünü hedefliyorsa kullanıcı tarafından görülebilen bir görevi yürütmek için geçici izin verilenler listesine yerleştirilmediği sürece, uygulamanın arka plan hizmetlerini, sanki uygulama hizmetlerin stopSelf() yöntemini çağırmış gibi durdurması GEREKİR.
    • [C-0-8] Uygulama API düzeyi 25 veya üstünü hedefliyorsa uygulamanın tuttuğu wakelock'ları AÇIKLAMASI GEREKİR.
  • [C-0-11] Cihazlar, uygulama insertProviderAt() veya removeProvider() aracılığıyla listeyi değiştirmediği sürece Security.getProviders() yöntemindeki ilk yedi dizi değerini, belirli bir sırada ve belirli adlarla (Provider.getName() tarafından döndürüldüğü şekilde) ve sınıflarla döndürmelidir. Cihazlar, aşağıdaki sağlayıcı listesinden sonra ek sağlayıcılar döndürebilir.
    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ışsal uyumluluk açısından test eder ancak platformun tamamını test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcıları, sistemin önemli bölümlerini yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodu KULLANMALIDIR.

3.5.1. Uygulama Kısıtlaması

Cihaz uygulamalarında, uygulamaları kısıtlamak için özel bir mekanizma uygulanıyorsa (ör. SDK'da açıklanan API davranışlarını değiştirme veya kısıtlama) ve bu mekanizma Kısıtlanmış Uygulama Bekleme Grubu'ndan daha kısıtlayıcıysa:

  • [C-1-1] Kullanıcının kısıtlanmış uygulamaların listesini görmesine İZİN VERMELİDİR.
  • [C-1-2] Her uygulamada bu tescilli kısıtlamaların tümünü etkinleştirmek / devre dışı bırakmak için kullanıcılara olanak sağlanmalıdır.
  • [C-1-3] Kötü sistem sağlığı davranışı olduğuna dair kanıt olmadan bu tescilli kısıtlamaları otomatik olarak UYGULAMAMALIDIR ancak takılı uyanma kilitleri, uzun süre çalışan hizmetler ve diğer ölçütler gibi kötü sistem sağlığı davranışı tespit edildiğinde uygulamalara kısıtlamaları UYGULAYABİLİR. Ölçütler cihaz uygulayıcıları tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili OLMALIDIR. Uygulamanın pazardaki popülerliğinin olmaması gibi, yalnızca sistem sağlığıyla ilgili olmayan diğer kriterler KRİTER OLARAK KULLANILMAMASI GEREKİR.

  • [C-1-4] Kullanıcı uygulama kısıtlamalarını manuel olarak devre dışı bıraktığında uygulamalar için bu tescilli kısıtlamaları otomatik olarak UYGULAMAMALI ve kullanıcıya bu tescilli kısıtlamaları uygulamasını ÖNEREBİLİR.

  • [C-1-5] Bu tescilli kısıtlamaların bir uygulamaya otomatik olarak uygulanıp uygulanmadığını kullanıcılara BİLDİRMENİZ GEREKİR. Bu tür bilgiler, bu tescilli kısıtlamaların uygulanmasından önceki 24 saat içinde SAĞLANMALIDIR.

  • [C-1-6] Bir uygulamadan gelen API çağrıları için ActivityManager.isBackgroundRestricted() yöntemi doğru değerini döndürmelidir.

  • [C-1-7] Kullanıcı tarafından açıkça kullanılan en üst ön plan uygulamasını KISITLAMAMALISINIZ.

  • [C-1-8] Kullanıcı bir uygulamayı açıkça kullanmaya başladığında, uygulamayı ön plandaki en üst uygulama haline getirerek uygulamadaki bu tescilli kısıtlamaları KESİNLİKLE askıya almalıdır.

  • [C-1-10] Mülkiyet kısıtlamalarının nasıl uygulandığını açıklayan herkese açık ve net bir doküman veya web sitesi ZORUNLUDUR. Bu doküman veya web sitesi, Android SDK dokümanlarından bağlantı verilebilir OLMALI ve şunları İÇERMELİDİR:

    • Özel kısıtlamalar için tetikleyici koşullar.
    • Uygulamaların neleri ve nasıl kısıtlanabileceği.
    • Bir uygulamanın bu tür kısıtlamalardan nasıl muaf tutulabileceği.
    • Kullanıcının yükleyebileceği uygulamalar için bu tür bir muafiyeti destekliyorsa bir uygulamanın tescilli kısıtlamalardan muafiyet isteğinde bulunabilmesi.

Bir uygulama cihaza önceden yüklenmişse ve kullanıcı tarafından 30 günden uzun süre boyunca hiç kullanılmadıysa [C-1-3] [C-1-5] muaf tutulur.

Cihaz uygulamaları, AOSP'de uygulanan uygulama kısıtlamalarını genişletirse:

  • [C-2-1]Bu belgede açıklanan uygulamayı İZLEMEK ZORUNDADIR.

3.5.2. Uygulamayı hazırda bekletme

Cihaz uygulamaları, AOSP'ye dahil olan Uygulama Uyku Modu'nu içeriyor veya AOSP'ye dahil olan özelliği genişletiyorsa:

  • [C-1-1], [C-1-6] ve [C-1-3] hariç olmak üzere 3.5.1 bölümündeki tüm şartları karşılamalıdır.
  • [C-1-2] Uygulamadaki kısıtlamayı yalnızca kullanıcının uygulamayı bir süredir kullanmadığına dair kanıt olduğunda UYGULAMALIDIR. Bu sürenin bir ay veya daha uzun olması önemle tavsiye edilir. Kullanım, UsageStats#getLastTimeVisible() API'si aracılığıyla açık kullanıcı etkileşimi veya hizmet bağlamaları, içerik sağlayıcı bağlamaları, açık yayınlar vb. dahil olmak üzere bir uygulamanın zorla durdurulmuş durumdan çıkmasına neden olacak herhangi bir şey tarafından tanımlanmalıdır. Bu, yeni bir API olan UsageStats#getLastTimeAnyComponentUsed() tarafından izlenir.
  • [C-1-3] Yalnızca paketin bir süre boyunca HİÇBİR kullanıcı tarafından kullanılmadığına dair kanıt olduğunda tüm cihaz kullanıcılarını etkileyen kısıtlamalar uygulanmalıdır. Bu sürenin bir ay veya daha uzun olması önemle tavsiye edilir.
  • [C-1-4] Uygulamanın etkinlik intent'lerine, hizmet bağlamalarına, içerik sağlayıcı isteklerine veya açık yayınlara yanıt vermesini engellememelidir.

AOSP'teki uygulama hazırda bekleme modu yukarıdaki koşulları karşılar.

3.6. API ad alanları

Android, Java programlama dilinde tanımlanan paket ve sınıf ad alanı kurallarına uyar. Cihaz uygulayıcıları, üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için aşağıdaki paket ad alanlarında yasaklanmış herhangi bir değişiklik YAPMAMALIDIR:

  • java.*
  • javax.*
  • sun.*
  • android.*
  • androidx.*
  • com.android.*

Yani:

  • [C-0-1] Android platformunda herkese açık olarak sunulan API'lerde herhangi bir yöntem veya sınıf imzasını değiştirerek ya da sınıfları veya sınıf alanlarını kaldırarak DEĞİŞİKLİK YAPMAMALIDIR.
  • [C-0-2] Yukarıdaki ad alanlarındaki API'lere herkese açık öğeler (ör. sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere alanlar ya da yöntemler) veya Test veya Sistem API'leri EKLENMEMELİDİR. "Herkese açık olarak sunulan öğe", yayın öncesi Android kaynak kodunda kullanılan "@hide" işaretçisiyle süslenmemiş tüm yapılardır.

Cihaz uygulayıcıları, API'lerin temel uygulamasını DEĞİŞTİREBİLİR ancak bu tür değişiklikler:

  • [C-0-3] Herhangi bir herkese açık API'nin belirtilen davranışını ve Java dili imzasını ETKİLEMEmelidir.
  • [C-0-4] Reklamı YAPILMAMALI veya geliştiricilere başka bir şekilde gösterilMEMELİ.

Ancak cihaz uygulayıcıları, standart Android ad alanının dışında özel API'ler EKLEYEBİLİRSE de bu özel API'ler:

  • [C-0-5] Başka bir kuruluşa ait veya başka bir kuruluşu atıfta bulunan bir ad alanında OLMAYACAK. Örneğin, cihaz uygulayıcıları com.google.* veya benzer bir ad alanına API ekleMEmelidir: Bunu yalnızca Google yapabilir. Benzer şekilde, Google da diğer şirketlerin ad alanlarına API ekleMEmelidir.
  • [C-0-6] Yalnızca açıkça kullanan uygulamaların (<uses-library> mekanizması aracılığıyla) bu tür API'lerin artan bellek kullanımından etkilenmesi için bir Android paylaşılan kitaplığına PAKETLENMELİDİR.

Cihaz uygulayıcıları, NDK API'leri dışında yerel dillerde özel API'ler EKLEYEBİLİYOR ancak özel API'ler:

  • [C-1-1] Burada açıklandığı gibi, NDK kitaplığında veya başka bir kuruluşa ait bir kitaplıkta OLMAMALIDIR.

Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarının birini iyileştirmeyi önerirse (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) uygulayıcının source.android.com adresini ziyaret etmesi ve bu sitedeki bilgilere göre değişiklik ve kod katkıda bulunma sürecine başlaması GEREKİ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, bu kuralları pekiştirmeyi ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmeyi amaçlamaktadır.

3.7. Çalışma Zamanı Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] Tam Dalvik Yürütülebilir (DEX) biçimini ve Dalvik bayt kodu spesifikasyonunu ve anlamlarını desteklemelidir.

  • [C-0-2] Dalvik çalışma zamanlarını, yukarı akış Android platformuna uygun şekilde ve aşağıdaki tabloda belirtildiği gibi bellek ayıracak şekilde OLUŞTURMALIDIR. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 numaralı bölüme bakın.)

  • Android RunTime (ART), Dalvik Yürütülebilir Biçimi'nin referans yayın öncesi uygulaması ve referans uygulamanın paket yönetimi sistemini KULLANMALIDIR.

  • Çalışma ortamının kararlılığını sağlamak için çeşitli yürütme modları ve hedef mimariler altında fuzz testleri ÇALIŞTIRMALIDIR. Android Açık Kaynak Projesi web sitesinde JFuzz ve DexFuzz hakkında bilgi edinin.

Aşağıda belirtilen bellek değerlerinin minimum değerler olarak kabul edildiğini ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceğini unutmayın.

Ekran Düzeni Ekran Yoğunluğu Minimum Uygulama Belleği
Android Watch 120 dpi (ldpi) 32MB
140 dpi (140dpi)
160 dpi (mdpi)
180 dpi (180dpi)
200 dpi (200dpi)
213 dpi (tvdpi)
220 dpi (220dpi) 36MB
240 dpi (hdpi)
280 dpi (280dpi)
320 dpi (xhdpi) 48MB
360 dpi (360dpi)
400 dpi (400dpi) 56MB
420 dpi (420dpi) 64MB
480 dpi (xxhdpi) 88MB
560 dpi (560dpi) 112MB
640 dpi (xxxhdpi) 154MB
küçük/normal 120 dpi (ldpi) 32MB
140 dpi (140dpi)
160 dpi (mdpi)
180 dpi (180dpi) 48MB
200 dpi (200dpi)
213 dpi (tvdpi)
220 dpi (220dpi)
240 dpi (hdpi)
280 dpi (280dpi)
320 dpi (xhdpi) 80MB
360 dpi (360dpi)
400 dpi (400dpi) 96MB
420 dpi (420dpi) 112MB
480 dpi (xxhdpi) 128MB
560 dpi (560dpi) 192MB
640 dpi (xxxhdpi) 256MB
büyük 120 dpi (ldpi) 32MB
140 dpi (140dpi) 48MB
160 dpi (mdpi)
180 dpi (180dpi) 80MB
200 dpi (200dpi)
213 dpi (tvdpi)
220 dpi (220dpi)
240 dpi (hdpi)
280 dpi (280dpi) 96MB
320 dpi (xhdpi) 128MB
360 dpi (360dpi) 160MB
400 dpi (400dpi) 192MB
420 dpi (420dpi) 228MB
480 dpi (xxhdpi) 256MB
560 dpi (560dpi) 384MB
640 dpi (xxxhdpi) 512MB
xlarge 120 dpi (ldpi) 48MB
140 dpi (140dpi) 80MB
160 dpi (mdpi)
180 dpi (180dpi) 96MB
200 dpi (200dpi)
213 dpi (tvdpi)
220 dpi (220dpi)
240 dpi (hdpi)
280 dpi (280dpi) 144MB
320 dpi (xhdpi) 192MB
360 dpi (360dpi) 240MB
400 dpi (400dpi) 288MB
420 dpi (420dpi) 336MB
480 dpi (xxhdpi) 384MB
560 dpi (560dpi) 576MB
640 dpi (xxxhdpi) 768MB

3.8. Kullanıcı Arayüzü Uyumluluğu

3.8.1. Başlatıcı (Ana Ekran)

Android, bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerini alacak üçüncü taraf uygulamaları için destek içerir.

Cihaz uygulamaları, üçüncü taraf uygulamalarının cihaz ana ekranını değiştirmesine izin veriyorsa:

  • [C-1-1] android.software.home_screen platform özelliğini İLKLE bildirmelidir.
  • [C-1-2] Üçüncü taraf uygulaması simgesini sağlamak için <adaptive-icon> etiketini kullandığında ve simgeleri almak için PackageManager yöntemleri çağrıldığında AdaptiveIconDrawable nesnesini İADE ETMELİDİR.

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

Buna karşılık, cihaz uygulamaları kısayolların uygulama içinde sabitlenmesini desteklemiyorsa:

Cihaz uygulamaları, ShortcutManager API'si aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uygularsa:

  • [C-4-1] Belgelenen tüm kısayol özelliklerini (ör. statik ve dinamik kısayollar, kısayolları sabitleme) desteklemeli ve ShortcutManager API sınıfının API'lerini eksiksiz şekilde uygulamalıdır.

Cihaz uygulamalarında, uygulama simgelerinin rozetlerini gösteren varsayılan bir başlatıcı uygulaması varsa bu uygulamalar:

  • [C-5-1] NotificationChannel.setShowBadge() API yöntemine uymalıdır. Diğer bir deyişle, değer true olarak ayarlanmışsa uygulama simgesiyle ilişkili bir görsel imkanı gösterin ve uygulamanın tüm bildirim kanalları değeri false olarak ayarladığında uygulama simgesi rozeti şeması göstermeyin.
  • Üçüncü taraf uygulamaları, özel API'ler aracılığıyla özel rozet şemasını desteklediğini belirtiyorsa uygulama simgesi rozetlerini özel rozet şemasıyla geçersiz kılabilir 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 kullanmalıdır.

Cihaz uygulamaları tek renkli simgeleri destekliyorsa bu simgeler:

  • [C-6-1] Yalnızca kullanıcı açıkça etkinleştirdiğinde (ör. Ayarlar veya duvar kağıdı seçici menüsü aracılığıyla) kullanılmalıdır.

3.8.2. Widget'lar

Android, uygulamaların son kullanıcıya "AppWidget" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü tanımlayarak üçüncü taraf uygulama widget'larını destekler.

Cihaz uygulamaları üçüncü taraf uygulama widget'larını destekliyorsa:

  • [C-1-1] Platform özelliği android.software.app_widgets için destek beyan ETMELI.
  • [C-1-2] Uygulama widget'ları için yerleşik destek içermeli ve uygulama widget'ları eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü özelliklerini sunmalıdır

  • [C-1-3] Standart ızgara boyutunda 4 x 4 widget oluşturabilmelidir. Ayrıntılar için Android SDK dokümanlarındaki Uygulama Widget'ı Tasarım Kuralları'na bakın.

  • Kilit ekranında uygulama widget'larını DESTEKLEYEBİLİR.

Cihaz uygulamaları, üçüncü taraf uygulama widget'larını ve uygulama içi kısayol sabitlemeyi destekliyorsa:

3.8.3. Bildirimler

Android, üçüncü taraf uygulama geliştiricilerin kullanıcıları önemli etkinlikler hakkında bilgilendirmesine 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 içerir.

3.8.3.1. Bildirimlerin sunumu

Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli olaylar hakkında bilgilendirmesine izin veriyorsa:

  • [C-1-1] SDK dokümanlarında açıklandığı şekilde ve cihaz uygulaması donanımı ile mümkün olduğu ölçüde donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim varsa titreşim API'leri doğru şekilde uygulanmalıdır. Bir cihaz uygulamasında donanım yoksa ilgili API'ler no-op olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmıştır.
  • [C-1-2] API'lerde veya Durum/Sistem Çubuğu simge stil kılavuzunda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) doğru şekilde oluşturmalıdır. Ancak bildirimler için referans Android açık kaynak uygulaması tarafından sağlananlardan farklı bir kullanıcı deneyimi sunabilirler.
  • [C-1-3] Bildirimleri güncellemek, kaldırmak ve gruplandırmak için API'ler için açıklanan davranışları doğru şekilde uygulamalıdır.
  • [C-1-4] NotificationChannel API'sinin tam davranışını SDK'da belgelenmiş şekilde sağlamalıdır.
  • [C-1-5] Her kanal ve uygulama paketi düzeyinde belirli bir üçüncü taraf uygulamasının bildirimini engellemek ve değiştirmek için kullanıcılara bir kolaylık sunulmalıdır.
  • [C-1-6] Ayrıca, silinen bildirim kanallarını görüntülemek için kullanıcılara bir imkân sunmalıdır.
  • [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şturmalıdır. Örneğin, setGroupConversation aracılığıyla ayarlanan bir grup görüşmesinde android.app.Person aracılığıyla sağlanan simgeler de dahil olmak üzere tüm kaynakları GÖSTERMELİDİR.

  • [C-SR-1] Kullanıcının, bildirim dinleyici izni verilen uygulamalara gösterilen bildirimleri kontrol etmesine olanak tanıyan bir özellik sunulması önemle ÖNERİLİR. Ayrıntı düzeyi, kullanıcının bu tür her bildirim dinleyicisi için hangi bildirim türlerinin bu dinleyiciye köprüleneceğini kontrol edebilmesi için OLMALIDIR. Türler "iletişimler", "uyarı", "sessiz" ve "önemli devam eden" bildirimleri İÇERMELİDİR.

  • [C-SR-2] Kullanıcıların belirli bir bildirim dinleyicisini bilgilendirmekten hariç tutacağı uygulamaları belirtmesi için bir özellik sunulması önemle ÖNERİLİR.

  • [C-SR-3] Kullanıcı belirli bir üçüncü taraf uygulamasının bildirimini birden çok kez kapattıktan sonra, her kanal ve uygulama paketi düzeyinde söz konusu bildirimi engellemek için kullanıcıya otomatik olarak bir kullanım imkanı sunulması önemle ÖNERİLİR.

  • Zengin bildirimleri DESTEKLEMELİDİR.

  • Bazı yüksek öncelikli bildirimleri uyarı bildirimleri olarak GÖSTERMELİDİR.

  • Bildirimleri ertelemek için kullanıcılara bir kolaylık sunulmalıdır.

  • Yalnızca sürücünün dikkatinin dağılması gibi güvenlik sorunlarını azaltmak için üçüncü taraf uygulamalarının kullanıcıları önemli etkinlikler hakkında ne zaman bilgilendirebileceğinin görünürlüğünü ve zamanlamasını yönetebilir.

Android 11, MessagingStyle kullanan ve yayınlanmış bir Kişiler kısayol kimliği sağlayan görüşme bildirimleri için destek sunar.

Cihaz uygulamaları:

  • [C-SR-4] Devam eden ön plan hizmet bildirimleri ve importance:high bildirimleri hariç olmak üzere, conversation notifications bildirimleri ileti dizisi dışındaki bildirimlerin önünde gruplandırılıp gösterilmesi önemle ÖNERİLİR.

Cihaz uygulamaları conversation notifications desteği sağlıyorsa ve uygulama bubbles için gerekli verileri sağlıyorsa:

  • [C-SR-5] Bu görüşmenin baloncuk olarak gösterilmesi önemle ÖNERİLİR. AOSP uygulaması, varsayılan sistem kullanıcı arayüzü, Ayarlar ve Başlatıcı ile bu gereksinimleri karşılar.

Cihaz uygulamaları zengin bildirimleri destekliyorsa:

  • [C-2-1] Sunulan kaynak öğeleri için Notification.Style API sınıfı ve alt sınıfları aracılığıyla sağlanan kaynakların aynısını KULLANMALIDIR.
  • Notification.Style API sınıfında ve alt sınıflarında tanımlanan her bir kaynak öğesini (ör. simge, başlık ve özet metin) GÖSTERMELİDİR.

Uyarı bildirimleri, kullanıcının bulunduğu yüzeyden bağımsız olarak gelen bildirimler olduğu için kullanıcıya sunulur. Cihaz uygulamaları, önemli bildirim özelliğini destekliyorsa:

  • [C-3-1] Bildirimler gösterilirken Notification.Builder API sınıfında açıklandığı gibi bilgi dokümanı bildirimi görünümünü ve kaynaklarını KULLANMALIDIR.
  • [C-3-2] Notification.Builder.addAction() aracılığıyla sağlanan işlemleri, SDK'da açıklandığı gibi ek kullanıcı etkileşimi olmadan bildirim içeriğiyle birlikte GÖSTERMELİDİR.
3.8.3.2. Bildirim Dinleyici Hizmeti

Android, uygulamaların (kullanıcı tarafından açıkça etkinleştirildikten sonra) yayınlandıkları veya güncellendikleri sırada tüm bildirimlerin bir kopyasını almasına olanak tanıyan NotificationListenerService API'lerini içerir.

Cihaz uygulamaları:

  • [C-0-1] Bildirimleri, Notification nesnesine eklenmiş tüm meta veriler dahil olmak üzere, yüklü ve kullanıcı tarafından etkinleştirilmiş tüm dinleyici hizmetlerinde doğru ve zamanında güncellemelidir.
  • [C-0-2] snoozeNotification() API çağrısına uymalı, bildirimi kapatmalı ve API çağrısında ayarlanan erteleme süresinden sonra geri arama yapmalıdır.

Cihaz uygulamalarında bildirimleri erteleme olanağı sunuluyorsa:

  • [C-1-1] NotificationListenerService.getSnoozedNotifications() gibi standart API'ler aracılığıyla ertelenen bildirim durumunu düzgün şekilde YANSITLAMALIDIR.
  • [C-1-2] Kalıcı/ön plan hizmetlerinden gelenler hariç, yüklü her üçüncü taraf uygulamasının bildirimlerini ertelemek için bu kullanıcı özelliğini sunmalıdır.
3.8.3.3. Rahatsız Etmeyin / Öncelik Modu

Cihaz uygulamaları, DND özelliğini (Öncelik Modu olarak da bilinir) destekliyorsa:

  • [C-1-1] Cihaz uygulaması, kullanıcının üçüncü taraf uygulamaların Rahatsız Etmeme politikası yapılandırmasına erişmesine izin vermesi veya vermemesi için bir yöntem sağladığında, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kuralların yanı sıra uygulamalar tarafından oluşturulan otomatik Rahatsız Etmeme kurallarını GÖSTERMELİDİR.
  • [C-1-3] NotificationManager.Policy üzerinden iletilen suppressedVisualEffects değerlerini dikkate ALMASI GEREKİR ve bir uygulama SUPPRESSED_EFFECT_SCREEN_OFF veya SUPPRESSED_EFFECT_SCREEN_ON işaretlerinden herhangi birini ayarlarsa kullanıcıya görsel efektlerin DND ayarları menüsünde devre dışı bırakıldığını belirtmelidir.

3.8.4. Asistan API'leri

Android, uygulamaların mevcut bağlamla ilgili ne kadar bilginin cihazdaki asistanla paylaşılacağı konusunda seçim yapmasına olanak tanımak için Assist API'lerini içerir.

Cihaz uygulamaları Yardımcı Ol işlemini destekliyorsa:

  • [C-2-1] Bağlam paylaşıldığında son kullanıcıya aşağıdakilerden biri aracılığıyla net bir şekilde AÇIKLANMALIDIR:
    • Asistan uygulaması bağlama her eriştiğinde ekranın kenarlarında Android Open Source Project uygulamasının süresini ve parlaklığını karşılayan veya aşan beyaz bir ışık gösteriliyor.
    • Önceden yüklenmiş yardımcı uygulama için varsayılan ses girişi ve yardımcı uygulama ayarları menüsünden ikiden az gezinme işlemiyle erişilebilen bir kullanıcı kolaylığı sağlamak ve bağlamı yalnızca kullanıcı tarafından bir kısa kelime veya yardımcı gezinme tuşu girişi aracılığıyla yardımcı uygulama açıkça çağrıldığında paylaşmak.
  • [C-2-2] 7.2.3 numaralı bölümde açıklandığı şekilde yardımcı uygulamayı başlatmak için belirlenen etkileşim, kullanıcı tarafından seçilen yardımcı uygulamayı (yani VoiceInteractionService uygulamasını uygulayan uygulamayı) veya ACTION_ASSIST intent'ini işleyen bir etkinliği BAŞLATMAK ZORUNDADIR.

3.8.5. Uyarılar ve pop-up'lar

Uygulamalar, son kullanıcıya kısa süre sonra kaybolan kısa, modal olmayan dizeler göstermek için Toast API'yi, diğer uygulamaların üzerine yer paylaşımı olarak uyarı pencereleri göstermek için ise TYPE_APPLICATION_OVERLAY pencere türü API'yi kullanabilir.

Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:

  • [C-1-1] Bir uygulamanın TYPE_APPLICATION_OVERLAY kullanan uyarı pencereleri göstermesini engellemek için kullanıcılara bir kolaylık sunmalıdır. AOSP uygulaması, bildirim gölgesinde kontrollere sahip olarak bu koşulu karşılar.

  • [C-1-2] Toast API'yi desteklemeli ve uygulamalardan son kullanıcılara gönderilen Toast'ları son derece görünür bir şekilde göstermelidir.

3.8.6. Temalar

Android, uygulamaların bir etkinliğin veya uygulamanın tamamına stil uygulamak için kullanabileceği bir mekanizma olarak "temalar" sağlar.

Android, Android SDK'sı tarafından tanımlanan Holo tema görünüm ve tarzını eşleştirmek isteyen uygulama geliştiricilerin kullanabileceği bir dizi tanımlanmış stil olarak "Holo" ve "Materyal" tema ailesini içerir.

Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:

  • [C-1-1] Uygulamalara sunulan Holo tema özelliklerinden hiçbirini DEĞİŞTİRMEmelidir.
  • [C-1-2] "Material" tema ailesini DESTEKLEMELİDİR ve Material tema özelliklerinden veya uygulamalara sunulan öğelerinden hiçbirini DEĞİŞTİRMEmelidir.
  • [C-1-3] "Sans-serif" yazı tipi ailesini, Roboto'nun desteklediği diller için Roboto 2.x sürümü olarak ayarlamalı veya "sans-serif" yazı tipi ailesinde kullanılan yazı tipini, Roboto'nun desteklediği diller için Roboto 2.x sürümü olarak değiştirmek üzere kullanıcılara bir kolaylık sunmalıdır.

  • [C-1-4] Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES'ün AOSP dokümanlarında belirtildiği gibi dinamik renk ton paletleri OLUŞTURMALIDIR (android.theme.customization.system_palette ve android.theme.customization.theme_style'ye bakın).

  • [C-1-5] Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGESdokümanlarında (android.theme.customization.theme_styles bölümüne bakın) belirtilen renk tema stillerini (TONAL_SPOT, VIBRANT, EXPRESSIVE, SPRITZ, RAINBOW, FRUIT_SALAD, veMONOCHROMATIC) kullanarak dinamik renk ton paletleri OLUŞTURMALIDIR.

    android.theme.customization.system_palette ile birlikte gönderildiğinde dinamik renk tonları paletleri oluşturmak için kullanılan "kaynak renk" (Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES'te belirtildiği gibi).

  • [C-1-6] CAM16 renk değeri 5 veya daha büyük olmalıdır.

    • com.android.systemui.monet.ColorScheme#getSeedColors aracılığıyla duvar kağıdından alınmalıdır. Bu kaynak, aralarından seçim yapabileceğiniz birden fazla geçerli renk sağlar.

    • Sağlanan renklerden hiçbiri yukarıdaki kaynak renk koşulunu karşılamıyorsa 0xFF1B6EF3 değerini KULLANIYOR OLMALIDIR.

Android, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünümünü ve tarzını eşleştirmek isterse kullanabileceği tanımlanmış stiller grubu olarak "Cihaz Varsayılan" tema ailesini de içerir.

Android, yarı saydam sistem çubuklarına sahip bir varyant teması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 sunmak için durum çubuğu simgesi stilinin farklı cihaz uygulamalarında korunması önemlidir.

Cihaz uygulamalarında sistem durum çubuğu varsa:

  • [C-2-1] Simge sorunlu bir durumu belirtmediği veya uygulama WindowInsetsController#APPEARANCE_LIGHT_STATUS_BARS işaretçisini kullanarak açık renkli bir durum çubuğu istemediği sürece sistem durumu simgeleri (ör. sinyal gücü ve pil seviyesi) ve sistem tarafından gönderilen bildirimler için beyaz renk KULLANILMALIDIR.
  • [C-2-2] Android cihaz uygulamaları, bir uygulama açık durum çubuğu istediğinde sistem durum simgelerinin rengini siyah olarak DEĞİŞTİRMELİDİR (ayrıntılar için R.style bölümüne bakın).

3.8.7. Animasyonlu Duvar Kağıtları

Android, uygulamaların son kullanıcıya bir veya daha fazla "animasyonlu duvar kağıdı" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü tanımlar. Animasyonlu duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak görüntülenen, sınırlı giriş özelliklerine sahip animasyonlar, desenler veya benzer resimlerdir.

Donanım, tüm canlı duvar kağıtlarını işlevsellik açısından herhangi bir sınırlama olmadan, diğer uygulamalar üzerinde olumsuz bir etki oluşturmadan ve makul bir kare hızında çalıştırabiliyorsa canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabilir olarak kabul edilir. Donanımdaki sınırlamalar, duvar kağıtlarının ve/veya uygulamaların kilitlenmesine, arızalanmasına, aşırı CPU veya pil gücü tüketimine ya da kabul edilemeyecek kadar düşük kare hızlarında çalışmasına neden oluyorsa donanım, canlı duvar kağıdı çalıştıramaz olarak kabul edilir. Örneğin, bazı canlı duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamı kullanabilir. OpenGL bağlamının canlı duvar kağıdı kullanımı, OpenGL bağlamı kullanan diğer uygulamalarla çakışabileceğinden, canlı duvar kağıdı birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.

  • Yukarıda açıklandığı şekilde güvenilir bir şekilde animasyonlu duvar kağıdı çalıştırabilen cihaz uygulamaları animasyonlu duvar kağıdını UYGULAMALIDIR.

Cihaz uygulamaları, canlı duvar kağıtlarını uygularsa:

  • [C-1-1] Platform özellik işareti android.software.live_wallpaper bildirilmelidir.

3.8.8. Etkinlik Değiştirme

Yukarı yönlü Android kaynak kodu, görev değiştirme ve kullanıcının uygulamadan en son çıktığı andaki uygulamanın grafik durumunun küçük resmini kullanarak son erişilen etkinlikleri ve görevleri görüntülemek için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir.

7.2.3 numaralı bölümde ayrıntılı olarak açıklanan son işlev gezinme anahtarı da dahil olmak üzere cihaz uygulamaları arayüzü DEĞİŞTİREBİLİR.

7.2.3 numaralı bölümde ayrıntılı olarak açıklandığı gibi son uygulamalar işlev gezinme anahtarı içeren cihaz uygulamaları arayüzü değiştiriyorsa:

  • [C-1-1] En az 7 görüntülenen etkinliği DESTEKLEMELİDİR.
  • Bir seferde en az 4 etkinliğin başlığını GÖSTERMELİDİR.

  • [C-1-2] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirip devre dışı bırakabileceği bir ayarlar menüsü sunmalıdır.

  • Son aramalar bölümünde vurgu rengini, simgesini ve ekran başlığını GÖSTERMELİDİR.
  • Kapatma imkanı ("x") gösterilMELİDİR ancak kullanıcı ekranlarla etkileşime geçene kadar bu işlem ertelenebilir.
  • Önceki etkinliğe kolayca geçmek için bir kısayol UYGULANMALIDIR.
  • Son uygulamalar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işlemini TETİKLEMELİDİR.
  • Son uygulamalar işlev tuşuna uzun basıldığında, destekleniyorsa bölünmüş ekran çoklu pencere modunu TETİKLEMELİDİR.
  • İlişkili son etkinlikleri birlikte hareket eden bir grup olarak GÖSTEREBİLİR.
  • [C-SR-1] Genel bakış ekranı için yayın öncesi Android kullanıcı arayüzünün (veya küçük resim tabanlı benzer bir arayüzün) kullanılması önemle ÖNERİLİR.

3.8.9. Giriş Yönetimi

Android, Giriş Yönetimi ve üçüncü taraf giriş yöntemi düzenleyicileri için destek içerir.

Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:

  • [C-1-1] android.software.input_methods platform özelliğini İLANI ZORUNLUDUR ve Android SDK belgelerinde tanımlandığı şekilde IME API'lerini desteklemelidir.

3.8.10. Kilit Ekranı Medya Kontrolü

Android 5.0'den itibaren, medya uygulamalarının kilit ekranında gösterilen oynatma kontrolleriyle entegrasyonuna olanak tanıyan Medya Bildirim Şablonu'nun kullanılması önerilir.

3.8.11. Ekran koruyucular (eski adıyla İlhamlar)

Ekran koruyucuları yapılandırmak için ayar niyeti için 3.2.3.5 numaralı bölüme bakın.

3.8.12. Konum

Cihaz uygulamalarında konum koordinatlarını sağlayabilen bir donanım sensörü (ör. GPS) varsa

3.8.13. Unicode ve Yazı Tipi

Android, Unicode 10.0'da tanımlanan emoji karakterlerini destekler.

Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:

  • [C-1-1] Bu emoji karakterlerini renkli glifte oluşturabilmelidir.
  • [C-1-2] Şunlar için destek içermelidir:
    • Cihazdaki diller için farklı kalınlıklara sahip Roboto 2 yazı tipi (sans-serif-ince, sans-serif-ince, sans-serif-orta, sans-serif-siyah, sans-serif-dar, sans-serif-dar-ince).
    • Latin, Yunanca ve Kiril alfabelerinin Unicode 7.0'daki tam kapsamı (Latince Genişletilmiş A, B, C ve D aralıkları ve Unicode 7.0'daki para birimi sembolleri bloğundaki tüm glifler dahil).
  • [C-1-3] Sistem görüntüsünde NotoColorEmoji.tff kaldırılmamalı veya değiştirilmemelidir. (NotoColorEmoji.tff dosyasında emojileri geçersiz kılmak için yeni bir emoji yazı tipi eklemek kabul edilir.)
  • Unicode Teknik Raporu 51'de belirtildiği gibi cilt tonunu ve çeşitli aile emojilerini DESTEKLEMELİDİR.

Cihaz uygulamalarında IME varsa:

  • Bu emoji karakterleri için kullanıcıya bir giriş yöntemi SAĞLANMALIDIR.

Android, Myanmar yazı tiplerini oluşturma desteği içerir. Myanmar'da, Myanmar dillerini oluşturmak için genellikle "Zawgyi" olarak bilinen, Unicode uyumlu olmayan birkaç yazı tipi vardır.

Cihaz uygulamaları Burmaca desteği içeriyorsa:

  • [C-2-1] Metin, varsayılan olarak Unicode uyumlu yazı tipiyle oluşturulmalıdır. Kullanıcı dil seçicide bunu seçmediği sürece Unicode uyumlu olmayan yazı tipi varsayılan yazı tipi olarak ayarlanmamalıdır.
  • [C-2-2] Cihazda Unicode uyumlu olmayan bir yazı tipi destekleniyorsa Unicode yazı tipini ve Unicode uyumlu olmayan yazı tipini desteklemelidir. Unicode uyumlu olmayan yazı tipi, Unicode yazı tipini kaldırmamalı veya üzerine yazmamalıdır.
  • [C-2-3] Metin, YALNIZCA yazı kodu Qaag içeren bir dil kodu (ör. my-Qaag) belirtilmişse Unicode uyumlu olmayan yazı tipiyle oluşturulmalıdır. Myanmar için Unicode uyumlu olmayan yazı tipini belirtmek üzere başka ISO dil veya bölge kodları (atanmış, atanmamış veya ayrılmış olsun) kullanılamaz. Uygulama geliştiriciler ve web sayfası yazarları, diğer tüm diller için olduğu gibi my-Qaag'ı belirlenen dil kodu olarak belirtebilir.

3.8.14. Çoklu pencereler

Cihaz uygulamalarının aynı anda birden fazla etkinlik gösterme özelliği varsa:

  • [C-1-1] Bu tür çoklu pencere modlarını, Android SDK'sının çoklu pencere modu destek dokümanlarında açıklanan uygulama davranışlarına ve API'lerine uygun şekilde uygulamalı ve aşağıdaki koşulları karşılamalıdır:
  • [C-1-2] Bu SDK'da açıklandığı gibi, AndroidManifest.xml dosyasında bir uygulama tarafından ayarlanan android:resizeableActivity değerini dikkate ALMALIDIR.
  • [C-1-3] Ekran yüksekliği 440 dp'den ve ekran genişliği 440 dp'den azsa bölünmüş ekran veya serbest biçim modu SUNMAMALIDIR.
  • [C-1-4] Bir etkinlik, resim içinde resim modu dışındaki çoklu pencere modlarında 220 dp'den küçük bir boyuta yeniden boyutlandırılmamalıdır.
  • Ekran boyutu xlarge olan cihaz uygulamaları, serbest biçim modunu DESTEKLEMELİDİR.

Cihaz uygulamaları çoklu pencere modlarını ve bölünmüş ekran modunu destekliyorsa:

  • [C-2-2] Bölünmüş ekranlı çoklu pencerenin sabitlenmiş etkinliğini kırpmalı ancak Başlatıcı uygulaması odaklanan pencereyse bazı içeriklerini göstermelidir.
  • [C-2-3] Üçüncü taraf başlatıcı uygulamasının beyan edilen AndroidManifestLayout_minWidth ve AndroidManifestLayout_minHeight değerlerini dikkate ALMALI ve sabitlenmiş etkinliğin bazı içeriklerini gösterirken bu değerleri geçersiz kılmamalıdır.

Cihaz uygulamaları çoklu pencere modlarını ve Pencere İçinde Pencere çoklu pencere modunu destekliyorsa:

  • [C-3-1] Uygulama aşağıdaki durumlarda etkinlikleri resim içinde resim çoklu pencere modunda BAŞLATMALIDIR: * API düzeyi 26 veya üstünü hedefliyor ve android:supportsPictureInPicture bildiriyorsa * API düzeyi 25 veya altını hedefliyor ve hem android:resizeableActivity hem de android:supportsPictureInPicture bildiriyorsa.
  • [C-3-2] Sistem arayüzündeki işlemleri, setActions() API'si aracılığıyla geçerli PIP etkinliği tarafından belirtildiği şekilde GÖSTERMELİDİR.
  • [C-3-3] PIP etkinliği tarafından setAspectRatio() API'si aracılığıyla 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 uygulanmıyorsa anahtar, ön plan etkinliği tarafından kullanılabilir olmalıdır.
  • [C-3-5] Bir uygulamanın PIP modunda görüntülenmesini engellemek için kullanıcıya bir kolaylık sunmalıdır. AOSP uygulaması, bildirim gölgesinde kontrollere sahip olarak bu koşulu karşılar.
  • [C-3-6] Bir uygulama AndroidManifestLayout_minWidth ve AndroidManifestLayout_minHeight için herhangi bir değer bildirmediğinde PIP penceresi için aşağıdaki minimum genişliği ve yüksekliği AYIRTMASI GEREKİR:

    • Configuration.uiMode özelliği UI_MODE_TYPE_TELEVISION olarak ayarlanmamış cihazlar 108 dp minimum genişlik ve yükseklik ayırmalıdır.
    • Configuration.uiMode özelliği 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 belgesinde açıklandığı gibi ekran kesimini destekler. DisplayCutout API'si, ekranın kenarındaki bir ekran kesiği veya kavisli ekran nedeniyle uygulama için işlevsel olmayabilecek bir alanı tanımlar.

Cihaz uygulamalarında ekran kesikleri varsa bunlar:

  • [C-1-5] Cihazın en boy oranı 1,0 (1:1) ise kesikler OLMAMALIDIR.
  • [C-1-2] Kenar başına birden fazla kesik OLMAMALIDIR.
  • [C-1-3] Uygulama tarafından WindowManager.LayoutParams API aracılığıyla ayarlanan ekran kesme işaretlerini SDK'da açıklandığı şekilde dikkate ALMASI GEREKİR.
  • [C-1-4] DisplayCutout API'de tanımlanan tüm kesit metrikleri için doğru değerleri bildirmelidir.

3.8.16. Cihaz Denetimleri

Android, üçüncü taraf uygulamalarının kullanıcılara hızlı durum ve işlem için cihaz kontrolleri yayınlamasına olanak tanıyan ControlsProviderService ve Control API'leri içerir.

Cihaza özgü gereksinimler için 2_2_3 bölümüne bakın.

3.8.17. Pano

Cihaz uygulamaları:

  • [C-0-1] 9.8.6 İçerik Yakalama ve Uygulama Arama bölümünde belirtilen hizmetler hariç olmak üzere, kullanıcının açıkça işlem yapmaması (ör. yer paylaşımındaki bir düğmeye basılması) veya içeriğin gönderildiğine dair bir gösterge olmadan herhangi bir bileşene, etkinliğe, hizmete veya herhangi bir ağ bağlantısına pano verileri GÖNDERMEMELİDİR.

Cihaz uygulamaları, içerik ClipData.getDescription().getExtras()'un android.content.extra.IS_SENSITIVE içerdiği herhangi bir ClipData öğesine kopyalandığında kullanıcı tarafından görülebilen bir önizleme oluşturuyorsa:

  • [C-1-1] Kullanıcının görebileceği önizlemeyi çıkartmalıdır

AOSP referans uygulaması bu panosuyla ilgili şartları karşılar.

3.9. Cihaz Yönetimi

Android, güvenlik bilincine sahip uygulamaların Android Cihaz Yönetimi API'si aracılığıyla sistem düzeyinde cihaz yönetimi işlevleri (ör. şifre politikalarını uygulama veya uzaktan silme) gerçekleştirmesine olanak tanıyan özellikler içerir.

Cihaz uygulamaları, Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tamamını uygularsa:

3.9.1 Cihaz Temel Hazırlığı

3.9.1.1 Cihaz sahibi temel hazırlığı

Cihaz uygulamaları android.software.device_admin bildirirse:

  • [C-1-1] Aşağıda açıklandığı şekilde bir Device Policy Client'ın (DPC) cihaz sahibi uygulaması olarak kaydedilmesini desteklemelidir:
    • Cihaz uygulamasında kullanıcı veya kullanıcı verileri yapılandırılmamışsa:
      • [C-1-5] Cihaz, android.hardware.nfc özellik işareti aracılığıyla Near-Field Communications (NFC) desteğini beyan ederse ve MIME türü MIME_TYPE_PROVISIONING_NFC olan bir kayıt içeren bir NFC mesajı alırsa DPC uygulamasını Cihaz Sahibi uygulaması olarak kaydettirmeLİ veya DPC uygulamasının Cihaz Sahibi mi yoksa Profil Sahibi mi olacağını seçmesini sağlamalı.
      • [C-1-8] DPC uygulamasının, bağlamdan yalnızca bir geçerli seçenek olduğu belirlenemediği sürece android.app.extra.PROVISIONING_ALLOWED_PROVISIONING_MODES değerlerine bağlı olarak cihaz sahibi mi yoksa profil sahibi mi olmayı seçebilmesi için cihaz sahibi temel hazırlığı tetiklendikten sonra ACTION_GET_PROVISIONING_MODE intent'ini GÖNDERMELİDİR.
      • [C-1-9] Kullanılan hazırlık yönteminden bağımsız olarak, hazırlık sırasında bir cihaz sahibi oluşturulursa ACTION_ADMIN_POLICY_COMPLIANCE intent'ini cihaz sahibi uygulamasına göndermelidir. Cihaz Sahibi uygulaması tamamlanana kadar kullanıcı, Kurulum Sihirbazı'nda ilerlememelidir.
    • Cihaz uygulamasında kullanıcı veya kullanıcı verileri varsa:
      • [C-1-7] Artık hiçbir DPC uygulamasını Cihaz Sahibi Uygulaması olarak kaydettirmemelidir.
  • [C-1-2] Cihaz, ekrandaki son kullanıcı etkileşiminin öncesinde programatik olarak perakende demo modu için yapılandırılmamışsa uygulama, cihaz sahibi olarak ayarlanmadan önce uygun bir açıklama bildirimi (AOSP'de belirtildiği gibi) göstermeli ve son kullanıcıdan onay izini almalıdır. Cihaz uygulamaları android.software.device_admin değerini belirtiyorsa ancak özel bir cihaz yönetimi çözümü de içeriyorsa ve çözümlerinde yapılandırılmış bir uygulamayı standart Android DevicePolicyManager API'leri tarafından tanınan standart "Cihaz Sahibi"nin "Cihaz Sahibi eşdeğeri" olarak tanıtılması için bir mekanizma sağlıyorsa:

  • [C-2-1] Tanıtılan belirli uygulamanın meşru bir kurumsal cihaz yönetimi çözümüne ait olduğunu ve tescilli çözümde "Cihaz Sahibi" ile eşdeğer haklara sahip olacak şekilde yapılandırıldığını doğrulamak için bir süreç BULUNMASI GEREKİR.

  • [C-2-2] DPC uygulaması "Cihaz Sahibi" olarak kaydedilmeden önce android.app.action.PROVISION_MANAGED_DEVICE tarafından başlatılan akışla aynı AOSP Cihaz Sahibi izin açıklamasını GÖSTERMELİDİR.

  • [C-2-3] İzni sabit kodlamalı veya diğer cihaz sahibi uygulamalarının kullanılmasını engellememelidir.

3.9.1.2 Yönetilen profil sağlama

Cihaz uygulamaları android.software.managed_users bildirirse:

  • [C-1-1] Cihaz Politikası Denetleyici (DPC) uygulamasının yeni bir yönetilen profilin sahibi olmasına olanak tanıyan API'leri UYGULAMALIDIR.

  • [C-1-2] Yönetilen profil sağlama süreci (android.app.action.PROVISION_MANAGED_PROFILE) veya platform tarafından başlatılan akış), kullanıcı rızası ekranı ve kullanıcı deneyimi AOSP uygulamasıyla UYUMLU OLMALIDIR.

  • [C-1-3] Cihaz Politikası Denetleyicisi (DPC) tarafından belirli bir sistem işlevi devre dışı bırakıldığında kullanıcıya belirtmek için Ayarlar'da aşağıdaki kullanıcı özelliklerini ZORUNLU KULLANINIZ:

    • Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya başka bir kullanıcı özelliği (ör. yayın öncesi AOSP bilgi simgesi).
    • Cihaz yöneticisi tarafından setShortSupportMessage üzerinden sağlanan kısa bir açıklama mesajı.
    • DPC uygulamasının simgesi.
  • [C-1-4] android.app.action.PROVISION_MANAGED_PROFILE intent'i tarafından temel hazırlama işlemi başlatılırken bir Profil Sahibi oluşturulursa ve DPC işleyiciyi uyguladıysa iş profilinde ACTION_PROVISIONING_SUCCESSFUL intent'i için işleyiciyi BAŞLATMALIDIR.

  • [C-1-5] android.app.action.PROVISION_MANAGED_PROFILE intent'i tarafından temel hazırlama işlemi başlatıldığında iş profili DPC'sine ACTION_PROFILE_PROVISIONING_COMPLETE yayını GÖNDERMELİDİR.

  • [C-1-6] android.app.action.PROVISION_MANAGED_PROFILE isteği tarafından tetiklenmediği sürece DPC uygulamasının cihaz sahibi mi yoksa profil sahibi mi olacağını seçebilmesi için profil sahibi temel hazırlığı tetiklendikten sonra ACTION_GET_PROVISIONING_MODE isteğini GÖNDERMELİDİR.

  • [C-1-7] android.app.action.PROVISION_MANAGED_PROFILE intent'i tarafından tetiklenmediği sürece, hangi temel hazırlama yöntemi kullanıldığına bakılmaksızın temel hazırlama sırasında bir Profil Sahibi oluşturulduğunda ACTION_ADMIN_POLICY_COMPLIANCE intent'ini iş profiline GÖNDERMELİDİR. Profil Sahibi uygulaması tamamlanana kadar kullanıcı, Kurulum Sihirbazı'nda ilerlememelidir.

  • [C-1-8] Kullanılan temel hazırlama yönteminden bağımsız olarak, bir profil sahibi oluşturulduğunda kişisel profil DPC'sine ACTION_MANAGED_PROFILE_PROVISIONED yayını gönderilmelidir.

3.9.2 Yönetilen Profil Desteği

Cihaz uygulamaları android.software.managed_users bildirirse:

  • [C-1-1] Yönetilen profilleri android.app.admin.DevicePolicyManager API'leri üzerinden desteklemelidir.
  • [C-1-2] Yalnızca bir yönetilen profilin oluşturulmasına izin VERMELİDİR.
  • [C-1-3] Yönetilen uygulamaları, widget'ları ve Son Aramalar ve Bildirimler gibi rozetli diğer kullanıcı arayüzü öğelerini temsil etmek için bir simge rozeti (AOSP yayın öncesi çalışma rozetine benzer) KULLANMALIDIR.
  • [C-1-4] Kullanıcının yönetilen profil uygulamasında olduğunu belirtmek için bir bildirim simgesi (AOSP yayın öncesi çalışma rozetine benzer) GÖSTERMELİDİR.
  • [C-1-5] Cihaz açıldığında (ACTION_USER_PRESENT) ve ön plan uygulaması yönetilen profildeyse kullanıcının yönetilen profilde olduğunu belirten bir pop-up GÖSTERMELİDİR.
  • [C-1-6] Yönetilen profilin bulunduğu durumlarda, kullanıcının cihaz politikası denetleyicisi tarafından etkinleştirildiyse intent'i yönetilen profilden birincil kullanıcıya veya tam tersi şekilde yönlendirmesine izin vermek için intent "seçicisinde" görsel bir kolaylık gösterilmelidir.
  • [C-1-7] Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı özelliklerini GÖSTERMELİDİR:
    • Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması
    • Birincil kullanıcı veya yönetilen profilde yüklü VPN uygulamalarının bağımsız yönetimi.
    • Birincil kullanıcı veya yönetilen profilde yüklenen uygulamaların bağımsız yönetimi.
    • Birincil kullanıcı veya yönetilen profildeki hesapların bağımsız yönetimi.
  • [C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş telefon uygulaması, kişiler ve mesajlaşma uygulamalarının, arayan bilgilerini birincil profilin yanı sıra yönetilen profilden (varsa) de aramasına ve aramasına İMKAN VERİR.
  • [C-1-9] Yönetilen profil birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa bile, birden fazla kullanıcının etkin olduğu bir cihaz için geçerli tüm güvenlik şartlarını karşılamalıdır (9.5 numaralı bölüme bakın).

Yeni şartlar başlatma

  • [C-1-10] Odak (kullanıcı tüm etkinlikler arasında en son etkileşimde bulunduğu) ve iş profili uygulamasına ait bir topActivity penceresiyle ekran görüntüsü alındığında ekran görüntüsü verilerinin iş profili depolama alanına kaydedilmesini SAĞLAMALIDIR.
  • [C-1-11] İş profiline ekran görüntüsü kaydederken iş profili uygulaması penceresi/pencereleri dışında başka ekran içeriği (sistem çubuğu, bildirimler veya kişisel profil içeriği) KAYDETMEMELİDİR (kişisel profil verilerinin iş profiline kaydedilmediğinden emin olmak için).

Yeni şartların sona ermesi

Cihaz uygulamaları android.software.managed_users ve android.software.secure_lock_screen bildirirse:

  • [C-2-1] Yalnızca yönetilen profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı belirtme özelliğini DESTEKLEMELİDİR.
    • Cihaz uygulamalarında DevicePolicyManager.ACTION_SET_NEW_PASSWORD amacına uyulMALI ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmaya yönelik bir arayüz gösterilmelidir.
    • Yönetilen profilin kilit ekranı kimlik bilgileri, Android Açık Kaynak Projesi Sitesi'nde belirtildiği gibi, üst profille aynı kimlik bilgisi depolama ve yönetim mekanizmalarını KULLANMAK ZORUNDADIR.
    • getParentProfileInstance tarafından döndürülen DevicePolicyManager örneği çağrılmadığı sürece DPC şifre politikaları yalnızca yönetilen profilin kilit ekranı kimlik bilgileri için geçerli OLMALIDIR.
  • Yönetilen profildeki kişiler, önceden yüklenmiş arama günlüğünde, arama 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 işaretlenmelidir.

3.9.3 Yönetilen Kullanıcı Desteği

Cihaz uygulamaları android.software.managed_users bildirirse:

  • [C-1-1] isLogoutEnabled true döndürüldüğünde mevcut kullanıcının oturumunu kapatıp çok kullanıcılı oturumda birincil kullanıcıya geri dönmek için kullanıcıya bir kolaylık sunulmalıdır. Kullanıcıya sunulan olanağa, cihazın kilidi açılmadan kilit ekranından erişilebilmelidir.

Cihaz uygulamaları android.software.device_admin özelliğini tanımlar ve ek ikincil kullanıcılar eklemek için cihaz üzerinde kullanıcılara bir kolaylık sağlarsa:

  • [C-SR-1] Kullanıcıların cihazın yönetildiğini anlayabilmesi için yeni ikincil kullanıcıya hesap eklenmesine izin vermeden önce android.app.action.PROVISION_MANAGED_DEVICE tarafından başlatılan akışta gösterilen AOSP cihaz sahibi izin açıklamalarının aynısını göstermeniz önemle tavsiye edilir.

3.9.4 Cihaz Politikası Yönetimi Rol Gereksinimleri

Cihaz uygulamaları android.software.device_admin veya android.software.managed_users değerini raporluyorsa:

  • [C-1-1] 9.1 numaralı bölümde tanımlandığı şekilde cihaz politikası yönetimi rolünü DESTEKLEMELİDİR. Cihaz politikası yönetimi rolüne sahip uygulama, config_devicePolicyManagement paket adına ayarlanarak tanımlanabilir. Uygulama önceden yüklenmediyse paket adının ardından : ve imzalama sertifikası GELİR.

Yukarıda açıklandığı gibi config_devicePolicyManagement için bir paket adı tanımlanmamışsa:

Yukarıda açıklandığı gibi config_devicePolicyManagement için bir paket adı tanımlanmışsa:

  • [C-3-1] Uygulama, kullanıcı için tüm profillere yüklenmelidir.
  • [C-3-2] Cihaz uygulamaları, config_devicePolicyManagementUpdater ayarını yaparak cihaz politikası yönetimi rolü sahibini temel hazırlıktan önce güncelleyen bir uygulama tanımlaYABİLİR.

Yukarıda açıklandığı gibi config_devicePolicyManagementUpdater için bir paket adı tanımlanmışsa:

  • [C-4-1] Uygulama, cihaza ÖNCEDEN YÜKLÜ OLMALIDIR.
  • [C-4-2] Uygulama, android.app.action.UPDATE_DEVICE_POLICY_MANAGEMENT_ROLE_HOLDER değerini çözen bir intent filtresi UYGULAMALIDIR.

Yeni şartlar başlatma

3.9.5 Cihaz Politikası Çözüm Çerçevesi

Cihaz uygulamaları android.software.device_admin veya android.software.managed_users değerini raporluyorsa:

Yeni şartların sona ermesi

3.10. Erişilebilirlik

Android, engelli kullanıcıların cihazlarında daha kolay gezinmesine yardımcı olan bir erişilebilirlik katmanı sağlar. Ayrıca Android, erişilebilirlik hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma alması ve metni konuşmaya dönüştürme, dokunma geri bildirimi ve izleme topu/d-pad gezinme gibi alternatif geri bildirim mekanizmaları oluşturmasını sağlayan platform API'leri sağlar.

Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:

  • [C-1-1] Erişilebilirlik API'leri SDK dokümanlarında açıklandığı gibi Android erişilebilirlik çerçevesinin bir uygulamasını SAĞLAMALIDIR.
  • [C-1-2] Erişilebilirlik etkinlikleri oluşturmalı ve SDK'da belirtildiği gibi kayıtlı tüm AccessibilityService uygulamalarında uygun AccessibilityEvent'yi sağlamalıdır.
  • [C-1-4] AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON değerini açıklayan erişilebilirlik hizmetlerini kontrol etmek için kullanıcılara bir kolaylık sunmalıdır. Sistem gezinme çubuğuna sahip cihaz uygulamalarında, kullanıcının bu hizmetleri kontrol etmek için sistemin gezinme çubuğunda bir düğme seçeneğine sahip olması GEREKİR.

Cihaz uygulamalarında önceden yüklenmiş erişilebilirlik hizmetleri varsa bu hizmetler:

  • [C-2-1] Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde, önceden yüklenmiş bu erişilebilirlik hizmetlerini Doğrudan Açılışta Farkında uygulamalar olarak UYGULAMALIDIR.
  • Kullanıcıların ilgili erişilebilirlik hizmetlerini etkinleştirmesi için kutudan çıkar çıkmaz kurulum akışında bir mekanizma ve yazı tipi boyutunu, ekran boyutunu ve büyütme hareketlerini ayarlama seçenekleri SUNULMALIDIR.

3.11. Metin Okuma

Android, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına ve servis sağlayıcıların TTS hizmetlerinin uygulamalarını sunmasına olanak tanıyan API'ler içerir.

android.hardware.audio.output özelliğini bildiren cihaz uygulamaları:

Cihaz uygulamaları üçüncü taraf TTS motorlarının kurulumunu destekliyorsa:

  • [C-2-1] Kullanıcının sistem düzeyinde kullanmak üzere bir TTS motoru seçmesine olanak tanımak için kullanıcıya kolaylık sağlamalıdır.

3.12. TV Girişi Çerçevesi

Android TV Giriş Çerçevesi (TIF), canlı içeriğin Android TV cihazlarına yayınını kolaylaştırır. TIF, Android TV cihazlarını kontrol eden giriş modülleri oluşturmak için standart bir API sağlar.

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [C-1-1] android.software.live_tv platform özelliğini İLKLE bildirmelidir.
  • [C-1-2] Tüm TIF API'lerini desteklemelidir. Böylece, bu API'leri ve üçüncü taraf TIF tabanlı girişler hizmetini kullanan bir uygulama cihaza yüklenip kullanılabilir.

3.13. Hızlı Ayarlar

Android, sık kullanılan veya acil olarak ihtiyaç duyulan işlemlere hızlı erişim sağlayan bir Hızlı Ayarlar kullanıcı arayüzü bileşeni sağlar.

Cihaz uygulamaları bir Hızlı Ayarlar kullanıcı arayüzü bileşeni içeriyorsa ve üçüncü taraf Hızlı Ayarları'nı destekliyorsa:

  • [C-1-1] Kullanıcının, quicksettings API'leri aracılığıyla sağlanan karoları üçüncü taraf uygulamasından eklemesine veya kaldırmasına İZİN VERMELİDİR.
  • [C-1-2] Üçüncü taraf uygulamasından doğrudan Hızlı Ayarlar'a otomatik olarak kutu eklememelidir.
  • [C-1-3] Sistem tarafından sağlanan hızlı ayar karolarının yanı sıra üçüncü taraf uygulamalarından kullanıcı tarafından eklenen tüm karoları GÖSTERMELİDİR.

3.14. Medya kullanıcı arayüzü

Cihaz uygulamalarında, MediaBrowser veya MediaSession aracılığıyla üçüncü taraf uygulamalarıyla etkileşimde bulunan sesle etkinleştirilmeyen uygulamalar (Uygulamalar) varsa bu uygulamalar:

  • [C-1-2] getIconBitmap() veya getIconUri() üzerinden alınan simgeleri ve getTitle() üzerinden alınan başlıkları MediaDescription bölümünde açıklandığı şekilde açıkça GÖSTERMELİDİR. Başlıklar, güvenlik yönetmeliklerine (ör. sürücünün dikkatinin dağılması) uymak için kısaltılabilir.

  • [C-1-3] Bu üçüncü taraf uygulaması tarafından sağlanan içerik gösterilirken üçüncü taraf uygulama simgesi GÖSTERİLMELİDİR.

  • [C-1-4] Kullanıcının MediaBrowser hiyerarşisinin tamamıyla etkileşime geçmesine İZİN VERMELİDİR. Güvenlik yönetmeliklerine (ör. sürücünün dikkatinin dağılması) uymak için hiyerarşinin bir bölümüne erişimi KISKITLAYABİLİR ancak içeriğe veya içerik sağlayıcıya göre tercihli muamele YAPMAMALIDIR.

  • [C-1-5] KEYCODE_HEADSETHOOK veya KEYCODE_MEDIA_PLAY_PAUSE simgesine iki kez dokunmayı MediaSession.Callback#onMediaButtonEvent için KEYCODE_MEDIA_NEXT olarak kabul ETMELİDİR.

3.15. Hazır Uygulamalar

Cihaz uygulamaları Anında Uygulamalar'ı destekliyorsa aşağıdaki koşulları karşılamalıdır:

  • [C-1-1] Hazır uygulamalara yalnızca android:protectionLevel değeri "instant" olarak ayarlanmış izinler VERİLMELİDİR.
  • [C-1-2] Aşağıdakilerden biri geçerli olmadığı sürece hazır uygulamalar, örtülü intent'ler aracılığıyla yüklü uygulamalarla etkileşime GİRMEMELİDİR:
    • Bileşenin intent kalıbı filtresi gösterilir ve CATEGORY_BROWSABLE özelliğine sahiptir
    • İşlem, ACTION_SEND, ACTION_SENDTO, ACTION_SEND_MULTIPLE seçeneklerinden biri olmalıdır.
    • Hedef, android:visibleToInstantApps ile açıkça gösteriliyor
  • [C-1-3] Bileşen, android:visibleToInstantApps aracılığıyla gösterilmediği sürece Hazır Uygulamalar, yüklü uygulamalarla açıkça etkileşime GİRMEMELİDİR.
  • [C-1-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ÖREMEZ.
  • Cihaz uygulamalarında, Hazır Uygulamalarla etkileşim kurmak için aşağıdaki kullanıcı kolaylıkları ZORUNLU KILINMIŞTIR. AOSP, varsayılan sistem kullanıcı arayüzü, ayarlar ve başlatıcı ile şartları karşılar. Cihaz uygulamaları:

    • [C-1-5] Her uygulama paketi için yerel olarak önbelleğe alınan Hızlı Uygulamaları görüntüleme ve silme olanağı sunmalıdır.
    • [C-1-6] 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ükleme gerektirmediğini İÇERMELİDİR ve kullanıcıyı Ayarlar'daki uygulama bilgileri ekranına yönlendiren bir kullanıcı özelliği sağlamalıdır. İşlemi Intent.ACTION_VIEW olarak ayarlanmış ve şeması "http" veya "https" olan bir intent kullanılarak tanımlandığı üzere web intent'leri aracılığıyla başlatılan Instant Apps için ek bir kullanıcı olanağı, kullanıcının Instant App'i başlatmamasına ve cihazda tarayıcı varsa ilişkili bağlantıyı yapılandırılan web tarayıcısıyla başlatmasına İZİN VERMELİDİR.
    • [C-1-7] Cihazda Son Kullanılanlar işlevi varsa çalışan Instant Apps'a Son Kullanılanlar işlevinden erişilmesine İZİN VERMELİDİR.
  • [C-1-8] Burada SDK'da listelenen amaçlar için bir intent işleyiciyle bir veya daha fazla uygulamayı ya da hizmet bileşenini önceden yüklemeli ve bu amaçları Anında Uygulamalar için görünür hale getirmelidir.

3.16. Tamamlayıcı Cihaz Eşleme

Android, tamamlayıcı cihazlarla ilişkilendirmeyi daha etkili bir şekilde yönetmek için tamamlayıcı cihaz eşleme desteği içerir ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager API'yi sağlar.

Cihaz uygulamaları, tamamlayıcı cihaz eşleme özelliğini destekliyorsa:

  • [C-1-1] Özellik bayrağını FEATURE_COMPANION_DEVICE_SETUP bildirmelidir.
  • [C-1-2] android.companion paketindeki API'lerin tam olarak uygulandığından EMİN OLMALIDIR.
  • [C-1-3] Kullanıcının, bir tamamlayıcı cihazı seçmesi/onaylaması için kullanıcıya kolaylıklar SUNULMALIDIR.

3:17. Ağır Uygulamalar

Cihaz uygulamaları FEATURE_CANT_SAVE_STATE özelliğini bildirirse:

  • [C-1-1] Sistemde aynı anda yalnızca bir cantSaveState çalıştırıldığını belirten tek bir uygulama yüklü OLMALIDIR. Kullanıcı bu tür bir uygulamadan açıkça çıkmadan ayrılırsa (örneğin, sistemde etkin bir etkinlik kalmadığında geri tuşuna basmak yerine sistemde etkin bir etkinlikten ayrılırken ana sayfa tuşuna basarak) cihaz uygulamalarında, ön plan hizmetleri gibi çalışmaya devam etmesi beklenen diğer öğeler için olduğu gibi RAM'de bu uygulamaya öncelik VERİLMELİDİR. Bu tür bir uygulama arka planda olsa bile sistem, CPU ve ağ erişimini sınırlama gibi güç yönetimi özelliklerini uygulamaya devam edebilir.
  • [C-1-2] Kullanıcı cantSaveState özelliğiyle tanımlanan ikinci bir uygulamayı başlattığında normal durum kaydetme/geri yükleme mekanizmasına dahil edilmeyecek uygulamayı seçmek için bir kullanıcı arayüzü imkanı SAĞLANMALIDIR.
  • [C-1-3] Politikadaki diğer değişiklikler, cantSaveState belirten uygulamalara uygulanMAMALIDIR (ör. CPU performansını değiştirme veya planlama önceliğini değiştirme).

Cihaz uygulamaları özelliği belirtmezseFEATURE_CANT_SAVE_STATE:

  • [C-1-1] Uygulamalar tarafından ayarlanan cantSaveState özelliğini İHMAL ETMELİDİR ve uygulama davranışını bu özelliğe göre DEĞİŞTİRMEMELİDİR.

3.18. Kişiler

Android, uygulamaların cihazda depolanan kişi bilgilerini yönetmesine olanak tanıyan Contacts Provider API'leri içerir. Doğrudan cihaza girilen iletişim verileri genellikle bir web hizmetiyle senkronize edilir ancak veriler yalnızca cihazda yerel olarak depolanıyor OLABİLİR. Yalnızca cihazda depolanan kişilere yerel kişiler denir.

RawContacts, "ilişkilendirilmiş" veya "saklanmış" bir hesap olduğunda, ham kişilerin ACCOUNT_NAME ve ACCOUNT_TYPE sütunları, hesabın ilgili Account.name ve Account.type alanlarıyla eşleşir.

Varsayılan yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir hesapla ilişkilendirilmeyen ham kişiler için bir hesaptır. Bu hesap, ACCOUNT_NAME ve ACCOUNT_TYPE sütunları için null değerleriyle oluşturulur.

Özel yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir hesapla ilişkili olmayan ham kişiler için bir hesaptır. Bu hesap, ACCOUNT_NAME ve ACCOUNT_TYPE sütunları için en az bir null olmayan değer ile oluşturulur.

Cihaz uygulamaları:

  • [C-SR-1] Özel yerel hesaplar oluşturmamak önemle ÖNERİLİR.

Cihaz uygulamalarında özel yerel hesap kullanılıyorsa:

  • [C-1-1] Özel yerel hesabın ACCOUNT_NAME, ContactsContract.RawContacts.getLocalAccountName tarafından İADE EDİLMELİDİR
  • [C-1-2] Özel yerel hesabın ACCOUNT_TYPE, ContactsContract.RawContacts.getLocalAccountType tarafından İADE EDİLMELİDİR
  • [C-1-3] Üçüncü taraf uygulamaları tarafından varsayılan yerel hesapla (ör. ACCOUNT_NAME ve ACCOUNT_TYPE için null değerler ayarlayarak) eklenen ham kişiler özel yerel hesaba eklenmelidir.
  • [C-1-4] Özel yerel hesaba eklenen ham kişiler, hesap eklendiğinde veya kaldırıldığında KALDIRILMAMALIDIR.
  • [C-1-5] Özel yerel hesaba yönelik olarak yapılan silme işlemleri, CALLER\_IS\_SYNCADAPTER parametresi yanlış olarak ayarlanmış veya belirtilmemiş olsa bile ham kişilerin hemen temizlenmesine (CALLER_IS_SYNCADAPTER parametresi doğru olarak ayarlanmış gibi) SEBEP OLMALIDIR.

4. Uygulama Paketleme Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] Resmi Android SDK'sına dahil olan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarını yükleyip çalıştırabilmelidir.

    • Yukarıdaki şart zor olabileceğinden, cihaz uygulamalarında AOSP referans uygulamasının paket yönetimi sisteminin kullanılması ÖNERİLİR.
  • [C-0-2] APK İmza Şeması v3.1, APK İmza Şeması v3, APK İmza Şeması v2 ve JAR imzalama kullanılarak ".apk" dosyalarının doğrulanmasını desteklemelidir.

  • [C-0-3] .apk, Android Manifest, Dalvik bayt kodu veya RenderScript bayt kodu biçimlerini, bu dosyaların diğer uyumlu cihazlarda düzgün şekilde yüklenmesini ve çalışmasını engelleyecek şekilde UZATMASI GEREKMEZ.

  • [C-0-4] Paketin mevcut "kayıtlı yükleyicisi" dışındaki uygulamaların, DELETE_PACKAGE izniyle ilgili SDK'da belirtildiği gibi, kullanıcı onayı olmadan uygulamayı sessizce kaldırmasına İZİN VERMEMELİDİR. Bunun tek istisnası, sistem paket doğrulayıcı uygulamasının PACKAGE_NEEDS_VERIFICATION intent'ini ve depolama alanı yöneticisi uygulamasının ACTION_MANAGE_STORAGE intent'ini işlemesidir.

  • [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 tüm şartları karşılamadığı sürece uygulama paketlerini bilinmeyen kaynaklardan yüklememelidir:

    • REQUEST_INSTALL_PACKAGES iznini beyan etmeli veya android:targetSdkVersion değerini 24 veya daha düşük bir değere ayarlamalıdır.
    • Kullanıcı tarafından bilinmeyen kaynaklardan uygulama yükleme izni verilmiş OLMALIDIR.
  • Uygulama başına bilinmeyen kaynaklardan uygulama yükleme iznini verme/iptal etme seçeneği sunmalıdır ancak cihaz uygulaması kullanıcıların bu seçeneği kullanmasına izin vermek istemiyorsa bunu işlem yapmadan uygulayıp startActivityForResult() için RESULT_CANCELED döndürmeyi seçebilir. Ancak bu gibi durumlarda bile kullanıcıya neden böyle bir seçenek sunulmadığını belirtmelidir.

  • [C-0-7] Aynı sistem API'si PackageManager.setHarmfulAppWarning tarafından zararlı olabilecek olarak işaretlenmiş bir uygulamada etkinlik başlatmadan önce kullanıcıya sistem API'si PackageManager.setHarmfulAppWarning aracılığıyla sağlanan uyarı dizesini içeren bir uyarı iletişim kutusu GÖSTERMELİDİR.

  • Uyarı iletişim kutusunda kullanıcılara uygulamayı kaldırmayı veya başlatmayı seçme olanağı SUNULMALIDIR.

  • [C-0-8] Artımlı Dosya Sistemi desteğini burada belirtildiği şekilde UYGULAMALIDIR.

  • [C-0-9] APK İmza Şeması v4 ve APK İmza Şeması v4 .1 kullanılarak.apk dosyalarının doğrulanmasını DESTEKLEMELİDİ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ı, kod çözücüleri, dosya türlerini ve kapsayıcı biçimlerini DESTEKLEMELİDİR.
  • [C-0-2] MediaCodecList aracılığıyla üçüncü taraf uygulamalarına sunulan kodlayıcılar ve kod çözücüler için destek beyan etmeli ve bildirmelidir.
  • [C-0-3] Kodlayabileceği tüm biçimlerin kodunu doğru şekilde çözebilmeli ve üçüncü taraf uygulamalarına sunabilmelidir. Buna, kodlayıcılarının oluşturduğu tüm bit akışları ve CamcorderProfile'sinde raporlanan profiller dahildir.

Cihaz uygulamaları:

  • Minimum codec gecikmesi hedeflenmelidir. Diğer bir deyişle,
    • Giriş arabelleklerini tüketmemeli ve saklamamalı ve giriş arabelleklerini yalnızca işlendikten sonra döndürmemelidir.
    • Kodu çözülmüş arabellekleri standartta (ör. SPS) belirtilenden daha uzun süre tutmamalıdır.
    • GOP yapısı tarafından gerekenden daha uzun süre kodlanmış arabellekleri TUTMAYACAK.

Aşağıdaki bölümde listelenen tüm codec'ler, Android Open Source Project'ten tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.

Google veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerinden arındırılmış olduğu yönünde herhangi bir beyanda bulunmadığını lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya paylaşımlı yazılım da dahil olmak üzere bu kodun uygulamalarının ilgili patent sahiplerinden patent lisansları gerektirebileceğini göz önünde bulundurması önerilir.

5.1. Medya codec'leri

5.1.1. Ses Kodlaması

Daha fazla bilgi için 5.1.3'e göz atın. Ses codec'leri ayrıntıları'nı tıklayın.

Cihaz uygulamaları android.hardware.microphone bildiriyorsa aşağıdaki ses biçimlerinin kodlanmasını desteklemeli ve bunları üçüncü taraf uygulamalarına sunmalıdır:

  • [C-1-1] PCM/WAVE
  • [C-1-2] FLAC
  • [C-1-3] Opus

Tüm ses kodlayıcılar ŞUNU desteklemelidir:

5.1.2. Ses Kod Çözme

Daha fazla bilgi için 5.1.3'e göz atın. Ses codec'leri ayrıntıları'nı tıklayın.

Cihaz uygulamaları android.hardware.audio.output özelliğini destekliyorsa aşağıdaki ses biçimlerinin kodunu çözmeyi desteklemelidir:

  • [C-1-1] MPEG-4 AAC Profili (AAC LC)
  • [C-1-2] MPEG-4 HE AAC Profili (AAC+)
  • [C-1-3] MPEG-4 HE AACv2 Profili (geliştirilmiş AAC+)
  • [C-1-4] AAC ELD (düşük gecikmeli gelişmiş AAC)
  • [C-1-11] xHE-AAC (USAC Baseline Profile ve ISO/IEC 23003-4 Dynamic Range Control Profile'i içeren ISO/IEC 23003-3 Extended HE AAC Profile)
  • [C-1-5] FLAC
  • [C-1-6] MP3
  • [C-1-7] MIDI
  • [C-1-8] Vorbis
  • [C-1-9] 24 bit, 192 KHz örnekleme hızı ve 8 kanala kadar yüksek çözünürlüklü ses biçimleri dahil PCM/WAVE. Bu şartın yalnızca kod çözme için geçerli olduğunu ve cihazın oynatma aşamasında örnekleme oranını düşürmesine ve sesleri azaltmasına izin verildiğini unutmayın.
  • [C-1-10] Opus

Cihaz uygulamaları, android.media.MediaCodec API'sindeki varsayılan AAC ses kod çözücü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 desteklenmelidir:

  • [C-2-1] Kod çözme işlemi, aşağı karıştırma olmadan YAPILMALIDIR (ör. 5.0 AAC akışı beş kanallı PCM olarak, 5.1 AAC akışı altı kanallı PCM olarak kod çözülmelidir).
  • [C-2-2] Dinamik aralık meta verileri, ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde tanımlandığı şekilde OLMALIDIR ve ses kod çözücünün dinamik aralıkla ilgili davranışlarını yapılandırmak için android.media.MediaFormat DRC anahtarları kullanılmalıdır. AAC DRC anahtarları API 21'de kullanıma sunulmuştur. Bu anahtarlar ş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.
  • [C-SR-1] Yukarıdaki C-2-1 ve C-2-2 koşullarının tüm AAC ses kod çözücüleri tarafından karşılanması önemle tavsiye edilir.

USAC ses kodunun çözülmesi sırasında MPEG-D (ISO/IEC 23003-4):

  • [C-3-1] Ses seviyesi ve DRC meta verileri MPEG-D DRC Dinamik Aralık Kontrolü Profili 1. Seviye'ye göre yorumlanmalı ve uygulanmalıdır.
  • [C-3-2] Kod çözücü, aşağıdaki android.media.MediaFormat anahtarlarıyla belirlenen yapılandırmaya göre DAVRANIYOR OLMALIDIR: 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:

  • ISO/IEC 23003-4 Dinamik Aralık Kontrol Profili'ni kullanarak ses düzeyini ve dinamik aralığı kontrol EDEBİLİYOR.

ISO/IEC 23003-4 destekleniyorsa ve hem ISO/IEC 23003-4 hem de ISO/IEC 14496-3 meta verileri kod çözülmüş bit akışında mevcutsa:

  • ISO/IEC 23003-4 meta verileri öncelikli OLUR.

Tüm ses kod çözücüler şu çıkışları desteklemelidir:

Cihaz uygulamaları, android.media.MediaCodec API'sindeki varsayılan AAC ses kod çözücü aracılığıyla çok kanallı akışların (ör. ikiden fazla kanal) AAC giriş arabelleklerinin PCM'ye kodunun çözülmesini destekliyorsa aşağıdakiler desteklenmelidir:

  • [C-7-1] İçeriğin stereo olarak mı (2 değerinde kullanıldığında) yoksa doğal kanal sayısı kullanılarak mı (bu sayıya eşit veya bu sayıdan büyük bir değer kullanıldığında) karıştırılacağını kontrol etmek için uygulama tarafından KEY_MAX_OUTPUT_CHANNEL_COUNT anahtarıyla kod çözme kullanılarak yapılandırılabilir OLMALIDIR. Örneğin, 6 veya daha yüksek bir değer, bir kod çözücüyü 5.1 içeriği beslendiğinde 6 kanal çıkışı verecek şekilde yapılandırır.
  • [C-7-2] Kod çözücü, kod çözme işlemi sırasında android.media.AudioFormat sabitlerini (ör. CHANNEL_OUT_5POINT1) kullanarak çıkış biçiminde kullanılan kanal maskesinin reklamını KEY_CHANNEL_MASK anahtarıyla YAPMALIDIR.

Cihaz uygulamaları, varsayılan AAC ses kodlayıcısı dışındaki ses kodlayıcıları destekliyorsa ve sıkıştırılmış çok kanallı içerik beslendiğinde çok kanallı ses (ör. 2'den fazla kanal) çıkışı verebiliyorsa:

  • [C-SR-2] İçeriğin stereoya mı (2 değeri kullanıldığında) yoksa doğal kanal sayısı kullanılarak mı (bu sayıya eşit veya bu sayıdan büyük bir değer kullanıldığında) karıştırılacağını kontrol etmek için uygulamanın KEY_MAX_OUTPUT_CHANNEL_COUNT anahtarıyla kod çözme işlemini kullanarak kod çözücüyü yapılandırabilmesi önemle ÖNERİLİR. Örneğin, 6 veya daha yüksek bir değer, bir kod çözücüyü 5.1 içeriği beslendiğinde 6 kanal çıkışı verecek şekilde yapılandırır.
  • [C-SR-3] Kod çözme işlemi sırasında, kod çözücünün android.media.AudioFormat sabitlerini (örnek: CHANNEL_OUT_5POINT1) kullanarak çıkış biçiminde kullanılan kanal maskesinin KEY_CHANNEL_MASK anahtarıyla reklamını yapması önemle ÖNERİLİR.

5.1.3. Ses codec'leri hakkında ayrıntılı bilgi

Biçim/Codec Ayrıntılar Desteklenecek dosya türleri/kapsayıcı biçimleri
MPEG-4 AAC Profili
(AAC LC)
8 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
  • ADTS ham AAC (.aac, ADIF desteklenmez)
  • MPEG-TS (.ts, aranabilir değil, yalnızca kod çözme)
  • Matroska (.mkv, yalnızca kod çözme)
MPEG-4 HE AAC Profili (AAC+) 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
MPEG-4 HE AACv2
Profili (geliştirilmiş AAC+)
16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
AAC ELD (gelişmiş düşük gecikmeli AAC) 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerikler desteklenir.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
USAC 7,35 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği MPEG-4 (.mp4, .m4a)
AMR-NB 8 kHz'te örneklenmiş 4,75 ila 12,2 Kb/sn 3GPP (.3gp)
AMR-WB AMR-WB, Uyarlanabilir Çoklu Hız - Geniş Bant Konuşma Codec'i bölümünde tanımlandığı gibi 16 kHz'te örneklenen 6,60 kbit/sn 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'e 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 nokta ses yapılandırmasıyla KESİNLİKLE kullanılabilmelidir.
  • 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ümü. XMF ve Mobil XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek
  • 0 ve 1 yazın (.mid, .xmf, .mxmf)
  • RTTTL/RTX (.rtttl, .rtx)
  • iMelody (.imy)
Vorbis Kod çözme: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızına sahip mono, stereo, 5.0 ve 5.1 içerik desteği.
Kodlama: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızına sahip mono ve stereo içerik desteği.
  • 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 noktayı DESTEKLEMELİDİR. WAVE ayıklama aracı 16 bit, 24 bit, 32 bit doğrusal PCM ve 32 bit kayan nokta (donanım sınırına kadar hızlarda) desteklemelidir. Örnek hızları 8 kHz ile 192 kHz arasında OLMALIDIR. WAVE (.wav)
Opus Kod çözme: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızına sahip mono, stereo, 5.0 ve 5.1 içerikler desteklenir.
Kodlama: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızına sahip mono ve stereo içerikler desteklenir.
  • Ogg (.ogg)
  • MPEG-4 (.mp4, .m4a, yalnızca kod çözme)
  • Matroska (.mkv)
  • Webm (.webm)

5.1.4. Resim Kodlaması

Daha fazla bilgi için 5.1.6. Resim codec'leri ayrıntıları.

Cihaz uygulamaları aşağıdaki resim kodlamasını desteklemelidir:

  • [C-0-1] JPEG
  • [C-0-2] PNG
  • [C-0-3] WebP

Yeni şartlar başlatma

  • [C-0-4] AVIF
    • Cihazlar BITRATE_MODE_CQ ve Referans Profili'ni desteklemelidir.

Yeni şartların sona ermesi

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 profili ve 512 x 512 piksel kare boyutunu destekleyen donanım hızlandırmalı bir HEVC kodlayıcı codec'i SAĞLAMALIDIR.

5.1.5. Resim Kodu Çözme

Daha fazla bilgi için 5.1.6. Resim codec'leri ayrıntıları.

Cihaz uygulamaları aşağıdaki resim kodlamasının kodunu çözmeyi DESTEKLEMELİDİR:

  • [C-0-1] JPEG
  • [C-0-2] GIF
  • [C-0-3] PNG
  • [C-0-4] BMP
  • [C-0-5] WebP
  • [C-0-6] Ham
  • [C-0-7] AVIF (Baseline Profile)

Cihaz uygulamaları HEVC video kod çözme özelliğini destekliyorsa: * [C-1-1] HEIF (HEIC) resim kod çözme özelliğini DESTEKLEMELİDİR.

Yüksek bit derinliği biçimini (kanal başına 9 bit veya daha fazla) destekleyen resim kod çözücüler:

  • [C-2-1] Uygulama tarafından istenirse (ör. android.graphics.Bitmap'ın ARGB_8888 yapılandırması aracılığıyla) 8 bit eşdeğer biçimi desteklemelidir.

5.1.6. Resim codec'leri ayrıntıları

Biçim/Codec Ayrıntılar Desteklenen dosya türleri/kapsayıcı biçimleri
JPEG Taban+aşamalı JPEG (.jpg)
GIF GIF (.gif)
PNG PNG (.png)
BMP BMP (.bmp)
WebP WebP (.webp)
İşlenmemiş ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw)
HEIF Resim, Resim koleksiyonu, Resim dizisi HEIF (.heif), HEIC (.heic)
AVIF (Referans Profili) Resim, resim koleksiyonu, resim dizisi temel profili HEIF kapsayıcısı (.avif)

MediaCodec API aracılığıyla sunulan resim kodlayıcı ve kod çözücüler

  • [C-1-1] CodecCapabilities üzerinden YUV420 8:8:8 esnek renk biçimini (COLOR_FormatYUV420Flexible) desteklemelidir.

  • [C-SR-1] Giriş yüzey modu için RGB888 renk biçiminin desteklenmesi önemle ÖNERİLİR.

  • [C-1-3] Planar veya yarı planar YUV420 8:8:8 renk biçimlerinden en az birini desteklemelidir: COLOR_FormatYUV420PackedPlanar (COLOR_FormatYUV420Planar ile eşdeğer) veya COLOR_FormatYUV420PackedSemiPlanar (COLOR_FormatYUV420SemiPlanar ile eşdeğer). Her ikisinin de desteklenmesi önemle tavsiye edilir.

5.1.7. Video codec'leri

  • Web video akışının ve video konferans hizmetlerinin kabul edilebilir kalitede olması için cihaz uygulamalarında şartları karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.

Cihaz uygulamalarında video kod çözücü veya kodlayıcı varsa:

  • [C-1-1] Video codec'leri, standart ve yapılandırma tarafından belirlenen en büyük sıkıştırılmış ve sıkıştırılmamış kareyi barındıran çıkış ve giriş bayt arabelleği boyutlarını desteklemeli ancak aşırı tahsis etmemelidir.

  • [C-1-2] Video kodlayıcılar ve kod çözücüler, CodecCapabilities ile YUV420 8:8:8 esnek renk biçimlerini (COLOR_FormatYUV420Flexible) desteklemelidir.

  • [C-1-3] Video kodlayıcılar ve kod çözücüler, düz veya yarı düz YUV420 8:8:8 renk biçimlerinden en az birini desteklemelidir: COLOR_FormatYUV420PackedPlanar (COLOR_FormatYUV420Planar ile eşdeğer) veya COLOR_FormatYUV420PackedSemiPlanar (COLOR_FormatYUV420SemiPlanar ile eşdeğer). Her ikisini de desteklemeleri önemle tavsiye edilir.

  • [C-SR-1] Video kodlayıcıların ve kod çözücülerin, donanım için optimize edilmiş düz veya yarı düz YUV420 8:8:8 renk biçimlerinden en az birini (YV12, NV12, NV21 veya eşdeğer tedarikçi firma tarafından optimize edilmiş biçim) desteklemesi önemle ÖNERİLİR.

  • [C-1-5] Yüksek bit derinliği biçimini (kanal başına 9'dan fazla bit) destekleyen video kod çözücüler, uygulama tarafından istenirse 8 bit eşdeğer biçimi çıkışını desteklemelidir. Bu, android.media.MediaCodecInfo aracılığıyla YUV420 8:8:8 renk biçiminin desteklenmesi ile yansıtılmalıdır.

Cihaz uygulamaları Display.HdrCapabilities aracılığıyla HDR profili desteğinin reklamını yapıyorsa:

  • [C-2-1] HDR statik meta verilerini ayrıştırmayı ve işlemeyi DESTEKLEMELİDİR.

Cihaz uygulamaları, MediaCodecInfo.CodecCapabilities sınıfında FEATURE_IntraRefresh aracılığıyla yenileme içi desteğin reklamını yapıyorsa:

  • [C-3-1] 10 ila 60 kare aralığındaki yenileme sürelerini desteklemeli ve yapılandırılmış yenileme süresinin% 20'si içinde doğru şekilde çalışmalıdır.

Uygulama, KEY_COLOR_FORMAT biçim anahtarını kullanarak aksini belirtmediği sürece video kod çözücü uygulamaları:

  • [C-4-1] 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] Surface çıkışı kullanılmamak üzere yapılandırılmışsa varsayılan olarak CPU okuma için optimize edilmiş bir YUV420 8:8:8 renk biçimi OLMALIDIR.

5.1.8. Video codec'leri listesi

Biçim/Codec Ayrıntılar Desteklenecek dosya türleri/kapsayıcı biçimleri
H.263
  • 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, atlanabilir değildir)
  • Matroska (.mkv, yalnızca kod çözme)
H.265 HEVC Ayrıntılar için 5.3 numaralı bölüme bakın.
  • MPEG-4 (.mp4)
  • Matroska (.mkv, yalnızca kod çözme)
MPEG-2 Ana Profil
  • MPEG2-TS (.ts, atlanabilir değildir)
  • 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 numaralı bölüme bakın.
AV1 Ayrıntılar için 5.2 numaralı bölüme ve 5.3 numaralı bölüme bakın
  • MPEG-4 (.mp4)
  • Matroska (.mkv, yalnızca kod çözme)

5.1.9. Medya Kod Çözücü Güvenliği

Cihaz uygulamaları, aşağıda açıklandığı şekilde medya codec'i güvenlik özelliklerine uygunluğu SAĞLAMALIDIR.

Android, platformlar arası bir multimedya hızlandırma API'si olan OMX'in yanı sıra düşük yükü olan bir multimedya hızlandırma API'si olan Codec 2.0'ı destekler.

Cihaz uygulamaları multimedyayı destekliyorsa:

  • [C-1-1] Android Açık Kaynak Projesi'nde olduğu gibi OMX veya Codec 2.0 API'leri (veya her ikisi) aracılığıyla medya codec'leri için destek SAĞLAMALI ve güvenlik korumalarını devre dışı bırakmamalı veya atlatmamalıdır. Bu, her codec'in OMX veya Codec 2.0 API'sini KULLANMASI GEREĞİ anlamına gelmez. Yalnızca bu API'lerden en az biri için destek BULUNMASI GEREĞİ ve mevcut API'ler için destekte mevcut güvenlik korumalarının YER ALMASI GEREĞİ anlamına gelir.
  • [C-SR-1] Codec 2.0 API desteğinin eklenmesi önemle ÖNERİLİR.

Cihaz uygulamaları Codec 2.0 API'yi desteklemiyorsa:

  • [C-2-1] Cihaz tarafından desteklenen her medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Open Source Project'ten (varsa) ilgili OMX yazılım codec'ini İÇERMELİDİR.
  • [C-2-2] "OMX.google." ile başlayan adlara sahip codec'ler Android Açık Kaynak Projesi kaynak koduna dayalı OLMALIDIR.
  • [C-SR-2] OMX yazılım codec'lerinin, bellek eşleyiciler dışındaki donanım sürücülerine erişimi olmayan bir codec işleminde çalıştırılması önemle ÖNERİLİR.

Cihaz uygulamaları Codec 2.0 API'yi destekliyorsa:

  • [C-3-1] Cihaz tarafından desteklenen her medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Open Source Project'ten (varsa) ilgili Codec 2.0 yazılım codec'ini İÇERMELİDİR.
  • [C-3-2] Yazılım codec'lerine daha dar kapsamlı erişim izni verebilmek için Codec 2.0 yazılım codec'lerini, Android Açık Kaynak Projesi'nde sağlandığı şekilde yazılım codec'i işlemine yerleştirmelidir.
  • [C-3-3] "c2.android." ile başlayan adlara sahip codec'ler Android Açık Kaynak Projesi kaynak koduna dayalı OLMALIDIR.

5.1.10. Medya codec'i karakterizasyonu

Cihaz uygulamaları medya codec'lerini destekliyorsa:

  • [C-1-1] MediaCodecInfo API aracılığıyla medya codec'i karakterizasyonunun doğru değerlerini DÖNDÜRMELİDİR.

Özellikle:

  • [C-1-2] "OMX." ile başlayan adlara sahip codec'ler OMX API'lerini KULLANMALI ve adları OMX IL adlandırma kurallarına uygun olmalıdır.
  • [C-1-3] "c2." ile başlayan adlara sahip codec'ler Codec 2.0 API'sini KULLANMALI ve Android için Codec 2.0 adlandırma kurallarına uygun adlara sahip olmalıdır.
  • [C-1-4] "OMX.google." veya "c2.android." ile başlayan adlara sahip codec'ler Tedarikçi firma veya donanım hızlandırmalı olarak tanımlanmamalıdır.
  • [C-1-5] Bellek ayırıcılar ve eşleyiciler dışındaki donanım sürücülerine erişimi olan bir codec işleminde (tedarikçi veya sistem) çalışan codec'ler YALNIZCA YAZILIM olarak tanımlanmamalıdır.
  • [C-1-6] Android Açık Kaynak Projesi'nde bulunmayan veya bu projedeki kaynak koda dayalı olmayan codec'ler tedarikçi olarak tanımlanmalıdır.
  • [C-1-7] Donanım hızlandırma kullanan codec'ler donanım hızlandırmalı olarak tanımlanmalıdır.
  • [C-1-8] Kodek adları yanıltıcı OLMAYACAK. Örneğin, "decoders" adlı codec'ler kod çözmeyi, "encoders" adlı codec'ler ise kodlamayı desteklemelidir. Adlarında medya biçimleri bulunan codec'ler bu biçimleri DESTEKLEMELİDİR.

Cihaz uygulamaları video codec'lerini destekliyorsa:

  • [C-2-1] Tüm video codec'leri, codec tarafından destekleniyorsa aşağıdaki boyutlar için elde edilebilir kare hızı verilerini YAYINLAMALIDIR:
SD (düşük kalite) SD (yüksek kalite) HD 720p HD 1080p UHD
Video çözünürlüğü
  • 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, AV1)
  • 1.408 x 1.152 piksel (H263)
  • 1280 x 720 piksel (diğer, AV1)
1920 x 1080 piksel (MPEG4, AV1 dışında) 3.840 x 2.160 piksel (HEVC, VP9, AV1)
  • [C-2-2] Donanım hızlandırmalı olarak tanımlanan video codec'leri, performans puanı bilgilerini YAYINLAMALIDIR. Desteklenen başka bir standart performans noktası kapsamında olmadığı sürece her biri, desteklenen tüm standart performans noktalarını (PerformancePoint API'sinde listelenmiştir) listelemelidir.
  • Ayrıca, listelenen standartlardan farklı bir şekilde sürekli video performansını destekliyorsa genişletilmiş performans noktalarını YAYINLAMALIDIR.

5.2. Video Kodlama

Cihaz uygulamaları herhangi bir video kodlayıcıyı destekleyip üçüncü taraf uygulamalarına sunarsa:

  • İki kaydırmalı pencerede, kare içi (I karesi) aralıkları arasındaki bit hızının% 15'inden fazla OLMAMALIDIR.
  • 1 saniyelik kaydırmalı pencerede bit hızının% 100'ünden fazla OLMAMALIDIR.

Yeni şartlar başlatma

Cihaz uygulamaları herhangi bir video kodlayıcıyı destekleyip üçüncü taraf uygulamaların kullanımına sunarsa ve kodlayıcının değişken bit hızı modunda çalışması için
MediaFormat.KEY_BITRATE_MODE değerini BITRATE_MODE_VBR olarak ayarlarsa minimum kalite tabanını etkilemediği sürece kodlanmış bit hızı :

  • [C-5-1] OLMASI GEREKMEZ, bir kaydırmalı pencerede, kare içi (I-kare) aralıkları arasındaki bit hızının% 15'inden fazlası olmamalıdır.
  • [C-5-2] 1 saniyelik hareketli bir pencerede bit hızının% 100'ünden fazla olmamalıdır.

Cihaz uygulamaları herhangi bir video kodlayıcıyı destekliyorsa ve üçüncü taraf uygulamaların kullanımına sunuyorsa ve kodlayıcının sabit bit hızı modunda çalışması için MediaFormat.KEY_BITRATE_MODE değerini BITRATE_MODE_CBR olarak ayarlıyorsa kodlanmış bit hızı:

  • [C-6-1] [C-SR-2] 1 saniyelik kaydırmalı pencerede hedef bit hızının% 15'inden fazla OLMAMALIDIR.

Yeni şartların sona ermesi

Cihaz uygulamaları en az 2, 5 inç diyagonal uzunluğunda yerleşik bir ekran ekranı içeriyorsa veya video çıkış bağlantı noktası içeriyorsa ya da android.hardware.camera.any özellik işareti aracılığıyla kamera desteğini belirtiyorsa:

  • [C-1-1] VP8 veya H.264 video kodlayıcılarından en az birinin desteğini İÇERMELİ ve üçüncü taraf uygulamaları için kullanılabilir hale getirmelidir.
  • Hem VP8 hem de H.264 video kodlayıcılarını desteklemeli ve üçüncü taraf uygulamaları için kullanılabilir hale getirmelidir.

Cihaz uygulamaları H.264, VP8, VP9 veya HEVC video kodlayıcılarından herhangi birini destekliyorsa ve bu kodlayıcıları üçüncü taraf uygulamalarına sunuyorsa:

  • [C-2-1] Dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
  • Değişken kare hızlarını DESTEKLEMELİDİR. Bu durumda video kodlayıcı, anlık kare süresini giriş arabelleklerinin zaman damgalarına göre belirlemeli ve bit grubunu bu kare süresine göre tahsis etmelidir.

Cihaz uygulamaları MPEG-4 SP video kodlayıcıyı destekliyorsa ve üçüncü taraf uygulamaların kullanımına sunuyorsa:

  • Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.

Cihaz uygulamaları donanım hızlandırmalı video veya resim kodlayıcılar sağlıyorsa ve android.camera API'leri aracılığıyla bir veya daha fazla bağlı ya da takılabilir donanım kamerayı destekliyorsa:

  • [C-4-1] Tüm donanımla hızlandırılmış video ve resim kodlayıcılar, donanım kameralardan kare kodlamayı DESTEKLEMELİDİR.
  • Donanım kameralarından gelen karelerin tüm video veya resim kodlayıcılar aracılığıyla kodlanmasını DESTEKLEMELİDİR.

Cihaz uygulamaları HDR kodlaması sağlıyorsa:

  • [C-SR-1] için HDR biçiminden SDR biçimine dönüştürmek üzere sorunsuz kod dönüştürme API'si için bir eklenti sağlamanız önemle ÖNERİLİR.

5.2.1. H.263

Cihaz uygulamaları H.263 kodlayıcıları destekliyorsa ve üçüncü taraf uygulamalarına sunuluyorsa:

  • [C-1-1] Temel Profil 45. Seviye'yi kullanarak QCIF çözünürlüğünü (176 x 144) desteklemelidir. SQCIF çözünürlüğü isteğe bağlıdır.
  • Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.

5.2.2. H.264

Cihaz uygulamaları H.264 codec'ini destekliyorsa:

  • [C-1-1] Temel Profil 3. Seviyesi desteklenmelidir. Ancak ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) için destek İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğu korumak için kodlayıcıların referans profili için ASO, FMO ve RS'nin KULLANILMAMASI ÖNERİLİR.
  • [C-1-2] Aşağıdaki tabloda yer alan SD (Standart Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
  • Ana Profil 4. Seviyeyi DESTEKLEMELİDİR.
  • Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.

Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için H.264 kodlamayı destekliyorsa:

  • [C-2-1] Aşağıdaki tabloda yer alan kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
Video çözünürlüğü 320 x 240 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel
Video kare hızı 20 fps 30 fps 30 fps 30 fps
Video bit hızı 384 Kb/sn 2 Mb/sn 4 Mb/sn 10 Mb/sn

5.2.3. VP8

Cihaz uygulamaları VP8 codec'ini destekliyorsa:

  • [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
  • Aşağıdaki HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
  • [C-1-2] Matroska WebM dosyası yazmayı DESTEKLEMELİDİR.
  • Web video akışının ve video konferans hizmetlerinin kabul edilebilir kalitede olmasını sağlamak için WebM projesi RTC donanım kodlama şartlarını karşılayan bir donanım VP8 codec'i SAĞLAMALIDIR.

Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için VP8 kodlamayı desteklediğini bildirirse:

  • [C-2-1] Aşağıdaki tabloda yer alan kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
Video çözünürlüğü 320 x 180 piksel 640 x 360 piksel 1280 x 720 piksel 1920 x 1080 piksel
Video kare hızı 30 fps 30 fps 30 fps 30 fps
Video bit hızı 800 Kb/sn 2 Mb/sn 4 Mb/sn 10 Mb/sn

5.2.4. VP9

Cihaz uygulamaları VP9 codec'ini destekliyorsa:

  • [C-1-2] Profil 0 Seviye 3'ü desteklemelidir.
  • [C-1-1] Matroska WebM dosyası yazmayı DESTEKLEMELİDİR.
  • [C-1-3] CodecPrivate verileri OLUŞTURULMALIDIR.
  • Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
  • [C-SR-1], donanım kodlayıcı varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMESİ İYİCE ÖNERİLİR.
SD HD 720p HD 1080p UHD
Video çözünürlüğü 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel 3.840 x 2.160 piksel
Video kare hızı 30 fps 30 fps 30 fps 30 fps
Video bit hızı 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

Cihaz uygulamaları, Medya API'leri aracılığıyla 2. Profil veya 3. Profil'i desteklediğini iddia ediyorsa:

  • 12 bit biçim desteği İSTEĞE BAĞLIDIR.

5.2.5. H.265

Cihaz uygulamaları H.265 codec'ini destekliyorsa:

  • [C-1-1] Ana Profil 3. Seviye'yi 512 x 512 çözünürlüğe kadar desteklemelidir.
  • Aşağıdaki tabloda belirtildiği gibi HD kodlama profillerini DESTEKLEMELİDİR.
  • [C-SR-1], donanım kodlayıcı varsa aşağıdaki tabloda belirtildiği gibi 720 x 480 SD profilini ve HD kodlama profillerini desteklemek için ÇOK ÖNERİLİR.
SD HD 720p HD 1080p UHD
Video çözünürlüğü 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel 3.840 x 2.160 piksel
Video kare hızı 30 fps 30 fps 30 fps 30 fps
Video bit hızı 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

Yeni şartlar başlatma

5.2.6. AV1

Cihaz uygulamaları AV1 codec'ini destekliyorsa:

  • [C-1-1] 8 bit ve 10 bit içerik dahil olmak üzere ana profili DESTEKLEMELİDİR.
  • [C-1-2] Aşağıdaki tabloda desteklenen çözünürlükler için getSupportedFrameRatesFor() veya getSupportedPerformancePoints() API'leri aracılığıyla performans verilerini yayınlamalıdır (ör. performans verilerini bildirmelidir).

  • [C-1-3] HDR meta verilerini kabul ETMEK VE bit akışına aktarmak ZORUNLUDUR

AV1 kodlayıcı donanım hızlandırıcılıysa:

  • [C-2-1] Aşağıdaki tabloda yer alan HD1080p kodlama profilini ve bu profili de dahil olmak üzere desteklemelidir:
SD HD 720p HD 1080p UHD
Video çözünürlüğü 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel 3.840 x 2.160 piksel
Video kare hızı 30 fps 30 fps 30 fps 30 fps
Video bit hızı 5 Mb/sn 8 Mb/sn 16 Mb/sn 50 Mb/sn

Yeni şartların sona ermesi

5.3. Video kod çözme

Cihaz uygulamaları VP8, VP9, H.264 veya H.265 codec'lerini destekliyorsa:

  • [C-1-1] Tüm VP8, VP9, H.264 ve H.265 codec'leri için aynı akıştaki standart Android API'leri aracılığıyla dinamik video çözünürlüğünü ve kare hızı geçişini gerçek zamanlı olarak ve cihazdaki her codec'in desteklediği maksimum çözünürlüğe kadar desteklemelidir.

5.3.1. MPEG-2

Cihaz uygulamaları MPEG-2 kod çözücüleri destekliyorsa:

  • [C-1-1] Ana Profil Üst Düzey'i desteklemelidir.

5.3.2. H.263

Cihaz uygulamaları H.263 kod çözücüleri destekliyorsa:

  • [C-1-1] Temel Profil 30. Düzey (30 fps 384 Kb/sn'de CIF, QCIF ve SQCIF çözünürlükleri) ve 45. Düzey (30 fps 128 Kb/sn'de QCIF ve SQCIF çözünürlükleri) desteklemelidir.

5.3.3. MPEG-4

MPEG-4 kod çözücüleri olan cihaz uygulamaları:

  • [C-1-1] Basit Profil 3. Seviyesi desteklenmelidir.

5.3.4. H.264

Cihaz uygulamaları H.264 kod çözücüleri destekliyorsa:

  • [C-1-1] Ana Profil Seviye 3.1 ve Temel Profil'i DESTEKLEMELİDİR. ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) için destek İSTEĞE BAĞLIDIR.
  • [C-1-2] Aşağıdaki tabloda listelenen ve Temel Profil ile Ana Profil Seviye 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlük) profillerine sahip videoların kodunu çözebilmelidir.
  • Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlük) profilleriyle videoların kodunu çözebilmelidir.

Display.getSupportedModes() yöntemi tarafından raporlanan yükseklik, video çözünürlüğüne eşit veya video çözünürlüğünden yüksekse cihaz uygulamaları:

  • [C-2-1] Aşağıdaki tabloda belirtilen HD 720p video kod çözme profillerini DESTEKLEMELİDİR.
  • [C-2-2] Aşağıdaki tabloda yer alan HD 1080p video kod çözme profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
Video çözünürlüğü 320 x 240 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel
Video kare hızı 30 fps 30 fps 60 fps 30 fps (60 fpsTelevizyon)
Video bit hızı 800 Kb/sn 2 Mb/sn 8 Mb/sn 20 Mb/sn

5.3.5. H.265 (HEVC)

Cihaz uygulamaları H.265 codec'ini destekliyorsa:

  • [C-1-1] Ana Profil 3. Katman Ana katmanını ve SD video kod çözme profillerini aşağıdaki tabloda belirtildiği şekilde DESTEKLEMELİDİR.
  • Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
  • [C-1-2] Donanım kod çözücü varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.

Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik, video çözünürlüğüne eşit veya video çözünürlüğünden büyükse:

  • [C-2-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin H.265 veya VP9 kod çözme işlemlerinden en az birini desteklemelidir.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p UHD
Video çözünürlüğü 352 x 288 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel 3.840 x 2.160 piksel
Video kare hızı 30 fps 30 fps 30 fps 30/60 fps (H.265 donanım kod çözme özelliğine sahip 60 fps televizyon) 60 fps
Video bit hızı 600 Kb/sn 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

Cihaz uygulamaları, Media API'leri aracılığıyla HDR Profili'ni desteklediğini iddia ediyorsa:

  • [C-3-1] Cihaz uygulamalarında, uygulamadan gerekli HDR meta verilerinin kabul edilmesi ve bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerinin ayıklanması ve çıkarılması desteklenmelidir.
  • [C-3-2] Cihaz uygulamalarında HDR içeriği, cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).

5.3.6. VP8

Cihaz uygulamaları VP8 codec'ini destekliyorsa:

  • [C-1-1] Aşağıdaki tabloda yer alan SD kod çözme profillerini DESTEKLEMELİDİR.
  • Şartları karşılayan bir donanım VP8 codec'i KULLANMALIDIR.
  • Aşağıdaki tabloda yer alan HD kod çözme profillerini DESTEKLEMELİDİR.

Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik, video çözünürlüğüne eşit veya video çözünürlüğünden büyükse:

  • [C-2-1] Cihaz uygulamaları, aşağıdaki tabloda belirtilen 720p profillerini DESTEKLEMELİDİR.
  • [C-2-2] Cihaz uygulamaları, aşağıdaki tabloda yer alan 1080p profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
Video çözünürlüğü 320 x 180 piksel 640 x 360 piksel 1280 x 720 piksel 1920 x 1080 piksel
Video kare hızı 30 fps 30 fps 30 fps (60 fpsTelevizyon) 30 (60 fpsTelevizyon)
Video bit hızı 800 Kb/sn 2 Mb/sn 8 Mb/sn 20 Mb/sn

5.3.7. VP9

Cihaz uygulamaları VP9 codec'ini destekliyorsa:

  • [C-1-1] Aşağıdaki tabloda belirtilen SD video kod çözme profillerini DESTEKLEMELİDİR.
  • Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.

Cihaz uygulamaları VP9 codec'ini ve donanım kod çözücüyü destekliyorsa:

  • [C-2-1] Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.

Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik, video çözünürlüğüne eşit veya video çözünürlüğünden büyükse:

  • [C-3-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin VP9 veya H.265 kod çözme işlemlerinden en az birini desteklemelidir.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p UHD
Video çözünürlüğü 320 x 180 piksel 640 x 360 piksel 1280 x 720 piksel 1920 x 1080 piksel 3.840 x 2.160 piksel
Video kare hızı 30 fps 30 fps 30 fps 30 fps (60 fpsVP9 donanım kod çözme özelliğine sahip televizyonlar) 60 fps
Video bit hızı 600 Kb/sn 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

Cihaz uygulamaları, 'CodecProfileLevel' medya API'leri aracılığıyla VP9Profile2 veya VP9Profile3'ü desteklediğini iddia ediyorsa:

  • 12 bit biçim desteği İSTEĞE BAĞLIDIR.

Cihaz uygulamaları, medya API'leri aracılığıyla HDR Profili'ni (VP9Profile2HDR, VP9Profile2HDR10Plus, VP9Profile3HDR, VP9Profile3HDR10Plus) desteklediğini iddia ediyorsa:

  • [C-4-1] Cihaz uygulamalarında, uygulamadan gelen gerekli HDR meta verileri (tüm HDR profilleri için KEY_HDR_STATIC_INFO ve HDR10Plus profilleri için 'KEY_HDR10_PLUS_INFO') kabul EDİLMELİDİR. Ayrıca, bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerinin çıkarılmasını ve yayınlanmasını desteklemelidir.
  • [C-4-2] Cihaz uygulamalarında HDR içeriği, cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).

5.3.8. Dolby Vision

Cihaz uygulamaları, HDR_TYPE_DOLBY_VISION aracılığıyla Dolby Vision kod çözücü desteğini belirtiyorsa:

  • [C-1-1] Dolby Vision uyumlu bir çıkarıcı sağlanmalıdır.
  • [C-1-2] Dolby Vision içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).
  • [C-1-3] Geriye dönük uyumlu temel katmanların (varsa) kanal kimliğini, birleştirilmiş Dolby Vision katmanının kanal kimliğiyle aynı olacak şekilde AYARALAYACAK.

5.3.9. AV1

Cihaz uygulamaları AV1 codec'ini destekliyorsa:

  • [C-1-1] 10 bit içerik dahil olmak üzere 0 numaralı profili DESTEKLEMELİDİR.

Yeni şartlar başlatma

Cihaz uygulamaları AV1 codec'ini destekliyorsa ve üçüncü taraf uygulamalarına sunuluyorsa:

  • [C-1-1] 8 bit ve 10 bit içerik dahil olmak üzere ana profili DESTEKLEMELİDİR.

Cihaz uygulamaları, donanım hızlandırmalı bir kod çözücüyle AV1 codec'i için destek sağlıyorsa:

  • [C-2-1] Display.getSupportedModes() yöntemi tarafından raporlanan yükseklik 720p'ye eşit veya 720p'den büyük olduğunda aşağıdaki tablodaki en az HD 720p video kod çözme profillerinin kodunu çözebilmelidir.
  • [C-2-2] Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik 1080p'ye eşit veya bu değerden yüksek olduğunda aşağıdaki tablodaki en az HD 1080p video kod çözme profillerinin kodunu çözebilmelidir.
SD HD 720p HD 1080p UHD
Video çözünürlüğü 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel 3.840 x 2.160 piksel
Video kare hızı 30 fps 30 fps 30 fps 30 fps
Video bit hızı 5 Mb/sn 8 Mb/sn 16 Mb/sn 50 Mb/sn

Cihaz uygulamaları, Media API'leri aracılığıyla HDR Profili'ni destekliyorsa:

  • [C-3-1] Bit akışından ve/veya kapsayıcıdan HDR meta verilerinin çıkarılmasını ve yayınlanmasını desteklemelidir.
  • [C-3-2] HDR içeriği cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI) düzgün şekilde GÖSTERMELİDİR.

Yeni şartların sona ermesi

5.4. Ses Kaydetme

Bu bölümde belirtilen şartlardan bazıları Android 4.3'ten beri "OLMALI" olarak listelenirken gelecek sürümler için Uyumluluk Tanımı'nda bu şartların "OLMALIDIR" olarak değiştirilmesi planlanmaktadır. Mevcut ve yeni Android cihazların, "OLMALI" olarak listelenen bu koşulları karşılaması ŞİDDETLE ÖNERİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiğinde Android uyumluluğu elde edemezler.

5.4.1. Ham Ses Kaydı ve Mikrofon Bilgileri

Cihaz uygulamaları android.hardware.microphone bildirirse:

  • [C-1-1] Başarılı bir şekilde açılan tüm AudioRecord veya AAudio INPUT akışı için ham ses içeriğinin yakalanmasına İZİN VERMELİDİR. En azından aşağıdaki özellikler desteklenmelidir:

  • 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 ve 24 bit
    • Örnekleme hızları: 8.000, 11.025, 16.000, 22.050, 24.000, 32.000, 44.100, 48.000 Hz
    • Kanallar: Cihazdaki mikrofon sayısı kadar kanal
  • [C-1-2] Yukarı örnekleme olmadan yukarıdaki örnek hızlarında KAYDETMELİDİR.

  • [C-1-3] Yukarıda verilen örnekleme hızları aşağı örneklemeyle yakalandığında uygun bir kenar yumuşatma filtresi DAHİL EDİLMELİDİR.

  • Ham ses içeriğinin AM radyo ve DVD kalitesinde yakalanmasına izin VERİLMELİDİR. Bu, aşağıdaki özellikleri ifade eder:

    • Biçim: Doğrusal PCM, 16 bit
    • Örnekleme hızları: 22.050, 48.000 Hz
    • Kanallar: Stereo
  • [C-1-4] MicrophoneInfo API'yi dikkate ALMALISI ve MediaRecorder.AudioSources DEFAULT, MIC, CAMCORDER, VOICE_RECOGNITION, VOICE_COMMUNICATION, UNPROCESSED veya VOICE_PERFORMANCE kullanarak etkin AudioRecord için AudioManager.getMicrophones() API aracılığıyla üçüncü taraf uygulamaların erişebileceği cihazdaki mevcut mikrofonlarla ilgili bilgileri doğru şekilde doldurması GEREKİR. Cihaz uygulamaları, ham ses içeriğinin AM radyo ve DVD kalitesinde yakalanmasına izin veriyorsa:

  • [C-2-1] 16000:22050 veya 44100:48000'den yüksek bir oranda yukarı örnekleme olmadan KAYDETMELİDİR.

  • [C-2-2] Herhangi bir yukarı örnekleme veya aşağı örnekleme için uygun bir kenar yumuşatma filtresi DAHİL EDİLMELİDİR.

5.4.2. Ses Tanıma için Kayıt

Cihaz uygulamaları android.hardware.microphone bildirirse:

  • [C-1-1] android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION ses kaynağını 44.100 ve 48.000 örnekleme hızlarından birinde KAYDETMELİDİR.
  • [C-1-2] AudioSource.VOICE_RECOGNITION ses kaynağından ses akışı kaydederken varsayılan olarak tüm gürültü azaltma ses işlemeyi devre dışı bırakmalıdır.
  • [C-1-3] AudioSource.VOICE_RECOGNITION ses kaynağından ses akışı kaydederken varsayılan olarak tüm otomatik kazanç kontrollerini devre dışı bırakmalıdır.

  • Orta frekans aralığında yaklaşık olarak düz bir genlik-frekans özelliği GÖSTERMELİDİR: Özellikle ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofon için 100 Hz ile 4.000 Hz arasında ±3 dB.

  • [C-SR-1] ses algılama ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla düşük frekans aralığındaki genlik seviyelerini göstermesi önemle ÖNERİLİR: Özellikle 30 Hz ile 100 Hz arasında ±20 dB.

  • [C-SR-2] ses algılama ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla yüksek frekans aralığındaki genlik seviyelerini GÜÇLÜ BİR ŞEKİLDE GÖSTERMESİ ÖNERİLİR: özellikle 4.000 Hz ile 22 KHz arasında ±30 dB.

  • Ses girişi hassasiyeti, 90 dB ses basıncı düzeyinde (SPL) (30 cm mesafede mikrofonun yanından ölçülür) çalınan 1000 Hz sinüs dalga sesi kaynağının, ses tanıma ses kaynağını kaydetmek için kullanılan her bir mikrofonda 16 bit örnekler için 1770 ile 3530 arasında bir aralıkta RMS 2500'ün ideal yanıtını (veya kayan nokta/çift hassasiyet örnekleri için -22,35 dB ±3 dB Tam Ölçek) verecek şekilde ayarlanmalıdır.

  • PCM genlik seviyelerinin, mikrofondaki 90 dB SPL'ye göre -18 dB ile +12 dB arasında en az 30 dB aralığındaki giriş SPL değişikliklerini doğrusal olarak izleyeceği şekilde ses tanıma ses akışını KAYDETMELİDİR.

  • Ses tanıma ses akışını, mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için toplam harmonik bozulma (THD) %1'den az olacak şekilde KAYDETMELİDİR.

Cihaz uygulamaları, konuşma tanıma için ayarlanmış android.hardware.microphone ve gürültü azaltma teknolojilerini belirtiyorsa:

  • [C-2-1] Bu ses efektinin android.media.audiofx.NoiseSuppressor API ile kontrol edilebilir olmasına izin VERMELİDİR.
  • [C-2-2] Her gürültü azaltma teknolojisi uygulamasını AudioEffect.Descriptor.uuid alanı aracılığıyla benzersiz şekilde tanımlamalıdır.

5.4.3. Oynatma işlemini yeniden yönlendirmek için yakalama

android.media.MediaRecorder.AudioSource sınıfı, REMOTE_SUBMIX ses kaynağını içerir.

Cihaz uygulamaları hem android.hardware.audio.output hem de android.hardware.microphone bildirirse:

  • [C-1-1] Bir uygulama bu ses kaynağından kayıt yapmak için android.media.AudioRecord API'yi kullandığında aşağıdakiler hariç tüm ses akışlarının bir karışımını yakalayacak şekilde REMOTE_SUBMIX ses kaynağını düzgün bir şekilde UYGULAMALIDIR:

    • AudioManager.STREAM_RING
    • AudioManager.STREAM_ALARM
    • AudioManager.STREAM_NOTIFICATION

5.4.4. Akustik Yankı Önleyici

Cihaz uygulamaları android.hardware.microphone bildirirse:

  • Sesli iletişim için ayarlanmış ve AudioSource.VOICE_COMMUNICATION kullanılarak kayıt yapılırken kayıt yoluna uygulanan bir akustik yankı giderici (AEC) teknolojisi UYGULANMALIDIR.

Cihaz uygulamaları, AudioSource.VOICE_COMMUNICATION seçildiğinde kayıt ses yoluna eklenen bir akustik yankı giderici sağlıyorsa:

5.4.5. Eşzamanlı yakalama

Cihaz uygulamaları android.hardware.microphone değerini belirtiyorsa bu dokümanda açıklandığı gibi eşzamanlı yakalama özelliğini UYGULAMALARI GEREKİR. Özellikle:

  • [C-1-1] AudioSource.VOICE_RECOGNITION ile yakalama yapan bir erişilebilirlik hizmeti ve herhangi bir AudioSource ile yakalama yapan en az bir uygulama tarafından mikrofona eşzamanlı erişime İZİN VERİLMELİDİR.
  • [C-1-2] Asistan rolüne sahip önceden yüklenmiş bir uygulama ve AudioSource.VOICE_COMMUNICATION veya AudioSource.CAMCORDER dışındaki herhangi bir AudioSource ile kayıt yapan en az bir uygulamanın mikrofona eşzamanlı erişmesine İZİN VERMELİDİR.
  • [C-1-3] Bir uygulama AudioSource.VOICE_COMMUNICATION veya AudioSource.CAMCORDER ile kayıt yaparken erişilebilirlik hizmeti dışındaki diğer uygulamalar için ses kaydını SUSTURMALIDIR. Ancak bir uygulama AudioSource.VOICE_COMMUNICATION üzerinden kayıt yaparken CAPTURE_AUDIO_OUTPUT iznine sahip ayrıcalıklı (önceden yüklenmiş) bir uygulamaysa başka bir uygulama sesli aramayı kaydedebilir.
  • [C-1-4] İki veya daha fazla uygulama aynı anda kayıt yapıyorsa ve hiçbir uygulamanın üst kısmında kullanıcı arayüzü yoksa en son kayıt yapmaya başlayan uygulama ses alır.

5.5. Ses Çalma

Android, 7.8.2 numaralı bölümde tanımlandığı üzere uygulamaların 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 bildirirse:

  • [C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına izin VERMELİDİR:

    • Kaynak biçimleri: Doğrusal PCM, 16 bit, 8 bit, kayan nokta
    • Kanallar: Mono, Stereo, en fazla 8 kanal içeren geçerli çok kanallı yapılandırmalar
    • Örnekleme hızları (Hz cinsinden):
      • Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000
      • Mono ve stereoda 96.000

5.5.2. Ses Efektleri

Android, cihaz uygulamaları için ses efektleri API'si sağlar.

Cihaz uygulamaları android.hardware.audio.output özelliğini beyan ederse:

  • [C-1-1] Equalizer ve LoudnessEnhancer AudioEffect alt sınıfları aracılığıyla kontrol edilebilen EFFECT_TYPE_EQUALIZER ve EFFECT_TYPE_LOUDNESS_ENHANCER uygulamalarını DESTEKLEMELİDİR.
  • [C-1-2] Visualizer sınıfı aracılığıyla kontrol edilebilen görselleştirici API uygulamasını DESTEKLEMELİDİR.
  • [C-1-3] AudioEffect alt sınıfı DynamicsProcessing aracılığıyla kontrol edilebilen EFFECT_TYPE_DYNAMICS_PROCESSING uygulamasını DESTEKLEMELİDİR.

Yeni şartlar başlatma

  • [C-1-4] Ses efektlerini kayan nokta girişi ve çıkışıyla desteklemelidir.
  • [C-1-5] Ses efektlerinin, FCC_LIMIT olarak da bilinen karıştırıcı kanal sayısına kadar birden fazla kanalı desteklediğinden emin OLMALIDIR.

Yeni şartların sona ermesi

  • AudioEffect alt sınıfları BassBoost, EnvironmentalReverb, PresetReverb ve Virtualizer aracılığıyla kontrol edilebilen EFFECT_TYPE_BASS_BOOST, EFFECT_TYPE_ENV_REVERB, EFFECT_TYPE_PRESET_REVERB ve EFFECT_TYPE_VIRTUALIZER uygulamalarını DESTEKLEMELİDİR.
  • [C-SR-1] Etkileri kayan noktalı ve çok kanallı olarak desteklemeniz önemle ÖNERİLİR.

5.5.3. Ses Çıkışı Ses Seviyesi

Otomotiv cihaz uygulamaları:

  • AudioAttributes tarafından tanımlanan içerik türü veya kullanım ve android.car.CarAudioManager'de herkese açık olarak tanımlanan araç ses kullanımı kullanılarak ses hacminin her ses akışı için ayrı ayrı ayarlanmasına İZİN VERMELİDİR.

5.5.4. Ses Aktarımı

Cihaz uygulamaları ses aktarma oynatmayı destekliyorsa:

  • [C-SR-1] AudioTrack gapless API ve MediaPlayer için medya kapsayıcısı tarafından belirtildiğinde, oynatılan sessiz ara vermeyen ses içeriğinin aynı biçime sahip iki klip arasında kırpılması önemle ÖNERİLİR.

5.6. Ses gecikmesi

Ses gecikmesi, ses sinyalinin sistemden geçerken yaşadığı zaman gecikmesidir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikme sürelerine ihtiyaç duyar.

Bu bölümde aşağıdaki tanımlar kullanılacaktır:

  • output latency. Bir uygulamanın PCM kodlu bir çerçeve yazması ile ilgili sesin cihaz üzerindeki bir dönüştürücüde çevreye sunulması veya sinyalin bir bağlantı noktası üzerinden cihazdan çıkıp harici olarak gözlemlenebilmesi arasındaki aralık.
  • Soğuk çıkış gecikmesi. Ses çıkış sistemi istek öncesinde boşta ve kapalıyken bir çıkış akışının başlatılması ile zaman damgalarına göre ilk karenin sunum zamanı arasındaki süre.
  • sürekli çıkış gecikmesi. Cihaz ses çaldıktan sonra sonraki kareler için çıkış gecikmesi.
  • giriş gecikmesi. Bir sesin ortam tarafından cihaz üzerindeki bir dönüştürücüde cihaza sunulması veya sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın ilgili PCM kodlu veri çerçevesini okuması arasındaki aralık.
  • Giriş kaybı. Giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.
  • Soğuk giriş gecikmesi. Akış başlatıldıktan sonra ses giriş sisteminin boşta olduğu ve istek öncesinde kapatıldığı sırada ilk geçerli karenin alındığı zaman.
  • sürekli giriş gecikmesi. Cihaz ses kaydederken sonraki kareler için giriş gecikmesi.

  • sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesinin artı sürekli çıkış gecikmesinin artı bir arabellek döneminin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için zaman sağlar.

  • OpenSL ES PCM arabellek sırası API'si. Android NDK'daki PCM ile ilgili OpenSL ES API'leri grubu.

  • AAudio doğal ses API'si. Android NDK'daki AAudio API'leri grubu.

  • Zaman damgası. Bir akıştaki göreli çerçeve konumundan ve bu çerçevenin ilişkili uç noktadaki ses işleme ardışık düzenine girip çıktığı tahmini zamandan oluşan bir çift. AudioTimestamp özelliğini de inceleyin.

  • glitch. Ses sinyalinde geçici bir kesinti veya yanlış örnek değeri. Genellikle çıkış için arabellek eksikliğinden, giriş için arabellek taşmasından veya dijital ya da analog gürültü kaynaklarından kaynaklanır.

  • ortalama mutlak sapma. Bir değer grubu için ortalamadan sapmaların mutlak değerinin ortalaması.

  • Tuşa basma ve ses gecikmesi. Ekrana dokunulduğu andan, bu dokunma sonucunda oluşturulan tonun hoparlörde duyulduğu ana kadar geçen süre.

Cihaz uygulamaları android.hardware.audio.output değerini belirtiyorsa aşağıdaki şartları karşılamalı veya aşmalıdır:

  • [C-1-1] AudioTrack.getTimestamp ve AAudioStream_getTimestamp tarafından döndürülen çıkış zaman damgası +/- 2 ms doğruluktadır.
  • [C-1-2] 500 milisaniye veya daha az soğuk çıktı gecikmesi.

  • [C-1-3] AAudioStreamBuilder_openStream() kullanılarak bir çıkış akışı açmak 1.000 milisaniyeden kısa sürmelidir.

Cihaz uygulamaları android.hardware.audio.output değerini belirtiyorsa aşağıdaki şartları karşılamaları veya aşmaları önemle ÖNERİLİR:

  • [C-SR-1] Hoparlör veri yolu üzerinden 100 milisaniye veya daha az soğuk çıkış gecikmesi.
  • [C-SR-2] Dokunma-ton gecikmesi 80 milisaniye veya daha az.

  • [C-SR-4] AudioTrack.getTimestamp ve AAudioStream_getTimestamp tarafından döndürülen çıkış zaman damgası +/- 1 ms'ye kadar doğrudur.

Yeni şartlar başlatma

  • [C-SR-4] AAudioStream_getTimestamp tarafından döndürülen giriş ve çıkış zaman damgalarına göre hesaplanan gidiş dönüş gecikmelerinin, hoparlörler, kablolu ve kablosuz kulaklıklar için AAUDIO_PERFORMANCE_MODE_NONE ve AAUDIO_PERFORMANCE_MODE_LOW_LATENCY için ölçülen gidiş dönüş gecikmesinden 30 milisaniye içinde olması önemle tavsiye edilir.

Yeni şartların sona ermesi

Cihaz uygulamaları yukarıdaki koşulları karşılıyorsa ilk kalibrasyondan sonra, AAudio doğal ses API'si kullanıldığında, en az bir desteklenen ses çıkış cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için aşağıdakiler geçerlidir:

Cihaz uygulamaları, AAudio doğal ses API'si aracılığıyla düşük gecikmeli sesle ilgili koşulları karşılamıyorsa:

  • [C-2-1] Düşük gecikmeli ses desteğini bildirmemelidir.

Cihaz uygulamaları android.hardware.microphone içeriyorsa aşağıdaki giriş ses koşullarını karşılamalıdır:

  • [C-3-1] AudioRecord.getTimestamp veya AAudioStream_getTimestamp tarafından döndürülen giriş zaman damgalarındaki hatayı +/- 2 ms ile sınırlayın. Buradaki "Hata", doğru değerden sapma anlamına gelir.
  • [C-3-2] Soğuk giriş gecikmesi 500 milisaniye veya daha az.
  • [C-3-3] AAudioStreamBuilder_openStream() kullanılarak bir giriş akışı açmak 1000 milisaniyeden kısa sürmelidir.

Cihaz uygulamalarında android.hardware.microphone varsa bu giriş ses koşullarını karşılamaları önemle ÖNERİLİR:

  • [C-SR-8] Mikrofon veri yolu üzerinden 100 milisaniye veya daha az soğuk giriş gecikmesi.

  • [C-SR-11] AudioRecord.getTimestamp veya AAudioStream_getTimestamp tarafından döndürülen giriş zaman damgalarındaki hatayı +/- 1 ms ile sınırlayın.

Cihaz uygulamaları android.hardware.audio.output ve android.hardware.microphone bildirirse:

  • [C-SR-12] En az bir desteklenen yolda, 5 ölçümde ortalama sürekli gidiş dönüş gecikmesinin 50 milisaniye veya daha az, ortalama mutlak sapmanın ise 10 milisaniyeden az olması önemle ÖNERİLİR.

5.7. Ağ Protokolleri

Cihaz uygulamaları, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemelidir.

Bir cihaz uygulamasının desteklemesi gereken her codec ve kapsayıcı biçimi için cihaz uygulaması:

  • [C-1-1] Bu codec'i veya kapsayıcıyı HTTP ve HTTPS üzerinden DESTEKLEMELİDİR.

  • [C-1-2] HTTP Canlı Yayın taslak protokolü, 7. sürüm üzerinden aşağıdaki medya segmenti biçimleri tablosunda gösterilen ilgili medya segmenti biçimlerini DESTEKLEMELİDİR.

  • [C-1-3] Aşağıdaki RTSP tablosunda gösterildiği gibi ilgili RTSP yükü biçimlerini DESTEKLEMELİDİR. İstisnalar için lütfen 5.1 numaralı bölümdeki tablo dipnotlarına bakın.

Medya Segmenti Biçimleri

Segment biçimleri Referanslar Gerekli codec desteği
MPEG-2 Taşıma Akışı ISO 13818 Video codec'leri:
  • H264 AVC
  • MPEG-4 SP
  • MPEG-2
H264 AVC, MPEG2-4 SP ve MPEG-2 hakkında ayrıntılı bilgi için 5.1.8 numaralı bölüme bakın.

Ses codec'leri:

  • AAC
AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.3 numaralı bölüme 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 numaralı bölüme bakın.
WebVTT WebVTT

RTSP (RTP, SDP)

Profil adı Referanslar Gerekli codec desteği
H264 AVC RFC 6184 H264 AVC ile ilgili ayrıntılar için 5.1.8 numaralı bölüme bakın
MP4A-LATM RFC 6416 AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.3 numaralı bölüme bakın
H263-1998 RFC 3551
RFC 4629
RFC 2190
H263 ile ilgili ayrıntılar için 5.1.8 numaralı bölüme bakın
H263-2000 RFC 4629 H263 ile ilgili ayrıntılar için 5.1.8 numaralı bölüme bakın
AMR RFC 4867 AMR-NB ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın
AMR-WB RFC 4867 AMR-WB hakkında ayrıntılı bilgi için 5.1.3 numaralı bölüme bakın
MP4V-ES RFC 6416 MPEG-4 SP hakkında ayrıntılı bilgi için 5.1.8 numaralı bölüme bakın
mpeg4-generic RFC 3640 AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.3 numaralı bölüme bakın
MP2T RFC 2250 Ayrıntılar için HTTP Canlı Akış'ın altındaki MPEG-2 Taşıma Akışı bölümüne bakın.

5.8. Secure Media

Cihaz uygulamaları güvenli video çıkışını destekliyorsa ve güvenli yüzeyleri destekleyebiliyorsa:

  • [C-1-1] Display.FLAG_SECURE için destek beyan ETMEK ZORUNLUDUR.

Cihaz uygulamaları Display.FLAG_SECURE ve kablosuz ekran protokolünü destekliyorsa:

  • [C-2-1] Miracast gibi kablosuz protokoller üzerinden bağlanan ekranlar için bağlantıyı HDCP 2.x veya daha yeni bir sürüm gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİKLEŞTİRMELİDİR.

Cihaz uygulamaları Display.FLAG_SECURE desteğini beyan ediyorsa ve kablolu harici ekranı destekliyorsa:

  • [C-3-1] Kullanıcının erişebildiği kablolu bağlantı noktası üzerinden bağlı tüm harici ekranlar için HDCP 1.2 veya daha yeni sürümleri DESTEKLEMELİDİR.

5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)

Cihaz uygulamaları, android.software.midi özelliği için android.content.pm.PackageManager sınıfı üzerinden destek bildirirse:

  • [C-1-1] MIDI uyumlu donanım aktarımlarının tümü için MIDI'yi desteklemelidir. Bu aktarımların MIDI dışında genel bağlantı sağladığı durumlarda:

  • [C-1-2] Uygulamalar arası MIDI yazılım aktarımını (sanal MIDI cihazları) DESTEKLEMELİDİR

  • [C-1-3] libamidi.so (yerel MIDI desteği) DAHİL OLMALIDIR

  • USB çevre birimi modu üzerinden MIDI'yi DESTEKLEMELİDİR, bölüm 7.7

5.10. Profesyonel ses

Cihaz uygulamaları, android.hardware.audio.pro özelliği için desteği android.content.pm.PackageManager sınıfı üzerinden bildirirse:

  • [C-1-1] android.hardware.audio.low_latency özelliği için destek bildirmelidir.
  • [C-1-2] En az bir desteklenen yolda 5.6 Ses Gecikmesi bölümünde tanımlandığı şekilde 25 milisaniye veya daha az sürekli gidiş dönüş ses gecikmesi OLMALIDIR.
  • [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen USB bağlantı noktaları ZORUNLUDUR.
  • [C-1-4] android.software.midi özelliği için destek bildirmelidir.
  • [C-1-5] AAudio doğal ses API'sini ve AAUDIO_PERFORMANCE_MODE_LOW_LATENCY'yi kullanarak gecikmeleri ve USB ses şartlarını karşılamalıdır.
  • [C-1-6] Soğuk çıkış gecikmesi 200 milisaniye veya daha az OLMALIDIR.
  • [C-1-7] Soğuk giriş gecikmesi 200 milisaniye veya daha az OLMALIDIR.
  • [C-1-8] Hoparlör ile mikrofon veri yolu üzerinden en az 5 ölçümde ortalama 80 milisaniye veya daha az bir dokunma-ses gecikmesi OLMALIDIR.

  • [C-SR-1] 5.6 Ses Gecikmesi bölümünde tanımlanan gecikmeleri karşılamak için hoparlör ile mikrofon arasındaki yolda ortalama mutlak sapma 5 milisaniyeden az olacak şekilde 5 ölçümde 20 milisaniye veya daha az gecikme elde edilmesi önemle ÖNERİLİR.

  • [C-SR-2] MMAP yolu üzerinden AAudio doğal ses API'sini kullanarak sürekli gidiş dönüş ses gecikmesi, soğuk giriş gecikmesi ve soğuk çıkış gecikmesi ile USB ses koşulları için Pro Audio koşullarını karşılamanız önemle ÖNERİLİR.

  • [C-SR-3] Ses etkinken ve CPU yükü değişirken tutarlı bir CPU performansı sağlamak için ÇOK ÖNEMLE ÖNERİLİR. Bu, SynthMark Android uygulaması 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. Karşılaştırmaların açıklamasını SynthMark dokümanlarında bulabilirsiniz. SynthMark uygulamasının "Otomatik Test" seçeneği kullanılarak çalıştırılması ve aşağıdaki sonuçlara ulaşması gerekir:

    • voicemark.90 >= 32 ses
    • latencymark.fixed.little <= 15 msec
    • latencymark.dynamic.little <= 50 msec
  • Sesli saatin hatalılığını ve standart saate göre kaymasını en aza indirmelidir.

  • Her ikisi de etkinken ses saati kaymasını CPU'ya göre en aza indirmelidir CLOCK_MONOTONIC

  • Cihaz üzerindeki dönüştürücüler üzerinden ses gecikmesini en aza indirmelidir.

  • USB dijital ses üzerinden ses gecikmesini en aza indirmelidir.

  • Tüm yollardaki ses gecikmesi ölçümlerini belgelemelidir.

  • Bu, geri aramanın tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediği için ses arabelleğinin tamamlanması geri arama giriş zamanlarında gecikmeyi en aza indirmelidir.

  • Bildirilen gecikmede normal kullanımda sıfır ses aksaklıklarına neden OLMAZ.

  • Kanallar arası gecikme farkı sıfır OLMALIDIR.

  • Tüm aktarımlarda MIDI ortalama gecikmesini en aza indirmelidir.

  • Tüm aktarımlarda yük altında MIDI gecikmesi değişkenliğini (jitter) en aza indirmelidir.

  • Tüm aktarımlarda doğru MIDI zaman damgaları SAĞLANMALIDIR.

  • Soğuk başlatmadan hemen sonraki dönem de dahil olmak üzere cihaz üzerindeki dönüştürücülerde ses sinyali gürültüsünü en aza indirmelidir.

  • Her ikisi de etkinken ilgili uç noktaların giriş ve çıkış tarafları arasında sıfır ses saati farkı SAĞLAMALIDIR. İlgili uç noktalara örnek olarak cihaz üzerindeki mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.

  • Her ikisi de etkinken aynı iş parçacığındaki ilgili uç noktaların giriş ve çıkış tarafları için ses arabelleği tamamlama geri çağırma işlevlerini İŞLEMELİDİR ve giriş geri çağırma işlevinden döndükten hemen sonra çıkış geri çağırma işlevini girmelidir. Yada geri çağırmaların aynı iş parçacığında işlenmesi mümkün değilse uygulamanın giriş ve çıkış taraflarının tutarlı bir zamanlamaya sahip olması için giriş geri çağırma işlevini girdikten kısa bir süre sonra çıkış geri çağırma işlevini girin.

  • İlgili uç noktaların giriş ve çıkış tarafları için HAL ses arabelleği arasındaki faz farkını en aza indirmelidir.

  • Dokunma gecikmesini en aza indirmelidir.

  • Yük altında dokunma gecikmesi değişkenliğini (jitter) en aza indirmelidir.

Cihaz uygulamaları yukarıdaki koşulların tümünü karşılıyorsa:

Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:

Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakını atlayıp USB ana makine modunu destekleyen USB bağlantı noktaları içeriyorsa:

  • [C-3-1] USB ses sınıfını UYGULAMALI.
  • [C-3-2] USB ses sınıfını kullanan USB ana makine modu bağlantı noktasında 5 ölçümün ortalama mutlak sapması 5 milisaniyeden az olacak şekilde, ortalama 25 milisaniye veya daha az sürekli gidiş dönüş ses gecikmesi OLMALIDIR. (Bu, USB-3,5 mm adaptör ve ses geri döngü dongle'ı veya girişleri çıkışlara bağlayan patch kabloları olan bir USB ses arayüzü kullanılarak ölçülebilir.)
  • [C-SR-6] Bu gereksinimleri de destekleyen USB ses çevre birimleriyle kullanıldığında her yönde 8 kanala kadar eşzamanlı G/Ç, 96 kHz örnekleme hızı ve 24 bit veya 32 bit derinlik desteklemesi önemle ÖNERİLİR.
  • [C-SR-7] MMAP yolu üzerinden AAudio yerel ses API'sini kullanarak bu şart grubunu karşılamanız önemle ÖNERİLİR.

Cihaz uygulamalarında HDMI bağlantı noktası varsa:

  • En az bir yapılandırmada, bit derinliği kaybı veya yeniden örnekleme olmadan 20 bit veya 24 bit derinlikte ve 192 kHz'te stereo ve sekiz kanalda çıkış desteklenmelidir.

5.11. İşlenmemiş için yakalama

Android, android.media.MediaRecorder.AudioSource.UNPROCESSED ses kaynağı aracılığıyla işlenmemiş ses kaydı için destek içerir. OpenSL ES'de, kayıt hazır ayarı SL_ANDROID_RECORDING_PRESET_UNPROCESSED ile erişilebilir.

Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemeyi ve üçüncü taraf uygulamalarına sunmayı amaçlıyorsa:

  • [C-1-1] Desteği android.media.AudioManager PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED mülkü üzerinden bildirmelidir.

  • [C-1-2] Orta frekans aralığında yaklaşık olarak düz bir genlik-frekans karakteristiği GÖSTERMELİDİR: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 100 Hz ile 7.000 Hz arasında ±10 dB.

  • [C-1-3] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla düşük frekans aralığındaki genlik seviyelerini GÖSTERMELİDİR: Özellikle 5 z ile 100 Hz arasında ±20 dB.

  • [C-1-4] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla yüksek frekans aralığındaki genlik seviyelerini GÖSTERMELİDİR: Özellikle 7.000 Hz ile 22 KHz arasında ±30 dB.

  • [C-1-5] Ses giriş hassasiyeti, işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonda 94 dB ses basıncı seviyesinde (SPL) çalınan 1000 Hz sinüs dalga kaynağının 16 bitlik örnekler için 520 RMS (veya kayan nokta/çift hassasiyetli örnekler için -36 dB tam ölçek) yanıt vereceği şekilde AYARLANMALIDIR.

  • [C-1-6] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun sinyal-gürültü oranı (SNR) 60 dB veya daha yüksek OLMALIDIR. (SNR ise 94 dB SPL ile kendi kendine gürültünün eşdeğer SPL değeri (A ağırlıklı) arasındaki fark olarak ölçülür).

  • [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.

  • [C-1-8] Seviyeyi istenen aralığa getirmek için yolda seviye çarpanı dışında başka bir sinyal işleme (ör. otomatik kazanç kontrolü, yüksek geçiren filtre veya yankı iptali) OLMAMALIDIR. Başka bir deyişle:

    • [C-1-9] Mimaride herhangi bir nedenle sinyal işleme varsa devre dışı bırakılmalı ve sinyal yoluna etkili bir şekilde sıfır gecikme veya ek gecikme eklemelidir.
    • [C-1-10] Seviye çarpanı, yolda olmasına izin verilirken sinyal yolunda gecikme veya gecikmeli başlatma oluşturmamalıdır.

Tüm SPL ölçümleri, test edilen mikrofonun hemen yanında yapılır. Birden fazla mikrofon yapılandırması varsa bu koşullar her mikrofon için geçerlidir.

Cihaz uygulamaları android.hardware.microphone değerini belirtiyor ancak işlenmemiş ses kaynağını desteklemiyorsa:

  • [C-2-1] Destek eksikliğini doğru şekilde belirtmek için AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED) API yöntemi için null döndürülmelidir.
  • [C-SR-1], işlenmemiş kayıt kaynağının sinyal yolu için koşulların çoğunu karşılamak üzere İYİCE ÖNERİLMEYE DEVAM EDİYOR.

5.12. HDR video

Android 13, yakında yayınlanacak bir dokümanda açıklandığı gibi HDR teknolojilerini destekler.

Piksel biçimi

Bir video kod çözücü, COLOR_FormatYUVP010 desteğinin reklamını yapıyorsa:

  • [C-1-1] CPU tarafından okuma (ImageReader, MediaImage, ByteBuffer) için P010 biçimini DESTEKLEMELİDİR. Android 13'te P010, Y ve UV düzlemleri için keyfi adımlara izin verecek şekilde gevşetildi.

  • [C-1-2] P010 çıkış arabelleği, GPU tarafından örneklenebilmelidir (GPU_SAMPLING kullanımıyla ayrıldığında). Bu sayede uygulamalar GPU kompozisyonu ve özel ton eşleme yapabilir.

Bir video kod çözücü, COLOR_Format32bitABGR2101010 desteğinin reklamını yapıyorsa:

  • [C-2-1] Çıkış yüzeyi için RGBA_1010102 biçimini ve CPU tarafından okunabilir (ByteBuffer çıkışı) biçimi desteklemelidir.

Bir video kodlayıcı, COLOR_FormatYUVP010 desteğinin reklamını yapıyorsa:

  • [C-3-1] Giriş yüzeyi ve CPU'ya yazılabilir (ImageWriter, MediaImage, ByteBuffer) giriş için P010 biçimini DESTEKLEMELİDİR.

Bir video kodlayıcı, COLOR_Format32bitABGR2101010 desteğinin reklamını yapıyorsa:

  • [C-4-1] Giriş yüzeyi ve CPU'ya yazılabilir (ImageWriter, ByteBuffer) giriş için RGBA_1010102 biçimini DESTEKLEMELİDİR. Not: Çeşitli aktarım eğrileri arasında dönüştürme işlemi, kodlayıcılar için GEREKLİ DEĞİLDİR.

HDR Kayıt Koşulları

HDR profillerini destekleyen tüm video kodlayıcılar ve cihaz uygulamaları için:

  • [C-5-1] HDR meta verilerinin doğru olduğunu varsayMAYIN. Örneğin, kodlanmış karede pikseler en yüksek parlaklık seviyesinin üzerinde olabilir veya histogram kareyi temsil edici olmayabilir.

  • Kodlanmış akışlar için uygun HDR statik meta verileri oluşturmak üzere HDR dinamik meta verilerini toplamalıdır ve her kodlama oturumunun sonunda bu meta verileri yayınlamalıdır.

Cihaz uygulamaları, CamcorderProfile API'lerini kullanarak HDR çekimi destekliyorsa:

  • [C-6-1] Camera2 API'leri üzerinden HDR çekimi de desteklemelidir.

  • [C-6-2] Desteklenen her HDR teknolojisi için en az bir donanım hızlandırmalı video kodlayıcı desteklenmelidir.

  • [C-6-3] HLG çekimi (en azından) desteklemelidir.

  • [C-6-4] HDR meta verilerinin (HDR teknolojisi için geçerliyse) çekilen video dosyasına yazılmasını desteklemelidir. AV1, HEVC ve DolbyVision için bu, meta verilerin kodlanmış bit akışına eklenmesi anlamına gelir.

  • [C-6-5] P010 ve COLOR_FormatYUVP010'u DESTEKLEMELİDİR.

  • [C-6-6] Kaydedilen profilin varsayılan donanım hızlandırmalı kod çözücüsünde HDR'den SDR'ye ton eşleme desteklenmelidir. Diğer bir deyişle, bir cihaz HDR10+ HEVC'yi yakalayabiliyorsa varsayılan HEVC kod çözücü, yakalanan akışta SDR'de kod çözme işlemini YAPABİLMELİDİR.

HDR düzenleme şartları

Cihaz uygulamaları HDR düzenlemeyi destekleyen video kodlayıcılar içeriyorsa:

  • HDR meta verileri mevcut olmadığında bunları oluşturmak için minimum gecikme süresi KULLANMALIDIR ve meta verilerin bazı karelerde mevcut olduğu, bazılarında ise mevcut olmadığı durumları sorunsuz bir şekilde İŞLEMELİDİR. Bu meta veriler DOĞRU OLMALIDIR (ör. karenin gerçek pik parlaklığını ve histogramini temsil etmelidir).

Cihaz uygulaması FEATURE_HdrEditing'ü destekleyen codec'ler içeriyorsa bu codec'ler:

  • [C-7-1] En az bir HDR profili desteklemelidir.

  • [C-7-2] Söz konusu codec'in reklamını yaptığı tüm HDR profilleri için FEATURE_HdrEditing desteklenmelidir. Başka bir deyişle, HDR meta verilerini kullanan ve desteklenen tüm HDR profilleri için HDR meta verisi oluşturulmadığında HDR meta verisi oluşturma desteklenmelidir.

  • [C-7-3] Aşağıdaki video kodlayıcı giriş biçimlerini desteklemelidir. Bu biçimler, kod çözülmüş HDR sinyalini tamamen korur:

    • Hem giriş yüzeyi hem de ByteBuffer için RGBA_1010102 (hedef aktarım eğrisinde zaten mevcuttur) ve COLOR_Format32bitABGR2101010 desteğinin reklamını YAPMALIDIR.

Cihaz uygulaması FEATURE_HdrEditing özelliğini destekleyen codec'leri içeriyorsa cihaz:

  • [C-7-4] EXT_YUV_target OpenGL uzantısı için destek reklamı YAPILMALIDIR.

6. Geliştirici Araçları ve Seçenekleri Uyumluluğu

6.1. Geliştirici araçları

Cihaz uygulamaları:

  • [C-0-1] Android SDK'sında sağlanan Android Geliştirici Araçları'nı DESTEKLEMELİDİR.
  • Android Debug Bridge (adb)

    • [C-0-2] Android SDK'da belirtildiği gibi adb'yi ve AOSP'de sağlanan, dumpsys dahil olmak üzere uygulama geliştiriciler tarafından kullanılabilen kabuk komutlarını desteklemelidir. cmd stats
    • [C-0-11] cmd testharness kabuk komutunu DESTEKLEMELİDİR. Kalıcı veri bloğu olmayan önceki bir Android sürümünden cihaz uygulamalarını yükseltmek C-0-11'den muaf tutulabilir.
    • [C-0-3] dumpsys komutu aracılığıyla günlüğe kaydedilen cihaz sistem etkinliklerinin (batterystats , diskstats, fingerprint, graphicsstats, netstats, notification, procstats) biçimini veya içeriğini DEĞİŞTİRMEMELİDİR.
    • [C-0-10] Aşağıdaki etkinlikleri eksiksiz olarak kaydetmeli ve cmd stats kabuk komutu ile StatsManager System API sınıfı tarafından erişilebilir ve kullanılabilir hale getirmelidir.
      • ActivityForegroundStateChanged
      • AnomalyDetected
      • AppBreadcrumbReported
      • AppCrashOccurred
      • AppStartOccurred
      • BatteryLevelChanged
      • BatterySaverModeStateChanged
      • BleScanResultReceived
      • BleScanStateChanged
      • ChargingStateChanged
      • DeviceIdleModeStateChanged
      • ForegroundServiceStateChanged
      • GpsScanStateChanged
      • JobStateChanged
      • PluggedStateChanged
      • ScheduledJobStateChanged
      • ScreenStateChanged
      • SyncStateChanged
      • SystemElapsedRealtime
      • UidProcessStateChanged
      • WakelockStateChanged
      • WakeupAlarmOccurred
      • WifiLockStateChanged
      • WifiMulticastLockStateChanged
      • WifiScanStateChanged
    • [C-0-4] Cihaz tarafındaki adb daemon'ın varsayılan olarak etkin olmaması VE Android Hata Ayıklama Köprüsü'nü açmak için kullanıcının erişebileceği bir mekanizmanın olması GEREKİR.
    • [C-0-5] MUST support secure adb. Android, güvenli adb desteği içerir. Güvenli adb, kimliği doğrulanmış bilinen ana makinelerde adb'yi etkinleştirir.
    • [C-0-6] adb'nin ana makineden bağlanmasına izin veren bir mekanizma YETERLİ olmalıdır. Özellikle:

    USB bağlantı noktası olmayan cihaz uygulamaları çevre birimi modunu destekliyorsa:

    • [C-3-1] adb'yi yerel alan ağı (ör. Ethernet veya kablosuz ağ) üzerinden UYGULAMALIDIR.
    • [C-3-2] Geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows 7, 8 ve 10 sürücüleri ZORUNLUDUR.

    Cihaz uygulamaları, kablosuz veya Ethernet üzerinden ana makineyle adb bağlantılarını destekliyorsa:

    • [C-4-1] AdbManager#isAdbWifiSupported() yönteminin true döndürmesi GEREKİR.

    Cihaz uygulamaları, kablosuz veya Ethernet üzerinden ana makineyle adb bağlantılarını destekliyorsa ve en az bir kamera içeriyorsa:

    • [C-5-1] AdbManager#isAdbWifiQrSupported() yönteminin true döndürmesi GEREKİR.
  • Dalvik Debug Monitor Service (ddms)

    • [C-0-7] Android SDK'sında belirtildiği gibi tüm ddms özelliklerini DESTEKLEMELİDİR. ddms, adb kullandığından ddms desteği varsayılan olarak devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Hata Ayıklama Köprüsü'nü etkinleştirdiğinde desteklenmelidir.
  • SysTrace

    • [C-0-9] Android SDK'da belirtildiği gibi systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak etkin olmamalıdır ve Systrace'i etkinleştirmek için kullanıcının erişebileceği bir mekanizma OLMALIDIR.
  • Perfetto

    • [C-SR-1] Kabuk kullanıcısına, cmdline'in perfetto dokümanlarına uygun olduğu bir /system/bin/perfettoikili dosyası göstermek önemle ÖNERİLİR.
    • [C-SR-2] Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırmasını giriş olarak kabul etmesi için perfetto ikilisinin KESİNLİKLE ÖNERİLDİĞİ.
    • [C-SR-3] Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izlemesini çıkış olarak yazması için perfetto ikilisinin ÇOK ÖNEMLİ ÖNERİLİR.
    • [C-SR-4] Perfetto dokümanlarında açıklanan en az veri kaynağının, perfetto ikili dosyası aracılığıyla sağlanmasının önemle ÖNERİLDİĞİ.
  • Düşük Bellek Öldürücü

    • [C-0-12] Bir uygulama Düşük Bellek Öldürücü tarafından sonlandırıldığında statsd günlüğüne LMK_KILL_OCCURRED_FIELD_NUMBER atomu yazılmalıdır.
  • Test Bandı Modu Cihaz uygulamaları cmd testharness kabuk komutunu destekliyorsa ve cmd testharness enable çalıştırılıyorsa:

    • [C-2-1] MUST return true for ActivityManager.isRunningInUserTestHarness()
    • [C-2-2] Test bandı modu, Test bandı modu belgelerinde açıklandığı şekilde UYGULANMALIDIR.
  • GPU çalışma bilgileri

    Cihaz uygulamaları:

    • [C-0-13] power/gpu_work_period çekirdek izleme noktası tarafından döndürülen toplu GPU çalışma verilerini görüntülemek için dumpsys gpu --gpuwork kabuk komutunu UYGULAMALIDIR veya izleme noktası desteklenmiyorsa hiçbir veri görüntülememelidir. AOSP uygulaması frameworks/native/services/gpuservice/gpuwork/.

Cihaz uygulamaları, android.hardware.vulkan.version özellik işaretleri aracılığıyla Vulkan 1.0 veya sonraki sürümlerin desteklendiğini bildirirse:

  • [C-1-1] Uygulama geliştiricinin GPU hata ayıklama katmanlarını etkinleştirmesi/devre dışı bırakması için bir imkân sağlanmalıdır.
  • [C-1-2] GPU hata ayıklama katmanları etkinleştirildiğinde, vkEnumerateInstanceLayerProperties() ve vkCreateInstance() API yöntemlerini desteklemek için hata ayıklanabilir uygulamaların ana dizininde bulunan harici araçlar tarafından sağlanan kitaplıklardaki katmanları (ör. platformun veya uygulama paketinin parçası olmayan) listelemelidir.

6.2. Geliştirici seçenekleri

Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırması için destek içerir.

Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sunmalıdır. Bu uygulamalar:

  • [C-0-1] Uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS intent'ini UYGUNLAMALIDIR. Yukarı akış Android uygulaması, Geliştirici Seçenekleri menüsünü varsayılan olarak gizler ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesine yedi (7) kez bastıktan sonra Geliştirici Seçenekleri'ni başlatmasını sağlar.
  • [C-0-2] Varsayılan olarak Geliştirici Seçenekleri'ni gizlemelidir.
  • [C-0-3] Geliştirici Seçenekleri'ni etkinleştirmek için bir üçüncü taraf uygulamasına diğerine kıyasla tercihli muamele yapmayan net bir mekanizma SAĞLANMALIDIR. Geliştirici Seçenekleri'nin nasıl etkinleştirileceğini açıklayan herkese açık bir doküman veya web sitesi sağlanmalıdır. Bu doküman veya web sitesi, Android SDK dokümanlarından bağlantı verilebilir OLMALIDIR.
  • Geliştirici Seçenekleri etkinleştirildiğinde ve kullanıcının güvenliğiyle ilgili endişeler olduğunda kullanıcıya sürekli bir görsel bildirim gösterilmelidir.
  • Kullanıcının güvenliğinin önemli olduğu senaryolarda dikkat dağıtıcı durumları önlemek için menüyü görsel olarak gizleyerek veya devre dışı bırakarak Geliştirici Seçenekleri menüsüne erişimi geçici olarak SINIRLANDIRABİLİR.

7. Donanım Uyumluluğu

Bir cihazda, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir donanım bileşeni varsa:

  • [C-0-1] Cihaz uygulaması, bu API'yi Android SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.

SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime geçiyorsa ve cihaz uygulamasında bu bileşen yoksa:

  • [C-0-2] Bileşen API'leri için tam sınıf tanımları (SDK tarafından belirtildiği şekilde) yine de sunulmalıdır.
  • [C-0-3] API'nin davranışları makul bir şekilde hiçbir işlem yapmadan uygulanmalıdır.
  • [C-0-4] API yöntemleri, SDK dokümanlarında izin verildiğinde null değerler DÖNDÜRMELİDİR.
  • [C-0-5] API yöntemleri, SDK dokümanlarında null değerlere izin verilmeyen sınıfların işlem yapmayan uygulamalarını DÖNDÜRMELİDİR.
  • [C-0-6] API yöntemleri, SDK dokümanlarında belirtilmeyen istisnalar ÇIKARTMAMALIDIR.
  • [C-0-7] Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki getSystemAvailableFeatures() ve hasSystemFeature(String) yöntemleri aracılığıyla tutarlı bir şekilde doğru donanım yapılandırma bilgilerini bildirmelidir.

Bu koşulların geçerli olduğu bir senaryoya tipik bir örnek telefon API'sidir: Telefon olmayan cihazlarda bile bu API'ler makul bir şekilde no-op olarak uygulanmalıdır.

7.1. Görüntü ve Grafikler

Android, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarındaiyi çalışması için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan özellikler içerir. Android uyumlu ekran, Android Developers - Screen compatibility overview (Android Developers - Ekran uyumluluğuna genel bakış) bölümünde, bu bölümde (7.1) ve alt bölümlerinde açıklanan tüm davranışları ve API'leri, ayrıca bu CDD'nin 2. bölümünde açıklanan cihaz türüne özgü ek davranışları uygulayan bir ekrandır. Tüm üçüncü taraf Android uyumlu uygulamaların çalışabileceği Android uyumlu ekranlarda, cihaz uygulamalarında bu API'ler ve davranışlar bu bölümde ayrıntılı olarak açıklandığı şekilde düzgün şekilde uygulanmalıdır.

Yeni şartlar başlatma

Cihaz uygulamaları:

  • [C-0-1] Varsayılan olarak üçüncü taraf uygulamalarını yalnızca Android uyumlu ekranlarda oluşturmalıdır.

Yeni şartların sona ermesi

Bu bölümdeki şartlarda referans verilen birimler aşağıdaki şekilde tanımlanır:

  • Fiziksel çapraz boyut. Ekranın aydınlatılmış kısmının iki karşıt köşesi arasındaki mesafe (inç cinsinden).
  • inç başına nokta sayısı (dpi)yoğunluğu. 1 inçlik doğrusal yatay veya dikey bir açıklık tarafından kapsanan piksel sayısıdır. İnç başına piksel (ppi veya dpi) olarak ifade edilir. dpi ppi ve dpi değerlerinin listelendiği yerlerde, hem yatay hem de dikey dpi, listelenen aralığa girmelidir.
  • en boy oranı. Uzun boyuttaki piksellerin ekranın kısa boyutuna oranı. Örneğin, 480x854 piksel boyutunda bir ekran için 854/480 = 1, 779 veya yaklaşık olarak "16:9" değeri elde edilir.
  • yoğunluktan bağımsız piksel (dp). 160 piksel yoğunluğunda160 dpi ekran ekran yoğunluğu için normalleştirilmiş sanal piksel birimi. Belirli bir yoğunluk d ve p sayıda piksel için yoğunluktan bağımsız piksel sayısı dp, şu şekilde hesaplanır: piksel sayısı = dp * (yoğunluk/160) dp = (160 / d) * p .

7.1.1. Ekran Yapılandırması

7.1.1.1. Ekran Boyutu ve Şekli

Android kullanıcı arayüzü çerçevesi, çeşitli mantıksal ekran düzeni boyutlarını destekler ve uygulamaların SCREENLAYOUT_SIZE_MASK ile Configuration.smallestScreenWidthDp kullanarak Configuration.screenLayout üzerinden mevcut yapılandırmanın ekran düzeni boyutunu sorgulamasına olanak tanır.

Cihaz uygulamaları:

  • [C-0-1] Android SDK dokümanlarında tanımlandığı şekilde Configuration.screenLayout için doğru sayfa düzeni boyutunu bildirmelidir. Daha açık belirtmek gerekirse, cihaz uygulamaları aşağıdaki gibi doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını bildirmelidir:

    • Configuration.uiMode değeri UI_MODE_TYPE_WATCH dışında bir değer olarak ayarlanmış ve Configuration.screenLayout için small boyutu raporlayan cihazların en az 426 dp x 320 dp olması GEREKİR.
    • Configuration.screenLayout için normal boyutu bildiren cihazların en az 480 dp x 320 dp olması GEREKİR.
    • Configuration.screenLayout için large boyutu bildiren cihazların en az 640 dp x 480 dp olması GEREKİR.
    • Configuration.screenLayout için xlarge boyutu bildiren cihazların en az 960 dp x 720 dp olması GEREKİR.
  • [C-0-2] AndroidManifest.xml dosyasında <supports-screens> özelliği aracılığıyla uygulamaların ekran boyutları için belirtilen desteği Android SDK dokümanlarında açıklandığı şekilde doğru şekilde dikkate ALMALIDIR.

  • Yuvarlatılmış köşeleri olan Android uyumlu ekranlara sahip OLABİLİR.

Cihaz uygulamaları UI_MODE_TYPE_NORMAL boyut yapılandırmasını destekliyorsa ve Android uyumlu bu ekranları oluşturmak için yuvarlatılmış köşelere sahip fiziksel ekranlar kullanıyorsa:

  • [C-1-1] Bu tür her ekran için aşağıdaki şartlardan en az birinin karşılandığından EMİN OLMALIDIR:

    • Yuvarlatılmış köşelerin yarıçapı 38 dp'den az veya buna eşit olmalıdır.
    • Mantıksal ekranın her köşesine 1518 dp x 1518 dp kutusu sabitlendiğinde, her kutunun en az bir pikseli ekranda görünür.
  • Dikdörtgen köşeleri olan görüntüleme moduna geçmek için kullanıcılara kolaylık sağlayan bir öğe DAHİL OLMALIDIR.

Yeni şartlar başlatma

Cihaz uygulamaları yalnızca NO_KEYS klavye yapılandırmasını destekliyorsa ve UI_MODE_TYPE_NORMAL kullanıcı arayüzü modu yapılandırması için destek bildirmek istiyorsa:

  • [C-4-1] Ekrandaki kesitler hariç en az 596 dp x 384 dp veya daha büyük bir düzen boyutuna sahip OLMALIDIR.

Yeni şartların sona ermesi

Cihaz uygulamaları, katlanabilir Android uyumlu ekranlar veya birden fazla ekran paneli arasında katlanabilir menteşe içeren ve bu ekranları üçüncü taraf uygulamalarını oluşturmak için kullanan cihazlar:

Cihaz uygulamaları katlanabilir Android uyumlu ekranlar veya birden fazla ekran paneli arasında katlanabilir bir menteşe içeriyorsa ve menteşe veya katlama, tam ekran bir uygulama penceresini geçiyorsa:

  • [C-3-1] Uygulamaya, menteşe veya katlama öğesinin konumunu, sınırlarını ve durumunu uzantılar ya da yan API'ler aracılığıyla bildirmelidir.

Yan araç veya uzantı API'lerini doğru şekilde uygulama hakkında ayrıntılı bilgi için Window Manager Jetpack'in herkese açık dokümanlarına bakın.

Yeni şartlar başlatma

Cihaz uygulamaları, katlanabilir bir veya daha fazla Android uyumlu ekran alanı ya da birden fazla Android uyumlu ekran paneli alanı arasında katlanabilir bir menteşe içeriyorsa ve bu ekran alanlarını uygulamalara sunuyorsa:

  • [C-4-1] WindowManager Extensions bölümünde açıklandığı şekilde, Window Manager Extensions API düzeyinin doğru sürümünü UYGULAMALIDIR.

Yeni şartların sona ermesi

7.1.1.2. Ekran En Boy Oranı

Android uyumlu ekranların fiziksel ekranının en boy oranıyla ilgili herhangi bir kısıtlama olmasa da üçüncü taraf uygulamalarının oluşturulduğu mantıksal ekranın en boy oranı(view.Display API'leri ve Yapılandırma API'leri aracılığıyla bildirilen yükseklik ve genişlik değerlerinden türetilebilir) aşağıdaki koşulları karşılamalıdır:

  • [C-0-1] Configuration.uiMode değeri UI_MODE_TYPE_NORMAL olarak ayarlanmış cihaz uygulamalarında, uygulama aşağıdaki koşullardan birini karşılamıyorsa en boy oranı değeri 1,86'dan (yaklaşık 16:9) küçük veya bu değere eşit olmalıdır:

    • Uygulama, android.max_aspect meta veri değeri aracılığıyla daha büyük bir ekran en boy oranını desteklediğini beyan etti.
    • Uygulama, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabilir olduğunu belirtir.
    • Uygulama, API düzeyi 24 veya sonraki sürümleri hedefliyor ve izin verilen en boy oranını kısıtlayacak bir android:maxAspectRatio beyan etmiyor.
  • [C-0-3] Configuration.uiMode değerinin UI_MODE_TYPE_WATCH olarak ayarlandığı cihaz uygulamalarında en boy oranı değeri 1,0 (1:1) olarak AYARLANMIŞ OLMALIDIR.

7.1.1.3. Ekran Yoğunluğu

Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar.

Cihaz Uygulamaları:

  • [C-0-1] Cihaz uygulamalarında varsayılan olarak, DENSITY_DEVICE_STABLE API üzerinden DisplayMetrics listesinde yer alan Android çerçeve yoğunluklarından yalnızca biri bildirilmelidir ve bu değer her fiziksel ekran için statik bir değer olmalıdır. Hiçbir zaman değiştirilMEMELİDİR; ancak Bununla birlikte cihaz, ilk önyüklemeden sonra ayarlanan kullanıcı tarafından yapılan ekran yapılandırması değişikliklerine (ör. ekran boyutu) göre farklı bir kendiliğinden yoğunluk DisplayMetrics.density bildirEBİLİR.

  • Cihaz uygulamaları, mantıksal yoğunluk bildirilen ekran boyutunu desteklenen minimum boyutun altına düşürmediği sürece, ekranın fiziksel yoğunluğuna sayısal olarak en yakın standart Android çerçeve yoğunluğunu tanımlamalıdır. Fiziksel yoğunluğa sayısal olarak en yakın standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuna neden oluyorsa cihaz uygulamaları bir sonraki en düşük standart Android çerçeve yoğunluğunu bildirmelidir.

Yeni şartlar başlatma

  • Sayısal olarak ekranın fiziksel yoğunluğuna en yakın standart Android çerçeve yoğunluğunu veya bir el cihazının eşdeğer açısal görüş alanı ölçümleriyle eşleşen bir değeri tanımlamalıdır.

Yeni şartların sona ermesi

Cihaz uygulamalarında cihazın ekran boyutunu değiştirme olanağı sunuluyorsa şunlar geçerlidir:

  • [C-1-1] Ekran boyutu 1,5 kattan daha fazla ölçeklendirilMEMELİ Ekranı ölçeklendirmemeli DENSITY_DEVICE_STABLE doğal yoğunluktan daha büyük veya 320 dp'den (kaynak tanımlayıcısı sw320dp'ye eşdeğer) daha küçük etkili minimum ekran boyutu oluşturmamalıdır.
  • [C-1-2] Ekran boyutu, DENSITY_DEVICE_STABLE doğal yoğunluğunun 0,85 katından daha küçük olacak şekilde ölçeklenmemelidir.
  • İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için, doğal görüntüleme seçeneklerinin aşağıdaki ölçeklendirmesinin sağlanması ÖNERİLİR (yukarıda belirtilen sınırlara uyulmalıdır)
    • Küçük: 0,85x
    • Varsayılan: 1x (yerel ekran ölçeği)
    • Büyük: 1,15x
    • Daha büyük: 1,3 kat
    • En büyük 1,45x

7.1.2. Görüntülü Reklam Metrikleri

Cihaz uygulamaları Android uyumlu ekranları veya Android uyumlu ekranlara video çıkışı içeriyorsa:

  • [C-1-1] android.util.DisplayMetrics API'de tanımlanan tüm Android uyumlu görüntüleme metrikleri için doğru değerleri ORTAYA KOYMALIDIR.

Cihaz uygulamaları yerleşik ekran veya video çıkışı içermiyorsa:

  • [C-2-1] Android uyumlu ekranın, taklit edilen varsayılan view.Display için android.util.DisplayMetrics API'sinde tanımlandığı şekilde doğru değerlerini bildirmelidir.

7.1.3. Ekran Yönlendirme

Cihaz uygulamaları:

  • [C-0-1] Desteklenen ekran yönlerini (android.hardware.screen.portrait ve/veya android.hardware.screen.landscape) bildirmeli ve en az bir desteklenen yön bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yatay ekrana sahip bir cihaz yalnızca 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] Dikey veya yatay ekran yönüne göre uygulamalar tarafından dinamik yönü DESTEKLEMELİDİR. Yani cihaz, uygulamanın belirli bir ekran yönü isteğini dikkate almalıdır.
  • [C-1-2] Yön değiştirilirken bildirilen ekran boyutu veya yoğunluğu DEĞİŞTİRİLMEMELİDİR.
  • Varsayılan olarak dikey veya yatay yönü seçebilir.

7.1.4. 2D ve 3D Grafik Hızlandırma

7.1.4.1 OpenGL ES

Cihaz uygulamaları:

  • [C-0-1] Yönetilen API'ler (ör. GLES10.getString() yöntemi) ve yerel API'ler aracılığıyla desteklenen OpenGL ES sürümlerini (1.1, 2.0, 3.0, 3.1, 3.2) DOĞRU şekilde tanımlamalıdır.
  • [C-0-2] Desteklendiğini belirttikleri her OpenGL ES sürümü için ilgili tüm yönetilen API'ler ve yerel API'ler için destek DAHİL OLMALIDIR.

Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:

  • [C-1-1] Android SDK dokümanlarında belirtildiği gibi hem OpenGL ES 1.1 hem de 2.0'ı desteklemelidir.
  • [C-SR-1] OpenGL ES 3.1'i desteklemeniz önemle ÖNERİLİR.
  • OpenGL ES 3.2'yi DESTEKLEMELİDİR.

OpenGL ES dEQP testleri, her biri ilişkili bir tarih/sürüm numarasına sahip olan çeşitli test listelerine ayrılır. Bunlar external/deqp/android/cts/main/glesXX-main-YYYY-MM-DD.txt adresindeki Android kaynak ağacındadır. Kendi beyanı doğrultusunda OpenGL ES'yi destekleyen bir cihaz, bu seviye ve önceki seviyelerdeki tüm test listelerindeki dEQP testlerini geçebileceğini belirtir.

Cihaz uygulamaları OpenGL ES sürümlerinden herhangi birini destekliyorsa:

  • [C-2-1] Uygulamaya koydukları diğer OpenGL ES uzantılarını OpenGL ES yönetilen API'ler 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-2-3] android.software.opengles.deqp.level özellik işareti aracılığıyla desteklenen OpenGL ES dEQP testlerinin maksimum sürümünü bildirmelidir.
  • [C-2-4] android.software.opengles.deqp.level özellik işaretinde bildirildiği gibi en az 132383489 sürümünü (1 Mart 2020'den itibaren) desteklemelidir.
  • [C-2-5] Desteklenen her OpenGL ES sürümü için 132383489 sürümü ile android.software.opengles.deqp.level özellik işaretinde belirtilen sürüm arasındaki test listelerindeki tüm OpenGL ES dEQP testlerini GEÇMELİDİR.
  • [C-SR-2] EGL_KHR_partial_update ve OES_EGL_image_external uzantılarının desteklenmesi önemle ÖNERİLİR.
  • Destekledikleri ve genellikle tedarikçiye özgü olan tüm doku sıkıştırma biçimlerini getString() yöntemi aracılığıyla doğru şekilde bildirmelidir.

  • EGL_IMG_context_priority ve EGL_EXT_protected_content uzantılarını DESTEKLEMELİDİR.

Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2 desteğini belirtiyorsa:

  • [C-3-1] libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev simgelerine ek olarak bu sürümlerin ilgili işlev simgelerini DE dışa aktarmalıdır.
  • [C-SR-3] OES_EGL_image_external_essl3 uzantısını desteklemeniz önemle ÖNERİLİR.

Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa:

  • [C-4-1] OpenGL ES Android Uzatma Paketi'nin tamamını desteklemelidir.

Cihaz uygulamaları OpenGL ES Android Uzatma Paketi'ni tamamen destekliyorsa:

  • [C-5-1] Desteği android.hardware.opengles.aep özellik işareti aracılığıyla tanımlamalıdır.

Cihaz uygulamaları EGL_KHR_mutable_render_buffer uzantısını destekliyorsa:

  • [C-6-1] EGL_ANDROID_front_buffer_auto_refresh uzantısını da desteklemelidir.
7.1.4.2 Vulkan

Android, yüksek performanslı 3D grafikler için düşük maliyetli, platformlar arası bir API olan Vulkan desteği içerir.

Cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:

  • [C-SR-1] Vulkan 1.3 desteğinin eklenmesi önemle ÖNERİLİR.
  • [C-4-1] Vulkan varyant sürümünü DESTEKLEMEMELİDİR (yani Vulkan ana sürümünün varyant kısmı SIFIR OLMALIDIR).

Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:

  • [C-SR-2] Vulkan 1.3 desteğinin eklenmesi önemle ÖNERİLİR.

Vulkan dEQP testleri, her biri ilişkili bir tarih/sürüme sahip olan çeşitli test listelerine ayrılır. Bunlar external/deqp/android/cts/main/vk-main-YYYY-MM-DD.txt adresindeki Android kaynak ağacındadır. Kendi beyanı doğrultusunda Vulkan'ı destekleyen bir cihaz, bu seviye ve önceki tüm test listelerindeki dEQP testlerini geçebileceğini gösterir.

Cihaz uygulamaları Vulkan 1.0 veya sonraki sürümler için destek içeriyorsa:

  • [C-1-1] android.hardware.vulkan.level ve android.hardware.vulkan.version özellik işaretleriyle doğru tam sayı değerini bildirmelidir.
  • [C-1-2] Vulkan doğal API'si vkEnumeratePhysicalDevices() için en az bir VkPhysicalDevice listelenmeli.
  • [C-1-3] Listelenen her VkPhysicalDevice için Vulkan 1.0 Vulkan 1.1 API'lerini eksiksiz şekilde uygulamalıdır.
  • [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 listelemeLİDİR.
  • [C-1-5] Uygulama paketi dışındaki kitaplıklar tarafından sağlanan katmanları listelememeli veya Vulkan API'yi izlemenin ya da yakalamanın başka yollarını sağlamamalıdır. Bunun için uygulamanın android:debuggable özelliği true olarak ayarlanmış veya meta verileri com.android.graphics.injectLayers.enable true olarak ayarlanmış olmalıdır .
  • [C-1-6] Desteklediği tüm uzantı dizelerini Vulkan yerel API'leri aracılığıyla bildirmeli ve tam olarak desteklemediği uzantı dizelerini bildirmemelidir.
  • [C-1-7] VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain ve VK_KHR_incremental_present uzantılarını DESTEKLEMELİDİR.
  • [C-1-8] android.software.vulkan.deqp.level özellik işareti aracılığıyla desteklenen Vulkan dEQP Testlerinin maksimum sürümünü bildirmelidir.
  • [C-1-9] android.software.vulkan.deqp.level özellik işaretinde bildirildiği 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 listelerindeki tüm Vulkan dEQP testlerini GEÇMELİDİR.
  • [C-1-11] VK_KHR_video_queue, VK_KHR_video_decode_queue veya VK_KHR_video_encode_queue uzantılarının desteğini dizine eklememelidir.
  • [C-SR-3] VK_KHR_driver_properties ve VK_GOOGLE_display_timing uzantılarının desteklenmesi önemle ÖNERİLİR.

  • VkPhysicalDeviceProtectedMemoryFeatures ve VK_EXT_global_priority desteklenmelidir.

  • [C-1-12] VK_KHR_performance_query uzantısı için desteği dizine eklememelidir.

Yeni şartlar başlatma

  • [C-SR-5] VkPhysicalDeviceProtectedMemoryFeatures.protectedMemory ve VK_EXT_global_priority'ü desteklemeniz önemle ÖNERİLİR.

  • [C-SR-6] HWUI ile SkiaVk kullanılması önemle ÖNERİLİR.

Yeni şartların sona ermesi

Cihaz uygulamaları Vulkan 1.0 desteği içermiyorsa:

  • [C-2-1] Vulkan özellik işaretlerinden hiçbirini (ör. android.hardware.vulkan.level, android.hardware.vulkan.version) İLAN ETMEmelidir.
  • [C-2-2] Vulkan yerel API için VkPhysicalDevice listelenmemelidirvkEnumeratePhysicalDevices().

Cihaz uygulamaları Vulkan 1.1 desteği içeriyorsa ve burada açıklanan Vulkan özellik işaretlerinden herhangi birini belirtiyorsa:

  • [C-3-1] SYNC_FD harici semafor ve tutamaç türleri ile VK_ANDROID_external_memory_android_hardware_buffer uzantısı için destek sunmalıdır.

Yeni şartlar başlatma

  • [C-SR-7] VK_KHR_external_fence_fd uzantısını üçüncü taraf uygulamaların kullanımına sunmanız ve uygulamanın, burada açıklandığı şekilde çit yükü dışa aktarmasını ve POSIX dosya tanımlayıcılarından çit yükü içe aktarmasını etkinleştirmeniz önemle ÖNERİLİR.

Yeni şartların sona ermesi

7.1.4.3 RenderScript
  • [C-0-1] Cihaz uygulamalarında, Android SDK dokümanlarında ayrıntılı olarak açıklandığı gibi Android RenderScript desteklenmelidir.
7.1.4.4 2D Grafik Hızlandırma

Android, uygulamaların android:hardwareAccelerated manifest etiketi veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini beyan etmelerini sağlayan bir mekanizma içerir.

Cihaz uygulamaları:

  • [C-0-1] Varsayılan olarak donanım hızlandırmayı etkinleştirmeli ve geliştirici android:hardwareAccelerated="false" değerini ayarlayarak veya donanım hızlandırmayı doğrudan Android View API'leri aracılığıyla devre dışı bırakarak donanım hızlandırmayı devre dışı bırakmalıdır.
  • [C-0-2] Donanım hızlandırma ile ilgili Android SDK dokümanlarıyla tutarlı bir davranış sergilemelidir.

Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını bir kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak doğrudan entegre etmesine olanak tanıyan bir TextureView nesnesi içerir.

Cihaz uygulamaları:

  • [C-0-3] TextureView API'yi DESTEKLEMELİ ve yayın öncesi Android uygulamasıyla tutarlı davranış sergileMELİDİR.
7.1.4.5 Geniş renk gamına sahip ekranlar

Cihaz uygulamaları, Configuration.isScreenWideColorGamut() aracılığıyla geniş renk gamına sahip ekranlar için destek iddiasında bulunuyorsa:

  • [C-1-1] Renk kalibre edilmiş bir ekrana sahip OLMALIDIR.
  • [C-1-2] CIE 1931 xyY alanında sRGB renk gamını tamamen kapsayan bir ekrana sahip OLMALIDIR.
  • [C-1-3] CIE 1931 xyY alanında DCI-P3'ün en az% 90'ı kadar alanı olan bir ekrana sahip OLMALIDIR.
  • [C-1-4] OpenGL ES 3.1 veya 3.2'yi desteklemeli ve düzgün şekilde bildirmelidir.
  • [C-1-5] EGL_KHR_no_config_context, EGL_EXT_pixel_format_float, EGL_KHR_gl_colorspace, EGL_EXT_gl_colorspace_scrgb, EGL_EXT_gl_colorspace_scrgb_linear, EGL_EXT_gl_colorspace_display_p3, EGL_EXT_gl_colorspace_display_p3_linear ve EGL_EXT_gl_colorspace_display_p3_passthrough uzantılarına yönelik destek reklamı YAPMALIDIR.
  • [C-SR-1] GL_EXT_sRGB için DESTEKLENMESİ KESİNLİKLE ÖNERİLİR.

Buna karşılık, cihaz uygulamaları geniş renk gamlı ekranları desteklemiyorsa:

  • [C-2-1] Ekran renk gamı tanımlanmamış olsa da CIE 1931 xyY alanında sRGB'nin% 100'ünü veya daha fazlasını KAPLAYABİLİR.

7.1.5. Eski Uygulama Uyumluluğu Modu

Android, çerçevenin ekran boyutundan bağımsızlık özelliğinin bulunmadığı eski Android sürümleri için geliştirilmemiş eski uygulamaların yararına, çerçevenin "normal" ekran boyutuna eşdeğer (320 dp genişlik) bir modda çalıştığı bir "uyumluluk modu" belirtir.

7.1.6. Ekran Teknolojisi

Android platformu, uygulamaların Android uyumlu bir ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. Bu belgede özel olarak izin verilmediği sürece cihazlar, Android SDK'sı tarafından tanımlanan bu API'lerin tümünü DESTEKLEMELİDİR.

Bir cihaz uygulamasının Android uyumlu tüm ekranları:

  • [C-0-1] 16 bit renkli grafik oluşturabilmelidir.
  • 24 bit renkli grafikler görüntüleyebilen ekranları DESTEKLEMELİDİR.
  • [C-0-2] Animasyonları oluşturabilmelidir.
  • [C-0-3] Piksel en boy oranı (PAR) 0,9 ile 1,15 arasında OLMALIDIR. Yani piksel en boy oranı, %10-15 toleransla kare (1,0) değerine yakın OLMALIDIR.

7.1.7. İkincil Ekranlar

Android, medya paylaşımı özelliklerini etkinleştirmek için ikincil Android uyumlu ekranlar ve harici ekranlara erişmek için geliştirici API'leri desteği içerir.

Cihaz uygulamaları kablolu, kablosuz veya yerleşik ek ekran bağlantısı üzerinden harici ekranı destekliyorsa:

  • [C-1-1] DisplayManager sistem hizmetini ve API'sini Android SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.

7.2. Giriş Cihazları

Cihaz uygulamaları:

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 bölümünde belirtilen biçimlerden biriyle eşleşmeyen bir donanım klavyesi İÇERMEMELİDİR (QWERTY veya 12 tuşlu).
  • Ek yazılım klavyesi uygulamaları DAHİL OLMALIDIR.
  • Donanım klavyesi DAHİL OLABİLİR.

7.2.2. Dokunmatik olmayan gezinme

Android, dokunmadan gezinme mekanizmaları olarak d-pad, izleme topu ve tekerlek desteği içerir.

Cihaz uygulamaları:

Cihaz uygulamalarında dokunma dışı gezinme yoksa:

  • [C-1-1] Giriş Yönetimi Motorları ile uyumlu, metin seçimi ve düzenleme için makul bir alternatif kullanıcı arayüzü mekanizması SAĞLANMALIDIR. Yukarı akış Android açık kaynak uygulaması, dokunmatik olmayan gezinme girişleri bulunmayan cihazlarla kullanıma uygun bir seçim mekanizması içerir.

7.2.3. Gezinme Tuşları

Ana Sayfa, En Son ve Geri işlevleri, genellikle özel bir fiziksel düğme veya dokunmatik ekranın farklı bir bölümüyle etkileşim yoluyla sağlanır. Bu işlevler, Android gezinme paradigması ve dolayısıyla cihaz uygulamaları için gereklidir:

  • [C-0-1] <intent-filter> özelliği ACTION=MAIN ile ayarlanmış ve televizyon cihazı uygulamalarında CATEGORY=LAUNCHER veya CATEGORY=LEANBACK_LAUNCHER ile ayarlanmış bir etkinliğe sahip yüklü uygulamaları başlatmak için kullanıcılara bir kolaylık sunmalıdır. Bu kullanıcı özelliği için mekanizma, ana sayfa işlevi OLMALIDIR.
  • Son Kullanılanlar ve Geri işlevi için düğmeler YER ALMALIDIR.

Ana Sayfa, Son Aramalar veya Geri işlevleri sağlanıyorsa:

  • [C-1-1] Herhangi birine erişilebilir olduğunda tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir OLMALIDIR.
  • [C-1-2] Her işlevi tek bir eylemin tetikleyeceğini net bir şekilde belirtmelidir. Düğmeye basıldığında görünen bir simge, ekranın gezinme çubuğu bölümünde bir yazılım simgesi göstermek veya kutudan çıkar çıkmaz kurulum deneyimi sırasında kullanıcıyı adım adım rehberli bir demo akışında yönlendirmek bu tür bir gösterge örneğidir.

Cihaz uygulamaları:

  • [C-SR-1] Android 4.0'dan beri işlem çubuğu lehine desteği sonlandırıldığı için Menü işlevi için giriş mekanizması sağlamamaları önemle ÖNERİLİR.

  • [C-SR-2] Tüm gezinme işlevlerinin iptal edilebilir olarak sağlanmasının önemle ÖNERİLİR. "İptal edilebilir", kullanıcının kaydırma belirli bir eşiğin ötesinde bırakılmazsa gezinme işlevinin (ör. ana sayfaya gitme, geri gitme vb.) yürütülmesini engelleme yeteneği olarak tanımlanır.

Cihaz uygulamaları Menü işlevini sağlıyorsa:

  • [C-2-1] İşlem taşma menüsü pop-up'ı boş olmadığında ve işlem çubuğu görünür olduğunda işlem taşma düğmesi GÖSTERİLMELİDİR.
  • [C-2-2] İşlem çubuğundaki taşma düğmesi seçilerek gösterilen işlem taşma pop-up'ının konumunu DEĞİŞTİRMEMELİDİR ancak menü işlevi seçilerek gösterildiğinde işlem taşma pop-up'ını ekranda değiştirilmiş bir konumda oluşturabilir.

Cihaz uygulamaları Menü işlevini sağlamıyorsa geriye dönük uyumluluk için:

  • [C-3-1] targetSdkVersion 10'dan az olduğunda fiziksel bir düğme, yazılım anahtarı veya hareketlerle Menü işlevini uygulamalara sunmalıdır. Diğer gezinme işlevleriyle birlikte gizlenmediği sürece bu menü işlevine erişilebilir olmalıdır.

Cihaz uygulamaları Yardım işlevini sağlıyorsa:

  • [C-4-1] Diğer gezinme tuşlarına erişilebildiğinde Yardım işlevine tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir.
  • [C-SR-3] Bu belirlenen etkileşim olarak HOME işlevinde uzun basma işleminin kullanılması önemle ÖNERİLİR.

Cihaz uygulamaları, gezinme tuşlarını görüntülemek için ekranın farklı bir bölümünü kullanıyorsa:

  • [C-5-1] Gezinme tuşları, uygulamaların kullanamadığı ekranın ayrı bir bölümünü KULLANABİLİR ve uygulamaların kullanabildiği ekranın bölümünü GÖZDEN KAÇIRMASIN veya başka bir şekilde engelleMEMELİDİR.
  • [C-5-2] 7.1.1 numaralı bölümde tanımlanan koşulları karşılayan uygulamalara ekranın bir bölümünü AÇIKLAMALIDIR.
  • [C-5-3] Ekranın bu belirgin bölümünün (diğer adıyla gezinme çubuğu) SDK'da belirtildiği gibi düzgün bir şekilde gizlenmesi için uygulama tarafından View.setSystemUiVisibility() API yöntemi aracılığıyla ayarlanan işaretleri UYGUNLAMALI.

Gezinme işlevi ekranda, harekete dayalı bir işlem olarak sağlanıyorsa:

Ekranın mevcut yönünün sol ve sağ kenarlarından herhangi bir yerinden gezinme işlevi sağlanıyorsa:

  • [C-7-1] Gezinme işlevi Geri olmalı ve ekranın mevcut yönünün hem sol hem de sağ kenarından kaydırma şeklinde sağlanmalıdır.
  • [C-7-2] Sol veya sağ kenarlarda özel kaydırılabilir sistem panelleri sağlanıyorsa bunlar ekranın üst 1/3'üne yerleştirilmeli ve ekranı içeri doğru kaydırmanın, Geri'yi değil, yukarıda belirtilen panelleri tetikleyeceğini belirten net ve kalıcı bir görsel gösterge bulunmalıdır. Sistem paneli, kullanıcı tarafından ekran kenarlarının üst 1/3'ünün altına gelecek şekilde yapılandırılabilir ancak sistem paneli, kenarların 1/3'ünden uzun olmamalıdır.
  • [C-7-3] Ön plan uygulamasında View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, WindowInsetsController.BEHAVIOR_DEFAULT veya WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE işaretleri ayarlandığında, kenarlardan kaydırma işlemi AOSP'de uygulandığı şekilde (SDK'da belirtildiği gibi) davranmalıdır.
  • [C-7-4] Ön plan uygulamasında View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, WindowInsetsController.BEHAVIOR_DEFAULT veya WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE işaretleri ayarlandığında, kullanıcı AOSP'de uygulandığı şekilde sistem çubuklarını (ör. gezinme ve durum çubuğu) getirene veya karartmasını kaldırana kadar özel kaydırılabilir sistem panelleri gizlenmelidir.

Geri gezinme işlevi sağlanıyorsa ve kullanıcı Geri hareketini iptal ederse:

  • [C-8-1] OnBackInvokedCallback.onBackCancelled() çağrılmalıdır.
  • [C-8-2] OnBackInvokedCallback.onBackInvoked() çağrıLMAMALIDIR.
  • [C-8-3] KEYCODE_BACK etkinliği GÖNDERİLMEMELİDİR.

Geri gezinme işlevi sağlanıyorsa ancak ön plan uygulamasında OnBackInvokedCallback kaydedilmemişse:

  • Sistem, ön plan uygulaması için AOSP'de sağlandığı gibi kullanıcının geri gittiğini gösteren bir animasyon SAĞLAMALIDIR.

Cihaz uygulamaları, android.permission.STATUS_BAR izni olan tüm sistem uygulamalarının gezinme çubuğu modunu ayarlamasına izin vermek için sistem API'si setNavBarMode için destek sağlıyorsa:

  • [C-9-1] AOSP kodunda sağlandığı şekilde çocuklara uygun simgeler veya düğme tabanlı gezinme için DESTEK SAĞLAMALIDIR.

7.2.4. Dokunmatik Ekran Girişi

Android; dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunmatik giriş cihazları gibi çeşitli işaretçi giriş sistemlerini destekler. Dokunmatik ekran tabanlı cihaz uygulamaları, kullanıcının ekrandaki öğeleri doğrudan kontrol ettiği izlenimi verecek şekilde bir ekranla ilişkilendirilir. Kullanıcı doğrudan ekrana dokunduğundan sistem, üzerinde işlem yapılan nesneleri belirtmek için ek kolaylıklara ihtiyaç duymaz.

Cihaz uygulamaları:

  • Bir tür işaretçi giriş sistemi (fare benzeri veya dokunmatik) OLMALIDIR.
  • Tam bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.

Cihaz uygulamalarında birincil Android uyumlu ekranda dokunmatik ekran (tek dokunma veya daha iyi) varsa:

  • [C-1-1] Configuration.touchscreen API alanı için TOUCHSCREEN_FINGER değerini bildirmelidir.
  • [C-1-2] android.hardware.touchscreen ve android.hardware.faketouch özellik işaretlerini bildirmelidir.

Cihaz uygulamalarında, birincil Android uyumlu ekranda tek bir dokunuşu değil, birden fazla dokunuşu izleyebilen bir dokunmatik ekran varsa:

  • [C-2-1] Cihazdaki belirli dokunmatik ekranın türüne karşılık gelen uygun özellik işaretlerini android.hardware.touchscreen.multitouch, android.hardware.touchscreen.multitouch.distinct, android.hardware.touchscreen.multitouch.jazzhand bildirmelidir.

Cihaz uygulamaları, birincil Android uyumlu ekranda giriş için fare veya izleme topu gibi harici bir giriş cihazına (yani doğrudan ekrana dokunmaz) dayanıyorsa ve 7.2.5 numaralı bölümdeki sahte dokunma şartlarını karşılıyorsa:

  • [C-3-1] android.hardware.touchscreen ile başlayan özellik işaretlerini bildirmemelidir.
  • [C-3-2] Yalnızca android.hardware.faketouch raporlanmalıdır.
  • [C-3-3] Configuration.touchscreen API alanı için TOUCHSCREEN_NOTOUCH değerini bildirmelidir.

7.2.5. Sahte Dokunmatik Giriş

Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesine yakın bir kullanıcı giriş sistemi sağlar. Örneğin, ekrandaki imleci hareket ettiren bir fare veya uzaktan kumanda, dokunmaya benzer ancak kullanıcının önce imleci veya odağını yerleştirip ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi, jiroskop işaretçisi, kontrol çubuğu ve çoklu dokunmatik yüzey gibi çok sayıda giriş cihazı, sahte dokunma etkileşimlerini destekleyebilir. Android, android.hardware.faketouch özellik sabit değerini içerir. Bu değer, dokunmatik olmayan (işaretçi tabanlı) yüksek kaliteli bir giriş cihazına (ör. fare veya dokunmatik yüzey) karşılık gelir. Dokunmatik tabanlı girişi (temel hareket desteği dahil) yeterli düzeyde taklit edebilir ve cihazın dokunmatik ekran işlevinin taklit edilmiş bir alt kümesini desteklediğini gösterir.

Cihaz uygulamalarında dokunmatik ekran bulunmasa da kullanıma sunmak istedikleri başka bir işaretçi giriş sistemi varsa:

  • android.hardware.faketouch özellik işareti için destek BEYAN EDİLMELİDİR.

Cihaz uygulamaları android.hardware.faketouch için destek belirtiyorsa:

  • [C-1-1] İşaretçi konumunun mutlak X ve Y ekran konumlarını bildirmeli ve ekranda görsel bir işaretçi göstermelidir.
  • [C-1-2] Dokunma etkinliğini, işaretçinin ekranda aşağı veya yukarı hareket ettiğinde gerçekleşen durum değişikliğini belirten işlem koduyla bildirmelidir.
  • [C-1-3] Ekrandaki bir nesneye işaretçiyi aşağı ve yukarı hareket ettirme özelliğini desteklemelidir. Bu özellik, kullanıcıların ekrandaki bir nesneye dokunmayı taklit etmesine olanak tanır.
  • [C-1-4] Ekranda bir nesnenin aynı yerinde, belirli bir süre içinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve işaretçi yukarı hareketlerini desteklemelidir. Bu, kullanıcıların ekrandaki bir nesneye çift dokunmayı taklit etmesine olanak tanır.
  • [C-1-5] Ekrandaki herhangi bir noktada aşağı bakan bir işaretçiyi, işaretçiyi ekrandaki herhangi bir noktaya taşımayı ve ardından kullanıcıların dokunma sürüklemesini taklit etmesine olanak tanıyan yukarı bakan bir işaretçiyi desteklemelidir.
  • [C-1-6] İşaretçinin aşağı doğru hareket etmesini desteklemeli, ardından kullanıcıların nesneyi ekranda hızlıca farklı bir konuma taşımasına ve ardından ekranda işaretçiyi yukarı doğru hareket ettirerek nesneyi ekranda fırlatmasına izin vermelidir.

Cihaz uygulamaları android.hardware.faketouch.multitouch.distinct için destek belirtiyorsa:

  • [C-2-1] android.hardware.faketouch için destek beyan ETMELİDİR.
  • [C-2-2] İki veya daha fazla bağımsız işaretçi girişinin ayrı olarak izlenmesini desteklemelidir.

Cihaz uygulamaları android.hardware.faketouch.multitouch.jazzhand için destek belirtiyorsa:

  • [C-3-1] android.hardware.faketouch için destek beyan ETMELI.
  • [C-3-2] 5 veya daha fazla işaretçi girişinin tamamen bağımsız olarak ayrı ayrı izlenmesini DESTEKLEMELİDİR.

7.2.6. Oyun Kumandası Desteği

7.2.6.1. Düğme Eşlemeleri

Cihaz uygulamaları:

  • [C-1-1] HID etkinliklerini aşağıdaki tablolarda listelenen ilgili InputEvent sabitleriyle eşleyebilmelidir. Yukarı akış Android uygulaması bu koşulu karşılar.

Cihaz uygulamalarında, aşağıdaki tablolarda listelenen tüm etkinlikleri girme olanağı sunan bir kumanda yerleştirilmişse veya kutuda ayrı bir kumanda gönderiliyorsa:

  • [C-2-1] android.hardware.gamepad özellik işaretini İLANI GEREKTİRİR
Düğme HID Kullanımı2 Android düğmesi
A1 0x09 0x0001 KEYCODE_BUTTON_A (96)
B1 0x09 0x0002 KEYCODE_BUTTON_B (97)
X1 0x09 0x0004 KEYCODE_BUTTON_X (99)
Y1 0x09 0x0005 KEYCODE_BUTTON_Y (100)
D-pad yukarı1
D-pad aşağı1
0x01 0x00393 AXIS_HAT_Y4
D-pad sola1
D-pad sağa1
0x01 0x00393 AXIS_HAT_X4
Sol üst kenar düğmesi1 0x09 0x0007 KEYCODE_BUTTON_L1 (102)
Sağ üst kenar düğmesi1 0x09 0x0008 KEYCODE_BUTTON_R1 (103)
Sol çubuk tıklama1 0x09 0x000E KEYCODE_BUTTON_THUMBL (106)
Sağ çubuğun tıklanması1 0x09 0x000F KEYCODE_BUTTON_THUMBR (107)
Geri1 0x0c 0x0224 KEYCODE_BACK (4)

1 KeyEvent

2 Yukarıdaki HID kullanımları, bir Gamepad CA'sında (0x01 0x0005) tanımlanmalıdır.

3 Bu kullanım için mantıksal minimum 0, mantıksal maksimum 7, fiziksel minimum 0, fiziksel maksimum 315, birim derece ve rapor boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde dönme olarak tanımlanır. Örneğin, 0 olan mantıksal değer, dönme olmadığını ve yukarı düğmesine basıldığını gösterirken 1 olan mantıksal değer, 45 derece dönmeyi ve hem yukarı hem de sol tuşlarına 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 2.3.1 numaralı bölüme bakın.

7.3. Sensörler

Cihaz uygulamalarında, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türü varsa cihaz uygulaması bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde UYGULAMALIDIR.

Cihaz uygulamaları:

  • [C-0-1] android.content.pm.PackageManager sınıfına göre sensörlerin varlığını veya yokluğunu doğru şekilde bildirmelidir.
  • [C-0-2] SensorManager.getSensorList() ve benzer yöntemler aracılığıyla desteklenen sensörlerin doğru listesini DÖNDÜRMELİDİR.
  • [C-0-3] Diğer tüm sensör API'leri için makul bir ş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ğırmamak vb.).

Cihaz uygulamalarında, üçüncü taraf geliştiriciler için ilgili bir API'si olan belirli bir sensör türü varsa geliştiriciler:

  • [C-1-1] Android SDK dokümanlarında tanımlandığı şekilde her sensör türü için ilgili Uluslararası Birim Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini bildirmelidir.
  • [C-1-2] Uygulama işlemcisi etkinken maksimum istenen gecikmesi 0 ms olan bir sensör akışı olması durumunda, sensör verilerini maksimum 100 milisaniye + 2 * sample_time gecikmesiyle raporlamalıdır. Bu gecikmeye filtreleme gecikmeleri dahil değildir.
  • [C-1-3] İlk sensör örneğini, sensörün etkinleştirilmesinden sonraki 400 milisaniye + 2 * sample_time içinde bildirmelidir. Bu örnekte doğruluk değerinin 0 olması kabul edilebilir.
  • [C-1-4] Android SDK dokümanları tarafından sürekli sensör olarak belirtilen API'ler için cihaz uygulamalarında, ardışık etkinlikler arasındaki raporlanan zaman damgası değerlerinin farkının standart sapması olarak tanımlanan ve %3'ün altında olması gereken jitter değerine sahip düzenli veri örnekleri sürekli olarak sağlanmalıdır.
  • [C-1-5] Sensör etkinlik akışının, cihazın CPU'sunun askıya alma durumuna girmesini veya askıya alma durumundan uyandırılmasını engellememesi GEREKİR.
  • [C-1-6] Etkinlik zamanını Android SDK dokümanlarında tanımlandığı şekilde nanosaniye cinsinden İLETMELİDİR. Bu zaman, etkinliğin gerçekleştiği zamanı temsil eder ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edilir.
  • [C-SR-1] Zaman damgası senkronizasyon hatasının 100 milisaniyenin altında olması ÖNERİLİR ve zaman damgası senkronizasyon hatasının 1 milisaniyenin altında olması GEREKİR.
  • Birden fazla sensör etkinleştirildiğinde güç tüketimi, her bir sensörün raporlanan güç tüketiminin toplamını AŞMAMALIDIR.

Yukarıdaki liste kapsamlı değildir. Android SDK'sının belgelenmiş davranışı ve sensörler ile ilgili Android Açık Kaynak Dokümanları yetkili kabul edilir.

Cihaz uygulamalarında, üçüncü taraf geliştiriciler için ilgili bir API'si olan belirli bir sensör türü varsa geliştiriciler:

  • [C-1-6] Tüm sensörler için sıfır olmayan bir çözünürlük ayarlamalı ve değeri Sensor.getResolution() API yöntemi aracılığıyla bildirmelidir.

Bazı sensör türleri karmadır. Yani bir veya daha fazla sensör tarafından sağlanan verilerden türetilebilirler. (Yön sensörü ve doğrusal hızlanma sensörü buna örnek gösterilebilir.)

Cihaz uygulamaları:

  • Sensör türleri bölümünde açıklandığı gibi ön koşul olan fiziksel sensörleri içeriyorsa bu sensör türlerini UYGULAMALIDIR.

Cihaz uygulamaları kompozit sensör içeriyorsa:

  • [C-2-1] Sensörü, kompozit sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde UYGULAMALIDIR.

Cihaz uygulamaları, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türünü içeriyorsa ve sensör yalnızca bir değer raporluyorsa cihaz uygulamaları:

  • [C-3-1] Sensör için çözünürlüğü 1 olarak ayarlamalı ve değeri Sensor.getResolution() API yöntemi üzerinden bildirmelidir.

Cihaz uygulamalarında SensorAdditionalInfo#TYPE_VEC3_CALIBRATION özelliğini destekleyen belirli bir sensör türü varsa ve bu sensör üçüncü taraf geliştiricilere sunuluyorsa geliştiriciler:

  • [C-4-1] Sağlanan verilere sabit, fabrikada belirlenmiş kalibrasyon parametreleri DAHİL EDİLMEMELİDİR.

Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü veya manyetometre sensörünün bir kombinasyonunu içeriyorsa bunlar:

  • [C-SR-2] İvme ölçer, jiroskop ve manyetometrenin sabit bir göreli konuma sahip olmasını sağlamak için ÇOK ÖNEMLİ ÖNERI: Cihaz dönüştürülebilirse (ör. katlanabilir) sensör eksenleri, tüm olası cihaz dönüşüm durumlarında sensör koordinat sistemiyle hizalı ve tutarlı kalır.

7.3.1. İvme ölçer

Cihaz uygulamaları:

  • [C-SR-1] 3 eksenli ivme ölçer eklemeniz önemle ÖNERİLİR.

Cihaz uygulamaları bir ivmeölçer içeriyorsa:

  • [C-1-1] En az 50 Hz'ye kadar sıklıkta etkinlikleri raporlayabilmelidir.
  • [C-1-3] Android API'lerinde açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR.
  • [C-1-4] Herhangi bir eksende serbest düşüşten başlayarak yerçekiminin dört katına(4 g) kadar veya daha fazlasını ölçebilmelidir.
  • [C-1-5] En az 12 bit çözünürlüğe sahip OLMALIDIR.
  • [C-1-6] Standart sapma en fazla 0,05 m/sn^ olmalıdır.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına göre hesaplanmalıdır.
  • En az 200 Hz'e kadar olan etkinlikleri raporlamalıdır.
  • Çözünürlüğü en az 16 bit olmalıdır.
  • Özellikler kullanım ömrü boyunca değişirse ve telafi edilirse kullanım sırasında kalibre EDİLMELİDİR ve cihaz yeniden başlatılırken telafi parametreleri korunmalıdır.
  • Sıcaklık dengelenmelidir.

Cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:

  • [C-2-1] TYPE_ACCELEROMETER sensörünü uygulamalı ve bildirmelidir.
  • [C-SR-4] TYPE_SIGNIFICANT_MOTIONBirleşik sensörü uygulamanız önemle ÖNERİLİR.
  • [C-SR-5] TYPE_ACCELEROMETER_UNCALIBRATED sensörünü uygulamak ve bildirmek önemle ÖNERİLİR. Android cihazların bu koşulu karşılaması önemle ÖNERİLİR. Böylece, bu koşulun zorunlu olabileceği gelecekteki platform sürümüne yükseltme yapabilirler.
  • TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER kompozit sensörleri Android SDK belgesinde açıklandığı şekilde UYGULAMALIDIR.

Cihaz uygulamaları 3'ten az eksene sahip bir ivmeölçer içeriyorsa:

  • [C-3-1] TYPE_ACCELEROMETER_LIMITED_AXES sensörünü uygulamalı ve bildirmelidir.
  • [C-SR-6] TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED sensörünü uygulamak ve bildirmek için STRONGLY_RECOMMENDED.

Cihaz uygulamalarında 3 eksenli bir ivmeölçer varsa ve TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER karma sensörlerinden herhangi biri uygulanmışsa:

  • [C-4-1] Bu cihazların güç tüketiminin toplamı her zaman 4 mW'tan az OLMALIDIR.
  • Cihaz dinamik veya statik durumdayken her biri 2 mW ve 0,5 mW'nin altında OLMALIDIR.

Cihaz uygulamalarında 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü varsa:

  • [C-5-1] TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION birleşik sensörlerini UYGULAMALI.
  • [C-SR-7] TYPE_GAME_ROTATION_VECTOR karma sensörün uygulanması önemle ÖNERİLİR.

Cihaz uygulamalarında 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü ve manyetometre sensörü varsa:

  • [C-6-1] TYPE_ROTATION_VECTOR birleşik sensörü UYGULANMALIDIR.

7.3.2. Manyetometre

Cihaz uygulamaları:

  • [C-SR-1] 3 eksenli manyetometre (pusula) eklemeniz önemle ÖNERİLİR.

Cihaz uygulamaları 3 eksenli bir manyetometre içeriyorsa:

  • [C-1-1] TYPE_MAGNETIC_FIELD sensörünü UYGULAMALIDIR.
  • [C-1-2] En az 10 Hz'ye kadar sıklıkta etkinlikleri raporlayabİLMELİ ve en az 50 Hz'ye kadar sıklıkta etkinlikleri raporlamalıdır.
  • [C-1-3] Android API'lerinde açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR.
  • [C-1-4] Doygunluk öncesi her eksende -900 µT ile +900 µT arasında ölçüm yapabilmelidir.
  • [C-1-5] Manyetometre, dinamik (akımla uyarılan) ve statik (mıknatısla uyarılan) manyetik alanlardan uzak bir yere yerleştirilerek sabit demir ofset değeri 700 µT'den az OLMALIDIR ve 200 µT'nin altında bir değere sahip OLMALIDIR.
  • [C-1-6] 0,6 µT'ye eşit veya daha yoğun bir çözünürlüğe sahip OLMALIDIR.
  • [C-1-7] Sabit demir önyargısının çevrimiçi kalibrasyonunu ve telafisini desteklemeli ve cihaz yeniden başlatmaları arasında telafi parametrelerini korumalıdır.
  • [C-1-8] Yumuşak demir telafisi uygulanmış OLMALIDIR. Kalibre işlemi, cihaz kullanılırken veya cihazın üretimi sırasında yapılabilir.
  • [C-1-9] En hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına hesaplanmış standart sapma 1, 5 µT'den büyük OLMAYACAK; standart sapma 0, 5 µT'den büyük OLMAYACAK.
  • [C-1-10] TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörünü UYGULAMALIDIR.

Cihaz uygulamalarında 3 eksenli manyetometre, ivme ölçer sensörü ve 3 eksenli jiroskop sensörü varsa:

  • [C-2-1] TYPE_ROTATION_VECTOR birleşik sensörü UYGULANMALIDIR.

Cihaz uygulamaları 3 eksenli bir manyetometre ve ivme ölçer içeriyorsa:

  • TYPE_GEOMAGNETIC_ROTATION_VECTOR sensörünü UYGULAYABİLİR.

Cihaz uygulamalarında 3 eksenli manyetometre, ivme ölçer ve TYPE_GEOMAGNETIC_ROTATION_VECTOR sensörü varsa:

  • [C-3-1] 10 mW'tan az güç tüketmelidir.
  • Sensör 10 Hz'de toplu mod için kaydedildiğinde 3 mW'den az güç TÜKETMELİDİR.

7.3.3. GPS

Cihaz uygulamaları:

  • [C-SR-1] GPS/GNSS alıcısı eklemeniz önemle ÖNERİLİR.

Cihaz uygulamaları bir GPS/GNSS alıcı içeriyorsa ve bu özelliği android.hardware.location.gps özellik işareti aracılığıyla uygulamalara bildirirse:

  • [C-1-1] LocationManager#requestLocationUpdate üzerinden istendiğinde konum çıkışlarını en az 1 Hz hızda DESTEKLEMELİDİR.
  • [C-1-2] 0, 5 Mb/sn veya daha hızlı veri hızına sahip bir internet bağlantısına bağlıyken açık hava koşullarında (güçlü sinyaller, ihmal edilebilir çoklu yol, HDOP < 2) 10 saniye içinde (ilk düzeltme süresi hızlı) konumu belirleyebilmelidir. Bu şart, genellikle GPS/GNSS kilitlenme süresini en aza indirmek için Yardımlı veya Tahmini GPS/GNSS tekniği kullanılarak karşılanır (Yardım verileri Referans Zaman, Referans Konum ve Uydu Ephemeris/Kronometre'yi içerir).
    • [C-1-6] Cihaz uygulamaları, bu tür bir konum hesaplaması yaptıktan sonra, konum istekleri yeniden başlatıldığında, sonraki istek veri bağlantısı olmadan yapıldığında ve/veya güç döngüsü yapıldıktan sonra bile açık havada konumunu 5 saniye içinde, ilk konum hesaplamasından sonraki bir saate kadar belirlemelidir.
  • Açık hava koşullarında, konum belirlendikten sonra sabitken veya saniye kare başına 1 metreden daha az ivmeyle hareket ederken:

    • [C-1-3] En az% 95 oranında, konumu 20 metre içinde ve hızı saniyede 0, 5 metre içinde belirleyebilmelidir.
    • [C-1-4] Bir takımyıldızındaki en az 8 uyduyu aynı anda GnssStatus.Callback üzerinden izlemeli ve bildirmelidir.
    • Birden fazla takımyıldızından (ör. GPS + Glonass, Beidou, Galileo'dan en az biri) en az 24 uyduyu aynı anda izleyebilmelidir.
  • [C-SR-2] Acil durum telefon araması sırasında GNSS Konum Sağlayıcı API'leri aracılığıyla normal GPS/GNSS konum çıkışlarını göndermeye DEVAM EDİLMESİ KESİNLİKLE ÖNERİLİR.

  • [C-SR-3] SBAS hariç olmak üzere, izlenen tüm takımyıldızlarından (GnssStatus mesajlarında bildirildiği gibi) GNSS ölçümlerinin bildirilmesi önemle ÖNERİLİR.

  • [C-SR-4] AGC ve GNSS ölçümünün sıklığını bildirmeniz önemle ÖNERİLİR.

  • [C-SR-5] Her GPS/GNSS konumunun bir parçası olarak tüm doğruluk tahminlerinin (Yön, Hız ve Dikey dahil) raporlanması önemle ÖNERİLİR.

  • [C-SR-6] GPS/GNSS'den hesaplanan bir konum henüz raporlanmasa bile GNSS ölçümlerinin bulunduğu anda raporlanması önemle ÖNERİLİR.

  • [C-SR-7] Konum belirlendikten sonra açık hava koşullarında sabitken veya 0,2 metrekare saniyeden daha az ivmeyle hareket ederken GNSS sanal menzilleri ve sanal menzil hızlarının bildirilmesi önemle ÖNERİLİR. Bu değerler, en az% 95 oranında konumu 20 metre, hızı ise 0,2 metrekare saniye içinde hesaplamak için yeterlidir.

7.3.4. Jiroskop

Cihaz uygulamaları:

  • [C-SR-1] Jiroskop sensörü eklemeniz önemle ÖNERİLİR.

Cihaz uygulamaları jiroskop içeriyorsa:

  • [C-1-1] En az 50 Hz'ye kadar sıklıkta etkinlikleri raporlayabilmelidir.
  • [C-1-4] 12 bit veya daha yüksek çözünürlükte OLMALIDIR.
  • [C-1-5] Sıcaklık dengeleme özelliği OLMALIDIR.
  • [C-1-6] Kullanım sırasında kalibre edilmeli ve telafi edilmeli, cihaz yeniden başlatılırken telafi parametreleri korunmalıdır.
  • [C-1-7] Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) daha büyük bir varyansa SAHİP OLMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle SINIRLANDIRILMALIDIR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz bu değer 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
  • [C-SR-2] Cihaz oda sıcaklığında sabitken kalibrasyon hatasının 0,01 rad/sn'den az olması önemle ÖNERİLİR.
  • [C-SR-3] 16 bit veya daha yüksek çözünürlük kullanılması önemle ÖNERİLİR.
  • En az 200 Hz'e kadar olan etkinlikleri raporlamalıdır.

Cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:

  • [C-2-1] TYPE_GYROSCOPE sensörünü UYGULAMALIDIR.
  • [C-SR-4] TYPE_GYROSCOPE_UNCALIBRATED sensörünün uygulanması önemle tavsiye edilir.

Cihaz uygulamalarında 3'ten az eksenli bir jiroskop varsa:

  • [C-3-1] TYPE_GYROSCOPE_LIMITED_AXES sensörünü uygulamalı ve bildirmelidir.
  • [C-SR-5] TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED sensörünü uygulamak ve bildirmek için STRONGLY_RECOMMENDED.

Cihaz uygulamalarında 3 eksenli jiroskop, ivme ölçer sensörü ve manyetometre sensörü varsa:

  • [C-4-1] TYPE_ROTATION_VECTOR birleşik sensörü UYGULANMALIDIR.

Cihaz uygulamalarında 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü varsa:

  • [C-5-1] TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION birleşik sensörlerini UYGULAMALI.
  • [C-SR-6] TYPE_GAME_ROTATION_VECTOR birleşik sensörü uygulamanız önemle ÖNERİLİR.

7.3.5. Barometre

Cihaz uygulamaları:

  • [C-SR-1] Barometre (ortam hava basıncı sensörü) eklemeniz önemle ÖNERİLİR.

Cihaz uygulamaları barometre içeriyorsa:

  • [C-1-1] TYPE_PRESSURE sensörünü uygulamalı ve bildirmelidir.
  • [C-1-2] Etkinlikleri 5 Hz veya daha yüksek bir hızda yayınlayABİLMELİDİR.
  • [C-1-3] Sıcaklık dengeleme özelliği OLMALIDIR.
  • [C-SR-2] 300 ila 1.100 hPa aralığındaki basınç ölçümlerini bildirebilmeniz için ÇOK ÖNEMLİ.
  • Mutlak doğruluğu 1 hPa OLMALIDIR.
  • 20 hPa aralığında 0,12 hPa bağıl doğruluğa SAHİP OLMALIDIR (deniz seviyesinde ~200 m değişimde ~1 m doğruluğa eşdeğerdir).

7.3.6. Termometre

Cihaz uygulamaları ortam termometresi (sıcaklık sensörü) içeriyorsa:

  • [C-1-1] Ortam sıcaklığı sensörü için SENSOR_TYPE_AMBIENT_TEMPERATURE tanımlanmalıdır ve sensör, kullanıcının cihazla etkileşim kurduğu yerin ortam (oda/araç kabini) sıcaklığını santigrat derece cinsinden ölçmelidir.

Cihaz uygulamalarında, ortam sıcaklığı dışında bir sıcaklığı (ör. CPU sıcaklığı) ölçen bir termometre sensörü varsa:

Cihaz uygulamaları cilt sıcaklığını izlemek için bir sensör içeriyorsa:

7.3.7. Fotoğraf ölçer

  • Cihaz uygulamaları bir fotometre (ortam ışığı sensörü) İÇERİEBİLİR.

7.3.8. Yakınlık Sensörü

  • Cihaz uygulamaları bir yakınlık sensörü içerEBİLİR.

Cihaz uygulamalarında yakınlık sensörü varsa ve yalnızca ikili "yakın" veya "uzak" okuması raporlanıyorsa:

  • [C-1-1] Bir nesnenin ekranla aynı yönde olan yakınlığını ÖLÇMELİDİR. Yani, bu sensör türünün birincil amacı kullanıcının kullandığı telefonu algılamak olduğundan yakınlık sensörü ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Cihaz uygulamalarında başka bir yönde yakınlık sensörü varsa bu API aracılığıyla erişilememelidir.
  • [C-1-2] 1 bit veya daha fazla doğruluk olmalıdır.
  • [C-1-3] Yakın okuma için 0 santimetre, uzak okuma için 5 santimetre kullanılmalıdır.
  • [C-1-4] Maksimum 5 aralığı ve çözünürlüğü bildirmelidir.

7.3.9. Yüksek Doğruluk Oranı Sunan Sensörler

Cihaz uygulamaları, bu bölümde tanımlandığı şekilde daha yüksek kaliteli sensörler içeriyorsa ve bunları üçüncü taraf uygulamalarına sunarsa:

  • [C-1-1] android.hardware.sensor.hifi_sensors özellik bayrağı aracılığıyla özelliği tanımlaması GEREKİR.

Cihaz uygulamaları android.hardware.sensor.hifi_sensors bildirirse:

  • [C-2-1] TYPE_ACCELEROMETER sensörüne sahip OLMALIDIR. Bu sensör:

    • Ölçüm aralığı en az -8 g ile +8 g arasında OLMALIDIR ve en az -16 g ile +16 g arasında bir ölçüm aralığı olması önemle ÖNERİLİR.
    • Ölçüm çözünürlüğü en az 2048 LSB/g olmalıdır.
    • Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel RATE_VERY_FAST özelliğini DESTEKLEMELİDİR.
    • Ölçüm gürültüsü 400 μg/√Hz'den yüksek OLMAMALIDIR.
    • Bu sensörün, en az 3.000 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
    • Gruplandırma güç tüketimi en fazla 3 mW olmalıdır.
    • [C-SR-1] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliğinde beyaz gürültü spektrumuna sahip olmanız önemle ÖNERİLİR.
    • Oda sıcaklığında test edildiğinde 30 μg √Hz'den düşük bir ivme rastgele yürüyüşü OLMALIDIR.
    • Sıcaklığa göre önyargı değişikliğinin +/- 1 mg/°C'den az olması GEREKİR.
    • En iyi uyum çizgisi doğrusal olmayanlığı %0,5'ten az, sıcaklığa göre hassasiyet değişimi ise %0,03/°C'den az OLMALIDIR.
    • Cihazın çalışma sıcaklığı aralığında enine eksen hassasiyeti % 2,5'ten az ve enine eksen hassasiyeti değişimi% 0,2'den az OLMALIDIR.
  • [C-2-2] TYPE_ACCELEROMETER ile aynı kalite koşullarına sahip bir TYPE_ACCELEROMETER_UNCALIBRATED OLMALIDIR.

  • [C-2-3] TYPE_GYROSCOPE sensörüne sahip OLMALIDIR. Bu sensör:

    • En az -1000 ile +1000 dps arasında bir ölçüm aralığına sahip OLMALIDIR.
    • Ölçüm çözünürlüğü en az 16 LSB/dps olmalıdır.
    • Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel RATE_VERY_FAST özelliğini DESTEKLEMELİDİR.
    • Ölçüm gürültüsü 0,014°/s/√Hz'den yüksek OLMAMALIDIR.
    • [C-SR-2] 3 dB ölçüm bant genişliğinin Nyquist frekansının en az% 80'i olması ve bu bant genişliğinde beyaz gürültü spektrumunun bulunması önemle ÖNERİLİR.
    • Oda sıcaklığında test edilen rastgele hız yürüyüşü 0,001 °/s √Hz'den az OLMALIDIR.
    • Sıcaklığa göre önyargı değişimi ≤ +/- 0,05 °/ s / °C olmalıdır.
    • Sıcaklığa göre hassasiyet değişimi %0,02/°C'den az OLMALIDIR.
    • En iyi uyum doğrusunun doğrusal olmayanlığı %0,2'den az OLMALIDIR.
    • Gürültü yoğunluğu ≤ 0,007 °/s/√Hz olmalıdır.
    • Cihaz sabitken 10 ila 40 ℃ sıcaklık aralığında kalibrasyon hatası 0,002 rad/s'den az OLMALIDIR.
    • 0,1°/s/g'den düşük g hassasiyetine sahip OLMALIDIR.
    • Cihazın çalışma sıcaklığı aralığında enine eksen hassasiyeti % 4,0'ün ve enine eksen hassasiyeti değişiminin% 0,3'ün altında OLMALIDIR.
  • [C-2-4] TYPE_GYROSCOPE ile aynı kalite koşullarına sahip bir TYPE_GYROSCOPE_UNCALIBRATED OLMALIDIR.

  • [C-2-5] TYPE_GEOMAGNETIC_FIELD sensörüne sahip OLMALIDIR. Bu sensör:

    • Ölçüm aralığı en az -900 ile +900 μT arasında OLMALIDIR.
    • Ölçüm çözünürlüğü en az 5 LSB/uT OLMALIDIR.
    • Minimum ölçüm frekansı 5 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansı 50 Hz veya daha yüksek olmalıdır.
    • Ölçüm gürültüsü 0,5 uT'tan yüksek OLMAMALIDIR.
  • [C-2-6] TYPE_GEOMAGNETIC_FIELD ile aynı kalite koşullarına sahip bir TYPE_MAGNETIC_FIELD_UNCALIBRATED'ye SAHİP OLMALIDIR ve ek olarak:

    • Bu sensörün, en az 600 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
    • [C-SR-3] Rapor hızı 50 Hz veya daha yüksek olduğunda 1 Hz ile en az 10 Hz arasında beyaz gürültü spektrumu kullanılması önemle ÖNERİLİR.
  • [C-2-7] TYPE_PRESSURE sensörüne sahip OLMALIDIR. Bu sensör:

    • En az 300 ile 1.100 hPa arasında bir ölçüm aralığına sahip OLMALIDIR.
    • Ölçüm çözünürlüğü en az 80 LSB/hPa OLMALIDIR.
    • Minimum ölçüm sıklığı 1 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansı 10 Hz veya daha yüksek olmalıdır.
    • Ölçüm gürültüsü 2 Pa/√Hz'den yüksek OLMAMALIDIR.
    • Bu sensörün, en az 300 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
    • Gruplandırma güç tüketimi en fazla 2 mW olmalıdır.
  • [C-2-8] TYPE_GAME_ROTATION_VECTOR sensörü OLMALIDIR.

  • [C-2-9] TYPE_SIGNIFICANT_MOTION sensörü ZORUNLUDUR. Bu sensör:

    • Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
  • [C-2-10] TYPE_STEP_DETECTOR sensörüne sahip OLMALIDIR. Bu sensör:

    • Bu sensörün, en az 100 sensör etkinliği tamponlama kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
    • Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
    • Gruplandırma güç tüketimi en fazla 4 mW olmalıdır.
  • [C-2-11] TYPE_STEP_COUNTER sensörüne sahip OLMALIDIR. Bu sensör:

    • Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
  • [C-2-12] TILT_DETECTOR sensörüne sahip OLMALIDIR. Bu sensör:

    • Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
  • [C-2-13] İvmeölçer, jiroskop ve manyetometre tarafından raporlanan aynı fiziksel etkinliğin etkinlik zaman damgası 2, 5 milisaniye içinde OLMALIDIR. İvmeölçer ve jiroskop tarafından raporlanan aynı fiziksel etkinliğin etkinlik zaman damgası 0,25 milisaniye içinde OLMALIDIR.

  • [C-2-14] Jiroskop sensör etkinliği zaman damgalarının, kamera alt sistemiyle aynı zaman tabanında ve 1 milisaniyelik hata payında olması GEREKİR.

  • [C-2-15] Verilerin yukarıdaki fiziksel sensörlerden herhangi birinde mevcut olduğu andan itibaren 5 milisaniye içinde uygulamalara örnek göndermelidir.

  • [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz statik durumdayken 0,5 mW'den, hareket halindeyken 2,0 mW'den yüksek güç tüketimine sahip OLMAYACAK:

    • SENSOR_TYPE_SIGNIFICANT_MOTION
    • SENSOR_TYPE_STEP_DETECTOR
    • SENSOR_TYPE_STEP_COUNTER
    • SENSOR_TILT_DETECTORS
  • [C-2-17] TYPE_PROXIMITY sensörü OLABİLİR ancak varsa en az 100 sensör etkinliği için tampon 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 zincirinin tamamı (sensör, destekleyici devreler, özel sensör işleme sistemi vb.) tarafından çekilen gücü içerir.

Cihaz uygulamaları doğrudan sensör desteği içeriyorsa:

  • [C-3-1] Doğrudan kanal türleri ve doğrudan raporlama oranları düzeyi için isDirectChannelTypeSupported ve getHighestDirectReportRateLevel API'si aracılığıyla doğru şekilde destek beyanı YAPILMALIDIR.
  • [C-3-2] Doğrudan sensör kanalı desteğini beyan eden tüm sensörler için doğrudan sensör kanalı türlerinden en az birini DESTEKLEMELİDİR.
  • Aşağıdaki türlerde birincil sensör (uyandırma dışı varyant) için sensör doğrudan kanalı üzerinden etkinlik raporlamasını DESTEKLEMELİDİR:
    • TYPE_ACCELEROMETER
    • TYPE_ACCELEROMETER_UNCALIBRATED
    • TYPE_GYROSCOPE
    • TYPE_GYROSCOPE_UNCALIBRATED
    • TYPE_MAGNETIC_FIELD
    • TYPE_MAGNETIC_FIELD_UNCALIBRATED

7.3.10. Biyometri Sensörleri

Biyometrik Kilit Açma Güvenliği'ni Ölçme hakkında daha fazla bilgi için lütfen Biyometrik Güvenliği Ölçme belgelerine bakın.

Cihaz uygulamalarında güvenli bir kilit ekranı varsa:

  • Biyometrik sensör içermelidir

Biyometri sensörleri, kimliğe bürünme ve sahtekarlık kabul oranlarına ve biyometri ardışık düzeninin güvenliğine göre 3. sınıf (eski adıyla Güçlü), 2. sınıf (eski adıyla Zayıf) veya 1. sınıf (eski adıyla Rahat) olarak sınıflandırılabilir. Bu sınıflandırma, biyometri sensörünün platform ve üçüncü taraf uygulamalarıyla arayüz oluşturma özelliklerini belirler. Sınıf 1, Sınıf 2 veya Sınıf 3 olarak sınıflandırılmak isteyen sensörlerin aşağıda ayrıntılı olarak açıklanan ek koşulları karşılaması gerekir. Hem 2. sınıf hem de 3. sınıf biyometriler, aşağıda ayrıntılı olarak açıklandığı gibi ek özellikler elde eder.

Cihaz uygulamaları, android.hardware.biometrics.BiometricManager, android.hardware.biometrics.BiometricPrompt ve android.provider.Settings.ACTION_BIOMETRIC_ENROLL aracılığıyla biyometrik sensörü üçüncü taraf uygulamaların kullanımına sunuyorsa:

  • [C-4-1] Bu dokümanda tanımlandığı şekilde 3. sınıf veya 2. sınıf biyometri gereksinimlerini karşılamalıdır.
  • [C-4-2] Authenticators sınıfında sabit olarak tanımlanan her parametre adını ve bu adların tüm kombinasyonlarını tanımalıdır. Öte yandan, Authenticators'da ve bunların tüm kombinasyonlarında herkese açık sabit değerler olarak belgelenenler dışında, canAuthenticate(int) ve setAllowedAuthenticators(int) yöntemlerine iletilen tam sayı sabitlerini dikkate ALMAMALIDIR.
  • [C-4-3] Sınıf 3 veya Sınıf 2 biyometrisine sahip cihazlarda ACTION_BIOMETRIC_ENROLL işlemini UYGULAMALIDIR. Bu işlem yalnızca Sınıf 3 veya Sınıf 2 biyometrileri için kayıt giriş noktalarını GÖSTERMELİDİR.

Cihaz uygulamaları pasif biyometriyi destekliyorsa:

  • [C-5-1] Varsayılan olarak ek bir onay adımı (ör. düğmeye basma) İSTEMELİDİR.
  • [C-SR-1] Kullanıcıların uygulama tercihini geçersiz kılmasına izin veren ve her zaman onay adımı gerektiren bir ayar bulunması önemle ÖNERİLİR.
  • [C-SR-2] Onay işleminin, işletim sistemi veya çekirdek güvenliğinin ihlal edilmesi durumunda kimliğe bürünemeyecek şekilde güvence altına alınması KESİNLİKLE ÖNERİLİR. Örneğin, bu durum fiziksel bir düğmeye dayalı onay işleminin, fiziksel bir düğmeye basmaktan başka bir yöntemle çalıştırılamayacak güvenli bir öğenin (SE) yalnızca girişe yönelik genel amaçlı giriş/çıkış (GPIO) pini üzerinden yönlendirildiği anlamına gelir.
  • [C-5-2] Ayrıca, uygulamaların oturum açma akışlarında kullanabileceği setConfirmationRequired(boolean) işlevine karşılık gelen bir örtük kimlik doğrulama akışı(onay adımı olmadan) UYGULANMALIDIR.

Cihaz uygulamalarında birden fazla biyometrik sensör varsa:

Yeni şartlar başlatma

  • [C-7-1] Çok fazla başarısız deneme nedeniyle bir biyometrik kilitlendiğinde (ör. kullanıcı birincil kimlik doğrulamasıyla kilidi açana kadar biyometrik devre dışı bırakılır) veya zamana bağlı kilitlendiğinde (ör. kullanıcı bir zaman aralığı bekleyene kadar biyometrik geçici olarak devre dışı bırakılır) daha düşük biyometrik sınıftaki diğer tüm biyometikler de kilitlenmelidir. Zaman sınırlamalı kilitleme durumunda, biyometri doğrulaması için geri yükleme süresi, zaman sınırlamalı kilitlemedeki tüm biyometrilerin maksimum geri yükleme süresi OLMALIDIR.

  • [C-SR-12] Çok fazla başarısız deneme nedeniyle bir biyometrik kilitlendiğinde (ör. kullanıcı birincil kimlik doğrulamasıyla kilidi açana kadar biyometrik devre dışı bırakılır) veya zamana bağlı kilitlendiğinde (ör. kullanıcı bir süre bekleyene kadar biyometrik geçici olarak devre dışı bırakılır) aynı biyometrik sınıfındaki diğer tüm biyometrilerin de kilitlenmesi İYİCE ÖNERİLİR. Zamana bağlı kilitleme durumunda, biyometrik doğrulama için geri yükleme süresinin, zamana bağlı kilitlemedeki tüm biyometrilerin maksimum geri yükleme süresi olması önemle ÖNERİLİR.

  • [C-7-2] Kilitlenen bir biyometrik için kilitlenme sayacını sıfırlamak amacıyla kullanıcıdan önerilen birincil kimlik doğrulamayı (ör. PIN, desen, şifre) İSTEMELİDİR. 3. sınıf biyometriklerin, aynı veya daha düşük sınıftaki kilitli bir biyometrik için kilitlenme sayacını sıfırlamasına İZİN VERİLEBİLİR. 2. sınıf veya 1. sınıf biyometrilerin, herhangi bir biyometrik için kilit açmayı sıfırlama işlemini tamamlamasına İZİN VERİLMEMELİDİR.

Yeni şartların sona ermesi

  • [C-SR-3] Kimlik doğrulama başına yalnızca bir biyometrik doğrulama yapılmasının İSTENDİĞİ KESİNLEŞTİRİLDİ (ör. cihazda hem parmak izi hem de yüz sensörü varsa bunlardan herhangi biri doğrulandıktan sonra onAuthenticationSucceeded gönderilmelidir).

Cihaz uygulamalarının, üçüncü taraf uygulamaların anahtar mağazası anahtarlarına erişmesine izin vermesi için:

  • [C-6-1] Aşağıdaki bölümde tanımlandığı şekilde 3. Sınıf şartlarını karşılamalıdır.
  • [C-6-2] Kimlik doğrulama BIOMETRIC_STRONG gerektirdiğinde veya kimlik doğrulama CryptoObject ile çağrıldığında yalnızca 3. Sınıf biyometrik veriler sunulmalıdır.

Cihaz uygulamaları bir biyometrik sensörü Sınıf 1 (eski adıyla kolaylık) olarak işlemek istiyorsa:

  • [C-1-1] Yanlış kabul oranı %0,002'den düşük OLMALIDIR.
  • [C-1-2] Bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceğini ve Android Biyometri Test Protokolleri'ne göre kimliğe bürünme ve sahtekarlık kabul oranları% 7'den yüksekse bu modu etkinleştirmenin risklerini açıkça belirtmelidir.
  • [C-1-9] Biyometrik doğrulama için en fazla yirmi yanlış deneme ve en az doksan saniyelik geri çekilme süresi sonrasında kullanıcıya önerilen birincil kimlik doğrulama (ör.PIN, desen, şifre) için istemde BULUNMALIDIR. Yanlış deneme, kayıtlı bir biyometrikle eşleşmeyen yeterli yakalama kalitesine (BIOMETRIC_ACQUIRED_GOOD) sahip bir denemedir.
  • [C-SR-4] Android Biyometrik Test Protokolleri'ne göre sahtecilik ve kimliğe bürünme kabul oranları% 7'den yüksekse [C-1-9] bölümünde belirtilen biyometrik doğrulama için toplam yanlış deneme sayısını düşürmeniz önemle ÖNERİLİR.
  • [C-1-3] Biyometrik doğrulama girişimlerini sınırlamalıdır. Yanlış deneme, kayıtlı bir biyometrik ile eşleşmeyen yeterli yakalama kalitesine (BIOMETRIC_ACQUIRED_GOOD) sahip denemedir.
  • [C-SR-5] [C-1-9] başına maksimum yanlış deneme sayısı için biyometrik doğrulamadaki beş yanlış denemeden sonra denemelerin en az 30 saniye boyunca sınırlandırılması önemle ÖNERİLİR. Yanlış deneme, kayıtlı bir biyometrik ile eşleşmeyen yeterli yakalama kalitesine (BIOMETRIC_ACQUIRED_GOOD) sahip denemedir.
  • [C-SR-6] Tüm hız sınırlama mantığının TEE'de olması önemle ÖNERİLİR.
  • [C-1-10] 9.11 numaralı bölümdeki [C-0-2] bölümünde açıklandığı şekilde birincil kimlik doğrulama geri çekilmesi ilk kez tetiklendikten sonra biyometriyi DEVRE DIŞI BIRAKMALIDIR.

  • [C-1-11] Android Biyometri Test Protokolleri tarafından ölçülen (1) A Seviyesi sunum saldırısı aracı (PAI) türleri için sahtekarlık ve kimliğe bürünme kabul oranının %30'dan, (2) B Seviyesi PAI türleri için sahtekarlık ve kimliğe bürünme kabul oranının ise %40'tan yüksek olmaması gerekir.

  • [C-1-4] Kullanıcıdan mevcut kimlik bilgilerini onaylamasını veya TEE tarafından korunan yeni bir cihaz kimlik bilgisi (PIN/desen/şifre) eklemesini sağlayarak önce bir güven zinciri oluşturmadan yeni biyometriklerin eklenmesini ÖNLEMELİDİR; Android Open Source Project uygulaması, bunu yapmak için çerçevede mekanizmayı sağlar.

  • [C-1-5] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama dahil) kullanıcının kimliği tanımlayabilecek tüm biyometri verilerini tamamen kaldırmalıdır.

  • [C-1-6] Söz konusu biyometrik için ayrı bayrağı (ör. DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT, DevicePolicymanager.KEYGUARD_DISABLE_FACE veya DevicePolicymanager.KEYGUARD_DISABLE_IRIS ) UYGUNLAŞTIRMALIDIR.

  • [C-1-7] 24 saatte bir veya daha kısa sürede kullanıcıdan önerilen birincil kimlik doğrulamayı (ör. PIN, desen, şifre) istemelidir. Not: Android 9 veya önceki sürümlerde kullanıma sunulan yükseltilen cihazlarda, kullanıcıdan 72 saatte bir veya daha kısa aralıklarla önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) istendiğine dair uyarı gösterilmelidir.

  • [C-1-8] Aşağıdakilerden biri gerçekleştikten sonra kullanıcıdan önerilen birincil kimlik doğrulamayı (ör. PIN, desen, şifre) veya 3. Sınıf (GÜÇLÜ) biyometrik doğrulamayı İSTEMELİDİR:

    • 4 saatlik boşta kalma zaman aşımı süresi VEYA
    • 3 başarısız biyometrik kimlik doğrulama girişimi.
    • Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasından sonra, boşta kalma zaman aşımı süresi ve başarısız kimlik doğrulama sayısı sıfırlanır. Not: Android 9 veya önceki sürümlerde kullanıma sunulan cihazların yükseltilmesi C-1-8'den muaf tutulabilir.
  • [C-SR-7] Yeni cihazlar için [C-1-7] ve [C-1-8]'de belirtilen kısıtlamaları uygulamak üzere Android Açık Kaynak Projesi tarafından sağlanan çerçevedeki mantığın kullanılması önemle ÖNERİLİR.

  • [C-SR-8] Cihaz üzerinde ölçülen yanlış reddetme oranının %10'un altında olması önemle ÖNERİLİR.

  • [C-SR-9] Kayıtlı her biyometrik için biyometrik algılandığı andan ekranın kilidinin açılmasına kadar geçen sürenin 1 saniyenin altında olması önemle ÖNERİLİR.

Yeni şartlar başlatma

  • [C-1-12] Android Biyometri Test Protokolleri tarafından ölçülen her bir kimlik avı aracı (PAI) türü için sahtekarlık ve kimliğe bürünme kabul oranının %40'tan yüksek OLMAMALIDIR.

  • [C-SR-13] Android Biyometri Test Protokolleri tarafından ölçülen her kimlik avı aracı (PAI) türü için sahtekarlık ve kimliğe bürünme kabul oranının% 30'dan yüksek olmaması önemle ÖNERİLİR.

  • [C-SR-14] Biyometrik sensörün biyometrik sınıfını ve etkinleştirmeyle ilgili riskleri açıklamanız önemle ÖNERİLİR.

  • [C-SR-17] Yeni AIDL arayüzlerini (IFace.aidl ve IFingerprint.aidl gibi) uygulamanız önemle ÖNERİLİR.

Yeni şartların sona ermesi

Cihaz uygulamaları bir biyometrik sensörü Sınıf 2 (eski adıyla Zayıf) olarak değerlendirmek istiyorsa:

  • [C-2-1] Yukarıdaki Sınıf 1 ile ilgili tüm şartları karşılamalıdır.

  • [C-2-2] Android Biyometri Test Protokolleri tarafından ölçülen (1) A düzeyi gösterim saldırısı aracı (PAI) türleri için sahtekarlık ve kimliğe bürünme kabul oranının %20'den fazla olmaması ve (2) B düzeyi PAI türleri için sahtekarlık ve kimliğe bürünme kabul oranının %30'dan fazla olmaması koşuluyla, sahtekarlık ve kimliğe bürünme kabul oranının %20'den fazla olmaması GEREKİR.

Yeni şartlar başlatma

  • [C-SR-15] Android Biyometri Test Protokolleri tarafından ölçülen her kimlik avı aracı (PAI) türü için sahtekarlık ve kimliğe bürünme kabul oranının% 20'den yüksek olmaması önemle ÖNERİLİR.

Yeni şartların sona ermesi

  • [C-2-3] Biyometrik eşleştirmeyi, Android kullanıcı veya çekirdek alanı dışındaki izole bir yürütme ortamında (ör. Güvenilir Yürütme Ortamı (TEE)) veya izole yürütme ortamına güvenli bir kanala sahip bir çipte veya Bölüm 9.17'deki şartları karşılayan Korunan Sanal Makine'de YAPMALIDIR.
  • [C-2-4] Tanımlanabilir tüm verilerin, Android Open Source Project sitesindeki uygulama yönergelerinde belirtildiği şekilde, izole yürütme ortamının dışında edinilemeyecek, okunamayacak veya değiştirilemeyecek şekilde şifrelenmiş ve kriptografik olarak doğrulanmış olması VEYA Android Open Source Project sitesindeki uygulama yönergelerinde belirtildiği şekilde, izole yürütme ortamına güvenli bir kanalı olan bir çip VEYA Bölüm 9.17'deki şartları karşılayan ve hipervizör tarafından kontrol edilen Korunan Sanal Makine kullanılmalıdır.
  • [C-2-5] Kamera tabanlı biyometri için biyometrik kimlik doğrulama veya kayıt işlemi sırasında:
    • Kamerayı, kamera karelerinin izole yürütme ortamının dışında okunmasını veya değiştirilmesini önleyen bir modda veya izole yürütme ortamına güvenli bir kanalı olan bir çipte veya Bölüm 9.17'deki şartları karşılayan, hipervizör tarafından kontrol edilen bir Korunan Sanal Makine çalıştırmalıdır.
    • RGB tek kameralı çözümlerde, kamera çerçeveleri kayıt için önizleme gibi işlemleri desteklemek amacıyla izole yürütme ortamının dışında okunabilir ancak yine de DEĞİŞTİRİLEMEmelidir.
  • [C-2-6] Üçüncü taraf uygulamalarının, biyometrik kayıtları birbirinden ayırt etmesine İZİN VERİLMEMELİDİR.
  • [C-2-7] Kimliği tanımlayabilecek biyometrik verilere veya bu verilerden türetilen verilere (ör. yerleştirilenler) TEE bağlamı dışında Uygulama İşlemciye şifrelenmemiş erişim İZİN VERMEMELİDİR veya Bölüm 9.17'deki şartları karşılayan ve hipervizör tarafından kontrol edilen Korunan Sanal Makine. Android 9 veya önceki sürümlerde kullanıma sunulan cihazların yükseltilmesi C-2-7'den muaf tutulmaz.
  • [C-2-8] İşletim sistemi veya çekirdek güvenliğinin ihlal edilmesi durumunda, kullanıcı olarak yanlış kimlik doğrulaması yapmak için verilerin doğrudan eklenmesine izin vermeyecek şekilde güvenli bir işleme ardışık düzeni OLMALIDIR. Not: Cihaz uygulamaları Android 9 veya önceki bir sürümde kullanıma sunulmuşsa ve C-2-8 şartını sistem yazılımı güncellemesiyle karşılayamıyorsa bu cihazlar şarttan muaf tutulabilir.

  • [C-SR-10] Tüm biyometrik modlar için canlı algılama ve yüz biyometrisi için dikkat algılama özelliğinin eklenmesi önemle ÖNERİLİR.

  • [C-2-9] Üçüncü taraf uygulamalarına biyometri sensörünü AÇIKLAMALIDIR.

Cihaz uygulamaları bir biyometrik sensörü 3. sınıf (eski adıyla Güçlü) olarak değerlendirmek istiyorsa:

  • [C-3-1], [C-1-7] ve [C-1-8] hariç olmak üzere yukarıdaki 2. Sınıf'ın tüm koşullarını karşılamalıdır.
  • [C-3-2] Donanım destekli bir anahtar deposu uygulaması OLMALIDIR.
  • [C-3-3] Android Biyometri Test Protokolleri tarafından ölçülen (1) A düzeyi gösterim saldırısı aracı (PAI) türleri için sahtekarlık ve kimliğe bürünme kabul oranının %7'den, (2) B düzeyi PAI türleri için sahtekarlık ve kimliğe bürünme kabul oranının ise %20'den yüksek olmaması gerekir.
  • [C-3-4] Kullanıcıdan 72 saatte bir veya daha kısa aralıklarla önerilen birincil kimlik doğrulamayı (ör. PIN, desen, şifre) istemelidir.
  • [C-3-5] Cihazda desteklenen tüm 3. Sınıf biyometrikler için Authenticator kimliğini yeniden oluşturmalıdır (bunlardan herhangi biri yeniden kaydedilirse).
  • [C-3-6] Üçüncü taraf uygulamaları için biyometri destekli anahtar mağazası anahtarları etkinleştirilmelidir.

Yeni şartlar başlatma

  • [C-SR-16] Android Biyometri Test Protokolleri tarafından ölçülen her kimlik avı aracı (PAI) türü için sahtekarlık ve kimliğe bürünme kabul oranının% 7'den yüksek olmaması önemle ÖNERİLİR.

Yeni şartların sona ermesi

Cihaz uygulamaları ekranın altında parmak izi sensörü (UDFPS) içeriyorsa:

  • [C-SR-11] UDFPS'nin dokunulabilir alanının 3 düğmeli gezinmeyi (bazı kullanıcıların erişilebilirlik amacıyla ihtiyaç duyabileceği) engellemesini önlemek için ÇOK ÖNEMLE TAVSİYE EDİLİR.

7.3.11. Poz Sensörü

Cihaz uygulamaları:

  • 6 serbestlik derecesine sahip poz sensörünü DESTEKLEYEBİLİR.

Cihaz uygulamaları 6 serbestlik derecesine sahip poz sensörünü destekliyorsa:

  • [C-1-1] TYPE_POSE_6DOF sensörünü uygulamalı ve bildirmelidir.
  • [C-1-2] Yalnızca rotasyon vektöründen daha doğru OLMALIDIR.

7.3.12. Menteşe Açısı Sensörü

Cihaz uygulamaları menteşe açı sensörünü destekliyorsa:

7.3.13. IEEE 802.1.15.4 (UWB)

Cihaz uygulamaları 802.1.15.4 desteği içeriyorsa ve işlevi üçüncü taraf bir uygulamaya sunuyorsa:

Yeni şartlar başlatma

  • [C-1-2] Donanım özelliği işaretini android.hardware.uwb bildirmelidir.
  • [C-1-3] AOSP uygulamasında tanımlanan aşağıdaki yapılandırma kümelerinin tümünü (FIRA UCI parametrelerinin önceden tanımlanmış kombinasyonları) DESTEKLEMELİDİR.
    • CONFIG_ID_1: FiRa tarafından tanımlanan tek yönlü STATIC STS DS-TWR menzil bulma, ertelenen mod, menzil bulma aralığı 240 ms.
    • CONFIG_ID_2: FiRa tarafından tanımlanan bire çok STATIC STS DS-TWR mesafe ölçümü, ertelenen mod, mesafe ölçümü aralığı 200 ms. Tipik kullanım alanı: akıllı telefon birçok akıllı cihazla etkileşim kurar.
    • CONFIG_ID_3: Varış açısı (AoA) verilerinin raporlanmaması dışında CONFIG_ID_1 ile aynıdır.
    • CONFIG_ID_4: P-STS güvenlik modunun etkinleştirilmesi dışında CONFIG_ID_1 ile aynıdır.
    • CONFIG_ID_5: P-STS güvenlik modunun etkinleştirilmesi dışında CONFIG_ID_2 ile aynıdır.
    • CONFIG_ID_6: P-STS güvenlik modunun etkinleştirilmesi dışında CONFIG_ID_3 ile aynıdır.
    • CONFIG_ID_7: P-STS bireysel kontrol edilen anahtar modu etkin olduğu sürece CONFIG_ID_2 ile aynıdır.
  • [C-1-4] Kullanıcının ultra geniş bant radyosunu açıp kapatmasına olanak tanıyan bir kullanıcı imkanı sağlanmalıdır.
  • [C-1-5] UWB radyo kullanan uygulamaların UWB_RANGING iznine (NEARBY_DEVICES izin grubunda) sahip olmasını Zorunlu kılmalıdır.

FIRA, CCC ve CSA gibi standart kuruluşlar tarafından tanımlanan ilgili uygunluk ve sertifika testlerini geçmek, 802.1.15.4'ün düzgün şekilde çalışmasını sağlar.

Yeni şartların sona ermesi

7.4. Veri Bağlantısı

7.4.1. Telefon Hizmeti

Android API'leri ve bu doküman tarafından kullanılan "Telefon" terimi, özellikle sesli arama yapma ve SMS mesajı gönderme veya mobil (ör. GSM, CDMA, LTE, NR) GSM veya CDMA ağı üzerinden mobil veri bağlantısı kurma ile ilgili donanıma atıfta bulunur. "Telefon"u destekleyen bir cihaz, ürüne uygun olarak arama, mesajlaşma ve veri hizmetlerinin bir kısmını veya tamamını sunmayı seçebilir.

GSM veya CDMA ağı üzerinden. Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak Android'in işleyişine göre aynı ağ kullanılarak uygulanabilecek veri bağlantılarından bağımsız olarak kabul edilir. Diğer bir deyişle,Android "telefon" işlevi ve API'leri özellikle sesli aramaları ve SMS'leri ifade eder. Örneğin, arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarından bağımsız olarak telefon cihazı olarak kabul edilmez.

  • Android, telefon donanımı içermeyen cihazlarda KULLANILABİLİR. Yani Android, telefon olmayan cihazlarla uyumludur.

Cihaz uygulamaları GSM veya CDMA telefon görüşmelerini içeriyorsa:

  • [C-1-1] android.hardware.telephony özellik bayrağını ve diğer alt özellik bayraklarını teknolojiye göre İLANI GEREKTİRİR.
  • [C-1-2] Söz konusu teknolojinin API'si için TAM destek uygulanmalıdır.
  • Acil durum aramaları sırasında mevcut tüm hücresel hizmet türlerine (2G, 3G, 4G, 5G vb.) izin VERİLMELİDİR (SetAllowedNetworkTypeBitmap() tarafından ayarlanan ağ türlerinden bağımsız olarak).

Cihaz uygulamaları telefon donanımı içermiyorsa:

  • [C-2-1] API'lerin tamamını no-ops olarak UYGULAMALI.

Cihaz uygulamaları eUICC'leri veya eSIM'leri/yerleşik SIM'leri destekliyorsa ve eSIM işlevini üçüncü taraf geliştiriciler için kullanılabilir hale getiren özel bir mekanizma içeriyorsa:

Cihaz uygulamaları, ro.telephony.iwlan\_operation\_mode sistem mülkünü "eski" olarak ayarlamıyorsa:

Cihaz uygulamaları hem multimedya telefon hizmeti (MMTEL) hem de zengin iletişim hizmeti (RCS) özellikleri için tek bir IP Multimedya Alt Sistemi (IMS) kaydını destekliyorsa ve tüm IMS sinyal trafiği için tek bir IMS kaydı kullanılmasıyla ilgili hücresel operatör koşullarına uyması bekleniyorsa:

Cihaz uygulamaları android.hardware.telephony özelliğini bildirirse:

Cihaz uygulamaları android.hardware.telephony özelliğini bildiriyorsa ve bir sistem durum çubuğu sağlıyorsa:

  • [C-7-1] SIM durumu bilgilerini sağlayan tüm olanaklarda kullanıcıya göstermek için belirli bir grup UUID için temsili bir etkin abonelik SEÇMELİDİR. Durum çubuğundaki hücresel sinyal simgesi veya hızlı ayarlar kutusu bu tür olanaklara örnek olarak verilebilir.
  • [C-SR-1] Cihaz sesli görüşmede değilse temsilci aboneliğinin etkin veri aboneliği olarak seçilmesi önemle tavsiye edilir. Cihaz sesli görüşmedeyse temsilci aboneliğinin etkin ses aboneliği olması önemle tavsiye edilir.

Cihaz uygulamaları android.hardware.telephony özelliğini bildirirse:

  • [C-6-7] ETSI TS 102 221'e göre her UICC için maksimum mantıksal kanal sayısını (toplam 20) açıp eşzamanlı olarak kullanabilmelidir.
  • [C-6-8] Etkin operatör uygulamalarına (TelephonyManager#getCarrierServicePackageName tarafından belirtildiği şekilde) aşağıdaki davranışlardan hiçbiri otomatik olarak veya açık bir kullanıcı onayı olmadan uygulanMAMALIDIR:
    • Ağ erişimini iptal etme veya sınırlama
    • İzinleri iptal etme
    • Arka planda veya ön planda uygulama yürütmeyi AOSP'de bulunan mevcut güç yönetimi özelliklerinin ötesinde kısıtlama
    • Uygulamayı devre dışı bırakma veya kaldırma

Cihaz uygulamaları android.hardware.telephony özelliğini bildiriyorsa ve grup UUID'sini paylaşan tüm etkin, fırsatçı olmayan abonelikler devre dışı bırakılıyorsa, cihazdan fiziksel olarak kaldırılıyorsa veya fırsatçı olarak işaretleniyorsa cihaz:

  • [C-8-1] Aynı gruptaki kalan tüm etkin fırsatçı abonelikleri otomatik olarak devre dışı bırakmalıdır.

Cihaz uygulamaları GSM telefon görüşmesi özelliğini içeriyor ancak CDMA telefon görüşmesi özelliğini içermiyorsa:

  • [C-9-1] PackageManager#FEATURE_TELEPHONY_CDMA bildirilmemelidir.
  • [C-9-2] Tercih edilen veya izin verilen ağ türü bit maskelerinde herhangi bir 3GPP2 ağ türü ayarlama girişiminde bulunulduğunda IllegalArgumentException atılmalıdır.
  • [C-9-3] TelephonyManager#getMeid kaynağından boş bir dize DÖNDÜRMELİDİR.

Cihaz uygulamaları birden fazla bağlantı noktası ve profil içeren eUICC'leri destekliyorsa:

7.4.1.1. Numara Engelleme Uyumluluğu

Cihaz uygulamaları android.hardware.telephony.calling özelliğini raporlarsa:

  • [C-1-1] Numara engelleme desteği ZORUNLUDUR
  • [C-1-2] BlockedNumberContract ve ilgili API'yi SDK dokümanlarında açıklandığı şekilde tam olarak UYGULAMALIDIR.
  • [C-1-3] "BlockedNumberProvider"da bulunan bir telefon numarasından gelen tüm aramaları ve mesajları, uygulamalarla herhangi bir etkileşimde bulunmadan engellemelidir. Tek istisna, SDK dokümanlarında açıklandığı gibi numara engellemenin geçici olarak kaldırılmasıdır.

  • [C-1-4] Engellenen aramalar için platform çağrı günlüğü sağlayıcısına yazmalıdır ve önceden yüklenmiş numara çevirici uygulamasındaki varsayılan çağrı günlüğü görünümünden BLOCKED_TYPE içeren aramaları filtrelemelidir.

  • [C-1-5] Engellenen bir mesaj için Telefon hizmeti sağlayıcıya yazı YAZMAMALIDIR.

  • [C-1-6] TelecomManager.createManageBlockedNumbersIntent() yöntemi tarafından döndürülen intent ile açılan bir engellenen numara yönetimi kullanıcı arayüzü UYGULANMALIDIR.

  • [C-1-7] Android platformu, birincil kullanıcının cihazdaki tek bir telefon hizmeti örneği üzerinde tam kontrole sahip olduğunu varsaydığında ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzü ikincil kullanıcılar için GİZLENMELİDİR ve engellenen kullanıcı listesine yine de UYULMALIDIR.

  • Cihaz Android 7.0'a güncellendiğinde engellenen numaralar sağlayıcıya taşınmalıdır.

  • Önceden yüklenmiş numara çevirici uygulamasında engellenen aramaları göstermek için kullanıcılara bir kolaylık sunmalıdır.

7.4.1.2. Telecom API

Cihaz uygulamaları android.hardware.telephony.calling değerini raporluyorsa:

  • [C-1-1] SDK'da açıklanan ConnectionService API'lerini DESTEKLEMELİDİR.
  • [C-1-2] Kullanıcı, CAPABILITY_SUPPORT_HOLD üzerinden belirtilen bekletme özelliğini desteklemeyen bir üçüncü taraf uygulaması tarafından yapılan ve devam eden bir görüşmedeyken yeni bir gelen aramayı göstermeli ve gelen aramayı kabul etme veya reddetme seçeneği sunmalıdır.
  • [C-1-3] InCallService'i uygulayan bir uygulama OLMALIDIR.
  • [C-SR-1] Kullanıcıya, gelen bir aramayı yanıtlamanın devam eden aramayı sonlandıracağını bildirmeniz önemle ÖNERİLİR.

    AOSP uygulaması, kullanıcıya gelen bir aramayı yanıtlamanın diğer aramanın kesilmesine neden olacağını belirten bir uyarı bildirimi göstererek bu şartları karşılar.

  • [C-SR-2] Üçüncü taraf uygulaması PhoneAccount'daki EXTRA_LOG_SELF_MANAGED_CALLS ek anahtarını true olarak ayarladığında arama günlüğünde arama günlüğü girişini ve üçüncü taraf uygulamasının adını gösteren varsayılan numara çevirici uygulamasının önceden yüklenmesi önemle ÖNERİLİR.

  • [C-SR-3] Aşağıdaki android.telecom API'leri için ses kulaklığının KEYCODE_MEDIA_PLAY_PAUSE ve KEYCODE_HEADSETHOOK etkinliklerini işlemek İYİCE ÖNERİLİR:

    • Devam eden bir arama sırasında önemli etkinliğe kısa basma algılanırsa Connection.onDisconnect() çağrısı yapılır.
    • Gelen bir arama sırasında önemli etkinliğe kısa basıldığı tespit edildiğinde Connection.onAnswer() simgesini arayın.
    • Gelen bir arama sırasında önemli etkinliğe uzun basıldığı algılanırsa Connection.onReject() düğmesine çağrı gönderir.
    • CallAudioState düğmesinin sessiz durumunu değiştirin.
7.4.1.3. Cellular NAT-T Keepalive Offload

Cihaz uygulamaları:

  • Hücresel keepalive devre dışı bırakma desteği DAHİL OLMALIDIR.

Cihaz uygulamaları, hücresel keepalive devre dışı bırakma desteği içeriyorsa ve işlevi üçüncü taraf uygulamalarına sunuyorsa:

  • [C-1-1] SocketKeepAlive API'yi DESTEKLEMELİDİR.
  • [C-1-2] Hücresel ağ üzerinden en az bir eşzamanlı keepalive yuvasını DESTEKLEMELİDİR.
  • [C-1-3] Cellular Radio HAL tarafından desteklenen kadar eşzamanlı hücresel keepalive yuvasını desteklemelidir.
  • [C-SR-1] Radyo örneği başına en az üç hücresel keepalive yuvasının desteklenmesi önemle ÖNERİLİR.

Cihaz uygulamaları, hücresel keepalive devre dışı bırakma desteği içermiyorsa:

  • [C-2-1] ERROR_UNSUPPORTED döndürülmelidir.

7.4.2. IEEE 802.11 (Kablosuz)

Cihaz uygulamaları:

  • 802.11'in bir veya daha fazla biçimi için destek DAHİL OLMALIDIR.

Cihaz uygulamaları 802.11 desteği içeriyorsa ve işlevi üçüncü taraf bir uygulamaya sunuyorsa:

  • [C-1-1] İlgili Android API'sini UYGULAMALIDIR.
  • [C-1-2] Donanım özelliği işaretini android.hardware.wifi bildirmelidir.
  • [C-1-3] SDK dokümanlarında açıklandığı gibi çoklu yayın API'sini UYGULAMALIDIR.
  • [C-1-4] Çoklu yayın DNS'yi (mDNS) desteklemeli ve ekran etkin durumda değilken de dahil olmak üzere herhangi bir çalışma zamanında mDNS paketlerini (224.0.0.251 veya ff02::fb) filtrelememelidir. Bu paketlerin atılması veya filtrelenmesi, hedef pazar için geçerli yasal şartlar tarafından zorunlu kılınan güç tüketimi aralıkları içinde kalmak için gerekli değildir. Android TV cihaz uygulamaları için, güç bekleme durumundayken bile.
  • [C-1-5] WifiManager.enableNetwork() API yöntemi çağrısını, uygulama trafiği için varsayılan olarak kullanılan ve getActiveNetwork ile registerDefaultNetworkCallback gibi ConnectivityManager API yöntemleri tarafından döndürülen etkin Network'i değiştirmek için yeterli bir gösterge olarak DEĞİLDİR. Diğer bir deyişle, kablosuz ağın internet erişimi sağladığını başarıyla doğrularsa yalnızca diğer ağ sağlayıcılar (ör. mobil veri) tarafından sağlanan internet erişimini devre dışı bırakabilir.
  • [C-1-6] ConnectivityManager.reportNetworkConnectivity() API yöntemi çağrıldığında Network'daki internet erişimini yeniden değerlendirmeniz ve değerlendirme sonucunda mevcut Network'ın artık internet erişimi sağlamadığını belirlemeniz durumunda internet erişimi sağlayan başka bir ağa (ör. mobil veri) geçmeniz önemle ÖNERİLİR.
  • [C-1-7] STA bağlantısı kapalıyken her taramanın başında bir kez, prob istek çerçevelerinin kaynak MAC adresini ve sıra numarasını rastgele oluşturmalıdır.
  • [C-1-8] Tek bir tutarlı MAC adresi KULLANMALIDIR (MAC adresini taramanın ortasında rastgele seçmemelidir).
  • [C-1-9] Taramadaki sonda isteklerinin arasında sonda isteği sıra numarasını normal şekilde (sıralı olarak) iterelemelidir.
  • [C-1-10] Bir taramanın son prob isteği ile sonraki taramanın ilk prob isteği arasında prob isteği sıra numarasını rastgele oluşturmalıdır.
  • [C-SR-1] Bağlantı kurarken ve bağlıyken bir erişim noktasıyla (AP) tüm STA iletişimi için kullanılan kaynak MAC adresini rastgele hale getirmeniz önemle ÖNERİLİR.
    • Cihaz, iletişim kurduğu her SSID (Passpoint için FQDN) için farklı bir rastgele MAC adresi KULLANMAK ZORUNDADIR.
    • Cihaz, kullanıcıya SSID başına (Passpoint için FQDN) rastgele olmayan ve rastgele seçeneklerle rastgeleliği kontrol etme seçeneği SUNMALIDIR ve yeni kablosuz ağ yapılandırmalarının varsayılan modunu rastgele olacak şekilde AYARALAMALIDIR.
  • [C-SR-2] Oluşturdukları AP'ler için rastgele bir BSSID kullanmaları önemle ÖNERİLİR.
    • MAC adresi, AP tarafından kullanılan SSID'ye göre rastgele oluşturulmalı ve kalıcı olmalıdır.
    • CİHAZ, kullanıcıya bu özelliği devre dışı bırakma seçeneği SUNABİLİR. Bu tür bir seçenek sağlanıyorsa rastgele seçim varsayılan olarak etkinleştirilmiş OLMALIDIR.

Cihaz uygulamaları, IEEE 802.11 standardında tanımlandığı şekilde kablosuz güç tasarrufu modu desteği içeriyorsa:

  • Bir uygulama WifiManager.createWifiLock() ve WifiManager.WifiLock.acquire() API'leri aracılığıyla WIFI_MODE_FULL_HIGH_PERF kilidi veya WIFI_MODE_FULL_LOW_LATENCY kilidini edindiğinde ve kilit etkin olduğunda kablosuz güç tasarrufu modunu DEVRE DIŞI BIRAKMALIDIR.
  • [C-3-2] Cihaz, kablosuz düşük gecikme kilidi (WIFI_MODE_FULL_LOW_LATENCY) modundayken cihaz ile erişim noktası arasındaki ortalama gidiş dönüş gecikmesi, kablosuz yüksek performans kilidi (WIFI_MODE_FULL_HIGH_PERF) modundaki gecikmeden DAHA KISA OLMALIDIR.
  • [C-SR-3] Düşük Gecikmeli Kilit (WIFI_MODE_FULL_LOW_LATENCY) edinildiğinde ve etkinleştiğinde kablosuz ağ gidiş dönüş gecikmesini en aza indirmek için ÇOK ÖNEMLE ÖNERİLİR.

Cihaz uygulamaları kablosuz ağı destekliyorsa ve konum taraması için kablosuz ağ kullanıyorsa:

  • [C-2-1] WifiManager.isScanAlwaysAvailable API yöntemi aracılığıyla okunan değeri etkinleştirmek/devre dışı bırakmak için kullanıcılara bir imkân sunulmalıdır.
7.4.2.1. Kablosuz Doğrudan Bağlantı

Cihaz uygulamaları:

  • Wi-Fi Direct (eşler arası kablosuz) desteği DAHİL OLMALIDIR.

Cihaz uygulamaları Wi-Fi Direct desteği içeriyorsa:

  • [C-1-1] SDK dokümanlarında açıklandığı gibi ilgili Android API'yi UYGULAMALIDIR.
  • [C-1-2] android.hardware.wifi.direct donanım özelliğini bildirmelidir.
  • [C-1-3] Normal kablosuz bağlantıyı desteklemelidir.
  • [C-1-4] Kablosuz ve kablosuz doğrudan işlemleri eşzamanlı olarak DESTEKLEMELİDİR.
  • [C-SR-1] Yeni oluşturulan tüm kablosuz Direct bağlantıları için kaynak MAC adresini rastgele seçmeniz önemle ÖNERİLİR.

Cihaz uygulamaları:

Cihaz uygulamaları TDLS desteği içeriyorsa ve TDLS, WiFiManager API tarafından etkinleştirildiyse:

  • [C-1-1] WifiManager.isTdlsSupported üzerinden TDLS desteğini BEYAN ETMESİ GEREKİR.
  • TDLS yalnızca mümkün olduğunda VE faydalı olduğunda kullanılmalıdır.
  • Performansı kablosuz erişim noktası üzerinden gitmekten daha kötü olabilecek durumlarda TDLS KULLANMAMALI ve bazı sezgisel yöntemlere sahip OLMALIDIR.
7.4.2.3. Wi-Fi Aware

Cihaz uygulamaları:

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

  • [C-1-1] WifiAwareManager API'lerini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
  • [C-1-2] android.hardware.wifi.aware özellik bayrağını İLANI GEREKTİRİR.
  • [C-1-3] Kablosuz bağlantı ve kablosuz bağlantı bilinir işlemleri aynı anda desteklemelidir.
  • [C-1-4] Bir Aware kapsama alanı işlemi devam etmediği veya bir Aware veri yolu etkin olmadığı sürece (veri yolu etkin olduğu sürece rastgeleleştirme beklenmez) Wi-Fi Aware yönetim arayüzü adresini 30 dakikadan uzun olmayan aralıklarla ve Wi-Fi Aware etkinleştirildiğinde rastgele oluşturmalıdır.

Cihaz uygulamaları, Bölüm 7.4.2.5'te açıklandığı gibi kablosuz bağlantı bilinirliği ve kablosuz bağlantı konumu desteği içeriyorsa ve bu işlevleri üçüncü taraf uygulamalarına sunuyorsa:

7.4.2.4. Kablosuz Passpoint

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

  • [C-1-1] Wi-Fi Passpoint desteği ZORUNLUDUR.
  • [C-1-2] Passpoint ile ilgili WifiManager API'lerini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
  • [C-1-3] Özellikle Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi ağ keşfi ve seçimiyle ilgili IEEE 802.11u standardını DESTEKLEMELİDİR.
  • [C-1-4] android.hardware.wifi.passpoint özellik bayrağını İLANI GEREKTİRİR.
  • [C-1-5] Passpoint ağlarını keşfetmek, eşleştirmek ve ilişkilendirmek için AOSP uygulamasını İZLEMESİ GEREKİR.
  • [C-1-6] Wi-Fi Alliance Passpoint R2'de tanımlanan cihaz temel hazırlığı protokollerinin en az aşağıdaki alt kümesini desteklemelidir: EAP-TTLS kimlik doğrulaması ve SOAP-XML.
  • [C-1-7] AAA sunucu sertifikasını Hotspot 2.0 R3 spesifikasyonunda açıklandığı şekilde İŞLEMELİDİR.
  • [C-1-8] Kablosuz ağ seçici aracılığıyla kullanıcının temel hazırlığı kontrol etmesini desteklemelidir.
  • [C-1-9] Passpoint yapılandırmalarının yeniden başlatmalarda kalıcı kalması GEREKİR.
  • [C-SR-1] Hükümler ve koşullar kabul özelliğinin desteklenmesi önemle ÖNERİLİR.
  • [C-SR-2] Are STRONGLY RECOMMENDED to support the Venue information feature.

Geçiş noktası kullanıcı kontrol anahtarının devre dışı bırakılması için genel bir anahtar sağlanırsa uygulamalar:

  • [C-3-1] Passpoint varsayılan olarak etkinleştirilmelidir.
7.4.2.5. Kablosuz konumu (Kablosuz gidiş dönüş süresi - RTT)

Cihaz uygulamaları:

Cihaz uygulamaları kablosuz ağ konumu desteği içeriyorsa ve işlevi üçüncü taraf uygulamalarına sunuyorsa:

  • [C-1-1] WifiRttManager API'lerini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
  • [C-1-2] android.hardware.wifi.rtt özellik bayrağını İLANI GEREKTİRİR.
  • [C-1-3] RTT'nin yürütüldüğü kablosuz arayüz bir erişim noktasıyla ilişkilendirilmemişken yürütülen her RTT patlaması için kaynak MAC adresini rastgele seçmelidir.
  • [C-1-4] 68. yüzdelik dilimde (Kümülatif Dağılım İşlevi ile hesaplandığı üzere) 80 MHz bant genişliğinde 2 metre içinde doğru OLMALIDIR.
  • [C-SR-1] 68.yüzdelik dilimde (Kümülatif Dağılım İşlevi ile hesaplandığı üzere) 80 MHz bant genişliğinde 1,5 metre içinde doğru şekilde raporlanmasının önemle ÖNERİLDİĞİ.
7.4.2.6. Kablosuz Keepalive Aktarımı

Cihaz uygulamaları:

  • Kablosuz ağda keepalive aktarımı için destek DAHİL OLMALIDIR.

Cihaz uygulamaları, kablosuz ağda sunucuya bağlantıyı sürdürme özelliğini destekleyip bu işlevi üçüncü taraf uygulamalarına sunuyorsa:

  • [C-1-1] SocketKeepAlive API'sini DESTEKLEMELİDİR.
  • [C-1-2] Kablosuz bağlantı üzerinden en az üç eşzamanlı keepalive aralığı desteklenmelidir

Cihaz uygulamaları, kablosuz bağlantıda keepalive aktarımı desteği içermiyorsa:

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

Cihaz uygulamaları:

Cihaz uygulamaları, kablosuz kolay bağlantı desteği içeriyorsa ve bu işlevi üçüncü taraf uygulamalarına sunuyorsa:

7.4.2.8. Enterprise Wi-Fi Sunucu Sertifikası Doğrulaması

Kablosuz sunucu sertifikası doğrulanmamışsa veya kablosuz sunucu alan adı ayarlanmamışsa cihaz uygulamaları:

  • [C-SR-1] Kullanıcıya, Ayarlar uygulamasında Enterprise kablosuz ağını manuel olarak ekleme seçeneği sunulmaması önemle ÖNERİLİR.
7.4.2.9. İlk Kullanımda Güven (TOFU)

Cihaz uygulamaları ilk kullanımda güven (TOFU) özelliğini destekliyorsa ve kullanıcının WPA/WPA2/WPA3-Enterprise yapılandırmalarını tanımlamasına izin veriyorsa:

  • [C-4-1] Kullanıcıya TOFU'yu kullanmayı seçebileceği bir seçenek SUNULMALIDIR.

7.4.3. Bluetooth

Cihaz uygulamaları Bluetooth ses profilini destekliyorsa:

  • Gelişmiş Ses Codec'lerini ve Bluetooth Ses Codec'lerini (ör. LDAC) DESTEKLEMELİDİR

Cihaz uygulamaları HFP, A2DP ve AVRCP'yi destekliyorsa:

  • En az 5 bağlı cihazı desteklemelidir.

Cihaz uygulamaları android.hardware.vr.high_performance özelliğini beyan ederse:

  • [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzatma özelliğini DESTEKLEMELİDİR.

Android, Bluetooth ve Bluetooth Düşük Enerji desteği içerir.

Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:

  • [C-2-1] İlgili platform özelliklerini (sırasıyla android.hardware.bluetooth ve android.hardware.bluetooth_le) beyan ETMEK VE platform API'lerini uygulamak ZORUNLUDUR.
  • Cihaz için uygun olan A2DP, AVRCP, OBEX, HFP gibi alakalı Bluetooth profillerini UYGULAMALIDIR.

Cihaz uygulamaları Bluetooth Düşük Enerji (BDE) desteği içeriyorsa:

  • [C-3-1] android.hardware.bluetooth_le donanım özelliğini İLKLEŞTİRMELİDİR.
  • [C-3-2] GATT (genel özellik profili) tabanlı Bluetooth API'lerini SDK dokümanlarında ve android.bluetooth'ta açıklandığı şekilde etkinleştirmeniz GEREKİR.
  • [C-3-3] ScanFilter API sınıflarının filtreleme mantığının uygulanıp uygulanmadığını belirtmek için BluetoothAdapter.isOffloadedFilteringSupported() için doğru değeri bildirmelidir.
  • [C-3-4] Düşük Enerji Reklamcılığı'nın desteklenip desteklenmediğini belirtmek için BluetoothAdapter.isMultipleAdvertisementSupported() için doğru değeri bildirmelidir.
  • [C-3-5] Cihaz tarama veya reklam için BLE'yi etkin bir şekilde kullanırken kullanıcı gizliliğini korumak amacıyla 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulamalı ve zaman aşımı olduğunda adresi döndürmelidir. Zamanlama saldırılarını önlemek için zaman aşımı aralıkları da 5 ila 15 dakika arasında rastgele ayarlanmalıdır.

  • ScanFilter API'yi uygularken filtreleme mantığının Bluetooth yonga setine aktarılmasını DESTEKLEMELİDİR.

  • Toplu taramanın Bluetooth yonga setine aktarılmasını desteklemelidir.

  • En az 4 yuva içeren çoklu reklamı DESTEKLEMELİDİR.

Cihaz uygulamaları Bluetooth LE'yi destekliyorsa ve konum taraması için Bluetooth LE kullanıyorsa:

  • [C-4-1] Sistem API'si BluetoothAdapter.isBleScanAlwaysAvailable() üzerinden okunan değeri etkinleştirmek/devre dışı bırakmak için kullanıcıya bir imkân sunulmalıdır.

Cihaz uygulamaları, Bluetooth LE'yi Kullanarak İşitme Cihazı Ses Desteği bölümünde açıklandığı gibi Bluetooth LE ve İşitme Cihazı Profili desteği içeriyorsa:

Cihaz uygulamaları Bluetooth veya Bluetooth Düşük Enerji desteği içeriyorsa:

  • [C-6-1] İstekte bulunan uygulama, mevcut ön plan/arka plan durumuna göre android.permission.ACCESS_FINE_LOCATION izin kontrolünü başarıyla geçmediği sürece, cihazın konumunu belirlemek için kullanılabilecek Bluetooth meta verilerine (ör. tarama sonuçları) erişimi Kısıtlamalıdır.

Cihaz uygulamalarında Bluetooth veya Bluetooth Düşük Enerji desteği varsa ve uygulama manifest dosyasında geliştiricinin Bluetooth'tan konum bilgisi almadığını belirten bir beyan yoksa geliştirici:

Cihaz uygulamaları BluetoothAdapter.isLeAudioSupported() API'si için true döndürürse:

  • [C-7-1] Tek yayın istemcisini desteklemelidir.
  • [C-7-2] 2M PHY'yi desteklemelidir.
  • [C-7-3] LE Genişletilmiş reklamcılığı desteklemelidir.
  • [C-7-4] CIG'de en az 2 CIS bağlantısını DESTEKLEMELİDİR.
  • [C-7-5] BAP tek yayın istemcisini, CSIP set koordinatörünü, MCP sunucusunu, VCP denetleyicisini, CCP sunucusunu aynı anda etkinleştirmeniz GEREKİR.
  • [C-SR-1] HAP tek yayın istemcisini etkinleştirmeniz önemle ÖNERİLİR.

Cihaz uygulamaları BluetoothAdapter.isLeAudioBroadcastSourceSupported() API'si için true döndürürse:

  • [C-8-1] BIG'de en az 2 BIS bağlantısını DESTEKLEMELİDİR.
  • [C-8-2] BAP yayın kaynağını ve BAP yayın asistanını aynı anda etkinleştirmeniz GEREKİR.
  • [C-8-3] LE Dönemsel reklamcılığı desteklemelidir.

Cihaz uygulamaları BluetoothAdapter.isLeAudioBroadcastAssistantSupported() API'si için true döndürürse:

  • [C-9-1] PAST'ı (Düzenli Reklam Senkronizasyonu Aktarımı) DESTEKLEMELİDİR.
  • [C-9-2] LE Dönemsel reklamcılığı desteklemelidir.

Cihaz uygulamaları FEATURE_BLUETOOTH_LE bildirirse:

  • [C-10-1] Görüş hattı ortamında ADVERTISE_TX_POWER_HIGH frekansında yayın yapan bir referans cihazdan 1 m mesafede yapılan ölçümlerin% 95'inde RSSI ölçümlerinin +/-9 dB içinde olması GEREKİR.
  • [C-10-2] Kanal başına sapmaları azaltmak için Rx/Tx düzeltmeleri DAHİL EDİLMELİDİR. Böylece, 3 kanalın her birindeki ve antenlerin her birindeki (birden fazla anten kullanılıyorsa) ölçümlerin% 95'i birbirinden +/-3 dB içinde olur.

  • [C-SR-2] Cihazların ekranları aynı yöne bakacak şekilde "paralel düzlemlerde" olacak şekilde yönlendirildiği ve ADVERTISE_TX_POWER_HIGH frekansında yayın yapan bir referans cihazdan 1 m mesafede ortalama BLE RSSI'nin -60 dBm +/-10 dB olmasını sağlamak için Rx ofsetinin ölçülmesi ve telafi edilmesi önemle ÖNERİLİR.

  • [C-SR-3] 1 m mesafede konumlandırılmış ve ADVERTISE_TX_POWER_HIGH frekansında yayın yapan bir referans cihazdan tarama yaparken ortalama BLE RSSI'nin -60 dBm +/-10 dB olmasını sağlamak için Tx ofset'inin ölçülmesi ve telafi edilmesi önemle ÖNERİLİR. Bu durumda cihazlar, ekranları aynı yöne bakacak şekilde "paralel düzlemlerde" olacak şekilde yönlendirilir.

    [C-10-3] ve [C-10-4] koşulları 2.2.1'e taşındı. Donanım.

  • [C-10-3] Ortalama BLE RSSI'nin ADVERTISE_TX_POWER_HIGH frekansında yayın yapan bir referans cihazdan 1 m mesafede -55 dBm +/-10 dB olmasını sağlamak için Rx ofset'ini ölçmeli ve telafi etmelidir.
  • [C-10-4] 1 m mesafede konumlandırılmış ve ADVERTISE_TX_POWER_HIGH frekansında yayın yapan bir referans cihazdan tarama yaparken ortalama BLE RSSI'nin -55 dBm +/-10 dB olmasını sağlamak için Tx ofsetini ölçmeli ve telafi etmelidir.

Bulunma Kalibrasyonu Şartları bölümünde belirtilen ölçüm kurulum adımlarını uygulamanız önemle tavsiye edilir.

Cihaz uygulamaları Bluetooth 5.0 sürümünü destekliyorsa:

  • [C-SR-4] Aşağıdakiler için destek sağlamanızı önemle ÖNERİRİZ:
    • LE 2M PHY
    • LE Codec PHY
    • LE Reklam Uzantısı
    • Periyodik reklamcılık
    • En az 10 reklam grubu
    • En az 8 LE eşzamanlı bağlantısı. Her bağlantı, bağlantı topolojisi rollerinden birinde olabilir.
    • LE Bağlantı Katmanı Gizliliği
    • En az 8 giriş içeren bir "çözüm listesi" boyutu

7.4.4. Yakın Alan İletişimi

Cihaz uygulamaları:

  • Near Field Communication (NFC) için bir alıcı/verici ve ilgili donanım İÇERMELİDİR.
  • [C-0-1] NFC desteği içermeseler bile android.nfc.NdefMessage ve android.nfc.NdefRecord API'lerini uygulamalı veya sınıflar protokolden bağımsız bir veri temsil biçimini temsil ettiğinden android.hardware.nfc özelliğini beyan etmelidir.

Cihaz uygulamaları NFC donanımı içeriyorsa ve bu donanımı üçüncü taraf uygulamalarına sunmayı planlıyorsa:

  • [C-1-1] android.hardware.nfc özelliğini android.content.pm.PackageManager.hasSystemFeature() yönteminden bildirmelidir.
  • Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarını okuyup yazabilmelidir:
  • [C-1-2] Aşağıdaki NFC standartları aracılığıyla NFC Forum okuyucu/yazar (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0 tarafından tanımlandığı şekilde) olarak hareket edebilmelidir:
    • NfcA (ISO14443-3A)
    • NfcB (ISO14443-3B)
    • NfcF (JIS X 6319-4)
    • IsoDep (ISO 14443-4)
    • NFC Forumu Etiket Türleri 1, 2, 3, 4, 5 (NFC Forumu tarafından tanımlanmıştır)
  • [C-SR-1] Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarının yanı sıra ham verileri okuyup yazabilmeniz önemle ÖNERİLİR. NFC standartlarının "ŞİDDETLE ÖNERİLİR" olarak belirtilmesine rağmen, gelecekteki bir sürümün Uyumluluk Tanımı'nda bu standartların "ZORUNLU" olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları şimdiden karşılamaları önemle tavsiye edilir.

  • [C-1-13] NFC keşif modundayken desteklenen tüm teknolojiler için anket YAPMALIDIR.

  • Cihaz açıkken ekran etkin ve kilit ekranı kilidi açıkken NFC keşif modunda OLMALIDIR.

  • Thinfilm NFC Barkod ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.

Yukarıda belirtilen JIS, ISO ve NFC Forumu spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.

Android, NFC ana kart emülasyonu (HCE) modunu destekler.

Cihaz uygulamaları, HCE (NfcA ve/veya NfcB için) yapabilen ve uygulama kimliği (AID) yönlendirmesini destekleyen bir NFC denetleyici yonga seti içeriyorsa:

  • [C-2-1] android.hardware.nfc.hce özellik sabitini bildirmelidir.
  • [C-2-2] Android SDK'sında tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.

Cihaz uygulamaları, NfcF için HCE'yi destekleyen bir NFC denetleyici yonga seti içeriyorsa ve bu özelliği üçüncü taraf uygulamaları için uyguluyorsa:

  • [C-3-1] android.hardware.nfc.hcef özellik sabitini ZORUNLUDIR.
  • [C-3-2] Android SDK'da tanımlandığı şekilde NfcF Kart Emülasyonu API'lerini UYGULAMALIDIR.

Cihaz uygulamaları bu bölümde açıklanan genel NFC desteğini içeriyorsa ve okuyucu/yazar rolünde MIFARE teknolojilerini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:

  • [C-4-1] İlgili Android API'lerini Android SDK'sında belirtildiği şekilde UYGULAMALIDIR.
  • [C-4-2] android.content.pm.PackageManager.hasSystemFeature() yönteminden com.nxp.mifare özelliğini bildirmelidir. Bunun standart bir Android özelliği olmadığını ve bu nedenle android.content.pm.PackageManager sınıfında sabit bir değer olarak görünmediğini unutmayın.

7.4.5. Ağ protokolleri ve API'leri

7.4.5.1. Minimum Ağ İşlevi

Cihaz uygulamaları:

  • [C-0-1] Bir veya daha fazla veri ağı biçimi için destek DAHİL OLMALIDIR. Daha açık belirtmek gerekirse, cihaz uygulamalarında 200 Kb/sn veya daha yüksek hızda en az bir veri standardı desteği BULUNMASI GEREKİR. Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet ve Bluetooth PAN verilebilir.
  • Birincil veri bağlantısı fiziksel bir ağ standardı (ör. Ethernet) olduğunda 802.11 (Kablosuz) gibi en az bir ortak kablosuz veri standardı desteği de DAHİL OLMALIDIR.
  • Birden fazla veri bağlantısı biçimi UYGULAYABİLİR.
7.4.5.2. IPv6

Cihaz uygulamaları:

  • [C-0-2] Bir IPv6 ağ yığınını İÇERMELİ ve java.net.Socket ile java.net.URLConnection gibi yönetilen API'lerin yanı sıra AF_INET6 soketleri gibi yerel API'leri kullanarak IPv6 iletişimini DESTEKLEMELİDİR.
  • [C-0-3] IPv6 varsayılan olarak etkinleştirilmelidir.
    • IPv6 iletişiminin IPv4 kadar güvenilir olmasını SAĞLAMALIDIR. Örneğin:
      • [C-0-4] Uyku modunda IPv6 bağlantısını ZORUNLU KULLANINIZ.
      • [C-0-5] Hız sınırlaması, cihazın en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu herhangi bir ağda IPv6 bağlantısını kaybetmesine NEDEN OLMAYACAK.
  • [C-0-6] Üçüncü taraf uygulamalarına, IPv6 ağına bağlıyken cihazda yerel olarak herhangi bir adres veya bağlantı noktası çevirisi yapılmadan ağa doğrudan IPv6 bağlantısı sağlamalıdır. Hem Socket#getLocalAddress 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 gerçekten kullanılan ve internet (web) sunucularına kaynak IP ve bağlantı noktası olarak görünen IP adresini ve bağlantı noktasını İYİCE İADE ETMELİDİR.

Gerekli IPv6 desteği düzeyi, aşağıdaki şartlarda gösterildiği gibi ağ türüne bağlıdır.

Cihaz uygulamaları kablosuz bağlantıyı destekliyorsa:

  • [C-1-1] Kablosuz ağda çift yığın ve yalnızca IPv6 işlevini DESTEKLEMELİDİR.

Cihaz uygulamaları Ethernet'i destekliyorsa:

  • [C-2-1] Ethernet'te çift yığın ve yalnızca IPv6 işlevini DESTEKLEMELİDİR.

Cihaz uygulamaları hücresel veriyi destekliyorsa:

  • [C-3-1] Mobil ağda IPv6 işlevini (yalnızca IPv6 ve muhtemelen çift yığın) DESTEKLEMELİDİR.

Cihaz uygulamaları birden fazla ağ türünü destekliyorsa (ör. Kablosuz ağ ve hücresel veri) kullanırken:

  • [C-4-1] Cihaz birden fazla ağ türüne aynı anda bağlıyken her ağda yukarıdaki koşulları eşzamanlı olarak 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'i tam olarak uygularsa:

  • [C-1-1] Sistem API'sine çağrıda bulunarak ACTION_CAPTIVE_PORTAL_SIGN_IN isteğinin işlenmesini ve bu isteği göndererek özel portal giriş sayfasının gösterilmesini sağlayan bir özel portal uygulaması SAĞLAMALIDIRConnectivityManager#startCaptivePortalApp(Network, Bundle).
  • [C-1-2] Cihaz hücresel/mobil ağ, kablosuz ağ, Ethernet veya Bluetooth gibi herhangi bir ağ türüne bağlıyken, özel portalları algılamalı ve özel portal uygulaması üzerinden girişi desteklemelidir.
  • [C-1-3] Cihaz, gizli DNS'nin katı modunu kullanacak şekilde yapılandırıldığında, açık metin DNS kullanarak özel portallara giriş yapmayı DESTEKLEMELİDİR.
  • [C-1-4] android.net.LinkProperties.getPrivateDnsServerName için SDK dokümanları uyarınca ve android.net.LinkProperties.isPrivateDnsActive için, kapatılan portalla açıkça iletişim kurmayan tüm ağ trafiğinde şifrelenmiş DNS KULLANILMALIDIR.
  • [C-1-5] Kullanıcı bir captive portala giriş yaparken uygulamaların kullandığı varsayılan ağın (ConnectivityManager.getActiveNetwork, ConnectivityManager.registerDefaultNetworkCallback tarafından döndürüldüğü ve java.net.Socket gibi Java ağ API'leri ve connect() gibi yerel API'ler tarafından varsayılan olarak kullanıldığı şekilde) varsa internet erişimi sağlayan diğer kullanılabilir ağlardan biri olduğundan EMİN OLMALIDIR.

7.4.6. Senkronizasyon Ayarları

Cihaz uygulamaları:

  • [C-0-1] getMasterSyncAutomatically() yönteminin "true" döndürmesi için varsayılan olarak ana otomatik senkronizasyon ayarının AÇIK olması GEREKİR.

7.4.7. Veri Tasarrufu

Cihaz uygulamaları ölçülen bağlantı içeriyorsa:

  • [C-SR-1] Veri tasarrufu modunu sunmanız önemle ÖNERİLİR.

Cihaz uygulamaları veri tasarrufu modunu sağlıyorsa:

  • [C-1-1] SDK dokümanlarında açıklandığı gibi ConnectivityManager sınıfındaki tüm API'leri desteklemelidir

Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:

7.4.8. Güvenlik Unsurları

Cihaz uygulamaları, Open Mobile API özellikli güvenli öğeleri destekliyorsa ve bunları üçüncü taraf uygulamalarına sunarsa:

7.4.9. ultra geniş bant

Cihaz uygulamaları 802.1.15.4 için destek içeriyorsa ve işlevi üçüncü taraf bir uygulamaya sunuyorsa:

  • [C-1-1] android.uwb'da ilgili Android API'yi UYGULAMASI GEREKMEKTEDİR.
  • [C-1-2] android.hardware.uwb donanım özellik işaretini ZORUNLUDIR.
  • [C-1-3] Android uygulamasında tanımlanan tüm ilgili ultra geniş bant profillerini DESTEKLEMELİDİR.
  • [C-1-4] Kullanıcının ultra geniş bant radyosunu açıp kapatmasına olanak tanıyan bir kullanıcı imkanı sağlanmalıdır.
  • [C-1-5] UWB radyo kullanan uygulamaların UWB_RANGING iznine (NEARBY_DEVICES izin grubunda) sahip olmasını Zorunlu kılmalı.
  • [C-SR-1] FIRA, CCC ve CSA dahil olmak üzere standart kuruluşlar tarafından tanımlanan ilgili uygunluk ve sertifika testlerini geçmeniz önemle ÖNERİLİR.
  • [C-1-6] Yansıtıcı olmayan bir odada 1 m mesafede görüş hattı ortamındaki ölçümlerin %95'i için mesafe ölçümlerinin +/-15 cm içinde olduğundan EMİN OLMALIDIR.
  • [C-1-7] Referans cihazdan 1 m uzaklıktaki mesafe ölçümlerinin medyan değerinin [0,75 m, 1,25 m] arasında olduğundan EMİN OLMALIDIR. Gerçek mesafe, DUT'nun üst kenarından ölçülür. Cihaz yukarı bakacak ve 45 derece eğik olacak şekilde tutulmalıdır.
  • [C-SR-2] Bulunma Kalibrasyonu Şartları'nda belirtilen ölçüm ayarlama adımlarını uygulamanız önemle ÖNERİLİR.

7.5. Kameralar

Cihaz uygulamaları en az bir kamera içeriyorsa:

  • [C-1-1] android.hardware.camera.any özellik bayrağını İLANI GEREKTİRİR.
  • [C-1-2] Bir uygulamanın, temel önizleme ve fotoğraf çekme amacıyla kamera açıkken cihazdaki en yüksek çözünürlüklü kamera sensörü tarafından üretilen görüntülerin boyutuna eşit 3 RGBA_8888 bitmap'i aynı anda ayırması GEREKİR.
  • [C-1-3] Alıcı uygulamada ACCESS_FINE_LOCATION bulunmadığında, MediaStore.ACTION_IMAGE_CAPTURE, MediaStore.ACTION_IMAGE_CAPTURE_SECURE veya MediaStore.ACTION_VIDEO_CAPTURE intent'lerini işleyen önceden yüklenmiş varsayılan kamera uygulamasının, alıcı uygulamaya göndermeden önce resim meta verilerindeki kullanıcı konumunu kaldırma sorumluluğunu ALDIĞINDAN EMİN OLMALIDIR.

Cihaz uygulamaları HDR 10 bit çıkış özelliğini destekliyorsa:

  • [C-2-1] 10 bit çıkışı destekleyen her kamera cihazında en az HLG HDR profilini DESTEKLEMELİDİR.
  • [C-2-2] Birincil arka veya birincil ön kamera için 10 bit çıkışı DESTEKLEMELİDİR.
  • [C-SR-1] Her iki birincil kamera için de 10 bit çıkışı desteklemesi KESİNLİKLE ÖNERİLİR.
  • [C-2-3] Mantıksal kameranın BACKWARD_COMPATIBLE özellikli tüm fiziksel alt kameraları ve mantıksal kameranın kendisi için aynı HDR profillerini DESTEKLEMELİDİR.

android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO API'sini uygulayan ve 10 bit HDR'yi destekleyen mantıksal kamera cihazları için:

  • [C-3-1] Mantıksal kameradaki CONTROL_ZOOM_RATIO kontrolü aracılığıyla geriye dönük uyumlu tüm fiziksel kameralar arasında geçiş desteklenmelidir.

7.5.1. Arka Kamera

Arka kamera, cihazın ekranın karşısındaki tarafında bulunan bir kameradır. Yani geleneksel bir kamera gibi cihazın uzak tarafındaki sahneleri görüntüler.

Yeni şartlar başlatma

Arka kamera, geleneksel bir kamera gibi cihazın uzak tarafındaki sahneleri görüntüleyen, dünyaya bakan bir kameradır. El cihazlarında, ekranın karşısındaki tarafta bulunan kamera arka kameradır.

Yeni şartların sona ermesi

Cihaz uygulamaları:

  • Arka kamera içermelidir.

Cihaz uygulamalarında en az bir arka kamera varsa:

  • [C-1-1] android.hardware.camera ve android.hardware.camera.any özellik işaretini bildirmelidir.
  • [C-1-2] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
  • Kamera sürücüsünde donanım otomatik odaklama veya yazılım otomatik odaklama uygulanmış OLMALIDIR (uygulama yazılımı için şeffaf).
  • Sabit odaklı veya EDOF (geniş alan derinliği) donanımına sahip OLABİLİR.
  • FLAŞ içerebilir.

Kamerada flaş varsa:

  • [C-2-1] Uygulama, Camera.Parameters nesnesinin FLASH_MODE_AUTO veya FLASH_MODE_ON özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece, bir android.hardware.Camera.PreviewCallback örneği bir kamera önizleme yüzeyine kaydedilmişken flaş YANMAMALIDIR. Bu kısıtlamanın cihazın yerleşik sistem kamera uygulaması için değil, yalnızca Camera.PreviewCallback kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.

7.5.2. Ön Kamera

Ön kamera, cihazın ekranla aynı tarafında bulunan bir kameradır. Yani genellikle kullanıcının görüntüsünü almak için kullanılan bir kameradır (ör. görüntülü konferans ve benzeri uygulamalar).

Yeni şartlar başlatma

Ön kamera, kullanıcıya bakan bir kameradır. Genellikle kullanıcının görüntüsünü almak için kullanılır (ör. görüntülü toplantı ve benzeri uygulamalar). El cihazlarında, ekranla aynı tarafta bulunan kamera ön kameradır.

Yeni şartların sona ermesi

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 bildirmelidir.
  • [C-1-2] En az VGA (640x480 piksel) çözünürlüğe sahip OLMALIDIR.
  • [C-1-3] Camera API için varsayılan olarak ön kamera KULLANILMAMALI ve API, cihazdaki tek kamera olsa bile ön kamerayı varsayılan arka kamera olarak ele alacak şekilde yapılandırılmamalıdır.
  • [C-1-4] Mevcut uygulama, android.hardware.Camera.setDisplayOrientation() yöntemine yapılan bir çağrı aracılığıyla kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesi, uygulama tarafından belirtilen yönde yatay olarak yansıtılmalıdır. Buna karşılık, geçerli uygulama android.hardware.Camera.setDisplayOrientation() yöntemine çağrı yaparak 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 bağlanan nihai çekilen hareketsiz resim veya video akışlarını yansıtmamalıdır.
  • [C-1-6] Son görüntüleme tarafından gösterilen resmi, kamera önizleme resim akışıyla aynı şekilde yansıtmalıdır.
  • 7.5.1 numaralı bölümde açıklandığı gibi arkaya bakan kameralarda kullanılabilen özellikler (ör. otomatik odaklama, flaş vb.) BULUNMAYABİLİR.

Cihaz uygulamaları kullanıcı tarafından döndürülebiliyorsa (ör. otomatik olarak bir ivmeölçer aracılığıyla veya manuel olarak kullanıcı girişi aracılığıyla):

  • [C-2-1] Kamera önizlemesi, cihazın mevcut yönüne göre yatay olarak aynalanmalıdır.

7.5.3. Harici Kamera

Yeni şartlar başlatma

Harici kamera, USB kameralar gibi cihaz uygulamasına fiziksel olarak herhangi bir zamanda takılıp çıkarılabilen ve herhangi bir yöne bakabilen bir kameradır.

Yeni şartların sona ermesi

Cihaz uygulamaları:

  • Her zaman bağlı olmayan harici bir kamera desteği OLABİLİR.

Cihaz uygulamaları harici kamera desteği içeriyorsa:

  • [C-1-1] Platform özellik işareti android.hardware.camera.external ve android.hardware camera.any İSTENİR.
  • [C-1-2] Harici kamera USB ana bilgisayar bağlantı noktası üzerinden bağlanıyorsa USB Video Sınıfı'nı (UVC 1.0 veya üzeri) DESTEKLEMELİDİR.
  • [C-1-3] Fiziksel harici kamera cihazı bağlıyken kamera CTS testlerini ZORUNLU KILINCA geçmelidir. Kamera CTS testinin ayrıntılarını source.android.com adresinde bulabilirsiniz.
  • Yüksek kaliteli kodlanmamış akışların (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırma yöntemlerini DESTEKLEMELİDİR.
  • Birden fazla kamerayı DESTEKLEYEBİLİR.
  • Kamera tabanlı video kodlamayı DESTEKLEYEBİLİR.

Kamera tabanlı video kodlaması destekleniyorsa:

  • [C-2-1] Cihaz uygulaması, eşzamanlı olarak kodlanmamış / MJPEG akışına (QVGA veya daha yüksek çözünürlük) erişebilmelidir.

7.5.4. Kamera API'si Davranışı

Android, kameraya erişmek için iki API paketi içerir. Daha yeni android.hardware.camera2 API, uygulamaya daha düşük düzeyde kamera kontrolü sunar. Bu API, sıfır kopyalama gerektiren verimli seri/akış akışları ve pozlama, kazanç, beyaz denge kazançları, renk dönüştürme, gürültü giderme, keskinleştirme ve daha fazlası gibi kare başına kontroller içerir.

Eski API paketi android.hardware.Camera, Android 5.0'da desteği sonlandırılmış olarak işaretlenmiştir ancak uygulamaların kullanabilmesi için hâlâ kullanılabilir durumdadır. Android cihaz uygulamalarında, bu bölümde ve Android SDK'da açıklandığı şekilde API'nin desteğinin devam etmesini sağlamanız GEREKİR.

Desteği sonlandırılan android.hardware.Camera sınıfı ile daha yeni android.hardware.camera2 paketi arasında ortak olan tüm özelliklerin her iki API'de de eşdeğer performansa ve kaliteye sahip OLMASI GEREKİR. Örneğin, eşdeğer ayarlarda otomatik odaklama hızı ve doğruluğu aynı, çekilen resimlerin kalitesi de aynı olmalıdır. İki API'nin farklı anlamlarına bağlı olan özelliklerin eşleşen hıza veya kaliteye sahip olması gerekmez ancak mümkün olduğunca yakın şekilde eşleşmelidir.

Cihaz uygulamaları, mevcut tüm kameralar için kamerayla ilgili API'lerde aşağıdaki davranışları UYGULAMALIDIR. Cihaz uygulamaları:

  • [C-0-1] Bir uygulama android.hardware.Camera.Parameters.setPreviewFormat(int)'u hiç çağırmamışsa uygulama geri çağırmalarına sağlanan önizleme verileri için android.hardware.PixelFormat.YCbCr_420_SP kullanılmalıdır.
  • [C-0-2] Ayrıca, bir uygulama bir android.hardware.Camera.PreviewCallback örneği kaydettiğinde ve sistem onPreviewFrame() yöntemini çağrdığında ve önizleme biçimi YCbCr_420_SP olduğunda byte[] içindeki veriler onPreviewFrame()'a aktarılırken NV21 kodlama biçiminde OLMALIDIR. Yani NV21 varsayılan OLMALIDIR.
  • [C-0-3] android.hardware.Camera için hem ön hem de arka kameraların kamera önizlemelerinde YV12 biçimini (android.graphics.ImageFormat.YV12 sabitiyle belirtilir) DESTEKLEMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüşümü DESTEKLEMELİDİR.)
  • [C-0-4] android.request.availableCapabilities'te REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE özelliğinin reklamını yapan android.hardware.camera2 cihazlar için android.media.ImageReader API aracılığıyla android.hardware.ImageFormat.YUV_420_888 ve android.hardware.ImageFormat.JPEG biçimlerini çıkış olarak DESTEKLEMELİDİR.
  • [C-0-5] Cihazın donanım otomatik odaklama veya başka özellikler içerip içermediğine bakılmaksızın, Android SDK dokümanlarında yer alan Kamera API'nin tamamını uygulamalıdır. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı tüm android.hardware.Camera.AutoFocusCallback örneklerini çağırmaya DEVAM ETMELİDİR (otomatik odaklama özelliği olmayan bir kamerayla alakalı olmasa da). Bunun ön kameralar için de geçerli olduğunu unutmayın. Örneğin, çoğu ön kamera otomatik odaklama özelliğini desteklemese bile API geri çağırmalarının açıklandığı şekilde "taklit" edilmesi gerekir.
  • [C-0-6] android.hardware.Camera.Parameters sınıfında ve android.hardware.camera2.CaptureRequest sınıfında sabit olarak tanımlanan her parametre adını tanımalıdır. Buna karşılık, cihaz uygulamaları android.hardware.Camera.Parameters üzerinde sabit olarak belgelenenler dışında android.hardware.Camera.setParameters() yöntemine iletilen dize sabitlerini dikkate ALMAMALI veya tanımamalıdır. Yani, donanım izin veriyorsa cihaz uygulamaları tüm standart kamera parametrelerini DESTEKLEMELİ ve özel kamera parametresi türlerini DESTEKLEMEMELİDİR. Örneğin, yüksek dinamik aralık (HDR) görüntüleme tekniklerini kullanarak görüntü yakalamayı destekleyen cihaz uygulamaları, kamera parametresi Camera.SCENE_MODE_HDR'ü desteklemelidir.
  • [C-0-7] Android SDK'sında açıklandığı şekilde android.info.supportedHardwareLevel mülküyle uygun destek düzeyini ve uygun çerçeve özellik işaretlerini bildirmelidir.
  • [C-0-8] Ayrıca android.request.availableCapabilities mülkü aracılığıyla android.hardware.camera2 kamerasının ayrı kamera özelliklerini ve uygun özellik işaretlerini belirtmelidir; bağlı kamera cihazlarından herhangi biri özelliği destekliyorsa özellik işaretini tanımlamalıdır.
  • [C-0-9] Kamera tarafından yeni bir resim çekildiğinde ve resmin girişi medya mağazasına eklendiğinde Camera.ACTION_NEW_PICTUREintent'i YAYITLAMALIDIR.
  • [C-0-10] Kamera tarafından yeni bir video kaydedildiğinde ve resmin girişi medya mağazasına eklendiğinde Camera.ACTION_NEW_VIDEOintent'i YAYITLAMALIDIR.
  • [C-0-11] Desteği sonlandırılan android.hardware.Camera API'si üzerinden erişilebilen tüm kameralara android.hardware.camera2 API'si üzerinden de erişilebilmelidir.
  • [C-0-12] Herhangi bir android.hardware.camera2 veya android.hardware.Camera API'sinde yüz geometrisinin, yüz cilt tonunun veya yüz cildinin pürüzsüzleştirilmesinin değiştirilmesi dahil ancak bununla sınırlı olmamak üzere yüz görünümünün DEĞİŞTİRİLMEDİĞİNDEN EMİN OLMALIDIR.
  • [C-SR-1] Yakın mesafede bulunan ve aynı yöne bakan birden fazla RGB kamerası olan cihazlarda, fiziksel alt cihazlar olarak bu yöne bakan tüm RGB kameralardan oluşan ve CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA özelliğini listeleyen mantıksal bir kamera cihazının desteklenmesi önemle tavsiye edilir.

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 boyutu ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmelidir. Yani cihaz yatay yönde tutulduğunda kameralar YATAŞ YÖNDE resim çekmek ZORUNDADIR. Bu, cihazın doğal yöneliminden bağımsız olarak geçerlidir. Yani hem yatay birincil cihazlar hem de dikey birincil cihazlar için geçerlidir.

Aşağıdaki ölçütlerin tümünü karşılayan cihazlar yukarıdaki şarttan muaftır:

  • Cihaz, katlanabilir veya menteşeli ekranlar gibi değişken geometrili ekranlar kullanır.
  • Cihazın katlama veya menteşe durumu değiştiğinde cihaz, dikey birincil ile yatay birincil (veya tam tersi) yönler arasında geçiş yapar.

Yeni şartlar başlatma

  • Otomotiv cihazlar gibi kullanıcı tarafından döndürülemeyen cihaz uygulamaları.

Yeni şartların sona ermesi

7.6. Bellek ve Depolama

7.6.1. Minimum Bellek ve Depolama

Cihaz uygulamaları:

  • [C-0-1] Uygulamaların veri dosyalarını indirmek için KULLANABİLECEKLERİ bir İndirme Yöneticisi İÇERMELİDİR ve en az 100 MB boyutunda tekil dosyaları varsayılan "önbelleğe alma" konumuna indirebilmelidir.

7.6.2. Uygulama Ortak Depolama Alanı

Cihaz uygulamaları:

  • [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı sunmalıdır. Bu depolama alanı genellikle "paylaşılan harici depolama alanı", "uygulama tarafından paylaşılan depolama alanı" veya "/sdcard" Linux yolu olarak da adlandırılır.
  • [C-0-2] Depolama alanının dahili depolama bileşeninde mi yoksa çıkarılabilir depolama ortamında (ör. Güvenli Dijital kart yuvası) mı uygulandığına bakılmaksızın, varsayılan olarak paylaşılan depolama alanı monte edilmiş şekilde, yani "kutudan çıkar çıkmaz" yapılandırılmalıdır.
  • [C-0-3] Uygulamanın ortak depolama alanını doğrudan sdcard Linux yoluna bağlamalı veya sdcard ile gerçek bağlama noktasına bir Linux sembolik bağlantısı eklemelidir.
  • [C-0-4] API düzeyi 29 veya üstünü hedefleyen tüm uygulamalar için varsayılan olarak kapsamlı depolama özelliğini etkinleştirmeLİDİR. Bununla birlikte, aşağıdaki durum hariçtir:
    • Uygulama, manifest dosyasında android:requestLegacyExternalStorage="true" isteğinde bulunduğunda
  • [C-0-5] Çağrı yapan uygulama ACCESS_MEDIA_LOCATION iznine sahip olmadığı sürece, medya dosyalarına MediaStore üzerinden erişildiğinde bu dosyalarda depolanan GPS Exif etiketleri gibi konum meta verilerini çıkartmalıdır.

Cihaz uygulamaları aşağıdakilerden birini kullanarak yukarıdaki koşulları karşılayabilir:

  • Kullanıcının erişebildiği çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası).
  • Android Açık Kaynak Projesi'nde (AOSP) uygulandığı şekilde dahili (çıkarılamaz) depolama alanının bir kısmı.

Cihaz uygulamaları yukarıdaki koşulları karşılamak için çıkarılabilir depolama alanı kullanıyorsa:

  • [C-1-1] Yuvaya depolama ortamı takılı değilken kullanıcıyı uyaran bir pop-up veya kısa mesaj kullanıcı arayüzü UYGULANMALIDIR.
  • [C-1-2] FAT biçimli bir depolama ortamı (ör. SD kart) İÇERMELİDİR veya kutuda ve satın alma sırasında sunulan diğer materyallerde depolama ortamının ayrı olarak satın alınması gerektiği belirtilmelidir.

Cihaz uygulamaları, yukarıdaki şartları karşılamak için çıkarılabilir olmayan depolama alanının bir kısmını kullanıyorsa:

  • Dahili uygulamanın paylaşılan depolama alanının AOSP uygulamasını KULLANMALIDIR.
  • Depolama alanını uygulamanın özel verileriyle paylaşabilir.

Cihaz uygulamalarında USB çevre birimi modu desteğine sahip bir USB bağlantı noktası varsa:

  • [C-3-1] Uygulamanın ortak depolama alanındaki verilere ana bilgisayardan erişmek için bir mekanizma SAĞLAMALIDIR.
  • Android'in medya tarayıcısı hizmeti ve android.provider.MediaStore aracılığıyla her iki depolama yolundaki içerikleri şeffaf bir şekilde GÖSTERMELİDİR.
  • USB yığın depolama alanı kullanabilir ancak bu koşulu karşılamak için Medya Aktarım Protokolü KULLANMALIDIR.

Cihaz uygulamalarında USB çevre birimi modu bulunan ve Medya Aktarımı Protokolü'nü destekleyen bir USB bağlantı noktası varsa:

  • Referans Android MTP ana makinesiyle (Android Dosya Aktarımı) UYUMLU OLMALIDIR.
  • 0x00 USB cihaz sınıfını raporlamalıdır.
  • "MTP" USB arayüzü adını bildirmelidir.

7.6.3. Dahili Hale Getirilebilir Depolama Alanı

Cihazın, televizyonun aksine mobil olması bekleniyorsa cihaz uygulamaları şunlardır:

  • [C-SR-1] Kabul edilebilir depolama alanının yanlışlıkla bağlantısının kesilmesi veri kaybına/bozulmasına neden olabileceğinden, kabul edilebilir depolama alanını uzun süreli olarak sabit bir konuma uygulamanız önemle ÖNERİLİR.

Çı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ı şunlardır:

7.7. USB

Cihaz uygulamalarında USB bağlantı noktası varsa:

  • USB çevre birimi modunu ve USB ana makine modunu DESTEKLEMELİDİR.
  • USB üzerinden veri sinyalinin devre dışı bırakılmasını desteklemelidir.

7.7.1. USB çevre birimi modu

Cihaz uygulamalarında çevre birimi modunu destekleyen bir USB bağlantı noktası varsa:

  • [C-1-1] Bağlantı noktası, standart A tipi veya C tipi USB bağlantı noktası olan bir USB ana makinesine bağlanabilmelidir.
  • [C-1-2] USB standart cihaz tanımlayıcısı içinde android.os.Build.SERIAL aracılığıyla iSerialNumber değerinin doğru değerini bildirmelidir.
  • [C-1-3] Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını algılamalı ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri algılamalıdır.
  • [C-SR-1] Bağlantı noktası, mikro-B, mikro-AB veya Type-C USB form faktörü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu koşulları karşılaması önemle tavsiye edilir.
  • [C-SR-2] Bağlantı noktası, cihazın alt kısmında (doğal yönü dikkate alınarak) yerleştirilmeli veya cihazın bağlantı noktası alt tarafta olacak şekilde yönlendirildiğinde ekranın doğru çizilmesi için tüm uygulamalarda (ana ekran dahil) yazılım ekranı döndürülmesi etkinleştirilmelidir. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılamaları önemle ÖNERİLİR.
  • [C-SR-3] USB Pil Şarjı spesifikasyonunun 1.2 numaralı düzeltmesinde belirtildiği gibi, HS cıvıltısı ve trafiği sırasında 1,5 A akım çekme desteği UYGULANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu koşulları karşılaması önemle tavsiye edilir.
  • [C-SR-4] Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya alıcı/kaynak rollerini değiştiren özel şarj yöntemlerinin desteklenmemesi önemle ÖNERİLİR. Bu tür yöntemler, standart USB Güç Aktarımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunlarına neden olabilir. Bu, "ŞİDDETLE ÖNERİLİR" olarak belirtilse de gelecekteki Android sürümlerinde tüm C tipi cihazların standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemesi GEREKEBİLİR.
  • [C-SR-5] Type-C USB ve USB ana makine modunu desteklediklerinde veri ve güç rolü değişimi için Güç Bağlantısı'nı desteklemeleri önemle ÖNERİLİR.
  • Yüksek voltajlı şarj için Güç Aktarımı'nı ve ekran çıkışı gibi Alternatif Modları desteklemelidir.
  • Android Open Accessory (AOA) API'sini ve spesifikasyonunu Android SDK dokümanlarında belirtildiği şekilde UYGULAMALIDIR.

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 toplu depolama sınıfı, USB toplu depolama biriminin arayüz açıklaması iInterface dizesinin sonuna "android" dizesini DAHİL ETMELİDİR.

7.7.2. USB ana makine modu

Cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:

  • [C-1-1] Android USB ana makine API'sini Android SDK'da belirtildiği şekilde uygulamalı ve android.hardware.usb.host donanım özelliği için destek belirtmelidir.
  • [C-1-2] Standart USB çevre birimlerini bağlamak için destek UYGULAMALIDIR. Başka bir deyişle, aşağıdakilerden birini YAPMALIDIR:
    • Cihaz üzerinde C tipi bağlantı noktası bulunmalıdır veya cihaz üzerinde özel bir bağlantı noktasını standart USB C tipi bağlantı noktasına uyarlayan kablolar (USB Type-C cihaz) gönderilmelidir.
    • Cihaz üzerinde A tipi bir bağlantı noktası bulunmalıdır veya cihaz üzerindeki özel bağlantı noktasını standart bir USB A tipi bağlantı noktasına uyarlayan kablolar gönderilmelidir.
    • Cihaz üzerinde mikro AB bağlantı noktası olmalıdır. Bu bağlantı noktası, standart A tipi bağlantı noktasına uyarlayan bir kabloyla birlikte gönderilmelidir.
  • [C-1-3] USB A tipi veya mikro-AB bağlantı noktalarını Type-C bağlantı noktasına (priz) dönüştüren bir adaptörle birlikte GÖNDERİLMEMELİDİR.
  • [C-SR-1] Android SDK dokümanlarında belirtildiği gibi USB ses sınıfını uygulamanız önemle ÖNERİLİR.
  • Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini desteklemelidir; USB Type-C konnektörler için USB Type-C Kablo ve Konnektör Spesifikasyonu 1.2 Sürümünün Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1, 5 A kaynak akımı reklamı yapmalı veya Micro-AB konnektörler için USB Pil Şarjı Spesifikasyonları 1.2 Sürümünün belirttiği şekilde Aşağı Akım Şarj Bağlantı Noktası (CDP) çıkış akımı aralığını kullanmalıdır.
  • USB Type-C standartlarını uygulamalı ve desteklemelidir.

Cihaz uygulamaları, ana makine modunu ve USB ses sınıfını destekleyen bir USB bağlantı noktası içeriyorsa:

  • [C-2-1] USB HID sınıfını desteklemelidir.
  • [C-2-2] USB HID Kullanım Tabloları'nda ve Sesli Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının algılanması ve KeyEvent sabitleriyle eşlenmesiNİ GEREKTİRİR. Aşağıdaki gibi:
    • 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 Aksesuarı Ç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ını tanımalı ve içeriklerini ACTION_GET_CONTENT, ACTION_OPEN_DOCUMENT ve ACTION_CREATE_DOCUMENT intent'leri aracılığıyla erişilebilir hâle getirmelidir. .

Cihaz uygulamaları, ana makine modunu ve USB Type-C'yi destekleyen bir USB bağlantı noktası içeriyorsa:

  • [C-4-1] USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rollü Bağlantı Noktası işlevini UYGULAMALIDIR. Çift rollü bağlantı noktaları için, 3, 5 mm ses jakı içeren cihazlarda USB alıcı algılama (ana makine modu) varsayılan olarak kapalı OLABİLİR ancak kullanıcının bunu etkinleştirmesi ZORUNLUDUR.
  • [C-SR-2] DisplayPort'u desteklemesi İYİCE ÖNERİLİR, USB Süper Hızlı Veri Hızlarını DESTEKLEMELİDİR ve veri ile güç rolü değişimi için Güç Bağlantısı'nı DESTEKLEMESİ İYİCE ÖNERİLİR.
  • [C-SR-3] USB Type-C Kablo ve Konnektör Spesifikasyonu 1.2 Sürümünün A Eki'nde açıklandığı gibi Ses Adaptörü Aksesuar Modu'nun DESTEKLENMEMESİ KESİNLİKLE ÖNERİLİR.
  • Cihaz form faktörüne en uygun Try.* modelini UYGULAMALIDIR. Örneğin, el cihazı Try.SNK modelini UYGULAMALIDIR.

7.8. Ses

7.8.1. Mikrofon

Cihaz uygulamalarında mikrofon varsa:

Cihaz uygulamalarında mikrofon atlanmışsa:

  • [C-2-1] android.hardware.microphone özellik sabitini HİÇBİR ZAMAN bildirmemelidir.
  • [C-2-2] Ses kaydı API'sini 7. bölüm uyarınca en azından no-ops olarak UYGULAMALIDIR.

7.8.2. Ses Çıkışı

Cihaz uygulamalarında, 4 telli 3,5 mm ses jakı veya USB ses sınıfını kullanan USB ana makine modu bağlantı noktası gibi bir ses çıkışı çevre birimi için hoparlör ya da ses/multimedya çıkış bağlantı noktası varsa:

Cihaz uygulamaları hoparlör veya ses çıkışı bağlantı noktası içermiyorsa:

  • [C-2-1] android.hardware.audio.output özelliğini bildirmemelidir.
  • [C-2-2] Ses Çıkışı ile ilgili API'ler en azından işlemsiz olarak uygulanmalıdır.

Bu bölümde "çıkış bağlantı noktası", 3, 5 mm ses jakı, HDMI veya USB ses sınıfına sahip USB ana makine modu bağlantı noktası gibi fiziksel bir arayüzdür. Bluetooth, kablosuz ağ veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" içerme olarak kabul edilmez.

7.8.2.1. Analog Ses Bağlantı Noktaları

Android ekosisteminde 3,5 mm ses fişini kullanan kulaklık ve diğer ses aksesuarlarıyla uyumlu olmak için cihaz uygulamalarında bir veya daha fazla analog ses bağlantı noktası varsa bu bağlantı noktaları:

  • [C-SR-1] Ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması önemle ÖNERİLİR.

Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:

  • [C-1-1] Mikrofonlu stereo kulaklıklarda ve stereo kulaklıklarda ses oynatmayı DESTEKLEMELİDİR.
  • [C-1-2] CTIA pin-out sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR.
  • [C-1-3] Ses fişindeki mikrofon ile topraklama iletkenleri arasındaki aşağıdaki 3 eşdeğer empedans aralığı için anahtar kodlarının algılanması ve eşlenmesi desteklenmelidir:
    • 70 ohm veya daha az: KEYCODE_HEADSETHOOK
    • 210-290 ohm: KEYCODE_VOLUME_UP
    • 360-680 ohm: KEYCODE_VOLUME_DOWN
  • [C-1-4] Fiş takıldığında ACTION_HEADSET_PLUG tetiklenmelidir ancak yalnızca fişteki tüm kontaklar, jaktaki ilgili segmentlerine değdikten sonra.
  • [C-1-5] 32 ohm hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
  • [C-1-6] Mikrofon önyargı voltajı 1,8 V ile 2,9 V arasında OLMALIDIR.
  • [C-1-7] Ses fişindeki mikrofon ile topraklama iletkenleri arasındaki eşdeğer empedans aralığı için aşağıdaki aralığı algılayıp anahtar koduyla eşlemelidir:
    • 110-180 ohm: KEYCODE_VOICE_ASSIST
  • [C-SR-2] OMTP pin çıkış sırasına sahip ses fişlerinin DESTEKLENMESİ önemle ÖNERİLİR.
  • [C-SR-3] Mikrofonlu stereo kulaklıklardan ses kaydını desteklemek için önemle ÖNERİLİR.

Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa, mikrofon destekleniyorsa ve android.intent.action.HEADSET_PLUG değerini mikrofon ek değeri 1 olarak ayarlayarak yayınlıyorsa:

  • [C-2-1] Takılı ses aksesuarındaki mikrofonun algılanması desteklenmelidir.
7.8.2.2. Dijital Ses Bağlantı Noktaları

Cihaza özgü gereksinimler için 2.2.1 bölümüne bakın.

7.8.3. Ultrasona yakın

Ultrason ses yakını, 18,5 kHz ile 20 kHz arasındaki banttır.

Cihaz uygulamaları:

  • AudioManager.getProperty API'si aracılığıyla ultrason yakın ses özelliğinin desteğini aşağıdaki şekilde doğru şekilde bildirmelidir:

PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND "true" ise VOICE_RECOGNITION ve UNPROCESSED ses kaynakları aşağıdaki koşulları KESİNLİKLE karşılamalıdır:

  • [C-1-1] Mikrofonun 18,5 kHz ila 20 kHz bandındaki ortalama güç yanıtı, 2 kHz'deki yanıtın en fazla 15 dB altında OLMALIDIR.
  • [C-1-2] -26 dBFS'de 19 kHz ton için mikrofonun 18,5 kHz ile 20 kHz arasındaki ağırlanmamış sinyal-gürültü oranı 50 dB'den düşük OLMAMALIDIR.

PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND "true" ise:

  • [C-2-1] Hoparlörün 18,5 kHz - 20 kHz arasındaki ortalama yanıtı, 2 kHz'deki yanıtın 40 dB altında OLMAYACAK.

7.8.4. Sinyal Bütünlüğü

Cihaz uygulamaları:

  • El cihazlarında hem giriş hem de çıkış akışları için kesintisiz bir ses sinyali yolu SAĞLAMALIDIR. Bu, her yol için bir dakikalık bir test sırasında ölçülen sıfır kesinti olarak tanımlanır. OboeTester "Otomatik Glitch Testi"ni kullanarak test edin.

Test için doğrudan 3,5 mm jakta ve/veya USB-C - 3, 5 mm adaptörle birlikte kullanılan bir ses geri gönderme dongle'ı gerekir. Tüm ses çıkış bağlantı noktaları TEST EDİLMELİDİR.

OboeTester şu anda AAudio yollarını desteklediğinden aşağıdaki kombinasyonlar AAudio kullanılarak aksaklıklar açısından TEST EDİLMELİDİR:

Performans Modu Paylaşılıyor Çıkış Örnek Hızı Chan'larda Out Chans
LOW_LATENCY ÖZEL BELİRTİLMEDİ 1 2
LOW_LATENCY ÖZEL BELİRTİLMEDİ 2 1
LOW_LATENCY PAYLAŞILDI BELİRTİLMEDİ 1 2
LOW_LATENCY PAYLAŞILDI BELİRTİLMEDİ 2 1
YOK PAYLAŞILDI 48000 1 2
YOK PAYLAŞILDI 48000 2 1
YOK PAYLAŞILDI 44100 1 2
YOK PAYLAŞILDI 44100 2 1
YOK PAYLAŞILDI 16000 1 2
YOK PAYLAŞILDI 16000 2 1

Güvenilir bir yayın, 2000 Hz sinüsü için sinyal-gürültü oranı (SNR) ve toplam harmonik bozulma (THD) açısından aşağıdaki ölçütleri karşılamalıdır.

Transdüser THD SNR
Harici bir referans mikrofon kullanılarak ölçülen birincil yerleşik hoparlör < %3,0 >= 50 dB
Harici bir referans hoparlör kullanılarak ölçülen birincil yerleşik mikrofon < %3,0 >= 50 dB
Yerleşik analog 3,5 mm jaklar, döngüsel adaptör kullanılarak test edilmiştir <%1 >= 60 dB
Telefonla birlikte verilen USB adaptörleri, döngüsel adaptör kullanılarak test edilmiştir < %1,0 >= 60 dB

7.9. Sanal Gerçeklik

Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "Sanal Gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamalarında bu API'ler ve davranışlar bu bölümde açıklandığı şekilde DOĞRU bir şekilde uygulanmalıdır.

7.9.1. Sanal Gerçeklik Modu

Android, bildirimlerin stereoskopik olarak oluşturulmasını yöneten ve bir VR uygulaması kullanıcının odağındayken tek gözlü sistem kullanıcı arayüzü bileşenlerini devre dışı bırakan VR Modu desteği içerir.

7.9.2. Sanal Gerçeklik Modu - Yüksek Performans

Cihaz uygulamaları VR modunu destekliyorsa:

  • [C-1-1] En az 2 fiziksel çekirdeğe sahip OLMALIDIR.
  • [C-1-2] android.hardware.vr.high_performance özelliğini İLANI GEREKTİRİR.
  • [C-1-3] Sürekli performans modunu DESTEKLEMELİDİR.
  • [C-1-4] OpenGL ES 3.2 desteklenmelidir.
  • [C-1-5] android.hardware.vulkan.level 0 değerini desteklemelidir.
  • android.hardware.vulkan.level 1 veya daha yüksek sürümleri DESTEKLEMELİDİR.
  • [C-1-6] EGL_KHR_mutable_render_buffer, EGL_ANDROID_front_buffer_auto_refresh, EGL_ANDROID_get_native_client_buffer, EGL_KHR_fence_sync, EGL_KHR_wait_sync, EGL_IMG_context_priority, EGL_EXT_protected_content, EGL_EXT_image_gl_colorspace uzantılarını uygulamalı ve uzantıları kullanılabilir EGL uzantıları listesinde göstermelidir.
  • [C-1-8] GL_EXT_multisampled_render_to_texture2, GL_OVR_multiview, GL_OVR_multiview2, GL_EXT_protected_textures özelliklerini UYGULAMALI ve uzantıları mevcut GL uzantıları listesinde göstermelidir.
  • [C-SR-1] GL_EXT_external_buffer, GL_EXT_EGL_image_array, GL_OVR_multiview_multisampled_render_to_texture özelliklerini uygulamanız ve uzantıları mevcut GL uzantıları listesinde göstermeniz önemle ÖNERİLİR.
  • [C-SR-2] Vulkan 1.1'i desteklemeniz ÖNEMLE ÖNERİLİR.
  • [C-SR-3] VK_ANDROID_external_memory_android_hardware_buffer, VK_GOOGLE_display_timing, VK_KHR_shared_presentable_image özelliklerini uygulamanız ve mevcut Vulkan uzantıları listesinde göstermeniz önemle ÖNERİLİR.
  • [C-SR-4] flags'nin hem VK_QUEUE_GRAPHICS_BIT hem de VK_QUEUE_COMPUTE_BIT içerdiği ve queueCount'ın en az 2 olduğu en az bir Vulkan sıra ailesi göstermeniz önemle ÖNERİLİR.
  • [C-1-7] GPU ve ekran, paylaşılan ön arabelleğe erişimi senkronize edebilmelidir. Böylece, VR içeriğinin iki oluşturma bağlamıyla 60 fps'de dönüşümlü olarak oluşturulması, görünür yırtılma kusurları olmadan görüntülenebilir.
  • [C-1-9] NDK'da açıklandığı gibi AHardwareBuffer AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER, AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA ve AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT işaretleri için destek UYGULANMALIDIR.
  • [C-1-10] Şu biçimler için en azından şu kullanım işaretlerinin herhangi bir kombinasyonuyla AHardwareBuffer'ler için destek UYGULAMALIDIR: AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM, AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM, AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM, AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT. AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT, AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE, AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT
  • [C-SR-5] AHardwareBuffer'lerin birden fazla katmanla ve C-1-10'da belirtilen işaretlerle ve biçimlerle ayrılmasını desteklemek için ÇOK ÖNEMLE ÖNERİLİR.
  • [C-1-11] Ortalama 40 Mb/sn'ye sıkıştırılmış en az 3840 x 2160 30 fps H.264 kod çözme özelliğini desteklemelidir (30 fps-10 Mb/sn'de 4 adet 1920 x 1080 veya 60 fps-20 Mb/sn'de 2 adet 1920 x 1080'e eşdeğerdir).
  • [C-1-12] HEVC ve VP9'yi DESTEKLEMELİ, en az 1920 x 1080'i 30 fps'de ortalama 10 Mb/sn'ye sıkıştırılmış şekilde kod çözebilmeli ve 3840 x 2160'ı 30 fps-20 Mb/sn'de (30 fps-5 Mb/sn'de 4 adet 1920 x 1080'e eşdeğer) kod çözebilmelidir.
  • [C-1-13] HardwarePropertiesManager.getDeviceTemperatures API'yi desteklemeli ve deri sıcaklığı için doğru değerleri döndürmelidir.
  • [C-1-14] Yerleşik bir ekrana sahip OLMALIDIR ve çözünürlüğü en az 1.920 x 1.080 OLMALIDIR.
  • [C-SR-6] En az 2560 x 1440 ekran çözünürlüğüne sahip olmanız önemle ÖNERİLİR.
  • [C-1-15] Ekran, VR modundayken en az 60 Hz'de güncellenmelidir.
  • [C-1-17] Ekran, 5 milisaniyeden az kalıcılığa sahip düşük kalıcılığa sahip bir modu DESTEKLEMELİDİR. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
  • [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzatma bölümü 7.4.3 desteklenmelidir.
  • [C-1-19] Aşağıdaki varsayılan sensör türlerinin tümü için doğrudan kanal türünü desteklemeli ve doğru şekilde bildirmelidir:
    • TYPE_ACCELEROMETER
    • TYPE_ACCELEROMETER_UNCALIBRATED
    • TYPE_GYROSCOPE
    • TYPE_GYROSCOPE_UNCALIBRATED
    • TYPE_MAGNETIC_FIELD
    • TYPE_MAGNETIC_FIELD_UNCALIBRATED
  • [C-SR-7] Yukarıda listelenen tüm Doğrudan Kanal Türleri için TYPE_HARDWARE_BUFFER doğrudan kanal türünü desteklemeniz önemle ÖNERİLİR.
  • [C-1-21] 7.3.9 numaralı bölümde belirtildiği gibi, android.hardware.hifi_sensors için jiroskop, ivme ölçer ve manyetometreyle ilgili koşulları karşılamalıdır.
  • [C-SR-8] android.hardware.sensor.hifi_sensors özelliğini desteklemeniz önemle ÖNERİLİR.
  • [C-1-22] Uçtan uca hareketten fotona gecikmesi 28 milisaniyeden yüksek OLMAMALIDIR.
  • [C-SR-9] Hareketten fotona kadar olan uçtan uca gecikmenin 20 milisaniyeden yüksek olmaması önemle ÖNERİLİR.
  • [C-1-23] İlk kare oranına sahip OLMALIDIR. İlk kare oranı, siyahtan beyaza geçişten sonraki ilk karedeki piksellerin parlaklığı ile kararlı durumdaki beyaz piksellerin parlaklığı arasındaki orandır ve en az %85 olmalıdır.
  • [C-SR-10] İlk kare oranının en az %90 olması önemle ÖNERİLİR.
  • Ön plan uygulamasına özel bir çekirdek sağlayabilir ve en üstteki ön plan uygulamasına özel CPU çekirdeklerinin sayısını döndürmek için Process.getExclusiveCores API'yi destekleyebilir.

Özel çekirdek destekleniyorsa çekirdek:

  • [C-2-1] Uygulama tarafından kullanılan cihaz sürücüleri hariç olmak üzere, üzerinde başka kullanıcı alanı işlemlerinin çalıştırılmasına İZİN VERMEMELİDİR ancak bazı çekirdek işlemlerinin gerektiği şekilde çalıştırılmasına İZİN VEREBİLİR.

7.10. Dokunma teknolojisi

Yeni şartlar başlatma

Elde tutulması veya takılması amaçlanan cihazlar, genel amaçlı bir dokunma aktüatörü içerebilir. Bu aktüatör, uygulamalar tarafından zil sesleri, alarmlar, bildirimler ve genel dokunma geri bildirimi aracılığıyla dikkat çekmek gibi amaçlarla kullanılabilir.

Cihaz uygulamaları bu tür bir genel amaçlı dokunma aktüatörü İÇERMEZSE:

  • [7.10/C] Vibrator.hasVibrator() için false döndürmelidir.

Cihaz uygulamalarında bu tür en az bir genel amaçlı dokunma aktüatörü YER ALIYORSA:

Cihaz uygulamaları dokunma sabitleri eşlemesini izliyorsa:

Yeni şartların sona ermesi

Cihaza özgü gereksinimler için 2.2.1 bölümüne bakın.

7.11. Medya Performansı Sınıfı

Cihaz uygulamasının medya performans sınıfı, android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS API'sinden elde edilebilir. Medya performansı sınıfı ile ilgili şartlar, R (30 sürümü) ile başlayan her Android sürümü için tanımlanır. 0 olan özel değer, cihazın medya performansı sınıfında olmadığını belirtir.

Cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

  • [C-1-1] En az android.os.Build.VERSION_CODES.R değerini döndürmelidir.

  • [C-1-2] El cihazı uygulaması OLMALIDIR.

  • [C-1-3] 2.2.7 numaralı bölümde açıklanan "Medya Performansı Sınıfı" ile ilgili tüm koşulları karşılamalıdır.

Diğer bir deyişle, Android T'deki medya performansı sınıfı yalnızca T, S veya R sürümüne sahip el cihazları için tanımlanır.

Cihaza özgü gereksinimler için 2.2.7 numaralı bölüme bakın.

8. Performans ve Güç

Bazı minimum performans ve güç ölçütleri kullanıcı deneyimi açısından kritiktir ve geliştiricilerin uygulama geliştirirken kullanacağı temel varsayımları etkiler.

8.1. Kullanıcı Deneyimi Tutarlılığı

Uygulamalar ve oyunlar için tutarlı bir kare hızı ve yanıt süresi sağlamak üzere belirli minimum şartlar karşılanıyorsa son kullanıcıya sorunsuz bir kullanıcı arayüzü sağlanabilir. Cihaz türlerine bağlı olarak cihaz uygulamalarında, 2. bölümde açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev geçişi için ölçülebilir koşullar OLABİLİR.

8.2. Dosya G/Ç Erişim Performansı

Uygulamanın özel veri depolama alanında (/data bölümü) tutarlı bir dosya erişim performansı için ortak bir referans noktası sağlamak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak uygun bir beklenti belirlemelerine olanak tanır. Cihaz türlerine bağlı olarak cihaz uygulamalarında, aşağıdaki okuma ve yazma işlemleri için 2. bölümde açıklanan belirli koşullar OLABİLİR:

  • Sıralı yazma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazılarak ölçülmüştür.
  • Rastgele yazma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazılarak ölçülür.
  • Sıralı okuma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosyanın okunmasıyla ölçülür.
  • Arızi okuma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosyanın okunmasıyla ölçülür.

8.3. Güç Tasarrufu Modları

Cihaz uygulamalarında, AOSP'ye dahil olan ve cihaz güç yönetimini iyileştirmeye yönelik özellikler (ör. Uygulama Bekleme Grubu, Doze) varsa veya Kısıtlanmış Uygulama Bekleme Grubu'ndan daha güçlü kısıtlamalar uygulamak için özellikler genişletilmişse:

  • [C-1-1] Tetikleme, bakım, uyanma algoritmaları ve global sistem ayarlarının veya Uygulamada Bekleme ve Uyku güç tasarrufu modlarının DeviceConfig kullanımı için AOSP uygulamasından AYRILMAMALIDIR.
  • [C-1-2] Uygulama bekleme modu için her gruptaki uygulamalarda işlerin, alarmların ve ağın sınırlanmasını yönetmek üzere genel ayarların veya DeviceConfig'in kullanımıyla ilgili olarak AOSP uygulamasından AYRILMAMALIDIR.
  • [C-1-3] Uygulamada bekleme için kullanılan uygulama bekleme kapları sayısı açısından AOSP uygulamasından AYRILMAMALIDIR.
  • [C-1-4] Güç Yönetimi bölümünde açıklandığı şekilde uygulama bekleme kapları ve Doze özelliğini UYGULAMALIDIR.
  • [C-1-5] Cihaz güç tasarrufu modundayken PowerManager.isPowerSaveMode() için true döndürülmelidir.
  • [C-1-6] Uygulamada bekleme ve Doze güç tasarrufu modlarından veya pil optimizasyonlarından muaf tutulan tüm uygulamaları göstermek için kullanıcıya olanak tanımalı ve kullanıcıdan bir uygulamanın pil optimizasyonlarını yoksaymasına izin vermesini istemek için ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS intent'ini uygulamalıdır.
  • [C-SR-1] Pil tasarrufu özelliğini etkinleştirmek ve devre dışı bırakmak için kullanıcılara kolaylık sağlamak önemle ÖNERİLİR.
  • [C-SR-2] Uygulama bekleme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcılara kolaylık sağlamak önemle ÖNERİLİR.

Cihaz uygulamaları, AOSP'ye dahil edilen güç yönetimi özelliklerini genişletiyorsa ve bu uzantı Nadir Uygulama Bekleme Grubu'ndan daha katı kısıtlamalar uyguluyorsa 3.5.1 numaralı bölümü inceleyin.

Android cihaz uygulamaları, güç tasarrufu modlarına ek olarak Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) tarafından tanımlanan 4 uyku güç durumundan herhangi birini veya tümünü UYGULAYABİLİR.

Cihaz uygulamaları, ACPI tarafından tanımlandığı şekilde S4 güç durumlarını uygularsa:

  • [C-1-1] Bu duruma yalnızca kullanıcı cihazı etkin olmayan bir duruma getirmek için açık bir işlem yaptıktan (ör. cihazın fiziksel bir parçası olan bir kapağı kapatarak veya bir aracı ya da televizyonu kapatarak) ve kullanıcı cihazı yeniden etkinleştirdikten (ör. kapağı açarak veya aracı ya da televizyonu tekrar açarak) sonra girilmelidir.

Cihaz uygulamaları, ACPI tarafından tanımlandığı şekilde S3 güç durumlarını uygularsa:

  • [C-2-1] Yukarıdaki C-1-1 koşulunu karşılamalı VEYA yalnızca üçüncü taraf uygulamaları sistem kaynaklarına (ör. ekran, CPU) ihtiyaç duymadığında S3 durumuna girmelidir.

    Buna karşılık, üçüncü taraf uygulamaları sistem kaynaklarına ihtiyaç duyduğunda bu SDK'da açıklandığı gibi S3 durumundan ÇIKMALIDIR.

    Örneğin, üçüncü taraf uygulamaları FLAG_KEEP_SCREEN_ON aracılığıyla ekranın açık kalmasını veya PARTIAL_WAKE_LOCK aracılığıyla CPU'nun çalışmasını isterken C-1-1 bölümünde açıklandığı gibi kullanıcı cihazı etkin olmayan bir duruma getirmek için açık bir işlem yapmadığı sürece cihaz S3 durumuna GİRMEMELİDİR. Buna karşılık, üçüncü taraf uygulamalarının JobScheduler aracılığıyla uyguladığı bir görevin tetiklendiği veya Firebase Cloud Messaging'in üçüncü taraf uygulamalarına gönderildiği bir zamanda, kullanıcı cihazı etkin olmayan bir duruma getirmediği sürece cihazın S3 durumundan çıkması GEREKİR. Bunlar kapsamlı örnekler değildir ve AOSP, bu durumdan uyanış tetikleyen kapsamlı uyanma sinyalleri uygular.

8.4. Güç Tüketimi Muhasebesi

Güç tüketiminin daha doğru bir şekilde hesaplanması ve raporlanması, uygulama geliştiricilere hem teşvikler hem de uygulamanın güç kullanım şeklini optimize etmek için araçlar sağlar.

Cihaz uygulamaları:

  • [C-SR-1] Her donanım bileşeni için akım tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini Android Open Source Project sitesinde belirtildiği şekilde tanımlayan bileşen başına güç profili sağlanması önemle ÖNERİLİR.
  • [C-SR-2] Tüm güç tüketimi değerlerinin miliamper-saat (mAh) cinsinden raporlanması önemle ÖNERİLİR.
  • [C-SR-3] Her işlemin UID'si başına CPU güç tüketimini bildirmeniz önemle ÖNERİLİR. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
  • [C-SR-4] Bu güç kullanımını, uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla sunmanız önemle ÖNERİLİR.
  • Donanım bileşeninin güç kullanımını bir uygulamaya bağlayamıyorsanız donanım bileşeninin kendisine bağlanmalıdır.

8.5. Tutarlı Performans

Uzun süre çalışan yüksek performanslı uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırlamaları nedeniyle CPU'nun azaltılması nedeniyle önemli ölçüde dalgalanabilir. Android, cihazın uygun olduğu durumlarda ön plandaki en önemli uygulamanın, bu tür dalgalanmaları gidermek için sistemin kaynakların tahsisini optimize etmesini isteyebileceği programatik arayüzler içerir.

Cihaz uygulamaları:

Cihaz uygulamaları, Sürdürülebilir Performans Modu'nu desteklediğini bildirirse:

  • [C-1-1] Uygulama istediğinde, en üstteki ön plan uygulamasına en az 30 dakika boyunca tutarlı bir performans düzeyi SAĞLAMALIDIR.
  • [C-1-2] Window.setSustainedPerformanceMode() API'sini ve ilgili diğer API'leri UYGULAMALIDIR.

Cihaz uygulamaları iki veya daha fazla CPU çekirdeği içeriyorsa:

  • En üst ön plan uygulaması tarafından ayrılabilecek en az bir özel çekirdek SAĞLANMALIDIR.

Cihaz uygulamaları, en üst ön plan uygulaması için özel bir çekirdek ayırmayı destekliyorsa:

  • [C-2-1] Üst ön plan uygulaması tarafından ayrılabilecek özel çekirdeklerin kimlik numaralarını Process.getExclusiveCores() API yöntemi aracılığıyla bildirmelidir.
  • [C-2-2] Uygulamanın özel çekirdeklerde çalışması için kullandığı cihaz sürücüleri dışındaki kullanıcı alanı işlemlerine İZİN VERMEMELİDİR ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına İZİN VEREBİLİR.

Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:

9. Güvenlik Modeli Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] Android geliştirici dokümanlarında API'ler için Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli UYGULANMALIDIR.

  • [C-0-2] Üçüncü taraflardan/yetkililerden ek izinler/sertifikalar gerektirmeden kendinden imzalı uygulamaların yüklenmesini DESTEKLEMELİDİR.

Cihaz uygulamaları android.hardware.security.model.compatible özelliğini beyan ederse:

  • [C-1-1] Aşağıdaki alt bölümlerde listelenen koşulları desteklemelidir.

9.1. İzinler

Cihaz uygulamaları:

  • [C-0-1] Android geliştirici belgelerinde tanımlandığı şekilde Android izin modelini ve Android roller modelini desteklemelidir. Daha açık belirtmek gerekirse, SDK dokümanlarında açıklandığı şekilde tanımlanan her izin ve rolü zorunlu kılmalıdır. Hiçbir izin veya rol atlanmamalı, değiştirilmemeli ya da yok sayılmamalıdır.

  • Yeni izin kimliği dizelerinin android.\* ad alanında olmaması koşuluyla ek izinler EKLEYEBİLİRİ.

  • [C-0-2] PROTECTION_FLAG_PRIVILEGED protectionLevel değerine sahip izinler, yalnızca sistem resminin ayrıcalıklı yollarına (ve APEX dosyalarına) önceden yüklenmiş uygulamalara VERİLMELİDİR ve her uygulama için açıkça izin verilenler listesinde yer alan izinlerin alt kümesi içinde olmalıdır. AOSP uygulaması, etc/permissions/ yolundaki dosyalardan her uygulama için izin verilenler listesindeki izinleri okuyup dikkate alarak ve ayrıcalıklı yol olarak system/priv-app yolunu kullanarak bu koşulu karşılar.

Tehlikeli koruma düzeyine sahip izinler çalışma zamanı izinleridir. targetSdkVersion değeri 22'den büyük olan uygulamalar bunları çalışma zamanında ister.

Cihaz uygulamaları:

  • [C-0-3] Kullanıcının istenen çalışma zamanı izinlerini verip vermeyeceğine karar vermesi için özel bir arayüz GÖSTERMELİDİR ve ayrıca kullanıcının çalışma zamanı izinlerini yönetmesi için bir arayüz sağlamalıdır.

  • [C-0-4] Her iki kullanıcı arayüzünün de yalnızca bir uygulaması OLMALIDIR.

  • [C-0-5] Aşağıdaki durumlar hariç olmak üzere uygulamalara çalışma zamanı izni VERMEMELİDİR:

    • Cihazın gönderildiği sırada yüklenir VE
    • Uygulama izin kullanmadan önce kullanıcının izni alınabilir.

      VEYA

    • Çalışma zamanı izinleri, varsayılan izin verme politikası uyarınca veya platform rolüne sahip olmak için verilir.

  • [C-0-6] android.permission.RECOVER_KEYSTORE iznini yalnızca düzgün şekilde güvenli bir Kurtarma Aracı kaydeden sistem uygulamalarına VERMELİDİR. Düzgün bir şekilde korunan bir kurtarma aracısı, kilit ekranı bilgi faktörüne yönelik deneme yanılma saldırılarını önlemek için Google Cloud Key Vault Hizmeti'nde açıklanan korumaya eşdeğer veya daha güçlü korumaya sahip güvenli donanımla donatılmış, cihaz dışı bir uzak depolama alanıyla senkronize olan cihaz üzerinde yazılım aracısı olarak tanımlanır.

Cihaz uygulamaları:

  • [C-0-7] Bir uygulama, standart Android API'si veya özel mekanizma üzerinden konum veya 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:

    • 9.8.8 numaralı bölümde açıklandığı şekilde cihazın konumu (ör. enlem ve boylam).
    • Cihazın konumunu belirlemek veya tahmin etmek için kullanılabilecek bilgiler (ör. SSID, BSSID, hücre kimliği veya cihazın bağlı olduğu ağın konumu).
    • Kullanıcının fiziksel aktivitesi veya fiziksel aktivitenin sınıflandırması.

Daha açık belirtmek gerekirse cihaz uygulamaları:

  • [C-0-8] Bir uygulamanın konum veya fiziksel aktivite verilerine erişmesine izin vermek için kullanıcı izni ALMALIDIR.
  • [C-0-9] Çalışma zamanında izin YALNIZCA SDK'da açıklandığı şekilde yeterli izne sahip olan uygulamaya VERİLMELİDİR. Örneğin, TelephonyManager#getServiceState android.permission.ACCESS_FINE_LOCATION gerektirir.

Yukarıdaki Android konum izni özelliklerindeki tek istisna, kullanıcı konumunu belirlemek veya elde etmek için konuma erişmeyen uygulamalardır. Özellikle:

  • Uygulamalar RADIO_SCAN_WITHOUT_LOCATION iznini aldığında
  • Sistem uygulamalarının NETWORK_SETTINGS veya NETWORK_SETUP_WIZARD iznine sahip olduğu cihaz yapılandırması ve kurulum amacıyla.

İzinler, davranışlarını değiştirerek kısıtlanmış olarak işaretlenebilir.

  • [C-0-10] hardRestricted işaretiyle işaretlenmiş izinler, aşağıdaki durumlar hariç olmak üzere bir uygulamaya VERİLMEMELİDİR:

    • Uygulama APK dosyası sistem bölümündedir.
    • Kullanıcı, bir uygulamaya hardRestricted izinleriyle ilişkili bir rol atar.
    • Yükleyici, hardRestricted iznini bir uygulamaya verir.
    • Bir uygulamaya önceki bir Android sürümünde hardRestricted izni verilir.
  • [C-0-11] softRestricted iznine sahip uygulamalar, SDK'da açıklandığı şekilde izin verilenler listesine eklenene kadar yalnızca sınırlı erişim ALMALI ve tam erişim ALMAMALIDIR. SDK'da her softRestricted izni (ör. READ_EXTERNAL_STORAGE) için tam ve sınırlı erişim tanımlanır.

  • [C-0-12] setPermissionPolicy ve setPermissionGrantState API'lerinde tanımlanan izin kısıtlamalarını atlatmak için herhangi bir özel işlev veya API SAĞLAMAMALIDIR.

  • [C-0-13] Android etkinlikleri ve hizmetlerinden tehlikeli izinlerle korunan verilere yapılan her programatik erişimi kaydetmek ve izlemek için AppOpsManager API'lerini KULLANMALIDIR.

  • [C-0-14] Yalnızca rol şartlarını karşılayan işlevlere sahip uygulamalara rol atanmalıdır.

  • [C-0-15] Platform tarafından tanımlanan rollerin kopyası veya işlevlerinin üst kümesi olan roller tanımlanmamalıdır.

Cihazlar android.software.managed_users değerini raporluyorsa:

  • [C-1-1] Yönetici tarafından aşağıdaki izinler sessizce verilmemelidir:
    • Konum (ACCESS_BACKGROUND_LOCATION, ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION).
    • Kamera (CAMERA)
    • Mikrofon (RECORD_AUDIO)
    • Vücut sensörü (BODY_SENSORS)
    • Fiziksel aktivite (ACTIVITY_RECOGNITION)

Cihaz uygulamaları, kullanıcılara ACTION_MANAGE_OVERLAY_PERMISSION intent'ini işleyen bir etkinlikle diğer uygulamaların üzerine hangi uygulamaların çizilebileceğini seçme olanağı tanıyorsa:

  • [C-2-1] ACTION_MANAGE_OVERLAY_PERMISSION intent'i için intent filtreleri olan tüm etkinliklerin, başlatan uygulamadan veya sağladığı bilgilerden bağımsız olarak aynı kullanıcı arayüzü ekranına sahip olmasını SAĞLAMALIDIR.

Cihaz uygulamaları android.software.device_admin iznini raporluyorsa:

  • [C-3-1] Tam yönetilen cihaz kurulumu (cihaz sahibi kurulumu) sırasında, BT yöneticisinin, yönetici cihazdaki izinleri devre dışı bırakmadığı sürece uygulamaların mikrofon, kamera ve konum dahil olmak üzere telefondaki ayarları kontrol etmesine izin verebileceğini belirten bir sorumluluk reddi beyanı GÖSTERMELİDİR. Bu beyanla birlikte, kullanıcıya kuruluma devam etme veya kurulumdan çıkma seçenekleri sunulmalıdır.

Cihaz uygulamaları, System UI Intelligence, System Ambient Audio Intelligence, System Audio Intelligence, System Notification Intelligence, System Text Intelligence veya System Visual Intelligence rollerinden herhangi birini içeren paketleri önceden yüklerse bu paketler:

  • [C-4-1] "9.8.6 İçerik Yakalama" ve "9.8.6 OS düzeyinde ve ortam verileri ve 9.8.15 Korumalı Alan API'si uygulamaları" bölümlerinde cihaz uygulamaları için belirtilen tüm koşulları karşılamalıdır.

  • [C-4-2] android.permission.INTERNET izni OLMAMALIDIR. Bu, 9.8.6 bölümünde listelenen ÖNEMLE TAVSİYE EDİLİR'den daha katı bir öneridir.
  • [C-4-3] Aşağıdaki sistem uygulamaları dışındaki diğer uygulamalara BAĞLANMAMALIDIR: Bluetooth, Kişiler, Medya, Telefon, SystemUI ve internet API'leri sağlayan bileşenler. Bu, 9.8.6 numaralı bölümde listelenen KESİNLİKLE ÖNERİLİR'den daha katı bir öneridir.

Yeni şartlar başlatma

Cihaz uygulamaları, VoiceInteractionService özelliğini desteklemek için varsayılan bir uygulama içeriyorsa:

  • [C-5-1] Söz konusu uygulama için varsayılan olarak ACCESS_FINE_LOCATION izni VERMEMELİDİR.

Yeni şartların sona ermesi

9.2. UID ve İşlem İzolasyon

Cihaz uygulamaları:

  • [C-0-1] Her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alanı modelini DESTEKLEMELİDİR.
  • [C-0-2] Güvenlik ve İzinler referansında tanımlandığı şekilde uygulamaların düzgün bir şekilde imzalanması ve oluşturulması koşuluyla, aynı Linux kullanıcı kimliğiyle birden fazla uygulamanın çalıştırılmasını DESTEKLEMELİDİR.

9.3. Dosya sistemi izinleri

Cihaz uygulamaları:

9.4. Alternatif Yürütme Ortamları

Cihaz uygulamaları, Dalvik Yürütülebilir Format veya yerel koddan başka bir yazılım ya da teknoloji kullanarak uygulamaları yürüten çalışma ortamı içerse bile Android güvenlik ve izin modelinin tutarlılığını korumalıdır. Başka bir deyişle:

  • [C-0-1] Alternatif çalışma ortamları Android uygulamaları OLMALIDIR ve 9. bölümde açıklandığı gibi standart Android güvenlik modeline uymalıdır.

  • [C-0-2] Alternatif çalışma zamanlarına, çalışma zamanının AndroidManifest.xmldosyasında <uses-permission> mekanizması aracılığıyla istenmeyen izinlerle korunan kaynaklara erişim İZİN VERİLMEMELİDİR.

  • [C-0-3] Alternatif çalışma ortamları, uygulamaların sistem uygulamalarıyla kısıtlanmış Android izinleriyle korunan özellikleri kullanmasına İZİN VERMEMELİDİR.

  • [C-0-4] Alternatif çalışma ortamları Android korumalı alan modeline UYMALIDIR ve alternatif çalışma ortamı kullanan yüklü uygulamalar, cihazda yüklü başka bir uygulamanın korumalı alanını, paylaşılan kullanıcı kimliği ve imzalama sertifikası gibi standart Android mekanizmaları dışında YENIDEN KULLANMAMALIDIR.

  • [C-0-5] Alternatif çalışma ortamları, diğer Android uygulamalarına karşılık gelen korumalı alanlarla başlatılmamalı, bu alanlara erişim izni vermemeli veya bu alanlara erişim izni almamalıdır.

  • [C-0-6] Alternatif çalışma zamanları, süper kullanıcının (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılmamalı, bu ayrıcalıklara sahip olmamalı ya da diğer uygulamalara bu ayrıcalıkları vermemelidir.

  • [C-0-7] Alternatif çalışma zamanlarının .apk dosyaları, cihaz uygulamalarının sistem resmine dahil edildiğinde, cihaz uygulamalarında yer alan diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla imzalanmalıdır.

  • [C-0-8] Alternatif çalışma zamanları, uygulamaları yüklerken uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMAK ZORUNDADIR.

  • [C-0-9] Bir uygulamanın, karşılık gelen bir Android izni (ör. Kamera, GPS vb.) olan bir cihaz kaynağını kullanması gerektiğinde, alternatif çalışma zamanı kullanıcıyı uygulamanın bu kaynağa erişebileceği konusunda BİLGİLENDİRMELİDİR.

  • [C-0-10] Çalışma ortamı, uygulama özelliklerini bu şekilde kaydetmediğinde, çalışma ortamı, bu çalışma ortamını kullanan herhangi bir uygulamayı yüklerken çalışma ortamının sahip olduğu tüm izinleri LİSTELEMELİDİR.

  • Alternatif çalışma ortamları, uygulamaları PackageManager üzerinden ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir.

  • Alternatif çalışma zamanları, alternatif çalışma zamanını kullanan tüm uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlayabilir.

9.5. Çok Kullanıcılı Destek

Android, birden fazla kullanıcı desteği sunar ve tam kullanıcı izolasyonu ile kısmi izolasyonlu kullanıcı profillerinin klonlanması için destek sağlar(ör. android.os.usertype.profile.CLONE türündeki tek bir ek kullanıcı profili).

  • Birincil harici depolama alanı için çıkarılabilir medya kullanan cihaz uygulamaları çok kullanıcılı özelliği etkinleştirebilir ancak etkinleştirmemelidir.

Cihaz uygulamaları birden fazla kullanıcı desteği içeriyorsa:

  • [C-1-2] Her kullanıcı için, API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli UYGULAMALIDIR.
  • [C-1-3] Her kullanıcı örneği için ayrı ve izole edilmiş paylaşılan uygulama depolama alanı (/sdcard olarak da bilinir) dizinleri OLMALIDIR.
  • [C-1-4] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolanmış olsa bile başka bir kullanıcıya ait dosyaları listelemediğinden, okumadığından veya bu dosyalara yazmadığından EMİN OLMALIDIR.
  • [C-1-5] Çok kullanıcılı mod etkinleştirildiğinde SD kartın içeriğini, cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanıyorsa yalnızca sistem tarafından erişilebilen, çıkarılabilir olmayan bir medyada depolanan bir anahtar kullanarak ŞİFRELEMELİYDİR. Bu durumda, medya ana bilgisayar tarafından okunamaz hale geleceği için ana bilgisayarlara mevcut kullanıcının verilerine erişim sağlamak amacıyla cihaz uygulamalarının MTP'ye veya benzer bir sisteme geçmesi gerekir.

Cihaz uygulamaları birden fazla kullanıcı desteği içeriyorsa aynı uygulamanın iki örneğini çalıştırmak için özel olarak oluşturulan kullanıcılar dışındaki tüm kullanıcılar için:

  • [C-2-1] Her kullanıcı örneği için ayrı ve izole edilmiş paylaşılan uygulama depolama alanı (diğer adıyla /sdcard) dizinleri OLMALIDIR.
  • [C-2-2] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolanmış olsa bile başka bir kullanıcıya ait dosyaları listelemediğinden, okumadığından veya bu dosyalara yazmadığından EMİN OLMALIDIR.

Cihaz uygulamaları, aynı uygulamanın iki örneğini çalıştırmak amacıyla birincil kullanıcıya (ve yalnızca birincil kullanıcıya) karşı android.os.usertype.profile.CLONE türündeki tek bir ek kullanıcı profili OLUŞTURABİLİR. Bu ikili örnekler kısmen izole depolama alanını paylaşır, başlatıcıda son kullanıcıya aynı anda sunulur ve aynı son görüntüleme görünümünde görünür. Örneğin, bu özellik kullanıcının çift SIM kartlı bir cihaza tek bir uygulamanın iki ayrı örneğini yüklemesini desteklemek için kullanılabilir.

Cihaz uygulamaları yukarıda bahsedilen ek kullanıcı profilini oluşturuyorsa:

  • [C-3-1] Yalnızca üst kullanıcı profilinin erişebildiği veya doğrudan bu ek kullanıcı profiline ait olan depolama alanına ya da verilere erişim SAĞLAMALIDIR.
  • [C-3-2] İş profili olarak BU UYGULAMA OLMAMALIDIR.
  • [C-3-3] Gizli uygulama veri dizinleri, üst kullanıcı hesabından İZOLE EDİLMİŞ OLMALIDIR.
  • [C-3-4] Cihaz sahibinin temel hazırlığı yapılmışsa (bkz. bölüm 3.9.1) ek kullanıcı profilinin oluşturulmasına İZİN VERMEMELİ veya önce ek kullanıcı profili kaldırılmadan cihaz sahibinin temel hazırlığına İZİN VERMEMELİ.

Yeni şartlar başlatma

Cihaz uygulamaları yukarıda bahsedilen ek kullanıcı profilini oluşturuyorsa:

  • [C-4-5] Simgeler kullanıcılara sunulurken ikili örnek uygulama simgeleri görsel olarak ayırt edilebilir OLMALIDIR.
  • [C-4-6] Klon profil verilerinin tamamını silmek için kullanıcılara bir kolaylık sunulmalıdır.
  • [C-4-7] Kullanıcı, Klon profil verilerinin tamamını silmeyi seçtiğinde tüm Klon uygulamalarını kaldırması, gizli uygulama veri dizinlerini ve içeriklerini ve Klon profil verilerini silmesi GEREKİR.
  • Son kopya uygulama silindiğinde kullanıcıdan kopya profil verilerinin tamamını silmesini İSTEMELİDİR.
  • [C-4-8] Kullanıcıyı, kopya uygulamanın yüklenmesi kaldırıldığında uygulama verilerinin silineceği konusunda bilgilendirmeli veya uygulama cihazdan kaldırıldığında uygulama verilerini saklama seçeneği sunmalıdır.
  • [C-4-9] Kullanıcı, uygulamayı kaldırırken verileri silmeyi seçtiğinde gizli uygulama veri dizinlerini ve içeriklerini SİLMELİDİR.

  • [C-4-14] Bu ek profilde çalışan uygulamalar için ayrı izin ve depolama alanı yönetimi OLMALIDIR

  • [C-4-5] Yalnızca ek profilde başlatıcı etkinliği olan uygulamaların, üst kullanıcı profilinde zaten erişilebilen kişilere erişmesine izin VERİLMELİDİR.

Yeni şartların sona ermesi

9.6. Premium SMS Uyarısı

Android, kullanıcıları giden premium SMS mesajları hakkında uyarma desteği içerir. Premium SMS mesajları, operatöre kayıtlı bir hizmete gönderilen ve kullanıcıdan ücret alınabilecek kısa mesajlardır.

Cihaz uygulamaları android.hardware.telephony için destek belirtiyorsa:

  • [C-1-1] Cihazdaki /data/misc/sms/codes.xml dosyasında tanımlanan normal ifadeyle tanımlanan numaralara SMS mesajı göndermeden önce kullanıcıları UYARMALIDIR. Android Açık Kaynak Projesi, bu koşulu karşılayan bir uygulama sağlar.

9.7. Güvenlik Özellikleri

Cihaz uygulamalarında, aşağıda açıklandığı gibi hem çekirdek hem de platformdaki güvenlik özelliklerine uygunluk sağlanmalıdır.

Android Korumalı Alanı, Güvenlik Gelişmiş Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikleri içerir. Cihaz uygulamaları:

  • [C-0-1] SELinux veya başka güvenlik özellikleri Android çerçevesinin altında uygulansa bile mevcut uygulamalarla uyumluluğu KORUMALIDIR.
  • [C-0-2] Bir güvenlik ihlali algılandığında ve Android çerçevesinin altında uygulanan güvenlik özelliği tarafından başarıyla engellendiğinde görünür bir kullanıcı arayüzü OLMAMALISIDIR ancak engellenmemiş bir güvenlik ihlali meydana geldiğinde ve bu durum başarılı bir istismarla sonuçlandığında görünür bir kullanıcı arayüzü OLABİLİR.
  • [C-0-3] SELinux'u veya Android çerçevesinin altında uygulanan diğer güvenlik özelliklerini kullanıcı veya uygulama geliştirici tarafından yapılandırılabilir hale GETİRMEMELİDİR.
  • [C-0-4] Bir API (ör. Cihaz Yönetimi API'si) aracılığıyla başka bir uygulamayı etkileyebilecek bir uygulamanın, uyumluluğu bozan bir politika yapılandırmasına İZİN VERMEMELİDİR.
  • [C-0-5] Android Açık Kaynak Projesi sitesinde açıklandığı gibi her işleme daha dar kapsamlı erişim izni verilebilmesi için medya çerçevesini birden fazla işleme ayırmalıdır.
  • [C-0-6] Çok iş parçacıklı programlardan yapılandırılabilir bir politika kullanılarak sistem çağrılarının filtrelenmesine olanak tanıyan bir çekirdek uygulama korumalı alan mekanizması UYGULANMALIDIR. Yukarı yönlü Android Açık Kaynak Projesi, source.android.com'un Çekirdek Yapılandırması bölümünde açıklandığı gibi, seccomp-BPF'yi threadgroup senkronizasyonu (TSYNC) ile etkinleştirerek bu koşulu karşılar.

Çekirdek bütünlüğü ve kendi kendini koruma özellikleri, Android güvenliğinin ayrılmaz bir parçasıdır. Cihaz uygulamaları:

  • [C-0-7] Çekirdek yığın arabellek taşması koruma mekanizmaları UYGULANMALIDIR. Bu tür mekanizmalara örnek olarak CC_STACKPROTECTOR_REGULAR 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) katı çekirdek bellek korumaları UYGULANMALIDIR.
  • [C-0-9] API düzeyi 28 veya daha yüksek sürümlerle birlikte gönderilen cihazlarda kullanıcı alanı ile çekirdek alanı (ör. CONFIG_HARDENED_USERCOPY) arasındaki kopyalarda statik ve dinamik nesne boyutu sınırları kontrolü UYGULANMALIDIR.
  • [C-0-10] API düzeyi 28 veya daha yüksek sürümlerle birlikte gönderilen cihazlarda çekirdek modunda (ör. donanım PXN veya CONFIG_CPU_SW_DOMAIN_PAN ya da CONFIG_ARM64_SW_TTBR0_PAN aracılığıyla taklit edilen) yürütüldüğünde kullanıcı alanı belleğini YÜRÜTMEMELİDİR.
  • [C-0-11] API düzeyi 28 veya üstü sürümlerle birlikte gönderilen cihazlarda, normal kullanıcı kopyası erişim API'leri (ör. donanım PAN'ı veya CONFIG_CPU_SW_DOMAIN_PAN ya da CONFIG_ARM64_SW_TTBR0_PAN aracılığıyla taklit edilen) dışındaki çekirdekte kullanıcı alanı belleği OKUMAMALI veya YAZMAMALIDIR.
  • [C-0-12] Donanım, API düzeyi 28 veya daha yüksek sürümlerle birlikte gönderilen tüm cihazlarda (ör. CONFIG_PAGE_TABLE_ISOLATION veya CONFIG_UNMAP_KERNEL_AT_EL0) CVE-2017-5754'e karşı savunmasızsa çekirdek sayfa tablosu izolasyonu UYGULANMALIDIR.
  • [C-0-13] Donanım, API düzeyi 28 veya daha yüksek sürümlerle birlikte gönderilen tüm cihazlarda (ör. CONFIG_HARDEN_BRANCH_PREDICTOR) CVE-2017-5715'e karşı savunmasızsa dal tahmini güçlendirme uygulanmalıdır.

  • [C-SR-1] Yalnızca başlatma sırasında yazılan çekirdek verilerinin, başlatma işleminden sonra salt okunur olarak işaretlenmesi önemle ÖNERİLİR (ör. __ro_after_init).

  • [C-SR-2] Çekirdek kodunun ve belleğin düzenini rastgele hale getirmek ve rastgeleleştirmeyi tehlikeye atacak maruz kalmalardan kaçınmak (ör. /chosen/kaslr-seed Device Tree node veya EFI_RNG_PROTOCOL üzerinden önyükleyici entropisi ile CONFIG_RANDOMIZE_BASE) önemle ÖNERİLİR.

  • [C-SR-3] Kod yeniden kullanma 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ü (CFI) etkinleştirmeniz önemle ÖNERİLİR.

  • [C-SR-4] Etkinleştirilmiş bileşenlerde Kontrol Akışı Bütünlüğü'nü (CFI), Gölge Çağrı Yığını'nı (SCS) veya Tam Sayı Taşması Temizleme'yi (IntSan) devre dışı bırakmamanız önemle ÖNERİLİR.

  • [C-SR-5] CFI ve IntSan'da açıklandığı gibi, güvenlik açısından hassas olan diğer kullanıcı alanı bileşenleri için CFI, SCS ve IntSan'ın etkinleştirilmesi önemle ÖNERİLİR.

  • [C-SR-6] İlklenmemiş yerel değişkenlerin (CONFIG_INIT_STACK_ALL veya CONFIG_INIT_STACK_ALL_ZERO) kullanımını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi önemle ÖNERİLİR. Ayrıca, cihaz uygulamalarında yerel değişkenleri başlatmak için derleyici tarafından kullanılan değer varsayılmamalıdır.

  • [C-SR-7] İlklenmemiş yığın tahsislerinin (CONFIG_INIT_ON_ALLOC_DEFAULT_ON) kullanımını önlemek için çekirdekte yığın ilklendirmesinin etkinleştirilmesi önemle ÖNERİLİR ve bu tahsisleri başlatmak için çekirdek tarafından kullanılan değeri varsaymaları GEREKMEZ.

Cihaz uygulamaları SELinux'u destekleyebilecek bir Linux çekirdeği kullanıyorsa:

  • [C-1-1] SELinux'u UYGULAMALI.
  • [C-1-2] SELinux'un genel yaptırım moduna ayarlanması GEREKİR.
  • [C-1-3] Tüm alanlar zorunlu modda yapılandırılmalıdır. Bir cihaza/tedarikçiye özel alanlar da dahil olmak üzere izin verilen mod alan adlarına izin verilmez.
  • [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan system/sepolicy klasöründeki neverallow kurallarını değiştirmemeli, atlamamalı veya değiştirmemeli ve politika hem AOSP SELinux alanları hem de cihaz/tedarikçiye özgü 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ını, her uygulamanın özel veri dizininde uygulama başına SELinux kısıtlamaları olan uygulama başına SELinux korumalı alanlarında ÇALIŞTIRMALIDIR.
  • Yukarı akış Android Açık Kaynak Projesi'nin system/sepolicy klasöründe sağlanan varsayılan SELinux politikasını muhafaza ETMELİDİR ve yalnızca kendi cihazlarına özel yapılandırma için bu politikaya başka öğeler eklemelidir.

Cihaz uygulamaları Linux dışında bir çekirdek veya SELinux'u içermeyen Linux kullanıyorsa:

  • [C-2-1] SELinux'a eşdeğer zorunlu bir erişim denetimi sistemi KULLANMALIDIR.

Cihaz uygulamaları DMA yapabilen G/Ç cihazları kullanıyorsa:

  • [C-SR-9] DMA yapabilen her I/O cihazını bir IOMMU (ör. ARM SMMU) kullanarak yalıtmanız önemle ÖNERİLİR.

Android, cihaz güvenliğinin ayrılmaz bir parçası olan birden fazla ayrıntılı savunma özelliği içerir. Ayrıca Android, düşük kaliteye ve güvenliğe neden olan yaygın hataların önemli sınıflarını azaltmaya odaklanır.

Cihaz uygulamalarında bellek hatalarını azaltmak için:

  • [C-SR-10] ARMv9 cihazlar için MTE, ARMv8+ cihazlar için HWASan veya diğer cihaz türleri için ASan gibi kullanıcı alanı bellek hatası algılama araçları kullanılarak test edilmesi önemle ÖNERİLİR.
  • [C-SR-11] KASAN (CONFIG_KASAN, ARMv9 cihazlar için CONFIG_KASAN_HW_TAGS, ARMv8 cihazlar için CONFIG_KASAN_SW_TAGS veya diğer cihaz türleri için CONFIG_KASAN_GENERIC) gibi çekirdek bellek hata algılama araçları kullanılarak test edilmesi önemle ÖNERİLİR.
  • [C-SR-12] MTE, GWP-ASan ve KFENCE gibi bellek hatası algılama araçlarının üretimde kullanılması önemle ÖNERİLİR.

Cihaz uygulamalarında Arm TrustZone tabanlı bir TEE kullanılıyorsa:

  • [C-SR-13] Android ile TEE arasında bellek paylaşımı için standart bir protokol (ör. Armv8-A için Arm Firmware Framework (FF-A)) kullanılması önemle ÖNERİLİR.
  • [C-SR-14] Güvenilir uygulamaların yalnızca yukarıdaki protokol aracılığıyla kendileriyle açıkça paylaşılan belleğe erişmesi KESİNLİKLE ÖNERİLİR. Cihaz Arm S-EL2 istisna düzeyini destekliyorsa bu, güvenli bölüm yöneticisi tarafından zorunlu kılınmalıdır. Aksi takdirde bu, TEE OS tarafından zorunlu kılınmalıdır.

Yeni şartlar başlatma

Bellek Güvenliği teknolojisi, android:memtagMode manifest seçeneğini kullanan uygulamalarda en azından aşağıdaki hata sınıflarını yüksek (> %90) olasılıkla azaltan bir teknolojidir:

  • yığın arabelleği taşması
  • Ücretsiz deneme süresinden sonra kullanım
  • double free
  • wild free (malloc olmayan bir işaretçiden arındırılmış)

Cihaz uygulamaları:

  • [C-SR-15] ro.arm64.memtag.bootctl_supported ayarının yapılması önemle ÖNERİLİR.

Cihaz uygulamaları ro.arm64.memtag.bootctl_supported sistem özelliğini doğru olarak ayarlarsa:

  • [C-3-1] arm64.memtag.bootctl sistem mülkünün, aşağıdaki değerlerin virgülle ayrılmış bir listesini kabul etmesine izin VERMELİDİR. Bu durumda, sonraki yeniden başlatmada istenen etki uygulanır:

    • memtag: Yukarıda tanımlanan bir Bellek Güvenliği teknolojisi etkin
    • memtag-once: Yukarıda tanımlanan bir Bellek Güvenliği teknolojisi geçici olarak etkinleştirilir ve sonraki yeniden başlatma işleminden sonra otomatik olarak devre dışı bırakılır
    • memtag-off: Yukarıda tanımlanan bir Bellek Güvenliği teknolojisi devre dışı bırakıldı
  • [C-3-2] Kabuk kullanıcısının arm64.memtag.bootctl ayarlaması İÇİNDE OLMALIDIR.

  • [C-3-3] Tüm işlemlerin arm64.memtag.bootctl dosyasını okumasına İZİN VERİLMELİDİR.

  • [C-3-4] arm64.memtag.bootctl, önyükleme sırasında istenen duruma AYARLANMALIDIR. Cihaz uygulaması, sistem özelliğini değiştirmeden durumu değiştirmeye izin veriyorsa mülkü de GÜNCELLEMELİDİR.

  • [C-SR-16] memtag'ı bir kez ayarlayan ve cihazı yeniden başlatan bir Geliştirici Ayarı göstermeniz önemle ÖNERİLİR. Android Open Source Project, uyumlu bir önyükleyiciyle MTE önyükleyici protokolü aracılığıyla yukarıdaki koşulları karşılar.

  • [C-SR-17] Güvenlik Ayarları menüsünde, kullanıcının memtag'ü etkinleştirmesine olanak tanıyan bir ayar gösterilmesi önemle ÖNERİLİR.

Yeni şartların sona ermesi

9.8. Gizlilik

9.8.1. Kullanım Geçmişi

Android, kullanıcının seçimlerinin geçmişini depolar ve bu geçmişi UsageStatsManager ile yönetir.

Cihaz uygulamaları:

  • [C-0-1] Bu tür kullanıcı geçmişini makul bir saklama süresi boyunca SAKLAMALIDIR.
  • [C-SR-1] 14 günlük saklama süresinin, AOSP uygulamasında varsayılan olarak yapılandırıldığı şekilde tutulması önemle ÖNERİLİR.

Android, sistem etkinliklerini StatsLog tanımlayıcılarını kullanarak depolar ve bu geçmişi StatsManager ile IncidentManager System API aracılığıyla yönetir.

Cihaz uygulamaları:

  • [C-0-2] Sistem API sınıfı IncidentManager tarafından oluşturulan olay raporunda yalnızca DEST_AUTOMATIC ile işaretlenmiş alanları İÇERMELİDİR.
  • [C-0-3] StatsLog SDK belgelerinde açıklananlardan başka bir etkinliği günlüğe kaydetmek için sistem etkinlik tanımlayıcılarını KULLANMAMALIDIR. Günlüğe kaydedilen ek sistem etkinlikleri 100.000 ile 200.000 arasındaki farklı bir atom tanımlayıcı kullanabilir.

9.8.2. Kayıt

Cihaz uygulamaları:

  • [C-0-1] Kullanıcının izni olmadan veya devam eden bildirimleri temizlemeden kullanıcının özel bilgilerini (ör. tuş vuruşları, ekranda görüntülenen metin, hata raporu) cihazdan gönderen yazılım bileşenleri kutudan önceden yüklenmemeli veya dağıtılmamalıdır.
  • [C-0-2] Kullanıcı uyarısı göstermeli ve kullanıcı ekranında görüntülenen tüm hassas bilgilerin yakalanmasına izin veren açık kullanıcı izni almalıdırAOSP ile tam olarak aynı mesajı içeren her zaman her ekran yakalama oturumundayayınlama veya ekran kaydı etkinleştirilir MediaProjection.createVirtualDisplay(), VirtualDeviceManager.createVirtualDisplay() veya özel API'ler aracılığıyla başlatılır. Kullanıcılara, kullanıcı rızasının gelecekte gösterilmesini devre dışı bırakma olanağı SUNMAMALIDIR.
  • [C-0-3] Ekran aktarımı veya ekran kaydı etkinken kullanıcıya sürekli bir bildirim GÖSTERİLMELİDİR. AOSP, durum çubuğunda devam eden bildirim simgesini göstererek bu koşulu karşılar.

Yeni şartlar başlatma

  • [C-SR-1] AOSP'de uygulanan mesajla tamamen aynı olan bir kullanıcı uyarısı gösterilmesi önemle ÖNERİLİR. Ancak mesaj, kullanıcının ekranındaki hassas bilgilerin yakalandığı konusunda kullanıcıyı açıkça uyardığı sürece değiştirilebilir.

  • [C-0-4] Oturum, kullanıcının android.app.role.COMPANION_DEVICE_APP_STREAMING veya cihaz profiliyle associate() yapmasına izin verdiği bir sistem uygulaması tarafından başlatılmadığı sürece, kullanıcılara ekranı yakalamak için gelecekteki kullanıcı rızası istemlerini devre dışı bırakma olanağı SUNMAMALIDIR.android.app.role.COMPANION_DEVICE_NEARBY_DEVICE_STREAMING

    Yeni şartların sona ermesi

Cihaz uygulamalarında, sistemde ekranda görüntülenen içerikleri yakalayan ve/veya cihazda çalınan ses akışını Sistem API'si ContentCaptureService veya 9.8.6 OS düzeyinde ve ortam verileri bölümü'nde açıklanan diğer tescilli yöntemler dışında kaydeden işlevler varsa:

  • [C-1-1] Bu işlev etkinleştirildiğinde ve aktif olarak görüntü/ses kaydı yapıldığında kullanıcıya sürekli bildirim GÖNDERMELİDİR.

Cihaz uygulamaları, kullanıcının bağlamıyla ilgili yararlı bilgiler elde etmek için ortam sesini ve/veya cihazda çalınan sesi kaydedebilen, kutudan çıkar çıkmaz etkinleştirilmiş bir bileşen içeriyorsa:

  • [C-2-1] Kayıtlı ham sesi veya orijinal sese veya benzer bir kopyaya dönüştürülebilecek herhangi bir biçimi, açık kullanıcı izni olmadan kalıcı cihaz üzerinde depolama alanında saklamamalı veya cihazdan aktarmamalıdır.

"Mikrofon göstergesi", ekranda kullanıcıya sürekli olarak gösterilen ve gizlenemeyen, kullanıcıların mikrofonun kullanıldığını anladığı bir görünümü(benzersiz metin, renk, simge veya bunların bir kombinasyonu aracılığıyla) ifade eder.

"Kamera göstergesi", ekranda kullanıcının sürekli olarak görebileceği ve gizleyemeyeceği, kameranın kullanılmakta olduğunu anladığı bir görünümü (benzersiz metin, renk, simge veya bunların bir kombinasyonu aracılığıyla) ifade eder.

Gösterilen ilk saniyeden sonra bir gösterge görsel olarak değişebilir (ör. küçülebilir) ve orijinal olarak sunulduğu ve anlaşıldığı şekilde gösterilmesi gerekmez.

Mikrofon göstergesi, metin, simge veya renklerin kullanıcıya mikrofon kullanımının başladığını belirtmesi koşuluyla etkin olarak görüntülenen bir kamera göstergesiyle birleştirilebilir.

Metin, simge veya renklerin kullanıcıya kamera kullanımının başladığını belirtmesi koşuluyla kamera göstergesi, etkin olarak görüntülenen bir mikrofon göstergesiyle birleştirilebilir.

Cihaz uygulamaları android.hardware.microphone bildirirse:

  • [C-SR-1] Bir uygulama mikrofondaki ses verilerine erişirken mikrofon göstergesinin gösterilmesi önemle ÖNERİLİR. Ancak mikrofona yalnızca HotwordDetectionService, SOURCE_HOTWORD, ContentCaptureService veya Bölüm 9.1 CDD tanımlayıcısı ile izinler [C-3-X] bölümünde belirtilen rolleri elinde tutan uygulamalar erişiyorsa mikrofon göstergesi gösterilmemelidir. .
  • [C-SR-2] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen mikrofonu kullanan son ve etkin uygulamaların listesini, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERMENİN KESİNLİKLE ÖNERİLDİĞİ
  • [C-SR-3] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için mikrofon göstergesinin gizlenmemesi önemle ÖNERİLİR.

Cihaz uygulamaları android.hardware.camera.any bildirirse:

  • [C-SR-4] Bir uygulama canlı kamera verilerine erişirken kamera göstergesinin gösterilmesi önemle ÖNERİLİR. Ancak kameraya yalnızca Bölüm 9.1 CDD tanımlayıcısı [C-3-X] ile izin verilen rollere sahip uygulamalar tarafından erişiliyorsa kamera göstergesi gösterilmemelidir.
  • [C-SR-5] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen kamerayı kullanarak son ve etkin uygulamaları, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte göstermeniz önemle ÖNERİLİR.
  • [C-SR-6] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için kamera göstergesinin gizlenmemesi önemle ÖNERİLİR.

9.8.3. Bağlantı

Cihaz uygulamalarında USB çevre birimi modu desteğine sahip bir USB bağlantı noktası varsa:

  • [C-1-1] USB bağlantı noktası üzerinden paylaşılan depolama alanının içeriğine erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü GÖSTERMELİDİR.

9.8.4. Ağ Trafiği

Cihaz uygulamaları:

  • [C-0-1] Sistem tarafından güvenilen sertifika yetkilisi (CA) deposu için, yayın öncesi Android Açık Kaynak Projesi'nde sağlanan kök sertifikalarla aynı kök sertifikaları önceden yüklemelidir.
  • [C-0-2] Boş bir kullanıcı kök CA mağazasıyla gönderilmelidir.
  • [C-0-3] Kullanıcı kök CA eklendiğinde, kullanıcıya ağ trafiğinin izlenebilir olduğunu belirten bir uyarı GÖSTERMELİDİR.

Cihaz trafiği bir VPN üzerinden yönlendiriliyorsa cihaz uygulamaları:

  • [C-1-1] Kullanıcıya şunu belirten bir uyarı GÖSTERMELİDİR:
    • Bu ağ trafiği izlenebilir.
    • Bu ağ trafiği, VPN'yi sağlayan belirli VPN uygulaması üzerinden yönlendirilir.

Cihaz uygulamalarında, ağ veri trafiğini bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN izni verilmiş bir VPN hizmetini önceden yükleyen) varsayılan olarak etkin olan bir mekanizma varsa bu mekanizmalar:

  • [C-2-1] VPN, DevicePolicyManager.setAlwaysOnVpnPackage() üzerinden Cihaz Politikası Denetleyicisi tarafından etkinleştirilmediği sürece bu mekanizmayı etkinleştirmeden önce kullanıcının iznini İSTEMELİDİR. Bu durumda kullanıcının ayrı bir izin vermesi gerekmez ancak yalnızca bilgilendirilmelidir.

Cihaz uygulamaları, üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için bir kullanıcı özelliği uygularsa:

  • [C-3-1] Her zaman açık VPN hizmetini desteklemeyen uygulamalar için AndroidManifest.xml dosyasında SERVICE_META_DATA_SUPPORTS_ALWAYS_ON özelliğini false olarak ayarlayarak bu kullanıcı özelliğini DEVRE DIŞI BIRAKMALIDIR.

9.8.5. Cihaz Tanımlayıcıları

Cihaz uygulamaları:

  • [C-0-1] Aşağıdaki koşullardan birini karşılamadığı sürece, bir uygulamadan cihaz seri numarasına ve geçerli olduğu durumlarda IMEI/MEID, SIM seri numarasına ve Uluslararası Mobil Abone Kimliği'ne (IMSI) erişimi ENGELLEMELI:
    • cihaz üreticileri tarafından doğrulanmış, imzalanmış bir operatör uygulamasıdır.
    • kullanıcısına READ_PRIVILEGED_PHONE_STATE izni verildi.
    • UICC Operatör Ayrıcalıkları bölümünde tanımlandığı şekilde operatör ayrıcalıklarına sahip olmalıdır.
    • READ_PHONE_STATE izni verilmiş bir cihaz sahibi veya profil sahibidir.
    • (Yalnızca SIM seri numarası/ICCID için) Uygulamanın, abonenin kimliğindeki değişiklikleri algılaması yerel düzenlemeler gereğidir.

9.8.6. İçerik Yakalama ve Uygulama AramaOS düzeyinde ve ortam verileri

Android, sistem API'leri ContentCaptureService, AugmentedAutofillService, AppSearchGlobalManager.query veya diğer tescilli yöntemler aracılığıyla, cihaz uygulamalarının aşağıdaki uygulama verileri etkileşimlerini hassas verilerle birlikte yakalaması için bir mekanizmayı destekler:

  • AssistStructure API aracılığıyla bildirimler ve yardım verileri de dahil ancak bunlarla sınırlı olmamak üzere ekranda oluşturulan metinler ve grafikler.
  • Cihaz tarafından kaydedilen veya oynatılan ses ya da video gibi medya verileri.
  • Giriş etkinlikleri (ör. tuş, fare, hareket, ses, video ve erişilebilirlik).

Yeni şartlar başlatma

  • AugmentedAutofillService üzerinden sisteme gönderilen ekranlar veya diğer veriler.
  • Content Capture API üzerinden erişilebilen tüm ekranlar veya diğer veriler.
  • FieldClassificationService API üzerinden erişilebilen tüm ekranlar veya diğer veriler
  • AppSearchManager API aracılığıyla sisteme iletilen ve AppSearchGlobalManager.query üzerinden erişilebilen tüm uygulama verileri.

Yeni şartların sona ermesi

  • Bir uygulamanın Content Capture API veya AppSearchManager API (benzer şekilde yetenekli bir Android ve özel API) aracılığıyla sisteme sağladığı diğer tüm etkinlikler.

  • Metnin anlamını anlamak ve metne göre tahmini sonraki işlemleri oluşturmak için TextClassifier API aracılığıyla Sistem Metin Sınıflandırıcı'ya (yani sistem hizmetine) gönderilen tüm metinler veya diğer veriler.
  • Platform AppSearch uygulaması tarafından dizine eklenen veriler (ör. metin, grafik, medya verileri veya diğer benzer veriler).

Yeni şartlar başlatma

  • Konuşma Tanıma Uygulaması tarafından SpeechRecognizer#onDeviceSpeechRecognizer() kullanılması sonucunda elde edilen ses verileri.
  • AudioRecord, SoundTrigger veya diğer ses API'leri aracılığıyla arka planda (sürekli olarak) elde edilen ve kullanıcı tarafından görülebilen bir göstergeyle sonuçlanmayan ses verileri
  • CameraManager veya diğer kamera API'leri aracılığıyla arka planda (sürekli olarak) elde edilen ve kullanıcı tarafından görülebilen bir göstergeyle sonuçlanmayan kamera verileri

Yeni şartların sona ermesi

Cihaz uygulamaları yukarıdaki verilerden herhangi birini yakalarsa:

  • [C-1-1] Cihazda depolanan bu tür tüm veriler ŞİFRELENMELİDİR. Bu şifreleme, Android Dosya Tabanlı Şifreleme veya Cipher SDK'da açıklanan API sürümü 26 ve sonraki sürümler olarak listelenen şifrelemelerden herhangi biri kullanılarak YAPILABİLİR.
  • [C-1-2] Android yedekleme yöntemlerini veya başka yedekleme yöntemlerini kullanarak ham veya şifrelenmiş verileri YEDEKLEMEMELİDİR.
  • [C-1-3] Bu tür tüm verileri ve günlüğü, veriler her paylaşıldığında açık kullanıcı izni dışındayalnızca gizliliği koruma mekanizması kullanarak cihazdan göndermelidir. Gizliliği koruma mekanizması, kullanıcı başına verilerin içselleştirilmesini önlemek için "yalnızca toplu analize izin veren ve günlüğe kaydedilen etkinliklerin veya türetilmiş sonuçların bireysel kullanıcılarla eşleştirilmesini önleyen" olarak tanımlanır (ör. RAPPOR gibi diferansiyel gizlilik teknolojisi kullanılarak uygulanır).
  • [C-1-4] Veriler her ilişkilendirildiğinde kullanıcının açık izni dışında, bu tür verileri cihazdaki herhangi bir kullanıcı kimliğiyle (ör. Account) İLİŞKİLENDİREMEZ.
  • [C-1-5] Bu tür verileri, her paylaşıldığında açık kullanıcı izni dışında, mevcut bölümde (9.8.6 İçerik Yakalama OS düzeyinde ve ortam verileri) belirtilen şartlara uymayan diğer OS bileşenleriyle PAYLAŞMAMALIDIR. Bu tür işlevler Android SDK API'si (AmbientContext, HotwordDetectionService) olarak oluşturulmadığı sürece
  • [C-1-6] ContentCaptureService uygulamasının veya tescilli araçların topladığı bu tür verileri silmek için kullanıcıya imkân sunmalıdır eğer veriler cihazda herhangi bir biçimde depolanmışsa. Kullanıcı verileri silmeyi seçerse toplanan tüm geçmiş verileri KALDIRMALIDIR.
  • [C-1-7] AppSearch veya özel yöntemler aracılığıyla toplanan verilerin Android platformunda (ör. başlatıcı) gösterilmesini devre dışı bırakmak için kullanıcılara bir seçenek sunulmalıdır.
  • [C-SR-1] İnternet izni İSTEMEMENİZ önemle ÖNERİLİR.
  • [C-SR-2] İnternete yalnızca herkese açık açık kaynak uygulamaları tarafından desteklenen yapılandırılmış API'ler aracılığıyla erişmeniz önemle ÖNERİLİR.

Yeni şartlar başlatma

  • [C-SR-4] Android SDK API veya OEM'e ait benzer bir açık kaynak depoyla uygulanması ve / veya korumalı alanda uygulanması (bkz. 9.8.15 Korumalı alan API uygulamaları) KESİNLİKLE ÖNERİLİR.

Yeni şartların sona ermesi

Cihaz uygulamaları, Sistem API'sini ContentCaptureService, AppSearchManager.index uygulayan veya yukarıda açıklandığı şekilde verileri yakalayan herhangi bir tescilli hizmet içeriyorsa:

  • [C-2-1] Kullanıcıların hizmetleri, kullanıcı tarafından yüklenebilecek bir uygulama veya hizmetle değiştirmesine İZİN VERMEMELİDİR ve yalnızca önceden yüklenmiş hizmetlerin bu tür verileri yakalamasına İZİN VERMELİDİR.
  • [C-2-2] Önceden yüklenmiş hizmet mekanizması dışındaki uygulamaların bu tür verileri yakalamasına İZİN VERMEMELİDİR.
  • [C-2-3] Hizmetleri devre dışı bırakmak için kullanıcılara olanak tanınmalıdır.
  • [C-2-4] Hizmetler tarafından tutulan Android izinlerini yönetmek için kullanıcılara sunulan olanağı atlamamalı ve Bölüm 9.1'de açıklanan Android izinleri modelini izlemelidir. İzin.
  • [C-SR-3] Aşağıdakiler hariç olmak üzere hizmetleri diğer sistem bileşenlerinden ayrı tutmak(ör. hizmeti bağlamamak veya işlem kimliklerini paylaşmamak) önemle ÖNERİLİR:

    • Telefon, Kişiler, Sistem Kullanıcı Arayüzü ve Medya

Android, SpeechRecognizer#onDeviceSpeechRecognizer() aracılığıyla ağı kullanmadan cihazda konuşma tanıma işlemi gerçekleştirme olanağı sunar. Cihaz üzerinde SpeechRecognizer'ın uygulanması bu bölümde belirtilen politikalara UYMALIDIR.

9.8.7. Pano Erişimi

Cihaz uygulamaları:

  • [C-0-1] Üçüncü taraf uygulaması varsayılan IME veya şu anda odaktaki uygulama olmadığı sürece panodan kırpılmış verileri (ör. ClipboardManager API aracılığıyla) İADE ETMEmelidir.

  • [C-0-2] Son kez bir panosuna yerleştirildikten veya bir panosundan okunduktan en fazla 60 dakika sonra pano verilerini silmelidir.

9.8.8. Konum

Konum, Android Konum sınıfındaki bilgileri( ör. enlem, boylam, rakım) ve Konum'a dönüştürülebilen tanımlayıcıları içerir. Konum, DGPS (Diferansiyel Küresel Konumlandırma Sistemi) kadar hassas veya ülke düzeyindeki konumlar kadar kaba olabilir (ör. ülke kodu konumu - MCC - Mobil Ülke Kodu).

Aşağıda, doğrudan kullanıcının konumunu türeten veya kullanıcının konumuna dönüştürülebilen konum türlerinin listesi verilmiştir. Bu liste kapsamlı değildir ancak konumun doğrudan veya dolaylı olarak hangi kaynaklardan alınabileceğine dair bir örnek olarak kullanılmalıdır:

  • GPS/GNSS/DGPS/PPP
    • Küresel Konum Belirleme Çözümü veya Küresel Navigasyon Uydu Sistemi veya Diferansiyel Küresel Konum Belirleme Çözümü
    • Ham GNSS ölçümleri ve GNSS durumu da buna dahildir.
      • Hassas Konum, Ham GNSS Ölçümleri'nden türetilebilir
  • Aşağıdakiler gibi benzersiz tanımlayıcılara sahip kablosuz teknolojiler:
    • Kablosuz erişim noktaları (MAC, BSSID, ad veya SSID)
    • Bluetooth/BDE (MAC, BSSID, Ad veya SSID)
    • Ultra geniş bant (MAC, BSSID, ad veya SSID)
    • Hücre Kulesi Kimliği (3G, 4G, 5G... Benzersiz tanımlayıcılara sahip gelecekteki tüm hücresel modem teknolojileri dahil)

Birincil referans olarak, ACCESS_FINE_Location veya ACCESS_COARSE_Location izinlerini gerektiren Android API'lerine bakın.

Cihaz uygulamaları:

  • [C-0-1] Cihaz konumu ayarını ve kablosuz bağlantı/Bluetooth tarama ayarlarını açık kullanıcı izni veya kullanıcının başlatması olmadan AÇMAMALI/KAPATMAMALIDIR.
  • [C-0-2] Son konum istekleri, uygulama düzeyindeki izinler ve konumu belirlemek için kablosuz bağlantı/Bluetooth taramasının kullanımı da dahil olmak üzere konumla ilgili bilgilere erişmek için kullanıcıya olanak tanımalıdır.
  • [C-0-3] Acil Durum Konum Atlama API'sini [LocationRequest.setLocationSettingsIgnored()] kullanan uygulamanın, kullanıcı tarafından başlatılan bir acil durum oturumu (ör. 911'i arama veya 911'e mesaj gönderme) olduğundan EMİN OLMALIDIR. Ancak Otomotiv için bir araç, kaza/kaza algılanması durumunda etkin kullanıcı etkileşimi olmadan acil durum oturumu BAŞLATABİLİR (ör. eCall şartlarını karşılamak için).
  • [C-0-4] Acil Durum Konumu Atlama API'sinin, ayarları değiştirmeden cihaz konum ayarlarını atlama özelliğini KORUMALIDIR.
  • [C-0-5] Arka plandaki bir uygulama [ACCESS_BACKGROUND_LOCATION] iznini kullanarak kullanıcının konumuna eriştikten sonra kullanıcıya hatırlatıcı bir bildirim planlamalıdır.

9.8.9. Yüklü uygulamalar

API düzeyi 30 veya üstünü hedefleyen Android uygulamaları, varsayılan olarak yüklü diğer uygulamalarla ilgili ayrıntıları göremez (Android SDK dokümanlarında Paket görünürlüğü bölümüne bakın).

Cihaz uygulamaları:

  • [C-0-1] API düzeyi 30 veya üstünü hedefleyen hiçbir uygulamaya, yönetilen API'ler aracılığıyla diğer yüklü uygulamalarla ilgili ayrıntıları göremediği sürece diğer yüklü uygulamalarla ilgili ayrıntıları göstermemelidir. Buna, cihaz uygulayıcısı tarafından eklenen özel API'ler tarafından açığa çıkarılan veya dosya sistemi üzerinden erişilebilen ayrıntılar dahildir ancak bunlarla sınırlı değildir.
  • [C-0-2] Hiçbir uygulamaya, harici depolama alanındaki başka bir uygulamanın özel, uygulamaya özel dizininde dosyalara okuma veya yazma erişimi VERMEMELİDİR. Bunun tek istisnası aşağıdaki gibidir:
    • Harici depolama alanı sağlayıcısı yetkisi (ör. DocumentsUI gibi uygulamalar).
    • Dosyaları uygulama depolama alanına indirmek için "indirmeler" sağlayıcı yetkisini kullanan İndirme Sağlayıcı.
    • Dosyaları başka bir cihaza aktarmak için ayrıcalıklı ACCESS_MTP iznini kullanan, platform tarafından imzalanan medya aktarım protokolü (MTP) uygulamaları.
    • Diğer uygulamaları yükleyen ve INSTALL_PACKAGES iznine sahip uygulamalar, yalnızca APK genişletme dosyalarını yönetmek amacıyla "obb" dizinlerine erişebilir.

9.8.10. Bağlantı Hata Raporu

Cihaz uygulamaları android.hardware.telephony özellik işaretini beyan ederse:

  • [C-1-1] BugreportManager ile BUGREPORT_MODE_TELEPHONY üzerinden bağlantı hatası raporları oluşturmayı DESTEKLEMELİDİR.
  • [C-1-2] BUGREPORT_MODE_TELEPHONY rapor oluşturmak için her kullanıldığında kullanıcı izni ALMALI ve kullanıcıdan uygulamadan gelecek tüm istekler için izin İSTEMEMELİDİR.
  • [C-1-3] Oluşturulan raporu, kullanıcının açık izni olmadan istek yapan uygulamaya İADE ETMEmelidir.
  • [C-1-4] BUGREPORT_MODE_TELEPHONY kullanılarak oluşturulan raporlar en az aşağıdaki bilgileri İÇERMELİDİR:
    • 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
    • SubscriptionManagerService dökümü
  • [C-1-5] Oluşturulan raporlara aşağıdakiler DAHİL EDİLMEMELİDİR:
    • Bağlantı hata ayıklamayla doğrudan ilgili olmayan her türlü bilgi.
    • Kullanıcı tarafından yüklenen her türlü uygulama trafik günlükleri veya kullanıcı tarafından yüklenen uygulamaların/paketlerin ayrıntılı profilleri (kullanıcı kimlikleri kabul edilir, paket adları kabul edilmez).
  • Herhangi bir kullanıcı kimliğiyle ilişkili olmayan ek bilgiler İÇERİEBİLİR. (ör. tedarikçi günlükleri).

Cihaz uygulamaları, hata raporlarına ek bilgiler (ör. tedarikçi günlükleri) ekliyor ve bu bilgiler gizlilik/güvenlik/pil/depolama/bellek üzerinde etki yaratıyorsa:

  • [C-SR-1] Geliştirici ayarının varsayılan olarak devre dışı bırakılması önemle ÖNERİLİR. AOSP referans uygulaması, geliştirici ayarlarında hata raporlarına cihaza özgü ek satıcı günlükleri eklemek için Enable verbose vendor logging seçeneğini sunarak bu koşulu karşılar.

9.8.11. Veri kümesi paylaşımı

Android, BlobStoreManager aracılığıyla uygulamaların, seçili bir uygulama grubuyla paylaşılmak üzere sisteme veri kümeleri eklemesine olanak tanır.

Cihaz uygulamaları, SDK dokümanlarında açıklandığı gibi paylaşılan veri öbekleri destekliyorsa:

9.8.12. Müzik Tanıma

Android, System API MusicRecognitionManager aracılığıyla, cihaz uygulamalarının bir ses kaydı verildiğinde müzik tanıma isteğinde bulunması ve müzik tanımayı MusicRecognitionService API'yi uygulayan ayrıcalıklı bir uygulamaya devretmesi için bir mekanizmayı destekler.

Cihaz uygulamalarında, yukarıda açıklandığı şekilde ses verilerini aktaran MusicRecognitionManager sistem API'sini veya tescilli bir hizmeti uygulayan bir hizmet varsa:

  • [C-1-1] MusicRecognitionManager'ı çağıran kullanıcının MANAGE_MUSIC_RECOGNITION iznine sahip olmasını zorunlu kılmalı
  • [C-1-2] Önceden yüklenmiş tek bir müzik tanıma uygulamasının MusicRecognitionService'i uyguladığını Zorunlu KILMALIDIR.
  • [C-1-3] Kullanıcıların MusicRecognitionManagerService veya MusicRecognitionService'i kullanıcı tarafından yüklenebilecek bir uygulama ya da hizmetle değiştirmesine İZİN VERMEMELİDİR.
  • [C-1-4] MusicRecognitionManagerService, ses kaydına erişip onu MusicRecognitionService'i uygulayan uygulamaya yönlendirirken ses erişiminin AppOpsManager.noteOp / startOp çağrıları aracılığıyla izlenmesini SAĞLAMALIDIR.

MusicRecognitionManagerService veya MusicRecognitionService'in cihaz uygulamaları tarafından yakalanan ses verileri depolanıyorsa:

  • [C-2-1] Hiçbir ham ses veya ses parmak izini diskte veya bellekte 14 günden uzun süre DEPOLAMAMALIDIR.
  • [C-2-2] Bu tür verileri, her paylaşıldığında açık kullanıcı izni dışında MusicRecognitionService dışında paylaşmamalıdır.

9.8.13. SensorPrivacyManager

Cihaz uygulamaları, kullanıcıya cihaz uygulaması için kamera ve/veya mikrofon girişini kapatma imkanı veren bir yazılım sunarsa:

  • [C-1-1] İlgili supportsSensorToggle() API yöntemi için doğru şekilde "true" değerini döndürmelidir.
  • [C-1-2] Bir uygulama, engellenen bir mikrofona veya kameraya erişmeye çalıştığında kullanıcıya, sensörün engellendiğini açıkça belirten ve bu koşulu karşılayan AOSP uygulamasına göre engellemeye devam etme veya engellemeyi kaldırma seçeneği sunan, kapatılamaz bir kullanıcı özelliği GÖSTERMELİDİR.
  • [C-1-3] Uygulamalara yalnızca boş (veya sahte) kamera ve ses verileri iletmeli ve yukarıdaki [C-1-2] uyarınca sunulan kullanıcı olanağı aracılığıyla kullanıcının kamerayı veya mikrofonu açmaması nedeniyle hata kodu bildirmemelidir.

Yeni şartlar başlatma

9.8.14. Kimlik Bilgisi Yöneticisi

Kaldırıldı.

9.8.15. Korumalı Alan API Uygulamaları

Android, bir dizi temsilci API'si aracılığıyla işletim sistemi düzeyinde ve ortam verilerini güvenli bir şekilde işlemek için bir mekanizma sağlar. Bu tür işlemler, ayrıcalıklı erişime ve azaltılmış iletişim özelliklerine sahip önceden yüklenmiş bir apk'ye (Sandboxed API Implementation olarak bilinir) devredilebilir.

Herhangi bir Sandboxed API uygulaması:

  • [C-0-1] İnternet izni İSTEMEmelidir.
  • [C-0-2] İnternete yalnızca gizliliği koruma mekanizmaları kullanan herkese açık açık kaynak uygulamaları tarafından desteklenen yapılandırılmış API'ler aracılığıyla veya dolaylı olarak Android SDK API'leri üzerinden erişmelidir. Gizliliği koruma mekanizması, kullanıcı başına verilerin içsel olarak incelenmesini önlemek için "yalnızca toplu analize izin veren ve günlüğe kaydedilen etkinliklerin veya türetilmiş sonuçların tek tek kullanıcılarla eşleştirilmesini önleyen mekanizmalar" olarak tanımlanır (ör. RAPPOR gibi diferansiyel gizlilik teknolojisi kullanılarak uygulanır).
  • [C-0-3] Aşağıdakiler hariç olmak üzere hizmetleri diğer sistem bileşenlerinden ayrı tutmalıdır (ör. hizmeti bağlamama veya işlem kimliklerini paylaşma):
    • Telefon, Kişiler, Sistem Kullanıcı Arayüzü ve Medya
  • [C-0-4] Kullanıcıların hizmetleri, kullanıcı tarafından yüklenebilecek bir uygulama veya hizmetle değiştirmesine İZİN VERMEMELİDİR
  • [C-0-5] Yalnızca önceden yüklenmiş hizmetlerin bu tür verileri yakalamasına izin VERMELİDİR. Değişim özelliği AOSP'ye yerleştirilmemişse (ör. dijital asistan uygulamaları için)
  • [C-0-6] Önceden yüklenmiş hizmet mekanizması dışındaki uygulamaların bu tür verileri yakalamasına İZİN VERMEMELİDİR. Bu tür yakalama özelliği bir Android SDK API'si ile uygulanmıyorsa.
  • [C-0-7] Hizmetleri devre dışı bırakmak için kullanıcılara uygun bir yöntem sunulmalıdır.
  • [C-0-8] Hizmetler tarafından tutulan Android izinlerini yönetmek için kullanıcı olanağını atlamamalı ve Bölüm 9.1'de açıklandığı şekilde Android izinleri modelini izlemelidir. İzin.

9.8.16. Sürekli ses ve kamera verileri

9.8.2 Kayıt, 9.8.6 OS düzeyinde ve ortam verileri ve 9.8.15 Korumalı Alan API'si uygulamalarında belirtilen şartlara ek olarak, AudioRecord, SoundTrigger veya diğer ses API'leri aracılığıyla arka planda (sürekli olarak) elde edilen ses verilerini VEYA CameraManager veya diğer kamera API'leri aracılığıyla arka planda (sürekli olarak) elde edilen kamera verilerini kullanan uygulamalar:

  • [C-0-1] Aşağıdaki durumlar hariç olmak üzere, ilgili bir göstergeyi (9.8.2 Kayıt bölümüne göre kamera ve/veya mikrofon) ZORUNLU KILINACAK:
    • Bu erişim, aşağıdaki rollerden en az birini içeren bir paket aracılığıyla korumalı alandaki bir uygulamada (bkz. 9.8.15 Korumalı Alan API Uygulaması) gerçekleştirilir: Sistem Kullanıcı Arayüzü Zekası, Sistem Ortam Sesi Zekası, Sistem Ses Zekası, Sistem Bildirimi Zekası, Sistem Metin Zekası veya Sistem Görsel Zekası.
    • Erişim, AOSP'deki mekanizmalar (HotwordDetectionService, WearableSensingService, VisualQueryDetector) aracılığıyla uygulanan ve zorunlu kılınan bir korumalı alan üzerinden gerçekleştirilir.
    • Ses erişimi, dijital asistan uygulaması tarafından yardımcı amaçlar için gerçekleştirilir ve ses kaynağı olarak SOURCE_HOTWORD sağlanır.
    • Erişim, sistem tarafından gerçekleştirilir ve açık kaynak koduyla uygulanır.
  • [C-SR-1] Bu tür verileri kullanan her işlev için kullanıcı izninin istenmesi ve varsayılan olarak devre dışı bırakılması önemle ÖNERİLİR.
  • [C-SR-2] Uzaktan giyilebilir bir cihazdan gelen kamera verilerine aynı işlemi uygulamak (ör. 9.8.2 Kayıt, 9.8.6 OS düzeyinde ve ortam verileri, 9.8.15 Korumalı API uygulamaları ve 9.8.16 Sürekli Ses ve Kamera Verileri'nde belirtilen kısıtlamalara uymak) önemle ÖNERİLİR.

Kamera verileri uzak bir giyilebilir cihazdan sağlanıyorsa ve Android OS, korumalı alan uygulaması veya WearableSensingManager tarafından oluşturulan korumalı alan işlevi dışında şifrelenmemiş bir biçimde erişiliyorsa:

  • [C-1-1] Uzak giyilebilir cihaza ek bir gösterge göstermesini İŞARET ETMELİDİR.

Cihazlar, atanmış anahtar kelime olmadan dijital asistan uygulamasıyla etkileşim kurma olanağı sağlıyorsa (genel kullanıcı sorgularını işleme veya kamera aracılığıyla kullanıcı varlığını analiz etme):

  • [C-2-1] Bu tür bir uygulamanın, android.app.role.ASSISTANT rolünü tutan bir paket tarafından sağlandığından EMİN OLMALIDIR.
  • [C-2-2] Bu tür bir uygulamanın HotwordDetectionService ve/veya VisualQueryDetectionService Android API'lerini kullandığından EMİN OLMALIDIR.

9.8.17. Telemetry

Android, StatsLog API'lerini kullanarak sistem ve uygulama günlüklerini saklar. Bu günlükler, ayrıcalıklı sistem uygulamaları tarafından kullanılabilen StatsManager API'leri aracılığıyla yönetilir.

StatsManager, gizliliği koruma mekanizması olan cihazlardan gizlilik açısından hassas olarak sınıflandırılan verileri toplama yöntemi de sağlar. Özellikle StatsManager::query API, StatsLog'da tanımlanan kısıtlanmış metrik kategorilerini sorgulama olanağı sunar.

StatsManager'dan kısıtlanmış metrikleri sorgulayan ve toplayan tüm uygulamalar:

  • [C-0-1] Cihazdaki tek uygulama/uygulama olmalıdır ve READ_RESTRICTED_STATS iznine sahip olmalıdır.
  • [C-0-2] Yalnızca gizliliği koruma mekanizması kullanarak telemetri verilerini ve cihazın günlük kaydını göndermelidir. Gizliliği koruma mekanizması, kullanıcı başına verilerin içselleştirilmesini önlemek için "yalnızca toplu analize izin veren ve günlüklenen etkinliklerin veya türetilmiş sonuçların tek tek kullanıcılarla eşleştirilmesini önleyen" olarak tanımlanır (ör. RAPPOR gibi diferansiyel gizlilik teknolojisi kullanılarak uygulanır).
  • [C-0-3] Bu tür veriler cihazdaki herhangi bir kullanıcı kimliğiyle (ör. Hesap) İLİŞKİLENDİRİLMEMELİDİR.
  • [C-0-4] Bu tür veriler, mevcut bölümde (9.8.17 Gizliliği korumaya yönelik telemetri) belirtilen şartlara uymayan diğer OS bileşenleriyle PAYLAŞILMAMALISDIR.
  • [C-0-5] Gizliliği korumaya yönelik telemetri toplama, kullanma ve paylaşma işlemlerini etkinleştirmek/devre dışı bırakmak için kullanıcılara bir imkân SUNULMALIDIR.
  • [C-0-6] Uygulamanın topladığı veriler cihazda herhangi bir biçimde depolanıyorsa kullanıcıya bu verileri silme olanağı SUNULMALIDIR. Kullanıcı verileri silmeyi seçtiyse cihazda depolanan tüm verileri KALDIRMALIDIR.
  • [C-0-7] Gizliliği korumaya yönelik temel protokol uygulamasını açık kaynaklı bir depoda AÇIKLAYACAK.
  • [C-0-8 ]StatsLog'da tanımlanan kısıtlanmış metrik kategorilerindeki verilerin toplanmasını engellemek için bu bölümdeki veri çıkışı politikalarını ZORUNLU KILIN.

Yeni şartların sona ermesi

9.9. Veri Depolama Şifreleme

Tüm cihazlar 9.9.1 numaralı bölümün şartlarını karşılamalıdır. 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 numaralı bölümündeki şartları karşılamalıdır.

9.9.1. Doğrudan Başlatma

Cihaz uygulamaları:

  • [C-0-1] Depolama alanı şifrelemeyi desteklemeseler bile doğrudan önyükleme modu API'lerini UYGULAMALARI GEREKİR.

  • [C-0-2] Doğrudan Açılış'tan haberdar olan uygulamalara Cihaz Şifrelenmiş (DE) ve Kimlik Bilgisi Şifrelenmiş (CE) depolama konumlarının kullanıcı tarafından kullanılabileceğini bildirmek için ACTION_LOCKED_BOOT_COMPLETED ve ACTION_USER_UNLOCKED Intent'leri yine de yayınlanmalıdır.

9.9.2. Şifreleme şartları

Cihaz uygulamaları:

  • [C-0-1] Uygulamanın özel verilerini (/data bölümü) ve cihazın kalıcı, çıkarılamayan bir parçasıysa uygulamanın paylaşılan depolama alanı bölümünü (/sdcard bölümü) ŞİFRELEMELİYDİR.
  • [C-0-2] Kullanıcı ilk kurulum deneyimini tamamladığında veri depolama alanı şifrelemesi varsayılan olarak etkinleştirilmelidir.
  • [C-0-3] Aşağıdaki iki şifreleme yönteminden birini uygulayarak yukarıdaki veri depolama şifreleme şartını karşılamalıdır:

9.9.3. Şifreleme Yöntemleri

Cihaz uygulamaları şifrelenmişse:

  • [C-1-1] Kullanıcıdan kimlik bilgileri istemeden başlatılmalı ve ACTION_LOCKED_BOOT_COMPLETED mesajı yayınlandıktan sonra Doğrudan Açılış'ı destekleyen uygulamaların Cihaz Şifrelenmiş (DE) depolama alanına erişmesine izin vermelidir.
  • [C-1-2] Kimlik Bilgisi Şifrelenmiş (CE) depolamaya yalnızca kullanıcı kimlik bilgilerini (ör. şifre kodu, PIN, desen veya parmak izi) sağlayarak cihazın kilidini açtıktan ve ACTION_USER_UNLOCKED mesajı yayınlandıktan sonra izin VERMELİDİR.
  • [C-1-13] Kullanıcı tarafından sağlanan kimlik bilgileri, kayıtlı bir emanet anahtarı veya 9.9.4 numaralı bölümdeki şartları karşılayan yeniden başlatma sırasında devam etme uygulaması olmadan CE korumalı depolama alanının kilidini açma yöntemi SUNMAMALIDIR.
  • [C-1-4] Doğrulanmış Başlatma özelliği ZORUNLUDUR.
9.9.3.1. Meta Veri Şifreleme ile Dosya Tabanlı Şifreleme

Cihaz uygulamalarında meta veri şifrelemesiyle dosya tabanlı şifreleme kullanılıyorsa:

  • [C-1-5] Dosya içeriklerini ve dosya sistemi meta verilerini AES-256-XTS veya Adiantum kullanarak ŞİFRELEMELİDİR. AES-256-XTS, XTS modunda çalışan 256 bit şifre anahtarı uzunluğuna sahip Gelişmiş Şifreleme Standardını ifade eder. Anahtarın tam uzunluğu 512 bittir. Adiantum, https://github.com/google/adiantum adresinde belirtildiği şekilde Adiantum-XChaCha12-AES'i ifade eder. Dosya sistemi meta verileri; dosya boyutları, sahiplik, modlar ve genişletilmiş özellikler (xattr'lar) gibi verilerdir.
  • [C-1-6] Dosya adları AES-256-CBC-CTS, AES-256-HCTR2 veya Adiantum kullanılarak ŞİFRELENMELİDİR.
  • [C-1-12] Cihazda Gelişmiş Şifreleme Standardı (AES) talimatları varsa (ör. ARM tabanlı cihazlarda ARMv8 Kriptografi Uzantıları veya x86 tabanlı cihazlarda AES-NI) dosya adı, dosya içeriği ve dosya sistemi meta veri şifrelemesi için yukarıdaki AES tabanlı seçenekler kullanılmalıdır. Adiantum kullanılmamalıdır.
  • [C-1-13] CE ve DE anahtarlarından gerekli alt anahtarları (ör. dosya başına anahtarlar) türetmek için şifreleme açısından güçlü ve geri döndürülemeyen bir anahtar türetme işlevi (ör. HKDF-SHA512) KULLANMALIDIR. "Kriptografik olarak güçlü ve geri döndürülemez", anahtar türetme işlevinin en az 256 bit güvenlik gücüne sahip olduğu ve girişleri üzerinde sanal rasgele işlev ailesi gibi davrandığı anlamına gelir.
  • [C-1-14] Farklı şifreleme amaçları (ör. hem şifreleme hem de anahtar türetme veya iki farklı şifreleme algoritması) için aynı Dosya Tabanlı Şifreleme (FBE) anahtarlarını veya alt anahtarlarını KULLANMAMALIDIR.
  • [C-1-15] Kalıcı depolama alanındaki şifrelenmiş dosya içeriklerinin silinmemiş tüm bloklarının, hem dosyaya hem de dosyadaki ofset değerine bağlı olan şifreleme anahtarı ve başlatma vektörü (IV) kombinasyonları kullanılarak şifrelendiğinden EMİN OLMALIDIR. Ayrıca, şifrelemenin yalnızca 32 bit IV uzunluğunu destekleyen satır içi şifreleme donanımı kullanılarak yapıldığı durumlar hariç, bu tür tüm kombinasyonlar farklı OLMALIDIR.
  • [C-1-16] Kalıcı depolama alanındaki farklı dizinlerdeki silinmemiş tüm şifrelenmiş dosya adlarının, şifreleme anahtarı ve başlatma vektörünün (IV) farklı kombinasyonları kullanılarak şifrelendiğinden EMİN OLMALIDIR.
  • [C-1-17] Kalıcı depolama alanındaki tüm şifrelenmiş dosya sistemi meta veri bloklarının, şifreleme anahtarı ve başlatma vektörü (IV) farklı kombinasyonları kullanılarak şifrelendiğinden EMİN OLMALIDIR.

  • CE ve DE depolama alanlarını ve dosya sistemi meta verilerini koruyan anahtarlar:

    • [C-1-7] Kriptografik olarak donanım destekli bir anahtar deposuna bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma ve cihazın donanım güven köküne BAĞLANMALIDIR.
    • [C-1-8] CE anahtarları kullanıcının kilit ekranı kimlik bilgilerine BAĞLANMALIDIR.
    • [C-1-9] Kullanıcı kilit ekranı kimlik bilgilerini belirtmemişse CE anahtarları varsayılan bir şifre koduna BAĞLANMALIDIR.
    • [C-1-10] Benzersiz ve farklı OLMALIDIR. Başka bir deyişle, hiçbir kullanıcının CE veya DE anahtarı başka bir kullanıcının CE veya DE anahtarıyla eşleşmemelidir.
    • [C-1-11] Zorunlu olarak desteklenen şifreler, anahtar uzunlukları ve modlar KULLANILMALIDIR.
    • [C-1-12] Burada açıklandığı gibi, bootloader kilidinin açılması ve kilitlenmesi sırasında güvenli bir şekilde silinmelidir.
  • Önceden yüklenmiş temel uygulamaları (ör. Alarm, Telefon, Mesajlar) Doğrudan Önyükleme'den haberdar ETMELI.

Yukarı yönlü Android Açık Kaynak projesi, Linux çekirdeğinin "fscrypt" şifreleme özelliğine dayalı Dosya Tabanlı Şifreleme ve Linux çekirdeğinin "dm-default-key" özelliğine dayalı Meta Veri Şifreleme için tercih edilen bir uygulama sağlar.

9.9.3.2. Kullanıcı Başına Blok Seviyesinde Şifreleme

Cihaz uygulamalarında kullanıcı başına blok düzeyinde şifreleme kullanılıyorsa:

  • [C-1-1] 9.5 numaralı bölümde açıklandığı gibi çok kullanıcılı desteği ETKİNLETMEK ZORUNDADIR.
  • [C-1-2] Ham bölümler veya mantıksal birimler kullanılarak kullanıcı başına bölümler sağlanmalıdır.
  • [C-1-3] Temel blok cihazların şifrelenmesi için kullanıcı başına benzersiz ve farklı şifreleme anahtarları KULLANMALIDIR.
  • [C-1-4] Kullanıcı bölümlerinin blok düzeyinde şifrelenmesi için AES-256-XTS KULLANILMALIDIR.

  • Kullanıcı başına blok düzeyinde şifrelenmiş cihazları koruyan anahtarlar:

    • [C-1-5] Donanım destekli bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma ve cihazın donanım güven köküne BAĞLANMALIDIR.
    • [C-1-6] İlgili kullanıcının kilit ekranı kimlik bilgilerine BAĞLI OLMALIDIR.

Kullanıcı başına blok düzeyinde şifreleme, kullanıcı başına bölümlerde Linux çekirdeği "dm-crypt" özelliği kullanılarak uygulanabilir.

9.9.4. Yeniden başlatıldığında devam ettir

Yeniden başlatıldığında devam et özelliği, OTA tarafından başlatılan bir yeniden başlatma işleminden sonra henüz Doğrudan Önyükleme'yi desteklemeyenler de dahil olmak üzere tüm uygulamaların CE depolama alanının kilidinin açılmasına olanak tanır. Bu özellik, kullanıcıların yeniden başlatma işleminden sonra yüklü uygulamalardan bildirim almasını sağlar.

Yeniden Başlatma Üzerine Devam özelliğinin uygulanması, bir cihaz saldırganın eline geçtiğinde, cihaz açılmış, CE depolama alanının kilidi açık ve kullanıcı bir OTA aldıktan sonra cihazın kilidini açmış olsa bile saldırganın kullanıcının CE ile şifrelenmiş verilerini kurtarmasının son derece zor olmasını sağlamalıdır. Kuruluş içinden saldırılara karşı direnç için saldırganın, şifreleme imzalama anahtarlarını yayınlamaya da erişebildiği varsayılır.

Ö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 mesajları imzalamak için herhangi bir tedarikçinin veya şirketin imzalama anahtarını kullanabilir.
    • Cihazın OTA alması için neden olabilir.
    • Aşağıda ayrıntılı olarak açıklananlar hariç olmak üzere herhangi bir donanımın (AP, flash vb.) çalışmasını değiştirebilir ancak bu tür bir değişiklik en az bir saatlik bir gecikme ve RAM içeriğini yok eden bir güç döngüsü içerir.
    • Kurcalamaya dayanıklı donanımın (ör. Titan M) çalışması değiştirilemez.
    • Canlı cihazın RAM'i okunamıyor.
    • Kullanıcının kimlik bilgilerini (PIN, desen, şifre) elde edemez veya başka bir şekilde girilmesine neden olamaz.

Örneğin, burada bulunan açıklamaların tümünü uygulayan ve bunlara uyan bir cihaz uygulaması [C-0-1] ile uyumlu olur.

9.10. Cihaz bütünlüğü

Aşağıdaki şartlar, cihaz bütünlüğünün durumuyla ilgili şeffaflık sağlar. Cihaz uygulamaları:

  • [C-0-1] Sistem API yöntemi aracılığıyla PersistentDataBlockManager.getFlashLockState() bootloader durumunun sistem görüntüsünün yanıp sönmesine izin verip vermediğini doğru şekilde bildirmelidir.

  • [C-0-2] Cihaz bütünlüğü için Doğrulanmış Başlatma özelliğini DESTEKLEMELİDİR.

Cihaz uygulamaları, Android'in daha önceki bir sürümünde Doğrulanmış Önyükleme'yi desteklemeden kullanıma sunulmuşsa ve sistem yazılımı güncellemesiyle bu özellik için destek ekleyemiyorsa bu cihazlar şarttan muaf tutulabilir.

Doğrulanmış Başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Cihaz uygulamaları özelliği destekliyorsa:

  • [C-1-1] Platform özelliği işaretini bildirmelidir android.software.verified_boot.
  • [C-1-2] Her önyükleme sırasında doğrulama YAPILMALIDIR.
  • [C-1-3] Doğrulama işlemi, güven kökü olan ve sistem bölümüne kadar giden değişmez bir donanım anahtarından BAŞLATILMALIDIR.
  • [C-1-4] Bir sonraki aşamadaki kodu yürütmeden önce bir sonraki aşamadaki tüm baytların bütünlüğünü ve özgünlüğünü kontrol etmek için doğrulamanın her aşamasını UYGULAMALIDIR.
  • [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'nin mevcut önerileri kadar güçlü doğrulama algoritmaları KULLANMALIDIR.
  • [C-1-6] Sistem doğrulaması başarısız olduğunda, kullanıcı yine de önyükleme yapmayı denemeyi kabul etmediği sürece önyüklemenin tamamlanmasına İZİN VERMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALISDIR.
  • [C-1-7] Kullanıcı, önyükleyicinin kilidini açıkça açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERMEMELİDİR.
  • [C-SR-1] Cihazda birden fazla ayrı çip (ör. radyo, özel görüntü işlemcisi) varsa bu çiplerin her birinin önyükleme işleminin, önyükleme sırasında her aşamasının doğrulanması önemle ÖNERİLİR.
  • [C-1-8] Bozulmaya karşı korumalı depolama alanı KULLANMALIDIR: Önyükleyicinin kilidinin açık olup olmadığını depolamak için. Bozulmaya karşı korumalı depolama birimi, önyükleyicinin depolama biriminde Android'in içinden müdahale edilip edilmediğini algılayabileceği anlamına gelir.
  • [C-1-9] Kullanıcıdan cihazı kullanırken istemde BULUNMALI ve bootloader kilitli moddan bootloader kilidi açık moda geçişe izin vermeden önce fiziksel onay İSTEMELİDİR.
  • [C-1-10] Android tarafından kullanılan bölümler (ör. önyükleme, sistem bölümleri) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum OS sürümünü belirlemek için kullanılan meta verileri depolamak amacıyla bozulmaya karşı korumalı depolama alanı kullanılmalıdır.
  • [C-1-11] Bootloader'ın kilidi açılırken ve kilitlenirken tüm kullanıcı verileri "9.12" uyarınca güvenli bir şekilde silinmelidir. Veri Silme'yi (userdata bölümü ve tüm NVRAM alanları dahil) seçin.
  • [C-SR-2] Tüm ayrıcalıklı uygulama APK dosyalarının, Doğrulanmış Önyükleme ile korunan bölümlere dayalı bir güven zinciriyle doğrulanması önemle ÖNERİLİR.
  • [C-SR-3] Ayrıcalıklı bir uygulamanın APK dosyasının dışından yüklediği tüm yürütülebilir yapıların (dinamik olarak yüklenen kod veya derlenmiş kod gibi) yürütülmeden önce doğrulanması veya hiç yürütülmemesi önemle ÖNERİLİR.
  • Kalıcı donanım yazılımı (ör. modem, kamera) içeren tüm bileşenler için geri alma koruması UYGULANMALIDIR ve izin verilen minimum sürümü belirlemek için kullanılan meta verileri depolamak amacıyla bozulmaya karşı korumalı depolama alanı KULLANILMALIDIR.

Cihaz uygulamaları, Android'in önceki bir sürümünde C-1-8 ile C-1-11 arasında desteklenmeden kullanıma sunulmuşsa ve sistem yazılımı güncellemesiyle bu şartlara destek eklenemiyorsa bu cihazlar şartlardan muaf tutulabilir.

Android Açık Kaynak Projesi, external/avb/ deposunda bu özelliğin tercih edilen bir uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleyiciye entegre edilebilir.

Cihaz uygulamaları

Cihaz uygulamalarının dosya içeriğini sayfa başına doğrulama yeteneği varsa:

  • [C-0-3 C-2-1], dosyanın tamamını okumadan dosya içeriğinin güvenilir bir anahtarla kriptografik olarak doğrulanmasını destekler.

  • [C-0-4 C-2-2] Güvenilir bir anahtarla doğrulanmayan okunan içerik yukarıdaki [C-2-1] uyarınca doğrulanmadığında korunan bir dosyadaki okuma isteklerinin başarılı olmasına İZİN VERMEMELİDİR.

Yeni şartlar başlatma

  • [C-2-4] Etkin dosyalar için O(1) içinde dosya sağlama toplamını İYİ DEĞERLERDE döndürmelidir.

Yeni şartların sona ermesi

Cihaz uygulamaları, daha önceki bir Android sürümünde dosya içeriğini güvenilir bir anahtarla doğrulama özelliği olmadan kullanıma sunulmuşsa ve sistem yazılımı güncellemesiyle bu özellik için destek ekleyemiyorsa bu uygulamalar şarttan muaf tutulabilir. Yukarı yönlü Android Açık Kaynak projesi, Linux çekirdeği fs-verity özelliğine dayalı bu özelliğin tercih edilen bir uygulamasını sağlar.

Cihaz uygulamaları:

Cihaz uygulamaları Android Protected Confirmation API'yi destekliyorsa:

  • [C-3-1] ConfirmationPrompt.isSupported() API için true bildirmelidir.

  • [C-3-2] Android OS'te çalışan kodun (çekirdeği dahil, kötü amaçlı veya başka bir şekilde) kullanıcı etkileşimi olmadan olumlu yanıt oluşturamamasını SAĞLAMALIDIR.

  • [C-3-3] Çekirdek dahil Android OS'in güvenliği ihlal edilse bile kullanıcının istenen mesajı inceleyip onaylayabildiğinden EMİN OLMALIDIR.

9.11. Anahtarlar ve Kimlik Bilgileri

Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları bir kapsayıcıda depolamalarına ve KeyChain API veya Keystore API üzerinden kriptografik işlemlerde kullanmalarına olanak tanır. Cihaz uygulamaları:

  • [C-0-1] En az 8.192 anahtarın içe aktarılmasına veya oluşturulmasına İZİN VERMELİDİR.
  • [C-0-2] Kilit ekranı kimlik doğrulaması, başarısız denemeler arasında bir zaman aralığı UYGULAMALIDIR. Başarısız deneme sayısı n olarak alındığında, 9 < n < 30 için zaman aralığı en az 30 saniye OLMALIDIR. n > 29 için zaman aralığı değeri, en az 30*2^floor((n-30)/10)) saniye veya en az 24 saat (hangisi daha küçükse) OLMALIDIR.
  • Oluşturulabilecek anahtar sayısını sınırlamamalıdır

Yeni şartlar başlatma

  • [C-0-3] Başarısız birincil kimlik doğrulama denemelerinin sayısını SINIRLAMALIDIR.
  • [C-SR-2] Başarısız birincil kimlik doğrulama denemelerinin üst sınırını 20 olarak belirlemeniz ve kullanıcılar bu özelliği kabul edip etkinleştirirse başarısız birincil kimlik doğrulama denemelerinin sınırını aştıktan sonra "Fabrika Verilerini Sıfırla" işlemini gerçekleştirmeniz önemle ÖNERİLİR.

Cihaz uygulamaları, bilinen bir gizli bilgiye dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yöntem olarak kabul edilecek yeni bir kimlik doğrulama yöntemi kullanırsa:

  • [C-SR-3] PIN'in en az 6 basamaklı veya eşdeğer olarak 20 bit entropi içermesi önemle ÖNERİLİR.
  • [C-2-1] 6 basamaktan kısa PIN'ler, PIN uzunluğunun açığa çıkmasını önlemek için kullanıcı etkileşimi olmadan otomatik girişe İZİN VERMEMELİDİR.

Yeni şartların sona ermesi

Cihaz uygulaması güvenli kilit ekranını desteklediğinde:

  • [C-1-1] Anahtar deposu uygulamasını izole bir yürütme ortamıyla YEDEKLEMELİDİR.
  • [C-1-2] Android Keystore sisteminin desteklenen algoritmalarını, çekirdekte ve daha üst katmanlarda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda düzgün şekilde desteklemek için RSA, AES, ECDSA, ECDH (IKeyMintDevice destekleniyorsa), 3DES ve HMAC kriptografik algoritmalarının yanı sıra MD5, SHA1 ve SHA-2 karma oluşturma işlevlerinin uygulanması GEREKİR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu koşulu karşılar ancak başka bir ARM TrustZone tabanlı çözüm veya uygun bir hipervizör tabanlı yalıtımın üçüncü taraflarca incelenmiş güvenli bir uygulaması alternatif seçeneklerdir.
  • [C-1-3] Kilit ekranı kimlik doğrulamasını izole yürütme ortamında YAPMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamasına bağlı anahtarların kullanılmasına izin vermelidir. Kilit ekranı kimlik bilgileri, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulamasını gerçekleştirmesine izin verecek şekilde SAKLANMALIDIR. Yukarı yönlü Android Açık Kaynak Projesi, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
  • [C-1-4] Onaylama imzalama anahtarının güvenli donanım tarafından korunduğu ve imzalamanın güvenli donanımda yapıldığı durumlarda anahtar onayı desteklenmelidir. Onaylama imzalama anahtarları, anahtarların cihaz tanımlayıcısı olarak kullanılmasını önlemek için yeterince çok sayıda cihazda PAYLAŞILMALIDIR. Bu koşulu karşılamak için,belirli bir SKU'dan en az 100.000 adet üretilmediği sürece aynı doğrulama anahtarını paylaşabilirsiniz. Bir SKU'dan 100.000'den fazla birim üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.

Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme şartından muaf olduğunu unutmayın. Bunun için izole bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini belirtmesi gerekir.

  • [C-1-5] Kullanıcının, kilidi açık durumdan kilitli duruma geçiş için uyku zaman aşımını seçmesine izin VERMELİDİR. İzin verilen minimum zaman aşımı 15 saniyedir. Ana birim kapatıldığında veya kullanıcı değiştirildiğinde ekranı kilitleyen otomotiv cihazlarında Uyku zaman aşımı yapılandırması OLABİLMEZ.
  • [C-1-6] Aşağıdakilerden birini desteklemelidir:
    • IKeymasterDevice 3.0,
    • IKeymasterDevice 4.0,
    • IKeymasterDevice 4.1,
    • IKeyMintDevice 1 sürümü veya
    • IKeyMintDevice 2 sürümü.
  • [C-SR-1] IKeyMintDevice 1. sürümünün desteklenmesi önemle ÖNERİLİR.

9.11.1. Güvenli Kilit Ekranı, Kimlik Doğrulama ve Sanal Cihazlar

AOSP uygulaması, bilgi fabrikasına dayalı birincil kimlik doğrulamanın ikincil güçlü bir biyometrik veya daha zayıf üçüncül modalitelerle desteklendiği katmanlı bir kimlik doğrulama modelini izler.

Cihaz uygulamaları:

  • [C-SR-1] Birincil kimlik doğrulama yöntemi olarak aşağıdakilerden yalnızca birini ayarlamanızı önemle ÖNERİRİZ:

    • Sayısal PIN
    • Alfasayısal şifre
    • Tam olarak 3x3 nokta içeren bir ızgaradaki kaydırma modeli

      Yukarıdaki kimlik doğrulama yöntemlerinin bu dokümanda önerilen birincil kimlik doğrulama yöntemleri olarak adlandırıldığını unutmayın.

Yeni şartlar başlatma

  • [C-0-1] Başarısız birincil kimlik doğrulama denemelerinin sayısını SINIRLAMALIDIR.
  • [C-SR-5] Başarısız birincil kimlik doğrulama denemelerinin üst sınırını 20 olarak belirlemeniz ve kullanıcılar bu özelliği kabul edip etkinleştirirse başarısız birincil kimlik doğrulama denemelerinin sınırını aştıktan sonra "Fabrika Verilerini Sıfırla" işlemini yapmanız önemle ÖNERİLİR.

Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemi olarak sayısal bir PIN ayarlarsa:

  • [C-SR-6] PIN'in en az 6 basamaklı veya eşdeğer olarak 20 bit entropi içermesi önemle ÖNERİLİR.
  • [C-SR-7] PIN uzunluğunun gösterilmesini önlemek için kullanıcı etkileşimi olmadan otomatik girişe 6 basamaktan kısa PIN'lerin İZİN VERİLMEMESİ önemle tavsiye edilir.

Yeni şartların sona ermesi

Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirir ve ekranı kilitlemek için güvenli bir yöntem olarak yeni bir kimlik doğrulama yöntemi kullanırsa yeni kimlik doğrulama yöntemi:

Cihaz uygulamaları, bilinen bir gizli bilgiye dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya 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] İzin verilen en kısa giriş uzunluğunun entropisi 10 bitten büyük OLMALIDIR.
  • [C-3-2] Olası tüm girişlerin maksimum entropisi 18 bitten büyük OLMALIDIR.
  • [C-3-3] Yeni kimlik doğrulama yöntemi, AOSP'de uygulanan ve sunulan önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) hiçbirini İÇERMEMELİDİR.
  • [C-3-4] Cihaz Politikası Denetleyicisi (DPC) uygulaması, DevicePolicyManager.setRequiredPasswordComplexity() yöntemi aracılığıyla PASSWORD_COMPLEXITY_NONE'dan daha kısıtlayıcı bir karmaşıklık sabitiyle veya DevicePolicyManager.setPasswordQuality() yöntemi aracılığıyla PASSWORD_QUALITY_BIOMETRIC_WEAK'tan daha kısıtlayıcı bir sabitle şifre koşulları politikasını belirlediğinde yeni kimlik doğrulama yöntemi DEVRE DIŞI BIRAKILMALIDIR.
  • [C-3-5] Yeni kimlik doğrulama yöntemleri, 72 saatte bir veya daha kısa bir süre içinde önerilen birincil kimlik doğrulama yöntemlerine (ör. PIN, desen, şifre) geri dönmeli VEYA kullanıcının verilerinin gizliliğini korumak için bazı verilerin yedeklenmeyeceğini açıkça belirtmelidir.

Cihaz uygulamaları, kilit ekranının kilidini açmak için önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirir ve ekranı kilitlemek için güvenli bir yöntem olarak kabul edilecek biyometriye dayalı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:

  • [C-4-1] Sınıf 1 (eski adıyla kolaylık) için 7.3.10 numaralı bölümde açıklanan tüm koşulları karşılamalıdır.
  • [C-4-2] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bilinen bir gizliye dayalı yedek mekanizmaya SAHİP OLMALIDIR.
  • [C-4-3] Devre dışı bırakılmalı ve yalnızca Device Policy Controller (DPC) uygulaması, DevicePolicyManager.setKeyguardDisabledFeatures() yöntemini çağırarak anahtar koruma özelliği politikasını belirlediğinde ekranın kilidini açmak için önerilen birincil kimlik doğrulamasına izin vermelidir.Bu yöntem çağrılırken ilişkili biyometri işaretlerinden herhangi biri (ör. KEYGUARD_DISABLE_BIOMETRICS, KEYGUARD_DISABLE_FINGERPRINT, KEYGUARD_DISABLE_FACE veya KEYGUARD_DISABLE_IRIS) kullanılmalıdır.

Biyometrik kimlik doğrulama yöntemleri, 7.3.10 numaralı bölümde açıklandığı şekilde 3. sınıf (eski adıyla Güçlü) için gereken koşulları karşılamıyorsa:

  • [C-5-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması, şifre koşulları kalite politikasını PASSWORD_COMPLEXITY_LOW'den daha kısıtlayıcı bir karmaşıklık grubuyla DevicePolicyManager.setRequiredPasswordComplexity() aracılığıyla veya PASSWORD_QUALITY_BIOMETRIC_WEAK'den daha kısıtlayıcı bir kalite sabiti kullanarak DevicePolicyManager.setPasswordQuality() yöntemiyle ayarladıysa yöntemler devre dışı bırakılmalıdır.
  • [C-5-2] Kullanıcıdan, 7.3.10 numaralı bölümdeki [C-1-7] ve [C-1-8]'de açıklandığı şekilde önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) isteğinde bulunulmalıdır.
  • [C-5-3] Yöntemler güvenli kilit ekranı olarak DEĞİLDİR ve aşağıdaki bölümde C-8 ile başlayan koşulları karşılamalıdır.

Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya değiştirirse ve yeni bir kimlik doğrulama yöntemi fiziksel jetona veya konuma dayanıyorsa:

  • [C-6-1] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bilinen bir gizliye dayalı ve güvenli kilit ekranı olarak değerlendirilme şartlarını karşılayan bir yedek mekanizmaya SAHİP OLMALIDIR.
  • [C-6-2] Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı aşağıdakilerden biriyle ayarladığında yeni yöntem devre dışı bırakılmalı ve ekranın kilidini açmak için yalnızca önerilen birincil kimlik doğrulama yöntemlerinden birine izin verilmelidir:
  • [C-6-3] Kullanıcıdan, önerilen birincil kimlik doğrulama yöntemlerinden biri (ör. PIN, desen, şifre) için en az 4 saatte bir istek gönderilmelidir. Fiziksel bir jeton, C-X'teki TrustAgent uygulamaları için koşulları karşıladığında bunun yerine C-9-5'te tanımlanan zaman aşımı kısıtlamaları geçerli olur.
  • [C-6-4] Yeni yöntem, güvenli kilit ekranı olarak DEĞİLDİR ve aşağıdaki C-8 bölümünde listelenen kısıtlamalara uymalıdır.

Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService sistem API'sini uygulayan bir veya daha fazla güven aracısı varsa:

  • [C-7-1] Cihaz kilidinin ertelendiği veya güven aracıları tarafından kilidinin açılabileceği durumlarda ayarlar menüsünde ve kilit ekranında net bir şekilde belirtilmelidir. Örneğin, AOSP bu koşulu, ayarlar menüsünde "Otomatik kilitleme ayarı" ve "Güç düğmesi anında kilitler" için metin açıklaması ve kilit ekranında ayırt edilebilir bir simge göstererek karşılar.
  • [C-7-2] DevicePolicyManager sınıfındaki tüm güven aracısı API'lerine (ör. KEYGUARD_DISABLE_TRUST_AGENTS sabit) saygı duymalı ve bunları tam olarak uygulamalıdır.
  • [C-7-3] Birincil kişisel cihaz olarak kullanılan bir cihazda (ör. el cihazı) TrustAgentService.addEscrowToken() işlevini tam olarak UYGULAMAMALI ancak genellikle paylaşılan cihaz uygulamalarında (ör. Android TV veya Automotive cihaz) işlevi tam olarak UYGULAYABİLİR.
  • [C-7-4] TrustAgentService.addEscrowToken() tarafından eklenen tüm depolanmış jetonları ŞİFRELEMELİYDİR.
  • [C-7-5] Şifreleme anahtarını veya emanet jetonunu, anahtarın kullanıldığı cihazda DEPOLAMAMALIDIR. Örneğin, telefonda depolanan bir anahtarın TV'deki bir kullanıcı hesabının kilidini açmasına izin verilir. Otomotiv cihazlarda, emanet jetonunun aracın herhangi bir yerinde depolanmasına izin verilmez.
  • [C-7-6] Veri depolama alanının şifresini çözmek için emanet jetonunu etkinleştirmeden önce kullanıcıyı güvenlikle ilgili sonuçlar hakkında BİLGİLENDİRMELİDİR.
  • [C-7-7] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizma OLUNMALIDIR.
  • [C-7-8] Kullanıcının güvenliği (ör.sürücünün dikkati dağılması) söz konusu olmadığı sürece, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biri için kullanıcıya en az 72 saatte bir veya daha kısa sürede istek gönderilMELİDİR.
  • [C-7-9] Kullanıcının güvenliği (ör.sürücünün dikkatinin dağılması) söz konusu olmadığı sürece, 7.3.10 numaralı bölümdeki [C-1-7] ve [C-1-8]'de açıklandığı üzere, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biri için kullanıcıya istek gönderilMELİDİR.
  • [C-7-10] Güvenli kilit ekranı olarak DEĞİLDİR ve aşağıdaki C-8 bölümünde listelenen kısıtlamalara UYMALIDIR.
  • [C-7-11] Birincil kişisel cihazlardaki (ör.el cihazı) TrustAgent'ların cihazın kilidini açmasına İZİN VERMEMELİDİR ve bunları yalnızca kilidi açılmış bir cihazı en fazla 4 saat boyunca kilitli durumda tutmak için kullanabilir. AOSP'teki TrustManagerService'in varsayılan uygulaması bu koşulu karşılar.
  • [C-7-12] Alıkonma jetonunu depolama cihazından hedef cihaza aktarmak için kriptografik olarak güvenli (ör.UKEY2) bir iletişim kanalı KULLANMALIDIR.

Cihaz uygulamaları, yukarıda açıklandığı gibi güvenli olmayan kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya değiştirir ve tuş kilidinin kilidini açmak için yeni bir kimlik doğrulama yöntemi kullanırsa:

Cihaz uygulamaları, uygulamaların ikincil sanal ekranlar oluşturmasına izin veriyorsa ve VirtualDeviceManager üzerinden ilişkili giriş etkinliklerini desteklemiyorsa:

  • [C-9-1] Cihazın varsayılan ekranı kilitliyken bu ikincil sanal ekranları kilitlemeli ve cihazın varsayılan ekranı kilidi açıkken bu ikincil sanal ekranların kilidini açmalıdır.

Cihaz uygulamaları, uygulamaların ikincil sanal ekranlar oluşturmasına ve ilişkili giriş etkinliklerini desteklemesine (ör. VirtualDeviceManager aracılığıyla) izin veriyorsa:

  • [C-10-1] Sanal cihaz başına ayrı kilit durumları desteklenmelidir
  • [C-10-2] Boştaki zaman aşımı sonrasında tüm sanal cihazların bağlantısını kesmelidir
  • [C-10-3] Boşta kalma zaman aşımı OLMALIDIR
  • [C-10-4] Kullanıcı kilitleme işlemi başlattığında tüm ekranları kilitlemelidir. El cihazları için gerekli olan kilitleme kullanıcı özelliği de buna dahildir (Bölüm 2.2.5[9.11/H-1-2]'ye bakın)
  • [C-10-5] Kullanıcı başına ayrı sanal cihaz örnekleri OLMALIDIR
  • [C-10-6] DevicePolicyManager.setNearbyAppStreamingPolicy tarafından belirtildiğinde VirtualDeviceManager üzerinden ilişkili giriş etkinliklerinin oluşturulmasını DEVRE DIŞI BIRAKMALIDIR
  • [C-10-7] Yalnızca her sanal cihaz için ayrı bir pano KULLANMALIDIR (veya sanal cihazlar için panoyu devre dışı bırakmalıdır)
  • [C-10-11] Bilgi faktörü girişi ve biyometri istemi dahil olmak üzere sanal cihazlarda kimlik doğrulama kullanıcı arayüzünü DEVRE DIŞI BIRAKMALIDIR
  • [C-10-12] Sanal bir cihazdan başlatılan intent'leri yalnızca aynı sanal cihazda görüntülenecek şekilde Kısıtlamalıdır
  • [C-10-13] Android Anahtar Deposu Sistemi ile kullanıcı kimlik doğrulama yetkilendirmesi olarak sanal cihaz kilidi durumu KULLANILMAMALIDIR. KeyGenParameterSpec.Builder.setUserAuthentication* başlıklı makaleyi inceleyin.

Cihaz uygulamaları, kullanıcının birincil kimlik doğrulama bilgi faktörünü bir kaynak cihazdan hedef cihaza aktarmasına izin verdiğinde (ör. hedef cihazın ilk kurulumu için) aşağıdakiler gerçekleşir:

  • [C-11-1] Bilgi faktörünü kaynak cihazdan hedef cihaza aktarırken bilgi faktörünün şifresini, Google Cloud Key Vault Hizmeti güvenlik teknik belgesinde açıklananlara benzer koruma garantileriyle şifrelemelidir. Böylece bilgi faktörünün şifresi uzaktan çözülemez veya herhangi bir cihazın kilidini uzaktan açmak için kullanılamaz.
  • [C-11-2] Kaynak cihazda, bilgi faktörünü hedef cihaza aktarmadan önce kullanıcıdan kaynak cihazın bilgi faktörünü onaylamasını İSTEMELİDİR.
  • [C-11-3] Ayarlanmış birincil kimlik doğrulama bilgi faktörü olmayan bir hedef cihazda, kullanıcıdan hedef cihaz için birincil kimlik doğrulama bilgi faktörü olarak ayarlamadan ve kaynak cihazdan aktarılan verileri kullanıma sunmadan önce hedef cihaza aktarılan bir bilgi faktörünü onaylamasını İSTEMELİDİR.

Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE işaretiyle TrustAgentService.grantTrust() System API'yi çağıran bir veya daha fazla güven acentesi varsa:

  • [C-12-1] grantTrust() işlevini yalnızca kendi kilit ekranına sahip yakın bir fiziksel cihaza bağlıyken ve kullanıcı bu kilit ekranında kimliğini doğruladığında işaretle çağırmalıdır. Yakınlık sensörlü cihazlar, kullanıcı kimlik doğrulama şartını karşılamak için tek seferlik kullanıcı kilidi açtıktan sonra bilek veya vücut üzerinde algılama mekanizmalarını kullanabilir.
  • [C-12-2] Ekran kapatıldığında (ör. bir düğmeye basılması veya ekran zaman aşımı) ve TrustAgent güveni iptal etmediğinde cihaz uygulamasını TrustState.TRUSTABLE durumuna KOYMALIDIR. AOSP bu koşulu karşılar.
  • [C-12-3] TrustAgent, C-12-1'deki şartlara göre hâlâ güven veriyorsa cihazı yalnızca TrustState.TRUSTABLE durumundan TrustState.TRUSTED durumuna taşımalıdır.
  • [C-12-4] TrustManagerService.revokeTrust()'yi ARAMASI GEREKİYOR
    • Güven izninin verilmesinden en fazla 24 saat sonra veya
    • 8 saatlik bir boş zaman aralığından sonra veya
    • Uygulamalar, [C-12-5]'te tanımlandığı şekilde kriptografik olarak güvenli ve doğru bir menzil kullanmıyorsa yakın fiziksel cihaza olan temel bağlantı kaybedildiğinde.
  • [C-12-5] [C-12-4] şartlarını karşılamak için güvenli ve doğru menzil belirlemeye dayanan uygulamalar aşağıdaki çözümlerden birini KULLANMAK ZORUNDADIR:
    • Ultra geniş bant kullanan uygulamalar:
      • 7.4.9 bölümünde açıklanan ultra geniş bant için uygunluk, sertifika, doğruluk ve kalibre şartlarını karşılamalıdır.
      • 7.4.9 bölümünde listelenen P-STS güvenlik modlarından biri ZORUNLUDUR.
    • Kablosuz Komşu İletişim Ağı'nı (NAN) kullanan uygulamalar:
      • 2.2.1 [7.4.2.5/H-SR-1] bölümündeki doğruluk koşullarını karşılamalı, 160 MHz bant genişliğini (veya daha yüksek bir bant genişliğini) kullanmalı ve Bulunma Kalibrasyonu bölümünde belirtilen ölçüm kurulumu adımlarını uygulamalıdır.
      • IEEE 802.11az'da tanımlandığı şekilde Güvenli LTF kullanılmalıdır.

Cihaz uygulamaları, uygulamaların ikincil sanal ekranlar oluşturmasına ve VirtualDeviceManager aracılığıyla ilişkili giriş etkinliklerini desteklemesine izin veriyorsa ve ekranlar VIRTUAL_DISPLAY_FLAG_SECURE ile işaretlenmemişse:

  • [C-13-8] android:canDisplayOnRemoteDevices özelliğine sahip veya android.activity.can_display_on_remote_devices meta verisi false olarak ayarlanmış etkinliklerin sanal cihazda başlatılmasını ENGELLEMEK GEREKİR.
  • [C-13-9] Akış özelliğini açıkça etkinleştirmeyen ve SurfaceView#setSecure, FLAG_SECURE veya SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS aracılığıyla hassas içerik gösterdiğini belirten etkinliklerin sanal cihazda başlatılmasını engellemelidir.
  • [C-13-10] Sanal cihazlardan başlatılan uygulamaların yüklenmesini DEVRE DIŞI BIRAKMALIDIR.

Cihaz uygulamaları DeviceStateManager aracılığıyla ayrı ekran güç durumlarını VE KeyguardDisplayManager aracılığıyla ayrı ekran kilit durumlarını destekliyorsa:

  • [C-SR-2] Varsayılan cihaz ekranından bağımsız olarak kilit açmaya izin vermek için 9.11.1 bölümünde tanımlanan kimlik bilgisi koşullarını karşılayan bir kimlik bilgisi veya 7.3.10 bölümünde tanımlanan en az 1. sınıf özelliklerini karşılayan bir biyometri koşulu kullanmanız önemle ÖNERİLİR.
  • [C-SR-3] Ayrı ekran kilidini açmayı, tanımlanmış bir ekran zaman aşımı aracılığıyla KUVVETLE ÖNERİLİR.
  • [C-SR-4] Kullanıcının birincil el cihazından kilitleme yoluyla tüm ekranları dünya genelinde kilitlemesine izin verilmesi önemle ÖNERİLİR.

9.11.2. StrongBox

Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları hem özel bir güvenli işlemcide hem de yukarıda açıklanan izole yürütme ortamında depolamalarına olanak tanır. Bu tür özel güvenli işlemcilere "StrongBox" adı verilir. Aşağıdaki C-1-3 ile C-1-11 arasındaki şartlar, bir cihazın StrongBox olarak kabul edilmek için karşılaması gereken şartları tanımlar.

Özel bir güvenli işlemciye sahip cihaz uygulamaları:

  • [C-SR-1] StrongBox'u desteklemeniz önemle ÖNERİLİR. StrongBox, gelecekteki bir sürümde zorunlu hale gelecektir.

Cihaz uygulamaları StrongBox'u destekliyorsa:

  • [C-1-1] FEATURE_STRONGBOX_KEYSTORE bildirilmelidir.

  • [C-1-2] Anahtar deposunu desteklemek ve kullanıcı kimlik doğrulamasını güvence altına almak için kullanılan özel güvenli donanım sağlanmalıdır. Özel güvenli donanım, başka amaçlar için de kullanılabilir.

  • [C-1-3] Uygulama işlemcisiyle (AP) önbellek, DRAM, yardımcı işlemciler veya diğer temel kaynakları paylaşmayan ayrı bir CPU'ya sahip OLMALIDIR.

  • [C-1-4] AP ile paylaşılan çevre birimlerinin StrongBox işlemeyi hiçbir şekilde değiştirememesini veya StrongBox'tan bilgi alamamasını SAĞLAMALIDIR. AP, StrongBox'a erişimi devre dışı bırakabilir veya engelleyebilir.

  • [C-1-5] AP tarafından değiştirilemeyen, makul doğruluk (+-10%) değerine sahip bir dahili saate SAHİP OLMALIDIR.

  • [C-1-6] Eşit dağıtılmış ve öngörülemeyen çıkışlar üreten gerçek bir rastgele sayı üreteci OLMALIDIR.

  • [C-1-7] Fiziksel penetrasyona ve aksamalara karşı direnç de dahil olmak üzere bozulmaya karşı dirençli OLMALIDIR.

  • [C-1-8] Güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla bilgi sızıntısına karşı direnç de dahil olmak üzere yan kanal direncine SAHİP OLMALIDIR.

  • [C-1-9] İçeriklerin gizliliğini, bütünlüğünü, özgünlüğünü, tutarlılığını ve güncelliğini sağlayan güvenli bir depolama alanına SAHİP OLMALIDIR. Depolama alanı, StrongBox API'leri tarafından izin verilen durumlar dışında okunamaz veya değiştirilemez.

  • [C-1-3] ile [C-1-9] arasındaki politikalara uygunluğu doğrulamak için cihaz uygulamalarında:

    • [C-1-10] Güvenli IC Koruma Profili BSI-CC-PP-0084-2014'e göre sertifikalandırılmış veya Akıllı Kartlara Saldırı Potansiyeli Ortak Kriterleri Uygulaması'na göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesini içeren ulusal olarak onaylı bir test laboratuvarı tarafından değerlendirilmiş donanımı İÇERMELİDİR.
    • [C-1-11] Akıllı Kartlara Saldırı Potansiyeli Ortak Kriterleri Uygulaması'na göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesini içeren, ulusal olarak onaylı bir test laboratuvarı tarafından değerlendirilen donanım yazılımını İÇERMELİDİR.
    • [C-SR-2] AVA_VAN.5 ile desteklenen Güvenlik Hedefi, Değerlendirme Güvencesi Düzeyi (EAL) 5 kullanılarak değerlendirilen donanımın eklenmesi önemle ÖNERİLİR. EAL 5 sertifikası, gelecekteki bir sürümde zorunlu hale gelecektir.
    • [C-SR-3] Kuruluş içinden saldırılara karşı direnç (IAR) sağlaması İYİCE ÖNERİLİR. Bu, donanım yazılımı imzalama anahtarlarına erişimi olan bir kuruluş içinden kişinin, StrongBox'un gizli bilgileri sızdırmasına, işlevsel güvenlik şartlarını atlatmasına veya başka bir şekilde hassas kullanıcı verilerine erişmesine neden olan donanım yazılımı üretemeyeceği anlamına gelir. IAR'ın uygulanması için önerilen yöntem, donanım yazılımı güncellemelerine yalnızca birincil kullanıcı şifresi IAuthSecret HAL üzerinden sağlandığında izin vermektir.

9.11.3. Identity Credential

Kimlik Bilgisi Sistemi, android.security.identity.* paketindeki tüm API'lerin uygulanmasıyla tanımlanır ve elde edilir. Bu API'ler, uygulama geliştiricilerin kullanıcı kimlik belgelerini depolamalarına ve almalarını sağlar. Cihaz uygulamaları:

  • [C-SR-1] Kimlik Belgesi Sistemi'ni uygulamanız önemle ÖNERİLİR.

Cihaz uygulamaları Kimlik Bilgisi Sistemi'ni uygularsa:

  • [C-1-1] IdentityCredentialStore#getInstance() yöntemi için null olmayan bir değer döndürülmelidir.

  • [C-1-2] Kimlik Kimlik Bilgisi Sistemi'ni (ör. android.security.identity.* API'leri), çekirdekte ve daha üst katmanlarda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda güvenilir bir uygulamayla iletişim kuran kodla UYGULAMALIDIR. Güvenli izolasyon, DMA dahil olmak üzere çekirdek veya kullanıcı alanı kodunun izole ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir.

  • [C-1-3] Kimlik Kimlik Bilgisi Sistemi'ni (ör. android.security.identity.* API'leri) uygulamak için gereken kriptografik işlemler tamamen güvenilir uygulamada YAPILMALIDIR ve özel anahtar materyali, daha üst düzey API'ler (ör. createEphemeralKeyPair() yöntemi) tarafından özel olarak gerekli olmadığı sürece yalıtılmış yürütme ortamından ASLA ayrılmamalıdır.

  • [C-1-4] Güvenilir uygulama, Android'in kötüye kullanılması veya güvenliğinin ihlal edilmesi durumunda bile güvenlik özelliklerinin etkilenmeyeceği şekilde uygulanmalıdır (ör. erişim denetimi koşulları karşılanmadığı sürece kimlik bilgisi verileri yayınlanmaz, MAC'ler rastgele veriler için üretilemez).

Yukarı akış Android Açık Kaynak Projesi, kimlik bilgisi sistemini uygulamak için kullanılabilecek güvenilir bir uygulamanın (libeic) referans uygulamasını sağlar.

9.12. Veri Silme

Tüm cihaz uygulamaları:

  • [C-0-1] Kullanıcılara "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirebilecekleri bir mekanizma ZORUNLUDUR.
  • [C-0-2] "Fabrika Verilerine Sıfırlama" işlemi yapılırken userdata dosya sistemindeki tüm veriler silinmelidir.
  • [C-0-3] "Fabrika Verilerini Sıfırlama" işlemi gerçekleştirirken verileri NIST SP800-88 gibi ilgili endüstri standartlarını karşılayacak şekilde SİLMELİYDİR.
  • [C-0-4] DevicePolicyManager.wipeData() API, birincil kullanıcının Cihaz Politikası Denetleyici uygulaması tarafından çağrıldığında yukarıdaki "Fabrika Verilerini Sıfırla" işlemini TETİKLEMELİDİR.
  • Yalnızca mantıksal veri silme işlemi gerçekleştiren hızlı bir veri silme seçeneği SUNABİLİR.

9.13. Güvenli Önyükleme Modu

Android, kullanıcıların yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda önyükleme yapmasına olanak tanıyan Güvenli Modda Başlatma modunu sunar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcıya zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı sunar.

Cihaz uygulamaları şunlardır:

  • [C-SR-1] Güvenli Modda Başlatma'yı uygulamanız önemle ÖNERİLİR.

Cihaz uygulamaları Güvenli Önyükleme Modu'nu uygularsa:

  • [C-1-1] Kullanıcıya, üçüncü taraf uygulaması bir Cihaz Politikası Denetleyicisi olup UserManager.DISALLOW_SAFE_BOOT işaretini doğru olarak ayarlamadığı sürece, cihaza yüklenen üçüncü taraf uygulamaları tarafından kesintiye uğramayacak şekilde Güvenli Modda Başlatma moduna girme seçeneği SUNMALIDIR.

  • [C-1-2] Kullanıcıya, güvenli modda üçüncü taraf uygulamalarını kaldırma olanağı SUNMALIDIR.

  • Kullanıcıya, normal önyüklemeden farklı bir iş akışı kullanarak önyükleme menüsünden Güvenli Önyükleme moduna girme seçeneği sunmalıdır.

9.14. Otomotiv Araç Sistemi İzolasyon

Android Automotive cihazların, CAN bus gibi araç ağları üzerinden mesaj gönderip almak için araç HAL'ini kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.

Bu alt sistemlerle kötü amaçlı veya kasıtsız etkileşimi önlemek için Android çerçeve katmanlarının altında güvenlik özellikleri uygulayarak veri alışverişi güvence altına alınabilir.

9.15. Abonelik Planları

"Abonelik planları", bir mobil operatör tarafından SubscriptionManager.setSubscriptionPlans() aracılığıyla sağlanan faturalandırma ilişkisi planı ayrıntılarını ifade eder.

Tüm cihaz uygulamaları:

  • [C-0-1] Abonelik planlarını yalnızca başlangıçta sağlayan mobil operatör uygulamasına döndürmelidir.
  • [C-0-2] Abonelik planlarını uzaktan yedeklememeli veya yüklememeli.
  • [C-0-3] Yalnızca geçerli abonelik planları sunan mobil operatör uygulamasından SubscriptionManager.setSubscriptionOverrideCongested() gibi geçersiz kılma işlemlerine izin VERMELİDİR.

9.16. Uygulama Verileri Taşıma

Cihaz uygulamaları, verileri bir cihazdan başka bir cihaza taşıma özelliğine sahipse ve kopyalanan uygulama verilerini android:fullBackupContent özelliği aracılığıyla uygulama geliştiricisi tarafından manifest dosyasında yapılandırılanlarla sınırlandırmıyorsa:

  • [C-1-1] Kullanıcının 9.11.1 Güvenli Kilit Ekranı ve Kimlik Doğrulaması bölümünde açıklandığı gibi birincil kimlik doğrulaması ayarlamadığı cihazlardan uygulama verisi aktarımı BAŞLATMAMALIDIR.
  • [C-1-2] Herhangi bir veri aktarılmadan önce kaynak cihazdaki birincil kimlik doğrulamayı güvenli bir şekilde onaylamalı ve kaynak cihazdaki verileri kopyalama niyetini kullanıcıdan onaylamalıdır.
  • [C-1-3] Cihazdan cihaza taşıma işleminde hem kaynak cihazın hem de hedef cihazın meşru Android cihazlar olduğundan ve kilitli bir bootloader'a sahip olduğundan emin olmak için güvenlik anahtarı doğrulamasını KULLANMALIDIR.
  • [C-1-4] Uygulama verileri yalnızca hedef cihazdaki aynı uygulamaya, aynı paket adıyla VE imzalama sertifikasıyla taşınmalıdır.
  • [C-1-5] Kaynak cihazda, cihazdan cihaza veri taşıma işlemiyle veri taşındığını gösteren bir gösterge ayarlar menüsünde GÖSTERİLMELİDİR. Kullanıcılar bu göstergeyi kaldırAMAMALIDIR.

9.17. Android Sanallaştırma Çerçevesi

Cihaz, Android Sanallaştırma Çerçevesi API'leri (android.system.virtualmachine.*) için destek sağlıyorsa Android ana makinesi:

  • [C-1-1] android.system.virtualmachine paketi tarafından tanımlanan tüm API'leri DESTEKLEMELİDİR.
  • [C-1-2] Korunan Sanal Makineler (pVM)'in yönetimi için Android SELinux ve izin modelini DEĞİŞTİRMEMELİDİR.

  • [C-1-3] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/güvenlik politikasında bulunan neverallow kurallarını değiştirmemeli, atlamamalı veya değiştirmemeli ve politika, mevcut tüm neverallow kurallarıyla derlenmelidir.

  • [C-1-4] Yalnızca platform tarafından imzalanan koda ve ayrıcalıklı uygulamalara izin VERMELİGüvenilir olmayan koda (ör. üçüncü taraf uygulamaları) izin VERMEMELİKorumalı Sanal MakinepVM oluşturmasına ve çalıştırmasına izin VERMEMELİ. Not: Bu durum gelecekteki Android sürümlerinde değişebilir.

  • [C-1-5] Korumalı Sanal Makine pVM'nin fabrika görüntüsüne veya güncellemelerine ait olmayan kodları yürütmesine İZİN VERMEMELİDİR. Android Doğrulanmış Başlatma kapsamında olmayan hiçbir şeyin (ör. internetten indirilen veya harici olarak yüklenen dosyalar) Korunan Sanal Makine'de çalıştırılmasına İZİN VERİLMEMELİDİR .

Yeni şartlar başlatma

  • [C-1-5] Yalnızca hata ayıklama yapılamayan bir pVM'nin fabrika görüntüsünden veya ayrıcalıklı uygulamalardaki güncellemeleri de içeren platform güncellemelerinden kod yürütmesine izin VERMEMELİDİR.

Yeni şartların sona ermesi

Cihaz, Android Sanallaştırma Çerçevesi API'leri (android.system.virtualmachine.*) için destek sağlıyorsa tüm Protected Virtual Machine pVM örnekleri:

  • [C-2-1] Sanallaştırma APEX'inde bulunan tüm işletim sistemlerini Korumalı Sanal Makine pVM'de çalıştırabilmelidir.
  • [C-2-2] Korumalı Sanal Makine pVM'nin cihaz uygulayıcısı veya işletim sistemi tedarikçisi tarafından imzalanmamış bir işletim sistemi çalıştırmasına İZİN VERMEMELİDİR.
  • [C-2-3] Korunan Sanal Makine pVM'nin verileri kod olarak yürütmesine izin VERMEmelidir (ör. SELinux neverallow execmem).

  • [C-2-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy/microdroid içinde bulunan neverallow kurallarını DEĞİŞTİRMEMELİ, EKSİLTMEMELİ veya DEĞİŞTİRMEMELİDİR.

  • [C-2-5] Microdroid işletim sistemi olmayanlar için bile Protected Virtual Machine pVM derin savunma mekanizmalarını (ör. pVM'ler için SELinux) UYGULAMALIDIR.
  • [C-2-6] Sanal makinenin çalışacağı ilk görüntüler doğrulanamazsa donanım yazılımı önyüklemeyi reddederse pVM'nin başarısız olduğundan emin olun. Doğrulama işlemi KESİNLİKLE sanal makine içinde yapılmalıdır.
  • [C-2-7] instance.img dosyasının bütünlüğü ihlal edilirse pVM'nin başarısız olmasının donanım yazılımının önyüklemeyi reddetmesinin GEREKİR.

Cihaz, Android Sanallaştırma Çerçevesi API'leri (android.system.virtualmachine.*) için destek sağlıyorsa hipervizör:

  • [C-3-1] Yalnızca bir sanal makinenin (pVM veya ana makine) sahip olduğu bellek sayfalarına, korumalı veya korumasız diğer sanal makineler tarafından değil, yalnızca sanal makinenin kendisi veya hipervizör tarafından erişilebildiğinden emin OLMALIDIR. Sayfa sahibi tarafından açıkça paylaşılmadığı sürece, hiçbir sanal makinenin başka bir tüzel kişiye (ör. başka bir sanal makine veya hipervizör) ait bir sayfaya erişmesine İZİN VERMEMELİDİR. Ana makine sanal makinesi de buna dahildir. Bu durum hem CPU hem de DMA erişimleri için geçerlidir.
  • [C-3-2] Bir sayfa, pVM tarafından kullanıldıktan sonra ve ana makineye döndürülmeden önce (ör. pVM yok edilmeden önce) silinmelidir.
  • [C-3-3SR-1] pVM donanım yazılımının, pVM'deki herhangi bir koddan önce yüklendiğinden ve yürütüldüğünden EMIN OLMANIZI KESİNLİKLE ÖNERİRİZ EMIN OLMANIZ GEREKİR.
  • [C-3-4] Her sanal makinenin, sanal makine başına bir gizli anahtar oluşturduğundan{Bir pVM örneğine sağlanan önyükleme sertifikası zinciri (BCC) ve birleşik cihaz tanımlayıcısı (CDI'ler) yalnızca ilgili sanal makine örneği tarafından türetilebileceğinden ve fabrika ayarlarına sıfırlama ve OTA'da değiştiğinden emin olmalıdır.

Cihaz, Android Virtualization Framework API'leri için destek sağlıyorsa tüm alanlarda:

  • [C-4-1] pVM'ye Android Güvenlik Modeli'nin atlanmasına olanak tanıyan işlevler SAĞLAMAMALIDIR.

Cihaz, Android Virtualization Framework API'leri için destek sağlıyorsa:

  • [C-5-1] ART çalışma zamanı güncellemesinin destekleyebilmelidir ancak cihazın gönderiminde yalıtılmış derleme özelliğini devre dışı bırakabilir.

Cihaz, Android Virtualization Framework API'leri için destek sağlıyorsa Anahtar Yönetimi için:

  • [C-6-1] DICE zinciri, kilidi açılmış cihazlarda bile kullanıcının değiştiremeyeceği bir noktada köklenmelidir. (Kimliğin taklit edilemeyeceğinden emin olmak için).

  • [C-SR-26-2] Sanal makine başına gizli türetme mekanizması olarak DICE'nin KULLANILMASI ÖNERİLİR. DICE'yi doğru şekilde yapmalıdır (ör. doğru değerleri sağlamalıdır).

10. Yazılım Uyumluluğu Testi

Cihaz uygulamaları bu bölümde açıklanan tüm testleri ZORUNLU ŞEKİLDE geçmelidir. Ancak hiçbir yazılım test paketinin her şeyi kapsamadığını unutmayın. Bu nedenle, cihaz uygulayıcılarının Android Açık Kaynak Projesi'nden edindikleri referans ve tercih edilen Android uygulamasında mümkün olduğunca az sayıda değişiklik yapmaları ŞİDDETLE ÖNERİLİR. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara neden olan hataların eklenme riskini en aza indirir.

10.1. Compatibility Test Suite

Cihaz uygulamaları:

  • [C-0-1] Cihazdaki nihai gönderim yazılımını kullanarak Android Açık Kaynak Projesi'nden edinilebilen Android Uyumluluk Test Paketi'ni (CTS) GEÇMELİDİR.

  • [C-0-2] CTS'de belirsizlik olduğunda ve referans kaynak kodunun bölümlerinin yeniden uygulandığı durumlarda uyumluluğu SAĞLAMALIDIR.

CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Her yazılımda olduğu gibi CTS'de de hatalar olabilir. CTS, bu Uyumluluk Tanımı'ndan bağımsız olarak sürümlendirilir ve Android 14 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.

  • Mümkün olduğunca Android Açık Kaynak ağacındaki referans uygulamayı KULLANMALIDIR.

10.2. CTS Doğrulayıcı

CTS Doğrulayıcı, Uyumluluk Test Paketi'ne dahildir ve kameranın ve sensörlerin doğru çalışması gibi otomatik bir sistem tarafından test edilemeyecek işlevleri test etmek için bir operatör tarafından çalıştırılmak üzere tasarlanmıştır.

Cihaz uygulamaları:

  • [C-0-1] CTS doğrulayıcısında geçerli tüm durumları doğru şekilde yürütmelidir.

CTS Doğrulayıcı, isteğe bağlı olan bazı donanımlar da dahil olmak üzere birçok donanım türü için testler içerir.

Cihaz uygulamaları:

  • [C-0-2] Sahip olduğu donanımla ilgili tüm testleri GEÇMELİDİR. Örneğin, bir cihazda ivmeölçer varsa CTS Doğrulayıcı'da ivmeölçer testini doğru şekilde yürütmelidir.

Bu Uyumluluk Tanımı Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test durumları atlanabilir veya çıkarılabilir.

  • [C-0-2] Yukarıda belirtildiği gibi her cihaz ve her derleme, CTS Doğrulayıcı'yı doğru şekilde çalıştırmalıdır. Ancak birçok derleme birbirine çok benzediğinden, cihaz uygulayıcılarının yalnızca önemsiz farklılıklar gösteren derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Daha açık belirtmek gerekirse, CTS Doğrulayıcı'yı yalnızca dahil edilen yerel ayarların, markanın vb. kümesiyle geçmiş bir uygulamadan farklı olan cihaz uygulamaları CTS Doğrulayıcı testini EKSLEYEBİLİR.

11. Güncellenebilir Yazılımlar

  • [C-0-1] Cihaz uygulamalarında, sistem yazılımının tamamını değiştiren bir mekanizma BULUNMASI GEREKİR. Mekanizmanın "canlı" yükseltmeler yapması gerekmez. Yani cihazın yeniden başlatılması GEREKEBİLİR. Cihazın önceden yüklenmiş yazılımının tamamını değiştirebildiği sürece herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:

    • Yeniden başlatma yoluyla çevrimdışı güncellemeyle "Kablosuz (OTA)" indirme.
    • "Bağlanmış", ana makine PC'den USB üzerinden güncellemeler.
    • "Çevrimdışı" güncellemeler, yeniden başlatma ve çıkarılabilir depolama alanındaki bir dosyadan güncelleme yoluyla yapılır.
  • [C-0-2] Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri DESTEKLEMELİDİR. Yani güncelleme mekanizması, uygulamanın gizli verilerini ve uygulamanın paylaşılan verilerini muhafaza ETMELIDİR. Yukarı akış Android yazılımının bu koşulu karşılayan bir güncelleme mekanizması içerdiğini unutmayın.

  • [C-0-3] Güncellemenin tamamı İMZALANACAK ve cihaz üzerindeki güncelleme mekanizması, güncellemeyi ve imzayı cihazda depolanan herkese açık bir anahtarla doğrulayacaktır.

  • [C-SR-1] İmza mekanizmasının, güncellemeyi SHA-256 ile karma oluşturması ve ECDSA NIST P-256'yı kullanarak karma oluşturma işlemini ortak anahtarla doğrulaması önemle ÖNERİLİR.

Cihaz uygulamaları, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sınırsız veri bağlantısı desteği içeriyorsa:

  • [C-1-1] Yeniden başlatma yoluyla çevrimdışı güncellemeyle OTA indirmelerini desteklemelidir.

Cihaz uygulamaları, OTA'dan sonra sistem resminin beyinde beklenen sonuçla aynı olduğunu DOĞRULAMALIDIR. Android 5.1'den beri eklenen, yayın öncesi Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu koşulu karşılar.

Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP, bu özelliği önyükleme denetimi HAL'ini kullanarak uygular.

Bir cihaz uygulamasında, cihaz kullanıma sunulduktan sonra ancak Android Uyumluluk Ekibi ile görüşülerek belirlenen makul ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa:

  • [C-2-1] Cihaz uygulayıcısı, hatayı az önce açıklanan mekanizmaya göre uygulanabilen mevcut bir yazılım güncellemesiyle DÜZEltMELİDİR.

Android, cihaz sahibi uygulamasının (varsa) sistem güncellemelerinin yüklenmesini kontrol etmesine olanak tanıyan özellikler içerir. Cihazlar için sistem güncelleme alt sistemi android.software.device_admin değerini raporluyorsa:

12. Doküman Değişiklik Günlüğü

Bu sürümde Uyumluluk Tanımlama Belgesi'nde yapılan değişikliklerin özeti için:

13. Bize Ulaşın

Android uyumluluk forumuna katılarak açıklama isteyebilir veya dokümanda ele alınmadığını düşündüğünüz sorunları gündeme getirebilirsiniz.