Android 17 Uyumluluk Tanımı

1. Giriş

Bu belgede, cihazların Android 17 ile uyumlu olması için karşılanması gereken koşullar listelenmektedir.

"MUST" (ZORUNLU), "MUST NOT" (ZORUNLU DEĞİL), "REQUIRED" (GEREKLİ), "SHALL" (OLACAK), "SHALL NOT" (OLMAYACAK), "SHOULD" (GEREKİR), "SHOULD NOT" (GEREKMEZ), "RECOMMENDED" (ÖNERİLİR), "MAY" (OLABİLİR) ve "OPTIONAL" (İSTEĞE BAĞLI) ifadelerinin kullanımı, RFC2119'da tanımlanan IETF standardına uygundur.

Bu belgede kullanıldığı şekliyle "cihaz uygulayıcı" veya "uygulayıcı", Android 17 çalıştıran bir donanım/yazılım çözümü geliştiren kişi ya da kuruluş anlamına gelir. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.

Cihaz uygulamalarının Android 17 ile uyumlu kabul edilebilmesi için referans yoluyla dahil edilen tüm belgeler de dahil olmak üzere bu Uyumluluk Tanımı'nda belirtilen koşulları KARŞILAMASI GEREKİR.

Bu tanımın veya 10. bölümde açıklanan yazılım testlerinin sessiz, belirsiz ya da eksik olduğu durumlarda, mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcısının sorumluluğundadır.

Bu nedenle, Android Açık Kaynak Projesi hem referans hem de tercih edilen Android uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nden edinilebilen "yukarı akış" kaynak koduna dayandırmaları ŞİDDETLE TAVSİYE EDİLİR. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilse de yazılım testlerini geçmek önemli ölçüde zorlaşacağından bu uygulamanın kullanılmaması ŞİDDETLE TAVSİYE EDİLİR. Compatibility Test Suite dahil olmak üzere standart Android uygulamasıyla tam davranış uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen ikamelerinin ve değişikliklerinin bu belgeyle açıkça yasaklandığını unutmayın.

Bu belgede bağlantısı verilen kaynakların çoğu doğrudan veya dolaylı olarak Android SDK'dan alınmıştır ve işlevsel olarak bu SDK'nın belgelerindeki bilgilerle aynıdır. Bu Uyumluluk Tanımı veya Uyumluluk Test Paketi'nin SDK dokümanlarıyla uyuşmadığı durumlarda, SDK dokümanları yetkili olarak kabul edilir. Bu belgedeki bağlantılı kaynaklarda sağlanan tüm teknik ayrıntılar, dahil edilerek bu Uyumluluk Tanımı'nın bir parçası olarak kabul edilir.

1.1 Belge Yapısı

1.1.1. Cihaz Türüne Göre Gereksinimler

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

Herhangi bir Android cihaz uygulaması için geçerli olan diğer tüm koşullar Bölüm 2'den sonraki bölümlerde listelenmiştir. Bu şartlar, bu belgede "Temel Şartlar" olarak adlandırılır.

1.1.2. Şart Kimliği

ZORUNLU koşullar için koşul kimliği atanır.

  • Kimlik yalnızca ZORUNLU koşullar için atanır.
  • ŞİDDETLE TAVSİYE EDİLEN koşullar [SR] olarak işaretlenir ancak kimlik atanmaz.
  • Kimlik şu bölümlerden oluşur : Cihaz Türü Kimliği - Durum Kimliği - Şart Kimliği (ör. C-0-1).

Her kimlik aşağıda tanımlanmıştır:

  • Cihaz Türü Kimliği (2. Cihaz Türleri)
    • C: Temel (Tüm Android cihaz uygulamalarına uygulanan şartlar)
    • H: Android el cihazı
    • T: Android Television cihaz
    • Y: 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 geçerli olduğunda 1. koşul için 1 atanır ve aynı bölüm ile aynı cihaz türünde sayı 1 artar.
  • Şart kimliği
    • Bu kimlik 1'den başlar ve aynı bölüm ile aynı koşulda 1'er artar.

1.1.3. 2. Bölümdeki şart kimliği

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

bölüm kimliği ve ardından yukarıda açıklanan koşul kimliği.

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

2. Cihaz Türleri

Android Açık Kaynak Projesi, çeşitli cihaz türleri ve form faktörleri için kullanılabilecek bir yazılım yığını sağlar. Cihazlarda 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, bu CDD'nin 9. bölümünde ve başka yerlerinde açıklandığı gibi güvenli bir ortamda yürütülmesi beklenir. Uygulama dağıtım ekosistemi nispeten daha iyi kurulmuş birkaç cihaz türü vardır.

Bu bölümde, söz konusu cihaz türleri ve her cihaz türü için geçerli olan ek şartlar ve öneriler açıklanmaktadır.

Açıklanan cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamaları, bu Uyumluluk Tanımı'nın diğer bölümlerindeki tüm koşulları karşılamaya DEVAM ETMELİDİR.

2.1 Cihaz Yapılandırmaları

Cihaz türüne göre donanım yapılandırmasındaki temel farklılıklar için bu bölümdeki cihaza özgü gereksinimlere bakın.

2.2. Elde Taşınabilir Cihaz Gereksinimleri

Android el cihazı, genellikle elde tutularak kullanılan bir Android cihaz uygulamasıdır (ör. MP3 çalar, telefon veya tablet).

Android cihaz uygulamaları, aşağıdaki tüm ölçütleri karşılıyorsa elde taşınabilir cihaz olarak sınıflandırılır:

  • Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
  • 4 inç ile 8 inç arasında bir fiziksel çapraz ekran boyutuna sahip olmalıdır.
  • Dokunmatik ekran giriş arayüzüne sahip olmalıdır.

Bu bölümün geri kalanındaki ek şartlar, Android el cihazı uygulamalarına özeldir.

2.2.1. Donanım

El cihazı uygulamaları:

  • [7.1.1.1/H-0-1] Kısa kenarı en az 5,6 cm, uzun kenarı en az 8,6 cm olan Android uyumlu en az bir ekrana SAHİP OLMALIDIR.

  • [7.1.1.3/H-SR-1] Kullanıcılara ekran boyutunu (ekran yoğunluğu) değiştirme olanağı sunulması ŞİDDETLE TAVSİYE EDİLİR.

  • [7.1.1.1/H-0-2] En azından yerleşik ekranların en yüksek çözünürlüğü kadar büyük grafik arabelleklerinin GPU bileşimini DESTEKLEMELİDİR.

  • [7.1.1.1/H-0-3]* Üçüncü taraf uygulamaları için kullanılabilen her UI_MODE_NORMAL ekran, kısa kenarı en az 5,6 cm ve uzun kenarı en az 8,6 cm olan, engellenmemiş bir fiziksel ekran alanına eşlenmelidir.

  • [7.1.1.3/H-0-1]* DENSITY_DEVICE_STABLE, ilgili ekranın gerçek, fiziksel yoğunluğunun% 92'si veya daha fazlası olacak şekilde AYARLANMALIDIR.

El cihazı uygulamaları Vulkan desteği içeriyorsa:

Android 17'de şartların başlangıcı değişti

Elde taşınabilir cihaz uygulamaları herhangi bir 64 bit ABI'yi desteklediğini beyan ederse (herhangi bir 32 bit ABI ile veya olmadan) ActivityManager.isLowRamDevice() için false döndürürse:

  • [7.1.4.2/H-2-1] Vulkan 1.1 veya sonraki bir sürümü DESTEKLEMELİDİR.

El cihazı uygulamaları, Configuration.isScreenHdr() aracılığıyla Yüksek Dinamik Aralık ekranları desteklediğini iddia ediyorsa:

  • [7.1.4.5/H-1-1] EGL_EXT_gl_colorspace_bt2020_pq, EGL_EXT_surface_SMPTE2086_metadata, EGL_EXT_surface_CTA861_3_metadata, VK_EXT_swapchain_colorspace ve VK_EXT_hdr_metadata uzantıları için destek reklamı YAPILMALIDIR.

El cihazı uygulamaları:

  • [7.1.4.6/H-0-1] Cihazın, sistem özelliği aracılığıyla GPU profil oluşturma özelliğini destekleyip desteklemediği BİLDİRİLMELİDİR graphics.gpu.profiler.support.

Elde taşınabilir cihaz uygulamaları, sistem özelliği graphics.gpu.profiler.support aracılığıyla destek beyan ediyorsa:

El cihazı uygulamaları:

  • [7.1.5/H-0-1] Üst akış Android açık kaynak kodu tarafından uygulanan eski uygulama uyumluluk modu desteği ZORUNLU olarak eklenmelidir. Yani, cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİ ve uyumluluk modunun davranışını DEĞİŞTİRMEMELİDİR.

  • [7.2.1/H-0-1] Üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek İÇERMELİDİR.

  • [7.2.3/H-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliği, ön plandaki uygulamaya GÖNDERİLMELİDİR. Bu etkinlikler sistem tarafından KULLANILMAMALI ve Android cihazın dışından (ör. Android cihaza bağlı harici donanım klavyesi) tetiklenebilir.

  • [7.2.3/H-0-3] Ana ekranı sağlayan tüm Android uyumlu ekranlarda Ana ekran işlevi SAĞLANMALIDIR.

  • [7.2.3/H-0-4] Tüm Android uyumlu ekranlarda Geri işlevi, Android uyumlu ekranlardan en az birinde ise Son Kullanılanlar işlevi SAĞLANMALIDIR.

  • [7.2.4/H-0-1] Dokunmatik ekran girişi DESTEKLENMELİDİR.

  • [7.2.4/H-SR-1] Kullanıcı tarafından seçilen asistan uygulamasının başlatılması ŞİDDETLE TAVSİYE EDİLİR. Diğer bir deyişle, ön plandaki etkinlik bu uzun basma etkinliklerini işlemediği takdirde VoiceInteractionService'yi uygulayan uygulama veya KEYCODE_MEDIA_PLAY_PAUSE ya da KEYCODE_HEADSETHOOK tuşuna uzun basıldığında ACTION_ASSIST'yi işleyen bir etkinlik başlatılmalıdır.

  • [7.3.1/H-SR-1] 3 eksenli ivme ölçer içermeleri ŞİDDETLE TAVSİYE EDİLİR.

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

  • [7.3.1/H-1-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.

Elde taşınabilir cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özelliği aracılığıyla uygulamalara yeteneği bildiriyorsa:

  • [7.3.3/H-2-1] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile, GNSS ölçümleri bulunur bulunmaz BİLDİRİLMELİDİR.

  • [7.3.3/H-2-2] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekareden daha az ivmeyle hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıkları ve sahte aralık hızları, zamanın en az% 95'inde RAPORLANMALIDIR.

El cihazı uygulamaları 3 eksenli jiroskop içeriyorsa:

  • [7.3.4/H-3-1] Etkinlikleri en az 100 Hz sıklıkta bildirebilmelidir.

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

Sesli arama yapabilen ve getPhoneType içinde PHONE_TYPE_NONE dışında bir değer belirtebilen el cihazı uygulamaları:

  • [7.3.8/H] Yakınlık sensörü İÇERMELİDİR.

El cihazı uygulamaları:

  • [7.3.11/H-SR-1] 6 serbestlik derecesine sahip poz sensörünün desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.

Android 17'de eklenen şartların başlangıcı

El cihazı uygulamaları hücresel veri bağlantısını destekliyorsa:

  • [7.4.1/H-1-1] android.hardware.telephony.data özellik işaretini BİLDİRMELİDİR.

Bluetooth LE desteği içeren el cihazı uygulamaları:

  • [7.4.3/H-SR-1] Bluetooth LE Veri Paketi Uzunluğu Uzantısı'nı desteklemesi ŞİDDETLE TAVSİYE EDİLİR.

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

Cihazlar PackageManager.FEATURE_WIFI_AWARE ile Wi-Fi Komşu İletişim Ağı (NAN) protokolünü ve PackageManager.FEATURE_WIFI_RTT ile Wi-Fi Konumu'nu (Wi-Fi Gidiş Dönüş Süresi - RTT) destekliyorsa:

  • [7.4.2.5/H-1-1] WifiRttManager#startRanging Android API ile 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 aralığını doğru şekilde bildirmelidir (Kümülatif Dağılım Fonksiyonu ile hesaplandığı gibi).

  • [7.4.2.5/H-SR-1] WifiRttManager#startRanging Android API ile gözlemlendiği üzere, 10 cm mesafelerde, 90. yüzdelik dilimde (Kümülatif Dağılım Fonksiyonu ile hesaplandığı gibi) 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 aralığını doğru şekilde bildirmesi ŞİDDETLE TAVSİYE EDİLİR.

Mevcudiyet Kalibrasyonu'nda belirtilen ölçüm kurulumu adımlarını uygulamanız ŞİDDETLE TAVSİYE EDİLİR.

Android 17'de eklenen şartların başlangıcı

El cihazı uygulamaları, PackageManager.FEATURE_WIFI_RTT bildirimi ve WifiRttManager#getProximityDetectionCharacteristics() işlevinden döndürülen boş olmayan bir değerle belirtilen Wi-Fi yakınlık algılama (PD) protokolünü destekliyorsa:

  • [7.4.2.6/H-1-1] Cihazlar 160 MHz'i desteklediğini duyuruyorsa mesafe ölçümleri için 160 MHz bant genişliğini KULLANMALIDIR.

  • [7.4.2.6/H-1-2] IEEE 802.11az standardı kullanılırken cihazlar, WifiRttManager#startContinuousRangingAndroid APIWifiRttManager#startContinuousRanging aracılığıyla gözlemlenen 10 cm, 1 m, 3 m ve 5 m mesafelerde, 68. yüzdelik dilimde (Kümülatif Dağılım Fonksiyonu aracılığıyla hesaplanır) aralığı doğru şekilde bildirmelidir:

    • 160 MHz bant genişliğinde +/-0,5 m
    • 80 MHz bant genişliğinde +/-1 m
    • 40 MHz bant genişliğinde +/-2 m
    • 20 MHz bant genişliğinde +/-4 m
  • [7.4.2.6/H-1-3] IEEE 802.11mc standardı kullanılırken cihazlar, WifiRttManager#startContinuousRangingAndroid API'si aracılığıyla gözlemlenen 10 cm, 1 m, 3 m ve 5 m mesafelerde aralığı doğru şekilde bildirmelidir (Kümülatif Dağılım Fonksiyonu ile hesaplanır).

    • 80 MHz bant genişliğinde +/-2 m
    • 40 MHz bant genişliğinde +/-4 m
    • 20 MHz bant genişliğinde +/-8 m
  • [7.4.2.6/H-SR-1] IEEE 802.11az standardı kullanılırken cihazların, WifiRttManager#startContinuousRanging Android API'si aracılığıyla gözlemlendiği üzere 10 cm mesafede, 90. yüzdelik dilimde (Kümülatif Dağılım Fonksiyonu aracılığıyla hesaplanır) aralığı doğru şekilde bildirmesi ŞİDDETLE TAVSİYE EDİLİR:

    • 160 MHz bant genişliğinde +/-0,5 m
    • 80 MHz bant genişliğinde +/-1 m
    • 40 MHz bant genişliğinde +/-2 m
    • 20 MHz bant genişliğinde +/-4 m
  • [7.4.2.6/H-SR-2] IEEE 802.11mc standardı kullanılırken cihazların, WifiRttManager#startContinuousRanging Android API'si aracılığıyla gözlemlendiği üzere 10 cm mesafede, 90. yüzdelik dilimde (Kümülatif Dağılım Fonksiyonu aracılığıyla hesaplanır) aralığı doğru şekilde bildirmesi ŞİDDETLE TAVSİYE EDİLİR:

    • 80 MHz bant genişliğinde +/-2 m
    • 40 MHz bant genişliğinde +/-4 m
    • 20 MHz bant genişliğinde +/-8 m

Uygunluk koşulları şunlardır: İki cihaz arasında net bir LOS (görüş hattı) olmalı, çoklu yolu azaltmak için yakındaki yansıtıcıların en aza indirildiği açık bir test ortamı olmalı, kanal varyasyonlarını en aza indirmek için test sırasında cihazların etrafında hareket eden insanlar olmamalıdır.

Mevcudiyet Kalibrasyonu'nda belirtilen ölçüm kurulumu adımlarını uygulamanız ŞİDDETLE TAVSİYE EDİLİR.

Android 17'de eklenen şartların başlangıcı

Elde taşınan cihazlar, PackageManager.FEATURE_WIFI_PD ile Wi-Fi Yakınlık Algılama (PD) protokolünü ve PackageManager.FEATURE_WIFI_RTT ile Wi-Fi Konumu'nu (Wi-Fi Gidiş Dönüş Süresi - RTT) destekliyorsa:

  • [7.4.2.10/H-1-1] En az 160 MHz bant genişliği KULLANILMALIDIR.

  • [7.4.2.10/H-1-2] WifiRttManager#startRanging Android API aracılığıyla gözlemlendiği üzere, 160 MHz bant genişliğinde 68.yüzdelik dilimde (Kümülatif Dağılım İşlevi ile hesaplandığı gibi) aralığı +/- 0,25 metre içinde doğru şekilde bildirmelidir.

Mevcudiyet Kalibrasyonu'nda belirtilen ölçüm kurulumu adımlarını uygulamanız ŞİDDETLE TAVSİYE EDİLİR.

Elde taşınabilir cihaz uygulamaları FEATURE_BLUETOOTH_LE'yı bildiriyorsa:

  • [7.4.3/H-1-3] Medyan BLE RSSI'nin ADVERTISE_TX_POWER_HIGH'de iletim 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 iletim 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.

Android 17'de eklenen şartların başlangıcı

El cihazı uygulamaları en az bir arka kameraya sahipse:

  • [7.5.1/H-1-1] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.

El cihazı uygulamaları, CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA kullanılarak özelliklerin listelendiği mantıksal bir kamera cihazı içeriyorsa:

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

El cihazı uygulamaları:

  • [7.6.1/H-0-1] Uygulama özel verileri (diğer adıyla /data bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.

  • [7.6.1/H-0-2] Çekirdek ve kullanıcı alanı için 1 GB'tan az bellek mevcut olduğunda ActivityManager.isLowRamDevice() için "true" değerini DÖNDÜRMELİDİR.

Elde taşınabilir cihaz uygulamaları yalnızca 32 bit ABI'yi desteklediğini beyan ediyorsa:

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

  • [7.6.1/H-2-1] Varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) arabellek çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 592 MB OLMALIDIR.

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

  • [7.6.1/H-4-1] Varsayılan ekranda QHD'ye (ör.QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.344 MB olmalıdır.

Elde taşınabilir cihaz uygulamaları herhangi bir 64 bit ABI'yi (32 bit ABI ile veya 32 bit ABI olmadan) desteklediğini beyan ediyorsa:

  • [7.6.1/H-5-1] Varsayılan ekranda qHD'ye (ör. FWVGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek EN AZ 816 MB OLMALIDIR .

  • [7.6.1/H-6-1] Çekirdek ve kullanıcı alanı için kullanılabilir bellek, varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa en az 944 MB OLMALIDIR.

  • [7.6.1/H-7-1] Varsayılan ekranda FHD'ye kadar (ör.WSXGA+) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.280 MB OLMALIDIR.

  • [7.6.1/H-8-1] Varsayılan ekranda QHD'ye (ör.QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.824 MB OLMALIDIR.

Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdek denetimi altında olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.

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

  • [7.6.1/H-9-1] Özellik işaretini android.hardware.ram.low BEYAN ETMELİDİR.

  • [7.6.1/H-9-2] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1,1 GB kalıcı depolama alanı OLMALIDIR.

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

  • [7.6.1/H-10-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.

  • Özellik işaretini BEYAN ETMELİDİR android.hardware.ram.normal.

El cihazı uygulamalarında çekirdek ve kullanıcı alanı için 2 GB'tan fazla veya 2 GB'a eşit ve 4 GB'tan az bellek varsa:

  • [7.6.1/H-SR-1] Yalnızca 32 bit kullanıcı alanını (hem uygulamalar hem de sistem kodu) desteklemeniz ŞİDDETLE TAVSİYE EDİLİR.

El cihazı uygulamaları, çekirdek ve kullanıcı alanı için 2 GB'tan az kullanılabilir 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.

El cihazı uygulamaları:

  • [7.6.2/H-0-1] 1 GiB'tan daha küçük bir uygulama ortak depolama alanı SAĞLAMAMALIDIR.

  • [7.7.1/H] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.

El cihazı uygulamaları, çevre birimi modunda çalışan bir kumandaya sahip USB bağlantı noktası içeriyorsa:

  • [7.7.1/H-1-1] Android Open Accessory (AOA) API'si uygulanmalıdır.

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

El cihazı uygulamaları:

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

  • [7.8.2/H-0-1] Ses çıkışı OLMALI ve android.hardware.audio.output beyan etmelidir.

El cihazı uygulamaları, VR modunu desteklemeyle ilgili tüm performans koşullarını karşılayabiliyorsa ve VR modu desteği içeriyorsa:

  • [7.9.1/H-1-1] android.hardware.vr.high_performance özellik işaretini BEYAN ETMELİDİR.

  • [7.9.1/H-1-2] android.service.vr.VrListenerService işlevini uygulayan ve android.app.Activity#setVrModeEnabled üzerinden VR uygulamaları tarafından etkinleştirilebilen bir uygulama İÇERMELİDİR.

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

  • [7.8.2.2/H-1-1] MUST provide the following software mapping of HID codes:
İşlev Eşleştirmeler Bağlam Davranış
A HID kullanım sayfası: 0x0C
HID kullanımı: 0x0CD
Çekirdek anahtarı: KEY_PLAYPAUSE
Android anahtarı: KEYCODE_MEDIA_PLAY_PAUSE
Medya oynatma Giriş: Kısa basın
Çıkış: Oynatma veya duraklatma
Giriş: Uzun basın
Çıkış: Sesli komutu başlatma
Gönderir: Cihaz kilitliyse veya ekranı kapalıysa android.speech.action.VOICE_SEARCH_HANDS_FREE. Aksi takdirde android.speech.RecognizerIntent.ACTION_WEB_SEARCH gönderir.
Gelen arama Giriş: Kısa basın
Çıkış: Aramayı kabul etme
Giriş: Uzun basın
Çıkış: Aramayı reddetme
Devam eden arama Giriş: Kısa basın
Çıkış: Görüşmeyi sonlandırma
Giriş: Uzun basın
Çıkış: Mikrofonun sesini kapatma veya açma
B HID kullanım sayfası: 0x0C
HID kullanımı: 0x0E9
Çekirdek anahtarı: KEY_VOLUMEUP
Android anahtarı: VOLUME_UP
Medya oynatma, Devam eden arama Giriş: Kısa veya uzun basın
Çıkış: Sistem veya kulaklık sesini yükseltir.
C HID kullanım sayfası: 0x0C
HID kullanımı: 0x0EA
Çekirdek anahtarı: KEY_VOLUMEDOWN
Android anahtarı: VOLUME_DOWN
Medya oynatma, Devam eden arama Giriş: Kısa veya uzun basın
Çıkış: Sistem veya kulaklık sesini azaltır.
D HID kullanım sayfası: 0x0C
HID kullanımı: 0x0CF
Çekirdek anahtarı: KEY_VOICECOMMAND
Android anahtarı: KEYCODE_VOICE_ASSIST
Tümü'ne dokunun. Herhangi bir örnekte tetiklenebilir. Giriş: Kısa veya uzun basın
Çıkış: Sesli komutu başlatma
  • [7.8.2.2/H-1-2] Bağlantı noktası takıldığında, ancak bağlı terminalin türünü belirlemek için USB ses arayüzleri ve uç noktaları düzgün şekilde numaralandırıldıktan sonra ACTION_HEADSET_PLUG tetiklenmelidir.

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

  • [7.8.2.2/H-2-1] ACTION_HEADSET_PLUG Ekstra "microphone" değeri 0 olarak ayarlanmış Intent yayınlanmalıdır.

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

  • [7.8.2.2/H-3-1] ACTION_HEADSET_PLUG Intent'i, "microphone" ekstrası 1 olarak ayarlanmış şekilde YAYINLAMALIDIR.

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ünde ve isSink() rolünde bir cihaz LİSTELEMEK ZORUNDADIR.

  • [7.8.2.2/H-4-2] USB ses terminali türü alanı 0x0402 ise AudioDeviceInfo.TYPE_USB_HEADSET türünde ve isSink() rolünde bir cihaz LİSTELENMELİDİR.

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

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

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

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

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

  • [7.8.2.2/H-SR-1] USB tanımlayıcılarının numaralandırılması, terminal türlerinin tanımlanması ve ACTION_HEADSET_PLUG Intent'in 1.000 milisaniyeden kısa sürede yayınlanması için USB-C ses çevre birimi bağlandığında ŞİDDETLE TAVSİYE EDİLİR.

android.hardware.audio.output ve android.hardware.microphone bildiren elde taşınır cihaz uygulamaları için 5.6 bölümündeki RTL ve TTL şartlarına bakın.

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

Elde taşınabilir cihaz uygulamaları en az bir genel amaçlı 7.10 doğrusal rezonans aktüatörü içeriyorsa:

  • [7.10/H] Aktüatörün yerleştirilmesi, cihazın genellikle elle tutulduğu veya dokunulduğu yerin yakınına yerleştirilmelidir.

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

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

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

Eldeki cihaz uygulamaları, dokunsal sabitler eşlemesini takip ediyorsa:

2.2.2. Multimedya

El cihazı uygulamaları, aşağıdaki ses kodlama ve kod çözme biçimlerini DESTEKLEMELİ 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 (geliştirilmiş düşük gecikmeli AAC)

Android 17'de eklenen şartların başlangıcı

  • [5.1/H-0-6] MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC)

El cihazı uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamalarına sunmalıdır:

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

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

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

2.2.3. Yazılım

El cihazı uygulamaları:

Android 17'de şartların başlangıcı değişti

  • [3.2.3.1/H-0-2] MUST preload one or more applications or service components with an intent handler, for all the public intent filter patterns defined by the following application intents listed here.

  • [3.2.3.1/H-SR-1] E-posta gönderme amaçlı ACTION_SENDTO veya ACTION_SEND ya da ACTION_SEND_MULTIPLE intent'lerini işleyebilen bir e-posta uygulamasının önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.

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

  • [3.4.2/H-0-1] Genel kullanıcı web'de gezinmesi için bağımsız bir Tarayıcı uygulaması İÇERMELİDİR.

  • Android 17'de eklenen şartların başlangıcı

    • [3.8.1/H-0-1] Widget'ların uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı uygulanmalıdır.

    • [3.8.1/H-SR-1] Kısayolların, widget'ların ve widgetFeatures öğelerinin uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    • [3.8.1/H-SR-2] Üçüncü taraf uygulamalarının ShortcutManager API'si aracılığıyla sağladığı ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    • [3.8.1/H-SR-3] Uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması eklemeniz ŞİDDETLE TAVSİYE EDİLİR.

    Android 17'de şartların başlangıcı değişti

    • [3.8.2/H-SR-1] Üçüncü taraf uygulama widget'larını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.

    • [3.8.2/H-0-1] Üçüncü taraf uygulama widget'ları DESTEKLENMELİDİR.

    • [3.8.3/H-0-1] Üçüncü taraf uygulamaların, Notification ve NotificationManager API sınıfları aracılığıyla kullanıcıları önemli etkinliklerden haberdar etmesine İZİN VERİLMELİDİR.

    • [3.8.3/H-0-2] Zengin bildirimleri desteklemelidir.

    • [3.8.3/H-0-3] Anlık bildirimler desteklenmelidir.

    • [3.8.3/H-0-4] Kullanıcıya, AOSP'de uygulandığı gibi işlem düğmeleri veya kontrol paneli gibi kullanıcı arayüzü aracılığıyla bildirimleri doğrudan kontrol etme (ör. yanıtlama, erteleme, kapatma, engelleme) olanağı sağlayan bir bildirim gölgesi İÇERMELİDİR.

    • [3.8.3/H-0-5] RemoteInput.Builder setChoices() aracılığıyla sağlanan seçenekler bildirim gölgesinde GÖSTERİLMELİDİR.

    • [3.8.3/H-SR-1] RemoteInput.Builder setChoices() aracılığıyla sağlanan ilk seçeneğin bildirim gölgesinde ek kullanıcı etkileşimi olmadan gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [3.8.3/H-SR-2] Kullanıcı, bildirim gölgesindeki tüm bildirimleri genişlettiğinde RemoteInput.Builder setChoices() aracılığıyla sağlanan tüm seçeneklerin bildirim gölgesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [3.8.3.1/H-SR-1] Notification.Remoteinput.Builder.setChoices tarafından gösterilen yanıtlara paralel olarak Notification.Action.Builder.setContextual değerinin true olarak ayarlandığı işlemlerin gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [3.8.4/H-SR-1] Yardımcı işlemi'ni gerçekleştirmek için cihazda bir asistan uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    El cihazı uygulamaları MediaStyle bildirimlerini destekliyorsa:

    Bir uygulamanın Canlı Güncelleme Bildirimi, uygulama tüm tanıtım özelliklerini karşıladığında tanıtılabilir. Bu tür bildirimler, bu belgede Tanıtılan Anlık Bilgilendirme Bildirimi olarak açıklanmaktadır. El cihazı uygulamaları, aşağıdaki koşullara uygun olarak Tanıtılan Canlı Güncelleme Bildirimi'ni belirgin bir şekilde göstermelidir.

    Elde taşınabilir cihaz uygulamaları API düzeyi 36.1 veya daha yüksek bir sürümü bildiriyorsa:

    • [3.8.3.1/H-0-1] Kilit ekranında belirgin bir yerde Öne Çıkan Canlı Güncelleme Bildirimi GÖSTERİLMELİDİR.

    • [3.8.3.1/H-0-12] Bildirim yığınında en üstte gösterilmelidir. Önemli Bildirim ve diğer bildirimler arasında Tanıtılan Canlı Güncelleme Bildirimi gösterildiğinde renklendirilmiş bildirimlerin üzerinde (burada setColorized, true'dır).

      • Birden fazla uygulama, Tanıtılan Canlı Güncelleme Bildirimi için uygun olduğunda, bildirim gölgesinde ve kilit ekranında gösterilen Tanıtılan Canlı Güncelleme Bildirimlerinin sıralama sırasını BELİRLEYEBİLİR.
    • [3.8.3.1/H-0-2] Genişletilmiş durumda bir Tanıtılan Canlı Haber Bildirimi GÖSTERİLMELİDİR.

    • [3.8.3.1/H-0-3] Yukarıdaki genişletilmiş bildirimi daraltmak için kullanıcıya olanak TANINMAMALIDIR.

    • [3.8.3.1/H-0-4] StyleSpan veya UnderlineSpan tarafından sağlanan, Promosyonlu Canlı Güncelleme Bildirimi'ndeki metin içeriğinin temel stilleri (kalın, italik ve altı çizili) GÖSTERİLMELİDİR.

    • [3.8.3.1/H-0-5] Bir Tanıtılan Canlı Güncelleme Bildirimi'nde, bildirim bunları içerse bile YALNIZCA standart işlem nesneleri (Notification.Action aracılığıyla) GÖSTERİLMELİ ve giriş kutuları, yanıt düğmeleri ve bağlama duyarlı işlemler gibi standart olmayan işlem nesneleri (addRemoteInput() ve setContextual() aracılığıyla) GİZLENMELİDİR.

    • [3.8.3.1/H-0-6] Notification.getSmallIcon() içermesi ZORUNLU olan bir Tanıtılan Canlı Güncelleme Bildirimi için SDK dokümanlarında Durum Çipi olarak da adlandırılan bir Kısa Gösterim göstermesi ZORUNLUDUR.

      • [3.8.3.1/H-0-7] Diğer alanlar, kompakt gösterim için isteğe bağlıdır ancak kompakt gösterim genişletilebildiğinde varsa Notification.getShortCriticalText(), yoksa Notification.when gösterilmelidir.Notification.getShortCriticalText

      • [3.8.3.1/H-0-8] Birden fazla Tanıtılan Canlı Güncelleme bildirimi olduğunda, durum çubuğunda bunlardan en az biri Kısa Gösterim olarak GÖSTERİLMELİDİR.

      • [3.8.3.1/H-0-9] Kullanıcı, Compact Representation'a dokunduğunda ilişkili bildirimi göstermeli (tercih edilen) veya ilişkili uygulamayı (Notification.contentIntent aracılığıyla) açmalıdır.

      • [3.8.3.1/H-0-13] İlişkili bildirimde, bildirim gölgesinde bulunan içerikle aynı içerik gösterilmelidir.

    • [3.8.3.1/H-0-10] Tek tek uygulama bildirimlerinin tanıtım amaçlı gösterimini devre dışı bırakmak ve etkinleştirmek için kullanıcıya bir olanak SUNULMALIDIR.

    • [3.8.3.1/H-0-11] Tanıtım özelliklerini karşılamayan veya yalnızca kısmen karşılayan, tanıtımı yapılmayan Canlı Güncelleme Bildirimleri dahil ancak bunlarla sınırlı olmamak üzere tüm Canlı Güncelleme Bildirimleri doğru şekilde oluşturulmalıdır. Bu tür tanıtımı yapılmayan bildirimler, tanıtımı yapılmayan bir durumda gösterİLMELİDİR.

    7.2.3 bölümünde ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi gezinme 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ştirmek/devre dışı bırakmak için bir ayarlar menüsü sunmalıdır.

    El cihazı uygulamaları Asistan işlemini destekliyorsa:

    • [3.8.4/H-SR-2] HOME tuşuna uzun basma işleminin, bölüm 7.2.3'te açıklandığı gibi asistan uygulamasını başlatmak için belirlenen etkileşim olarak kullanılması ŞİDDETLE TAVSİYE EDİLİR. Kullanıcı tarafından seçilen asistan uygulamasını BAŞLATMALIDIR. Diğer bir deyişle, VoiceInteractionService uygulayan uygulamayı veya ACTION_ASSIST intentini işleyen bir etkinliği başlatmalıdır.

    El cihazı uygulamaları conversation notifications özelliğini destekliyorsa ve bunları uyarı ve sessiz olmayan ileti dizisi bildirimlerinden ayrı bir bölümde gruplandırıyorsa:

    • [3.8.4/H-1-1]* Devam eden ön plan hizmeti bildirimleri ve importance:high bildirimleri hariç olmak üzere, görüşme bildirimleri görüşme dışı bildirimlerden önce GÖSTERİLMELİDİR.

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

    • [3.8.10/H-1-1] Medya Bildirimi Şablonu da dahil olmak üzere 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 cihaz yönetimi politikalarının tamamı UYGULANMALIDIR.

    El cihazı uygulamaları ControlsProviderService ve Control API'lerini destekliyorsa ve üçüncü taraf uygulamalarının cihaz denetimleri yayınlamasına izin veriyorsa:

    • [3.8.16/H-1-1] android.software.controls özellik bayrağını TANIMLAMALI 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 denetimlerden kullanıcının favori cihaz denetimlerini ekleme, düzenleme, seçme ve çalıştırma olanağı sunan bir kullanıcı arayüzü sağlaması ZORUNLUDUR.

    • [3.8.16/H-1-3] Varsayılan bir Başlatıcı'dan itibaren üç etkileşim içinde bu kullanıcı uygunluğuna erişim SAĞLANMALIDIR.

    • [3.8.16/H-1-4] ControlsProviderService API'si aracılığıyla kontroller sağlayan her üçüncü taraf uygulamasının adını ve simgesini, Control API'leri tarafından sağlanan belirtilen alanlarla birlikte bu kullanıcı kolaylığında DOĞRU şekilde oluşturmalıdır.

    • [3.8.16/H-1-5] ControlsProviderService ve Control Control.isAuthRequired API'si aracılığıyla üçüncü taraf uygulamaları tarafından kaydedilen denetimlerden, uygulamaya özel kimlik doğrulama gerektirmeyen cihaz denetimlerini devre dışı bırakmak için kullanıcıya bir olanak SAĞLANMALIDIR.

    • [3.8.16/H-1-6] Cihaz uygulamaları, kullanıcıya sunulan özelliği aşağıdaki şekilde doğru şekilde oluşturmalıdır:

      • Cihazda config_supportsMultiWindow=true ayarlanmışsa ve uygulama, geçerli bir etkinliğin ComponentName'i (API tarafından tanımlandığı şekilde) dahil olmak üzere ControlsProviderService bildiriminde META_DATA_PANEL_ACTIVITY meta verilerini bildiriyorsa uygulama, söz konusu etkinliği bu kullanıcı kolaylığına yerleştirmelidir.
      • Uygulama meta veri META_DATA_PANEL_ACTIVITY beyan etmiyorsa ControlsProviderService API'si tarafından sağlanan belirtilen alanların yanı sıra Control API'leri tarafından sağlanan belirtilen alanları da oluşturmalıdır.
    • [3.8.16/H-1-7] Uygulama, meta verileri META_DATA_PANEL_ACTIVITY olarak bildiriyorsa yerleştirilmiş etkinliği başlatırken EXTRA_LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS kullanılarak [3.8.16/H-1-5] bölümünde tanımlanan ayarı GEÇMELİDİR.

    Aksine, el cihazı uygulamaları bu tür kontrolleri uygulamıyorsa:

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

    • [3.8.17/H-1-1] Verilerin panoya kopyalandığına dair kullanıcıya onay BİLGİSİ sunULMALIDIR (ör. "İçerik kopyalandı" şeklinde bir küçük resim veya uyarı). Ayrıca, pano verilerinin cihazlar arasında senkronize edilip edilmeyeceğini de belirtin.

    El 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 sunulan Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [3.11/H-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.

    • [3.11/H-SR-1] Cihazda kullanılabilen dilleri destekleyen bir metin okuma motoru içermeleri ŞİDDETLE TAVSİYE EDİLİR.

    • [3.13/H-SR-1] HIZLI AYARLAR kullanıcı arayüzü bileşeni eklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    Android avuç içi cihaz uygulamaları FEATURE_BLUETOOTH veya FEATURE_WIFI desteği beyan ediyorsa:

    • [3.16/H-1-1] Yardımcı cihaz eşleştirme özelliği DESTEKLENMELİDİR.

    Gezinme işlevi ekranda hareket tabanlı bir işlem olarak sağlanıyorsa:

    Android 17'de eklenen şartların başlangıcı

    El cihazı uygulamaları:

    • [3.20.1/H-0-1] Tüm Asistan Ses Akışı koşulları uygulanmalıdır.

    • [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üksekliğinde OLMALIDIR.

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

    • [7.2.3/H-0-1] Gezinme işlevinin hareket alanı her iki tarafta da 40 dp'den daha az genişliğe SAHİP OLMALIDIR. Hareket alanı varsayılan olarak 24 dp genişliğinde OLMALIDIR.

    El cihazı uygulamaları güvenli bir kilit ekranını destekliyorsa ve çekirdek ile kullanıcı alanı için 2 GB veya daha fazla kullanılabilir belleğe sahipse:

    • [3.9/H-1-2] Yönetilen profillerin desteği, android.software.managed_users özellik işaretiyle BEYAN EDİLMELİDİR.

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

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

    Android 17'de kaldırılan şartların başlangıcı

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

    2.2.4. Performans ve Güç

    • [8.1/H-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.

    • [8.1/H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları,Android Uyumluluk Test Paketi (CTS) tarafından tanımlanan 10.000 liste girişinden oluşan bir listeyi 36 saniyeden kısa bir sürede kaydırarak düşük gecikmeli kullanıcı deneyimi sağlamalıdır.

    • [8.1/H-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, başlatılmış ve zaten çalışmakta olan bir uygulamanın yeniden başlatılması 1 saniyeden kısa sürmelidir.

    El cihazı uygulamaları:

    • [8.2/H-0-1] En az 5 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.

    • [8.2/H-0-2] En az 0,5 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.

    • [8.2/H-0-3] En az 15 MB/sn sıralı okuma performansı SAĞLANMALIDIR.

    • [8.2/H-0-4] En az 3,5 MB/sn rastgele okuma performansı SAĞLANMALIDIR.

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

    • [8.3/H-1-1] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.

    • [8.3/H-1-2] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcıya olanak TANINMALIDIR.

    El cihazı uygulamaları:

    • [8.4/H-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her bir donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.

    • [8.4/H-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.

    • [8.4/H-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.

    • [8.4/H-0-4] Bu güç kullanımını, uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla KULLANIMA SUNMALIDIR.

    • [8.4/H] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.

    Elde taşınabilir cihaz uygulamalarında ekran veya video çıkışı varsa:

    El cihazı uygulamaları:

    • [8.5/H-0-1] SDK belgesinde açıklandığı gibi, her bir hizmetin başlangıcından itibaren süresi de dahil olmak üzere etkin ön plan hizmetleri veya kullanıcı tarafından başlatılan işler içeren tüm uygulamaları görmek için kullanıcıya bir olanak SAĞLANMALIDIR.

    • [8.5/H-0-2]Ön plan hizmeti veya kullanıcı tarafından başlatılan bir işi çalıştıran uygulamayı durdurmak için kullanıcıya bir olanak SUNULMALIDIR.

    2.2.5. Güvenlik Modeli

    El cihazı uygulamaları:

    • [9/H-0-1] android.hardware.security.model.compatible özelliğini BİLDİRMELİDİR.

    • [9.1/H-0-1] Üçüncü taraf uygulamalarının android.permission.PACKAGE_USAGE_STATS izniyle kullanım istatistiklerine erişmesine İZİN VERİLMELİ ve android.settings.ACTION_USAGE_ACCESS_SETTINGS niyeti doğrultusunda bu tür uygulamalara erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma sağlanmalıdır.

    El cihazı uygulamaları, VoiceInteractionService desteklemek için varsayılan bir uygulama içeriyorsa:

    • [9.1/H-0-2] Bu uygulama için varsayılan olarak ACCESS_FINE_LOCATION izni VERİLMEMELİDİR.

    Cihaz uygulamaları android.software.credentials desteğini BEYAN ETMELİDİR ve:

    • [9/H-0-2] Kimlik Bilgisi Yöneticisi için tercih edilen sağlayıcının seçilmesine izin vermek amacıyla android.settings.CREDENTIAL_PROVIDER amacı göz önünde bulundurulmalıdır. Bu sağlayıcı, otomatik doldurma için etkinleştirilir ve Kimlik Bilgisi Yöneticisi aracılığıyla girilen yeni kimlik bilgilerini kaydetmek için varsayılan konum olarak da kullanılır.

    • [9/H-0-3] En az 2 eşzamanlı kimlik bilgisi sağlayıcıyı desteklemeli ve sağlayıcıları etkinleştirmek veya devre dışı bırakmak için Ayarlar uygulamasında kullanıcıya yönelik bir özellik sunmalıdır.

    • [9.5/H-1-1] Android 16'da koşul kaldırıldı.

    El cihazı uygulamaları:

    • [9.11/H-0-2] Anahtar deposu uygulaması, erişime kapalı bir yürütme ortamıyla desteklenmelidir.

    • [9.11/H-0-3] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA-1 ve SHA-2 ailesi karma oluşturma işlevlerinin uygulamaları OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere erişime kapalı ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.

    • [9.11/H-0-4] Kilit ekranı kimlik doğrulaması, izole yürütme ortamında ve yalnızca başarılı olduğunda gerçekleştirilmelidir. Bu durumda, kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.

    • [9.11/H-0-5] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının kalıcı cihaz tanımlayıcıları olarak kullanılması ENGELLENMELİDİR.

    Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf olduğunu unutmayın. Ancak bu cihaz, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmediği sürece bu muafiyet geçerlidir.

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

    • [9.11/H-1-1] Kilitli olmayan durumdan kilitli duruma geçiş süresi olan en kısa uyku zaman aşımını (15 saniye veya daha kısa) seçmesine İZİN VERİLMELİDİR.

    • [9.11/H-1-2] Bildirimleri gizlemek ve 9.11.1 Güvenli Kilit Ekranı'nda açıklanan birincil kimlik doğrulama dışında tüm kimlik doğrulama biçimlerini devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR. AOSP, tam gizlilik modu koşulunu karşılar.

    Android 17'de şartların başlangıcı değişti

    Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentServiceSystem API'yi uygulayan bir veya daha fazla güven aracısı varsa:

    • [9.11.1/H-1-1] Kullanıcıya, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen veya şifre) biriyle 72 saatte birden daha sık meydan OKUMALIDIR.

    Elde taşınabilir cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService.grantTrust() System API'yi FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE işaretiyle çağıran bir veya daha fazla güven aracı içeriyorsa:

    • [9.11.1/H-1-1] Aşağıdaki durumlardan sonra TrustManagerService.revokeTrust() numarası ARANMALIDIR:
      • Güven verildikten sonra en fazla 24 saat.
      • 8 saatlik boşta kalma süresi.

    Elde taşınabilir cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini bildirmezse:

    • [9.5/H-2-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlı bir şekilde oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.

    El cihazı uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik bayrağını tanımlıyorsa:

    • [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 denetim uygulamasıyla UYUMLU OLMALIDIR.

    • [9.5/H-4-1] Android 16'da şart kaldırıldı.

    • [9.5/H-4-2] Android 16'da şart kaldırıldı.

    Kısıtlı ayarlar

    Kısıtlı Ayarlar, kullanıcıya görünür uyarılar gösterir ve şu uygulamalar için izin vermek üzere kullanıcı onayı ister:

    • PackageManager tarafından PACKAGE_DOWNLOADED_FILE olarak tanımlanan bir "uygulama mağazası" uygulaması dışında bir uygulama (ör. mesajlaşma uygulaması veya tarayıcı) aracılığıyla indirildikten sonra yüklenmesi.

    • Yerel bir dosyadan yükleniyor (örneğin, uygulama yan yüklenmiştir) PackageManager tarafından PACKAGE_SOURCE_LOCAL_FILE olarak tanımlanıyor.

    Aşağıdaki [9.8/H-0-5] bölümünde listelenen Zorunlu İzinler ve ilişkili tanımlayıcılar için.

    Bu tür uygulamalar, bu bölümde listelenen şartlar için "Kapsamdaki Uygulamalar" olarak etiketlenir.

    Cihaz uygulamaları:

    • [9.8/H-0-1] Aşağıdakiler için yukarıda belirtildiği şekilde Kısıtlanmış Ayarlar uygulanmalıdır:

      • Özel izinler

        • Erişilebilirlik (AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE)
        • Bildirim dinleyici (AppOpsManager.OPSTR_ACCESS_NOTIFICATIONS)
        • Cihaz yönetimi uygulamaları (Manifest.permission.BIND_DEVICE_ADMIN)
        • Diğer uygulamaların üzerinde göster (AppOpsManager.OPSTR_SYSTEM_ALERT_WINDOW)
        • Kullanım erişimi (AppOpsManager.OPSTR_GET_USAGE_STATS)
      • Roller (Varsayılan uygulamalar)

        • Dialer (RoleManager.ROLE_DIALER)
        • SMS (RoleManager.ROLE_SMS)
      • Çalışma zamanı izinleri

        • SMS çalışma süresi (Manifest.permission_group.SMS)
    • [9.8/H-0-2] Kısıtlanmış Ayarlar varsayılan olarak ETKİNLEŞTİRİLMELİDİR ve kullanıcının Kısıtlanmış Ayarlar'ı tüm uygulamalar için devre dışı bırakmasına olanak tanıyan herhangi bir kullanıcı işlevi OLMAMASI ŞİDDETLE TAVSİYE EDİLİR.

    • [9.8/H-0-3] Zorunlu Kılınan İzinler'den herhangi biri verilmeden önce her Kapsam Dahilindeki Uygulama için kullanıcı onayı alınmalıdır.

    • [9.8/H-0-4] Kısıtlanmış ayarların etkinleştirilmesi için kullanıcı onayının yalnızca EnhancedConfirmationManager API kullanılarak Kapsamdaki Uygulama'nın AppInfo sayfasından alınmasına İZİN VERİLMELİDİR.

    • [9.8/H-0-5] Kısıtlanmış bir ayar olup olmadığını dinamik olarak belirlemek için tüm özel izinler için EnhancedConfirmationManager ile entegrasyon yapılması ve bu işlevin çağrılması ŞİDDETLE TAVSİYE EDİLİR.

      • Alarmlar ve hatırlatıcılar: AppOpsManager.OPSTR_SCHEDULE_EXACT_ALARM
      • Tüm dosyalara erişim: AppOpsManager.OPSTR_MANAGE_EXTERNAL_STORAGE
      • Diğer uygulamaların üzerinde göster: AppOpsManager.OPSTR_SYSTEM_ALERT_WINDOW
      • Bilinmeyen uygulamaları yükleme: AppOpsManager.OPSTR_REQUEST_INSTALL_PACKAGES
      • Medya yönetimi: AppOpsManager.OPSTR_MANAGE_MEDIA
      • Sistem ayarlarını değiştirme: AppOpsManager.OPSTR_WRITE_SETTINGS
      • Pencere içinde pencere: AppOpsManager.OPSTR_PICTURE_IN_PICTURE
      • Ekranı açma: AppOpsManager.OPSTR_TURN_SCREEN_ON
      • Tam ekran bildirimler: AppOpsManager.OPSTR_USE_FULL_SCREEN_INTENT
      • Wi-Fi kontrolü: AppOpsManager.OPSTR_CHANGE_WIFI_STATE
      • Erişilebilirlik: AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE
      • Bildirim dinleyici: AppOpsManager.OPSTR_ACCESS_NOTIFICATIONS
      • Kullanım erişimi: AppOpsManager.OPSTR_GET_USAGE_STATS
      • Cihaz yöneticisi: Manifest.permission.BIND_DEVICE_ADMIN
      • Rahatsız etmeyin: Manifest.permission.MANAGE_NOTIFICATIONS

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

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

    • [9.8/H-1-1] MUST, etkin kelime algılama hizmetinin yalnızca ContentCaptureService, SpeechRecognizer#createOnDeviceSpeechRecognizer() tarafından oluşturulan sistem veya cihaz üzerinde konuşma tanıma hizmetine veri iletebildiğinden emin olmalıdır.

    • [9.8/H-1-2] MUST make sure the hotword detection service can only transmit mic audio data or data derived from it to the system server through HotwordDetectionService API, or to ContentCaptureService through ContentCaptureManager API.

    • [9.8/H-1-3] MUST NOT supply mic audio that is longer than 30 seconds for an individual hardware-triggered request to the hotword detection service.

    • [9.8/H-1-4] Söylenen özel kelime algılama hizmetine yapılan tek bir istek için 8 saniyeden eski arabellekli mikrofon sesi sağlamAMALIDIR.

    • [9.8/H-1-5] Ses etkileşimi hizmetine veya benzer bir kuruluşa 30 saniyeden eski arabelleğe alınmış mikrofon sesi SAĞLANMAMALIDIR.

    • [9.8/H-1-6] Her başarılı anahtar kelime sonucu için anahtar kelime algılama hizmetinden 100 bayttan fazla veri (ses akışları hariç) iletilmesine İZİN VERİLMEMELİDİR.

    • [9.8/H-1-7] Her negatif telaffuz sonucu için telaffuz algılama hizmetinden 5 bit'ten fazla verinin iletilmesine İZİN VERİLMEMELİDİR.

    • [9.8/H-1-8] YALNIZCA sistem sunucusundan gelen bir anahtar kelime doğrulama isteğinde anahtar kelime algılama hizmetinden veri iletimine izin VERİLMELİDİR.

    • [9.8/H-1-9] Kullanıcı tarafından yüklenebilen bir uygulamanın, etkin kelime algılama hizmeti sağlamasına İZİN VERİLMEMELİDİR.

    • [9.8/H-1-10] Kullanıcı arayüzünde, hazır kelime algılama hizmetinin mikrofon kullanımına ilişkin nicel veriler GÖSTERİLMEMELİDİR.

    • [9.8/H-1-11] Güvenlik araştırmacılarının inceleyebilmesi için her iletimde yer alan bayt sayısını, etkin kelime algılama hizmetinden itibaren KAYDETMELİDİR.

    • [9.8/H-1-12] Güvenlik araştırmacılarının inceleyebilmesi için her iletimin ham içeriklerini kaydeden bir hata ayıklama modunu DESTEKLEMELİDİR.

    • [9.8/H-1-14] Bir başarılı anahtar kelime sonucu sesli etkileşim hizmetine veya benzer bir kuruluşa iletildiğinde, bölüm 9.8.2'de açıklandığı gibi mikrofon göstergesi GÖSTERİLMELİDİR.

    • [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 sesli etkileşim hizmetine tek yönlü olarak iletilmesini SAĞLAMALIDIR.

    • [9.8/H-SR-1] Bir uygulamayı tetikleyici kelime algılama hizmetinin sağlayıcısı olarak ayarlamadan önce kullanıcıları bilgilendirmek ŞİDDETLE TAVSİYE EDİLİR.

    • [9.8/H-SR-2] Yapılandırılmamış verilerin anahtar kelime algılama hizmeti dışına aktarılmasına izin verilmemesi ŞİDDETLE TAVSİYE EDİLİR.

    • [9.8/H-SR-3] Anahtar kelime algılama hizmetine ev sahipliği yapan işlemi en az saatte bir veya 30 donanım tetikleme olayında bir (hangisi önce gelirse) yeniden başlatmanız ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, System API'yi HotwordDetectionService kullanan veya mikrofon kullanımı belirtisi olmadan anahtar kelime algılama için benzer bir mekanizma içeren bir uygulama içeriyorsa uygulama:

    • [9.8/H-2-1] Desteklenen her etkin kelime öbeği için kullanıcıya açıkça bildirimde BULUNULMALIDIR.

    • [9.8/H-2-2] Anahtar kelime algılama hizmeti aracılığıyla ham ses verileri veya bunlardan elde edilen veriler SAKLANMAMALIDIR.

    • [9.8/H-2-3] ContentCaptureService veya cihaz üzerinde konuşma tanıma hizmeti dışında, etkin kelime algılama hizmetinden ses verileri, sesi (tamamen veya kısmen) yeniden oluşturmak için kullanılabilecek veriler ya da etkin kelimeyle ilgili olmayan ses içerikleri iletilmemelidir.

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

    • [9.8/H-3-1] Sorgu algılama hizmetinin yalnızca Sisteme, ContentCaptureService veya cihaz üzerinde konuşma tanıma hizmetine (SpeechRecognizer#createOnDeviceSpeechRecognizer() tarafından oluşturulur) veri iletebildiğinden EMİN OLMALIDIR.

    • [9.8/H-3-2] VisualQueryDetectionService dışına ContentCaptureService veya cihaz üzerindeki konuşma tanıma hizmeti hariç ses ya da video bilgilerinin iletilmesine İZİN VERİLMEMELİ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] Mikrofon göstergesi GÖSTERİLMELİ ve algılanan kullanıcı sorgusu, algılandıktan hemen sonra kullanıcı arayüzünde GÖSTERİLMELİDİR.

    • [9.8/H-3-5] Kullanıcı tarafından yüklenebilen bir uygulamanın görsel sorgu algılama hizmeti sağlamasına İZİN VERİLMEMELİDİR.

    Elde taşınabilir cihaz uygulamaları android.hardware.microphone'yı bildiriyorsa:

    • [9.8.2/H-4-1] Bir uygulama mikrofondaki ses verilerine erişirken mikrofon göstergesi GÖSTERİLMELİDİR. Ancak mikrofona yalnızca HotwordDetectionService, SOURCE_HOTWORD, ContentCaptureService veya CDD tanımlayıcısı [C-4-X] ile bölüm 9.1'de belirtilen rollere sahip uygulamalar erişirken mikrofon göstergesi GÖSTERİLMEMELİDİR.

    • [9.8.2/H-4-2] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen, mikrofon kullanan Son ve Etkin uygulamaların listesini, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERMELİDİR.

    • [9.8.2/H-4-3] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için mikrofon göstergesi gizlenmemelidir.

    • [9.8.2/H-4-4] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen, mikrofonu kullanan Son ve Etkin uygulamaların listesi, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERİLMELİDİR.

    Elde taşınabilir cihaz uygulamaları android.hardware.camera.any'yı bildiriyorsa:

    • [9.8.2/H-5-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesi GÖSTERİLMELİDİR ancak kamera yalnızca CDD tanımlayıcısı [C-4-X] ile bölüm 9.1'de belirtilen rollere sahip uygulamalar tarafından erişilirken GÖSTERİLMEMELİDİR.

    • [9.8.2/H-5-2] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen kamera kullanılarak Son ve Etkin uygulamalar, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERİLMELİDİR.

    • [9.8.2/H-5-3] Görünür kullanıcı arayüzlerine veya doğrudan kullanıcı etkileşimine sahip sistem uygulamaları için kamera göstergesi GİZLENMEMELİDİR.

    Android 17'de eklenen şartların başlangıcı

    Sistem uygulaması olmayan ve ön planda çalışan bir uygulama, cihazın tam konumuna eriştiğinde cihaz:

    • [9.8.8/H-6-1] Kullanıcı tarafından görülebilen bir gösterge GÖSTERİLMELİDİR.

    Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü sağlayan bir özelliktir. Cihaz uygulamaları bu özelliği destekliyorsa:

    • [9.10/H-1-1] Android başlatma sırası sırasında bağlanan tüm salt okunur bölümler DOĞRULANMALIDIR ve VBMeta özetinde bu doğrulanmış bölümlerin tümü hesaplamaya dahil edilmelidir.

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

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

    • [6.1/H-0-1]* Kabuk komutunu desteklemelidir: cmd testharness.

    El cihazı uygulamaları:

    • Perfetto

      • [6.1/H-0-2] MUST expose a /system/bin/perfetto binary to the shell user which cmdline complies with the perfetto documentation.

      • [6.1/H-0-3] Perfetto ikili programı, giriş olarak Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf yapılandırmasını KABUL ETMELİDİR.

      • [6.1/H-0-4] Perfetto ikili programı, çıkış olarak Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf izi YAZMALIDIR.

      • [6.1/H-0-5] MUST provide, through the perfetto binary, at least the data sources described in the perfetto documentation.

      • [6.1/H-0-6] Perfetto izleme arka plan programı varsayılan olarak etkinleştirilmelidir (sistem özelliği persist.traced.enable).

    2.2.7. Elde Taşınabilir Medya Performansı Sınıfı

    CDD 17: 2.2.7 MPC bölümündeki değişiklikler

    Medya Performansı sınıfı şartları yapısında önemli değişiklikler yaptık. API 37'den itibaren 1, 10, 20 ve 37 numaralı yeni seviyeler ekledik. Ayrıca, MPC düzeyine göre ölçülen her koşulu ayrıntılı olarak açıklayan bir Medya Performansı Sınıfı Ölçümleri sayfası'na başvurarak koşul karmaşıklığını da azalttık.

    Medya performansı sınıfının tanımı ve tüm ölçümler için Medya Performansı Sınıfı Tanımı hakkında bilgi edinmek için 7.11. bölümü inceleyin.

    2.2.7.1. Medya

    El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

    • Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen Android 17 CDD bölüm 2.2.7.1'de listelenen tüm medya koşullarını karşılamalıdır.

    • [5.1/H-1-1] Cihazın beyan edilen Medya Performansı Sınıfı Düzeyi'ne karşılık gelen CodecCapabilities.getMaxSupportedInstances() ve VideoCapabilities.getSupportedPerformancePoints() yöntemleriyle herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek maksimum donanım video kod çözücü oturumu sayısını REKLAMDA BELİRTMEK ZORUNDADIR.

    • [5.1/H-1-2] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen eşzamanlı örnekler ve kare düşmeleriyle birlikte donanım video kod çözücü oturumlarını (AVC, HEVC, VP9, AV1 veya daha yeni) DESTEKLEMELİDİR.

    • [5.1/H-1-3] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen CodecCapabilities.getMaxSupportedInstances() ve VideoCapabilities.getSupportedPerformancePoints() yöntemleriyle herhangi bir codec kombinasyonunda eşzamanlı olarak çalıştırılabilecek maksimum donanım video kodlayıcı oturumu sayısını REKLAMDA BELİRTMEK ZORUNDADIR.

    • [5.1/H-1-4] Donanım video kodlayıcı oturumları (AVC, HEVC, VP9, AV1 veya daha yeni), eşzamanlı örnekler ve cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen kare düşürme işlemlerini desteklemelidir.

    • [5.1/H-1-5] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen CodecCapabilities.getMaxSupportedInstances() ve VideoCapabilities.getSupportedPerformancePoints() yöntemleriyle herhangi bir codec kombinasyonunda eşzamanlı donanım video kodlayıcı ve kod çözücü oturumlarının maksimum sayısını REKLAMINI YAPMALIDIR.

    • [5.1/H-1-6] MUST support hardware video decoder and hardware video encoder sessions (AVC, HEVC, VP9, AV1, or later), concurrent instances and frame drops corresponding to the device's declared Media Performance Class Level.

    • [5.1/H-1-7] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen yük altındayken tüm donanım video kodlayıcılar için 1080p veya daha küçük bir video kodlama oturumunda codec başlatma gecikmesi OLMALIDIR.

    • [5.1/H-1-8] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen yük altındayken tüm ses kodlayıcılar için 128 kb/sn veya daha düşük bit hızlı ses kodlama oturumunda bir codec başlatma gecikmesi OLMALIDIR.

    • [5.1/H-1-9] Güvenli donanım video kod çözücü oturumlarının (AVC, HEVC, VP9, AV1 veya daha yeni) 2 örneğini ve cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen kare düşmelerini DESTEKLEMELİDİR.

    • [5.1/H-1-10] 1 güvenli donanım video kod çözücü oturumuyla birlikte 3 güvenli olmayan donanım video kod çözücü oturumunu (toplam 4 oturum) (AVC, HEVC, VP9, AV1 veya daha yeni), çözünürlükleri ve cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen kare düşmelerini DESTEKLEMELİDİR.

    • [5.1/H-1-11] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen her donanım AVC, HEVC, VP9 veya AV1 kod çözücüsü için güvenli bir kod çözücü desteklenmelidir.

    • [5.1/H-1-12] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen yük altındayken tüm donanım video kod çözücüler için 1080p veya daha küçük bir video kod çözme oturumunda codec başlatma gecikmesi OLMALIDIR.

    • [5.1/H-1-13] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen yük altındayken tüm ses kod çözücüler için 128 kb/sn veya daha düşük bit hızlı ses kod çözme oturumunda bir codec başlatma gecikmesi OLMALIDIR.

    • [5.1/H-1-14] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen AV1 donanım kod çözücü profilini, özelliğini ve görüntüleme yöntemini DESTEKLEMELİDİR.

    • [5.1/H-1-15] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen, 4K60'ı destekleyen en az 1 donanım video kod çözücüsü OLMALIDIR.

    • [5.1/H-1-16] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen, 4K60'ı destekleyen en az 1 donanım video kodlayıcıya SAHİP OLMALIDIR.

    • [5.1/H-1-17] Cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen AVIF Baseline Profilini destekleyen en az 1 donanım görüntü kod çözücüsü OLMALIDIR.

    • [5.1/H-1-18] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen bit hızı, saniyedeki kare sayısı ve çözünürlük şartlarını karşılayan AV1 kodlayıcıyı DESTEKLEMELİDİR.

    • [5.1/H-1-19] 10 bit (HDR) donanım video kod çözücüsünün ve donanım video kodlayıcı oturumlarının (AVC, HEVC, VP9, AV1 veya daha yeni), cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen çözünürlüğün ve kare düşmelerinin 3 örneğini desteklemelidir.

    • [5.1/H-1-20] Cihazda bulunan tüm donanım AV1 ve HEVC kodlayıcılar için cihazın beyan edilen Feature_HdrEditing Medya Performans Sınıfı Düzeyi'ne karşılık gelen Feature_HdrEditing özelliğini desteklemelidir.

    • [5.1/H-1-21] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen tüm donanım video kod çözücüleri (AVC, HEVC, VP9, AV1 veya daha yeni) için FEATURE_DynamicColorAspect desteklenmelidir.

    • [5.1/H-1-22] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen dikey en boy oranında video içeriğinin kodlanması, kodunun çözülmesi, GPU ile düzenlenmesi ve görüntülenmesi ZORUNLU olarak desteklenmelidir.

    • [5.2/H-2-1] Cihaz uygulaması donanım AVC veya HEVC kodlayıcılarını destekliyorsa cihazın beyan edilen Medya Performans Sınıfı Seviyesi'ne karşılık gelen, bu codec'ler için video kodlayıcı hız-bozulma eğrileri tarafından tanımlanan minimum kalite hedefini karşılaması ZORUNLUDUR.

    Android 17'de eklenen şartların başlangıcı

    Android 17'de eklenen şartların başlangıcı

    2.2.7.2. Kamera

    El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

    El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

    Android 17'de eklenen şartların başlangıcı

    2.2.7.3. Donanım

    Android 17'de eklenen şartların başlangıcı

    Elde taşınabilir cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için 20 döndürürse:

    • [7.1.1.1/H-1-1] En az 1080p ekran çözünürlüğüne SAHİP OLMALIDIR.
    • [7.1.1.3/H-1-1] En az 400 dpi ekran yoğunluğuna SAHİP OLMALIDIR.
    • [7.6/H-1-1] android.app.ActivityManager.MemoryInfo tarafından bildirildiği üzere çekirdeğin kullanabileceği en az 5,12 GiB alan OLMALIDIR.

    El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

    El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

    • [7.1.1.1/H-1-1] Bu öğe kasıtlı olarak atlanmıştır.

    • [7.1.1.1/H-2-1] Cihazın Medya Performans Sınıfı Seviyesi'ne uygun ekran çözünürlüğüne SAHİP OLMALIDIR.

    • [7.1.1.3/H-1-1] Bu öğe kasıtlı olarak atlanmıştır.

    • [7.1.1.3/H-2-1] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen bir ekran yoğunluğuna SAHİP OLMALIDIR.

    • [7.1.1.3/H-3-1] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen HDR ekran gereksinimlerini DESTEKLEMELİDİR.

    • [7.6.1/H-1-1] Bu öğe kasıtlı olarak atlanmıştır.

    • [7.6.1/H-2-1] Cihazın beyan edilen Medya Performans Sınıfı Düzeyi'ne karşılık gelen bellek koşullarını KARŞILAMALIDIR.

    2.2.7.4. Performans

    El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

    El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

    2.2.7.5. Grafik

    El cihazı uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

    2.3. Televizyon Gereksinimleri

    Android TV cihazı, yaklaşık üç metre uzakta oturan kullanıcıların dijital medya, film, oyun, uygulama ve/veya canlı TV içeriklerini tüketebileceği bir eğlence arayüzü olan Android cihaz uygulamasıdır ("arkaya yaslanma" veya "3 metrelik kullanıcı arayüzü").

    Android cihaz uygulamaları, aşağıdaki ö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 etme mekanizması sağlamış olmalıdır.
    • Çapraz uzunluğu 24 inçten büyük olan yerleşik bir ekranı olmalı VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası ya da ekran için kablosuz bir bağlantı noktası içermelidir.

    Bu bölümün geri kalanındaki ek koşullar, Android TV cihaz uygulamalarına özeldir.

    2.3.1. Donanım

    Televizyon cihazı uygulamaları:

    • [7.2.2/T-0-1] D-pad desteklenmelidir.
    • [7.2.3/T-0-1] Ana Sayfa ve Geri işlevleri SAĞLANMALIDIR.
    • [7.2.3/T-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliği, ön plandaki uygulamaya GÖNDERİLMELİDİR.
    • [7.2.6.1/T-0-1] Oyun kumandası desteği içermeli ve android.hardware.gamepad özellik işaretini bildirmelidir.
    • [7.2.7/T] Kullanıcıların dokunmadan gezinme ve temel gezinme tuşları girişlerine erişebileceği bir uzaktan kumanda SAĞLANMALIDIR.

    Televizyon cihaz uygulamaları 3 eksenli bir jiroskop içeriyorsa:

    • [7.3.4/T-1-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.
    • [7.3.4/T-1-2] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.

    Televizyon cihazı uygulamaları:

    • [7.4.3/T-0-1] MUST support Bluetooth and Bluetooth LE.
    • [7.6.1/T-0-1] Uygulama özel verileri için en az 4 GB kalıcı depolama alanı (diğer adıyla "/data" bölümü) OLMALIDIR.

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

    • [7.5.3/T-1-1] Bu USB bağlantı noktası üzerinden bağlanan ancak her zaman bağlı olması gerekmeyen harici bir kamera için destek İÇERMELİDİR.

    TV cihazı uygulamaları 32 bit ise:

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

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

    TV cihazı uygulamaları 64 bit ise:

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

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

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

    Televizyon cihazı uygulamaları:

    • [7.8.1/T] Mikrofon içermelidir.
    • [7.8.2/T-0-1] Ses çıkışı OLMALI ve beyan etmelidir android.hardware.audio.output.

    2.3.2. Multimedya

    Televizyon cihazı uygulamaları, aşağıdaki ses kodlama ve kod çözme biçimlerini DESTEKLEMELİ 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 (gelişmiş düşük gecikmeli AAC)

    Android 17'de eklenen şartların başlangıcı

    • [5.1/T-0-4] MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC)

    Televizyon cihaz uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamaların kullanımına sunmalıdır:

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

    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ı desteklemesi ŞİDDETLE TAVSİYE EDİLİR.

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

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

    • [5.3.1/T-1-1] Saniyede 29,97 kare hızında, Main Profile High Level ile HD 1080p.
    • [5.3.1/T-1-2] Saniyede 59,94 kare hızında HD 1080i Main Profile High Level ile. İç içe geçmiş MPEG-2 videoların çözünürlüğünü mutlaka iyileştirmeli ve bu videoları üçüncü taraf uygulamalara sunmalıdır.

    Televizyon cihazı uygulamaları, Bölüm 5.3.4'te ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde H.264 kod çözme işlemini desteklemelidir:

    • [5.3.4/T-1-1] Baseline Profili ile saniyede 60 kare hızında HD 1080p
    • [5.3.4/T-1-2] Main Profile ile saniyede 60 kare hızında HD 1080p
    • [5.3.4/T-1-3] High Profile Level 4.2 ile saniyede 60 kare hızında HD 1080p

    H.265 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.5'te ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde H.265 kod çözmeyi DESTEKLEMELİDİR:

    • [5.3.5/T-1-1] Main Profile Level 4.1 ile saniyede 60 kare hızında HD 1080p

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

    • [5.3.5/T-2-1] Main10 Seviye 5 Main Tier profiliyle saniyede 60 kare hızında UHD kod çözme profilini DESTEKLEMELİDİR.

    Televizyon cihaz uygulamaları, Bölüm 5.3.6'da ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde VP8 kod çözme işlemini DESTEKLEMELİDİR:

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

    VP9 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.7'de ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde VP9 kod çözmeyi DESTEKLEMELİDİR:

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

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

    • [5.3.7/T-2-1] Saniyede 60 kare hızında, profil 0 (8 bit renk derinliği) ile 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 desteklemesi ŞİDDETLE TAVSİYE EDİLİR.

    Televizyon cihazı uygulamaları:

    • [5.5/T-0-1] Sıkıştırılmış ses geçişi çıkışı (cihazda ses kod çözme işlemi yapılmaz) hariç olmak üzere, desteklenen çıkışlarda sistem ana ses seviyesi ve dijital ses çıkışı ses seviyesi zayıflatma desteği İÇERMELİDİR.

    Televizyon cihaz uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlanan harici ekran destekleniyorsa:

    • [5.8/T-0-1] HDMI çıkış modu, cihazın satıldığı bölgedeki video yenileme hızına bağlı olarak, harici ekran için 50 Hz veya 60 Hz yenileme hızıyla çalışan seçilen piksel biçiminin en yüksek çözünürlüğüne AYARLANMALIDIR.
    • [5.8/T-SR-1] Kullanıcı tarafından yapılandırılabilen bir HDMI yenileme hızı seçici sağlanması ŞİDDETLE TAVSİYE EDİLİR.
    • [5.8] Cihazın satıldığı bölgedeki video yenileme hızına bağlı olarak HDMI çıkış modu yenileme hızını 50 Hz veya 60 Hz olarak AYARLAMALIDIR.

    Televizyon cihaz uygulamalarında yerleşik ekran yoksa ancak HDMI üzerinden bağlanan harici ekran destekleniyorsa:

    • [5.8/T-1-1] HDCP 2.2'yi desteklemelidir.

    Televizyon cihaz uygulamaları UHD kod çözme özelliğini desteklemiyorsa ancak HDMI ile bağlanan harici bir ekranı destekliyorsa:

    • [5.8/T-2-1] HDCP 1.4 desteklenmelidir.

    2.3.3. Yazılım

    Televizyon cihazı uygulamaları:

    • [3/T-0-1] android.software.leanback ve android.hardware.type.television özelliklerini BİLDİRMELİDİ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 veya daha fazla uygulamayı ya da hizmet bileşenini intent işleyiciyle önceden yükLEMELİDİR.
    • [3.4.1/T-0-1] android.webkit.Webview API'nin eksiksiz bir uygulamasını SAĞLAMALIDIR.

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

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

    Televizyon cihazı uygulamaları:

    • [3.8.14/T-SR-1] Resim içinde resim (PIP) modunda çoklu pencere özelliğini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
    • [3.10/T-0-1] Üçüncü taraf erişilebilirlik hizmetleri DESTEKLENMELİDİR.
    • [3.10/T-SR-1] TalkBack açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.

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

    • [3.11/T-SR-1] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermeleri ŞİDDETLE TAVSİYE EDİLİR.
    • [3.11/T-1-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.

    Android Television Input Framework (TIF), canlı içeriklerin Android Television cihazlara iletilmesini kolaylaştırır. TIF, Android TV cihazlarını kontrol eden giriş modülleri oluşturmak için standart bir API sağlar.

    Televizyon cihazı uygulamaları:

    • [3/T-0-2] Platform özelliği BEYAN EDİLMELİDİR. android.software.live_tv
    • [3/T-0-3] Bu API'leri ve üçüncü taraf TIF tabanlı girişler hizmetini kullanan bir uygulamanın cihaza yüklenip kullanılabilmesi için tüm TIF API'leri desteklenmelidir.

    Android Television Tuner Framework (TF), Android Television cihazlarda Tuner'dan gelen canlı içeriklerin ve IP'den gelen yayın içeriklerinin işlenmesini birleştirir. Tuner Framework, Android Television Tuner'ı kullanan giriş hizmetleri oluşturmak için standart bir API sağlar.

    Cihaz uygulamaları Tuner'ı destekliyorsa:

    • [3/T-1-1] Bu API'leri kullanan bir uygulamanın cihaza yüklenip kullanılabilmesi için tüm Tuner Framework API'leri desteklenmelidir.

    2.3.4. Performans ve Güç

    • [8.1/T-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
    • [8.2/T-0-1] En az 5 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.
    • [8.2/T-0-2] En az 0,5 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.
    • [8.2/T-0-3] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
    • [8.2/T-0-4] En az 3,5 MB/sn rastgele okuma performansı sağlanmalıdır.

    Televizyon cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten cihaz güç yönetimi özelliklerini içeriyorsa:

    • [8.3/T-1-1] Pil Tasarrufu özelliğinin etkinleştirilmesine ve devre dışı bırakılmasına olanak tanıyan kullanıcı uygunluğu SAĞLANMALIDIR.

    Televizyon cihaz uygulamalarında pil yoksa:

    Televizyon cihaz uygulamalarında pil varsa:

    • [8.3/T-1-3] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcıya olanak TANINMALIDIR.

    Televizyon cihazı uygulamaları:

    • [8.4/T-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
    • [8.4/T-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
    • [8.4/T-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
    • [8.4/T] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa [8.4/T] donanım bileşeninin kendisiyle ilişkilendirilmelidir.
    • [8.4/T-0-4] Bu güç kullanımı, uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla KULLANILABİLİR olmalı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.

    Televizyon cihaz uygulamaları, VoiceInteractionService'ı desteklemek için varsayılan bir uygulama içeriyorsa:

    • [9.1/T-0-1] Bu uygulama için varsayılan olarak ACCESS_FINE_LOCATION izni VERMEMELİDİR.

    Televizyon cihazı uygulamaları:

    • [9.11/T-0-1] Anahtar deposu uygulaması, izole bir yürütme ortamıyla YEDEKLENMELİDİR.
    • [9.11/T-0-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA-1 ve SHA-2 ailesi karma oluşturma işlevlerinin uygulamaları OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere erişime kapalı ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
    • [9.11/T-0-3] Kilit ekranı kimlik doğrulaması, izole yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin VERİLMELİDİR. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
    • [9.11/T-0-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının kalıcı cihaz tanımlayıcıları olarak kullanılması ENGELLENMELİDİR.

    Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf olduğunu unutmayın. Ancak bu cihaz, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmediği sürece bu muafiyet geçerlidir.

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

    • [9.11/T-1-1] Kilitli olmayan durumdan kilitli duruma geçiş için kullanıcının uyku zaman aşımını seçmesine İZİN VERİLMELİDİR. İzin verilen minimum zaman aşımı 15 saniye veya daha az olmalıdır.

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

    • [9.5/T-2-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlı bir şekilde oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.

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

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

    Televizyon cihazı uygulamaları android.hardware.microphone beyan ederse:

    • [9.8.2/T-4-1] Bir uygulama mikrofondaki ses verilerine erişirken mikrofon göstergesi GÖSTERİLMELİDİR. Ancak mikrofona yalnızca HotwordDetectionService, SOURCE_HOTWORD, ContentCaptureService veya CDD tanımlayıcısı C-3-X olan 9.1 Bölümü'nde belirtilen rollere sahip uygulamalar erişirken gösterilmemelidir.
    • [9.8.2/T-4-2] Görünür kullanıcı arayüzleri veya doğrudan kullanıcı etkileşimi olan sistem uygulamaları için mikrofon göstergesi gizlenmemelidir.

    Televizyon cihazı uygulamaları android.hardware.camera.any beyan ederse:

    • [9.8.2/T-5-1] Bir uygulama canlı kamera verilerine eriştiğinde kamera göstergesi GÖSTERİLMELİDİR ancak kameraya yalnızca Bölüm 9.1'deki CDD tanımlayıcısı [C-3-X] ile İzinler bölümünde belirtilen rollere sahip uygulamalar eriştiğinde GÖSTERİLMEMELİDİR.
    • [9.8.2/T-5-2] Görünür kullanıcı arayüzlerine veya doğrudan kullanıcı etkileşimine sahip sistem uygulamaları için kamera göstergesi gizlenMEMELİDİR.

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

    Televizyon cihazı uygulamaları:

    • Perfetto

      • [6.1/T-0-1] Kabuk kullanıcısına, komut satırının /system/bin/perfetto uygun olduğu bir ikili program sunulmalıdır. the perfetto documentation.
      • [6.1/T-0-2] Perfetto ikili programı, giriş olarak Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf yapılandırmasını KABUL ETMELİDİR.
      • [6.1/T-0-3] Perfetto ikili programı, Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf izi yazmalıdır.
      • [6.1/T-0-4] MUST provide, through the perfetto binary, at least the data sources described in the perfetto documentation.
      • [6.1/T-0-5] Perfetto izleme arka plan programı varsayılan olarak ETKİNLEŞTİRİLMELİDİR (sistem özelliği persist.traced.enable).

    2.4. Saat Gereksinimleri

    Android Watch cihaz, vücuda (ör. bileğe) takılmak üzere tasarlanmış bir Android cihaz uygulamasıdır.

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

    • Fiziksel diyagonal uzunluğu 1,1 ile 2,5 inç arasında olan bir ekrana sahip olmalıdır.
    • Vücutta taşınmak üzere tasarlanmış bir mekanizmaya sahip olmalıdır.

    Bu bölümün geri kalanındaki ek şartlar, Android Watch cihaz uygulamalarına özeldir.

    2.4.1. Donanım

    Cihaz uygulamalarını izleyin:

    • [7.1.1.1/W-0-1] 1,1 ile 2,5 inç arasında fiziksel çapraz boyuta sahip bir ekran OLMALIDIR.

    • [7.2.3/W-0-1] Kullanıcıya Ana Sayfa işlevi sunulmalı ve UI_MODE_TYPE_WATCH dışında Geri işlevi kullanılabilmelidir.

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

    • [7.3.1/W-SR-1] 3 eksenli bir ivmeölçer eklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    Watch cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özelliği aracılığıyla uygulamalara yetenek bildiriyorsa:

    • [7.3.3/W-1-1] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile, GNSS ölçümleri bulunur bulunmaz BİLDİRİLMELİDİR.
    • [7.3.3/W-1-2] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekarelik ivmeden daha az bir hızla hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıklarını ve sahte aralık hızlarını zamanın en az% 95'inde RAPORLAMALIDIR.

    Watch cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:

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

    Android 17'de eklenen şartların başlangıcı

    Watch cihaz uygulamaları hücresel veri bağlantısını destekliyorsa:

    • [7.4.1/W-1-1] android.hardware.telephony.data özelliği BİLDİRİLMELİDİR.

    Cihaz uygulamalarını izleyin:

    • [7.4.3/W-0-1] Bluetooth'u desteklemelidir.

    • [7.6.1/W-0-1] Uygulama özel verileri için (diğer adıyla "/data" bölümü) en az 1 GB kalıcı depolama alanı OLMALIDIR.

    • [7.6.1/W-0-2] Çekirdek ve kullanıcı alanı için en az 416 MB kullanılabilir belleğe SAHİP OLMALIDIR.

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

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

    2.4.2. Multimedya

    Ek şart yoktur.

    2.4.3. Yazılım

    Cihaz uygulamalarını izleyin:

    • [3/W-0-1] Özellik android.hardware.type.watch BEYAN EDİLMELİDİR.
    • [3/W-0-2] MUST support uiMode = UI_MODE_TYPE_WATCH.
    • [3.2.3.1/W-0-1] Burada listelenen aşağıdaki uygulama intent'leri tarafından tanımlanan tüm genel intent filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini intent işleyiciyle önceden yükLEMELİDİR.

    Cihaz uygulamalarını izleyin:

    • [3.8.4/W-SR-1] Yardımcı işlemi'ni gerçekleştirmek için cihazda bir yardımcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.

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

    • [3.10/W-1-1] Üçüncü taraf erişilebilirlik hizmetleri DESTEKLENMELİDİR.
    • [3.10/W-SR-1] talkback open source project'te belirtildiği şekilde, cihazda Anahtar Erişimi ve TalkBack'in işlevselliğiyle karşılaştırılabilir veya bu işlevselliği aşan erişilebilirlik hizmetlerinin (önceden yüklenmiş metin okuma motoru tarafından desteklenen diller için) önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.

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

    • [3.11/W-SR-1] Cihazda kullanılabilen dilleri destekleyen bir metin okuma motoru eklemeniz ŞİDDETLE TAVSİYE EDİLİR.

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

    2.4.4. Performans ve Güç

    Watch cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten cihaz güç yönetimi özelliklerini içeriyorsa:

    • [8.3/W-SR-1] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya uygunluk sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
    • [8.3/W-SR-2] Pil Tasarrufu özelliğini etkinleştirme ve devre dışı bırakma konusunda kullanıcıya uygunluk sağlamak için ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamalarını izleyin:

    • [8.4/W-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
    • [8.4/W-0-2] TÜM güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
    • [8.4/W-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
    • [8.4/W-0-4] Bu güç kullanımı, uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla SUNULMALIDIR.
    • [8.4/W] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.

    2.4.5. Güvenlik Modeli

    Cihaz uygulamalarını izleyin:

    • [9/W-0-1] android.hardware.security.model.compatible özelliğini BEYAN ETMELİDİR.

    Watch cihaz uygulamaları, VoiceInteractionService özelliğini desteklemek için varsayılan bir uygulama içeriyorsa:

    • [9.1/W-0-1] Bu uygulama için varsayılan olarak ACCESS_FINE_LOCATION izni VERİLMEMELİDİR.

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

    • [9.5/W-1-1] Cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlı bir şekilde oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.

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

    • [9.5/W-2-1] Kısıtlanmış profilleri desteklememelidir ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için kontrollerin AOSP uygulamasında yer alanlarla uyumlu olmalıdır.

    Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentServiceSystem API'yi uygulayan bir veya daha fazla güven aracısı içeriyorsa:

    Android 17'de şartların başlangıcı değişti

    • [9.11.1/W-1-1] Kullanıcıya, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen veya şifre) biriyle 72 saatte birden daha sık en az 336 saatte bir (14 günde bir) meydan OKUMALIDIR.

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService.grantTrust() System API'yi FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE işaretiyle çağıran bir veya daha fazla güven aracısı varsa:

    • [9.11.1/W-2-1] grantTrust() işlevi, bu işaretle çağrılmak için aşağıdaki koşulları karşılamalıdır:
      • Cihaz, kendi kilit ekranına sahip yakındaki fiziksel bir birincil el cihazına bağlıysa ve
      • Kullanıcı, son 30 saniye içinde kimliğini bu kilit ekranına veya 3. Sınıf biyometriye göre doğrulamış olmalıdır.
    • [9.11.1/W-2-2] Giyilebilir cihaz bilekten veya vücuttan çıkarıldığında ve TrustAgent güveni iptal etmediğinde cihazın durumu TrustState.TRUSTABLE olarak AYARLANMALIDIR.

    2.5. Otomotiv Şartları

    Android Automotive uygulaması, sistemin bir kısmı veya tamamı ve/veya bilgi-eğlence işlevleri için işletim sistemi olarak Android'i çalıştıran bir araç ana birimini ifade eder.

    Android cihaz uygulamaları, android.hardware.type.automotive özelliğini beyan ederse veya aşağıdaki tüm ölçütleri karşılarsa Automotive olarak sınıflandırılır.

    • Otomotiv araçlarının bir parçası olarak yerleştirilmiş veya bu araçlara takılabilir.

    • Sürücü koltuğu sırasındaki bir ekranı birincil ekran olarak kullanıyorsanız.

    Bu bölümün geri kalanındaki ek şartlar, Android Automotive cihaz uygulamalarına özeldir.

    2.5.1. Donanım

    Otomotiv cihaz uygulamaları:

    • [7.1.1.1/A-0-1] Fiziksel diyagonal boyutu en az 6 inç olan bir ekrana SAHİP OLMALIDIR.

    • [7.1.1.1/A-0-2] En az 750 dp x 480 dp ekran boyutu düzenine SAHİP OLMALIDIR.

    • [7.1.1.1/A-0-3] Grafik arabelleklerin GPU bileşimini, yerleşik ekranların en yüksek çözünürlüğü kadar büyük olacak şekilde DESTEKLEMELİDİR.

    Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (config_multiuserVisibleBackgroundUsers etkinleştirildiğinde birden fazla Android kullanıcısı cihazla eşzamanlı olarak etkileşime girebilir ve her biri kendi ekranını kullanabilir) bu uygulamalar:

    • [7.1.1.1/A-1-1] Ana ekran için her yolcu bölgesi için en az 6 inç fiziksel diyagonal boyutta ayrı bir ekran OLMALIDIR. Bu, her bir yolcu bölgesi için CarOccupantZoneManager.DISPLAY_TYPE_MAIN olarak etiketlenmelidir.

    • [7.1.1.1/A-1-2] Her ana ekran için en az 750 dp x 480 dp ekran boyutu düzenine SAHİP OLMALIDIR.

    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 EDİLMELİ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 içermeli ve tüm sembolleri dışa aktarmalıdır.

    Otomotiv cihaz uygulamaları Vulkan desteği içeriyorsa:

    Otomotiv cihaz uygulamaları, Configuration.isScreenHdr() aracılığıyla yüksek dinamik aralıklı ekranları desteklediğini iddia ediyorsa:

    • [7.1.4.5/A-1-1] EGL_EXT_gl_colorspace_bt2020_pq, EGL_EXT_surface_SMPTE2086_metadata, EGL_EXT_surface_CTA861_3_metadata, VK_EXT_swapchain_colorspace ve VK_EXT_hdr_metadata uzantıları için destek reklamı YAPILMALIDIR.

    Otomotiv cihaz uygulamaları:

    • [7.1.4.6/A-0-1] Cihazın, sistem özelliği graphics.gpu.profiler.support aracılığıyla GPU profil oluşturma özelliğini destekleyip desteklemediğini bildirmesi ZORUNLUDUR.

    Otomotiv cihaz uygulamaları, bir sistem özelliği graphics.gpu.profiler.support aracılığıyla destek beyan ediyorsa:

    Otomotiv cihaz uygulamaları:

    • [7.1.5/A-0-1] MUST include support for legacy app compatibility mode as implemented by the upstream Android open source code. Yani, cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİ ve uyumluluk modunun davranışını DEĞİŞTİRMEMELİDİR.

    Otomotiv cihaz uygulamaları:

    Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (config_multiuserVisibleBackgroundUsers etkinleştirildiğinde birden fazla Android kullanıcısı cihazla eşzamanlı olarak etkileşime girebilir ve her biri kendi ekranını kullanabilir) bu uygulamalar:

    • [7.3/A-1-1] Arka koltuk ekranları da dahil olmak üzere tüm ekranlarda NIGHT_MODE işaret değeri, kontrol panelinin gündüz/gece moduyla tutarlı bir şekilde AYARLANMALIDIR.

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

    • [7.3.1/A-1-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.

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

    • [7.3.1/A-SR-1] Sınırlı eksenli ivme ölçer için BİLEŞİK SENSÖRÜN uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    Otomotiv cihaz uygulamaları 3 eksenden daha az eksenli bir ivme ölçer içeriyorsa:

    • [7.3.1/A-1-3] TYPE_ACCELEROMETER_LIMITED_AXES sensörü UYGULAMALI ve RAPORLAMALIDIR.

    • [7.3.1/A-1-4] TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED sensörü UYGULAMALI ve RAPORLAMALIDIR.

    Otomotiv cihaz uygulamaları bir jiroskop içeriyorsa:

    • [7.3.4/A-2-1] Etkinlikleri en az 100 Hz sıklıkta raporlayabilmelidir.

    • [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ın +/-250 dps olarak yapılandırılması ŞİDDETLE TAVSİYE EDİLİR.

    Otomotiv cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:

    • [7.3.4/A-SR-2] Sınırlı eksenli jiroskop için BİLEŞİK SENSÖRÜN uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    Otomotiv cihaz uygulamaları 3 eksenden daha az eksenli bir jiroskop içeriyorsa:

    • [7.3.4/A-4-1] TYPE_GYROSCOPE_LIMITED_AXES sensörü UYGULAMALI ve RAPORLAMALIDIR.

    • [7.3.4/A-4-2] TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED sensörü UYGULANMALI ve RAPORLANMALIDIR.

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

    • [7.3.3/A-3-1] GPS/GNSS alıcısı ilk kez açıldığında veya 4 günden uzun bir süre sonraki ilk 60 saniye içinde konum belirlenmelidir.

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

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

    • [7.3.4/A-4-3] En az 1 Hz sıklıkta etkinlik bildirebilmelidir.

    • [7.3.4/A-SR-3] Etkinliklerin en az 10 Hz sıklıkta bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • Gerçek kuzeye göre OLMALIDIR.

    • Araç hareketsizken bile kullanılabilmelidir.

    • En az 1 derece çözünürlüğe SAHİP OLMALIDIR.

    Otomotiv cihaz uygulamaları:

    • [7.4.3/A-0-1] Bluetooth'u DESTEKLEMELİ ve Bluetooth LE'yi DESTEKLEMELİDİR.

    • [7.4.3/A-0-2] Android Automotive uygulamaları Aşağıdaki Bluetooth profillerini desteklemelidir:

      • Eller Serbest Profili (HFP) üzerinden telefon görüşmesi yapma.
      • Ses Dağıtım Profili (A2 DP) üzerinden medya oynatma.
      • Uzaktan Ses ve Video Kontrolü Profili (AVRCP) üzerinden medya oynatma kontrolü.
      • Telefon Rehberi Erişim Profili (PBAP) kullanılarak kişi paylaşımı.
    • [7.4.3/A-SR-1] Cihazda sürücü yolcu bölgesi varsa Mesaj Erişim Profili'nin (MAP) desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (config_multiuserVisibleBackgroundUsers etkinleştirildiğinde birden fazla Android kullanıcısı cihazla eşzamanlı olarak etkileşime girebilir ve her biri kendi ekranını kullanabilir) bu uygulamalar:

    • [7.4.3/A-1-1] Bağımsız OLMALI ve diğer kullanıcıların BT deneyimini ENGELLEMEMELİDİR.

    Otomotiv cihaz uygulamaları:

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

    • [7.4.5/A] Sistem uygulamaları tarafından kullanılabilmesi gereken ağlar için Sistem API'si NetworkCapabilities#NET_CAPABILITY_OEM_PAID sabitini KULLANABİLİR.

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

    • [7.4/A-1-1] FEATURE_BROADCAST_RADIO desteği beyan EDİLMELİDİR.

    Arka kamera, aracın herhangi bir yerine yerleştirilebilen ve araç kabininin dışına bakan, dünyaya dönük bir kamera anlamına gelir. Yani, araç gövdesinin uzak tarafındaki sahnelerin görüntüsünü alır (ör. arka görüş kamerası).

    Ön kamera, araç kabininin herhangi bir yerinde bulunabilen ve araç kabininin içine bakan, kullanıcıya yönelik bir kamera anlamına gelir. Bu kamera, görüntülü konferans ve benzeri uygulamalarda olduğu gibi kullanıcının görüntüsünü alır.

    Otomotiv cihaz uygulamaları:

    • [7.5/A-SR-1] Dünyaya dönük bir veya daha fazla kamera içermesi ŞİDDETLE TAVSİYE EDİLİR.

    • Kullanıcıya dönük bir veya daha fazla kamera İÇEREBİLİR.

    • [7.5/A-SR-2] Birden fazla kameranın eşzamanlı olarak yayınlanmasını desteklemek için KESİNLİKLE ÖNERİLİR.

    Otomotiv cihaz uygulamaları, dışa dönük en az bir kamera içeriyorsa bu tür bir kamera için:

    • [7.5/A-1-1] Kameranın uzun boyutu, Android Automotive sensör eksenlerinin X-Y düzlemiyle aynı doğrultuda olacak şekilde yönlendirilmelidir.

    • [7.5/A-SR-3] Sabit odaklı veya EDOF (Genişletilmiş Alan Derinliği) donanımına sahip olması ŞİDDETLE TAVSİYE EDİ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ı kullanıcıya dönük en az bir kamera içeriyorsa bu tür bir kamera için:

    • [7.5/A-2-1] Kullanıcıya dönük birincil kamera, en düşük kamera kimliğine sahip kullanıcıya dönük kamera OLMALIDIR.

    • Kameranın uzun boyutunun Android otomotiv sensör eksenlerinin X-Y düzlemiyle hizalanması GEREKEBİLİR.

    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 bölümündeki temel kamera koşullarına UYULMALIDIR.

    Android 17'de kaldırılan şartların başlangıcı

    Otomotiv cihaz uygulamaları, android.hardware.Camera veya android.hardware.camera2 API'si üzerinden erişilemeyen bir kamera içeriyorsa:

    • [7.5/A-4-1] Extended View System sistemine ait hizmet üzerinden erişilebilir OLMALIDIR.

    Otomotiv cihaz uygulamaları, Extended View System Service aracılığıyla erişilebilen bir veya daha fazla kamera içeriyorsa bu tür kameralar için:

    • [7.5/A-5-1] Kamera önizlemesi döndürülmemeli veya yatay olarak yansıtılmamalıdır.

    • [7.5/A-SR-4] En az 1,3 megapiksel çözünürlüğe sahip olmaları ŞİDDETLE TAVSİYE EDİLİR.

    Otomotiv cihaz uygulamaları, hem Extended View System Service 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ği'ni bildirmelidir.

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

    • [7.5/A-7-1] android.hardware.camera2 API veya Extended View System API'yi kullanarak bu tür bir kamera API'si uygulamalıdır.

    Otomotiv cihaz uygulamaları:

    • [7.6.1/A-0-1] Uygulama özel verileri (/data bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.

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

    Otomotiv cihaz uygulamaları, dahili çıkarılamayan depolama alanının bir bölümü aracılığıyla paylaşılan harici depolama alanı sağlıyorsa:

    • [7.6.1/A-SR-1] Harici depolama alanında gerçekleştirilen işlemlerde G/Ç ek yükünü azaltmak için (örneğin, SDCardFS kullanılarak) ŞİDDETLE TAVSİYE EDİLİR.

    Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (config_multiuserVisibleBackgroundUsers etkinleştirildiğinde birden fazla Android kullanıcısı cihazla eşzamanlı olarak etkileşime girebilir ve her biri kendi ekranını kullanabilir) bu uygulamalar:

    • [7.6.1/A-1-1] Tek bir AAOS örneğinde, uygulama özel verileri için kullanılabilen kalıcı olmayan depolama alanında (/data bölümü) eşzamanlı olarak Android kullanan her kullanıcı için en az 4 GB OLMALIDIR.

    Otomotiv cihaz uygulamaları 64 bit ise:

    • [7.6.1/A-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek, ana ekran başına en az 816 MB OLMALIDIR:

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

      • Küçük/normal ekranlarda xhdpi veya daha yüksek
      • Büyük ekranlarda hdpi veya daha yüksek
      • Çok büyük ekranlarda mdpi veya daha yüksek
    • [7.6.1/A-2-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek, ana ekran başına en az 1.280 MB OLMALIDIR:

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

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

    Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdek denetimi altında olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.

    Otomotiv cihaz uygulamaları:

    • [7.7.1/A] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.

    Otomotiv cihaz uygulamaları, çevre birimi modunda çalışan bir denetleyiciye sahip bir USB bağlantı noktası içeriyorsa:

    • [7.7.1/A-1-1] Android Open Accessory (AOA) API'si UYGULANMALIDIR.

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

    • [7.7.2/A-1-1] Android SDK belgelerinde açıklandığı şekilde USB ses sınıfı uygulanmalıdır.

    Otomotiv cihaz uygulamaları:

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

    Otomotiv cihaz uygulamaları:

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

    Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (config_multiuserVisibleBackgroundUsers etkinleştirildiğinde birden fazla Android kullanıcısı cihazla eşzamanlı olarak etkileşime girebilir ve her biri kendi ekranını kullanabilir) bu uygulamalar:

    • [7.8.2/A-1-1] Eşzamanlı birden fazla kullanıcılı sistemler için her ana ekranın bir ses çıkışı cihazı OLMALIDIR.

    • [7.8.2/A-1-2] Global kabin hoparlörünü kapsayan bir sürücü ses bölgesi OLMALIDIR. Ön yolcu bölgesi, sürücünün ses bölgesiyle paylaşılabilir veya kendi ses çıkışına sahip olabilir.

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

    2.5.2. Multimedya

    Otomotiv cihaz uygulamaları, aşağıdaki ses kodlama ve kod çözme biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamaların kullanımına sunmalıdır:

    • [5.1/A-0-1] MPEG-4 AAC Profili (AAC LC)

    • [5.1/A-0-2] MPEG-4 HE AAC Profili (AAC+)

    • [5.1/A-0-3] AAC ELD (enhanced low delay AAC)

    Android 17'de eklenen şartların başlangıcı

    • [5.1/A-0-4] MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC)

    Otomotiv cihaz uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİ ve üçüncü taraf uygulamaların kullanımına sunmalıdır:

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

    • [5.2/A-0-2] VP8

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

    • [5.3/A-0-1] H.264 AVC

    • [5.3/A-0-2] MPEG-4 SP

    • [5.3/A-0-3] VP8

    • [5.3/A-0-4] VP9

    Otomotiv cihaz uygulamalarının, aşağıdaki video kod çözme işlemlerini desteklemesi KESİNLİKLE ÖNERİLİR:

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

    Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (config_multiuserVisibleBackgroundUsers etkinleştirildiğinde birden fazla Android kullanıcısı cihazla eşzamanlı olarak etkileşime girebilir ve her biri kendi ekranını kullanabilir) bu uygulamalar:

    • [5.5.3/A-1-1] Araç ses yapılandırma dosyasında tanımlandığı gibi aynı ses grubuyla eşlenen tüm ses çıkışı akışları için aynı ses seviyesi eğrileri tanımlanmalıdır.

    2.5.3. Yazılım

    Otomotiv cihaz uygulamaları:

    • [3/A-0-1] Özellik android.hardware.type.automotive beyan EDİLMELİDİR.

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

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

    Otomotiv cihaz uygulamaları, android.car.CarPropertyManager kullanarak tescilli bir API sağlıyorsa android.car.VehiclePropertyIds ile birlikte:

    • [3/A-1-1] Sistem uygulamasının bu özellikleri kullanmasına özel ayrıcalıklar eklenmemeli veya üçüncü taraf uygulamalarının bu özellikleri kullanması engellenmemelidir.

    • [3/A-1-2] SDK'da zaten mevcut olan bir araç özelliğini kopyALAMAZ.

    Otomotiv cihaz uygulamaları:

    Otomotiv cihazı uygulaması ayarları uygulaması, etkinlik yerleştirme kullanarak bölünmüş işlevsellik uyguluyorsa:

    Otomotiv cihaz uygulamaları, Eşzamanlı Çok Kullanıcılılığı destekliyorsa (config_multiuserVisibleBackgroundUsers etkinleştirildiğinde birden fazla Android kullanıcısı cihazla eşzamanlı olarak etkileşime girebilir ve her biri kendi ekranını kullanabilir) bu uygulamalar:

    • [3.8/A-1-1] Şu anda ön planda olmayan ancak kendilerine atanan ekrana kullanıcı arayüzü erişimi olan tam ikincil kullanıcılar için aşağıdaki önceden tanımlanmış UserRestrictions listesini uygulaması ZORUNLUDUR. UserRestrictions listesi şunlardır: DISALLOW_CONFIG_LOCALE, DISALLOW_CONFIG_BLUETOOTH, DISALLOW_BLUETOOTH, DISALLOW_CAMERA_TOGGLE, ve DISALLOW_MICROPHONE_TOGGLE.

    • [3.8/A-1-2] MUST NOT, mevcut ön plan kullanıcısı olmayan ancak kendilerine atanan ekrana kullanıcı arayüzü erişimi olan tam ikincil kullanıcıların, Ayarlar'dan veya bir API'den başka bir kullanıcı için gündüz/gece modunu, yerel ayarı, tarihi, saati, saat dilimini ya da ekran rengi özelliklerini (parlaklık, Gece Işığı, Dijital Denge gri tonlama ve Parlak Renkleri Azaltma dahil) değiştirmesine izin VERMEMELİDİR.

    Otomotiv cihaz uygulamaları:

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

    • [3.8.4/A-SR-1] Yardımcı işlemi'ni gerçekleştirmek için cihazda bir asistan uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    Otomotiv cihaz uygulamalarında bas-konuş düğmesi varsa:

    • [3.8.4/A-1-1] Kullanıcı tarafından seçilen asistan uygulamasını (diğer bir deyişle VoiceInteractionService'ı uygulayan uygulama) başlatmak için belirlenen etkileşim olarak bas-konuş düğmesine kısa basılmalıdır.

    Otomotiv cihaz uygulamaları:

    • [3.8.3.1/A-0-1] Kaynaklar, Notifications on Automotive OS SDK dokümanlarında açıklandığı şekilde DOĞRU şekilde oluşturulmalıdır.

    • [3.8.3.1/A-0-2] Notification.Builder.addAction() aracılığıyla sağlananların yerine bildirim işlemlerinde PLAY (OYNAT) ve MUTE (SESSİZE AL) seçenekleri GÖSTERİLMELİDİR.

    • [3.8.3.1/A] Bildirim kanalı başına kontroller gibi zengin yönetim görevlerinin kullanımını KISITLAMALIDIR. Denetimleri azaltmak için uygulama başına kullanıcı arayüzü desteği KULLANILABİLİR.

    Otomotiv cihaz uygulamaları, User HAL özelliklerini destekliyorsa:

    Otomotiv cihaz uygulamaları:

    Android 17'de eklenen şartların başlangıcı

    Otomotiv cihaz uygulamaları:

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

    Otomotiv cihaz uygulamaları:

    • [3.8/A] immersive documentation bölümünde açıklandığı gibi, tam ekran moduna girme uygulama isteklerini KISITLAYABİLİR.

    • [3.8/A] Durum çubuğunu ve gezinme çubuğunu her zaman görünür tutabilir.

    • [3.8/A] MAY, sistem kullanıcı arayüzü öğelerinin arkasındaki renkleri değiştirme uygulama isteklerini kısıtlayabilir. Bu, söz konusu öğelerin her zaman net bir şekilde görünmesini sağlamak için yapılır.

    Android 17'de eklenen şartların başlangıcı

    Otomotiv cihaz uygulamaları:

    Otomotiv cihazlar, android.software.car.display_compatibility özelliğiyle ön planda çalışan uygulamalar veya android.hardware.type.automotive özelliği olmayan uygulamalar için:

    • [7.1.1/A-1-1] Geri işlevi SAĞLANMALIDIR.

    Android 17'de kaldırılan şartların başlangıcı

    Otomotiv cihaz uygulamaları, kullanıcıların her türlü aramayı yapmasına izin veriyorsa:

    2.5.4. Performans ve Güç

    • [8.1/A-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.

    • [8.1/A-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları,Android Uyumluluk Test Paketi (CTS) tarafından tanımlanan 10.000 liste girişinden oluşan bir listeyi 36 saniyeden kısa bir sürede kaydırarak düşük gecikmeli kullanıcı deneyimi sağlamalıdır.

    • [8.1/A-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, başlatılmış ve zaten çalışmakta olan bir uygulamanın yeniden başlatılması 1 saniyeden kısa sürmelidir.

    Otomotiv cihaz uygulamaları:

    • [8.2/A-0-1] Her işlemin UID'si başına kalıcı olmayan depolama alanına okunan ve yazılan bayt sayısını RAPORLAMALIDIR. Böylece istatistikler, Sistem API'si aracılığıyla geliştiricilerin kullanımına sunulur.android.car.storagemonitoring.CarStorageMonitoringManager Android Açık Kaynak Projesi, uid_sys_stats çekirdek modülü aracılığıyla bu şartı karşılar.

    • [8.2/A-0-2] En az 5 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.

    • [8.2/A-0-3] En az 0,5 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.

    • [8.2/A-0-4] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.

    • [8.2/A-0-5] En az 3,5 MB/sn rastgele okuma performansı SAĞLANMALIDIR.

    Otomotiv cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için android.os.Build.VERSION_CODES.U veya daha büyük bir değer döndürürse:

    • [8.2/A-1-1] En az 150 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.

    • [8.2/A-1-2] En az 10 MB/sn rastgele yazma performansı SAĞLANMALIDIR.

    • [8.2/A-1-3] En az 250 MB/sn sıralı okuma performansı SAĞLANMALIDIR.

    • [8.2/A-1-4] En az 100 MB/sn rastgele okuma performansı SAĞLANMALIDIR.

    • [8.2/A-1-5] En az 50 MB/sn olmak üzere 2 kat okuma ve 1 kat yazma performansıyla paralel sıralı okuma ve yazma performansı SAĞLANMALIDIR.

    • [8.3/A-1-3] Garaj Modu'nu desteklemelidir.

    • [8.3/A] Aşağıdaki durumlar hariç, her sürüşten sonra en az 15 dakika boyunca Garaj Modu'nda OLMALIDIR:

      • Pil bitti.
      • Boşta iş planlanmamış.
      • Sürücü, Garaj Modu'ndan çıkar.
    • [8.4/A-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.

    • [8.4/A-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.

    • [8.4/A-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.

    • [8.4/A] Donanım bileşeninin güç kullanımı bir uygulamaya atfedilemiyorsa bu kullanım, donanım bileşenine atfedilmelidir.

    • [8.4/A-0-4] Bu güç kullanımını, uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla KULLANIMA SUNMALIDIR.

    2.5.5. Güvenlik Modeli

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

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

    • [9.8/A-1-1] Sorgu algılama hizmetinin yalnızca Sisteme, ContentCaptureService veya cihaz üzerinde konuşma tanıma hizmetine (SpeechRecognizer#createOnDeviceSpeechRecognizer() tarafından oluşturulmuş) veri iletebildiğinden EMİN OLMALIDIR.

    • [9.8/A-1-2] VisualQueryDetectionService dışına ContentCaptureService veya cihaz üzerinde konuşma tanıma hizmeti dışında ses ya da video bilgilerinin iletilmesine İZİN VERİLMEMELİDİR.

    • [9.8/A-1-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ÖSTERİLMELİDİR.

    • [9.8/A-1-4] Mikrofon göstergesi GÖSTERİLMELİ ve kullanıcı sorgusu algılandıktan hemen sonra algılanan kullanıcı sorgusu kullanıcı arayüzünde GÖSTERİLMELİDİR.

    • [9.8/A-1-5] Kullanıcı tarafından yüklenebilen bir uygulamanın görsel sorgu algılama hizmeti sağlamasına İZİN VERİLMEMELİDİR.

    Otomotiv cihaz uygulamaları android.hardware.microphone beyan ederse:

    • [9.8.2/A-1-1] Bir uygulama mikrofondaki ses verilerine erişirken mikrofon göstergesi GÖSTERİLMELİDİR ancak mikrofona yalnızca HotwordDetectionService, SOURCE_HOTWORD, ContentCaptureService veya CDD tanımlayıcısı [C-4-X] ile 9.1 bölümünde belirtilen rollere sahip uygulamalar erişirken GÖSTERİLMEMELİDİR.

    • [9.8.2/A-1-2] Görünür kullanıcı arayüzlerine veya doğrudan kullanıcı etkileşimine sahip sistem uygulamaları için mikrofon göstergesi gizlenmemelidir.

    • [9.8.2/A-1-3] Ayarlar uygulamasında mikrofonu açıp kapatmak için kullanıcıya bir seçenek SUNULMALIDIR.

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

    • [9.8.2/A-2-1] Bir uygulama canlı kamera verilerine erişirken kamera göstergesi GÖSTERİLMELİDİR. Ancak kamera yalnızca CDD tanımlayıcısı [C-4-X] ile Bölüm 9.1 İzinler'de tanımlanan rollere sahip uygulamalar tarafından erişilirken 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östergesi gizlenMEMELİDİR.

    • [9.8.2/A-2-3] Ayarlar uygulamasında kamerayı açıp kapatmak için kullanıcıya bir olanak SAĞLANMALIDIR.

    • [9.8.2/A-2-4] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen kamera kullanılarak Son ve Etkin uygulamalar, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte GÖSTERİLMELİDİR.

    Otomotiv cihaz uygulamaları:

    • [9/A-0-1] android.hardware.security.model.compatible özelliğini BİLDİRMELİDİR.

    • [9.11/A-0-1] MUST back up the keystore implementation with an isolated execution environment.

    • [9.11/A-0-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA-1 ve SHA-2 ailesi karma işlevlerinin uygulamaları OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere erişime kapalı ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.

    • [9.11/A-0-3] Kilit ekranı kimlik doğrulaması, izole yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin VERİLMELİDİR. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.

    • [9.11/A-0-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının kalıcı cihaz tanımlayıcıları olarak kullanılması ENGELLENMELİDİR.

    Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf olduğunu unutmayın. Ancak bu cihaz, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmediği sürece bu muafiyet geçerlidir.

    Otomotiv cihaz uygulamaları:

    • [9.14/A-0-1] Android çerçevesi araç alt sistemlerinden gelen mesajlar (ör. izin verilen mesaj türleri ve mesaj kaynakları için izin verilenler listesi) mutlaka kontrol edilmelidir.

    • [9.14/A-0-2] Android çerçevesinden veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı mutlaka watchdog kullanılmalıdır. Bu, kötü amaçlı yazılımların araç ağını trafikle doldurarak araç alt sistemlerinin arızalanmasına yol açmasını engeller.

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

    Otomotiv cihaz uygulamaları:

    • Perfetto

      • [6.1/A-0-1] Kabuk kullanıcısına, komut satırının /system/bin/perfetto uygun olduğu bir ikili program sunulmalıdır (the perfetto documentation).

      • [6.1/A-0-2] Perfettonun ikili programı, giriş olarak Perfettonun dokümanlarında tanımlanan şemaya uygun bir protobuf yapılandırmasını KABUL ETMELİDİR.

      • [6.1/A-0-3] Perfetto ikili programı, çıkış olarak Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf izi YAZMALIDIR.

      • [6.1/A-0-4] MUST provide, through the perfetto binary, at least the data sources described in the perfetto documentation.

      • [6.1/A-0-5] Perfetto izleme arka plan programı VARSAYILAN olarak etkinleştirilmelidir (sistem özelliği persist.traced.enable).

    2.6. Tablet Gereksinimleri

    Android Tablet cihaz, genellikle aşağıdaki tüm ölçütleri karşılayan bir Android cihaz uygulamasıdır:

    • İki elle tutularak kullanılır.
    • Clamshell veya dönüştürülebilir yapılandırmaya sahip olmamalıdır.
    • Cihazla kullanılan fiziksel klavye uygulamaları standart bir bağlantı (ör. USB, Bluetooth) aracılığıyla bağlanır.
    • Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
    • Çapraz olarak ölçüldüğünde ekran boyutu 7 inçten büyük ve 18 inçten küçüktür.

    Tablet cihaz uygulamaları, el cihazı uygulamalarına benzer gereksinimlere sahiptir. İstisnalar, ilgili bölümde * işaretiyle belirtilir ve bu bölümde referans olarak not edilir.

    2.6.1. Donanım

    Gyroscope

    Tablet cihaz uygulamaları 3 eksenli jiroskop içeriyorsa:

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

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

    Elde taşınabilir cihaz gereksinimlerinde küçük/normal ekranlar için listelenen ekran yoğunlukları tabletler için geçerli değildir.

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

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

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

    2.6.2. Güvenlik Modeli

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

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

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

    • [9.5/T-1-1] Cihaz sahiplerinin ek kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlı bir şekilde oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.

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

    • [9.5/T-2-1] Kısıtlanmış profilleri desteklememeli ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'nin denetim uygulamasıyla uyumlu olmalıdır.

    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 genel intent filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini intent işleyiciyle birlikte önceden yüklemelidir.

    3. Yazılım

    3.1. Yönetilen API Uyumluluğu

    Yönetilen Dalvik bayt kodu yürütme ortamı, Android uygulamaları için birincil araçtır. Android uygulama programlama arayüzü (API), yönetilen çalışma zamanı ortamında çalışan uygulamalara sunulan Android platformu arayüzleri kümesidir.

    Cihaz uygulamaları:

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

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

    • [C-0-3] Bu Uyumluluk Tanımı'nda özellikle izin verilen durumlar hariç olmak üzere, yönetilen API'ler atlanmamalı, API arayüzleri veya imzaları değiştirilmemeli, belgelenen davranıştan sapılmamalı ya da hiçbir işlem yapmayan işlemler içermemelidir.

    • [C-0-4] Android'in API'ler içerdiği bazı donanım özellikleri atlandığında bile API'ler mevcut olmaya ve makul bir şekilde davranmaya DEVAM ETMELİDİR. Bu senaryoya özgü şartlar için 7. bölüme bakın.

    • [C-0-5] Üçüncü taraf uygulamalarının, AOSP'deki önyükleme sınıf yolunda bulunan ve herkese açık SDK'nın bir parçası olmayan Java dili paketlerindeki yöntemler ve alanlar olarak tanımlanan SDK dışı arayüzleri kullanmasına İZİN VERİLMEMELİDİR. SDK belgelerinde açıklandığı gibi, @hide ek açıklamasıyla süslenmiş ancak @SystemAPI ile süslenmemiş API'ler, özel ve paket özel sınıf üyeleri buna dahildir.

    • [C-0-6] AOSP'deki uygun API düzeyi dalı için prebuilts/runtime/appcompat/hiddenapi-flags.csv yolunda geçici ve izin verilmeyenler listesi işaretleri aracılığıyla sağlananlarla aynı kısıtlanmış listelerdeki her bir SDK dışı arayüzle birlikte gönderilmelidir.

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

      Ancak:

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

    Android 17'de şartların başlangıcı değişti

    • [C-0-8] API düzeyi 24 26'dan düşük olan uygulamaların yüklenmesini DESTEKLEMEMELİDİR.

    3.1.1. Android Uzantıları

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

    Android cihaz uygulamaları:

    • [C-0-1] Hem paylaşılan kitaplık ExtShared hem de hizmetler ExtServices için AOSP uygulamasını, her API düzeyi için izin verilen minimum sürümlerden büyük veya bu sürümlere eşit olacak şekilde önceden yüklemelidir. Örneğin, API düzeyi 24'ü çalıştıran Android 7.0 cihaz uygulamaları EN AZ sürüm 1'i içermelidir.

    • [C-0-2] YALNIZCA AOSP tarafından tanımlanmış geçerli uzantı sürüm numarası 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, bölüm 3.1'deki şartlara uyarak diğer yönetilen API'lerin desteklendiği şekilde desteklemelidir.

    3.1.2. Android Kitaplığı

    Apache HTTP istemcisinin desteği sonlandırıldığından, cihaz uygulamaları:

    • [C-0-1] org.apache.http.legacy kitaplığı, bootclasspath'e yerleştirilmemelidir.
    • [C-0-2] YALNIZCA uygulama aşağıdaki koşullardan birini karşıladığında org.apache.http.legacy kitaplığı, uygulamanın sınıf yoluna eklenmelidir:
      • API düzeyi 28 veya daha düşük bir sürümü hedefliyorsa
      • <uses-library> öğesinin android:name özelliğini org.apache.http.legacy olarak ayarlayarak kitaplığa ihtiyacı olduğunu manifest dosyasında belirtir.

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

    3.2. Yazılım API Uyumluluğu

    Bölüm 3.1'deki yönetilen API'lere ek olarak Android, niyetler, izinler ve Android uygulamalarının derleme zamanında zorunlu kılınamayan benzer yönleri gibi şeylerin biçiminde, yalnızca çalışma zamanında kullanılan ö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 şekilde tüm izin sabitlerini desteklemeli ve zorunlu kılmalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek şartların listelendiğini unutmayın.

    3.2.2. Oluşturma Parametreleri

    Android API'leri, android.os.Build sınıfında mevcut cihazı tanımlaması amaçlanan çeşitli sabitler içerir.

    Android 17'de şartların başlangıcı değişti

    • [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 yürütülen Android sisteminin sürümü, okunabilir biçimde. Bu alan, Android 17 için İzin Verilen Sürüm Dizeleri'nde tanımlanan dize değerlerinden birini içermelidir.
    VERSION.SDK Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 17 için bu alanın tam sayı değeri 17_INT olmalıdır.
    VERSION.SDK&lowbar;INT Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 17 için bu alanın tam sayı değeri 17&lowbar;INT olmalıdır.
    VERSION.INCREMENTAL Cihaz uygulayıcısı tarafından seçilen ve o anda yürütülen Android sisteminin belirli derlemesini belirten, kullanıcılar tarafından okunabilir biçimde bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak kontrolü değişikliği tanımlayıcısının kullanıldığını belirtmektir. Bu alanın değeri, yazdırılabilir 7 bitlik ASCII olarak kodlanabilir OLMALI ve ^[^ :\/~]+$ normal ifadesiyle eşleşmelidir.
    MASA Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı tanımlayan, kullanıcılar tarafından okunabilir biçimdeki bir değer. Bu alan, cihazı çalıştıran kartın belirli revizyonunu belirtmek için kullanılabilir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir.
    BRAND Cihazla ilişkili marka adını son kullanıcılara bilindiği şekliyle yansıtan bir değer. İnsan tarafından okunabilir biçimde OLMALI ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını TEMSİL ETMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir.
    DESTEKLENEN&lowbar;ABIS Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu.
    DESTEKLENEN&lowbar;32&lowbar;BİTLİK&lowbar;ABIS Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu.
    DESTEKLENEN&lowbar;64&lowbar;BİT&lowbar;ABILER Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu.
    CPU&lowbar;ABI Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu.
    CPU&lowbar;ABI2 Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu.
    CİHAZ Cihaz uygulayıcısı tarafından seçilen ve cihazın donanım özelliklerinin yapılandırmasını ve endüstriyel tasarımını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEMELİDİR.
    PARMAK İZİ Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunabilir OLMALIDIR. Şu şablona UYULMALIDIR:

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

    Örneğin:

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

    Parmak izi, boşluk karakterleri içermemelidir. Bu alanın değeri 7 bitlik ASCII olarak kodlanabilir OLMALIDIR.

    DONANIM Donanımın adı (çekirdek komut satırından veya /proc'tan). Makul ölçüde okunabilir OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir.
    HOST Derlemenin oluşturulduğu ana makineyi benzersiz bir şekilde tanımlayan, kullanıcıların okuyabileceği biçimde bir dize. Bu alanın belirli bir biçimde olmasıyla ilgili herhangi bir koşul yoktur. Ancak bu alan NULL veya boş dize ("") OLMAMALIDIR.
    Kimlik Cihaz uygulayıcısı tarafından belirli bir sürümü belirtmek için seçilen, insanlar tarafından okunabilir biçimde bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapabilmesi için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9._-]+$ normal ifadesiyle eşleşmelidir.
    ÜRETİCİ Ürünün Özgün Donanım Üreticisi'nin (OEM) ticari ünvanı. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalı veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
    SOC&lowbar;MANUFACTURER Üründe kullanılan birincil çip üzerinde sistemin (SOC) üreticisinin ticari adı. Aynı çip üzerinde sistem üreticisine sahip cihazlar aynı sabit değeri kullanmalıdır. Lütfen kullanılacak doğru sabiti SOC üreticisine sorun. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI, ^([0-9A-Za-z ]+) normal ifadesiyle eşleşmeli, boşlukla başlamamalı veya bitmemeli ve "unknown"a eşit OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
    SOC&lowbar;MODEL Üründe kullanılan birincil çip üzerinde sistemin (SOC) model adı. Aynı çip üzerinde sistem modeline sahip cihazlar aynı sabit değeri kullanmalıdır. Lütfen kullanılacak doğru sabiti SOC üreticisine sorun. Bu alanın değeri 7 bitlik ASCII olarak kodlanabilir OLMALI ve ^([0-9A-Za-z ._/+-]+)$ normal ifadesiyle eşleşmelidir. Boşlukla başlamamalı veya bitmemeli ve "unknown"a eşit OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
    MODEL Cihaz uygulayıcısı tarafından seçilen ve cihazın son kullanıcı tarafından bilinen adını içeren bir değer. Bu, cihazın son kullanıcılara pazarlandığı ve satıldığı adla AYNI OLMALIDIR. Bu alanın belirli bir biçimiyle ilgili herhangi bir koşul yoktur. Ancak bu alan boş olmamalı veya boş dize ("") içermemelidir. Bu alanın, ürünün kullanım ömrü boyunca değiştirilmemesi ŞİDDETLE TAVSİYE EDİLİR.
    ÜRÜN Cihaz uygulayıcısı tarafından seçilen ve aynı marka içinde benzersiz OLMASI GEREKEN belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değer. Kullanıcıların okuyabileceği bir biçimde OLMALIDIR ancak son kullanıcıların görüntülemesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9_-]+$ normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEMELİDİR.
    ODM&lowbar;SKU Cihaz uygulayıcısı tarafından seçilen isteğe bağlı bir değerdir. Bu değer, cihazın belirli yapılandırmalarını izlemek için kullanılan SKU'yu (Stok Tutma Birimi) içerir. Örneğin, cihaz satıldığında cihazla birlikte verilen tüm çevre birimleri. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^([0-9A-Za-z.,_-]+)$ normal ifadesiyle eşleşmelidir.
    SERIAL "UNKNOWN" döndürmelidir.
    ETİKETLER Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayıran virgülle ayrılmış etiket listesi. Etiketler 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9._-]+ normal ifadesiyle eşleşmeli ve üç tipik Android platformu imzalama yapılandırmasına (release-keys, dev-keys ve test-keys) karşılık gelen değerlerden birine SAHİP OLMALIDIR.
    ZAMAN Derlemenin gerçekleştiği zaman damgasını temsil eden bir değer.
    TÜR Cihaz uygulayıcısı tarafından seçilen ve derlemenin çalışma zamanı yapılandırmasını belirten bir değer. Bu alan, üç tipik Android çalışma zamanı yapılandırmasına (user, userdebug veya eng) karşılık gelen değerlerden birini içermelidir.
    KULLANICI Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı ya da kullanıcı kimliği. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan NULL veya boş dize ("") olmamalıdır.
    SECURITY&lowbar;PATCH Bir derlemenin güvenlik yaması seviyesini gösteren değer. Derlemenin, belirlenen Android herkese açık güvenlik bülteninde açıklanan sorunlardan hiçbirine karşı savunmasız OLMADIĞINI belirtmelidir. Android Public Security Bulletin veya Android Security Advisory'de belirtilen tanımlı bir dizeyle eşleşen [YYYY-AA-GG] biçiminde OLMALIDIR. Örneğin, "2015-11-01".
    BASE&lowbar;OS Android Public Security Bulletin'de sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden bir değer. Doğru değeri RAPORLAMALI ve böyle bir derleme yoksa boş bir dize ("") raporlamalıdır.
    BOOTLOADER Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili önyükleyici sürümünü tanımlayan, kullanıcılar tarafından okunabilir biçimde bir değer. Bu alanın değeri 7 bitlik ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9._-]+$ normal ifadesiyle eşleşmelidir.
    getRadioVersion() Cihaz uygulayıcısı tarafından seçilen bir değeri (olmalı veya döndürmelidir). Cihazda kullanılan belirli dahili radyo/modem sürümünü tanımlayan, insan tarafından okunabilir biçimde. Bir cihazda dahili radyo/modem yoksa NULL döndürmesi ZORUNLUDUR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9._-,]+$ normal ifadesiyle eşleşmelidir.
    getSerial() Aynı MODEL ve ÜRETİCİYE sahip cihazlarda KULLANILABİLİR ve benzersiz olan bir donanım seri numarası OLMALIDIR (olmalı veya döndürmelidir). Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve ^[a-zA-Z0-9]+$ normal ifadesiyle eşleşmelidir.
    STRONGBOX&lowbar;MANUFACTURER Üründe kullanılan StrongBox çipinin üreticisinin ticari ünvanı. StrongBox tedarikçisi doğru sabiti sağlar. Aynı StrongBox tedarikçisine sahip cihazlar aynı sabit değeri kullanmalıdır. Bu alanın değeri, ^([0-9A-Za-z ]+) normal ifadesiyle eşleşmeli ve "unsupported" değerine eşit olmamalıdır. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
    STRONGBOX&lowbar;MODEL Üründe kullanılan StrongBox çipinin model adı. StrongBox tedarikçisi doğru sabiti sağlar. Aynı StrongBox tedarikçisine sahip cihazlar aynı sabit değeri KULLANMALIDIR. Bu alanın değeri, ^([0-9A-Za-z ._/+-]+)$ normal ifadesiyle eşleşmelidir ve "unsupported" değerine eşit olmamalıdır. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.

    3.2.3. Amaca Uygunluk

    3.2.3.1. Sık Kullanılan Uygulama Amaçları

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

    Cihaz uygulamaları:

    • [C-SR-1] Burada listelenen uygulama amaçları tarafından tanımlanan tüm herkese açık amaç filtresi kalıpları için bir veya daha fazla uygulama ya da hizmet bileşeninin amaç işleyiciyle önceden yüklenmesi ve SDK'da açıklandığı gibi bu yaygın uygulama amaçları için geliştiricinin beklentilerini karşılayacak şekilde yerine getirilmesi ŞİDDETLE TAVSİYE EDİLİR.

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

    3.2.3.2. Amaç Çözümleme
    • [C-0-1] Android genişletilebilir bir platform olduğundan cihaz uygulamaları, Ayarlar hariç 3.2.3.1 bölümünde referans verilen her amaç kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına İZİN VERMELİDİR. Yukarı akış Android açık kaynak uygulaması bunu varsayılan olarak sağlar.

    • [C-0-2] Cihaz uygulayıcıları, sistem uygulamalarının bu amaç kalıplarını kullanmasına özel ayrıcalıklar TANIMLAMAMALI veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü ele geçirmesini ENGELLEMEMELİDİR. Bu yasak, özellikle kullanıcının aynı amaç kalıbını işleyen birden fazla uygulama arasında seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bununla sınırlı değildir.

    • [C-0-3] Cihaz uygulamaları, kullanıcıların amaçlar için varsayılan etkinliği değiştirebileceği bir kullanıcı arayüzü SAĞLAMALIDIR.

    • Ancak cihaz uygulamaları, varsayılan etkinlik veri URI'si 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 amaç filtresi kalıbı, tarayıcının "http://" için temel amaç kalıbından daha spesifiktir.

    Android ayrıca üçüncü taraf uygulamalarının, belirli web URI amaçları için yetkili bir varsayılan uygulama bağlantısı davranışı bildirmesine olanak tanıyan bir mekanizma da içerir. Bu tür yetkili beyanlar bir uygulamanın intent filtresi kalıplarında tanımlandığında cihaz uygulamaları:

    • [C-0-4] MUST, yukarı akış Android Açık Kaynak Projesi'ndeki Paket Yöneticisi tarafından uygulanan Digital Asset Links spesifikasyonunda tanımlanan doğrulama adımlarını gerçekleştirerek tüm intent filtrelerini doğrulamaya çalışmalıdır.
    • [C-0-5] Uygulama yüklenirken intent filtrelerinin doğrulanması DENENMELİ ve başarıyla doğrulanan tüm URI intent filtreleri, URI'leri için varsayılan uygulama işleyicileri olarak AYARLANMALIDIR.
    • Başarıyla doğrulanırsa ancak diğer aday URI filtreleri doğrulanamazsa kendi URI'leri için belirli URI intent filtrelerini varsayılan uygulama işleyicileri olarak AYARLAYABİLİR. Bir cihaz uygulaması bunu yaparsa ayarlar menüsünde URI başına uygun kalıp geçersiz kılma işlemleri SAĞLAMALIDIR.
    • Kullanıcıya Ayarlar'da uygulama başına uygulama bağlantıları kontrolleri aşağıdaki şekilde SAĞLANMALIDIR:
      • [C-0-6] Kullanıcı, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütünsel olarak geçersiz kılarak her zaman açılacak, her zaman sorulacak veya hiçbir zaman açılmayacak şekilde ayarlayabilmelidir. Bu ayar, tüm aday URI intent filtreleri için eşit şekilde geçerli olmalıdır.
      • [C-0-7] Kullanıcı, aday URI amaç filtrelerinin listesini GÖREBİLMELİDİR.
      • Cihaz uygulaması, kullanıcıya başarıyla doğrulanan belirli aday URI intent filtrelerini intent filtresi bazında geçersiz kılma olanağı TANIMLAYABİLİR.
      • [C-0-8] Cihaz uygulaması, bazı aday URI intent filtrelerinin doğrulamayı geçmesine izin verirken diğerlerinin başarısız olmasına izin veriyorsa kullanıcıların belirli aday URI intent filtrelerini görüntülemesine ve geçersiz kılmasına olanak tanımalıdır.
    3.2.3.3. Niyet Ad Alanları
    • [C-0-1] Cihaz uygulamaları, android.* veya com.android.* ad alanında ACTION, CATEGORY ya da başka bir anahtar dizesi kullanarak yeni intent veya yayın intent kalıplarını destekleyen hiçbir Android bileşeni içermemelidir.
    • [C-0-2] Cihaz uygulayıcıları, başka bir kuruluşa ait paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni bir amaç ya da yayın amacı kalıbını karşılayan Android bileşenleri içermemelidir.
    • [C-0-3] Cihaz uygulayıcıları, 3.2.3.1 bölümünde listelenen amaç kalıplarından hiçbirini değiştirmemeli veya genişletmemelidir.
    • Cihaz uygulamaları, kendi kuruluşlarıyla açık ve belirgin bir şekilde ilişkili ad alanlarını kullanan amaç kalıplarını içerebilir. Bu yasak, 3.6 numaralı bölümde Java dili sınıfları için belirtilen yasağa benzer.
    3.2.3.4. Yayın Amaçları

    Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikleri bildirmek için belirli amaçları yayınlamak üzere platforma güvenir.

    Cihaz uygulamaları:

    • [C-0-1] SDK belgelerinde açıklandığı gibi uygun sistem etkinliklerine yanıt olarak burada listelenen herkese açık yayın amaçlarını yayınLAMALIDIR. Arka plan uygulamalarıyla ilgili sınırlama SDK belgelerinde de açıklandığı için bu şartın 3.5 bölümüyle çelişmediğini unutmayın. Ayrıca, belirli yayın amaçları donanım desteğine bağlıdır. Cihaz gerekli donanımı destekliyorsa amaçları yayınlamalı ve SDK belgelerinde belirtilen davranışları sağlamalıdır.
    3.2.3.5. Koşullu uygulama amaçları

    Android'de, kullanıcıların varsayılan uygulamalarını (ör. ana ekran veya SMS için) kolayca seçmelerini sağlayan ayarlar bulunur.

    Cihaz uygulamaları, anlamlı olduğu durumlarda benzer bir ayarlar menüsü sağlamalı ve SDK belgelerinde aşağıda açıklandığı gibi intent filtresi deseni ve API yöntemleriyle uyumlu olmalıdır.

    Cihaz uygulamaları android.software.home_screen bildiriyorsa:

    Cihaz uygulamaları android.hardware.telephony.calling bildiriyorsa:

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

    Cihaz uygulamaları android.hardware.nfc bildiriyorsa:

    Cihaz uygulamaları android.hardware.bluetooth bildiriyorsa:

    Cihaz uygulamaları, DND özelliğini destekliyorsa:

    • [C-6-1] MUST implement an activity that would respond to the intent ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS, which for implementations with UI_MODE_TYPE_NORMAL it MUST be an activity where the user can grant or deny the app access to DND policy configurations.

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

    • [C-7-1] android.settings.INPUT_METHOD_SETTINGS amacına yanıt olarak üçüncü taraf giriş yöntemlerini eklemek ve yapılandırmak için kullanıcı tarafından erişilebilen bir mekanizma SAĞLANMALIDIR.

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

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

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

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

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

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

    Cihaz uygulamaları android.software.device_admin bildiriyorsa:

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

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

    • [C-SR-2] android.permission.PACKAGE_USAGE_STATS iznini bildiren uygulamalar için android.settings.ACTION_USAGE_ACCESS_SETTINGS amacına yanıt olarak kullanım istatistiklerine erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma SAĞLAMANIZ ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, önceden yüklenmiş uygulamalar da dahil olmak üzere uygulamaların kullanım istatistiklerine erişmesini engellemeyi amaçlıyorsa:

    • [C-15-1] android.settings.ACTION_USAGE_ACCESS_SETTINGS amaç kalıbını işleyen bir etkinliğe sahip olmaya DEVAM ETMELİ ancak bunu işlem yapmayan bir şekilde uygulamalıdır. Yani, kullanıcıya erişim izni verilmediğinde olduğu gibi eşdeğer bir davranışa sahip olmalıdır.

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

    • [C-16-1] Yüklü tüm otomatik doldurma hizmetleri için bu tür bağlantıları göstermelidir.

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

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

    • [C-SR-3] android.intent.action.TTS_SERVICE, android.speech.tts.engine.INSTALL_TTS_DATA ve android.speech.tts.engine.GET_SAMPLE_TEXT amaçlarına saygı duyulması ŞİDDETLE TAVSİYE EDİLİR. SDK'da burada açıklandığı gibi, bu amaçlar için yerine getirme işlevi sağlayan bir etkinlik olmalıdır.

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

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

    Cihaz uygulamaları android.hardware.nfc.uicc veya android.hardware.nfc.ese değerini bildiriyorsa:

    3.2.4. İkincil/birden fazla ekrandaki etkinlikler

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

    • [C-1-1] android.software.activities_on_secondary_displays özellik bayrağı AYARLANMALIDIR.
    • [C-1-2] Birincil ekranda çalışan bir etkinliğe benzer API uyumluluğu GARANTİ EDİLMELİDİR.
    • [C-1-3] Yeni etkinlik, ActivityOptions.setLaunchDisplayId() API'si aracılığıyla hedef ekran belirtilmeden başlatıldığında yeni etkinliği, onu başlatan etkinlikle aynı ekranda başlatMALIDIR.
    • [C-1-4] Display.FLAG_PRIVATE işaretli bir ekran kaldırıldığında TÜM etkinlikler yok edilmelidir.
    • [C-1-5] Uygulama, Activity#setShowWhenLocked() API'sini kullanarak kilit ekranının üzerinde gösterilmeyi etkinleştirmediği sürece cihaz güvenli bir kilit ekranıyla kilitlendiğinde tüm ekranlardaki içerik güvenli bir şekilde gizlenmelidir.
    • İkincil ekranda bir etkinlik başlatılırsa doğru şekilde görüntülenmesi, çalışması ve uyumluluğun korunması için android.content.res.Configuration olmalıdır.

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

    • [C-3-1] Yalnızca söz konusu ekranın, sistemin ve ekranda zaten bulunan etkinliklerin sahibi, bu ekranı başlatabilmelidir. Herkes, android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda başlatma işlemi yapabilir.

    3.3. Yerel API Uyumluluğu

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

    • [C-SR-1] Aşağıda listelenen kitaplıkların uygulamalarını, yukarı akış Android Açık Kaynak Projesi'nden kullanmanız KESİNLİKLE ÖNERİLİR.

    3.3.1. Uygulama İkili Arabirimleri

    Yönetilen Dalvik bayt kodu, uygulamada sağlanan yerel kodu, uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak .apk dosyasına çağırabilir. Yerel kod, temel işlemci teknolojisine büyük ölçüde bağlı olduğundan Android, Android NDK'de bir dizi Uygulama İkili Arabirimi (ABI) tanımlar.

    Cihaz uygulamaları:

    • [C-0-1] Tanımlanmış bir veya daha fazla Android NDK ABI'si ile uyumlu OLMALIDIR.
    • [C-0-2] Standart Java Native Interface (JNI) semantiğini kullanarak yerel kodu çağırmak için yönetilen ortamda çalışan kod desteği İÇERMELİDİR.
    • [C-0-3] Aşağıdaki listede yer alan her gerekli kitaplıkla kaynak uyumlu (yani 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 doğru sıralanmış, virgülle ayrılmış bir ABI listesidir.

    • [C-0-6] Yukarıdaki parametreler aracılığıyla aşağıdaki ABI listesinin bir alt kümesini RAPORLAMALI ve listede yer almayan hiçbir ABI'yi RAPORLAMAMALIDIR.

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

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

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

    • [C-0-10] AOSP'de sistem kitaplıkları olarak uygulanan ve sağlanan diğer yerel kitaplıklar, ayrılmış oldukları için API düzeyi 24 veya üstünü hedefleyen üçüncü taraf uygulamalara sunulMAMALIDIR.

    • [C-0-11] NDK'da tanımlandığı şekilde, libGLESv3.so kitaplığı aracılığıyla tüm OpenGL ES 3.1 ve Android Extension Pack işlev sembollerini dışa aktarmalıdır. Tüm sembollerin bulunması GEREKTİĞİNİ ancak bölüm 7.1.4.1'de, her bir ilgili işlevin tam olarak uygulanmasının beklendiği durumlarla ilgili koşulların daha ayrıntılı olarak açıklandığını unutmayın.

    • [C-0-12] libvulkan.so kitaplığı aracılığıyla VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, VK_KHR_maintenance1 ve VK_KHR_get_physical_device_properties2 uzantılarının yanı sıra temel Vulkan 1.1 işlev sembolleri için işlev sembollerini dışa aktarmalıdır. Tüm sembollerin bulunması GEREKTİĞİNİ ancak 7.1.4.2 bölümünde, her bir ilgili işlevin tam olarak uygulanmasının beklendiği durumlarla ilgili şartların daha ayrıntılı olarak açıklandığını unutmayın.

    • Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kodu ve başlık dosyaları kullanılarak oluşturulmalıdır.

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

    3.3.2. 32 bit ARM Yerel Kod Uyumluluğu

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

    • [C-3-1] armeabi-v7a da desteklenmeli ve desteklendiği bildirilmelidir. armeabi yalnızca eski uygulamalarla geriye dönük uyumluluk için kullanılır.

    Cihaz uygulamaları armeabi-v7a ABI'sinin desteklendiğini bildiriyorsa bu ABI'yi kullanan uygulamalar:

    • [C-2-1] /proc/cpuinfo içinde aşağıdaki satırları İÇERMELİDİR ve diğer ABI'ler tarafından okunduklarında bile aynı cihazdaki değerleri DEĞİŞTİRMEMELİDİR.

      • Features: ve ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi.
      • CPU architecture: ve ardından cihazın desteklediği en yüksek ARM mimarisini açıklayan bir tam sayı (ör. ARMv8 cihazlar için "8").
    • [C-2-2] ABI, ARMv8 mimarisinde yerel CPU desteği veya yazılım emülasyonu aracılığıyla uygulanmış olsa bile AŞAĞIDAKİ işlemler her zaman kullanılabilir olmalıdır:

      • SWP ve SWPB talimatları.
      • CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri.
    • [C-2-3] Advanced SIMD (diğer adıyla NEON) uzantısı için destek İÇERMELİDİR.

    3.4. Web Uyumluluğu

    3.4.1. WebView Uyumluluğu

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

    • [C-1-1] MUST report android.software.webview.

    • [C-1-2] android.webkit.WebView API'nin uygulanması için Android 17 dalında yukarı akış Android Açık Kaynak Projesi'nden Chromium Projesi derlemesi KULLANILMALIDIR.

    • [C-1-3] SDK düzeyi 36 veya daha düşük sürümleri hedefleyen uygulamalar için 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ğeriyle AYNI olmalıdır.

      • $(MODEL) dizesi BOŞ olabilir ancak boş değilse android.os.Build.MODEL ile aynı değere SAHİP OLMALIDIR.

      • "Build/$(BUILD)" atlanabilir ancak mevcutsa $(BUILD) dizesi android.os.Build.ID değerine eşit OLMALIDIR.

      • $(CHROMIUM_VER) dizesinin değeri, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium sürümü OLMALIDIR.

      • Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobile ifadesini atlayabilir.

    • WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliğini desteklemelidir. Özelliği destekliyorsa HTML5 spesifikasyonuna uygun olmalıdır.

    • [C-1-4] Sağlanan içeriği veya uzak URL içeriğini, WebView'u başlatan uygulamadan farklı bir süreçte oluşturmalıdır. Özellikle ayrı oluşturma işlemi daha düşük ayrıcalığa sahip OLMALI, ayrı bir kullanıcı kimliği olarak ÇALIŞMALI, uygulamanın veri dizinine erişimi OLMAMALI, doğrudan ağ erişimi OLMAMALI ve yalnızca Binder üzerinden minimum düzeyde gerekli sistem hizmetlerine erişebilmelidir. WebView'ın AOSP uygulaması bu koşulu karşılar.

    Android 17'de eklenen şartların başlangıcı

    • [C-1-5] SDK düzeyi 37 veya daha yüksek sürümleri hedefleyen uygulamalar için WebView tarafından bildirilen sistem varsayılan kullanıcı aracısı dizesi şu biçimde OLMALIDIR:

      Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) ; wv)
      AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0
      $(CHROMIUM_MAJOR_VER).0.0.0 Mobile Safari/537.36
      
      • $(VERSION) dizesinin değeri, 10 statik değeri OLMALIDIR.
      • $(MODEL) dizesi, K statik harfi OLMALIDIR.
      • $(CHROMIUM_MAJOR_VER) dizesinin değeri, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium'un ana sürümü OLMALIDIR.
      • Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobile ifadesini atlayabilir.

    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 bu API'lerin her birini DESTEKLEMELİDİR:

    • [C-1-2] HTML5/W3C webstorage API'yi DESTEKLEMELİ ve HTML5/W3C IndexedDB API'yi DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları, web depolama yerine IndexedDB'yi tercih etmeye başladığından IndexedDB'nin Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesi beklenmektedir.

    • Bağımsız tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi GÖNDEREBİLİR.

    • Bağımsız tarayıcı uygulamasında (yukarı akış WebKit tarayıcı uygulamasına veya üçüncü taraf bir alternatife dayalı olsun ya da olmasın) mümkün olduğunca fazla HTML5 desteği uygulanmalıdır.

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

    • [C-2-1] 3.2.3.1 bölümünde açıklanan herkese açık amaç kalıplarını desteklemeye DEVAM ETMELİDİR.

    3.5. API Davranış Uyumluluğu

    Cihaz uygulamaları:

    • [C-0-9] Bölüm 3.5.1'de açıklandığı şekilde kısıtlanmadıkları sürece, API davranış uyumluluğunun yüklenen tüm uygulamalar için geçerli olmasını SAĞLAMALIDIR.
    • [C-0-10] YALNIZCA cihaz uygulayıcıları tarafından seçilen uygulamalar için API davranış uyumluluğunu sağlayan izin verilenler listesi yaklaşımı UYGULANMAMALIDIR.

    API türlerinin (yönetilen, yumuşak, yerel ve web) her birinin davranışları, yukarı akış Android Açık Kaynak Projesi'nin tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumlulukla ilgili bazı özel alanlar şunlardır:

    • [C-0-1] Cihazlar, standart bir amacın davranışını veya semantiğini DEĞİŞTİRMEMELİDİR.
    • [C-0-2] Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, ContentProvider vb.) yaşam döngüsünü veya yaşam döngüsü semantiğini DEĞİŞTİRMEMELİDİR.
    • [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEMELİDİR.
    • Cihazlar, arka plan uygulamalarına uygulanan sınırlamaları DEĞİŞTİRMEMELİDİR. Daha açık şekilde belirtmek gerekirse, arka planda çalışan uygulamalar için:
      • [C-0-4] Uygulama, GnssMeasurement ve GnssNavigationMessage'tan çıkış almak için kaydedilen geri aramaları yürütmeyi DURDURMALIDIR.
      • [C-0-5] LocationManager API sınıfı veya WifiManager.startScan() yöntemi aracılığıyla uygulamaya sağlanan güncellemelerin sıklığını sıklık sınırlaması uygulamalıdır.
      • [C-0-6] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa yayın amacı bir "signature" veya "signatureOrSystem" protectionLevel izni gerektirmiyorsa ya da muafiyet listesinde değilse uygulamanın manifest dosyasında standart Android amaçlarının örtülü yayınları için yayın alıcılarının kaydedilmesine İZİN VERMEMELİDİR.
      • Uygulama API düzeyi 25 veya daha üst bir düzeyi hedefliyorsa, kullanıcıya görünür bir görevi yerine getirmek için geçici izin verilenler listesine yerleştirilmediği sürece, uygulamanın arka plan hizmetlerini, hizmetlerin stopSelf() yöntemini çağırmış gibi durdurması ZORUNLUDUR. [C-0-7]
      • [C-0-8] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa uygulamanın tuttuğu uyandırma kilitlerini serbest bırakması ZORUNLUDUR.
    • [C-0-11] Uygulama, listeyi insertProviderAt() veya removeProvider() aracılığıyla değiştirmediği sürece cihazlar, Security.getProviders() yönteminden döndürülen ilk yedi dizi değeri olarak aşağıdaki güvenlik sağlayıcıları, belirtilen sırayla ve belirtilen adlarla (Provider.getName() tarafından döndürüldüğü gibi) ve sınıflarla döndürmelidir. Cihazlar, aşağıdaki belirtilen sağlayıcı listesinden SONRA ek sağlayıcılar döndÜREBİLİR.
      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 liste tam kapsamlı değildir. Compatibility Test Suite (CTS) testleri, platformun önemli bölümlerini davranışsal uyumluluk açısından test eder ancak tüm bölümlerini test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcılar mümkün olduğunda sistemin önemli kısımlarını yeniden uygulamak yerine Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodunu KULLANMALIDIR.

    3.5.1. Uygulama Kısıtlaması

    Cihaz uygulamaları, uygulamaları kısıtlamak için tescilli bir mekanizma uyguluyorsa (ör. SDK'da açıklanan API davranışlarını değiştirme veya kısıtlama) ve bu mekanizma Kısıtlanmış Uygulamayı Beklemeye Alma Paketi'nden daha kısıtlayıcıysa:

    • [C-1-1] Kullanıcının kısıtlanmış uygulamaların listesini görmesine İZİN VERİLMELİ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ıya olanak TANINMALIDIR.
    • [C-1-3] Bu tescilli kısıtlamalar, sistemin kötü sağlık davranışına dair kanıt olmadan otomatik olarak UYGULANMAMALI, ancak kilitlenmiş uyandırma kilitleri, uzun süredir çalışan hizmetler ve diğer ölçütler gibi sistemin kötü sağlık davranışları tespit edildiğinde uygulamalara UYGULANABİLİR. Ölçütler, cihaz uygulayıcıları tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili OLMALIDIR. Sistemin sağlığıyla tamamen ilgili olmayan diğer kriterler (ör. uygulamanın piyasada popüler olmaması) kriter olarak KULLANILMAMALIDIR.

    • [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 bir uygulamaya otomatik olarak uygulanırsa kullanıcıları bilgilendirmelidir. Bu tür bilgiler, bu tescilli kısıtlamaların uygulanmasından önceki 24 saatlik süre içinde SAĞLANMALIDIR.

    • [C-1-6] Bir uygulamadan gelen tüm API çağrıları için ActivityManager.isBackgroundRestricted() yönteminde doğru (true) değeri döndürülmelidir.

    • [C-1-7] Kullanıcı tarafından açıkça kullanılan en üstteki ön planda çalışan uygulama kısıtlanMAMALIDIR.

    • [C-1-8] Kullanıcı uygulamayı açıkça kullanmaya başladığında ve uygulamayı ön plandaki en üst uygulama yaptığında bu tescilli kısıtlamalar UYGULAMADA askıya ALINMALIDIR.

    • [C-1-10] Tescilli kısıtlamaların nasıl uygulandığını açıklayan herkese açık ve net bir belge veya web sitesi SAĞLANMALIDIR. Bu doküman veya web sitesi, Android SDK dokümanlarından BAĞLANTILANDIRILABİLİR olmalı ve şunları içermelidir:

      • Tescilli kısıtlamalar için tetikleme koşulları.
      • Bir uygulamanın hangi özellikleri nasıl kısıtlanabilir?
      • 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 uygulamanın tescilli kısıtlamalardan nasıl muafiyet isteyebileceği.

    Cihazda önceden yüklenmiş bir uygulama, kullanıcı tarafından 30 günden uzun süre açıkça kullanılmadıysa [C-1-3] [C-1-5] maddeleri muaf tutulur.

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

    • [C-2-1]Bu belgede açıklanan uygulama takip EDİLMELİDİR.

    3.5.2. Uygulamayı Hazırda Bekletme

    Cihaz uygulamaları, AOSP'ye dahil edilen veya AOSP'ye dahil edilen özelliği genişleten uygulama uyku modunu içeriyorsa:

    • [C-1-1] [C-1-6] ve [C-1-3] hariç olmak üzere bölüm 3.5.1'deki tüm koşulları KARŞILAMALIDIR.
    • [C-1-2] Kısıtlama, yalnızca kullanıcının uygulamayı bir süredir kullanmadığına dair kanıt olduğunda uygulanmalıdır. Bu sürenin bir ay veya daha uzun olması ŞİDDETLE TAVSİYE EDİLİR. Kullanım, UsageStats#getLastTimeVisible() API'si aracılığıyla açık kullanıcı etkileşimi veya bir uygulamanın zorla durdurulmuş durumdan çıkmasına neden olacak herhangi bir şey (ör. hizmet bağlamaları, içerik sağlayıcı bağlamaları, açık yayınlar vb.) ile tanımlanmalıdır. Bu, yeni bir API olan UsageStats#getLastTimeAnyComponentUsed() ile izlenir.
    • [C-1-3] YALNIZCA 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 uygulanMALIDIR. Bu sürenin bir ay veya daha uzun olması ŞİDDETLE TAVSİYE EDİLİR.
    • [C-1-4] Uygulama, etkinlik amaçlarına, hizmet bağlamalarına, içerik sağlayıcı isteklerine veya açık yayınlara yanıt veremez hale GELMEMELİDİR.

    AOSP'deki uygulama uyku modu, yukarıdaki koşulları karşılar.

    3.6. API ad alanları

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

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

    Yani:

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

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

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

    Ancak cihaz uygulayıcıları, standart Android ad alanı dışında özel API'ler ekleyebilir. Bu özel API'ler:

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

    Cihaz uygulayıcıları, NDK API'leri dışında yerel dillerde özel API'ler ekleyebilir. Ancak özel API'ler:

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

    Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarından birini iyileştirmeyi önerirse (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) uygulayıcı source.android.com adresini ziyaret etmeli ve bu sitedeki bilgilere göre değişiklik ve kod katkıda bulunma sürecini başlatmalıdır.

    Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmaya yönelik standart kurallara karşılık geldiğini unutmayın. Bu bölümün amacı yalnızca bu kuralları pekiştirmek ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmektir.

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

    Cihaz uygulamaları:

    • [C-0-1] MUST support the full Dalvik Executable (DEX) format and Dalvik bytecode specification and semantics.

    • [C-0-2] Dalvik çalışma zamanları, yukarı akış Android platformuna uygun olarak ve aşağıdaki tabloda belirtildiği şekilde bellek ayıracak şekilde yapılandırılmalıdır. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 bölümüne bakın.)

    • Dalvik Executable Format'ın referans upstream uygulaması olan Android RunTime (ART) ve referans uygulamanın paket yönetim sistemi KULLANILMALIDIR.

    • Çalışma zamanının kararlılığını sağlamak için çeşitli yürütme modlarında ve hedef mimarilerde bulanıklaştırma testleri YAPILMALIDIR. Android Açık Kaynak Projesi web sitesindeki JFuzz ve DexFuzz bölümlerine bakın.

    Aşağıda belirtilen bellek değerlerinin minimum değerler olduğu ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceği unutulmamalıdır.

    Ekran düzeni Ekran Yoğunluğu Minimum Uygulama Belleği
    Android Watch 120 dpi (ldpi) 32 MB
    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) 32 MB
    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) 128 MB
    560 dpi (560dpi) 192MB
    640 dpi (xxxhdpi) 256 MB
    large 120 dpi (ldpi) 32 MB
    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) 128 MB
    360 dpi (360dpi) 160MB
    400 dpi (400dpi) 192MB
    420 dpi (420dpi) 228MB
    480 dpi (xxhdpi) 256 MB
    560 dpi (560dpi) 384MB
    640 dpi (xxxhdpi) 512 MB
    xlarge 120 dpi (ldpi) 48MB
    140 dpi (140dpi) 80MB
    160 dpi (mdpi)
    180 dpi (180dpi) 96MB
    200 dpi (200dpi)
    213 dpi (tvdpi)
    220 dpi (220dpi)
    240 dpi (hdpi)
    280 dpi (280dpi) 144MB
    320 dpi (xhdpi) 192MB
    360 dpi (360dpi) 240MB
    400 dpi (400dpi) 288MB
    420 dpi (420dpi) 336MB
    480 dpi (xxhdpi) 384MB
    560 dpi (560dpi) 576MB
    640 dpi (xxxhdpi) 768MB

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

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

    Android'de bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerine geçecek üçüncü taraf uygulamaları için destek bulunur.

    Cihaz uygulamaları, üçüncü taraf uygulamalarının cihazın ana ekranının yerini almasına izin veriyorsa:

    • [C-1-1] Platform özelliği android.software.home_screen BİLDİRİLMELİDİR.

    • [C-1-2] Üçüncü taraf uygulaması, simgesini sağlamak için <adaptive-icon> etiketini kullandığında ve simgeleri almak için PackageManager yöntemleri çağrıldığında AdaptiveIconDrawable nesnesini döndÜRMELİDİR.

    Cihaz uygulamaları, uygulama içi kısayol sabitlemeyi destekleyen varsayılan bir başlatıcı içeriyorsa:

    Aksine, cihaz uygulamaları uygulama içi kısayol sabitlemeyi 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ı uyguluyorsa:

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

    Cihaz uygulamalarında, uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması varsa:

    • [C-5-1] NotificationChannel.setShowBadge() API yöntemine UYMALIDIR. Diğer bir deyişle, değer true olarak ayarlanmışsa uygulama simgesiyle ilişkili görsel bir ipucu gösterin ve uygulamanın tüm bildirim kanalları değeri false olarak ayarladığında herhangi bir uygulama simgesi rozet şeması göstermeyin.

    • Üçüncü taraf uygulamaları, tescilli API'leri kullanarak tescilli rozetleme şemasını desteklediğini belirttiğinde MAY, uygulama simgesi rozetlerini tescilli rozetleme şemasıyla geçersiz kılabilir ancak SDK'da açıklanan bildirim rozetleri API'leri aracılığıyla sağlanan kaynakları ve değerleri (ör. Notification.Builder.setNumber() ve Notification.Builder.setBadgeIconType() API'si) KULLANMALIDIR.

    Cihaz uygulamaları tek renkli simgeleri destekliyorsa bu simgeler:

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

    3.8.2. Widget'lar

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

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

    Android 17'de şartların başlangıcı değişti

    • [C-1-1] Platform özelliği desteği BEYAN EDİLMELİDİR android.software.app_widgets.

    • [C-1-2] Kullanıcının güvenliği (ör. sürücünün dikkatinin dağılması) söz konusu olmadığı sürece AppWidget'ler için yerleşik destek içermeli ve AppWidget'leri eklemek, yapılandırmak, önizlemek, kaldırmak, görüntülemek ve yeniden boyutlandırmak için kullanıcı arayüzü olanakları sunmalıdır.

    Android 17'de kaldırılan şartların başlangıcı

    Android 17'de eklenen şartların başlangıcı

    • 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 önemli etkinlikler hakkında kullanıcıları 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'lerini içerir.

    3.8.3.1. Bildirimlerin Gösterilmesi

    Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli etkinliklerden haberdar etmesine izin veriyorsa:

    • [C-1-1] SDK dokümanlarında açıklandığı gibi ve cihaz uygulama donanımıyla mümkün olduğu ölçüde, donanım özelliklerini kullanan bildirimleri desteklemelidir. Örneğin, bir cihaz uygulamasında titreşim motoru varsa titreşim API'lerini DOĞRU şekilde uygulaması ZORUNLUDUR. Bir cihaz uygulamasında donanım eksikse ilgili API'ler işlem yapmayan işlemler olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmıştır.

    • [C-1-2] API'lerde veya Durum/Sistem Çubuğu simge stil kılavuzunda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) DOĞRU şekilde oluşturmalıdır. Bununla birlikte, referans Android Açık Kaynak uygulaması tarafından sağlanan bildirimlerden farklı bir kullanıcı deneyimi sunabilir.

    • [C-1-3] Bildirimleri güncellemek, kaldırmak ve gruplandırmak için API'lerde açıklanan davranışlara UYULMALI ve bu davranışlar doğru şekilde uygulanmalıdır.

    • [C-1-4] SDK'da belgelenen NotificationChannel API'sinin tüm davranışlarını SAĞLAMALIDIR.

    • [C-1-5] Belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek ve değiştirmek için kullanıcıya olanak TANINMALIDIR.

    • [C-1-6] Ayrıca, silinen bildirim kanallarını görüntülemek için kullanıcıya bir olanak SAĞLANMALIDIR.

    • [C-1-7] Notification.MessagingStyle aracılığıyla sağlanan tüm kaynaklar (resimler, çıkartmalar, simgeler vb.) bildirim metniyle birlikte ek kullanıcı etkileşimi olmadan DOĞRU şekilde oluşturulmalıdır. Örneğin, setGroupConversation ile ayarlanan bir grup görüşmesinde android.app.Person aracılığıyla sağlanan simgeler de dahil olmak üzere tüm kaynaklar GÖSTERİLMELİDİR.

    • [C-SR-1] Kullanıcıya, Bildirim Dinleyici izni verilen uygulamalara gösterilen bildirimleri kontrol etme olanağı sunması ŞİDDETLE TAVSİYE EDİLİR. Ayrıntı düzeyi, kullanıcının her bir bildirim dinleyicisi için hangi bildirim türlerinin bu dinleyiciye aktarılacağını kontrol edebileceği şekilde OLMALIDIR. Türler "görüşmeler", "uyarılar", "sessiz" ve "önemli devam eden" bildirimlerini İÇERMELİDİR.

    • [C-SR-2] Kullanıcılara, belirli bir bildirim dinleyicisine bildirim göndermeyecek uygulamaları belirtme olanağı sunulması ŞİDDETLE TAVSİYE EDİ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 bu uygulamanın bildirimini engellemek için kullanıcıya otomatik olarak bir seçenek sunulması ŞİDDETLE TAVSİYE EDİLİR.

    • Zengin bildirimleri DESTEKLEMELİDİR.

    • Daha yüksek öncelikli bazı bildirimleri uyarı bildirimi olarak göstermelidir.

    • Bildirimleri ertelemek için kullanıcıya olanak tanımalıdır.

    • MAY, sürücünün dikkatini dağıtma gibi güvenlik sorunlarını azaltmak için yalnızca üçüncü taraf uygulamaların kullanıcıları önemli etkinliklerden ne zaman haberdar edebileceğinin görünürlüğünü ve zamanlamasını yönetir.

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

    Cihaz uygulamaları:

    • [C-SR-4] Devam eden ön plan hizmeti bildirimleri ve importance:high bildirimleri hariç olmak üzere, conversation notifications'nin, görüşme dışı bildirimlerden önce gruplandırılması ve gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.

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

    • [C-SR-5] Bu görüşmenin baloncuk olarak gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. AOSP uygulaması, varsayılan Sistem Arayüzü, Ayarlar ve Başlatıcı ile bu koşulları 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ı KULLANILMALIDIR.

    • Notification.Style API sınıfında ve alt sınıflarında tanımlanan her bir kaynak öğesini (ör. simge, başlık ve özet metni) sunmalıdır.

    Heads up bildirimleri, kullanıcının kullandığı yüzeyden bağımsız olarak geldiği anda kullanıcıya sunulan bildirimlerdir. Cihaz uygulamaları, heads-up bildirimlerini destekliyorsa:

    • [C-3-1] MUST use the heads-up notification view and resources as described in the Notification.Builder API class when heads-up notifications are presented.

    • [C-3-2] Notification.Builder.addAction() aracılığıyla sağlanan işlemler, SDK'da açıklandığı gibi ek kullanıcı etkileşimi olmadan bildirim içeriğiyle birlikte GÖSTERİLMELİDİR.

    3.8.3.2. Bildirim Dinleyici Hizmeti

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

    Cihaz uygulamaları:

    • [C-0-1] Bildirim nesnesine eklenen tüm meta veriler dahil olmak üzere, bu tür yüklü ve kullanıcı tarafından etkinleştirilmiş tüm dinleyici hizmetlerindeki bildirimleri eksiksiz olarak doğru ve hızlı bir şekilde güncellemelidir.

    • [C-0-2] snoozeNotification() API çağrısına UYMALIDIR ve bildirimi kapatıp API çağrısında ayarlanan erteleme süresinden sonra geri arama yapmalıdır.

    Cihaz uygulamalarında bildirimleri ertelemek için kullanıcıya sunulan bir özellik varsa:

    • [C-1-1] NotificationListenerService.getSnoozedNotifications() gibi standart API'ler aracılığıyla ertelenen bildirim durumu doğru şekilde yansıtılmalıdır.

    • [C-1-2] Kalıcı/ön plan hizmetlerinden gelmedikleri sürece, yüklü her üçüncü taraf uygulamasından gelen bildirimleri ertelemek için bu kullanıcı işlevini KULLANIMA SUNMALIDIR.

    3.8.3.3. DND (Rahatsız Etmeyin) / Öncelik Modu

    Cihaz uygulamaları, Rahatsız Etmeyin özelliğini (öncelik modu olarak da bilinir) destekliyorsa:

    • [C-1-1] Cihaz uygulaması, kullanıcının üçüncü taraf uygulamalarına rahatsız etmeyin politikası yapılandırmasına erişim izni vermesini veya bu erişimi reddetmesini sağlayan bir yöntem sunduğunda, uygulamalar tarafından oluşturulan Otomatik rahatsız etmeyin kuralları, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kurallarla birlikte GÖSTERİLMELİDİR.

    • [C-1-3] suppressedVisualEffects NotificationManager.Policy ile iletilen değerlere UYULMALIDIR ve bir uygulama SUPPRESSED_EFFECT_SCREEN_OFF veya SUPPRESSED_EFFECT_SCREEN_ON işaretlerinden herhangi birini ayarladıysa kullanıcılara, görsel efektlerin DND ayarları menüsünde devre dışı bırakıldığı BİLDİRİLMELİDİR.

    3.8.3.4. Hassas Bildirim Koruması

    Hassas bildirim bilgileri arasında, kullanıcılara bildirim olarak gönderilebilen tek kullanımlık şifreler, tek kullanımlık onay kodları ve benzer kimlik doğrulama veya sıfırlama kodları gibi içerikler yer alır.

    Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli etkinliklerden haberdar etmesine izin veriyorsa:

    • [C-1-1] Dinleyici hizmeti aşağıdakilerden biri olmadığı sürece, hassas bildirim bilgilerinin bildirim dinleyicilerine iletilmesi KESİNLİKLE engellenmelidir:

      • uid < 10000 olan sistem imzalı uygulamalar
      • Sistem Arayüzü
      • kabuk
      • Belirlenmiş Yardımcı Cihaz Uygulaması (CompanionDeviceManager tarafından tanımlanır)
      • SYSTEM_AUTOMOTIVE_PROJECTION rolü
      • SYSTEM_NOTIFICATION_INTELLIGENCE rolü
      • HOME rolü

    NotificationAssistantServices AOSP uygulaması bu şartları örnekler ve karşılar. Örnek için android.ext.services.notification bölümüne bakın.

    3.8.4. Assist API'leri

    Android, uygulamaların mevcut bağlamdaki bilgilerin ne kadarının cihazdaki asistanla paylaşılacağını seçmesine olanak tanıyan Assist API'lerini içerir.

    Android 17'de şartların başlangıcı değişti

    Cihaz uygulamaları Asistan eylemini destekliyorsa:

    • [C-2-1] Bağlam paylaşıldığında son kullanıcıya açıkça bildirilmelidir. Bu işlem aşağıdakilerden biriyle yapılabilir:

      • Asistan uygulaması bağlama her eriştiğinde, Android Açık Kaynak Projesi uygulamasının süresini ve parlaklığını karşılayan veya aşan bir süre boyunca ekranın kenarlarında beyaz bir ışık gösterilir.

      • Önceden yüklenmiş asistan uygulaması için, varsayılan sesli giriş ve asistan uygulaması ayarları menüsünden iki gezinmeden daha az uzaklıkta bir kullanıcı olanağı sunulmalı ve bağlam yalnızca asistan uygulaması, kullanıcı tarafından bir etkin kelime veya asistan gezinme anahtarı girişi aracılığıyla açıkça çağrıldığında paylaşılmalıdır.

    • [C-2-1] YALNIZCA kullanıcı, asistan uygulamayı yardım navigasyon tuşu girişi, özel kelime veya diğer belirlenmiş giriş noktaları aracılığıyla açıkça çağırdığında bağlamı asistan uygulamasıyla paylaşmalıdır.

    • [C-2-2] Bölüm 7.2.3'te açıklandığı gibi, asistan uygulamasını başlatmak için belirlenen etkileşim, kullanıcı tarafından seçilen asistan uygulamasını (diğer bir deyişle VoiceInteractionService'yi uygulayan uygulama) veya ACTION_ASSIST intentini işleyen bir etkinliği başlatmalıdır.

    3.8.5. Uyarılar ve Toast Bildirimleri

    Uygulamalar, son kullanıcıya kısa bir süre sonra kaybolan kısa, modsuz dizeler göstermek için Toast API'yi, diğer uygulamaların üzerinde 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 kullanarak uyarı pencereleri göstermesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR. AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu şartı karşılar.

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

    3.8.6. Temalar

    Android, uygulamaların bir Etkinlik veya uygulamanın tamamında stiller uygulaması için bir mekanizma olarak "temalar" sunar.

    Android, uygulama geliştiricilerin Android SDK tarafından tanımlanan Holo tema görünümüne ve tarzına uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir stil grubu olarak "Holo" ve "Material" tema ailesini içerir.

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

    • [C-1-1] Uygulamalara sunulan Holo teması özelliklerinden hiçbirini değiştirmemelidir.

    • [C-1-2] "Material" tema ailesini DESTEKLEMELİ ve Material tema özelliklerinden veya uygulamalara sunulan öğelerinden herhangi birini DEĞİŞTİRMEMELİDİR.

    • [C-1-3] Roboto'nun desteklediği dillerde "sans-serif" yazı tipi ailesini Roboto 2.x sürümü olarak ayarlamalı veya Roboto'nun desteklediği dillerde "sans-serif" yazı tipi ailesi için kullanılan yazı tipini Roboto 2.x sürümü olarak değiştirmek üzere kullanıcıya bir olanak sunmalıdır.

    • [C-1-4] Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES ile ilgili AOSP belgelerinde belirtildiği şekilde dinamik renk ton paletleri OLUŞTURMALIDIR (bkz. android.theme.customization.system_palette ve android.theme.customization.theme_style).

    • [C-1-5] Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES belgelerinde (android.theme.customization.theme_styles) listelenen renk teması stillerini kullanarak dinamik renk tonu paletleri oluşturmalıdır. Bu stiller TONAL_SPOT, VIBRANT, EXPRESSIVE, SPRITZ, RAINBOW, FRUIT_SALAD ve MONOCHROMATIC'dır.

      android.theme.customization.system_palette ile gönderildiğinde dinamik renk ton paletleri oluşturmak için kullanılan "Kaynak rengi" (android.theme.customization.system_palette içinde belgelendiği gibi).Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES

    • [C-1-6] CAM16 renk doygunluğu değeri 5 veya daha büyük OLMALIDIR.

      • com.android.systemui.monet.ColorScheme#getSeedColors aracılığıyla duvar kağıdından türetilmelidir. Bu işlev, aralarından seçim yapabileceğiniz birden fazla geçerli kaynak rengi sağlar.

      • Sağlanan renklerden hiçbiri yukarıdaki kaynak rengi şartını karşılamıyorsa 0xFF1B6EF3 değerini KULLANMALIDIR.

    Android'de ayrıca, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünüm ve tarzına uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir dizi stil olarak "Cihaz Varsayılanı" tema ailesi de bulunur.

    Android, yarı saydam sistem çubuklarına sahip bir tema varyantını destekler. Bu tema, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içerikleriyle doldurmasına olanak tanır. Bu yapılandırmada tutarlı bir geliştirici deneyimi sağlamak için durum çubuğu simge stilinin farklı cihaz uygulamalarında korunması önemlidir.

    Cihaz uygulamaları sistem durumu çubuğu içeriyorsa:

    • [C-2-1] Simge, sorunlu bir durumu gösteriyor veya bir uygulama WindowInsetsController#APPEARANCE_LIGHT_STATUS_BARS işaretini kullanarak açık renkli bir durum çubuğu istiyorsa sistem durumu simgeleri (ör. sinyal gücü ve pil seviyesi) ve sistem tarafından verilen bildirimler için BEYAZ renk KULLANILMALIDIR.

    • [C-2-2] Bir uygulama açık renkli durum çubuğu istediğinde Android cihaz uygulamaları, sistem durum simgelerinin rengini siyaha çevirmelidir (ayrıntılar için R.style'a bakın).

    3.8.7. Animasyonlu Duvar Kağıtları

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

    Donanım, tüm canlı duvar kağıtlarını işlevsellik açısından herhangi bir sınırlama olmadan, diğer uygulamaları olumsuz etkilemeden makul bir kare hızında çalıştırabiliyorsa canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabildiği kabul edilir. Donanımdaki sınırlamalar nedeniyle duvar kağıtları ve/veya uygulamalar kilitlenir, düzgün çalışmaz, aşırı CPU veya pil gücü tüketir ya da kabul edilemeyecek kadar düşük kare hızlarında çalışırsa donanımın animasyonlu duvar kağıdı çalıştırması mümkün değildir. Örneğin, bazı canlı duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamını kullanabilir. Animasyonlu duvar kağıdı, OpenGL bağlamlarını kullanan diğer uygulamalarla çakışabileceğinden birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.

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

    Cihaz uygulamaları animasyonlu duvar kağıtlarını destekliyorsa:

    • [C-1-1] Platform özellik bayrağını bildirmelidir android.software.live_wallpaper.

    3.8.8. Etkinlikler Arasında Geçiş Yapma

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

    Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi navigasyon tuşunu içeren cihaz uygulamaları arayüzü değiştireBİLİR.

    Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi gezinme tuşunu içeren cihaz uygulamaları arayüzü değiştirirse:

    • [C-1-1] En az 7 görüntülenen etkinliği destekLEMELİDİR.

    • Aynı anda en az 4 etkinliğin başlığını göstermelidir.

    • Son kullanılanlarda vurgu rengi, simge ve ekran başlığı GÖSTERİLMELİDİR.

    • Kapatma seçeneği ("x") GÖSTERİLMELİDİR ancak bu seçenek, kullanıcı ekranlarla etkileşime girene kadar GECİKTİRİLEBİLİR.

    • Önceki etkinliğe kolayca geçmek için kısayol İÇERMELİDİR.

    • Son kullanılanlar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işlemini TETİKLEMELİDİR.

    • Destekleniyorsa son uygulamalar işlev tuşuna uzun basıldığında bölünmüş ekran çoklu pencere modunu TETİKLEMELİDİR.

    • Bağlı son öğeleri birlikte hareket eden bir grup olarak GÖSTEREBİLİR.

    • [C-SR-1] Genel bakış ekranı için yukarı akış Android kullanıcı arayüzünün (veya benzer bir küçük resim tabanlı arayüzün) kullanılması ŞİDDETLE TAVSİYE EDİLİR.

    3.8.9. Giriş Yönetimi

    Android, Giriş Yönetimi'ni ve üçüncü taraf giriş yöntemi düzenleyicilerini destekler.

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

    • [C-1-1] Platform özelliği android.software.input_methods bildirilmeli ve Android SDK belgelerinde tanımlandığı şekilde IME API'leri desteklenmelidir.

    3.8.10. Kilit ekranında medya kontrolü

    Android 5.0'dan itibaren, medya uygulamalarının kilit ekranında gösterilen oynatma kontrolleriyle entegre olmasına olanak tanıyan Medya Bildirimi Şablonu lehine Remote Control Client API'nin desteği sonlandırıldı.

    3.8.11. Ekran koruyucular (eski adıyla İlham Sahnesi)

    Ekran koruyucuları yapılandırma ayarları için 3.2.3.5 bölümüne bakın.

    3.8.12. Konum

    Cihaz uygulamaları, konum koordinatlarını sağlayabilen bir donanım sensörü (ör. GPS) içeriyorsa:

    3.8.13. Unicode ve Yazı Tipi

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

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

    • [C-1-1] Bu emoji karakterleri renkli glif olarak oluşturulabilmelidir.

    • [C-1-2] Şunlar için destek İÇERMELİDİR:

      • Cihazda kullanılabilen diller için farklı ağırlıklara sahip Roboto 2 yazı tipi (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black, sans-serif-condensed, sans-serif-condensed-light).

      • Latin, Yunan ve Kiril alfabelerinin Unicode 7.0'daki tüm karakterleri (Latin Extended A, B, C ve D aralıkları ve Unicode 7.0'ın para birimi sembolleri bloğundaki tüm glifler dahil)

    • [C-1-3] Sistem görüntüsündeki NotoColorEmoji.tff kaldırılmamalı veya değiştirilmemelidir. (NotoColorEmoji.tff içindeki emojileri geçersiz kılmak için yeni bir emoji yazı tipi eklemek kabul edilebilir.)

    • Unicode Teknik Raporu #51'de belirtildiği gibi cilt tonunu ve çeşitli aile emoji'lerini DESTEKLEMELİDİR.

    Cihaz uygulamaları bir IME içeriyorsa:

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

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

    Cihaz uygulamaları Birmanca desteği içeriyorsa:

    • [C-2-1] Metin, varsayılan olarak Unicode uyumlu yazı tipiyle oluşturulmalıdır; Unicode uyumlu olmayan yazı tipi, kullanıcı dil seçicide bu yazı tipini seçmediği sürece varsayılan yazı tipi olarak ayarlanmamalıdır.

    • [C-2-2] Cihazda Unicode uyumlu olmayan bir yazı tipi destekleniyorsa Unicode yazı tipi ve Unicode uyumlu olmayan bir yazı tipi DESTEKLENMELİDİR. Unicode uyumlu olmayan yazı tipi, Unicode yazı tipini kaldırmamalı veya üzerine yazmamalıdır.

    • [C-2-3] YALNIZCA Qaag komut dosyası koduna sahip bir dil kodu (ör. my-Qaag) belirtilmişse metin, Unicode uyumlu olmayan bir yazı tipiyle oluşturulmalıdır. Myanmar için Unicode uyumlu olmayan yazı tipine atıfta bulunmak üzere başka ISO dil veya bölge kodları (atanmış, atanmamış ya da ayrılmış olsun) kullanılamaz. Uygulama geliştiriciler ve web sayfası yazarları, diğer dillerde olduğu gibi my-Qaag'ı belirlenmiş dil kodu olarak belirtebilir.

    3.8.14. Çoklu pencereler

    Cihaz uygulamaları aynı anda birden fazla etkinlik görüntüleme özelliğine sahipse:

    • [C-1-1] Bu tür çoklu pencere modlarını, Android SDK çoklu pencere modu destek belgelerinde açıklanan uygulama davranışlarına ve API'lere uygun şekilde uygulamalı ve aşağıdaki koşulları karşılamalıdır:

    • [C-1-2] Android 16'da şart kaldırıldı.

    • [C-1-3] Ekran yüksekliği 440 dp'den az ve ekran genişliği 440 dp'den azsa bölünmüş ekran veya serbest biçim modu SUNULMAMALIDIR.

    • [C-1-4] Etkinlik, resim içinde resim dışındaki çok pencereli modlarda 220 dp'den küçük bir boyuta yeniden boyutlandırılMAMALIDIR.

    Android 17'de eklenen şartların başlangıcı

    • [C-1-5] selfMovable özelliğine sahip görevler, başlık çubuğu gibi ayırt edilebilir kalıcı bir süslemeyle ve bu tür görevleri kalıcı süslemelerinden kapatma yöntemiyle tam opaklıkta GÖSTERİLMELİ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 yerleştirilmiş etkinliği KESİLMELİDİR ancak Başlatıcı uygulaması odaklanılan pencereyse bu etkinliğin bir kısmı GÖSTERİLMELİDİR.

    • [C-2-3] Üçüncü taraf başlatıcı uygulamasının beyan edilen AndroidManifestLayout_minWidth ve AndroidManifestLayout_minHeight değerlerine UYULMALI ve yerleştirilmiş etkinliğin bazı içerikleri gösterilirken bu değerler geçersiz kılınmamalıdır.

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

    • [C-3-1] Uygulama şu durumlarda etkinlikleri pencere içinde pencere çoklu pencere modunda BAŞLATMALIDIR:

    • [C-3-2] setActions() API'si aracılığıyla, geçerli PIP etkinliğinde belirtildiği şekilde, Sistem Kullanıcı Arayüzü'ndeki işlemleri kullanıma sunmalıdır.

    • [C-3-3] setAspectRatio() API'si aracılığıyla PIP etkinliğinde belirtildiği gibi, 1:2,39'a eşit veya daha büyük ve 2,39:1'e eşit veya daha küçük en-boy oranlarını DESTEKLEMELİDİR.

    • [C-3-4] PIP penceresini kontrol etmek için KeyEvent.KEYCODE_WINDOW kullanılmalıdır. PIP modu uygulanmamışsa tuş, ön plandaki etkinlik için kullanılabilir olmalıdır.

    • [C-3-5] Bir uygulamanın PIP modunda görüntülenmesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR. AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu şartı karşılar.

    • [C-3-6] Bir uygulama AndroidManifestLayout_minWidth ve AndroidManifestLayout_minHeight için herhangi bir değer belirtmediğinde PIP penceresi için aşağıdaki minimum genişlik ve yükseklik ayrılmalıdır:

      • Configuration.uiMode değeri UI_MODE_TYPE_TELEVISION dışında bir değere ayarlanmış cihazlar, minimum 108 dp genişlik ve yükseklik ayırmalıdır.

      • Configuration.uiMode değeri UI_MODE_TYPE_TELEVISION olarak ayarlanmış cihazlar, minimum 240 dp genişlik ve minimum 135 dp yükseklik ayırmalıdır.

    Cihaz uygulamaları birden fazla Android ile uyumlu ekran alanı içeriyorsa ve bu alanları uygulamaların kullanımına sunuyorsa:

    • [C-4-1] Çoklu pencere modu DESTEKLENMELİDİR.

    Cihaz uygulamaları çoklu pencere modlarını destekliyorsa:

    3.8.15. Ekran Kesimi

    Android, SDK dokümanında açıklandığı gibi ekran kesimini destekler. DisplayCutout API, ekranın kenarında bir alanı tanımlar. Bu alan, ekran kesimi veya kenarlardaki kavisli ekran nedeniyle bir uygulama için işlevsel olmayabilir.

    Cihaz uygulamalarında ekran kesikleri varsa bunlar:

    • [C-1-5] Cihazın en boy oranı 1,0 (1:1) ise kesik olmamalıdır.

    • [C-1-2] Kenar başına birden fazla kesik OLMAMALIDIR.

    • [C-1-3] SDK'da açıklandığı gibi, uygulama tarafından WindowManager.LayoutParams API'si aracılığıyla ayarlanan ekran kesme işaretlerine UYULMALIDIR.

    • [C-1-4] DisplayCutout API'sinde tanımlanan tüm kesme metrikleri için doğru değerler RAPORLANMALIDIR.

    3.8.16. Cihaz Denetimleri

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

    Cihaza özgü şartlar için Bölüm 2_2_3'e bakın.

    3.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ı açıkça işlem yapmadan (ör. yer paylaşımında bir düğmeye basma) veya gönderilen içeriğin belirtilmesi olmadan pano verilerini herhangi bir bileşene, etkinliğe, hizmete ya da herhangi bir ağ bağlantısı üzerinden göndermemelidir.

    Cihaz uygulamaları, ClipData öğesi için içerik panoya kopyalandığında kullanıcı tarafından görülebilen bir önizleme oluşturuyorsa (ClipData.getDescription().getExtras(), android.content.extra.IS_SENSITIVE içeriyorsa):

    • [C-1-1] Kullanıcı tarafından görülebilen önizleme mutlaka karartılmalıdır.

    AOSP referans uygulaması, bu pano şartlarını karşılar.

    3.8.18. Konum Düğmesi

    Android 17'de eklenen şartların başlangıcı

    Konum düğmesi, uygulama geliştiricilerin uygulamalarına yerleştirebileceği bir Android kullanıcı arayüzü öğesidir. Bu düğme, uygulamanın oturumu için tam konum izni alınmasını sağlar.

    Cihaz uygulamaları:

    • [C-0-1] Konum düğmesi için uygulama geliştiricilere sunulan özelleştirme seçenekleri eklenMEMELİ, değiştirilMEMELİ veya kaldırılMAMALIDIR.

    3.9. Cihaz Yönetimi

    Android, cihaz politikası denetleyici uygulamalarının Device Policy Manager API'leri aracılığıyla sistem düzeyinde cihaz yönetimi işlevlerini (ör. şifre politikalarını zorunlu kılma veya uzaktan silme) gerçekleştirmesini sağlayan özellikler içerir.

    3.9.1. Cihaz Temel Hazırlığı

    3.9.1.1. Cihaz sahibi temel hazırlığı

    Cihaz uygulamaları android.software.device_admin beyan ederse:

    • [C-1-1] Aşağıda açıklandığı şekilde bir Cihaz Politikası Denetleyicisi'nin (DPC) Cihaz Sahibi uygulaması olarak kaydedilmesini DESTEKLEMELİDİR:

      • Cihaz uygulamasında kullanıcılar veya kullanıcı verileri yapılandırılmamışsa:

        • [C-1-5] Cihaz, android.hardware.nfc özellik işareti aracılığıyla Near Field Communication (NFC) desteği sunduğunu bildiriyorsa ve MIME_TYPE_PROVISIONING_NFC MIME türüne sahip bir kayıt içeren bir NFC mesajı alıyorsa DPC uygulamasını cihaz sahibi uygulaması olarak kaydetmeli veya DPC uygulamasının cihaz sahibi mi yoksa profil sahibi mi olacağını seçmesine olanak tanımalıdır.

        • [C-1-8] DPC uygulamasının, android.app.extra.PROVISIONING_ALLOWED_PROVISIONING_MODES değerlerine bağlı olarak cihaz sahibi veya profil sahibi olup olmayacağına karar verebilmesi için cihaz sahibi hazırlama işlemi tetiklendikten sonra ACTION_GET_PROVISIONING_MODE intent'i göndermelidir. Yalnızca bir geçerli seçenek olduğu bağlamdan belirlenebiliyorsa bu koşul geçerli değildir.

        • [C-1-9] Sağlama sırasında bir cihaz sahibi oluşturulursa kullanılan sağlama yönteminden bağımsız olarak ACTION_ADMIN_POLICY_COMPLIANCE amacını cihaz sahibi uygulamasına göndermelidir. Kullanıcı, Cihaz Sahibi uygulaması tamamlanana kadar Kurulum Sihirbazı'nda ilerleyememelidir.

      • Cihaz uygulamasında kullanıcılar veya kullanıcı verileri varsa:

        • [C-1-7] Artık hiçbir DPC uygulamasını Cihaz Sahibi Uygulaması olarak kaydetmemelidir.
    • [C-1-2] Android 15'te bu şart kaldırıldı.

    • [C-2-1] Android 15'te bu şart kaldırıldı.

    • [C-2-2] Android 15'te şart kaldırıldı.

    • [C-2-3] Android 15'te şart kaldırıldı.

    3.9.1.2. Yönetilen profil temel hazırlığı

    Cihaz uygulamaları android.software.managed_users beyan ederse:

    • [C-1-1] ZORUNLU android.software.device_admin ve bir cihaz politikası denetleyici (DPC) uygulamasının yeni bir yönetilen profilin sahibi olmasına izin veren API'leri bildirmeli ve uygulamalıdır.

    • [C-1-2] Android 16'da şart kaldırıldı.

    • [C-1-3] Bir sistem işlevi Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığında kullanıcıya bildirmek için Ayarlar'da aşağıdaki kullanıcı kolaylıklarını SAĞLAMALIDIR:

      • Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya başka bir kullanıcı olanağı (ör. yukarı akış AOSP bilgi simgesi).
      • Cihaz yöneticisi tarafından setShortSupportMessage aracılığıyla sağlanan kısa açıklama mesajı.
      • DPC uygulamasının simgesi.
    • [C-1-4] android.app.action.PROVISION_MANAGED_PROFILE amaçlı işlemi tarafından sağlama başlatıldığında ve DPC işleyiciyi uyguladığında bir profil sahibi oluşturulursa ACTION_PROVISIONING_SUCCESSFUL amaçlı işleminin işleyicisini iş profilinde BAŞLATMALIDIR.

    • [C-1-5] android.app.action.PROVISION_MANAGED_PROFILE amaçlı işlemiyle hazırlama başlatıldığında, iş profili DPC'sine ACTION_PROFILE_PROVISIONING_COMPLETE yayınını GÖNDERMELİDİR.

    • [C-1-6] DPC uygulaması, android.app.action.PROVISION_MANAGED_PROFILE amaçlı hazırlama işlemi tarafından tetiklenmediği sürece cihaz sahibi veya profil sahibi olup olmayacağını seçebilmesi için profil sahibi hazırlama işlemi tetiklendikten sonra ACTION_GET_PROVISIONING_MODE amacını göndermelidir.

    • [C-1-7] android.app.action.PROVISION_MANAGED_PROFILE amaçlı hazırlama işlemi tetiklenmediği sürece, hazırlama sırasında bir profil sahibi oluşturulduğunda, hangi hazırlama yöntemi kullanılırsa kullanılsın ACTION_ADMIN_POLICY_COMPLIANCE amacını iş profiline göndermelidir. Kullanıcı, Profil Sahibi uygulaması tamamlanana kadar Kurulum Sihirbazı'nda ilerleyememelidir.

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

    3.9.2. Yönetilen Profil Desteği

    Cihaz uygulamaları android.software.managed_users beyan ederse:

    • [C-1-1] android.app.admin.DevicePolicyManager API'leri aracılığıyla yönetilen profiller desteklenmelidir.

    • [C-1-2] Yalnızca bir yönetilen profilin oluşturulmasına İZİN VERİLMELİDİR.

    • [C-1-3] Yönetilen uygulamaları, widget'ları ve "Son Kullanılanlar ve Bildirimler" gibi diğer rozetli kullanıcı arayüzü öğelerini temsil etmek için rozet simgesi (AOSP'deki yukarı akış iş rozetine benzer) KULLANILMALIDIR.

    • [C-1-4] Kullanıcının yönetilen bir profil uygulamasında olduğunu belirtmek için bildirim simgesi (AOSP'deki yukarı akış çalışmasına benzer) GÖSTERİLMELİDİR.

    • [C-1-5] Cihaz uyandığında (ACTION_USER_PRESENT) ve ön plandaki uygulama yönetilen profilin içindeyse kullanıcıya yönetilen profilde olduğunu belirten bir kısa ileti GÖSTERİLMELİDİR.

    • [C-1-6] Yönetilen profil varsa Cihaz Politikası Denetleyicisi tarafından etkinleştirilmişse kullanıcının yönetilen profilden birincil kullanıcıya veya tam tersi yönde intent iletmesine izin vermek için Intent "Seçici"de görsel bir uygunluk GÖSTERİLMELİDİR.

    • [C-1-7] Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı işlevleri SUNULMALIDIR:

      • Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması.
      • Birincil kullanıcı veya yönetilen profile yüklenen VPN uygulamalarının bağımsız yönetimi.
      • Birincil kullanıcı veya yönetilen profil içinde 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ş çevirici, kişiler ve mesajlaşma uygulamalarının, yönetilen profildeki (varsa) arayan bilgilerini birincil profildeki bilgilerle birlikte arayabilmesini ve bulabilmesini SAĞLAMALIDIR.

    • [C-1-9] Yönetilen profil, birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa da birden fazla kullanıcının etkinleştirildiği bir cihaz için geçerli olan tüm güvenlik şartlarını karşıladığından EMİN OLMALIDIR (9.5. bölümüne bakın).

    • [C-1-10] topActivity penceresiyle ekran görüntüsü alındığında ekran görüntüsü verilerinin iş profili depolama alanına kaydedildiğinden EMİN OLUNMALIDIR. Bu pencere, odaklanmış (kullanıcının tüm etkinlikler arasında en son etkileşimde bulunduğu) ve iş profili uygulamasına ait olmalıdır.

    • [C-1-11] İş profiline ekran görüntüsü kaydedilirken iş profili uygulama penceresi/pencereleri dışında başka bir ekran içeriği (sistem çubuğu, bildirimler veya kişisel profil içeriği) yakalanMAMALIDIR (kişisel profil verilerinin iş profiline kaydedilmemesi için).

    Cihaz uygulamaları android.software.managed_users ve android.software.secure_lock_screen değerlerini bildiriyorsa:

    • [C-2-1] Yalnızca yönetilen profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı toplantısı belirtme özelliğini DESTEKLEMELİDİR.

    • Yönetilen profildeki kişiler, önceden yüklenmiş arama günlüğünde, görüşme içi kullanıcı arayüzünde, devam eden ve cevapsız arama bildirimlerinde, kişiler ve mesajlaşma uygulamalarında gösterildiğinde, yönetilen profil uygulamalarını belirtmek için kullanılan rozetle aynı rozetle işaretlenmelidir.

    3.9.3. Yönetilen Kullanıcı Desteği

    Cihaz uygulamaları android.software.managed_users beyan ederse:

    • [C-1-1] isLogoutEnabled döndüğünde çok kullanıcılı oturumda mevcut kullanıcıdan çıkış yapıp birincil kullanıcıya geri dönmek için kullanıcıya bir olanak SAĞLANMALIDIR true. Kullanıcı uygunluğu, cihazın kilidi açılmadan kilit ekranından erişilebilir OLMALIDIR.

    Cihaz uygulamaları android.software.device_admin özelliğini tanımlıyorsa ve ek ikincil kullanıcılar eklemek için cihaz üzerinde kullanıcıya yönelik bir uygunluk sağlıyorsa:

    • [C-SR-1] STRONGLY RECOMMENDED show the same AOSP Device Owner consent disclosures that were shown in the flow initiated by android.app.action.PROVISION_MANAGED_DEVICE, prior to allowing accounts to be added in the new secondary User, so users understand that the device is managed.

    3.9.4. Cihaz politikası yönetimi rolü şartları

    Cihaz uygulamaları android.software.device_admin beyan ederse:

    • [C-1-1] Bölüm 9.1'de tanımlandığı şekilde cihaz politikası yönetimi rolünü DESTEKLEMELİDİR. Cihaz politikası yönetimi rolünü üstlenen uygulama, config_devicePolicyManagement paket adıyla ayarlanarak tanımlanabilir. Uygulama önceden yüklenmediyse paket adından SONRA iki nokta üst üste (:) ve imza sertifikası GELMELİDİR.

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

    • [C-2-1] Cihaz uygulamaları, cihaz politikası yönetim rolü sahibi uygulaması olmadan temel hazırlık yapılmasını DESTEKLEMELİDİR (AOSP, referans uygulama sağlar).

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

    • [C-3-1] Uygulama, bir kullanıcının tüm profillerine yüklenmelidir.

    • [C-3-2] Cihaz uygulamaları, config_devicePolicyManagementUpdater ayarlanarak cihaz politikası yönetim rolü sahibini sağlama işleminden önce güncelleyen bir uygulama tanımlayabilir.

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

    • [C-4-1] Uygulama cihaza önceden yüklenmiş OLMALIDIR.

    • [C-4-2] Uygulama, android.app.action.UPDATE_DEVICE_POLICY_MANAGEMENT_ROLE_HOLDER öğesini çözümleyen bir intent filtresi uygulamalıdır.

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

    Cihaz uygulamaları android.software.device_admin beyan ederse:

    3.10. Erişilebilirlik

    Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sunar. Ayrıca Android, erişilebilirlik hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma almasını ve metin okuma, dokunsal geri bildirim ve trackball/d-pad navigasyonu gibi alternatif geri bildirim mekanizmaları oluşturmasını sağlayan platform API'leri sunar.

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

    • [C-1-1] Erişilebilirlik API'leri SDK dokümanlarında açıklandığı gibi Android erişilebilirlik çerçevesinin bir uygulamasını SAĞLAMALIDIR.
    • [C-1-2] MUST generate accessibility events and deliver the appropriate AccessibilityEvent to all registered AccessibilityService implementations as documented in the SDK.
    • [C-1-4] AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON'ı bildiren erişilebilirlik hizmetlerini kontrol etmek için kullanıcıya bir olanak SUNULMALIDIR. Sistem gezinme çubuğu olan cihaz uygulamalarında, kullanıcının sistemin gezinme çubuğunda bu hizmetleri kontrol etmek için bir düğme seçeneği olmasına İZİN VERİLMELİDİR.

    Cihaz uygulamaları önceden yüklenmiş erişilebilirlik hizmetleri içeriyorsa:

    • [C-2-1] Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde bu önceden yüklenmiş erişilebilirlik hizmetleri Doğrudan Başlatma İşlemine Duyarlı uygulamalar olarak uygulanmalıdır.
    • Kullanıcılara ilgili erişilebilirlik hizmetlerini etkinleştirmeleri için kutudan çıkarma kurulum akışında bir mekanizma SUNULMALIDIR. Ayrıca yazı tipi boyutunu, görüntü boyutunu ve büyütme hareketlerini ayarlama seçenekleri de SUNULMALIDIR.

    3.11. Metin Okuma

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

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

    Cihaz uygulamaları, üçüncü taraf TTS motorlarının yüklenmesini destekliyorsa:

    • [C-2-1] Kullanıcının sistem düzeyinde kullanılacak bir TTS motoru seçmesine olanak tanıyan kullanıcı arayüzü sağlamalıdır.

    3.12. Yok

    3.13. Hızlı Ayarlar

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

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

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

    3.14. Medya kullanıcı arayüzü

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

    • [C-1-2] getIconBitmap() veya getIconUri() aracılığıyla alınan simgeler ve getTitle() aracılığıyla alınan başlıklar, MediaDescription'da açıklandığı şekilde NET BİR ŞEKİLDE gösterilmelidir. Güvenlik düzenlemelerine (ör. sürücünün dikkatinin dağılması) uymak için başlıkları kısaltabilir.

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

    • [C-1-4] Kullanıcının MediaBrowser hiyerarşisinin tamamıyla etkileşim kurmasına İZİN VERİLMELİDİR. Güvenlik düzenlemelerine (ör. sürücünün dikkatini dağıtma) uymak için hiyerarşinin bir kısmına erişimi KISITLAYABİLİR ancak içerik veya içerik sağlayıcıya göre ayrıcalıklı muamele YAPMAMALIDIR.

    • [C-1-5] KEYCODE_HEADSETHOOK veya KEYCODE_MEDIA_PLAY_PAUSE öğesine iki kez dokunma, MediaSession.Callback#onMediaButtonEvent için KEYCODE_MEDIA_NEXT olarak değerlendirilmelidir.

    3.15. Hazır Uygulamalar

    Cihaz uygulamaları Anında Uygulamalar'ı destekliyorsa aşağıdaki koşulları KARŞILAMALIDIR:

    • [C-1-1] Anlık Uygulamalara YALNIZCA android:protectionLevel değeri "instant" olarak ayarlanmış izinler verilmelidir.
    • [C-1-2] Hazır uygulamalar, aşağıdakilerden biri geçerli OLMADIĞI sürece örtülü amaçlar aracılığıyla yüklü uygulamalarla etkileşimde BULUNMAMALIDIR:
      • Bileşenin intent modeli filtresi kullanıma sunulur ve CATEGORY_BROWSABLE içerir.
      • İşlem, ACTION_SEND, ACTION_SENDTO veya ACTION_SEND_MULTIPLE işlemlerinden biridir.
      • Hedef, android:visibleToInstantApps ile açıkça gösteriliyor.
    • [C-1-3] Hazır uygulamalar, bileşen android:visibleToInstantApps aracılığıyla kullanıma sunulmadığı sürece yüklü uygulamalarla açıkça etkileşimde BULUNMAMALIDIR.
    • [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ÖRMEMELİDİR.
    • Cihaz uygulamaları, hazır uygulamalarla etkileşim için aşağıdaki kullanıcı kolaylıklarını SAĞLAMALIDIR. AOSP, varsayılan Sistem Kullanıcı Arayüzü, Ayarlar ve Başlatıcı ile gereksinimleri karşılar. Cihaz uygulamaları:

      • [C-1-5] Her bir uygulama paketi için yerel olarak önbelleğe alınan anlık uygulamaları görüntüleme ve silme olanağı SUNULMALIDIR.
      • [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üklenmesinin gerekmediğini içermeli ve kullanıcıyı Ayarlar'daki uygulama bilgileri ekranına yönlendiren bir kullanıcı olanağı sağlamalıdır. Web amaçları aracılığıyla başlatılan anlık uygulamalar için (eylemi Intent.ACTION_VIEW olarak ayarlanmış ve şeması "http" veya "https" olan bir amaç kullanılarak tanımlandığı şekilde) ek bir kullanıcı olanağı, cihazda tarayıcı varsa kullanıcının anlık uygulamayı başlatmamasına ve yapılandırılmış web tarayıcısıyla ilişkili bağlantıyı başlatmasına İZİN VERMELİDİR.
      • [C-1-7] Cihazda Son Kullanılanlar işlevi varsa Son Kullanılanlar işlevinden Instant Apps'e erişilmesine İZİN VERİLMELİDİR.
    • [C-1-8] SDK'da burada listelenen amaçlar için bir veya daha fazla uygulamayı ya da hizmet bileşenini amaç işleyiciyle önceden yüklemeli ve amaçları Anında Uygulamalar'da görünür hale getirmelidir.

    3.16. Yardımcı Cihaz Eşleme

    Android, ikincil cihazlarla ilişkilendirmeyi daha etkili bir şekilde yönetmek için ikincil cihaz eşleştirmeyi destekler ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager API'sini sağlar.

    Cihaz uygulamaları, yardımcı cihaz eşleştirme özelliğini destekliyorsa:

    • [C-1-1] Özellik bayrağı FEATURE_COMPANION_DEVICE_SETUP BİLDİRİLMELİDİR.

    • [C-1-2] android.companion paketindeki API'lerin tamamen uygulandığından EMİN OLMALIDIR.

    • [C-1-3] Kullanıcının, eşlik eden bir cihazın mevcut ve çalışır durumda olduğunu seçmesi/onaylaması için kullanıcıya olanaklar SUNULMALIDIR. Bu olanaklar, AOSP'de uygulanan mesajın aynısını ekleme veya değiştirme olmadan KULLANMALIDIR.

    3:17. Ağır Sıklet Uygulamalar

    Cihaz uygulamaları FEATURE_CANT_SAVE_STATE özelliğini beyan ediyorsa:

    • [C-1-1] Sistemde aynı anda cantSaveState çalıştıran yalnızca bir yüklü uygulama OLMALIDIR. Kullanıcı, bu tür bir uygulamadan açıkça çıkmadan ayrılırsa (örneğin, sistemde etkin bir etkinlikten ayrılırken sistemde başka etkin etkinlik kalmamışken geri düğmesine basmak yerine ana sayfa düğmesine basarsa) cihaz uygulamaları, ön plan hizmetleri gibi çalışmaya devam etmesi beklenen diğer öğelerde olduğu gibi bu uygulamaya RAM'de öncelik VERMELİDİR. Bu tür bir uygulama arka plandayken sistem, güç yönetimi özelliklerini (ör. CPU ve ağ erişimini sınırlama) uygulamaya devam edebilir.
    • [C-1-2] Kullanıcı, cantSaveState özelliğiyle beyan edilen ikinci bir uygulamayı başlattığında normal durum kaydetme/geri yükleme mekanizmasına katılmayacak uygulamayı seçmek için bir kullanıcı arayüzü olanağı SAĞLANMALIDIR.
    • [C-1-3] cantSaveState belirten uygulamalara, CPU performansını değiştirme veya planlama önceliğini değiştirme gibi başka politika değişiklikleri UYGULANMAMALIDIR.

    Cihaz uygulamaları FEATURE_CANT_SAVE_STATE özelliğini tanımlamazsa:

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

    3.18. Kişiler

    Android'de Contacts Provider uygulamaların cihazda depolanan kişi bilgilerini yönetmesine olanak tanıyan API'ler bulunur. Doğrudan cihaza girilen kişi verileri genellikle bir web hizmetiyle senkronize edilir ancak veriler yalnızca cihazda yerel olarak da bulunabilir. Yalnızca cihazda depolanan kişilere yerel kişiler denir.

    RawContacts, ham kişiler için ACCOUNT_NAME ve ACCOUNT_TYPE sütunları, hesabın ilgili Account.name ve Account.type alanlarıyla eşleştiğinde bir Account ile "ilişkilendirilir" veya Account'ta "saklanır".

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

    Özel yerel hesap: Yalnızca cihazda depolanan ve AccountManager'daki bir hesapla ilişkilendirilmeyen, ACCOUNT_NAME ve ACCOUNT_TYPE sütunları için boş olmayan değerlerle oluşturulan ham kişiler için bir hesap.

    Cihaz uygulamaları:

    • [C-SR-1] Özel yerel hesaplar oluşturulmaması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları özel bir yerel hesap kullanıyorsa:

    • [C-1-1] Özel yerel hesabın ACCOUNT_NAME, ContactsContract.RawContacts.getLocalAccountName tarafından döndürülmelidir.

    • [C-1-2] ACCOUNT_TYPE, özel yerel hesabın ContactsContract.RawContacts.getLocalAccountType tarafından döndürülmelidir.

    • [C-1-3] Bir hesap belirtilmeden üçüncü taraf uygulamaları tarafından eklenen ham kişiler, cihazın varsayılan kişi hesabına eklenmelidir. Varsayılan kişi hesabı DEFAULT_ACCOUNT_STATE_LOCAL veya DEFAULT_ACCOUNT_STATE_NOT_SET ise bu ham kişiler ÖZEL yerel hesapta saklanmalıdır.

    • [C-1-4] Özel yerel hesaba eklenen ham kişiler, hesaplar eklendiğinde veya kaldırıldığında KALDIRILMAMALIDIR.

    • [C-1-5] Özel yerel hesapta gerçekleştirilen silme işlemleri, CALLER_IS_SYNCADAPTER parametresi false olarak ayarlanmış veya belirtilmemiş olsa bile, ham kişilerin hemen temizlenmesiyle (CALLER_IS_SYNCADAPTER parametresi true olarak ayarlanmış gibi) sonuçlanmalıdır.

    Android 17'de eklenen şartların başlangıcı

    SIM hesabı: Cihaza takılan bir veya daha fazla fiziksel SIM karttan yansıtılan ve AccountManager'daki bir hesapla ilişkilendirilmeyen ham kişiler için kullanılan hesaplar.

    Cihaz uygulamaları:

    Cihaz uygulamaları SIM hesabı kullanıyorsa:

    3.18.2. Sistem Kişi Seçici

    Android 17'de eklenen şartların başlangıcı

    Android, uygulamaların geniş erişim izinleri gerektirmeden sınırlı iletişim bilgilerine erişmesine olanak tanıyan bir sistem kişileri seçiciyi destekler.

    Cihaz uygulamaları Android kişilerini destekliyorsa:

    • [C-1-1] API düzeyi 37 veya üstünü hedefleyen uygulamalar için Sistem Kişi Seçici (com.android.contactspicker) uygulanmalıdır.

    • [C-1-2] Intent.ACTION_PICK_CONTACTS amacını uygulamalıdır.

    3.19. Dil Ayarları

    Cihaz uygulamaları:

    • [C-0-1] Cinsiyete özgü çevirileri desteklemeyen dillerde cinsiyete özgü dil kullanımını seçmek için kullanıcıya herhangi bir olanak SUNMAMALIDIR. Daha fazla bilgi için dil bilgisi kaynaklarına bakın.

    3.20. Asistan tabanlı deneyimler

    Android 17'de eklenen şartların başlangıcı

    Android asistan geliştirme çerçevesi, Android uygulamalarının sesli kontrolünü sağlar. Kullanıcılar, Asistan'ı kullanarak sesleriyle uygulamaları başlatabilir, görevleri gerçekleştirebilir, içeriklere erişebilir ve daha birçok işlem yapabilir.

    Bu bölüm için özel cihaz uygulamalarıyla ilgili aşağıdaki sınıflandırmalara bakın:

    • Sabit ses düzeyi: Sabit ses düzeyine sahip cihazlar, ses düzeyi kontrolleri olan ancak uygulamaların standart AudioManager yöntemleri (ör. Android Automotive OS arabalar) kullanarak ses akışı düzeyini değiştirmesini engelleyen cihazlardır.

    • Tam ses: Tam sesli cihaz, ses seviyesi tam ve zayıflatılmamış bir seviyede kilitlenmiş olan ve yazılım kontrolünün engellendiği cihazdır (ör. harici hoparlörlü bir TV).

    • Tek ses seviyesi: Tek ses seviyeli cihaz, tüm ses akışlarını tek bir ses seviyesi akışına eşleyen ve bu nedenle ses seviyesi ayarlamalarının tüm ses akışlarını eşit şekilde etkilediği cihazdır (ör. TV).

    3.20.1. Asistan Ses Akışı şartları

    Android 17'de eklenen şartların başlangıcı

    MANAGE_ASSISTANT_AUDIO iznine sahip bir uygulama:

    • [C-0-1] STREAM_ASSISTANT ses düzeyinin programatik olarak değiştirilmesine İZİN VERİLMELİDİR.

    Cihaz uygulamaları android.hardware.type.watch değerini bildirmezse ve sabit sesli, tek sesli veya tam sesli değilse:

    • [C-1-1] STREAM_ASSISTANT, ayrılmış bir ses akışı olarak uygulanmalı ve başka bir akışla takma ad oluşturulmamalıdır.

    • [C-1-2] USAGE_ASSISTANT ile AudioAttributes kullanılarak yapılan ses çalmanın ses düzeyinin STREAM_ASSISTANT tarafından kontrol EDİLMESİ GEREKİR.

    • [C-1-3] Belirli bir Bluetooth kulaklık için, kulaklık A2DP ve HFP ses profilleri arasında geçiş yaptığında STREAM_ASSISTANT ses dizininin aynı kalmasını SAĞLAMALIDIR.

    • [C-1-4] MODE_ASSISTANT_CONVERSATION etkin durumdayken STREAM_ASSISTANT dışındaki akışların STREAM_ASSISTANT sesini veya USAGE_ASSISTANT oynatmaya uygulanan zayıflatmayı değiştirmesini ENGELLEMELİDİR.

    • [C-1-5] Cihaz veya çevre birimi (ör. Bluetooth kulaklık) ses düğmeleri aracılığıyla ses ayarlandığında ve şu durumlarda STREAM_ASSISTANT akışının ses seviyesi DEĞİŞTİRİLMELİDİR ve başka akışların ses seviyesi DEĞİŞTİRİLMEMELİDİR:

      • MODE_ASSISTANT_CONVERSATION etkinse ve
      • Uygulamaya özel özelleştirme veya etkin uzaktan oynatma yoktur.
    • [C-1-6] Kullanıcı arayüzünde, Asistan ses seviyesinde yapılan tüm değişiklikler YANSITILMALIDIR.

    3.21. Tamamlayıcı Cihaz Senkronizasyon Özellikleri Desteği

    Android 17'de eklenen şartların başlangıcı

    Android, eşlik eden cihazlar arasında veri senkronizasyonu özelliklerini destekler.

    Cihaz uygulamaları Rahatsız Etmeyin senkronizasyon özelliğini destekliyorsa:

    • [C-1-1] ContextualModeManager#isModeSyncSupported() API'si UYGULANMALIDIR.

    • [C-1-2] Rahatsız Etmeyin özelliğinin etkin olduğunu belirten ayarı, varsayılan CompanionDeviceManagerService uygulamasıyla uyumlu bir veri biçimi kullanarak CompanionDeviceManager güvenli kanalı üzerinden SENKRONİZE ETMELİDİR.

    • [C-1-3] ContextualModeManager#isModeSyncEnabled(), true değerini döndürüyorsa bu senkronizasyon ETKİNLEŞTİRİLMELİDİR.

    Cihaz uygulamaları, uçak modu senkronizasyon özelliğini destekliyorsa:

    • [C-1-4] Uçak modunun etkin olduğunu belirten ayar, varsayılan CompanionDeviceManagerService uygulamasıyla uyumlu bir veri biçimi kullanılarak CompanionDeviceManager güvenli kanalı üzerinden SENKRONİZE EDİLMELİDİR.

    • [C-1-5] Settings.Global.AIRPLANE_MODE_SYNC etkinse bu senkronizasyon ETKİNLEŞTİRİLMELİDİR.

    4. Uygulama Paketleme Uyumluluğu

    Cihaz uygulamaları:

    • [C-0-1] Resmi Android SDK'sında bulunan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarını yükleyip çalıştırabilmelidir.
      • Yukarıdaki şart zorlayıcı olabileceğinden cihaz uygulamalarında AOSP referans uygulamasının paket yönetim sisteminin kullanılması ÖNERİLİR.

    Android 17'de şartların başlangıcı değişti

    • [C-0-3] .apk, Android Manifest, Dalvik bytecode veya RenderScript bytecode biçimlerini, bu dosyaların diğer uyumlu cihazlarda doğru şekilde yüklenmesini ve çalıştırılmasını engelleyecek şekilde genişletMEMELİDİR.
    • [C-0-4] DELETE_PACKAGE izni için SDK'da belirtildiği gibi, paketin mevcut "kayıtlı yükleyicisi" dışındaki uygulamaların, kullanıcı onayı olmadan uygulamayı sessizce kaldırmasına İZİN VERİLMEMELİDİR. Tek istisnalar, PACKAGE_NEEDS_VERIFICATION amacını işleyen sistem paketi doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE amacını işleyen depolama alanı yöneticisi uygulamasıdır.

    • [C-0-5] android.settings.MANAGE_UNKNOWN_APP_SOURCES amacını işleyen bir etkinliğe SAHİP OLMALIDIR.

    • [C-0-6] Yükleme isteğinde bulunan uygulama aşağıdaki şartların tümünü karşılamadığı sürece bilinmeyen kaynaklardan uygulama paketleri yüklenMEMELİDİR:

      • REQUEST_INSTALL_PACKAGES iznini BEYAN ETMELİ veya android:targetSdkVersion değeri 24 ya da daha düşük olmalıdır.
      • Kullanıcı, bilinmeyen kaynaklardan uygulama yüklemek için izin VERMİŞ olmalıdır.
    • Cihaz uygulaması, kullanıcıların bu seçimi yapmasına izin vermek istemiyorsa BİRİM, bilinmeyen kaynaklardan uygulama yükleme iznini uygulama bazında verme/iptal etme için kullanıcıya bir olanak sunmalıdır ancak bunu işlem yapmama olarak uygulamayı ve startActivityForResult() için RESULT_CANCELED döndürmeyi SEÇEBİLİR. Ancak bu gibi durumlarda bile, kullanıcıya neden böyle bir seçenek sunulmadığını BELİRTMEK ZORUNDADIRLAR.

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

    • Uyarı iletişim kutusunda uygulamayı kaldırmayı veya başlatmayı seçmek için kullanıcıya bir olanak SUNULMALIDIR.

    • [C-0-8] Burada belgelendiği şekilde Artımlı Dosya Sistemi desteği uygulanmalıdır.

    • [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 bir codec için bölüm 5.1'de tanımlanan medya biçimlerini, kodlayıcıları, çözücüleri, dosya türlerini ve kapsayıcı biçimlerini DESTEKLEMELİDİR.
    • [C-0-2] MediaCodecList aracılığıyla üçüncü taraf uygulamalarında kullanılabilen kodlayıcıların ve kod çözücülerin desteği BİLDİRİLMELİ ve RAPORLANMALIDIR.
    • [C-0-3] Kodlayabildiği tüm biçimleri doğru şekilde çözebilmeli ve üçüncü taraf uygulamalarına sunabilmelidir. Bu, kodlayıcılarının oluşturduğu tüm bit akışlarını ve CamcorderProfile'sinde bildirilen profilleri içerir.

    Cihaz uygulamaları:

    • SHOULD aim for minimum codec latency, in others words, they
      • Giriş arabelleklerini tüketmemeli ve depolamamalı, yalnızca işlendikten sonra giriş arabelleklerini döndürmelidir.
      • Kod çözme işlemi yapılan arabellekleri standartta (ör. SPS) belirtilenden daha uzun süre tutmamalıdır.
      • GOP yapısının gerektirdiğinden daha uzun süre kodlanmış arabellekleri tutmamalıdır.

    Aşağıdaki bölümde listelenen tüm codec'ler, Android Açık Kaynak Projesi'nin tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.

    Google'ın veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerinden muaf olduğuna dair herhangi bir beyanda bulunmadığını lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya paylaşılan yazılım da dahil olmak üzere bu kodun uygulamaları için ilgili patent sahiplerinden patent lisansı alması gerekebileceği konusunda bilgilendirilir.

    5.1. Medya Codec'leri

    5.1.1. Ses kodlama

    Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.

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

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

    Android 17'de eklenen şartların başlangıcı

    • [C-1-4] MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC)

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

    Android 17'de eklenen şartların başlangıcı

    MPEG-D USAC'yi MPEG-D DRC (Genişletilmiş Yüksek Verimli AAC) ses ile kodlarken:

    • [C-3-2] Tüm bit akışları, ISO/IEC 23003-4 uyarınca MPEG-D ses yüksekliği kontrolü profiline veya MPEG-D dinamik aralık kontrolü profiline (1. seviye veya üzeri) uygun meta veri kümelerini içermelidir.

    5.1.2. Ses kod çözme

    Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.

    Cihaz uygulamaları android.hardware.audio.output özelliğini desteklediğini beyan ediyorsa aşağıdaki ses biçimlerinin kodunu çözmeyi 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şmiş AAC+)
    • [C-1-4] AAC ELD (gelişmiş düşük gecikmeli AAC)
    • [C-1-5] FLAC
    • [C-1-6] MP3
    • [C-1-7] MIDI
    • [C-1-8] Vorbis
    • [C-1-9] 24 bit, 192 kHz örnekleme hızı ve 8 kanala kadar yüksek çözünürlüklü ses biçimleri dahil PCM/WAVE. Bu şartın yalnızca kod çözme için geçerli olduğunu ve cihazın oynatma aşamasında alt örnekleme ve alt karıştırma yapmasına izin verildiğini unutmayın.
    • [C-1-10] Opus
    • [C-1-11] xHE-AAC (ISO/IEC 23003-3 Extended HE AAC Profili, USAC Baseline Profili ve ISO/IEC 23003-4 Dynamic Range Control Profili dahil)

    Android 17'de eklenen şartların başlangıcı

    • [C-1-12] AAC, FLAC, Opus veya PCM ile kodlanmış ses akışlarını içeren IAMF v1.0

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

    • [C-2-1] Kod çözme işlemi, miksajı azaltmadan yapılmalıdır (ör. 5.0 AAC akışı, beş kanallı PCM'ye, 5.1 AAC akışı ise altı kanallı PCM'ye 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ığı gibi olmalıdır ve android.media.MediaFormat DRC anahtarları, ses kod çözücünün dinamik aralıkla ilgili davranışlarını yapılandırmak için kullanılmalıdır. AAC DRC anahtarları API 21'de kullanıma sunulmuştur ve şunlardır: KEY_AAC_DRC_ATTENUATION_FACTOR, KEY_AAC_DRC_BOOST_FACTOR, KEY_AAC_DRC_HEAVY_COMPRESSION, KEY_AAC_DRC_TARGET_REFERENCE_LEVEL ve KEY_AAC_ENCODED_TARGET_LEVEL.

    • [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ı ŞİDDETLE TAVSİYE EDİLİR.

    USAC ses kodunu çözerken MPEG-D (ISO/IEC 23003-4):

    • [C-3-1] Ses yüksekliği ve DRC meta verileri, MPEG-D DRC Dinamik Aralık Kontrolü Profili Düzey 1'e göre yorumlanmalı ve uygulanmalıdır.

    • [C-3-2] Kod çözücü, aşağıdaki android.media.MediaFormat anahtarlarıyla ayarlanan yapılandırmaya göre davranmalıdır: KEY_AAC_DRC_TARGET_REFERENCE_LEVEL ve KEY_AAC_DRC_EFFECT_TYPE.

    MPEG-4 AAC, HE AAC ve HE AACv2 profil kod çözücüleri:

    • MAY, ISO/IEC 23003-4 Dinamik Aralık Kontrolü Profili kullanılarak ses yüksekliği ve dinamik aralık kontrolünü destekleyebilir.

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

    • ISO/IEC 23003-4 meta verileri ÖNCELİKLİDİR.

    Tüm ses çözücülerin aşağıdaki çıkışları desteklemesi ZORUNLUDUR:

    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 DESTEKLENMELİDİR:

    • [C-7-1] İçeriğin stereo olarak mikslenip mikslenmeyeceğini (2 değeri kullanıldığında) veya yerel kanal sayısı kullanılarak çıkış yapılıp yapılmayacağını (bu sayıya eşit veya daha büyük bir değer kullanıldığında) kontrol etmek için uygulama tarafından anahtarla kod çözme kullanılarak yapılandırılabilmelidir. KEY_MAX_OUTPUT_CHANNEL_COUNT Örneğin, 6 veya daha büyük bir değer, 5.1 içerik beslendiğinde kod çözücünün 6 kanal çıkış vermesini sağlar.

    • [C-7-2] Kod çözme sırasında kod çözücü, çıkış biçiminde kullanılan kanal maskesini android.media.AudioFormat sabitlerini (örnek: CHANNEL_OUT_5POINT1) kullanarak KEY_CHANNEL_MASK anahtarıyla bildirmelidir.

    Android 17'de eklenen şartların başlangıcı

    Üç boyutlu ses efekti içeren tüm elde taşınabilir cihazlar veya tabletler ve tüm otomotiv ve televizyon cihazları:

    • [C-8-1] AAC, FLAC, Opus veya PCM ile kodlanmış ses akışlarını içeren IAMF v1.0'ın kod çözme işlemini desteklemeli ve android.media.MediaCodec API'si aracılığıyla bir IAMF kod çözücü sunmalıdır.
    • [C-8-2] IAMF kod çözücünün, KEY_CHANNEL_MASK anahtarı aracılığıyla yapılandırmak için kullanılan kanal maskesine uyması ZORUNLUDUR. Bu işlemde android.media.AudioFormat sabitleri (ör. CHANNEL_OUT_5POINT1) kullanılır.

    • [C-8-3] KEY_CHANNEL_MASK anahtarı aracılığıyla çıkış biçiminde etkin kanal maskesinin reklamını android.media.AudioFormat sabitlerini (ör. CHANNEL_OUT_5POINT1) kullanarak YAPMALIDIR.

    Cihaz uygulamaları, varsayılan AAC ses kod çözücüsü dışında ses kod çözücüleri destekliyorsa ve sıkıştırılmış çok kanallı içerik verildiğinde çok kanallı ses (ör. 2'den fazla kanal) çıkışı yapabiliyorsa:

    • [C-SR-2] İçeriğin stereo olarak mikslenip mikslenmeyeceğini (2 değeri kullanıldığında) veya yerel kanal sayısı kullanılarak çıkış yapılıp yapılmayacağını (bu sayıya eşit veya daha büyük bir değer kullanıldığında) kontrol etmek için uygulamanın, KEY_MAX_OUTPUT_CHANNEL_COUNT anahtarıyla kod çözme işlemini kullanarak kod çözücüyü yapılandırması ŞİDDETLE TAVSİYE EDİLİR. Örneğin, 6 veya daha büyük bir değer, 5.1 içerik beslendiğinde kod çözücünün 6 kanal çıkış vermesini sağlar.

    • [C-SR-3] Kod çözme sırasında, kod çözücünün android.media.AudioFormat sabitlerini kullanarak (örnek: CHANNEL_OUT_5POINT1) çıkış biçiminde kullanılan kanal maskesini KEY_CHANNEL_MASK anahtarıyla duyurması ŞİDDETLE TAVSİYE EDİLİR.

    5.1.3. Ses Codec'i Ayrıntıları

    Android 17'de şartların başlangıcı değişti
    Biçim/Codec Ayrıntılar Desteklenecek dosya türleri/kapsayıcı biçimleri
    G.711 μ-law ve A-law 8 kHz'de örneklenmiş mono/stereo/5.1 içerik desteği
    • WAVE (.wav)
    MPEG-4 AAC Profili
    (AAC LC)
    8-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
    • 3GPP (.3gp)
    • MPEG-4 (.mp4, .m4a)
    • ADTS ham AAC (.aac, ADIF desteklenmez)
    • MPEG-TS (.ts, aranamaz, yalnızca kod çözme)
    • Matroska (.mkv, yalnızca kod çözme)
    MPEG-4 HE AAC Profili (AAC+) 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
    • 3GPP (.3gp)
    • MPEG-4 (.mp4, .m4a)
    MPEG-4 HE AACv2
    Profil (gelişmiş AAC+)
    16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
    • 3GPP (.3gp)
    • MPEG-4 (.mp4, .m4a)
    AAC ELD (gelişmiş düşük gecikmeli AAC) 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerikler desteklenir.
    • 3GPP (.3gp)
    • MPEG-4 (.mp4, .m4a)
    USAC MPEG-D DRC ile MPEG-D USAC (Genişletilmiş Yüksek Verimli AAC) Kod çözme: 7,35-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği.
    Kodlama: 44,1 ve 48 kHz örnekleme hızlarına sahip mono/stereo içerik desteği.
    MPEG-4 (.mp4, .m4a)
    AMR-NB 8 kHz'de örneklenmiş 4,75 ila 12,2 kb/sn 3GPP (.3gp)
    AMR-WB 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız, 16 kHz'de örneklenir.Bu hızlar, AMR-WB, Uyarlanabilir Çoklu Hız - Geniş Bant Konuşma Codec'i bölümünde tanımlanmıştır. 3GPP (.3gp)
    FLAC Hem kodlayıcı hem de kod çözücü için: En az mono ve stereo modları DESTEKLENMELİDİR. 192 kHz'ye kadar örnek hızları DESTEKLENMELİDİR; 16 bit ve 24 bit çözünürlük DESTEKLENMELİDİR. FLAC 24 bit ses verisi işleme, kayan noktalı ses yapılandırmasıyla KULLANILABİLİR olmalıdır.
    • FLAC (.flac)
    • MPEG-4 (.mp4, .m4a, yalnızca kod çözme)
    • Matroska (.mkv, yalnızca kod çözme)
    MP3 Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR)
    • MP3 (.mp3)
    • MPEG-4 (.mp4, .m4a, yalnızca kod çözme)
    • Matroska (.mkv, yalnızca kod çözme)
    MIDI MIDI Türü 0 ve 1. DLS 1 ve 2 sürümleri. XMF ve Mobile XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek
    • Tür 0 ve 1 (.mid, .xmf, .mxmf)
    • RTTTL/RTX (.rtttl, .rtx)
    • iMelody (.imy)
    Vorbis Kod çözme: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono, stereo, 5.0 ve 5.1 içerik desteği.
    Kodlama: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono ve stereo içerik desteği.
    • Ogg (.ogg)
    • MPEG-4 (.mp4, .m4a, yalnızca kod çözme)
    • Matroska (.mkv)
    • Webm (.webm)
    PCM/WAVE PCM codec'i 16 bit doğrusal PCM ve 16 bit kayan nokta biçimini DESTEKLEMELİDİR. WAVE ayıklayıcı, 16 bit, 24 bit, 32 bit doğrusal PCM ve 32 bit kayan nokta (donanım sınırına kadar olan hızlar) biçimlerini desteklemelidir. Örnekleme hızları 8 kHz ile 192 kHz arasında OLMALIDIR. WAVE (.wav)
    Opus Kod çözme: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono, stereo, 5.0 ve 5.1 içerik desteği.
    Kodlama: 8.000, 12.000, 16.000, 24.000 ve 48.000 Hz örnekleme hızlarına sahip mono ve stereo içerik desteği.
    • Ogg (.ogg)
    • MPEG-4 (.mp4, .m4a, yalnızca kod çözme)
    • Matroska (.mkv)
    • Webm (.webm)

    5.1.4. Resim Kodlama

    Daha fazla ayrıntı için 5.1.6. Resim Codec'leri Ayrıntıları.

    Cihaz uygulamaları, aşağıdaki görüntü kodlamasının kodlanmasını DESTEKLEMELİDİR:

    • [C-0-1] JPEG
    • [C-0-2] PNG
    • [C-0-3] WebP
    • [C-0-4] AVIF
      • Cihazlar, BITRATE_MODE_CQ ve Baseline Profile'ı desteklemelidir.

    Cihaz uygulamaları, MIMETYPE_IMAGE_ANDROID_HEIC medya türü için android.media.MediaCodec aracılığıyla HEIC kodlamayı destekliyorsa:

    • [C-1-1] BITRATE_MODE_CQ bit hızı kontrol modunu, HEVCProfileMainStill profilini ve 512 x 512 piksel kare boyutunu destekleyen donanım hızlandırmalı bir HEVC kodlayıcı codec SAĞLANMALIDIR.

    5.1.5. Resim Kodu Çözme

    Daha fazla ayrıntı için 5.1.6. Resim Codec'leri Ayrıntıları.

    Cihaz uygulamaları, aşağıdaki görüntü kodlamasının çözülmesini DESTEKLEMELİDİR:

    • [C-0-1] JPEG

    • [C-0-2] GIF

    • [C-0-3] PNG

    • [C-0-4] BMP

    • [C-0-5] WebP

    • [C-0-6] Ham

    • [C-0-7] AVIF (Temel Profil)

    Cihaz uygulamaları HEVC video kod çözmeyi destekliyorsa:

    • [C-1-1] HEIF (HEIC) görüntü kod çözme desteklenmelidir.

    Yüksek bit derinliği biçimini (kanal başına 9+ bit) destekleyen görüntü kod çözücüler:

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

    5.1.6. Görüntü Codec'leri Ayrıntıları

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

    MediaCodec API'si aracılığıyla kullanıma sunulan görüntü kodlayıcı ve kod çözücüler

    • [C-1-1] CodecCapabilities aracılığıyla YUV420 8:8:8 esnek renk biçimini (COLOR_FormatYUV420Flexible) desteklemelidir.

    • [C-SR-1] Giriş Yüzey modu için RGB888 renk biçiminin desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-1-3] Düzlemsel veya yarı düzlemsel YUV420 8:8:8 renk biçimlerinden en az birini desteklemelidir: COLOR_FormatYUV420PackedPlanar (COLOR_FormatYUV420Planar ile eşdeğer) veya COLOR_FormatYUV420PackedSemiPlanar (COLOR_FormatYUV420SemiPlanar ile eşdeğer). Her ikisinin de desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    5.1.7. Video Codec'leri

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

    Cihaz uygulamaları video kod çözücü veya kodlayıcı içeriyorsa:

    • [C-1-1] Video codec'leri, standart ve yapılandırmanın belirlediği şekilde mümkün olan en büyük sıkıştırılmış ve sıkıştırılmamış kareyi barındıran, ancak genel olarak fazla yer ayırmayan çıkış ve giriş bytebuffer boyutlarını desteklemelidir.

    • [C-1-2] Video kodlayıcılar ve kod çözücüler, CodecCapabilities aracılığıyla YUV420 8:8:8 esnek renk biçimlerini (COLOR_FormatYUV420Flexible) DESTEKLEMELİDİR.

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

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

    • [C-1-5] Yüksek bit derinlikli bir biçimi (kanal başına 9+ bit) destekleyen video kod çözücüler, uygulama tarafından istendiğinde 8 bit eşdeğer biçim çıkışını desteklemelidir. Bu, android.media.MediaCodecInfo aracılığıyla YUV420 8:8:8 renk biçiminin desteklenmesiyle YANSITILMALIDIR.

    Cihaz uygulamaları, Display.HdrCapabilities aracılığıyla HDR profili desteği sunduğunu belirtiyorsa:

    • [C-2-1] HDR statik meta veri ayrıştırması ve işlenmesi DESTEKLENMELİDİR.

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

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

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

    • [C-4-1] Surface çıkışı kullanılarak yapılandırılmışsa donanım ekranı için optimize edilmiş renk biçimi varsayılan olarak AYARLANMALIDIR.

    • [C-4-2] Surface çıkışı kullanılmayacak şekilde yapılandırılmışsa varsayılan olarak CPU okuma için optimize edilmiş bir YUV420 8:8:8 renk biçimi KULLANILMALIDIR.

    Android 17'de eklenen şartların başlangıcı

    Video kod çözücü veya kodlayıcı içeren cihaz uygulamaları için:

    • [C-5-1] 2003 veya daha yeni bir kodlama teknolojisi (ör. AV1, AVC, HEVC, VP8, VP9 veya VVC) kullanan video kod çözücüler ŞUNLARI YAPMALIDIR:

      • Minimum 144 x 144 piksel boyutunu desteklemeli ve
      • Bu desteği VideoCapabilities API aracılığıyla (ör. getSupportedWidths() ve getSupportedHeightsFor() yöntemleri) duyurun.
    • [C-5-2] 2003 veya daha yeni bir kodlama teknolojisi (ör. AV1, AVC, HEVC, VP8, VP9 veya VVC) kullanan video kodlayıcılar ŞUNLARI YAPMALIDIR:

      • Her kodlayıcı için aşağıdaki minimum boyutta Surface girişini destekleyin:
        • AVC: 160x160 piksel
        • VP8, HEVC, VP9 (kodlayıcı sağlanmışsa): 160x160 piksel
        • AV1 (kodlayıcı sağlanmışsa): 256x256 piksel
      • Kırpma dikdörtgeni bilgilerini kullanarak uygun boyutu kodlamaları koşuluyla, minimumdan daha büyük bir kare boyutuna sahip bit akışı ÜRETEBİLİR.

    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 bölüm 5.2 ve 5.3'e bakın.
    • 3GPP (.3gp)
    • MPEG-4 (.mp4)
    • MPEG-2 TS (.ts, aranamaz)
    • Matroska (.mkv, yalnızca kod çözme)
    H.265 HEVC Ayrıntılar için 5.3. bölümü inceleyin.
    • MPEG-4 (.mp4)
    • Matroska (.mkv, yalnızca kod çözme)
    MPEG-2 Ana Profil
    • MPEG2-TS (.ts, aranamaz)
    • MPEG-4 (.mp4, yalnızca kod çözme)
    • Matroska (.mkv, yalnızca kod çözme)
    MPEG-4 SP
    • 3GPP (.3gp)
    • MPEG-4 (.mp4)
    • Matroska (.mkv, yalnızca kod çözme)
    VP8 Ayrıntılar için bölüm 5.2 ve 5.3'e bakın.
    VP9 Ayrıntılar için 5.3. bölümü inceleyin.
    AV1 Ayrıntılar için bölüm 5.2 ve bölüm 5.3'e bakın.
    • MPEG-4 (.mp4)
    • Matroska (.mkv, yalnızca kod çözme)

    5.1.9. Medya Codec'i Güvenliği

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

    Android, platformlar arası bir multimedya hızlandırma API'si olan OMX'in yanı sıra düşük ek yük içeren 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, medya codec'leri için OMX veya Codec 2.0 API'leri (ya da her ikisi) aracılığıyla destek sağlamalı ve güvenlik korumalarını devre dışı bırakmamalı veya atlatmamalıdır. Bu, özellikle her codec'in OMX veya Codec 2.0 API'sini kullanması gerektiği anlamına gelmez. Bu API'lerden en az birinin desteklenmesi ve mevcut API'lerin desteklenmesinin güvenlik korumalarını içermesi gerekir.

    • [C-SR-1] Codec 2.0 API desteğinin eklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları Codec 2.0 API'sini desteklemiyorsa:

    • [C-2-1] Cihaz tarafından desteklenen her medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Açık Kaynak Projesi'ndeki (varsa) ilgili OMX yazılım codec'i içermelidir.

    • [C-2-2] Adları "OMX.google." ile başlayan codec'ler Android Açık Kaynak Projesi kaynak koduna DAYANMALIDIR.

    • [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ı ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları Codec 2.0 API'sini destekliyorsa:

    • [C-3-1] Cihaz tarafından desteklenen her medya biçimi ve türü (kodlayıcı veya kod çözücü) için Android Açık Kaynak Projesi'ndeki (varsa) ilgili Codec 2.0 yazılım codec'ini İÇERMELİDİR.

    • [C-3-2] Yazılım codec'lerine erişimin daha dar kapsamlı olarak verilmesini sağlamak için Codec 2.0 yazılım codec'lerini Android Açık Kaynak Projesi'nde sağlandığı şekilde yazılım codec'i sürecinde barındırmalıdır.

    • [C-3-3] Adları "c2.android." ile başlayan codec'ler Android Açık Kaynak Projesi kaynak koduna DAYANMALIDIR.

    5.1.10. Medya Codec'i Karakterizasyonu

    Cihaz uygulamaları medya codec'lerini destekliyorsa:

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

    Özellikle:

    • [C-1-2] Adları "OMX." ile başlayan codec'ler OMX API'leri KULLANILMALI ve OMX IL adlandırma kurallarına uygun adlar verilmelidir.

    • [C-1-3] Adları "c2." ile başlayan codec'ler Codec 2.0 API'si KULLANILMALIDIR ve Android için Codec 2.0 adlandırma yönergelerine uygun adlar verilmelidir.

    • [C-1-4] Adları "OMX.google." veya "c2.android." ile başlayan codec'ler Tedarikçi veya donanım hızlandırmalı olarak nitelendirilmemelidir.

    • [C-1-5] Bir codec işleminde (satıcı veya sistem) çalışan ve bellek ayırıcılar ile eşleyiciler dışındaki donanım sürücülerine erişimi olan codec'ler YALNIZCA yazılım olarak nitelendirilmemelidir.

    • [C-1-6] Android Açık Kaynak Projesi'nde bulunmayan veya bu projedeki kaynak koduna dayanmayan kodekler, satıcıya ait olarak nitelendirilmelidir.

    • [C-1-7] Donanım hızlandırmayı kullanan codec'ler, donanım hızlandırmalı olarak tanımlanmalıdır.

    • [C-1-8] Codec adları yanıltıcı OLMAMALIDIR. Örneğin, "decoders" adlı codec'ler kod çözmeyi, "encoders" adlı codec'ler ise kodlamayı DESTEKLEMELİDİR. Adlarında medya biçimleri bulunan codec'ler bu biçimleri desteklemelidir.

    Cihaz uygulamaları video codec'lerini destekliyorsa:

    • [C-2-1] Tüm video codec'leri, codec tarafından destekleniyorsa aşağıdaki boyutlar için ulaşılabilir kare hızı verilerini yayınLAMALIDIR:
    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)
    • 1408 x 1152 piksel (H263)
    • 1280 x 720 piksel (diğer, AV1)
    1920 x 1080 piksel (MPEG4, AV1 hariç) 3840 x 2160 piksel (HEVC, VP9, AV1)
    • [C-2-2] Donanım hızlandırmalı olarak nitelendirilen video codec'leri, performans noktası bilgilerini YAYINLAMALIDIR. Desteklenen başka bir standart performans noktası kapsamına girmediği sürece her biri, desteklenen tüm standart performans noktalarını (PerformancePoint API'sinde listelenmiştir) LİSTELEMELİDİR.

    • Ayrıca, listelenen standart performans noktalarından farklı olarak sürekli video performansını destekliyorlarsa genişletilmiş performans noktalarını YAYINLAMALIDIR.

    5.2. Video Kodlama

    Cihaz uygulamaları herhangi bir video kodlayıcıyı destekleyip üçüncü taraf uygulamalarına sunuyorsa 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 ayarlıyorsa, kodlanmış bit hızı, minimum kalite tabanını etkilemediği sürece :

    • Bir kayan pencerede, kare içi (I-frame) aralıklar arasındaki bit hızının% 15'inden fazla OLMAMALIDIR.
    • 1 saniyelik hareketli bir aralıkta bit hızının% 100'ünden fazla OLMAMALIDIR.

    Cihaz uygulamaları herhangi bir video kodlayıcıyı destekleyip üçüncü taraf uygulamaları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-SR-2]'nin, 1 saniyelik kayan pencerede hedef bit hızının% 15'inden fazla olmaması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, köşegen uzunluğu en az 2,5 inç olan yerleşik bir ekran içeriyorsa, video çıkışı bağlantı noktası içeriyorsa veya android.hardware.camera.any özellik işareti aracılığıyla kamera desteği beyan ediyorsa:

    • [C-1-1] VP8 veya H.264 video kodlayıcılarından en az birinin desteğini içermeli ve bunu üçüncü taraf uygulamaları 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 destekleyip üçü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ı desteklenmelidir. Bu durumda video kodlayıcı, giriş arabelleklerinin zaman damgalarına göre anlık kare süresini belirlemeli ve bit aralığını 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 kullanıma sunulan bir veya daha fazla bağlı ya da takılabilir donanım kamerasını destekliyorsa:

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

    Cihaz uygulamaları HDR kodlama sağlıyorsa:

    • [C-SR-1] HDR biçiminden SDR biçimine dönüştürmek için sorunsuz kod dönüştürme API'si sağlayan bir eklenti sunması ŞİDDETLE TAVSİYE EDİLİR.

    5.2.1. H.263

    Cihaz uygulamaları H.263 kodlayıcıları destekliyorsa ve üçüncü taraf uygulamalarına sunuyorsa:

    • [C-1-1] Baseline Profile Level 45 kullanılarak QCIF çözünürlüğü (176 x 144) DESTEKLENMELİDİR. SQCIF çözünürlüğü isteğe bağlıdır.

    5.2.2. H.264

    Cihaz uygulamaları H.264 codec'ini destekliyorsa:

    • [C-1-1] Temel Profil Seviye 3'ü DESTEKLEMELİDİR. Ancak ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğu korumak için kodlayıcıların Baseline Profile'da ASO, FMO ve RS'yi KULLANMAMASI ÖNERİLİR.
    • [C-1-2] Aşağıdaki tabloda yer alan SD (Standart Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
    • Ana Profil Düzeyi 4'ü DESTEKLEMELİDİR.
    • Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlü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 kodlamasının desteklendiğini bildiriyorsa:

    • [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
    SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
    Video çözünürlüğü 320 x 240 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel
    Video kare hızı 20 fps 30 fps 30 fps 30 fps
    Video bit hızı 384 Kb/sn 2 Mb/sn 4 Mb/sn 10 Mb/sn

    5.2.3. VP8

    Cihaz uygulamaları VP8 codec'ini destekliyorsa:

    • [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
    • Aşağıdaki HD (Yüksek Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
    • [C-1-2] Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
    • Web video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olmasını sağlamak için WebM projesi RTC donanım kodlama şartlarını karşılayan bir donanım VP8 codec'i SAĞLAMALIDIR.

    Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için VP8 kodlamasının desteklendiğini bildiriyorsa:

    • [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
    SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
    Video çözünürlüğü 320 x 180 piksel 640 x 360 piksel 1280 x 720 piksel 1920 x 1080 piksel
    Video kare hızı 30 fps 30 fps 30 fps 30 fps
    Video bit hızı 800 Kb/sn 2 Mb/sn 4 Mb/sn 10 Mb/sn

    5.2.4. VP9

    Cihaz uygulamaları VP9 codec'ini destekliyorsa:

    • [C-1-2] Profil 0 Seviye 3'ü DESTEKLEMELİDİR.
    • [C-1-1] Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
    • [C-1-3] CodecPrivate verileri OLUŞTURMALIDIR.
    • Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
    • Donanım kodlayıcı varsa [C-SR-1] HD kod çözme profillerini aşağıdaki tabloda belirtildiği şekilde desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
    SD HD 720p HD 1080p UHD
    Video çözünürlüğü 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel 3840 x 2160 piksel
    Video kare hızı 30 fps 30 fps 30 fps 30 fps
    Video bit hızı 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

    Cihaz uygulamaları, medya API'leri aracılığıyla Profil 2 veya Profil 3'ü desteklediğini iddia ediyorsa:

    • 12 bit biçim desteği İSTEĞE BAĞLIDIR.

    5.2.5. H.265

    Cihaz uygulamaları H.265 codec'ini destekliyorsa:

    • [C-1-1] 512 x 512 çözünürlüğe kadar Main Profile Level 3'ü DESTEKLEMELİDİR.
    • Donanım kodlayıcı varsa [C-SR-1] öğesinin aşağıdaki tabloda belirtildiği gibi 720 x 480 SD profilini ve HD kodlama profillerini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
    SD HD 720p HD 1080p UHD
    Video çözünürlüğü 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel 3840 x 2160 piksel
    Video kare hızı 30 fps 30 fps 30 fps 30 fps
    Video bit hızı 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

    5.2.6. AV1

    Cihaz uygulamaları AV1 codec'ini destekliyorsa:

    • [C-1-1] 8 bit ve 10 bit içerik de dahil olmak üzere Ana Profili DESTEKLEMELİDİR.
    • [C-1-2] Performans verilerini yayınlamalıdır. Diğer bir deyişle, aşağıdaki tabloda desteklenen çözümler için getSupportedFrameRatesFor() veya getSupportedPerformancePoints() API'leri aracılığıyla performans verilerini raporlamalıdır.

    • [C-1-3] HDR meta verilerini KABUL ETMELİ ve bit akışına ÇIKARMALIDIR.

    AV1 kodlayıcı donanım hızlandırmalıysa:

    • [C-2-1] Aşağıdaki tablodan HD1080p kodlama profiline kadar ve bu profil 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 3840 x 2160 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

    5.3. Video kod çözme

    Android 17'de şartların başlangıcı değişti

    Cihaz uygulamaları VP8, VP9, H.264, H.265 veya AV1 codec'lerini destekliyorsa:

    • [C-1-1] Tüm VP8, VP9, H.264, H.265 ve AV1 codec'leri için aynı akışta 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 cihazda her codec'in desteklediği maksimum çözünürlüğe kadar desteklemelidir.

    5.3.1. MPEG-2

    Cihaz uygulamaları MPEG-2 kod çözücülerini destekliyorsa:

    • [C-1-1] Ana Profil Yüksek Seviyesi desteklenmelidir.

    5.3.2. H.263

    Cihaz uygulamaları H.263 kod çözücülerini destekliyorsa:

    • [C-1-1] Baseline Profile Level 30 (CIF, QCIF ve SQCIF çözünürlükleri @ 30 fps 384 kb/sn) ve Level 45'i (QCIF ve SQCIF çözünürlükleri @ 30 fps 128 kb/sn) desteklemelidir.

    5.3.3. MPEG-4

    MPEG-4 kod çözücüler içeren cihaz uygulamaları:

    • [C-1-1] Simple Profile Level 3'ü DESTEKLEMELİDİR.

    5.3.4. H.264

    Cihaz uygulamaları H.264 kod çözücülerini destekliyorsa:

    • [C-1-1] Main Profile Level 3.1 ve Baseline Profile'ı DESTEKLEMELİDİR. ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR.
    • [C-1-2] Aşağıdaki tabloda listelenen ve Baseline Profile ile Main Profile Level 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlük) profillerine sahip videoları çözebilmelidir.
    • Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlük) profillerine sahip videoların kodunu çözebilmelidir.

    Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse cihaz uygulamaları:

    • [C-2-1] Aşağıdaki tabloda yer alan HD 720p video kod çözme profillerini DESTEKLEMELİDİR.
    • [C-2-2] Aşağıdaki tabloda yer alan HD 1080p video kod çözme profillerini DESTEKLEMELİDİR.
    SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
    Video çözünürlüğü 320 x 240 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel
    Video kare hızı 30 fps 30 fps 60 fps 30 fps (60 fpsTelevizyon)
    Video bit hızı 800 Kb/sn 2 Mb/sn 8 Mb/sn 20 Mb/sn

    5.3.5. H.265 (HEVC)

    Cihaz uygulamaları H.265 codec'ini destekliyorsa:

    • [C-1-1] Aşağıdaki tabloda belirtildiği gibi Ana Profil Seviye 3 Ana katmanı ve SD video kod çözme profillerini DESTEKLEMELİDİR.
    • Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
    • [C-1-2] Donanım kod çözücü varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.

    Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:

    • [C-2-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin H.265 veya VP9 kod çözme işlemlerinden en az birini desteklemelidir.
    SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p UHD
    Video çözünürlüğü 352 x 288 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel 3840 x 2160 piksel
    Video kare hızı 30 fps 30 fps 30 fps 30/60 fps (60 fpsH.265 donanım kod çözme özelliğine sahip televizyon) 60 fps
    Video bit hızı 600 Kb/sn 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

    Cihaz uygulamaları, Media API'leri aracılığıyla bir HDR profilini desteklediğini iddia ediyorsa:

    • [C-3-1] Cihaz uygulamaları, uygulamadan gelen gerekli HDR meta verilerini KABUL ETMELİ, bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerini ayıklamayı ve çıkışını desteklemelidir.
    • [C-3-2] Cihaz uygulamaları, HDR içeriği cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI) düzgün şekilde göstermelidir.

    5.3.6. VP8

    Cihaz uygulamaları VP8 codec'ini destekliyorsa:

    • [C-1-1] Aşağıdaki tablodaki SD kod çözme profillerini DESTEKLEMELİDİR.
    • Koşulları karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
    • Aşağıdaki tabloda yer alan HD kod çözme profillerini DESTEKLEMELİDİR.

    Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:

    • [C-2-1] Cihaz uygulamaları, aşağıdaki tabloda yer alan 720p profillerini DESTEKLEMELİDİR.
    • [C-2-2] Cihaz uygulamaları, aşağıdaki tabloda yer alan 1080p profillerini DESTEKLEMELİDİR.
    SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
    Video çözünürlüğü 320 x 180 piksel 640 x 360 piksel 1280 x 720 piksel 1920 x 1080 piksel
    Video kare hızı 30 fps 30 fps 30 fps (60 fpsTelevizyon) 30 (60 fpsTelevizyon)
    Video bit hızı 800 Kb/sn 2 Mb/sn 8 Mb/sn 20 Mb/sn

    5.3.7. VP9

    Cihaz uygulamaları VP9 codec'ini destekliyorsa:

    • [C-1-1] Aşağıdaki tabloda belirtildiği gibi SD video kod çözme profillerini DESTEKLEMELİDİR.
    • Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.

    Cihaz uygulamaları VP9 codec'ini ve donanım kod çözücüyü destekliyorsa:

    • [C-2-1] Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.

    Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:

    • [C-3-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin VP9 veya H.265 kod çözme işlemlerinden en az birini desteklemelidir.
    SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p UHD
    Video çözünürlüğü 320 x 180 piksel 640 x 360 piksel 1280 x 720 piksel 1920 x 1080 piksel 3840 x 2160 piksel
    Video kare hızı 30 fps 30 fps 30 fps 30 fps (60 fpsVP9 donanım kod çözme özelliğine sahip televizyon) 60 fps
    Video bit hızı 600 Kb/sn 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

    Cihaz uygulamaları, "CodecProfileLevel" medya API'leri aracılığıyla VP9Profile2 veya VP9Profile3'yi desteklediğini iddia ediyorsa:

    • 12 bit biçim desteği İSTEĞE BAĞLIDIR.

    Cihaz uygulamaları, medya API'leri aracılığıyla bir HDR profilini (VP9Profile2HDR, VP9Profile2HDR10Plus, VP9Profile3HDR, VP9Profile3HDR10Plus) desteklediğini iddia ediyorsa:

    • [C-4-1] Cihaz uygulamaları, uygulamadan gelen gerekli HDR meta verilerini (KEY_HDR_STATIC_INFO tüm HDR profilleri için ve 'KEY_HDR10_PLUS_INFO' HDR10Plus profilleri için) kabul ETMELİDİR. Ayrıca, bit akışından ve/veya kapsayıcıdan gerekli HDR meta verilerini ayıklamayı ve çıkışını desteklemeleri GEREKİR.
    • [C-4-2] Cihaz uygulamaları, HDR içeriği cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI) düzgün şekilde göstermelidir.

    5.3.8. Dolby Vision

    Cihaz uygulamaları, HDR_TYPE_DOLBY_VISION aracılığıyla Dolby Vision kod çözücüsünü desteklediğini beyan ediyorsa:

    • [C-1-1] Dolby Vision özellikli bir çıkarıcı SAĞLANMALIDIR.

    • [C-1-2] Dolby Vision içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktası (ör. HDMI) aracılığıyla bağlı harici bir ekranda DOĞRU şekilde göstermELİDİR.

    • [C-1-3] Geriye dönük uyumlu temel katmanların (varsa) parça kimliği, birleşik Dolby Vision katmanının parça kimliğiyle aynı OLMALIDIR.

    5.3.9. AV1

    Cihaz uygulamaları AV1 codec'ini destekliyorsa ve üçüncü taraf uygulamalarının kullanımına sunuyorsa:

    • [C-1-1] 8 bit ve 10 bit içerik de dahil olmak üzere Ana Profili DESTEKLEMELİDİR.

    Cihaz uygulamaları, donanım hızlandırmalı kod çözücü ile AV1 codec'i için destek sağlıyorsa:

    • [C-2-1] Display.getSupportedModes() yöntemiyle bildirilen yükseklik 720p'ye eşit veya daha yüksek olduğunda aşağıdaki tablodaki en az HD 720p video kod çözme profillerinin kodunu çözebilmelidir.
    • [C-2-2] Display.getSupportedModes() yöntemiyle bildirilen yükseklik 1080p'ye eşit veya daha yüksek olduğunda aşağıdaki tablodan 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 3840 x 2160 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 profilini destekliyorsa:

    • [C-3-1] Bit akışından ve/veya kapsayıcıdan HDR meta verilerinin çıkarılmasını ve çıkışını desteklemelidir.
    • [C-3-2] HDR içerikleri cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI) düzgün şekilde göstermELİDİR.

    5.4. Ses Kaydetme

    Bu bölümde belirtilen şartlardan bazıları Android 4.3'ten beri SHOULD (GEREKLİ) olarak listelenmiş olsa da gelecekteki sürümlerin Uyumluluk Tanımı'nda bunların MUST (ZORUNLU) olarak değiştirilmesi planlanmaktadır. Mevcut ve yeni Android cihazların, GEREKLİ olarak listelenen bu koşulları karşılaması ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiklerinde Android uyumluluğu elde edemezler.

    5.4.1. İşlenmemiş Ses Kaydı ve Mikrofon Bilgileri

    Cihaz uygulamaları android.hardware.microphone beyan ederse:

    • [C-1-1] Başarıyla açılan tüm AudioRecord veya AAudio GİRİŞ akışları için ham ses içeriğinin yakalanmasına İZİN VERİLMELİDİR. En azından aşağıdaki özellikler DESTEKLENMELİDİR:

    • Aşağıdaki özelliklere sahip ham ses içeriklerinin yakalanmasına İZİN VERİLMELİDİR:

      • Biçim: Doğrusal PCM, 16 bit ve 24 bit
      • Örnekleme hızları: 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 yapmadan yukarıdaki örnek hızlarında yakalama YAPILMALIDIR.

    • [C-1-3] Yukarıda verilen örnekleme hızları, alt örnekleme ile yakalandığında uygun bir yumuşatma filtresi İÇERMELİDİR.

    • AM radyo ve DVD kalitesinde ham ses içeriği yakalamaya İZİN VERİLMELİDİR. Bu, aşağıdaki özelliklerin karşılanması anlamına gelir:

      • Biçim: Doğrusal PCM, 16 bit
      • Örnekleme hızları: 22050, 48000 Hz
      • Kanallar: Stereo
    • [C-1-4] MicrophoneInfo API'sine UYULMALIDIR ve cihazda bulunan, AudioManager.getMicrophones() API aracılığıyla üçüncü taraf uygulamalarının erişebildiği mikrofonlarla ilgili bilgiler, MediaRecorder.AudioSources DEFAULT, MIC, CAMCORDER, VOICE_RECOGNITION, VOICE_COMMUNICATION, UNPROCESSED veya VOICE_PERFORMANCE kullanılarak etkin AudioRecord için doğru şekilde doldurulmalıdır. Cihaz uygulamaları, AM radyo ve DVD kalitesinde ham ses içeriği yakalamaya izin veriyorsa:

    • [C-2-1] 16000:22050 veya 44100:48000'den yüksek bir oranda yukarı örnekleme olmadan KAYIT YAPILMALIDIR.

    • [C-2-2] Herhangi bir yukarı örnekleme veya aşağı örnekleme için uygun bir yumuşatma filtresi İÇERMELİDİR.

    5.4.2. Ses tanıma için yakalama

    Cihaz uygulamaları android.hardware.microphone beyan ederse:

    • [C-1-1] android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION ses kaynağını 44.100 ve 48.000 örnekleme hızlarından birinde yakalamalıdır.
    • [C-1-2] AudioSource.VOICE_RECOGNITION ses kaynağındaki ses akışı kaydedilirken varsayılan olarak tüm gürültü azaltma ses işleme özelliklerini devre dışı BIRAKMALIDIR.
    • [C-1-3] AudioSource.VOICE_RECOGNITION ses kaynağından ses akışı kaydederken varsayılan olarak otomatik kazanç kontrolünü devre dışı bırakmalıdır.

    • Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri GÖSTERMELİDİR: Özellikle ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofon için 100 Hz ile 4.000 Hz arasında ±3 dB.

    • [C-SR-1] Ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla düşük frekans aralığında, özellikle 30 Hz ile 100 Hz arasında ±20 dB genlik seviyeleri göstermesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-2] Ses tanıma ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla yüksek frekans aralığında, özellikle 4.000 Hz ile 22 kHz arasında ±30 dB genlik seviyeleri göstermesi ŞİDDETLE TAVSİYE EDİLİR.

    • 1.000 Hz sinüs dalgası ton kaynağı, 90 dB ses basıncı seviyesinde (SPL) (mikrofonun yanında ölçülür) çalındığında ses giriş hassasiyeti, ses tanıma ses kaynağını kaydetmek için kullanılan her bir mikrofon için 16 bit örneklerde 1.770 ile 3.530 arasında bir aralıkta RMS 2.500 ideal yanıtını (veya kayan noktalı/çift duyarlıklı örneklerde -22,35 dB ±3 dB tam ölçek) verecek şekilde AYARLANMALIDIR.

    • PCM genlik seviyeleri, mikrofonun 90 dB SPL'de -18 dB ile +12 dB arasında en az 30 dB aralığında giriş SPL değişikliklerini doğrusal olarak takip edecek şekilde ses tanıma ses akışını KAYDETMELİDİR.

    • Ses tanıma ses akışını, mikrofon girişinde 90 dB SPL giriş seviyesinde 1 kHz için% 1'ten az toplam harmonik bozulma (THD) ile kaydetmelidir.

    Cihaz uygulamaları, konuşma tanıma için ayarlanmış android.hardware.microphone ve gürültü bastırma (azaltma) teknolojilerini beyan ediyorsa:

    • [C-2-1] Bu ses efektinin android.media.audiofx.NoiseSuppressor API ile kontrol edilmesine İZİN VERİLMELİDİR.
    • [C-2-2] AudioEffect.Descriptor.uuid alanı aracılığıyla her gürültü bastırma teknolojisi uygulamasını benzersiz şekilde tanımlamalıdır.

    5.4.3. Oynatmayı 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 beyan ederse:

    • [C-1-1] REMOTE_SUBMIX ses kaynağını, bir uygulama bu ses kaynağından kayıt yapmak için android.media.AudioRecord API'sini kullandığında aşağıdakiler hariç tüm ses akışlarının karışımını yakalayacak şekilde doğru bir şekilde uygulamalıdır:

      • AudioManager.STREAM_RING
      • AudioManager.STREAM_ALARM
      • AudioManager.STREAM_NOTIFICATION

    5.4.4. Akustik Yankı Önleyici

    Cihaz uygulamaları android.hardware.microphone beyan ederse:

    • AudioSource.VOICE_COMMUNICATION ile kayıt yaparken sesli iletişim için ayarlanmış ve yakalama yoluna uygulanmış bir akustik yankı giderici (AEC) teknolojisi KULLANILMALIDIR. (AEC) technology tuned for voice communication and applied to the capture path when capturing using AudioSource.VOICE_COMMUNICATION.

    Android 17'de şartların başlangıcı değişti

    Cihaz uygulamaları, AudioSource.VOICE_COMMUNICATION seçildiğinde yakalama ses yoluna yerleştirilen bir akustik yankı giderici sağlıyorsa:

    • [C-1-2] AcousticEchoCanceler.getEnabled AcousticEchoCanceler API yöntemi aracılığıyla, izleme dışı form faktörleri için ses yolunda AEC'nin etkinleştirilmesini yansıtmalıdır. Bu yöntem, etkin olduğunda true, etkin olmadığında ise false değerini döndürmelidir.

    • [C-SR-2] [C-SR-1], bu ses efektinin AcousticEchoCanceler API ile kontrol edilebilmesi için ŞİDDETLE_TAVSİYE_EDİLİR.

    • [C-SR-3] [C-SR-2], AudioEffect.Descriptor.uuid alanı aracılığıyla her bir AEC teknolojisi uygulamasının benzersiz şekilde tanımlanması için ŞİDDETLE TAVSİYE EDİLİR.

    5.4.5. Eşzamanlı Kayıt

    Cihaz uygulamaları android.hardware.microphone özelliğini beyan ediyorsa bu belgede açıklandığı gibi eşzamanlı yakalama özelliğini uygulamaları ZORUNLUDUR. Özellikle:

    • [C-1-1] AudioSource.VOICE_RECOGNITION ile yakalama yapan bir erişilebilirlik hizmetinin ve herhangi bir AudioSource ile yakalama yapan en az bir uygulamanın mikrofona eşzamanlı erişmesine İZİN VERİLMELİDİR.
    • [C-1-2] MUST allow concurrent access to microphone by a pre-installed application that holds an Assistant role and at least one application capturing with any AudioSource except for AudioSource.VOICE_COMMUNICATION or AudioSource.CAMCORDER.
    • [C-1-3] Bir uygulama AudioSource.VOICE_COMMUNICATION veya AudioSource.CAMCORDER ile kayıt yaparken erişilebilirlik hizmeti hariç diğer tüm uygulamalar için ses kaydını kapatmalıdır. Ancak bir uygulama AudioSource.VOICE_COMMUNICATION üzerinden kayıt yaparken CAPTURE_AUDIO_OUTPUT iznine sahip ayrıcalıklı (önceden yüklenmiş) bir uygulama varsa bu uygulama sesli görüşmeyi kaydedebilir.
    • [C-1-4] İki veya daha fazla uygulama aynı anda kayıt yapıyorsa ve hiçbir uygulamanın üstte kullanıcı arayüzü yoksa sesi en son kayıt yapmaya başlayan uygulama alır.

    5.5. Ses oynatma

    Android, uygulamaların 7.8.2 bölümünde tanımlandığı şekilde ses çıkışı çevre birimi üzerinden ses oynatmasına olanak tanıyan desteği içerir.

    5.5.1. Ham Ses Oynatma

    Cihaz uygulamaları android.hardware.audio.output beyan ederse:

    • [C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına İZİN VERİLMELİDİR:

      • Kaynak biçimler: Doğrusal PCM, 16 bit, 8 bit, kayan nokta
      • Kanallar: Mono, Stereo, 8 kanala kadar geçerli çok kanallı yapılandırmalar
      • Örnekleme hızları (Hz cinsinden):
        • Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000
        • Mono ve stereo olarak 96000

    5.5.2. Ses efektleri

    Android, cihaz uygulamaları için ses efektleri API'si sağlar.

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

    • [C-1-1] EFFECT_TYPE_EQUALIZER ve EFFECT_TYPE_LOUDNESS_ENHANCER uygulamaları, AudioEffect alt sınıfları Equalizer ve LoudnessEnhancer aracılığıyla kontrol edilebilir şekilde DESTEKLENMELİDİR.

    • [C-1-2] Visualizer sınıfı aracılığıyla kontrol edilebilen görselleştirici API uygulamasını DESTEKLEMELİDİR.

    • [C-1-3] AudioEffect alt sınıfı aracılığıyla kontrol edilebilen EFFECT_TYPE_DYNAMICS_PROCESSING uygulamasını desteklemelidir DynamicsProcessing.

    • [C-1-4] Efekt sonuçları çerçeve ses işlem hattına döndürüldüğünde, kayan nokta giriş ve çıkışıyla ses efektlerini desteklemelidir. Bu, ekolayzır gibi normal ekleme veya yardımcı efektleri ifade eder. Çerçeve ses işlem hattı tarafından efekt sonuçları görünmediğinde (ör. son işlem veya boşaltılmış efektler) eşdeğer davranış kesinlikle önerilir.

    • [C-1-5] Efekt sonuçları çerçeve ses ardışık düzenine döndürüldüğünde ses efektlerinin, mikser kanalı sayısı olarak da bilinen FCC_LIMIT'ya kadar birden fazla kanalı desteklediğinden EMİN OLMALIDIR. Bu, normal ekleme veya yardımcı efektleri ifade eder ancak kanal sayısını değiştiren downmix, upmix veya uzamsallaştırma efektleri gibi özel efektleri kapsamaz. Efektler, çerçeve ses ardışık düzeni tarafından görünür olmadığında (ör. son işlem veya yük aktarılmış efektler) eşdeğer davranış önerilir.

    • EFFECT_TYPE_BASS_BOOST, EFFECT_TYPE_ENV_REVERB, EFFECT_TYPE_PRESET_REVERB ve EFFECT_TYPE_VIRTUALIZER uygulamalarını AudioEffect alt sınıfları BassBoost, EnvironmentalReverb, PresetReverb ve Virtualizer aracılığıyla kontrol edilebilir şekilde DESTEKLEMELİDİR.

    • [C-SR-1] Kayan noktalı ve çok kanallı efektleri desteklemek için ŞİDDETLE TAVSİYE EDİ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 içinde herkese açık olarak tanımlanan araç ses sistemi kullanımı kullanılarak her ses akışının ses düzeyinin ayrı ayrı ayarlanmasına İZİN VERİLMELİDİR.

    5.5.4. Ses Yük Aktarımı

    Cihaz uygulamaları ses aktarımı oynatmayı destekliyorsa:

    • [C-SR-1] AudioTrack gapless API ve MediaPlayer için medya kapsayıcısı tarafından belirtildiğinde, aynı biçime sahip iki klip arasındaki oynatılan boşluksuz ses içeriğinin kırpılması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-2] AAC, MP3, OPUS ve PCM biçimleri için oynatmayı devre dışı bırakma özelliğinin uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları, MMAP PCM boşaltma desteğini beyan ediyorsa (AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD ve AUDIO_OUTPUT_FLAG_MMAP_NOIRQ içeren işaretlere sahip bir karışım bağlantı noktası tarafından beyan edilir):

    • [C-1-1] Stereo ve mono için 44,1 kHz ve 48 kHz'de en az AUDIO_FORMAT_PCM_16_BIT'yi desteklemelidir.

    • [C-1-2] 48 kHz stereo PCM 16 bit/örnek hızında en az 5 saniyelik ses depolayabilecek bir arabellek boyutuna SAHİP OLMALIDIR.

    5.5.5. Oynatma Parametreleri

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları PlaybackParams API'yi destekliyorsa oynatma parametreleri:

    • [C-1-1] 1,0 aralığında 0,5 ile 2,0 arasındaki hızlar DESTEKLENMELİDİR.

    5.6. Ses Gecikmesi

    Ses gecikmesi, bir ses sinyalinin sistemden geçerken yaşadığı zaman gecikmesidir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikme sürelerine ihtiyaç duyar.

    Bu bölümün amaçları doğrultusunda aşağıdaki tanımları kullanın:

    • output latency. Bir uygulamanın PCM kodlu bir veri çerçevesi yazdığı zaman ile karşılık gelen sesin cihaz üzerindeki bir dönüştürücüde ortama sunulduğu veya sinyalin bir bağlantı noktası üzerinden cihazdan ayrıldığı ve harici olarak gözlemlenebildiği arasındaki aralık.

    • Soğuk çıkış gecikmesi. Ses çıkışı sistemi istekten önce boşta kalıp kapatıldığında, çı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 çalmaya başladıktan sonraki karelerin çıkış gecikmesi.

    • giriş gecikmesi. Bir sesin ortam tarafından cihaz üzerindeki dönüştürücüde cihaza sunulması veya bir sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın PCM kodlu verilerin ilgili çerçevesini okuması arasındaki aralık.

    • kayıp giriş. Giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.

    • Soğuk giriş gecikmesi Ses giriş sistemi, istekten önce boşta kalmış ve kapatılmışsa akışın başlatılması ile ilk geçerli karenin alınması arasındaki süre.

    • sürekli giriş gecikmesi. Cihaz ses yakalarken sonraki karelerin giriş gecikmesi.

    • sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesi, sürekli çıkış gecikmesi ve bir arabellek süresinin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için gereken süreyi sağlar.

    • OpenSL ES PCM arabellek sırası API'si. Android NDK'deki PCM ile ilgili OpenSL ES API'leri kümesi.

    • AAudio yerel ses API'si. Android NDK'deki AAudio API'leri kümesi.

    • Zaman damgası. Bir akış içindeki göreli çerçeve konumundan ve bu çerçevenin ilişkili uç noktadaki ses işleme ardışık düzenine girdiği veya bu ardışık düzenden çıktığı tahmini zamandan oluşan bir çift. Ayrıca AudioTimestamp'i de inceleyin.

    • glitch. Ses sinyalinde geçici kesinti veya yanlış örnek değer. Bu durum genellikle çıkış için arabellek yetersizliği, giriş için arabellek taşması ya da dijital veya analog gürültüye neden olan başka bir kaynaktan kaynaklanır.

    • Ortalama mutlak sapma (MAD). Bir değer kümesi için ortalamadan sapmaların mutlak değerinin ortalaması.

    • CTS Verifier ile ölçülen dokunma-ton gecikmesi (TTL), ekrana dokunulduğu an ile bu dokunma sonucunda oluşturulan bir tonun hoparlörden duyulduğu an arasındaki süredir. Bu değer, çıkış için AAudio yerel ses API'si kullanılarak yapılan 5 ölçümün ortalamasıdır.

    • CTS Verifier tarafından ölçülen gidiş dönüş gecikmesi (RTL), AAudio yerel ses API'si kullanılarak çıkışı girişe geri besleyen bir geri döngü yolu üzerinden ölçülen 5 ölçümdeki ortalama sürekli gecikmedir.

      Loopback yolları şunlardır:

      • Hoparlör/mikrofon: Dahili hoparlörden dahili mikrofona.
      • Analog: 3,5 mm analog jak ve geri döngü adaptörü.
      • USB: USB - 3,5 mm adaptör ve bir geri döngü adaptörü veya USB ses arayüzü ve geri döngü kabloları.
    • FEATURE_AUDIO_LOW_LATENCY. android.hardware.audio.low_latency özelliği beyan edilmiş olmalıdır.

    • FEATURE_AUDIO_PRO. android.hardware.audio.pro özelliği beyan edilmiş olmalıdır.

    • MPC. Medya Performansı sınıfı.

    • Baş izleme gecikmesi. Atalet ölçüm birimi (IMU) tarafından yakalanan baş hareketinden, bu hareketin neden olduğu ses değişikliğinin kulaklık dönüştürücüleri tarafından algılanmasına kadar geçen süre.

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları:

    • [C-0-1] Bir uygulama, desteklenen bir android.media.AudioManager.setCommunicationDevice() ile device (ör. kablolu mikrofonlu kulaklıklar, yerleşik hoparlörler veya kulaklıklar ya da USB mikrofonlu kulaklıklar) setCommunicationDevice() işlevini döndürdükten sonraki 1.500 ms içinde android.media.AudioManager.OnCommunicationDeviceChangedListener.onCommunicationDeviceChanged() geri çağırma işlevinin bu ses sistemiyle çağrıldığından EMİN OLMALIDIR.true

    Cihaz uygulamaları android.hardware.audio.output özelliğini destekliyorsa aşağıdaki şartları karşılamalı veya aşmalıdır:

    • [C-1-1] Android 15'te şart kaldırıldı.

    • [C-1-2] 500 milisaniye veya daha az soğuk çıkış gecikmesi.

    • [C-1-3] AAudioStreamBuilder_openStream() kullanılarak bir çıkış akışının açılması 1.000 milisaniyeden kısa sürmelidir.

    • [C-1-4] AAudioStream_getTimestamp tarafından döndürülen giriş ve çıkış zaman damgalarına göre hesaplanan gidiş dönüş gecikmeleri, hoparlörler, kablolu kulaklıklar ve kablosuz kulaklıklar için AAUDIO_PERFORMANCE_MODE_NONE ve AAUDIO_PERFORMANCE_MODE_LOW_LATENCY'nin ölçülen gidiş dönüş gecikmesinin 200 ms içinde OLMALIDIR.

    • [C-SR-1] Android 15'te şart kaldırıldı.

    • [C-SR-2] Android 15'te şart kaldırıldı.

    • [C-SR-4] Android 15'te şart kaldırıldı.

    • [C-SR-5] Android 15'te bu şart kaldırıldı.

    • [C-SR-6] Android 15'te şart kaldırıldı.

    • [C-SR-7] Android 15'te bu şart kaldırıldı.

    • [C-2-1] Android 15'te bu şart kaldırıldı.

    Cihaz uygulamaları android.hardware.microphone içeriyorsa aşağıdaki giriş sesi şartlarını KARŞILAMALIDIR:

    • [C-3-1] Android 15'te bu şart kaldırıldı.

    • [C-3-2] 500 milisaniye veya daha az soğuk giriş gecikmesi.

    • [C-3-3] AAudioStreamBuilder_openStream() kullanılarak bir giriş akışının açılması 1.000 milisaniyeden kısa sürmelidir.

    • [C-SR-8] Android 15'te şart kaldırıldı.

    • [C-SR-11] Android 15'te şart kaldırıldı.

    • [C-SR-12] Android 15'te bu şart kaldırıldı.

    Aşağıdaki tabloda, 2.2.1'de tanımlanan ve android.hardware.audio.output ile android.hardware.microphone bildiren el cihazı uygulamaları için RTL ile ilgili şartlar tanımlanmıştır.

    Android 17'de şartların başlangıcı değişti
    Cihaz ve Beyanlar RTL (ms) MAD (ms) Loopback Yolları
    El Kamerası 200 25 hoparlör/mikrofon, analog 3,5 mm (destekleniyorsa), USB (destekleniyorsa)
    MPC 37 ve üzeri 65 10 desteklenen tüm veri yolları
    >= MPC_T (13) MPC 33 - MPC 36 80 15 en az bir yol
    FEATURE_AUDIO_LOW_LATENCY 50 10 en az bir yol
    FEATURE_AUDIO_PRO 25 5 en az bir yol
    FEATURE_AUDIO_PRO 20 5 analog (destekleniyorsa)
    FEATURE_AUDIO_PRO 25 5 USB (analog desteklenmiyorsa)

    Aşağıdaki tabloda, android.hardware.audio.output ve android.hardware.microphone bildiren 2.2.1'de tanımlandığı şekilde, el cihazı uygulamaları için TTL ile ilgili koşullar tanımlanmaktadır.

    Android 17'de şartların başlangıcı değişti

    Cihaz ve Beyanlar TTL (ms)
    El Kamerası 250
    MPC 37 ve üzeri 65
    >= MPC_T (13) MPC 33 - MPC 36 80
    MPC_S (12) MPC 31 100
    FEATURE_AUDIO_PRO 80

    Cihaz uygulamaları, baş takibi ile spatial audio desteği içeriyorsa ve PackageManager.FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY işaretini bildiriyorsa:

    • [C-4-1] Ses güncelleme gecikmesiyle birlikte en fazla 300 ms'lik bir baş takibi gecikmesi OLMALIDIR.

    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çim için cihaz uygulaması:

    • [C-1-1] Bu codec'i veya kapsayıcıyı HTTP ve HTTPS üzerinden desteklemelidir.

    • [C-1-2] HTTP Canlı Yayın Taslak Protokolü, Sürüm 7 üzerinden aşağıdaki medya segmenti biçimleri tablosunda gösterildiği gibi ilgili medya segmenti biçimlerini desteklemelidir.

    • [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 bölüm 5.1'deki tablo dipnotlarına bakın.

    Medya segmenti biçimleri

    Segment biçimleri Referanslar Gerekli codec desteği
    MPEG-2 Transport Stream (Aktarma Akışı) ISO 13818 Video codec'leri:
    • H264 AVC
    • MPEG-4 SP
    • MPEG-2
    H264 AVC, MPEG2-4 SP ve MPEG-2 ile ilgili ayrıntılar için 5.1.8 bölümüne bakın.

    Ses codec'leri:

    • AAC
    AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.3'e bakın.
    ADTS çerçeveleme ve ID3 etiketleri içeren AAC ISO 13818-7 AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.1 'e bakın.
    WebVTT WebVTT

    RTSP (RTP, SDP)

    Profil adı Referanslar Gerekli codec desteği
    H264 AVC RFC 6184 H264 AVC ile ilgili ayrıntılar için bölüm 5.1.8'e bakın.
    MP4A-LATM RFC 6416 AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.3'e bakın.
    H263-1998 RFC 3551
    RFC 4629
    RFC 2190
    H263 ile ilgili ayrıntılar için bölüm 5.1.8'e bakın.
    H263-2000 RFC 4629 H263 ile ilgili ayrıntılar için bölüm 5.1.8'e bakın.
    AMR RFC 4867 AMR-NB ile ilgili ayrıntılar için 5.1.3 bölümüne bakın.
    AMR-WB RFC 4867 AMR-WB ile ilgili ayrıntılar için bölüm 5.1.3'e bakın.
    MP4V-ES RFC 6416 MPEG-4 SP ile ilgili ayrıntılar için bölüm 5.1.8'e bakın.
    mpeg4-generic RFC 3640 AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.3'e bakın.
    MP2T RFC 2250 Ayrıntılar için HTTP Canlı Yayın bölümündeki MPEG-2 Aktarım Akışı'na bakın.

    5.8. Güvenli Medya

    Cihaz uygulamaları güvenli video çıkışını destekliyorsa ve güvenli yüzeyleri destekleyebiliyorsa:

    • [C-1-1] Display.FLAG_SECURE desteği BEYAN EDİLMELİDİR.

    Cihaz uygulamaları Display.FLAG_SECURE desteğini ve kablosuz ekran protokolünü desteklediğini beyan ediyorsa:

    • [C-2-1] Miracast gibi kablosuz protokollerle bağlanan ekranlar için bağlantıyı HDCP 2.x veya daha yüksek gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİ HALE GETİRMELİDİR.

    Cihaz uygulamaları Display.FLAG_SECURE ve kablolu harici ekran desteğini beyan ediyorsa:

    • [C-3-1] Kullanıcı tarafından erişilebilen kablolu bir bağlantı noktası üzerinden bağlanan tüm harici ekranlar için HDCP 1.2 veya daha yüksek bir sürüm desteklenmelidir.

    5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)

    Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla android.software.midi özelliğinin desteklendiğini bildiriyorsa:

    • [C-1-1] Bu tür aktarımlar şunlar olduğunda, genel MIDI dışı bağlantı sağladıkları MIDI özellikli tüm donanım aktarımlarında MIDI'yi desteklemelidir:

    • [C-1-2] Uygulamalar arası MIDI yazılım aktarımını (sanal MIDI cihazları) DESTEKLEMELİDİR.

    • [C-1-3] libamidi.so (yerel MIDI desteği) içermelidir.

    • USB çevre birimi modunda MIDI'yi DESTEKLEMELİDİR, 7.7 bölümü

    5.10. Profesyonel Ses

    Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla özellik android.hardware.audio.pro desteğini bildiriyorsa:

    • [C-1-1] Özellik desteği BİLDİRİLMELİDİR. android.hardware.audio.low_latency.

    • [C-1-2] FEATURE_AUDIO_PRO için 5.6 Ses Gecikmesi bölümünde tanımlanan gecikme süresi koşullarını KARŞILAMALIDIR .

    • [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen USB bağlantı noktaları İÇERMELİDİR.

    • [C-1-4] android.software.midi özelliği için destek raporlanmalıdır.

    • [C-1-5] AAudio native audio API'si ve AAUDIO_PERFORMANCE_MODE_LOW_LATENCY kullanılarak USB ses gecikmesi şartları KARŞILANMALIDIR.

    • [C-1-6] 200 milisaniye veya daha az soğuk çıkış gecikmesine SAHİP OLMALIDIR.

    • [C-1-7] 200 milisaniye veya daha az soğuk giriş gecikmesine SAHİP OLMALIDIR.

    Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakı içeriyorsa:

    Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı atlanır ve USB ana makine modunu destekleyen USB bağlantı noktaları eklenirse:

    • [C-3-1] USB ses sınıfı uygulanmalıdır.

    5.11. İşlenmemiş için yakalama

    Android, android.media.MediaRecorder.AudioSource.UNPROCESSED ses kaynağı aracılığıyla işlenmemiş ses kaydını destekler. OpenSL ES'te kayıt ön ayarıyla SL_ANDROID_RECORDING_PRESET_UNPROCESSED erişilebilir.

    Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemeyi ve üçüncü taraf uygulamaların kullanımına sunmayı amaçlıyorsa:

    • [C-1-1] Desteği android.media.AudioManager mülk PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED üzerinden bildirmelidir.

    • [C-1-2] Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri sergilemelidir: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 100 Hz ile 7.000 Hz arasında ±10 dB.

    • [C-1-3] Düşük frekans aralığında genlik seviyeleri GÖSTERMELİDİR: Özellikle işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla 5 Hz ile 100 Hz arasında ±20 dB.

    • [C-1-4] Yüksek frekans aralığında genlik seviyeleri GÖSTERİLMELİDİR: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla 7.000 Hz ile 22 kHz arasında ±30 dB.

    • [C-1-5] Ses girişi hassasiyeti, 94 dB ses basıncı seviyesinde (SPL) çalınan 1.000 Hz sinüs dalgalı ton kaynağının, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 16 bit örneklerde 520 RMS (veya kayan noktalı/çift duyarlıklı örneklerde -36 dB tam ölçek) ile yanıt verecek şekilde AYARLANMALIDIR.

    • [C-1-6] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun 60 dB veya daha yüksek bir sinyal-gürültü oranına (SNR) sahip OLMALIDIR. (SNR ise 94 dB SPL ile kendi gürültüsünün eşdeğer SPL'si arasındaki fark olarak ölçülür ve A ağırlıklı olarak değerlendirilir.)

    • [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 seviye çarpanı dışında yolda 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 bu işleme devre dışı bırakılmalı ve sinyal yolunda etkili bir şekilde sıfır gecikme veya ek gecikme oluşturulmalıdır.
      • [C-1-10] Seviye çarpanının yolda olmasına izin verilir ancak SİNYAL YOLUNDA GECİKME VEYA GECİKMEYE NEDEN OLMAMALIDIR.

    Tüm SPL ölçümleri, doğrudan test edilen mikrofonun yanında yapılır. Birden fazla mikrofon yapılandırması için bu şartlar her mikrofon için geçerlidir.

    Cihaz uygulamaları android.hardware.microphone beyan ediyorsa ancak işlenmemiş ses kaynağını desteklemiyorsa:

    • [C-2-1] Destek eksikliğini düzgün bir şekilde belirtmek için AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED) API yöntemi için null döndürmELİDİR.
    • [C-SR-1], işlenmemiş kayıt kaynağının sinyal yoluyla ilgili koşulların mümkün olduğunca çoğunu karşılamak için HÂLÂ ŞİDDETLE TAVSİYE EDİLİR.

    5.12. HDR Video

    Android 13, yakında yayınlanacak bir belgede açıklanan HDR teknolojilerini destekler.

    Pixel Biçimi

    Bir video kod çözücü COLOR_FormatYUVP010 desteği sunduğunu belirtiyorsa:

    • [C-1-1] CPU tarafından okunan (ImageReader, MediaImage, ByteBuffer) P010 biçimini DESTEKLEMELİDİR. Android 13'te P010, Y ve UV düzlemleri için rastgele adım değerine izin verecek şekilde gevşetildi.

    • [C-1-2] P010 çıkış arabelleği, GPU_SAMPLING kullanımıyla ayrıldığında GPU tarafından örneklenmelidir. Bu, uygulamaların GPU bileşimini ve özel ton eşlemeyi etkinleştirir.

    Bir video kod çözücü COLOR_Format32bitABGR2101010 desteği sunduğunu belirtiyorsa:

    • [C-2-1] Çıkış yüzeyi için RGBA_1010102 biçimini ve CPU tarafından okunabilir (ByteBuffer çıkışı) biçimi DESTEKLEMELİDİR.

    Bir video kodlayıcı COLOR_FormatYUVP010 desteği sunduğunu belirtiyorsa:

    • [C-3-1] Giriş yüzeyi ve CPU tarafından yazılabilir (ImageWriter, MediaImage, ByteBuffer) giriş için P010 biçimini DESTEKLEMELİDİR.

    Bir video kodlayıcı COLOR_Format32bitABGR2101010 desteği sunduğunu belirtiyorsa:

    • [C-4-1] Giriş yüzeyi ve CPU tarafından yazılabilir (ImageWriter, ByteBuffer) giriş için RGBA_1010102 biçimini DESTEKLEMELİDİR. Not: Kodlayıcılar için çeşitli aktarım eğrileri arasında dönüştürme YAPILMASI GEREKMEZ.

    HDR yakalama gereksinimleri

    HDR profillerini destekleyen tüm video kodlayıcılar için cihaz uygulamaları:

    • [C-5-1] HDR meta verilerinin kesin olduğu VARSAYILMAMALIDIR. Örneğin, kodlanmış karede en yüksek parlaklık düzeyinin ötesinde pikseller olabilir veya histogram kareyi temsil etmeyebilir.

    • Kodlanmış akışlar için uygun HDR statik meta verileri oluşturmak üzere HDR dinamik meta verilerini toplamalı ve her kodlama oturumunun sonunda bunları çıkış olarak vermelidir.

    Cihaz uygulamaları, CamcorderProfile API'lerini kullanarak HDR çekimini destekliyorsa:

    • [C-6-1] Camera2 API'leri aracılığıyla HDR yakalamayı da DESTEKLEMELİDİR.

    • [C-6-2] Desteklenen her HDR teknolojisi için en az bir donanım hızlandırmalı video kodlayıcıyı DESTEKLEMELİDİR.

    • [C-6-3] EN AZ HLG yakalama desteklenmelidir.

    • [C-6-4] HDR meta verilerinin (HDR teknolojisi için geçerliyse) çekilen video dosyasına yazılması DESTEKLENMELİDİR. AV1, HEVC ve DolbyVision için bu, meta verilerin kodlanmış bit akışına dahil edilmesi anlamına gelir.

    • [C-6-5] P010 ve COLOR_FormatYUVP010 desteklenmelidir.

    • [C-6-6] Yakalanan profil için varsayılan donanım hızlandırmalı kod çözücüde HDR'den SDR'ye ton eşlemeyi DESTEKLEMELİDİR. Başka bir deyişle, bir cihaz HDR10+ HEVC yakalayabiliyorsa varsayılan HEVC kod çözücüsü, yakalanan akışı SDR olarak çözebilmelidir.

    HDR düzenleme koşulları

    Cihaz uygulamaları, HDR düzenlemeyi destekleyen video kodlayıcılar içeriyorsa:

    • Mevcut olmadığında HDR meta verilerini oluşturmak için minimum gecikme SÜRESİNİ kullanmalı ve meta verilerin bazı karelerde mevcut olup bazılarında mevcut olmadığı durumları sorunsuz bir şekilde ELE ALMALIDIR. Bu meta veriler kesin OLMALIDIR (örneğin, karenin gerçek tepe parlaklığını ve histogramını temsil etmelidir).

    Cihaz uygulaması FEATURE_HdrEditing'yı destekleyen codec'ler içeriyorsa bu codec'ler:

    • [C-7-1] En az bir HDR profilini DESTEKLEMELİDİR.

    • [C-7-2] Bu codec tarafından tanıtılan tüm HDR profilleri için FEATURE_HdrEditing desteklenmelidir. Başka bir deyişle, HDR meta verileri kullanan tüm desteklenen HDR profillerinde HDR meta verileri mevcut olmadığında HDR meta verileri oluşturulmalıdır.

    • [C-7-3] HDR kod çözümlü sinyalini tamamen koruyan aşağıdaki video kodlayıcı giriş biçimleri DESTEKLENMELİDİR:

      • RGBA_1010102 (zaten hedef aktarım eğrisinde) hem giriş yüzeyi hem de ByteBuffer için ve COLOR_Format32bitABGR2101010 desteğini duyurmalıdır.

    Cihaz uygulaması FEATURE_HdrEditing'yı destekleyen codec'ler içeriyorsa cihaz:

    • [C-7-4] EXT_YUV_target OpenGL uzantısı desteği REKLAMI YAPILMALIDIR.

    HDR Ekran Gereksinimleri

    Cihaz uygulamaları, ADATASPACE_TRANSFER_HLG ile kodlanmış arabellek içeriği alırsa ve bu içerik SurfaceControl.Transaction#setBuffer üzerinden ekrana gönderilirse:

    • [C-8-1] BT. 2408-7'deki beyaz grafik önerisine UYULMALI ve bu içerik yalnızca SDR içeriğinden en fazla 4,926 kat daha büyük olacak şekilde gösterilmelidir.

    6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu

    6.1. Geliştirici Araçları

    Cihaz uygulamaları:

    • [C-0-1] Android SDK'da sağlanan Android Geliştirici Araçları desteklenmelidir.

    • Android Debug Bridge (adb)

    • [C-0-2] Android SDK'sında ve AOSP'de sağlanan kabuk komutlarında belgelendiği şekilde adb'yi desteklemelidir. Bu komutlar, dumpsys, cmd stats ve Simpleperf dahil olmak üzere uygulama geliştiriciler tarafından kullanılabilir.

    • [C-0-11] cmd testharness kabuk komutunu DESTEKLEMELİDİR. Cihaz uygulamalarını kalıcı veri bloğu olmadan önceki bir Android sürümünden yükseltme, C-0-11'den muaf tutulabilir.

    • [C-0-3] MUST NOT alter the format or the contents of device system events (batterystats, diskstats, fingerprint, graphicsstats, netstats, notification, procstats) logged via the dumpsys command.

    • [C-0-10] Aşağıdaki etkinlikleri eksiksiz olarak kaydetmeli ve cmd stats kabuk komutuna ve StatsManager System API sınıfına erişilebilir ve kullanılabilir hale getirmelidir.

      • ActivityForegroundStateChanged
      • AnomalyDetected
      • AppBreadcrumbReported
      • AppCrashOccurred
      • AppStartOccurred
      • BatteryLevelChanged
      • BatterySaverModeStateChanged
      • BleScanResultReceived
      • BleScanStateChanged
      • ChargingStateChanged
      • DeviceIdleModeStateChanged
      • ForegroundServiceStateChanged
      • GpsScanStateChanged
      • InputDeviceUsageReported
      • JobStateChanged
      • KeyboardConfigured
      • KeyboardSystemsEventReported
      • PluggedStateChanged
      • PressureStallInformation
      • ScheduledJobStateChanged
      • ScreenStateChanged
      • SyncStateChanged
      • SystemElapsedRealtime
      • TouchpadUsage
      • UidProcessStateChanged
      • WakelockStateChanged
      • WakeupAlarmOccurred
      • WifiLockStateChanged
      • WifiMulticastLockStateChanged
      • WifiScanStateChanged
    • [C-0-4] Cihaz tarafındaki adb arka plan programı varsayılan olarak etkin olmamalı ve Android Debug Bridge'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma OLMALIDIR.

    • [C-0-5] Güvenli adb'yi desteklemelidir. Android, güvenli adb desteği içerir. Güvenli adb, bilinen kimliği doğrulanmış ana makinelerde adb'yi etkinleştirir.

    • [C-0-6] adb'nin bir ana makineden bağlanmasına izin veren bir mekanizma SAĞLANMALIDIR. Özellikle:

    USB bağlantı noktası olmayan cihaz uygulamaları, çevre birimi modunu destekliyorsa:

    • [C-3-1] adb'yi yerel alan ağı (ör. Ethernet veya kablosuz) üzerinden uygulamalıdır.

    • [C-3-2] Geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows 7, 8 ve 10 sürücüleri SAĞLANMALIDIR.

    Cihaz uygulamaları, kablosuz veya Ethernet üzerinden bir ana makineye adb bağlantılarını destekliyorsa:

    • [C-4-1] AdbManager#isAdbWifiSupported() yöntemi döndürmelidir true.

    Cihaz uygulamaları, ana makineye Wi-Fi veya Ethernet üzerinden adb bağlantılarını destekliyorsa ve en az bir kamera içeriyorsa:

    • [C-5-1] AdbManager#isAdbWifiQrSupported() yöntemi true döndürmelidir.

    • Dalvik Debug Monitor Service (ddms)

      • [C-0-7] Android SDK'da belgelendiği şekilde tüm ddms özelliklerini desteklemelidir. ddms, adb'yi kullandığından ddms desteği varsayılan olarak ETKİN OLMAMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Debug Bridge'i etkinleştirdiğinde DESTEKLENMELİDİR.
    • SysTrace

      • [C-0-9] Android SDK'da belgelendiği şekilde systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak devre dışı olmalı ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma OLMALIDIR.
    • Perfetto

      • [C-SR-1] Are STRONGLY RECOMMENDED to expose a /system/bin/perfetto binary to the shell user which cmdline complies with the perfetto documentation.

      • [C-SR-2] Perfetto belgelerinde tanımlanan şemaya uygun bir protobuf yapılandırmasını giriş olarak KABUL ETMESİ ŞİDDETLE TAVSİYE EDİLEN bir perfetto ikili programıdır.

      • [C-SR-3] Çıkış olarak Perfetto dokümanlarında tanımlanan şemaya uygun bir protobuf izi yazmak için perfetto ikilisinin KULLANILMASI ŞİDDETLE TAVSİYE EDİLİR.

      • [C-SR-4] perfetto ikili programı aracılığıyla perfetto dokümanlarında açıklanan veri kaynaklarının en azından sağlanması ŞİDDETLE TAVSİYE EDİLİR.

    • Low Memory Killer

      • [C-0-12] Bir uygulama Low Memory Killer tarafından sonlandırıldığında statsd günlüğüne LMK_KILL_OCCURRED_FIELD_NUMBER Atom YAZILMALIDIR.
    • Test Bandı Modu

      Cihaz uygulamaları cmd testharness kabuk komutunu destekliyorsa ve cmd testharness enable komutunu çalıştırıyorsa:

      • [C-2-1] MUST return true for ActivityManager.isRunningInUserTestHarness()

      • [C-2-2] Test Bandı Modu belgelerinde açıklandığı şekilde Test Bandı Modu uygulanmalıdır.

    • GPU çalışma bilgileri

      Cihaz uygulamaları:

      • [C-0-13] dumpsys gpu --gpuwork ç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 uygulamalıdır veya izleme noktası desteklenmiyorsa veri görüntülememelidir.power/gpu_work_period AOSP uygulaması frameworks/native/services/gpuservice/gpuwork/'dır.

    Cihaz uygulamaları, android.hardware.vulkan.version özellik işaretleri aracılığıyla Vulkan 1.0 veya sonraki sürümlerin desteklendiğini bildiriyorsa:

    • [C-1-1] Uygulama geliştiricinin GPU hata ayıklama katmanlarını etkinleştirmesine/devre dışı bırakmasına olanak tanıyan bir işlev SAĞLANMALIDIR.

    • [C-1-2] GPU hata ayıklama katmanları etkinleştirildiğinde, vkEnumerateInstanceLayerProperties() ve vkCreateInstance() API yöntemlerini desteklemek için hata ayıklanabilir uygulamaların temel dizininde bulunan, harici araçlar tarafından sağlanan (yani platformun veya uygulama paketinin parçası olmayan) kitaplıklardaki katmanları listelemelidir.

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_frequency sistem özelliklerini true olarak ayarlarsa:

    • [C-6-1] power.proto bölümünde tanımlandığı şekilde, power/gpu_frequency biçiminde belirtilen bir GPU frekansı izleme noktası RAPORLAMALIDIR.

    Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_counters sistem özelliklerini true olarak ayarlarsa:

    • [C-7-1] MUST provide a Perfetto data producer for a data source named gpu.counters, queryable using: perfetto --query.

    • [C-7-2] GPU sayaç izleme paketi proto'ya uygun olarak GPU sayaç açıklamalarını bildirmelidir.

    • [C-7-3] MUST report conformant values for the device's GPU counters following the gpu counter trace packet proto.

    • [C-7-4] MUST record the text descriptions for all enabled GPU Counters with no timestamp to perfetto trace.

    • [C-7-6] GpuCounterSpec#select_by_default bölümünde belirtildiği gibi, profil oluşturma için boş olmayan bir varsayılan GPU performans sayaçları grubu SAĞLANMALIDIR.

      • Bu varsayılan sayaçların tümü aynı anda etkinleştirilebilmelidir.
      • Etkinleştirildiklerinde TÜMÜ Perfetto'ya değer göndermelidir.
    • [C-7-7] GpuCounterSpec#select_by_default kullanılarak, varsayılan olarak seçilen en az bir sayaç için GPU kullanımı yansıtılmalıdır.

    Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_counters.period sistem özelliklerini true olarak ayarlarsa:

    • [C-8-1] GPU sayaçlarının örnekleme hızı için counter_period_ns değerine uymalıdır. Desteklenen örnekleme hızı 1 ms veya daha hızlı OLMALIDIR.

    • [C-SR-5] 0,2 ms veya daha hızlı bir örnekleme hızını desteklemek için KESİNLİKLE ÖNERİLİR.

    Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_counters.groups sistem özelliklerini true olarak ayarlarsa:

    • [C-9-1] GpuCounterSpec tarafından belirtildiği gibi, aşağıdaki GPU sayaç gruplarının her birinde en az bir sayaç OLMALIDIR: COMPUTE, FRAGMENTS, MEMORY, PRIMITIVES ve VERTICES.

    Cihaz uygulamaları hem sistem özelliklerini graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_counters.groups true olarak ayarlarsa ve cihaz ışın izlemeyi destekliyorsa:

    • [C-10-1] RAY_TRACING grubunda sayaç OLMALIDIR.

    Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.gpu_counters.zeroes_optimization sistem özelliklerini true olarak ayarlarsa:

    • [C-11-1] Aynı Perfetto izleme oturumunda, GPU sayaçları yalnızca önceki veya sonraki raporlanan değer sıfır değilse sıfır değerleri RAPORLAMALIDIR.

    Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.render_stages sistem özelliklerini true olarak ayarlarsa:

    • [C-12-1] gpu.renderstages adlı bir veri kaynağı için perfetto --query. kullanılarak sorgulanabilen bir Perfetto veri üreticisi SAĞLANMALIDIR.

    • [C-12-2] GPU oluşturma aşaması etkinliği proto'sunu izleyerek GPU oluşturma aşamaları için uygun değerler RAPORLANMALIDIR.

    Cihaz uygulamaları hem graphics.gpu.profiler.support hem de graphics.gpu.profiler.support.render_stages.queue_submit sistem özelliklerini true olarak ayarlarsa:

    • [C-13-1] Her Vulkan kuyruğu gönderme çağrısı için Vulkan sürücüsü, Vulkan API etkinlik mesajı spesifikasyonuna göre bir Perfetto izleme etkinliği yayınlamalıdır.
      • Bu etkinlik, karşılık gelen GPU oluşturma aşaması etkinliğindeki submission_id ile eşleşen benzersiz ve tekdüze artan bir submission_id içermelidir.

    6.2. Geliştirici seçenekleri

    Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmasına olanak tanır.

    Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sağlamalıdır. Bu bağlamda:

    • [C-0-1] Uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS amacına UYULMALIDIR. Yukarı akış Android uygulaması, Geliştirici Seçenekleri menüsünü varsayılan olarak gizler ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesine yedi (7) kez basarak Geliştirici Seçenekleri'ni başlatmasına olanak tanır.
    • [C-0-2] Geliştirici Seçenekleri varsayılan olarak GİZLENMELİDİR.
    • [C-0-3] Geliştirici Seçenekleri'nin etkinleştirilmesi için bir üçüncü taraf uygulamasına diğerine kıyasla ayrıcalıklı davranılmayan net bir mekanizma SAĞLANMALIDIR. Geliştirici Seçenekleri'nin nasıl etkinleştirileceğini açıklayan, herkese açık bir doküman veya web sitesi SAĞLANMALIDIR. Bu doküman veya web sitesi, Android SDK dokümanlarından BAĞLANABİLİR olmalıdır.
    • Geliştirici Seçenekleri etkinleştirildiğinde ve kullanıcının güvenliği söz konusu olduğunda kullanıcıya sürekli görsel bildirim GÖSTERİLMELİDİR.
    • MAY, kullanıcının güvenliğinin söz konusu olduğu durumlarda dikkat dağıtılmasını önlemek için Geliştirici Seçenekleri menüsüne erişimi geçici olarak sınırlayabilir. Bu amaçla menüyü görsel olarak gizleyebilir veya devre dışı bırakabilir.

    7. Donanım Uyumluluğu

    Bir cihaz, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir donanım bileşeni içeriyorsa:

    • [C-0-1] Cihaz uygulaması, bu API'yi Android SDK belgelerinde açıklandığı şekilde uygulamalıdır.

    SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime girerse ve cihaz uygulamasında bu bileşen yoksa:

    • [C-0-2] Bileşen API'leri için sınıf tanımlarının (SDK tarafından belgelendiği şekilde) tamamı sunulmalıdır.
    • [C-0-3] API'nin davranışları, makul bir şekilde hiçbir işlem yapmayacak şekilde uygulanmalıdır.
    • [C-0-4] API yöntemleri, SDK belgelerinde izin verilen durumlarda boş değerler döndürmelidir.
    • [C-0-5] API yöntemleri, SDK belgelerinde boş değerlere izin verilmeyen sınıfların no-op uygulamalarını döndürmelidir.
    • [C-0-6] API yöntemleri, SDK belgelerinde belgelenmemiş istisnalar oluşturmamalıdır.
    • [C-0-7] Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki getSystemAvailableFeatures() ve hasSystemFeature(String) yöntemleriyle donanım yapılandırma bilgilerini tutarlı bir şekilde doğru olarak bildirmelidir.

    Bu koşulların geçerli olduğu senaryolara tipik bir örnek, telephony API'dir: Bu API'ler, telefon olmayan cihazlarda bile makul bir şekilde işlem yapmadan uygulanmalıdır.

    7.1. Ekran ve Grafikler

    Android, üçüncü taraf uygulamalarının çeşitli donanım ekranlarında ve yapılandırmalarında iyi çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza göre otomatik olarak ayarlayan olanaklar içerir. Android ile uyumlu ekran, Android Developers - Screen compatibility overview, bu bölüm (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 belgelenen ek cihaza özel davranışları uygulayan bir ekran görüntüsüdür.

    Cihaz uygulamaları:

    • [C-0-1] Üçüncü taraf uygulamaları varsayılan olarak YALNIZCA Android ile uyumlu ekranlarda oluşturulmalıdır.

    Bu bölümdeki şartlarda referans verilen birimler aşağıdaki şekilde tanımlanır:

    • fiziksel çapraz boyut. Ekranın aydınlatılmış kısmının iki zıt köşesi arasındaki inç cinsinden mesafedir.

    • density. 1 inçlik doğrusal bir yatay veya dikey aralığın kapsadığı piksel sayısıdır. İnç başına piksel (ppi veya dpi) olarak ifade edilir. ppi ve dpi değerlerinin listelendiği yerlerde hem yatay hem de dikey dpi, listelenen aralıkta olmalıdır.

    • en-boy oranı. Ekranın uzun boyutunun piksellerinin kısa boyutunun piksellerine oranı. Örneğin, 480 x 854 piksel boyutundaki bir ekranın en-boy oranı 854 / 480 = 1, 779 veya yaklaşık olarak "16:9" olur.

    • Yoğunluktan bağımsız piksel (dp). 160 ekran yoğunluğuna göre normalleştirilmiş bir sanal piksel birimi. Belirli bir yoğunluk d ve piksel sayısı p için yoğunluktan bağımsız piksel sayısı dp şu şekilde hesaplanır: 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 farklı mantıksal ekran düzeni boyutlarını destekler ve uygulamaların Configuration.screenLayout ile SCREENLAYOUT_SIZE_MASK ve Configuration.smallestScreenWidthDp kullanarak mevcut yapılandırmanın ekran düzeni boyutunu sorgulamasına olanak tanır.

    Cihaz uygulamaları:

    • [C-0-1] Android SDK dokümanlarında tanımlandığı şekilde Configuration.screenLayout için doğru düzen boyutunu bildirmelidir. Daha spesifik olarak, cihaz uygulamaları aşağıdaki gibi doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını bildirmelidir:

      • Configuration.uiMode değeri UI_MODE_TYPE_WATCH dışında bir değer olarak ayarlanmış ve Configuration.screenLayout için small boyutu bildiren cihazlar en az 426 dp x 320 dp olmalıdır.

      • normal boyutunu bildiren cihazlar, Configuration.screenLayout için en az 480 dp x 320 dp olmalıdır.

      • large boyutu bildiren cihazlar, Configuration.screenLayout için en az 640 dp x 480 dp boyutunda OLMALIDIR.

      • xlarge boyutu bildiren cihazlar, Configuration.screenLayout için en az 960 dp x 720 dp olmalıdır.

    • [C-0-2] Android SDK belgelerinde açıklandığı gibi, AndroidManifest.xml içindeki <supports-screens> özelliği aracılığıyla uygulamaların ekran boyutları için belirttiği destek doğru şekilde karşılanmalıdır.

    • Köşeleri yuvarlatılmış, Android ile uyumlu ekranlara SAHİP OLABİLİR.

    Cihaz uygulamaları, UI_MODE_TYPE_NORMAL boyut yapılandırmasına uygun ekranları destekliyorsa ve bu ekranları oluşturmak için yuvarlak köşeli fiziksel ekranlar kullanıyorsa:

    • [C-1-1] MUST, bu tür her gösterim için aşağıdaki koşullardan en az birinin karşılandığından emin olmalıdır:

      • Yuvarlatılmış köşelerin yarıçapı 38 dp'den küçük veya 38 dp'ye eşit olmalıdır.

      • Mantıksal ekranın her köşesine 18 dp x 18 dp boyutlarında bir kutu sabitlendiğinde her kutunun en az bir pikseli ekranda görünür.

    • Kullanıcıların, dikdörtgen köşeli ekran moduna geçmesine olanak tanınmalıdır.

    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 bildirmeyi amaçlıyorsa:

    • [C-4-1] Ekran kesikleri hariç olmak üzere, en az 596 dp x 384 dp veya daha büyük bir düzen boyutuna SAHİP OLMALIDIR.

    Yardımcı 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.

    • [C-4-1] Android 15'te bu şart kaldırıldı.
    7.1.1.2. Ekran En-Boy Oranı

    Bu bölüm Android 14'te kaldırıldı.

    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] DisplayMetrics adresinde listelenen Android çerçeve yoğunluklarından biri DENSITY_DEVICE_STABLE API aracılığıyla RAPORLANMALIDIR ve bu değer, her fiziksel ekran için statik bir değer olmalıdır. Ancak cihaz, ilk başlatmadan sonra kullanıcının yaptığı ekran yapılandırma değişikliklerine (ör. görüntü boyutu) göre farklı bir DisplayMetrics.density bildirebilir.

    • Sayısal olarak ekranın fiziksel yoğunluğuna en yakın olan standart Android çerçeve yoğunluğunu veya elde taşınan bir cihazın aynı eşdeğer açısal görüş alanı ölçümlerine eşlenecek bir değeri tanımlamalıdır.

    Cihaz uygulamaları, cihazın görüntü boyutunu değiştirmek için bir olanak sunuyorsa:

    • [C-1-1] Ekran, 1,5 katından daha fazla büyütülmemeli DENSITY_DEVICE_STABLE veya etkili minimum ekran boyutu, hangisi önce gerçekleşirse 320 dp'den (kaynak niteleyicisi sw320dp'ye eşdeğer) daha küçük olmamalıdır.

    • [C-1-2] Ekran, DENSITY_DEVICE_STABLE boyutunun 0,85 katından daha küçük bir boyuta ölçeklendirilmemelidir.

    • İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için YUKARIDA BELİRTİLEN SINIRLARA UYARAK aşağıdaki yerel görüntülü reklam seçeneklerinin ölçeklendirilmesi ÖNERİLİR:

      • Küçük: 0,85x
      • Varsayılan: 1x (Doğal ekran ölçeği)
      • Büyük: 1,15 kat
      • Daha büyük: 1,3 kat
      • En büyük 1,45x

    7.1.2. Görüntüleme Metrikleri

    Cihaz uygulamaları, Android ile uyumlu ekranları veya Android ile uyumlu ekranlara video çıkışını içeriyorsa:

    • [C-1-1] android.util.DisplayMetrics API'sinde tanımlanan Android ile uyumlu tüm görüntülü reklam metrikleri için doğru değerler RAPORLANMALIDIR.

    Cihaz uygulamaları yerleşik bir ekran veya video çıkışı içermiyorsa:

    • [C-2-1] android.util.DisplayMetricsview.Display API'sinde tanımlandığı şekilde Android ile uyumlu ekranın doğru değerleri BİLDİRİLMELİDİR.

    7.1.3. Ekran Yönlendirme

    Cihaz uygulamaları:

    • [C-0-1] Hangi ekran yönlerini desteklediklerini (android.hardware.screen.portrait ve/veya android.hardware.screen.landscape) bildirmeli ve desteklenen en az bir yönü bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönlü yatay ekrana sahip bir cihaz YALNIZCA android.hardware.screen.landscape değerini bildirmelidir.

    • [C-0-2] android.content.res.Configuration.orientation, android.view.Display.getOrientation() veya diğer API'ler aracılığıyla sorgulandığında cihazın mevcut yönü için DOĞRU değeri bildirmelidir.

    Cihaz uygulamaları her iki ekran yönünü de destekliyorsa:

    • [C-1-1] Android 16'da şart kaldırıldı.

    • [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ÇEBİLİR.

    7.1.4. 2D ve 3D Grafik Hızlandırma

    7.1.4.1. OpenGL ES

    Cihaz uygulamaları:

    • [C-0-1] Yönetilen API'ler (ör. GLES10.getString() yöntemi aracılığıyla) ve yerel API'ler aracılığıyla desteklenen OpenGL ES sürümleri (1.1, 2.0, 3.0, 3.1, 3.2) doğru şekilde tanımlanmalıdır.

    • [C-0-2] Desteklediği belirlenen her OpenGL ES sürümü için ilgili tüm yönetilen API'lerin ve yerel API'lerin desteğini İÇERMELİDİR.

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

    • [C-1-1] Android SDK belgelerinde belirtildiği ve ayrıntılı olarak açıklandığı gibi OpenGL ES 1.1, 2.0, 3.0 ve 3.1'i DESTEKLEMELİDİR.

    • [C-SR-1] Android 15'te şart kaldırıldı.

    • OpenGL ES 3.2'yi DESTEKLEMELİDİR.

    OpenGL ES dEQP testleri, her biri ilişkili bir tarih/sürüm numarası içeren bir dizi test listesine ayrılır. Bunlar, Android kaynak ağacında external/deqp/android/cts/main/glesXX-master-YYYY-MM-DD.txt konumunda bulunur. OpenGL ES'yi kendi bildirdiği düzeyde destekleyen bir cihaz, bu düzeydeki ve önceki tüm test listelerinde dEQP testlerini geçebileceğini gösterir.

    Cihaz uygulamaları OpenGL ES sürümlerinden birini destekliyorsa:

    • [C-2-1] Uyguladıkları diğer OpenGL ES uzantılarını OpenGL ES tarafından 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ı DESTEKLENMELİDİR.

    • [C-2-3] android.software.opengles.deqp.level özellik bayrağı aracılığıyla desteklenen OpenGL ES dEQP testlerinin maksimum sürümü RAPORLANMALIDIR.

    • [C-2-4] android.software.opengles.deqp.level özellik bayrağında belirtildiğ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 bayrağında belirtilen sürüm arasındaki test listelerinde yer alan 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ı desteklemek için ŞİDDETLE TAVSİYE EDİLİR.

    • Genellikle tedarikçiye özgü olan, destekledikleri tüm doku sıkıştırma biçimlerini getString() yöntemiyle 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'yi desteklediğini beyan ediyorsa:

    • [C-3-1] libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev sembollerine ek olarak bu sürümler için ilgili işlev sembollerini dışa aktarmalıdır.

    • [C-SR-3] OES_EGL_image_external_essl3 uzantısını desteklemek için KESİNLİKLE ÖNERİLİR.

    Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa:

    • [C-4-1] OpenGL ES Android Extension Pack'in tamamını DESTEKLEMELİDİR.

    Cihaz uygulamaları OpenGL ES Android Extension Pack'i tamamen destekliyorsa:

    • [C-5-1] Desteği, android.hardware.opengles.aep özellik bayrağıyla tanımlAMALIDIR.

    Cihaz uygulamaları EGL_KHR_mutable_render_buffer uzantısı için destek sunuyorsa:

    • [C-6-1] EGL_ANDROID_front_buffer_auto_refresh uzantısı da desteklenmelidir.
    7.1.4.2. Vulkan

    Android, yüksek performanslı 3D grafikler için düşük ek yüke sahip, platformlar arası bir API olan Vulkan'ı destekler.

    Cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:

    • [C-SR-1] Vulkan 1.3 desteğinin eklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-4-1] Vulkan varyant sürümünü desteklememelidir (yani Vulkan çekirdek sürümünün varyant kısmı sıfır olmalıdır).

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

    • [C-SR-2] Vulkan 1.3 desteğinin eklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    Vulkan dEQP testleri, her biri ilişkili bir tarih/sürüm içeren bir dizi test listesine ayrılır. Bunlar, Android kaynak ağacında external/deqp/android/cts/main/vk-master-YYYY-MM-DD.txt konumunda bulunur. Vulkan'ı kendi bildirdiği düzeyde destekleyen bir cihaz, bu düzeydeki ve önceki tüm test listelerindeki dEQP testlerini geçebileceğini gösterir.

    Cihaz uygulamaları Vulkan desteği içeriyorsa:

    • [C-1-1] android.hardware.vulkan.level ve android.hardware.vulkan.version özellik işaretleriyle doğru tam sayı değeri RAPORLANMALIDIR.

    • [C-1-2] Vulkan yerel API'si vkEnumeratePhysicalDevices() için en az bir VkPhysicalDevice numaralandırılmalıdır.

    • [C-1-3] MUST, numaralandırılmış her VkPhysicalDevice için Vulkan 1.1 API'lerini tam olarak 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 numaralandırılmalıdır.

    Android 17'de şartların başlangıcı değişti

    • [C-1-5] Uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanları listelememeli veya uygulama android:debuggable özelliği true olarak ayarlanmadığı ya da meta veriler com.android.graphics.injectLayers.enable true olarak ayarlanmadığı sürece Vulkan API'yi izlemenin veya engellemenin başka yollarını sağlamamalıdır. Vulkan'ı Uygulama dokümanlarına göre OEM ve Platform katmanları hariçtir.

    • [C-1-6] Destekledikleri tüm uzantı dizelerini Vulkan yerel API'leri aracılığıyla bildirmeli ve buna karşılık , doğru şekilde desteklemedikleri uzantı dizelerini bildirmemelidir.

    Android 17'de şartların başlangıcı değişti

    • [C-1-7] MUST support the following extensions:

      • VK_EXT_present_mode_fifo_latest_ready
      • VK_KHR_present_wait2
      • VK_KHR_android_surface
      • VK_KHR_incremental_present
      • VK_KHR_present_id
      • VK_KHR_present_id2
      • VK_KHR_surface
      • VK_KHR_swapchain

    • [C-1-8] android.software.vulkan.deqp.level özellik bayrağı aracılığıyla desteklenen Vulkan dEQP Testlerinin maksimum sürümü RAPORLANMALIDIR.

    • [C-1-9] android.software.vulkan.deqp.level özellik bayrağında belirtildiği gibi en az 132317953 sürümünü (1 Mart 2019'dan itibaren) desteklemelidir.

    • [C-1-10] 132317953 sürümü ile android.software.vulkan.deqp.level özellik bayrağında belirtilen sürüm arasındaki test listelerinde yer alan 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ı için destek listelenMEMELİDİR.

    Android 17'de şartların başlangıcı değişti

    • [C-SR-3] Aşağıdaki uzantıları desteklemek için ŞİDDETLE TAVSİYE EDİLİR:

      • VK_EXT_present_timing
      • VK_GOOGLE_display_timing
      • VK_KHR_driver_properties

    • [C-1-12] VK_KHR_performance_query uzantısı için destek listelenMEMELİDİR.

    • [C-SR-4] Android Baseline 2022 profili tarafından belirtilen şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-5] VkPhysicalDeviceProtectedMemoryFeatures.protectedMemory ve VK_EXT_global_priority'ı desteklemek için ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-6] HWUI ile SkiaVk kullanılması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları Vulkan desteği içeriyorsa:

    • [C-SR-8] Vulkan yükleyicinin değiştirilmemesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-1-14] Bu uzantılar android.software.vulkan.deqp.level özellik bayrağına dahil edilmediği sürece "KHR", "GOOGLE" veya "ANDROID" türündeki Vulkan Cihaz uzantılarını listelememelidir.

    Cihaz uygulamaları Vulkan 1.0 desteği içermiyorsa:

    • [C-2-1] Vulkan özellik işaretlerinden herhangi birini (ör. android.hardware.vulkan.level, android.hardware.vulkan.version) beyan ETMEMELİDİR.

    • [C-2-2] Vulkan yerel API'si için VkPhysicalDevice numaralandırılmamalıdır vkEnumeratePhysicalDevices().

    Android 17'de şartların başlangıcı değişti

    Cihaz uygulamaları Vulkan 1.1 desteği içeriyorsa ve burada veya daha yüksek sürümlerde açıklanan Vulkan özellik işaretlerinden herhangi birini bildiriyorsa:

    • [C-3-1] SYNC_FD harici semafor ve işleyici türleri ile VK_ANDROID_external_memory_android_hardware_buffer uzantısı için destek sunULMALIDIR.

    • [C-SR-7] VK_KHR_external_fence_fd Uzantının üçüncü taraf uygulamalarda kullanılabilmesi ve uygulamanın, burada açıklandığı gibi çit yükünü POSIX dosya tanımlayıcılarına aktarması ve POSIX dosya tanımlayıcılarından içe aktarması ŞİDDETLE TAVSİYE EDİLİR.

    7.1.4.3. RenderScript

    Cihaz uygulamaları:

    • [C-0-1] Android SDK belgelerinde ayrıntılı olarak açıklandığı gibi Android RenderScript'i desteklemelidir.
    7.1.4.4. 2D Grafik Hızlandırma

    Android, uygulamaların android:hardwareAccelerated adlı bir manifest etiketi veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini bildirmelerine olanak tanıyan bir mekanizma içerir.

    Cihaz uygulamaları:

    • [C-0-1] Varsayılan olarak donanım hızlandırma ETKİNLEŞTİRİLMELİDİR ve geliştirici android:hardwareAccelerated="false" değerini ayarlayarak veya doğrudan Android View API'leri aracılığıyla donanım hızlandırmayı devre dışı bırakarak talep ederse donanım hızlandırma DEVRE DIŞI BIRAKILMALIDIR.

    • [C-0-2] Donanım hızlandırma ile ilgili Android SDK belgeleriyle tutarlı davranış sergilemelidir.

    Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını doğrudan kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak entegre etmesine olanak tanıyan bir TextureView nesnesi içerir.

    Cihaz uygulamaları:

    • [C-0-3] TextureView API'yi DESTEKLEMELİ ve yukarı akış Android uygulamasıyla TUTARLI davranış sergilemelidir.
    7.1.4.5. Geniş Gamutlu Ekranlar

    Cihaz uygulamaları, Configuration.isScreenWideColorGamut() aracılığıyla geniş gamlı ekranları desteklediğini iddia ediyorsa:

    • [C-1-1] Renk kalibrasyonu yapılmış bir ekrana SAHİP OLMALIDIR.

    • [C-1-2] Gamı, CIE 1931 xyY alanında sRGB renk gamını tamamen kapsamalıdır.

    • [C-1-3] CIE 1931 xyY uzayında gamı, DCI-P3'ün en az% 90'ı kadar bir alana sahip bir ekrana SAHİP OLMALIDIR.

    • [C-1-4] OpenGL ES 3.1 veya 3.2'yi DESTEKLEMELİ ve bunu düzgün şekilde bildirmelidir.

    • [C-1-5] EGL_KHR_no_config_context, EGL_EXT_pixel_format_float, EGL_KHR_gl_colorspace, EGL_EXT_gl_colorspace_scrgb, EGL_EXT_gl_colorspace_scrgb_linear, EGL_EXT_gl_colorspace_display_p3, EGL_EXT_gl_colorspace_display_p3_linear, ve EGL_EXT_gl_colorspace_display_p3_passthrough uzantılarını desteklediğini REKLAMDA BELİRTMEK ZORUNDADIR.

    • [C-SR-1] GL_EXT_sRGB'yı desteklemek için ŞİDDETLE TAVSİYE EDİLİR.

    Aksine, cihaz uygulamaları geniş gamlı ekranları desteklemiyorsa:

    • [C-2-1] Ekran renk gamı tanımlanmamış olsa da CIE 1931 xyY alanında sRGB'nin% 100'ünü veya daha fazlasını kapsamalıdır.

    7.1.5. Eski Uygulama Uyumluluğu Modu

    Android, ekran boyutu bağımsızlığından önceki 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) 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 özellikle izin verilmediği sürece cihazlar, Android SDK tarafından tanımlanan bu API'lerin tümünü desteklemelidir.

    Bir cihaz uygulamasının Android ile uyumlu tüm ekranları:

    • [C-0-1] 16 bit renkli grafikleri işleyebilmelidir.

    • 24 bit renkli grafikler görüntüleyebilen ekranları DESTEKLEMELİDİR.

    • [C-0-2] Animasyonları oluşturabilmelidir.

    • [C-0-3] 0,9 ile 1,15 arasında bir piksel en boy oranına (PAR) SAHİP OLMALIDIR. Yani piksel en boy oranı, %10-15 toleransla kareye (1,0) yakın OLMALIDIR.

    7.1.7. İkincil Ekranlar

    Android, medya paylaşım özelliklerini ve harici ekranlara erişmek için geliştirici API'lerini etkinleştirmek üzere Android ile uyumlu ikincil ekranlar için destek içerir.

    Cihaz uygulamaları, kablolu, kablosuz veya yerleşik ek ekran bağlantısı aracılığıyla harici ekranı destekliyorsa:

    • [C-1-1] Android SDK belgelerinde açıklandığı şekilde DisplayManager sisteme ait hizmeti ve API'yi uygulamalıdır.

    7.2. Giriş Cihazları

    Cihaz uygulamaları:

    7.2.1. Klavye

    Cihaz uygulamaları üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek içeriyorsa:

    Cihaz uygulamaları:

    • [C-0-1] android.content.res.Configuration.keyboard içinde belirtilen biçimlerden birine uymayan bir donanım klavyesi (QWERTY veya 12 tuşlu) İÇERMEMELİDİR.
    • Ek yazılım klavyesi uygulamaları İÇERMELİDİR.
    • Donanım klavyesi İÇEREBİLİR.

    7.2.2. Dokunmadan gezinme

    Android, dokunmatik olmayan gezinme için d-pad, trackball ve tekerlek mekanizmalarını destekler.

    Cihaz uygulamaları:

    Cihaz uygulamalarında dokunma dışı gezinme özellikleri yoksa:

    • [C-1-1] Metin seçimi ve düzenlemesi için, Giriş Yönetimi Motorları ile uyumlu makul bir alternatif kullanıcı arayüzü mekanizması SAĞLANMALIDIR. Yukarı akış Android açık kaynak uygulaması, dokunma dışı gezinme girişleri olmayan cihazlarla kullanıma uygun bir seçim mekanizması içerir.

    7.2.3. Gezinme Tuşları

    Genellikle özel bir fiziksel düğmeyle veya dokunmatik ekranın ayrı bir bölümüyle etkileşim yoluyla sağlanan Ana Sayfa, Son Kullanılanlar ve Geri işlevleri, Android gezinme paradigması ve dolayısıyla cihaz uygulamaları için gereklidir:

    • [C-0-1] Televizyon cihazı uygulamalarında, <intent-filter> ile ACTION=MAIN ve CATEGORY=LAUNCHER veya CATEGORY=LEANBACK_LAUNCHER ayarlanmış bir etkinliğe sahip yüklü uygulamaları başlatmak için kullanıcıya bir olanak SAĞLANMALIDIR. Bu kullanıcı kolaylığı için Ana Sayfa işlevi mekanizma OLMALIDIR.
    • Son Kullanılanlar ve Geri işlevleri için düğmeler SAĞLANMALIDIR.

    Ana Sayfa, Son Öğeler veya Geri işlevleri sağlanıyorsa bunlar:

    • [C-1-1] Herhangi biri erişilebilir olduğunda tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir OLMALIDIR.
    • [C-1-2] Her işlevi hangi tek eylemin tetikleyeceği net bir şekilde belirtilmelidir. Düğmeye basılmış görünür bir simge, ekranın gezinme çubuğu bölümünde bir yazılım simgesi gösterme veya kutudan çıkarma kurulum deneyimi sırasında kullanıcıya adım adım rehberli bir demo akışı sunma, bu tür bir göstergeye örnek olarak verilebilir.

    Cihaz uygulamaları:

    • Android 4.0'dan beri işlem çubuğu lehine kullanımdan kaldırıldığından [C-SR-1] Menü işlevi için giriş mekanizması sağlamAMASI ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-2] Tüm gezinme işlevlerinin iptal edilebilir olarak sağlanması ŞİDDETLE TAVSİYE EDİLİR. "İptal edilebilir", kaydırma belirli bir eşiğin ötesine bırakılmadığında kullanıcının gezinme işlevinin (ör. ana sayfaya gitme, geri gitme vb.) yürütülmesini engelleme özelliği olarak tanımlanır.

    Cihaz uygulamaları Menü işlevini sağlıyorsa:

    • [C-2-1] İşlem taşması menüsü pop-up'ı boş olmadığında ve işlem çubuğu görünür olduğunda işlem taşması düğmesi GÖSTERİLMELİDİR.
    • [C-2-2] İşlem çubuğundaki taşma düğmesi seçilerek görüntülenen işlem taşması pop-up'ının konumu DEĞİŞTİRİLMEMELİDİR. Ancak Menü işlevi seçilerek görüntülendiğinde işlem taşması pop-up'ı ekranda değiştirilmiş bir konumda OLUŞTURULABİLİR.

    Cihaz uygulamaları Menü işlevini sağlamıyorsa geriye dönük uyumluluk için:

    • [C-3-1] targetSdkVersion 10'dan küçük olduğunda menü işlevini uygulamalara fiziksel bir düğme, yazılım tuşu veya hareketler aracılığıyla SUNMALIDIR. Bu menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmediği sürece erişilebilir olmalıdır.

    Cihaz uygulamaları Yardım işlevini sağlıyorsa:

    • [C-4-1] Diğer gezinme tuşlarına erişilebiliyorsa YARDIMCI işlevine tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir.
    • [C-SR-3] Bu etkileşim için ANA SAYFA işlevine uzun basma KULLANMANIZ ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, gezinme tuşlarını göstermek için ekranın ayrı bir bölümünü kullanıyorsa:

    • [C-5-1] Gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANMALI ve uygulamalar tarafından kullanılabilen ekran bölümünü kapatMAMALI veya başka bir şekilde engelleMEMELİDİR.
    • [C-5-2] Ekranın bir bölümünü, bölüm 7.1.1'de tanımlanan koşulları karşılayan uygulamalara sunmalıdır.
    • [C-5-3] Ekranın bu ayrı bölümünün (diğer adıyla gezinme çubuğu) SDK'da belgelendiği şekilde düzgün bir şekilde gizlenmesi için uygulamanın View.setSystemUiVisibility() API yöntemiyle ayarladığı işaretlere UYULMALIDIR.

    Gezinme işlevi ekranda hareket tabanlı bir işlem olarak sağlanıyorsa:

    Ekranın mevcut yönünün sol ve sağ kenarlarının herhangi bir yerinden gezinme işlevi sağlanıyorsa:

    • [C-7-1] Gezinme işlevi GERİ olmalı ve ekranın mevcut yönünün hem sol hem de sağ kenarından kaydırma hareketiyle sağlanmalıdır.
    • [C-7-2] Sol veya sağ kenarlarda özel kaydırılabilir sistem panelleri varsa bu paneller, ekranın üst 1/3'lük kısmına yerleştirilmeli ve sürükleyerek içeri alma işleminin yukarıda bahsedilen panelleri çağıracağını, dolayısıyla Geri'yi çağırmayacağını belirten net ve kalıcı bir görsel gösterge içermelidir. Bir sistem paneli, ekran kenarlarının üst 1/3'ünün altında kalacak şekilde kullanıcı tarafından yapılandırılabilir ancak sistem paneli, kenarların 1/3'ünden daha uzun olmamalıdır.
    • [C-7-3] Ön planda çalışan uygulamada View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, WindowInsetsController.BEHAVIOR_DEFAULT veya WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE işaretleri ayarlanmışsa kenarlardan kaydırma işlemi, SDK'da belgelenen AOSP'de uygulandığı şekilde çalışmalıdır.
    • [C-7-4] Ön plandaki uygulamada View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, WindowInsetsController.BEHAVIOR_DEFAULT veya WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE işaretleri ayarlanmışsa özel kaydırılabilir sistem panelleri, kullanıcı AOSP'de uygulandığı şekilde sistem çubuklarını (diğer adıyla gezinme ve durum çubuğu) getirene veya karartmayı kaldırana kadar gizlenmelidir.

    Geri gitme işlevi sağlanıyorsa ve kullanıcı Geri hareketini iptal ediyorsa:

    • [C-8-1] OnBackInvokedCallback.onBackCancelled() çağrılmalıdır.
    • [C-8-2] OnBackInvokedCallback.onBackInvoked() çağrılmamalıdır.
    • [C-8-3] KEYCODE_BACK etkinliği gönderilmemelidir.

    Geri gezinme işlevi sağlanıyorsa ancak ön plandaki uygulamada OnBackInvokedCallback kayıtlı DEĞİLSE:

    • Sistem, AOSP'de sağlandığı gibi, kullanıcının geri gittiğini gösteren bir animasyon sağlamalıdır.

    Cihaz uygulamaları, setNavBarMode sistem API'si için destek sağlıyorsa ve android.permission.STATUS_BAR izni olan herhangi bir sistem uygulamasının gezinme çubuğu modunu ayarlamasına izin veriyorsa:

    • [C-9-1] AOSP kodunda sağlandığı şekilde çocuklara uygun simgeler veya düğmeye dayalı gezinme desteği SAĞLANMALIDIR.

    7.2.4. Dokunmatik ekran girişi

    Android; dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunmatik giriş cihazları gibi çeşitli işaretçi giriş sistemleri için destek içerir. Dokunmatik ekran tabanlı cihaz uygulamaları bir ekranla ilişkilendirilir. Bu sayede kullanıcı, ekrandaki öğeleri doğrudan manipüle ediyormuş gibi hisseder. Kullanıcı ekrana doğrudan dokunduğu için sistem, üzerinde işlem yapılan nesneleri belirtmek için ek bir çaba gerektirmez.

    Cihaz uygulamaları:

    • Bir tür işaretçi giriş sistemine (fare benzeri veya dokunmatik) SAHİP OLMALIDIR.
    • Tamamen bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.

    Cihaz uygulamaları, birincil Android uyumlu ekranda dokunmatik ekran (tek dokunuş veya daha iyi) içeriyorsa:

    • [C-1-1] Configuration.touchscreen API alanı için TOUCHSCREEN_FINGER raporlanmalıdır.
    • [C-1-2] android.hardware.touchscreen ve android.hardware.faketouch özellik işaretleri BİLDİRİLMELİDİR.

    Cihaz uygulamaları, Android ile uyumlu birincil ekranda tek bir dokunuştan fazlasını takip edebilen bir dokunmatik ekran içeriyorsa:

    • [C-2-1] Cihazdaki dokunmatik ekranın türüne karşılık gelen uygun özellik işaretlerini android.hardware.touchscreen.multitouch, android.hardware.touchscreen.multitouch.distinct, android.hardware.touchscreen.multitouch.jazzhand bildirmelidir.

    Cihaz uygulamaları, birincil Android uyumlu ekranda giriş için fare veya trackball gibi harici bir giriş cihazına (yani ekrana doğrudan dokunulmaz) dayanıyorsa ve 7.2.5 bölümündeki sahte dokunma şartlarını karşılıyorsa:

    • [C-3-1] android.hardware.touchscreen ile başlayan hiçbir özellik bayrağını bildirmemelidir.
    • [C-3-2] Yalnızca android.hardware.faketouch raporlanmalıdır.
    • [C-3-3] Configuration.touchscreen API alanı için TOUCHSCREEN_NOTOUCH raporlanmalıdır.

    7.2.5. Sahte Dokunmatik Giriş

    Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesini yaklaşık olarak sağlayan bir kullanıcı girişi sistemi sunar. Örneğin, ekrandaki imleci hareket ettiren bir fare veya uzaktan kumanda, dokunma etkisini taklit eder ancak kullanıcının önce işaret etmesini ya da odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresinin yanı sıra jiroskop işaretçi, kontrol çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı sahte dokunma etkileşimlerini destekleyebilir. Android, dokunmaya dayalı girişi (temel hareket desteği dahil) yeterince taklit edebilen ve cihazın dokunmatik ekran işlevselliğinin taklit edilen bir alt kümesini desteklediğini belirten, fare veya dokunmatik yüzey gibi yüksek doğruluklu dokunmatik olmayan (işaretçi tabanlı) bir giriş cihazına karşılık gelen android.hardware.faketouch özelliğini içerir.

    Cihaz uygulamalarında dokunmatik ekran yoksa ancak kullanılabilir hale getirmek istedikleri başka bir işaretçi giriş sistemi varsa:

    • android.hardware.faketouch özellik işaretinin desteklendiğini BEYAN ETMELİDİR.

    Cihaz uygulamaları android.hardware.faketouch desteğini beyan ediyorsa:

    • [C-1-1] İmleç konumunun mutlak X ve Y ekran konumları RAPORLANMALI ve ekranda görsel bir imleç gösterilmelidir.
    • [C-1-2] Ekranda aşağı veya yukarı hareket eden işaretçide meydana gelen durum değişikliğini belirten işlem koduyla dokunma etkinliği BİLDİRİLMELİDİR.
    • [C-1-3] Ekranda bir nesneye dokunma ve nesneyi bırakma hareketleri desteklenmelidir. Bu sayede kullanıcılar, ekrandaki bir nesneye dokunma hareketini taklit edebilir.
    • [C-1-4] Kullanıcıların ekrandaki bir nesneye çift dokunmayı taklit etmesine olanak tanıyan bir zaman eşiği içinde, ekrandaki bir nesnenin aynı yerinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketlerini desteklemelidir.
    • [C-1-5] Kullanıcıların dokunarak sürükleme hareketini taklit etmesine olanak tanıyan, ekrandaki rastgele bir noktada işaretçi aşağı, ekrandaki başka bir rastgele noktaya işaretçi hareket ettirme ve ardından işaretçi yukarı hareketlerini DESTEKLEMELİDİR.
    • [C-1-6] İşaretçi aşağı hareketini desteklemeli ve ardından kullanıcıların nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ekranda işaretçi yukarı hareketini yapmasına izin vermelidir. Bu sayede kullanıcılar ekrandaki bir nesneyi fırlatabilir.

    Cihaz uygulamaları android.hardware.faketouch.multitouch.distinct desteğini beyan ediyorsa:

    • [C-2-1] android.hardware.faketouch desteği beyan EDİLMELİDİR.
    • [C-2-2] İki veya daha fazla bağımsız işaretçi girişinin ayrı ayrı izlenmesi DESTEKLENMELİDİR.

    Cihaz uygulamaları android.hardware.faketouch.multitouch.jazzhand desteğini beyan ediyorsa:

    • [C-3-1] android.hardware.faketouch desteği BEYAN EDİLMELİDİR.
    • [C-3-2] 5 (parmaklı bir eli takip etme) veya daha fazla işaretçi girişinin tamamen bağımsız olarak ayrı ayrı izlenmesini DESTEKLEMELİDİR.

    7.2.6. Oyun Kumandası Desteği

    7.2.6.1. Düğme Eşlemeleri

    Cihaz uygulamaları:

    • [C-1-1] HID etkinliklerini aşağıdaki tablolarda listelenen ilgili InputEvent sabitlerine eşleyebilmelidir. Yukarı akış Android uygulaması bu şartı karşılar.

    Cihaz uygulamaları, aşağıdaki tablolarda listelenen tüm etkinliklerin girilmesini sağlayacak bir kumanda içeriyorsa veya kutuda ayrı bir kumandayla birlikte gönderiliyorsa:

    • [C-2-1] Özellik bayrağını android.hardware.gamepad bildirmelidir.
    Düğme HID Kullanımı2 Android Düğmesi
    A1 0x09 0x0001 KEYCODE_BUTTON_A (96)
    B1 0x09 0x0002 KEYCODE_BUTTON_B (97)
    X1 0x09 0x0004 KEYCODE_BUTTON_X (99)
    Y1 0x09 0x0005 KEYCODE_BUTTON_Y (100)
    D-pad yukarı1
    D-pad aşağı1
    0x01 0x00393 AXIS_HAT_Y4
    D-pad sol1
    D-pad sağ1
    0x01 0x00393 AXIS_HAT_X4
    Sol omuz düğmesi1 0x09 0x0007 KEYCODE_BUTTON_L1 (102)
    Sağ omuz düğmesi1 0x09 0x0008 KEYCODE_BUTTON_R1 (103)
    Sol çubuk tıklaması1 0x09 0x000E KEYCODE_BUTTON_THUMBL (106)
    Sağ çubuk tıklaması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) beyan edilmelidir.

    3 Bu kullanımın mantıksal minimum değeri 0, mantıksal maksimum değeri 7, fiziksel minimum değeri 0, fiziksel maksimum değeri 315, birimi derece ve rapor boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde uzaklaşan dönüş olarak tanımlanır. Örneğin, 0 mantıksal değeri dönüş olmadığını ve yukarı düğmesine basıldığını, 1 mantıksal değeri ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını gösterir.

    4 MotionEvent

    Analog Kontroller1 HID Kullanımı Android Düğmesi
    Sol tetikleyici 0x02 0x00C5 AXIS_LTRIGGER
    Doğru Tetikleyici 0x02 0x00C4 AXIS_RTRIGGER
    Sol kontrol çubuğu 0x01 0x0030
    0x01 0x0031
    AXIS_X
    AXIS_Y
    Sağ kontrol çubuğu 0x01 0x0032
    0x01 0x0035
    AXIS_Z
    AXIS_RZ

    1 MotionEvent

    7.2.7. Uzaktan Kumanda

    Cihaza özgü gereksinimler için Bölüm 2.3.1'e bakın.

    7.3. Sensörler

    Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa cihaz uygulaması, bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulamalıdır.

    Cihaz uygulamaları:

    • [C-0-1] android.content.pm.PackageManager sınıfına göre sensörlerin varlığını veya yokluğunu doğru bir şekilde bildirmelidir.

    • [C-0-2] SensorManager.getSensorList() ve benzeri yöntemlerle desteklenen sensörlerin doğru bir listesini döndürmelidir.

    • [C-0-3] Diğer tüm sensör API'leri için makul şekilde davranmalıdır (ör. uygulamalar dinleyici kaydetmeye çalıştığında uygun şekilde true veya false döndürerek, ilgili sensörler mevcut olmadığında sensör dinleyicilerini çağırmayarak vb.).

    Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa:

    • [C-1-1] Android SDK belgelerinde tanımlandığı şekilde, her sensör türü için ilgili Uluslararası Birimler Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini bildirmelidir.

    • [C-1-2] Uygulama işlemcisi etkin olduğunda, maksimum istenen gecikme süresi 0 ms olan bir sensör akışı için sensör verilerini maksimum 100 milisaniye + 2 * sample_time gecikme süresiyle bildirmelidir. Bu gecikmeye filtreleme gecikmeleri dahil değildir.

    • [C-1-3] İlk sensör örneği, sensör etkinleştirildikten sonraki 400 milisaniye + 2 * sample_time içinde BİLDİRİLMELİDİR. Bu örnekte doğruluk değerinin 0 olması kabul edilebilir.

    • [C-1-4] Android SDK belgelerinde sürekli sensör olduğu belirtilen tüm API'ler için cihaz uygulamaları, 3%'ün altında bir titreşime sahip OLMASI GEREKEN periyodik veri örneklerini sürekli olarak sağlamalıdır. Titreşim, bildirilen zaman damgası değerlerinin ardışık etkinlikler arasındaki farkının standart sapması olarak tanımlanır.

    • [C-1-5] Sensör etkinliği akışının, cihaz CPU'sunun askıya alınma durumuna girmesini veya askıya alınma durumundan uyanmasını engellememesi GEREKİR.

    • [C-1-6] Android SDK belgelerinde tanımlandığı şekilde, etkinliğin gerçekleştiği ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edildiği zamanı temsil eden etkinlik zamanını nanosaniye cinsinden BİLDİRMELİDİR.

    • [C-SR-1] Zaman damgası senkronizasyon hatasının 100 milisaniyenin altında olması ŞİDDETLE TAVSİYE EDİLİR ve zaman damgası senkronizasyon hatasının 1 milisaniyenin altında olması GEREKİR.

    • Birden fazla sensör etkinleştirildiğinde güç tüketimi, her bir sensörün bildirilen güç tüketiminin toplamını AŞMAMALIDIR.

    Yukarıdaki liste kapsamlı değildir. Android SDK'nın belgelenmiş davranışı ve sensörler ile ilgili Android Açık Kaynak Belgeleri yetkili olarak kabul edilir.

    Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa:

    • [C-1-6] Tüm sensörler için sıfır olmayan bir çözünürlük AYARLANMALI ve değer Sensor.getResolution() API yöntemiyle bildirilmelidir.

    Bazı sensör türleri bileşiktir. Bu türler, bir veya daha fazla sensörün sağladığı verilerden elde edilebilir. (Örneğin, yön sensörü ve doğrusal ivme sensörü.)

    Cihaz uygulamaları:

    • Sensör türleri bölümünde açıklandığı gibi ön koşul olan fiziksel sensörleri içerdiğinde bu sensör türlerini uygulamalıdır.

    Cihaz uygulamaları birleşik sensör içeriyorsa:

    • [C-2-1] Sensörü, bileşik sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulamalıdır.

    Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa ve sensör yalnızca bir değer bildiriyorsa cihaz uygulamaları:

    • [C-3-1] Sensörün çözünürlüğü 1 olarak ayarlanmalı ve değer Sensor.getResolution() API yöntemiyle raporlanmalıdır.

    Cihaz uygulamaları, SensorAdditionalInfo#TYPE_VEC3_CALIBRATION'ı destekleyen belirli bir sensör türü içeriyorsa ve sensör üçüncü taraf geliştiricilere sunuluyorsa:

    • [C-4-1] Sağlanan verilerde sabit, fabrikada belirlenmiş kalibrasyon parametreleri yer almamalıdır.

    Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü veya manyetometre sensörü kombinasyonu içeriyorsa:

    • [C-SR-2] İvme ölçer, jiroskop ve manyetometrenin sabit bir göreli konuma sahip olması ŞİDDETLE TAVSİYE EDİLİR.Bu sayede cihaz dönüştürülebilir (ör. katlanabilir) olsa bile sensör eksenleri, olası tüm cihaz dönüştürme durumlarında sensör koordinat sistemiyle uyumlu ve tutarlı kalır.

    7.3.1. İvme ölçer

    Cihaz uygulamaları:

    • [C-SR-1] 3 eksenli ivme ölçer içermesi KESİNLİKLE ÖNERİLİR.

    Cihaz uygulamaları bir ivmeölçer içeriyorsa:

    • [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.

    • [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.

    • [C-1-4] Herhangi bir eksende gravity(4g) değerinin dört katı veya daha fazla serbest düşme ölçümü YAPABİLMELİDİR.

    • [C-1-5] En az 12 bit çözünürlüğe sahip OLMALIDIR.

    • [C-1-6] Standart sapması 0,05 m/sn^2'den fazla OLMAMALIDIR.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen bazında hesaplanmalıdır.

    • En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.

    • En az 16 bit çözünürlüğe SAHİP OLMALIDIR.

    • Özellikler kullanım ömrü boyunca değişirse KULLANIM SIRASINDA kalibre edilmeli ve telafi edilmeli, telafi parametreleri cihaz yeniden başlatıldığında korunmalıdır.

    • Sıcaklık dengelemesi YAPILMALIDIR.

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

    • [C-2-1] TYPE_ACCELEROMETER sensörü uygulanmalı ve raporlanmalıdır.

    • [C-SR-4] TYPE_SIGNIFICANT_MOTION bileşik sensörün uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-5] TYPE_ACCELEROMETER_UNCALIBRATED sensörünün uygulanması ve raporlanması ŞİDDETLE TAVSİYE EDİLİR. Android cihazların bu koşulu karşılaması ŞİDDETLE TAVSİYE EDİLİR. Böylece, bu koşulun ZORUNLU hale gelebileceği gelecekteki platform sürümüne yükseltme yapabilirler.

    • Android SDK dokümanında açıklandığı gibi TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER bileşik sensörleri uygulamalıdır.

    Cihaz uygulamaları 3'ten az eksenli bir ivmeölçer içeriyorsa:

    • [C-3-1] TYPE_ACCELEROMETER_LIMITED_AXES sensörü uygulanmalı ve raporlanmalıdır.

    • [C-SR-6] TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED sensörünün uygulanması ve raporlanması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamalarında 3 eksenli bir ivmeölçer ve TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER bileşik sensörlerinden herhangi biri uygulanıyorsa:

    • [C-4-1] Güç tüketimlerinin toplamı HER ZAMAN 4 mW'tan az OLMALIDIR.

    • Cihaz dinamik veya statik durumdayken her biri 2 mW'ın ve 0,5 mW'ın altında OLMALIDIR.

    Cihaz uygulamaları 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü içeriyorsa:

    • [C-5-1] TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION birleşik sensörleri uygulamalıdır.

    • [C-SR-7] TYPE_GAME_ROTATION_VECTOR bileşik sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları 3 eksenli ivme ölçer, 3 eksenli jiroskop sensörü ve manyetometre sensörü içeriyorsa:

    • [C-6-1] TYPE_ROTATION_VECTOR bileşik sensör uygulamalıdır.

    7.3.2. Manyetometre

    Cihaz uygulamaları:

    • [C-SR-1] 3 eksenli manyetometre (pusula) içermesi ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları 3 eksenli manyetometre içeriyorsa:

    • [C-1-1] TYPE_MAGNETIC_FIELD sensörü UYGULANMALIDIR.

    • [C-1-2] Etkinlikleri en az 10 Hz sıklıkta raporlayabilmeli ve en az 50 Hz sıklıkta raporlamalıdır.

    • [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.

    • [C-1-4] Doygunluğa ulaşmadan önce her eksende -900 µT ile +900 µT arasında ölçüm yapabilmelidir.

    • [C-1-5] Manyetometre, dinamik (akım kaynaklı) ve statik (mıknatıs kaynaklı) manyetik alanlardan uzağa yerleştirilerek 700 µT'den küçük bir sert demir ofset değerine SAHİP OLMALI ve 200 µT'nin altında bir değere SAHİP OLMALIDIR.

    • [C-1-6] 0,6 µT'ye eşit veya daha yoğun bir çözünürlüğe SAHİP OLMALIDIR.

    • [C-1-7] MUST support online calibration and compensation of the hard iron bias, and preserve the compensation parameters between device reboots.

    • [C-1-8] Yumuşak demir telafisi uygulanmalıdır. Kalibrasyon, cihaz kullanılırken veya üretilirken yapılabilir.

    • [C-1-9] En hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen bazında hesaplanan standart sapması en fazla 1, 5 µT OLMALIDIR; standart sapması en fazla 0, 5 µT OLMALIDIR.

    • [C-1-10] MUST implement the TYPE_MAGNETIC_FIELD_UNCALIBRATED sensor.

    Cihaz uygulamaları 3 eksenli manyetometre, ivme ölçer sensörü ve 3 eksenli jiroskop sensörü içeriyorsa:

    • [C-2-1] TYPE_ROTATION_VECTOR bileşik sensör uygulaması ZORUNLUDUR.

    Cihaz uygulamaları 3 eksenli 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'tan daha az güç tüketmelidir.

    7.3.3. GPS

    Cihaz uygulamaları:

    • [C-SR-1] GPS/GNSS alıcısı içermeleri ŞİDDETLE TAVSİYE EDİLİR.

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

    • [C-1-1] LocationManager#requestLocationUpdate üzerinden istendiğinde konum çıkışlarını en az 1 Hz hızında destekLEMELİDİR.

    • [C-1-2] 0,5 Mb/sn veya daha hızlı bir veri hızıyla internet bağlantısı kurulduğunda, açık hava koşullarında (güçlü sinyaller, ihmal edilebilir çok yollu yayılım, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı süre) konum belirleyebilmelidir. Bu koşul genellikle GPS/GNSS kilitleme süresini en aza indirmek için bir tür Destekli veya Tahmini GPS/GNSS tekniği kullanılarak karşılanır (Yardım verileri; Referans Zaman, Referans Konum ve Uydu Efemeris/Saat'i içerir).

      • [C-1-6] Böyle bir konum hesaplaması yapıldıktan sonra, konum istekleri yeniden başlatıldığında cihaz uygulamaları, ilk konum hesaplamasından sonraki bir saat içinde, sonraki istek veri bağlantısı olmadan ve/veya güç döngüsünden sonra yapılsa bile açık havada konumunu 5 saniye içinde belirlemelidir.
    • Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 1 metrekareden daha az ivmeyle hareket ederken:

      • [C-1-3] Konumu en az% 95 oranında 20 metre, hızı ise 0, 5 metre/saniye içinde belirleyebilmelidir.

      • [C-1-4] MUST aynı anda GnssStatus.Callback aracılığıyla bir takımyıldızdan en az 8 uyduyu izlemeli ve bunlar hakkında rapor vermelidir.

      • Birden fazla takımyıldızdan (ör. GPS + Glonass, BeiDou, Galileo'dan en az biri) en az 24 uyduyu aynı anda takip edebilmelidir.

    • [C-SR-2] Acil durum telefon görüşmesi sırasında GNSS Konum Sağlayıcı API'leri aracılığıyla normal GPS/GNSS konum çıkışları sağlamaya devam etmeleri ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-3] İzlenen tüm takımyıldızlardan (GnssStatus mesajlarında bildirildiği gibi) gelen GNSS ölçümlerinin SBAS hariç bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-4] AGC ve GNSS ölçüm sıklığının bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-5] Tüm doğruluk tahminlerinin (Yön, Hız ve Dikey dahil) her GPS/GNSS konumunun bir parçası olarak bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-6] GPS/GNSS'den hesaplanan bir konum henüz bildirilmemiş olsa bile, GNSS ölçümlerinin bulunur bulunmaz bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-7] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekarelik ivmeden daha az bir hızla hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıklarının ve sahte aralık hızlarının en az% 95 oranında bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    7.3.4. Jiroskop

    Cihaz uygulamaları:

    • [C-SR-1] Jiroskop sensörü İÇERMESİ KESİNLİKLE ÖNERİLİR.

    Cihaz uygulamaları jiroskop içeriyorsa:

    • [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.

    • [C-1-4] 12 bit veya daha yüksek çözünürlüğe SAHİP OLMALIDIR.

    • [C-1-5] Sıcaklık dengelenmelidir.

    • [C-1-6] Kullanım sırasında kalibre edilmeli ve telafi edilmeli, cihaz yeniden başlatıldığında telafi parametreleri korunmalıdır.

    • [C-1-7] Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) daha fazla varyansa SAHİP OLMAMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle sınırlandırılması ZORUNLUDUR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.

    • [C-SR-2] Cihaz oda sıcaklığında sabitken kalibrasyon hatasının 0,01 rad/sn'den az olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-3] 16 bit veya daha yüksek çözünürlükte olması ŞİDDETLE TAVSİYE EDİLİR.

    • En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.

    Cihaz uygulamalarında 3 eksenli jiroskop varsa:

    • [C-2-1] TYPE_GYROSCOPE sensörü UYGULANMALIDIR.

    • [C-SR-4] Sensörün uygulanması önemle tavsiye edilir. TYPE_GYROSCOPE_UNCALIBRATED sensor.

    Cihaz uygulamalarında 3'ten az eksenli bir jiroskop varsa:

    • [C-3-1] TYPE_GYROSCOPE_LIMITED_AXES sensörü uygulanmalı ve raporlanmalıdır.

    • [C-SR-5] TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED sensörünün uygulanması ve raporlanması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları 3 eksenli jiroskop, ivme ölçer sensörü ve manyetometre sensörü içeriyorsa:

    • [C-4-1] TYPE_ROTATION_VECTOR bileşik sensör uygulaması ZORUNLUDUR.

    Cihaz uygulamaları 3 eksenli ivme ölçer ve 3 eksenli jiroskop sensörü içeriyorsa:

    • [C-5-1] TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION birleşik sensörleri uygulamalıdır.

    • [C-SR-6] TYPE_GAME_ROTATION_VECTOR bileşik sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    7.3.5. Barometre

    Cihaz uygulamaları:

    • [C-SR-1] Barometre (ortam hava basıncı sensörü) içermesi ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları barometre içeriyorsa:

    • [C-1-1] TYPE_PRESSURE sensörü uygulanmalı ve raporlanmalıdır.

    • [C-1-2] Etkinlikler 5 Hz veya daha yüksek bir frekansta yayınlanmalıdır.

    • [C-1-3] Sıcaklık dengelenmelidir.

    • [C-SR-2] 300 hPa ile 1.100 hPa arasındaki basınç ölçümlerinin raporlanabilmesi için ŞİDDETLE TAVSİYE EDİLİR.

    • 1 hPa mutlak doğruluğa SAHİP OLMALIDIR.

    • 20 hPa aralığında 0,12 hPa göreceli doğruluğa SAHİP OLMALIDIR (deniz seviyesinde ~200 m değişiklikte ~1 m doğruluğa eşdeğer).

    Sistem özelliğini sensor.barometer.high_quality.implemented bildiren cihaz uygulamaları:

    • [C-2-1] Basınç ölçümlerini 300 hPa ile 1.100 hPa aralığında ve +/- 1 hPa mutlak doğrulukla bildirmelidir.

    • [C-2-2] 100 hPa aralığında 0,15 hPa göreceli doğruluğa SAHİP OLMALIDIR.Bu, deniz seviyesinde ~1000 m değişiklikte ~1 m doğruluğa eşdeğerdir.

    • [C-2-3] Kullanıcı cihaza dokunduğunda, bastırdığında veya cihazı sıktığında +/- 0,5 hPa aralığında sabit olmalıdır.

    • [C-2-4] Kullanıcı cihazla elinde veya cebinde yürürken +/- 0,15 hPa aralığında sabit OLMALIDIR.

    • [C-2-5] 5 Hz'in üzerindeki etkinleştirmeler için 300 ms'den fazla zaman sabitiyle düzeltilmemeli ve düzeltme, sensör etkinleştirmeleri arasında sızıntıya neden olmamalıdır.

    • [C-2-6] Bluetooth, hücresel bağlantı veya kablosuz gibi yaygın kaynakların neden olduğu günlük aydınlatma ve radyo frekanslarına maruz kaldığında +/- 0, 15 hPa içinde sabit olmalıdır.

    7.3.6. Thermometer

    Cihaz uygulamalarında ortam termometresi (sıcaklık sensörü) varsa:

    • [C-1-1] Ortam sıcaklığı sensörü için SENSOR_TYPE_AMBIENT_TEMPERATURE TANIMLANMALIDIR ve sensör, kullanıcının cihazla etkileşim kurduğu ortamdaki (oda/araç kabini) sıcaklığı santigrat derece cinsinden ÖLÇMELİDİR.

    Cihaz uygulamaları, ortam sıcaklığı dışında bir sıcaklığı (ör. CPU sıcaklığı) ölçen bir termometre sensörü içeriyorsa:

    Cihaz uygulamaları, deri sıcaklığını izlemek için bir sensör içeriyorsa:

    7.3.7. Fotometre

    • Cihaz uygulamaları, fotometre (ortam ışığı sensörü) içerebilir.

    7.3.8. Yakınlık Sensörü

    • Cihaz uygulamaları yakınlık sensörü içerebilir.

    Cihaz uygulamalarında yakınlık sensörü varsa ve yalnızca ikili "yakın" veya "uzak" okuma bildiriliyorsa:

    • [C-1-1] Bir nesnenin yakınlığını ekranla aynı yönde ÖLÇMELİDİR. Yani bu sensör türünün asıl amacı kullanıcının kullandığı bir telefonu algılamak olduğundan, yakınlık sensörü ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Cihaz uygulamaları başka bir yöne bakan yakınlık sensörü içeriyorsa bu sensöre 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 KULLANILMALIDIR.

    • [C-1-4] Maksimum aralık ve çözünürlük 5 olarak BİLDİRİLMELİDİR.

    7.3.9. Yüksek Doğruluk Oranı Sunan Sensörler

    Cihaz uygulamaları bu bölümde tanımlandığı gibi daha yüksek kaliteli bir sensör grubu içeriyorsa ve bunları üçüncü taraf uygulamalarına sunuyorsa:

    • [C-1-1] android.hardware.sensor.hifi_sensors özellik bayrağı aracılığıyla özelliği TANIMLAMALIDIR.

    Cihaz uygulamaları android.hardware.sensor.hifi_sensors değerini bildiriyorsa:

    • [C-2-1] Aşağıdaki özelliklere sahip bir TYPE_ACCELEROMETER sensörü OLMALIDIR:

      • En az -8g ile +8g arasında bir ölçüm aralığı OLMALIDIR ve en az -16g ile +16g arasında bir ölçüm aralığı OLMASI ŞİDDETLE TAVSİYE EDİLİR.

      • En az 2.048 LSB/g ölçüm çözünürlüğüne SAHİP OLMALIDIR.

      • En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.

      • Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı RATE_VERY_FAST destekLEMELİDİR.

      • 400 μg/√Hz'nin üzerinde bir ölçüm gürültüsüne sahip OLMAMALIDIR.

      • En az 3.000 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırma dışı bir biçimini uygulamalıdır.

      • 3 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.

      • [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ği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.

      • Oda sıcaklığında test edildiğinde 30 μg √Hz'den düşük bir ivme rastgele yürüyüşüne SAHİP OLMALIDIR.

      • Sıcaklığa göre ≤ +/- 1 mg/°C'lik bir sapma değişikliği OLMALIDIR.

      • En uygun doğrusallık sapması ≤ %0,5 ve sıcaklığa karşı hassasiyet değişimi ≤ %0,03/°C olmalıdır.

      • Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyeti < %2,5 ve eksenler arası hassasiyet varyasyonu < %0,2 OLMALIDIR.

    • [C-2-2] TYPE_ACCELEROMETER ile aynı kalite koşullarına sahip bir TYPE_ACCELEROMETER_UNCALIBRATED OLMALIDIR.

    • [C-2-3] Aşağıdaki özelliklere sahip bir TYPE_GYROSCOPE sensörü OLMALIDIR:

      • En az -1.000 ile +1.000 dps arasında bir ölçüm aralığı OLMALIDIR.

      • En az 16 LSB/dps ölçüm çözünürlüğüne SAHİP OLMALIDIR.

      • En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.

      • Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı RATE_VERY_FAST destekLEMELİDİR.

      • Ölçüm gürültüsü 0,014&°/s/√Hz'den yüksek OLMAMALIDIR.

      • [C-SR-2] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.

      • Oda sıcaklığında test edilen hız rastgele yürüyüşü 0,001&°/s √Hz'den az OLMALIDIR.

      • Sıcaklığa karşı ≤ +/- 0,05&°/ s / °C'lik bir sapma değişikliği OLMALIDIR.

      • Sıcaklığa karşı ≤ %0,02 / °C hassasiyet değişikliği OLMALIDIR.

      • En iyi uyum doğrusu doğrusal olmama değeri ≤ %0,2 OLMALIDIR.

      • ≤ 0,007&°/s/√Hz gürültü yoğunluğuna SAHİP OLMALIDIR.

      • Cihaz sabitken 10-40 ℃ sıcaklık aralığında kalibrasyon hatası 0,002 rad/sn'den az OLMALIDIR.

      • 0,1&°/s/g'den daha az g-duyarlılığı OLMALIDIR.

      • Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyeti < %4,0 ve eksenler arası hassasiyet değişimi < %0,3 OLMALIDIR.

    • [C-2-4] TYPE_GYROSCOPE ile aynı kalite koşullarına sahip bir TYPE_GYROSCOPE_UNCALIBRATED OLMALIDIR.

    • [C-2-5] Aşağıdaki özelliklere sahip bir TYPE_GEOMAGNETIC_FIELD sensörü OLMALIDIR:

      • En az -900 ile +900 μT arasında bir ölçüm aralığı OLMALIDIR.

      • En az 5 LSB/uT ölçüm çözünürlüğüne SAHİP OLMALIDIR.

      • En az 5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.

      • Maksimum ölçüm sıklığı 50 Hz veya daha yüksek OLMALIDIR.

      • Ölçüm gürültüsü 0,5 uT'nin üzerinde OLMAMALIDIR.

    • [C-2-6] TYPE_MAGNETIC_FIELD_UNCALIBRATED, TYPE_GEOMAGNETIC_FIELD ile aynı kalite koşullarına sahip OLMALIDIR ve ayrıca:

      • En az 600 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırma içermeyen bir biçimini UYGULAMALIDIR.

      • [C-SR-3] Rapor hızı 50 Hz veya daha yüksek olduğunda 1 Hz'den en az 10 Hz'ye kadar beyaz gürültü spektrumunun olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-2-7] Aşağıdaki özelliklere sahip bir TYPE_PRESSURE sensörü OLMALIDIR:

      • En az 300 ile 1.100 hPa arasında bir ölçüm aralığı OLMALIDIR.

      • En az 80 LSB/hPa ölçüm çözünürlüğüne SAHİP OLMALIDIR.

      • En az 1 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.

      • Maksimum ölçüm sıklığı 10 Hz veya daha yüksek OLMALIDIR.

      • 2 Pa/√Hz'yi aşmayan bir ölçüm gürültüsüne SAHİP OLMALIDIR.

      • En az 300 sensör etkinliğinin arabelleğe alınabileceği, bu sensörün uyandırma içermeyen bir biçimini UYGULAMALIDIR.

      • Toplu işleme güç tüketimi 2 mW'tan fazla olmamalıdır.

    • [C-2-8] TYPE_GAME_ROTATION_VECTOR sensörü OLMALIDIR.

    • [C-2-9] Aşağıdaki özelliklere sahip bir TYPE_SIGNIFICANT_MOTION sensörü OLMALIDIR:

      • Cihaz statik durumdayken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
    • [C-2-10] Aşağıdaki özelliklere sahip bir TYPE_STEP_DETECTOR sensörü OLMALIDIR:

      • En az 100 sensör etkinliğinin arabelleğe alınabileceği, bu sensörün uyandırma içermeyen bir biçimini UYGULAMALIDIR.

      • Cihaz statik durumdayken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.

      • 4 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.

    • [C-2-11] Aşağıdaki özelliklere sahip bir TYPE_STEP_COUNTER sensörü OLMALIDIR:

      • Cihaz statik durumdayken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
    • [C-2-12] Aşağıdaki özelliklere sahip bir TILT_DETECTOR sensörü OLMALIDIR:

      • Cihaz statik durumdayken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
    • [C-2-13] İvmeölçer, jiroskop ve manyetometre tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 2,5 milisaniye içinde OLMALIDIR. İvmeölçer ve jiroskop tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 0,25 milisaniye içinde OLMALIDIR.

    • [C-2-14] Jiroskop sensörü etkinliklerinin zaman damgaları, kamera alt sistemiyle aynı zaman tabanında ve 1 milisaniye hata payı içinde OLMALIDIR.

    • [C-2-15] Yukarıdaki fiziksel sensörlerden herhangi birinde veriler kullanılabilir hale geldiği andan itibaren 5 milisaniye içinde uygulamalara örnekler sunULMALIDIR.

    • [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz statik durumdayken 0,5 mW'tan, hareket hâlindeyken ise 2,0 mW'tan yüksek güç tüketimine SAHİP OLMAMALIDIR:

      • SENSOR_TYPE_SIGNIFICANT_MOTION
      • SENSOR_TYPE_STEP_DETECTOR
      • SENSOR_TYPE_STEP_COUNTER
      • SENSOR_TILT_DETECTORS
    • [C-2-17] TYPE_PROXIMITY sensörü OLABİLİR ancak varsa en az 100 sensör etkinliği arabelleğe alma özelliğine SAHİP OLMALIDIR.

    Bu bölümdeki tüm güç tüketimi şartlarının, uygulama işlemcisinin güç tüketimini içermediğini unutmayın. Sensör, destekleyici devreler, özel sensör işleme sistemi vb. dahil olmak üzere tüm sensör zincirinin çektiği gücü kapsar.

    Cihaz uygulamaları doğrudan sensör desteği içeriyorsa:

    • [C-3-1] isDirectChannelTypeSupported ve getHighestDirectReportRateLevel API'si aracılığıyla doğrudan kanal türlerinin ve doğrudan raporlama hızı düzeyinin desteğini doğru şekilde bildirmelidir.

    • [C-3-2] Sensör doğrudan kanalını desteklediğini belirten tüm sensörler için iki sensör doğrudan kanal türünden en az birini DESTEKLEMELİDİR.

    • Aşağıdaki türlerdeki birincil sensör (uyandırma dışı varyant) için doğrudan sensör kanalı üzerinden etkinlik raporlaması DESTEKLENMELİDİR:

      • TYPE_ACCELEROMETER
      • TYPE_ACCELEROMETER_UNCALIBRATED
      • TYPE_GYROSCOPE
      • TYPE_GYROSCOPE_UNCALIBRATED
      • TYPE_MAGNETIC_FIELD
      • TYPE_MAGNETIC_FIELD_UNCALIBRATED

    7.3.10. Biyometrik Sensörler

    Biyometrik Kilit Açma Güvenliğini Ölçme hakkında daha fazla bilgi için lütfen Biyometrik Güvenliği Ölçme dokümanlarına bakın.

    Cihaz uygulamaları güvenli bir kilit ekranı içeriyorsa:

    • Biyometrik sensör İÇERMELİDİR.

    Biyometrik sensörler 3. Sınıf (eski adıyla Güçlü) olarak sınıflandırılabilir.

    Kimliğe bürünme ve sahtecilik kabul oranlarına ve biyometrik işlem hattının güvenliğine göre 2. Sınıf (eski adıyla Zayıf) veya 1. Sınıf (eski adıyla Kolaylık) Bu sınıflandırma, biyometrik sensörün platform ve üçüncü taraf uygulamalarıyla etkileşim kurması için gereken özellikleri belirler. Sensörlerin 1. Sınıf, 2. Sınıf veya 3. Sınıf olarak sınıflandırılabilmesi için aşağıda ayrıntılı olarak açıklanan ek şartları karşılaması gerekir. Hem 2. Sınıf hem de 3. Sınıf biyometrikler, aşağıda ayrıntılı olarak açıklandığı gibi ek özellikler kazanır.

    Cihaz uygulamaları, android.hardware.biometrics.BiometricManager, android.hardware.biometrics.BiometricPrompt ve android.provider.Settings.ACTION_BIOMETRIC_ENROLL aracılığıyla üçüncü taraf uygulamalarına biyometrik sensör sunuyorsa:

    • [C-4-1] Bu belgede tanımlandığı şekilde 3. Sınıf veya 2. Sınıf biyometri şartlarını KARŞILAMALIDIR.

    • [C-4-2] Authenticators sınıfında sabit olarak tanımlanan her parametre adını ve bunların tüm kombinasyonlarını tanımalı ve bunlara uymalıdır. Aksine, canAuthenticate(int) ve setAllowedAuthenticators(int) yöntemlerine iletilen ve Authenticators içinde herkese açık sabitler olarak belgelenenler ile bunların herhangi bir kombinasyonu dışında kalan tam sayı sabitlerini kabul etmemeli veya tanımamalıdır.

    • [C-4-3] 3. Sınıf veya 2. Sınıf biyometriye sahip cihazlarda ACTION_BIOMETRIC_ENROLL işlemini uygulamalıdır. Bu işlem YALNIZCA 3. Sınıf veya 2. Sınıf biyometri için kayıt giriş noktalarını sunmalıdır.

    • [C-4-4] Uygulamaların, PromptContentView içerik görüntüleme biçimlerini kullanarak BiometricPrompt'ya özel içerik eklemesine İZİN VERİLMELİDİR. İçerik görüntüleme biçimleri, BiometricPrompt API'nin parçası olmayan resim, bağlantı, etkileşimli içerik veya diğer medya biçimlerine izin verecek şekilde genişletilmemelidir. Bu içeriği değiştirmeyen, gizlemeyen veya kısaltmayan stilistik düzenlemeler (ör. konum, dolgu, kenar boşlukları ve tipografiyi değiştirme) yapılabilir.

    Cihaz uygulamaları pasif biyometriyi destekliyorsa:

    • [C-5-1] Varsayılan olarak ek bir onay adımı (ör. düğmeye basma) GEREKLİ OLMALIDIR.

    • [C-SR-1] Kullanıcıların uygulama tercihlerini geçersiz kılmasına izin veren ve her zaman onay adımı gerektiren bir ayar olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-2] Onay işleminin, işletim sistemi veya çekirdek ihlaliyle sahtecilik yapılamayacak şekilde güvenli olması ŞİDDETLE TAVSİYE EDİLİR. Örneğin, bu, fiziksel bir düğmeye dayalı onay işleminin, fiziksel bir düğmeye basma dışında başka bir şekilde çalıştırılamayan bir güvenlik unsurunun (SE) yalnızca giriş için kullanılan genel amaçlı bir giriş/çıkış (GPIO) pimi üzerinden yönlendirildiği anlamına gelir.

    • [C-5-2] Ek olarak, setConfirmationRequired(boolean) işleviyle eşleşen(onay adımı içermeyen) örtülü bir kimlik doğrulama akışı uygulamalıdır. Bu işlev, uygulamalar tarafından oturum açma akışlarında kullanılmak üzere ayarlanabilir.

    Cihaz uygulamalarında birden fazla biyometrik sensör varsa:

    • [C-7-1] Biyometri kilitlendiğinde (ör. kullanıcı birincil kimlik doğrulama ile kilidi açana kadar biyometri devre dışı bırakıldığında) veya çok sayıda başarısız deneme nedeniyle zamana bağlı kilitlendiğinde (ör. kullanıcı belirli bir süre bekleyene kadar biyometri geçici olarak devre dışı bırakıldığında) daha düşük biyometri sınıfındaki diğer tüm biyometrileri de KİLİTLEMELİDİR. Zamana bağlı kilitlenme durumunda, biyometrik doğrulama için geri yükleme aralığı, zamana bağlı kilitlenmedeki tüm biyometrik verilerin maksimum geri yükleme aralığı OLMALIDIR.

    • [C-SR-12] Biyometri kilitlendiğinde (ör. kullanıcı birincil kimlik doğrulama ile kilidi açana kadar biyometri devre dışı bırakıldığında) veya çok sayıda başarısız deneme nedeniyle zamana bağlı kilitlendiğinde (ör. kullanıcı belirli bir süre bekleyene kadar biyometri geçici olarak devre dışı bırakıldığında) aynı biyometri sınıfındaki diğer tüm biyometrilerin de kilitlenmesi ŞİDDETLE TAVSİYE EDİLİR. Zamana bağlı kilitleme durumunda, biyometrik doğrulama için geri yükleme süresinin, zamana bağlı kilitlemedeki tüm biyometrik verilerin maksimum geri yükleme süresi olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-7-2] Kilitlenen bir biyometriğin kilitlenme sayacını sıfırlamak için kullanıcıya önerilen birincil kimlik doğrulama (ör. PIN, desen veya şifre) sorgusu GÖNDERİLMELİDİR. 3. sınıf biyometrikler, aynı veya daha düşük sınıftaki kilitli bir biyometriğin kilitlenme sayacını sıfırlamak için KULLANILABİLİR. 2. Sınıf veya 1. Sınıf biyometrik verilerin, herhangi bir biyometrik veri için kilitlenmeyi sıfırlama işlemini tamamlamasına İZİN VERİLMEMELİDİR.

    • [C-SR-3] Kimlik doğrulama başına yalnızca bir biyometri onaylanması ŞİDDETLE TAVSİYE EDİLİR (ör. cihazda hem parmak izi hem de yüz sensörleri varsa bunlardan herhangi biri onaylandıktan sonra onAuthenticationSucceeded gönderilmelidir).

    Cihaz uygulamalarının, üçüncü taraf uygulamalarının anahtar deposu 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ŞILAMALIDIR.

    • [C-6-2] Kimlik doğrulama BIOMETRIC_STRONG gerektirdiğinde veya kimlik doğrulama CryptoObject ile çağrıldığında YALNIZCA 3. Sınıf biyometrik veriler sunulmalıdır.

    Cihaz uygulamaları, biyometrik sensörü 1. Sınıf (eski adıyla Kolaylık) olarak değerlendirmek istiyorsa:

    • [C-1-1] YANLIŞ KABUL ORANI %0,002'den düşük OLMALIDIR.

    • [C-1-2] Android Biyometri Test Protokolleri ile ölçülen sahtecilik ve kimliğe bürünme kabul oranları% 7'den yüksekse bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceği açıklanmalı ve etkinleştirmenin riskleri net bir şekilde belirtilmelidir.

    • [C-1-9] Yirmi yanlış denemeden sonra ve biyometrik doğrulama için en az doksan saniye geri yükleme aralığından sonra kullanıcıdan önerilen birincil kimlik doğrulama yöntemini (ör.PIN, desen, şifre) kullanmasını İSTEMELİDİR. Burada yanlış deneme, yeterli yakalama kalitesine (BIOMETRIC_ACQUIRED_GOOD) sahip olan ancak kayıtlı bir biyometriyle eşleşmeyen bir denemedir.

    • [C-SR-4] Android Biometrics Test Protocols ile ölçülen 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ı azaltmak KESİNLİKLE ÖNERİLİR.

    • [C-1-3] Biyometrik doğrulama denemelerine hız sınırlaması GETİRİLMELİDİR. Burada yanlış deneme, yeterli yakalama kalitesine sahip (BIOMETRIC_ACQUIRED_GOOD) ancak kayıtlı bir biyometrik ile eşleşmeyen denemedir.

    • [C-SR-5] [C-1-9] başına maksimum sayıda yanlış deneme için biyometrik doğrulama ile ilgili beş yanlış denemeden sonra deneme sıklığına en az 30 saniye sınırlama getirilmesi ŞİDDETLE TAVSİYE EDİLİR. Burada yanlış deneme, yeterli yakalama kalitesine (BIOMETRIC_ACQUIRED_GOOD) sahip olup kayıtlı bir biyometrik ile eşleşmeyen bir denemedir.

    • [C-SR-6] Tüm sıklık sınırlama mantığının TEE'de olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-1-10] Birincil kimlik doğrulama geri çekilmesi, bölüm 9.11'deki [C-0-2] bölümünde açıklandığı şekilde ilk kez tetiklendikten sonra biyometri devre dışı bırakılmalıdır.

    • [C-1-11] Android Biometrics Test Protocols (Android Biyometri Test Protokolleri) ile ölçüldüğü üzere, sahtecilik ve kimliğe bürünme kabul oranı %30'dan yüksek olmamalıdır. Ayrıca, (1) A Düzeyi sunum saldırısı aracı (PAI) türleri için sahtecilik ve kimliğe bürünme kabul oranı %30'dan yüksek olmamalıdır ve (2) B Düzeyi PAI türleri için sahtecilik ve kimliğe bürünme kabul oranı %40'tan yüksek olmamalıdır.

    • [C-1-4] Kullanıcının mevcut bir cihaz kimliğini (PIN/desen/şifre) onaylaması veya TEE ile güvenli hale getirilmiş yeni bir cihaz kimliği eklemesiyle önce bir güven zinciri oluşturulmadan yeni biyometri eklenmesi ENGELLENMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevedeki mekanizmayı sağlar.

    • [C-1-5] Kullanıcı hesabı kaldırıldığında (fabrika ayarlarına sıfırlama dahil) veya önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) kaldırıldığında kullanıcının tüm tanımlanabilir biyometrik verileri tamamen kaldırılmalıdır.

    • [C-1-6] İlgili biyometri için bireysel işaretlere (ör. DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT, DevicePolicymanager.KEYGUARD_DISABLE_FACE veya DevicePolicymanager.KEYGUARD_DISABLE_IRIS) uyulmalıdır.

    • [C-1-7] Kullanıcıya, 24 saatte bir veya daha kısa aralıklarla önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) sorgusu GÖNDERMELİDİR.

    • [C-1-8] Aşağıdakilerden herhangi biri gerçekleştiğinde kullanıcıdan önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) veya 3. Sınıf (GÜÇLÜ) biyometrik kimlik doğrulama İSTEMELİDİR:

      • 4 saatlik boşta kalma zaman aşımı süresi.
      • 3 başarısız biyometrik kimlik doğrulama girişimi.
      • Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasının ardından boşta kalma zaman aşımı süresi ve başarısız kimlik doğrulama sayısı sıfırlanır.
    • [C-SR-7] Yeni cihazlarda [C-1-7] ve [C-1-8] içinde belirtilen kısıtlamaları zorunlu kılmak için Android Açık Kaynak Projesi tarafından sağlanan çerçevedeki mantığın kullanılması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-8] Cihazda ölçülen yanlış ret oranının %10'dan düşük olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-9] Kayıtlı her biyometrik için, biyometriğin algılandığı andan ekranın kilidinin açıldığı ana kadar ölçülen gecikmenin 1 saniyeden kısa olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-1-12] Android Biyometri Test Protokolleri ile ölçüldüğü üzere, her sunum saldırısı aracı (PAI) türü için sahtecilik ve kimliğe bürünme kabul oranı %40'tan yüksek OLMAMALIDIR.

    • [C-SR-13] Android Biometrics Test Protocols ile ölçüldüğü üzere, sunum saldırısı aracı (PAI) türü başına %30'dan yüksek olmayan bir sahtecilik ve kimliğe bürünme kabul oranı olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-8] Cihazda ölçülen yanlış ret oranının %10'dan düşük olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-1-15] Kullanıcıların tek veya birden fazla biyometri kaydını kaldırmasına İZİN VERİLMELİDİR.

    • [C-SR-14] Biyometrik sensörün biyometrik sınıfının ve etkinleştirilmesiyle ilgili risklerin açıklanması KESİNLİKLE ÖNERİLİR.

    • [C-SR-17] Yeni AIDL arayüzlerinin (ör. IFace.aidl ve IFingerprint.aidl) uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, biyometrik sensörü 2. Sınıf (eski adıyla Zayıf) olarak değerlendirmek istiyorsa:

    • [C-2-1] Yukarıdaki 1. Sınıf için tüm koşulları KARŞILAMALIDIR.

    • [C-2-2] Android Biometrics Test Protocols'e göre ölçülen sahtecilik ve kimliğe bürünme kabul oranı %20'den yüksek olmamalıdır. Bununla birlikte, (1) A Düzeyi sunum saldırısı aracı (PAI) türleri için sahtecilik ve kimliğe bürünme kabul oranı %20'den yüksek olmamalıdır ve (2) B Düzeyi PAI türleri için sahtecilik ve kimliğe bürünme kabul oranı %30'dan yüksek olmamalıdır.

    • [C-SR-15] Android Biometrics Test Protocols ile ölçüldüğü üzere, sunum saldırısı aracı (PAI) türü başına %20'den yüksek olmayan bir sahtecilik ve kimliğe bürünme kabul oranı olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-2-3] Biyometrik eşleştirme, Android kullanıcı veya çekirdek alanı dışında yalıtılmış bir yürütme ortamında (ör. yalıtılmış yürütme ortamına güvenli kanal içeren bir çip üzerinde Güvenilir Yürütme Ortamı (TEE) ya da Bölüm 9.17'deki şartları karşılayan korumalı bir sanal makine üzerinde) YAPILMALIDIR.

    • [C-2-4] Tüm tanımlanabilir veriler, Android Open Source Project sitesindeki uygulama yönergelerinde belirtildiği gibi, izole yürütme ortamı veya izole yürütme ortamına güvenli kanal içeren bir çip dışında elde edilemeyecek, okunamayacak ya da değiştirilemeyecek şekilde şifrelenmeli ve kriptografik olarak doğrulanmalıdır ya da Bölüm 9.17'deki koşulları karşılayan hiper yönetici tarafından kontrol edilen korumalı bir sanal makine olmalıdır.

    • [C-2-5] Kamera tabanlı biyometriklerde, biyometri tabanlı kimlik doğrulama veya kayıt işlemi sırasında:

      • KAMERA, kamera karelerinin izole yürütme ortamı dışında veya izole yürütme ortamına güvenli bir kanal sağlayan bir çip ya da Bölüm 9.17'deki şartları karşılayan hiper yönetici tarafından kontrol edilen korumalı bir sanal makine tarafından okunmasını veya değiştirilmesini engelleyen bir modda ÇALIŞTIRILMALIDIR.

      • RGB tek kameralı çözümlerde, kayıt için önizleme gibi işlemleri desteklemek amacıyla kamera çerçeveleri yalıtılmış yürütme ortamının dışında okunabilir ancak yine de değiştirilemez.

    • [C-2-6] Üçüncü taraf uygulamaların, bireysel biyometrik kayıtlar arasında ayrım yapmasına İZİN VERİLMEMELİDİR.

    • [C-2-7] Kimliği tanımlayabilecek biyometrik verilere veya bunlardan elde edilen verilere (ör. yerleştirmeler) TEE veya Bölüm 9.17'deki şartları karşılayan hipervizör tarafından kontrol edilen korumalı sanal makine bağlamı dışında Uygulama İşlemcisi'ne şifrelenmemiş erişime İZİN VERİLMEMELİDİR. Android 9 veya önceki sürümlerde kullanıma sunulan cihazların yükseltilmesi [C-2-7] kapsamı dışına çıkarılmaz.

    • [C-2-8] Bir işletim sistemi veya çekirdek ihlali, verilerin doğrudan kullanıcı olarak kimlik doğrulaması yapacak şekilde yerleştirilmesine izin vermeyecek şekilde güvenli bir işleme ardışık düzenine SAHİP OLMALIDIR.

    • [C-SR-10] Tüm biyometrik yöntemler için canlılık algılama ve yüz biyometrisi için dikkat algılama özelliklerinin eklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-2-9] Biyometrik sensörü üçüncü taraf uygulamalarına SUNMALIDIR.

    Cihaz uygulamaları, biyometrik sensörü 3. Sınıf (eski adıyla Güçlü) olarak değerlendirmek istiyorsa:

    • [C-3-1] [C-1-7] ve [C-1-8] hariç olmak üzere yukarıdaki 2. Sınıf'ın tüm şartlarını karşılamalıdır.

    • [C-3-2] Donanım tabanlı bir anahtar deposu uygulaması OLMALIDIR.

    • [C-3-3] Android Biometrics Test Protocols (Android Biyometri Test Protokolleri) ile ölçüldüğü üzere, sahtecilik ve kimliğe bürünme kabul oranı %7'den yüksek OLMAMALIDIR. Ayrıca, (1) A Düzeyi sunum saldırısı aracı (PAI) türleri için sahtecilik ve kimliğe bürünme kabul oranı %7'den yüksek OLMAMALI ve (2) B Düzeyi PAI türleri için sahtecilik ve kimliğe bürünme kabul oranı %20'den yüksek OLMAMALIDIR.

    • [C-3-4] Kullanıcıya, önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için en fazla 72 saatte bir meydan okumalıdır.

    • [C-3-5] Cihazda desteklenen 3. sınıf biyometri yöntemlerinden herhangi biri yeniden kaydedilirse tüm 3. sınıf biyometri yöntemleri için Authenticator ID yeniden oluşturulmalıdır.

    • [C-3-6] Üçüncü taraf uygulamaları için biyometrik destekli anahtar deposu anahtarları etkinleştirilmelidir.

    • [C-SR-16] Android Biometrics Test Protocols ile ölçüldüğü üzere, sunum saldırısı aracı (PAI) türü başına% 7'den yüksek olmayan bir sahtecilik ve kimliğe bürünme kabul oranı olması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamalarında ekranın alt kısmında parmak izi sensörü (UDFPS) varsa:

    • [C-SR-11] Kullanıcı tanımlı parmak izinin dokunulabilir alanının, 3 düğmeli gezinmeye (bazı kullanıcılar erişilebilirlik amacıyla bu gezinme türünü kullanabilir) müdahale etmesini önlemek için ŞİDDETLE TAVSİYE EDİLİR.

    7.3.11. Poz Sensörü

    Cihaz uygulamaları:

    • 6 serbestlik derecesiyle duruş sensörünü DESTEKLEYEBİLİR.

    Cihaz uygulamaları 6 serbestlik dereceli duruş sensörünü destekliyorsa:

    • [C-1-1] MUST implement and report TYPE_POSE_6DOF sensor.

    • [C-1-2] Yalnızca dönüş vektöründen daha doğru OLMALIDIR.

    7.3.12. Menteşe Açısı Sensörü

    Cihaz uygulamaları menteşe açısı 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şlevselliği üçüncü taraf bir uygulamaya sunuyorsa:

    • [C-1-2] Donanım özellik bayrağını android.hardware.uwb bildirmelidir.

    • [C-1-3] AOSP uygulamasında tanımlanan aşağıdaki yapılandırma kümelerinin (önceden tanımlanmış FIRA UCI parametre kombinasyonları) tümünü desteklemelidir.

      • CONFIG_ID_1: FiRa tarafından tanımlanan tek noktaya yayın STATIC STS DS-TWR aralığı, ertelenmiş mod, aralık aralığı 240 ms.

      • CONFIG_ID_2: FiRa tarafından tanımlanan bire çok STATIC STS DS-TWR aralığı, ertelendi modu, aralık aralığı 200 ms. Tipik kullanım alanı: Akıllı telefon, birçok akıllı cihazla etkileşime girer.

      • CONFIG_ID_3: Geliş açısı (AoA) verileri raporlanmaması dışında CONFIG_ID_1 ile aynıdır.

      • CONFIG_ID_4: P-STS güvenlik modu etkinleştirilmiş olması dışında CONFIG_ID_1 ile aynıdır.

      • CONFIG_ID_5: P-STS güvenlik modu etkinleştirilmiş olması dışında CONFIG_ID_2 ile aynıdır.

      • CONFIG_ID_6: P-STS güvenlik modu etkinleştirilmiş olması dışında CONFIG_ID_3 ile aynıdır.

      • CONFIG_ID_7: P-STS bireysel denetleyici anahtar modu etkinleştirilmiş olması dışında CONFIG_ID_2 ile aynıdır.

    • [C-1-4] Kullanıcının UWB radyo açma/kapama durumunu değiştirmesine olanak tanıyan bir kullanıcı arayüzü sağlamalıdır.

    • [C-1-5] UWB radyosunu kullanan uygulamaların UWB_RANGING iznine (NEARBY_DEVICES izin grubu altında) sahip olması ZORUNLUDUR.

    FIRA, CCC ve CSA gibi standart kuruluşlar tarafından tanımlanan ilgili uygunluk ve sertifika testlerini geçmek, 802.1.15.4'ün doğru şekilde çalışmasını sağlamaya yardımcı olur.

    7.3.14. Özel sensörler

    Farklı bir deneyim sunmak için cihaz uygulamaları, Android veya Wear OS kapsamına girmeyen ve önceden yüklenmiş uygulamaların erişebileceği ek sensörler içerebilir.

    Bu tür sensörlerde sensör kimliği:

    • [C-0-1] 65536'dan yüksek OLMALIDIR.

    Özel sensör sağlık veya fitness ile ilgili amaçlar için tasarlanmışsa:

    • [C-0-2] Platform izni veya sistem izni ile korunmalıdır.

    7.4. Veri Bağlantısı

    7.4.1. Telefon

    Android API'leri ve bu belgede kullanılan "Telefoni" terimi, özellikle sesli arama yapma ve SMS mesajı göndermeyle ya da mobil (ör. GSM, CDMA, LTE, NR) GSM veya CDMA ağı üzerinden mobil veri oluşturmayla ilgili donanımı ifade eder. "Telefon" özelliğini destekleyen bir cihaz, ürüne uygun olarak arama, mesajlaşma ve veri hizmetlerinin bir kısmını veya tamamını sunmayı tercih edebilir.

    • Android, telefon donanımı içermeyen cihazlarda KULLANILABİLİR. Yani Android, telefon olmayan cihazlarla uyumludur.

    Cihaz uygulamaları GSM veya CDMA telefon özelliğini içeriyorsa:

    • [C-1-1] android.hardware.telephony özellik bayrağını ve teknolojiye göre diğer alt özellik bayraklarını BİLDİRMELİDİR.

    • [C-1-2] Söz konusu teknoloji için API'nin tam desteğini uygulamalıdır.

    • Acil durum aramaları sırasında (SetAllowedNetworkTypeBitmap() tarafından ayarlanan ağ türlerinden bağımsız olarak) mevcut tüm hücresel hizmet türlerine (2G, 3G, 4G, 5G vb.) İZİN VERİLMELİDİR.

    Cihaz uygulamaları telefon donanımı içermiyorsa:

    • [C-2-1] Tüm API'ler, işlem yapmayan işlemler olarak uygulanmalıdır.

    Cihaz uygulamaları eUICC'leri veya eSIM'leri/yerleşik SIM'leri destekliyorsa ve eSIM işlevini üçüncü taraf geliştiricilerin kullanımına sunmak için tescilli bir mekanizma içeriyorsa:

    Cihaz uygulamaları, sistem özelliğini ro.telephony.iwlan_operation_mode legacy olarak ayarlamazsa:

    Cihaz uygulamaları hem multimedya telefon hizmeti (MMTEL) hem de Rich Communication Services (RCS) özellikleri için tek bir IP Multimedia Subsystem (IMS) kaydını destekliyorsa ve tüm IMS sinyal trafiği için tek bir IMS kaydı kullanmayla ilgili hücresel operatör gereksinimlerine uyması bekleniyorsa:

    Cihaz uygulamaları android.hardware.telephony özelliğini bildiriyorsa:

    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österilmek üzere belirli bir grup UUID'si için temsili bir etkin abonelik SEÇİLMELİ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 arama yapmıyorsa etkin veri aboneliği olarak temsilci aboneliğin seçilmesi KESİNLİKLE ÖNERİLİR. Cihaz sesli arama yapıyorsa temsilci aboneliğin etkin ses aboneliği olması KESİNLİKLE ÖNERİLİR.

    Cihaz uygulamaları android.hardware.telephony özelliğini bildiriyorsa:

    • [C-6-7] ETSI TS 102 221 uyarınca her bir UICC için maksimum sayıda mantıksal kanalın (toplam 20) açılmasına ve eşzamanlı olarak kullanılmasına olanak tanımalıdır.

    • [C-6-8] Etkin operatör uygulamalarına (TelephonyManager#getCarrierServicePackageName ile belirtildiği şekilde) aşağıdaki davranışlardan herhangi biri otomatik olarak veya kullanıcının açık onayı olmadan UYGULANMAMALIDIR:

      • Ağ erişimini iptal etme veya sınırlama
      • İzinleri iptal etme
      • Arka planda veya ön planda çalışan 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'si paylaşan tüm etkin, fırsatçı olmayan abonelikler devre dışı bırakılmışsa, cihazdan fiziksel olarak kaldırılmışsa veya fırsatçı olarak işaretlenmişse cihaz:

    • [C-8-1] Aynı gruptaki kalan tüm etkin fırsatçı abonelikleri otomatik olarak devre dışı BIRAKMALIDIR.

    Cihaz uygulamaları CDMA telefon hizmetini değil de GSM telefon hizmetini içeriyorsa:

    • [C-9-1] MUST NOT declare PackageManager#FEATURE_TELEPHONY_CDMA.

    • [C-9-2] Tercih edilen veya izin verilen ağ türü bit maskelerinde herhangi bir 3GPP2 ağ türü ayarlanmaya çalışıldığında IllegalArgumentException istisnası oluşturulMALIDIR.

    • [C-9-3] TelephonyManager#getMeid'dan boş bir dize DÖNDÜRMELİDİR.

    Cihaz uygulamaları birden fazla bağlantı noktası ve profili olan eUICC'leri destekliyorsa:

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları hücresel veri bağlantısını destekliyorsa:

    • [C-SR-11] android.hardware.telephony.data özelliğinin bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları android.hardware.telephony.data bildiriyorsa:

    • [C-12-1] PDP bağlamları, PDN bağlantıları ve DN bağlantıları gibi en az iki eş zamanlı hücresel veri ağı bağlantısını DESTEKLEMELİDİR.

    7.4.1.1. Numara Engelleme Uyumluluğu

    Cihaz uygulamaları android.hardware.telephony.calling özelliğini bildiriyorsa:

    • [C-1-1] Numara engelleme desteği İÇERMELİDİR.

    • [C-1-2] SDK dokümanlarında açıklandığı gibi BlockedNumberContract ve ilgili API'yi eksiksiz bir şekilde uygulamalıdır.

    • [C-1-3] BlockedNumberProvider içindeki bir telefon numarasından gelen tüm aramaları ve mesajları uygulamalarla etkileşim olmadan ENGELLEMELİDİR. Tek istisna, SDK belgelerinde açıklandığı gibi numara engellemenin geçici olarak kaldırıldığı durumdur.

    • [C-1-4] Engellenen bir arama için platform arama günlüğü sağlayıcısına yazmalı ve önceden yüklenmiş numara çevirici uygulamasındaki varsayılan arama günlüğü görünümünde BLOCKED_TYPE simgesiyle aramaları filtrelemelidir.

    • [C-1-5] Engellenen bir ileti için Telefon hizmeti sağlayıcıya yazılMAMALIDIR.

    • [C-1-6] TelecomManager.createManageBlockedNumbersIntent() yöntemi tarafından döndürülen amaçla açılan, engellenen numaraların yönetimi için bir kullanıcı arayüzü uygulamalıdır.

    • [C-1-7] Android platformu, birincil kullanıcının cihazdaki tek bir örnek olan telefon hizmetleri üzerinde tam kontrol sahibi olduğunu varsaydığından, ikincil kullanıcıların cihazda engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERİLMEMELİDİR. Engellemeyle ilgili TÜM kullanıcı arayüzü, ikincil kullanıcılar için GİZLENMELİ ve engellenen liste yine de dikkate ALINMALIDIR.

    • Bir cihaz Android 7.0'a güncellendiğinde engellenen numaralar sağlayıcıya taşınmalıdır.

    • Önceden yüklenmiş çevirici uygulamasında engellenen aramaları göstermek için kullanıcıya bir olanak SUNULMALIDIR.

    7.4.1.2. Telecom API

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları android.hardware.microphone ve android.hardware.audio.output değerlerini bildirip android.hardware.type.television değerini bildirmezse:

    • [C-0-1] android.software.telecom özellik bayrağını BİLDİRMELİDİR.

    • [C-0-2] Telekom çerçevesi UYGULANMALIDIR.

    Cihaz uygulamaları android.hardware.telephony.calling bildiriyorsa:

    • [C-1-1] SDK'da açıklanan ConnectionService API'lerini desteklemelidir.

    • [C-1-2] Kullanıcı, CAPABILITY_SUPPORT_HOLD aracılığıyla belirtilen bekletme özelliğini desteklemeyen bir üçüncü taraf uygulaması tarafından yapılan devam eden bir aramadayken yeni bir gelen aramayı GÖSTERMELİ ve kullanıcının gelen aramayı kabul etmesine veya reddetmesine olanak TANIMALIDIR.

    • [C-1-3] InCallService'i uygulayan bir uygulamaya SAHİP OLMALIDIR.

    • [C-SR-1] Kullanıcıya, gelen bir aramayı yanıtlamanın devam eden bir aramayı sonlandıracağı konusunda bildirimde bulunulması ŞİDDETLE TAVSİYE EDİLİR.

      AOSP uygulaması, kullanıcının gelen bir aramayı yanıtlaması durumunda diğer aramanın sonlandırılacağını belirten bir uyarı bildirimiyle bu şartları karşılar.

    • [C-SR-2] Üçüncü taraf uygulaması, PhoneAccount üzerindeki EXTRA_LOG_SELF_MANAGED_CALLS extras anahtarını true olarak ayarladığında arama günlüğünde arama günlüğü girişi ve üçüncü taraf uygulamasının adını gösteren varsayılan çevirici uygulamasının önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-3] android.telecom API'leri için ses kulaklığının KEYCODE_MEDIA_PLAY_PAUSE ve KEYCODE_HEADSETHOOK etkinliklerini aşağıdaki gibi işlemeniz ŞİDDETLE TAVSİYE EDİLİR:

      • Devam eden bir arama sırasında önemli etkinliğe kısa basma algılandığında Connection.onDisconnect() arama yapılır.

      • Gelen arama sırasında önemli etkinliğe kısa basma algılandığında Connection.onAnswer() işlevini çağırın.

      • Gelen arama sırasında önemli etkinlik tuşuna uzun basıldığında Connection.onReject() işlevini çağırın.

      • CallAudioState öğesinin sesi kapatma durumunu değiştirin.

    7.4.1.3. Cellular NAT-T Keepalive Offload

    Cihaz uygulamaları:

    • Hücresel bağlantı canlı tutma boşaltma özelliği desteklenmelidir.

    Cihaz uygulamaları, hücresel bağlantı keepalive işlevinin yükünü aktarma desteği içeriyorsa ve bu fonksiyonu üçüncü taraf uygulamalarına sunuyorsa:

    • [C-1-1] SocketKeepAlive API'sini DESTEKLEMELİDİR.

    • [C-1-2] Hücresel bağlantı üzerinden en az bir eşzamanlı etkin tutma yuvasını DESTEKLEMELİDİR.

    • [C-1-3] Hücresel Radyo HAL'si tarafından desteklenen eşzamanlı hücresel canlı tutma yuvalarının mümkün olduğunca fazlasını DESTEKLEMELİDİR.

    • [C-SR-1] Radyo örneği başına en az üç hücresel canlı tutma yuvasını desteklemesi ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, hücresel bağlantı canlı tutma boşaltma özelliğini desteklemiyorsa:

    • [C-2-1] ERROR_UNSUPPORTED döndürmelidir.

    7.4.2. IEEE 802.11 (Kablosuz)

    Cihaz uygulamaları:

    • 802.11'in bir veya daha fazla biçimi için destek içermelidir.

    Cihaz uygulamaları 802.11 desteği içeriyorsa ve işlevselliği üçüncü taraf bir uygulamaya sunuyorsa:

    • [C-1-1] Karşılık gelen Android API'si UYGULANMALIDIR.

    • [C-1-2] Donanım özellik bayrağını android.hardware.wifi bildirmelidir.

    • [C-1-3] SDK belgelerinde açıklandığı gibi çoklu yayın API'si uygulanmalıdır.

    • [C-1-4] Çoklu yayın kilidi tutulmadığı ve paketler APF tarafından filtrelenmediği sürece, ekranın etkin olmadığı zamanlar da dahil olmak üzere, çalışma süresince mDNS'yi desteklemeli ve mDNS paketlerini (224.0.0.251 veya ff02::fb) filtrelememelidir. Paketlerin, uygulamalar tarafından NsdManager API'leri aracılığıyla istenen mDNS işlemlerini karşılaması gerekmez. Ancak cihaz, hedef pazarda geçerli olan yasal düzenlemelerin gerektirdiği güç tüketimi aralıklarında kalmak için gerekirse mDNS paketlerini filtreleyebilir.

    • [C-1-5] WifiManager.enableNetwork() API yöntemi çağrısı, uygulama trafiği için varsayılan olarak kullanılan ve getActiveNetwork ve registerDefaultNetworkCallback gibi ConnectivityManager API yöntemleri tarafından döndürülen, şu anda etkin olan Network'yi değiştirmek için yeterli bir gösterge olarak değerlendirilmemelidir. Başka bir deyişle, yalnızca kablosuz ağın internet erişimi sağladığını başarıyla doğrularlarsa diğer ağ sağlayıcılar (ör. mobil veri) tarafından sağlanan internet erişimini devre dışı bırakabilirler.

    • [C-1-6] ConnectivityManager.reportNetworkConnectivity() API yöntemi çağrıldığında Network üzerindeki internet erişimini yeniden değerlendirmesi ve değerlendirme sonucunda mevcut Network'ün artık internet erişimi sağlamadığı belirlendiğinde internet erişimi sağlayan başka bir kullanılabilir ağa (ör. mobil veri) geçmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-1-7] STA bağlantısı kesilmişken her taramanın başında bir kez olmak üzere, yoklama isteği karelerinin kaynak MAC adresini ve sıra numarasını rastgele hale GETİRMELİDİR.

    • [C-1-8] Tek bir tutarlı MAC adresi KULLANILMALIDIR (MAC adresi, tarama ortasında rastgele HALE GETİRİLMEMELİDİR).

    • [C-1-9] Tarama sırasında gönderilen probe istekleri arasında probe isteği sıra numarasını normal şekilde (sırayla) yinelemelidir.

    • [C-1-10] Taramanın son sinyal isteği ile sonraki taramanın ilk sinyal isteği arasındaki sinyal isteği sıra numarası rastgele hale GETİRİLMELİDİR.

    • [C-SR-1] İlişkilendirme ve ilişkilendirilme sırasında tüm STA iletişiminde bir erişim noktası (AP) için kullanılan kaynak MAC adresinin rastgele hale getirilmesi ŞİDDETLE TAVSİYE EDİLİR.

      • Cihaz, iletişim kurduğu her SSID (Passpoint için FQDN) için farklı bir rastgele MAC adresi KULLANMALIDIR.

      • Cihaz, kullanıcıya SSID başına (Passpoint için FQDN) rastgeleleştirme işlemini kontrol etme seçeneği SUNMALIDIR. Bu seçenek, rastgeleleştirilmemiş ve rastgeleleştirilmiş seçenekleri içermelidir. Ayrıca, yeni kablosuz ağ yapılandırmaları için varsayılan mod rastgeleleştirilmiş olarak AYARLANMALIDIR.

    • [C-SR-2] Oluşturdukları tüm AP'ler için rastgele bir BSSID kullanmaları ŞİDDETLE TAVSİYE EDİLİR.

      • MAC adresi, AP tarafından kullanılan SSID başına rastgele hale getirilmiş ve kalıcı hale getirilmiş OLMALIDIR.

      • CİHAZ, kullanıcıya bu özelliği devre dışı bırakma seçeneği sunabilir. Böyle bir seçenek sunuluyorsa rastgele hale getirme işlevi varsayılan olarak ETKİN olmalıdır.

    Cihaz uygulamaları, IEEE 802.11 standardında tanımlandığı şekilde kablosuz güç tasarrufu modu desteği içeriyorsa:

    • Bir uygulama WifiManager.createWifiLock() veWifiManager.WifiLock.acquire() API'leri aracılığıyla WIFI_MODE_FULL_HIGH_PERF kilidi veya WIFI_MODE_FULL_LOW_LATENCY kilidi aldığında ve kilit etkin olduğunda Wi-Fi güç tasarrufu modu KAPATILMALIDIR.

    • [C-3-2] Cihaz, Kablosuz Düşük Gecikme Kilidi (WIFI_MODE_FULL_LOW_LATENCY) modundayken cihaz ile bir erişim noktası arasındaki ortalama gidiş dönüş gecikmesi, Kablosuz Yüksek Performans Kilidi (WIFI_MODE_FULL_HIGH_PERF) modundaki gecikmeden daha kısa OLMALIDIR.

    • [C-SR-3] Düşük gecikme kilidi (WIFI_MODE_FULL_LOW_LATENCY) alındığında ve etkili olduğunda kablosuz ağın gidiş dönüş gecikmesini en aza indirmek için KESİNLİKLE ÖNERİLİR.

    Cihaz uygulamaları kablosuz ağ özelliğini destekliyorsa ve konum taraması için kablosuz ağ kullanıyorsa:

    • [C-2-1] WifiManager.isScanAlwaysAvailable API yöntemiyle okunan değerin etkinleştirilmesi/devre dışı bırakılması için kullanıcıya bir uygunluk SAĞLANMALIDIR.
    7.4.2.1. Kablosuz Doğrudan Bağlantı

    Cihaz uygulamaları:

    • Kablosuz Doğrudan Bağlantı (Wi-Fi eşler arası) desteği OLMALIDIR.

    Cihaz uygulamaları Kablosuz Doğrudan Bağlantı desteği içeriyorsa:

    • [C-1-1] SDK belgelerinde açıklandığı şekilde ilgili Android API'sini uygulamalıdır.

    • [C-1-2] android.hardware.wifi.direct donanım özelliğini bildirmelidir.

    • [C-1-3] Normal kablosuz ağ çalışmasını DESTEKLEMELİDİR.

    • [C-1-4] MUST support Wi-Fi and Wi-Fi Direct operations concurrently.

    • [C-SR-1] Yeni oluşturulan tüm Kablosuz Doğrudan Bağlantı bağlantıları için kaynak MAC adresinin rastgele seçilmesi ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları:

    Cihaz uygulamaları TDLS desteği içeriyorsa ve TDLS, WiFiManager API'si tarafından etkinleştirilmişse:

    • [C-1-1] WifiManager.isTdlsSupported aracılığıyla TDLS desteği beyan EDİLMELİDİR.

    • TDLS'yi YALNIZCA mümkün OLDUĞUNDA VE faydalı OLDUĞUNDA kullanmalıdır.

    • Performansı kablosuz ağ erişim noktası üzerinden gitmekten daha kötü olabileceği durumlarda sezgisel bir yaklaşıma sahip OLMALI ve TDLS'yi KULLANMAMALIDIR.

    7.4.2.3. Wi-Fi Aware

    Cihaz uygulamaları:

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

    • [C-1-1] SDK belgelerinde açıklandığı şekilde WifiAwareManager API'leri uygulamalıdır.

    • [C-1-2] android.hardware.wifi.aware özellik bayrağı BEYAN EDİLMELİDİR.

    • [C-1-3] MUST support Wi-Fi and Wi-Fi Aware operations concurrently.

    • [C-1-4] MUST randomize the Wi-Fi Aware management interface address at intervals no longer than 30 minutes and whenever Wi-Fi Aware is enabled unless an Aware ranging operation is ongoing or an Aware data-path is active (randomization is not expected for as long as the data-path is active).

    Cihaz uygulamaları, Bölüm 7.4.2.5'te açıklandığı gibi Wi-Fi Aware ve Wi-Fi Konum desteği içeriyorsa ve bu işlevleri üçüncü taraf uygulamalarına sunuyorsa:

    7.4.2.4. Wi-Fi Passpoint

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

    Cihaz uygulamaları Wi-Fi Passpoint desteği içeriyorsa:

    • [C-1-2] WifiManager API'lerini SDK belgelerinde açıklandığı şekilde uygulamalıdır.

    • [C-1-3] IEEE 802.11u standardını, özellikle de Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi Ağ Keşfi ve Seçimi ile ilgili olanları DESTEKLEMELİDİR.

    • [C-1-4] android.hardware.wifi.passpoint özellik bayrağı BEYAN EDİLMELİDİR.

    • [C-1-5] Passpoint ağlarını keşfetmek, eşleştirmek ve bunlarla ilişkilendirmek için AOSP uygulamasını izlemelidir.

    • [C-1-6] Wi-Fi Alliance Passpoint R2'de tanımlandığı şekilde, cihaz temel hazırlığı protokollerinin en azından aşağıdaki alt kümesini DESTEKLEMELİDİR: EAP-TTLS kimlik doğrulaması ve SOAP-XML.

    • [C-1-7] AAA sunucu sertifikasını Hotspot 2.0 R3 spesifikasyonunda açıklandığı şekilde işlemelidir.

    • [C-1-8] MUST support user control of provisioning through the Wi-Fi picker.

    • [C-1-9] Passpoint yapılandırmaları yeniden başlatma işlemleri arasında kalıcı olmalıdır.

    • [C-SR-1] Hüküm ve koşulları kabul etme özelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-2] Tesis bilgisi özelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR.

    Genel bir Passpoint devre dışı bırakma kullanıcı kontrolü anahtarı sağlanırsa uygulamalar:

    • [C-3-1] Varsayılan olarak Passpoint'i etkinleştirmelidir.
    7.4.2.5. Kablosuz Konum (Kablosuz Gidiş Dönüş Süresi - RTT)

    Cihaz uygulamaları:

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

    • [C-1-1] SDK belgelerinde açıklandığı şekilde WifiRttManager API'leri uygulamalıdır.

    • [C-1-2] android.hardware.wifi.rtt özellik bayrağı BEYAN EDİLMELİDİR.

    • [C-1-3] RTT'nin yürütüldüğü kablosuz arayüz bir erişim noktasıyla ilişkilendirilmemişken yürütülen her RTT patlaması için kaynak MAC adresini rastgele hale GETİRMELİDİR.

    • [C-1-4] Kümülatif dağılım işleviyle hesaplandığı üzere, 68. yüzdelik dilimde 80 MHz bant genişliğinde 2 metre içinde doğru OLMALIDIR.

    • [C-SR-1] Kümülatif dağılım işleviyle hesaplandığı üzere, 68.yüzdelik dilimde 80 MHz bant genişliğinde 1,5 metre içinde doğru şekilde bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    7.4.2.6. Kablosuz bağlantı etkin tutma boşaltması

    Cihaz uygulamaları:

    • Wi-Fi keepalive offload desteği İÇERMELİDİR.

    Cihaz uygulamaları, Wi-Fi keepalive offload desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalara sunuyorsa:

    • [C-1-1] SocketKeepAlive API'si DESTEKLENMELİDİR.

    • [C-1-2] Kablosuz bağlantı üzerinden en az üç eşzamanlı etkin tutma yuvasını DESTEKLEMELİDİR.

    Cihaz uygulamaları, Wi-Fi keepalive yük aktarmayı desteklemiyorsa:

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

    Cihaz uygulamaları:

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

    7.4.2.8. Kurumsal kablosuz ağ sunucusu sertifikası doğrulama

    Kablosuz sunucu sertifikası doğrulanmamışsa veya kablosuz sunucu alan adı ayarlanmamışsa cihaz uygulamaları:

    • [C-SR-1] Kullanıcıya, Ayarlar uygulamasında kurumsal kablosuz ağ ekleme seçeneği sunulmaması ŞİDDETLE TAVSİYE EDİ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çme seçeneği SUNULMALIDIR.
    7.4.2.10. Kablosuz yakınlık algılama (eşler arası yakınlık ölçümü)

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları, Wi-Fi yakınlık algılama desteği içeriyorsa:

    • [C-1-1] Yakınlık algılama desteği OLMALIDIR.

    • [C-1-2] android.hardware.wifi.rtt özellik bayrağı BEYAN EDİLMELİDİR.

    • [C-1-3] WifiRttManager#getProximityDetectionCharacteristics() yöntemi null olmayan bir değer döndürmelidir.

    • [C-1-4] WifiRttManager sürekli mesafe ölçümü API'leri UYGULANMALIDIR.

    • [C-1-5] Kablosuz bağlantı ve kablosuz bağlantı yakınlık algılama işlemleri aynı anda DESTEKLENMELİDİR.

    • [C-1-6] 68. yüzdelik dilimde (Kümülatif Dağılım Fonksiyonu ile hesaplandığı gibi) 80 MHz bant genişliğinde 2 metre içinde doğru OLMALIDIR.

    • [C-1-7] Aşağıdaki öncelik sırasına göre maksimum desteklenen bant genişliğini kullanarak en yüksek kullanılabilir frekans bandında (6 GHz, 5 GHz veya 2,4 GHz) Yakınlık Algılama (PD) aralığı ölçümü YAPILMALIDIR: 160 MHz, 80 MHz, 40 MHz ve 20 MHz.

    • [C-SR-1] Kümülatif dağılım işleviyle hesaplandığı üzere, 68.yüzdelik dilimde 80 MHz bant genişliğinde 1,5 metre içinde doğru şekilde bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-2] 802.11az NTB aralığını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.

    7.4.3. Bluetooth

    Cihaz uygulamaları Bluetooth Ses profilini destekliyorsa:

    • Gelişmiş Ses Codec'lerini ve Bluetooth Ses Codec'lerini (ör. LDAC) DESTEKLEMELİDİR.

    Cihaz uygulamaları HFP, A2DP ve AVRCP'yi destekliyorsa:

    • Toplamda en az 5 bağlı cihazı DESTEKLEMELİDİR.

    Cihaz uygulamaları android.hardware.vr.high_performance özelliğini beyan ediyorsa:

    • [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı'nı DESTEKLEMELİDİR.

    Android, Bluetooth ve Bluetooth Düşük Enerji'yi destekler.

    Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:

    • [C-2-1] İlgili platform özelliklerini (sırasıyla android.hardware.bluetooth ve android.hardware.bluetooth_le) beyan ETmeli ve platform API'lerini uygulamalıdır.

    • Cihaza uygun şekilde A2DP, AVRCP, OBEX, HFP gibi alakalı Bluetooth profillerini uygulamalıdır.

    Cihaz uygulamaları Bluetooth Düşük Enerji (BLE) desteği içeriyorsa:

    • [C-3-1] android.hardware.bluetooth_le donanım özelliğini BEYAN ETMELİDİR.

    • [C-3-2] SDK dokümanlarında ve android.bluetooth'ta açıklandığı gibi GATT (genel özellik profili) tabanlı Bluetooth API'lerini ETKİNLEŞTİRMELİDİR.

    • [C-3-3] ScanFilter API sınıfları için filtreleme mantığının uygulanıp uygulanmadığını belirtmek üzere BluetoothAdapter.isOffloadedFilteringSupported() için doğru değeri RAPORLAMALIDIR.

    • [C-3-4] Düşük enerjili reklamcılığın desteklenip desteklenmediğini belirtmek için BluetoothAdapter.isMultipleAdvertisementSupported() için doğru değer RAPORLANMALIDIR.

    • [C-3-5] Cihaz, tarama veya bildirme için BDE'yi etkin olarak kullanırken kullanıcı gizliliğini korumak amacıyla 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulamalı ve zaman aşımında adresi döndürmelidir. Zamanlama saldırılarını önlemek için zaman aşımı aralıkları da 5 ile 15 dakika arasında rastgele olmalı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ı DESTEKLENMELİDİR.

    • En az 4 yuvalı çoklu reklamı DESTEKLEMELİDİR.

    Cihaz uygulamaları Bluetooth LE'yi destekliyorsa ve konum taraması için Bluetooth LE'yi kullanıyorsa:

    • [C-4-1] Sistem API'si BluetoothAdapter.isBleScanAlwaysAvailable() aracılığıyla değer okuma işlemini etkinleştirmek/devre dışı bırakmak için kullanıcıya bir olanak SAĞLANMALIDIR.

    Cihaz uygulamaları, Bluetooth LE Kullanarak İşitme Cihazı Ses Desteği bölümünde açıklandığı gibi Bluetooth LE ve İşitme Cihazları Profilini destekliyorsa:

    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 KESİNLİKLE kısıtlamalıdır.

    Cihaz uygulamaları Bluetooth veya Bluetooth Düşük Enerji desteği içeriyorsa ve uygulama manifestinde geliştiricinin konum bilgisini Bluetooth'tan almadığını belirten bir beyan yoksa:

    Cihaz uygulamaları BluetoothAdapter.isLeAudioSupported() API'si için true döndürürse:

    • [C-7-1] Tek noktaya yayın istemcisi desteklenmelidir.

    • [C-7-2] 2M PHY desteklenmelidir.

    • [C-7-3] LE genişletilmiş reklamcılığı DESTEKLEMELİDİR.

    • [C-7-4] Bir CIG'de en az 2 CIS bağlantısını DESTEKLEMELİDİR.

    • [C-7-5] BAP tek yayın istemcisi, CSIP kümesi koordinatörü, MCP sunucusu, VCP denetleyicisi ve CCP sunucusu aynı anda ETKİNLEŞTİRİLMELİDİR.

    • [C-SR-1] HAP tek yayın istemcisinin etkinleştirilmesi ÖNEMLE TAVSİYE EDİLİR.

    Cihaz uygulamaları BluetoothAdapter.isLeAudioBroadcastSourceSupported() API'si için true döndürürse:

    • [C-8-1] Bir BIG'de en az 2 BIS bağlantısı desteklenmelidir.

    • [C-8-2] BAP yayın kaynağı ve BAP yayın yardımcısı AYNI ANDA etkinleştirilmelidir.

    • [C-8-3] LE Periyodik bildirmeyi DESTEKLEMELİDİR.

    Cihaz uygulamaları BluetoothAdapter.isLeAudioBroadcastAssistantSupported() API'si için true döndürürse:

    • [C-9-1] PAST'ı (Periyodik Bildirme Senkronizasyonu Aktarımı) desteklemelidir.

    • [C-9-2] LE Periyodik bildirmeyi DESTEKLEMELİDİR.

    Cihaz uygulamaları FEATURE_BLUETOOTH_LE beyan ederse:

    • [C-10-1] MUST have RSSI measurements be within +/-9 dB for 95% of the measurements at 1 m distance from a reference device transmitting at ADVERTISE_TX_POWER_HIGH in line of sight environment.

    • [C-10-2] Her bir kanaldaki sapmaları azaltmak için Rx/Tx düzeltmeleri içermelidir. Böylece, ölçümlerin% 95'inde 3 kanaldaki ve antenlerdeki (birden fazla kullanılıyorsa) ölçümler birbirine +/-3 dB aralığında olmalıdır.

    Cihaz uygulamaları FEATURE_BLUETOOTH_LE_CHANNEL_SOUNDING beyan ederse:

    • [C-11-1] Donanım özellik bayrağını bildirmelidir android.hardware.bluetooth_le.channel_sounding.

    • [C-11-2] Kümülatif dağılım fonksiyonu ile hesaplandığı üzere, 1 m mesafede 90.yüzdelik dilimde +/- 0,5 m aralığında doğru şekilde raporlanmalıdır.

    Cihaz uygulamaları FEATURE_BLUETOOTH_LE beyan ederse:

    • [C-SR-2] Medyan BLE RSSI'nin ADVERTISE_TX_POWER_HIGH'da iletim yapan bir referans cihazdan 1 m mesafede -60 dBm +/-10 dB olmasını sağlamak için Rx ofsetini ölçmek ve telafi etmek ŞİDDETLE TAVSİYE EDİLİR. Bu durumda cihazlar, ekranları aynı yöne bakacak şekilde "paralel düzlemlerde" yer alır.

    • [C-SR-3] Cihazlar, ekranları aynı yöne bakacak şekilde "paralel düzlemlerde" olacak şekilde yönlendirildiğinde, 1 m mesafede konumlandırılmış ve ADVERTISE_TX_POWER_HIGH iletim yapan bir referans cihazdan tarama yaparken ortalama BLE RSSI'nin -60 dBm +/-10 dB olmasını sağlamak için Tx ofsetini ölçmek ve telafi etmek ŞİDDETLE TAVSİYE EDİLİR.

    Presence Calibration Requirements (Mevcudiyet Kalibrasyonu Koşulları) bölümünde belirtilen ölçüm kurulumu adımlarının uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    7.4.4. Near-Field Communications

    Cihaz uygulamaları:

    • Yakın alan iletişimi (NFC) için bir alıcı-verici ve ilgili donanım İÇERMELİDİR.

    • [C-0-1] android.nfc.NdefMessage ve android.nfc.NdefRecord API'leri, NFC desteği içermese veya android.hardware.nfc özelliğini protokol bağımsız bir veri gösterimi biçimini temsil eden sınıflar olarak tanımlamasa bile uygulamalıdır.

    Cihaz uygulamaları NFC donanımı içeriyorsa ve bu donanımı üçüncü taraf uygulamalara sunmayı planlıyorsa:

    • [C-1-1] android.content.pm.PackageManager.hasSystemFeature() yöntemi ile android.hardware.nfc özelliğini raporlaması ZORUNLUDUR.

    • Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarını okuyup yazabilmelidir:

    • [C-1-2] Aşağıdaki NFC standartları aracılığıyla NFC Forum teknik spesifikasyonu (NFCForum-TS-DigitalProtocol-1.0) tarafından tanımlandığı şekilde NFC Forum okuyucu/yazıcı olarak hareket edebilmelidir:

      • NfcA (ISO14443-3A)
      • NfcB (ISO14443-3B)
      • NfcF (JIS X 6319-4)
      • IsoDep (ISO 14443-4)
      • NFC Forum Etiket Türleri 2, 3, 4, 5 (NFC Forum tarafından tanımlanır)
    • [C-SR-1] Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarının yanı sıra ham verileri okuyup yazabilmesi ŞİDDETLE TAVSİYE EDİLİR. NFC standartlarının ŞİDDETLE TAVSİYE EDİLEN olarak belirtildiğini ancak gelecekteki bir sürümün Uyumluluk Tanımı'nda bunların ZORUNLU olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılamaları önemle tavsiye edilir.

    • [C-1-13] NFC keşif modundayken desteklenen tüm teknolojiler için yoklama YAPILMALIDIR.

    • Cihaz uyanıkken, ekran etkin ve kilit ekranı açıkken NFC keşif modunda OLMALIDIR.

    • Thinfilm NFC Barcode ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.

    Yukarıda belirtilen JIS, ISO ve NFC Forum spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.

    Android, NFC ana kart emülasyonu (HCE) modunu destekler.

    Cihaz uygulamaları, HCE'yi (NfcA ve/veya NfcB için) destekleyen bir NFC denetleyici yonga seti içeriyorsa ve uygulama kimliği (AID) yönlendirmesini destekliyorsa:

    • [C-2-1] android.hardware.nfc.hce özelliği sabiti RAPORLANMALIDIR.

    • [C-2-2] Android SDK'da tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.

    Cihaz uygulamaları, NfcF için HCE'yi destekleyen bir NFC denetleyici yonga seti içeriyorsa ve özelliği üçüncü taraf uygulamaları için uyguluyorsa:

    • [C-3-1] android.hardware.nfc.hcef özelliği sabiti RAPORLANMALIDIR.

    • [C-3-2] Android SDK'da tanımlandığı şekilde NfcF Card Emulation API'lerini uygulamalıdır.

    Cihaz uygulamaları bu bölümde açıklandığı gibi genel NFC desteği içeriyorsa ve okuyucu/yazıcı rolünde MIFARE teknolojilerini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:

    • [C-4-1] İlgili Android API'lerini Android SDK'sında belirtildiği şekilde uygulamalıdır.

    • [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 olarak görünmediğini unutmayın.

    7.4.5. Ağ protokolleri ve API'ler

    7.4.5.1. Minimum Ağ İşlevi

    Cihaz uygulamaları:

    • [C-0-1] Bir veya daha fazla veri ağı biçimi için destek içermelidir. Daha net bir ifadeyle, cihaz uygulamaları en az 200 Kbit/sn veya daha yüksek hızda veri standardını desteklemelidir. Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet ve Bluetooth PAN verilebilir.

    • Ayrıca, fiziksel bir ağ standardı (ör. Ethernet) birincil veri bağlantısı olduğunda 802.11 (kablosuz) gibi en az bir yaygın kablosuz veri standardı için destek içermelidir.

    • Birden fazla veri bağlantısı biçimi uygulayabilir.

    7.4.5.2. IPv6

    Cihaz uygulamaları:

    • [C-0-2] IPv6 ağ yığını içermeli ve java.net.Socket ile java.net.URLConnection gibi yönetilen API'lerin yanı sıra AF_INET6 soketleri gibi yerel API'ler kullanılarak IPv6 iletişimi desteklenmelidir.

    • [C-0-3] Varsayılan olarak IPv6'yı etkinleştirmelidir.

    • IPv6 iletişiminin IPv4 kadar güvenilir olduğundan EMİN OLMALIDIR. Örneğin:

    • [C-0-4] Uyku modunda IPv6 bağlantısını SÜRDÜRMELİDİR.

    • [C-0-5] Hız sınırlaması, en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu ağlarda cihazın IPv6 bağlantısını kaybetmesine NEDEN OLMAMALIDIR.

    • [C-0-6] IPv6 ağına bağlandığında, cihazda yerel olarak herhangi bir adres veya bağlantı noktası çevirisi yapılmadan üçüncü taraf uygulamalarına ağa doğrudan IPv6 bağlantısı SAĞLANMALIDIR. Hem Socket#getLocalAddress veya Socket#getLocalPort gibi yönetilen API'ler hem de getsockname() veya IPV6_PKTINFO gibi NDK API'leri, ağda paket göndermek ve almak için kullanılan ve internet (web) sunucularına kaynak IP ve bağlantı noktası olarak görünen IP adresini ve bağlantı noktasını döndürmelidir.

    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] Çift yığınlı ve yalnızca IPv6 ile çalışmayı kablosuz ağda DESTEKLEMELİDİR.

    Cihaz uygulamaları Ethernet'i destekliyorsa:

    • [C-2-1] Ethernet'te çift yığınlı ve yalnızca IPv6 işlemlerini DESTEKLEMELİDİR.

    Cihaz uygulamaları hücresel veriyi destekliyorsa:

    • [C-3-1] Hücresel ağda IPv6 çalışması (yalnızca IPv6 ve muhtemelen çift yığın) DESTEKLENMELİDİR.

    Cihaz uygulamaları birden fazla ağ türünü (ör. kablosuz ve hücresel veri) destekliyorsa:

    • [C-4-1] Cihaz aynı anda birden fazla ağ türüne bağlıyken HER AĞDA yukarıdaki şartları aynı anda karşılamalıdır.
    7.4.5.3. Giriş Portalları

    Giriş portalı, internet erişimi elde etmek için oturum açmayı gerektiren bir ağı ifade eder.

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

    • [C-1-1] MUST provide a captive portal application to handle the intent ACTION_CAPTIVE_PORTAL_SIGN_IN and display the captive portal login page, by sending that intent, on call to the System API ConnectivityManager#startCaptivePortalApp(Network, Bundle).

    • [C-1-2] Cihaz hücresel/mobil ağ, kablosuz ağ, Ethernet veya Bluetooth dahil olmak üzere herhangi bir ağ türüne bağlandığında giriş portallarını algılamalı ve giriş portalı uygulaması üzerinden oturum açmayı desteklemelidir.

    • [C-1-3] Cihaz, katı Gizli DNS yüksek düzey modu kullanacak şekilde yapılandırıldığında, şifresiz metin DNS kullanılarak giriş portalı'larda günlük kaydı desteklenmelidir.

    • [C-1-4] android.net.LinkProperties.getPrivateDnsServerName ve android.net.LinkProperties.isPrivateDnsActive için SDK belgelerinde belirtildiği şekilde şifrelenmiş DNS KULLANILMALIDIR. Bu, açıkça captive portal ile iletişim kurmayan tüm ağ trafiği için geçerlidir.

    • [C-1-5] Kullanıcı bir captive portal'a giriş yaparken uygulamalar tarafından kullanılan varsayılan ağın (ConnectivityManager.getActiveNetwork, ConnectivityManager.registerDefaultNetworkCallback tarafından döndürülen ve java.net.Socket gibi Java ağ API'leri ile connect() gibi yerel API'ler tarafından varsayılan olarak kullanılan) varsa internet erişimi sağlayan başka bir ağ olduğundan EMİN OLMALIDIR.

    7.4.6. Senkronizasyon Ayarları

    Cihaz uygulamaları:

    • [C-0-1] getMasterSyncAutomatically() yönteminin "true" değerini döndürmesi için ana otomatik senkronizasyon ayarı varsayılan olarak açık OLMALIDIR.

    7.4.7. Veri Tasarrufu

    Cihaz uygulamaları, ölçülü bağlantı içeriyorsa:

    • [C-SR-1] Veri tasarrufu modunun sağlanması ŞİDDETLE TAVSİYE EDİLİR.

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

    • [C-1-1] ConnectivityManager sınıfındaki tüm API'leri SDK belgelerinde açıklandığı şekilde destekLEMELİDİR.

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

    7.4.9. ultra geniş bant

    Cihaz uygulamaları 802.1.15.4 desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamasına sunuyorsa:

    • [C-1-1] android.uwb içinde ilgili Android API'yi uygulamalıdır.

    • [C-1-2] Donanım özellik bayrağını android.hardware.uwb bildirmelidir.

    • [C-1-3] Android uygulamasında tanımlanan ilgili tüm UWB profillerini DESTEKLEMELİDİR.

    • [C-1-4] Kullanıcının UWB radyo açma/kapama durumunu değiştirmesine olanak tanıyan bir kullanıcı arayüzü sağlamalıdır.

    • [C-1-5] UWB radyosunu kullanan uygulamaların UWB_RANGING iznine (NEARBY_DEVICES izin grubu altında) sahip olması ZORUNLUDUR.

    • [C-SR-1] FIRA, CCC ve CSA dahil olmak üzere standart kuruluşlar tarafından tanımlanan ilgili uygunluk ve sertifika testlerini geçmeleri ŞİDDETLE TAVSİYE EDİLİR.

    • [C-1-6] Yansıtıcı olmayan bir odada 1 m mesafedeki görüş hattı ortamındaki ölçümlerin% 95'inde mesafe ölçümlerinin +/-15 cm içinde olduğundan EMİN OLUNMALIDIR.

    • [C-1-7] Referans cihazdan 1 m uzaklıkta yapılan mesafe ölçümlerinin ortancasının [0,75 m, 1,25 m] aralığında olduğundan EMİN OLMALIDIR. Burada gerçek mesafe, DUT'un üst kenarından ölçülür.

    • [C-SR-2] Varlık Kalibrasyon Koşulları'nda belirtilen ölçüm kurulumu adımlarının uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    7.5. Kameralar

    Cihaz uygulamaları en az bir kamera içeriyorsa:

    • [C-1-1] android.hardware.camera.any özellik bayrağını BEYAN ETMELİDİR.

    • [C-1-2] Temel önizleme ve fotoğraf çekme amacıyla kamera açıkken bir uygulamanın, cihazdaki en yüksek çözünürlüklü kamera sensörünün ürettiği görüntülerin boyutuna eşit 3 RGBA_8888 bit eşlemi aynı anda ayırması ZORUNLU olmalıdır.

    • [C-1-3] MediaStore.ACTION_IMAGE_CAPTURE, MediaStore.ACTION_IMAGE_CAPTURE_SECURE, veya MediaStore.ACTION_VIDEO_CAPTURE amaçlarını işleyen önceden yüklenmiş varsayılan kamera uygulamasının, alıcı uygulamanın ACCESS_FINE_LOCATION izni yoksa görüntüyü alıcı uygulamaya göndermeden önce görüntü meta verilerindeki kullanıcı konumunu kaldırması ZORUNLUDUR.

    Android 17'de eklenen şartların başlangıcı

    • [C-1-6] CameraCharacteristics.INFO_DEVICE_TYPE alanını kullanarak her kamera cihazı türünü BUILT_IN, EXTERNAL veya VIRTUAL olarak ETİKETLEMELİDİR. Ayrıca, her kamera çıkışı karesini CaptureResult.INFO_DEVICE_TYPE alanını kullanarak etiketlemelidir.
      CaptureResult.INFO_DEVICE_TYPE öğesinin doğru şekilde etiketlenmesi, özellikle bir kamera kimliğinin dinamik olarak farklı bir kamera kaynağına yeniden eşlendiği durumlarda önemlidir.

    Cihaz uygulamalarında en az bir kamera varsa ve önceden yüklenmiş kamera uygulaması MediaStore.ACTION_MOTION_PHOTO_CAPTURE veya MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE amaçlarını işliyorsa:

    • [C-1-4] Bu amaçları işlerken önceden yüklenmiş kamera uygulamasının, ACCESS_FINE_LOCATION izni olmayan alıcı uygulamalara göndermeden önce resim meta verilerindeki kullanıcı konumunu kaldırması ZORUNLUDUR.

    • [C-1-5] Döndürülen hareketli fotoğrafın, Hareketli Fotoğraf biçimi 1.0 spesifikasyonunu kullandığından EMİN OLMALIDIR.

    Cihaz uygulamaları HDR 10 bit çıkış özelliğini destekliyorsa:

    • [C-2-1] 10 bit çıkışı destekleyen her kamera cihazı için en azından HLG HDR profilini desteklemelidir.

    • [C-2-2] Birincil arka veya birincil ön kamera için 10 bit çıkış desteklenmelidir.

    • [C-SR-1] Birincil kameraların her ikisi için de 10 bit çıkış desteklemesi KESİNLİKLE ÖNERİLİR.

    • [C-2-3] Bir mantıksal kameranın tüm BACKWARD_COMPATIBLE özellikli fiziksel alt kameraları ve mantıksal kameranın kendisi için aynı HDR profillerini desteklemelidir.

    android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO API'sini uygulayan 10 bit HDR'yi destekleyen mantıksal kamera cihazları:

    • [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 uzak tarafındaki sahnelerin fotoğrafını çeken, dünyaya dönük bir kameradır. Geleneksel kameralar gibi çalışır. Elde taşınan cihazlarda, ekranın karşısındaki tarafta bulunur.

    Cihaz uygulamaları:

    • Arka kamera İÇERMELİDİR.

    Cihaz uygulamaları en az bir arka kamera içeriyorsa:

    • [C-1-1] Özellik bayrağını android.hardware.camera ve android.hardware.camera.any BİLDİRMELİDİR.

    Android 17'de kaldırılan şartların başlangıcı

    • [C-1-2] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.

    • Kamera sürücüsünde (uygulama yazılımı için şeffaf) donanım veya yazılım otomatik odaklama özelliği OLMALIDIR.

    • Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanımı OLABİLİR.

    • Flaş İÇEREBİLİR.

    Kamerada flaş varsa:

    • [C-2-1] Bir android.hardware.Camera.PreviewCallback örneği, bir kamera önizleme yüzeyine kaydedilmişken uygulama, bir Camera.Parameters nesnesinin FLASH_MODE_AUTO veya FLASH_MODE_ON özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece flaş lambası YAKILMAMALIDIR. Bu kısıtlamanın cihazın yerleşik sistem kamera uygulaması için değil, yalnızca Camera.PreviewCallback kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.

    7.5.2. Ön Kamera

    Ön kamera, genellikle kullanıcıyı görüntülemek için kullanılan ve kullanıcıya dönük bir kameradır. Örneğin, video konferans ve benzeri uygulamalarda kullanılır. Elde taşınabilir cihazlarda, ekranla aynı tarafta bulunan bir kameradır.

    Cihaz uygulamaları:

    • Ön kamera içerebilir.

    Cihaz uygulamaları en az bir ön kameraya sahipse:

    • [C-1-1] Özellik bayrağını android.hardware.camera.any ve android.hardware.camera.front BİLDİRMELİDİR.

    • [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 kabul edecek şekilde YAPILANDIRILMAMALIDIR.

    • [C-1-4] Geçerli uygulama, android.hardware.Camera.setDisplayOrientation() yöntemi çağrısı aracılığıyla Kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesi, uygulama tarafından belirtilen yöne göre yatay olarak yansıtılmalıdır. Buna karşılık, mevcut uygulama android.hardware.Camera.setDisplayOrientation() yöntemi çağrısıyla Kamera ekranının döndürülmesini açıkça istemediğinde önizleme, cihazın varsayılan yatay ekseni boyunca YANSITILMALIDIR.

    • [C-1-5] Uygulama geri çağırmalarına döndürülen veya medya depolama alanına kaydedilen son yakalanan hareketsiz görüntü ya da video akışları yansıtılMAMALIDIR.

    • [C-1-6] MUST mirror the image displayed by the postview in the same manner as the camera preview image stream.

    • Bölüm 7.5.1'de açıklandığı gibi, arka kameralarda kullanılabilen özellikler (ör. otomatik odaklama, flaş vb.) İÇEREBİLİR.

    Cihaz uygulamaları kullanıcı tarafından döndürülebiliyorsa (ör. ivmeölçer aracılığıyla otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak):

    • [C-2-1] Kamera önizlemesi, cihazın mevcut yönüne göre yatay olarak yansıtılmalıdır.

    7.5.3. Harici Kamera

    Harici kamera, cihaza fiziksel olarak bağlanabilen veya cihazdan ayrılabilen ve herhangi bir yöne bakabilen bir kameradır (ör. USB kameralar).

    Cihaz uygulamaları:

    • Her zaman bağlı olması gerekmeyen harici bir kamera için destek içerebilir.

    Cihaz uygulamaları harici kamera desteği içeriyorsa:

    • [C-1-1] Platform özellik işaretini android.hardware.camera.external ve android.hardware camera.any BİLDİRMELİDİR.

    • [C-1-2] Harici kamera USB ana bağlantı noktası üzerinden bağlanıyorsa USB Video Class'ı (UVC 1.0 veya üzeri) DESTEKLEMELİDİR.

    • [C-1-3] Bağlı fiziksel bir harici kamera cihazıyla kamera CTS testlerini GEÇMELİDİR. Kamera CTS testiyle ilgili ayrıntıları source.android.com adresinde bulabilirsiniz.

    • Yüksek kaliteli kodlanmamış akışların (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırmalarını DESTEKLEMELİDİR.

    • MAY, birden fazla kamerayı destekleyebilir.

    • Kameraya dayalı video kodlamayı DESTEKLEYEBİLİR.

    Kameraya dayalı video kodlama destekleniyorsa:

    • [C-2-1] Cihaz uygulamasında eşzamanlı bir kodlanmamış / MJPEG akışına (QVGA veya daha yüksek çözünürlük) erişilebilmelidir.

    7.5.4. Kamera API'sinin Davranışı

    Android, kameraya erişmek için iki API paketi içerir. Daha yeni olan android.hardware.camera2 API, uygulamaya daha düşük düzeyde kamera kontrolü sunar. Bu kontrol; verimli sıfır kopyalı seri çekim/akış akışları ve pozlama, kazanç, beyaz dengesi kazançları, renk dönüştürme, gürültü azaltma, keskinleştirme gibi özelliklerin kare başına kontrolünü içerir.

    Daha eski API paketi android.hardware.Camera, Android 5.0'da desteği sonlandırılmış olarak işaretlenir ancak uygulamaların kullanmaya devam edebilmesi gerekir. Android cihaz uygulamaları, bu bölümde ve Android SDK'da açıklandığı şekilde API'nin sürekli olarak desteklenmesini SAĞLAMALIDIR.

    Kullanımdan kaldırılan android.hardware.Camera sınıfı ile daha yeni olan android.hardware.camera2 paketi arasında ortak olan tüm özellikler, her iki API'de de eşdeğer performans ve kaliteye sahip OLMALIDIR. Örneğin, eşdeğer ayarlarda otomatik odaklama hızı ve doğruluğu aynı olmalı, çekilen görüntülerin kalitesi de aynı olmalıdır. İki API'nin farklı anlamsal yapısına bağlı özelliklerin eşleşen hıza veya kaliteye sahip olması gerekmez ancak mümkün olduğunca yakın bir şekilde eşleşmelidir.

    Cihaz uygulamaları, mevcut tüm kameralar için kamerayla ilgili API'lerde aşağıdaki davranışları uygulamalıdır. Cihaz uygulamaları:

    • [C-0-1] Bir uygulama hiçbir zaman android.hardware.Camera.Parameters.setPreviewFormat(int) işlevini çağırmadığında uygulama geri çağırmalarına sağlanan önizleme verileri için android.hardware.PixelFormat.YCbCr_420_SP kullanılmalıdır.

    • [C-0-2] Bir uygulama android.hardware.Camera.PreviewCallback örneği kaydettiğinde, sistem onPreviewFrame() yöntemini çağırdığında ve önizleme biçimi YCbCr_420_SP olduğunda, onPreviewFrame() yöntemine aktarılan byte[] içindeki veriler NV21 kodlama biçiminde OLMALIDIR. Yani NV21, varsayılan olmalıdır.

    • [C-0-3] android.hardware.Camera için hem ön hem de arka kameranın kamera önizlemelerinde YV12 biçimi (android.graphics.ImageFormat.YV12 sabitiyle gösterildiği gibi) DESTEKLENMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüştürmeyi DESTEKLEMELİDİR.)

    • [C-0-4] android.request.availableCapabilities içinde REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE capability nesnesinin bildirimini yapan android.hardware.camera2 Cihazlar için android.media.ImageReader API aracılığıyla çıkış olarak android.hardware.ImageFormat.YUV_420_888 ve android.hardware.ImageFormat.JPEG biçimlerini DESTEKLEMELİDİR.

    • [C-0-5] Cihazda donanım otomatik odaklama veya başka özellikler olup olmadığına bakılmaksızın, Android SDK dokümanlarında yer alan Camera API'nin tamamını uygulamaya devam ETMELİ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 (bu durum, otomatik odaklama özelliği olmayan bir kamerayla alakalı olmasa bile). Bunun ön kameralar için de geçerli olduğunu unutmayın. Örneğin, çoğu ön kamera otomatik odaklamayı desteklemese de API geri çağırmaları yine de açıklandığı gibi "taklit edilmelidir".

    • [C-0-6] android.hardware.Camera.Parameters sınıfında ve android.hardware.camera2.CaptureRequest sınıfında sabit olarak tanımlanan her parametre adını TANIMALI ve KABUL ETMELİDİR. Aksine, cihaz uygulamaları android.hardware.Camera.setParameters() yöntemine iletilen ve android.hardware.Camera.Parameters üzerinde sabit olarak belgelenenler dışındaki dize sabitlerini kabul etmemeli veya tanımamalıdır. Yani, donanım izin veriyorsa cihaz uygulamaları tüm standart kamera parametrelerini DESTEKLEMELİDİR ve özel kamera parametre 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ı, Camera.SCENE_MODE_HDR kamera parametresini DESTEKLEMELİDİR.

    • [C-0-7] Android SDK'da açıklandığı şekilde android.info.supportedHardwareLevel özelliğiyle uygun destek düzeyini BİLDİRMELİ ve uygun çerçeve özellik işaretlerini BİLDİRMELİDİR.

    • [C-0-8] Ayrıca android.hardware.camera2 özelliğini kullanarak android.request.availableCapabilities özelliği aracılığıyla kendi kamera özelliklerini beyan ETMELİ ve uygun özellik işaretlerini beyan ETMELİDİR. Ekli kamera cihazlarından herhangi biri özelliği destekliyorsa özellik işareti tanımlanmalıdır.

    • [C-0-9] Kamera tarafından yeni bir fotoğraf çekildiğinde ve fotoğrafın girişi medya deposuna eklendiğinde Camera.ACTION_NEW_PICTURE amacını yayınLAMALIDIR.

    • [C-0-10] Kamera tarafından yeni bir video kaydedildiğinde ve resim girişi medya deposuna eklendiğinde Camera.ACTION_NEW_VIDEO amacını yayınLAMALIDIR.

    • [C-0-11] Tüm kameralar, kullanımdan kaldırılan android.hardware.Camera API'si üzerinden erişilebilir olmalı ve android.hardware.camera2 API'si üzerinden de erişilebilir olmalıdır.

    • [C-0-12] android.hardware.camera2 veya android.hardware.Camera API'leri için yüz geometrisini, yüz cilt tonunu veya yüz cildini pürüzsüzleştirme dahil ancak bunlarla sınırlı olmamak üzere yüz görünümünün DEĞİŞTİRİLMEDİĞİNDEN emin OLUNMALIDIR.

    • [C-SR-1] Yakın mesafede bulunan ve aynı yöne bakan birden fazla RGB kameraya sahip cihazlarda, bu yöne bakan tüm RGB kameraları fiziksel alt cihazlar olarak listeleyen CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA capability nesnesini destekleyen mantıksal bir kamera cihazının kullanılması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, üçüncü taraf uygulamalarına özel bir kamera API'si sağlıyorsa:

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları, birincil ön ve birincil arka kamera için üçüncü taraf kamera ardışık düzenini yerleşik kamera ardışık düzeniyle eşit olacak şekilde ayarlarsa:

    • [C-2-1] ro.camera.default_app_social_media_parity_enabled sistem özelliği TANIMLANMALIDIR.

    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 aynı hizada olacak şekilde yerleştirilmelidir. Yani cihaz yatay yönde tutulduğunda kameralar, görüntüleri yatay yönde çekmelidir. Bu, cihazın doğal yönünden bağımsız olarak geçerlidir. Yani, yatay yönü birincil olan cihazların yanı sıra dikey yönü birincil olan cihazlar için de geçerlidir.

      Aşağıdaki ölçütlerden herhangi birini karşılayan cihazlar bu koşuldan muaftır:

      • Cihazda katlanabilir veya menteşeli ekranlar gibi değişken geometrili ekranlar bulunur VE cihazın katlama veya menteşe durumu değiştiğinde cihaz, dikey öncelikli ile yatay öncelikli (veya tam tersi) yönler arasında geçiş yapar.

      • Kullanıcı tarafından döndürülemeyen cihaz uygulamaları (ör. otomotiv cihazları).

    7.6. Bellek ve Depolama

    7.6.1. Minimum Bellek ve Depolama Alanı

    Cihaz uygulamaları:

    • [C-0-1] Uygulamaların veri dosyalarını indirmek için KULLANABİLECEĞİ bir İndirme Yöneticisi İÇERMELİDİR ve en az 100 MB boyutundaki dosyaları varsayılan "önbellek" konumuna indirebilmelidir.

    7.6.2. Uygulama Ortak Depolama Alanı

    Cihaz uygulamaları:

    • [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı sunulmalıdır. Bu alan genellikle "paylaşılan harici depolama alanı", "uygulama tarafından paylaşılan depolama alanı" veya Linux yolu "/sdcard" olarak da adlandırılır.
    • [C-0-2] Depolama biriminin dahili depolama bileşeninde mi yoksa çıkarılabilir bir depolama ortamında mı (ör. Secure Digital kart yuvası) uygulandığına bakılmaksızın, varsayılan olarak bağlı paylaşılan depolama birimiyle yapılandırılmalıdır.
    • [C-0-3] Uygulama tarafından paylaşılan depolama alanı doğrudan Linux yoluna sdcard bağlanmalı veya sdcard konumundan gerçek bağlama noktasına bir Linux sembolik bağlantısı içermelidir.
    • [C-0-4] Aşağıdaki durum hariç olmak üzere, API düzeyi 29 veya üzeri sürümleri hedefleyen tüm uygulamalarda varsayılan olarak kapsamlı depolama etkinleştirilmelidir:
      • Uygulama, manifest dosyasında android:requestLegacyExternalStorage="true" istediğinde.
    • [C-0-5] Arayan uygulamanın ACCESS_MEDIA_LOCATION izni olduğu durumlar hariç, MediaStore üzerinden erişilen medya dosyalarında depolanan GPS Exif etiketleri gibi konum meta verileri REDAKTE EDİLMELİDİR.

    Cihaz uygulamaları, yukarıdaki koşulları aşağıdaki yöntemlerden birini kullanarak karşılayabilir:

    • Kullanıcı tarafından erişilebilen çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası).
    • Android Açık Kaynak Projesi'nde (AOSP) uygulanan dahili (çıkarılamayan) depolama alanının bir kısmı.

    Cihaz uygulamaları yukarıdaki koşulları karşılamak için çıkarılabilir depolama alanı kullanıyorsa:

    • [C-1-1] Yuvaya depolama ortamı takılmadığında kullanıcıyı uyaran bir toast veya pop-up kullanıcı arayüzü uygulamalıdır.
    • [C-1-2] FAT biçimli bir depolama ortamı (ör. SD kart) İÇERMELİ veya satın alma sırasında kutuda ve diğer materyallerde depolama ortamının ayrı olarak satın alınması gerektiği GÖSTERİLMELİDİR.

    Cihaz uygulamaları, yukarıdaki şartları karşılamak için çıkarılamayan depolama alanının bir kısmını kullanıyorsa:

    • Dahili uygulama için 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ği olan bir USB bağlantı noktası varsa:

    • [C-3-1] Uygulama paylaşılan depolama alanındaki verilere ana bilgisayardan erişmek için bir mekanizma SAĞLANMALIDIR.
    • Android'in medya tarayıcı hizmeti ve android.provider.MediaStore aracılığıyla her iki depolama yolundaki içerikleri şeffaf bir şekilde kullanıma sunMALIDIR.
    • USB yığın depolama kullanılabilir ancak bu şartı karşılamak için Medya Aktarım Protokolü KULLANILMALIDIR.

    Cihaz uygulamalarında USB çevre birimi modu olan bir USB bağlantı noktası varsa ve Medya Aktarım Protokolü destekleniyorsa:

    • Referans Android MTP ana makinesi Android Dosya Aktarımı ile uyumlu OLMALIDIR.
    • 0x00 USB cihaz sınıfı bildirmelidir.
    • "MTP" USB arayüzü adını bildirmelidir.

    7.6.3. Dahili hale getirilebilir depolama alanı

    Cihazın, televizyonun aksine mobil olması bekleniyorsa cihaz uygulamaları:

    • [C-SR-1] Dahili hale getirilebilir depolama alanının uzun vadeli ve sabit bir konumda uygulanması ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, yanlışlıkla bağlantısının kesilmesi veri kaybına/bozulmasına neden olabilir.

    Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya başka bir koruyucu kapak gibi uzun süreli sabit bir konumdaysa cihaz uygulamaları:

    7.7. USB

    Android 17'de eklenen şartların başlangıcı

    Tanımlar

    • USB ana makine modu, cihaz uygulamasının USB ana makinesi olarak davrandığı, veri yolunda güç sağladığı ve çevre birimleriyle iletişim kurduğu durumdur.

    • USB cihaz modu (çevre birimi modu olarak da bilinir), bir cihaz uygulaması USB çevre birimi gibi davrandığında, yukarı akış bağlantı noktası üzerinden bir ana makineye bağlandığında ve ana makineden gelen isteklere yanıt verdiğinde gerçekleşir.

    • USB bağlantı noktası, fiziksel bir USB prizi veya standart olmayan bir arayüz (ör. pogo pinler) aracılığıyla USB bağlantısı sağlayan bir mekanizmadır.

    Cihaz uygulamalarında USB bağlantı noktası varsa:

    • USB cihaz modu desteklenmelidir.

    • USB ana makine modu desteklenmelidir.

    • USB üzerinden veri sinyali devre dışı bırakılmasını DESTEKLEMELİDİR.

    7.7.1. USB cihaz modu

    Android 17'de şartların başlangıcı değişti

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

    • [C-1-1] Bağlantı noktası, standart bir Type-A veya Type-C USB bağlantı noktasına sahip bir USB ana makinesine bağlanabilmelidir.

    • [C-1-2] iSerialNumber değerini, android.os.Build.SERIAL üzerinden USB standardı cihaz tanımlayıcısında DOĞRU şekilde bildirmelidir.

    • [C-1-3] Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını ALGILAMALI ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri ALGILAMALIDIR.

    • [C-SR-1] Bağlantı noktası, micro-B, micro-AB veya Type-C USB form faktörünü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-2] Bağlantı noktası, cihazın alt kısmında (doğal yönlendirmeye göre) yer almalıdır veya tüm uygulamalar (ana ekran dahil) için yazılım ekran döndürme özelliği etkinleştirilmelidir. Böylece, cihaz bağlantı noktası altta olacak şekilde yönlendirildiğinde ekran doğru şekilde çizilir. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-3] USB Pil Şarjı spesifikasyonu, revizyon 1.2'de belirtildiği gibi HS chirp ve trafik sırasında 1,5 A akım çekme desteği uygulamalıdır. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmeleri için bu şartları karşılamaları ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-4] Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya alıcı/kaynak rollerini değiştiren tescilli şarj yöntemlerinin desteklenmemesi ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, standart USB Güç Dağıtımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunları yaşanabilir. Bu durum "ŞİDDETLE TAVSİYE EDİLİR" olarak belirtilse de gelecekteki Android sürümlerinde tüm Type-C cihazların standart Type-C şarj cihazlarıyla tam birlikte çalışabilirliği desteklemesini ZORUNLU kılabiliriz.

    • [C-SR-5] USB Type-C ve USB ana makine modunu desteklediklerinde veri ve güç rolü değiştirme için Güç Dağıtımı'nı desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.

    • Yüksek voltajlı şarj için Güç Aktarımı'nı ve ekran çıkışı gibi Alternatif Modlar'ı DESTEKLEMELİDİR.

    • Android SDK belgelerinde belirtildiği gibi Android Open Accessory (AOA) API'sini ve spesifikasyonunu uygulamalıdır.

    Cihaz uygulamaları bir USB bağlantı noktası içeriyorsa ve AOA şartnamesini uyguluyorsa:

    • [C-2-1] Donanım özelliği android.hardware.usb.accessory için destek beyan EDİLMELİDİR.
    • [C-2-2] USB yığın depolama sınıfı, USB yığın depolama biriminin arayüz açıklaması iInterface dizesinin sonunda "android" dizesini içermelidir.

    7.7.2. USB ana makine modu

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

    • [C-1-1] Android SDK'da belgelendiği şekilde Android USB ana makine API'si uygulanmalı ve android.hardware.usb.host donanım özelliği için destek beyan edilmelidir.
    • [C-1-2] Standart USB çevre birimlerinin bağlanması için destek uygulaması ZORUNLUDUR. Aşağıdakilerden BİRİNE sahip olmaları GEREKİR:
      • Cihaz üzerinde USB Type-C bağlantı noktası bulunmalı veya cihaz üzerinde bulunan tescilli bağlantı noktasını standart USB Type-C bağlantı noktasına dönüştüren kablolarla birlikte gönderilmelidir (USB Type-C cihaz).
      • Cihazda USB Type-A bağlantı noktası veya cihazdaki tescilli bağlantı noktasını standart USB Type-A bağlantı noktasına dönüştüren kablolar.
      • Cihaz üzerinde bir mikro-AB USB bağlantı noktası. Bu bağlantı noktası, standart bir USB Type-A bağlantı noktasına uyarlanmış bir kabloyla birlikte GÖNDERİLMELİDİR.
    • [C-1-3] USB Type-A veya micro-AB bağlantı noktalarını USB Type-C bağlantı noktasına (yuva) dönüştüren bir adaptörle birlikte gönderilmemelidir.
    • [C-SR-1] Android SDK belgelerinde belirtildiği gibi USB ses sınıfının uygulanması ŞİDDETLE TAVSİYE EDİLİR.
    • Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini DESTEKLEMELİDİR; USB Type-C konnektörleri için USB Type-C Kablo ve Konnektör Spesifikasyonu Revizyon 1.2'nin Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1,5 A kaynak akımı reklamı yapmalı veya Micro-AB konnektörleri için USB Pil Şarjı Spesifikasyonları, Revizyon 1.2'de belirtildiği gibi Şarj Edilen Aşağı Akım Bağlantı Noktası (CDP) çıkış akımı aralığını kullanmalıdır.
    • USB Type-C standartlarını uygulamalı ve desteklemelidir.

    Cihaz uygulamaları, ana makine modunu ve USB ses sınıfını destekleyen bir USB bağlantı noktası içeriyorsa:

    • [C-2-1] USB HID sınıfını desteklemelidir.
    • [C-2-2] USB HID Kullanım Tabloları ve Sesli Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının KeyEvent sabitleriyle eşlenmesini ve algılanmasını AŞAĞIDAKİ GİBİ desteklemelidir:
      • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CD): KEYCODE_MEDIA_PLAY_PAUSE
      • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0E9): KEYCODE_VOLUME_UP
      • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0EA): KEYCODE_VOLUME_DOWN
      • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CF): KEYCODE_VOICE_ASSIST

    Cihaz uygulamaları, ana makine modunu ve Depolama Erişim Çerçevesi'ni (SAF) destekleyen bir USB bağlantı noktası içeriyorsa:

    • [C-3-1] Uzaktan bağlanan tüm MTP (Medya Aktarım Protokolü) cihazlarını TANIMALI ve içeriklerine ACTION_GET_CONTENT, ACTION_OPEN_DOCUMENT ve ACTION_CREATE_DOCUMENT amaçları üzerinden erişilebilmesini SAĞLAMALIDIR.

    Cihaz uygulamaları, ana makine modunu ve USB Type-C'yi destekleyen bir USB bağlantı noktası içeriyorsa:

    • [C-4-1] USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rol Gücü (DRP) işlevini uygulamalıdır. DRP bağlantı noktaları için, 3,5 mm ses jakı içeren cihazlarda USB güç alıcı algılama (ana makine modu) varsayılan olarak KAPALI olabilir ancak kullanıcının bunu etkinleştirmesi MÜMKÜN OLMALIDIR.
    • [C-SR-2] DisplayPort'u desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
      • USB SuperSpeed veri hızlarını DESTEKLEMELİDİR.
      • Veri ve güç rolü değiştirme için Güç Aktarımı'nı desteklemesi ÖNEMLE TAVSİYE EDİLİR.
    • [C-SR-3] USB Type-C Cable and Connector Specification Revision 1.2'nin Ek A'sında açıklandığı gibi Ses Adaptörü Aksesuar Modu'nu desteklememeleri ŞİDDETLE TAVSİYE EDİLİR.
    • Cihazın form faktörüne en uygun olan Try.* modeli UYGULAMALIDIR. Örneğin, bir el cihazı Try.SNK modelini uygulamalıdır.

    7.7.3. USB Güç Aktarımı

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları USB Type-C bağlantı noktası içeriyorsa:

    • [C-SR-1] çekirdeğin USB Type-C Konnektör Sınıfı'nın uygulanması ve USB Type-C bağlantılarını, güç ve veri rollerini açıklayan gerekli düğümlerin uygulanması ŞİDDETLE TAVSİYE EDİLİR. Uygulama ayrıntıları için Android USB Type-C Dokümanı'na bakın.

    Cihaz uygulamaları USB Type-C bağlantı noktası içeriyorsa ve güç aktarımını destekliyorsa:

    • [C-SR-2] USB Güç Dağıtımı'nı açıklayan tüm düğümlerin uygulanması ÖNEMLE TAVSİYE EDİLİR. Uygulama ayrıntıları için Android USB PD Belgeleri'ne bakın.

    Cihaz uygulamaları USB Type-C bağlantı noktası içeriyorsa ve alternatif modları destekliyorsa:

    • [C-SR-3] Çekirdeğin USB Type-C Bağlantı Noktası Sınıfı'nın Alternatif Modları ve kimlikle ilgili özelliklerinin uygulanması ŞİDDETLE TAVSİYE EDİLİR. Uygulama ayrıntıları için Android USB Type-C Dokümanı'na bakın.

    Cihaz uygulamaları USB Type-C bağlantı noktası içeriyorsa ve Thunderbolt 3 alternatif modunu destekliyorsa:

    • [C-SR-4] Type-C konnektör sınıfı aracılığıyla mevcut alternatif modu geçersiz kılma özelliğinin uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    7.8. Ses

    7.8.1. Mikrofon

    Cihaz uygulamaları mikrofon içeriyorsa:

    • [C-1-1] android.hardware.microphone özelliği sabitini bildirmelidir.
    • [C-1-2] 5.4 bölümündeki ses kaydı koşullarını KARŞILAMALIDIR.
    • [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
    • [C-SR-1] Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın kayıt desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamalarında mikrofon yoksa:

    • [C-2-1] android.hardware.microphone özelliği sabiti RAPORLANMAMALIDIR.
    • [C-2-2] 7. bölüm uyarınca ses kaydı API'si en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.

    7.8.2. Ses Çıkışı

    Cihaz uygulamaları, USB ses sınıfını kullanan USB ana makine modu bağlantı noktası veya 4 iletkenli 3,5 mm ses jakı gibi bir ses çıkışı çevre birimi için hoparlör ya da ses/multimedya çıkışı bağlantı noktası içeriyorsa:

    • [C-1-1] android.hardware.audio.output özelliği sabitini bildirmelidir.
    • [C-1-2] 5.5 bölümündeki ses çalma koşullarını KARŞILAMALIDIR.
    • [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
    • [C-SR-1] 7.8.3 bölümünde açıklandığı gibi, ultrasona yakın oynatmayı desteklemeniz ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamalarında hoparlör veya ses çıkışı bağlantı noktası yoksa:

    • [C-2-1] android.hardware.audio.output özelliği BİLDİRİLMEMELİDİR.
    • [C-2-2] Ses çıkışıyla ilgili API'ler en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.

    Bu bölümün amaçları doğrultusunda "çı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 bir fiziksel arayüzdür. Bluetooth, Wi-Fi veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" olarak kabul edilmez.

    7.8.2.1. Analog Ses Bağlantı Noktaları

    Android ekosisteminde 3,5 mm ses fişi kullanan mikrofonlu kulaklıklar ve diğer ses aksesuarlarıyla uyumlu olması için cihaz uygulamaları bir veya daha fazla analog ses bağlantı noktası içeriyorsa:

    • [C-SR-1] Ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:

    • [C-1-1] Stereo kulaklıklarda ve mikrofonlu stereo kulaklıklarda ses çalmayı DESTEKLEMELİDİR.
    • [C-1-2] CTIA pin çıkışı sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR.
    • [C-1-3] MUST support the detection and mapping to the keycodes for the following 3 ranges of equivalent impedance between the microphone and ground conductors on the audio plug:
      • 70 ohm veya daha az: KEYCODE_HEADSETHOOK
      • 210-290 ohm: KEYCODE_VOLUME_UP
      • 360-680 ohm: KEYCODE_VOLUME_DOWN
    • [C-1-4] Fiş takıldığında ACTION_HEADSET_PLUG tetiklenmelidir ancak yalnızca fişteki tüm kontaklar jak üzerindeki ilgili segmentlere temas ettikten sonra tetiklenmelidir.
    • [C-1-5] 32 ohm'luk bir hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
    • [C-1-6] 1,8 V ~ 2,9 V arasında bir mikrofon önyargı voltajına SAHİP OLMALIDIR.
    • [C-1-7] Ses fişindeki mikrofon ve toprak iletkenleri arasındaki aşağıdaki aralıkta eşdeğer empedans için tuş kodunu algılamalı ve tuş koduyla eşlemelidir:
      • 110-180 ohm: KEYCODE_VOICE_ASSIST
    • [C-SR-2] OMTP pin çıkışı sırasına sahip ses fişlerini desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
    • [C-SR-3] Mikrofonlu stereo kulaklıklardan ses kaydını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamalarında 4 iletkenli 3,5 mm ses jakı varsa, mikrofon destekleniyorsa ve android.intent.action.HEADSET_PLUG, mikrofon için ek değer 1 olarak ayarlanmış şekilde yayınlanıyorsa:

    • [C-2-1] Takılı ses aksesuarındaki mikrofonun algılanması DESTEKLENMELİDİR.
    7.8.2.2. Dijital Ses Bağlantı Noktaları

    Cihaza özel gereksinimler için Bölüm 2.2.1'e bakın.

    7.8.3. Near-Ultrasound

    Yakın ultrasonik ses, 18,5 kHz ile 20 kHz arasındaki banttır.

    Cihaz uygulamaları:

    • AudioManager.getProperty API'si aracılığıyla, yakın ultrason ses özelliği desteğini aşağıdaki şekilde doğru olarak bildirmelidir:

    PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND değeri "true" ise VOICE_RECOGNITION ve UNPROCESSED ses kaynakları aşağıdaki koşulları KARŞILAMALIDIR:

    • [C-1-1] Mikrofonun 18,5 kHz - 20 kHz bandındaki ortalama güç yanıtı, 2 kHz'deki yanıttan en fazla 15 dB düşük OLMALIDIR.
    • [C-1-2] 18,5 kHz - 20 kHz aralığında, 19 kHz tonunda -26 dBFS'lik bir sinyal için mikrofonun ağırlıksız 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 aralığındaki ortalama yanıtı, 2 kHz'deki yanıttan en fazla 40 dB daha düşük OLMALIDIR.

    7.8.4. Sinyal Bütünlüğü

    Cihaz uygulamaları:

    • Yol başına bir dakikalık test sırasında ölçülen sıfır aksaklık olarak tanımlandığı üzere, elde taşınabilir cihazlarda hem giriş hem de çıkış akışları için aksaklık içermeyen bir ses sinyali yolu SAĞLAMALIDIR. OboeTester "Automated Glitch Test" (Otomatik Arıza Testi) ile test edin.

    Test için 3,5 mm jakta doğrudan kullanılan ve/veya USB-C - 3, 5 mm adaptörle birlikte kullanılan bir ses geri döngü donanım anahtarı gerekir. Tüm ses çıkışı bağlantı noktaları TEST EDİLMELİDİR.

    OboeTester şu anda AAudio yollarını desteklemektedir. Bu nedenle, aşağıdaki kombinasyonlar AAudio kullanılarak aksaklıklar açısından TEST EDİLMELİDİR:

    Performans Modu Paylaşım Çıkış Örnekleme Hızı In Chans Out Chans
    LOW_LATENCY ÖZEL BELİRTİLMEMİŞ 1 2
    LOW_LATENCY ÖZEL BELİRTİLMEMİŞ 2 1
    LOW_LATENCY PAYLAŞILDI BELİRTİLMEMİŞ 1 2
    LOW_LATENCY PAYLAŞILDI BELİRTİLMEMİŞ 2 1
    YOK PAYLAŞILDI 48000 1 2
    YOK PAYLAŞILDI 48000 2 1
    YOK PAYLAŞILDI 44100 1 2
    YOK PAYLAŞILDI 44100 2 1
    YOK PAYLAŞILDI 16000 1 2
    YOK PAYLAŞILDI 16000 2 1

    Güvenilir bir akış, 2.000 Hz sinüs için sinyal-gürültü oranı (SNR) ve toplam harmonik bozulma (THD) açısından aşağıdaki ölçütleri karşılamalıdır.

    Transdüser THD SNR
    birincil yerleşik hoparlör, harici referans mikrofon kullanılarak ölçülür < %3,0 >= 50 dB
    Harici referans hoparlör kullanılarak ölçülen birincil dahili mikrofon < %3,0 >= 50 dB
    Döngü adaptörü kullanılarak test edilmiş yerleşik analog 3, 5 mm jaklar <%1 >= 60 dB
    Telefonla birlikte verilen USB adaptörleri, geri döngü adaptörü kullanılarak test edilmiştir. < %1,0 >= 60 dB

    7.9. Sanal Gerçeklik

    Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "sanal gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamaları, bu bölümde ayrıntılı olarak açıklandığı gibi bu API'leri ve davranışları doğru şekilde uygulamalıdır.

    7.9.1. Sanal Gerçeklik Modu

    Android, VR Modu'nu destekler. Bu özellik, bildirimlerin stereoskopik olarak oluşturulmasını sağlar ve bir VR uygulaması kullanıcı odaklıyken tek gözlü sistem kullanıcı arayüzü bileşenlerini devre dışı bırakır.

    7.9.2. Sanal Gerçeklik Modu - Yüksek Performans

    Cihaz uygulamaları VR modunu destekliyorsa:

    • [C-1-1] En az 2 fiziksel çekirdeğe SAHİP OLMALIDIR.
    • [C-1-2] android.hardware.vr.high_performance özelliğini BİLDİRMELİDİR.
    • [C-1-3] Sürekli performans modu desteklenmelidir.
    • [C-1-4] OpenGL ES 3.2'yi DESTEKLEMELİDİR.
    • [C-1-5] android.hardware.vulkan.level 0 desteklenmelidir.
    • android.hardware.vulkan.level 1 veya daha yeni bir sürüm desteklenmelidir.
    • [C-1-6] EGL_KHR_mutable_render_buffer, EGL_ANDROID_front_buffer_auto_refresh, EGL_ANDROID_get_native_client_buffer, EGL_KHR_fence_sync, EGL_KHR_wait_sync, EGL_IMG_context_priority, EGL_EXT_protected_content, EGL_EXT_image_gl_colorspace'i uygulamalı ve uzantıları, kullanılabilir EGL uzantıları listesinde göstermelidir.
    • [C-1-8] MUST implement GL_EXT_multisampled_render_to_texture2, GL_OVR_multiview, GL_OVR_multiview2, GL_EXT_protected_textures, and expose the extensions in the list of available GL extensions.
    • [C-SR-1] GL_EXT_external_buffer, GL_EXT_EGL_image_array, GL_OVR_multiview_multisampled_render_to_texture, uygulanması ve uzantıların, kullanılabilir GL uzantıları listesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.
    • [C-SR-2] Vulkan 1.1'i desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
    • [C-SR-3] VK_ANDROID_external_memory_android_hardware_buffer, VK_GOOGLE_display_timing, VK_KHR_shared_presentable_image'ın uygulanması ve kullanılabilir Vulkan uzantıları listesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.
    • [C-SR-4] flags'nın 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 kuyruk ailesinin kullanıma sunulması ŞİDDETLE TAVSİYE EDİLİR.
    • [C-1-7] GPU ve ekran, paylaşılan ön arabelleğe erişimi senkronize edebilmelidir. Böylece, iki oluşturma bağlamıyla 60 FPS'de VR içeriğinin alternatif göz oluşturma işlemi, görünür yırtılma artefaktları olmadan gösterilir.
    • [C-1-9] NDK'da açıklandığı gibi AHardwareBuffer işaretleri AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER, AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA ve AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT için destek uygulamalıdır.
    • [C-1-10] En azından aşağıdaki biçimler için AHardwareBuffer'lerin AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT, AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE, AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT kullanım işaretlerinin herhangi bir kombinasyonuyla desteklenmesi ZORUNLUDUR: AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM, AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM, AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM, AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT.
    • [C-SR-5] AHardwareBuffers'nin birden fazla katmanla ve C-1-10'da belirtilen işaretler ve biçimlerle ayrılmasını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
    • [C-1-11] Saniyede 30 kare hızında en az 3.840 x 2.160 çözünürlükte H.264 kod çözme işlemini desteklemeli ve ortalama 40 Mb/sn'ye sıkıştırılmış olmalıdır (saniyede 30 kare hızında 1.920 x 1.080 çözünürlükte 10 Mb/sn olan 4 örneğe veya saniyede 60 kare hızında 1.920 x 1.080 çözünürlükte 20 Mb/sn olan 2 örneğe eşdeğer).
    • [C-1-12] HEVC ve VP9'u DESTEKLEMELİ, ortalama 10 Mb/sn'ye sıkıştırılmış 30 kare/sn hızında en az 1.920 x 1.080 çözünürlükte kod çözme YETENEĞİNE SAHİP OLMALI ve 30 kare/sn hızında 20 Mb/sn (30 kare/sn hızında 5 Mb/sn hızında 1.920 x 1.080 çözünürlükte 4 örneğe eşdeğer) çözünürlükte kod çözme YETENEĞİNE SAHİP OLMALIDIR.
    • [C-1-13] HardwarePropertiesManager.getDeviceTemperatures API'yi desteklemeli ve deri sıcaklığı için doğru değerler döndürmelidir.
    • [C-1-14] Gömülü bir ekranı OLMALI ve çözünürlüğü en az 1920 x 1080 OLMALIDIR.
    • [C-SR-6] En az 2.560 x 1.440 ekran çözünürlüğüne sahip olması ŞİDDETLE TAVSİYE EDİLİR.
    • [C-1-15] Ekran, VR modundayken en az 60 Hz'de güncellenmelidir.
    • [C-1-17] Ekran, kalıcılığı ≤ 5 milisaniye olan düşük kalıcılık modunu desteklemelidir. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
    • [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı'nı desteklemelidir bölüm 7.4.3.
    • [C-1-19] Aşağıdaki varsayılan sensör türlerinin tümü için Doğrudan Kanal Türü'nü desteklemeli ve düzgün şekilde bildirmelidir:
      • TYPE_ACCELEROMETER
      • TYPE_ACCELEROMETER_UNCALIBRATED
      • TYPE_GYROSCOPE
      • TYPE_GYROSCOPE_UNCALIBRATED
      • TYPE_MAGNETIC_FIELD
      • TYPE_MAGNETIC_FIELD_UNCALIBRATED
    • [C-SR-7] Yukarıda listelenen tüm Doğrudan Kanal Türleri için doğrudan kanal türünü desteklemesi ŞİDDETLE TAVSİYE EDİLİR. TYPE_HARDWARE_BUFFER
    • [C-1-21] Bölüm 7.3.9'da belirtildiği gibi, android.hardware.hifi_sensors için jiroskop, ivme ölçer ve manyetometre ile ilgili şartları karşılamalıdır.
    • [C-SR-8] android.hardware.sensor.hifi_sensors özelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
    • [C-1-22] Uçtan uca hareketten fotona gecikme süresi 28 milisaniyeden fazla OLMAMALIDIR.
    • [C-SR-9] Uçtan uca hareketten fotona gecikme süresinin 20 milisaniyeden fazla OLMAMASI ŞİDDETLE TAVSİYE EDİLİR.
    • [C-1-23] Siyah-beyaz geçişinden sonraki ilk karedeki piksellerin parlaklığı ile sabit durumdaki beyaz piksellerin parlaklığı arasındaki oran olan ilk kare oranı en az %85 OLMALIDIR.
    • [C-SR-10] İlk kare oranının en az %90 olması KESİNLİKLE ÖNERİLİR.
    • Ön plandaki uygulamaya özel bir çekirdek SAĞLAYABİLİR ve en üstteki ön plan uygulamasına özel CPU çekirdeklerinin sayısını döndürmek için Process.getExclusiveCores API'sini destekLEYEBİLİR.

    Özel çekirdek destekleniyorsa çekirdek:

    • [C-2-1] Üzerinde başka kullanıcı alanı işlemlerinin çalışmasına İZİN VERİLMEMELİDİR (uygulama tarafından kullanılan cihaz sürücüleri hariç), ancak gerektiğinde bazı çekirdek işlemlerinin çalışmasına İZİN VERİLEBİLİR.

    7.10. Dokunma teknolojisi

    Elde tutulmak veya giyilmek üzere tasarlanan cihazlarda, uygulamaların zil sesleri, alarmlar, bildirimler aracılığıyla dikkat çekme ve genel dokunma geri bildirimi gibi amaçlarla kullanabileceği genel amaçlı bir dokunsal aktüatör bulunabilir.

    Cihaz uygulamaları bu tür genel amaçlı bir dokunsal aktüatör İÇERMİYORSA:

    • [7.10/C] Vibrator.hasVibrator() için false değeri DÖNDÜRÜLMELİDİR.

    Cihaz uygulamaları bu tür genel amaçlı dokunsal aktüatörlerden en az birini içeriyorsa:

    Cihaz uygulamaları, dokunsal sabitlerin eşlemesini takip ediyorsa:

    7.11. Medya Performansı Sınıfı

    Cihaz uygulamasının medya performansı sınıfı, android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS API'sinden alınabilir. Medya performansı sınıfıyla ilgili şartlar, R (30. sürüm) ile başlayan her Android sürümü için tanımlanır. 0 özel değeri, cihazın medya performans sınıfında olmadığını gösterir.

    Cihaz uygulamaları android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS için sıfır olmayan bir değer döndürürse:

    • [C-1-1] MUST return at least a value of android.os.Build.VERSION_CODES.R.

    • [C-1-2] El cihazı uygulaması OLMALIDIR.

    • [C-1-3] Bölüm 2.2.7'de açıklanan "Medya Performans Sınıfı" ile ilgili tüm koşulları karşılamalıdır.

    Diğer bir deyişle, Android T'deki medya performans sınıfı yalnızca T, S veya R sürümündeki elde taşınabilir cihazlar için tanımlanır.

    Cihaza özel gereksinimler için 2.2.7 bölümüne bakın.

    8. Performans ve Güç

    Minimum performans ve güç ölçütlerinden bazıları kullanıcı deneyimi açısından kritik öneme sahiptir ve geliştiricilerin uygulama geliştirirken sahip olacağı temel varsayımları etkiler.

    8.1. Kullanıcı Deneyimi Tutarlılığı

    Uygulamalar ve oyunlarda tutarlı bir kare hızı ve yanıt süreleri sağlamak için belirli minimum şartlar varsa son kullanıcıya sorunsuz bir kullanıcı arayüzü sunulabilir. Cihaz uygulamaları, cihaz türüne bağlı olarak 2. bölümde açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev değiştirme için ölçülebilir gereksinimlere SAHİP OLABİLİR.

    8.2. Dosya G/Ç Erişim Performansı

    Uygulama özel veri depolama alanında (/data bölümü) tutarlı bir dosya erişimi performansı için ortak bir temel oluşturmak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak uygun bir beklenti belirlemelerine olanak tanır. Cihaz uygulamaları, cihaz türüne bağlı olarak aşağıdaki okuma ve yazma işlemleri için 2. bölümde açıklanan belirli şartlara sahip OLABİLİR:

    • Sıralı yazma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
    • Rastgele yazma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
    • Sıralı okuma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.
    • Rastgele okuma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülür.

    8.3. Güç tasarrufu modları

    Cihaz uygulamaları, AOSP'de yer alan (ör. Uygulamayı Beklemeye Alma Paketi, Doz) veya özellikleri SINIRLI Uygulamayı Beklemeye Alma Paketi'nden daha güçlü kısıtlamalar uygulayacak şekilde genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:

    • [C-1-1] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarının tetikleme, bakım, uyandırma algoritmaları ve global sistem ayarlarının veya DeviceConfig'in kullanımı için AOSP uygulamasından sapılMAMALIDIR.
    • [C-1-2] Uygulama beklemede özelliği için her gruptaki uygulamalarda işlerin, alarmın ve ağın sıklık sınırını yönetmek üzere genel ayarların veya DeviceConfig'in kullanımıyla ilgili AOSP uygulamasından SAPMAMALIDIR.
    • [C-1-3] Uygulama Bekletme için kullanılan Uygulama Bekletme Grupları sayısında AOSP uygulamasından sapılMAMALIDIR.
    • [C-1-4] Uygulama Bekletme Grupları ve Doze, Güç Yönetimi'nde açıklandığı şekilde uygulanmalıdır.
    • [C-1-5] Cihaz güç tasarrufu modundayken PowerManager.isPowerSaveMode() için true DÖNMELİDİR.
    • [C-1-6] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından veya pil optimizasyonlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANIMALI ve kullanıcıdan bir uygulamanın pil optimizasyonlarını yoksaymasına izin vermesini istemek için ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS intent'ini UYGULAMALIDIR.
    • [C-SR-1] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya olanak tanınması ŞİDDETLE TAVSİYE EDİLİR.
    • [C-SR-2] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcıya uygunluk sağlanması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, AOSP'de yer alan güç yönetimi özelliklerini genişletiyorsa ve bu genişletme, Nadiren Kullanılan Uygulamayı Beklemeye Alma Paketi'nden daha katı kısıtlamalar uyguluyorsa 3.5.1 bölümüne bakın.

    Android cihaz uygulamaları, güç tasarrufu modlarına ek olarak Advanced Configuration and Power Interface (ACPI) tarafından tanımlanan 4 uyku güç durumunun herhangi birini veya tümünü UYGULAYABİLİR.

    Cihaz uygulamaları, ACPI tarafından tanımlanan S4 güç durumlarını uyguluyorsa:

    • [C-1-1] YALNIZCA kullanıcı, cihazı etkin olmayan bir duruma getirmek için açık bir işlem yaptıktan sonra (ör. cihazın fiziksel bir parçası olan bir kapağı kapatarak veya bir aracı ya da televizyonu kapatarak) ve kullanıcı cihazı yeniden etkinleştirmeden önce (ör. kapağı açarak veya aracı ya da televizyonu tekrar açarak) bu duruma girmelidir.

    Cihaz uygulamaları, ACPI tarafından tanımlanan S3 güç durumlarını uyguluyorsa:

    • [C-2-1] Yukarıdaki C-1-1 koşulunu karşılamalı veya yalnızca üçüncü taraf uygulamalarının sistem kaynaklarına (ör. ekran, CPU) ihtiyacı olmadığında S3 durumuna girmelidir.

      Aksine, üçüncü taraf uygulamaların sistem kaynaklarına ihtiyacı olduğunda bu SDK'da açıklandığı gibi S3 durumundan çıkılmalıdır.

      Örneğin, üçüncü taraf uygulamaları FLAG_KEEP_SCREEN_ON aracılığıyla ekranın açık kalmasını veya PARTIAL_WAKE_LOCK aracılığıyla CPU'nun çalışmaya devam etmesini isterken, C-1-1'de açıklandığı gibi kullanıcı cihazı etkin olmayan bir duruma getirmek için açıkça işlem yapmadığı sürece cihaz S3 durumuna GİRMEMELİDİR. Aksine, üçüncü taraf uygulamalarının JobScheduler aracılığıyla uyguladığı bir görev tetiklendiğinde veya Firebase Cloud Messaging üçüncü taraf uygulamalarına teslim edildiğinde, kullanıcı cihazı etkin olmayan bir duruma getirmediği sürece cihaz S3 durumundan çıkmalıdır. Bunlar kapsamlı örnekler değildir ve AOSP, bu durumdan uyandırmayı tetikleyen kapsamlı uyandırma sinyalleri uygular.

    8.4. Güç Tüketimi Muhasebesi

    Güç tüketiminin daha doğru şekilde hesaplanması ve raporlanması, uygulama geliştiriciye hem teşvikler hem de uygulamanın güç kullanım şeklini optimize etme araçları sunar.

    Cihaz uygulamaları:

    • [C-SR-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her bir donanım bileşeninin akım tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili sağlanması ŞİDDETLE TAVSİYE EDİLİR.
    • [C-SR-2] Tüm güç tüketimi değerlerinin miliamper saat (mAh) cinsinden raporlanması ŞİDDETLE TAVSİYE EDİLİR.
    • [C-SR-3] Her işlemin UID'si başına CPU güç tüketiminin bildirilmesi KESİNLİKLE Ö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ın uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutuyla sunulması KESİNLİKLE ÖNERİLİR.
    • Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.

    8.5. Tutarlı Performans

    Yüksek performanslı ve uzun süre çalışan uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırları nedeniyle CPU'nun hızını düşürmesi yüzünden önemli ölçüde değişebilir. Android, cihazın kapasitesi yeterli olduğunda en üstteki ön plan uygulamasının, sistemden kaynakların tahsisini optimize etmesini isteyebilmesi için programatik arayüzler içerir. Bu sayede, söz konusu dalgalanmalar ele alınabilir.

    Cihaz uygulamaları:

    Cihaz uygulamaları, Sürekli Performans Modu'nu desteklediğini bildiriyorsa:

    • [C-1-1] Uygulama istediğinde, en üstteki ön plan uygulamasına en az 30 dakika boyunca tutarlı bir performans seviyesi SAĞLANMALIDIR.
    • [C-1-2] Window.setSustainedPerformanceMode() API'sine ve diğer ilgili API'lere UYULMALIDIR.

    Cihaz uygulamaları iki veya daha fazla CPU çekirdeği içeriyorsa:

    • En az bir özel çekirdek sağlamalıdır. Bu çekirdek, en üstteki ön plan uygulaması tarafından ayrılabilir.

    Cihaz uygulamaları, en üstteki ön plan uygulaması için özel bir çekirdek ayırmayı destekliyorsa:

    • [C-2-1] Process.getExclusiveCores() API yöntemiyle, en üstteki ön plan uygulaması tarafından ayrılabilen özel çekirdeklerin kimlik numaralarını bildirmelidir.
    • [C-2-2] Uygulamanın özel çekirdeklerde çalışması için kullanılan cihaz sürücüleri dışında hiçbir kullanıcı alanı sürecine izin VERİLMEMELİDİR. Ancak gerektiğinde bazı çekirdek süreçlerinin çalışmasına İZİN VERİLEBİLİR.

    Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:

    8.6. Uygulama Bellek Sınırları

    Android 17'de eklenen şartların başlangıcı

    ActivityManagerService'in yeni bir bileşeni olan MemoryLimiter ve kullanılabilir fiziksel bellekten elde edilen varsayılan uygulama bellek sınırları, her bir uygulama işlemi için kullanılan DRAM miktarına sınırlar getirecek. Bu kısıtlama, uygulama işlemi içinde ayrılan tüm bellek için geçerlidir. Böylece sınırlar, uygulama geliştiricilerle yapılan sözleşmelerde kritik bir davranış olarak işlev görür.

    Cihaz uygulamaları:

    • [C-0-1] Uygulamalar için belirlenen çalışma zamanı bellek sınırlarını atlamak üzere herhangi bir yöntem, izin verilenler listesi veya politika KULLANILMAMALIDIR.

    9. Güvenlik Modeli Uyumluluğu

    Cihaz uygulamaları:

    • [C-0-1] Android geliştirici belgelerindeki API'lerde Güvenlik ve İzinler referans dokümanında tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.

    • [C-0-2] Üçüncü taraflardan/yetkililerden ek izinler/sertifikalar gerektirmeden kendinden imzalı uygulamaların yüklenmesini DESTEKLEMELİDİR.

    Cihaz uygulamaları android.hardware.security.model.compatible özelliğini beyan ediyorsa:

    • [C-1-1] Aşağıdaki alt bölümlerde listelenen koşulları DESTEKLEMELİDİR.

    9.1. İzinler

    Cihaz uygulamaları:

    • [C-0-1] Android geliştirici belgelerinde tanımlandığı şekilde Android izin modeli ve Android Rolleri Modeli desteklenmelidir. Daha net bir ifadeyle, SDK belgelerinde tanımlandığı şekilde her izni ve rolü uygulamak ZORUNDADIR. Hiçbir izin ve rol atlanamaz, değiştirilemez veya göz ardı edilemez.

    • Yeni izin kimliği dizeleri android.\* ad alanında olmadığı sürece ek izinler EKLENEBİLİR.

    • [C-0-2] protectionLevel PROTECTION_FLAG_PRIVILEGED olan izinler yalnızca sistem görüntüsünün ayrıcalıklı yollarında önceden yüklenmiş uygulamalara (APEX dosyaları da dahil) verilmelidir ve her uygulama için açıkça izin verilenler listesine eklenen izinlerin alt kümesinde olmalıdır. AOSP uygulaması, her uygulama için izin verilenler listesine eklenen izinleri etc/permissions/ yolundaki dosyalardan okuyup uygulayarak ve system/priv-app yolunu ayrıcalıklı yol olarak kullanarak bu şartı karşılar.

    • [C-SR-1] protectionLevel değeri PROTECTION_SIGNATURE olan izinlerin yalnızca aşağıdakilerden birine verilmesi ŞİDDETLE TAVSİYE EDİLİR:

      • Sistem görüntüsüne önceden yüklenmiş uygulamalar (APEX dosyaları dahil).

      • Sistem görüntüsünde yer almayan izin verilen uygulamalar, izin verilen izinlerle izin verilenler listesine eklenir.

    Tehlikeli koruma düzeyine sahip izinler, çalışma zamanı izinleridir. targetSdkVersion ve üzeri sürümlere sahip uygulamalar, çalışma zamanında bunları ister.

    Cihaz uygulamaları:

    • [C-0-3] Kullanıcıya, istenen çalışma zamanı izinlerinin verilip verilmeyeceğine karar verebileceği özel bir arayüz GÖSTERİLMELİ ve çalışma zamanı izinlerini yönetebileceği bir arayüz SAĞLANMALIDIR.

    • [C-0-5] ŞU DURUMLAR HARİÇ uygulamalara çalışma zamanı izni VERİLMEMELİDİR:

      • Cihaz gönderimi sırasında yüklenir VE
      • Kullanıcının izni, uygulama izni kullanmadan önce alınabilir.

      VEYA

    • [C-0-6] android.permission.RECOVER_KEYSTORE izni yalnızca uygun şekilde güvenli bir kurtarma aracısı kaydeden sistem uygulamalarına verilmelidir. Uygun şekilde güvenliği sağlanmış bir Kurtarma Aracısı, cihaz dışı uzak depolama ile senkronize olan, cihaz üzerinde çalışan bir yazılım aracısı olarak tanımlanır. Bu aracının, kilit ekranı bilgi faktörüne yönelik deneme yanılma saldırılarını önlemek için Google Cloud Key Vault Hizmeti'nde açıklanan korumaya eşdeğer veya daha güçlü bir koruma sağlayan güvenli donanımla donatılmış olması gerekir.

    Cihaz uygulamaları:

    • [C-0-7] Bir uygulama, standart Android API'si veya tescilli mekanizma aracılığıyla konum ya da fiziksel aktivite verilerini istediğinde Android konum izni özelliklerine UYMALIDIR. Bu tür veriler aşağıdakileri içerir ancak bunlarla sınırlı değildir:

      • Bölüm 9.8.8'de açıklandığı gibi 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ırılması.

    Daha açık şekilde belirtmek gerekirse cihaz uygulamaları:

    • [C-0-8] Bir uygulamanın konum veya etkinlik verilerine erişmesine izin vermek için kullanıcı izni ALINMALIDIR.

    • [C-0-9] YALNIZCA SDK'da açıklandığı şekilde yeterli izne sahip olan uygulamaya çalışma zamanında istenen izin VERMELİDİR. Örneğin, TelephonyManager#getServiceState android.permission.ACCESS_FINE_LOCATION izni gerektirir.

    Yukarıdaki Android konum izni özellikleriyle ilgili tek istisna, kullanıcı konumunu elde etmek veya tanımlamak için Konum'a erişmeyen uygulamalarla ilgilidir. Bu uygulamalar şunlardır:

    • Uygulamalar RADIO_SCAN_WITHOUT_LOCATION iznine sahip olduğunda

    • Sistem uygulamalarının NETWORK_SETTINGS veya NETWORK_SETUP_WIZARD iznine sahip olduğu cihaz yapılandırması ve kurulumu için.

    İzinler, davranışlarını değiştirecek şekilde kısıtlanmış olarak işaretlenebilir.

    • [C-0-10] hardRestricted bayrağıyla işaretlenmiş izinler, aşağıdaki durumlar dışında 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, bir uygulamaya hardRestricted izni verir.

      • Bir uygulamaya, önceki bir Android sürümünde hardRestricted izni verilir.

    • [C-0-11] softRestricted iznine sahip uygulamalar YALNIZCA sınırlı erişim elde etmeli ve SDK'da açıklandığı şekilde izin verilenler listesine eklenene kadar tam erişim elde ETMEMELİDİR. Burada, her softRestricted izni için tam ve sınırlı erişim tanımlanır (örneğin, READ_EXTERNAL_STORAGE).

    • [C-0-12] setPermissionPolicy ve setPermissionGrantState API'lerinde tanımlanan izin kısıtlamalarını atlamak için özel işlevler veya API'ler 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'leri KULLANILMALIDIR.

    • [C-0-14] YALNIZCA rol şartlarını karşılayan işlevlere sahip uygulamalara rol atanMALIDIR.

    • [C-0-15] Platform tarafından tanımlanan rollerin işlevselliğini kopyalayan veya bu işlevselliğin üst kümesi olan roller tanımlANMAMALIDIR.

    Cihazlar, nabız veya deri sıcaklığı gibi sağlıkla ilgili biyometrikleri ortaya çıkaran veri sensörleri içeriyorsa bu biyometrikler:

    • [C-0-16] HealthPermissions içinde ilgili bir izin varsa android.permission-group.HEALTH platform izinleriyle korunmalıdır.

    • [C-0-17] İstenen veri türüyle eşleşen bir platform izni yoksa özel bir sistem izni ile korunmalıdır. (Örneğin, ELECTROCARDIOGRAM.)

    Cihazlar android.software.managed_users bildiriyorsa:

    • [C-1-1] Aşağıdaki izinler, yönetici tarafından sessizce verilmemelidir:

      • Konum (ACCESS_BACKGROUND_LOCATION, ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION).
      • Kamera (CAMERA)
      • Mikrofon (RECORD_AUDIO)
      • Vücut sensörü (BODY_SENSORS)
      • Sağlık (HealthPermissions)
      • Fiziksel aktivite (ACTIVITY_RECOGNITION)

    Cihazlar android.software.managed_users bildiriyorsa:

    • [C-1-1] Aşağıdaki izinler, yönetici tarafından 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ı, ACTION_MANAGE_OVERLAY_PERMISSION amacını işleyen bir etkinlik aracılığıyla hangi uygulamaların diğer uygulamaların üzerinde çizim yapabileceğini seçmek için kullanıcıya bir olanak sunuyorsa:

    • [C-2-1] ACTION_MANAGE_OVERLAY_PERMISSION intent'i için intent filtreleri olan tüm etkinliklerin, başlatıcı uygulamadan veya sağladığı bilgilerden bağımsız olarak aynı kullanıcı arayüzü ekranına sahip olmasını SAĞLAMALIDIR.

    Cihaz uygulamaları android.software.device_admin bildiriyorsa:

    • [C-3-1] Tamamen yönetilen cihaz kurulumu (cihaz sahibi kurulumu) sırasında, BT yöneticisinin, telefondaki ayarları (mikrofon, kamera ve konum dahil) kontrol etmesine izin verebileceğini belirten bir sorumluluk reddi beyanı GÖSTERİLMELİDİR. Yöneticinin cihazdaki izinlerin kontrolünü devre dışı bırakmadığı SÜRECE, kullanıcıya kurulumu devam ettirme veya kurulumdan çıkma seçenekleri sunulmalıdır.

    Cihaz uygulamaları, Sistem Arayüzü 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üklüyorsa bu paketler:

    9.2. UID ve işlem izolasyonu

    Cihaz uygulamaları:

    • [C-0-1] Her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alanı modelini DESTEKLEMELİDİR.
    • [C-0-2] Uygulamaların Güvenlik ve İzinler referansında tanımlandığı şekilde uygun şekilde imzalanıp oluşturulması koşuluyla, aynı Linux kullanıcı kimliğiyle birden fazla uygulamanın çalıştırılması DESTEKLENMELİDİR.

    9.3. Dosya Sistemi İzinleri

    Cihaz uygulamaları:

    9.4. Alternatif Yürütme Ortamları

    Cihaz uygulamaları, Dalvik Yürütülebilir Biçimi veya yerel kod dışında bir yazılım ya da teknoloji kullanarak uygulamaları yürüten çalışma zamanı ortamları içerse bile Android güvenlik ve izin modelinin tutarlılığını KORUMALIDIR. Başka bir deyişle:

    • [C-0-1] Alternatif çalışma zamanları, Android uygulaması olmalı 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.xml dosyasında istenmeyen izinlerle korunan kaynaklara <uses-permission> mekanizması aracılığıyla erişim izni VERİLMEMELİDİR.

    • [C-0-3] Alternatif çalışma zamanları, uygulamaların sistem uygulamalarıyla sınırlı Android izinleriyle korunan özelliklerden yararlanmasına İZİN VERMEMELİDİR.

    • [C-0-4] Alternatif çalışma zamanları, Android korumalı alan modeline uymalıdır. Alternatif çalışma zamanı kullanılarak yüklenen uygulamalar, paylaşılan kullanıcı kimliği ve imzalama sertifikası gibi standart Android mekanizmaları dışında, cihazda yüklü başka bir uygulamanın korumalı alanını yeniden kullanamaz.

    • [C-0-5] Alternatif çalışma zamanları, diğer Android uygulamalarına karşılık gelen sanal ortamlara erişimle başlatılmamalı, bu ortamlara erişim vermemeli veya bu ortamlara erişim verilmemelidir.

    • [C-0-6] Alternatif çalışma zamanları, süper kullanıcı (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılmamalı, bu ayrıcalıklar verilmemeli ya da diğer uygulamalara verilmemelidir.

    • [C-0-7] Alternatif çalışma zamanlarının .apk dosyaları cihaz uygulamalarının sistem görüntüsüne dahil edildiğinde, cihaz uygulamalarıyla birlikte gelen diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla imzalanmalıdır.

    • [C-0-8] Uygulamalar yüklenirken alternatif çalışma zamanları, uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMALIDIR.

    • [C-0-9] Bir uygulamanın, karşılık gelen bir Android izni (ö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 bilgilendirmelidir.

    • [C-0-10] Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmediğinde çalışma zamanı ortamı, bu çalışma zamanını kullanan herhangi bir uygulama yüklenirken çalışma zamanının sahip olduğu tüm izinleri LİSTELEMELİDİR.

    • Alternatif çalışma zamanları, uygulamaları PackageManager aracılığıyla ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir.

    • Alternatif çalışma zamanları, alternatif çalışma zamanını kullanan tüm uygulamaların paylaştığı tek bir Android sanal alanı sağlayabilir.

    9.5. Çoklu Kullanıcı Desteği

    Android, birden fazla kullanıcı desteği sunar ve kısmi yalıtımla (ör. android.os.usertype.profile.CLONE türünde tek bir ek kullanıcı profili) tam kullanıcı yalıtımı ve kullanıcı profillerini klonlama desteği sağlar.

    • Cihaz uygulamaları, birincil harici depolama için çıkarılabilir medya kullanıyorsa çok kullanıcılı modu etkinleştirebilir ancak etkinleştirmemelidir.

    Cihaz uygulamaları birden fazla kullanıcı desteği içeriyorsa:

    • [C-1-2] MUST, her kullanıcı için API'lerde Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.

    • [C-1-3] Her kullanıcı örneği için ayrı ve yalıtılmış paylaşılan uygulama depolama alanı (diğer adıyla /sdcard) dizinleri OLMALIDIR.

    • [C-1-4] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolansa bile başka bir kullanıcıya ait dosyaları listeleyememesini, okuyamamasını ya da bu dosyalara yazamamasını SAĞLAMALIDIR.

    • [C-1-5] Cihaz uygulamaları harici depolama alanı API'leri için çıkarılabilir medya kullanıyorsa çok kullanıcılı mod etkinleştirildiğinde SD kartın içeriği, yalnızca sistemin erişebildiği ve çıkarılamayan medyada depolanan bir anahtarla ŞİFRELENMELİDİR. Bu durum, ana bilgisayarın medyayı okuyamamasına neden olacağından cihaz uygulamalarının, ana bilgisayarlara mevcut kullanıcının verilerine erişim sağlamak için MTP'ye veya benzer bir sisteme geçmesi gerekecektir.

    Cihaz uygulamaları birden fazla kullanıcıyı destekliyorsa aynı uygulamanın çift örneğini çalıştırmak için özel olarak oluşturulan kullanıcılar hariç tüm kullanıcılar için:

    • [C-2-1] Her kullanıcı örneği için ayrı ve yalıtılmış paylaşılan uygulama depolama alanı (diğer adıyla /sdcard) dizinleri OLMALIDIR.

    • [C-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 depolansa bile başka bir kullanıcıya ait dosyaları listeleyememesini, okuyamamasını veya bu dosyalara yazamamasını SAĞLAMALIDIR.

    Cihaz uygulamaları, aynı uygulamanın iki örneğini çalıştırmak amacıyla birincil kullanıcıya karşı (ve yalnızca birincil kullanıcıya karşı) android.os.usertype.profile.CLONE türünde tek bir ek kullanıcı profili oluşturabilir. Bu iki örnek, kısmen yalıtılmış depolama alanını paylaşır, başlatıcıda aynı anda son kullanıcıya sunulur ve aynı son kullanılanlar görünümünde gösterilir. Ö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] YALNIZCA üst kullanıcı profiline zaten erişilebilen veya doğrudan bu ek kullanıcı profiline ait olan depolama alanına ya da verilere erişim izni VERİLMELİDİR.

    • [C-3-2] İş profili olarak bu tür içerikler OLMAMALIDIR.

    • [C-3-3] Özel uygulama veri dizinlerini üst kullanıcı hesabından izole ETMELİDİR.

    • [C-3-4] Bir Cihaz Sahibi sağlanmışsa (bkz. bölüm 3.9.1) ek kullanıcı profilinin oluşturulmasına İZİN VERİLMEMELİ veya önce ek kullanıcı profili kaldırılmadan Cihaz Sahibi'nin sağlanmasına İZİN VERİLMEMELİDİR.

    Cihaz uygulamaları yukarıda bahsedilen ek kullanıcı profilini oluşturuyorsa:

    • [C-4-1] Ek profilden kaynaklanan aşağıdaki amaçların, cihazdaki birincil kullanıcının uygulamaları tarafından işlenmesine İZİN VERİLMELİDİR:

      • Intent.ACTION_VIEW
      • Intent.ACTION_SENDTO
      • Intent.ACTION_SEND
      • Intent.ACTION_EDIT
      • Intent.ACTION_INSERT
      • Intent.ACTION_INSERT_OR_EDIT
      • Intent.ACTION_SEND_MULTIPLE
      • Intent.ACTION_PICK
      • Intent.ACTION_GET_CONTENT
      • MediaStore.ACTION_IMAGE_CAPTURE
      • MediaStore.ACTION_VIDEO_CAPTURE
    • [C-4-2] Cihazın birincil kullanıcısına uygulanan tüm cihaz politikası kullanıcı kısıtlamalarını ve seçilen kullanıcı dışı restrictions(list below), bu ek kullanıcı profiline aktarmalıdır.

    • [C-4-3] YALNIZCA aşağıdaki amaçlar aracılığıyla bu ek profilden kişilerin yazılmasına izin VERİLMELİDİR:

    • [C-4-4] Bu ek kullanıcı profilinde çalışan uygulamalar için kişi senkronizasyonu çalışmamalıdır.

    • [C-4-5] YALNIZCA ek profildeki, başlatıcı etkinliği olan uygulamaların, üst kullanıcı profili tarafından erişilebilen kişilere erişmesine İZİN VERİLMELİDİR.

    Cihaz uygulamaları yukarıda bahsedilen ek kullanıcı profilini oluşturuyorsa, en az bir kamera içeriyorsa ve önceden yüklenmiş kamera uygulaması MediaStore.ACTION_MOTION_PHOTO_CAPTURE veya MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE amaçlarını işliyorsa:

    • [C-5-1] Birincil kullanıcının uygulamalarının, bu ek kullanıcı profilinden gelen bu amaçları işlemesine İZİN VERİLMELİDİR.

    9.6. Premium SMS Uyarısı

    Android, kullanıcılara giden premium SMS mesajları hakkında uyarı göndermeyi destekler. Premium SMS mesajları, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıya ücret yükleyebilen kısa mesajlardır.

    Cihaz uygulamaları android.hardware.telephony desteğini beyan ediyorsa:

    • [C-1-1] Cihazdaki /data/misc/sms/codes.xml dosyasında tanımlanan normal ifadelerle belirlenen numaralara SMS mesajı göndermeden önce kullanıcıları UYARMALIDIR. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılayan bir uygulama sağlar.

    9.7. Security Features

    Cihaz uygulamaları, hem çekirdekte hem de platformda aşağıdaki gibi açıklanan güvenlik özelliklerine uygunluğu SAĞLAMALIDIR.

    Android korumalı alanı, Security-Enhanced Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikleri içerir. Cihaz uygulamaları:

    • [C-0-1] MUST maintain compatibility with existing applications, even when SELinux or any other security features are implemented below the Android framework.

    • [C-0-2] Güvenlik ihlali tespit edilip 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üne SAHİP OLMAMALI, ancak engellenmemiş bir güvenlik ihlali meydana gelip başarılı bir saldırıya yol açtığında görünür bir kullanıcı arayüzüne SAHİP OLABİLİR.

    • [C-0-3] SELinux'u veya Android çerçevesinin altında uygulanan diğer güvenlik özelliklerini kullanıcı ya da uygulama geliştirici tarafından yapılandırılabilir HALE GETİRMEMELİDİR.

    • [C-0-4] Bir API (ör. Cihaz Yönetimi API'si) aracılığıyla başka bir uygulamayı etkileyebilen bir uygulamanın, uyumluluğu bozan bir politika yapılandırmasına İZİN VERİLMEMELİDİR.

    • [C-0-5] Medya çerçevesi, Android Açık Kaynak Projesi sitesinde açıklandığı gibi her işlem için erişimin daha dar kapsamlı olarak verilebilmesi amacıyla birden fazla işleme ayrılmalıdır.

    • [C-0-6] Çok iş parçacıklı programlardan gelen sistem çağrılarının yapılandırılabilir bir politika kullanılarak filtrelenmesine olanak tanıyan bir çekirdek uygulama korumalı alan mekanizması UYGULANMALIDIR. Yukarı akış Android Açık Kaynak Projesi, source.android.com'un çekirdek yapılandırması bölümünde açıklandığı gibi iş parçacığı grubu senkronizasyonu (TSYNC) ile seccomp-BPF'yi etkinleştirerek bu koşulu karşılar.

    Çekirdek bütünlüğü ve kendi kendini koruma özellikleri, Android güvenliğinin ayrılmaz bir parçasıdır. Cihaz uygulamaları:

    • [C-0-7] Çekirdek yığını arabellek taşması koruma mekanizmalarını uygulamalıdır. Bu tür mekanizmalara örnek olarak CC_STACKPROTECTOR_REGULAR ve CONFIG_CC_STACKPROTECTOR_STRONG verilebilir.

    • [C-0-8] Yürütülebilir kodun salt okunur, salt okunur verilerin yürütülemez ve yazılamaz, yazılabilir verilerin ise yürütülemez olduğu (ör. hem rodata hem de CONFIG_STRICT_KERNEL_RWX etkinleştirilmiş) sıkı çekirdek belleği korumaları UYGULANMALIDIR.

    • [C-0-9] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda, kullanıcı alanı ile çekirdek alanı arasındaki kopyaların statik ve dinamik nesne boyutu sınırları kontrolünü (ör. CONFIG_HARDENED_USERCOPY) uygulamalıdır.

    • [C-0-10] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda çekirdek modunda yürütülürken (ör. donanım PXN veya CONFIG_CPU_SW_DOMAIN_PAN ya da CONFIG_ARM64_SW_TTBR0_PAN aracılığıyla emüle edilmiş) kullanıcı alanı belleği yürütülmemelidir.

    • [C-0-11] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda, çekirdekteki kullanıcı alanı belleği 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 emüle edilmiş) dışında okumamalı veya yazmamalıdır.

    • [C-0-12] Donanım, API düzeyi 28 veya daha yüksek bir API düzeyiyle (ör. CONFIG_PAGE_TABLE_ISOLATION veya CONFIG_UNMAP_KERNEL_AT_EL0) orijinal olarak gönderilen tüm cihazlarda CVE-2017-5754'e karşı savunmasızsa çekirdek sayfa tablosu izolasyonu uygulanmalıdır.

    • [C-0-13] Donanım, API düzeyi 28 veya daha yüksek (ör. CONFIG_HARDEN_BRANCH_PREDICTOR) ile orijinal olarak gönderilen tüm cihazlarda CVE-2017-5715'e karşı güvenlik açığına sahipse dal tahmini sağlamlaştırması 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 (ör. __ro_after_init) ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-2] Çekirdek kodu ve belleğin düzeninin rastgele hale getirilmesi ve rastgele hale getirme işlemini tehlikeye atacak ifşalardan kaçınılması (ör. CONFIG_RANDOMIZE_BASE ile /chosen/kaslr-seed Device Tree node veya EFI_RNG_PROTOCOL aracılığıyla önyükleyici entropisi) ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-3] Kodun yeniden kullanıldığı saldırılara (ör. CONFIG_CFI_CLANG ve CONFIG_SHADOW_CALL_STACK) karşı ek koruma sağlamak için çekirdekte kontrol akışı bütünlüğünün (CFI) etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-4] Üzerinde etkinleştirilmiş olan bileşenlerde Kontrol Akışı Bütünlüğü (CFI), Gölge Çağrı Yığını (SCS) veya Tam Sayı Taşması Temizleme (IntSan) özelliklerinin devre dışı bırakılmaması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-5] CFI ve IntSan'da açıklandığı gibi, ek güvenlik açısından hassas kullanıcı alanı bileşenleri için CFI, SCS ve IntSan'ın etkinleştirilmesi KESİNLİKLE ÖNERİLİR.

    • [C-SR-6] Başlatılmamış yerel değişkenlerin (CONFIG_INIT_STACK_ALL veya CONFIG_INIT_STACK_ALL_ZERO) kullanılmasını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR. Ayrıca, cihaz uygulamaları, yerelleri başlatmak için derleyici tarafından kullanılan değeri varsaymamalıdır.

    • [C-SR-7] Başlatılmamış yığın ayırmalarının kullanılmasını önlemek için çekirdekte yığın başlatmanın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR (CONFIG_INIT_ON_ALLOC_DEFAULT_ON) ve çekirdeğin bu ayırmaları başlatmak için kullandığı değerin varsayılmaması GEREKİR.

    Cihaz uygulamaları, SELinux'u destekleyebilen bir Linux çekirdeği kullanıyorsa:

    • [C-1-1] SELinux'u uygulamalıdır.

    • [C-1-2] SELinux, genel zorunlu kılma moduna AYARLANMALIDIR.

    • [C-1-3] Tüm alanlar zorunlu kılma modunda yapılandırılmalıdır. Cihaza/tedarikçiye özgü alanlar da dahil olmak üzere izin verilen mod alanlarına izin verilmez.

    Android 17'de şartların başlangıcı değişti

    • [C-1-4] ŞUNLAR YAPILMAMALIDIR:

      • Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan system/sepolicy klasöründe bulunan neverallow kurallarını değiştirin, atlayın veya bunların yerine başka kurallar koyun.
      • AOSP SELinux alanlarında (coredomain özelliğini içeren alanlar) AOSP dışı işlemleri (ör. tedarikçiye veya ODM'ye özgü hizmetler) yürütün.
      • AOSP platformuna özel SELinux türleriyle (vendor_file_type veya odm_file_type özelliklerinin bulunmadığı türler) AOSP dışı dosyaları veya dizinleri (ör. /vendor veya /odm bölümlerinde bulunanlar) etiketleyin.
      • AOSP tarafından tanımlanan mülk bağlamlarını tedarikçi veya ODM'ye özel sistem mülklerine atayın.

      Politika, hem AOSP SELinux alanları hem de cihaza/satıcıya özgü alanlar için mevcut olan tüm neverallow kurallarıyla derlenmelidir.

    • [C-1-5] API düzeyi 28 veya daha yüksek olan üçüncü taraf uygulamaları, her uygulamanın özel veri dizininde uygulama başına SELinux kısıtlamalarıyla uygulama başına SELinux sandbox'larında ÇALIŞTIRILMALIDIR.

    • Yukarı akış Android Açık Kaynak Projesi'nin system/sepolicy klasöründe sağlanan varsayılan SELinux politikasını KORUMALI ve kendi cihaza özel yapılandırmaları için yalnızca bu politikaya eklemeler YAPMALIDIR.

    Cihaz uygulamaları, Linux dışında bir çekirdek veya SELinux'suz Linux kullanıyorsa:

    • [C-2-1] SELinux'a eşdeğer zorunlu bir erişim denetimi sistemi KULLANILMALIDIR.

    Cihaz uygulamaları, DMA özellikli G/Ç cihazları kullanıyorsa:

    • [C-SR-9] IOMMU (ör. ARM SMMU) kullanarak DMA özellikli her bir G/Ç cihazının izole edilmesi ŞİDDETLE TAVSİYE EDİLİR.

    Android, cihaz güvenliğinin ayrılmaz bir parçası olan birden fazla derinlemesine savunma özelliği içerir. Ayrıca Android, düşük kaliteye ve güvenliğe katkıda bulunan yaygın hataların temel sınıflarını azaltmaya odaklanır.

    Bellek hatalarını azaltmak için cihaz uygulamaları:

    • [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 EDİLMESİ ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-11] KASAN gibi çekirdek belleği hatası algılama araçları (CONFIG_KASAN, CONFIG_KASAN_HW_TAGS ARMv9 cihazlar için, CONFIG_KASAN_SW_TAGS ARMv8 cihazlar için veya CONFIG_KASAN_GENERIC diğer cihaz türleri için) kullanılarak test edilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-12] Üretimde MTE, GWP-ASan ve KFENCE gibi bellek hatası algılama araçlarının KULLANILMASI ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları Arm TrustZone tabanlı bir TEE kullanıyorsa:

    • [C-SR-13] Android ile TEE arasında bellek paylaşımı için Armv8-A (FF-A) için Arm Firmware Framework gibi standart bir protokol kullanılması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-14] Güvenilir uygulamaların yalnızca yukarıdaki protokol aracılığıyla açıkça paylaşılan belleğe erişmesi KESİNLİKLE ÖNERİLİR. Cihazda Arm S-EL2 istisna düzeyi destekleniyorsa bu, güvenli bölüm yöneticisi tarafından zorunlu kılınmalıdır. Aksi takdirde, bu durum TEE OS tarafından zorunlu kılınmalıdır.

    Bellek güvenliği teknolojisi, android:memtagMode bildirim seçeneğini kullanan uygulamalarda aşağıdaki hata sınıflarını en az %90 olasılıkla azaltan bir teknolojidir:

    • yığın arabellek taşması
    • ücretsiz deneme süresinden sonra kullanım
    • çift kişilik ücretsiz
    • wild free (free of a non-malloc pointer)

    Cihaz uygulamaları:

    • [C-SR-15] ro.arm64.memtag.bootctl_supported ayarlanması KESİNLİKLE ÖNERİLİR.

    Cihaz uygulamaları, ro.arm64.memtag.bootctl_supported sistem özelliğini doğru olarak ayarlarsa:

    • [C-3-1] MUST allow the system property arm64.memtag.bootctl to accept a comma-separated list of the following values, with the desired effect applied on the next subsequent reboot:

      • memtag: Yukarıda tanımlandığı şekilde bir Memory Safety teknolojisi etkinleştirilmişse

      • memtag-once: Yukarıda tanımlandığı gibi bir Bellek Güvenliği teknolojisi geçici olarak etkinleştirilir ve sonraki yeniden başlatma işleminde otomatik olarak devre dışı bırakılır.

      • memtag-off: Yukarıda tanımlandığı gibi bir Bellek Güvenliği teknolojisi devre dışı bırakıldıysa

    • [C-3-2] Kabuk kullanıcısının arm64.memtag.bootctl ayarlamasına İZİN VERİLMELİDİR.

    • [C-3-3] Herhangi bir işlemin arm64.memtag.bootctl okumasına İZİN VERİLMELİDİR.

    • [C-3-4] Önyükleme sırasında arm64.memtag.bootctl, istenen duruma AYARLANMALIDIR. Cihaz uygulaması, sistem özelliğini değiştirmeden durumu değiştirmeye izin veriyorsa özellik de GÜNCELLENMELİDİR.

    • [C-SR-16] memtag-once'u ayarlayan ve cihazı yeniden başlatan bir geliştirici ayarının gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. Android Açık Kaynak Projesi, uyumlu bir önyükleyiciyle MTE önyükleyici protokolü aracılığıyla yukarıdaki koşulları karşılar.

    Bir cihaz android.hardware.telephony beyan ediyorsa, CAPABILITY_USES_ALLOWED_NETWORK_TYPES_BITMASK radyo özelliğini destekliyorsa ve 2G bağlantılarını destekleyen bir hücresel modem içeriyorsa cihaz uygulaması:

    • [C-SR-17] Kullanıcıların 2G'yi devre dışı bırakıp etkinleştirmesine olanak tanıması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-18] 2G'yi devre dışı bırakmak ve etkinleştirmek için kullanıcıya sunulan uygunluk seçeneğinin, UserManager.DISALLOW_CELLULAR_2G kullanılarak cihaz yöneticisi tarafından yapılanlar dışında herhangi bir cihaz varlığıyla geçersiz kılınmaması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-19] Bu koşulu karşılamak için TelephonyManager.setAllowedNetworkTypesForReason numaralı telefonu aramanız ALLOWED_NETWORK_TYPES_REASON_ENABLE_2G nedeni ile ÖNEMLE TAVSİYE EDİLİR.

    • [C-SR-20] 2G için hücresel modem desteğini belirlemek üzere TelephonyManager.getSupportedRadioAccessFamily numaralı telefonu aramanız ŞİDDETLE TAVSİYE EDİLİR. Ayrıntılar için 2G'yi devre dışı bırakma başlıklı makaleyi inceleyin.

    9.8. Gizlilik

    9.8.1. Kullanım Geçmişi

    Android, kullanıcının seçimlerinin geçmişini saklar ve bu geçmişi UsageStatsManager ile yönetir.

    Cihaz uygulamaları:

    • [C-0-1] Bu tür kullanıcı geçmişi için makul bir saklama süresi belirlenmelidir.

    • [C-SR-1] 14 günlük saklama süresinin AOSP uygulamasında varsayılan olarak yapılandırıldığı şekilde tutulması ŞİDDETLE TAVSİYE EDİLİR.

    Android, sistem etkinliklerini StatsLog tanımlayıcılarını kullanarak depolar ve bu tür geçmişi StatsManager ile IncidentManager System API aracılığıyla yönetir.

    Cihaz uygulamaları:

    • [C-0-2] YALNIZCA DEST_AUTOMATIC Sistem API sınıfı IncidentManager tarafından oluşturulan olay raporunda DEST_AUTOMATIC ile işaretlenmiş alanları içermelidir.

    • [C-0-3] StatsLog SDK dokümanlarında açıklananlar dışında başka bir etkinliği günlüğe kaydetmek için sistem etkinliği tanımlayıcıları KULLANILMAMALIDIR. Ek sistem etkinlikleri kaydedilirse 100.000 ile 200.000 arasındaki bir aralıkta farklı bir atom tanımlayıcısı KULLANILABİLİR.

    9.8.2. Kayıt

    Cihaz uygulamaları:

    • [C-0-1] Kullanıcının izni olmadan veya devam eden net bildirimler olmadan kullanıcının özel bilgilerini (ör. tuş vuruşları, ekranda gösterilen metin, hata raporu) cihazdan gönderen yazılım bileşenleri kutudan çıkar çıkmaz önceden yüklenmemeli veya dağıtılmamalıdır.

    • [C-0-2] MediaProjection.createVirtualDisplay() veya tescilli API'ler aracılığıyla ekran yayını ya da ekran kaydı oturumu her etkinleştirildiğinde, kullanıcının ekranında gösterilen hassas bilgilerin yakalanmasına izin veren bir kullanıcı uyarısı GÖSTERİLMELİ ve kullanıcının açık izni ALINMALIDIR.

    • [C-0-3] Ekran yayını veya ekran kaydı etkinleştirildiğinde kullanıcıya sürekli bir bildirim GÖSTERİLMELİDİR. AOSP, durum çubuğunda devam eden bildirim simgesi göstererek bu koşulu karşılar.

    • [C-SR-1] AOSP'de uygulanan mesajla tamamen aynı olan bir kullanıcı uyarısının gösterilmesi ŞİDDETLE TAVSİYE EDİLİR ancak mesaj, kullanıcının ekranındaki hassas bilgilerin yakalandığı konusunda kullanıcıyı net bir şekilde uyardığı sürece değiştirilebilir.

    • [C-0-4] Android 16'da şart kaldırıldı.

    Cihaz uygulamaları:

    • [C-0-7] Aşağıdaki gibi hassas bilgiler kaydedilmemeli, yansıtılmamalı veya yayınlanmamalıdır:

      • Hassas bildirim içerikleri, Bölüm 3.8.3.4 Hassas Bildirim Koruması'nda listelenir.
      • Tek kullanımlık şifreler içeren uygulama etkinliği pencereleri
      • Kullanıcı adı, şifre ve kredi kartı bilgileri gibi hassas içerikler

    Cihaz uygulamaları, sistemde ContentCaptureService Sistem API'si dışında ekranda gösterilen içerikleri yakalayan ve/veya cihazda oynatılan ses akışını kaydeden işlevler ya da Bölüm 9.8.6 OS-level and ambient data'da açıklanan diğer tescilli yöntemler içeriyorsa:

    • [C-1-1] Bu işlev etkinleştirildiğinde ve aktif olarak yakalama/kayıt yaparken kullanıcıya sürekli bir bildirim GÖSTERİLMELİDİR.

    Cihaz uygulamaları, kullanıcının bağlamı hakkında faydalı bilgiler elde etmek için ortam sesini kaydetme ve/veya cihazda çalınan sesi kaydetme özelliğine sahip, kutudan çıkarıldığında etkinleştirilmiş bir bileşen içeriyorsa:

    • [C-2-1] Kaydedilen ham ses veya orijinal sese ya da neredeyse aynı olan bir sese geri dönüştürülebilen herhangi bir biçim, kullanıcının açık izni olmadan cihaz üzerinde kalıcı depolama alanında saklanmamalı veya cihazın dışına aktarılmamalıdır.

    "Mikrofon göstergesi", ekranda sürekli olarak görünen ve kullanıcının göremeyeceği şekilde gizlenemeyen bir görünümü ifade eder. Kullanıcılar, bu görünümü(benzersiz metin, renk, simge veya bunların bir kombinasyonu aracılığıyla) mikrofonun kullanıldığı şeklinde anlar.

    "Kamera göstergesi", ekranda kullanıcının sürekli görebildiği ve kapatılamayan bir görünümü ifade eder. Kullanıcılar bu görünümü, kameranın kullanıldığı şeklinde anlar (benzersiz metin, renk, simge veya bunların bir kombinasyonu aracılığıyla).

    İlk bir saniye görüntülendikten sonra gösterge görsel olarak değişebilir (ör. küçülebilir) ve başlangıçta sunulduğu ve anlaşıldığı şekilde gösterilmesi gerekmez.

    Metin, simge veya renkler kullanıcıya mikrofon kullanımının başladığını gösterdiği sürece mikrofon göstergesi, etkin olarak görüntülenen bir kamera göstergesiyle birleştirilebilir.

    Metin, simge veya renkler kullanıcılara kamera kullanımının başladığını gösterdiği sürece kamera göstergesi, etkin olarak görüntülenen bir mikrofon göstergesiyle birleştirilebilir.

    Cihaz uygulamaları android.hardware.microphone beyan ederse:

    • [C-SR-1] Bir uygulama mikrofondaki ses verilerine eriştiğinde mikrofon göstergesinin gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. Ancak mikrofona yalnızca HotwordDetectionService, SOURCE_HOTWORD, ContentCaptureService veya CDD tanımlayıcısı [C-3-X] ile 9.1 İzinler Bölümü'nde belirtilen rollere sahip uygulamalar eriştiğinde mikrofon göstergesi gösterilmemelidir.

    • [C-SR-2] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen, mikrofon kullanan Son ve Etkin uygulamaların listesinin, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-3] Görünür kullanıcı arayüzlerine veya doğrudan kullanıcı etkileşimine sahip sistem uygulamalarında mikrofon göstergesinin GİZLENMEMESİ ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları android.hardware.camera.any beyan ederse:

    • [C-SR-4] Bir uygulama canlı kamera verilerine erişirken kamera göstergesinin gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. Ancak kameraya yalnızca CDD tanımlayıcısı [C-3-X] ile 9.1 İzinler Bölümü'nde belirtilen rollere sahip uygulamalar tarafından erişilirken kamera göstergesi gösterilmez.

    • [C-SR-5] PermissionManager.getIndicatorAppOpUsageData() tarafından döndürülen kamera kullanılarak Son ve Etkin uygulamaların, bunlarla ilişkili tüm ilişkilendirme mesajlarıyla birlikte gösterilmesi ŞİDDETLE TAVSİYE EDİ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 GİZLENMEMESİ ŞİDDETLE TAVSİYE EDİLİR.

    9.8.3. Bağlantı

    Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:

    • [C-1-1] USB bağlantı noktası üzerinden paylaşılan depolama alanının içeriğine erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü SUNULMALIDIR.

    9.8.4. Ağ Trafiği

    Cihaz uygulamaları:

    • [C-0-1] Sistem tarafından güvenilen Sertifika Yetkilisi (CA) deposu için, yukarı akış Android Açık Kaynak Projesi'nde sağlanan kök sertifikaların aynısını önceden yüklemelidir.

    • [C-0-2] Boş bir kullanıcı kök CA deposuyla gönderilmelidir.

    • [C-0-3] Kullanıcı kök CA'sı eklendiğinde, ağ trafiğinin izlenebileceğini belirten bir uyarı kullanıcıya GÖSTERİLMELİDİR.

    Cihaz trafiği VPN üzerinden yönlendiriliyorsa cihaz uygulamaları:

    • [C-1-1] Kullanıcıya aşağıdakilerden birini belirten bir uyarı GÖSTERİLMELİDİR:
      • Bu ağ trafiği izlenebilir.
      • Bu ağ trafiği, VPN'i sağlayan belirli VPN uygulaması üzerinden yönlendirilir.

    Cihaz uygulamalarında, ağ veri trafiğini bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN izniyle bir VPN hizmetini önceden yükleme) ve varsayılan olarak kutudan çıktığı haliyle etkinleştirilmiş bir mekanizma varsa:

    • [C-2-1] Bu VPN, DevicePolicyManager.setAlwaysOnVpnPackage() aracılığıyla Cihaz Politikası Denetleyicisi tarafından etkinleştirilmediği sürece bu mekanizma etkinleştirilmeden önce kullanıcının izni İSTENMELİDİR. Bu durumda kullanıcının ayrı bir izin vermesi GEREKMEZ, ancak yalnızca bilgilendirilmesi GEREKİR.

    Cihaz uygulamaları, üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için kullanıcıya bir kolaylık sunuyorsa:

    • [C-3-1] AndroidManifest.xml dosyasında her zaman açık VPN hizmetini desteklemeyen uygulamalar için bu kullanıcı kolaylığını, SERVICE_META_DATA_SUPPORTS_ALWAYS_ON özelliğini false olarak ayarlayarak DEVRE DIŞI BIRAKMALIDIR.

    9.8.5. Cihaz Tanımlayıcıları

    Cihaz uygulamaları:

    • [C-0-1] Aşağıdaki koşullardan birini karşılamadığı sürece, cihaz seri numarasına ve geçerli olduğu durumlarda IMEI/MEID, SIM seri numarası ve Uluslararası Mobil Abone Kimliği'ne (IMSI) bir uygulamadan erişimi ENGELLEMELİDİR:
      • Cihaz üreticileri tarafından doğrulanmış, imzalı bir operatör uygulamasıdır.
      • READ_PRIVILEGED_PHONE_STATE izni verilmiş olmalıdır.
      • UICC Carrier Privileges'da tanımlandığı şekilde operatör ayrıcalıklarına sahip olmalıdır.
      • READ_PHONE_STATE izni verilmiş bir cihaz sahibi veya profil sahibi olmalıdır.
      • (Yalnızca SIM seri numarası/ICCID için) Uygulamanın, abonenin kimliğindeki değişiklikleri algılamasıyla ilgili yerel düzenleme şartı vardır.

    9.8.6. İşletim sistemi düzeyinde ve ortam verisi koruyucu

    Android 17'de şartların başlangıcı değişti

    Android, Sistem API'leri aracılığıyla cihaz uygulamalarının aşağıdaki hassas verileri yakalamasına yönelik bir mekanizmayı destekler:

    • Bildirimler ve AssistStructure API aracılığıyla yardım verileri, ekran arabelleği yakalama etkinlikleri ve cihazın ekran içeriğini kaydetme dahil ancak bunlarla sınırlı olmamak üzere ekranda oluşturulan metin ve grafikler.

    • Cihaz tarafından kaydedilen veya oynatılan ses ya da video gibi medya verileri

    • Giriş etkinlikleri (ör. tuş, fare, hareket, ses, video ve erişilebilirlik).

    • AugmentedAutofillService üzerinden sisteme gönderilen tüm ekran veya diğer veriler.

    • Content Capture API'leri aracılığıyla erişilebilen tüm ekranlar veya diğer veriler.

    • AppSearchManager API'si aracılığıyla sisteme aktarılan ve AppSearchGlobalManager.query üzerinden erişilebilen tüm uygulama verileri.

    • TextClassifier API aracılığıyla System TextClassifier'a (yani metnin anlamını anlamak ve metne dayalı olarak tahmin edilen sonraki işlemleri oluşturmak için kullanılan sisteme ait hizmete) gönderilen tüm metinler veya diğer veriler.

    • Metin, grafik, medya verileri veya benzeri diğer veriler dahil ancak bunlarla sınırlı olmamak üzere, platformun AppSearch uygulaması tarafından dizine eklenen veriler.

    • Konuşma Tanıma Uygulaması tarafından SpeechRecognizer#onDeviceSpeechRecognizer() kullanılması sonucu 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östergeye yol açmayan kamera verileri

    • DynamicInstrumentationEventService tarafından yakalanan tüm veriler

    Android 17'de şartların başlangıcı değişti

    Cihaz uygulamaları yukarıdaki hassas verilerden herhangi birini topluyorsa veya paylaşıyorsa: Veriler, açık ve ayrı bir kullanıcı niyeti veya kullanıcı tarafından görülebilen bir gizlilik göstergesi olmadan KORUMALI bir yürütme ortamında işlenmelidir. Bu ortam:

    • [C-1-1] Cihazda depolanırken veya aktarım halindeyken 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+ olarak listelenen şifrelerden herhangi biri kullanılarak YAPILABİLİR.

    • [C-1-2] Yukarıda açıklandığı gibi hassas verileri Android yedekleme yöntemleri veya başka yedekleme yöntemleri kullanarak ham ya da şifrelenmiş verileri yedeklememelidir.

    • [C-1-3] Aşağıdaki koşullardan biri karşılanmadığı sürece bu tür veriler cihazdan gönderilmemelidir:

      • Veriler her paylaşıldığında, belirli bir hesaplama için kullanıcı niyetiyle açıkça başlatıldığında *

      • Diferansiyel gizlilik gibi gizliliği korumaya yönelik bir mekanizma kullanırken RAPPOR veya gizli birleşik hesaplamalar gibi teknolojiler.

      • Veriler, hizmet sağlayıcıdan ve altyapıdan korunmasını sağlayan korumalı bir yürütme ortamında işlendiğinde (ör. yönetici erişimi yok, gizli sanal makine, uzaktan onaylama, özel veri çıkışı yok, devre dışı bırakılmış günlük kaydı, IP maskeleme ve şifreleme).

        • Bu yöntemin kullanıldığı tüm uygulamalarda, kullanıcıların kapsam dışında kalmasına olanak tanıyan bir özellik bulunmalıdır.

    • [C-1-3] Verileri, hizmet sağlayıcıdan ve altyapıdan (ör. yönetici erişimi yok, gizli sanal makine, uzaktan onay, özel veri çıkışı yok, devre dışı bırakılmış günlük kaydı, IP gizleme ve şifreleme) koruyan güvenilir bir bilgi işlem tabanı bulut ortamı aracılığıyla işleyebilir. Bu yöntemin kullanıldığı tüm uygulamalar:
      • Kullanıcılara kapsam dışında kalma olanağı TANINMALIDIR ve
      • Kullanıcılara, ortamdan veri girişi ve çıkışını ayrıntılı olarak açıklayan, erişilebilir ve kapsamlı günlükler oluşturma yöntemi SAĞLANMALIDIR.

    • [C-1-4] Veriler her ilişkilendirildiğinde kullanıcının açık izni alınmadığı sürece, bu tür veriler cihazdaki herhangi bir kullanıcı kimliğiyle (ör. Account) ilişkilendirilmemelidir.

    • [C-1-4] Bu veriler, sisteme ait kullanıcı arayüzü yüzeylerinde GÖSTERİLEBİLİR.

    • [C-1-5] Bu tür veriler, paylaşıldığı her seferde kullanıcıdan açık rıza alınmadığı sürece herhangi bir kullanıcı kimliğiyle (ör. Account) ilişkilendirilmemelidir. Veriler her ilişkilendirildiğinde veya ilişkilendirme, mevcut bölümde (9.8.6 İşletim sistemi düzeyinde ve ortam verileri) belirtilen şartlara uymayan diğer işletim sistemi bileşenlerine aktarılmayacaktır., her paylaşıldığında. Bu tür işlevler Android SDK API'si olarak oluşturulmadığı sürece (AmbientContext, HotwordDetectionService).

    • [C-1-6] Uygulama veya tescilli araçlar tarafından toplanan ve cihazda ya da güvenilir bilgi işlem tabanı bulut ortamında herhangi bir biçimde depolanan bu tür verilerin silinmesi için kullanıcıya olanak TANINMALIDIR. Kullanıcı verileri silmeyi seçerse toplanan tüm geçmiş veriler KALDIRILMALIDIR.

    • [C-1-7] AppSearch veya tescilli yöntemlerle toplanan verilerin Android platformunda (ör. başlatıcı) gösterilmesini devre dışı bırakmak için kullanıcıya bir seçenek SUNULMALIDIR.

    Android 17'de eklenen şartların başlangıcı

    • [C-1-8] Ortama veri girişi ve çıkışını ayrıntılı olarak açıklayan, erişilebilir ve kapsamlı günlükler oluşturma yöntemi SAĞLANMALIDIR.

    • [C-1-9] Doğrudan internet erişimi OLMAMALIDIR.

    • [C-1-10] Kullanıcı arayüzünü gösteren ana makine APK'sında veri görünür hale getirilmediği sürece kullanıcı arayüzü uzaktan GÖSTERİLEBİLİR.

    • [C-1-11] Hizmetleri diğer sistem bileşenlerinden ayrı tutmalıdır (ör. hizmeti bağlamamalı veya işlem kimliklerini korumalı yürütme ortamında olmayan uygulamalarla paylaşmamalıdır).

    • [C-1-12] YALNIZCA aşağıdaki durumlarda hassas verilerin çıkışına İZİN VERİLMELİDİR:

      • Veriler her paylaşıldığında belirli bir hesaplama için kullanıcı niyetiyle açıkça başlatılmış olması* VEYA
      • Gizliliği korumaya yönelik bir mekanizma kullanma (ör. RAPPOR / gizli birleştirilmiş hesaplamalar gibi diferansiyel gizlilik teknolojileri).
    • [C-1-13] YALNIZCA aşağıdaki yollarla hassas verilerin sızdırılmasına İZİN VERİLMELİDİR:

      • PCCSandbox sisteme ait hizmetinde izin verilenler listesinde eklenmiş VE kendisi de korumalı yürütme ortamı şartlarına (9.8.6) uyan bir sisteme ait hizmet, VEYA
      • Belirlenmiş bir Private Compute Core (PCC) Gateway APK'sı (9.8.15'te tanımlanmıştır).
    • [C-1-14] Uçtan uca şifrelenmediği sürece (ör. Android Backup Service kullanılarak) hassas verilerden çıkarılan verilerin bulut yedeklemeleri YAPILMAMALIDIR.

    • [C-SR-1] İNTERNET izni İSTENMEMESİ ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-2] Yalnızca herkese açık açık kaynak uygulamaları tarafından desteklenen yapılandırılmış API'ler aracılığıyla internete erişilmesi ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-4] Android SDK API'si veya benzer bir OEM'ye ait açık kaynaklı depo ile uygulanması ve / veya korumalı alan uygulamasıyla gerçekleştirilmesi ŞİDDETLE TAVSİYE EDİLİR (bkz. 9.8.15 Korumalı alan API uygulamaları).

    Android 17'de şartların başlangıcı değişti

    Cihaz uygulamaları, System API'yi ContentCaptureService, AppSearchManager.index, DynamicInstrumentationEventService veya verileri yukarıda açıklandığı şekilde yakalayan herhangi bir tescilli hizmeti uygulayan bir hizmet içeriyorsa:

    • [C-2-1] Kullanıcıların hizmetlerin yerine kullanıcı tarafından yüklenebilen bir uygulama veya hizmeti kullanmasına İZİN VERİLMEMELİDİR ve bu tür verilerin yalnızca önceden yüklenmiş hizmetler tarafından yakalanmasına İZİN VERİLMELİDİR.

    • [C-2-2] Önceden yüklenmiş hizmetler mekanizması dışındaki uygulamaların bu tür verileri yakalamasına İZİN VERİLMEMELİDİR.

    • [C-2-3] Hizmetleri devre dışı bırakmak için net ve erişilebilir bir kullanıcı olanağı SAĞLANMALIDIR.

    • [C-2-4] Hizmetlerin sahip olduğu Android izinlerini yönetmek için kullanıcı uygunluğu sağlanmalıdır ve Bölüm 9.1'de açıklanan Android izin modeli'ne uyulmalıdır. İzin.

    • [C-SR-3] Aşağıdakiler hariç olmak üzere, hizmetlerin diğer sistem bileşenlerinden (ör. hizmeti bağlamamak veya işlem kimliklerini paylaşmamak) ayrı tutulması ŞİDDETLE TAVSİYE EDİLİR:
      • Telefon, Kişiler, Sistem Arayüzü ve Medya

    9.8.7. Pano Erişimi

    Cihaz uygulamaları:

    • [C-0-1] Üçüncü taraf uygulaması varsayılan IME değilse veya şu anda odaklanılmış uygulama değilse pano verilerinden kırpılmış veriler (ör. ClipboardManager API'si aracılığıyla) döndÜRÜLMEMELİDİR.

    • [C-0-2] Pano verileri, panoya son yerleştirildikten veya panodan okunduktan sonra en fazla 60 dakika içinde temizlenmelidir.

    9.8.8. Konum

    Konum, Android Konum sınıfındaki bilgilerin( ör. enlem, boylam, yükseklik) yanı sıra konuma dönüştürülebilen tanımlayıcıları da içerir. Konum, DGPS (Farklı Küresel Konum Belirleme Sistemi) kadar hassas veya ülke düzeyindeki konumlar (ör. ülke kodu konumu - MCC - Mobil Ülke Kodu) kadar kaba olabilir.

    Aşağıda, kullanıcının konumunu doğrudan elde eden veya kullanıcının konumuna dönüştürülebilen konum türlerinin listesi verilmiştir. Bu liste kapsamlı olmasa da konumun doğrudan veya dolaylı olarak neyden elde edilebileceğine dair bir örnek olarak kullanılabilir:

    • GPS/GNSS/DGPS/PPP

      • Küresel Konum Belirleme Çözümü veya Küresel Navigasyon Uydu Sistemi ya da Diferansiyel Küresel Konum Belirleme Çözümü
      • Ham GNSS Ölçümleri ve GNSS Durumu da buna dahildir.
        • Hassas konum, ham GNSS ölçümlerinden elde edilebilir.
    • Aşağıdakiler gibi benzersiz tanımlayıcılara sahip kablosuz teknolojiler:

      • Kablosuz erişim noktaları (MAC, BSSID, ad veya SSID)
      • Bluetooth/BLE (MAC, BSSID, ad veya SSID)
      • UWB (MAC, BSSID, ad veya SSID)
      • Baz istasyonu kimliği (3G, 4G, 5G vb., benzersiz tanımlayıcılara sahip gelecekteki tüm hücresel modem teknolojileri dahil)

    Birincil referans noktası olarak, ACCESS_FINE_Location veya ACCESS_COARSE_Location izinleri gerektiren Android API'lerine bakın.

    Cihaz uygulamaları:

    • [C-0-1] Kullanıcının açık izni veya kullanıcı başlatması olmadan cihazın konum ayarı ile kablosuz/Bluetooth tarama ayarları AÇILMAMALI/KAPATILMAMALIDIR.

    • [C-0-2] Kullanıcılara, son konum istekleri, uygulama düzeyinde izinler ve konumu belirlemek için Wi-Fi/Bluetooth taramasının kullanımı da dahil olmak üzere konumla ilgili bilgilere erişme olanağı TANINMALIDIR.

    • [C-0-3] MUST ensure that the application using Emergency Location Bypass API LocationRequest.setLocationSettingsIgnored() is a user initiated emergency session (e.g., dial 911 or text to 911). Ancak Otomotiv'de, kaza/olay algılanması durumunda (ör. eCall şartlarını karşılamak için) araç, etkin kullanıcı etkileşimi olmadan acil durum oturumu başlatabilir.

    • [C-0-4] Acil Durum Konumunu Atlama API'lerinin, 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ştiğinde kullanıcıya hatırlatma bildirimi planlanmalıdır.

    Android 17'de eklenen şartların başlangıcı

    Sistem uygulaması olmayan bir ön planda çalışan uygulama, cihazın tam konumuna eriştiğinde cihaz:

    • [C-SR-1] Kullanıcı tarafından görülebilen bir göstergenin görüntülenmesi ŞİDDETLE TAVSİYE EDİLİR.

    9.8.9. Yüklü uygulamalar

    API düzeyi 30 veya sonraki sürümleri hedefleyen Android uygulamaları, varsayılan olarak diğer yüklü uygulamalarla ilgili ayrıntıları göremez (Android SDK belgelerindeki Paket görünürlüğü bölümüne bakın).

    Cihaz uygulamaları:

    • [C-0-1] Uygulama, yönetilen API'ler aracılığıyla diğer yüklü uygulamayla ilgili ayrıntıları zaten göremiyorsa API düzeyi 30 veya üstünü hedefleyen hiçbir uygulamaya diğer yüklü uygulamalarla ilgili ayrıntıları sunMAMALIDIR. Buna, cihaz uygulayıcısı tarafından eklenen veya dosya sistemi üzerinden erişilebilen özel API'ler tarafından açığa çıkarılan ayrıntılar dahildir ancak örnekler bunlarla sınırlı değildir.

    • [C-0-2] Harici depolama alanında başka bir uygulamanın özel, uygulamaya özgü dizinindeki dosyalara hiçbir uygulamanın okuma veya yazma erişimi OLMAMALIDIR. Tek istisnalar şunlardır:

      • Harici depolama alanı sağlayıcı yetkilisi (ör. DocumentsUI gibi uygulamalar).

      • Dosyaları uygulama depolama alanına indirmek için "downloads" sağlayıcı yetkisini kullanan Download Provider.

      • Dosyaların başka bir cihaza aktarılmasını sağlamak için ayrıcalıklı izin ACCESS_MTP'yı kullanan, platform tarafından imzalanmış 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 ediyorsa:

    • [C-1-1] MUST support generating connectivity bug reports via BUGREPORT_MODE_TELEPHONY with BugreportManager.

    • [C-1-2] Rapor oluşturmak için BUGREPORT_MODE_TELEPHONY her kullanıldığında kullanıcı izni ALINMALIDIR ve kullanıcıdan uygulamadan gelen tüm gelecekteki istekleri onaylaması İSTENMEMELİDİR.

    • [C-1-3] Oluşturulan rapor, kullanıcının açık izni olmadan istekte bulunan uygulamaya döndürülmemelidir.

    • [C-1-4] BUGREPORT_MODE_TELEPHONY kullanılarak oluşturulan raporlar EN AZ şu bilgileri içermelidir:

      • 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 raporlarda aşağıdakiler yer ALMAMALIDIR:

      • Bağlantı sorunlarını gidermeyle doğrudan ilgili olmayan her türlü bilgi.

      • Kullanıcı tarafından yüklenen uygulama trafiği günlükleri veya kullanıcı tarafından yüklenen uygulamaların/paketlerin ayrıntılı profilleri (UID'ler kabul edilir, paket adları kabul edilmez).

    • Herhangi bir kullanıcı kimliğiyle ilişkilendirilmeyen ek bilgiler içerebilir. (ör. tedarikçi günlükleri).

    Cihaz uygulamaları hata raporlarına ek bilgiler (ör. satıcı günlükleri) ekliyorsa 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ı ŞİDDETLE TAVSİYE EDİ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 bloblarını paylaşma

    Android, BlobStoreManager aracılığıyla uygulamaların, seçilen bir uygulama grubuyla paylaşılmak üzere Sisteme veri blobları göndermesine olanak tanır.

    Cihaz uygulamaları, SDK dokümanlarında açıklandığı gibi paylaşılan veri bloblarını 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ına ve müzik tanıma işlemini MusicRecognitionService API'sini uygulayan ayrıcalıklı bir uygulamaya devretmesine olanak tanıyan bir mekanizmayı destekler.

    Cihaz uygulamaları, System API MusicRecognitionManager'ı veya yukarıda açıklandığı gibi ses verilerini yayınlayan herhangi bir tescilli hizmeti uygulayan bir hizmet içeriyorsa:

    • [C-1-1] MusicRecognitionManager'ı çağıranın MANAGE_MUSIC_RECOGNITION iznine sahip olması ZORUNLUDUR.

    • [C-1-2] Tek bir önceden yüklenmiş müzik tanıma uygulamasının MusicRecognitionService işlevini uygulaması ZORUNLUDUR.

    • [C-1-3] Kullanıcıların MusicRecognitionManagerService veya MusicRecognitionService yerine kullanıcı tarafından yüklenebilen bir uygulama ya da hizmet kullanmasına İZİN VERİLMEMELİDİR.

    • [C-1-4] MusicRecognitionManagerService, ses kaydına erişip MusicRecognitionService'yı uygulayan uygulamaya ilettiğinde ses erişiminin AppOpsManager.noteOp / startOp çağrıları aracılığıyla izlenmesi ZORUNLUDUR.

    MusicRecognitionManagerService veya MusicRecognitionService cihaz uygulamaları, kaydedilen ses verilerini depoluyorsa:

    • [C-2-1] Ham ses veya ses parmak izleri hiçbir şekilde diskte ya da 14 günden uzun süre boyunca bellekte sakLANMAMALIDIR.

    • [C-2-2] Bu tür veriler, her paylaşıldığında kullanıcının açık izni alınmadığı sürece MusicRecognitionService dışında paylaşılMAMALIDIR.

    9.8.13. SensorPrivacyManager

    Cihaz uygulamaları, kullanıcıya cihaz uygulamasında kamera ve/veya mikrofon girişini kapatmak için yazılım olanağı sunuyorsa:

    • [C-1-1] İlgili supportsSensorToggle() API yöntemi için "true" değerini doğru şekilde döndürmelidir.

    • [C-1-2] BİR UYGULAMA, engellenmiş bir mikrofona veya kameraya erişmeye çalıştığında, SENSÖRÜN ENGELLENDİĞİNİ açıkça BELİRTEN ve bu koşulu karşılayan AOSP uygulamasına göre engellemeyi sürdürme veya engellemeyi kaldırma seçeneği sunan, kapatılamayan bir kullanıcı arayüzü ÖZELLİĞİ SUNMALIDIR.

    • [C-1-3] YALNIZCA uygulamalara boş (veya sahte) kamera ve ses verileri aktarılmalı ve kullanıcının kamerayı açmaması nedeniyle hata kodu bildirilmemelidir veya yukarıdaki [C-1-2] uyarınca sunulan kullanıcı olanağı aracılığıyla mikrofon.

    9.8.14. Yok

    Android 17'de şartların başlangıcı değişti

    9.8.15. Private Compute Core ve Gateway Application uygulamaları

    Android 17'de şartların başlangıcı değişti

    Android, bir dizi temsilci API aracılığıyla güvenli işletim sistemi düzeyinde ve ortam verilerini 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'ya (Sandboxed API Implementation olarak bilinir) devredilebilir.

    Bölüm 9.8.6'da (işletim sistemi düzeyinde ve ortam verileri) açıklanan hassas verilerin cihaz üzerinde işlenmesini gerçekleştiren uygulamaları içeren cihaz uygulamalarının, aşağıda açıklanan Private Compute Core (PCC) çerçevesini kullanması ŞİDDETLE TAVSİYE EDİLİR.

    Korumalı alan API'si uygulaması PCC ortamındaki bileşenler:

    • [C-0-1] INTERNET izni İSTENMEMELİDİR.

    • [C-0-1] Manifest beyanında android:isPrivateComputeCoreProcess="true" özelliğiyle BEYAN EDİLMELİDİR.

    • [C-0-2] YALNIZCA gizliliği korumaya yönelik mekanizmalar kullanan, herkese açık açık kaynaklı uygulamalar tarafından desteklenen yapılandırılmış API'ler aracılığıyla veya dolaylı olarak Android SDK API'leri üzerinden internete erişmelidir. Gizliliği korumaya yönelik mekanizma, "yalnızca toplu analizlere izin veren ve kaydedilen etkinliklerin veya türetilen sonuçların tek tek kullanıcılarla eşleştirilmesini engelleyen" olarak tanımlanır.Bu sayede, kullanıcı başına verilerin incelenebilmesi önlenir (ör. RAPPOR gibi bir diferansiyel gizlilik teknolojisi kullanılarak uygulanır).

    • [C-0-2] Cihaz sistem görüntüsüne önceden yüklenmelidir.

    • [C-0-3] Hizmetleri diğer sistem bileşenlerinden ayrı tutmalıdır (ör. hizmeti bağlamamak veya işlem kimliklerini PCC UID'si olarak çalışmayan uygulamalarla paylaşmamak). Aşağıdakiler hariç:

      • Telefon, Kişiler, Sistem Arayüzü ve Medya
    • [C-0-4] Kullanıcıların hizmetleri, kullanıcı tarafından yüklenebilen bir uygulama veya hizmetle değiştirmesine İZİN VERİLMEMELİDİR.

    • [C-0-5] OEM tarafından atanmış (PCC Manager System Service'te tanımlanan uygun bir sistem rolüne sahip) ve uygun izinlere sahip önceden yüklenmiş hizmetlerin bu tür verileri yakalamasına İZİN VERİLMELİDİR. Değiştirme özelliği AOSP'ye yerleştirilmediği sürece (ör. dijital asistan uygulamaları için) 9.8.6'da açıklanan hassas ortam verileri.

    • [C-0-6] Önceden yüklenmiş hizmetler dışında hiçbir uygulamanın bu tür verileri yakalamasına İZİN VERİLMEMELİDİR. Bu tür bir yakalama özelliği bir Android SDK API'si ile uygulanmadığı sürece.

    • [C-0-7] Hizmetlerin devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.

    • [C-0-8] Hizmetler tarafından tutulan Android izinlerini yönetmek için kullanıcı uygunluğu sağlanmalıdır ve Bölüm 9.1'de açıklanan Android izin modeline uyulmalıdır. İzin.

    • [C-0-9] Ana uygulama sürecinden ve diğer korumalı alan bileşenlerinden ayrı olarak, benzersiz ve çerçeve tarafından atanmış bir UID ile özel bir süreçte ÇALIŞMALIDIR.

    Android 17'de eklenen şartların başlangıcı

    PCC ortamı bileşenlerinin gerektirdiği tüm ağ erişimi, PCC Ağ Geçidi Uygulaması olarak işlev gören belirlenmiş bir APK üzerinden proxy'lenmelidir. Belirlenen bileşenler:

    • [C-1-1] MUST be granted the android.permission.PROVIDE_PRIVATE_COMPUTE_SERVICES privileged permission. Bu izin, uygulamayı PCC Gateway Application olarak tanımlar.

    • [C-1-2] Kaynak kodu, herkese açık olarak doğrulanabilir şekilde sunulmalıdır.

    • [C-1-3] 9.8.6 bölümünde tanımlandığı şekilde, tüm veri çıkışları için gizliliği korumaya yönelik mekanizmalar KULLANILMALIDIR.

    • [C-1-4] Etkinleştirildiğinde gizliliği korumaya yönelik davranışın doğrulanması için ağ isteklerinin, sunucu uç noktalarının ve diğer ilgili verilerin kaydedilmesi de dahil olmak üzere PCC çerçevesinin denetim modu DESTEKLENMELİDİR.

    9.8.16. Sürekli ses ve kamera verileri

    Cihaz uygulamaları, bölüm 9.8.2 veya bölüm 9.8.6'da açıklanan verilerden herhangi birini yakalarsa ve bu tür uygulamalar, AudioRecord, SoundTrigger veya diğer Ses API'leri aracılığıyla arka planda (sürekli olarak) elde edilen Ses verilerini YA DA CameraManager veya diğer Kamera API'leri aracılığıyla arka planda (sürekli olarak) elde edilen Kamera verilerini kullanırsa:

    • [C-0-1] Aksi belirtilmedikçe, ilgili bir gösterge (9.8.2 Kayıt bölümünde belirtildiği gibi kamera ve/veya mikrofon) ZORUNLU olarak uygulanmalıdır:

      • Bu erişim, aşağıdaki rollerden birini veya daha fazlasını içeren bir paket aracılığıyla korumalı alana alınmış bir uygulamada gerçekleştirilir (bkz. 9.8.15 Korumalı alana alınmış API uygulaması): System UI Intelligence, System Ambient Audio Intelligence, System Audio Intelligence, System Notification Intelligence, System Text Intelligence veya System Visual Intelligence.

      • 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, SOURCE_HOTWORD ses kaynağı olarak sağlanarak Dijital Asistan uygulaması tarafından yardımcı amaçlarla gerçekleştirilir.

      • 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ı izni alınması ŞİDDETLE TAVSİYE EDİLİR ve bu işlevler varsayılan olarak devre dışı bırakılmalıdır.

    • [C-SR-2] Uzak bir giyilebilir cihazdan gelen kamera verilerine aynı işlemin (yani 9.8.2 Kayıt, 9.8.6 İşletim sistemi düzeyinde ve ortam verileri, 9.8.15 Korumalı alan API uygulamaları ve 9.8.16 Sürekli ses ve kamera verileri bölümlerinde belirtilen kısıtlamalara uyulması) uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, uzak bir giyilebilir cihazdan Kamera veya Mikrofon verileri alıyorsa ve verilere Android OS, korumalı alan uygulaması veya WearableSensingManager tarafından oluşturulan korumalı alan işlevinin dışında şifrelenmemiş biçimde erişiliyorsa:

    • [C-1-1] Uzak giyilebilir cihaza ek bir gösterge görüntülemesi gerektiğini BELİRTmelidir.

    Cihazlar, atanmış anahtar kelime olmadan bir Dijital Asistan Uygulaması ile etkileşim kurma özelliği sunuyorsa (genel kullanıcı sorgularını işleme veya kamera aracılığıyla kullanıcı varlığını analiz etme), bu cihazlar:

    • [C-2-1] Bu tür bir uygulamanın, android.app.role.ASSISTANT rolüne sahip 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. Telemetri

    Android, sistem ve uygulama günlüklerini StatsLog API'lerini kullanarak depolar. 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 gizliliğe duyarlı olarak sınıflandırılan verileri toplama yöntemi de sunar. Özellikle, StatsManager::query API, StatsLog'da tanımlanan kısıtlanmış metrik kategorilerini sorgulama olanağı sağlar.

    StatsManager'dan kısıtlanmış metrikleri sorgulayan ve toplayan tüm uygulamalar:

    • [C-0-1] Cihazdaki tek uygulama/uygulama olmalı ve READ_RESTRICTED_STATS iznine sahip olmalıdır.

    • [C-0-2] YALNIZCA gizliliği korumaya yönelik bir mekanizma kullanarak cihazın telemetri verilerini ve günlüğünü göndermelidir. Gizliliği korumaya yönelik mekanizma, "yalnızca toplu analizlere izin veren ve günlük kaydı yapılan etkinliklerin veya türetilmiş sonuçların tek tek kullanıcılarla eşleştirilmesini engelleyen" olarak tanımlanır.Bu sayede, kullanıcı başına verilerin incelenebilmesi önlenir (ör. RAPPOR gibi bir diferansiyel gizlilik teknolojisi kullanılarak uygulanır).

    • [C-0-3] Bu tür veriler, cihazdaki herhangi bir kullanıcı kimliğiyle (ör. Hesap) ilişkilendirilmemelidir.

    • [C-0-4] Bu tür veriler, mevcut bölümde belirtilen şartlara uymayan diğer işletim sistemi bileşenleriyle paylaşılMAMALIDIR (9.8.17. Telemetri).

    • [C-0-5] Gizliliği koruyan telemetri verilerinin toplanmasını, kullanılmasını ve paylaşılmasını etkinleştirmek/devre dışı bırakmak için kullanıcıya bir olanak SUNULMALIDIR.

    • [C-0-6] Veriler cihazda herhangi bir biçimde depolanıyorsa uygulama tarafından toplanan bu tür verilerin silinmesi için kullanıcıya olanak TANINMALIDIR. Kullanıcı verileri silmeyi seçtiyse cihazda depolanan tüm veriler KALDIRILMALIDIR.

    • [C-0-7] Gizliliği korumaya yönelik temel protokol uygulamasının açık kaynaklı bir depoda açıklanması ZORUNLUDUR.

    • [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ı ZORUNLU olarak uygulanmalıdır.

    9.8.18. Ajan tabanlı işlevlerin gizliliği

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları:

    • [C-0-1] AppFunctions'ı yürüten tüm bileşenlerin EXECUTE_APP_FUNCTIONS veya EXECUTE_APP_FUNCTIONS_SYSTEM iznine sahip olmasını ve cihazda önceden yüklenmiş olmasını SAĞLAMALIDIR.

    • [C-0-2] AppFunction çağrısı YALNIZCA açık bir kullanıcı işleminin doğrudan sonucu olarak çağrılmalı ve bu, hem hangi uygulamanın çağrıldığını hem de bu uygulamada gerçekleştirilecek birincil işlemi kullanıcıya açıkça belirtmelidir.

    • [C-0-1] ve [C-0-2] karşılanmadığı sürece, üçüncü taraf bir uygulamanın AppFunction'ları keşfetme veya yürütme isteği proxy'lenmemeli ya da değiştirilmemelidir [C-0-3].

    • [C-0-4] Sistem bileşenleri, 9.8.6'da tanımlandığı şekilde bir Korunan Yürütme Ortamı'nda çalışmadığı sürece, sistem bileşenlerinin dürtü oluşturmak veya parametreleştirmek için hassas işletim sistemi düzeyinde ya da ortam verilerini (9.8.6 İşletim sistemi düzeyinde ve ortam verisi korumaları bölümünde tanımlandığı şekilde) veya türevlerini kullanmasına İZİN VERİLMEMELİDİR.

    9.9. Veri Depolama Şifrelemesi

    Tüm cihazlar, 9.9.1 bölümündeki şartları KARŞILAMALIDIR. Bu belgedeki API düzeyinden daha eski bir API düzeyinde kullanıma sunulan cihazlar, 9.9.2 ve 9.9.3 bölümlerindeki şartlardan muaftır. Bunun yerine, cihazın kullanıma sunulduğu API düzeyine karşılık gelen Android Uyumluluk Tanımı belgesinin 9.9 bölümündeki şartları KARŞILAMALIDIR.

    9.9.1. Doğrudan Başlatma

    Cihaz uygulamaları:

    • [C-0-1] Depolama Şifreleme'yi desteklemeseler bile Direct Boot mode API'lerini uygulamalıdır.

    • [C-0-2] ACTION_LOCKED_BOOT_COMPLETED ve ACTION_USER_UNLOCKED amaçları, doğrudan başlatmaya uygun uygulamalara, cihaz şifrelemeli (DE) ve kimlik bilgisi şifrelemeli (CE) depolama konumlarının kullanıcı için kullanılabilir olduğunu bildirmek üzere yayınlanmaya DEVAM ETMELİDİR.

    9.9.2. Şifreleme şartları

    Cihaz uygulamaları:

    • [C-0-1] Uygulama özel verileri (/data bölümü) ve cihazın kalıcı, çıkarılamayan bir parçasıysa uygulama ortak depolama bölümü (/sdcard bölümü) ŞİFRELENMELİDİR.
    • [C-0-2] Kullanıcı, kutudan çıkarma kurulum deneyimini tamamladığında veri depolama şifrelemesi varsayılan olarak ETKİNLEŞTİRİLMELİDİR.
    • [C-0-3] Aşağıdaki iki şifreleme yönteminden birini uygulayarak yukarıdaki veri depolama şifreleme koşulunu KARŞILAMALIDIR:

    9.9.3. Şifreleme Yöntemleri

    Cihaz uygulamaları şifrelenmişse:

    • [C-1-1] Kullanıcıdan kimlik bilgisi istemeden başlatılMALI ve ACTION_LOCKED_BOOT_COMPLETED mesajı yayınlandıktan sonra Doğrudan Başlatma özelliğini destekleyen uygulamaların Cihaz Şifrelenmiş (DE) depolama alanına erişmesine izin VERİLMELİDİR.

    • [C-1-2] Aşağıdaki iki koşul da karşılanana kadar Kimlik Bilgisi Şifrelenmiş (CE) depolamaya erişime İZİN VERİLMEMELİDİR:

      • Kullanıcı, birincil kimlik doğrulama yöntemini (ör. şifre, desen veya PIN) kullanarak cihazın kilidini açar.
      • ACTION_USER_UNLOCKED mesajı yayınlanır.
    • [C-1-13] Kullanıcı tarafından sağlanan kimlik bilgileri, kayıtlı bir emanet anahtarı veya bölüm 9.9.4'teki şartları karşılayan yeniden başlatma işleminde devam ettirme uygulaması olmadan CE korumalı depolama alanının kilidini açmak için herhangi bir yöntem SUNULMAMALIDIR.

    • [C-1-4] Doğrulanmış Başlatma KULLANILMALIDIR.

    9.9.3.1. Meta Veri Şifreleme ile Dosya Tabanlı Şifreleme

    Cihaz uygulamaları, meta veri şifrelemeli dosya tabanlı şifreleme kullanıyorsa:

    • [C-1-5] Dosya içerikleri ve dosya sistemi meta verileri, AES-256-XTS veya Adiantum kullanılarak ŞİFRELENMELİDİR. AES-256-XTS, XTS modunda çalıştırılan 256 bit şifreleme anahtarı uzunluğuna sahip Gelişmiş Şifreleme Standardı'nı ifade eder. Anahtarın tam uzunluğu 512 bittir. Adiantum, https://github.com/google/adiantum adresinde belirtildiği gibi Adiantum-XChaCha12-AES'i ifade eder. Dosya sistemi meta verileri, dosya boyutları, sahiplik, modlar ve genişletilmiş özellikler (xattrs) gibi verilerdir.
    • [C-1-6] Dosya adları, AES-256-CBC-CTS, AES-256-HCTR2 veya Adiantum kullanılarak ŞİFRELENMELİDİR.
    • [C-1-12] Cihazda Gelişmiş Şifreleme Standardı (AES) talimatları (ör. ARM tabanlı cihazlarda ARMv8 Cryptography Extensions veya x86 tabanlı cihazlarda AES-NI) varsa dosya adı, dosya içeriği ve dosya sistemi meta verileri şifrelemesi için yukarıdaki AES tabanlı seçenekler KULLANILMALIDIR, 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 kriptografik olarak güçlü ve geri döndürülemez bir anahtar türetme işlevi (ör. HKDF-SHA512) KULLANILMALIDIR. "Kriptografik olarak güçlü ve geri döndürülemez", anahtar türetme işlevinin en az 256 bitlik bir güvenlik gücüne sahip olduğu ve girişleri üzerinde bir sözde rastgele işlev ailesi gibi davrandığı anlamına gelir.
    • [C-1-14] Farklı şifreleme amaçları için (ör. hem şifreleme hem de anahtar türetme veya iki farklı şifreleme algoritması için) aynı dosya tabanlı şifreleme (FBE) anahtarları veya alt anahtarları KULLANMAMALIDIR.
    • [C-1-15] Kalıcı depolama alanındaki şifrelenmiş dosya içeriklerinin silinmemiş tüm bloklarının, hem dosyaya hem de dosyadaki ofsete bağlı olan şifreleme anahtarı ve başlatma vektörü (IV) kombinasyonları kullanılarak şifrelenmesini SAĞLAMALIDIR. Ayrıca, şifrelemenin yalnızca 32 bit IV uzunluğunu destekleyen satır içi şifreleme donanımı kullanılarak yapıldığı durumlar hariç olmak üzere, bu tür tüm kombinasyonlar FARKLI OLMALIDIR.
    • [C-1-16] Kalıcı depolamadaki farklı dizinlerde bulunan ve silinmemiş tüm şifrelenmiş dosya adlarının, şifreleme anahtarı ve ilk kullanıma hazırlama 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) kombinasyonları kullanılarak şifrelendiğinden EMİN OLMALIDIR.

    • CE ve DE depolama alanlarını ve dosya sistemi meta verilerini koruyan anahtarlar:

      • [C-1-7] Donanım tabanlı bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma'ya ve cihazın donanım güven köküne BAĞ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 belirtmediyse CE anahtarları varsayılan bir şifreye bağlanmalıdır.
      • [C-1-10] Benzersiz ve farklı OLMALIDIR. Başka bir deyişle, hiçbir kullanıcının CE veya DE anahtarı, başka bir kullanıcının CE veya DE anahtarıyla eşleşmemelidir.
      • [C-1-11] Zorunlu olarak desteklenen şifreler, anahtar uzunlukları ve modlar KULLANILMALIDIR.
      • [C-1-12] Bootloader'ın kilidi açılırken ve kilitlenirken burada açıklandığı gibi güvenli bir şekilde silinmelidir.
    • Önceden yüklenmiş temel uygulamalar (ör. Alarm, Telefon, Mesajlaşma) doğrudan başlatmaya uygun HALE GETİRİLMELİDİR.

    Yukarı akış 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 Düzeyinde Şifreleme

    Cihaz uygulamaları, kullanıcı başına blok düzeyinde şifreleme kullanıyorsa:

    • [C-1-1] 9.5 bölümünde açıklandığı gibi çok kullanıcılı desteği ETKİNLEŞTİRMELİDİR.
    • [C-1-2] Ham bölümler veya mantıksal birimler kullanarak kullanıcı başına bölümler SAĞLANMALIDIR.
    • [C-1-3] Temel blok cihazların şifrelenmesi için kullanıcı başına benzersiz ve farklı şifreleme anahtarları KULLANILMALIDIR.
    • [C-1-4] Kullanıcı bölümlerinin blok düzeyinde şifrelenmesi için AES-256-XTS KULLANILMALIDIR.

    • Kullanıcı başına blok düzeyinde şifrelenmiş cihazları koruyan anahtarlar:

      • [C-1-5] Donanım tabanlı bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR. Bu anahtar deposu, Doğrulanmış Başlatma'ya ve cihazın donanım güven köküne BAĞ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ğinin "dm-crypt" özelliği kullanılarak uygulanabilir.

    9.9.4. Yeniden Başlatmada Devam Ettir

    Yeniden başlatmada devam etme özelliği, OTA tarafından başlatılan yeniden başlatma işleminden sonra, henüz doğrudan başlatmayı desteklemeyenler de dahil olmak üzere tüm uygulamaların CE depolama alanının kilidinin açılmasına olanak tanır. Bu özellik, kullanıcıların yeniden başlatma işleminden sonra yüklü uygulamalardan bildirim almasını sağlar.

    Yeniden başlatma işleminden sonra devam ettirme özelliğinin uygulanması, bir cihaz saldırganın eline geçtiğinde saldırganın, cihaz açık olsa, CE depolama alanı kilidi açılmış olsa ve kullanıcı OTA aldıktan sonra cihazın kilidini açmış olsa bile kullanıcının CE ile şifrelenmiş verilerini kurtarmasının son derece zor olmasını sağlamaya devam etmelidir. Çalışanların oluşturduğu saldırılara karşı direnç için saldırganın, yayın kriptografik imzalama anahtarlarına erişim kazandığını da varsayıyoruz.

    Özellikle:

    • [C-0-1] CE depolama alanı, cihaza fiziksel olarak sahip olan ve ardından şu özelliklere ve sınırlamalara sahip olan saldırganlar tarafından bile OKUNAMAZ:

      • Rastgele mesajları imzalamak için herhangi bir satıcının veya şirketin imzalama anahtarını kullanabilir.
      • Cihazın OTA almasına neden olabilir.
      • Aşağıda belirtilenler dışında herhangi bir donanımın (AP, flash vb.) çalışmasını değiştirebilir ancak bu tür değişiklikler en az bir saatlik gecikmeye ve RAM içeriklerini yok eden bir güç döngüsüne neden olur.
      • Kurcalamaya karşı korumalı donanımın (ör. Titan M) çalışması değiştirilemez.
      • Canlı cihazın RAM'i okunamıyor.
      • Kullanıcının kimlik bilgisi (PIN, desen, şifre) alınamıyor veya başka bir şekilde girilmesi sağlanamıyor.

    Örneğin, burada bulunan tüm açıklamaları uygulayan ve bunlara uyan bir cihaz uygulaması [C-0-1] ile uyumlu olacaktır.

    9.10. Cihaz bütünlüğü

    Aşağıdaki şartlar, cihaz bütünlüğünün durumuyla ilgili şeffaflık sağlar. Cihaz uygulamaları:

    • [C-0-1] Sistem API'si yöntemiyle PersistentDataBlockManager.getFlashLockState() önyükleyici durumunun sistem görüntüsünün yüklenmesine izin verip vermediğini doğru şekilde bildirmelidir.

    • [C-0-2] Cihaz bütünlüğü için Doğrulanmış Başlatma'yı DESTEKLEMELİDİR.

    Cihaz uygulamaları, Android'in önceki bir sürümünde Doğrulanmış Başlatma'yı desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu özellik için destek eklenemiyorsa bu şarttan MUAF TUTULABİLİR.

    Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Cihaz uygulamaları bu özelliği destekliyorsa:

    • [C-1-1] Platform özellik işaretini BİLDİRMELİDİR android.software.verified_boot.
    • [C-1-2] Her başlatma sırasında doğrulama YAPILMALIDIR.
    • [C-1-3] Doğrulamayı, güven kökü olan değişmez bir donanım anahtarından başlatmalı ve sistem bölümüne kadar devam etmelidir.
    • [C-1-4] Bir sonraki aşamadaki kodu yürütmeden önce, bir sonraki aşamadaki tüm baytların bütünlüğünü ve gerçekliğini kontrol etmek için doğrulamanın her aşaması UYGULANMALIDIR.
    • [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'in mevcut önerileri kadar güçlü doğrulama algoritmaları KULLANILMALIDIR.
    • [C-1-6] Kullanıcı, yine de başlatmayı denemeyi kabul etmediği sürece sistem doğrulaması başarısız olduğunda başlatmanın tamamlanmasına İZİN VERİLMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALIDIR.
    • [C-1-7] Kullanıcı, önyükleyiciyi açıkça kilidini açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERİLMEMELİDİR.
    • [C-1-8] MUST use tamper-evident storage: for storing whether the bootloader is unlocked. Kurcalamaya karşı korumalı depolama, önyükleyicinin depolama biriminin Android'in içinden kurcalanıp kurcalanmadığını algılayabileceği anlamına gelir.
    • [C-1-9] Cihaz kullanılırken kullanıcıya istem göstermeli ve bootloader'ın kilitli moddan kilidi açık moda geçişine izin vermeden önce fiziksel onay istemelidir.
    • [C-1-10] Android tarafından kullanılan bölümler (ör. önyükleme, sistem bölümleri) için geri alma koruması uygulanmalı ve izin verilen minimum işletim sistemi sürümünü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı kullanılmalıdır.
    • [C-1-11] Bootloader kilidi açma ve kilitleme sırasında, "9.12" bölümünde belirtildiği gibi tüm kullanıcı verileri güvenli bir şekilde silinmelidir. Veri Silme (kullanıcı verileri bölümü ve NVRAM alanları dahil).

    • [C-1-14] Sistem yapılandırmasında require-strict-signature olarak listelenen, izin verilenler listesindeki paketler için her yeniden başlatmada en az bir kez imza doğrulanmalıdır.

    • [C-SR-2] Ayrıcalıklı uygulama APK dosyalarının, Doğrulanmış Başlatma ile korunan bölümlere dayalı bir güven zinciriyle doğrulanması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-3] Ayrıcalıklı bir uygulama tarafından APK dosyası dışından yüklenen yürütülebilir yapıtların (ör. dinamik olarak yüklenen kod veya derlenmiş kod) yürütülmeden önce doğrulanması ŞİDDETLE TAVSİYE EDİLİR veya hiç yürütülmemesi ŞİDDETLE TAVSİYE EDİLİR.

    • Kalıcı yazılıma sahip tüm bileşenler (ör. modem, kamera) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum sürümü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.

    Yukarı akış Android Açık Kaynak Projesi, bu özelliğin external/avb/ deposunda tercih edilen bir uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleyiciye entegre edilebilir.

    Cihaz uygulamaları, dosya içeriğini sayfa bazında doğrulayabiliyorsa:

    • [C-2-1] Dosyanın tamamını okumadan dosya içeriğini kriptografik olarak doğrulamayı desteklemelidir.

    • [C-2-2] Okunan içerik yukarıdaki [C-2-1] uyarınca doğrulanmadığında, korunan bir dosyayla ilgili okuma isteklerinin başarılı olmasına İZİN VERİLMEMELİDİR.

    • [C-2-4] Etkinleştirilmiş dosyalar için dosya sağlama toplamını O(1) içinde döndürmELİDİR.

    Cihaz uygulamaları, dosya içeriğini daha önceki bir Android sürümünde güvenilir bir anahtara karşı doğrulama özelliği olmadan başlatıldıysa ve sistem yazılımı güncellemesiyle bu özellik için destek eklenemiyorsa bu cihazlar, şarttan MUAF TUTULABİLİR. Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeğinin fs-verity özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.

    9.11. Anahtarlar ve Kimlik Bilgileri

    Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları bir kapsayıcıda depolamasına ve KeyChain API veya Keystore API aracılığıyla kriptografik işlemlerde kullanmasına olanak tanır. Cihaz uygulamaları:

    • [C-0-1] En az 8.192 anahtarın içe aktarılmasına veya oluşturulmasına İZİN VERİLMELİDİR.

    • [C-0-2] Kilit ekranı kimlik doğrulamasında başarısız denemeler arasında bir zaman aralığı OLMALIDIR. Başarısız deneme sayısı n olmak üzere, 9 < n < 30 için zaman aralığı EN AZ 30 saniye olmalıdır. n > 29 için zaman aralığı değeri, en az 30*2^floor((n-30)/10) saniye veya en az 24 saat olmalıdır (hangisi daha kısaysa).

    • Oluşturulabilecek anahtar sayısını SINIRLAMAMALIDIR.

    Cihaz uygulaması güvenli kilit ekranını desteklediğinde:

    • [C-1-1] Anahtar deposu uygulaması, izole edilmiş bir yürütme ortamıyla YEDEKLENMELİDİR.

    Android 17'de şartların başlangıcı değişti

    • [C-1-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA, ECDH (IKeyMintDevice destekleniyorsa), 3DES ve HMAC şifreleme algoritmaları ile MD5, SHA-1 ve SHA-2 ailesi karma oluşturma işlevlerinin desteklenen IKeyMintDevice veya IKeymasterDevice sürümü tarafından gerekli olan şifreleme algoritmaları ve karma oluşturma işlevlerinin uygulamalarına SAHİP OLMALIDIR.

      Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun erişime kapalı ortamın iç durumuna erişebileceği tüm olası mekanizmaları (DMA dahil) ENGELLEMELİDİR.

      Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.

    • [C-1-3] Kilit ekranı kimlik doğrulaması, izole yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.

    • [C-1-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının kalıcı cihaz tanımlayıcıları olarak kullanılması ENGELLENMELİDİR.

    Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulmuşsa bu cihazın, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf olduğunu unutmayın. Ancak bu cihaz, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmediği sürece bu muafiyet geçerlidir.

    • [C-1-5] Kilitli olmayan durumdan kilitli duruma geçiş için uyku zaman aşımını kullanıcının seçmesine İZİN VERİLMELİDİR. İzin verilen minimum zaman aşımı 15 saniyedir. Baş ünite kapatıldığında veya kullanıcı değiştirildiğinde ekranı kilitleyen otomotiv cihazlarında uyku zaman aşımı yapılandırması OLMAYABİLİR.

    • [C-1-6] IKeymasterDevice 3.0 veya sonraki bir sürümü, ya da IKeyMintDevice 1 veya sonraki bir sürümü DESTEKLEMELİDİR.

    Android 17'de eklenen şartların başlangıcı

    • [C-SR-1] Birincil kimlik doğrulama yöntemleri (ör. PIN, desen veya şifre) için benzersiz başarısız denemeler arasında minimum süre aralığı uygulanması ŞİDDETLE TAVSİYE EDİLİR. Bu süre aralığı, aşağıdakilere göre belirlenmelidir:

      Benzersiz başarısız deneme sayısı Minimum zaman aşımı
      0-4 0
      5 1 dakika
      6 5 dakika
      7 15 dakika
      8 30 dakika
      9 90 dakika
      10 4 saat
      11 12 saat
      12 24 saat
      13 4 gün
      14 13 gün
      15 41 gün
      16 123 gün
      17 1 yıl
      18 3 yıl
      19 9 yıl

    9.11.1. Güvenli kilit ekranı, kimlik doğrulama ve sanal cihazlar

    AOSP uygulaması, bilgi faktörüne dayalı birincil kimlik doğrulamanın ikincil güçlü bir biyometri veya daha zayıf üçüncül yöntemlerle desteklenebileceği katmanlı bir kimlik doğrulama modelini izler.

    Cihaz uygulamaları:

    • [C-SR-1] Aşağıdakilerden yalnızca birinin birincil kimlik doğrulama yöntemi olarak ayarlanması ŞİDDETLE TAVSİYE EDİLİR:

      • Sayısal bir PIN
      • Alfanümerik bir şifre
      • Tam olarak 3x3 noktalı bir ızgarada kaydırma deseni

      Yukarıdaki kimlik doğrulama yöntemlerinin bu belgede önerilen birincil kimlik doğrulama yöntemleri olarak adlandırıldığını unutmayın.

    • [C-0-1] Birincil kimlik doğrulama denemelerinin başarısız olma sayısı SINIRLANDIRILMALIDIR.

    • [C-SR-5] 20 başarısız birincil kimlik doğrulama denemesi üst sınırı uygulanması ve kullanıcılar izin verip özelliği etkinleştirirse başarısız birincil kimlik doğrulama denemeleri sınırı aşıldıktan sonra "Fabrika Verilerine Sıfırlama" işleminin yapılması ŞİDDETLE TAVSİYE EDİ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 entropili olması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-7] PIN uzunluğunun açığa çıkmasını önlemek için 6 basamaktan kısa bir PIN'in kullanıcı etkileşimi olmadan otomatik olarak girilmesine İZİN VERİLMEMESİ ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yol olarak yeni bir kimlik doğrulama yöntemi kullanırsa yeni kimlik doğrulama yöntemi:

    • [C-2-1] Requiring User Authentication For Key Use (Anahtar Kullanımı İçin Kullanıcı Kimlik Doğrulaması Gerekli) bölümünde açıklandığı gibi kullanıcı kimlik doğrulama yöntemi OLMALIDIR.

    Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini bilinen bir sırra göre 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] Girişlerin izin verilen en kısa uzunluğunun entropisi 10 bit'ten büyük OLMALIDIR.

    • [C-3-2] Olası tüm girişlerin maksimum entropisi 18 bit'ten büyük OLMALIDIR.

    • [C-3-3] Yeni kimlik doğrulama yöntemi, AOSP'de uygulanan ve sağlanan önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) herhangi birinin yerini ALMAMALIDIR.

    • [C-3-4] Cihaz Politikası Denetleyicisi (DPC) uygulaması, DevicePolicyManager.setRequiredPasswordComplexity() yöntemiyle PASSWORD_COMPLEXITY_NONE'dan daha kısıtlayıcı bir karmaşıklık sabiti kullanarak veya DevicePolicyManager.setPasswordQuality() yöntemiyle PASSWORD_QUALITY_BIOMETRIC_WEAK'ten daha kısıtlayıcı bir sabit kullanarak şifre koşulları politikasını ayarladığında yeni kimlik doğrulama yöntemi DEVRE DIŞI BIRAKILMALIDIR.

    • [C-3-5] Yeni kimlik doğrulama yöntemleri, 72 saatte bir veya daha kısa aralıklarla önerilen birincil kimlik doğrulama yöntemlerine (ör. PIN, desen, şifre) geri dönmeli YA DA kullanıcılara, verilerinin gizliliğini korumak için bazı verilerin yedeklenmeyeceği konusunda net bir açıklama yapmalıdır.

    Cihaz uygulamaları, kilit ekranının kilidini açmak için önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemenin güvenli bir yolu olarak kabul edilecek biyometri tabanlı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:

    • [C-4-1] 1. Sınıf (eski adıyla Kolaylık) için bölüm 7.3.10'da açıklanan tüm koşulları karşılamalıdır.

    • [C-4-2] Bilinen bir sırra dayalı, önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizmaya SAHİP OLMALIDIR.

    • [C-4-3] Device Policy Controller (DPC) uygulaması, DevicePolicyManager.setKeyguardDisabledFeatures() yöntemini çağırarak ilişkili biyometrik işaretlerden (ör. KEYGUARD_DISABLE_BIOMETRICS, KEYGUARD_DISABLE_FINGERPRINT, KEYGUARD_DISABLE_FACE veya KEYGUARD_DISABLE_IRIS) herhangi biriyle keyguard özellik politikasını ayarladığında ekranın kilidini açmak için yalnızca önerilen birincil kimlik doğrulama yöntemine izin verilmeli ve bu yöntem devre dışı bırakılmalıdır.

    Biyometrik kimlik doğrulama yöntemleri, bölüm 7.3.10'da açıklandığı gibi Sınıf 3 (eski adıyla Güçlü) şartlarını karşılamıyorsa:

    • [C-5-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması, PASSWORD_COMPLEXITY_LOW değerinden daha kısıtlayıcı bir karmaşıklık grubuyla DevicePolicyManager.setRequiredPasswordComplexity() üzerinden veya PASSWORD_QUALITY_BIOMETRIC_WEAK değerinden daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setPasswordQuality() yöntemi kullanılarak şifre koşulları kalite politikasını ayarladıysa yöntemler DEVRE DIŞI BIRAKILMALIDIR.

    • [C-5-2] Kullanıcı, bölüm 7.3.10'daki [C-1-7] ve [C-1-8]'de açıklandığı gibi önerilen birincil kimlik doğrulama (ör. PIN, desen veya şifre) için mutlaka zorlanmalıdır.

    • [C-5-3] Yöntemler güvenli kilit ekranı olarak değerlendirilmemeli ve aşağıdaki bu bölümde C-8 ile başlayan koşulları karşılamalıdır.

    Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse ve yeni kimlik doğrulama yöntemi fiziksel bir jetona ya da konuma dayanıyorsa:

    • [C-6-1] Bilinen bir sırra dayalı olan ve güvenli kilit ekranı olarak kabul edilme şartlarını karşılayan önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmaya SAHİP OLMALIDIR.

    • [C-6-2] Yeni yöntem DEVRE DIŞI bırakılmalı ve Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı aşağıdakilerden biriyle ayarladığında ekranın kilidini açmak için yalnızca önerilen birincil kimlik doğrulama yöntemlerinden birine izin verilmelidir:

    • [C-6-3] Kullanıcı, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen veya şifre) biriyle en az 4 saatte bir veya daha kısa aralıklarla kimlik doğrulamaya zorunlu tutulmalıdır. Fiziksel bir jeton, C-X'teki TrustAgent uygulamaları için koşulları karşıladığında bunun yerine [C-9-5] içinde tanımlanan zaman aşımı kısıtlamaları uygulanır.

    • [C-6-4] Yeni yöntem, güvenli bir kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8'de listelenen kısıtlamalara UYMALIDIR.

    Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentServiceSystem API'yi uygulayan bir veya daha fazla güven aracısı varsa:

    • [C-7-1] Cihaz kilidi ertelendiğinde veya güvenilir aracı tarafından kilidi açılabildiğinde ayarlar menüsünde ve kilit ekranında net bir gösterge OLMALIDIR. Örneğin, AOSP, ayarlar menüsünde "Otomatik kilitleme ayarı" ve "Güç düğmesiyle anında kilitleme" için metin açıklaması göstererek ve kilit ekranında ayırt edilebilir bir simge kullanarak bu koşulu karşılar.

    • [C-7-2] DevicePolicyManager sınıfındaki tüm güven aracısı API'lerine (ör. KEYGUARD_DISABLE_TRUST_AGENTS sabiti) uymalı ve bunları tam olarak uygulamalıdır.

    • [C-7-3] Birincil kişisel cihaz olarak kullanılan bir cihazda (ör. elde taşınabilir cihaz) TrustAgentService.addEscrowToken() işlevi tam olarak uygulanMAMALI, ancak genellikle paylaşılan cihaz uygulamalarında (ör. Android TV veya otomotiv cihazı) işlev tam olarak uygulanABİLİR.

    • [C-7-4] TrustAgentService.addEscrowToken() tarafından eklenen tüm depolanmış jetonlar ŞİFRELENMELİDİR.

    • [C-7-5] Şifreleme anahtarı veya emanet jetonu, anahtarın kullanıldığı cihazda saklanmamalıdır. Örneğin, telefonda depolanan bir anahtarın TV'deki kullanıcı hesabının kilidini açmasına izin verilir. Otomotiv cihazlarında, emanet tokeninin aracın herhangi bir yerinde saklanmasına izin verilmez.

    • [C-7-6] MUST inform the user about the security implications before enabling the escrow token to decrypt the data storage.

    • [C-7-7] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmaya SAHİP OLMALIDIR.

    • [C-7-9] Kullanıcının güvenliği (ör.sürücünün dikkatinin dağılması) söz konusu olmadığı sürece, bölüm 7.3.10'daki [C-1-7] ve [C-1-8] bölümlerinde açıklandığı gibi, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen veya şifre) biriyle sorgulanması ZORUNLUDUR.

    • [C-7-10] Güvenli kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8'de listelenen kısıtlamalara uymalıdır.

    • [C-7-11] Birincil kişisel cihazlarda (ör.elde taşınabilir cihaz) TrustAgent'ların cihazın kilidini açmasına İZİN VERİLMEMELİDİR ve TrustAgent'lar yalnızca kilidi açılmış bir cihazın kilidinin en fazla 4 saat boyunca açık kalmasını sağlamak için kullanılabilir. AOSP'deki TrustManagerService'in varsayılan uygulaması bu koşulu karşılar.

    • [C-7-12] Depolama cihazından hedef cihaza emanet jetonunu aktarmak için kriptografik olarak güvenli (ör.UKEY2) bir iletişim kanalı KULLANILMALIDIR.

    Cihaz uygulamaları, yukarıda açıklandığı gibi güvenli bir kilit ekranı olmayan kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse ve keyguard'ın kilidini açmak için yeni bir kimlik doğrulama yöntemi kullanırsa:

    • [C-8-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması, PASSWORD_QUALITY_NONE değerinden daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setPasswordQuality() yöntemi veya PASSWORD_COMPLEXITY_NONE değerinden daha kısıtlayıcı bir karmaşıklık sabitiyle DevicePolicyManager.setRequiredPasswordComplexity() yöntemi aracılığıyla şifre kalitesi politikasını ayarladığında yeni yöntem DEVRE DIŞI BIRAKILMALIDIR.

    • [C-8-2] DevicePolicyManager.setPasswordExpirationTimeout() tarafından ayarlanan şifre geçerlilik sonu zamanlayıcılarını sıfırlamamalıdır.

    • [C-8-3] Üçüncü taraf uygulamalarının kilit durumunu değiştirmek için kullanabileceği bir API'yi kullanıma sunMAMALIDIR.

    Cihaz uygulamaları, uygulamaların ikincil sanal ekranlar oluşturmasına izin veriyorsa ve VirtualDeviceManager aracılığıyla gibi ilişkili giriş etkinliklerini desteklemiyorsa:

    • [C-9-1] Cihazın varsayılan ekranı kilitlendiğinde bu ikincil sanal ekranlar KİLİTLENMELİ, cihazın varsayılan ekranı kilidi açıldığında ise bu ikincil sanal ekranların KİLİDİ AÇILMALIDIR.

    Cihaz uygulamaları, uygulamaların VirtualDeviceManager aracılığıyla olduğu gibi, ikincil sanal ekranlar oluşturmasına ve ilişkili giriş etkinliklerini desteklemesine izin veriyorsa:

    • [C-10-1] Sanal cihaz başına ayrı kilit durumlarını DESTEKLEMELİDİR.

    • [C-10-2] Android 16'da şart kaldırıldı.

    • [C-10-3] Android 16'da şart kaldırıldı.

    • [C-10-4] Kullanıcı bir tam kilitleme işlemi başlattığında, elde taşınabilir cihazlar için gerekli olan tam kilitleme kullanıcı arayüzü uygunluğu aracılığıyla (bkz. Bölüm 2.2.5[9.11/H-1-2]) dahil olmak üzere tüm ekranlar KİLİTLENMELİDİR.

    • [C-10-5] Kullanıcı başına ayrı sanal cihaz örnekleri OLMALIDIR.

    • [C-10-6] DevicePolicyManager.setNearbyAppStreamingPolicy ile belirtildiği gibi uygulama aktarımı DEVRE DIŞI BIRAKILMALIDIR.

    • [C-10-7] Android 16'da şart kaldırıldı.

    • [C-10-11] Bilgi faktörü girişi ve biyometrik istem dahil olmak üzere sanal cihazlarda kimlik doğrulama kullanıcı arayüzü DEVRE DIŞI BIRAKILMALIDIR.

    • [C-10-12] Android 16'da şart kaldırıldı.

    • [C-10-13] Android anahtar deposu sistemiyle kullanıcı kimlik doğrulaması/yetkilendirmesi olarak sanal cihaz kilidi durumu KULLANILMAMALIDIR. KeyGenParameterSpec.Builder.setUserAuthentication* sayfasına göz atın.

    • [C-10-14] Cihazda paylaşılan pano uygulanıyorsa pano verileri fiziksel ve sanal cihazlar arasında paylaşılmadan önce cihazlar arasında pano paylaşımını etkinleştirmek için kullanıcıya olanak TANINMALIDIR.

    • [C-10-15] Hem erişildiği cihazda hem de panonun kaynaklandığı cihazda pano verilerine erişildiğinde bildirimler GÖSTERİLMELİDİR.

    Cihaz uygulamaları, kullanıcının birincil kimlik doğrulama bilgi faktörünü kaynak cihazdan hedef cihaza aktarmasına izin verdiğinde (ör. hedef cihazın ilk kurulumu için):

    • [C-11-1] Bilgi faktörünü kaynak cihazdan hedef cihaza aktarırken Google Cloud Key Vault Hizmeti güvenlik teknik incelemesinde açıklananlara benzer koruma garantileriyle şifrelemelidir. Böylece bilgi faktörünün şifresi uzaktan çözülemez veya bilgi faktörü, cihazların kilidini uzaktan açmak için kullanılamaz.

    • [C-11-2] Kaynak cihazda, bilgi faktörünü hedef cihaza aktarmadan önce kullanıcının kaynak cihazın bilgi faktörünü onaylamasını İSTEMELİDİR.

    • [C-11-3] Birincil kimlik doğrulama bilgisi faktörü ayarlanmamış hedef cihazlarda, bu bilgi faktörünü hedef cihaz için birincil kimlik doğrulama bilgi faktörü olarak ayarlamadan ve kaynak cihazdan aktarılan verileri kullanılabilir hale getirmeden ÖNCE kullanıcının aktarılan bilgi faktörünü hedef cihazda onaylamasını İSTEMELİDİR.

    Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService.grantTrust() System API'yi FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE işaretiyle çağıran bir veya daha fazla güven aracısı varsa:

    • [C-12-1] grantTrust() yalnızca kendi kilit ekranına sahip yakındaki bir fiziksel cihaza bağlandığında ve kullanıcı kimliğini bu kilit ekranına karşı doğruladığında işaretle birlikte çağrılmalıdır. Yakındaki cihazlar, kullanıcı kimlik doğrulama şartını karşılamak için tek seferlik kullanıcı kilidi açma işleminden sonra bilekte veya üzerinizde olduğunu algılama mekanizmalarını kullanabilir.

    • [C-12-2] Ekran kapatıldığında (ör. bir düğmeye basılarak veya ekran zaman aşımıyla) ve TrustAgent güveni iptal etmediğinde cihaz uygulaması TrustState.TRUSTABLE durumuna geçirilmelidir. AOSP bu koşulu karşılar.

    • [C-12-3] TrustAgent, [C-12-1] bölümündeki şartlara göre güven vermeye devam ediyorsa cihaz YALNIZCA TrustState.TRUSTABLE durumundan TrustState.TRUSTED durumuna geçirilmelidir.

    Android 17'de şartların başlangıcı değişti

    • [C-12-4] TrustManagerService.revokeTrust() [C-12-5]bölümünde tanımlandığı şekilde, uygulamalarda kriptografik açıdan güvenli ve doğru mesafe ölçümü kullanılmıyorsa MUST çağrısı yapılmalıdır:

      • Güven verildikten sonra en fazla 24 saat içinde veya
      • 8 saatlik boşta kalma süresinden sonra veya
      • Uygulamalarda [C-12-5] içinde tanımlandığı gibi kriptografik olarak güvenli ve doğru mesafe ölçümü kullanılmıyorsa Yakındaki fiziksel cihaza yapılan temel bağlantı kaybolduğunda.

    .

    • [C-12-5] [C-12-4] şartlarını karşılamak için güvenli ve doğru aralığa dayalı uygulamalar AŞAĞIDAKİ çözümlerden birini KULLANMALIDIR:

      • UWB kullanılarak yapılan uygulamalar:

        • 7.4.9 bölümünde açıklanan UWB için uygunluk, sertifika, doğruluk ve kalibrasyon koşullarını karşılamalıdır.

        • 7.4.9 bölümünde listelenen P-STS güvenlik modlarından biri KULLANILMALIDIR.

      • Kablosuz bağlantı Komşu İletişim Ağı (NAN) kullanılarak yapılan uygulamalar:

        • 2.2.1 [7.4.2.5/H-SR-1] bölümündeki doğruluk şartlarını KARŞILAMALI, 160 MHz bant genişliğini (veya daha yüksek) KULLANMALI ve Varlık Kalibrasyonu'nda belirtilen ölçüm kurulumu adımlarını UYGULAMALIDIR.

        • IEEE 802.11az'de tanımlandığı şekilde Güvenli LTF KULLANILMALIDIR.

    Cihaz uygulamaları, uygulamaların sanal ikincil ekranlar oluşturmasına izin veriyorsa ve VirtualDeviceManager aracılığıyla ilişkili giriş etkinliklerini destekliyorsa ve ekranlar VIRTUAL_DISPLAY_FLAG_SECURE ile işaretlenmemişse:

    • [C-13-8] android:canDisplayOnRemoteDevices özelliği veya android.activity.can_display_on_remote_devices meta verileri yanlış olarak ayarlanmış etkinliklerin sanal cihazda başlatılması ENGELLENMELİDİR.

    • [C-13-9] Sanal cihazda, akışı açıkça etkinleştirmeyen ve SurfaceView#setSecure ile FLAG_SECURE dahil olmak üzere hassas içerik gösterdiğini belirten etkinliklerin başlatılması ENGELLENMELİDİR.

    Cihaz uygulamaları DeviceStateManager aracılığıyla ayrı ekran güç durumlarını ve KeyguardDisplayManager aracılığıyla ayrı ekran kilidi durumlarını destekliyorsa:

    • [C-SR-2] Varsayılan cihaz ekranından bağımsız olarak kilidin açılmasına izin vermek için 9.11.1 bölümünde tanımlanan şartları karşılayan bir kimlik bilgisi veya en az 7.3.10 bölümünde tanımlanan 1. Sınıf özelliklerini karşılayan bir biyometrik kimlik kullanılması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-3] Tanımlanmış bir ekran zaman aşımı aracılığıyla ayrı ekran kilidini açma işleminin kısıtlanması ŞİDDETLE TAVSİYE EDİLİR.

    • [C-SR-4] Kullanıcının birincil el cihazından tüm ekranları tam kilitleme yoluyla kilitlemesine izin VERİLMESİ ŞİDDETLE TAVSİYE EDİLİR.

    9.11.2. StrongBox

    Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları özel bir güvenli işlemcide ve yukarıda açıklanan yalıtılmış yürütme ortamında depolamasına olanak tanır. Bu tür özel güvenli işlemcilere "StrongBox" adı verilir. Aşağıdaki C-1-3 ile C-1-11 arasındaki koşullar, bir cihazın StrongBox olarak nitelendirilmek için karşılaması gereken koşulları tanımlar.

    Özel güvenli işlemciye sahip cihaz uygulamaları:

    • [C-SR-1] StrongBox'ı desteklemek için ŞİDDETLE TAVSİYE EDİLİR. StrongBox, gelecekteki bir sürümde zorunlu hale gelebilir.

    Cihaz uygulamaları StrongBox'ı destekliyorsa:

    • [C-1-1] FEATURE_STRONGBOX_KEYSTORE tanımlanmalıdır.

    • [C-1-2] Anahtar deposunu yedeklemek ve kullanıcı kimlik doğrulamasını güvenli hale getirmek için kullanılan özel bir güvenli donanım SAĞLANMALIDIR. Özel güvenli donanım başka amaçlar için de kullanılabilir.

    • [C-1-3] Uygulama işlemcisi (AP) ile önbellek, DRAM, yardımcı işlemciler veya diğer temel kaynakları paylaşmayan ayrı bir CPU'ya SAHİP OLMALIDIR.

    • [C-1-4] AP ile paylaşılan tüm çevre birimlerinin StrongBox işlemlerini hiçbir şekilde değiştiremeyeceğinden veya StrongBox'tan herhangi bir bilgi alamayacağından EMİN OLMALIDIR. AP, StrongBox'a erişimi devre dışı bırakabilir veya engelleyebilir.

    • [C-1-5] Erişim noktası tarafından manipülasyona karşı bağışıklığı olan, makul doğrulukta (+/- %10) bir dahili saate SAHİP OLMALIDIR.

    • [C-1-6] MUST have a true random number generator that produces uniformly-distributed and unpredictable output.

    • [C-1-7] FİZİKSEL GİRİŞ ve ARIZA GİBİ DURUMLARA KARŞI KORUMA DAHİL OLMAK ÜZERE KURCALAMAYA KARŞI KORUMA SAĞLAMALIDIR.

    • [C-1-8] Güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla bilgi sızdırılmasına karşı direnç de dahil olmak üzere yan kanal direnci OLMALIDIR.

    • [C-1-9] İçeriklerin gizliliğini, bütünlüğünü, gerçekliğini, tutarlılığını ve güncelliğini sağlayan güvenli depolama alanı OLMALIDIR. Depolama birimi, StrongBox API'leri tarafından izin verilen durumlar dışında okunamaz veya değiştirilemez.

    Cihaz uygulamaları, [C-1-3] ile [C-1-9] arasındaki şartlara uygunluğu doğrulamak için:

    • [C-1-10] MUST include the hardware that is certified against the Secure IC Protection Profile BSI-CC-PP-0084-2014 or BSI-CC-PP-0117-2022, or is evaluated by a nationally accredited testing laboratory incorporating High attack potential vulnerability assessment according to the Common Criteria Application of Attack Potential to Smartcards.

    • [C-1-11] Common Criteria Application of Attack Potential to Smartcards'a göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesi içeren, ulusal olarak akredite edilmiş 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 ve Değerlendirme Güvence Düzeyi (EAL) 5 kullanılarak değerlendirilen donanımın dahil edilmesi ŞİDDETLE TAVSİYE EDİLİR. EAL 5 sertifikası, gelecekteki bir sürümde zorunlu hale gelebilir.

    • [C-SR-3] İçeriden saldırıya karşı direnç (IAR) sağlamaları ŞİDDETLE TAVSİYE EDİLİR. Bu, donanım yazılımı imzalama anahtarlarına erişimi olan bir çalışanın, StrongBox'ın sırları sızdırmasına, işlevsel güvenlik şartlarını atlamasına veya hassas kullanıcı verilerine erişimi başka şekilde etkinleştirmesine neden olacak bir donanım yazılımı oluşturamayacağı anlamına gelir. IAR'yi uygulamanın önerilen yolu, yalnızca IAuthSecret HAL üzerinden birincil kullanıcı şifresi sağlandığında donanım yazılımı güncellemelerine izin vermektir.

    9.11.3. Kimlik Bilgisi

    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ı kimliği belgelerini saklamasına ve almasına olanak tanır. Cihaz uygulamaları:

    • [C-SR-1] Kimlik Bilgisi Sistemi'nin uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, Kimlik Bilgisi Sistemi'ni uyguluyorsa:

    • [C-1-1] IdentityCredentialStore#getInstance() yönteminde null olmayan bir değer döndürülmelidir.

    • [C-1-2] Kimlik Bilgisi Sistemi (ör. android.security.identity.* API'leri), çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda güvenilir bir uygulamayla iletişim kuran kodla birlikte UYGULANMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere erişime kapalı ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir.

    • [C-1-3] Kimlik bilgisi sisteminin uygulanması için gereken kriptografik işlemler (ör. android.security.identity.* API'leri) TAMAMEN güvenilir uygulamada gerçekleştirilmelidir ve özel anahtar materyali, daha üst düzey API'ler (ör. createEphemeralKeyPair() yöntemi) tarafından özellikle gerekmedikçe asla izole edilmiş yürütme ortamından ayrılmamalıdır.

    • [C-1-4] Güvenilen uygulama, Android hatalı davransa veya güvenliği ihlal edilmiş olsa bile güvenlik özelliklerinin etkilenmeyeceği (ör. erişim kontrolü koşulları karşılanmadığı sürece kimlik bilgisi verileri yayınlanmaz, rastgele veriler için MAC'ler oluşturulamaz) şekilde uygulanmalıdır.

    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 yapabilecekleri bir mekanizma SAĞLANMALIDIR.
    • [C-0-2] "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirilirken userdata dosya sistemindeki tüm veriler SİLİNMELİDİR.
    • [C-0-3] "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirilirken veriler, NIST SP800-88 gibi ilgili sektör standartlarını karşılayacak şekilde SİLİNMELİDİR.
    • [C-0-4] Birincil kullanıcının Cihaz Politikası Denetleyici uygulaması tarafından DevicePolicyManager.wipeData() API'si çağrıldığında yukarıdaki"Fabrika Verilerine Sıfırlama" işlemi TETİKLENMELİDİR.
    • Yalnızca mantıksal veri silme işlemi yapan hızlı bir veri silme seçeneği SUNABİLİR.

    9.13. Güvenli Önyükleme Modu

    Android, kullanıcılara yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda başlatma olanağı sunan güvenli başlatma modu sağlar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcıya zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı sağlar.

    Cihaz uygulamaları şunlardır:

    • [C-SR-1] Güvenli Modda Başlatma'nın uygulanması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları Güvenli Önyükleme Modu'nu uyguluyorsa:

    • [C-1-1] Üçüncü taraf uygulama bir Cihaz Politikası Denetleyicisi değilse ve UserManager.DISALLOW_SAFE_BOOT işareti doğru olarak ayarlanmamışsa cihazda yüklü üçüncü taraf uygulamaları tarafından kesintiye uğratılmayacak şekilde kullanıcıya Güvenli Modda Başlatma moduna girme seçeneği SUNULMALIDIR.

    • [C-1-2] Güvenli Mod'da kullanıcının üçüncü taraf uygulamalarını kaldırmasına İZİN VERİLMELİDİR.

    • Kullanıcıya, normal başlatma işleminden farklı bir iş akışı kullanarak başlatma menüsünden güvenli modda başlatma seçeneği SUNULMALIDIR.

    9.14. Otomotiv Araç Sistemi İzolasyonu

    Android Automotive cihazların, CAN veri yolu gibi araç ağları üzerinden mesaj göndermek ve almak için araç HAL'sini kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.

    Veri alışverişi, bu alt sistemlerle kötü amaçlı veya kasıtsız etkileşimi önlemek için Android çerçeve katmanlarının altında güvenlik özellikleri uygulanarak güvenli hale getirilebilir.

    9.15. Abonelik Planları

    "Abonelik planları", SubscriptionManager.setSubscriptionPlans() aracılığıyla bir mobil operatör tarafından sağlanan faturalandırma ilişkisi planı ayrıntılarını ifade eder.

    Tüm cihaz uygulamaları:

    • [C-0-1] Abonelik planlarını YALNIZCA başlangıçta sağlayan mobil operatör uygulamasına döndürmELİDİR.
    • [C-0-2] Abonelik planlarını uzaktan yedeklememeli veya yüklememelidir.
    • [C-0-3] YALNIZCA şu anda geçerli abonelik planları sunan mobil operatör uygulamasından gelen SubscriptionManager.setSubscriptionOverrideCongested() gibi geçersiz kılmalara İZİN VERİLMELİDİR.

    9.16. Uygulama Verilerini Taşıma

    Cihaz uygulamaları, verileri bir cihazdan başka bir cihaza taşıma özelliğini içeriyorsa ve kopyaladığı uygulama verilerini, uygulama geliştirici tarafından manifestte android:fullBackupContent özelliği aracılığıyla yapılandırılanlarla sınırlamıyorsa:

    • [C-1-1] Kullanıcının 9.11.1 Güvenli Kilit Ekranı ve Kimlik Doğrulama bölümünde açıklandığı gibi birincil kimlik doğrulama ayarlamadığı cihazlardan uygulama verilerinin aktarılması BAŞLATILMAMALIDIR.
    • [C-1-2] Kaynak cihazdaki birincil kimlik doğrulama, veri aktarılmadan önce güvenli bir şekilde onaylanmalı ve kaynak cihazdaki verilerin kopyalanması kullanıcı niyetiyle onaylanmalıdır.
    • [C-1-3] Cihazdan cihaza geçişte hem kaynak cihazın hem de hedef cihazın meşru Android cihazlar olduğundan ve bootloader'ının kilitli olduğundan emin olmak için güvenlik anahtarı onayı KULLANILMALIDIR.
    • [C-1-4] YALNIZCA hedef cihazdaki aynı uygulamaya, aynı paket adı VE imzalama sertifikasıyla uygulama verileri taşınmalıdır.
    • [C-1-5] Kaynak cihazda, cihazdan cihaza veri taşıma işlemiyle veri taşındığını gösteren bir ibare ayarlar menüsünde GÖSTERİLMELİDİR. Kullanıcılar bu göstergeyi kaldırmamalıdır.

    9.17. Android Sanallaştırma Çerçevesi

    Android Sanallaştırma Çerçevesi (AVF) API'leri (android.system.virtualmachine.*), uygulamaların yerel ikili programları yük olarak yükleyen ve çalıştıran, cihaz üzerinde sanal makineler (VM'ler), korumalı sanal makineler (pVM'ler) ve korumasız sanal makineler (non-pVM'ler) oluşturmasına olanak tanır.

    Android 17'de eklenen şartların başlangıcı

    Cihaz uygulamaları FEATURE_VIRTUALIZATION_FRAMEWORK değerini true olarak ayarlarsa:

    • [C-1-1] MUST ensure that android.system.virtualmachine.VirtualMachineManager.getCapabilities() returns one of the following:
      • CAPABILITY_PROTECTED_VM
      • CAPABILITY_NON_PROTECTED_VM
      • CAPABILITY_NON_PROTECTED_VM | CAPABILITY_PROTECTED_VM

    9.18. Geliştirici Doğrulama

    API düzeyi 36.1 veya daha yüksek olduğunu bildiren cihaz uygulamaları:

    • Uygulamaların bilinen bir geliştiriciden geldiğini onaylamak için geliştirici doğrulayıcı hizmeti desteği İÇEREBİLİR.

    API düzeyi 36.1 veya daha yüksek olduğunu bildiren cihaz uygulamaları ve config_developerVerificationServiceProviderPackageName içinde config.xml tanımlayarak bir geliştirici doğrulayıcı yapılandırın:

    • [9.18/C-1-1] Yeni yüklemeler ve mevcut uygulamalardaki güncellemeler dahil olmak üzere her uygulama paketi yüklemesi için yapılandırılmış android.content.pm.verify.developer.DeveloperVerifierService işlevini çağırmalıdır.

    API düzeyi 36.1 veya daha yüksek olduğunu bildiren cihaz uygulamaları:

    • MAY ayrıca config_developerVerificationPolicyDelegatePackageName içinde config.xml tanımlayarak etkin politikayı ayarlamak için bir temsilci de yapılandırabilir.

    Geliştirici doğrulayıcı yapılandırılmışsa cihaz uygulamaları:

    • [9.18/C-2-1] YALNIZCA geliştirici doğrulayıcının veya yapılandırılmış temsilcisinin, yükleme politikasını android.content.pm.PackageInstaller'da tanımlandığı şekilde ayarlamasına İZİN VERİLMELİDİR.

    Bir paket yükleme oturumu kapsamında doğrulayıcı çağrılırsa cihaz uygulamaları:

    • [9.18/C-3-1] Aşağıdaki durumlarda uygulama paketinin yüklenmesi ENGELLENMELİDİR:

      • Yükleme, geliştirici kimliği doğrulamasında başarısız oluyor.

      • Yükleme oturumu için geliştirici doğrulama politikası, DEVELOPER_VERIFICATION_POLICY_NONE dışındaki herhangi bir değere ayarlanmış.

      • 9.18/C-3-2 veya 9.18/C-3-3 geçerli olmadığı sürece.

    Android 17'de şartların başlangıcı değişti

    • [9.18/C-3-2] Aşağıdaki durumlarda politika veya doğrulama durumundan bağımsız olarak uygulama paketinin yüklenmesi ENGELLENMEMELİDİR:
      • Paket, Android Debug Bridge (ADB) aracılığıyla yüklenir.
      • Paket, yapılandırılmış geliştirici doğrulayıcı veya yükleyicisidir.

    • [9.18/C-3-3] Aşağıdaki koşulların tümü karşılandığında uygulama paketinin yüklenmesi ENGELLENMEMELİDİR:

      • Politika, DEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_WARN veya DEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_OPEN olarak ayarlanmış.

      • Doğrulama tamamlanmamış olarak bildirilir.

      • Yükleyici, kullanıcının DEVELOPER_VERIFICATION_USER_RESPONSE_INSTALL_ANYWAY raporlayarak yüklemenin devam etmesini açıkça istediğini belirtir.

    Android 17'de kaldırılan şartların başlangıcı

    • Yönetilen bir cihazda cihaz sahibi veya yönetilen bir profilde profil sahibi tarafından başlatılan yüklemeler için politika ya da doğrulama durumundan bağımsız olarak uygulama paketinin yüklenmesine İZİN VERİLEBİLİR ancak 9.18/C-3-1'de belirtildiği gibi yüklemelerin engellenmesi ŞİDDETLE TAVSİYE EDİLİR.

    10. Yazılım Uyumluluğu Testi

    Cihaz uygulamaları, bu bölümde açıklanan tüm testleri GEÇMELİDİR. Ancak hiçbir yazılım test paketinin tam kapsamlı olmadığını unutmayın. Bu nedenle, cihaz uygulayıcıların Android Açık Kaynak Projesi'nden edinilebilen Android'in referans ve tercih edilen uygulamasında MÜMKÜN OLDUĞUNCA AZ DEĞİŞİKLİK YAPMASI ŞİDDETLE TAVSİYE EDİLİR. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklar oluşturan hataların ortaya çıkma riskini en aza indirir.

    10.1. Compatibility Test Suite

    Cihaz uygulamaları:

    • [C-0-1] Cihazdaki son gönderim yazılımı kullanılarak Android Açık Kaynak Projesi'nden edinilebilen Android Uyumluluk Test Paketi'ni (CTS) geçmelidir.

    • [C-0-2] CTS'de belirsizlik olması ve referans kaynak kodunun bölümlerinin yeniden uygulanması durumlarında uyumluluk SAĞLANMALIDIR.

    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 17 için CTS'nin birden fazla düzeltmesi yayınlanabilir.

    Cihaz uygulamaları:

    • [C-0-3] Cihaz yazılımı tamamlandığında mevcut olan en son CTS sürümünü GEÇMELİDİR.

    • Android Open Source ağacındaki referans uygulamayı mümkün olduğunca çok kullanmalıdır.

    10.2. CTS Doğrulayıcı

    CTS Verifier, Uyumluluk Test Paketi'ne dahildir ve otomatik bir sistem tarafından test edilemeyen işlevleri (ör. kamera ve sensörlerin doğru çalışması) test etmek için bir operatör tarafından çalıştırılması amaçlanmıştır.

    Cihaz uygulamaları:

    • [C-0-1] CTS doğrulayıcısında geçerli tüm testleri doğru şekilde çalıştırmalıdır.

    CTS Verifier, isteğe bağlı olanlar da dahil olmak üzere birçok donanım türü için testler içerir.

    Cihaz uygulamaları:

    • [C-0-2] Sahip oldukları donanımla ilgili tüm testleri GEÇMELİDİR. Örneğin, bir cihazda ivmeölçer varsa CTS Verifier'daki İvmeölçer test senaryosunu DOĞRU şekilde yürütmelidir.

    Bu Uyumluluk Tanımı Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test senaryoları atlanabilir veya çıkarılabilir.

    • [C-0-2] Yukarıda belirtildiği gibi, her cihaz ve her derleme CTS Verifier'ı doğru şekilde ÇALIŞTIRMALIDIR. Ancak birçok derleme çok benzer olduğundan cihaz uygulayıcıların, yalnızca önemsiz şekillerde farklılık gösteren derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Özellikle, CTS Verifier'ı geçen bir uygulamadan yalnızca dahil edilen yerel ayarlar, markalama vb. açısından farklılık gösteren cihaz uygulamaları CTS Verifier testini atlayabilir.

    11. Güncellenebilir Yazılımlar

    • [C-0-1] Cihaz uygulamaları, sistem yazılımının tamamını değiştirecek bir mekanizma içermelidir. Mekanızmanın "canlı" yükseltme yapması gerekmez. Yani cihazın yeniden başlatılması GEREKEBİLİR. Cihazda önceden yüklenmiş yazılımın tamamını değiştirebildiği sürece herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:

      • Yeniden başlatma yoluyla çevrimdışı güncelleme içeren "kablosuz (OTA)" indirmeleri.
      • Ana makine PC'sinden USB üzerinden "bağlı" güncellemeler.
      • Yeniden başlatma ve çıkarılabilir depolama birimindeki bir dosyadan güncelleme yoluyla "çevrimdışı" güncellemeler.
    • [C-0-2] Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri desteklemelidir. Yani güncelleme mekanizması, uygulamaya özel verileri ve uygulamada paylaşılan verileri KORUMALIDIR. Android'in üst sürüm 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ı imzalanmalı ve cihaz üzerindeki güncelleme mekanizması, güncellemeyi ve imzayı cihazda depolanan bir ortak anahtara göre doğrulamalıdır.

    • [C-SR-1] İmzalama mekanizmasının, güncellemeyi SHA-256 ile karma oluşturması ve ECDSA NIST P-256 kullanarak karmayı ortak anahtara göre doğrulaması ŞİDDETLE TAVSİYE EDİLİR.

    Cihaz uygulamaları, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sınırsız veri bağlantısı desteği içeriyorsa:

    • [C-1-1] Yeniden başlatma yoluyla çevrimdışı güncelleme ile OTA indirmelerini DESTEKLEMELİDİR.

    Cihaz uygulamaları, OTA'dan sonra sistem görüntüsünün beklenen sonuçla ikili olarak aynı olduğunu DOĞRULAMALIDIR. Android 5.1'den beri eklenen, yukarı akış Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu şartı karşılar.

    Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP, bu özelliği önyükleme denetimi HAL'sini kullanarak uygular.

    Bir cihaz uygulaması yayınlandıktan sonra ancak Android Uyumluluk Ekibi ile istişare edilerek belirlenen makul ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa:

    • [C-2-1] Cihaz uygulayıcısı, az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesiyle hatayı düzeltmelidir.

    Android, Cihaz Sahibi uygulamasına (varsa) sistem güncellemelerinin yüklenmesini kontrol etme olanağı tanıyan özellikler içerir. Cihazlar için sistem güncelleme alt sistemi android.software.device_admin'i bildiriyorsa:

    12. Doküman değişiklik günlüğü

    Android 16'dan itibaren ayrı olarak tutulan bir değişiklik günlüğü yoktur. Önceki sürümdeki tüm değişiklikler bu belgede vurgulanmıştır.

    13. Bize Ulaşın

    android-compatibility forumuna katılabilir, açıklama isteyebilir veya dokümanda yer almadığını düşündüğünüz sorunları gündeme getirebilirsiniz.