Android 9 Uyumluluk Tanımı

1. Giriş

Bu belgede, cihazların Android 9 ile uyumlu olması için karşılanması gereken şartlar listelenmektedir.

"MUST" (ZORUNLU), "MUST NOT" (ZORUNLU DEĞİL), "REQUIRED" (GEREKLİ), "SHALL" (OLACAK), "SHALL NOT" (OLMAYACAK), "SHOULD" (OLMALI), "SHOULD NOT" (OLMAMALI), "RECOMMENDED" (ÖNERİLEN), "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 9'u çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluş anlamına gelir. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.

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

Bu tanım veya bölüm 10'da açıklanan yazılım testleri sessiz, belirsiz ya da eksik olduğunda, 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 de dahil olmak üzere standart Android uygulamasıyla tam davranış uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşenlerin değiştirilmesi ve üzerinde değişiklik yapılması bu belgeyle açıkça yasaklanmıştır.

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

1.1 Belge Yapısı

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

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

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

1.1.2. Şart Kimliği

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

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

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

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

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

Bölüm 2'deki Şart Kimliği, ilgili bölüm kimliğiyle başlar ve yukarıda açıklanan Şart Kimliği ile devam eder.

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

2. Cihaz Türleri

Android Açık Kaynak Projesi, çeşitli cihaz türleri ve form faktörleri için kullanılabilecek bir yazılım yığını sağlasa da uygulama dağıtım ekosistemi nispeten daha iyi kurulmuş birkaç cihaz türü vardır.

Bu bölümde, söz konusu cihaz türleri ve her cihaz türü için geçerli 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 ölçütlerin tümünü karşılıyorsa elde taşınabilir cihaz olarak sınıflandırılır:

  • Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
  • 2,5 ila 8 inç arasında fiziksel bir çapraz ekran boyutuna sahip olmalıdır.

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

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

2.2.1. Donanım

El cihazı uygulamaları:

  • [7.1.1.1/H-0-1] Fiziksel diyagonal boyutu en az 2,5 inç olan bir ekranı OLMALIDIR.
  • [7.1.1.3/H-SR] Kullanıcılara ekran boyutunu değiştirme olanağı sunulması ŞİDDETLE TAVSİYE EDİLİR (Ekran Yoğunluğu).

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ı VERİLMELİDİR.

El cihazı uygulamaları:

  • [7.1.5/H-0-1] Yukarı akış Android açık kaynak kodu tarafından uygulanan eski uygulama uyumluluk modu desteği İÇERMELİDİR. Yani, cihaz uygulamaları uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri değiştirmemeli ve uyumluluk modunun davranışını değiştirmemelidir.
  • [7.2.1/H-0-1] Üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek içermelidir.
  • [7.2.3/H-0-1] Ana Sayfa, Son Kullanılanlar ve Geri işlevleri SAĞLANMALIDIR.
  • [7.2.3/H-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliği ön plandaki uygulamaya GÖNDERİLMELİDİR. Bu etkinlikler sistem tarafından KULLANILMAMALI ve Android cihazın dışından (ör. Android cihaza bağlı harici donanım klavyesi) tetiklenebilir.
  • [7.2.4/H-0-1] Dokunmatik ekran girişi DESTEKLENMELİDİR.
  • [7.2.4/H-SR] Ön plandaki etkinlik bu uzun basma etkinliklerini işlemediği takdirde, kullanıcı tarafından seçilen asistan uygulamasının (diğer bir deyişle VoiceInteractionService'i uygulayan uygulama) veya KEYCODE_MEDIA_PLAY_PAUSE ya da KEYCODE_HEADSETHOOK tuşuna uzun basıldığında ACTION_ASSIST işleyen bir etkinliğin başlatılması ŞİDDETLE TAVSİYE EDİLİR.
  • [7.3.1/H-SR] 3 eksenli ivme ölçer içermeleri ŞİDDETLE TAVSİYE EDİLİR.

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

  • [7.3.1/H-1-1] Olayları en az 100 Hz sıklıkta bildirebilmelidir.

El cihazı uygulamalarında jiroskop varsa:

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

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

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

El cihazı uygulamaları:

  • [7.3.12/H-SR] 6 serbestlik dereceli duruş sensörünü desteklemeleri ÖNERİLİR.
  • [7.4.3/H] Bluetooth ve Bluetooth LE desteği İÇERMELİDİR.

Elde taşınabilir cihaz uygulamaları, ölçülü bağlantı içeriyorsa:

  • [7.4.7/H-1-1] Veri tasarrufu modu SAĞLANMALIDIR.

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 kullanılabildiğinde ActivityManager.isLowRamDevice() için "true" değeri DÖNDÜRÜLMELİDİR.

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

  • [7.6.1/H-1-1] Varsayılan ekranda qHD'ye (ö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) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 592 MB OLMALIDIR.

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

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

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

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

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

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

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

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

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

  • [7.6.1/H-9-1] android.hardware.ram.low özellik bayrağı BELİRTİLMELİDİR.
  • [7.6.1/H-9-2] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1,1 GB kalıcı depolama alanı OLMALIDIR.

Elde taşınabilir cihaz uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan fazla bellek içeriyorsa:

  • [7.6.1/H-10-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
  • Özellik bayrağı android.hardware.ram.normal BEYAN EDİLMELİDİR.

El cihazı uygulamaları:

  • [7.6.2/H-0-1] 1 GiB'den küçük bir uygulama paylaşılan depolama alanı SAĞLAMAMALIDIR.
  • [7.7.1/H] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.

Elde taşınabilir cihaz uygulamaları, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:

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

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 edilmelidir.

El cihazı uygulamaları, VR modunu desteklemeye yönelik tüm performans koşullarını karşılayabiliyor ve VR modu desteği içeriyorsa:

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

2.2.2. Multimedya

El cihazı uygulamaları aşağıdaki ses kodlamasını DESTEKLEMELİDİR:

  • [5.1.1/H-0-1] AMR-NB
  • [5.1.1/H-0-2] AMR-WB
  • [5.1.1/H-0-3] MPEG-4 AAC Profili (AAC LC)
  • [5.1.1/H-0-4] MPEG-4 HE AAC Profili (AAC+)
  • [5.1.1/H-0-5] AAC ELD (enhanced low delay AAC)

El cihazı uygulamaları, aşağıdaki ses kod çözme işlemlerini DESTEKLEMELİDİR:

  • [5.1.2/H-0-1] AMR-NB
  • [5.1.2/H-0-2] AMR-WB

El cihazı uygulamaları, aşağıdaki video kodlamayı desteklemeli ve üçüncü taraf uygulamalarına sunmalıdır:

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

El cihazı uygulamaları, aşağıdaki video kod çözme işlemlerini DESTEKLEMELİDİR:

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

2.2.3. Yazılım

El cihazı uygulamaları:

  • [3.2.3.1/H-0-1] SDK dokümanlarında açıklandığı gibi ACTION_GET_CONTENT, ACTION_OPEN_DOCUMENT, ACTION_OPEN_DOCUMENT_TREE ve ACTION_CREATE_DOCUMENT amaçlarını işleyen bir uygulamaya sahip OLMALI ve DocumentsProvider API'sini kullanarak doküman sağlayıcı verilerine erişmek için kullanıcıya olanak tanımalıdır.
  • [3.4.1/H-0-1] android.webkit.Webview API'nin eksiksiz bir uygulaması SAĞLANMALIDIR.
  • [3.4.2/H-0-1] Genel kullanıcı web'de gezinmesi için bağımsız bir Tarayıcı uygulaması İÇERMELİDİR.
  • [3.8.1/H-SR] Kısayolların, widget'ların ve widgetFeatures'ın uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
  • [3.8.1/H-SR] ShortcutManager API aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
  • [3.8.1/H-SR] Uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [3.8.2/H-SR] Üçüncü taraf uygulama widget'larının desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [3.8.3/H-0-1] Üçüncü taraf uygulamalarının, Notification ve NotificationManager API sınıfları aracılığıyla kullanıcıları önemli etkinlikler hakkında bilgilendirmesine İZİN VERİLMELİDİR.
  • [3.8.3/H-0-2] Zengin bildirimler desteklenmelidir.
  • [3.8.3/H-0-3] Cihaz, heads-up bildirimlerini DESTEKLEMELİDİR.
  • [3.8.3/H-0-4] Kullanıcıya, AOSP'de uygulandığı gibi işlem düğmeleri veya kontrol paneli gibi kullanıcı kolaylığı aracılığıyla bildirimleri doğrudan kontrol etme (ör. yanıtlama, erteleme, kapatma, engelleme) olanağı sağlayan bir bildirim gölgesi İÇERMELİDİR.
  • [3.8.3/H-0-5] RemoteInput.Builder setChoices() aracılığıyla sunulan seçenekler, bildirim gölgesinde GÖSTERİLMELİDİR.
  • [3.8.3/H-SR] RemoteInput.Builder setChoices() aracılığıyla sağlanan ilk seçeneğin, ek kullanıcı etkileşimi olmadan bildirim gölgesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [3.8.3/H-SR] Kullanıcı, bildirim gölgesindeki tüm bildirimleri genişlettiğinde RemoteInput.Builder setChoices() aracılığıyla sağlanan tüm seçeneklerin bildirim gölgesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [3.8.4/H-SR] Yardımcı işlemine yönelik istekleri işlemek için cihazda bir asistan uygulanması ŞİDDETLE TAVSİYE EDİLİR.

El cihazı uygulamaları Asistan işlemini destekliyorsa:

  • [3.8.4/H-SR] HOME tuşuna uzun basmanın, bölüm 7.2.3'te açıklandığı gibi asistan uygulamasını başlatmak için belirlenmiş etkileşim olarak kullanılması ŞİDDETLE TAVSİYE EDİLİR. Kullanıcı tarafından seçilen yardım uygulamasını (diğer bir deyişle VoiceInteractionService uygulayan uygulama) veya ACTION_ASSIST amacını işleyen bir etkinliği BAŞLATMALIDIR.

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

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

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.
  • [3.9/H-1-2] Cihaz, kendisini düşük RAM'li bir cihaz olarak bildirecek veya dahili (çıkarılamayan) depolama alanını paylaşılan depolama alanı olarak tahsis edecek şekilde yapılandırılmadığı sürece, android.software.managed_users özellik işareti aracılığıyla yönetilen profillerin desteği BİLDİRİLMELİDİR.

El cihazı uygulamaları:

  • [3.10/H-0-1] Üçüncü taraf erişilebilirlik hizmetleri desteklenmelidir.
  • [3.10/H-SR] TalkBack açık kaynak projesinde belirtildiği şekilde, cihazda Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğine eşit veya daha fazla işlevsellik sunan erişilebilirlik hizmetlerinin önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [3.11/H-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
  • [3.11/H-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [3.13/H-SR] Hızlı Ayarlar kullanıcı arayüzü bileşeni içermeleri Şİ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.

2.2.4. Performans ve Güç

  • [8.1/H-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
  • [8.1/H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları, Android Uyumluluk Test Paketi (CTS) tarafından tanımlanan 10.000 liste girişinden oluşan bir listenin 36 saniyeden kısa sürede kaydırılmasını sağlayarak düşük gecikmeli kullanıcı deneyimi sunmalıdır.
  • [8.1/H-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, başlatılmış 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 rastgele yazma performansı sağlamalıdır.
  • [8.2/H-0-3] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
  • [8.2/H-0-4] En az 3,5 MB/sn rastgele okuma performansı sağlamalıdır.

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ğini etkinleştirme ve devre dışı bırakma 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örüntülemek için kullanıcıya olanak TANIMALIDIR.

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 şartı karşılar.
  • [8.4/H-0-4] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiricinin kullanımına 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:

2.2.5. Güvenlik Modeli

El cihazı uygulamaları:

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

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

  • [9.11/H-1-1] KULLANICININ, KİLİDİN AÇIK OLDUĞU DURUMDAN KİLİTLİ DURUMA GEÇİŞ SÜRESİ OLAN EN KISA UYKU ZAMAN AŞIMI SÜRESİNİ (15 SANİYE VEYA DAHA KISA) SEÇMESİNE İZİN VERİLMELİDİR.
  • [9.11/H-1-2] Bildirimleri gizlemek ve 9.11.1 Güvenli Kilit Ekranı'nda açıklanan birincil kimlik doğrulama dışında tüm kimlik doğrulama biçimlerini devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR. AOSP, tam kilitleme modu olarak bu koşulu karşılar.

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.
  • Köşegen uzunluğu 24 inçten büyük olan yerleşik bir ekranı olmalı VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası ya da ekran için kablosuz bir bağlantı noktası içermelidir.

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

2.3.1. Donanım

Televizyon cihazı uygulamaları:

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

Televizyon cihaz uygulamaları jiroskop içeriyorsa:

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

Televizyon cihazı uygulamaları:

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

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

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

TV cihazı uygulamaları 32 bit ise:

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

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

TV cihazı uygulamaları 64 bit ise:

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

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

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

Televizyon cihazı uygulamaları:

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

2.3.2. Multimedya

Televizyon cihazı uygulamaları, aşağıdaki ses kodlama biçimlerini DESTEKLEMELİ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ştirilmiş düşük gecikmeli AAC)

Televizyon cihazı uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİDİR:

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

Televizyon cihazı uygulamaları:

  • [5.2.2/T-SR] 720p ve 1080p çözünürlüklü videoların 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İDİR:

Televizyon cihazı uygulamalarının aşağıdaki video kod çözme biçimlerini desteklemesi ŞİDDETLE TAVSİYE EDİLİR:

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

  • [5.3.4.4/T-1-1] Baseline Profili ile saniyede 60 kare hızında HD 1080p
  • [5.3.4.4/T-1-2] Ana Profil ile saniyede 60 kare hızında HD 1080p
  • [5.3.4.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.4/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.5/T-2-1] Main10 Level 5 Main Tier profiliyle saniyede 60 kare hızında UHD kod çözme profilini DESTEKLEMELİDİR.

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

  • [5.3.6.4/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.4/T-1-1] Profil 0 ile saniyede 60 kare hızında HD 1080p (8 bit renk derinliği)

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

  • [5.3.7.5/T-2-1] 60 kare/saniye hızında, profil 0 (8 bit renk derinliği) ile UHD kod çözme profilini DESTEKLEMELİDİR.
  • [5.3.7.5/T-2-1] 2. profille (10 bit renk derinliği) saniyede 60 kare hızında UHD kod çözme profilini desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.

Televizyon cihazı uygulamaları:

  • [5.5.3/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.
  • [5.8/T-0-1] HDMI çıkış modu, tüm kablolu ekranlar için 50 Hz veya 60 Hz yenileme hızıyla desteklenebilecek maksimum çözünürlüğü seçecek şekilde AYARLANMALIDIR.
  • [5.8/T-SR] Tüm kablolu ekranlar için kullanıcı tarafından yapılandırılabilir bir HDMI yenileme hızı seçici sağlanması ŞİDDETLE TAVSİYE EDİLİR.
  • [5.8/T-SR] Güvenli akışların eş zamanlı olarak kodunun çözülmesini desteklemek için ŞİDDETLE TAVSİYE EDİLİR. En az iki akışın eşzamanlı olarak kodunun çözülmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [5.8] Tüm kablolu ekranlar için HDMI çıkış modu yenileme hızını, cihazın satıldığı bölgedeki video yenileme hızına bağlı olarak 50 Hz veya 60 Hz olarak AYARLAMALIDIR.

Televizyon cihazı uygulamaları UHD kod çözme özelliğini destekliyorsa ve harici ekran desteği varsa:

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

Televizyon cihaz uygulamaları UHD kod çözmeyi desteklemiyor ancak harici ekranları destekliyorsa:

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

2.3.3. Yazılım

Televizyon cihazı uygulamaları:

  • [3/T-0-1] android.software.leanback ve android.hardware.type.television özellikleri BEYAN EDİLMELİDİR.
  • [3.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] Pencere içinde pencere (PIP) modunda çoklu pencere özelliğini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
  • [3.10/T-0-1] Üçüncü taraf erişilebilirlik hizmetleri DESTEKLENMELİDİR.
  • [3.10/T-SR] TalkBack açık kaynak projesinde belirtildiği gibi, cihazda Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.

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

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

Televizyon cihazı uygulamaları:

  • [3.12/T-0-1] TV Giriş Çerçevesi desteklenmelidir.

2.3.4. Performans ve Güç

  • [8.1/T-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
  • [8.2/T-0-1] En az 5 MB/sn'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ğlamalıdır.

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

  • [8.3/T-1-1] Pil tasarrufu özelliğini etkinleştirme ve devre dışı bırakma için kullanıcıya olanak TANINMALIDIR.
  • [8.3/T-1-2] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANINMALIDIR.

Televizyon cihazı uygulamaları:

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

2.4. Saat Gereksinimleri

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

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

  • Fiziksel diyagonal uzunluğu 2,8 cm ile 6,3 cm arasında olan bir ekrana sahip olmalıdır.
  • Vücutta taşınmak üzere tasarlanmış bir mekanizmaya sahip olmalıdır.

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

2.4.1. Donanım

Cihaz uygulamalarını izleyin:

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

  • [7.2.3/W-0-1] Kullanıcıya Ana Sayfa işlevi sunulmalı ve UI_MODE_TYPE_WATCH konumunda olmadığı sürece Geri işlevi kullanılabilmelidir.

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

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

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

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

  • [7.6.1/W-0-2] Çekirdek ve kullanıcı alanı için en az 416 MB kullanılabilir bellek OLMALIDIR.

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

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

2.4.2. Multimedya

Ek şart yoktur.

2.4.3. Yazılım

Cihaz uygulamalarını izleyin:

  • [3/W-0-1] android.hardware.type.watch özelliği BELİRTİLMELİDİR.
  • [3/W-0-2] MUST support uiMode = UI_MODE_TYPE_WATCH.

Cihaz uygulamalarını izleyin:

  • [3.8.4/W-SR] 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 desteklenmelidir.
  • [3.10/W-SR] TalkBack açık kaynak projesinde belirtildiği gibi, 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.

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

  • [3.11/W-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermeleri Şİ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önetimini iyileştirmeye yönelik özellikler içeriyorsa:

  • [8.3/W-SR] 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ğlanması ŞİDDETLE TAVSİYE EDİLİR.
  • [8.3/W-SR] Pil Tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya uygunluk sağlanması ŞİDDETLE TAVSİYE EDİLİR.

Cihaz uygulamalarını izleyin:

  • [8.4/W-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil boşalmasını 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 şartı 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şenine atfedilmelidir.

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 ölçütlerin tümünü karşılarsa Otomotiv olarak sınıflandırılır.

  • Otomotiv araçlarının bir parçası olarak yerleştirilmiş veya bu araçlara takılabilir.
  • 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.2.3/A-0-1] Ana Sayfa işlevi SAĞLANMALIDIR ve Geri ile Son Kullanılanlar işlevleri SAĞLANABİLİR.

  • [7.2.3/A-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliği ön plandaki uygulamaya GÖNDERİLMELİDİR.

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

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

Otomotiv cihaz uygulamaları bir jiroskop içeriyorsa:

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

Otomotiv cihaz uygulamaları:

  • [7.3.11/A-0-1] Mevcut dişli SENSOR_TYPE_GEAR olarak sağlanmalıdır.

Otomotiv cihaz uygulamaları:

  • [7.3.11.2/A-0-1] SENSOR_TYPE_NIGHT olarak tanımlanan gündüz/gece modu desteklenmelidir.
  • [7.3.11.2/A-0-2] SENSOR_TYPE_NIGHT işaretinin değeri, kontrol panelinin gündüz/gece moduyla tutarlı OLMALI ve ortam ışığı sensörü girişine dayanmalıdır.
  • Temel ortam ışığı sensörü, fotometre ile aynı OLABİLİR.

  • [7.3.11.4/A-0-1] SENSOR_TYPE_CAR_SPEED tarafından tanımlanan araç hızı SAĞLANMALIDIR.

  • [7.3.11.5/A-0-1] SENSOR_TYPE_PARKING_BRAKE tarafından tanımlandığı şekilde park freni durumu SAĞLANMALIDIR.

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

  • [7.4.3/A-0-2] Android Automotive uygulamaları, aşağıdaki Bluetooth profillerini DESTEKLEMELİDİR:
    • Eller Serbest Profili (HFP) üzerinden telefon görüşmesi yapma.
    • Ses Dağıtım Profili (A2DP) üzerinden medya oynatma.
    • Uzaktan 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] Mesaj Erişim Profili'ni (MAP) desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.

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

  • [7.4.5/A] Sistem uygulamaları tarafından kullanılabilmesi gereken ağlar için NetworkCapabilities#NET_CAPABILITY_OEM_PAID sabitini kullanabilir.

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

Otomotiv cihaz uygulamaları:

  • [7.6.1/A] Veri bölümü, flash depolamada daha iyi performans ve uzun ömür sunmak için biçimlendirilmelidir. Örneğin, f2fs dosya sistemi kullanılmalıdır.

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

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

Otomotiv cihaz uygulamaları 32 bit ise:

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

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

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

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

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

Otomotiv cihaz uygulamaları 64 bit ise:

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

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

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

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

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

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

Otomotiv cihaz uygulamaları:

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

Otomotiv cihaz uygulamaları:

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

Otomotiv cihaz uygulamaları:

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

2.5.2. Multimedya

Otomotiv cihaz uygulamaları aşağıdaki ses kodlamasını DESTEKLEMELİDİR:

  • [5.1/A-0-1] MPEG-4 AAC Profili (AAC LC)
  • [5.1/A-0-2] MPEG-4 HE AAC Profili (AAC+)
  • [5.1/A-0-3] AAC ELD (enhanced low delay AAC)

Otomotiv cihaz uygulamaları, aşağıdaki video kodlamayı DESTEKLEMELİ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 işlemlerini DESTEKLEMELİDİR:

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

Otomotiv cihaz uygulamalarının aşağıdaki video kod çözme işlemlerini desteklemesi ŞİDDETLE TAVSİYE EDİLİR:

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

2.5.3. Yazılım

Otomotiv cihaz uygulamaları:

  • [3/A-0-1] android.hardware.type.automotive özelliği BELİRTİLMELİDİR.

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

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

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

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

  • [3.8.4/A-SR] Yardımcı işlemine yönelik istekleri işlemek için cihazda bir asistanın uygulanması kesinlikle önerilir.

  • [3.13/A-SR] Hızlı Ayarlar kullanıcı arayüzü bileşeni içermesi Şİ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 basma işlemi KULLANILMALIDIR.

Otomotiv cihaz uygulamaları:

  • [3.14/A-0-1] 3.14 bölümünde açıklandığı gibi medya API'lerini kullanan üçüncü taraf uygulamaları desteklemek için bir kullanıcı arayüzü çerçevesi İÇERMELİDİR.

2.5.4. Performans ve Güç

Otomotiv 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/A-1-1] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.
  • [8.3/A-1-2] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANINMALIDIR.

Otomotiv cihaz uygulamaları:

  • [8.2/A-0-1] İstatistiklerin Sistem API'si android.car.storagemonitoring.CarStorageMonitoringManager aracılığıyla geliştiricilere sunulabilmesi için her işlemin UID'si başına kalıcı olmayan depolama alanına okunan ve yazılan bayt sayısını bildirmelidir. Android Açık Kaynak Projesi, uid_sys_stats çekirdek modülü aracılığıyla bu şartı karşılar.
  • [8.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 şartı karşılar.
  • [8.4/A] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
  • [8.4/A-0-4] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNMALIDIR.

2.5.5. Güvenlik Modeli

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

  • [9.5/A-1-1] Kullanıcının oturum açmasını gerektirmeden araç sisteminin sağladığı tüm işlevlere izin veren bir misafir hesabı İÇERMELİDİR.

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

Otomotiv cihaz uygulamaları:

  • [9.14/A-0-1] Android çerçevesi araç alt sistemlerinden gelen mesajları kontrol etmelidir. Örneğin, izin verilen mesaj türleri ve mesaj kaynakları için izin verilenler listesi oluşturulmalıdır.
  • [9.14/A-0-2] Android çerçevesinden veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı gözetim yapılmalıdır. Bu, kötü amaçlı yazılımların araç ağını trafikle doldurmasını önler. Aksi takdirde, araç alt sistemlerinde arızalar meydana gelebilir.

2.6. Tablet Gereksinimleri

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

  • Genellikle iki elle tutularak kullanılır.
  • Clamshell veya dönüştürülebilir yapılandırmaya sahip olmamalıdır.
  • Cihazla kullanılan tüm fiziksel klavye uygulamaları, standart bir bağlantı aracılığıyla bağlanmalıdır.
  • Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
  • 7-18 inç arasında fiziksel bir çapraz ekran boyutuna sahip olmalıdır.

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

2.4.1. Donanım

Ekran Boyutu

  • [7.1.1.1/Tab-0-1] 7-18 inç arasında bir ekrana sahip OLMALIDIR.

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

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

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

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

  • [7.7.1/Tab] Android Open Accessory (AOA) API'yi uygulayabilir.

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

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

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

3. Yazılım

3.1. Yönetilen API Uyumluluğu

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

Cihaz uygulamaları:

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

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

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

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

  • [C-0-5] SDK belgelerinde açıklandığı gibi, android ad alanında @hidden ek açıklamasıyla süslenmiş ancak @SystemAPI veya @TestApi ile süslenmemiş API'ler olarak tanımlanan gizli API'lerin üçüncü taraf uygulamaları tarafından kullanımını KISITLAMALI ve AOSP'deki uygun API düzeyi dalı için prebuilts/runtime/appcompat/ yolunda sağlanan geçici liste ve yasaklılar listesi dosyalarındakiyle aynı kısıtlanmış listelerde yer alan her bir gizli API ile birlikte gönderilmelidir. Ancak:

    • MAY: Cihaz uygulamasında gizli bir API yoksa veya farklı şekilde uygulanmışsa gizli API'yi kara listeye 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.
    • İzin verilenler listesi hariç, gizli bir API'yi kısıtlanmış bir listeden daha az kısıtlayıcı bir listeye taşıyan dinamik bir güncelleme mekanizması UYGULAYABİLİR.

3.1.1. Android Uzantıları

Android, aynı API düzeyi sürümünü korurken yönetilen API'lerin genişletilmesini destekler.

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

3.1.2. Android Kitaplığı

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

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

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

3.2. Yazılım API Uyumluluğu

Android, 3.1 bölümündeki yönetilen API'lere ek olarak, yalnızca çalışma zamanında kullanılabilen önemli bir "yumuşak" API de içerir. Bu API, intent'ler, izinler ve Android uygulamalarının derleme süresinde zorunlu kılınamayan benzer yönleri gibi öğeler biçimindedir.

3.2.1. İzinler

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

3.2.2. Oluşturma Parametreleri

Android API'leri, android.os.Build sınıfında mevcut cihazı tanımlaması amaçlanan bir dizi sabit içerir.

  • [C-0-1] Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının UYMASI GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre Ayrıntılar
VERSION.RELEASE Şu anda yürütülen Android sisteminin sürümü, okunabilir biçimde. Bu alan, 9'da 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 9 için bu alanın değeri 9_INT tam sayısı OLMALIDIR.
VERSION.SDK_INT Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 9 için bu alanın değeri 9_INT tam sayısı OLMALIDIR.
VERSION.INCREMENTAL Cihaz uygulayıcısı tarafından seçilen ve o anda yürütülen Android sisteminin belirli derlemesini belirten, kullanıcılar tarafından okunabilir biçimde bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişikliği tanımlayıcısının kullanıldığını belirtmektir. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır.
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 bir revizyonunu belirtmek için kullanılabilir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir.
BRAND Cihazla ilişkili marka adını son kullanıcılara bilindiği şekliyle yansıtan bir değer. İ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.
SUPPORTED_ABIS Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu.
SUPPORTED_32_BIT_ABIS Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu.
SUPPORTED_64_BIT_ABIS Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu.
CPU_ABI Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu.
CPU_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 ve endüstriyel tasarımının yapılandırmasını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilmeli ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
PARMAK İZİ Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunabilir OLMALIDIR. Şu şablona UYULMALIDIR:

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

Örneğin:

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

Parmak izi, boşluk karakterleri içermemelidir. Yukarıdaki şablonda yer alan diğer alanlarda boşluk karakterleri varsa bunlar, derleme parmak izinde alt çizgi ("_") karakteri gibi başka bir karakterle DEĞİŞTİRİLMELİDİR. Bu alanın değeri 7 bitlik ASCII olarak kodlanabilmelidir.

DONANIM Donanımın adı (çekirdek komut satırından veya /proc'tan). Makul ölçüde okunabilir OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir.
HOST Derlemenin oluşturulduğu ana makineyi benzersiz bir şekilde tanımlayan, okunabilir biçimdeki dize. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır.
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ıdır veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca değişmemelidir.
MODEL Cihaz uygulayıcısı tarafından seçilen ve cihazın son kullanıcı tarafından bilinen adını içeren bir değer. Bu, cihazın son kullanıcılara pazarlandığı ve satıldığı adla aynı OLMALIDIR. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalıdır veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca değişmemelidir.
ÜRÜN Cihaz uygulayıcısı tarafından seçilen ve aynı marka içinde benzersiz OLMASI GEREKEN belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değer. Kullanıcıların okuyabileceği bir biçimde OLMALIDIR ancak son kullanıcıların görüntülemesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilmeli ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
SERIAL "UNKNOWN" döndürmelidir.
ETİKETLER Cihaz uygulayıcı tarafından seçilen ve derlemeyi daha da ayırt eden virgülle ayrılmış etiket listesi. Bu alan, üç tipik Android platformu imzalama yapılandırmasına (release-keys, dev-keys, test-keys) karşılık gelen değerlerden birini içermelidir.
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. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır.
SECURITY_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 Herkese Açık Güvenlik Bülteni veya Android Güvenlik Tavsiyesi'nde belgelenen tanımlı bir dizeyle eşleşen [YYYY-AA-GG] biçiminde OLMALIDIR. Örneğin, "2015-11-01".
BASE_OS Android Public Security Bulletin'de sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden bir değer. Doğru değeri RAPORLAMALI ve böyle bir derleme yoksa boş bir dize ("") raporlamalıdır.
BOOTLOADER Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili önyükleyici sürümünü tanımlayan, kullanıcılar tarafından okunabilir biçimde bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir.
getRadioVersion() Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili radyo/modem sürümünü tanımlayan bir değeri, kullanıcılar tarafından okunabilir biçimde DÖNMELİDİR. 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 kullanılabilir ve benzersiz OLMASI GEREKEN bir donanım seri numarası OLMALIDIR (veya döndürmelidir). Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir.

3.2.3. Amaca Uygunluk

3.2.3.1. Temel uygulama amaçları

Android intent'leri, uygulama bileşenlerinin diğer Android bileşenlerinden işlev isteğinde bulunmasına olanak tanır. Android upstream projesi, temel Android uygulamaları olarak kabul edilen uygulamaların bir listesini içerir. Bu uygulamalar, yaygın işlemleri gerçekleştirmek için çeşitli amaç kalıplarını uygular.

  • [C-0-1] Cihaz uygulamaları, AOSP'deki aşağıdaki temel Android uygulamaları tarafından tanımlanan tüm genel amaç filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini amaç işleyiciyle birlikte önceden yüklemelidir:

    • Masa Saati
    • Tarayıcı
    • Takvim
    • Kişiler
    • Galeri
    • GlobalSearch
    • Başlatıcı
    • Müzik
    • Ayarlar
3.2.3.2. Amaç Çözümleme
  • [C-0-1] Android genişletilebilir bir platform olduğundan, cihaz uygulamaları, Ayarlar hariç bölüm 3.2.3.1'de referans verilen her amaç kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına İZİN VERMELİDİR. Yukarı akış Android açık kaynak uygulaması, bu işleme varsayılan olarak izin verir.

  • [C-0-2] Cihaz uygulayıcıları, sistem uygulamalarının bu amaç kalıplarını kullanmasına özel ayrıcalıklar EKLEMEMELİ 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ışını beyan etmesine olanak tanıyan bir mekanizma içerir. Bu tür yetkili bildirimler bir uygulamanın amaç filtresi kalıplarında tanımlandığında cihaz uygulamaları:

  • [C-0-4] 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 ÇALIŞMALIDIR.
  • [C-0-5] Uygulama yüklenirken intent filtrelerinin doğrulanması ZORUNLU olarak denenmeli ve başarıyla doğrulanan tüm URI intent filtreleri, URI'leri için varsayılan uygulama işleyicileri olarak ayarlanmalıdır.
  • Başarıyla doğrulanırsa ancak diğer aday URI filtreleri doğrulanmazsa 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 kullanıcıya URI başına uygun kalıp geçersiz kılma işlemleri SAĞLAMALIDIR.
  • Kullanıcıya Ayarlar'da uygulama başına uygulama bağlantıları kontrolleri aşağıdaki şekilde SAĞLANMALIDIR:
    • [C-0-6] Kullanıcı, bir uygulamanın varsayılan uygulama bağlantıları davranışını (her zaman aç, her zaman sor veya asla açma) bütünsel olarak geçersiz kılabilmelidir. Bu, 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ılı bir şekilde doğrulanmış 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 bir intent veya yayın intent kalıbını destekleyen herhangi bir Android bileşeni İÇERMEMELİDİR.
  • [C-0-2] Cihaz uygulayıcıları, başka bir kuruluşa ait paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni bir intent ya da yayın intent kalıbını destekleyen Android bileşenleri İÇERMEMELİDİR.
  • [C-0-3] Cihaz uygulayıcıları, 3.2.3.1 bölümünde listelenen temel uygulamalar tarafından kullanılan amaç kalıplarını 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 bölümünde 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şiklikler konusunda bilgilendirilmek 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 herkese açık yayın amaçlarını yayınlamalıdır. Arka plan uygulamalarıyla ilgili sınırlama SDK dokümanlarında da açıklandığı için bu şartın 3.5 bölümüyle çelişmediğini unutmayın.
3.2.3.5. Varsayılan Uygulama Ayarları

Android'de, kullanıcılara varsayılan uygulamalarını (ör. ana ekran veya SMS için) kolayca seçme imkanı sunan ayarlar bulunur.

Mantıklı olduğu durumlarda cihaz uygulamaları benzer bir ayarlar menüsü sağlamalı ve SDK belgelerinde aşağıda açıklandığı gibi intent filtresi kalıbı ve API yöntemleriyle uyumlu olmalıdır.

Cihaz uygulamaları android.software.home_screen bildiriyorsa:

Cihaz uygulamaları android.hardware.telephony bildiriyorsa:

  • [C-2-1] Varsayılan SMS uygulamasını değiştirmek için bir iletişim kutusu göstermek üzere android.provider.Telephony.ACTION_CHANGE_DEFAULT amacını çağıracak bir ayarlar menüsü SAĞLANMALIDIR.

  • [C-2-2] Kullanıcının varsayılan Telefon uygulamasını değiştirmesine izin veren bir iletişim kutusu gösterme android.telecom.action.CHANGE_DEFAULT_DIALER amacı GEREKLİDİR.

    • Acil durum aramaları hariç gelen ve giden aramalar için kullanıcının seçtiği varsayılan Telefon uygulamasının kullanıcı arayüzü KULLANILMALIDIR. Acil durum aramalarında ise önceden yüklenmiş Telefon uygulaması kullanılır.
  • [C-2-3] android.telecom.action.CHANGE_PHONE_ACCOUNTS amacına uygun olarak, PhoneAccounts ile ilişkili ConnectionServices öğesini yapılandırmak için kullanıcıya kolaylık sağlamalı ve telekomünikasyon hizmeti sağlayıcısının giden aramalar yapmak için kullanacağı varsayılan bir PhoneAccount oluşturmalıdır. AOSP uygulaması, "Aramalar" ayarları menüsünde "Arama Hesapları seçeneği" menüsünü ekleyerek bu şartı karşılar.

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

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

3.2.4. İkincil ekranlardaki etkinlikler

Cihaz uygulamaları, ikincil ekranlarda 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 bayraklı bir ekran kaldırıldığında TÜM etkinlikler yok edilmelidir.
  • [C-1-5] Ekranın boyutu değiştirilirse VirtualDisplay üzerindeki tüm etkinliklerin boyutu buna göre değiştirilmelidir.
  • Bir metin girişi alanı ikincil ekranda odaklandığında bir IME (giriş yöntemi düzenleyici, kullanıcıların metin girmesini sağlayan bir kullanıcı kontrolü) birincil ekranda GÖSTERİLEBİLİR.
  • Dokunma veya tuş girişleri desteklendiğinde, giriş odağını birincil ekrandan bağımsız olarak ikincil ekranda uygulamalıdır.
  • İkincil ekranda bir etkinlik başlatılırsa gösterilmesi, doğru şekilde çalışması ve uyumluluğun korunması için bu ekrana karşılık gelen android.content.res.Configuration olmalıdır.

Cihaz uygulamaları, ikincil ekranlarda normal Android Etkinlikleri'nin başlatılmasına izin veriyorsa ve birincil ile ikincil ekranlar farklı android.util.DisplayMetrics'e sahipse:

  • [C-2-1] Yeniden boyutlandırılamayan etkinliklere (AndroidManifest.xml içinde resizeableActivity=false olanlar) ve API düzeyi 23 veya daha düşük sürümleri hedefleyen uygulamalara ikincil ekranlarda İZİN VERİLMEMELİ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 bulunan etkinliklerin sahibi, ekranı başlatabilmelidir. Herkes, android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda başlatabilir.

3.3. Yerel API Uyumluluğu

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

  • [SR] Aşağıda listelenen kitaplıkların 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 .apk dosyası içinde uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak sağlanan yerel kodu çağırabilir. Yerel kod, temel işlemci teknolojisine büyük ölçüde bağlı olduğundan Android, Android NDK'da bir dizi Uygulama İkili Arabirimi (ABI) tanımlar.

Cihaz uygulamaları:

  • [C-0-1] Tanımlanmış bir veya daha fazla ABI ile uyumlu OLMALI ve Android NDK ile uyumluluğu uygulamalıdır.
  • [C-0-2] Standart Java Native Interface (JNI) semantiğini kullanarak yönetilen ortamda çalışan kodun yerel kodu çağırması için destek içermelidir.
  • [C-0-3] Aşağıdaki listede yer alan her bir gerekli kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
  • [C-0-5] Cihaz tarafından desteklenen yerel Uygulama İkili Arabirimi (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 bildirilmelidir. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene doğru sıralanmış, virgülle ayrılmış ABI listeleridir.
  • [C-0-6] Yukarıdaki parametreler aracılığıyla aşağıdaki ABI listesinin bir alt kümesini RAPORLAMALI ve listede olmayan hiçbir ABI'yi RAPORLAMAMALIDIR.

    • armeabi
    • armeabi-v7a
    • arm64-v8a
    • x86
    • x86-64
    • [C-0-7] Yerel API'ler sağlayan aşağıdaki tüm kitaplıklar, yerel kod içeren uygulamalarda kullanılabilir OLMALIDIR:

    • libaaudio.so (AAudio yerel ses desteği)

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

  • [C-0-9] /vendor/etc/public.libraries.txt içinde doğrudan üçüncü taraf uygulamalarına sunulan ek AOSP dışı kitaplıkları LİSTELEMELİDİR.
  • [C-0-10] AOSP'de sistem kitaplıkları olarak uygulanan ve sağlanan diğer yerel kitaplıklar, ayrılmış oldukları için API düzeyi 24 veya sonraki sürümleri hedefleyen üçüncü taraf uygulamalarına sunulmamalıdır.
  • [C-0-11] NDK'da tanımlandığı şekilde, libGLESv3.so kitaplığı aracılığıyla tüm OpenGL ES 3.1 ve Android Extension Pack işlev sembollerini dışa aktarmalıdır. Tüm sembollerin bulunması ZORUNLU olsa da bölüm 7.1.4.1'de, ilgili işlevlerin tam olarak uygulanmasının beklendiği durumlarla ilgili şartlar daha ayrıntılı olarak açıklanmaktadır.
  • [C-0-12] MUST, libvulkan.so kitaplığı aracılığıyla temel Vulkan 1.0 işlev simgeleri ve VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, VK_KHR_maintenance1 ve VK_KHR_get_physical_device_properties2 uzantıları için işlev simgelerini dışa aktarmalıdır. Tüm sembollerin bulunması ZORUNLU olsa da bölüm 7.1.4.2'de, ilgili işlevlerin tam olarak uygulanmasının beklendiği durumlarla ilgili koşullar daha ayrıntılı olarak açıklanmaktadır.
  • 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, armeabi yalnızca eski uygulamalarla geriye dönük uyumluluk için olduğundan armeabi-v7a da desteklenmeli ve desteği bildirilmelidir.

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

  • [C-2-1] /proc/cpuinfo içinde aşağıdaki satırlar yer ALMALIDIR ve aynı cihazdaki değerler, diğer ABI'ler tarafından okunsa bile DEĞİŞTİRİLMEMELİDİR.

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

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

3.4. Web Uyumluluğu

3.4.1. WebView Uyumluluğu

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

  • [C-1-1] MUST report android.software.webview.
  • [C-1-2] android.webkit.WebView API'nin uygulanması için Android 9 dalında yukarı akış Android Açık Kaynak Projesi'nden Chromium Projesi derlemesi KULLANILMALIDIR.
  • [C-1-3] WebView tarafından bildirilen kullanıcı aracısı dizesi şu biçimde OLMALIDIR:

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

    • $(VERSION) dizesinin değeri, android.os.Build.VERSION.RELEASE değerine eşit OLMALIDIR.
    • $(MODEL) dizesi BOŞ olabilir ancak boş değilse android.os.Build.MODEL ile aynı değere SAHİP OLMALIDIR.
    • "Build/$(BUILD)" atlanabilir ancak varsa $(BUILD) dizesi android.os.Build.ID değeriyle aynı OLMALIDIR.
    • $(CHROMIUM_VER) dizesinin değeri, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium sürümü OLMALIDIR.
    • Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobile ifadesini atlayabilir.
  • WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliğini desteklemelidir ve özelliği destekliyorsa HTML5 spesifikasyonuna uygun olmalıdır.

3.4.2. Tarayıcı Uyumluluğu

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

  • [C-1-1] HTML5 ile ilişkili şu API'lerin her birini DESTEKLEMELİDİR:
  • [C-1-2] HTML5/W3C webstorage API'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 uygulamalı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, yüklü tüm uygulamalarda API davranış uyumluluğunun uygulanmasını SAĞLAMALIDIR.
  • [C-0-10] Yalnızca cihaz uygulayıcıları tarafından seçilen uygulamalar için API davranış uyumluluğunu sağlayan izin verilenler listesi yaklaşımı 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 tarafından 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ına tabi TUTMALIDIR.
    • [C-0-6] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa yayın amacı "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 üstünü hedefliyorsa kullanıcıya görünür bir görevi işlemek için geçici izin verilenler listesine yerleştirilmediği sürece, hizmetlerin stopSelf() yöntemi çağrılmış gibi uygulamanın arka plan hizmetlerini DURDURMALIDIR. [C-0-7]
    • [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-9] Uygulama, listeyi insertProviderAt() veya removeProvider() aracılığıyla değiştirmemişse cihazlar, Security.getProviders() yönteminden döndürülen ilk yedi dizi değeri olarak aşağıdaki güvenlik sağlayıcıları, belirtilen sırada 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ılar listesinden sonra ek sağlayıcılar döndürebilir.
    1. AndroidNSSP - android.security.net.config.NetworkSecurityConfigProvider
    2. AndroidOpenSSL - com.android.org.conscrypt.OpenSSLProvider
    3. CertPathProvider - sun.security.provider.CertPathProvider
    4. AndroidKeyStoreBCWorkaround - android.security.keystore.AndroidKeyStoreBCWorkaroundProvider
    5. BC - com.android.org.bouncycastle.jce.provider.BouncyCastleProvider
    6. HarmonyJSSE - com.android.org.conscrypt.JSSEProvider
    7. AndroidKeyStore - android.security.keystore.AndroidKeyStoreProvider

Yukarıdaki liste tam kapsamlı değildir. Uyumluluk Test Paketi (CTS), platformun önemli bölümlerini davranış uyumluluğu açısından test eder ancak tüm bölümlerini test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcılar sistemin önemli kısımlarını yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodunu KULLANMALIDIR.

3.5.1. Arka plan kısıtlaması

Cihaz uygulamaları, AOSP'de yer alan uygulama kısıtlamalarını uygularsa veya uygulama kısıtlamalarını genişletirse:

  • [C-SR] Kullanıcının kısıtlanmış uygulamaların listesini görebileceği bir kullanıcı olanağı sunulması ŞİDDETLE TAVSİYE EDİLİR.
  • [C-1-2] Her uygulamadaki kısıtlamaları etkinleştirmek / devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR.
  • [C-1-3] Sistem sağlığıyla ilgili kötü davranış kanıtı olmadan kısıtlamalar otomatik olarak UYGULANMAMALI, ancak takılı uyanık kalma kilitleri ve uzun süredir çalışan hizmetler gibi sistem sağlığıyla ilgili kötü davranışlar tespit edildiğinde uygulamalara kısıtlamalar UYGULANABİLİR. Ölçütler, cihaz uygulayıcıları tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili OLMALIDIR. Uygulamanın piyasada popüler olmaması gibi tamamen sistem sağlığıyla ilgili olmayan diğer ölçütler kullanılmamalıdır.
  • [C-1-4] Kullanıcı, uygulama kısıtlamalarını manuel olarak devre dışı bıraktığında uygulamalar için otomatik olarak uygulama kısıtlamaları uygulanMAMALI ve kullanıcıya uygulama kısıtlamaları uygulaması ÖNERİLEBİLİR.
  • [C-1-5] Uygulama kısıtlamaları bir uygulamaya otomatik olarak uygulanırsa kullanıcıları bilgilendirmelidir.
  • [C-1-6] Kısıtlanmış uygulama bu API'yi çağırdığında ActivityManager.isBackgroundRestricted() için true döndürmELİDİR.
  • [C-1-7] Kullanıcı tarafından açıkça kullanılan ön plandaki en üst uygulama kısıtlanMAMALIDIR.
  • [C-1-8] Kullanıcı, kısıtlanmış olan uygulamayı açıkça kullanmaya başladığında, en üstteki ön plan uygulaması haline gelen uygulamadaki kısıtlamaları ASKIYA ALMALIDIR.

3.6. API ad alanları

Android, Java programlama dili tarafından tanımlanan paket ve sınıf ad alanı kurallarına uyar. Cihaz uygulayıcıları, üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için bu paket ad alanlarında yasaklanmış değişiklikler (aşağıya bakın) YAPMAMALIDIR:

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

Yani:

  • [C-0-1] Android platformunda herkese açık olarak sunulan API'ler, herhangi bir yöntem veya sınıf imzası değiştirilerek ya da sınıflar veya sınıf alanları kaldırılarak değiştirilmemelidir.
  • [C-0-2] Yukarıdaki ad alanlarındaki API'lere herkese açık olarak sunulan öğeler (ör. sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere alanlar ya da yöntemler) ya da Test veya Sistem API'leri eklenmemelidir. "Herkese açık öğe", yukarı akış Android kaynak kodunda kullanılan "@hide" işaretçisiyle süslenmemiş tüm yapılardır.

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

  • [C-0-3] Herkese açık API'lerin 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] Yalnızca bunları açıkça kullanan uygulamaların (<uses-library> mekanizması aracılığıyla) bu tür API'lerin artan bellek kullanımından etkilenmesi için Android paylaşılan kitaplığı olarak paketlenmelidir.

Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarından birini iyileştirmeyi (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) teklif ederse uygulayıcı source.android.com adresini ziyaret etmeli ve bu sitedeki bilgilere göre değişiklik ve kod katkısında bulunma sürecini başlatmalıdır.

Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandı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ırILMALIDIR. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 bölümüne bakın.)

  • Android RunTime (ART), Dalvik Executable Format'ın referans upstream uygulaması ve referans uygulamanın paket yönetim sistemi KULLANILMALIDIR.

  • Çalışma zamanının kararlılığını sağlamak için çeşitli yürütme modları ve hedef mimariler altında bulanıklaştırma testleri YAPILMALIDIR. Android Açık Kaynak Projesi web sitesindeki JFuzz ve DexFuzz bölümlerine bakın.

Aşağıda belirtilen bellek değerlerinin minimum değerler olduğu ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceği unutulmamalıdır.

Ekran düzeni Ekran Yoğunluğu Minimum Uygulama Belleği
Android Watch 120 dpi (ldpi) 32 MB
160 dpi (mdpi)
213 dpi (tvdpi)
240 dpi (hdpi) 36MB
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
160 dpi (mdpi)
213 dpi (tvdpi) 48MB
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
160 dpi (mdpi) 48MB
213 dpi (tvdpi) 80MB
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
160 dpi (mdpi) 80MB
213 dpi (tvdpi) 96MB
240 dpi (hdpi)
280 dpi (280dpi) 144MB
320 dpi (xhdpi) 192MB
360 dpi (360dpi) 240MB
400 dpi (400dpi) 288MB
420 dpi (420dpi) 336MB
480 dpi (xxhdpi) 384MB
560 dpi (560dpi) 576MB
640 dpi (xxxhdpi) 768MB

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

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

Android'de bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerine üçüncü taraf uygulamaları kullanma desteği bulunur.

Cihaz uygulamaları, üçüncü taraf uygulamaların cihazın ana ekranının yerini almasına izin veriyorsa:

  • [C-1-1] Platform özelliği android.software.home_screen BİLDİRİLMELİDİR.
  • [C-1-2] Üçüncü taraf uygulaması simgesini sağlamak için <adaptive-icon> etiketini kullandığında ve simgeleri almak için PackageManager yöntemleri çağrıldığında AdaptiveIconDrawable nesnesi döndürülmelidir.

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

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

Cihaz uygulamaları, ShortcutManager API aracılığıyla üçüncü taraf uygulamaları 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 imkan gösterin ve uygulamanın tüm bildirim kanalları değeri false olarak ayarlamışsa herhangi bir uygulama simgesi rozetleme şeması göstermeyin.
  • Üçüncü taraf uygulamaları, özel API'ler kullanarak özel rozetleme şemasını desteklediğini belirttiğinde uygulama simgesi rozetlerini özel rozetleme şemasıyla geçersiz KILABİLİR 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.

3.8.2. Widget'lar

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

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

  • [C-1-1] android.software.app_widgets platform özelliği için destek beyan EDİLMELİDİR.
  • [C-1-2] MUST include built-in support for AppWidgets and expose user interface affordances to add, configure, view, and remove AppWidgets directly within the Launcher.
  • [C-1-3] Standart ızgara boyutunda 4 x 4 boyutundaki widget'ları oluşturabilmelidir. Ayrıntılar için Android SDK belgelerindeki Uygulama Widget'ı Tasarım Kuralları'na bakın.
  • Kilit ekranında uygulama widget'larını DESTEKLEYEBİLİR.

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

3.8.3. Bildirimler

Android'de, üçüncü taraf uygulama geliştiricilerin kullanıcılara önemli etkinlikleri bildirmesine ve cihazın donanım bileşenlerini (ör. ses, titreşim ve ışık) ve yazılım özelliklerini (ör. bildirim gölgesi, sistem çubuğu) kullanarak kullanıcıların dikkatini çekmesine olanak tanıyan Notification ve NotificationManager API'leri bulunur.

3.8.3.1. Bildirimlerin Gösterilmesi

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

  • [C-1-1] SDK dokümanlarında açıklandığı gibi ve cihaz uygulamasının donanımıyla mümkün olduğu ölçüde, donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim motoru varsa titreşim API'lerini DOĞRU şekilde uygulaması ZORUNLUDUR. Bir cihaz uygulamasında donanım eksikse ilgili API'ler işlem yapmayan işlemler olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmıştır.
  • [C-1-2] API'lerde veya Durum/Sistem Çubuğu simge stili 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 uymalı ve bunları doğru şekilde uygulamalıdır.
  • [C-1-4] SDK'da belgelenen NotificationChannel API'sinin tam davranışını SAĞLAMALIDIR.
  • [C-1-5] Belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek ve değiştirmek için kullanıcıya olanak TANINMALIDIR.
  • [C-1-6] SİLİNMİŞ BİLDİRİM KANALLARINI GÖSTERMEK İÇİN KULLANICIYA BİR OLANAK DA SUNULMALIDIR.
  • [C-1-7] Notification.MessagingStyle aracılığıyla sağlanan tüm kaynaklar (resimler, çıkartmalar, simgeler vb.), bildirim metniyle birlikte ek kullanıcı etkileşimi olmadan doğru şekilde oluşturulmalıdır. Örneğin, setGroupConversation ile ayarlanan bir grup görüşmesinde android.app.Person aracılığıyla sağlanan simgeler de dahil olmak üzere tüm kaynaklar GÖSTERİLMELİDİR.
  • [C-SR] Kullanıcı bu bildirimi birden çok kez kapattıktan sonra belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek için kullanıcıya otomatik olarak bir seçenek sunması Şİ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ülerin dikkatini dağıtma gibi güvenlik sorunlarını azaltmak için üçüncü taraf uygulamaların kullanıcıları önemli etkinliklerden ne zaman haberdar edebileceğinin görünürlüğünü ve zamanlamasını yönetebilir.

Cihaz uygulamaları zengin bildirimleri destekliyorsa:

  • [C-2-1] Gösterilen kaynak öğeleri için Notification.Style API sınıfı ve alt sınıfları aracılığıyla sağlanan kaynakları eksiksiz biçimde KULLANMALIDIR.
  • Notification.Style API sınıfında ve alt sınıflarında tanımlanan her bir kaynak öğesini (ör. simge, başlık ve özet metni) SUNMALIDIR.

Cihaz uygulamaları, heads-up bildirimlerini destekliyorsa:

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

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

Cihaz uygulamaları android.hardware.ram.normal özellik bayrağını bildiriyorsa:

  • [C-1-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-1-2] snoozeNotification() API çağrısına UYULMALI, bildirim kapatılmalı ve API çağrısında ayarlanan erteleme süresinden sonra geri arama yapılmalıdır.

Cihaz uygulamalarında bildirimleri ertelemek için kullanıcıya sunulan bir özellik varsa:

  • [C-2-1] NotificationListenerService.getSnoozedNotifications() gibi standart API'ler aracılığıyla ertelenen bildirim durumunu doğru şekilde yansıtmalıdır.
  • [C-2-2] Kalıcı/ön plan hizmetlerinden gelmedikleri sürece, yüklü her üçüncü taraf uygulamasından gelen bildirimleri ertelemek için bu kullanıcı işlevini KULLANIMA SUNMALIDIR.
3.8.3.3. DND (Rahatsız Etmeyin)

Cihaz uygulamaları, DND özelliğini destekliyorsa:

  • [C-1-1] ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS amacına yanıt verecek bir etkinlik uygulanmalıdır. UI_MODE_TYPE_NORMAL ile uygulamalarda bu, kullanıcının uygulamaya DND politika yapılandırmalarına erişim izni verebileceği veya erişimi reddedebileceği bir etkinlik OLMALIDIR.
  • [C-1-2] Cihaz uygulaması, kullanıcının üçüncü taraf uygulamalarına Rahatsız Etmeyin politikası yapılandırmasına erişim izni vermesini veya bu erişimi reddetmesini sağlayacak bir yöntem sunuyorsa uygulamalar tarafından oluşturulan Otomatik Rahatsız Etmeyin kuralları, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kurallarla birlikte GÖSTERİLMELİDİR.
  • [C-1-3] NotificationManager.Policy ile iletilen suppressedVisualEffects değerlerine UYULMALIDIR ve bir uygulama SUPPRESSED_EFFECT_SCREEN_OFF veya SUPPRESSED_EFFECT_SCREEN_ON işaretlerinden herhangi birini ayarladıysa kullanıcılara, DND ayarları menüsünde görsel efektlerin devre dışı bırakıldığını BELİRTMELİDİR.

Android, geliştiricilerin uygulamalarına arama işlevini eklemelerine ve uygulamalarının verilerini küresel sistem aramasında göstermelerine olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmesine, yazarken önerileri görüntülemesine ve sonuçları göstermesine olanak tanıyan tek bir sistem genelinde kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü yeniden kullanmasına ve geliştiricilerin ortak global arama kullanıcı arayüzüne sonuçlar sunmasına olanak tanır.

  • Android cihaz uygulamaları, kullanıcı girişine yanıt olarak anlık öneriler sunabilen, sistem genelinde tek bir paylaşılan arama kullanıcı arayüzü olan genel aramayı İÇERMELİDİR.

Cihaz uygulamaları genel arama arayüzünü uyguluyorsa:

  • [C-1-1] Üçüncü taraf uygulamalarının, genel arama modunda çalıştırıldığında arama kutusuna öneri eklemesine olanak tanıyan API'leri uygulamalıdır.

Genel aramayı kullanan üçüncü taraf uygulamaları yüklü değilse:

  • Varsayılan davranış, web arama motoru sonuçlarını ve önerilerini göstermek OLMALIDIR.

Android ayrıca, uygulamaların mevcut bağlamdaki bilgilerin ne kadarının cihazdaki asistanla paylaşılacağını seçmesine olanak tanıyan Assist API'lerini de içerir.

Cihaz uygulamaları Asistan eylemini destekliyorsa:

  • [C-2-1] Aşağıdaki yöntemlerden biriyle bağlam paylaşıldığında son kullanıcıya açıkça belirtilmelidir:
    • Asistan uygulaması bağlama her eriştiğinde, Android Açık Kaynak Projesi uygulamasının süresini ve parlaklığını karşılayan veya aşan bir süre boyunca ekranın kenarlarında beyaz ışık gösterilir.
    • Önceden yüklenmiş asistan uygulaması için, varsayılan sesli giriş ve asistan uygulaması ayarları menüsünden iki gezinmeden daha az uzaklıkta bir kullanıcı olanağı sunulması ve bağlamın yalnızca asistan uygulaması, kullanıcı tarafından bir etkin kelime veya asistan gezinme anahtarı girişi aracılığıyla açıkça çağrıldığında paylaşılması.
  • [C-2-2] Bölüm 7.2.3'te açıklandığı gibi, yardımcı uygulamayı başlatmak için belirlenen etkileşim, kullanıcı tarafından seçilen yardımcı uygulamayı (diğer bir deyişle VoiceInteractionService'yi uygulayan uygulamayı) veya ACTION_ASSIST amacını işleyen bir etkinliği başlatmalıdır.

3.8.5. Uyarılar ve Toast Bildirimleri

Uygulamalar, kısa bir süre sonra kaybolan kısa ve modsuz dizeleri son kullanıcıya göstermek için Toast API'sini, uyarı pencerelerini diğer uygulamaların üzerinde katman olarak göstermek için ise TYPE_APPLICATION_OVERLAY pencere türü API'sini kullanabilir.

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

  • [C-1-1] Bir uygulamanın TYPE_APPLICATION_OVERLAY kullanarak uyarı pencereleri göstermesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR . AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu koşulu karşılar.

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

3.8.6. Temalar

Android, uygulamaların bir Etkinlik veya uygulama genelinde stiller uygulaması için "temalar" sunar.

Android, uygulama geliştiricilerin Android SDK'da tanımlandığı şekilde 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:

Android 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 ailesini de içerir.

Android, yarı saydam sistem çubuklarına sahip bir tema varyantını destekler. Bu tema, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içerikleriyle doldurmasına olanak tanır. Bu yapılandırmada tutarlı bir geliştirici deneyimi sağlamak için durum çubuğu simge stilinin farklı cihaz uygulamalarında korunması önemlidir.

Cihaz uygulamaları sistem durumu çubuğu içeriyorsa:

  • [C-2-1] Simge, sorunlu bir durumu belirtmediği veya bir uygulama SYSTEM_UI_FLAG_LIGHT_STATUS_BAR işaretini kullanarak açık renkli bir durum çubuğu istemediği sürece sistem durumu simgeleri (ör. sinyal gücü ve pil seviyesi) ve sistem tarafından verilen bildirimler için BEYAZ renk KULLANILMALIDIR.
  • [C-2-2] Bir uygulama açık renkli durum çubuğu istediğinde Android cihaz uygulamaları, sistem durumu simgelerinin rengini siyaha çevirmelidir (ayrıntılar için R.style'a bakın).

3.8.7. Animasyonlu Duvar Kağıtları

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

Donanım, tüm canlı duvar kağıtlarını işlevsellik açısından herhangi bir sınırlama olmadan, makul bir kare hızında ve diğer uygulamalar üzerinde olumsuz bir etkisi olmadan ç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 kilitlenirse, düzgün çalışmazsa, aşırı CPU veya pil gücü tüketirse 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] android.software.live_wallpaper platform özellik işaretini bildirmelidir.

3.8.8. Etkinlikler Arasında Geçiş Yapma

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

Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi navigasyon tuşunu içeren cihaz uygulamaları arayüzü değiştirebilir.

Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi gezinme tuşunu içeren cihaz uygulamaları arayüzü değiştirirse:

  • [C-1-1] En az 7 görüntülenen etkinliği destekLEMELİDİR.
  • Aynı anda en az 4 etkinliğin başlığını göstermelidir.
  • [C-1-2] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirmek/devre dışı bırakmak için bir ayarlar menüsü sunmalıdır.
  • Son kullanılanlarda vurgu rengi, simge ve ekran başlığı GÖSTERİLMELİDİR.
  • Kapatma olanağı ("x") GÖSTERİLMELİDİR ancak bu, 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 kullanılan işlev tuşuna uzun basıldığında bölünmüş ekran çoklu pencere modu TETİKLENMELİDİR.
  • Bağlı son öğeleri birlikte hareket eden bir grup olarak GÖSTEREBİLİR.
  • [SR] Genel bakış ekranı için yukarı akış Android kullanıcı arayüzünün (veya benzer bir küçük resim tabanlı arayüzün) kullanılması ŞİDDETLE TAVSİYE EDİLİR.

3.8.9. Giriş Yönetimi

Android, Giriş Yönetimi'ni ve üçüncü taraf giriş yöntemi düzenleyicilerini destekler.

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

  • [C-1-1] android.software.input_methods platform özelliğini DEĞİŞKEN olarak bildirmeli ve Android SDK belgelerinde tanımlandığı şekilde IME API'lerini desteklemelidir.
  • [C-1-2] 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ı android.software.autofill özellik işaretini beyan ediyorsa:

3.8.10. Kilit ekranında medya kontrolü

Uzaktan Kumanda İstemcisi API'si, Android 5.0'dan itibaren kullanımdan kaldırıldı. Bunun yerine, medya uygulamalarının kilit ekranında gösterilen oynatma kontrolleriyle entegre olmasına olanak tanıyan Medya Bildirimi Şablonu kullanılıyor.

3.8.11. Ekran koruyucular (eski adıyla İlham Sahnesi)

Android, daha önce Dreams olarak adlandırılan etkileşimli ekran koruyucuları destekler. Ekran koruyucular, bir güç kaynağına bağlı cihaz boşta kaldığında veya masaüstü dock istasyonuna yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Android Watch cihazlar ekran koruyucuları uygulayabilir ancak diğer cihaz uygulamaları, ekran koruyucuları desteklemeli 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.

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] Aşağıdakiler için destek içermelidir:
    • Cihazda kullanılabilen diller için farklı ağırlıklara sahip Roboto 2 yazı tipi (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black, sans-serif-condensed, sans-serif-condensed-light).
    • Latin, 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).
  • Unicode Teknik Raporu #51'de belirtildiği gibi cilt tonu ve çeşitli aile emojilerini DESTEKLEMELİDİR.

Cihaz uygulamaları bir IME içeriyorsa:

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

3.8.14. Çoklu pencereler

Cihaz uygulamaları aynı anda birden fazla etkinliği 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'lerine uygun şekilde uygulamalı ve aşağıdaki koşulları karşılamalıdır:
  • [C-1-2] Uygulamalar, AndroidManifest.xml dosyasında çok pencereli modda çalışıp çalışamayacaklarını belirtebilir. Bu işlem, android:resizeableActivity özelliğini true olarak ayarlayarak açıkça veya targetSdkVersion'ı 24'ten büyük olacak şekilde ayarlayarak dolaylı olarak yapılabilir. Bu özelliği manifestlerinde açıkça false olarak ayarlayan uygulamalar çoklu pencere modunda başlatılMAMALIDIR. targetSdkVersion < 24 olan ve bu android:resizeableActivity özelliğini ayarlamayan eski uygulamalar çoklu pencere modunda başlatılabilir ANCAK sistem, uygulamanın çoklu pencere modunda beklendiği gibi çalışmayabileceği konusunda uyarı vermelidir.
  • [C-1-3] Ekran yüksekliği < 440 dp ve ekran genişliği < 440 dp ise bölünmüş ekran veya serbest biçim modu sunULMAMALIDIR.
  • Ekran boyutu xlarge olan cihaz uygulamaları, serbest biçim modunu DESTEKLEMELİDİR.

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

  • [C-2-1] Varsayılan olarak yeniden boyutlandırılabilir bir başlatıcı önceden yüklenmelidir.
  • [C-2-2] Başlatıcı uygulaması odaklanılan pencereyse bölünmüş ekranlı çok pencereli bir uygulamanın yerleştirilmiş etkinliği KESİLMELİ ancak bu etkinliğin bazı içerikleri GÖSTERİLMELİDİR.
  • [C-2-3] Üçüncü taraf başlatıcı uygulamasının beyan edilen AndroidManifestLayout_minWidth ve AndroidManifestLayout_minHeight değerlerine UYULMALI ve yerleştirilmiş etkinliğin bazı içerikleri gösterilirken bu değerler geçersiz kılınmamalıdır.

Cihaz uygulamaları, çoklu pencere modlarını ve pencere içinde pencere çoklu pencere modunu destekliyorsa:

  • [C-3-1] Uygulama şu durumlarda etkinlikleri resim içinde resim çoklu pencere modunda başlatmalıdır: * API düzeyi 26 veya sonraki sürümleri hedefliyorsa ve android:supportsPictureInPicture beyan ediyorsa * API düzeyi 25 veya önceki sürümleri hedefliyorsa ve hem android:resizeableActivity hem de android:supportsPictureInPicture beyan ediyorsa.
  • [C-3-2] setActions() API'si aracılığıyla, geçerli PIP etkinliğinde belirtildiği şekilde SystemUI'deki işlemleri kullanıma sunmalıdır.
  • [C-3-3] setAspectRatio() API'si aracılığıyla PIP etkinliğinde belirtildiği gibi, 1:2,39'dan büyük veya eşit ve 2,39:1'den küçük veya eşit en-boy oranlarını DESTEKLEMELİDİR.
  • [C-3-4] PIP penceresini kontrol etmek için KeyEvent.KEYCODE_WINDOW kullanılmalıdır. PIP modu uygulanmamışsa tuş, ön plandaki etkinlik için kullanılabilir olmalıdır.
  • [C-3-5] Bir uygulamanın PIP modunda görüntülenmesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR. AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu şartı karşılar.
  • [C-3-6] PIP penceresi için minimum 108 dp genişlik ve yükseklik, Configuration.uiMode UI_MODE_TYPE_TELEVISION olarak yapılandırıldığında ise PIP penceresi için minimum 240 dp genişlik ve 135 dp yükseklik ayrılmalıdır.

3.8.15. Ekran Kesimi

Android, SDK dokümanında açıklandığı gibi ekran kesimini destekler. DisplayCutout API'si, ekranda içerik görüntüleme için işlevsel olmayan bir alan tanımlar.

Cihaz uygulamalarında ekran kesikleri varsa bunlar:

  • [C-1-1] YALNIZCA cihazın kısa kenarlarında kesikler OLMALIDIR. Aksine, cihazın en boy oranı 1,0 (1:1) ise kesme 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.9. Cihaz Yönetimi

Android, güvenliğe önem veren uygulamaların Android Device Administration API aracılığıyla sistem düzeyinde cihaz yönetimi işlevlerini (ör. şifre politikalarını zorunlu kılma veya uzaktan silme) gerçekleştirmesine olanak tanıyan özellikler içerir.

Cihaz uygulamaları, Android SDK belgelerinde tanımlanan cihaz yönetimi politikalarının tamamını uyguluyorsa:

  • [C-1-1] android.software.device_admin BİLDİRİLMELİDİR.
  • [C-1-2] Bölüm 3.9.1 ve Bölüm 3.9.1.1'de açıklandığı şekilde cihaz sahibi hazırlığını DESTEKLEMELİDİR.

3.9.1 Cihaz Temel Hazırlığı

3.9.1.1 Cihaz sahibi temel hazırlığı

Cihaz uygulamaları android.software.device_admin beyan ederse:

  • [C-1-1] Aşağıda açıklandığı gibi bir Cihaz Politikası İstemcisi'nin (DPC) Cihaz Sahibi uygulaması olarak kaydedilmesini DESTEKLEMELİDİR:
  • [C-1-2] Uygulamanın cihaz sahibi olarak ayarlanmasına izin vermek için hazırlık sürecinde olumlu bir işlem YAPILMASI GEREKİR. İzin, kullanıcı işlemiyle veya hazırlama sırasında programatik olarak alınabilir ancak kesinlikle sabit kodlanmamalı ya da diğer cihaz sahibi uygulamalarının kullanımını engellememelidir.

Cihaz uygulamaları android.software.device_admin beyan ediyorsa ancak tescilli bir cihaz sahibi yönetim çözümü de içeriyorsa ve çözümlerinde yapılandırılmış bir uygulamayı standart Android DevicePolicyManager API'leri tarafından tanınan standart "Cihaz Sahibi" olarak "Cihaz Sahibi eşdeğeri" olarak tanıtma mekanizması sağlıyorsa:

  • [C-2-1] Tanıtımı yapılan uygulamanın, yasal bir kurumsal cihaz yönetimi çözümüne ait olduğunu ve tescilli çözümde "Cihaz Sahibi" ile eşdeğer haklara sahip olacak şekilde yapılandırıldığını doğrulayan bir süreç OLMALIDIR.
  • [C-2-2] DPC uygulamasını "Cihaz Sahibi" olarak kaydetmeden önce android.app.action.PROVISION_MANAGED_DEVICE tarafından başlatılan akışla aynı AOSP Cihaz Sahibi izni açıklamasını göstermelidir.
  • DPC uygulaması "Cihaz Sahibi" olarak kaydedilmeden önce cihazda kullanıcı verileri OLABİLİR.
3.9.1.2 Yönetilen profil temel hazırlığı

Cihaz uygulamaları android.software.managed_users beyan ederse:

  • [C-1-1] Bir cihaz politikası denetleyici (DPC) uygulamasının yeni bir yönetilen profilin sahibi olmasına olanak tanıyan API'ler uygulanmalıdır.

  • [C-1-2] Kullanıcıların deneyimlediği yönetilen profil sağlama süreci (android.app.action.PROVISION_MANAGED_PROFILE tarafından başlatılan akış), AOSP uygulamasıyla uyumlu OLMALIDIR.

  • [C-1-3] Belirli bir sistem işlevi Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığında kullanıcıya bildirmek için Ayarlar'da aşağıdaki kullanıcı kolaylıkları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.

3.9.2 Yönetilen Profil Desteği

Cihaz uygulamaları android.software.managed_users beyan ederse:

  • [C-1-1] android.app.admin.DevicePolicyManager API'leri aracılığıyla yönetilen profiller desteklenmelidir.
  • [C-1-2] Yalnızca bir yönetilen profilin oluşturulmasına İZİN VERİLMELİDİR.
  • [C-1-3] Yönetilen uygulamaları, widget'ları ve diğer rozetli kullanıcı arayüzü öğelerini (ör. Son Kullanılanlar ve Bildirimler) temsil etmek için rozetli bir simge (AOSP'deki yukarı akış iş rozetine benzer) KULLANILMALIDIR.
  • [C-1-4] Kullanıcının yönetilen bir profil uygulamasında olduğunu belirtmek için bildirim simgesi (AOSP yukarı akış iş rozetine benzer) GÖSTERİLMELİDİR.
  • [C-1-5] Cihaz uyandığında (ACTION_USER_PRESENT) ve ön plandaki uygulama yönetilen profilin içindeyken kullanıcıya yönetilen profilde olduğunu belirten bir kısa mesaj göstermELİDİR.
  • [C-1-6] Yönetilen bir profil varsa Cihaz Politikası Denetleyicisi tarafından etkinleştirilmişse kullanıcının, yönetilen profildeki amacı birincil kullanıcıya veya tam tersi yönde iletmesine izin vermek için Amaç "Seçici"de görsel bir kolaylık GÖSTERİLMELİDİR.
  • [C-1-7] Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı kolaylıkları ZORUNLU olarak sunulmalıdır:
    • Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması.
    • Birincil kullanıcı veya yönetilen profile yüklenen VPN uygulamalarının bağımsız yönetimi.
    • Birincil kullanıcı veya yönetilen profile yüklenen uygulamaların bağımsız yönetimi.
    • Birincil kullanıcı veya yönetilen profil içindeki hesapların bağımsız yönetimi.
  • [C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş çevirici, kişiler ve mesajlaşma uygulamalarının, arayan bilgilerini yönetilen profilde (varsa) ve birincil profilde arayıp bulabilmesini SAĞLAMALIDIR.
  • [C-1-9] Yönetilen profil, birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa da birden fazla kullanıcının etkin olduğu bir cihaz için geçerli olan tüm güvenlik şartlarını karşıladığından EMİN OLMALIDIR (9.5 bölümüne bakın).
  • [C-1-10] Yönetilen profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı belirtme özelliğini DESTEKLEMELİDİR.
    • Cihaz uygulamaları, DevicePolicyManager.ACTION_SET_NEW_PASSWORD amacına uymalı ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmak üzere bir arayüz göstermelidir.
    • Yönetilen profilin kilit ekranı kimlik bilgileri, Android Açık Kaynak Projesi Sitesi'nde belgelendiği gibi üst profil ile aynı kimlik bilgisi depolama ve yönetim mekanizmalarını KULLANMALIDIR.
    • DPC şifre politikaları, getParentProfileInstance tarafından döndürülen DevicePolicyManager örneği çağrılmadığı sürece YALNIZCA yönetilen profilin kilit ekranı kimlik bilgilerine uygulanmalıdır.
  • Yönetilen profildeki kişiler, önceden yüklenmiş arama günlüğünde, görüşme içi kullanıcı arayüzünde, devam eden ve cevapsız arama bildirimlerinde gösterildiğinde, bu kişilere ve mesajlaşma uygulamalarına, yönetilen profil uygulamalarını belirtmek için kullanılan rozetle aynı rozet eklenmelidir.

3.9.3 Yönetilen Kullanıcı Desteği

Cihaz uygulamaları android.software.managed_users beyan ederse:

  • [C-1-1] isLogoutEnabled, true değerini döndürdüğünde çok kullanıcılı oturumda mevcut kullanıcıdan çıkış yapıp birincil kullanıcıya geri dönmek için kullanıcıya bir olanak SAĞLANMALIDIR. Kullanıcı arayüzü, cihazın kilidi açılmadan kilit ekranından erişilebilir OLMALIDIR.

3.10. Erişilebilirlik

Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sağlar. Ayrıca Android, erişilebilirlik hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma almasını ve metin okuma, dokunsal geribildirim 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ümanında açıklandığı gibi Android erişilebilirlik çerçevesinin bir uygulamasını SAĞLAMALIDIR.
  • [C-1-2] SDK'da belirtildiği şekilde, erişilebilirlik etkinlikleri oluşturmalı ve uygun AccessibilityEvent değerini tüm kayıtlı AccessibilityService uygulamalarına iletmelidir.
  • [C-1-3] Ö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.
  • [C-1-4] Etkinleştirilen erişilebilirlik hizmetleri AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON beyan ettiğinde kullanıcının erişilebilirlik hizmetini kontrol etmesine olanak tanıyan bir düğme, sistemin gezinme çubuğuna EKLENMELİDİR . Sistem gezinme çubuğu olmayan cihaz uygulamalarında bu şartın geçerli olmadığını ancak cihaz uygulamalarının, bu erişilebilirlik hizmetlerini kontrol etmek için kullanıcıya bir olanak SUNMASI gerektiğini unutmayın.

Cihaz uygulamaları önceden yüklenmiş erişilebilirlik hizmetleri içeriyorsa:

  • [C-2-1] Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde bu önceden yüklenmiş erişilebilirlik hizmetleri Doğrudan Başlatma Moduna Uygun 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 sunulmalıdır.

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ı sunması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 izin vermek için kullanıcıya olanak TANINMALIDIR.

3.12. TV Input Framework

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

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [C-1-1] Platform özelliği android.software.live_tv BİLDİRİLMELİDİR.
  • [C-1-2] Bu API'leri ve üçüncü taraf TIF tabanlı girişler hizmetini kullanan bir uygulamanın cihaza yüklenip kullanılabilmesi için tüm TIF API'lerini desteklemelidir.

3.13. Hızlı Ayarlar

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

Cihaz uygulamaları bir Hızlı Ayarlar kullanıcı arayüzü bileşeni içeriyorsa:

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

3.14. Medya kullanıcı arayüzü

Cihaz uygulamaları , MediaBrowser ve MediaSession'a bağlı üçüncü taraf uygulamalarını destekleyen kullanıcı arayüzü çerçevesini içeriyorsa:

3.15. Hazır Uygulamalar

Cihaz uygulamaları AŞAĞIDAKİ koşulları karşılamalıdır:

  • [C-0-1] Anlık Uygulamalara YALNIZCA android:protectionLevel değeri "instant" olarak ayarlanmış izinler verilmelidir.
  • [C-0-2] Aşağıdaki durumlardan biri geçerli OLMADIĞI SÜRECE hazır uygulamalar, örtülü amaçlar aracılığıyla yüklü uygulamalarla etkileşimde BULUNMAMALIDIR:
    • Bileşenin 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-0-3] Bileşen, android:visibleToInstantApps aracılığıyla kullanıma sunulmadığı sürece hazır uygulamalar, yüklü uygulamalarla açıkça etkileşimde BULUNMAMALIDIR.
  • [C-0-4] Yüklü uygulamalar, hazır uygulama yüklü uygulamaya açıkça bağlanmadığı sürece cihazdaki hazır uygulamalarla ilgili ayrıntıları görmemelidir.

3.16. Yardımcı Cihaz Eşleme

Android, ikincil cihaz eşleştirmeyi destekleyerek ikincil cihazlarla ilişkilendirmeyi daha etkili bir şekilde yönetmenizi sağlar ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager API'sini sunar.

Cihaz uygulamaları, yardımcı cihaz eşleştirme özelliğini destekliyorsa:

  • [C-1-1] FEATURE_COMPANION_DEVICE_SETUP özellik işaretini BEYAN ETMELİDİR .
  • [C-1-2] android.companion paketindeki API'lerin tamamen uygulandığından EMİN OLMALIDIR.
  • [C-1-3] Kullanıcının, eşlik eden bir cihazın mevcut ve çalışır durumda olduğunu seçmesi/onaylaması için kullanıcıya olanaklar SUNULMALIDIR.

3:17. Ağır Sıklet Uygulamalar

Cihaz uygulamaları FEATURE_CANT_SAVE_STATE özelliğini beyan ediyorsa:

  • [C-1-1] Sistemde aynı anda yalnızca bir cantSaveState çalıştıran uygulama yüklü OLMALIDIR. Kullanıcı, bu tür bir uygulamadan açıkça çıkmadan ayrılırsa (ör. sistemde etkin bir etkinlikten ayrılırken sistemde etkin etkinlik kalmadığında geri düğmesine basmak yerine ana sayfa düğmesine basarak) cihaz uygulamaları, RAM'de bu uygulamaya öncelik VERMELİDİR. Bu, ön plandaki hizmetler gibi çalışmaya devam etmesi beklenen diğer öğeler için de geçerlidir. Bu tür bir uygulama arka plandayken sistem, CPU ve ağ erişimini sınırlama gibi güç yönetimi özelliklerini uygulamaya devam edebilir.
  • [C-1-2] Kullanıcı, cantSaveState özelliğiyle beyan edilen ikinci bir uygulamayı başlattıktan sonra normal durum kaydetme/geri yükleme mekanizmasına katılmayacak uygulamayı seçmek için bir kullanıcı arayüzü olanağı SAĞLANMALIDIR.
  • [C-1-3] cantSaveState belirten uygulamalara, CPU performansını değiştirme veya planlama önceliğini değiştirme gibi başka politika değişiklikleri UYGULANMAMALIDIR.

Cihaz uygulamaları FEATURE_CANT_SAVE_STATE özelliğini bildirmezse:

  • [C-1-1] Uygulamalar tarafından ayarlanan cantSaveState özelliği YOK SAYILMALI ve uygulama davranışı bu özelliğe göre DEĞİŞTİRİLMEMELİDİR.

4. Uygulama Paketleme Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] Resmi Android SDK'sında bulunan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarını yükleyip çalıştırmalıdır.
  • Yukarıdaki şart zorlayıcı olabileceğinden cihaz uygulamalarında AOSP referans uygulamasının paket yönetim sisteminin kullanılması ÖNERİLİR.

Cihaz uygulamaları:

  • [C-0-2] APK İmza Şeması v3 , APK İmza Şeması v2 ve JAR imzalama kullanılarak ".apk" dosyalarının doğrulanması DESTEKLENMELİDİR.
  • [C-0-3] .apk, Android Manifest, Dalvik bytecode veya RenderScript bytecode biçimlerini, bu dosyaların diğer uyumlu cihazlara doğru şekilde yüklenmesini ve bu cihazlarda doğru şekilde çalışmasını engelleyecek şekilde genişletMEMELİDİR.
  • [C-0-4] DELETE_PACKAGE izniyle ilgili 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 intent'ini işleyen sistem paketi doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE intent'ini işleyen depolama alanı yöneticisi uygulamasıdır.

  • [C-0-5] android.settings.MANAGE_UNKNOWN_APP_SOURCES amacını işleyen bir etkinliğe 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 İZİN VERMİŞ OLMALIDIR.
  • Uygulamalar için bilinmeyen kaynaklardan uygulama yükleme izni verme/iptal etme konusunda kullanıcıya bir seçenek SUNULMALIDIR. Ancak cihaz uygulamasında kullanıcıların bu seçeneğe sahip olmasına izin verilmek istenmiyorsa bu işlem yapılmayabilir ve startActivityForResult() için RESULT_CANCELED döndürülebilir. Ancak bu gibi durumlarda bile, kullanıcıya neden böyle bir seçenek sunulmadığını BELİRTMEK ZORUNDADIRLAR.

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

  • Uyarı iletişim kutusunda uygulamayı kaldırmayı veya başlatmayı seçmek için kullanıcıya olanak tanınmalıdır.

5. Multimedya Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] MediaCodecList tarafından beyan edilen her codec için bölüm 5.1'de tanımlanan medya biçimlerini, kodlayıcıları, kod çözücüleri, dosya türlerini ve kapsayıcı biçimlerini DESTEKLEMELİDİR.
  • [C-0-2] MediaCodecList aracılığıyla üçüncü taraf uygulamalarına sunulan kodlayıcıların ve kod çözücülerin desteği BİLDİRİLMELİ ve RAPORLANMALIDIR.
  • [C-0-3] Kodlayabildiği tüm biçimleri çözebilmeli ve üçüncü taraf uygulamalarına sunabilmelidir. Bu, kodlayıcılarının oluşturduğu tüm bit akışlarını ve CamcorderProfile içinde bildirilen profilleri içerir.

Cihaz uygulamaları:

  • SHOULD aim for minimum codec latency, in others words, they
    • Giriş arabelleklerini tüketmemeli ve depolamamalı, yalnızca işlendikten sonra giriş arabelleklerini döndürmelidir.
    • Çözülen arabellekleri standartta (ör. SPS) belirtilenden daha uzun süre tutmamalıdır.
    • Kodlanmış arabellekleri GOP yapısının gerektirdiğinden daha uzun süre tutmamalıdır.

Aşağıdaki bölümde listelenen tüm codec'ler, Android Açık Kaynak Projesi'nin tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.

Google'ı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 kodlamasını DESTEKLEMELİDİR:

  • [C-1-1] PCM/WAVE

5.1.2. Ses kod çözme

Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.

Cihaz uygulamaları android.hardware.audio.output özelliğini desteklediğini beyan ediyorsa aşağıdaki ses biçimlerinin kodunu çözmeyi desteklemesi gerekir:

  • [C-1-1] MPEG-4 AAC Profili (AAC LC)
  • [C-1-2] MPEG-4 HE AAC Profili (AAC+)
  • [C-1-3] MPEG-4 HE AACv2 Profili (gelişmiş AAC+)
  • [C-1-4] AAC ELD (gelişmiş düşük gecikmeli AAC)
  • [C-1-11] xHE-AAC (ISO/IEC 23003-3 Extended HE AAC Profili, USAC Baseline Profili ve ISO/IEC 23003-4 Dynamic Range Control Profili dahil)
  • [C-1-5] FLAC
  • [C-1-6] MP3
  • [C-1-7] MIDI
  • [C-1-8] Vorbis
  • [C-1-9] PCM/WAVE
  • [C-1-10] Opus

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

  • [C-2-1] Kod çözme işlemi, miksajı azaltmadan yapılmalıdır (ör. 5.0 AAC akışı, beş kanallı PCM olarak, 5.1 AAC akışı ise altı kanallı PCM olarak çözülmelidir).
  • [C-2-2] Dinamik aralık meta verileri, ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde tanımlandığı gibi olmalıdır ve android.media.MediaFormat DRC anahtarları, ses kod çözücünün dinamik aralıkla ilgili davranışlarını yapılandırmak için kullanılmalıdır. AAC DRC anahtarları API 21'de kullanıma sunulmuştur ve şunlardır: KEY_AAC_DRC_ATTENUATION_FACTOR, KEY_AAC_DRC_BOOST_FACTOR, KEY_AAC_DRC_HEAVY_COMPRESSION, KEY_AAC_DRC_TARGET_REFERENCE_LEVEL ve KEY_AAC_ENCODED_TARGET_LEVEL.

USAC ses kodunu çözerken MPEG-D (ISO/IEC 23003-4):

  • [C-3-1] Ses yüksekliği ve DRC meta verileri, MPEG-D DRC Dinamik Aralık Kontrolü Profili Düzey 1'e göre yorumlanmalı ve uygulanmalıdır.
  • [C-3-2] Kod çözücü, aşağıdaki android.media.MediaFormat tuşlarıyla ayarlanan yapılandırmaya göre davranmalıdır: KEY_AAC_DRC_TARGET_REFERENCE_LEVEL ve KEY_AAC_DRC_EFFECT_TYPE.

MPEG-4 AAC, HE AAC ve HE AACv2 profil kod çözücüleri:

  • MAY, ISO/IEC 23003-4 Dinamik Aralık Kontrolü Profili kullanılarak ses yüksekliği ve dinamik aralık kontrolünü destekleyebilir.

ISO/IEC 23003-4 destekleniyorsa ve çözülmüş 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.

5.1.3. Ses Codec'i Ayrıntıları

Biçim/Codec Ayrıntılar Desteklenen Dosya Türleri/Kapsayıcı Biçimleri
MPEG-4 AAC Profili
(AAC LC)
8-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
  • ADTS ham AAC (.aac, ADIF desteklenmez)
  • MPEG-TS (.ts, aranamaz)
MPEG-4 HE AAC Profili (AAC+) 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
MPEG-4 HE AACv2
Profili (gelişmiş AAC+)
16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
AAC ELD (gelişmiş düşük gecikmeli AAC) 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği.
USAC 7,35-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. MPEG-4 (.mp4, .m4a)
AMR-NB 8 kHz'de örneklenmiş 4,75 ila 12,2 kb/sn 3GPP (.3gp)
AMR-WB 16 kHz'de örneklenen 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız
FLAC Mono/Stereo (çok kanallı değil). 48 kHz'ye kadar örnek hızları (ancak 48 ila 44,1 kHz alt örnekleyici düşük geçiren filtre içermediğinden 44,1 kHz çıkışlı cihazlarda 44,1 kHz'ye kadar ÖNERİLİR). 16 bit ÖNERİLİR; 24 bit için titretme uygulanmaz. Yalnızca FLAC (.flac)
MP3 Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR) MP3 (.mp3)
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)
  • OTA (.ota)
  • iMelody (.imy)
Vorbis
  • Ogg (.ogg)
  • Matroska (.mkv, Android 4.0+)
PCM/WAVE 16 bit doğrusal PCM (donanım sınırına kadar olan hızlar). Cihazlar, ham PCM kaydı için 8000, 11025, 16000 ve 44100 Hz frekanslarında örnekleme hızlarını DESTEKLEMELİDİR. WAVE (.wav)
Opus Matroska (.mkv), Ogg(.ogg)

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

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] HEIF (HEIC)

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)

5.1.7. Video Codec'leri

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

Cihaz uygulamaları video kod çözücü veya kodlayıcı içeriyorsa:

  • [C-1-1] Video codec'leri, standart ve yapılandırma tarafından belirlenen en büyük olası sıkıştırılmış ve sıkıştırılmamış kareyi barındıran 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, YUV420 esnek renk biçimini (COLOR_FormatYUV420Flexible) DESTEKLEMELİDİR.

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 DESTEKLEMELİ ve yapılandırılan yenileme süresinin% 20'si içinde doğru şekilde ÇALIŞMALIDIR.

5.1.8. Video Codec'leri Listesi

Biçim/Codec Ayrıntılar Desteklenen Dosya Türleri/
Kapsayıcı Biçimleri
H.263
  • 3GPP (.3gp)
  • MPEG-4 (.mp4)
H.264 AVC Ayrıntılar için 5.2 ve 5.3 bölümlerine bakın.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4)
  • MPEG-2 TS (.ts, yalnızca AAC ses, aranamaz, Android 3.0+)
H.265 HEVC Ayrıntılar için 5.3. bölümü inceleyin. MPEG-4 (.mp4)
MPEG-2 Ana Profil MPEG2-TS
MPEG-4 SP 3GPP (.3gp)
VP8 Ayrıntılar için 5.2 ve 5.3 bölümlerine bakın.
VP9 Ayrıntılar için 5.3. bölümü inceleyin.

5.2. Video Kodlama

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

  • İki kayan pencere arasında, kareler arası (I-frame) aralıklar arasındaki bit hızının yaklaşık% 15'inden fazla OLMAMALIDIR.
  • 1 saniyelik kayan pencerede bit hızının yaklaşık% 100'ünden fazla OLMAMALIDIR.

Cihaz uygulamaları, köşegen uzunluğu en az 2,5 inç olan yerleşik bir ekran içeriyorsa, video çıkışı bağlantı noktası içeriyorsa veya android.hardware.camera.any özellik işareti aracılığıyla kamera desteği beyan ediyorsa:

  • [C-1-1] En az bir VP8 veya H.264 video kodlayıcının 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 bunları üçüncü taraf uygulamalarının kullanımına sunmalıdır.

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

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

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

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

5.2.1. H.263

Cihaz uygulamaları H.263 kodlayıcıları destekliyorsa ve üçüncü taraf uygulamalarına sunuyorsa:

  • [C-1-1] Temel Profil Düzeyi 45'i DESTEKLEMELİDİR.
  • Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.

5.2.2. H-264

Cihaz uygulamaları H.264 codec'ini destekliyorsa:

  • [C-1-1] Temel Profil Seviye 3'ü DESTEKLEMELİDİR. Ancak ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğu korumak için kodlayıcıların Baseline Profile'da ASO, FMO ve RS'yi KULLANMAMASI ÖNERİLİR.
  • [C-1-2] Aşağıdaki tabloda yer alan SD (Standart Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
  • Ana Profil Düzeyi 4'ü DESTEKLEMELİDİR.
  • Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.

Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için H.264 kodlamasının desteklendiğini bildiriyorsa:

  • [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
Video çözünürlüğü 320 x 240 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel
Video kare hızı 20 fps 30 fps 30 fps 30 fps
Video bit hızı 384 Kb/sn 2 Mb/sn 4 Mb/sn 10 Mb/sn

5.2.3. VP8

Cihaz uygulamaları VP8 codec'ini destekliyorsa:

  • [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
  • Aşağıdaki HD (Yüksek Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
  • 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 KULLANILMALIDIR.

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:

  • Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.

5.3. Video kod çözme

Cihaz uygulamaları VP8, VP9, H.264 veya H.265 codec'lerini destekliyorsa:

  • [C-1-1] Tüm VP8, VP9, H.264 ve H.265 codec'leri için aynı akışta standart Android API'leri aracılığıyla dinamik video çözünürlüğü ve kare hızı geçişini gerçek zamanlı olarak ve cihazda her codec tarafından desteklenen maksimum çözünürlüğe kadar desteklemelidir.

Cihaz uygulamaları HDR_TYPE_DOLBY_VISION aracılığıyla Dolby Vision kod çözücüsünü desteklediğini beyan ediyorsa:

  • [C-2-1] Dolby Vision özellikli bir çıkarıcı SAĞLANMALIDIR.
  • [C-2-2] Dolby Vision içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI) DOĞRU şekilde göstermELİDİR.
  • [C-2-3] Geriye dönük uyumlu temel katmanların (varsa) parça dizini, birleştirilmiş Dolby Vision katmanının parça diziniyle aynı OLMALIDIR.

5.3.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] MUST support Baseline Profile Level 30 and Level 45.

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ı çö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 Düzeyi 3 Ana katmanını 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

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 tablodaki 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

5.4. Ses Kaydetme

Bu bölümde belirtilen bazı şartlar Android 4.3'ten beri SHOULD (GEREKLİ) olarak listeleniyor olsa da gelecekteki sürümlerin Uyumluluk Tanımı'nda bu şartları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. Ham Ses Kaydı

Cihaz uygulamaları android.hardware.microphone beyan ederse:

  • [C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına İZİN VERİLMELİDİR:

    • Biçim: Doğrusal PCM, 16 bit
    • Örnekleme hızları: 8000, 11025, 16000, 44100 Hz
    • Kanallar: Mono
  • [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

Cihaz uygulamaları, AM radyosuna ve ham ses içeriğinin DVD kalitesinde yakalanmasına izin veriyorsa:

  • [C-2-1] 16000:22050 veya 44100:48000'den yüksek bir oranda örnekleme artırılmadan kayıt YAPILMALIDIR.
  • [C-2-2] Herhangi bir yukarı örnekleme veya aşağı örnekleme için uygun bir yumuşatma filtresi İÇERMELİDİR.

5.4.2. Ses tanıma için yakalama

Cihaz uygulamaları android.hardware.microphone beyan ederse:

  • [C-1-1] android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION ses kaynağını 44.100 ve 48.000 örnekleme hızlarından birinde yakalamalıdır.
  • [C-1-2] AudioSource.VOICE_RECOGNITION ses kaynağından ses yayını kaydederken varsayılan olarak tüm gürültü azaltma ses işlemlerini devre dışı BIRAKMALIDIR.
  • [C-1-3] AudioSource.VOICE_RECOGNITION ses kaynağından ses akışı kaydederken varsayılan olarak otomatik kazanç kontrolünü devre dışı BIRAKMALIDIR.
  • Ses tanıma ses akışını, frekans özelliklerine göre yaklaşık olarak düz genlikte kaydetmelidir. Özellikle 100 Hz ile 4.000 Hz arasında ±3 dB olmalıdır.
  • Giriş hassasiyeti, 1.000 Hz'de 90 dB ses gücü seviyesine (SPL) sahip bir kaynağın 16 bitlik örnekler için 2.500 RMS verecek şekilde ayarlanmış olarak ses tanıma ses akışını KAYDETMELİDİR.
  • Mikrofonda 90 dB SPL'ye göre -18 dB ile +12 dB arasında en az 30 dB aralığında PCM genlik seviyeleri, giriş SPL değişikliklerini doğrusal olarak takip edecek şekilde ses tanıma ses akışını KAYDETMELİDİR.
  • Mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için% 1'den az toplam harmonik bozulma (THD) ile ses tanıma ses akışını KAYDETMELİDİR.

Cihaz uygulamaları, android.hardware.microphone ve konuşma tanıma için ayarlanmış gürültü bastırma (azaltma) teknolojilerini beyan ediyorsa:

  • [C-2-1] Bu ses efektinin android.media.audiofx.NoiseSuppressor API'si 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ımlAMALIDIR.

5.4.3. Oynatmanın yeniden yönlendirilmesi için yakalama

android.media.MediaRecorder.AudioSource sınıfı, REMOTE_SUBMIX ses kaynağını içerir.

Cihaz uygulamaları hem android.hardware.audio.output hem de android.hardware.microphone öğesini bildiriyorsa:

  • [C-1-1] REMOTE_SUBMIX Ses kaynağı, bir uygulama bu ses kaynağından kayıt yapmak için android.media.AudioRecord API'sini kullandığında aşağıdakiler hariç tüm ses akışlarının karışımını yakalayacak şekilde düzgün bir şekilde uygulanmalıdır:

    • AudioManager.STREAM_RING
    • AudioManager.STREAM_ALARM
    • AudioManager.STREAM_NOTIFICATION

5.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:

    • Biçim: Doğrusal PCM, 16 bit, 8 bit, kayan nokta
    • Kanallar: Mono, Stereo, 8 kanala kadar geçerli çok kanallı yapılandırmalar
    • Örnekleme hızları (Hz cinsinden):
      • Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 32000, 44100, 48000
      • Mono ve stereo olarak 96000
  • Aşağıdaki özelliklere sahip ham ses içeriklerinin oynatılmasına İZİN VERİLMELİDİR:

    • Örnekleme hızları: 24000, 48000

5.5.2. Ses efektleri

Android, cihaz uygulamaları için ses efektleri API'si sağlar.

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

  • [C-1-1] EFFECT_TYPE_EQUALIZER ve EFFECT_TYPE_LOUDNESS_ENHANCER uygulamaları, AudioEffect alt sınıfları Equalizer, LoudnessEnhancer aracılığıyla kontrol edilebilir şekilde desteklenmelidir.
  • [C-1-2] Visualizer sınıfı aracılığıyla kontrol edilebilen görselleştirici API uygulamasını DESTEKLEMELİDİR.
  • [C-1-3] MUST support the EFFECT_TYPE_DYNAMICS_PROCESSING implementation controllable through the AudioEffect subclass DynamicsProcessing.
  • EFFECT_TYPE_BASS_BOOST, EFFECT_TYPE_ENV_REVERB, EFFECT_TYPE_PRESET_REVERB ve EFFECT_TYPE_VIRTUALIZER uygulamalarını AudioEffect alt sınıfları BassBoost, EnvironmentalReverb, PresetReverb ve Virtualizer aracılığıyla kontrol edilebilir şekilde DESTEKLEMELİDİR.

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ışı için ses düzeyinin ayrı ayrı ayarlanmasına İZİN VERİLMELİDİR.

5.6. Ses Gecikmesi

Ses gecikmesi, bir ses sinyalinin sistemden geçerken yaşadığı zaman gecikmesidir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikme sürelerine ihtiyaç duyar.

Bu bölümün amaçları doğrultusunda aşağıdaki tanımları kullanın:

  • output latency. Bir uygulamanın PCM kodlu bir veri çerçevesi yazdığı zaman ile karşılık gelen sesin cihaz üzerindeki bir dönüştürücüde ortama sunulduğu veya bir bağlantı noktası üzerinden cihazdan çıktığı ve harici olarak gözlemlenebildiği zaman arasındaki aralık.
  • Soğuk çıkış gecikmesi. Ses çıkışı sistemi istekten önce boşta kalıp kapatıldığında ilk karenin çıkış gecikmesi.
  • sürekli çıkış gecikmesi. Cihaz ses çalmaya başladıktan sonraki karelerin çıkış gecikmesi.
  • giriş gecikmesi. Bir sesin ortam tarafından cihaz üzerinde bulunan bir dönüştürücüye sunulması veya bir sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın PCM kodlu verilerin ilgili çerçevesini okuması arasındaki aralık.
  • kayıp giriş. Bir giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.
  • Soğuk giriş gecikmesi İstekten önce ses girişi sistemi boşta ve kapalıyken, kayıp giriş süresi ile ilk karenin giriş gecikmesinin toplamı.
  • sürekli giriş gecikmesi. Cihaz ses yakalarken sonraki karelerin giriş gecikmesi.
  • cold output jitter. Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
  • soğuk giriş titremesi. Soğuk giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
  • sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesi, sürekli çıkış gecikmesi ve bir arabellek süresinin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için zaman tanır.
  • OpenSL ES PCM arabellek sırası API'si. Android NDK'deki PCM ile ilgili OpenSL ES API'leri kümesi.
  • AAudio yerel ses API'si. Android NDK'deki AAudio API'leri kümesi.
  • Zaman damgası. Bir akış içindeki göreli kare konumundan ve bu karenin ilişkili uç noktada ses işleme ardışık düzenine girdiği veya bu ardışık düzenden çıktığı tahmini zamandan oluşan bir çift. AudioTimestamp başlıklı makaleyi de inceleyin.

Cihaz uygulamaları android.hardware.audio.output beyan ediyorsa aşağıdaki şartları karşılamaları veya aşmaları ŞİDDETLE TAVSİYE EDİLİR:

  • [C-SR] 100 milisaniye veya daha az soğuk çıkış gecikmesi
  • [C-SR] 45 milisaniye veya daha az sürekli çıkış gecikmesi
  • [C-SR] Soğuk çıkış titremesini en aza indirin
  • [C-SR] AudioTrack.getTimestamp ve AAudioStream_getTimestamp tarafından döndürülen çıkış zaman damgası +/- 1 ms'ye kadar doğrudur.

Cihaz uygulamaları yukarıdaki şartları karşılıyorsa ilk kalibrasyondan sonra, hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri kullanılırken, desteklenen en az bir ses çıkışı cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için:

Cihaz uygulamaları hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri aracılığıyla düşük gecikmeli ses gereksinimlerini karşılamıyorsa:

  • [C-1-1] Düşük gecikmeli ses desteği bildirilmemelidir.

Cihaz uygulamaları android.hardware.microphone içeriyorsa aşağıdaki giriş sesi şartlarını karşılamaları ŞİDDETLE TAVSİYE EDİLİR:

  • [C-SR] 100 milisaniye veya daha az soğuk giriş gecikmesi.
  • [C-SR] 30 milisaniye veya daha az sürekli giriş gecikmesi.
  • [C-SR] Gidiş dönüş gecikmesinin sürekli olarak 50 milisaniye veya daha az olması.
  • [C-SR] Soğuk giriş titremesini en aza indirin.
  • [C-SR] AudioRecord.getTimestamp veya AAudioStream_getTimestamp tarafından döndürülen giriş zaman damgalarındaki hatayı +/- 1 ms ile sınırlayın.

5.7. Ağ Protokolleri

Cihaz uygulamaları, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemelidir.

Cihaz uygulamaları ses veya video kod çözücü içeriyorsa:

  • [C-1-1] Bölüm 5.1'de belirtilen tüm gerekli codec'leri ve kapsayıcı biçimlerini HTTP(S) ü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österilen medya segmenti biçimlerini desteklemelidir.

  • [C-1-3] Aşağıdaki RTSP tablosunda belirtilen RTP ses ve video profilini ve ilgili codec'leri DESTEKLEMELİDİR. İstisnalar için lütfen bölüm 5.1'deki tablo dipnotlarına bakın.

Medya segmenti biçimleri

Segment biçimleri Referanslar Gerekli codec desteği
MPEG-2 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 bölüm 5.1.3'ü inceleyin.

Ses codec'leri:

  • AAC
AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.1'e bakın.
ADTS çerçeveleme ve ID3 etiketleri içeren AAC ISO 13818-7 AAC ve varyantları hakkında ayrıntılı bilgi için 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.3'e bakın.
MP4A-LATM RFC 6416 AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.1'e bakın.
H263-1998 RFC 3551
RFC 4629
RFC 2190
H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın.
H263-2000 RFC 4629 H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın.
AMR RFC 4867 AMR-NB ile ilgili ayrıntılar için bölüm 5.1.1'e bakın.
AMR-WB RFC 4867 AMR-WB ile ilgili ayrıntılar için 5.1.1 bölümüne bakın.
MP4V-ES RFC 6416 MPEG-4 SP ile ilgili ayrıntılar için bölüm 5.1.3'e bakın.
mpeg4-generic RFC 3640 AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.1'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 beyan ediyorsa ve kablosuz ekran protokolünü destekliyorsa:

  • [C-2-1] Miracast gibi kablosuz protokollerle bağlanan ekranlar için bağlantı, HDCP 2.x veya daha yüksek gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİ HALE GETİRİLMELİDİR.

Cihaz uygulamaları Display.FLAG_SECURE desteğini ve kablolu harici ekranı destekliyorsa:

  • [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 yeni 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 şu durumlarda geçerli olmak üzere, genel MIDI dışı bağlantı sağladıkları tüm MIDI özellikli donanım aktarımlarında MIDI'yi desteklemelidir:

  • [C-1-2] Uygulamalar arası MIDI yazılım aktarımı (sanal MIDI cihazları) DESTEKLENMELİDİR.

5.10. Profesyonel Ses

Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla android.hardware.audio.pro özelliğinin desteklendiğini bildiriyorsa:

  • [C-1-1] android.hardware.audio.low_latency özelliği için destek raporlanmalıdır.
  • [C-1-2] 5.6 Ses Gecikmesi bölümünde tanımlandığı şekilde sürekli gidiş dönüş ses gecikmesi en fazla 20 milisaniye OLMALI ve en az bir desteklenen yolda en fazla 10 milisaniye OLMALIDIR.
  • [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen bir USB bağlantı noktası içermelidir.
  • [C-1-4] android.software.midi özelliği için destek raporlanmalıdır.
  • [C-1-5] Hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri kullanılarak gecikme ve USB ses gereksinimleri karşılanmalıdır.
  • [SR] Ses etkin durumdayken ve CPU yükü değişirken tutarlı bir CPU performansı seviyesi sağlamak için ŞİDDETLE TAVSİYE EDİLİR. Bu, SimpleSynth commit 1bd6391 kullanılarak test edilmelidir. SimpleSynth uygulaması aşağıdaki parametrelerle çalıştırılmalı ve 10 dakika sonra sıfır eksiklik elde etmelidir:
    • Çalışma döngüleri: 200.000
    • Değişken yük: AÇIK (Bu ayar, 2 saniyede bir iş döngüsü değerinin% 100'ü ile% 10'u arasında geçiş yapar ve CPU yöneticisi davranışını test etmek için tasarlanmıştır)
    • Sabitlenmiş yükleme: KAPALI
  • Ses saatiyle ilgili yanlışlıkları ve standart saate göre sapmaları EN AZA İNDİRMELİDİR.
  • Her ikisi de etkin olduğunda, CPU'ya CLOCK_MONOTONIC kıyasla ses saati kaymasını en aza İNDİRMELİDİR.
  • Cihaz üzerindeki dönüştürücülerde ses gecikmesini EN AZA İNDİRMELİDİR.
  • USB dijital ses üzerinden ses gecikmesini EN AZA İNDİRMELİDİR.
  • Tüm yollardaki ses gecikmesi ölçümleri belgelenmelidir.
  • Geri çağırma işlemi tarafından tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediği için ses arabelleği tamamlama geri çağırma giriş sürelerindeki titreşim EN AZA İNDİRİLMELİDİR.
  • Bildirilen gecikme süresinde normal kullanımda sıfır ses yetersizliği (çıkış) veya aşımı (giriş) sağlamalıdır.
  • Kanallar arası gecikme farkı sıfır olmalıdır.
  • Tüm aktarımlarda MIDI ortalama gecikmesi en aza indirilmelidir.
  • Tüm aktarımlarda yük altındaki MIDI gecikme süresi değişkenliğini (titreme) en aza İNDİRMELİDİR.
  • Tüm aktarımlarda doğru MIDI zaman damgaları SAĞLANMALIDIR.
  • Soğuk baştan başlatmadan hemen sonraki dönem de dahil olmak üzere, cihaz üzerindeki dönüştürücülerde ses sinyali gürültüsünü EN AZA İNDİRMELİDİR.
  • Her ikisi de etkin olduğunda, karşılık gelen uç noktaların giriş ve çıkış tarafları arasında sıfır ses saati farkı SAĞLANMALIDIR. Karşılık gelen uç noktalara örnek olarak cihaz üzerindeki mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.
  • Her ikisi de etkin olduğunda aynı iş parçacığındaki karşılık gelen uç noktaların giriş ve çıkış tarafları için ses arabelleği tamamlama geri çağırmalarını İŞLEMELİ ve giriş geri çağırmasından döndükten hemen sonra çıkış geri çağırmasına girmelidir. Geri aramaları aynı iş parçacığında işlemek mümkün değilse uygulamanın giriş ve çıkış taraflarının tutarlı bir zamanlamaya sahip olmasına izin vermek için giriş geri aramasından kısa bir süre sonra çıkış geri aramasını girin.
  • Giriş ve çıkış tarafları için HAL ses arabelleğe alma arasındaki faz farkı en aza İNDİRİLMELİDİR.
  • Dokunma gecikmesini en aza İNDİRMELİDİR.
  • Yük altındaki dokunma gecikmesi değişkenliği (titreme) EN AZA İNDİRİLMELİDİR.
  • Dokunma girişinden ses çıkışına kadar olan gecikme süresi 40 ms veya daha az OLMALIDIR.

Cihaz uygulamaları yukarıdaki tüm koşulları karşılıyorsa:

Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakı içeriyorsa:

Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı atlanıyor ve USB ana makine modunu destekleyen USB bağlantı noktaları bulunuyorsa:

  • [C-3-1] USB ses sınıfı uygulanmalıdır.
  • [C-3-2] USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktası üzerinden 20 milisaniye veya daha az sürekli gidiş dönüş ses gecikmesine SAHİP OLMALIDIR.
  • USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktası üzerinden sürekli gidiş dönüş ses gecikmesi 10 milisaniye veya daha az OLMALIDIR.

Cihaz uygulamaları HDMI bağlantı noktası içeriyorsa:

  • [C-4-1] En az bir yapılandırmada, bit derinliği kaybı veya yeniden örnekleme olmadan 20 bit ya da 24 bit derinlikte ve 192 kHz'de stereo ve sekiz kanallı çıkışı desteklemelidir.

5.11. İşlenmemiş için yakalama

Android, android.media.MediaRecorder.AudioSource.UNPROCESSED ses kaynağı aracılığıyla işlenmemiş ses kaydını destekler. OpenSL ES'de, kayıt ön ayarıyla SL_ANDROID_RECORDING_PRESET_UNPROCESSED erişilebilir.

Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemeyi ve üçüncü taraf uygulamalarına sunmayı amaçlıyorsa:

  • [C-1-1] android.media.AudioManager özelliği PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED aracılığıyla destek bildirilmelidir.

  • [C-1-2] Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri GÖSTERMELİDİR: Özellikle işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 100 Hz ile 7.000 Hz arasında ±10 dB.

  • [C-1-3] 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ÖSTERMELİDİR: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofonun orta frekans aralığına kıyasla 7.000 Hz ile 22 kHz arasında ±30 dB.

  • [C-1-5] Ses girişi hassasiyeti, 94 dB ses basıncı seviyesinde (SPL) çalınan 1.000 Hz sinüs tonu kaynağının, işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofon için 16 bit örneklerde 520 RMS'li (veya kayan nokta/çift duyarlıklı örneklerde -36 dB tam ölçekli) bir yanıt verecek şekilde AYARLANMALIDIR.

  • [C-1-6] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun 60 dB veya daha yüksek bir sinyal-gürültü oranına (SNR) sahip olması ZORUNLUDUR. (SNR, 94 dB SPL ile öz gürültünün eşdeğer SPL'si arasındaki fark olarak ölçülür, A ağırlıklı).

  • [C-1-7] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için toplam harmonik bozulma (THD) %1'den az OLMALIDIR.

  • Seviyeyi istenen aralığa getirmek için kullanılan seviye çarpanı dışında, yolda başka sinyal işleme (ör. otomatik kazanç kontrolü, yüksek geçiren filtre veya yankı iptali) olmamalıdır. Başka bir deyişle:

  • [C-1-8] Mimaride herhangi bir nedenle sinyal işleme varsa bu işleme DEVRE DIŞI BIRAKILMALI ve sinyal yolunda etkili bir şekilde sıfır gecikme veya ek gecikme oluşturulmalıdır.
  • [C-1-9] Seviye çarpanının yolda olmasına izin verilir ancak sinyal yolunda gecikmeye veya gecikme süresine neden OLMAMALIDIR.

Tüm SPL ölçümleri, doğrudan test edilen mikrofonun yanında yapılır. Birden fazla mikrofon yapılandırması için bu koşullar her mikrofon için geçerlidir.

Cihaz uygulamaları android.hardware.microphone beyan ediyorsa ancak işlenmemiş ses kaynağını desteklemiyorsa:

  • [C-2-1] 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.
  • [SR], işlenmemiş kayıt kaynağının sinyal yoluyla ilgili mümkün olduğunca çok sayıda koşulu karşılamak için HÂLÂ ŞİDDETLE TAVSİYE EDİLİR.

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

6.1. Geliştirici Araçları

Cihaz uygulamaları:

  • [C-0-1] Android SDK'da sağlanan Android Geliştirici Araçları DESTEKLENMELİDİR.
  • Android Debug Bridge (adb)

    • [C-0-2] Android SDK'da ve AOSP'de sağlanan kabuk komutlarında belgelendiği şekilde adb'yi desteklemelidir. Bu komutlar, dumpsys ve cmd stats dahil olmak üzere uygulama geliştiriciler tarafından kullanılabilir.
    • [C-0-3] MUST NOT alter the format or the contents of device system events (batterystats , diskstats, fingerprint, graphicsstats, netstats, notification, procstats) logged via the dumpsys command.
    • [C-0-10] Aşağıdaki etkinlikleri eksiksiz olarak kaydetmeli ve cmd stats kabuk komutuna ve StatsManager System API sınıfına erişilebilir ve kullanılabilir hale getirmelidir.
      • ActivityForegroundStateChanged
      • AnormallikAlgılandı
      • AppBreadcrumbReported
      • AppCrashOccurred
      • AppStartOccurred
      • BatteryLevelChanged
      • BatterySaverModeStateChanged
      • BleScanResultReceived
      • BleScanStateChanged
      • ChargingStateChanged
      • DeviceIdleModeStateChanged
      • ForegroundServiceStateChanged
      • GpsScanStateChanged
      • JobStateChanged
      • PluggedStateChanged
      • ScheduledJobStateChanged
      • ScreenStateChanged
      • SyncStateChanged
      • SystemElapsedRealtime
      • UidProcessStateChanged
      • WakelockStateChanged
      • WakeupAlarmOccurred
      • WifiLockStateChanged
      • WifiMulticastLockStateChanged
      • WifiScanStateChanged
    • [C-0-4] Cihaz tarafındaki adb 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 olmalıdır.
    • [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. Örneğin:

      • Çevre birimi modunu destekleyen bir USB bağlantı noktası olmayan cihaz uygulamaları, adb'yi yerel ağ (ör. Ethernet veya kablosuz) üzerinden uygulamalıdır.
      • Geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows 7, 9 ve 10 sürücüleri SAĞLANMALIDIR.
  • 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 devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Debug Bridge'i etkinleştirdiğinde desteklenmelidir.
  • Monkey
    • [C-0-8] Monkey çerçevesini içermeli ve uygulamaların kullanabilmesi için kullanılabilir hale getirmelidir.
  • SysTrace
    • [C-0-9] Android SDK'da belgelendiği şekilde systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak devre dışı olmalı ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma OLMALIDIR.

Cihaz uygulamaları, android.hardware.vulkan.version özellik işaretleri aracılığıyla Vulkan 1.0 veya sonraki sürümlerin desteklendiğini bildiriyorsa:

  • [C-1-1] Uygulama geliştiricinin GPU hata ayıklama katmanlarını etkinleştirmesine/devre dışı bırakmasına olanak tanıyan bir özellik SAĞLANMALIDIR.
  • [C-1-2] GPU hata ayıklama katmanları etkinleştirildiğinde, vkEnumerateInstanceLayerProperties() ve vkCreateInstance() API yöntemlerini desteklemek için hata ayıklanabilir uygulamaların temel dizininde bulunan, harici araçlar tarafından sağlanan (yani platformun veya uygulama paketinin parçası olmayan) kitaplıklardaki katmanları listelemelidir.

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 bastıktan sonra Geliştirici Seçenekleri'ni başlatmasına olanak tanır.
  • [C-0-2] Geliştirici Seçenekleri varsayılan olarak GİZLENMELİDİR.
  • [C-0-3] Geliştirici Seçenekleri'nin etkinleştirilmesi için bir üçüncü taraf uygulamasına diğerine göre ayrıcalıklı muamele yapmayan net bir mekanizma SAĞLANMALIDIR. Geliştirici Seçenekleri'nin nasıl etkinleştirileceğini açıklayan, herkese açık bir doküman veya web sitesi SAĞLANMALIDIR. Bu doküman veya web sitesi, Android SDK dokümanlarından bağlanabilir OLMALIDIR.
  • 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.
  • Kullanıcının güvenliğinin söz konusu olduğu durumlarda dikkat dağıtılmasını önlemek için Geliştirici Seçenekleri menüsüne erişimi, menüyü görsel olarak gizleyerek veya devre dışı bırakarak GEÇİCİ OLARAK sınırlayabilir.

7. Donanım Uyumluluğu

Bir cihazda, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir donanım bileşeni varsa:

  • [C-0-1] Cihaz uygulaması, bu API'yi Android SDK belgelerinde açıklandığı şekilde uygulamalıdır.

SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime giriyorsa ve cihaz uygulamasında bu bileşen yoksa:

  • [C-0-2] Bileşen API'leri için sınıf tanımları (SDK tarafından belgelendiği şekilde) yine sunulmalıdır.
  • [C-0-3] API'nin davranışları, makul bir şekilde 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 açıklanmayan istisnalar oluşturmamalıdır.
  • [C-0-7] Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki getSystemAvailableFeatures() ve hasSystemFeature(String) yöntemleriyle tutarlı bir şekilde doğru donanım yapılandırma bilgilerini bildirmelidir.

Bu koşulların geçerli olduğu senaryolara tipik bir örnek, telefon API'sidir: 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 yapılandırmalarında iyi çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan özellikler içerir. Cihazlar, bu bölümde ayrıntılı olarak açıklandığı şekilde bu API'leri ve davranışları doğru şekilde uygulamalı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 mesafedir.
  • İnç başına nokta sayısı (dpi). 1 inçlik doğrusal yatay veya dikey bir aralığın kapsadığı piksel sayısı. DPI değerleri listelendiğinde hem yatay hem de dikey DPI aralığın içinde olmalıdır.
  • en-boy oranı. Ekranın uzun boyutunun piksellerinin kısa boyutunun piksellerine oranı. Örneğin, 480x854 piksel boyutundaki bir ekranın en-boy oranı 854/480 = 1, 779 veya yaklaşık olarak "16:9" olur.
  • Yoğunluktan bağımsız piksel (dp). 160 DPI ekrana göre normalleştirilmiş sanal piksel birimi. Piksel sayısı = DP * (yoğunluk/160) olarak hesaplanır.

7.1.1. Ekran Yapılandırması

7.1.1.1. Ekran Boyutu ve Şekli

Android kullanıcı arayüzü çerçevesi, çeşitli farklı mantıksal ekran düzeni boyutlarını destekler ve uygulamaların Configuration.screenLayout ile SCREENLAYOUT_SIZE_MASK ve Configuration.smallestScreenWidthDp kullanarak mevcut yapılandırmanın ekran düzeni boyutunu sorgulamasına olanak tanır.

Cihaz uygulamaları:

  • [C-0-1] Android SDK dokümanlarında tanımlandığı şekilde Configuration.screenLayout için doğru düzen boyutunu bildirmelidir. Özellikle, cihaz uygulamaları aşağıdaki gibi doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını bildirmelidir:

    • Configuration.uiMode değeri UI_MODE_TYPE_WATCH dışında bir değer olarak ayarlanmış ve Configuration.screenLayout için small boyutu bildiren cihazlar en az 426 dp x 320 dp olmalıdır.
    • normal boyutu için Configuration.screenLayout bildiren cihazlar en az 480 dp x 320 dp olmalıdır.
    • large boyutu bildiren cihazlarda Configuration.screenLayout en az 640 dp x 480 dp olmalıdır.
    • 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 dosyasındaki <supports-screens> özelliği aracılığıyla uygulamaların ekran boyutları için belirttiği desteği doğru şekilde karşılamalıdır.

  • Köşeleri yuvarlatılmış bir ekran OLABİLİR.

Cihaz uygulamaları UI_MODE_TYPE_NORMAL özelliğini destekliyorsa ve yuvarlak köşeli bir ekran içeriyorsa:

  • [C-1-1] Yuvarlatılmış köşelerin yarıçapının en fazla 38 dp olmasını SAĞLAMALIDIR.
  • Dikdörtgen köşeli ekran moduna geçiş için kullanıcıya olanak tanınmalıdır.
7.1.1.2. Ekran En-Boy Oranı

Fiziksel ekranın en-boy oranı değeriyle ilgili bir kısıtlama olmasa da üçüncü taraf uygulamalarının oluşturulduğu mantıksal ekranın en-boy oranı (view.Display API'leri ve Configuration API aracılığıyla bildirilen yükseklik ve genişlik değerlerinden elde edilebilir) aşağıdaki şartları KARŞILAMALIDIR:

  • [C-0-1] Configuration.uiMode değeri UI_MODE_TYPE_NORMAL olarak ayarlanmış cihaz uygulamaları, aşağıdaki koşullardan birini karşılayarak uygulamanın daha uzun olacak şekilde genişletilmeye hazır olduğu kabul edilmediği sürece 1,3333 (4:3) ile 1,86 (yaklaşık 16:9) arasında bir en boy oranı değerine SAHİP OLMALIDIR:

    • Uygulama, android.max_aspect meta veri değeri aracılığıyla daha büyük bir ekran en-boy oranını desteklediğini belirtmiş.
    • Uygulama, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabilir olduğunu beyan eder.
    • Uygulama, API düzeyi 24 veya sonraki sürümleri hedefliyor ve izin verilen en-boy oranını kısıtlayacak bir android:MaxAspectRatio beyan etmiyor.
  • [C-0-2] Configuration.uiMode değeri UI_MODE_TYPE_WATCH olarak ayarlanmış cihaz uygulamalarında en boy oranı değeri 1,0 (1:1) olarak ayarlanmalıdır.

7.1.1.3. Ekran Yoğunluğu

Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar.

  • [C-0-1] Cihaz uygulamaları, varsayılan olarak DENSITY_DEVICE_STABLE API'si aracılığıyla yalnızca aşağıdaki mantıksal Android çerçeve yoğunluklarından birini bildirmelidir ve bu değer hiçbir zaman değişmemelidir. Ancak cihaz, ilk başlatmadan sonra ayarlanan, kullanıcı tarafından yapılan ekran yapılandırma değişikliklerine (ör. görüntü boyutu) göre farklı bir rastgele yoğunluk bildirebilir.

    • 120 dpi (ldpi)
    • 160 dpi (mdpi)
    • 213 dpi (tvdpi)
    • 240 dpi (hdpi)
    • 260 dpi (260dpi)
    • 280 dpi (280dpi)
    • 300 dpi (300dpi)
    • 320 dpi (xhdpi)
    • 340 dpi (340dpi)
    • 360 dpi (360dpi)
    • 400 dpi (400dpi)
    • 420 dpi (420dpi)
    • 480 dpi (xxhdpi)
    • 560 dpi (560dpi)
    • 640 dpi (xxxhdpi)
  • Cihaz uygulamaları, bildirilen ekran boyutu desteklenen minimum boyutun altına düşmediği sürece, ekranın fiziksel yoğunluğuna sayısal olarak en yakın olan standart Android çerçeve yoğunluğunu tanımlamalıdır. Fiziksel yoğunluğa sayısal olarak en yakın olan standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuyla sonuçlanıyorsa cihaz uygulamaları, bir sonraki en düşük standart Android çerçeve yoğunluğunu bildirmelidir.

Cihazın görüntü boyutunu değiştirme imkanı varsa:

  • [C-1-1] Ekran boyutu, yerel yoğunluğun 1,5 katından daha fazla ölçeklendirilmemeli veya önce hangisi gerçekleşirse gerçekleşsin 320 dp'den (kaynak niteleyicisi sw320dp'ye eşdeğer) daha küçük bir etkili minimum ekran boyutu oluşturmamalıdır.
  • [C-1-2] Görüntü boyutu, doğal yoğunluğun 0,85 katından daha küçük bir ölçekte OLMAMALIDIR.
  • İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için (yukarıda belirtilen sınırlara uyarak) Yerel Görüntüleme seçeneklerinin aşağıdaki şekilde ölçeklendirilmesi ÖNERİLİR.
  • Küçük: 0,85x
  • Varsayılan: 1x (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ı ekran veya video çıkışı içeriyorsa:

  • [C-1-1] android.util.DisplayMetrics API'sinde tanımlanan tüm görüntülü reklam metrikleri için doğru değerler RAPORLANMALIDIR.

Cihaz uygulamaları yerleşik bir ekran veya video çıkışı içermiyorsa:

  • [C-2-1] Emüle edilen varsayılan view.Display için android.util.DisplayMetrics API'sinde tanımlanan tüm görüntüleme metrikleri için makul değerler RAPORLANMALIDIR.

7.1.3. Ekran Yönlendirme

Cihaz uygulamaları:

  • [C-0-1] Hangi ekran yönlerini desteklediklerini (android.hardware.screen.portrait ve/veya android.hardware.screen.landscape) BİLDİRMELİ ve en az bir desteklenen yönü BİLDİRMELİDİR. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönlü yatay ekranı olan bir cihaz YALNIZCA android.hardware.screen.landscape değerini bildirmelidir.
  • [C-0-2] android.content.res.Configuration.orientation, android.view.Display.getOrientation() veya diğer API'ler aracılığıyla sorgulandığında cihazın mevcut yönü için doğru değeri bildirmelidir.

Cihaz uygulamaları her iki ekran yönünü de destekliyorsa:

  • [C-1-1] Uygulamalar tarafından dikey veya yatay ekran yönüne dinamik yönlendirmeyi DESTEKLEMELİDİR. Yani cihaz, uygulamanın belirli bir ekran yönü isteğine uymalıdır.
  • [C-1-2] Yön değiştirirken 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] Desteklenen OpenGL ES sürümleri (1.1, 2.0, 3.0, 3.1, 3.2), yönetilen API'ler (ör. GLES10.getString() yöntemi aracılığıyla) ve yerel API'ler aracılığıyla 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 hem OpenGL ES 1.1 hem de 2.0'ı DESTEKLEMELİDİR.
  • [SR] cihazların OpenGL ES 3.1'i desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
  • OpenGL ES 3.2'yi DESTEKLEMELİDİR.

Cihaz uygulamaları OpenGL ES sürümlerinden birini destekliyorsa:

  • [C-2-1] Uyguladıkları diğer OpenGL ES uzantılarını OpenGL ES yönetilen API'leri ve yerel API'ler aracılığıyla bildirmeli ve desteklemedikleri uzantı dizelerini bildirmemelidir.
  • [C-2-2] EGL_KHR_image, EGL_KHR_image_base, EGL_ANDROID_image_native_buffer, EGL_ANDROID_get_native_client_buffer, EGL_KHR_wait_sync, EGL_KHR_get_all_proc_addresses, EGL_ANDROID_presentation_time, EGL_KHR_swap_buffers_with_damage ve EGL_ANDROID_recordable uzantılarını DESTEKLEMELİDİR.
  • [SR], EGL_KHR_partial_update'i desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
  • Genellikle satıcıya özel olan ve destekledikleri tüm doku sıkıştırma biçimlerini getString() yöntemiyle doğru şekilde bildirmelidir.

Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2'yi desteklediğini beyan ediyorsa:

  • [C-3-1] libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev sembollerine ek olarak bu sürümler için ilgili işlev sembollerini DIŞA AKTARMALIDIR.

Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa:

  • [C-4-1] OpenGL ES Android Extension Pack'in tamamını DESTEKLEMELİDİR.

Cihaz uygulamaları, OpenGL ES Android Extension Pack'i tamamen destekliyorsa:

  • [C-5-1] android.hardware.opengles.aep özellik bayrağıyla desteği TANIMLAMALIDIR.

Cihaz uygulamaları EGL_KHR_mutable_render_buffer uzantısı için destek sunuyorsa:

  • [C-6-1] EGL_ANDROID_front_buffer_auto_refresh uzantısını da desteklemelidir.
7.1.4.2 Vulkan

Android , yüksek performanslı 3D grafikler için düşük ek yüke sahip, platformlar arası bir API olan Vulkan'ı destekler.

Cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:

  • [SR] Vulkan 1.1 desteği içermesi ŞİDDETLE TAVSİYE EDİLİR.

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

  • Vulkan 1.1 desteği İÇERMELİDİR.

Cihaz uygulamaları Vulkan 1.0 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] Listelenen her VkPhysicalDevice için Vulkan 1.0 API'leri eksiksiz bir şekilde uygulanmalı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 .
  • [C-1-5] Uygulamada android:debuggable özelliği true olarak ayarlanmadığı sürece, uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanlar numaralandırılmamalı veya Vulkan API'yi izlemenin ya da yakalamanın başka yolları sunulmamalıdır.
  • [C-1-6] Destekledikleri tüm uzantı dizelerini Vulkan yerel API'leri aracılığıyla bildirmeli ve buna karşılık doğru şekilde desteklemedikleri uzantı dizelerini bildirmemelidir.
  • [C-1-7] MUST support the VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, and VK_KHR_incremental_present extensions.

Cihaz uygulamaları Vulkan 1.0 desteği içermiyorsa:

  • [C-2-1] Vulkan özellik işaretlerinden (ör. android.hardware.vulkan.level, android.hardware.vulkan.version) herhangi birini BEYAN ETMEMELİDİR.
  • [C-2-2] VkPhysicalDevice Vulkan yerel API'si için vkEnumeratePhysicalDevices() herhangi bir öğe numaralandırılMAMALIDIR.

Cihaz uygulamaları Vulkan 1.1 desteği içeriyorsa:

  • [C-3-1] SYNC_FD harici semafor ve işleyici türleri için destek sunULMALIDIR.
  • [SR] VK_ANDROID_external_memory_android_hardware_buffer uzantısını desteklemek için KESİNLİKLE ÖNERİLİR.
7.1.4.3 RenderScript
  • [C-0-1] Cihaz uygulamaları, Android SDK belgelerinde ayrıntılı olarak açıklandığı gibi Android RenderScript'i desteklemelidir.
7.1.4.4 2D Graphics Acceleration

Android, uygulamaların android:hardwareAccelerated 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 üzerinden donanım hızlandırmayı devre dışı bırakarak talep ederse donanım hızlandırma DEVRE DIŞI BIRAKILMALIDIR.
  • [C-0-2] Donanım hızlandırma ile ilgili Android SDK belgeleriyle tutarlı bir davranış sergilemelidir.

Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını doğrudan kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak entegre etmesine olanak tanıyan bir TextureView nesnesi içerir.

Cihaz uygulamaları:

  • [C-0-3] TextureView API'yi desteklemeli ve yukarı akış Android uygulamasıyla tutarlı davranış sergilemelidir.
7.1.4.5 Geniş Gamutlu Ekranlar

Cihaz uygulamaları , Configuration.isScreenWideColorGamut() aracılığıyla geniş gamlı ekran desteği sunduğunu iddia ediyorsa:

  • [C-1-1] Renk kalibrasyonu yapılmış bir ekrana SAHİP OLMALIDIR.
  • [C-1-2] Gamı, CIE 1931 xyY alanında sRGB renk gamını tamamen kapsayan bir ekrana SAHİP OLMALIDIR.
  • [C-1-3] CIE 1931 xyY alanında gamı, DCI-P3'ün en az% 90'ı kadar bir alana sahip bir ekrana SAHİP OLMALIDIR.
  • [C-1-4] OpenGL ES 3.1 veya 3.2'yi DESTEKLEMELİ ve bunu düzgün şekilde bildirmelidir.
  • [C-1-5] EGL_KHR_no_config_context, EGL_EXT_pixel_format_float, EGL_KHR_gl_colorspace, EGL_EXT_gl_colorspace_scrgb, EGL_EXT_gl_colorspace_scrgb_linear, EGL_EXT_gl_colorspace_display_p3 ve EGL_KHR_gl_colorspace_display_p3 uzantıları için destek reklamı VERİLMELİDİR.
  • [SR] GL_EXT_sRGB desteği için KESİNLİKLE ÖNERİLİR.

Aksine, cihaz uygulamaları geniş gamlı ekranları desteklemiyorsa:

  • [C-2-1] Ekran renk gamı tanımlanmamış olsa da CIE 1931 xyY alanında sRGB'nin% 100'ünü veya daha fazlasını kapsamalıdır.

7.1.5. Eski Uygulama Uyumluluğu Modu

Android, ekran boyutu bağımsızlığından önceki eski Android sürümleri için geliştirilmemiş eski uygulamaların yararlanması amacıyla, çerçevenin "normal" ekran boyutuna eşdeğer (320 dp genişlik) bir modda çalıştığı bir "uyumluluk modu" belirtir.

7.1.6. Ekran Teknolojisi

Android platformu, uygulamaların 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.

Cihaz uygulamaları:

  • [C-0-1] 16 bit renkli grafikler oluşturabilen ekranları DESTEKLEMELİDİR.
  • 24 bit renkli grafikler görüntüleyebilen ekranları DESTEKLEMELİDİR.
  • [C-0-2] Animasyon oluşturabilen ekranları DESTEKLEMELİDİR.
  • [C-0-3] 0,9 ile 1,15 arasında piksel en boy oranına (PAR) sahip ekran teknolojisi KULLANILMALIDIR. Yani piksel en boy oranı, %10-15 toleransla kareye (1,0) yakın OLMALIDIR.

7.1.7. İkincil Ekranlar

Android, medya paylaşım özelliklerini etkinleştirmek için ikincil ekran desteği ve harici ekranlara erişmek için geliştirici API'leri 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 sistem hizmetini ve API'yi uygulamalıdır.

7.2. Giriş Cihazları

Cihaz uygulamaları:

7.2.1. Klavye

Cihaz uygulamaları, üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek içeriyorsa:

Cihaz uygulamaları: * [C-0-1] android.content.res.Configuration.keyboard içinde belirtilen biçimlerden biriyle (QWERTY veya 12 tuşlu) eşleşmeyen bir donanım klavyesi İÇERMEMELİDİR. * Ek yazılım klavyesi uygulamaları İÇERMELİDİR. * Donanım klavyesi İÇEREBİLİR.

7.2.2. Dokunmadan gezinme

Android, dokunmatik olmayan gezinme için d-pad, trackball ve tekerlek mekanizmalarını destekler.

Cihaz uygulamaları:

Cihaz uygulamalarında dokunma dışı gezinme özellikleri yoksa:

  • [C-1-1] Metin seçimi ve düzenlemesi için, Giriş Yönetimi Motorları ile uyumlu makul bir alternatif kullanıcı arayüzü mekanizması SAĞLANMALIDIR. Yukarı akış Android açık kaynak uygulaması, dokunma dışı gezinme girişleri olmayan cihazlarla kullanıma uygun bir seçim mekanizması içerir.

7.2.3. Gezinme Tuşları

Genellikle özel bir fiziksel düğmeyle veya dokunmatik ekranın ayrı bir bölümüyle etkileşim yoluyla sağlanan Ana Sayfa, Son Kullanılanlar ve Geri işlevleri, Android gezinme paradigması için temel öneme sahiptir ve bu nedenle cihaz uygulamaları:

  • [C-0-1] Televizyon cihaz uygulamaları için <intent-filter>, ACTION=MAIN ve CATEGORY=LAUNCHER veya CATEGORY=LEANBACK_LAUNCHER ile ayarlanmış bir etkinliğe sahip yüklü uygulamaları başlatmak için kullanıcıya bir olanak SAĞLANMALIDIR. Bu kullanıcı kolaylığı için Ana Sayfa işlevi mekanizma OLMALIDIR.
  • Son Kullanılanlar ve Geri işlevleri için düğmeler SAĞLANMALIDIR.

Ana Sayfa, Son Öğeler veya Geri işlevleri sağlanıyorsa bunlar:

  • [C-1-1] Herhangi biri erişilebilir olduğunda tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir OLMALIDIR.
  • [C-1-2] Hangi tek işlemin her bir işlevi tetikleyeceği net bir şekilde belirtilmelidir. Düğmeye basılmış görünür bir simge, ekranın gezinme çubuğu bölümünde bir yazılım simgesi gösterme veya kutudan çıkarma kurulum deneyimi sırasında kullanıcıya adım adım rehberli bir demo akışı sunma gibi yöntemler bu tür bir göstergeye örnek olarak verilebilir.

Cihaz uygulamaları:

  • [SR], Android 4.0'dan beri işlem çubuğu lehine desteği sonlandırıldığından Menü işlevi için giriş mekanizması sağlamAMALIDIR.

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österilen işlem taşması pop-up'ının konumu DEĞİŞTİRİLMEMELİDİR ancak Menü işlevi seçilerek gösterildiğinde işlem taşması pop-up'ı ekranda değiştirilmiş bir konumda oluşturulabilir.

Cihaz uygulamaları Menü işlevini sağlamıyorsa geriye dönük uyumluluk için: * [C-3-1] targetSdkVersion değeri 10'dan küçük olduğunda Menü işlevini fiziksel bir düğme, yazılım tuşu veya hareketler aracılığıyla uygulamalara SUNMALIDIR. Bu menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmediği sürece erişilebilir olmalıdır.

Cihaz uygulamaları Yardımcı işlevini sağlıyorsa: * [C-4-1] Diğer gezinme tuşlarına erişilebildiğinde Yardımcı işlevine tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir. * [SR] Bu etkileşim için ANA SAYFA işlevinde uzun basma kullanılması KESİNLİKLE ÖNERİLİR.

Cihaz uygulamaları, gezinme tuşlarını göstermek için ekranın ayrı bir bölümünü kullanıyorsa:

  • [C-5-1] Gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANMALI ve uygulamalar tarafından kullanılabilen ekran bölümünü kapatMAMALI veya başka bir şekilde engellememelidir.
  • [C-5-2] Ekranın bir bölümünü, bölüm 7.1.1'de tanımlanan koşulları karşılayacak şekilde uygulamaların kullanımına sunMALIDIR.
  • [C-5-3] Ekranın bu ayrı bölümünün (diğer adıyla gezinme çubuğu) SDK'da belgelendiği şekilde düzgün bir şekilde gizlenmesi için uygulamanın View.setSystemUiVisibility() API yöntemiyle ayarladığı işaretlere UYULMALIDIR.

7.2.4. Dokunmatik ekran girişi

Android; dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunmatik giriş cihazları gibi çeşitli işaretçi giriş sistemleri için destek içerir. Dokunmatik ekran tabanlı cihaz uygulamaları, kullanıcıya ekrandaki öğeleri doğrudan kontrol ediyormuş izlenimi verecek şekilde bir ekranla ilişkilendirilir. Kullanıcı ekrana doğrudan dokunduğu için sistem, üzerinde işlem yapılan nesneleri belirtmek için ek bir çaba gerektirmez.

Cihaz uygulamaları:

  • Bir tür işaretçi giriş sistemine (fare benzeri veya dokunmatik) SAHİP OLMALIDIR.
  • Tamamen bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.

Cihaz uygulamalarında dokunmatik ekran (tek dokunuş veya daha iyi) varsa:

  • [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ı, 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ı dokunmatik ekran içermiyorsa (yalnızca işaretçi cihaz kullanılı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ğı raporlanMAMALI ve yalnızca android.hardware.faketouch raporlanMALIDIR.

7.2.5. Sahte Dokunmatik Giriş

Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesini taklit eden bir kullanıcı girişi sistemi sağlar. Örneğin, ekrandaki imleci hareket ettiren bir fare veya uzaktan kumanda, dokunma etkisini taklit eder ancak kullanıcının önce işaret etmesini ya da odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresini, jiroskop işaretçisi, oyun çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı sahte dokunma etkileşimlerini destekleyebilir. Android, dokunmaya dayalı girişi (temel hareket desteği dahil) yeterli düzeyde taklit edebilen ve cihazın dokunmatik ekran işlevselliğinin taklit edilmiş bir alt kümesini desteklediğini belirten, fare veya dokunmatik yüzey gibi son ürünün tasarıma uygunluğunun yüksek olması dokunmaya dayalı olmayan (işaretçi tabanlı) bir giriş cihazına karşılık gelen android.hardware.faketouch özelliğini içerir.

Cihaz uygulamaları dokunmatik ekran içermiyorsa ancak kullanılabilir hale getirmek istedikleri başka bir işaretçi giriş sistemi içeriyorsa:

  • android.hardware.faketouch özellik işaretinin desteklendiğini BEYAN ETMELİDİR.

Cihaz uygulamaları android.hardware.faketouch desteğini beyan ediyorsa:

  • [C-1-1] İşaretçi konumunun mutlak X ve Y ekran konumları RAPORLANMALI ve ekranda görsel bir işaretçi gösterilmelidir.
  • [C-1-2] Ekranda aşağı veya yukarı hareket eden işaretçide meydana gelen durum değişikliğini belirten işlem koduyla dokunma etkinliği RAPORLANMALIDIR.
  • [C-1-3] Ekranda bir nesneye dokunma ve nesneyi bırakma hareketini desteklemelidir. Bu sayede kullanıcılar, ekrandaki bir nesneye dokunma hareketini taklit edebilir.
  • [C-1-4] Kullanıcıların ekrandaki bir nesneye çift dokunmayı taklit etmesine olanak tanıyan bir süre eşiği içinde, ekrandaki bir nesnenin aynı yerinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketlerini desteklemelidir.
  • [C-1-5] Kullanıcıların dokunarak sürükleme hareketini taklit etmesine olanak tanıyan, ekrandaki rastgele bir noktada işaretçi aşağı, ekrandaki başka bir rastgele noktaya işaretçi hareket ettirme ve ardından işaretçi yukarı hareketlerini desteklemelidir.
  • [C-1-6] İşaretçi aşağı hareketini desteklemeli, ardından kullanıcıların nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ekranda işaretçi yukarı hareketini yapmasına izin vermelidir. Bu sayede kullanıcılar ekrandaki nesneyi fırlatabilir.
  • [C-1-7] Configuration.touchscreen API alanı için TOUCHSCREEN_NOTOUCH raporlanmalıdır.

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 (parmakla yapılan el hareketlerinin takibi) veya daha fazla işaretçi girişinin tamamen bağımsız olarak ayrı ayrı takibini DESTEKLEMELİDİR.

7.2.6. Oyun Kumandası Desteği

7.2.6.1. Düğme Eşlemeleri

Cihaz uygulamaları android.hardware.gamepad özellik işaretini beyan ediyorsa:

  • [C-1-1] Aşağıdaki tablolarda listelenen tüm etkinliklerin girilmesini sağlayacak bir kontrol cihazı yerleştirilmeli veya kutuda ayrı bir kontrol cihazıyla birlikte gönderilmelidir.
  • [C-1-2] Aşağıdaki tablolarda listelendiği gibi, HID etkinliklerini ilişkili Android view.InputEvent sabitlerine eşleyebilmelidir. Yukarı akış Android uygulaması, bu şartı karşılayan oyun kumandaları için uygulama içerir.
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)
Ana Sayfa1 0x0c 0x0223 KEYCODE_HOME (3)
Geri1 0x0c 0x0224 KEYCODE_BACK (4)

1 KeyEvent

2 Yukarıdaki HID kullanımları bir oyun kumandası CA'sında (0x01 0x0005) beyan edilmelidir.

3 Bu kullanımın mantıksal minimum değeri 0, mantıksal maksimum değeri 7, fiziksel minimum değeri 0, fiziksel maksimum değeri 315, birimi derece ve rapor boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde dönüş olarak tanımlanır. Örneğin, 0 mantıksal değeri dönüş olmadığını ve yukarı düğmesine basıldığını, 1 mantıksal değeri ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını gösterir.

4 MotionEvent

Analog Kontroller1 HID Kullanımı Android Düğmesi
Sol tetikleyici 0x02 0x00C5 AXIS_LTRIGGER
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, minimum 5 ms + 2 * sample_time gecikme süresiyle yayınlanan bir sensör için sensör verileri, maksimum 100 milisaniye + 2 * sample_time gecikme süresiyle BİLDİRİLMELİDİR. Bu gecikmeye filtreleme gecikmeleri dahil değildir.
  • [C-1-3] Etkinleştirilen sensörün ilk sensör örneği, 400 milisaniye + 2 * sample_time içinde RAPORLANMALIDIR. Bu örnekte doğruluk değerinin 0 olması kabul edilebilir.
  • [SR] Etkinliğin gerçekleştiği ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edildiği zamanı temsil eden, Android SDK belgelerinde tanımlandığı şekilde etkinlik zamanını nanosaniye cinsinden bildirmelidir. Mevcut ve yeni Android cihazların, gelecekte bu bileşenin ZORUNLU olabileceği platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR. Senkronizasyon hatası 100 milisaniyenin altında OLMALIDIR.

  • [C-1-4] Android SDK belgelerinde sürekli sensör olduğu belirtilen tüm API'ler için cihaz uygulamaları, aralıklı veri örneklerini sürekli olarak sağlamalıdır. Bu örneklerde, jitter'ın %3'ün altında olması GEREKİR. Jitter, bildirilen zaman damgası değerlerinin ardışık etkinlikler arasındaki farkının standart sapması olarak tanımlanır.

  • [C-1-5] SENSÖR ETKİNLİK AKIŞININ, CİHAZ CPU'SUNUN ASKIYA ALMA DURUMUNA GİRMESİNİ VEYA ASKIYA ALMA DURUMUNDAN UYANMASINI ENGELLEMEMESİ GEREKİR.

  • Birden fazla sensör etkinleştirildiğinde güç tüketimi, tek tek sensörlerin bildirilen güç tüketiminin toplamını AŞMAMALIDIR.

Yukarıdaki liste kapsamlı değildir. Android SDK'nın belgelenmiş davranışı ve sensörler ile ilgili Android Açık Kaynak Belgeleri yetkili olarak kabul edilir.

Bazı sensör türleri bileşiktir. Bu türler, bir veya daha fazla sensör tarafından sağlanan 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.

7.3.1. İvme ölçer

  • Cihaz uygulamaları 3 eksenli ivme ölçer İÇERMELİDİR.

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

  • [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
  • [C-1-2] TYPE_ACCELEROMETER sensörünü uygulamalı ve raporlamalıdır.
  • [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.
  • [C-1-4] Herhangi bir eksende serbest düşüşten yerçekiminin dört katına(4g) veya daha fazlasına kadar ölçüm yapabilmelidir.
  • [C-1-5] En az 12 bit çözünürlüğe sahip OLMALIDIR.
  • [C-1-6] Standart sapma en fazla 0,05 m/sn^ olmalıdır.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına hesaplanmalıdır.
  • [SR] TYPE_SIGNIFICANT_MOTION bileşik sensörünün uygulanması KESİNLİKLE ÖNERİLİR.
  • [SR], çevrimiçi ivmeölçer kalibrasyonu varsa TYPE_ACCELEROMETER_UNCALIBRATED sensörünü uygulaması KESİNLİKLE ÖNERİLİR.
  • 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.
  • En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.
  • En az 16 bit çözünürlüğe SAHİP OLMALIDIR.
  • Özellikler yaşam döngüsü boyunca değişirse kullanılmaya devam ederken kalibre edilmeli ve telafi edilmeli, telafi parametreleri cihaz yeniden başlatıldığında korunmalıdır.
  • Sıcaklık dengelemesi YAPILMALIDIR.
  • Ayrıca TYPE_ACCELEROMETER_UNCALIBRATED sensörü de uygulamalıdır.

Cihaz uygulamalarında 3 eksenli bir ivmeölçer varsa ve TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER bileşik sensörlerinden herhangi biri uygulanıyorsa:

  • [C-2-1] Güç tüketimlerinin toplamı HER ZAMAN 4 mW'tan az OLMALIDIR.
  • Cihaz dinamik veya statik durumdayken her biri 2 mW ve 0,5 mW'ın altında OLMALIDIR.

Cihaz uygulamaları 3 eksenli ivme ölçer ve jiroskop sensörü içeriyorsa:

  • [C-3-1] TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION birleşik sensörleri uygulamalıdır.
  • TYPE_GAME_ROTATION_VECTOR bileşik sensörünü uygulamalıdır.
  • [SR] Mevcut ve yeni Android cihazlarda TYPE_GAME_ROTATION_VECTOR sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.

Cihaz uygulamaları 3 eksenli ivme ölçer, jiroskop sensörü ve manyetometre sensörü içeriyorsa:

  • [C-4-1] TYPE_ROTATION_VECTOR bileşik sensör uygulaması ZORUNLUDUR.

7.3.2. Manyetometre

  • Cihaz uygulamaları 3 eksenli bir manyetometre (pusula) İÇERMELİDİ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 düşü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] Sert demir sapmasının çevrimiçi kalibrasyonunu ve telafisini DESTEKLEMELİ ve cihaz yeniden başlatıldığında telafi parametrelerini KORUMALIDIR.
  • [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.
  • TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörü UYGULAMALIDIR.
  • [SR] Mevcut ve yeni Android cihazlarda TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.

Cihaz uygulamaları 3 eksenli manyetometre, ivme ölçer sensörü ve 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ı 3 eksenli manyetometre, ivme ölçer ve TYPE_GEOMAGNETIC_ROTATION_VECTOR sensörü içeriyorsa:

  • [C-3-1] 10 mW'tan az güç tüketmelidir.
  • Sensör, 10 Hz'de toplu mod için kaydedildiğinde 3 mW'tan daha az güç tüketmelidir.

7.3.3. GPS

Cihaz uygulamaları:

  • GPS/GNSS alıcısı İÇERMELİDİ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 Konumu ve Uydu Efemerisi/Saati'ni içerir).
    • [C-1-6] Bu tür bir konum hesaplaması yapıldıktan sonra, cihaz uygulamaları, ilk konum hesaplamasından sonraki bir saat içinde konum istekleri yeniden başlatıldığında, 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] Bir takımyıldızdan en az 8 uyduyu aynı anda GnssStatus.Callback üzerinden izlemeli ve raporlamalıdır.
    • Birden fazla takımyıldızdan (ör. GPS + en az bir Glonass, Beidou, Galileo) en az 24 uyduyu aynı anda takip edebilmelidir.
    • [C-1-5] "getGnssYearOfHardware" test API'si aracılığıyla GNSS teknolojisi neslini bildirmelidir.
    • [SR] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışları sağlamaya devam edin.
    • [SR] SBAS hariç olmak üzere, izlenen tüm takımyıldızlardan gelen GNSS ölçümlerini (GnssStatus mesajlarında bildirildiği gibi) raporlayın.
    • [SR] AGC ve GNSS ölçüm sıklığını bildirin.
    • [SR] Tüm doğruluk tahminlerini (Yön, Hız ve Dikey dahil) her GPS/GNSS konumunun bir parçası olarak bildirin.
    • [SR], Test API aracılığıyla "2016" veya "2017" yılını bildiren cihazlar için ek zorunlu koşullardan mümkün olduğunca fazlasını karşılaması ŞİDDETLE TAVSİYE EDİLİR LocationManager.getGnssYearOfHardware().

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 ve LocationManager.getGnssYearOfHardware() Test API'si "2016" veya daha yeni bir yılı bildiriyorsa:

  • [C-2-1] GPS/GNSS'den hesaplanan bir konum henüz raporlanmamış olsa bile GNSS ölçümleri bulunur bulunmaz raporlanmalıdır.
  • [C-2-2] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekarelik ivmeden daha az bir hızla hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıkları ve sahte aralık hızları, zamanın en az% 95'inde BİLDİRİLMELİDİ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 ve LocationManager.getGnssYearOfHardware() Test API'si "2017" veya daha yeni bir yılı bildiriyorsa:

  • [C-3-1] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışları sağlamaya DEVAM ETMELİDİR.
  • [C-3-2] SBAS hariç olmak üzere, izlenen tüm takımyıldızlardan gelen GNSS ölçümleri (GnssStatus mesajlarında bildirildiği gibi) RAPORLANMALIDIR.
  • [C-3-3] AGC ve GNSS ölçüm sıklığı RAPORLANMALIDIR.
  • [C-3-4] Her GPS/GNSS konumunun bir parçası olarak tüm doğruluk tahminleri (Yön, Hız ve Dikey dahil) BİLDİRİLMELİDİR.

Cihaz uygulamaları bir GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa ve LocationManager.getGnssYearOfHardware() Test API'si "2018" veya daha yeni bir yılı bildiriyorsa:

  • [C-4-1] Mobil İstasyon Tabanlı (MS-Based) Ağ Tarafından Başlatılan acil durum oturumu görüşmesi sırasında uygulamalara normal GPS/GNSS çıkışları sağlamaya DEVAM ETMELİDİR.
  • [C-4-2] Konumlar ve ölçümler, GNSS Konum Sağlayıcı API'lerine bildirilmelidir.

7.3.4. Jiroskop

Cihaz uygulamaları:

  • Jiroskop (açısal değişim sensörü) İÇERMELİDİR.
  • 3 eksenli ivme ölçer de dahil edilmediği sürece jiroskop sensörü İÇERMEMELİDİR.

Cihaz uygulamaları jiroskop içeriyorsa:

  • [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
  • [C-1-2] TYPE_GYROSCOPE sensörü UYGULAMALI ve TYPE_GYROSCOPE_UNCALIBRATED sensörü de UYGULAMALIDIR.
  • [C-1-3] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
  • [C-1-4] 12 bit veya daha yüksek çözünürlüğe SAHİP OLMALI ve 16 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, ayrıca cihaz yeniden başlatıldığında telafi parametreleri korunmalıdır.
  • [C-1-7] Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) daha büyük bir varyansa SAHİP OLMAMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle sınırlandırılması ZORUNLUDUR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz bu değer 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
  • [SR] Mevcut ve yeni Android cihazlarda SENSOR_TYPE_GYROSCOPE_UNCALIBRATED sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.
  • [SR] Cihaz oda sıcaklığında sabitken kalibrasyon hatasının 0,01 rad/sn'den az olması ŞİDDETLE TAVSİYE EDİLİR.
  • En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.

Cihaz uygulamaları jiroskop, ivme ölçer sensörü ve manyetometre sensörü içeriyorsa:

  • [C-2-1] TYPE_ROTATION_VECTOR bileşik sensör uygulaması ZORUNLUDUR.

Cihaz uygulamalarında jiroskop ve ivme ölçer sensörü varsa:

  • [C-3-1] TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION birleşik sensörleri uygulamalıdır.
  • [SR] Mevcut ve yeni Android cihazlarda TYPE_GAME_ROTATION_VECTOR sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.
  • TYPE_GAME_ROTATION_VECTOR bileşik sensörünü uygulamalıdır.

7.3.5. Barometre

  • Cihaz uygulamaları barometre (ortam hava basıncı sensörü) İÇERMELİDİ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ınlanabilmelidir.
  • [C-1-3] Sıcaklık dengelenmelidir.
  • [SR] 300 hPa ile 1.100 hPa arasındaki basınç ölçümlerini raporlayabilmek 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ğerdir).

7.3.6. Thermometer

Cihaz uygulamaları: * Ortam termometresi (sıcaklık sensörü) İÇEREBİLİR. * CPU sıcaklık sensörü İÇEREBİLİR ancak İÇERMEMELİDİR.

Cihaz uygulamalarında ortam termometresi (sıcaklık sensörü) varsa:

  • [C-1-1] SENSOR_TYPE_AMBIENT_TEMPERATURE olarak tanımlanmalı ve kullanıcının cihazla etkileşimde bulunduğu ortamdaki (oda/araç kabini) sıcaklığı santigrat derece cinsinden ölçmelidir.
  • [C-1-2] SENSOR_TYPE_TEMPERATURE olarak tanımlanmalıdır.
  • [C-1-3] Cihazın CPU sıcaklığı ÖLÇÜLMELİDİR.
  • [C-1-4] Başka bir sıcaklık ölçülmemelidir.

SENSOR_TYPE_TEMPERATURE sensör türünün Android 4.0'da kullanımdan kaldırıldığını unutmayın.

7.3.7. Fotometre

  • Cihaz uygulamaları, fotometre (ortam ışığı sensörü) içerebilir.

7.3.8. Yakınlık Sensörü

  • Cihaz uygulamaları yakınlık sensörü içerebilir.

Cihaz uygulamalarında yakınlık sensörü varsa:

  • [C-1-1] Bir nesnenin yakınlığını ekranla aynı yönde ÖLÇMELİDİR. Yani, bu sensör türünün asıl amacı kullanıcının kullandığı telefonu algılamak olduğundan yakınlık sensörü, ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Cihaz uygulamaları başka bir yöne bakan yakınlık sensörü içeriyorsa bu sensöre bu API aracılığıyla erişileMEMELİDİR.
  • [C-1-2] 1 bit veya daha fazla doğruluk olmalıdır.

7.3.9. Yüksek Doğruluk Oranı Sunan Sensörler

Cihaz uygulamaları bu bölümde tanımlandığı şekilde daha yüksek kaliteli 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 capability nesnesini TANIMLAMALIDIR.

Cihaz uygulamaları android.hardware.sensor.hifi_sensors beyan ederse:

  • [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, en az -16g ile +16g arasında bir ölçüm aralığı OLMASI GEREKİR.
    • En az 2.048 LSB/g ölçüm çözünürlüğüne SAHİP OLMALIDIR.
    • En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
    • Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı RATE_VERY_FAST destekLEMELİDİR.
    • 400 μg/√Hz'den fazla ölçüm gürültüsüne sahip OLMAMALIDIR.
    • Bu sensörün, en az 3.000 sensör etkinliği arabelleğe alma özelliğine sahip, uyandırma içermeyen bir biçimi UYGULANMALIDIR.
    • 3 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
    • [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
    • Oda sıcaklığında test edildiğinde 30 μg √Hz'den daha az bir rastgele yürüyüş ivmesine 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_UNCALIBRATED, TYPE_ACCELEROMETER ile aynı kalite koşullarına sahip OLMALIDIR.

  • [C-2-3] Aşağıdaki özelliklere sahip bir TYPE_GYROSCOPE sensörü OLMALIDIR:

    • En az -1.000 ile +1.000 dps arasında bir ölçüm aralığı OLMALIDIR.
    • En az 16 LSB/dps ölçüm çözünürlüğüne sahip 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.
    • 0,014°/s/√Hz'den fazla olmayan bir ölçüm gürültüsüne sahip OLMALIDIR.
    • [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
    • Oda sıcaklığında test edildiğinde 0,001 °/s √Hz'den daha düşük bir hızda rastgele yürüyüşe sahip 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.
    • Gürültü yoğunluğu ≤ 0,007 °/s/√Hz OLMALIDIR.
    • Cihaz sabitken 10-40 °C sıcaklık aralığında kalibrasyon hatası 0,002 rad/sn'den az OLMALIDIR.
    • 0,1°/s/g'den daha az g-hassasiyetine SAHİP OLMALIDIR.
    • Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyet < %4,0 ve eksenler arası hassasiyet değişimi < %0,3 OLMALIDIR.
  • [C-2-4] TYPE_GYROSCOPE_UNCALIBRATED, TYPE_GYROSCOPE ile aynı kalite koşullarına sahip OLMALIDIR.

  • [C-2-5] Aşağıdaki özelliklere sahip bir TYPE_GEOMAGNETIC_FIELD sensörü OLMALIDIR:

    • En az -900 ile +900 μT arasında bir ölçüm aralığı OLMALIDIR.
    • En az 5 LSB/uT ölçüm çözünürlüğüne 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 ile aynı kalite koşullarına sahip bir TYPE_GEOMAGNETIC_FIELD 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 uygulamalıdır.
    • [C-SR] Rapor hızı 50 Hz veya daha yüksek olduğunda 1 Hz'den en az 10 Hz'ye kadar beyaz gürültü 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, uyandırma içermeyen bir sensör biçimi uygulanmalıdır.
    • 2 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
  • [C-2-8] Aşağıdaki özelliklere sahip bir TYPE_GAME_ROTATION_VECTOR sensörü OLMALIDIR:
    • En az 300 sensör etkinliğinin arabelleğe alınabileceği, uyandırma içermeyen bir sensör biçimi uygulanmalıdır.
    • 4 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
  • [C-2-9] Aşağıdaki özelliklere sahip bir TYPE_SIGNIFICANT_MOTION sensörü OLMALIDIR:
    • Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
  • [C-2-10] Aşağıdaki özelliklere sahip bir TYPE_STEP_DETECTOR sensörü OLMALIDIR:
    • En az 100 sensör etkinliğinin arabelleğe alınabileceği, uyandırma içermeyen bir sensör biçimi UYGULANMALIDIR.
    • Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
    • 4 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
  • [C-2-11] Aşağıdaki özelliklere sahip bir TYPE_STEP_COUNTER sensörü OLMALIDIR:
    • Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
  • [C-2-12] Aşağıdaki özelliklere sahip bir TILT_DETECTOR sensörü OLMALIDIR:
    • Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
  • [C-2-13] İvmeölçer, jiroskop ve manyetometre tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 2,5 milisaniye içinde OLMALIDIR. Akselerometre ve jiroskop tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 0,25 milisaniye içinde OLMALIDIR.
  • [C-2-14] JİROSKOP SENSÖRÜ ETKİNLİK ZAMAN DAMGALARI, KAMERA ALTSİSTEMİYLE AYNI ZAMAN TABANINDA VE 1 MİLİSANİYE HATA PAYI İÇİNDE OLMALIDIR.
  • [C-2-15] Veriler yukarıdaki fiziksel sensörlerden herhangi birinde uygulamaya sunulduktan sonraki 5 milisaniye içinde uygulamalara örnekler sunULMALIDIR.
  • [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz statik durumdayken güç tüketimi 0,5 mW'tan, hareket hâlindeyken ise 2,0 mW'tan yüksek OLMAMALIDIR:
    • SENSOR_TYPE_SIGNIFICANT_MOTION
    • SENSOR_TYPE_STEP_DETECTOR
    • SENSOR_TYPE_STEP_COUNTER
    • SENSOR_TILT_DETECTORS
  • [C-2-17] TYPE_PROXIMITY sensörü OLABİLİR ancak varsa minimum 100 sensör etkinliği arabellek kapasitesine SAHİP OLMALIDIR.

Bu bölümdeki tüm güç tüketimi şartlarının, uygulama işlemcisinin güç tüketimini içermediğini unutmayın. Sensör, destekleyici devreler, özel sensör işleme sistemi vb. 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ızlarının desteklendiğini DOĞRU şekilde bildirmelidir.
  • [C-3-2] Sensör doğrudan kanalını desteklediğini belirten tüm sensörler için iki sensör doğrudan kanal türünden en az birini DESTEKLEMELİDİR.
  • Aşağıdaki türlerdeki birincil sensör (uyandırma dışı varyant) için sensör doğrudan kanalı üzerinden etkinlik raporlamasını DESTEKLEMELİDİR:
    • TYPE_ACCELEROMETER
    • TYPE_ACCELEROMETER_UNCALIBRATED
    • TYPE_GYROSCOPE
    • TYPE_GYROSCOPE_UNCALIBRATED
    • TYPE_MAGNETIC_FIELD
    • TYPE_MAGNETIC_FIELD_UNCALIBRATED

7.3.10. Biyometrik Sensörler

7.3.10.1. Parmak izi sensörleri

Cihaz uygulamaları güvenli bir kilit ekranı içeriyorsa:

  • Parmak izi sensörü İÇERMELİDİR.

Cihaz uygulamaları parmak izi sensörü içeriyorsa ve sensörü üçüncü taraf uygulamalarına sunuyorsa:

  • [C-1-1] android.hardware.fingerprint özelliği için destek beyan EDİLMELİDİR.
  • [C-1-2] Android SDK belgelerinde açıklandığı gibi ilgili API TAMAMEN uygulanmalıdır.
  • [C-1-3] YANLIŞ KABUL ORANI %0,002'DEN YÜKSEK OLMAMALIDIR.
  • [SR] Sahtecilik ve kimliğe bürünme kabul oranının %7'den yüksek OLMAMASI ŞİDDETLE TAVSİYE EDİLİR.
  • [C-1-4] Sahtecilik ve kimliğe bürünme kabul oranları %7'den yüksekse bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceği ve etkinleştirmenin riskleri açıkça belirtilmelidir.
  • [C-1-5] Parmak izi doğrulama için beş başarısız denemeden sonra denemeler en az 30 saniye boyunca sıklık sınırına tabi tutulmalıdır.
  • [C-1-6] Donanım destekli bir anahtar deposu uygulamasına sahip OLMALI ve parmak izi eşleştirme işlemini Güvenilir Yürütme Ortamı'nda (TEE) veya TEE'ye güvenli bir kanal içeren bir çip üzerinde gerçekleştirmelidir.
  • [C-1-7] TEE dışında elde edilemeyecek, okunamayacak veya değiştirilemeyecek şekilde tüm tanımlanabilir parmak izi verileri şifrelenmeli ve kriptografik olarak doğrulanmalıdır ya da Android Açık Kaynak Projesi sitesindeki uygulama yönergelerinde belgelendiği gibi TEE'ye güvenli bir kanal içeren bir çip kullanılmalıdır.
  • [C-1-8] Kullanıcının mevcut bir cihaz kimlik bilgisini (PIN/desen/şifre) onaylaması veya TEE ile güvenli hale getirilmiş yeni bir cihaz kimlik bilgisi eklemesiyle önce güven zinciri oluşturulmadan parmak izi eklenmesi ENGELLENMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
  • [C-1-9] Üçüncü taraf uygulamalarının, parmak izleri arasında ayrım yapmasına İZİN VERİLMEMELİDİR.
  • [C-1-10] DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT işaretine UYULMALIDIR.
  • [C-1-11] Android 6.0'dan önceki bir sürümden yükseltme yapıldığında, yukarıdaki şartları karşılamak için parmak izi verileri güvenli bir şekilde taşınmalı veya kaldırılmalıdır.
  • [C-1-12] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama yoluyla da dahil olmak üzere) kullanıcının tanımlanabilir tüm parmak izi verileri TAMAMEN kaldırILMALIDIR.
  • [C-1-13] Tanımlanabilir parmak izi verilerine veya bunlardan türetilen verilere (ör. yerleştirmeler) Uygulama İşlemcisi'nin şifrelenmemiş erişimine İZİN VERİLMEMELİDİR.
  • [SR] Cihazda ölçüldüğü üzere %10'dan düşük bir yanlış ret oranına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
  • [SR] Kayıtlı bir parmak için, parmak izi sensörüne dokunulduğu andan ekranın kilidi açılana kadar ölçülen gecikmenin 1 saniyeden kısa olması ŞİDDETLE TAVSİYE EDİLİR.
  • Android Açık Kaynak Projesi'nde sağlanan Android parmak izi simgesi KULLANILMALIDIR.
7.3.10.2. Diğer Biyometrik Sensörler

Cihaz uygulamaları, parmak izi tabanlı olmayan bir veya daha fazla biyometrik sensör içeriyorsa ve bunları üçüncü taraf uygulamalarının kullanımına sunuyorsa:

  • [C-1-1] YANLIŞ KABUL ORANI %0,002'DEN YÜKSEK OLMAMALIDIR.
  • [C-SR] Sahtecilik ve kimliğe bürünme kabul oranının %7'den yüksek olmaması KESİNLİKLE ÖNERİLİR.
  • [C-1-2] Sahtecilik ve kimliğe bürünme kabul oranları %7'den yüksekse bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceği ve etkinleştirmenin riskleri net bir şekilde açıklanmalıdır.
  • [C-1-3] Biyometrik doğrulama için beş başarısız denemeden sonra deneme sıklığına en az 30 saniye sınırlama GETİRİLMELİDİR. Burada başarısız deneme, kayıtlı bir biyometrik veriyle eşleşmeyen, yeterli yakalama kalitesine (ACQUIRED_GOOD) sahip bir denemedir.
  • [C-1-4] Donanım destekli bir anahtar deposu uygulamasına sahip OLMALI ve biyometrik eşleşmeyi TEE'de veya TEE'ye güvenli bir kanal içeren bir çip üzerinde gerçekleştirmelidir.
  • [C-1-5] Kimliği tanımlayabilecek tüm veriler, TEE dışında veya Android Open Source Project sitesindeki uygulama yönergelerinde belgelendiği gibi TEE'ye güvenli bir kanal sağlayan bir çipte elde edilemeyecek, okunamayacak veya değiştirilemeyecek şekilde şifrelenmeli ve kriptografik olarak doğrulanmalıdır.
  • [C-1-6] Kullanıcının mevcut bir cihaz kimlik bilgisini (PIN/desen/şifre) onaylamasını veya TEE ile güvenli hale getirilmiş yeni bir cihaz kimlik bilgisi eklemesini sağlayarak önce güven zinciri oluşturmadan yeni biyometri eklenmesini ENGELLEMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
  • [C-1-7] Üçüncü taraf uygulamaların biyometrik kayıtlar arasında ayrım yapmasına İZİN VERİLMEMELİDİR.
  • [C-1-8] İlgili biyometri için bireysel işaretlemeye (ör. DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT, DevicePolicymanager.KEYGUARD_DISABLE_FACE veya DevicePolicymanager.KEYGUARD_DISABLE_IRIS) UYULMALIDIR.
  • [C-1-9] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama dahil) kullanıcının tanımlanabilir tüm biyometrik verileri tamamen KALDIRILMALIDIR.
  • [C-1-10] TEE bağlamı dışında, tanımlanabilir biyometrik verilere veya bunlardan türetilen verilere (ör. yerleştirmeler) Uygulama İşlemcisi'ne şifrelenmemiş erişime İZİN VERİLMEMELİDİR.
  • [C-SR] Cihazda ölçüldüğü üzere %10'dan düşük bir yanlış ret oranına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
  • [C-SR] Kayıtlı her biyometrik için, biyometriğin algılandığı andan ekranın kilidinin açıldığı ana kadar ölçülen gecikmenin 1 saniyenin altında olması ŞİDDETLE TAVSİYE EDİLİR.

7.3.11. Yalnızca Android Automotive'e özel sensörler

Otomobile özel sensörler android.car.CarSensorManager API adresinde tanımlanmıştır.

7.3.11.1. Current Gear

Cihaza özel gereksinimler için Bölüm 2.5.1'e bakın.

7.3.11.2. Gündüz Gece Modu

Cihaza özel gereksinimler için Bölüm 2.5.1'e bakın.

7.3.11.3. Sürüş Durumu

Bu koşulun desteği sonlandırılmıştır.

7.3.11.4. Tekerlek Hızı

Cihaza özel gereksinimler için Bölüm 2.5.1'e bakın.

7.3.11.5. El Freni

Cihaza özel gereksinimler için Bölüm 2.5.1'e bakın.

7.3.12. 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] TYPE_POSE_6DOF sensörünü uygulamalı ve raporlamalıdır.
  • [C-1-2] Yalnızca dönüş vektöründen daha doğru OLMALIDIR.

7.4. Veri Bağlantısı

7.4.1. Telefon

Android API'leri ve bu belgede kullanılan "Telefon Hizmetleri" terimi, özellikle GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanımı ifade eder. Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak Android açısından aynı ağ kullanılarak uygulanabilecek veri bağlantısından bağımsız olarak kabul edilir. Başka bir deyişle, Android'deki "telefon" işlevi ve API'ler özellikle sesli aramalar ve SMS ile ilgilidir. Örneğin, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarına bakılmaksızın arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, telefon cihazı olarak kabul edilmez.

  • Android, telefon donanımı içermeyen cihazlarda KULLANILABİLİR. Yani Android, telefon olmayan cihazlarla uyumludur.

Cihaz uygulamaları GSM veya CDMA telefon özelliğini içeriyorsa:

  • [C-1-1] android.hardware.telephony özellik bayrağını ve diğer alt özellik bayraklarını teknolojiye göre BİLDİRMELİDİR.
  • [C-1-2] Söz konusu teknoloji için API'nin tam desteğini uygulamalı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.
7.4.1.1. Numara Engelleme Uyumluluğu

Cihaz uygulamaları android.hardware.telephony feature değerini bildiriyorsa:

  • [C-1-1] Numara engelleme desteği İÇERMELİDİR.
  • [C-1-2] SDK dokümanlarında açıklandığı gibi BlockedNumberContract ve ilgili API'yi eksiksiz bir şekilde uygulamalıdır.
  • [C-1-3] "BlockedNumberProvider"daki bir telefon numarasından gelen tüm aramalar ve mesajlar, uygulamalarla etkileşim olmadan ENGELLENMELİDİR. Tek istisna, SDK dokümanlarında açıklandığı gibi numara engellemenin geçici olarak kaldırıldığı durumdur.
  • [C-1-4] Engellenen bir arama için platform arama kaydı sağlayıcısına yazmamalıdır.
  • [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 cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERİLMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzü, ikincil kullanıcılar için GİZLENMELİ ve engellenenler listesine uyulmaya DEVAM EDİLMELİDİR.
  • Bir cihaz Android 7.0'a güncellendiğinde engellenen numaralar sağlayıcıya taşınmalıdır.
7.4.1.2. Telecom API

Cihaz uygulamaları android.hardware.telephony bildiriyorsa:

  • [C-1-1] SDK'da açıklanan ConnectionService API'lerini DESTEKLEMELİDİR.
  • [C-1-2] Kullanıcı, CAPABILITY_SUPPORT_HOLD üzerinden belirtilen bekletme özelliğini desteklemeyen bir üçüncü taraf uygulaması tarafından yapılan devam eden bir aramadayken yeni bir gelen aramayı GÖSTERMELİ ve kullanıcının gelen aramayı kabul etmesine veya reddetmesine olanak TANIMALIDIR.
  • [C-SR] Gelen bir aramayı yanıtlamanın devam eden bir aramayı sonlandıracağını kullanıcıya bildirmesi ŞİDDETLE TAVSİYE EDİLİR.

    AOSP uygulaması, kullanıcının gelen bir aramayı yanıtlaması durumunda diğer aramanın sonlandırılacağını belirten bir uyarı bildirimiyle bu şartları karşılar.

  • [C-SR] Üçüncü taraf uygulaması, PhoneAccount üzerindeki EXTRA_LOG_SELF_MANAGED_CALLS ekstralar anahtarını true olarak ayarladığında, arama günlüğünde arama günlüğü girişi ve üçüncü taraf uygulamasının adını gösteren varsayılan çevirici uygulamasının önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.

  • [C-SR] Aşağıdaki gibi android.telecom API'leri için ses kulaklığının KEYCODE_MEDIA_PLAY_PAUSE ve KEYCODE_HEADSETHOOK etkinliklerini işlemesi ŞİDDETLE TAVSİYE EDİLİR:
    • Devam eden bir arama sırasında önemli etkinliğe kısa basma algılandığında Connection.onDisconnect() işlevini çağırın.
    • Gelen arama sırasında önemli etkinlik tuşuna kısa basma algılandığında Connection.onAnswer() işlevini çağırır.
    • Gelen arama sırasında önemli etkinliğe uzun basma işlemi algılandığında Connection.onReject() işlevini çağırın.
    • CallAudioState simgesinin sesini kapatma durumunu değiştirin.

7.4.2. IEEE 802.11 (Kablosuz)

Cihaz uygulamaları:

  • 802.11'in bir veya daha fazla biçimi için destek 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 DNS'yi (mDNS) DESTEKLEMELİ ve mDNS paketlerini (224.0.0.251) aşağıdakiler dahil olmak üzere çalışma süresince HİÇBİR ZAMAN filtrelememelidir:
    • Ekran etkin durumda olmasa bile.
    • Android Television cihaz uygulamaları için bekleme güç durumundayken bile geçerlidir.
  • [C-1-5] WifiManager.enableNetwork() API yöntemi çağrısı, uygulama trafiği için varsayılan olarak kullanılan ve getActiveNetwork ile registerDefaultNetworkCallback gibi ConnectivityManager API yöntemleri tarafından döndürülen, şu anda etkin olan Network'ı değiştirmek için yeterli bir gösterge olarak değerlendirilmemelidir. Başka bir deyişle, yalnızca kablosuz ağın internet erişimi sağladığını başarıyla doğrularlarsa diğer ağ sağlayıcılar (ör. mobil veri) tarafından sağlanan internet erişimini devre dışı bırakabilirler.
  • [C-SR] ConnectivityManager.reportNetworkConnectivity() API yöntemi çağrıldığında Network üzerindeki internet erişiminin yeniden değerlendirilmesi ve değerlendirme sonucunda mevcut Network'ün artık internet erişimi sağlamadığı belirlendiğinde internet erişimi sağlayan başka bir ağa (ör. hücresel veri) geçilmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [C-SR] STA bağlantısı kesilmişken her taramanın başında bir kez olmak üzere, kaynak MAC adresinin ve araştırma isteği çerçevelerinin sıra numarasının rastgele hale getirilmesi ŞİDDETLE TAVSİYE EDİLİR.
    • Bir taramayı oluşturan her bir yoklama isteği çerçevesi grubu, tutarlı bir MAC adresi kullanmalıdır (MAC adresi, taramanın ortasında rastgele hale GETİRİLMEMELİDİR).
    • Yoklama isteği sıra numarası, taramadaki yoklama istekleri arasında normal şekilde (sırayla) tekrarlanmalıdır.
    • Yoklama isteği sıra numarası, bir taramanın son yoklama isteği ile bir sonraki taramanın ilk yoklama isteği arasında rastgele olmalıdır.
  • STA bağlantısı kesilmişken yalnızca aşağıdaki öğelerin araştırma isteği çerçevelerinde kullanılması için [C-SR] ŞİDDETLE TAVSİYE EDİLİR:
    • SSID Parametre Seti (0)
    • DS Parametre Kümesi (3)

Cihaz uygulamaları 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ı (Kablosuz ağdan kablosuz ağa) 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.

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 KULLANMAMALIDIR.
7.4.2.3. Wi-Fi Aware

Cihaz uygulamaları:

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

  • [C-1-1] WifiAwareManager API'leri, SDK dokümanlarında açıklandığı şekilde uygulamalıdır.
  • [C-1-2] android.hardware.wifi.aware özellik bayrağı BEYAN EDİLMELİDİR.
  • [C-1-3] MUST support Wi-Fi and Wi-Fi Aware operations concurrently.
  • [C-1-4] Wi-Fi Aware yönetim arayüzü adresini 30 dakikadan uzun olmayan aralıklarla ve Wi-Fi Aware her etkinleştirildiğinde rastgele seçmelidir.

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

Cihaz uygulamaları Wi-Fi Passpoint desteği içeriyorsa:

  • [C-1-1] SDK belgelerinde açıklandığı şekilde Passpoint ile ilgili WifiManager API'leri uygulamalıdır.
  • [C-1-2] IEEE 802.11u standardını, özellikle de Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi Ağ Keşfi ve Seçimi ile ilgili olarak DESTEKLEMELİDİR.

Aksine, cihaz uygulamaları Wi-Fi Passpoint desteği içermiyorsa:

  • [C-2-1] Passpoint ile ilgili WifiManager API'lerinin uygulanması UnsupportedOperationException istisnası oluşturmalıdır.
7.4.2.5. Kablosuz Konum (Kablosuz Gidiş Dönüş Süresi - RTT)

Cihaz uygulamaları:

Cihaz uygulamaları, kablosuz konum desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:

  • [C-1-1] WifiRttManager API'leri, SDK dokümanlarında açıklandığı şekilde uygulamalıdır.
  • [C-1-2] android.hardware.wifi.rtt özellik bayrağı BEYAN EDİLMELİDİR.
  • [C-1-3] RTT'nin yürütüldüğü kablosuz arayüz bir erişim noktasıyla ilişkilendirilmemişken yürütülen her RTT patlaması için kaynak MAC adresini rastgele hale GETİRMELİDİ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 ETMELİ ve platform API'lerini uygulamalıdır.
  • Cihaza uygun şekilde A2DP, AVRCP, OBEX, HFP gibi ilgili Bluetooth profillerini UYGULAMALIDIR.

Cihaz uygulamaları Bluetooth Düşük Enerji 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() özelliği için doğru değeri bildirmelidir.
  • ScanFilter API uygulanırken filtreleme mantığının Bluetooth yonga setine aktarılması DESTEKLENMELİDİR.
  • Toplu taramanın Bluetooth yonga setine aktarılması DESTEKLENMELİDİR.
  • En az 4 yuvalı çoklu reklamı DESTEKLEMELİDİR.

  • [SR] Kullanıcı gizliliğini korumak için 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulaması ve zaman aşımında adresi döndürme ŞİDDETLE TAVSİYE EDİLİR.

Cihaz uygulamaları Bluetooth LE'yi destekliyorsa ve konum taraması için Bluetooth LE'yi kullanıyorsa:

  • [C-4-1] MUST provide a user affordance to enable/disable the value read through the System API BluetoothAdapter.isBleScanAlwaysAvailable().

7.4.4. Near-Field Communications

Cihaz uygulamaları:

  • Yakın alan iletişimi (NFC) için bir alıcı-verici ve ilgili donanım İÇERMELİDİR.
  • [C-0-1] android.nfc.NdefMessage ve android.nfc.NdefRecord API'leri, NFC desteği içermese veya android.hardware.nfc özelliğini beyan etmese bile uygulamalıdır. Çünkü sınıflar, protokolden bağımsız bir veri gösterimi biçimini temsil eder.

Cihaz uygulamaları NFC donanımı içeriyorsa ve bu donanımı üçüncü taraf uygulamalarına sunmayı planlıyorsa:

  • [C-1-1] android.content.pm.PackageManager.hasSystemFeature() yö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 okuyucu/yazıcı (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0'da tanımlandığı gibi) olarak işlev görebilmelidir:
    • NfcA (ISO14443-3A)
    • NfcB (ISO14443-3B)
    • NfcF (JIS X 6319-4)
    • IsoDep (ISO 14443-4)
    • NFC Forum Etiket Türleri 1, 2, 3, 4, 5 (NFC Forum tarafından tanımlanır)
  • [SR] Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarının yanı sıra ham verileri okuyup yazabilmesi KESİNLİKLE ÖNERİLİR. NFC standartlarının ŞİDDETLE TAVSİYE EDİLEN olarak belirtildiğini ancak gelecekteki bir sürümün Uyumluluk Tanımı'nda bunların ZORUNLU olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılamaları önemle tavsiye edilir.

  • [C-1-3] Aşağıdaki eşler arası standartlar ve protokoller aracılığıyla veri iletebilmeli ve alabilmelidir:

    • ISO 18092
    • LLCP 1.2 (NFC Forum tarafından tanımlanır)
    • SDP 1.0 (NFC Forum tarafından tanımlanır)
    • NDEF Push Protocol
    • SNEP 1.0 (NFC Forum tarafından tanımlanır)
  • [C-1-4] Android Beam desteği İÇERMELİ ve Android Beam varsayılan olarak ETKİNLEŞTİRİLMELİDİR.
  • [C-1-5] Android Beam etkinleştirildiğinde veya başka bir tescilli NFC P2p modu açıldığında Android Beam'i kullanarak gönderme ve alma işlemleri YAPILABİLMELİDİR.
  • [C-1-6] SNEP varsayılan sunucusu uygulanmalıdır. Varsayılan SNEP sunucusu tarafından alınan geçerli NDEF mesajları, android.nfc.ACTION_NDEF_DISCOVERED amacını kullanarak uygulamalara gönderilmelidir. Ayarlarda Android Beam'in devre dışı bırakılması, gelen NDEF mesajının gönderilmesini DEVRE DIŞI BIRAKMAMALIDIR.
  • [C-1-7] android.settings.NFCSHARING_SETTINGS NFC paylaşım ayarlarını gösterme amacına UYULMALIDIR.
  • [C-1-8] NPP sunucusu uygulanmalıdır. NPP sunucusu tarafından alınan iletiler, SNEP varsayılan sunucusuyla aynı şekilde işlenmelidir.
  • [C-1-9] SNEP istemcisi uygulamalı ve Android Beam etkinleştirildiğinde varsayılan SNEP sunucusuna giden P2P NDEF göndermeye çalışmalıdır. Varsayılan bir SNEP sunucusu bulunamazsa istemci, bir NPP sunucusuna göndermeyi DENEMELİDİR.
  • [C-1-10] MUST allow foreground activities to set the outbound P2P NDEF message using android.nfc.NfcAdapter.setNdefPushMessage, and android.nfc.NfcAdapter.setNdefPushMessageCallback, and android.nfc.NfcAdapter.enableForegroundNdefPush.
  • Giden P2P NDEF mesajlarını göndermeden önce "Işınlamak için dokunun" gibi bir hareket veya ekranda onay kullanmalıdır.
  • [C-1-11] Cihaz, Bluetooth Object Push Profile'i desteklediğinde NFC bağlantı devri Bluetooth'a DEVREDİLMELİDİR.
  • [C-1-12] NFC Forum'un "Connection Handover version 1.2" ve "Bluetooth Secure Simple Pairing Using NFC version 1.0" spesifikasyonlarını uygulayarak android.nfc.NfcAdapter.setBeamPushUris kullanılırken Bluetooth'a bağlantı aktarımını DESTEKLEMELİDİR. Bu tür bir uygulama, NFC üzerinden devretme isteği/seçme kayıtlarını değiştirmek için "urn:nfc:sn:handover" hizmet adıyla devretme LLCP hizmetini uygulamalı ve gerçek Bluetooth veri aktarımı için Bluetooth Object Push Profile'ı kullanmalıdır. Eski nedenlerden dolayı (Android 4.1 cihazlarla uyumlu kalmak için) uygulama, NFC üzerinden devretme isteği/kayıt seçme işlemlerinin değişimi için SNEP GET isteklerini kabul etmeye DEVAM ETMELİDİR. Ancak uygulamanın kendisi, bağlantı devretme işlemini gerçekleştirmek için SNEP GET istekleri göndermemelidir.
  • [C-1-13] NFC keşif modundayken desteklenen tüm teknolojiler için yoklama YAPILMALIDIR.
  • Cihaz uyanıkken, ekran etkin durumdayken ve kilit ekranı açıkken NFC keşif modunda OLMALIDIR.
  • Thinfilm NFC Barcode ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.

Yukarıda belirtilen JIS, ISO ve NFC Forum spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.

Android, NFC ana kart emülasyonu (HCE) modunu destekler.

Cihaz uygulamaları, HCE (NfcA ve/veya NfcB için) özellikli bir NFC denetleyici yonga seti içeriyorsa ve uygulama kimliği (AID) yönlendirmesini destekliyorsa:

  • [C-2-1] android.hardware.nfc.hce özelliği sabiti RAPORLANMALIDIR.
  • [C-2-2] Android SDK'da tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.

Cihaz uygulamaları, NfcF için HCE özellikli 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 belgelendiğ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. 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ı desteği İÇERMELİDİR. EDGE, HSPA, EV-DO, 802.11g, Ethernet ve Bluetooth PAN, bu koşulu karşılayan teknolojilere örnek olarak verilebilir.
  • Fiziksel bir ağ standardı (ör. Ethernet) birincil veri bağlantısı olduğunda 802.11 (kablosuz) gibi en az bir yaygın kablosuz veri standardı için de destek içermelidir.
  • Birden fazla veri bağlantısı biçimi uygulayabilir.
  • [C-0-2] java.net.Socket ve java.net.URLConnection gibi yönetilen API'lerin yanı sıra AF_INET6 yuvaları gibi yerel API'leri kullanarak IPv6 iletişimini desteklemeli ve bir IPv6 ağ yığını içermelidir.
  • [C-0-3] Varsayılan olarak IPv6'yı etkinleştirmelidir.
  • IPv6 iletişiminin IPv4 kadar güvenilir olmasını SAĞLAMALIDIR. Örneğin:
    • [C-0-4] Uyku modunda IPv6 bağlantısını SÜRDÜRMELİDİR.
    • [C-0-5] Hız sınırlama, en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu ağlarda cihazın IPv6 bağlantısını kaybetmesine NEDEN OLMAMALIDIR.
  • [C-0-6] IPv6 ağına bağlandığında, cihazda yerel olarak herhangi bir adres veya bağlantı noktası çevirisi yapılmadan üçüncü taraf uygulamalarına ağa doğrudan IPv6 bağlantısı SAĞLANMALIDIR. Hem Socket#getLocalAddress veya Socket#getLocalPort gibi yönetilen API'ler hem de getsockname() veya IPV6_PKTINFO gibi NDK API'leri, ağda paket göndermek ve almak için kullanılan IP adresini ve bağlantı noktasını DÖNDÜRMELİDİR.

Gerekli IPv6 desteği düzeyi, aşağıdaki şartlarda gösterildiği gibi ağ türüne bağlıdır.

Cihaz uygulamaları 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ı çalışmayı DESTEKLEMELİDİR.

Cihaz uygulamaları hücresel veriyi destekliyorsa:

  • Hücresel bağlantıda IPv6 işlemini (yalnızca IPv6 ve muhtemelen çift yığın) desteklemelidir.

Cihaz uygulamaları birden fazla ağ türünü (ör. kablosuz ve hücresel veri) destekliyorsa:

  • [C-3-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.6. Senkronizasyon Ayarları

Cihaz uygulamaları:

  • [C-0-1] getMasterSyncAutomatically() yönteminin "true" değerini döndürmesi için ana otomatik senkronizasyon ayarı varsayılan olarak açık OLMALIDIR.

7.4.7. Veri Tasarrufu

Cihaz uygulamaları, ölçülü bağlantı içeriyorsa:

  • [SR] Veri tasarrufu modunun sağlanması ŞİDDETLE TAVSİYE EDİLİR.

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

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

  • [C-2-1] ConnectivityManager.getRestrictBackgroundStatus() için RESTRICT_BACKGROUND_STATUS_DISABLED değerini DÖNDÜRMELİDİR.
  • [C-2-2] ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED yayınlanmamalıdır.
  • [C-2-3] Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS amacını işleyen bir etkinliğe SAHİP OLMALI ancak bunu işlem yapmayan bir işlem olarak UYGULAYABİLİR.

7.4.8. Güvenlik unsurları

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

7.5. Kameralar

Cihaz uygulamaları en az bir kamera içeriyorsa:

  • [C-1-1] android.hardware.camera.any özellik bayrağı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.

7.5.1. Arka Kamera

Arka kamera, cihazın ekrana bakan tarafının tersinde bulunan bir kameradır. Yani cihazın uzak tarafındaki sahnelerin fotoğrafını çeker.

Cihaz uygulamaları:

  • Arka kamera İÇERMELİDİR.

Cihaz uygulamaları en az bir arka kamera içeriyorsa:

  • [C-1-1] android.hardware.camera ve android.hardware.camera.any özellik bayrağını bildirmelidir.
  • [C-1-2] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
  • Kamera sürücüsünde donanım veya yazılım otomatik odaklama uygulanmalıdır (uygulama yazılımı için şeffaf).
  • Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanımı OLABİLİR.
  • Flaş İÇEREBİLİR.

Kamerada flaş varsa:

  • [C-2-1] Bir android.hardware.Camera.PreviewCallback örneği Kamera önizleme yüzeyine kaydedilmişken, uygulama bir Camera.Parameters nesnesinin FLASH_MODE_AUTO veya FLASH_MODE_ON özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece flaş lambası YAKILMAMALIDIR. Bu kısıtlamanın, cihazın yerleşik sistem kamera uygulaması için değil, yalnızca Camera.PreviewCallback kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.

7.5.2. Ön Kamera

Ön kamera, cihazın ekranıyla aynı tarafında bulunan bir kameradır. Genellikle kullanıcıyı görüntülemek için kullanılır (ör. video konferans ve benzeri uygulamalarda).

Cihaz uygulamaları:

  • Ön kamera içerebilir.

Cihaz uygulamaları en az bir ön kameraya sahipse:

  • [C-1-1] android.hardware.camera.any ve android.hardware.camera.front özellik bayrağını bildirmelidir.
  • [C-1-2] En az VGA (640x480 piksel) çözünürlüğe sahip OLMALIDIR.
  • [C-1-3] Kamera API'si 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ıyla Kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesi, uygulama tarafından belirtilen yöne göre yatay olarak yansıtılmalıdır. Aksine, mevcut uygulama android.hardware.Camera.setDisplayOrientation() yöntemi çağrısıyla Kamera ekranının döndürülmesini açıkça istemediğinde önizleme, cihazın varsayılan yatay ekseni boyunca yansıtılmalıdır.
  • [C-1-5] Uygulama geri çağırmalarına döndürülen veya medya depolama alanına kaydedilen son yakalanan hareketsiz görüntü ya da video akışları YANSITILMAMALIDIR.
  • [C-1-6] MUST mirror the image displayed by the postview in the same manner as the camera preview image stream.
  • Bölüm 7.5.1'de açıklandığı gibi, arkaya bakan kameralarda kullanılabilen özellikler (ör. otomatik odaklama, flaş vb.) İÇEREBİLİR.

Cihaz uygulamaları kullanıcı tarafından döndürülebiliyorsa (ör. ivmeölçer aracılığıyla otomatik olarak veya kullanıcı girişiyle manuel olarak):

  • [C-2-1] Kamera önizlemesi, cihazın mevcut yönüne göre yatay olarak aynalanmalıdır.

7.5.3. Harici Kamera

Cihaz uygulamaları:

  • Her zaman bağlı olması gerekmeyen harici bir kamera için destek içerebilir.

Cihaz uygulamaları harici kamera desteği içeriyorsa:

  • [C-1-1] 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] Fiziksel bir harici kamera cihazı bağlıyken kamera CTS testlerini GEÇMELİDİR. Kamera CTS testiyle ilgili ayrıntıları source.android.com adresinde bulabilirsiniz.
  • Yüksek kaliteli kodlanmamış akışların (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırmalarını DESTEKLEMELİDİR.
  • MAY, birden fazla kamerayı destekleyebilir.
  • Kameraya dayalı video kodlamayı DESTEKLEYEBİLİR.

Kameraya dayalı video kodlama destekleniyorsa:

  • [C-2-1] Eşzamanlı olarak kodlanmamış / MJPEG akışı (QVGA veya daha yüksek çözünürlük) cihaz uygulamasında ERİŞİLEBİLİR OLMALIDIR.

7.5.4. Kamera API'sinin Davranışı

Android, kameraya erişmek için iki API paketi içerir. Daha yeni olan android.hardware.camera2 API, uygulamaya daha düşük düzeyde kamera kontrolü sunar. Bu kontrol; verimli sıfır kopyalı seri çekim/akış akışları ve pozlama, kazanç, beyaz dengesi kazançları, renk dönüştürme, gürültü azaltma, keskinleştirme gibi özelliklerin kare başına kontrolünü içerir.

Eski API paketi,android.hardware.Camera, Android 5.0'da kullanımdan kaldırıldı 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 desteklenmeye devam etmesini 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 olmalıdır.

Cihaz uygulamaları, mevcut tüm kameralar için kamerayla ilgili API'lerde aşağıdaki davranışları uygulamalıdır. Cihaz uygulamaları:

  • [C-0-1] Bir uygulama hiçbir zaman android.hardware.Camera.Parameters.setPreviewFormat(int)'u çağırmadığında, uygulama geri çağırmalarına sağlanan önizleme verileri için android.hardware.PixelFormat.YCbCr_420_SP KULLANILMALIDIR.
  • [C-0-2] Bir uygulama android.hardware.Camera.PreviewCallback örneği kaydettiğinde, sistem onPreviewFrame() yöntemini çağırdığında ve önizleme biçimi YCbCr_420_SP olduğunda, onPreviewFrame()'ye geçirilen byte[] içindeki veriler NV21 kodlama biçiminde OLMALIDIR. Yani NV21, varsayılan olmalıdır.
  • [C-0-3] android.hardware.Camera için hem ön hem de arka kameraların kamera önizlemelerinde YV12 biçimi (android.graphics.ImageFormat.YV12 sabitiyle gösterildiği gibi) DESTEKLENMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüştürmeyi DESTEKLEMELİDİR.)
  • [C-0-4] android.request.availableCapabilities bölgesinde REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE capability nesnesinin bildirme yapan android.hardware.camera2 Cihazlar için android.media.ImageReader AS (kimlik doğrulama sunucusu)'si aracılığıyla çıkış olarak android.hardware.ImageFormat.YUV_420_888 ve android.hardware.ImageFormat.JPEG biçimleri DESTEKLENMELİDİR.
  • [C-0-5] Cihazda donanım otomatik odaklama veya başka özellikler bulunup bulunmadığına bakılmaksızın, Android SDK dokümanlarında yer alan Camera API'nin tamamı uygulanmalıdır. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı tüm android.hardware.Camera.AutoFocusCallback örneklerini yine de çağırmalıdır (bu, otomatik odaklama özelliği olmayan bir kamera için geçerli olmasa da). Bu durumun öne bakan kameralar için de geçerli olduğunu unutmayın. Örneğin, öne bakan kameraların çoğu otomatik odaklamayı desteklemese de API geri çağırmaları yine de açıklandığı gibi "taklit edilmelidir".
  • [C-0-6] android.hardware.Camera.Parameters sınıfında sabit olarak tanımlanan her parametre adını TANIMALI ve KABUL ETMELİDİR. Bunun aksine, cihaz uygulamaları android.hardware.Camera.setParameters() yöntemine iletilen ve android.hardware.Camera.Parameters üzerinde sabit olarak belgelenenler dışındaki dize sabitlerini kabul etmemeli veya tanımamalıdır. Yani, donanım izin veriyorsa cihaz uygulamaları tüm standart kamera parametrelerini desteklemeli ve özel kamera parametre türlerini desteklememelidir. Örneğin, yüksek dinamik aralıklı (HDR) görüntüleme tekniklerini kullanarak görüntü yakalamayı destekleyen cihaz uygulamaları, Camera.SCENE_MODE_HDR kamera parametresini DESTEKLEMELİDİR.
  • [C-0-7] Android SDK'da açıklandığı şekilde android.info.supportedHardwareLevel özelliğiyle uygun destek düzeyini BİLDİRMELİ ve uygun çerçeve özellik işaretlerini BİLDİRMELİDİR.
  • [C-0-8] android.hardware.camera2 özelliğinin bireysel kamera özelliklerini android.request.availableCapabilities özelliği aracılığıyla beyan ETMELİ ve uygun özellik işaretlerini beyan ETMELİDİR. Ekli kamera cihazlarından herhangi biri özelliği destekliyorsa özellik işareti tanımlanmalıdır.
  • [C-0-9] Kamera ile yeni bir fotoğraf çekildiğinde ve fotoğrafın girişi medya deposuna eklendiğinde Camera.ACTION_NEW_PICTURE amacını yayınLAMALIDIR.
  • [C-0-10] Kamera tarafından yeni bir video kaydedildiğinde ve resim girişi medya deposuna eklendiğinde Camera.ACTION_NEW_VIDEO amacını yayınLAMALIDIR.
  • [C-SR] Çerçeve tarafından desteklenen fiziksel kamera türü ve fiziksel kameralar için CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL değeri LIMITED, FULL veya LEVEL_3 olduğu sürece, aynı yöne bakan birden fazla kamerası olan cihazlarda, bu yöne bakan her fiziksel kameradan oluşan, CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA capability nesnesini listeleyen mantıksal bir kamera cihazını desteklemek ŞİDDETLE TAVSİYE EDİLİR.

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ı yönde OLMALIDIR. 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 ve dikey yönü birincil olan cihazlar için geçerlidir.

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ı sunULMALIDIR. Bu alan genellikle "paylaşılan harici depolama alanı", "uygulama tarafından paylaşılan depolama alanı" veya üzerine monte edildiği Linux yolu "/sdcard" olarak da adlandırılır.
  • [C-0-2] Depolama alanı, dahili depolama bileşeninde veya çıkarılabilir bir depolama ortamında (ör.Secure Digital kart yuvası) uygulanıp uygulanmadığına bakılmaksızın, varsayılan olarak monte edilmiş paylaşılan depolama alanı ile yapılandırılmalıdır. Diğer bir deyişle, "kullanıma hazır" olmalıdır.
  • [C-0-3] Uygulama tarafından paylaşılan depolama alanı doğrudan Linux yoluna sdcard eklenmeli veya sdcard konumundan gerçek ekleme noktasına bir Linux sembolik bağlantısı içermelidir.
  • [C-0-4] SDK'da belirtildiği gibi, bu paylaşılan depolama alanında android.permission.WRITE_EXTERNAL_STORAGE izni ZORUNLU olarak uygulanmalıdır. Paylaşılan depolama alanı, bu izni alan herhangi bir uygulama tarafından yazılabilir OLMALIDIR.

Cihaz uygulamaları, yukarıdaki koşulları aşağıdaki yöntemlerden birini kullanarak karşılayabilir:

  • Kullanıcı tarafından erişilebilen çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası).
  • Android Açık Kaynak Projesi'nde (AOSP) uygulanan dahili (çıkarılamayan) depolama alanının bir kısmı.

Cihaz uygulamaları yukarıdaki koşulları karşılamak için çıkarılabilir depolama birimi kullanıyorsa:

  • [C-1-1] Yuvaya depolama ortamı takılmadığında kullanıcıyı uyaran bir kısa ileti veya pop-up kullanıcı arayüzü UYGULANMALIDIR.
  • [C-1-2] FAT biçimli bir depolama ortamı (ör. SD kart) İÇERMELİ veya kutuda ve satın alma sırasında mevcut olan diğer materyallerde depolama ortamının ayrı olarak satın alınması gerektiği gösterilmelidir.

Cihaz uygulamaları yukarıdaki şartları karşılamak için çıkarılamayan depolama alanının bir kısmını kullanıyorsa:

  • Dahili uygulama paylaşılan depolama alanının AOSP uygulamasını KULLANMALIDIR.
  • Depolama alanını, uygulamanın özel verileriyle paylaşabilir.

Cihaz uygulamaları birden fazla paylaşılan depolama yolu (ör. hem SD kart yuvası hem de paylaşılan dahili depolama) içeriyorsa:

  • [C-2-1] Paketlerine özel dizinlere veya ACTION_OPEN_DOCUMENT_TREE amaçlı işlemi başlatarak döndürülen URI içine yazma işlemi dışında, yalnızca önceden yüklenmiş ve ayrıcalıklı Android uygulamalarının WRITE_EXTERNAL_STORAGE izniyle ikincil harici depolama alanına yazmasına İZİN VERİLMELİDİR.

Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:

  • [C-3-1] Uygulamanın paylaşılan depolama alanındaki verilere ana bilgisayardan erişmek için bir mekanizma SAĞLANMALIDIR.
  • Android'in medya tarayıcı hizmeti ve android.provider.MediaStore aracılığıyla her iki depolama yolundaki içerikleri şeffaf bir şekilde kullanıma sunMALIDIR.
  • USB yığın depolama alanı KULLANILABİLİR ancak bu koşulu 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 televizyon gibi sabit değil, mobil olması bekleniyorsa cihaz uygulamaları:

  • [SR] Adaptable depolama biriminin 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ı şunlardır:

7.7. USB

Cihaz uygulamalarında USB bağlantı noktası varsa:

  • USB çevre birimi modunu DESTEKLEMELİ ve USB ana makine modunu DESTEKLEMELİDİR.

7.7.1. USB çevre birimi modu

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

  • [C-1-1] Bağlantı noktası, standart Type-A veya Type-C USB bağlantı noktasına sahip bir USB ana makinesine bağlanabilmelidir.
  • [C-1-2] android.os.Build.SERIAL aracılığıyla USB standart cihaz tanımlayıcısında iSerialNumber değerini doğru şekilde bildirmelidir.
  • [C-1-3] Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını ALGILAMALI ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri ALGILAMALIDIR.
  • [SR] Bağlantı noktası, micro-B, micro-AB veya Type-C USB form faktörünü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
  • [SR] Bağlantı noktası, cihazın alt kısmında (doğal yönlendirmeye göre) yer almalıdır veya yazılım ekran döndürme özelliği tüm uygulamalar (ana ekran dahil) için etkinleştirilmelidir. Böylece, cihaz bağlantı noktası altta olacak şekilde yönlendirildiğinde ekran doğru şekilde çizilir. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
  • [SR] USB Pil Şarjı spesifikasyonu, revizyon 1.2'de belirtildiği gibi HS chirp ve trafik sırasında 1,5 A akım çekme desteği uygulamalıdır. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
  • [SR] Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya sink/source 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 C tipi cihazların standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemesini ZORUNLU kılabiliriz.
  • [SR] Type-C USB ve USB ana makine modunu desteklediklerinde veri ve güç rolü değiştirme için Güç Aktarımı'nın desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
  • Yüksek voltajlı şarj için Güç Aktarımı'nı ve ekran çıkışı gibi Alternatif Modlar'ı desteklemelidir.
  • Android SDK dokümanlarında 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 spesifikasyonunu uyguluyorsa:

  • [C-2-1] android.hardware.usb.accessory donanım özelliği için destek beyan EDİLMELİDİR.
  • [C-2-2] USB yığın depolama sınıfının arayüz açıklaması iInterface dizesinin sonunda "android" dizesi BULUNMALIDIR.

7.7.2. USB ana makine modu

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

  • [C-1-1] Android SDK'da belgelendiği şekilde Android USB ana makine API'si uygulanmalı ve android.hardware.usb.host donanım özelliği için destek beyan edilmelidir.
  • [C-1-2] Standart USB çevre birimlerinin bağlanması için destek sağlanmalıdır. Diğer bir deyişle, şunlardan biri YAPILMALIDIR:
    • Cihaz üzerinde Type-C bağlantı noktası bulunmalı veya cihaz üzerinde bulunan tescilli bağlantı noktasını standart USB Type-C bağlantı noktasına (USB Type-C cihazı) uyarlayan kablolarla birlikte gönderilmelidir.
    • Cihaz üzerinde A tipi bağlantı noktası bulunmalı veya cihaz üzerinde bulunan tescilli bağlantı noktasını standart USB A tipi bağlantı noktasına dönüştüren kablolarla birlikte gönderilmelidir.
    • Cihazda, standart A tipi bağlantı noktasına uyarlanmış bir kabloyla birlikte gönderilmesi GEREKEN bir cihaz üzerinde micro-AB bağlantı noktası bulunmalıdır.
  • [C-1-3] USB A veya micro-AB bağlantı noktalarını C tipi bağlantı noktasına (yuva) dönüştüren bir adaptörle birlikte gönderilmemelidir.
  • [SR] Android SDK belgelerinde belirtildiği gibi USB ses sınıfının uygulanması ŞİDDETLE TAVSİYE EDİLİR.
  • Ana makine modundayken bağlı USB çevre biriminin şarj edilmesini DESTEKLEMELİDİR.USB Type-C konnektörleri için USB Type-C Kablosu ve Konnektör Spesifikasyonu Revizyon 1.2'nin Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1,5 A kaynak akımı reklamını yapmalı veya Micro-AB konnektörleri için USB Pil Şarjı Spesifikasyonları, Revizyon 1.2'de belirtildiği gibi Şarj Edilen Aşağı Akım Bağlantı Noktası(CDP) çıkış akımı aralığını kullanmalıdır.
  • USB Type-C standartlarını uygulamalı ve desteklemelidir.

Cihaz uygulamaları, ana makine modunu ve USB ses sınıfını destekleyen bir USB bağlantı noktası içeriyorsa:

  • [C-2-1] USB HID sınıfını desteklemelidir.
  • [C-2-2] USB HID Kullanım Tabloları ve Sesli Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının KeyEvent sabitleriyle eşlenmesini ve algılanmasını aşağıdaki gibi DESTEKLEMELİDİR:
    • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CD): KEYCODE_MEDIA_PLAY_PAUSE
    • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0E9): KEYCODE_VOLUME_UP
    • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0EA): KEYCODE_VOLUME_DOWN
    • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CF): KEYCODE_VOICE_ASSIST

Cihaz uygulamaları, ana makine modunu ve Depolama Erişimi Ç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ı TANIMLAMALI ve içeriklerine ACTION_GET_CONTENT, ACTION_OPEN_DOCUMENT ve ACTION_CREATE_DOCUMENT amaçları üzerinden erişilebilmesini SAĞLAMALIDIR. .

Cihaz uygulamaları, ana makine modunu ve USB Type-C'yi destekleyen bir USB bağlantı noktası içeriyorsa:

  • [C-4-1] USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rol Bağlantı Noktası işlevselliği uygulanmalıdır.
  • [SR] DisplayPort'u desteklemesi ŞİDDETLE TAVSİYE EDİLİR, USB SuperSpeed veri hızlarını desteklemesi GEREKİR ve veri ile güç rolü değiştirme için Güç Aktarımı'nı desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
  • [SR] USB Type-C Cable and Connector Specification Revision 1.2'nin Ek A bölümünde açıklandığı gibi Ses Adaptörü Aksesuar Modu'nun desteklenmemesi ŞİDDETLE TAVSİYE EDİLİR.
  • Cihaz form faktörü için en uygun olan Try.* modelini uygulamalıdır. Örneğin, el cihazı Try.SNK modelini uygulamalıdır.

7.8. Ses

7.8.1. Mikrofon

Cihaz uygulamaları mikrofon içeriyorsa:

  • [C-1-1] android.hardware.microphone özelliği 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.
  • [SR] Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın kayıt özelliğini desteklemek için KESİNLİKLE ÖNERİLİR.

Cihaz uygulamalarında mikrofon yoksa:

  • [C-2-1] android.hardware.microphone özelliği sabiti RAPORLANMAMALIDIR.
  • [C-2-2] 7. bölüm uyarınca ses kaydı API'si en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.

7.8.2. Ses Çıkışı

Cihaz uygulamaları, USB ses sınıfını kullanan 4 iletkenli 3,5 mm ses jakı veya USB ana makine modu bağlantı noktası gibi bir ses çıkışı çevre birimi için hoparlör ya da ses/multimedya çıkışı bağlantı noktası içeriyorsa:

  • [C-1-1] android.hardware.audio.output özelliği sabitini bildirmelidir.
  • [C-1-2] Bölüm 5.5'teki ses çalma koşullarını KARŞILAMALIDIR.
  • [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
  • [SR] 7.8.3 bölümünde açıklandığı gibi, ultrasona yakın oynatmayı desteklemeniz KESİNLİKLE ÖNERİLİR.

Cihaz uygulamalarında hoparlör veya ses çıkışı bağlantı noktası yoksa:

  • [C-2-1] android.hardware.audio.output özelliği 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ı", USB ses sınıfına sahip 3, 5 mm ses jakı, HDMI veya USB ana makine modu bağlantı noktası gibi bir fiziksel arayüzdür. Bluetooth, kablosuz veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" olarak kabul edilmez.

7.8.2.1. Analog Ses Bağlantı Noktaları

Android ekosisteminde 3,5 mm ses fişini kullanan kulaklıklar ve diğer ses aksesuarlarıyla uyumlu olabilmek için cihaz uygulamaları bir veya daha fazla analog ses bağlantı noktası içeriyorsa:

  • [C-SR] Ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması ŞİDDETLE TAVSİYE EDİLİR.

Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:

  • [C-1-1] Stereo kulaklıklarda ve mikrofonlu stereo kulaklıklarda ses çalmayı DESTEKLEMELİDİR.
  • [C-1-2] CTIA pin çıkışı sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR.
  • [C-1-3] Ses fişindeki mikrofon ve toprak iletkenleri arasında aşağıdaki 3 eşdeğer empedans aralığı için algılama ve tuş kodlarına eşleme DESTEKLENMELİDİR:
    • 70 ohm veya daha az: KEYCODE_HEADSETHOOK
    • 210-290 ohm: KEYCODE_VOLUME_UP
    • 360-680 ohm: KEYCODE_VOLUME_DOWN
  • [C-1-4] Fiş takıldığında ACTION_HEADSET_PLUG tetiklenmelidir ancak yalnızca fişteki tüm kontaklar jak üzerindeki ilgili segmentlere dokunduktan sonra tetiklenmelidir.
  • [C-1-5] 32 ohm'luk hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
  • [C-1-6] 1,8 V ~ 2,9 V arasında bir mikrofon önyargı voltajına SAHİP OLMALIDIR.
  • [C-1-7] Ses fişindeki mikrofon ve toprak iletkenleri arasında aşağıdaki eşdeğer empedans aralığı için tuş kodunu algılamalı ve tuş koduyla eşlemelidir:
    • 110-180 ohm: KEYCODE_VOICE_ASSIST
  • [C-SR] OMTP pin çıkışı sırasına sahip ses fişlerini desteklemek için KESİNLİKLE ÖNERİLİR.
  • [C-SR] Mikrofonlu stereo kulaklıklardan ses kaydı yapılması Şİ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, ek değer mikrofonu 1 olarak ayarlanmış şekilde yayınlanıyorsa:

  • [C-2-1] Takılı ses aksesuarındaki mikrofonun algılanması DESTEKLENMELİDİR.

7.8.3. Near-Ultrasound

Yakın ultrasonik ses, 18,5 kHz ile 20 kHz arasındaki banttır.

Cihaz uygulamaları:

  • AudioManager.getProperty API aracılığıyla yakın ultrason ses özelliği desteğini aşağıdaki şekilde doğru olarak bildirmelidir:

PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND değeri "true" ise VOICE_RECOGNITION ve UNPROCESSED ses kaynakları aşağıdaki 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 daha düşük OLMALIDIR.
  • [C-1-2] Mikrofonun 18,5 kHz - 20 kHz aralığındaki ağırlıksız sinyal-gürültü oranı, -26 dBFS'de 19 kHz ton için 50 dB'den düşük OLMAMALIDIR.

PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND "true" ise:

  • [C-2-1] Hoparlörün 18,5 kHz - 20 kHz aralığındaki ortalama yanıtı, 2 kHz'deki yanıttan en fazla 40 dB daha düşük OLMALIDIR.

7.9. Sanal Gerçeklik

Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "sanal gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamaları, bu bölümde ayrıntılı olarak açıklandığı gibi bu API'leri ve davranışları düzgün bir şekilde uygulamalıdır.

7.9.1. Sanal Gerçeklik Modu

Android, bildirimlerin stereoskopik olarak oluşturulmasını sağlayan ve bir VR uygulaması kullanıcı odaklıyken tek gözle görülebilen sistem kullanıcı arayüzü bileşenlerini devre dışı bırakan VR Modu'nu destekler.

7.9.2. Sanal Gerçeklik Modu - Yüksek Performans

Cihaz uygulamaları VR modunu destekliyorsa:

  • [C-1-1] En az 2 fiziksel çekirdeğe SAHİP OLMALIDIR.
  • [C-1-2] android.hardware.vr.high_performance özelliğ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 uygulanmalı ve uzantılar, kullanılabilir EGL uzantılarının listesinde gösterilmelidir.
  • [C-1-8] GL_EXT_multisampled_render_to_texture2, GL_OVR_multiview, GL_OVR_multiview2, GL_OVR_multiview_multisampled_render_to_texture, GL_EXT_protected_textures uygulanmalı ve uzantılar, kullanılabilir GL uzantıları listesinde gösterilmelidir.
  • [C-SR] GL_EXT_external_buffer, GL_EXT_EGL_image_array uygulanması ve uzantıların, kullanılabilen GL uzantıları listesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [C-SR] Vulkan 1.1'i desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
  • [C-SR] VK_ANDROID_external_memory_android_hardware_buffer, VK_GOOGLE_display_timing, VK_KHR_shared_presentable_image uygulanması ve kullanılabilir Vulkan uzantıları listesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [C-SR] flags hem VK_QUEUE_GRAPHICS_BIT hem de VK_QUEUE_COMPUTE_BIT'yi içerdiği ve queueCount'nin 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şturması, görünür yırtılma artefaktları olmadan gösterilir.
  • [C-1-9] NDK'da açıklandığı gibi AHardwareBuffer işaretleri AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER, AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA ve AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT için destek uygulanmalıdır.
  • [C-1-10] En azından şu biçimler için AHardwareBuffers'nin AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT, AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE, AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT kullanım işaretlerinin herhangi bir kombinasyonuyla desteklenmesi ZORUNLUDUR: AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM, AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM, AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM, AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT.
  • [C-SR] AHardwareBuffer'ların 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] Sıkıştırılmış olarak ortalama 40 Mb/sn (30 kare/sn hızında 10 Mb/sn ile 1.920 x 1.080 çözünürlükte 4 örnek veya 60 kare/sn hızında 20 Mb/sn ile 1.920 x 1.080 çözünürlükte 2 örnek) ile en az 3.840 x 2.160 çözünürlükte ve 30 kare/sn hızında H.264 kod çözme işlemini desteklemelidir.
  • [C-1-12] HEVC ve VP9'u DESTEKLEMELİ, ortalama 10 Mb/sn'ye sıkıştırılmış 30 kare/sn hızında en az 1.920 x 1.080 çözünürlükte kod çözme İŞLEMİNİ YAPABİLMELİ ve 30 kare/sn hızında 20 Mb/sn (30 kare/sn hızında 5 Mb/sn hızında 1.920 x 1.080 çözünürlükte 4 örneğe eşdeğer) hızında 3.840 x 2.160 çözünürlükte kod çözme İŞLEMİNİ YAPABİLMELİDİR.
  • [C-1-13] HardwarePropertiesManager.getDeviceTemperatures API'yi desteklemeli ve 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 olmalıdır.
  • [C-SR] 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ığın 5 milisaniyeden kısa veya eşit olduğu düşük kalıcılık modunu desteklemelidir. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
  • [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı bölüm 7.4.3 desteklenmelidir.
  • [C-1-19] Aşağıdaki varsayılan sensör türlerinin tümü için Doğrudan Kanal Türü'nü desteklemeli ve düzgün şekilde bildirmelidir:
    • TYPE_ACCELEROMETER
    • TYPE_ACCELEROMETER_UNCALIBRATED
    • TYPE_GYROSCOPE
    • TYPE_GYROSCOPE_UNCALIBRATED
    • TYPE_MAGNETIC_FIELD
    • TYPE_MAGNETIC_FIELD_UNCALIBRATED
  • [C-SR], yukarıda listelenen tüm Doğrudan Kanal Türleri için TYPE_HARDWARE_BUFFER doğrudan kanal türünü desteklemek üzere ŞİDDETLE TAVSİYE EDİLİR.
  • [C-1-21] 7.3.9 bölümünde belirtildiği gibi, android.hardware.hifi_sensors için jiroskop, ivme ölçer ve manyetometre ile ilgili şartları karşılamalıdır.
  • [C-SR] android.hardware.sensor.hifi_sensors özelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
  • [C-1-22] Uçtan uca hareketten fotona gecikme süresi 28 milisaniyeden fazla OLMAMALIDIR.
  • [C-SR] Uçtan uca hareketten fotona gecikme süresinin 20 milisaniyeden yüksek olmaması ŞİDDETLE TAVSİYE EDİLİR.
  • [C-1-23] Siyah-beyaz geçişinden sonraki ilk karedeki piksellerin parlaklığı ile sabit durumdaki beyaz piksellerin parlaklığı arasındaki oran olan ilk kare oranı en az %85 OLMALIDIR.
  • [C-SR] İlk kare oranının en az %90 olması KESİNLİKLE ÖNERİLİR.
  • Ön plandaki uygulamaya özel bir çekirdek sağlayabilir ve Process.getExclusiveCores API'yi destekleyerek en üstteki ön plan uygulamasına özel CPU çekirdeklerinin sayısını döndürebilir.

Özel çekirdek destekleniyorsa çekirdek:

  • [C-2-1] Üzerinde başka kullanıcı alanı işlemlerinin çalışmasına izin VERMEMELİDİR (uygulama tarafından kullanılan cihaz sürücüleri hariç), ancak gerektiğinde bazı çekirdek işlemlerinin çalışmasına İZİN VEREBİLİR.

8. Performans ve Güç

Minimum performans ve güç ölçütlerinden bazıları, kullanıcı deneyimi açısından kritik öneme sahiptir ve geliştiricilerin uygulama geliştirirken sahip olacağı temel varsayımları etkiler.

8.1. Kullanıcı Deneyimi Tutarlılığı

Uygulamalar ve oyunlar için tutarlı bir kare hızı ve yanıt süreleri sağlamak üzere belirli minimum gereksinimler varsa son kullanıcıya sorunsuz bir kullanıcı arayüzü sunulabilir. Cihaz uygulamaları, cihaz türüne bağlı olarak 2. bölümde açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev değiştirme için ölçülebilir şartlara SAHİP OLABİLİR.

8.2. Dosya G/Ç Erişim Performansı

Uygulamanın özel veri depolama alanında (/data bölümü) tutarlı bir dosya erişimi performansı için ortak bir temel oluşturmak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak uygun beklentiler belirlemesine olanak tanır. Cihaz uygulamaları, cihaz türüne bağlı olarak aşağıdaki okuma ve yazma işlemleri için 2. bölümde açıklanan belirli şartlara sahip OLABİLİR:

  • Sıralı yazma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
  • Rastgele yazma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
  • Sıralı okuma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.
  • Rastgele okuma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.

8.3. Güç tasarrufu modları

Cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri 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 genel sistem ayarlarının kullanımı için AOSP uygulamasından sapılMAMALIDIR.
  • [C-1-2] Uygulama bekleme modunda her paketteki uygulamalar için işlerin, alarmın ve ağın sıklık sınırını yönetmek üzere genel ayarların kullanımında AOSP uygulamasından sapılMAMALIDIR.
  • [C-1-3] Uygulama Bekletme için kullanılan Uygulama Bekletme Grupları sayısı bakımından AOSP uygulamasından sapılMAMALIDIR.
  • [C-1-4] Uygulama Bekletme Grupları ve Doze, Güç Yönetimi'nde açıklandığı şekilde uygulanMALIDIR.
  • [C-1-5] Cihaz güç tasarrufu modundayken PowerManager.isPowerSaveMode() için true döndürülmelidir.
  • [C-SR] Pil Tasarrufu özelliğini etkinleştirme ve devre dışı bırakma konusunda kullanıcıya uygunluk sağlamak ŞİDDETLE TAVSİYE EDİLİR.
  • [C-SR] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak tanınması KESİNLİKLE ÖNERİLİR.

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ü uygulayabilir.

Cihaz uygulamaları, ACPI tarafından tanımlanan S4 güç durumlarını uyguluyorsa:

  • [C-1-1] YALNIZCA kullanıcı cihazı etkin olmayan bir duruma getirmek için açık bir işlem yaptıktan sonra (ör. cihazın fiziksel bir parçası olan bir kapağı kapatarak veya bir aracı ya da televizyonu kapatarak) ve kullanıcı cihazı yeniden etkinleştirmeden önce (ör. kapağı açarak veya aracı ya da televizyonu tekrar açarak) bu duruma girmelidir.

Cihaz uygulamaları, ACPI tarafından tanımlanan S3 güç durumlarını uyguluyorsa:

  • [C-2-1] Yukarıdaki C-1-1 koşulunu KARŞILAMALI veya yalnızca üçüncü taraf uygulamalarının sistem kaynaklarına (ör. ekran, CPU) ihtiyacı olmadığında S3 durumuna girmelidir.

    Aksine, üçüncü taraf uygulamaların sistem kaynaklarına ihtiyacı olduğunda bu SDK'da açıklandığı gibi S3 durumundan çıkı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. Bunun 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 bir şekilde muhasebeleştirilmesi ve raporlanması, uygulama geliştiriciye hem teşvikler hem de uygulamanın güç kullanım şeklini optimize etme araçları sağlar.

Cihaz uygulamaları:

  • [SR] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her 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ğlanması ŞİDDETLE TAVSİYE EDİLİR.
  • [SR] Tüm güç tüketimi değerlerinin miliamper saat (mAh) cinsinden bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
  • [SR] 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 şartı karşılar.
  • [SR] Bu güç kullanımının uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla sunulması KESİNLİKLE ÖNERİLİR.
  • Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.

8.5. Tutarlı Performans

Yüksek performanslı ve uzun süre çalışan uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırları nedeniyle CPU'nun hızının düşürülmesi 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.

Cihaz uygulamaları:

Cihaz uygulamaları, Sürekli Performans Modu'nu desteklediğini bildiriyorsa:

  • [C-1-1] MUST provide the top foreground application a consistent level of performance for at least 30 minutes, when the app requests it.
  • [C-1-2] Window.setSustainedPerformanceMode() API'si ve diğer ilgili API'ler KULLANILMALIDIR.

Cihaz uygulamaları iki veya daha fazla CPU çekirdeği içeriyorsa:

  • En az bir özel çekirdek sağlamalıdır. Bu çekirdek, ön plandaki en üst uygulama tarafından ayrılabilir.

Cihaz uygulamaları, en üstteki ön plan uygulaması için özel bir çekirdek ayırmayı destekliyorsa:

  • [C-2-1] Üstteki ön plan uygulaması tarafından ayrılabilen özel çekirdeklerin kimlik numaralarını Process.getExclusiveCores() API yöntemiyle bildirmelidir.
  • [C-2-2] Uygulamanın özel çekirdeklerde çalışması için kullanılan cihaz sürücüleri dışında hiçbir kullanıcı alanı sürecine izin VERİLMEMELİDİR ancak gerektiğinde bazı çekirdek süreçlerinin çalışmasına İZİN VERİLEBİLİR.

Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:

9. Güvenlik Modeli Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] Android geliştirici belgelerindeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.

  • [C-0-2] Üçüncü taraflardan/yetkililerden ek izinler/sertifikalar gerektirmeden, kendi kendine imzalanmış uygulamaların yüklenmesini DESTEKLEMELİDİR. Daha net bir ifadeyle, uyumlu cihazlar, aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını DESTEKLEMELİDİR.

9.1. İzinler

Cihaz uygulamaları:

  • [C-0-1] Android geliştirici belgelerinde tanımlandığı şekilde Android izin modelini DESTEKLEMELİDİR. Özellikle, SDK belgelerinde tanımlandığı şekilde her izni uygulamaları ZORUNLUDUR. Hiçbir izin atlanamaz, değiştirilemez veya göz ardı edilemez.

  • Yeni izin kimliği dizeleri android.\* ad alanında olmadığı sürece ek izinler EKLENEBİLİR.

  • [C-0-2] protectionLevel değeri PROTECTION_FLAG_PRIVILEGED olan izinler YALNIZCA sistem görüntüsünün ayrıcalıklı yollarında önceden yüklenmiş uygulamalara ve her uygulama için açıkça izin verilenler listesindeki izinlerin alt kümesine verilmelidir. AOSP uygulaması, etc/permissions/ yolundaki dosyalardan her uygulama için izin verilenler listesindeki izinleri okuyup uygulayarak ve ayrıcalıklı yol olarak system/priv-app yolunu kullanarak bu şartı karşılar.

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ının istenen çalışma zamanı izinlerini verip vermeyeceğine karar verebileceği özel bir arayüz göstermeli ve kullanıcının çalışma zamanı izinlerini yönetebileceği bir arayüz sağlamalıdır.
  • [C-0-4] Her iki kullanıcı arayüzünün de yalnızca bir uygulaması OLMALIDIR.
  • [C-0-5] Önceden yüklenmiş uygulamalara şu durumlar hariç çalışma zamanı izni VERİLMEMELİDİR:
    • Kullanıcının izni, uygulama kullanmadan önce alınabilir.
    • Çalışma zamanında istenen izinler, önceden yüklenmiş uygulamanın varsayılan işleyici olarak ayarlandığı bir amaç kalıbıyla ilişkilendirilir.
  • [C-0-6] YALNIZCA uygun şekilde güvenli bir kurtarma aracısı kaydeden sistem uygulamalarına android.permission.RECOVER_KEYSTORE izni VERİLMELİDİR. Düzgün şekilde güvenliği sağlanmış bir kurtarma aracısı, cihaz dışı uzak depolama ile senkronize olan, cihaz üzerinde çalışan bir yazılım aracısı olarak tanımlanır. Bu aracılar, kilit ekranı bilgi faktörüne yönelik deneme yanılma saldırılarını önlemek için Google Cloud Key Vault Hizmeti'nde açıklanan korumaya eşdeğer veya daha güçlü bir koruma sağlayan güvenli donanımla donatılmıştır.

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

  • [SR] android.permission.PACKAGE_USAGE_STATS iznini beyan eden 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ğlaması Şİ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-1-1] android.settings.ACTION_USAGE_ACCESS_SETTINGS amaç kalıbını işleyen bir etkinliğe sahip olmaya DEVAM ETMELİ ancak bunu no-op olarak uygulamalıdır. Yani, kullanıcıya erişim reddedildiğinde olduğu gibi eşdeğer bir davranışa sahip olmalıdır.

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ı modeli DESTEKLENMELİDİR.
  • [C-0-2] Uygulamaların Güvenlik ve İzinler referansında tanımlandığı şekilde uygun şekilde imzalanıp oluşturulması koşuluyla, aynı Linux kullanıcı kimliği olarak birden fazla uygulamanın çalıştırılmasını DESTEKLEMELİDİR.

9.3. Dosya Sistemi İzinleri

Cihaz uygulamaları:

9.4. Alternatif Yürütme Ortamları

Cihaz uygulamaları, Dalvik Yürütülebilir Biçimi veya yerel kod dışında bir yazılım ya da teknoloji kullanarak uygulamaları yürüten çalışma zamanı ortamları içerse bile Android güvenlik ve izin modelinin tutarlılığını KORUMALIDIR. Başka bir deyişle:

  • [C-0-1] Alternatif çalışma zamanları, 9. bölümde açıklandığı gibi Android uygulaması olmalı ve standart Android güvenlik modeline uymalıdır.

  • [C-0-2] Alternatif çalışma zamanlarına, çalışma zamanının AndroidManifest.xml dosyasında 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 ve alternatif çalışma zamanı kullanılarak yüklenen uygulamalar, paylaşılan kullanıcı kimliği ve imzalama sertifikasının standart Android mekanizmaları dışında, cihazda yüklü başka bir uygulamanın korumalı alanını yeniden kullanmamalıdır.

  • [C-0-5] Alternatif çalışma zamanları, diğer Android uygulamalarına karşılık gelen sanal ortamlara erişim başlatmamalı, bu ortamlara erişim izni vermemeli veya bu ortamlara erişim izni almamalıdır.

  • [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ılMAMALI, bu ayrıcalıklar verilMEMELİ ya da diğer uygulamalara verilMEMELİDİR.

  • [C-0-7] Alternatif çalışma zamanlarının .apk dosyaları cihaz uygulamalarının sistem görüntüsüne dahil edildiğinde, cihaz uygulamalarıyla birlikte gelen diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla İMZALANMALIDIR.

  • [C-0-8] Uygulamalar yüklenirken alternatif çalışma zamanları, uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMALIDIR.

  • [C-0-9] Bir uygulamanın, karşılık gelen bir Android izni olan bir cihaz kaynağını (ör. kamera, GPS vb.) kullanması gerektiğinde alternatif çalışma zamanı, kullanıcıyı uygulamanın bu kaynağa erişebileceği konusunda bilgilendirmelidir.

  • [C-0-10] Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmediğinde, bu çalışma zamanını kullanan herhangi bir uygulama yüklenirken çalışma zamanının sahip olduğu tüm izinleri LİSTELEMELİDİR.

  • Alternatif çalışma zamanları, uygulamaları PackageManager aracılığıyla ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir.

  • Alternatif çalışma zamanları, alternatif çalışma zamanını kullanan tüm uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlayabilir.

9.5. Çoklu Kullanıcı Desteği

Android, birden fazla kullanıcıyı destekler ve kullanıcıların tamamen izole edilmesini sağlar.

  • Cihaz uygulamaları, birincil harici depolama için çıkarılabilir medya kullanıyorsa çok kullanıcılı modu etkinleştirebilir ancak etkinleştirmemelidir.

Cihaz uygulamaları birden fazla kullanıcı içeriyorsa:

  • [C-1-1] Çoklu kullanıcı desteği ile ilgili aşağıdaki şartları KARŞILAMALIDIR.
  • [C-1-2] API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde, her kullanıcı için Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli UYGULAMALIDIR.
  • [C-1-3] Her kullanıcı örneği için ayrı ve yalıtılmış paylaşılan uygulama depolama alanı (diğer adıyla /sdcard) dizinleri OLMALIDIR.
  • [C-1-4] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolansa bile başka bir kullanıcıya ait dosyaları listelemesine, okumasına ya da bu dosyalara yazmasına İZİN VERİLMEMELİDİR.
  • [C-1-5] Cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanıyorsa çok kullanıcılı mod etkinleştirildiğinde SD kartın içeriği, yalnızca sistemin erişebildiği, çı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ı içeriyorsa ve android.hardware.telephony özellik işaretini bildirmezse:

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

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

  • [C-3-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 kontrollerin AOSP uygulamasıyla uyumlu olmalıdır.

9.6. Premium SMS Uyarısı

Android, kullanıcıları giden premium SMS mesajları konusunda uyarmayı destekler. Premium SMS iletileri, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıya ücret yansıtılmasına neden olabilecek kısa mesajlardır.

Cihaz uygulamaları android.hardware.telephony desteğini beyan ediyorsa:

  • [C-1-1] Cihazdaki /data/misc/sms/codes.xml dosyasında tanımlanan normal ifadelerle belirlenen numaralara SMS mesajı göndermeden önce kullanıcıları UYARMALIDIR. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılayan bir uygulama sağlar.

9.7. Security Features

Cihaz uygulamaları, hem çekirdekte hem de platformda aşağıdaki gibi açıklanan güvenlik özelliklerine uygunluğu sağlamalıdır.

Android korumalı alanı, Security-Enhanced Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikleri içerir. Cihaz uygulamaları:

  • [C-0-1] SELinux veya diğer güvenlik özellikleri Android çerçevesinin altında uygulanmış olsa bile mevcut uygulamalarla uyumluluk KORUNMALIDIR.
  • [C-0-2] Aşağıdaki Android çerçevesinin altında uygulanan güvenlik özelliği tarafından bir güvenlik ihlali tespit edilip 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 daha sınırlı erişim izni verilebilecek şekilde birden fazla işleme bölünmelidir.
  • [C-0-6] Çok iş parçacıklı programlardan yapılandırılabilir bir politika kullanılarak sistem çağrılarının filtrelenmesine olanak tanıyan bir çekirdek uygulama korumalı alan mekanizması UYGULANMALIDIR. Yukarı akış Android Açık Kaynak Projesi, source.android.com'un çekirdek yapılandırması bölümünde açıklandığı gibi iş parçacığı grubu senkronizasyonu (TSYNC) ile seccomp-BPF'yi etkinleştirerek bu koşulu karşılar.

Çekirdek bütünlüğü ve kendi kendini koruma özellikleri, Android güvenliğinin ayrılmaz bir parçasıdır. Cihaz uygulamaları:

  • [C-0-7] Çekirdek yığını arabellek taşması korumaları (ör. CONFIG_CC_STACKPROTECTOR_STRONG) UYGULANMALIDIR.
  • [C-0-8] Çalıştırılabilir kodun salt okunur, salt okunur verilerin çalıştırılamaz ve yazılamaz, yazılabilir verilerin ise çalıştırılamaz olduğu (ör. CONFIG_DEBUG_RODATA veya CONFIG_STRICT_KERNEL_RWX) sıkı çekirdek belleği korumaları UYGULANMALIDIR.
  • [C-0-9] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda, kullanıcı alanı ile çekirdek alanı arasındaki kopyaların statik ve dinamik nesne boyutu sınırları kontrolünü (ör. CONFIG_HARDENED_USERCOPY) uygulamalıdır.
  • [C-0-10] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda çekirdek modunda yürütülürken kullanıcı alanı belleği yürütülmemelidir (ör. donanım PXN veya CONFIG_CPU_SW_DOMAIN_PAN ya da CONFIG_ARM64_SW_TTBR0_PAN aracılığıyla emüle edilmiş).
  • [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 üzerinden emüle edilmiş) dışında okuma veya yazma İŞLEMİ YAPILMAMALIDIR.
  • [C-0-12] API düzeyi 28 veya daha yüksek bir sürümle birlikte gönderilen tüm cihazlarda (ör. CONFIG_PAGE_TABLE_ISOLATION veya "CONFIG_UNMAP_KERNEL_AT_EL0) çekirdek sayfası tablosu izolasyonu uygulanmalıdır.
  • [SR] Yalnızca başlatma sırasında yazılan çekirdek verilerinin, başlatma işleminden sonra salt okunur olarak işaretlenmesi (ör. __ro_after_init) KESİNLİKLE ÖNERİLİR.
  • [SR] Çekirdek kodu ve belleğin düzeninin rastgele hale getirilmesi ve rastgele hale getirme işlemini tehlikeye atacak ifşalardan (ör. CONFIG_RANDOMIZE_BASE /chosen/kaslr-seed Device Tree node veya EFI_RNG_PROTOCOL aracılığıyla önyükleyici entropisi) kaçınılması ŞİDDETLE TAVSİYE EDİLİR.

Cihaz uygulamaları Linux çekirdeği kullanıyorsa:

  • [C-1-1] SELinux'u uygulamalıdır.
  • [C-1-2] SELinux, genel zorlama moduna AYARLANMALIDIR.
  • [C-1-3] Tüm alanlar zorunlu kılma modunda yapılandırılmalıdır. Cihaza/tedarikçiye özgü alanlar da dahil olmak üzere izin verilen mod alanlarına izin verilmez.
  • [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy klasöründe bulunan neverallow kuralları değiştirilmemeli, atlanmamalı veya bunların yerine başka kurallar konulmamalıdır. Politika, hem AOSP SELinux alanları hem de cihaza/tedarikçiye özel alanlar için mevcut tüm neverallow kurallarıyla derlenmelidir.
  • [C-1-5] API düzeyi 28 veya daha yüksek sürümleri hedefleyen üçüncü taraf uygulamaları, her uygulamanın özel veri dizininde uygulama başına SELinux kısıtlamalarıyla uygulama başına SELinux sanal alanlarında ÇALIŞTIRILMALIDIR.
  • Android Açık Kaynak Projesi'nin yukarı akışındaki system/sepolicy klasöründe sağlanan varsayılan SELinux politikasını KORUMALI ve yalnızca kendi cihaza özel yapılandırmaları için bu politikaya eklemeler YAPMALIDIR.

Cihaz uygulamaları daha önceki bir Android sürümünde kullanıma sunulduysa ve sistem yazılımı güncellemesiyle [C-1-1] ve [C-1-5] şartlarını karşılayamıyorsa bu şartlardan MUAF TUTULABİLİR.

Cihaz uygulamaları Linux dışında bir çekirdek kullanıyorsa:

  • [C-2-1] SELinux'a eşdeğer zorunlu bir erişim denetimi sistemi KULLANILMALIDIR.

Android, cihaz güvenliğinin ayrılmaz bir parçası olan birden fazla derinlemesine savunma özelliği içerir.

Cihaz uygulamaları:

  • [C-SR] Üzerinde etkinleştirilmiş olan bileşenlerde Kontrol Akışı Bütünlüğü (CFI) veya Tam Sayı Taşması Temizleme (IntSan) özelliğinin devre dışı bırakılmaması ŞİDDETLE TAVSİYE EDİLİR.
  • [C-SR] CFI ve IntSan'da açıklandığı gibi, ek güvenlik açısından hassas kullanıcı alanı bileşenleri için hem CFI hem de IntSan'ın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR.

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.
  • [SR] AOSP uygulamasında varsayılan olarak yapılandırılan 14 günlük saklama süresinin korunması ŞİDDETLE TAVSİYE EDİLİR.

Android, sistem etkinliklerini StatsLog tanımlayıcılarını kullanarak depolar ve bu tür geçmişi StatsManager ile IncidentManager System API aracılığıyla yönetir.

Cihaz uygulamaları:

  • [C-0-2] MUST only include the fields marked with DEST_AUTOMATIC in the incident report created by the System API class IncidentManager.
  • [C-0-3] StatsLog SDK dokümanlarında açıklanan etkinlikler dışında başka bir etkinliği günlüğe kaydetmek için sistem etkinliği tanımlayıcıları KULLANILMAMALIDIR. Ek sistem etkinlikleri kaydedilirse 100.000 ile 200.000 arasındaki 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) cihazdan gönderen yazılım bileşenleri kutudan çıkarıldığında önceden yüklenmemeli veya dağıtılmamalıdır.

Cihaz uygulamaları, ekranda gösterilen içerikleri yakalayan ve/veya cihazda oynatılan ses akışını kaydeden işlevler 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 çıkarmak için ortam sesini 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 kopyaya 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 cihazdan iletilmemelidir.

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ÖSTERMELİDİR:
    • Bu ağ trafiği izlenebilir.
    • Bu ağ trafiği, VPN'yi sağlayan belirli VPN uygulaması üzerinden yönlendirilir.

Cihaz uygulamalarında, ağ verisi trafiğini bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN izniyle bir VPN hizmetini önceden yükleme) ve varsayılan olarak kutudan çıkarıldığında etkin olan bir mekanizma varsa:

  • [C-2-1] Söz konusu VPN, DevicePolicyManager.setAlwaysOnVpnPackage() aracılığıyla Cihaz Politikası Denetleyicisi tarafından etkinleştirilmediği sürece bu mekanizmayı etkinleştirmeden önce kullanıcının izni İSTENMELİDİR. Bu durumda kullanıcının ayrı bir izin vermesi gerekmez, yalnızca bilgilendirilmesi YETERLİDİR.

Cihaz uygulamaları, üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için kullanıcıya bir kolaylık sunuyorsa:

  • [C-3-1] AndroidManifest.xml dosyasında her zaman açık VPN hizmetini desteklemeyen uygulamalar için bu kullanıcı kolaylığını, SERVICE_META_DATA_SUPPORTS_ALWAYS_ON özelliğini false olarak ayarlayarak DEVRE DIŞI BIRAKMALIDIR.

9.9. Veri Depolama Şifrelemesi

Cihazda bulunan en yüksek performanslı AES teknolojisi (ör. ARM Cryptography Extensions) ile ölçülen Gelişmiş Şifreleme Standardı (AES) kripto performansı 50 MiB/sn'nin üzerindeyse cihaz uygulamaları:

  • [C-1-1] Genellikle paylaşılan cihaz uygulamaları (ör. televizyon) hariç olmak üzere, cihazın kalıcı ve çıkarılamayan bir parçasıysa uygulama özel verilerinin (/data bölümü) yanı sıra uygulama ortak depolama bölümünün (/sdcard bölümü) veri depolama şifrelemesini destekLEMELİDİR.
  • [C-1-2] Genellikle paylaşılan cihaz uygulamaları (ör. televizyon) hariç olmak üzere, kullanıcı kutudan çıkarma kurulum deneyimini tamamladığında veri depolama şifrelemesi varsayılan olarak ETKİNLEŞTİRİLMELİDİR.

AES şifreleme performansı 50 MiB/sn veya daha düşükse cihaz uygulamaları, aşağıdakilerin herhangi birinde listelenen AES biçimi yerine Adiantum-XChaCha12-AES kullanabilir: Bölüm 9.9.2'deki AES-256-XTS [C-1-5]; Bölüm 9.9.2'deki CBS-CTS modunda AES-256 [C-1-6]; Bölüm 9.9.3'teki AES [C-1-1]; Bölüm 9.9.3'teki AES [C-1-3].

Cihaz uygulamaları daha önceki bir Android sürümünde kullanıma sunulduysa ve sistem yazılımı güncellemesiyle şartı karşılayamıyorsa yukarıdaki şartlardan MUAF TUTULABİLİR.

Cihaz uygulamaları:

9.9.1. Doğrudan Başlatma

Cihaz uygulamaları:

  • [C-0-1] Depolama Şifreleme'yi desteklemeseler bile Doğrudan Başlatma modu API'lerini uygulamalıdır.

  • [C-0-2] ACTION_LOCKED_BOOT_COMPLETED ve ACTION_USER_UNLOCKED amaçları, doğrudan başlatmaya uygun uygulamalara cihaz şifreli (DE) ve kimlik bilgisi şifreli (CE) depolama konumlarının kullanıcı tarafından kullanılabildiğini bildirmek için yayınlanmaya DEVAM ETMELİDİR.

9.9.2. Dosya Tabanlı Şifreleme

Cihaz uygulamaları FBE'yi destekliyorsa:

  • [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 Şifreleme (DE) depolama alanına erişmesine izin VERİLMELİDİR.
  • [C-1-2] Kullanıcı, kimlik bilgilerini (ör. geçiş kodu, PIN, desen veya parmak izi) girerek cihazın kilidini açtıktan ve ACTION_USER_UNLOCKED mesajı yayınlandıktan sonra yalnızca Kimlik Bilgisi Şifreli (CE) depolama alanına erişime İZİN VERİLMELİDİR.
  • [C-1-3] Kullanıcı tarafından sağlanan kimlik bilgileri veya kayıtlı bir emanet anahtarı olmadan CE korumalı depolama alanının kilidini açmak için herhangi bir yöntem SUNULMAMALIDIR.
  • [C-1-4] Doğrulanmış Başlatma'yı desteklemeli ve DE anahtarlarının, cihazın güven kökünün donanımına kriptografik olarak bağlı olmasını sağlamalıdır.
  • [C-1-5] Dosya içeriklerinin AES-256-XTS kullanılarak şifrelenmesi DESTEKLENMELİDİR. AES-256-XTS, XTS modunda çalıştırılan 256 bit anahtar uzunluğuna sahip Gelişmiş Şifreleme Standardı'nı ifade eder. XTS anahtarının tam uzunluğu 512 bittir.
  • [C-1-6] CBC-CTS modunda AES-256 kullanarak dosya adlarının şifrelenmesini DESTEKLEMELİDİR.

  • CE ve DE depolama alanlarını koruyan anahtarlar:

  • [C-1-7] Donanım tabanlı bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR.

  • [C-1-8] CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine BAĞLANMALIDIR.
  • [C-1-9] Kullanıcı kilit ekranı kimlik bilgileri belirtmediğinde CE anahtarları varsayılan bir şifre koduna bağlanmalıdır.
  • [C-1-10] Benzersiz ve farklı OLMALIDIR. Başka bir deyişle, hiçbir kullanıcının CE veya DE anahtarı başka bir kullanıcının CE veya DE anahtarıyla eşleşmemelidir.

  • [C-1-11] Varsayılan olarak zorunlu desteklenen şifreler, anahtar uzunlukları ve modlar KULLANILMALIDIR.

  • [C-SR] Dosya boyutları, sahiplik, modlar ve genişletilmiş özellikler (xattrs) gibi dosya sistemi meta verilerinin, cihazın donanım güven köküne kriptografik olarak bağlı bir anahtarla şifrelenmesi ŞİDDETLE TAVSİYE EDİLİR.

  • Önceden yüklenmiş temel uygulamalar (ör. Alarm, Telefon, Mesajlaşma) doğrudan başlatma özelliğini desteklemelidir.

  • Dosya içeriği ve dosya adı şifrelemesi için alternatif şifreleri, anahtar uzunluklarını ve modları DESTEKLEYEBİLİR.

Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeği ext4 şifreleme özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.

9.9.3. Tam Disk Şifreleme

Cihaz uygulamaları tam disk şifrelemeyi (FDE) destekliyorsa:

  • [C-1-1] Depolama için tasarlanmış bir modda (ör. XTS veya CBC-ESSIV) ve 128 bit veya daha uzun bir şifreleme anahtarı uzunluğuyla AES KULLANILMALIDIR.
  • [C-1-2] Şifreleme anahtarını sarmalamak için varsayılan bir şifre kodu KULLANILMALI ve şifreleme anahtarı, şifrelenmeden hiçbir zaman depolama alanına YAZILMAMALIDIR.
  • [C-1-3] Kullanıcı açıkça devre dışı bırakmadığı sürece, etkin kullanımda olduğu ve kilit ekranı kimlik bilgilerinin yavaş bir uzatma algoritması (ör. PBKDF2 veya scrypt) kullanılarak uzatıldığı durumlar hariç olmak üzere, şifreleme anahtarını varsayılan olarak AES ile şifrelemelidir.
  • [C-1-4] Kullanıcı kilit ekranı kimlik bilgilerini belirtmediğinde veya şifreleme için geçiş kodu kullanımını devre dışı bıraktığında ve cihaz donanım destekli bir anahtar deposu sağladığında yukarıdaki varsayılan parola uzatma algoritması, anahtar deposuna kriptografik olarak bağlanmalıdır.
  • [C-1-5] Şifreleme anahtarı, kullanıcı şifre kodu ve/veya donanıma bağlı anahtarla sarmalanmış olsa bile cihazdan gönderilmemelidir.

Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeği özelliği dm-crypt'e dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.

9.10. Cihaz bütünlüğü

Aşağıdaki şartlar, cihaz bütünlüğünün durumuyla ilgili şeffaflık sağlar. Cihaz uygulamaları:

  • [C-0-1] Sistem API yöntemi aracılığıyla PersistentDataBlockManager.getFlashLockState() önyükleyici durumunun sistem görüntüsünün yüklenmesine izin verip vermediğini doğru şekilde bildirmelidir. FLASH_LOCK_UNKNOWN durumu, bu yeni sistem API'si yönteminin bulunmadığı Android'in önceki bir sürümünden yükseltme yapan cihaz uygulamaları için ayrılmıştır.

  • [C-0-2] Cihaz bütünlüğü için Doğrulanmış Başlatma'yı DESTEKLEMELİDİR.

Cihaz uygulamaları, Android'in önceki bir sürümünde Doğrulanmış Başlatma'yı desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu özellik için destek eklenemiyorsa 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 bayrağı android.software.verified_boot BEYAN EDİLMELİDİR.
  • [C-1-2] Her başlatma sırasında doğrulama YAPILMALIDIR.
  • [C-1-3] Doğrulamayı, güvenin 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, sonraki aşamadaki tüm baytların bütünlüğünü ve gerçekliğini kontrol etmek için doğrulamanın her aşamasını uygulamak ZORUNLUDUR.
  • [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'in mevcut önerileri kadar güçlü doğrulama algoritmaları KULLANILMALIDIR.
  • [C-1-6] Kullanıcı yine de başlatmayı denemeyi kabul etmediği sürece, sistem doğrulaması başarısız olduğunda başlatmanın tamamlanmasına İZİN VERİLMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALIDIR.
  • [C-1-7] Kullanıcı, önyükleyiciyi açıkça kilidini açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERİLMEMELİDİR.
  • [C-SR] Cihazda birden fazla ayrı çip varsa (ör. radyo, özel görüntü işleme birimi) önyükleme sırasında her aşamayı doğrulamak için bu çiplerin her birinin önyükleme işleminin yapılması ŞİDDETLE TAVSİYE EDİLİR.
  • [C-1-8] Bootloader'ın kilidinin açık olup olmadığını depolamak için kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR. Kurcalamaya karşı korumalı depolama, önyükleyicinin depolamanın Android'in içinden kurcalanıp kurcalanmadığını algılayabileceği anlamına gelir.
  • [C-1-9] Cihaz kullanılırken kullanıcıya istem göstermeli ve bootloader'ın kilitli 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ı UYGULANMALIDIR ve izin verilen minimum işletim sistemi sürümünü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.
  • [C-SR] Tüm ayrıcalıklı uygulama APK dosyalarının, Doğrulanmış Başlatma ile korunan /system'da köklenen bir güven zinciriyle doğrulanması ŞİDDETLE TAVSİYE EDİLİR.
  • [C-SR] Ayrıcalıklı bir uygulama tarafından APK dosyası dışından yüklenen yürütülebilir yapıtların (ör. dinamik olarak yüklenen kod veya derlenmiş kod) yürütülmeden önce doğrulanması veya hiç yürütülmemesi ŞİDDETLE TAVSİYE EDİLİR.
  • Kalıcı yazılıma sahip tüm bileşenler (ör. modem, kamera) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum sürümü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.

Cihaz uygulamaları, Android'in önceki bir sürümünde C-1-8 ile C-1-10 arasındaki gereksinimleri desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu gereksinimler için destek eklenemiyorsa gereksinimlerden MUAF TUTULABİLİR.

Yukarı akış Android Açık Kaynak Projesi, bu özelliğin external/avb/ deposunda tercih edilen bir uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleyiciye entegre edilebilir.

Cihaz uygulamaları:

Cihaz uygulamaları Android Korumalı Onayı API'sini destekliyorsa:

  • [C-3-1] ConfirmationPrompt.isSupported() API'si için true bildirilmelidir.
  • [C-3-2] Android OS'in güvenli donanım tarafından algılanmadan engellemesini önleyecek şekilde güvenli donanımın ekran üzerinde tam kontrol sahibi olmasını SAĞLAMALIDIR.
  • [C-3-3] Güvenli donanımın dokunmatik ekranın tam kontrolünü aldığından EMİN OLUNMALIDIR.

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ğrulama işlemi, deneme sıklığını sınırlamalı ve eksponansiyel geri yükleme algoritmasına sahip olmalıdır. 150 başarısız denemeden sonra, her deneme için gecikme SÜRESİ en az 24 saat OLMALIDIR.
  • Oluşturulabilecek anahtar sayısını SINIRLAMAMALIDIR.

Cihaz uygulaması güvenli kilit ekranını desteklediğinde:

  • [C-1-1] MUST back up the keystore implementation with an isolated execution environment.
  • [C-1-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 ailesi karma işlevlerinin uygulamaları 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. Anahtarların cihaz tanımlayıcı olarak kullanılmasını önlemek için onay imzalama anahtarları yeterince çok sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamanın bir yolu,belirli bir SKU'nun en az 100.000 birimi üretilmediği sürece aynı onay anahtarını paylaşmaktır. Bir SKU'nun 100.000'den fazla birimi üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
  • [C-1-5] Kullanıcının, kilidi açık durumdan kilitli duruma geçiş için uyku zaman aşımını seçmesine izin VERİLMELİDİR. İzin verilen minimum zaman aşımı 15 saniyedir.

Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulduysa bu cihaz, android.hardware.fingerprint özelliğini (izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektirir) beyan etmediği sürece, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf tutulur.

9.11.1. Güvenli Kilit Ekranı

AOSP uygulaması, bilgi faktörüne dayalı birincil kimlik doğrulamanın ikincil güçlü bir biyometri veya daha zayıf üçüncül yöntemlerle desteklenebileceği katmanlı bir kimlik doğrulama modelini izler.

Cihaz uygulamaları:

  • [C-SR] Aşağıdakilerden yalnızca birinin birincil kimlik doğrulama yöntemi olarak ayarlanması ŞİDDETLE TAVSİYE EDİLİR:
    • Sayısal bir PIN
    • Alfanümerik bir şifre
    • Tam olarak 3x3 noktalı bir ızgarada kaydırma deseni

Yukarıdaki kimlik doğrulama yöntemlerinin bu belgede önerilen birincil kimlik doğrulama yöntemleri olarak adlandırıldığını unutmayın.

Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yol olarak yeni bir kimlik doğrulama yöntemi kullanırsa yeni kimlik doğrulama yöntemi:

Cihaz uygulamaları, bilinen bir sırra dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bunları değiştirirse ve ekranı kilitlemek için güvenli bir yol 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 fazla 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ı, PASSWORD_QUALITY_SOMETHING değerinden daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setPasswordQuality() yöntemi aracılığıyla şifre kalitesi politikasını ayarladığında yeni kimlik doğrulama yöntemi DEVRE DIŞI BIRAKILMALIDIR.

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ı kilitlemek için güvenli bir yol olarak kabul edilecek biyometriye dayalı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:

  • [C-4-1] Bölüm 7.3.10.2'de açıklanan tüm şartları KARŞILAMALIDIR.
  • [C-4-2] Bilinen bir sırra dayalı olan önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için geri dönüş mekanizması OLMALIDIR.
  • [C-4-3] Device Policy Controller (DPC) uygulaması , DevicePolicyManager.setKeyguardDisabledFeatures() yöntemini çağırarak keguard özellik politikasını ayarladığında, ilişkili biyometrik işaretlerden (ör. KEYGUARD_DISABLE_BIOMETRICS, KEYGUARD_DISABLE_FINGERPRINT, KEYGUARD_DISABLE_FACE veya KEYGUARD_DISABLE_IRIS) herhangi biriyle birlikte devre dışı bırakılmalı ve ekranın kilidini açmak için yalnızca önerilen birincil kimlik doğrulama yöntemine izin verilmelidir.
  • [C-4-4] Kullanıcıya, önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için en az 72 saatte bir veya daha kısa aralıklarla meydan OKUMALIDIR.
  • [C-4-5] 7.3.10 bölümünde belirtildiği gibi parmak izi sensörü için gerekenle eşit veya daha güçlü bir yanlış kabul oranına SAHİP OLMALI ya da aksi takdirde devre dışı BIRAKILMALI ve yalnızca Cihaz Politikası Denetleyicisi (DPC) uygulaması, DevicePolicyManager.setPasswordQuality() yöntemiyle PASSWORD_QUALITY_BIOMETRIC_WEAK değerinden daha kısıtlayıcı bir kalite sabiti kullanarak şifre kalitesi politikasını ayarladığında ekranın kilidinin açılmasına izin VERMELİDİR.
  • [C-SR] Bölüm 7.3.10'da açıklandığı şekilde, parmak izi sensörü için gerekenle eşit veya daha güçlü sahtecilik ve kimliğe bürünme kabul oranlarına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
  • [C-4-6] Bir işletim sistemi veya çekirdek ihlali, verilerin doğrudan yerleştirilerek kullanıcı olarak kimliğin yanlış şekilde doğrulanmasına izin vermeyecek şekilde güvenli bir işleme hattına SAHİP OLMALIDIR.
  • [C-4-7] Uygulama, KeyGenParameterSpec.Built.setUserAuthenticationRequired() için true değerini ayarlarsa ve biyometrik kimlik doğrulama pasifse (ör.niyetle ilgili açık bir sinyalin olmadığı yüz veya iris), anahtar deposu anahtarlarına erişime izin vermek için açık bir onay işlemiyle (ör. düğmeye basma) eşleştirilmelidir.
  • [C-SR] Pasif biyometri için onay işleminin, işletim sistemi veya çekirdek ihlaliyle sahteciliğe karşı KESİNLİKLE güvenli hale getirilmesi ÖNERİLİR. Örneğin, bu, fiziksel bir düğmeye dayalı onay işleminin, yalnızca fiziksel bir düğmeye basılarak çalıştırılabilen bir güvenlik unsurunun (SE) yalnızca giriş amaçlı genel amaçlı giriş/çıkış (GPIO) pimi üzerinden yönlendirildiği anlamına gelir.

Biyometrik kimlik doğrulama yöntemleri, bölüm 7.3.10'da açıklandığı gibi sahtecilik ve kimliğe bürünme kabul oranlarını karşılamıyorsa:

  • [C-5-1] Cihaz politikası denetleyici (DPC) uygulaması, PASSWORD_QUALITY_BIOMETRIC_WEAK değerinden daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setPasswordQuality() yöntemi aracılığıyla şifre kalitesi politikasını ayarladıysa yöntemler DEVRE DIŞI BIRAKILMALIDIR.
  • [C-5-2] Kullanıcı, 4 saatlik boşta kalma zaman aşımı süresinden sonra önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için mutlaka sorgulanmalıdır. Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasının ardından boşta kalma zaman aşımı süresi sıfırlanı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 bir 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 BIRAKILMALIDIR ve Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı PASSWORD_QUALITY_UNSPECIFIED değerinden daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS) yöntemi veya DevicePolicyManager.setPasswordQuality() yöntemiyle ayarladığında ekranın 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, şifre) biriyle en az 72 saatte bir veya daha kısa bir süre içinde kimliğini doğrulamalıdı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 uymalıdır.

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

  • [C-7-1] Cihaz kilidi ertelendiğinde veya güvenilir aracı 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] KEYGUARD_DISABLE_TRUST_AGENTS sabiti gibi DevicePolicyManager sınıfındaki tüm güven aracısı API'lerine UYULMALI ve bu API'ler tam olarak uygulanmalı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ı, anahtarın kullanıldığı cihazda sakLANMAMALIDIR. Örneğin, telefonda depolanan bir anahtarın TV'deki kullanıcı hesabının kilidini açmasına izin verilir.
  • [C-7-6] MUST inform the user about the security implications before enabling the escrow token to decrypt the data storage.
  • [C-7-7] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizma OLMALIDIR.
  • [C-7-8] Kullanıcı, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle en az 72 saatte bir veya daha kısa aralıklarla kimliğini doğrulamalıdır.
  • [C-7-9] Kullanıcı, 4 saatlik boşta kalma zaman aşımı süresinden sonra önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle kimlik doğrulamaya zorlanmalıdır. Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasının ardından boşta kalma zaman aşımı süresi sıfırlanır.
  • [C-7-10] Güvenli bir kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8'de listelenen kısıtlamalara uymalıdır.

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 bunları değiştirirse ve keyguard'ın kilidini açmak için yeni bir kimlik doğrulama yöntemi kullanırsa:

9.11.2. StrongBox

Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları özel bir güvenli işlemcide ve yukarıda açıklanan izole yürütme ortamında depolamasına olanak tanır.

Cihaz uygulamaları:

  • [C-SR] StrongBox'ı desteklemek için KESİNLİKLE ÖNERİLİR.

Cihaz uygulamaları StrongBox'ı destekliyorsa:

  • [C-1-1] FEATURE_STRONGBOX_KEYSTORE beyan EDİLMELİDİR.

  • [C-1-2] Anahtar deposunu yedeklemek ve kullanıcı kimlik doğrulamasını güvenli hale getirmek için kullanılan özel bir güvenli donanım SAĞLANMALIDIR.

  • [C-1-3] Önbelleği, DRAM'i, yardımcı işlemcileri veya diğer temel kaynakları uygulama işlemcisi (AP) ile paylaşmayan ayrı bir CPU'ya SAHİP OLMALIDIR.

  • [C-1-4] AP ile paylaşılan tüm çevre birimlerinin StrongBox işlemesini hiçbir şekilde değiştiremeyeceğinden veya StrongBox'tan herhangi bir bilgi alamayacağından EMİN OLMALIDIR. AP, StrongBox'a erişimi devre dışı bırakabilir veya engelleyebilir.

  • [C-1-5] AP'nin manipülasyonuna karşı bağışıklığı olan, makul doğrulukta (+-%10) bir dahili saate SAHİP OLMALIDIR.

  • [C-1-6] MUST have a true random number generator that produces uniformly-distributed and unpredictable output.

  • [C-1-7] Fiziksel nüfuz ve aksaklığa karşı direnç de dahil olmak üzere kurcalamaya karşı dirençli OLMALIDIR.

  • [C-1-8] Güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla bilgi sızdırılmasına karşı direnç de dahil olmak üzere yan kanal direnci OLMALIDIR.

  • [C-1-9] İçeriklerin gizliliğini, bütünlüğünü, gerçekliğini, tutarlılığını ve güncelliğini sağlayan güvenli depolama alanı OLMALIDIR. StrongBox API'leri tarafından izin verilen durumlar dışında depolama birimi okunamaz veya değiştirilemez.

  • [C-1-3] ile [C-1-9] arasındaki şartlara uygunluğu doğrulamak için cihaz uygulamaları:

    • [C-1-10] MUST include the hardware that is certified against the Secure IC Protection Profile BSI-CC-PP-0084-2014 or evaluated by a nationally accredited testing laboratory incorporating High attack potential vulnerability assessment according to the Common Criteria Application of Attack Potential to Smartcards.
    • [C-1-11] Ortak Kriterler: Akıllı Kartlara Saldırı Potansiyelinin Uygulanması'na göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesini içeren, ulusal olarak akredite edilmiş bir test laboratuvarı tarafından değerlendirilen donanım yazılımını İÇERMELİDİR.
    • [C-SR] AVA_VAN.5 ile desteklenen bir Güvenlik Hedefi, Değerlendirme Güvence Düzeyi (EAL) 5 kullanılarak değerlendirilen donanımı içermesi ŞİDDETLE TAVSİYE EDİLİR. EAL 5 sertifikası, gelecekteki bir sürümde zorunlu hale gelebilir.
  • [C-SR] özelliği, içeriden saldırıya karşı direnç (IAR) sağlamak için ŞİDDETLE TAVSİYE EDİLİR. Bu özellik sayesinde, ürün yazılımı imzalama anahtarlarına erişimi olan bir içeriden saldırgan, StrongBox'ın sırları sızdırmasına, işlevsel güvenlik şartlarını atlamasına veya hassas kullanıcı verilerine erişimi başka şekilde etkinleştirmesine neden olan bir ürün yazılımı oluşturamaz. IAR'yi uygulamanın önerilen yolu, donanım yazılımı güncellemelerine yalnızca IAuthSecret HAL aracılığıyla birincil kullanıcı şifresi sağlandığında izin vermektir.

9.12. Veri Silme

Tüm cihaz uygulamaları:

  • [C-0-1] Kullanıcılara "Fabrika Verilerine Sıfırlama" işlemi yapabilecekleri bir mekanizma SAĞLANMALIDIR.
  • [C-0-2] Kullanıcı tarafından oluşturulan tüm veriler SİLİNMELİDİR. Yani aşağıdaki veriler hariç tüm veriler:
    • Sistem görüntüsü
    • Sistem görüntüsü için gereken tüm işletim sistemi dosyaları
  • [C-0-3] Verileri, NIST SP800-88 gibi ilgili endüstri standartlarını karşılayacak şekilde SİLMELİDİR.
  • [C-0-4] Birincil kullanıcının Cihaz Politikası Denetleyici uygulaması tarafından DevicePolicyManager.wipeData() API'si çağrıldığında yukarıdaki"Fabrika Verilerine Sıfırlama" işlemi TETİKLENMELİDİR.
  • Yalnızca mantıksal veri silme işlemi yapan hızlı bir veri silme seçeneği SUNABİLİR.

9.13. Güvenli Önyükleme Modu

Android, kullanıcılara yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda başlatma olanağı sunan güvenli başlatma modu sağlar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcılara zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı sunar.

Cihaz uygulamaları şunlardır:

  • [SR] STRONGLY RECOMMENDED to implement Safe Boot Mode.

Cihaz uygulamaları Güvenli Önyükleme Modu'nu uyguluyorsa:

  • [C-1-1] Üçüncü taraf uygulama bir Cihaz Politikası Denetleyicisi olmadığı ve UserManager.DISALLOW_SAFE_BOOT işaretini doğru olarak ayarlamadığı sürece, cihaza yüklenen üçüncü taraf uygulamaları tarafından kesintiye uğratılmayacak şekilde kullanıcıya güvenli modda başlatma seçeneği SUNULMALIDIR.

  • [C-1-2] Kullanıcıya, güvenli modda üçüncü taraf uygulamalarını kaldırma özelliği SAĞLANMALIDIR.

  • Kullanıcıya, normal başlatma iş akışından farklı bir iş akışı kullanarak başlatma menüsünden güvenli modda başlatma seçeneği SUNULMALIDIR.

9.14. Otomotiv Araç Sistemi İzolasyonu

Android Automotive cihazların, CAN veri yolu gibi araç ağları üzerinden mesaj göndermek ve almak için araç HAL'ını kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.

Veri alışverişi, bu alt sistemlerle kötü amaçlı veya kasıtsız etkileşimi önlemek için Android framework katmanlarının altında güvenlik özellikleri uygulanarak güvenli hale getirilebilir.

9.15. Abonelik Planları

"Abonelik planları", 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ı yalnızca 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 SubscriptionManager.setSubscriptionOverrideCongested() gibi geçersiz kılmalara izin VERİLMELİDİ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 tamamen kapsamlı olmadığını unutmayın. Bu nedenle, cihaz uygulayıcıların Android Açık Kaynak Projesi'nden edinilebilen Android'in referans ve tercih edilen uygulamasında mümkün olduğunca az değişiklik yapması ŞİDDETLE TAVSİYE EDİLİR. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara neden olan hataların ortaya çıkma riskini en aza indirir.

10.1. Compatibility Test Suite

Cihaz uygulamaları:

  • [C-0-1] Cihazdaki son gönderim yazılımı kullanılarak Android Açık Kaynak Projesi'nden edinilebilen Android Compatibility Test Suite (CTS)'yi GEÇMELİDİR.

  • [C-0-2] CTS'de belirsizlik olması ve referans kaynak kodunun bölümlerinin yeniden uygulanması durumlarında uyumluluğu SAĞLAMALIDIR.

CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. CTS de diğer yazılımlar gibi hatalar içerebilir. CTS, bu Uyumluluk Tanımlama Belgesi'nden bağımsız olarak sürümlendirilir ve Android 9 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 Doğrulayıcı, 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 ivmeölçer test senaryosunu DOĞRU şekilde çalıştırmalıdır.

Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test senaryoları atlanabilir veya çıkarılabilir.

  • [C-0-2] Yukarıda belirtildiği gibi, her cihaz ve her derleme, CTS Verifier'ı doğru şekilde ÇALIŞTIRMALIDIR. Ancak birçok derleme çok benzer olduğundan, cihaz uygulayıcıların CTS Doğrulayıcı'yı yalnızca önemsiz farklılıklar içeren derlemelerde açıkça çalıştırması beklenmez. Daha açık belirtmek gerekirse, CTS Verifier'ı geçen bir uygulamadan yalnızca dahil edilen yerel ayarlar, markalama vb. açısından farklılık gösteren cihaz uygulamaları CTS Verifier testini 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ın yerine geçebilmesi koşuluyla herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:

    • Yeniden başlatma yoluyla çevrimdışı güncelleme ile "kablosuz (OTA)" indirmeleri.
    • Ana makine PC'den 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 yukarı akış yazılımında bu koşulu karşılayan bir güncelleme mekanizması bulunduğunu unutmayın.

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.

Android 6.0 ve sonraki sürümlerle kullanıma sunulan cihaz uygulamalarında, güncelleme mekanizması, OTA'dan sonra sistem görüntüsünün beklenen sonuçla ikili olarak aynı olduğunu doğrulama işlemini DESTEKLEMELİDİR. Android 5.1'den beri eklenen, yukarı akış Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu şartı karşılar.

Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP, bu özelliği önyükleme denetimi HAL'sini kullanarak uygular.

Bir cihaz uygulaması yayınlandıktan sonra ancak Android Uyumluluk Ekibi ile istişare edilerek belirlenen makul ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa:

  • [C-2-1] Cihaz uygulayıcı, hatayı az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesiyle DÜZELTMELİDİR.

Android, cihaz sahibi uygulamasına (varsa) sistem güncellemelerinin yüklenmesini kontrol etme olanağı tanıyan özellikler içerir. Cihazlar için sistem güncelleme alt sistemi android.software.device_admin'i bildiriyorsa:

12. Doküman değişiklik günlüğü

Bu sürümdeki Uyumluluk Tanımlama Belgesi değişikliklerinin özeti için:

Bölümlerdeki değişikliklerin özeti için:

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

12.1. Değişiklik günlüğünü görüntülemeyle ilgili ipuçları

Değişiklikler aşağıdaki şekilde işaretlenir:

  • CDD
    Uyumluluk şartlarında önemli değişiklikler.

  • Dokümanlar
    Kozmetik veya derlemeyle ilgili değişiklikler.

En iyi görüntüleme için pretty=full ve no-merges URL parametrelerini değişiklik günlüğü URL'lerinize ekleyin.

13. Bize Ulaşın

android-compatibility forumuna katılarak açıklama isteyebilir veya belgede yer almadığını düşündüğünüz sorunları gündeme getirebilirsiniz.