Android 8.1 Uyumluluk Tanımı

1. Giriş

Bu dokümanda, cihazların Android 8.1 ile uyumlu olması için karşılanması gereken şartlar açıklanmaktadır.

"ZORUNLU", "ZORUNLU OLMAMALIDIR", "ZORUNLU", "YAPILMAYACAK", "YAPILMAYACAK", "ÖNERİLMEZ", "ÖNERİLİR" ve "İSTEĞE BAĞLI" ifadeleri, RFC2119'da tanımlanan IETF standardına göre yapılır.

Bu belgede belirtildiği gibi, "cihaz uygulayıcı" veya "uygulamacı", Android 8.1 çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluşu ifade eder. “Cihaz uygulaması” veya “uygulama” bu şekilde geliştirilmiş donanım/yazılım çözümüdür.

Cihaz uygulamalarının Android 8.1 ile uyumlu olarak kabul edilmesi için referans yoluyla dahil edilen tüm dokümanlar da dahil olmak üzere bu Uyumluluk Tanımı'nda belirtilen gereksinimleri karşılaması ZORUNLUDUR.

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

Bu nedenle, Android'in hem referans hem de tercih edilen uygulaması Android Açık Kaynak Projesi'dir. Cihaz uygulayıcılarının, uygulamalarını mümkün olan en geniş kapsamda Android Açık Kaynak Projesi'nde bulunan "yukarı akış" kaynak koduna dayandırması ÖNEMLE ÖNERİLİR. Bazı bileşenlerin alternatif uygulamalarla değiştirilebilir, ancak yazılım testlerini geçmek önemli ölçüde zorlaşacağından, bu uygulamaya uymamanız ÖNEMLE ÖNERİLİR. Uyumluluk Test Paketi ve sonrasında, standart Android uygulamasıyla tam davranış uyumluluğu sağlamak, uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen değişikliklerinin ve değişikliklerinin bu belgede açıkça yasaklandığını unutmayın.

Bu belgede bağlantı verilen kaynakların çoğu, doğrudan veya dolaylı olarak Android SDK'sından türetilmiştir ve söz konusu SDK'nın dokümanlarındaki bilgilerle işlevsel olarak aynı olacaktır. Bu Uyumluluk Tanımı veya Uyumluluk Test Paketi'nin, SDK dokümanlarını kabul etmediği durumlarda, SDK dokümanları güvenilir olarak kabul edilir. Bu belgedeki bağlantılı kaynaklarda sağlanan tüm teknik ayrıntılar, dahil etme işlemiyle bu Uyumluluk Tanımı'nın bir parçası olarak değerlendirilir.

1.1 Belge Yapısı

1.1.1. Cihaz Türüne Göre Koşullar

2. Bölüm, belirli bir cihaz türü için geçerli olan ZORUNLU ve ÖNERİLEN tüm gereksinimleri içerir. 2. Bölüm'ün her alt bölümü belirli bir cihaz türüne özeldir.

Tüm Android cihaz uygulamaları için evrensel olarak geçerli olan diğer tüm gereksinimler, 2. Bölüm'den sonraki bölümlerde listelenmiştir. Bu şartlar, bu dokümanda "Temel Şartlar" olarak belirtilmiştir.

1.1.2. Gereklilik kimliği

Gereklilik kimliği, ZORUNLU şartlar için atanır.

  • Kimlik yalnızca ZORUNLU koşulları için atanmıştır.
  • Şiddetle ÖNERİLEN gereksinimler [SR] olarak işaretlenir ancak kimlik atanmaz.
  • Kimlik şunlardan oluşur : Cihaz Türü Kimliği - Durum Kimliği - Gereklilik Kimliği (ör. C-0-1).

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

  • Cihaz Türü Kimliği (Daha fazla bilgi için 2. Cihaz Türleri
    • C: Temel (Android cihaz uygulamalarında geçerli olan şartlar)
    • H: Android Avuç İçi cihaz
    • T: Android Televizyon cihazı
    • C: Android Automotive uygulaması
  • Koşul kimliği
    • Gereksinim koşulsuz olduğunda bu kimlik 0 olarak ayarlanır.
    • Koşul koşullu olduğunda, 1. koşul için 1 değeri atanır ve bu sayı, aynı bölüm ve aynı cihaz türünde 1'er artar.
  • Gereksinim kimliği
    • Bu kimlik 1'den başlar ve aynı bölüm ve aynı koşul içinde 1'er artar.

2. Cihaz Türleri

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

Bu bölümde söz konusu cihaz türlerinin yanı sıra her cihaz türü için geçerli olan ek koşullar ve öneriler açıklanmaktadır.

Açıklanan cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamalarının yine de bu Uyumluluk Tanımı'nın diğer bölümlerindeki tüm şartları karşılaması ZORUNLUDUR.

2.1 Cihaz Yapılandırmaları

Cihaz türüne göre donanım yapılandırmasındaki önemli farklar için bu bölümde yer alan cihaza özgü gereksinimlere bakın.

2.2. Elle Birlikte Kullanılabilen Gereksinimler

Android Avuç İçi Cihaz, genellikle mp3 çalar, telefon veya tablet gibi elinde tutarak kullanılan Android cihaz uygulamasını ifade eder.

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

  • Pil gibi hareketlilik sağlayan bir güç kaynağına sahip olmalısınız.
  • 2,5-8 inç aralığında fiziksel diyagonal ekran boyutuna sahip olmalıdır.

Bu bölümün geri kalanındaki ek şartlar Android Avuç İçi cihaz uygulamalarına özeldir.

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

2.2.1. Donanım

Ekran Boyutu (Bölüm 7.1.1.1)

Avuç içi cihaz uygulamaları:

  • [H-0-1] Köşeden köşeye çapraz olarak en az 2,5 inç boyutunda bir ekran olmalıdır.*

Ekran Yoğunluğu (Bölüm 7.1.1.3)

Avuç içi cihaz uygulamaları:

  • [H-SR] Kullanıcılara ekran boyutunu değiştirme fırsatı sunmak için ÖNEMLE ÖNERİLİR.

Eski Uygulama Uyumluluk Modu (Bölüm 7.1.5)

Avuç içi cihaz uygulamaları:

  • [H-0-1] Yukarı akış Android açık kaynak kodu tarafından uygulandığı şekliyle eski uygulama uyumluluk modu desteği içermesi ZORUNLUDUR. Yani, cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİDİR ve uyumluluk modunun davranışını DEĞİŞTİRMEMELİDİR.

Klavye (Bölüm 7.2.1)

Avuç içi cihaz uygulamaları:

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

Gezinme Tuşları (Bölüm 7.2.3)

Avuç içi cihaz uygulamaları:

  • [H-0-1] Ana Ekran, Son Kullanılanlar ve Geri işlevlerini ZORUNLUDUR.

  • [H-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliğini ön plan uygulamasına göndermesi ZORUNLUDUR.

Dokunmatik Ekranla Giriş (Bölüm 7.2.4)

Avuç içi cihaz uygulamaları:

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

İvme ölçer (Bölüm 7.3.1)

Avuç içi cihaz uygulamaları:

  • [H-SR] 3 eksenli ivme ölçer içermesi ÖNEMLE ÖNERİLİR.

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

  • [H-1-1] işlevinin en az 100 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.

Jiroskop (Bölüm 7.3.4)

Avuç içi cihaz uygulamaları jiroskop içeriyorsa:

  • [H-1-1] işlevinin en az 100 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.

Yakınlık Sensörü (Bölüm 7.3.8 )

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

  • Bir yakınlık sensörü İÇERMELİDİR.

Poz Sensörü (Bölüm 7.3.12)

Avuç içi cihaz uygulamaları:

  • 6 serbestlik derecesiyle poz sensörünü desteklemek için ÖNERİLİR.

Bluetooth (Bölüm 7.4.3)

Avuç içi cihaz uygulamaları:

  • Bluetooth ve Bluetooth LE desteği İÇERMELİDİR.

Veri Tasarrufu (Bölüm 7.4.7)

Avuç içi cihaz uygulamaları sayaçlı bağlantı içeriyorsa:

  • [H-1-1] veri tasarrufu modunu SAĞLAMALIDIR.

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

Avuç içi cihaz uygulamaları yalnızca 32 bit ABI desteklediğini belirtiyorsa:

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

  • [H-2-1] Varsayılan ekran HD+ çözünürlüğe kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlüklerini kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 592 MB ZORUNLUDUR.

  • [H-3-1] Varsayılan ekran FHD'ye kadar (ör. WSXGA+) kare arabellek çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 896 MB ZORUNLUDUR.

  • [H-4-1] Varsayılan ekran QHD'ye kadar (ör.QWXGA) kare arabellek çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 1. 344 MB OLMALIDIR.

Avuç içi cihaz uygulamaları, 32 bit ve 64 bit ABI'leri desteklediğini belirtiyorsa:

  • [H-5-1] Varsayılan ekran qHD'ye kadar (ör. FWVGA) çerçeve arabelleği çözünürlüklerini kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 816 MB OLMALIDIR.

  • [H-6-1] Varsayılan ekran HD+ çözünürlüğe kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlüklerini kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 944 MB OLMALIDIR.

  • [H-7-1] Varsayılan ekran FHD'ye kadar (ör.WSXGA+) kare arabellek çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 1. 280 MB ZORUNLUDUR.

  • [H-8-1] Varsayılan ekran QHD'ye kadar (ör.QWXGA) kare arabellek çözünürlükleri kullanıyorsa çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek en az 1. 824 MB ZORUNLUDUR.

Yukarıdaki "çekirdek ve kullanıcı alanı tarafından kullanılabilen bellek"; radyo, video vb. gibi donanım bileşenlerine halihazırda ayrılmış olan ve cihaz uygulamalarında çekirdeğin kontrolünde olmayan belleğe ek olarak sağlanan bellek alanını ifade eder.

Avuç içi cihaz uygulamaları, çekirdek ve kullanıcı alanı için kullanılabilir durumda 1 GB'tan az veya 1 GB'a eşit bellek içeriyorsa:

  • [H-9-1], özellik bayrağının android.hardware.ram.low belirtildiğini ZORUNLUDUR.
  • [H-9-2] Uygulama özel verileri için en az 1,1 GB kalıcı depolama alanının ("/veri" bölümü olarak da bilinir) OLMALIDIR.

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

  • [H-10-1] Uygulama özel verileri için en az 4 GB kalıcı depolama alanının ("/veri" bölümü olarak da bilinir) kullanılabilmesi gerekir.
  • Özellik bayrağını android.hardware.ram.normal BELİRTMELİDİR.

Uygulama Paylaşılan Depolama Alanı (Bölüm 7.6.2)

Avuç içi cihaz uygulamaları:

  • [H-0-1] 1 GiB'tan küçük bir uygulama paylaşılan depolama alanı SAĞLAMAMALIDIR.

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

Avuç içi cihaz uygulamaları:

  • Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.

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

  • [H-1-1], Android Open Accessory (AOA) API'sinin uygulanması ZORUNLUDUR.*

Mikrofon (Bölüm 7.8.1)

Avuç içi cihaz uygulamaları:

  • [H-0-1] Mikrofon İÇERMELİDİR.

Ses Çıkışı (Bölüm 7.8.2)

Avuç içi cihaz uygulamaları:

  • [H-0-1] bir ses çıkışının olması ve android.hardware.audio.output olarak belirtilmesi ZORUNLUDUR.

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

Avuç içi cihaz uygulamaları, VR modu desteği içeriyorsa:

  • [H-1-1] android.software.vr.mode özelliğinin beyan edilmesi ZORUNLUDUR.*

Cihaz uygulamaları android.software.vr.mode özelliği beyan ederse:

  • [H-2-1] android.app.Activity#setVrModeEnabled aracılığıyla VR uygulamaları tarafından etkinleştirilebilen, android.service.vr.VrListenerService uygulayan bir uygulamanın bulunması ZORUNLUDUR.*

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

Avuç içi cihaz uygulamaları, android.hardware.vr.high_performance özellik işaretini beyan etmek için gereken tüm şartları karşılayabiliyorsa:

  • [H-1-1], android.hardware.vr.high_performance özellik bayrağını beyan etmelidir.*

2.2.2. Multimedya

Ses Kodlaması (Bölüm 5.1.1)

Avuç içi cihaz uygulamalarının aşağıdaki ses kodlamasını DESTEKLEMELİDİR:

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

Ses Kodu Çözme (Bölüm 5.1.2)

Avuç içi cihaz uygulamalarının aşağıdaki ses kodu çözmeyi desteklemesi ZORUNLUDUR:

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

Video Kodlama (Bölüm 5.2)

Avuç içi cihaz uygulamalarının aşağıdaki video kodlamasını desteklemesi ve üçüncü taraf uygulamalarının kullanımına sunması ZORUNLUDUR:

  • [H-0-1] H.264 AVC
  • [H-0-2] VK8

Videoda Kod Çözme (Bölüm 5.3)

Avuç içi cihaz uygulamalarının aşağıdaki video kod çözme özelliğini desteklemesi ZORUNLUDUR:

  • [H-0-1] H.264 AVC.
  • [H-0-2] H.265 HEVC.
  • [H-0-3] MPEG-4 SP.
  • [H-0-4] VK8.
  • [H-0-5] VK9.

2.2.3. Yazılım

Web Görünümü Uyumluluğu (Bölüm 3.4.1)

Avuç içi cihaz uygulamaları:

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

Tarayıcı Uyumluluğu (Bölüm 3.4.2)

Avuç içi cihaz uygulamaları:

  • [H-0-1] Genel kullanıcının web'e göz atması için bağımsız bir Tarayıcı uygulaması ZORUNLUDUR.

Başlatıcı (Bölüm 3.8.1)

Avuç içi cihaz uygulamaları:

  • [H-SR] Kısayolların ve widget'ların uygulama içinde sabitlenmesini destekleyen varsayılan bir başlatıcı uygulamanız ÖNERİLİR.

  • [H-SR] Üçüncü taraf uygulamaların Kısayol Yöneticisi API'si üzerinden sağladığı ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcının uygulanması ÖNEMLE ÖNERİLİR.

  • [H-SR] Uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması eklemeniz ÖNEMLE ÖNERİLİR.

Widget'lar (Bölüm 3.8.2)

Avuç içi cihaz uygulamaları:

  • [H-SR] Üçüncü taraf uygulama widget'larını desteklemesi için ÖNEMLE ÖNERİLİR.

Bildirimler (Bölüm 3.8.3)

Avuç içi cihaz uygulamaları:

  • [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.
  • [H-0-2] Zengin bildirimleri DESTEKLEMELİDİR.
  • [H-0-3] uyarı bildirimlerini DESTEKLEMELİDİR.
  • [H-0-4] Kullanıcının, AOSP'de uygulandığı şekilde, kullanıcının sağladığı işlem düğmeleri veya kontrol paneli aracılığıyla bildirimleri doğrudan kontrol edebilmesini (ör. yanıtlama, erteleme, kapatma, engelleme) sağlayan bir bildirim gölgesi içermesi ZORUNLUDUR.

Arama (Bölüm 3.8.4)

Avuç içi cihaz uygulamaları:

  • [H-SR] Destek işlemini gerçekleştirmek üzere cihaza bir asistanın uygulanması ÖNEMLE ÖNERİLİR.

Kilit Ekranı Medya Kontrolü (Bölüm 3.8.10)

Android Avuç içi cihaz uygulamaları kilit ekranını destekliyorsa:

  • [H-1-1] Medya Bildirim Şablonu da dahil olmak üzere Kilit ekranı Bildirimleri'nin görüntülenmesi ZORUNLUDUR.

Cihaz yönetimi (Bölüm 3.9)

Avuç içi cihaz uygulamaları, güvenli kilit ekranını destekliyorsa:

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

Erişilebilirlik (Bölüm 3.10)

Avuç içi cihaz uygulamaları:

  • [H-SR] üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.

  • [H-SR] TalkBack açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevlerine benzer veya bunları aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ÖNERİLİR.

Metin Okuma (Bölüm 3.11)

Avuç içi cihaz uygulamaları:

  • [H-0-1], üçüncü taraf TTS motorlarının yüklenmesini DESTEKLEMELİDİR.

  • [H-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermesi ÖNEMLE ÖNERİLİR.

Hızlı Ayarlar (Bölüm 3.13)

Avuç içi cihaz uygulamaları:

  • [H-SR] Hızlı Ayarlar kullanıcı arayüzü bileşeni içermesi ÖNEMLE ÖNERİLİR.

Tamamlayıcı Cihaz Eşleme (Bölüm 3.15)

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

  • [H-1-1], tamamlayıcı cihaz eşleme özelliğini DESTEKLEMELİDİR.

2.2.4. Performans ve Güç

Kullanıcı Deneyiminde Tutarlılık (Bölüm 8.1)

Avuç içi cihazları için:

  • [H-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALIDIR ve saniyede 1 karenin altında OLMALIDIR.
  • [H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları, Android Uyumluluk Test Paketi (CTS) tarafından 36 saniyeden kısa bir süre içinde tanımlandığı şekilde 10.000 liste girişinden oluşan bir listeyi kaydırarak düşük gecikmeli kullanıcı deneyimi sunmalıdır.
  • [H-0-3] Görev değiştirme. Birden fazla uygulama kullanıma sunulduğunda, zaten çalışan bir uygulamayı başlatıldıktan sonra yeniden başlatmak 1 saniyeden kısa sürer.

Dosya G/Ç Erişim Performansı (Bölüm 8.2)

Avuç içi cihaz uygulamaları:

  • [H-0-1] En az 5 MB/sn'lik sıralı yazma performansı sağlaması ZORUNLUDUR.
  • [H-0-2] En az 0,5 MB/sn'lik rastgele bir yazma performansı ZORUNLUDUR.
  • [H-0-3] En az 15 MB/sn'lik sıralı okuma performansı sağlaması ZORUNLUDUR.
  • [H-0-4] En az 3,5 MB/sn'lik rastgele bir okuma performansı sağlaması ZORUNLUDUR.

Güç Tasarrufu Modları (Bölüm 8.3)

Avuç içi cihazları için:

  • [H-0-1] Uygulama Bekletme ve Doz güç tasarrufu modlarından muaf tutulan tüm Uygulamalar, son kullanıcı tarafından görünür OLMALIDIR.
  • [H-0-2] Uygulama Bekletme ve Doz güç tasarrufu modlarının tetikleme, bakım, uyandırma algoritmaları ve genel sistem ayarlarının kullanımı, Android Açık Kaynak Projesi'nden farklı OLMAMALIDIR.

Güç Tüketimi Muhasebesi (Bölüm 8.4)

Avuç içi cihaz uygulamaları:

  • [H-0-1] Android Açık Kaynak Projesi sitesinde belirtildiği üzere, her donanım bileşeninin mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili SAĞLANMALIDIR.
  • [H-0-2] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden bildirmelidir.
  • [H-0-3] Her işlemin UID'si başına CPU güç tüketimini rapor etmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülünün uygulanması aracılığıyla bu gereksinimi karşılar.
  • [H-0-4] Bu güç kullanımının uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla kullanılabilmesi ZORUNLUDUR.
  • Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemezse, donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.

Avuç içi cihaz uygulamaları ekran veya video çıkışı içeriyorsa:

2.2.5. Güvenlik Modeli

İzinler (Bölüm 9.1)

Avuç içi cihaz uygulamaları:

  • [H-0-1] Üçüncü taraf uygulamalarının, android.permission.PACKAGE_USAGE_STATS izni aracılığıyla kullanım istatistiklerine erişmesine İZİN VERMELİ ve android.settings.ACTION_USAGE_ACCESS_SETTINGS amacına karşılık 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.

2.3. Televizyon Gereksinimleri

Android Televizyon cihazı yaklaşık üç metre uzakta oturan kullanıcılar için dijital medya, film, oyun, uygulama ve/veya canlı TV ("3 metrelik kullanıcı arayüzü") tüketimine yönelik bir eğlence arayüzü olan Android cihaz uygulamasını ifade eder.

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

  • Ekranda oluşturulan kullanıcı arayüzünü, kullanıcıdan on metre uzakta durabilecek şekilde uzaktan kontrol etmek için bir mekanizma sağlamıştır.
  • Çapraz olarak 24 inçten daha büyük yerleşik bir ekran görüntüsüne sahip olun VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası veya ekran için kablosuz bağlantı noktası ekleyin.

Bu bölümün geri kalanındaki ek şartlar, Android Televizyon cihazı uygulamalarına özgüdür.

2.3.1. Donanım

Dokunmatik Olmayan Gezinme (Bölüm 7.2.2)

Televizyon cihazı uygulamaları:

  • [T-0-1] D-pad'i DESTEKLEMELİDİR.

Gezinme Tuşları (Bölüm 7.2.3)

Televizyon cihazı uygulamaları:

  • [T-0-1] Ana Ekran ve Geri işlevlerini SAĞLAMALIDIR.
  • [T-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliğini ön plan uygulamasına GÖNDERMELİDİR.

Düğme Eşlemeleri (Bölüm 7.2.6.1)

Televizyon cihazı uygulamaları:

  • [T-0-1] Oyun kumandaları için destek içermeli ve android.hardware.gamepad özellik bayrağını beyan etmelidir.

Uzaktan Kumanda (Bölüm 7.2.7)

Televizyon cihazı uygulamaları:

Jiroskop (Bölüm 7.3.4)

Televizyon cihazı uygulamalarında jiroskop varsa:

  • [T-1-1] en az 100 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.

Bluetooth (Bölüm 7.4.3)

Televizyon cihazı uygulamaları:

  • [T-0-1] Bluetooth ve Bluetooth LE'yi desteklemektedir.

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

Televizyon cihazı uygulamaları:

  • [T-0-1] Uygulama özel verileri için en az 4 GB kalıcı depolama alanının ("/veri" bölümü olarak da bilinir) kullanılabilmesi gerekir.
  • [T-0-2], çekirdekte ve kullanıcı alanında kullanılabilir bellek 1 GB'tan az olduğunda ActivityManager.isLowRamDevice() için "true" (doğru) değerini döndürmelidir.

Mikrofon (Bölüm 7.8.1)

Televizyon cihazı uygulamaları:

  • Mikrofon İÇERMELİDİR.

Ses Çıkışı (Bölüm 7.8.2)

Televizyon cihazı uygulamaları:

  • [T-0-1] ses çıkışının olması ve android.hardware.audio.output olarak belirtilmesi ZORUNLUDUR.

2.3.2. Multimedya

Ses Kodlaması (Bölüm 5.1)

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

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

Video Kodlama (Bölüm 5.2)

Televizyon cihazı uygulamalarının aşağıdaki video kodlamasını DESTEKLEMELİDİR:

  • [T-0-1] H.264 AVC
  • [T-0-2] VK8

H-264 (Bölüm 5.2.2)

Televizyon cihazı uygulamaları şunlardır:

  • [T-SR] 720p ve 1080p çözünürlüklü videoların H.264 kodlamasını desteklemesi Şiddetle ÖNERİLİR.
  • [T-SR] Saniyede 30 kare (fps) hızda 1080p çözünürlüklü videonun H.264 kodlamasını desteklemesi Şiddetle ÖNERİLİR.

Videoda Kod Çözme (Bölüm 5.3)

Televizyon cihazı uygulamalarının aşağıdaki video kodu çözme işlemini desteklemesi ZORUNLUDUR:

  • [T-0-1] H.264 AVC
  • [T-0-2] H.265 HEVC
  • [T-0-3] MPEG-4 SP
  • [T-0-4] VK8
  • [T-0-5] VK9

Televizyon cihazı uygulamalarının aşağıdaki video kod çözme işlemini desteklemesi için ÖNEMLE ÖNERİLİR:

  • [T-SR] MPEG-2

H.264 (Bölüm 5.3.4)

Televizyon cihazı uygulamaları, H.264 kod çözücülerini destekliyorsa:

  • [T-1-1], Yüksek Profil Düzeyi 4.2 ve HD 1080p (60 fps'de) kod çözme profilini desteklemelidir.
  • [T-1-2] Aşağıdaki tabloda belirtildiği gibi her iki HD profiliyle videoların kodunu çözebilmeli ve Temel Profil, Ana Profil veya Yüksek Profil Düzeyi 4.2 ile kodlanmalıdır.

H.265 (HEVC) (Bölüm 5.3.5)

Televizyon cihazı uygulamaları, H.265 codec'i ve HD 1080p kod çözme profilini destekliyorsa:

  • [T-1-1] Ana Profil Düzeyi 4.1 Ana katmanını DESTEKLEMELİDİR.
  • [T-SR] HD 1080p için 60 fps video kare hızını desteklemeleri ÖNEMLE ÖNERİLİR.

Televizyon cihazı uygulamaları, H.265 codec'i ve UHD kod çözme profilini destekliyorsa:

  • [T-2-1] codec'in Main10 Seviye 5 Ana Katman profilini desteklemesi GEREKİR.

VP8 (Bölüm 5.3.6)

Televizyon cihazı uygulamaları VP8 codec'i destekliyorsa:

  • [T-1-1] HD 1080p60 kod çözme profilini DESTEKLEMELİDİR.

Televizyon cihazı uygulamaları VP8 codec'i ve 720p'yi destekliyorsa:

  • [T-2-1] HD 720p60 kod çözme profilini DESTEKLEMELİDİR.

VP9 (Bölüm 5.3.7)

Televizyon cihazı uygulamaları VP9 codec'i ve UHD video kod çözmeyi destekliyorsa:

  • [T-1-1], 8 bit renk derinliğini DESTEKLEMELİ ve VP9 Profile 2'yi (10 bit) DESTEKLEMELİDİR.

Televizyon cihazı uygulamaları VP9 codec'i, 1080p profili ve VP9 donanım kod çözmeyi destekliyorsa:

  • [T-2-1] 1080p için 60 fps'yi desteklemektedir.

Secure Media (Bölüm 5.8)

Cihaz uygulamaları Android Televizyon cihazlarıysa ve 4K çözünürlüğü destekliyorsa, bu cihazlar:

  • [T-1-1] tüm kablolu harici ekranlarda HDCP 2.2'yi DESTEKLEMELİDİR.

Televizyon cihazı uygulamaları 4K çözünürlüğü desteklemiyorsa:

  • [T-2-1] tüm kablolu harici ekranlarda HDCP 1.4'ü DESTEKLEMELİDİR.

Televizyon cihazı uygulamaları:

  • [T-SR] Güvenli akışların kodunu eş zamanlı olarak çözmeyi desteklemeleri için ÖNEMLE ÖNERİLİR. En azından iki buharın eş zamanlı olarak kod çözme işlemi ÖNEMLE ÖNERİLİR.

Ses Çıkışı Ses Seviyesi (Bölüm 5.5.3)

Televizyon cihazı uygulamaları:

  • [T-0-1] Sıkıştırılmış ses geçişi çıkışı (cihazda herhangi bir ses kodu çözme işlemi yapılmaz) hariç, desteklenen çıkışlarda sistem Ana Ses Seviyesi ve dijital ses çıkışı sesi azaltma desteği İÇERMELİDİR.

2.3.3. Yazılım

Televizyon cihazı uygulamaları:

Web Görünümü uyumluluğu (Bölüm 3.4.1)

Televizyon cihazı uygulamaları:

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

Kilit Ekranı Medya Kontrolü (Bölüm 3.8.10)

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

  • [T-1-1], Medya Bildirim Şablonu da dahil olmak üzere Kilit ekranı Bildirimleri'ni görüntülemelidir.

Çoklu pencere (Bölüm 3.8.14)

Televizyon cihazı uygulamaları:

  • [T-SR] Pencere içinde pencere (PIP) modunun çoklu pencere özelliğinin desteklenmesi için ÖNEMLE ÖNERİLİR.

Erişilebilirlik (Bölüm 3.10)

Televizyon cihazı uygulamaları:

  • [T-SR] üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.

  • [T-SR] Android Televizyon cihaz uygulamalarının, TalkBack açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş Metin Okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerine benzer veya bunları aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ÖNEMLE ÖNERİLİR.

Metin Okuma (Bölüm 3.11)

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

  • [T-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermesi ÖNEMLE ÖNERİLİR.

  • [T-0-1], üçüncü taraf TTS motorlarının yüklenmesini DESTEKLEMELİDİR.

TV Giriş Çerçevesi (Bölüm 3.12)

Televizyon cihazı uygulamaları:

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

2.2.4. Performans ve Güç

Kullanıcı Deneyiminde Tutarlılık (Bölüm 8.1)

Televizyon cihazı uygulamaları için:

  • [T-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALIDIR ve saniyede 1 karenin altında OLMALIDIR.

Dosya G/Ç Erişim Performansı (Bölüm 8.2)

Televizyon cihazı uygulamaları:

  • [T-0-1] En az 5 MB/sn'lik sıralı yazma performansı ZORUNLUDUR.
  • [T-0-2] En az 0,5 MB/sn'lik rastgele bir yazma performansı ZORUNLUDUR.
  • [T-0-3] En az 15 MB/sn'lik sıralı okuma performansı ZORUNLUDUR.
  • [T-0-4] En az 3,5 MB/sn'lik rastgele bir okuma performansı ZORUNLUDUR.

Güç Tasarrufu Modları (Bölüm 8.3)

Televizyon cihazı uygulamaları için:

  • [T-0-1] Uygulama Bekletme ve Doz güç tasarrufu modlarından muaf tutulan tüm Uygulamalar, son kullanıcı tarafından görünür OLMALIDIR.
  • [T-0-2] Uygulama Bekletme ve Doz güç tasarrufu modlarının tetikleme, bakım, uyandırma algoritmaları ve genel sistem ayarlarının kullanımı, Android Açık Kaynak Projesi'nden farklı OLMAMALIDIR.

Güç Tüketimi Muhasebesi (Bölüm 8.4)

Televizyon cihazı uygulamaları:

  • [T-0-1] Android Açık Kaynak Proje sitesinde belirtildiği üzere, her donanım bileşeninin mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili SAĞLANMALIDIR.
  • [T-0-2], tüm güç tüketimi değerlerini milamper saat (mAh) cinsinden bildirmelidir.
  • [T-0-3] Her işlemin UID'si başına CPU güç tüketimini rapor etmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülünün uygulanması aracılığıyla bu gereksinimi karşılar.
  • Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemezse, donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.
  • [T-0-4] Bu güç kullanımının uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla kullanılabilmesi ZORUNLUDUR.

2.4. İzleme Koşulları

Android Watch cihaz, vücuda (örneğin bileğe) takılmak üzere tasarlanmış Android cihaz uygulamasını ifade eder.

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

  • Fiziksel köşegen uzunluğu 1,1 ila 2,5 inç arasında olan bir ekrana sahip olmalıdır.
  • Vücuda takılmak ü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

Ekran Boyutu (Bölüm 7.1.1.1)

Cihaz uygulamalarını izleyin:

  • [W-0-1], fiziksel köşegen boyutu 1,1 ile 2,5 inç arasında olan bir ekrana sahip olmalıdır.

Gezinme Tuşları (Bölüm 7.2.3)

Cihaz uygulamalarını izleyin:

  • [W-0-1] UI_MODE_TYPE_WATCH içinde olması haricinde Ana Sayfa işlevinin ve Geri işlevinin kullanıcının kullanımına sahip olması ZORUNLUDUR.

Dokunmatik Ekranla Giriş (Bölüm 7.2.4)

Cihaz uygulamalarını izleyin:

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

İvme ölçer (Bölüm 7.3.1)

Cihaz uygulamalarını izleyin:

  • [W-SR] 3 eksenli ivme ölçer içermesi ÖNEMLE ÖNERİLİR.

Bluetooth (Bölüm 7.4.3)

Cihaz uygulamalarını izleyin:

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

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

Cihaz uygulamalarını izleyin:

  • [W-0-1] Uygulama özel verileri için en az 1 GB kalıcı depolama alanının (diğer adıyla "/veri" bölümü) olması ZORUNLUDUR
  • [W-0-2] Çekirdek ve kullanıcı alanında en az 416 MB kullanılabilir bellek OLMALIDIR.

Mikrofon (Bölüm 7.8.1)

Cihaz uygulamalarını izleyin:

  • [W-0-1] Mikrofon İÇERMELİDİR.

Ses Çıkışı (Bölüm 7.8.1)

Cihaz uygulamalarını izleyin:

  • OLABİLİR, ancak ses çıkışı KULLANILMAMALIDIR.

2.4.2. Multimedya

Ek şart yoktur.

2.4.3. Yazılım

Cihaz uygulamalarını izleyin:

  • [W-0-1], android.hardware.type.watch özelliğinin bildirilmesi ZORUNLUDUR.
  • [W-0-2] uiMode = UI_MODE_TYPE_Watch özelliğini DESTEKLEMELİDİR.

Arama (Bölüm 3.8.4)

Cihaz uygulamalarını izleyin:

  • [W-SR] Destek işlemini gerçekleştirmek üzere cihaza bir asistanın uygulanması ÖNEMLE ÖNERİLİR.

Erişilebilirlik (Bölüm 3.10)

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

  • [W-1-1] üçüncü taraf erişilebilirlik hizmetlerini DESTEKLEMELİDİR.

  • [W-SR] TalkBack açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş Metin Okuma motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevlerine benzer veya bunları aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ÖNERİLİR.

Metin Okuma (Bölüm 3.11)

Saat cihazı uygulamaları, android.hardware.audio.Exit özelliğini bildiriyorsa:

  • [W-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermesi ÖNEMLE ÖNERİLİR.

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

2.5. Otomotiv Gereksinimleri

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

android.hardware.type.automotive özelliğini tanımlayan veya aşağıdaki tüm ölçütleri karşılayan Android cihaz uygulamaları Otomotiv olarak sınıflandırılır.

  • Bir otomotiv aracının parçası olarak yerleştirilmiş veya takılabilir.
  • Sürücü koltuğu sırasında birincil ekran olarak bir ekran kullanıyorsanız.

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

2.5.1. Donanım

Ekran Boyutu (Bölüm 7.1.1.1)

Otomotiv cihaz uygulamaları:

  • [A-0-1] Köşeden köşeye çapraz olarak en az 6 inç boyutunda bir ekran OLMALIDIR.
  • [A-0-2] Ekran boyutu düzeni en az 750 dp x 480 dp olmalıdır.

Gezinme Tuşları (Bölüm 7.2.3)

Otomotiv cihaz uygulamaları:

  • [A-0-1] Ana Ekran işlevini SAĞLAMALIDIR ve Geri ve Son işlevlerini sağlayabilir.
  • [A-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliğini ön plan uygulamasına GÖNDERMELİDİR.

İvme ölçer (Bölüm 7.3.1)

Otomotiv cihaz uygulamaları:

  • [A-SR] 3 eksenli ivme ölçer içermesi ÖNEMLE ÖNERİLİR.

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

GPS (Bölüm 7.3.3)

Otomotiv cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve yeteneği uygulamalara android.hardware.location.gps özellik bayrağı aracılığıyla bildiriyorsa:

  • [A-1-1] GNSS teknolojisi neslinin "2017" veya daha yeni bir yıl olması ZORUNLUDUR.

Jiroskop (Bölüm 7.3.4)

Otomotiv cihaz uygulamalarında jiroskop varsa:

  • [A-1-1] en az 100 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.

Yalnızca Android Automotive sensörleri (Bölüm 7.3.11) Current Gear (Bölüm 7.3.11.1)

Otomotiv cihaz uygulamaları:

  • Mevcut ekipman SENSOR_TYPE_GEAR olarak SAĞLANMALIDIR.

Gündüz Gece Modu (Bölüm 7.3.11.2)

Otomotiv cihaz uygulamaları:

  • [A-0-1], SENSOR_TYPE_NIGHT olarak tanımlanan gündüz/gece modunu DESTEKLEMELİDİR.
  • [A-0-2] SENSOR_TYPE_NIGHT işareti değerinin, kontrol panelindeki gündüz/gece moduyla tutarlı olması ve ortam ışığı sensörü girişine dayalı olması ZORUNLUDUR.
  • Temel ortam ışığı sensörü, Fotometre ile aynı OLABİLİR.

Sürüş Durumu (Bölüm 7.3.11.3)

Otomotiv cihaz uygulamaları:

  • [A-0-1], araç tamamen durup park edildiğinde varsayılan değer olan DRIVE_STATUS_UNRESTRICTED olan SENSOR_TYPE_DRIVING_STATUS olarak tanımlanan sürüş durumunu DESTEKLEMELİDİR. SENSOR_TYPE_DRIVING_STATUS hizmetinin, ürünün gönderildiği pazarlar için geçerli olan tüm yasa ve yönetmeliklere uygun şekilde yapılandırılması cihaz üreticilerinin sorumluluğundadır.

Tekerlek Hızı (Bölüm 7.3.11.4)

Otomotiv cihaz uygulamaları:

  • [A-0-1] SENSOR_TYPE_CAR_SPEED olarak tanımlanan araç hızını SAĞLAMALIDIR.

Bluetooth (Bölüm 7.4.3)

Otomotiv cihaz uygulamaları:

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

  • [A-0-2] Android Automotive uygulamalarının aşağıdaki Bluetooth profillerini desteklemesi ZORUNLUDUR:

    • Eller Serbest Profili (HFP) üzerinden telefon araması.
    • Ses Dağıtım Profili (A2DP) üzerinden medya oynatma.
    • Uzaktan Kumanda Profili (AVRCP) üzerinden medya oynatma kontrolü.
    • Telefon Rehberi Erişim Profili'ni (PBAP) kullanarak kişi paylaşma.
  • İleti Erişimi Profili (MAP) DESTEKLENMELİDİR.

Minimum Ağ Yeteneği (Bölüm 7.4.5)

Otomotiv cihaz uygulamaları:

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

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

Otomotiv cihaz uygulamaları:

  • [A-0-1] Uygulama özel verileri için en az 4 GB kalıcı depolama alanının ("/veri" bölümü olarak da bilinir) kullanılabilmesi gerekir.

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

Otomotiv cihaz uygulamaları:

  • Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.

Mikrofon (Bölüm 7.8.1)

Otomotiv cihaz uygulamaları:

  • [A-0-1] Mikrofon İÇERMELİDİR.

Ses Çıkışı (Bölüm 7.8.2)

Otomotiv cihaz uygulamaları:

  • [A-0-1] bir ses çıkışının olması ve android.hardware.audio.output olarak belirtilmesi ZORUNLUDUR.

2.5.2. Multimedya

Ses Kodlaması (Bölüm 5.1)

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

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

Video Kodlama (Bölüm 5.2)

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

  • [A-0-1] H.264 AVC
  • [A-0-2] VK8

Videoda Kod Çözme (Bölüm 5.3)

Otomotiv cihaz uygulamalarının aşağıdaki video kod çözme özelliğini desteklemesi ZORUNLUDUR:

  • [A-0-1] H.264 AVC
  • [A-0-2] MPEG-4 SP
  • [A-0-3] VK8
  • [A-0-4] VK9

Otomotiv cihaz uygulamalarının aşağıdaki video kodu çözmeyi desteklemesi için ÖNEMLE ÖNERİLİR:

  • [A-SR] H.265 HEVC

2.5.3. Yazılım

Otomotiv cihaz uygulamaları:

  • [A-0-1] android.hardware.type.automotive özelliğinin beyan edilmesi ZORUNLUDUR.
  • [A-0-2] uiMode = UI_MODE_TYPE_CAR değerini DESTEKLEMELİDİR.
  • [A-0-3] Android Automotive uygulamalarının android.car.* ad alanındaki tüm herkese açık API'leri desteklemesi ZORUNLUDUR.

Web Görünümü Uyumluluğu (Bölüm 3.4.1)

Otomotiv cihaz uygulamaları:

  • [A-0-1], android.webkit.Webview API öğesinin eksiksiz bir şekilde uygulanmasını GEREKTİRMELİDİR.

Bildirimler (Bölüm 3.8.3)

Android Automotive cihaz uygulamaları:

  • [A-0-1] Üçüncü taraf uygulamalar tarafından istendiğinde Notification.CarExtender API'yi kullanan bildirimler GÖRÜNTÜLEMELİDİR.

Arama (Bölüm 3.8.4)

Otomotiv cihaz uygulamaları:

  • [A-0-1] Destek işlemini gerçekleştirmek için cihaza bir asistanın uygulanması ZORUNLUDUR.

Medya Kullanıcı Arayüzü (Bölüm 3.14)

Otomotiv cihaz uygulamaları:

  • [A-0-1] Bölüm 3.14'te açıklandığı şekilde, medya API'lerini kullanan üçüncü taraf uygulamalarını desteklemek üzere bir kullanıcı arayüzü çerçevesi İÇERMELİDİR.

2.2.4. Performans ve Güç

Güç Tasarrufu Modları (Bölüm 8.3)

Otomotiv cihaz uygulamaları için:

  • [A-0-1] Uygulama Bekletme ve Doz güç tasarrufu modlarından muaf tutulan tüm Uygulamalar, son kullanıcı tarafından görünür OLMALIDIR.
  • [A-0-2] Uygulama Bekletme ve Doz güç tasarrufu modlarının tetikleme, bakım, uyandırma algoritmaları ve genel sistem ayarlarının kullanımı, Android Açık Kaynak Projesi'nden farklı OLMAMALIDIR.

Güç Tüketimi Muhasebesi (Bölüm 8.4)

Otomotiv cihaz uygulamaları:

  • [A-0-1] Android Açık Kaynak Proje sitesinde belirtildiği gibi, her donanım bileşeninin mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili SAĞLANMALIDIR.
  • [A-0-2] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden Bildirin.
  • [A-0-3] Her işlemin UID'si başına CPU güç tüketimini rapor etmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülünün uygulanması aracılığıyla bu gereksinimi karşılar.
  • Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemezse, donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.
  • [A-0-4] Bu güç kullanımının uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla kullanılabilmesi ZORUNLUDUR.

2.2.5. Güvenlik Modeli

Çok Kullanıcılı Destek (Bölüm 9.5)

Otomotiv cihaz uygulamalarında birden fazla kullanıcı varsa:

  • [A-1-1] Araç sisteminin sağladığı tüm işlevlere kullanıcının giriş yapmasına gerek kalmadan bir misafir hesabı içermesi ZORUNLUDUR.

Otomotiv Araç Sistemi Yalıtımı (Bölüm 9.14)

Otomotiv cihaz uygulamaları:

  • [A-0-1] Android çerçevesi araç alt sistemlerinden gelen gizli mesajlar (ör. izin verilen mesaj türlerinin ve mesaj kaynaklarının izin verilenler listesine eklenmesi) ZORUNLUDUR.
  • [A-0-2] Android çerçevesinden veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı güvenlik zamanlayıcısı GEREKMELİDİR. Bu, araç ağını trafikle boğarak araç alt sistemlerinin arızalanmasına neden olabilecek kötü amaçlı yazılımlara karşı koruma sağlar.

2.6. Tablet Gereksinimleri

Android Tablet cihaz, genellikle kapaklı bir form faktöründe değil, iki elin üzerinde tutularak kullanılan Android cihaz uygulamasını belirtir.

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

  • Pil gibi hareketlilik sağlayan bir güç kaynağına sahip olmalısınız.
  • Çapraz olarak 7-18 inç arasında fiziksel bir ekran boyutuna sahip olmalıdır.

Tablet cihaz uygulamalarının, avuç içi cihaz uygulamalarına benzer gereksinimleri vardır. İstisnalar söz konusu bölümde ve * ile belirtilmiştir ve bu bölümde referans olarak belirtilmiştir.

2.4.1. Donanım

Ekran Boyutu (Bölüm 7.1.1.1)

Tablet cihaz uygulamaları:

  • [Ta-0-1] 7 - 18 inç aralığında bir ekran olması ZORUNLUDUR.

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

Avuç içi gereksinimlerinde küçük/normal ekranlar için belirtilen ekran yoğunlukları tabletler için geçerli değildir.

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

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

  • Android Open Accessory (AOA) API'yi KULLANABİLİRSİNİZ.

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

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

Sanal gerçeklik gereksinimleri 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ının birincil aracıdır. Android Uygulama Programlama Arayüzü (API), yönetilen çalışma zamanı ortamında çalışan uygulamalara sunulan Android platformu arayüzleridir.

  • [C-0-1] Cihaz uygulamalarının, Android SDK tarafından kullanıma sunulan belgelenmiş tüm API'lerin veya yayın öncesi Android kaynak kodunda "@SystemApi" işaretçisiyle dekore edilmiş herhangi bir API'nin, belgelenen tüm davranışlar da dahil olmak üzere eksiksiz uygulamaları GEREKİR.

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

  • [C-0-3] Bu Uyumluluk Tanımı'nda özel olarak izin verilen durumlar haricinde cihaz uygulamalarında yönetilen API'ler ATLANMAMALIDIR, API arayüzlerini veya imzalarını değiştirmemeli, belirtilen davranışın dışına çıkmamalı ve işlem yapmama imkanı GEREKMEMELİDİR.

  • [C-0-4] Android'in API'leri içerdiği bazı donanım özellikleri çıkarılsa bile cihaz uygulamalarının API'lerin mevcut kalmasını ve makul bir şekilde davranmasını ZORUNLUDUR. Bu senaryoya ilişkin özel şartlar için 7. bölüme bakın.

3.1.1. Android Uzantıları

Android, aynı API düzeyinde sürümü korurken yönetilen API'leri genişletme desteği sunar.

  • [C-0-1] Android cihaz uygulamalarının, hem ExtShared paylaşılan kitaplığının hem de ExtServices hizmetlerinin AOSP uygulamasının önceden yüklenmesi ZORUNLUDUR. Bu uygulamaların sürümleri, her API düzeyi başına izin verilen minimum sürümden daha yüksek veya bu sürüme eşittir. Örneğin, API düzeyi 24 çalıştıran Android 7.0 cihaz uygulamalarının en az sürüm 1'i içermesi ZORUNLUDUR.

3.2. Esnek API Uyumluluğu

Android, bölüm 3.1'deki yönetilen API'lere ek olarak, Android uygulamalarının uygulama derleme zamanında zorunlu kılınamayan niyetler, izinler ve benzer yönleri gibi çalışma zamanına özel önemli bir "soft" API'yi de içerir.

3.2.1. İzinler

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

3.2.2. Derleme Parametreleri

Android API'leri, android.os.Build sınıfında geçerli cihazı tanımlamak için kullanılan bazı sabit değerler içerir.

  • [C-0-1] Cihaz uygulamaları genelinde tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının uyması gereken bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre Ayrıntılar
SÜRÜM.YAYIN Yürütülen Android sisteminin, okunabilir biçimdeki sürümü. Bu alanda 8.1'de tanımlanan dize değerlerinden biri OLMALIDIR.
VERSION.SDK Şu anda yürütülen Android sisteminin, üçüncü taraf uygulama kodunun erişebileceği bir biçimdeki sürümü. Android 8.1 için bu alanda 8.1_INT tam sayı değerinin olması ZORUNLUDUR.
VERSION.SDK_INT Şu anda yürütülen Android sisteminin, üçüncü taraf uygulama kodunun erişebileceği bir biçimdeki sürümü. Android 8.1 için bu alanda 8.1_INT tam sayı değerinin olması ZORUNLUDUR.
SÜRÜM.EK Cihaz uygulayıcısı tarafından seçilen ve o anda yürütülen Android sisteminin özel derlemesini insan tarafından okunabilir biçimde tanımlayan bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak kontrolü değişiklik tanımlayıcısının kullanıldığını belirtmektir. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur.
MASA Cihaz uygulayıcısı tarafından seçilen, cihaz tarafından kullanılan belirli dahili donanımı tanımlayan, kullanıcıların okuyabileceği bir değer. Bu alanın olası bir kullanımı, cihaza güç veren kartın özel düzeltmesini belirtmektir. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR.
MARKA Cihazla ilişkilendirilmiş ve son kullanıcılar tarafından bilinen marka adını yansıtan bir değerdir. İnsanlar tarafından okunabilir bir biçimde olmalı ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını temsil ETMELİDİR. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR.
DESTEKLENMİŞ_ABIS Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu.
SUPPORTED_32_BİT_ABIS Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu.
SUPPORTED_64_BİT_ABIS Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu.
CPU_ABI Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu.
CPU_ABI2 Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu.
CİHAZ Cihaz uygulayıcısı tarafından seçilen, donanım özelliklerinin yapılandırmasını ve cihazın endüstriyel tasarımını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR. Ürünün kullanım ömrü boyunca bu cihaz adı DEĞİŞMEMELİDİR.
PARÇA YAZILIMI Bu derlemeyi benzersiz şekilde tanımlayan bir dize. İnsanlar tarafından makul ölçüde okunabilir olmalıdır. Aşağıdaki şablona uygun olması ZORUNLUDUR:

$(BRAND)/$(ÜRÜN)/
$(CİHAZ):$(VERSION.RELEASE)/$(Kimlik)/$(SÜRÜM.EK:$(TYPE)/$(ETİKETLER)

Örnek:

acme/ürünüm/
mydevice:8.1/LMYXX/3359:kullanıcıhata ayıklama/test-anahtarları

Parmak izi boşluk karakterleri İÇERMEMELİDİR. Yukarıdaki şablona dahil edilen diğer alanlarda boşluk karakterleri varsa bunların, derleme parmak izinde alt çizgi ("_") karakteri gibi başka bir karakterle değiştirilmesi ZORUNLUDUR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir olmalıdır.

DONANIM Donanımın adı (çekirdek komut satırından veya /proc'dan). İnsanlar tarafından makul ölçüde okunabilir olmalıdır. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR.
BARINDIRMA Derlemenin temelini oluşturan ana makineyi, kullanıcılar tarafından okunabilir biçimde benzersiz bir şekilde tanımlayan bir dize. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur.
ID Cihaz uygulayıcısı tarafından belirli bir sürüme referansta bulunmak için seçilen, okunabilir biçimdeki bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemelerini ayırt edebilmesi için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9._-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR.
ÜRETİCİ Ürünün Özgün Donanım Üreticisi'nin (OEM) ticari adı. Bu alanın biçimiyle ilgili bir koşul yoktur. Ancak null veya boş dize ("") OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
MODEL Cihaz uygulayıcısı tarafından seçilen, son kullanıcı tarafından bilinen cihazın adını içeren bir değer. Bu ad, cihazın son kullanıcılara pazarlanmasında ve satışında kullanılan adla aynı olmalıdır. Bu alanın biçimiyle ilgili bir koşul yoktur. Ancak null veya boş dize ("") OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
ÜRÜN Cihaz uygulayıcısı tarafından seçilen, belirli bir ürünün (SKU) geliştirme adını veya kod adını içeren, aynı marka içinde benzersiz olması ZORUNLUDUR. Kullanıcılar tarafından okunabilir olması ZORUNLUDUR, ancak son kullanıcıların görmesi amaçlanmamıştır. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR. Bu ürün adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR.
SERİ Aynı MODEL ve ÜRETİCİYE sahip cihazlarda kullanılabilir ve benzersiz olması GEREKEN donanım seri numarası. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^([a-zA-Z0-9]{6,20})$” normal ifadesiyle eşleşmesi ZORUNLUDUR.
ETİKETLER Derlemeyi daha fazla ayırt eden, cihaz uygulayıcısı tarafından seçilen etiketlerin virgülle ayrılmış bir listesi. Bu alanın, üç tipik Android platform imzalama yapılandırmasına karşılık gelen değerlerden birinin bulunması ZORUNLUDUR: sürüm anahtarları, geliştirme anahtarları, test anahtarları.
SÜRE Derlemenin gerçekleştiği zaman damgasını temsil eden değer.
TÜR Cihaz uygulayıcısı tarafından seçilen ve derlemenin çalışma zamanı yapılandırmasını belirten değer. Bu alanda, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri ZORUNLUDUR: user, userdebug veya eng.
KULLANICI Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı ya da kullanıcı kimliği. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur.
SECURITY_PATCH Bir derlemenin güvenlik yaması seviyesini gösteren değer. Yapının, belirlenen Android Kamu Güvenliği Bülteni'nde açıklanan sorunlardan herhangi birine karşı herhangi bir güvenlik açığına karşı herhangi bir güvenlik açığı olmadığının belirtilmesi ZORUNLUDUR. Bu değerin [YYYY-AA-GG] biçiminde olması ve Android Kamu Güvenliği Bülteni'nde veya Android Güvenlik Uyarısı'nda (örneğin, "2015-11-01") belgelenen tanımlı bir dizeyle eşleşmesi gerekir.
TABAN_İşletim Sistemi Android Kamu Güvenliği Bülteni'nde sağlanan yamalar haricinde, derlemenin FINGERPrint parametresini temsil eden, aksi takdirde bu derlemeyle aynı olan değer. Doğru değeri Bildirmelidir. Böyle bir derleme yoksa boş bir dize ("") bildirin.
TAKİPÇİ Cihaz uygulayıcısı tarafından seçilen, cihazda kullanılan belirli dahili bootloader sürümünü tanımlayan, kullanıcıların okuyabileceği bir değer. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9._-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR.
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ğerin insan tarafından okunabilecek biçimde OLMALIDIR. Bir cihazın dahili radyo/modemi yoksa NULL değeri döndürmesi gerekir. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9._-,]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR.

3.2.3. Amaç Uyumluluğu

3.2.3.1. Temel Uygulama Amaçları

Android amaçları, uygulama bileşenlerinin diğer Android bileşenlerinden işlevsellik istemesine izin verir. Android yukarı akış projesi, temel Android uygulamaları olarak kabul edilen ve yaygın işlemleri gerçekleştirmek için çeşitli intent kalıpları uygulayan uygulamaların bir listesini içerir.

  • [C-0-1] Cihaz uygulamalarının, AOSP'de aşağıdaki temel Android uygulamaları tarafından tanımlanan tüm genel amaç filtre kalıpları için bir veya daha fazla uygulama ya da hizmet bileşeninin intent işleyici ile önceden yüklenmesi ZORUNLUDUR:

    • Masa Saati
    • Tarayıcı
    • Takvim
    • Kişiler
    • Galeri
    • Global Arama
    • Roketatar
    • Müzik
    • Ayarlar
3.2.3.2. Amaç Çözümü
  • [C-0-1] Android genişletilebilir bir platform olduğundan, cihaz uygulamalarının üçüncü taraf uygulamaları tarafından bölüm 3.2.3.1'de başvurulan her bir intent kalıbını geçersiz kılmasına izin verilmesi ZORUNLUDUR. Yukarı akış Android açık kaynak uygulaması varsayılan olarak buna izin verir.
  • [C-0-2] Tescili gerçekleştirenler, sistem uygulamalarının bu intent kalıplarını kullanımına özel ayrıcalıklar TAŞINMAMALIDIR veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bunların kontrolünü üstlenmesini engellemelidir. Bu yasak, kullanıcının tümü aynı amaç kalıbını işleyen birden çok uygulama arasından seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını özellikle kapsar ancak bununla sınırlı değildir.

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

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

Android, üçüncü taraf uygulamalarının belirli web URI amacı türleri için yetkili bir varsayılan uygulama bağlama davranışı beyan etmesine de olanak tanıyan bir mekanizmaya sahiptir. Bir uygulamanın intent filtresi modellerinde bu tür yetkili bildirimler tanımlandığında cihaz uygulamaları:

  • [C-0-4], yukarı akış Android açık kaynak projesindeki Paket Yöneticisi tarafından uygulanan Dijital Öğe Bağlantıları spesifikasyonunda tanımlanan doğrulama adımlarını gerçekleştirerek tüm intent filtrelerini doğrulamaya çalışmalıdır.
  • [C-0-5] Uygulamanın yüklenmesi sırasında intent filtrelerini doğrulamaya çalışmalı ve başarıyla doğrulanan tüm UIR intent filtrelerini UIR'leri için varsayılan uygulama işleyici olarak ayarlamalıdır.
  • Belirli URI intent filtreleri, başarılı bir şekilde doğrulanır ancak diğer aday URI filtreleri doğrulamada başarısız olursa URI'ları için varsayılan uygulama işleyiciler olarak AYARLANABİLİR. Bir cihaz uygulaması bunu yapıyorsa kullanıcıya ayarlar menüsünde her URI için uygun kalıp geçersiz kılmalarının sağlanması ZORUNLUDUR.
  • Kullanıcıya, Ayarlar'da uygulama bazında Uygulama Bağlantıları denetimlerinin aşağıdaki gibi sunulması ZORUNLUDUR:
    • [C-0-6] Kullanıcının, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütünsel olarak geçersiz kabilmesi ZORUNLUDUR: Her zaman açık, her zaman sor veya hiçbir zaman açılmamalıdır. Tüm aday URI amaç filtreleri için eşit şekilde uygulanmalıdır.
    • [C-0-7] Kullanıcının aday URI intent filtrelerinin listesini görmesi ZORUNLUDUR.
    • Cihaz uygulaması, kullanıcıya, amaca göre filtre temelinde, başarıyla doğrulanan belirli aday URI amaç filtrelerini geçersiz kılma imkanı SAĞLAYABİLİR.
    • [C-0-8] Cihaz uygulaması, bazı aday URI amaç filtrelerinin doğrulamada başarılı olmasına izin verirken bazıları da başarısız olabiliyorsa cihaz uygulaması, kullanıcılara belirli aday URI amaç filtrelerini görüntüleme ve geçersiz kılma imkanı ZORUNLUDUR.
3.2.3.3. Niyet Ad Alanları
  • [C-0-1] Cihaz uygulamaları, android. veya com.android. ad alanında ACTION, CATEGORY veya başka bir anahtar dizesini kullanan yeni intent ya da yayın amacı kalıplarını dikkate alan herhangi bir Android bileşeni İÇERMEMELİDİR.
  • [C-0-2] Cihaz uygulamaları, başka bir kuruluşa ait bir paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanan yeni intent ya da yayın amacı kalıplarını dikkate alan Android bileşenleri İÇERMEMELİDİR.
  • [C-0-3] Cihaz uygulamaları, bölüm 3.2.3.1'de listelenen temel uygulamalar tarafından kullanılan intent kalıplarının hiçbirini DEĞİŞTİRMEMELİ veya GENİŞLETMEMELİDİR.
  • Cihaz uygulamaları, kendi kuruluşları ile açık ve bariz bir şekilde ilişkilendirilmiş ad alanları kullanan intent kalıpları İÇEREBİLİR. Bu yasak, bölüm 3.6'da Java dili sınıfları için belirtilen yasaka benzer.
3.2.3.4. Yayın Amaçları

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

Cihaz uygulamaları:

  • [C-0-1] SDK dokümanlarında açıklanan uygun sistem etkinliklerine yanıt olarak genel yayın amaçlarını YAYINLAMALIDIR. Arka plan uygulamalarıyla ilgili sınırlamalar SDK dokümanlarında da açıklandığından bu şartın bölüm 3.5 ile çelişmediğini unutmayın.
3.2.3.5. Varsayılan Uygulama Ayarları

Android'de, kullanıcıların ana ekran veya SMS gibi varsayılan uygulamalarını kolayca seçebilmelerini sağlayan ayarlar bulunur.

Anlamlı olduğu durumlarda, cihaz uygulamalarının benzer bir ayarlar menüsü sağlaması ve aşağıdaki SDK dokümanlarında açıklanan amaç filtreleme kalıbı ve API yöntemleriyle uyumlu olması ZORUNLUDUR.

Cihaz uygulamaları android.software.home_screen bildiriminde bulunursa:

Cihaz uygulamaları android.hardware.telephony bildiriminde bulunursa:

  • [C-2-1], varsayılan SMS uygulamasını değiştirmeye yönelik bir iletişim kutusu göstermek için android.provider.Telephony.ACTION_CHANGE_DEFAULT intent'ini çağıracak bir ayarlar menüsü SAĞLAMALIDIR.

  • [C-2-2] Kullanıcının varsayılan Telefon uygulamasını değiştirmesine izin veren bir iletişim kutusu göstermek için android.telecom.action.CHANGE_DEFAULT_DIALER niyetine riayet edilmelidir.

  • [C-2-3], kullanıcıya PhoneAccounts ile ilişkili ConnectionServices ürününün yapılandırılması için android.telecom.action.CHANGE_PHONE_ACCOUNTS amacının yanı sıra telekomünikasyon servis sağlayıcısının giden aramalar yapmak için kullanacağı varsayılan bir Telefon Hesabı'nı da dahil etmelidir. AOSP uygulaması, "Aramalar" ayarlar menüsüne "Arama Hesapları seçeneği" menüsü ekleyerek bu şartı karşılar.

Cihaz uygulamaları android.hardware.nfc.hce bildiriminde bulunursa:

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 Etkinliklerinin başlatılmasına izin veriyorsa:

  • [C-1-1], android.software.activities_on_secondary_displays özellik bayrağını AYARLAMALIDIR.
  • [C-1-2] Birincil ekranda çalıştırılan etkinliğe benzer şekilde API uyumluluğu garanti edilmesi ZORUNLUDUR.
  • Yeni etkinlik, ActivityOptions.setLaunchDisplayId() API aracılığıyla bir hedef görüntü belirtmeden başlatıldığında, yeni etkinliği başlatan etkinlikle aynı ekrana yönlendirmelidir. [C-1-3]
  • Display.FLAG_PRIVATE işaretini içeren bir ekran kaldırıldığında [C-1-4], tüm etkinlikleri yok ETMELİDİR.
  • Ekranın kendisi yeniden boyutlandırıldığında [C-1-5], VirtualDisplay üzerindeki tüm etkinlikleri uygun şekilde yeniden boyutlandırmalıdır.
  • Metin giriş alanı ikincil ekrana odaklandığında, birincil ekranda bir IME (giriş yöntemi düzenleyici, kullanıcıların metin girmesini sağlayan bir kullanıcı denetimi) gösterilebilir.
  • Dokunmatik veya tuş girişleri desteklendiğinde giriş odağını birincil ekrandan bağımsız olarak ikincil ekranda uygulamalısınız.
  • İkincil ekranda bir etkinlik başlatılırsa görüntülenmesi, düzgün çalışması ve uyumluluğun korunması için söz konusu ekrana karşılık gelen android.content.res.Configuration SAHİBİ OLMALIDIR.

Cihaz uygulamaları, ikincil ekranlarda normal Android Etkinliklerinin başlatılmasına izin veriyorsa ve birincil ve ikincil ekranlarda farklı android.util.DisplayMetrics değerleri varsa:

  • [C-2-1] Yeniden boyutlandırılamayan etkinliklere (AndroidManifest.xml içinde resizeableActivity=false içeren) ve API düzeyi 23 veya altını hedefleyen uygulamalara ikincil ekranlarda izin VERİLMEMELİDİR.

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

  • [C-3-1] Yalnızca o ekranın, sistemin ve ekranda zaten bulunan etkinliklerin sahibi tarafından başlatılabilmesi ZORUNLUDUR. Herkes android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda başlatabilir.

3.3. Yerel API Uyumluluğu

Cihaz uygulamaları:

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

  • [SR] Yukarı akış Android Açık Kaynak Projesi'nde yer alan, aşağıda listelenen kitaplıkların uygulamalarını kullanmanız ÖNERİLİR.

3.3.1. Uygulama İkili Arabirimleri

Yönetilen Dalvik bayt kodu, uygulama .apk dosyasında sağlanan yerel kodu, uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak ç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'ni (ABI'ler) tanımlar.

Cihaz uygulamaları:

  • [C-0-1] tanımlı bir veya daha fazla ABI ile uyumlu olması ve Android NDK ile uyumlu olması ZORUNLUDUR.
  • [C-0-2] Standart Java Yerel Arayüzü (JNI) semantiğini kullanarak yerel koda çağrı yapmak için yönetilen ortamda çalışan kod desteği içermesi ZORUNLUDUR.
  • [C-0-3] aşağıdaki listede yer alan gerekli her kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
  • [C-0-4], 64 bit ABI destekleniyorsa eşdeğer 32 bit ABI'yı DESTEKLEMELİDİR.
  • [C-0-5], cihazın desteklediği yerel Uygulama İkili Arabirimi'ni (ABI) android.os.Build.SUPPORTED_ABIS, android.os.Build.SUPPORTED_32_BIT_ABIS ve android.os.Build.SUPPORTED_64_BIT_ABIS parametreleriyle, her biri en çok tercih edilenden en az tercih edilene doğru sıralanmış şekilde virgülle ayrılmış bir ABI'ler listesiyle doğru bir şekilde bildirmelidir.
  • [C-0-6] yukarıdaki parametreler aracılığıyla yalnızca Android NDK ABI Yönetimi dokümanlarının en son sürümünde belgelenen ve açıklanan ABI'ler raporlanmalı ve Gelişmiş SIMD (NEON olarak da bilinir) uzantısı için destek İÇERMELİDİR.
  • [C-0-7], yerel kod içeren uygulamaların kullanabileceği, yerel API'ler sağlayan aşağıdaki kitaplıkların tümünü KULLANMALIDIR:

    • libaaudio.so (AAudio yerel ses desteği)
    • libandroid.so (yerel Android etkinlik desteği)
    • libc (C kitaplığı)
    • libkamera2ndk.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ığı)
    • 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ırma)
    • JNI arayüzü
  • [C-0-8] Yukarıda listelenen yerel kitaplıklar için herkese açık işlevler EKLEMEMELİ veya KALDIRILMAMALIDIR.

  • [C-0-9], /vendor/etc/public.libraries.txt içinde doğrudan üçüncü taraf uygulamalarıyla açılan AOSP olmayan ek kitaplıkların listelenmesi GEREKİR.
  • [C-0-10] AOSP'de sistem kitaplığı olarak uygulanan ve sağlanan diğer yerel kitaplıkları, API düzeyi 24 veya sonraki sürümleri hedefleyen üçüncü taraf uygulamalarına ayrılmış olarak KULLANMAMALIDIR.
  • [C-0-11], NDK'da tanımlandığı gibi tüm OpenGL ES 3.1 ve Android Extension Bundle işlev simgelerini libGLESv3.so kitaplığı aracılığıyla dışa aktarmalıdır. Tüm simgelerin mevcut olması ZORUNLU olmakla birlikte, bölüm 7.1.4.1'de, karşılık gelen her bir işlevin tam olarak uygulanması beklenen şartlar daha ayrıntılı olarak açıklanmaktadır.
  • [C-0-12] Temel Vulkan 1.0 işlevi simobl'lerinin yanı sıra VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, VK_KHR_maintenance1 ve VK_KHR_get_physical_device_properties2 uzantılarının işlev simgelerini libvulkan.so kitaplığı üzerinden dışa aktarması ZORUNLUDUR. Tüm simgelerin mevcut olması ZORUNLU olmakla birlikte, bölüm 7.1.4.2'de karşılık gelen her bir işlevin tam olarak uygulanması beklenen şartlar 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 NDK'nın 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ı 64 bit ARM cihazlarıysa:

  • [C-1-1] ARMv8 mimarisi, mevcut yerel kodda kullanılan bazı işlemler dahil olmak üzere çeşitli CPU işlemlerini kullanımdan kaldırsa da, kullanımdan kaldırılan aşağıdaki işlemlerin, yerel CPU desteği veya yazılım emülasyonu aracılığıyla 32 bit yerel ARM kodu tarafından kullanılabilmesi ZORUNLUDUR:

    • SWP ve SWPB talimatları
    • SETEND talimatı
    • CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri

Cihaz uygulamaları 32 bit ARM ABI içeriyorsa:

  • [C-2-1], Android NDK'nın eski sürümleri kullanılarak oluşturulan uygulamalarla uyumluluğun sağlanması için /proc/cpuinfo içinde 32 bit ARM uygulamaları tarafından okunduğunda aşağıdaki satırları içermelidir.

    • Features: ve ardından cihazın desteklediği isteğe bağlı ARMv7 CPU özelliklerinin listesi.
    • CPU architecture: ve ardından cihazın desteklenen en yüksek ARM mimarisini açıklayan bir tam sayı (ör. ARMv8 cihazlar için "8").
  • 64 bit ARM veya ARM olmayan uygulamalar tarafından okunurken /proc/cpuinfo DEĞİŞTİRİLMEMELİDİR.

3.4. Web Uyumluluğu

3.4.1. Web Görünümü Uyumluluğu

Cihaz uygulamaları, android.webkit.Webview API'nin eksiksiz bir şekilde kullanılmasını sağlıyorsa:

  • [C-1-1] android.software.webview adlı yeri bildirmeli.
  • [C-1-2] android.webkit.WebView API'nin uygulanması için Android 8.1 dalında yukarı akış Android Açık Kaynak Projesi'ndeki Chromium Projesi derlemesini kullanması ZORUNLUDUR.
  • [C-1-3] WebView tarafından bildirilen kullanıcı aracısı dizesinin şu biçimde olması ZORUNLUDUR:

    Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD); wv) AppleWebKit/537.36 (KHTML, Gecko gibi) Sürüm/4.0 $(CHROMIUM_VER) Mobile Safari/537.36

    • $(VERSION) dizesinin değerinin, android.os.Build.VERSION.RELEASE değeriyle aynı olması ZORUNLUDUR.
    • $(MODEL) dizesinin değerinin android.os.Build.MODEL değeriyle aynı olması ZORUNLUDUR.
    • $(BUILD) dizesinin değerinin android.os.Build.ID değeriyle aynı olması ZORUNLUDUR.
    • $(CHROMIUM_VER) dizesinin değerinin, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium sürümü olması ZORUNLUDUR.
    • Cihaz uygulamaları için kullanıcı aracısı dizesinde Mobil kelimesi ATLANABİLİR.
  • WebView bileşeninin mümkün olduğunca fazla HTML5 özelliği için destek içermesi GEREKİR ve özelliği destekliyorsa HTML5 spesifikasyonuna UYMALIDIR.

3.4.2. Tarayıcı Uyumluluğu

Cihaz uygulamaları, genel web'e göz atma için bağımsız bir Tarayıcı uygulaması içeriyorsa, bunlar:

  • [C-1-1], HTML5 ile ilişkili şu API'lerin her birini DESTEKLEMELİDİR:
  • [C-1-2], HTML5/W3C webstorage API'yi DESTEKLEMELİ, HTML5/W3C IndexedDB API'yi DESTEKLEMELİDİR. Web geliştirme standartları gövdeleri webstorage yerine IndexedDB'ye öncelik verirken IndexedDB'nin gelecekteki Android sürümlerinde gerekli bir bileşen olması beklenmektedir.
  • Bağımsız Tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi gönderilebilir.
  • Bağımsız Tarayıcı uygulamasında (ister yukarı akış WebKit Tarayıcı uygulamasına ister üçüncü taraf bir alternatife dayalı olarak) olsun, bağımsız Tarayıcı uygulamasında mümkün olduğunca çok HTML5 desteğinin uygulanması GEREKİR.

Ancak, cihaz uygulamaları tek başına bir Tarayıcı uygulaması içermiyorsa:

  • [C-2-1], bölüm 3.2.3.1'de açıklanan kamu amacı kalıplarını hâlâ desteklemelidir.

3.5. API Davranış Uyumluluğu

Her bir API türünün (yönetilen, yazılımlı, yerel ve web) davranışları, yukarı akış Android Açık Kaynak Projesi'nin tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumlulukla ilgili belirli alanlar şunlardır:

  • [C-0-1] Cihazlar, standart bir niyetin davranışını veya anlamını DEĞİŞTİRMEMELİDİR.
  • [C-0-2] Cihazlar belirli bir sistem bileşeni türünün (ör. Service, Activity, ContentProvider vb.) yaşam döngüsü veya yaşam döngüsü anlamlarını DEĞİŞTİRMEMELİDİR.
  • [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEMELİDİR.
  • Cihazlar, arka plan uygulamalarında uygulanan sınırlamaları DEĞİŞTİRMEMELİDİR. Daha açık şekilde belirtmek gerekirse arka plan uygulamaları için:
    • [C-0-4] GnssMeasurement ve GnssNavigationMessage'ten çıkış almak için uygulama tarafından kaydedilen geri çağırmaları yürütmeyi durdurması gerekir.
    • [C-0-5] LocationManager API sınıfı veya WifiManager.startScan() yöntemi üzerinden uygulamaya sağlanan güncellemelerin sıklığının hız sınırlamasının zorunlu olması gerekir.
    • [C-0-6] Uygulama, API düzeyi 25 veya üstünü hedefliyorsa yayın amacı "signature" ya da "signatureOrSystem" protectionLevel izni gerektirmediği veya muafiyet listesinde olmadığı sürece, uygulamanın manifest dosyasında standart Android amaçlarının örtülü yayınları için yayın alıcılarının kaydedilmesine İZİN VERİLMEMELİDİR.
    • [C-0-7] Uygulama, API düzeyi 25 veya sonraki sürümleri hedefliyorsa uygulamanın kullanıcının görebildiği bir görevi işlemek için geçici bir izin verilenler listesine eklenmediği sürece, tıpkı uygulama hizmetlerin stopSelf() yöntemini çağırmış gibi uygulamanın arka plan hizmetlerini durdurması GEREKİR.
    • [C-0-8] Uygulama, API düzeyi 25 veya üstünü hedefliyorsa uygulamanın barındırdığı uyanık kalma kilitlerini serbest bırakması GEREKİR.

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

3.6. API Ad Alanları

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

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

Yani:

  • [C-0-1] Herhangi bir yöntem veya sınıf imzasını değiştirerek ya da sınıfları veya sınıf alanlarını kaldırarak Android platformunda herkese açık API'lerde DEĞİŞTİRİLMEMELİDİR.
  • [C-0-2] yukarıdaki ad alanlarında bulunan API'lere herkese açık herhangi bir öğe (sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere alanlar ya da yöntemler gibi) veya Test veya Sistem API'leri EKLEMEMELİDİR. "Herkese açık öğe", yukarı akış Android kaynak kodunda kullanıldığı şekilde "@hide" işaretçisiyle dekore edilmemiş her türlü yapıdır.

Cihaz uygulamaları, API'lerin temel uygulamasını değiştirebilir, ancak bu tür değişiklikler:

  • [C-0-3] herkese açık API'lerin belirtilen davranışını ve Java dili imzasını ETKİLEMEMELİDİR.
  • [C-0-4] REKLAMI veya başka bir şekilde geliştiricilere İLİŞKİLENDİRMEMELİDİR.

Ancak cihaz uygulayıcıları standart Android ad alanının dışında özel API'ler ekleyebilir, ancak özel API'ler:

  • [C-0-5] başka bir kuruluşa ait veya başka bir kuruluşa ait bir ad alanında OLMAMALIDIR. Örneğin, cihaz uygulayıcıları com.google.* veya benzer ad alanına API EKLEMEMELİDİR: Yalnızca Google bunu yapabilir. Benzer şekilde, Google diğer şirketlerin ad alanlarına API EKLEMEMELİDİR.
  • [C-0-6] Android'in paylaşılan bir kitaplıkta paketlenmesi ZORUNLUDUR. Böylece, API'lerin artan bellek kullanımından yalnızca bunları açıkça kullanan uygulamalar (<uses-library> mekanizması ile) etkilenir.

Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarından birini iyileştirmeyi önerirse (örneğin, mevcut bir API'ye kullanışlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) uygulayıcının source.android.com adresini ziyaret etmesi ve söz konusu sitedeki bilgilere göre değişiklikler ve kod ekleme işlemine başlaması GEREKİR.

Yukarıdaki kısıtlamaların, Java programlama dilinde API adlandırmaya ilişkin standart kurallara karşılık geldiğini unutmayın. Bu bölümün amacı, bu kuralları güçlendirmek 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], Dalvik Yürütülebilir (DEX) biçiminin tamamını ve Dalvik bayt kodu spesifikasyonu ve anlamını DESTEKLEMELİDİR.

  • [C-0-2] Dalvik çalışma zamanlarını yukarı akış Android platformuna uygun şekilde ve aşağıdaki tabloda belirtildiği şekilde bellek tahsis edecek şekilde yapılandırılması GEREKİR. (Ekran boyutu ve ekran yoğunluğu tanımları için bölüm 7.1.1'e bakın.)

  • Android Çalışma Zamanı'nı (ART), Dalvik Yürütülebilir Biçimi'nin referans yukarı akış uygulamasını ve referans uygulamanın paket yönetim sistemini KULLANMALIDIR.

  • Çalışma zamanının kararlılığını sağlamak için çeşitli yürütme modlarında ve hedef mimarilerde fuzz testleri yürütülmelidir. Android Açık Kaynak Projesi web sitesinde JFuzz ve DexFuzz'a bakın.

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

Ekran Düzeni Ekran Yoğunluğu Minimum Uygulama Belleği
Android Saat 120 dpi (ldpi) 32MB
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) 32MB
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) 128MB
560 dpi (560dpi) 192MB
640 dpi (xxxhdpi) 256MB
büyük 120 dpi (ldpi) 32MB
160 dpi (mdpi) 48MB
213 dpi (tvdpi) 80MB
240 dpi (hdpi)
280 dpi (280dpi) 96MB
320 dpi (xhdpi) 128MB
360 dpi (360dpi) 160MB
400 dpi (400dpi) 192MB
420 dpi (420dpi) 228MB
480 dpi (xxhdpi) 256MB
560 dpi (560dpi) 384MB
640 dpi (xxxhdpi) 512MB
xlarge 120 dpi (ldpi) 48MB
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 başlatıcı uygulaması (ana ekran) ve cihaz başlatıcının (ana ekran) yerini alacak üçüncü taraf uygulamaları için destek bulunur.

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

  • [C-1-1], android.software.home_screen adlı platform özelliğini beyan ZORUNLUDUR.
  • Üçü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, [C-1-2] AdaptiveIconDrawable nesnesini döndürmelidir.

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

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

Cihaz uygulamaları, üçüncü taraf uygulamaları tarafından Kısayol Yöneticisi API'si üzerinden sağlanan ek kısayollara hızlı erişim sağlayan bir varsayılan başlatıcı uygularsa:

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

Cihaz uygulamaları, uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması içeriyorsa:

  • [C-5-1], NotificationChannel.setShowBadge() API yöntemine UYMALIDIR. Başka bir deyişle, değer true olarak ayarlanırsa uygulama simgesiyle ilişkilendirilmiş görsel bir uygun olma ve uygulamanın tüm bildirim kanalları değeri false olarak ayarladığında uygulama simgesi rozet şeması gösterme.
  • Üçüncü taraf uygulamalar, özel API'ler kullanılarak özel rozet şemasını desteklediğini belirttiğinde uygulama simgesi rozetlerini kendi özel rozet şemalarıyla geçersiz kılabilir ancak SDK'da açıklanan bildirim rozeti API'leri aracılığıyla sağlanan kaynakları ve değerleri (ör. Notification.Builder.setNumber() ve Notification.Builder.setBadgeIconType() API) KULLANMALISINIZ.

3.8.2. Widget'lar

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

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

  • [C-1-1], android.software.app_widgets platform özelliği için destek verdiğini beyan etmelidir.
  • [C-1-2] AppWidget'lar için yerleşik destek içermeli ve AppWidget'ları doğrudan Başlatıcı'da eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü seçeneklerini sunmak ZORUNLUDUR.
  • [C-1-3] Widget'ları standart ızgara boyutunda 4 x 4 boyutunda oluşturabilmelidir. Ayrıntılar için Android SDK dokümanlarındaki App Widget DesignGuidelines bölümüne bakın.
  • Kilit ekranında uygulama widget'ları DESTEKLENEBİLİR.

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

3.8.3. Bildirimler

Android, üçüncü taraf uygulama geliştiricilerin 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ı önemli olaylar hakkında bilgilendirmesine ve kullanıcıların dikkatini çekmesine olanak tanıyan Notification ve NotificationManager API'lerini içerir.

3.8.3.1. Bildirimlerin Sunumu

Cihaz uygulamaları, üçüncü taraf uygulamalarının önemli etkinlikler hakkında kullanıcıları bilgilendirmesine olanak tanıyorsa:

  • [C-1-1], SDK dokümanlarında açıklandığı gibi ve cihaz uygulama donanımıyla mümkün olduğu ölçüde donanım özelliklerini kullanan bildirimleri desteklemelidir. Örneğin, bir cihaz uygulaması titreşim içeriyorsa titreşim API'lerini doğru bir şekilde uygulaması ZORUNLUDUR. Bir cihaz uygulamasında donanım yoksa ilgili API'lerin işlemsiz olarak uygulanması ZORUNLUDUR. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmaktadır.
  • [C-1-2], API'lerde veya Durum/Sistem Çubuğu simge stil kılavuzunda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) doğru şekilde OLUŞTURMALIDIR ancak bildirimler için referans Android Açık Kaynak uygulamasının sağladığından farklı bir kullanıcı deneyimi sağlayabilir.
  • [C-1-3] API'lerin bildirimlerinin güncellenmesi, kaldırılması ve gruplandırılması için açıklanan davranışları benimsemeli ve doğru şekilde uygulamalıdır.
  • [C-1-4], NotificationChannel API'sinin SDK'da belgelenen tüm davranışını sağlamalıdır.
  • [C-1-5] Bir kullanıcıya, her kanal ve uygulama paketi düzeyi için belirli bir üçüncü taraf uygulamasının bildirimini engelleme ve değiştirme olanağı sunmalıdır.
  • [C-1-6] Silinen bildirim kanallarını görüntülemek için kullanıcıya da ödeme imkanı sunmak ZORUNLUDUR.
  • Zengin bildirimler DESTEKLENMELİDİR.
  • Uyarı bildirimleri olarak daha yüksek öncelikli bazı bildirimler SUNULMALIDIR.
  • Bir kullanıcının bildirimleri ertelemeye uygun olması GEREKİR.
  • Yalnızca üçüncü taraf uygulamalarının, sürücünün dikkatinin dağılması gibi güvenlik sorunlarını azaltmak için önemli etkinlikleri kullanıcılara bildirebileceği zamanların görünürlüğünü ve zamanlamasını yönetebilir.

Cihaz uygulamaları zengin bildirimleri destekliyorsa:

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

Cihaz uygulamaları, uyarı bildirimlerini destekliyorsa:

  • [C-3-1], uyarı bildirimleri sunulduğunda Notification.Builder API sınıfında açıklanan uyarı bildirimi görünümünü ve kaynakları kullanmalıdır.
3.8.3.2. Bildirim Dinleyici Hizmeti

Android, yayınlanan veya güncellenen tüm bildirimlerin bir kopyasını (kullanıcı tarafından açıkça etkinleştirildiğinde) uygulamaların bir kopyasını almasına izin veren NotificationListenerService API'lerini içerir.

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

  • [C-1-1], Bildirim nesnesine ekli tüm meta veriler de dahil olmak üzere, bu tür yüklü ve kullanıcı tarafından etkinleştirilen dinleyici hizmetlerinin tamamında bildirimlerin doğru ve hızlı bir şekilde güncellenmesi ZORUNLUDUR.
  • [C-1-2]'nin snoozeNotification() API çağrısına uyması, bildirimi kapatması ve API çağrısında ayarlanan erteleme süresinden sonra geri çağırması gerekir.

Cihaz uygulamalarının, bildirimleri erteleyebileceği bir kullanıcı varsa:

  • [C-2-1], ertelenen bildirim durumunu NotificationListenerService.getSnoozedNotifications() gibi standart API'ler üzerinden düzgün bir şekilde yansıtmalıdır.
  • [C-2-2] Kalıcı/ön plan hizmetlerinden olmadığı sürece, bu kullanıcıya, yüklenen her bir üçüncü taraf uygulamasının bildirimlerini ertelemek için fırsat sunulması ZORUNLUDUR.
3.8.3.3. Rahatsız Etmeyin (Rahatsız Etmeyin)

Cihaz uygulamaları DND özelliğini destekliyorsa:

  • [C-1-1] ACTION_STATE_POLICY_ACCESS_SETTINGS amacına yanıt verecek bir etkinlik gerçekleştirmesi ZORUNLUDUR. UI_MODE_TYPE_NORMAL ile uygulamalarda bunun, kullanıcının DND politika yapılandırmalarına uygulama erişimine izin verebileceği veya engelleyebileceği bir etkinlik olması ZORUNLUDUR.
  • [C-1-2] Cihaz uygulaması, kullanıcıya üçüncü taraf uygulamalarının DND politika yapılandırmasına erişim izni vermesi veya bunu reddetmesi için bir yol sunuyorsa, söz konusu cihazın, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kuralların yanı sıra uygulamalar tarafından oluşturulan Otomatik DND kurallarını görüntülemesi ZORUNLUDUR.
  • [C-1-3] NotificationManager.Policy ile iletilen suppressedVisualEffects değerlerine riayet etmelidir. Bir uygulama supPRESSED_EF_SCREEN_OFF veya supPRESSED_EF_SCREEN_ON işaretlerinden herhangi birini ayarlamışsa, kullanıcıya, DND ayarları menüsündeki görsel efektlerin engellendiğini BELİRTMELİDİR.

Android, geliştiricilerin aramayı uygulamalarına dahil etmelerine ve uygulama verilerini küresel sistem aramasına sergilemelerine olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmesine olanak tanıyan, kullanıcı yazarken önerileri gösteren ve sonuçları gösteren, sistem genelinde tek bir kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü tekrar kullanmalarına ve geliştiricilerin, yaygın genel arama kullanıcı arayüzüne sonuçlar sağlamalarına olanak tanır.

  • Android cihaz uygulamaları, genel arama özelliğini, kullanıcı girişlerine yanıt olarak gerçek zamanlı önerilerde bulunabilen, sistem çapında tek bir paylaşılan arama kullanıcı arayüzünü, yani genel aramayı İÇERMELİDİR.

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

  • [C-1-1] Üçüncü taraf uygulamalar genel arama modunda çalıştırıldığında arama kutusuna öneriler eklemesine izin veren API'lerin uygulanması ZORUNLUDUR.

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

  • Varsayılan davranış, web arama motoru sonuçlarını ve önerileri görüntülemek GEREKİR.

Android ayrıca, uygulamaların mevcut bağlam hakkında ne kadar bilginin cihazdaki asistanla paylaşılacağını belirlemesine olanak tanıyan Destek API'leri de içerir.

Cihaz uygulamaları, Destek işlemini destekliyorsa:

  • [C-2-1], bağlam paylaşıldığında, bunu son kullanıcıya açıkça belirtmek için:
    • Asistan uygulaması bağlama her eriştiğinde, ekranın kenarlarında Android Açık Kaynak Projesi uygulamasının süresini ve parlaklığını karşılayan veya aşan beyaz bir ışık görüntüler.
    • Varsayılan ses girişi ve asistan uygulaması ayarlar menüsüne ikisinden daha az gezinme imkanı sunan ve içeriği yalnızca kullanıcı tarafından özel kelime veya yardım navigasyon tuşu girişi aracılığıyla açıkça çağrıldığında paylaşan önceden yüklenmiş asistan uygulamaları için.
  • [C-2-2] Bölüm 7.2.3'te açıklandığı gibi, asistan uygulamasını başlatmak için belirtilen etkileşimin, kullanıcı tarafından seçilen destek uygulamasını, diğer bir deyişle VoiceInteractionService'yi uygulayan uygulamayı veya ACTION_ASSIST amacını işleyen bir etkinliği başlatması ZORUNLUDUR.
  • [SR] Bu belirlenen etkileşim olarak HOME tuşuna uzun basmanız ÖNERİLİR.

3.8.5. Uyarılar ve Kısa Mesajlar

Uygulamalar Toast API'yi kullanarak son kullanıcıya kısa bir süre sonra kaybolan, kalıcı olmayan kısa dizeler gösterebilir ve TYPE_APPLICATION_OVERLAY window type API'yi kullanarak uyarı pencerelerini diğer uygulamaların üzerinde yer paylaşımlı olarak gösterebilir.

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

  • [C-1-1] Kullanıcıya, TYPE_APPLICATION_OVERLAY kullanan bir uygulamanın uyarı pencerelerini görüntülemesini engelleme imkanı OLMALIDIR . AOSP uygulaması, bildirim gölgesinde denetimler bulundurarak bu koşulu karşılar.

  • [C-1-2], Toast API'yi dikkate almalı ve uygulamalardaki Toast'ları son kullanıcılara oldukça görünür bir şekilde görüntülemelidir.

3.8.6. Temalar

Android, uygulamaların bir Etkinliğin veya uygulamanın tamamında stilleri uygulayabilmesi için bir mekanizma olarak "tema" sunar.

Android, uygulama geliştiricilerin Android SDK tarafından tanımlanan Holo teması görünüm ve tarzına uygun hareket etmek istediklerinde kullanabilecekleri bir dizi tanımlı stil olarak "Holo" ve "Materyal" tema ailesini içerir.

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

Android ayrıca, cihaz temasının cihaz temasını uygulayan kullanıcı tarafından tanımlanan görünüm ve tarzıyla uyumlu olmasını isteyen uygulama geliştiricilerin kullanabileceği tanımlı stiller olarak bir "Cihaz Varsayılanı" tema ailesi içerir.

Android, yarı saydam sistem çubuklarına sahip bir varyant temasını destekler. Bu özellik, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içeriğiyle doldurmaları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ı bir sistem durum çubuğu içeriyorsa, bunlar:

  • [C-2-1] Simgenin sorunlu bir durumu belirtmediği veya bir uygulama SYSTEM_UI_FLAG_LIGHT_STATUS_BAR işaretini kullanarak ışıklı bir durum çubuğu istemediği sürece, sistem durum simgeleri (sinyal gücü ve pil düzeyi gibi) ve sistem tarafından gönderilen bildirimler için beyaz renk kullanılması ZORUNLUDUR.
  • [C-2-2] Bir uygulama ışık durum çubuğu istediğinde, Android cihaz uygulamalarının sistem durum simgelerinin rengini siyah olarak değiştirmesi GEREKİR (ayrıntılar için R.style'a bakın).

3.8.7. Animasyonlu Duvar Kağıtları

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

Donanım, tüm animasyonlu duvar kağıtlarını işlevsel bir sınırlama olmadan, diğer uygulamaları olumsuz etkilemeden makul bir kare hızında çalıştırabiliyorsa güvenilir bir şekilde animasyonlu duvar kağıtları çalıştırabilir. Donanımdaki sınırlamalar, duvar kağıtlarının ve/veya uygulamaların kilitlenmesine, bozulmasına, aşırı CPU ya da pil gücü harcanmasına veya kabul edilemez düşük kare hızlarında çalışmasına neden olursa donanımın animasyonlu duvar kağıdını çalıştıramadığı kabul edilir. Örneğin, bazı animasyonlu duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamı kullanabilir. Animasyonlu duvar kağıdı, birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz çünkü bir OpenGL bağlamının canlı duvar kağıdı kullanımı, OpenGL bağlamı kullanan diğer uygulamalarla da çakışabilir.

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

Cihaz uygulamaları animasyonlu duvar kağıtları uyguluyorsa:

  • [C-1-1] Platform özellik bayrağı android.software.live_wallpaper'ı BİLDİRMELİDİR.

3.8.8. Etkinlik Değiştirme

Yukarı akış Android kaynak kodu, görev arasında geçiş yapmak ve son erişilen etkinlik ile görevleri görüntülemek için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir. Bu kullanıcı arayüzü, kullanıcının uygulamadan son ayrıldığı andaki grafik durumunun küçük resmini kullanır.

Bölüm 7.2.3'te ayrıntılı olarak açıklandığı şekilde, son kullanılanlar işlevi gezinme tuşu dahil olmak üzere cihaz uygulamaları arayüzü değiştirebilir.

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

  • [C-1-1] görüntülenen en az 7 etkinliği DESTEKLEMELİDİR.
  • Aynı anda en az 4 etkinliğin başlığı görüntülenmelidir.
  • [C-1-2] Ekran sabitleme davranışını uygulamalı ve kullanıcıya, özelliği açıp kapatmak için kullanabileceği bir ayarlar menüsü sunmalıdır.
  • Son kullanılan öğelerde vurgu rengi, simge, ekran başlığı GÖRÜNTÜLEMELİDİR.
  • Kapanış mesajı ("x") GÖRÜNTÜLEMELİDİR, ancak kullanıcı ekranlarla etkileşime geçene kadar bu işlem ertelenebilir.
  • Önceki etkinliğe kolayca geçiş yapmak için bir kısayol uygulanmalı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şleminin TEŞVİK EDİLMESİ GEREKİR.
  • Destekleniyorsa, son kullanılanlar işlevleri tuşuna uzun basıldığında bölünmüş ekran çoklu pencere modunu TEŞVİK ETMELİDİR.
  • İlişkili sonları birlikte hareket eden bir grup olarak GÖRÜNTÜLENEBİLİR.

  • [SR] Genel bakış ekranı için yukarı akış Android kullanıcı arayüzünü (veya küçük resim tabanlı benzer bir arayüzü) kullanmanız ÖNEMLE ÖNERİLİR.

3.8.9. Giriş Yönetimi

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

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

  • [C-1-1], android.software.input_methods platform özelliğini bildirmeli ve IME API'lerini Android SDK dokümanlarında belirtildiği gibi desteklemelidir.
  • [C-1-2], android.settings.INPUT_METHOD_SETTINGS amacına yanıt olarak üçüncü taraf giriş yöntemleri eklemek ve yapılandırmak için kullanıcı tarafından erişilebilen bir mekanizma SAĞLAMALIDIR.

Cihaz uygulamaları android.software.autofill özellik bayrağını beyan ederse bunlar:

  • [C-2-1] Otomatik doldurmayı etkinleştirip devre dışı bırakmak ve kullanıcı için varsayılan otomatik doldurma hizmetini değiştirmek amacıyla AutofillService ve AutofillManager API'lerini tam olarak uygulamalı ve android.settings.REQUEST_SET_AUTOFILL_SERVICE amacını dikkate alarak otomatik doldurmayı etkinleştirmek ve devre dışı bırakmak amacıyla varsayılan uygulama ayarları menüsü gösterilmelidir.

3.8.10. Kilit Ekranı Medya Kontrolü

Android 5.0 Remote Control Client API'nin desteği, medya uygulamalarının kilit ekranında görüntülenen oynatma kontrolleri ile entegre olmasına olanak tanıyan Medya Bildirim Şablonu'nun yerini almıştır.

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

Android, daha önce İlham Tonu adı verilen etkileşimli ekran koruyucular için destek sunar. Ekran koruyucular, güç kaynağına bağlı bir cihaz boştayken veya bir masa yuvasına yerleştirildiğinde kullanıcıların uygulamalarla etkileşimde bulunmasına olanak tanır. Android Watch cihazları ekran koruyucu KULLANABİLİR, ancak diğer cihaz uygulamalarının ekran koruyucu desteği içermesi ve kullanıcıların android.settings.DREAM_SETTINGS amacına göre ekran koruyucularını yapılandırmaları için bir ayar seçeneği SAĞLANMALIDIR.

3.8.12. Konum

Cihaz uygulamaları, konum koordinatlarını sağlayabilen bir donanım sensörü (ör. GPS) içeriyorsa:

  • [C-1-1] Konum modlarının, Ayarlar'daki Konum menüsünde görüntülenmesi ZORUNLUDUR.

3.8.13. Unicode ve Yazı Tipi

Android, Unicode 10.0'da tanımlanan emoji karakterleri için destek sunar.

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

  • [C-1-1] bu emoji karakterlerini renk glifiyle işleyebilmesi ZORUNLUDUR.
  • [C-1-2] Aşağıdakiler için destek İÇERMELİDİR:
  • Farklı ağırlıklara sahip Roboto 2 yazı tipi: cihazda kullanılabilen diller için (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-Black, sans-serif-condensed, sans-serif-condensed-light).
  • Latince, Genişletilmiş A, B, C ve D aralıkları ile Unicode 7.0'ın para birimi simge blokundaki tüm glifler dahil olmak üzere Latin, Yunan ve Kiril alfabesinin tam Unicode 7.0 kapsamı.
  • Unicode Teknik Raporu #51'de belirtilen şekilde, cilt tonunu ve çeşitli aile emojilerini DESTEKLEMELİDİR.

Cihaz uygulamaları bir IME içeriyorsa:

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

3.8.14. Çoklu Pencere

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'sının çoklu pencere modu destek dokümanlarında açıklanan uygulama davranışlarına ve API'lere uygun şekilde uygulaması ve aşağıdaki şartları karşılaması gerekir:
  • [C-1-2] Uygulamalar, AndroidManifest.xml dosyasında çoklu pencere modunda çalışıp çalışmadıklarını belirtebilir. Bunun için android:resizeableActivity özelliğinin true değerine ayarlanması ya da targetSdkVersion > 24 değerine ayarlanması dolaylı olarak yapılır. Bu özelliği, manifest dosyalarında açıkça false olarak ayarlayan uygulamalar çoklu pencere modunda BAŞLATILMAMALIDIR. Bu android:resizeableActivity özelliğini ayarlamayan targetSdkVersion < 24 değerine sahip eski uygulamalar çoklu pencere modunda başlatılabilir. Ancak sistemin, uygulamanın çoklu pencere modunda beklendiği gibi çalışmayabileceği konusunda uyarıda bulunması GEREKİR.
  • [C-1-3] Ekran yüksekliği 440 dp'den ve ekran genişliği 440 dp'den küçükse bölünmüş ekran veya serbest biçim modu SUNMAMALIDIR.
  • 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ıyı önceden YÜKLEMELİDİR.
  • [C-2-2], bölünmüş ekranlı bir çoklu pencerenin yuvaya yerleştirilmiş etkinliğini kırpmak ZORUNLUDUR. Ancak, Başlatıcı uygulaması odaklanılan pencereyse bunun bir kısmını gösteren içeriğin bir kısmını göstermesi GEREKİR.
  • [C-2-3], üçüncü taraf başlatıcı uygulamasının bildirilen AndroidManifestLayout_minWidth ve AndroidManifestLayout_minHeight değerlerini dikkate almalı ve yuvaya yerleştirilmiş etkinliğin bazı içeriklerini gösterirken bu değerleri geçersiz kılmamalıdır.

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

  • [C-3-1] Aşağıdaki durumlarda etkinliklerin pencere içinde pencere çoklu pencere modunda başlatılması ZORUNLUDUR: * API düzeyi 26 veya üstü hedefleniyor ve android:supportsPictureInPicture * Hedef API düzeyi 25 veya daha düşük ise ve hem android:resizeableActivity hem de android:supportsPictureInPicture beyan ediliyor.
  • [C-3-2], mevcut PIP etkinliğinde belirtildiği şekilde, SystemUI'deki işlemleri setActions() API aracılığıyla göstermelidir.
  • [C-3-3], setAspectRatio() API aracılığıyla gerçekleşen PIP etkinliğinde belirtildiği üzere, en boy oranı 1:2,39'dan büyük veya 2,39:1'e eşit ya da 2,39:1'e eşit olan en boy oranlarını desteklemelidir.
  • [C-3-4] PIP penceresini kontrol etmek için KeyEvent.KEYCODE_WINDOW KULLANILMALIDIR. PIP modu uygulanmazsa anahtarın ön plan etkinliğinde kullanılabilir olması ZORUNLUDUR.
  • [C-3-5] Kullanıcıya, bir uygulamanın PIP modunda görüntülenmesini engelleme imkanı OLMALIDIR. AOSP uygulaması, bildirim gölgesinde kontroller bulunmasıyla bu şartı karşılar.
  • Configuration.uiMode UI_MODE_TYPE_TELEVISION olarak yapılandırıldığında [C-3-6], PIP penceresi için minimum 108 dp genişlik ve yükseklik, PIP penceresi için ise minimum 240 dp genişlik ve 135 dp yükseklik ayırmalıdır.

3.9. Cihaz Yönetimi

Android, güvenliğe duyarlı uygulamaların sistem düzeyinde cihaz yönetimi işlevlerini gerçekleştirmesine (şifre politikalarını uygulama veya Android Device Management API] aracılığıyla uzaktan silme gerçekleştirme gibi) olanak tanıyan özellikler içerir.

Cihaz uygulamaları, Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tümünü uyguluyorsa:

  • [C-1-1] android.software.device_admin ZORUNLUDUR.
  • [C-1-2], bölüm 3.9.1 ve bölüm 3.9.1.1'de açıklandığı gibi cihaz sahibi temel hazırlığını desteklemelidir.
  • [C-1-3], yönetilen profillerin desteğinin android.software.managed_users özellik bayrağı aracılığıyla beyan edilmesi ZORUNLUDUR. Cihazın kendisini düşük RAM'e sahip cihaz olarak bildirecek veya dahili (kaldırılamaz) depolama alanını paylaşılan depolama alanı olarak ayıracak şekilde yapılandırıldıysa.

3.9.1 Cihaz Temel Hazırlığı

3.9.1.1 Cihaz sahibi temel hazırlığı

Cihaz uygulamaları android.software.device_admin bildiriyorsa:

  • [C-1-1] bir Device Policy İstemcisi'nin (DPC) aşağıda açıklandığı şekilde Cihaz Sahibi uygulaması olarak kaydedilmesini DESTEKLEMELİDİR:
  • [C-1-2] Bir uygulamayı (önceden yüklenmiş uygulamalar dahil), kullanıcının veya cihazın yöneticisinin açık izni ya da işlemi olmadan Cihaz Sahibi uygulaması olarak AYARLANMAMALIDIR.

Cihaz uygulamalarında android.software.device_admin belirtilmişse, ancak aynı zamanda özel bir Cihaz Sahibi yönetim çözümü varsa ve çözümlerinde yapılandırılmış bir uygulamayı, standart Android DevicePolicyManager API'leri tarafından tanınan standart "Cihaz Sahibi"ne "Cihaz Sahibi eşdeğeri" olarak tanıtmaya yönelik bir mekanizma sağlanıyorsa:

  • [C-2-1] Tanıtımı yapılmakta olan uygulamanın, meşru bir kurumsal cihaz yönetimi çözümüne ait olduğunun doğrulanması ve özel çözümde "Cihaz Sahibi" ile eşdeğer haklara sahip olacak şekilde zaten yapılandırılmış olması için bir sürece sahip olması ZORUNLUDUR.
  • [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 izin açıklaması gösterilmelidir.
  • DPC uygulamasını "Cihaz Sahibi" olarak kaydetmeden önce cihazda kullanıcı verileri OLABİLİR.
3.9.1.2 Yönetilen profil temel hazırlığı

Cihaz uygulamaları android.software.managed_users bildiriyorsa:

  • [C-1-1], bir cihaz politikası denetleyici (DPC) uygulamasının yeni bir yönetilen profilin sahibi olmasını sağlayan API'leri uygulaması ZORUNLUDUR.

  • [C-1-2] Kullanıcıların deneyimi, yönetilen profil temel hazırlığı 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şlevinin Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığını kullanıcıya bildirmek için Ayarlar'da aşağıdaki kullanıcı olanaklarının sağlanması ZORUNLUDUR:

    • Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya diğer kullanıcı özellikleri (ör. yukarı akış AOSP bilgisi simgesi).
    • Cihaz Yöneticisi tarafından setShortSupportMessage aracılığıyla sağlanan kısa bir açıklama mesajı.
    • DPC uygulamasının simgesi.

3.9.2 Yönetilen Profil Desteği

Cihaz uygulamaları android.software.managed_users bildiriyorsa:

  • [C-1-1], android.app.admin.DevicePolicyManager API'leri üzerinden yönetilen profilleri DESTEKLEMELİDİR.
  • [C-1-2] Bir veya yalnızca bir yönetilen profil oluşturulmasına İZİN VERMELİDİR.
  • [C-1-3]; yönetilen uygulamalar ile widget'ları ve Son Kullanılanlar ve Bildirimler gibi diğer rozetli kullanıcı arayüzü öğelerini temsil eden bir simge rozeti (AOSP yayın öncesi iş rozetine benzer) ZORUNLUDUR.
  • [C-1-4] Kullanıcının yönetilen bir profil uygulamasında olduğunu belirtmek için bir bildirim simgesi (AOSP yukarı akış iş rozetine benzer) GÖRÜNTÜLEMELİDİR.
  • [C-1-5], cihaz uyandığında (ACTION_USER_PRESENT) ve ön plan uygulamasının yönetilen profil içinde olduğu zaman kullanıcının yönetilen profilde olduğunu belirten bir kısa mesaj GÖRÜNTÜLEMELİDİR.
  • [C-1-6] Yönetilen bir profilin mevcut olduğu durumlarda, kullanıcının niyeti yönetilen profilden birincil kullanıcıya yönlendirmesine (Cihaz Politikası Denetleyicisi tarafından etkinleştirildiyse) izin vermek için "Seçici" amacında görsel bir olanak GÖRÜNTÜLEMELİDİR.
  • [C-1-7] Yönetilen profil mevcut olduğunda, hem birincil kullanıcı hem de yönetilen profil için kullanıcıya aşağıdaki olanakların sunulması ZORUNLUDUR:
    • Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplaması.
    • Birincil kullanıcı veya yönetilen profilde yüklenen VPN uygulamalarının bağımsız yönetimi.
    • Birincil kullanıcıya veya yönetilen profile yüklenen uygulamaların bağımsız yönetimi.
    • Birincil kullanıcı veya yönetilen profilde hesapların bağımsız olarak yönetilmesi.
  • [C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş numara çeviricinin, kişilerin ve mesajlaşma uygulamalarının, yönetilen profildeki (varsa) arayan bilgilerinin yanı sıra birincil profildeki arayan bilgilerini de arayıp arayabilmesini ZORUNLUDUR.
  • [C-1-9], yönetilen profil birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa bile, birden fazla kullanıcının etkinleştirildiği bir cihaz için geçerli olan tüm güvenlik şartlarını karşılaması gerekir (bkz.bölüm 9.5).
  • [C-1-10], yönetilen bir profilde çalışan uygulamalara erişim izni vermek için aşağıdaki gereksinimleri karşılayan ayrı bir kilit ekranı belirtme özelliğini DESTEKLEMELİDİR.
    • Cihaz uygulamalarının DevicePolicyManager.ACTION_SET_NEW_PASSWORD amacına uygun olması ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmak üzere bir arayüz göstermesi ZORUNLUDUR.
    • Yönetilen profilin kilit ekranı kimlik bilgilerinin, Android Açık Kaynak Proje Sitesi'nde belgelendiği gibi, ana profille aynı kimlik bilgisi depolama ve yönetim mekanizmalarını kullanması ZORUNLUDUR
    • getParentProfileInstance tarafından döndürülen DevicePolicyManager örneğine çağrılmadığı sürece, DPC şifre politikalarının yalnızca yönetilen profilin kilit ekranı kimlik bilgileri için geçerli olması ZORUNLUDUR.
  • Yönetilen profildeki kişiler önceden yüklenmiş çağrı kaydında, görüşme sırasında kullanıcı arayüzünde, devam eden ve cevapsız arama bildirimlerinde, kişilerde ve mesajlaşma uygulamalarında görüntülendiğinde bu kişilere, yönetilen profil uygulamalarını belirtmek için kullanılan rozetin aynısı SUNULMALIDIR.

3:10. Erişilebilirlik

Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sağlar. Buna ek olarak Android, kullanıcı ve sistem etkinlikleri için geri çağırmalar almak ve metin okuma, dokunsal geribildirim ve iztopu/d-pad ile gezinme gibi alternatif geri bildirim mekanizmaları oluşturmak üzere erişilebilirlik hizmeti uygulamalarına imkan veren platform API'leri sağlar.

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

  • [C-1-1], erişilebilirlik API'leri SDK dokümanlarında açıklandığı şekilde Android erişilebilirlik çerçevesinin uygulamasını SUNMALIDIR.
  • [C-1-2], erişilebilirlik etkinlikleri oluşturmalı ve SDK'da belgelendiği şekilde, kayıtlı tüm AccessibilityService uygulamalarına uygun AccessibilityEvent öğesini sunmalıdır.
  • [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ğlamak üzere android.settings.ACCESSIBILITY_SETTINGS niyetini dikkate almalıdır.
  • [C-1-4] Etkinleştirilen erişilebilirlik hizmetleri AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON bildirdiğinde sistemin gezinme çubuğuna kullanıcının erişilebilirlik hizmetini kontrol etmesini sağlayan bir düğme eklenmesi ZORUNLUDUR . Sistem gezinme çubuğu olmayan cihaz uygulamalarında bu şartın geçerli olmadığını ancak cihaz uygulamalarının kullanıcıya bu erişilebilirlik hizmetlerini kontrol etme imkanı SAĞLAMASI GEREKİR.

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

  • Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde [C-2-1], bu önceden yüklenmiş erişilebilirlik hizmetlerini Doğrudan Başlatma'ya duyarlı uygulamalar olarak uygulamalıdır.
  • Kullanıma hazır kurulum akışında, kullanıcılara ilgili erişilebilirlik hizmetlerini etkinleştirmek için bir mekanizma ile yazı tipi boyutunu, görüntü boyutunu ve büyütme hareketlerini ayarlama seçenekleri sunulmalıdır.

3:11. Metin-Konuşma

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

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

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 uygun olanak ZORUNLUDUR.

3:12. TV Girişi Çerçevesi

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

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [C-1-1], android.software.live_tv adlı platform özelliğini beyan ZORUNLUDUR.
  • [C-1-2] Bir TV uygulamasının (TV uygulaması) önceden yüklenmesi ve bölüm 3.12.1'de açıklanan tüm gereksinimleri karşılaması ZORUNLUDUR.

3.12.1. TV uygulaması

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [C-1-1] TV uygulamasının, TV kanallarını yükleyip kullanmak için gerekli özellikleri sağlaması ve aşağıdaki gereksinimleri karşılaması ZORUNLUDUR:

android.software.live_tv özellik bayrağını beyan eden Android cihaz uygulamaları için gerekli olan TV uygulaması, aşağıdaki koşulları ZORUNLUDUR:

  • Cihaz uygulamaları, üçüncü taraf TIF tabanlı girişlerin (üçüncü taraf girişleri) yüklenmesine ve yönetilmesine İZİN VERİLMELİDİR.
  • Cihaz uygulamaları, önceden yüklenmiş TIF tabanlı girişler (yüklü girişler) ile üçüncü taraf girişleri arasında görsel ayrım sağlayabilir.
  • Cihaz uygulamalarında, üçüncü taraf girişleri, TV uygulamasından tek bir gezinme işleminden daha uzakta GÖRÜNTÜLEMEMELİDİR (ör. TV uygulamasından üçüncü taraf girişlerinin listesini genişletme).

Android Açık Kaynak Projesi, TV uygulamasının yukarıdaki şartları karşılayan bir uygulamasını sağlar.

3.12.1.1. Elektronik Program Rehberi

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [C-1-1], bilgilendirme amaçlı ve etkileşimli bir yer paylaşımının gösterilmesi ZORUNLUDUR. Bu yer paylaşımı, TvContract.Programs alanlarındaki değerlerden oluşturulmuş bir elektronik program rehberinin (EPG) içermesi ZORUNLUDUR.
  • [C-1-2] Kanal değiştirildiğinde, cihaz uygulamalarının şu anda oynatılan programın EPG verilerini görüntülemesi ZORUNLUDUR.
  • [SR] EPG, yüklü girişleri ve üçüncü taraf girişlerini eşit belirginlikle göstermesi için ÖNEMLE ÖNERİLİR. EPG, üçüncü taraf girişlerini EPG'de yüklü girişlerin dışında tek bir gezinme işleminden daha uzağa GÖRÜNTÜLEMEMELİDİR.
  • EPG, yüklü tüm girişlerden ve üçüncü taraf girişlerinden bilgi GÖRÜNTÜLEMELİDİR.
  • EPG, yüklenen girişler ile üçüncü taraf girişleri arasında görsel ayrım sağlayabilir.
3.12.1.2. Navigasyon

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [C-1-1] Android Televizyon cihazının giriş cihazlarında (ör. uzaktan kumanda, uzaktan kumanda uygulaması veya oyun kumandası) D-pad, Geri ve Ana sayfa tuşlarıyla şu işlevler için gezinmeye İZİN VERİLMELİDİR:

    • TV kanallarını değiştirme
    • EPG açılıyor
    • Üçüncü taraf TIF tabanlı girişleri yapılandırma ve ayarlama (bu girişler destekleniyorsa)
    • Ayarlar menüsünü açma
  • Önemli etkinlikler, CEC üzerinden HDMI girişlerine İLETİLMELİDİR.

3.12.1.3. TV giriş uygulaması bağlama

Android Televizyon cihaz uygulamaları, tüm girişlerin geçerli etkinlikten başka bir etkinliğe etkinlik bağlantıları (ör. canlı programdan ilgili içeriğe bağlantı) sağlamasına olanak tanıyan TV giriş uygulaması bağlama özelliğini DESTEKLEMELİDİR. TV uygulaması, sağlandığında TV giriş uygulaması bağlantısını GÖRÜNTÜLEMELİDİR.

3.12.1.4. Zaman kaydırma

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [SR] Kullanıcının canlı içeriği duraklatmasına ve devam ettirmesine olanak tanıyan zaman kaydırmayı desteklemesi Şiddetle ÖNERİLİR.
  • Oynatılan program için zaman kaydırma kullanılabiliyorsa kullanıcıya o anda oynatılan programı duraklatması ve devam ettirmesi için bir yöntem SAĞLANMALIDIR.
3.12.1.5. TV kaydı

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [SR] TV kaydını desteklemesi ÖNEMLE ÖNERİLİR.
  • TV girişi kaydı destekliyorsa ve bir programın kaydı yasak değilse EPG, program kaydetmek için bir yöntem sağlayabilir.

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 sağlar.

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 kartları bir üçüncü taraf uygulamasından eklemesine veya kaldırmasına İZİN VERMELİDİR.
  • [C-1-2] Bir üçüncü taraf uygulamasından gelen Kart'ı doğrudan Hızlı Ayarlar'a otomatik olarak EKLEMEMELİDİR.
  • [C-1-3] Üçüncü taraf uygulamalarına ait tüm kullanıcılar tarafından eklenen karoların, sistem tarafından sağlanan hızlı ayar kutularıyla birlikte GÖRÜNTÜLENMELİDİR.

3:14. Medya kullanıcı arayüzü

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

3:15. Hazır Uygulamalar

Cihaz uygulamalarının aşağıdaki gereksinimleri karşılaması ZORUNLUDUR:

  • [C-0-1] Hazır Uygulamalar'a yalnızca android:protectionLevel öğesinin "ephemeral" olarak ayarlandığı izinlerin verilmesi ZORUNLUDUR.
  • [C-0-2] Hazır Uygulamalar, aşağıdakilerden biri geçerli olmadığı sürece dolaylı intentler aracılığıyla yüklü uygulamalarla ETKİLEŞİME GEÇMEMELİDİR:
    • Bileşenin intent kalıbı filtresi açığa çıktı ve CATEGORY_BROWSABLE öğesine sahip
    • İşlem şunlardan biri: ACTION_SEND, ACTION_SENDTO, ACTION_SEND_MULTIPLE
    • Hedef, android:visibleTo InstantApps ile açıkça gösteriliyor
  • [C-0-3] Hazır Uygulamalar, bileşen android:visibleTo InstantApps aracılığıyla açığa çıkarılmadığı sürece yüklü uygulamalarla açık bir şekilde ETKİLEŞİME GEÇMEMELİDİR.
  • [C-0-4] Hazır Uygulama, yüklü uygulamaya açık bir şekilde bağlanmadığı sürece, IYüklenen Uygulamalar cihazda Hazır Uygulamalar ile ilgili ayrıntıları GÖSTERMEMELİDİR.

3:16. Tamamlayıcı Cihaz Eşleme

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

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

  • [C-1-1], özellik bayrağını FEATURE_COMPANION_DEVICE_SETUP BELİRTMELİDİR .
  • [C-1-2] android.companion paketindeki API'lerin tam olarak uygulanmasını ZORUNLUDUR.
  • [C-1-3] Kullanıcının, tamamlayıcı cihazın mevcut ve çalışır durumda olduğunu seçmesi/onaylaması için kullanıcıya sunduğu olanaklar GEREKİR.

4. Uygulama Paketleme Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1], resmi Android SDK'sında bulunan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarını yükleyip çalıştırabilmelidir.
  • Yukarıdaki gereklilik zorlayıcı olabileceğinden, AOSP referansı uygulamasının paket yönetimi systemDevice uygulamalarını kullanması için cihaz uygulamalarının ÖNERİLİR.
  • [C-0-2] ".apk" dosyalarının, APK İmza Şeması v2 ve JAR imzalama kullanılarak doğrulanmasını desteklemektedir.
  • [C-0-3] .apk, Android Manifest, Dalvik bayt kodu veya RenderScript bayt kodu biçimlerini, bu dosyaların diğer uyumlu cihazlara yüklenmesini ve çalışmasını engelleyecek şekilde GENİŞLETMEMELİDİR.
  • [C-0-4] DELETE_PACKAGE izniyle ilgili SDK'da belirtildiği üzere, paketin mevcut "kayıt yükleyicisi" dışındaki uygulamaların uygulamayı herhangi bir istemde bulunmadan sessizce kaldırmasına İZİN VERİLMEMELİDİR. Bunun tek istisnası, PACKAGE_NEEDS_VERIFICATION amacını işleyen sistem paketi doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE amacını işleyen depolama alanı yöneticisi uygulamasıdır.

Yükleme isteğinde bulunan uygulamalar aşağıdaki tüm gereksinimleri karşılamadığı sürece bilinmeyen kaynaklardan uygulama paketleri YÜKLEMEMELİDİR:

  • REQUEST_INSTALL_PACKAGES iznini beyan etmesi veya android:targetSdkVersion değerini 24 ya da daha düşük bir değere ayarlamış olması ZORUNLUDUR.
  • Kullanıcı tarafından uygulamaya bilinmeyen kaynaklardan uygulama yüklemesi için izin verilmesi ZORUNLUDUR.

Cihaz uygulamalarında, android.settings.MANAGE_UNKNOWN_APP_SOURCES amacını işleyen bir etkinlik ZORUNLUDUR. Kullanıcılara, uygulama başına bilinmeyen kaynaklardan uygulama yükleme izni verme/iptal etme yetkisi VERMELİDİR, ancak cihaz uygulaması kullanıcıların bu seçeneğe sahip olmasını istemiyorsa bunu işlem yok olarak uygulamayı ve startActivityForResult() için RESULT_CANCELED değerini döndürmeyi SEÇMELİDİR. Ancak bu gibi durumlarda bile kullanıcıya neden böyle bir seçenek sunulmadığını BELİRTMELİDİR.

5. Multimedya Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1], MediaCodecList tarafından tanımlanan her bir 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], üçüncü taraf uygulamaların kullanabildiği kodlayıcılar ve kod çözücüler için MediaCodecList üzerinden destek bildirmeli ve bildirmeli.
  • [C-0-3] üçüncü taraf uygulamalarının kodlayabileceği tüm biçimlerin kodunu çözebilmesi ve bu uygulamaların kullanımına sunabilmesi ZORUNLUDUR. Buna, kodlayıcılarının oluşturduğu tüm bit akışları ve CamcorderProfile bölümünde bildirilen profiller dahildir.

Cihaz uygulamaları:

  • Minimum codec gecikmesini hedeflenmeli, diğer bir deyişle
    • Giriş arabelleklerini ve giriş arabelleklerini yalnızca bir kez işlendikten sonra TÜKETMEMELİ ve DEĞERLENDİRMEMELİDİR.
    • Kodu çözülmüş arabelleklerde, standart tarafından belirtilenden (ör. SPS) daha uzun süre TUTULMAMALIDIR.
    • Kodlanmış tamponları GOP yapısının gerektirdiğinden daha uzun süre TUTULMAMALIDIR.

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

Ne Google ne de Open Handset Alliance'ın, bu codec'lerin üçüncü taraf patentlerden bağımsız olduğu konusunda herhangi bir beyanda bulunmadığını unutmayın. Bu kaynak kodu donanım veya yazılım ürünlerinde kullanmak isteyen kişilere, açık kaynak yazılımlar veya paylaşılan yazılımlar da dahil olmak üzere bu kodu uygulamak için ilgili patent sahiplerinden patent lisansları alınması gerekebileceği tavsiye edilir.

5.1. Medya Codec'leri

5.1.1. Ses Kodlama

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

android.hardware.microphone bildirilen cihaz uygulamaları aşağıdaki ses kodlamasını DESTEKLEMELİDİR:

  • [C-1-1] PCM/DALGA

5.1.2. Ses Kodu Çözme

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

Cihaz uygulamaları, android.hardware.audio.output özelliğini desteklediğini beyan ederse:

  • [C-1-1] MPEG-4 AAC Profili (AAC LC)
  • [C-1-2] MPEG-4 HE AAC Profili (AAC+)
  • [C-1-3] MPEG-4 HE AACv2 Profili (geliştirilmiş AAC+)
  • [C-1-4] AAC ELD (geliştirilmiş düşük gecikmeli AAC)
  • [C-1-5] FLAC
  • [C-1-6] MP3
  • [C-1-7] MIDI
  • [C-1-8] Vorbis
  • [C-1-9] PCM/DALGA
  • [C-1-10] Opus

Cihaz uygulamaları, android.media.MediaCodec API'sinde varsayılan AAC ses kod çözücüyü kullanarak çok kanallı akışların (yani ikiden fazla kanal) AAC giriş arabelleklerinin şifresinin PCM'ye kodlanmasını destekliyorsa, aşağıdakiler desteklenmelidir:

  • [C-2-1] Kod çözme işlemi aşağı karıştırılmadan yapılmalıdır (örneğin, 5.0 AAC akışının kodu beş PCM kanalına, 5.1 AAC akışının kodu altı PCM kanalına çözümlenmelidir).
  • [C-2-2] Dinamik aralık meta verisi, ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde ve ses kod çözücünün dinamik aralıkla ilgili davranışlarını yapılandırmak için android.media.MediaFormat DRC anahtarlarında tanımlandığı gibi ZORUNLUDUR. 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

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

Biçim/Codec Ayrıntılar Desteklenen Dosya Türleri/Kapsayıcı Biçimleri
MPEG-4 AAC profili
(AAC LC)
8 ila 48 kHz arasında standart örnekleme hızlarıyla mono/stereo/5.0/5.1 içerik desteği.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
  • ADTS ham AAC (.aac, ADIF desteklenmez)
  • MPEG-TS (.ts, aranabilir değil)
MPEG-4 HE AAC Profili (AAC+) 16 ila 48 kHz arasında standart örnekleme hızlarıyla mono/stereo/5.0/5.1 içerik desteği.
MPEG-4 HE AACv2
Profili (geliştirilmiş AAC+)
16 ila 48 kHz arasında standart örnekleme hızlarıyla mono/stereo/5.0/5.1 içerik desteği.
AAC ELD (geliştirilmiş düşük gecikmeli AAC) Standart örnekleme hızları 16 ila 48 kHz arasında olan mono/stereo içerik desteği.
AMR ve NB 8 kHz'de örneklenmiş 4,75 - 12,2 kb/sn 3GPP (.3gp)
AMR-WB 16 kHz'de örneklenmiş 6,60 kbit/sn ile 23,85 kbit/s arasındaki 9 hız
FLAC Mono/Stereo (çok kanallı değil). 48 kHz'e kadar örnek hızları (ancak 48-44,1 kHz alt örnekleyicide düşük geçiş filtresi bulunmadığından 44,1 kHz çıkışa sahip cihazlarda 44,1 kHz'e kadar ÖNERİLİR). 16 bit ÖNERİLİR; 24 bit için kararsızlık 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 Sürüm 1 ve 2. XMF ve Mobile XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek
  • 0 ve 1 yazın (.mid, .xmf, .mxmf)
  • RTTTL/RTX (.rtttl, .rtx)
  • OTA (.ota)
  • iMelody (.imy)
Vorbis
  • Ogg (.ogg)
  • Matroska (.mkv, Android 4.0 ve sonraki sürümleri)
PCM/DALGA 16 bit doğrusal PCM (donanım sınırına kadar hızlanır). Cihazların ham PCM kaydı için 8000, 11025, 16000 ve 44100 Hz frekanslarında örnekleme hızlarını desteklemesi gerekir. DALGA (.wav)
Opus Matroska (.mkv), Ogg(.ogg)

5.1.4. Resim Kodlama

Ayrıntılı bilgi için 5.1.6. Resim Codec'leri Ayrıntıları.

Cihaz uygulamalarında aşağıdaki resim kodlamasının kodlanması ZORUNLUDUR:

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

5.1.5. Resim Kodu Çözme

Ayrıntılı bilgi için 5.1.6. Resim Codec'leri Ayrıntıları.

Cihaz uygulamalarında, aşağıdaki resim kodu çözme işleminin kodlanması ZORUNLUDUR:

  • [C-0-1] JPEG
  • [C-0-2] GIF
  • [C-0-3] PNG
  • [C-0-4] BMP
  • [C-0-5] WebP'si
  • [C-0-6] Ham

5.1.6. Resim 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)

5.1.7. Video Codec'leri

  • Web 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ı bir video kod çözücü veya kodlayıcı içeriyorsa:

  • [C-1-1] Video codec'leri, standart ve yapılandırma tarafından belirlenen ancak genelleştirme dışındaki, uygulanabilir en büyük sıkıştırılmış ve sıkıştırılmamış kareyi barındıran çıkış ve giriş bayt arabelleği boyutlarını DESTEKLEMELİDİR.

  • [C-1-2] Video kodlayıcılar ve kod çözücüler YUV420 esnek renk biçimini (COLOR_FormatYUV420Esnek) DESTEKLEMELİDİR.

Cihaz uygulamaları, HDR profili desteğini Display.HdrCapabilities üzerinden tanıtıyorsa:

  • [C-2-1], HDR statik meta verilerin ayrıştırılmasını ve işlenmesini DESTEKLEMELİDİR.

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

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

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 bölüm 5.2 ve 5.3'e 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 bkz. bölüm 5.3 MPEG-4 (.mp4)
MPEG-2 Ana Profil MPEG2-TS
MPEG-4 SP 3GPP (.3gp)
VP8 Ayrıntılar için bölüm 5.2 ve 5.3'e bakın
Başkan Yardımcısı Ayrıntılar için bkz. bölüm 5.3

5.2. Video Kodlaması

Cihaz uygulamaları, herhangi bir video kodlayıcıyı destekliyor ve bunu üçüncü taraf uygulamalarının kullanımına sunuyorsa:

  • İki kayan pencerenin üzerinde, çerçeve içi (i-çerçeve) aralıklar arasındaki bit hızının ~% 15'ten fazla üzerinde olmaması gerekir.
  • 1 saniyelik kayan bir pencerede bit hızının yaklaşık% 100'ün üzerinde OLMAMALIDIR.

Cihaz uygulamaları, diyagonal uzunluğu en az 2,5 inç olan yerleşik bir ekran görüntüsü veya video çıkış bağlantı noktası içeriyor ya da kamera desteğini android.hardware.camera.any özellik bayrağıyla beyan ediyorsa:

  • [C-1-1] VP8 veya H.264 video kodlayıcılarından en az birinin desteğini içermeli ve bunu üçüncü taraf uygulamalarında kullanılabilir hale getirmelidir.
  • Hem VP8 hem de H.264 video kodlayıcıları desteklemeli ve bunları üçüncü taraf uygulamalarında kullanılabilir hale getirmelisiniz.

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

  • [C-2-1], dinamik olarak yapılandırılabilen bit hızlarını desteklemektedir.
  • Video kodlayıcı, giriş arabelleklerinin zaman damgalarına göre anlık kare süresini belirlemeli ve bit grubunu bu kare süresine göre ayırmalıdır.

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

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

5.2.1. H.263

Cihaz uygulamaları, H.263 kodlayıcıları destekliyor ve bunları üçüncü taraf uygulamalarının kullanımına sunuyorsa:

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

5.2.2. H-264

Cihaz uygulamaları H.264 codec'i destekliyorsa:

  • [C-1-1] Temel Profil Düzeyi 3'ü DESTEKLEMELİDİR. Ancak ASO (İsteğe Bağlı Dilim Siparişi), FMO (Esnek Makro Blok Siparişleme) ve RS (Gereksiz Dilimler) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğun korunması için kodlayıcılar tarafından Temel Profilde ASO, FMO ve RS'lerin kullanılmaması ÖNERİLİR.
  • [C-1-2] aşağıdaki tabloda yer alan SD (Standart Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
  • Ana Profil Düzeyi 4'ü DESTEKLEMELİDİR.
  • Aşağıdaki tabloda belirtildiği şekilde HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.

Cihaz uygulamaları, medya API'leri üzerinden 720p veya 1080p çözünürlüklü videolar için H.264 kodlamayı desteklediğini bildiriyorsa:

  • [C-2-1] aşağıdaki tabloda yer alan kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p
Video çözünürlüğü 320 x 240 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel
Video kare hızı Saniyede 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'i destekliyorsa:

  • [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
  • Aşağıdaki HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
  • Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
  • Web video akışı ve video konferans hizmetlerinin kalitesi kabul edilebilir düzeyde olduğundan emin olmak için WebM projesi RTC donanım kodlama gereksinimlerini karşılayan bir donanım VP8 codec'i kullanmanız GEREKİR.

Cihaz uygulamaları, medya API'leri üzerinden 720p veya 1080p çözünürlüklü videolar için VP8 kodlamayı desteklediğini bildiriyorsa:

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

5.2.4. Başkan Yardımcısı

Cihaz uygulamaları VP9 codec'i destekliyorsa:

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

5.3. Video Kodu Çö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üğünü ve kare hızını gerçek zamanlı olarak ve cihazdaki her bir codec tarafından desteklenen maksimum çözünürlüğe kadar desteklemelidir.

Cihaz uygulamaları , HDR_TYPE_DOLBY_VISION üzerinden Dolby Vision kod çözücü desteği verdiğini bildirirse:

  • [C-2-1] Dolby Vision özellikli bir ayıklayı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).
  • [C-2-3], geriye dönük uyumlu temel katmanların (varsa) izleme dizininin, birleştirilmiş Dolby Vision katmanının parkur diziniyle aynı olacak şekilde ayarlanması ZORUNLUDUR.

5.3.1. MPEG-2

Cihaz uygulamaları, MPEG-2 kod çözücüleri destekliyorsa:

  • [C-1-1], ana profil üst düzeyini DESTEKLEMELİDİR.

5.3.2. H.263

Cihaz uygulamaları, H.263 kod çözücüleri destekliyorsa:

  • [C-1-1] Temel Profil Düzeyi 30 ve Düzey 45'i DESTEKLEMELİDİR.

5.3.3. MPEG-4

MPEG-4 kod çözücülere sahip cihaz uygulamaları için:

  • [C-1-1] Basit Profil Düzeyi 3'ü DESTEKLEMELİDİR.

5.3.4. H.264

Cihaz uygulamaları, H.264 kod çözücüleri destekliyorsa:

  • [C-1-1] Ana Profil Düzeyi 3.1'i ve Temel Profil'i DESTEKLEMELİDİR. ASO (İsteğe Bağlı Dilim Siparişi), FMO (Esnek Makro Blok Siparişi) ve RS (Gereksiz Dilimler) desteği İSTEĞE BAĞLIDIR.
  • [C-1-2] Aşağıdaki tabloda listelenen ve Temel Profil ile Ana Profil Düzeyi 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlüklü) profillerine sahip videoların kodunu çözebilmesi ZORUNLUDUR.
  • Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlüklü) profillerine sahip videoların kodunu çözebilmelidir.

Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik video çözünürlüğüne eşit veya bundan daha yüksekse cihaz uygulamaları:

  • [C-2-1] aşağıdaki tabloda yer alan HD 720p video kodlama profillerini DESTEKLEMELİDİR.
  • [C-2-2] aşağıdaki tabloda yer alan HD 1080p video 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ı 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'i destekliyorsa:

  • [C-1-1], aşağıdaki tabloda belirtilen Ana Profil Düzeyi 3 Ana katmanını ve SD video kod çözme profillerini DESTEKLEMELİDİR.
  • Aşağıdaki tabloda belirtildiği şekilde HD kod çözme profillerini DESTEKLEMELİDİR.
  • [C-1-2], donanım kod çözücü varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.

Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik video çözünürlüğüne eşit veya ondan yüksekse:

  • [C-2-1] Cihaz uygulamalarında; 720, 1080 ve UHD profillerine ait H.265 veya VP9 kod çözme yöntemlerinden en az birinin desteklenmesi ZORUNLUDUR.
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'i destekliyorsa:

  • [C-1-1] aşağıdaki tabloda yer alan SD kod çözme profillerini DESTEKLEMELİDİR.
  • Gereksinimleri karşılayan bir donanım VP8 codec'i KULLANMALIDIR.
  • Aşağıdaki tabloda yer alan HD kod çözme profillerini DESTEKLEMELİDİR.

Display.getSupportedModes() yönteminin bildirdiği yükseklik video çözünürlüğüne eşit veya bundan büyükse:

  • [C-2-1] Cihaz uygulamaları, aşağıdaki tabloda yer alan 720p profilleri desteklemektedir.
  • [C-2-2] Cihaz uygulamaları, aşağıdaki tabloda yer alan 1080p profilleri desteklemektedir.
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. Başkan Yardımcısı

Cihaz uygulamaları VP9 codec'i destekliyorsa:

  • [C-1-1], aşağıdaki tabloda belirtildiği şekilde SD video kod çözme profillerini DESTEKLEMELİDİR.
  • Aşağıdaki tabloda belirtildiği şekilde HD kod çözme profillerini DESTEKLEMELİDİR.

Cihaz uygulamaları VP9 codec'i ve donanım kod çözücüyü destekliyorsa:

  • [C-2-2], aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.

Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik video çözünürlüğüne eşit veya ondan yüksekse:

  • [C-3-1] Cihaz uygulamalarında; 720, 1080 ve UHD profillerine ait VP9 veya H.265 kod çözme yöntemlerinden en az birinin desteklenmesi ZORUNLUDUR.
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 özellikli 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 açıklanan gereksinimlerden bazıları Android 4.3'ten itibaren KULLANILMALIDIR olarak listelenmiş olsa da gelecekteki sürümlerin Uyumluluk Tanımı'nın bunları ZORUNLU olarak değiştirmesi planlanmaktadır. Mevcut ve yeni Android cihazların, GEREKLİ olarak listelenen bu gereksinimleri karşılaması ÖNERİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiğinde Android uyumluluğuna ulaşamazlar.

5.4.1. Ham Ses Yakalama

Cihaz uygulamaları android.hardware.microphone bildiriyorsa:

  • [C-1-1] Aşağıdaki özelliklere sahip işlenmemiş 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 GEREKİR.

  • Yukarıda verilen örnek hızları aşağı örneklemeyle yakalandığında [C-1-3] uygun bir kenar yumuşatma filtresi İÇERMELİDİR.
  • Ham ses içeriğinin AM radyo ve DVD kalitesinde yakalanmasına İZİN VERİLMELİDİR, bu da şu özellikleri ifade eder:

  • Biçim: Doğrusal PCM, 16 bit

  • Örnekleme hızları: 22.050, 48.000 Hz
  • Kanallar: Stereo

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

  • [C-2-1] 16000:22050 veya 44100:48000'den yüksek bir oranda yukarı örnekleme olmadan yakalama GEREKİR.
  • [C-2-2] Yukarı örnekleme veya aşağı örnekleme için uygun bir kenar yumuşatma filtresi İÇERMELİDİR.

5.4.2. Ses Tanıma için Ekran Kaydı

Cihaz uygulamaları android.hardware.microphone bildiriyorsa:

  • [C-1-1] android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION ses kaynağını, örnekleme hızlarından birinde (44100 ve 48000) yakalamalıdır.
  • [C-1-2] AudioSource.VOICE_RECOGNITION ses kaynağından ses akışı kaydederken varsayılan olarak gürültü azaltma özellikli ses işlemenin devre dışı bırakılması ZORUNLUDUR.
  • [C-1-3] AudioSource.VOICE_RECOGNITION ses kaynağından ses akışı kaydederken varsayılan olarak otomatik kazanç kontrolünün devre dışı bırakılması ZORUNLUDUR.
  • Ses tanıma ses akışını, yaklaşık olarak düz genlik ve frekans özellikleriyle (özellikle, ±3 dB, 100 Hz ile 4000 Hz arasında) kaydetmeniz GEREKİR.
  • Ses tanıma ses akışını, 1000 Hz'deki 90 dB ses gücü seviyesi (SPL) kaynağı, 16 bitlik örnekler için 2500 RMS sağlayacak şekilde giriş hassasiyeti ayarlanmış şekilde kaydetmeniz gerekir.
  • Ses tanıma ses akışını, PCM genlik düzeyleri giriş SPL'sinin mikrofonda -18 dB ile +12 dB, 90 dB SPL arasında en az 30 dB'lik bir aralıkta doğrusal olarak izleneceği şekilde kaydedilmelidir.
  • Ses tanıma ses akışını, mikrofondaki 90 dB SPL giriş düzeyinde 1 kHz için% 1'den düşük toplam harmonik distorsiyonla (THD) kaydetmeniz GEREKİR.

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

  • [C-2-1], bu ses efektinin android.media.audiofx.NoiseSuppressor API ile kontrol edilebilmesine İZİN VERMELİDİR.
  • [C-2-2], her bir gürültü azaltma teknolojisi uygulamasını AudioEffect.Descriptor.uuid alanı yoluyla benzersiz şekilde tanımlamalıdır.

5.4.3. Oynatmanın Yeniden Yönünün Belirlenmesi için Fotoğraf Çek

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

Cihaz uygulamalarında hem android.hardware.audio.output hem de android.hardware.microphone tanımlanıyorsa:

  • [C-1-1] REMOTE_SUBMIX ses kaynağını doğru bir şekilde uygulamalıdır. Böylece, 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 bir karışımını yakalar:

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

5.5. Ses Çalma

Android, bölüm 7.8.2'de tanımlandığı gibi uygulamaların ses çıkışı çevre birimi üzerinden ses çalmasına izin veren desteği içerir.

5.5.1. Ham Ses Oynatma

Cihaz uygulamaları android.hardware.audio.output bildiriyorsa:

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

    • Biçim: Doğrusal PCM, 16 bit
    • Örnekleme ücretleri: 8000, 11025, 16000, 22050, 32000, 44100
    • Kanallar: Mono, Stereo
  • Aşağıdaki özelliklere sahip ham ses içeriğinin çalınmasına İZİN VERİLMELİDİR:

    • Örnekleme ücretleri: 24.000, 48.000

5.5.2. Ses Efektleri

Android, cihaz uygulamalarına yönelik bir ses efektleri API'si sağlar.

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

  • [C-1-1], AudioEffect alt sınıfları Equalizer, LoudnessEnhancer üzerinden kontrol edilebilen EFFECT_TYPE_EQUALIZER ve EFFECT_TYPE_LOUDNESS_ENHANCER uygulamalarını desteklemelidir.
  • [C-1-2], Visualizer sınıfı üzerinden kontrol edilebilen görselleştirici API uygulamasını desteklemelidir.
  • BassBoost, EnvironmentalReverb, PresetReverb ve Virtualizer AudioEffect alt sınıfları üzerinden kontrol edilebilen EFFECT_TYPE_BASS_BOOST, EFFECT_TYPE_ENV_REVERB, EFFECT_TYPE_PRESET_REVERB ve EFFECT_TYPE_VIRTUALIZER uygulamalarını DESTEKLEMELİDİR.

5.5.3. Ses Çıkışı Ses Seviyesi

Otomotiv cihaz uygulamaları:

  • AudioAttributes özelliği ve android.car.CarAudioManager politikasında herkese açık olarak tanımlanan araç sesi kullanımı tarafından tanımlanan içerik türü veya kullanımı kullanılarak ses düzeyinin her ses akışı için ayrı ayrı ayarlanmasına izin VERİLMELİDİR.

5.6. Ses Gecikmesi

Ses gecikmesi, ses sinyalinin bir sistemden geçmesi nedeniyle oluşan gecikmedir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikmelere ihtiyaç duyar.

Bu bölümde aşağıdaki tanımları kullanabilirsiniz:

  • çıkış gecikmesi. Bir uygulamanın PCM kodlu verilerin bir çerçevesini yazması ile cihaz üzerindeki bir dönüştürücüde veya sinyalin ortama karşılık gelen sesin bir bağlantı noktası aracılığıyla cihazdan ayrılması ve harici olarak gözlemlenmesi arasındaki zaman aralığı.
  • soğuk çıkış gecikmesi. Ses çıkış sistemi istekten önce boşta ve kapalı olduğunda ilk kare için çıkış gecikmesi.
  • Sürekli çıkış gecikmesi. Cihaz ses çaldıktan sonra, sonraki kareler için çıkış gecikmesi.
  • giriş gecikmesi. Bir sesin ortam tarafından cihaz üzerinde bir transdüser veya sinyalin cihaza sunulması ile cihazın bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın PCM kodlu verilerin karşılık gelen çerçevesini okuması arasında geçen aralık.
  • kayıp giriş. Giriş sinyalinin kullanılamıyor veya kullanılamayan ilk kısmı.
  • soğuk giriş gecikmesi. İstekten önce ses giriş sistemi boşta ve kapalı olduğunda ilk kare için kaybedilen giriş süresi ile giriş gecikmesinin toplamı.
  • sürekli giriş gecikmesi. Cihaz ses kaydederken sonraki kareler için giriş gecikmesi.
  • soğuk çıkış ses dalgalanması. Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
  • soğuk giriş ses dalgalanması. Baştan gelen giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
  • sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesi ile sürekli çıkış gecikmesi ve bir arabellek süresinin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ve çıkış akışları arasındaki faz farkını azaltması için gereken süreyi sağlar.
  • OpenSL ES PCM arabellek sırası API'si. Android NDK içindeki PCM ile ilgili OpenSL ES API'leri grubu.
  • AAudio yerel ses API'si. Android NDK içindeki AAudio API'leri grubu.

android.hardware.audio.output tanımlanan cihaz uygulamaları, aşağıdaki gereksinimleri karşılamaları veya aşmaları ÖNEMLE ÖNERİLİR:

  • [SR] 100 milisaniye veya daha az soğuk çıkış gecikmesi
  • [SR] 45 milisaniye veya daha kısa sürekli çıkış gecikmesi
  • [SR] Soğuk çıkış ses dalgalanmasını en aza indir

Cihaz uygulamaları, OpenSL ES PCM arabellek sırası API'si kullanılırken herhangi bir ilk kalibrasyondan sonra yukarıdaki gereksinimleri karşılıyorsa desteklenen en az bir ses çıkış cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için bunlar şu şekildedir:

  • [SR] android.hardware.audio.low_latency özellik bayrağını beyan ederek düşük gecikmeli sesin bildirilmesi için ÖNEMLE ÖNERİLİR.
  • [SR] AAudio API aracılığıyla düşük gecikmeli ses gereksinimlerini karşılaması da ÖNEMLE ÖNERİLİR.

Cihaz uygulamaları, OpenSL ES PCM arabellek sırası API üzerinden düşük gecikmeli ses gereksinimlerini karşılamıyorsa:

  • [C-1-1] düşük gecikmeli ses desteği BİLDİRMEMELİDİR.

Cihaz uygulamaları android.hardware.microphone içeriyorsa aşağıdaki ses girişi gereksinimlerini karşılamaları ÖNERİLİR:

  • [SR] 100 milisaniye veya daha az soğuk giriş gecikmesi
  • [SR] 30 milisaniye veya daha kısa sürekli giriş gecikmesi
  • [SR] 50 milisaniye veya daha kısa süreli gidiş dönüş gecikmesi
  • [SR] Soğuk giriş ses dalgalanmasını en aza indir

5.7. Ağ Protokolleri

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

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

  • [C-1-1], HTTP(S) üzerinden bölüm 5.1'de belirtilen tüm gerekli codec'leri ve kapsayıcı biçimlerini DESTEKLEMELİDİR.

  • [C-1-2], aşağıdaki Medya Segmenti Biçimleri tablosunda HTTP Canlı Yayın taslak protokolü, Sürüm 7 üzerinde gösterilen medya segmenti biçimlerini DESTEKLEMELİDİR.

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

Medya Segmenti Biçimleri

Segment biçimleri Referanslar Gerekli codec desteği
MPEG-2 Taşıma Akışı ISO 13818 Video codec'leri:
  • H264 AVC
  • MPEG-4 SP
  • MPEG-2
H264 AVC, MPEG2-4 SP,
ve MPEG-2 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın.

Ses codec'leri:

  • AAC
AAC ve varyantları hakkında ayrıntılar için bölüm 5.1.1'e bakın.
ADTS kadrajı ve ID3 etiketleri içeren AAC ISO 13818-7 AAC ve varyantları hakkında ayrıntılar 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ılar 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-2.000 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 hakkında ayrıntılı bilgi için bölüm 5.1.1'e 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-genel RFC 3640 AAC ve varyantları hakkında ayrıntılar için bölüm 5.1.1'e bakın.
MP2T RFC 2250 Ayrıntılar için HTTP Canlı Akışı altındaki MPEG-2 Taşıma Akışı bölümüne bakın

5.8. Güvenli Medya

Cihaz uygulamaları, güvenli video çıkışını destekliyor ve güvenli yüzeyleri destekleyebiliyorsa:

  • [C-1-1], Display.FLAG_SECURE için destek bildirmeli.

Cihaz uygulamaları Display.FLAG_SECURE desteği olduğunu beyan ediyor ve kablosuz görüntü protokolünü destekliyorsa:

  • [C-2-1], Miracast gibi kablosuz protokollerle bağlanan ekranlarda, HDCP 2.x veya sonraki bir sürümü gibi kriptografik olarak güçlü bir mekanizma ile bağlantıyı güvenli hale getirmelidir.

Cihaz uygulamaları Display.FLAG_SECURE için destek bildiriyorsa ve kablolu harici ekranı destekliyorsa:

  • [C-3-1] tüm kablolu harici ekranlarda HDCP 1.2 veya sonraki sürümleri DESTEKLEMELİDİR.

5.9. Müzik Aleti 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], MIDI olmayan genel bağlantı sağlayan tüm MIDI özellikli donanım aktarımlarında MIDI'yı desteklemelidir. Bu aktarımlar şunlardır:

  • [C-1-2] uygulamalar arası MIDI yazılım aktarımını (sanal MIDI cihazları) DESTEKLEMELİDİR

5.10. Profesyonel Ses

Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla android.hardware.audio.pro özelliğine yönelik desteği bildiriyorsa:

  • [C-1-1], android.hardware.audio.low_latency özelliği için desteği BİLDİRMELİDİR.
  • [C-1-2], bölüm 5.6'daki Ses Gecikmesi'nde tanımlandığı gibi, kesintisiz gidiş dönüş ses gecikmesine sahip OLMALIDIR. Desteklenen bir yol boyunca en az 20 milisaniye olması ve bu sürenin 10 milisaniye veya daha kısa olması ZORUNLUDUR.
  • [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
  • [C-1-4], android.software.midi özelliği için desteği BİLDİRMELİDİR.
  • [C-1-5] Gecikmeleri ve USB ses gereksinimlerini OpenSL ES PCM arabellek sırası API'sini kullanarak karşılaması ZORUNLUDUR.
  • [SR] Ses aktifken ve CPU yükü değişiklik gösterirken tutarlı bir CPU performansı düzeyi sağlaması ÖNEMLE ÖNERİLİR. Bu, SimpleSynth kaydı kullanılarak test edilmelidir: 1bd6391. SimpleSynth uygulamasının aşağıdaki parametrelerle çalıştırılması ve 10 dakika sonra sıfır çalıştırma sayısı elde etmesi gerekir:
    • İş döngüleri: 200.000
    • Değişken yük: AÇIK (bu ayar, her 2 saniyede bir iş döngülerinin 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 saatinin doğruluğunu ve standart saate göre kayması en aza indirilmelidir.
  • Her ikisi de etkin olduğunda ses saati kayması CLOCK_MONOTONIC CPU'ya göre en aza indirilmelidir.
  • Cihaz üzerindeki transdüserlerde ses gecikmesini en aza indirmelidir.
  • USB dijital ses üzerinden ses gecikmesini en aza indirmelidir.
  • Ses gecikmesi ölçümleri tüm yollar için belgelenmelidir.
  • Geri çağırma ile tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediğinden ses arabelleği tamamlama geri çağırma giriş sürelerinde dalgalanmayı en aza indirmelisiniz.
  • Raporlanan gecikmede normal kullanım altında sıfır ses çıkışı (çıkış) veya aşım (giriş) değeri SAĞLANMALIDIR.
  • Kanallar arası gecikme farkının sıfır olması GEREKİR.
  • MIDI, tüm aktarımlarda ortalama gecikmeyi en aza indirmelidir.
  • Tüm aktarımlarda yük altındaki MIDI gecikmesi değişkenliğini (ses dalgalanması) en aza indirmelidir.
  • Tüm aktarımlar üzerinde doğru MIDI zaman damgaları SAĞLANMALIDIR.
  • Soğuk başlatmadan hemen sonraki süre de dahil olmak üzere cihaz üzerindeki transdüserlerde ses sinyali gürültüsünü en aza indirmelisiniz.
  • Her ikisi de etkin olduğunda, karşılık gelen uç noktalarının giriş ve çıkış tarafları arasında sıfır ses saati farkı SAĞLANMALIDIR. Karşılık gelen bitiş noktalarına örnek olarak cihaz üzerinde 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ış noktaları için ses arabelleği tamamlama geri çağırmalarını işlemeli ve giriş geri çağırmasından hemen sonra çıkış geri çağırmasını girmelisiniz. Geri çağırmaların aynı iş parçacığı üzerinde yapılması uygun değilse uygulamanın giriş ve çıkış tarafları için tutarlı bir zamanlamaya sahip olmasını sağlamak amacıyla, giriş geri çağırması girildikten kısa bir süre sonra çıkış geri çağırmasını girin.
  • Karşılık gelen uç noktalarının giriş ve çıkış tarafları için HAL ses arabelleğe alma arasındaki faz farkını en aza indirmelisiniz.
  • Dokunma gecikmesini en aza indirmeli.
  • Yükleme sırasında dokunma gecikmesi değişkenliğini (ses dalgalanması) en aza indirmelidir.

Cihaz uygulamaları yukarıdaki gereksinimlerin tümünü karşılıyorsa:

Cihaz uygulamaları, OpenSL ES PCM arabellek sırası API'si aracılığıyla gereksinimleri karşılıyorsa:

  • [SR] AAudio API aracılığıyla da aynı koşulları karşılaması ÖNERİLİR.

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

Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakını çıkarıp USB ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:

  • [C-3-1] USB ses sınıfının uygulanması ZORUNLUDUR.
  • [C-3-2] USB ses sınıfı kullanan USB ana makine modu bağlantı noktası üzerinden en fazla 20 milisaniyelik kesintisiz bir gidiş dönüş ses gecikmesine sahip olmalıdır.
  • Sürekli gidiş dönüş ses gecikmesi, USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktasından 10 milisaniye veya daha az olmalıdır.

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

  • [C-4-1]; bit derinliği kaybı veya yeniden örnekleme olmaksızın, stereo çıkışları ve 20 bit veya 24 bit derinlikte ve 192 kHz'lik sekiz kanalda çıkışı DESTEKLEMELİDİR.

5:11. İşlenmemiş İçerikleri Yakalama

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

Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemek ve bunu üçüncü taraf uygulamalarının kullanımına sunmak niyetindeyse:

  • [C-1-1], desteği android.media.AudioManager mülkü PROPERTY_SUPPORT_AUDIO_SOURCE_UNprocessingED üzerinden BİLDİRMELİDİR.

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

  • [C-1-3], düşük frekans aralığında genlik düzeyleri sergilemelidir. İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla özellikle 5 Hz ile 100 Hz arasında ±20 dB ile 100 Hz arasında değişen değerler elde edilmelidir.

  • [C-1-4], yüksek frekans aralığında genlik düzeyleri sergilemelidir. İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla özellikle 7.000 Hz ile 22 KHz arasında ±30 dB ile 22 KHz arasında değişen değerler elde edilmelidir.

  • [C-1-5] ses girişi hassasiyetini, 94 dB Ses Basıncı Düzeyinde (SPL) çalınan 1.000 Hz sinüsoidal ton kaynağında, 16 bit örnek için 520 RMS ile (veya kullanılan her mikrofonlu kaynak/çift hassasiyetli kaynak işlemede -36 dB Tam Ölçekli) yanıt verecek şekilde ayarlamak ZORUNLUDUR.

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

  • [C-1-7] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonda ve her bir mikrofonda 90 dB SPL giriş düzeyinde 1 kHZ için% 1'in altında bir toplam harmonik bozulmanın (THD) olması ZORUNLUDUR.

  • Yolda, seviyeyi istenen aralığa getirmek için seviye çarpanı dışında başka bir sinyal işleme (ör. Otomatik Kazanç Kontrolü, Yüksek Geçiş Filtresi veya Yankı giderme) bulunmamalıdır. Başka bir deyişle:

  • [C-1-8] Herhangi bir nedenle mimaride herhangi bir sinyal işleme mevcutsa devre dışı bırakılmalı ve sinyal yoluna etkin bir şekilde sıfır gecikme veya ekstra gecikme uygulanmalıdır.
  • [C-1-9] Seviye çarpanı, yolda olmasına izin verilirken, sinyal yolunda gecikme veya gecikme SAĞLANMAMALIDIR.

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

Cihaz uygulamaları android.hardware.microphone tanımlıyorsa ancak işlenmemiş ses kaynağını desteklemiyorsa şunlar geçerlidir:

  • [C-2-1], destek eksikliğini doğru bir şekilde belirtmek amacıyla AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED) API yöntemi için null sonucunu döndürmelidir.
  • İşlenmemiş kayıt kaynağının sinyal yoluyla ilgili gerekli birçok koşulu karşılamak için [SR] yine de ÖNEMLE ÖNERİLİR.

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

6.1. Geliştirici araçları

Cihaz uygulamaları:

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

    • [C-0-2], Android SDK'da belirtildiği gibi dumpsys'i içeren tüm adb işlevlerini DESTEKLEMELİDİR.
    • [C-0-3] dumpsys ile günlüğe kaydedilen cihaz sistem etkinliklerinin (batteryistatistik , disk istatistik, parmak izi, grafik istatistik, netstat, bildirim, procstats) biçimini veya içeriğini DEĞİŞTİRMEMELİDİR.
    • [C-0-4] cihaz tarafı adb arka plan programının varsayılan olarak etkin olmaması ve Android Debug Bridge'i açmak için kullanıcı tarafından erişilebilen bir mekanizmanın olması ZORUNLUDUR.
    • [C-0-5] güvenli adb'yi DESTEKLEMELİDİR. Android, güvenli adb desteği sunar. Güvenli adb, 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ĞLAMALIDIR. Örnek:

      • Çevre birimi modunu destekleyen bir USB bağlantı noktası olmayan cihaz uygulamalarının yerel alan ağı (Ethernet veya Kablosuz gibi) üzerinden adb uygulaması ZORUNLUDUR.
      • Windows 7, 9 ve 10 için sürücüler sağlanarak geliştiricilerin adb protokolünü kullanarak cihaza bağlanması ZORUNLUDUR.
  • Dalvik Hata Ayıklama İzleme Hizmeti (ddms)

    • [C-0-7], Android SDK'sında belirtildiği şekilde tüm ddms özelliklerini DESTEKLEMELİDİR. ddms desteği adb kullandığından, ddms desteğinin varsayılan olarak etkin olmaması GEREKİR, ancak kullanıcı yukarıdaki gibi Android Hata Ayıklama Köprüsü'nü her etkinleştirdiğinde bu özelliğin desteklenmesi ZORUNLUDUR.
  • Maymun
    • [C-0-8] Monkey çerçevesini içermeli ve uygulamaların çalışması için kullanılabilir hale getirmelidir.
  • SysTrace
    • [C-0-9], Android SDK'da belirtildiği şekilde sistem izleme aracını DESTEKLEMELİDİR. Systrace, varsayılan olarak etkin olmamalı ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma ZORUNLUDUR.

6.2. Geliştirici seçenekleri

Android'de, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmaları için destek sunulur.

Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim SAĞLANMALIDIR. Bu özellikler:

  • [C-0-1], uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS niyetini dikkate almalıdır. Yukarı yönlü 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ü öğesinde yedi (7) kez bastıktan sonra Geliştirici Seçenekleri'ni başlatmalarına olanak tanır.
  • [C-0-2] Geliştirici Seçenekleri'nin varsayılan olarak gizlenmesi ZORUNLUDUR ve herhangi bir özel izin verilenler listesine eklemeye gerek kalmadan Geliştirici Seçenekleri'ni etkinleştirecek bir mekanizma SAĞLANMALIDIR.
  • Kullanıcının güvenliğini ilgilendiren senaryolarda dikkatinizin dağılmasını önlemek için menüyü görsel olarak gizleyerek veya devre dışı bırakarak Geliştirici Seçenekleri menüsüne erişimi geçici olarak sınırlandırabilir.

7. Donanım Uyumluluğu

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

  • [C-0-1] Cihaz uygulamasının, Android SDK dokümanlarında açıklandığı şekilde ilgili API'yi uygulaması ZORUNLUDUR.

SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime girerse ve cihaz uygulaması bu bileşene sahip değilse:

  • [C-0-2] Bileşen API'leri için eksiksiz sınıf tanımları (SDK'da belirtildiği şekliyle) sunulması ZORUNLUDUR.
  • [C-0-3] API'nin davranışlarının, makul bir şekilde işlem yok şeklinde uygulanması ZORUNLUDUR.
  • [C-0-4] API yöntemlerinin, SDK dokümanlarının izin verdiği yerlerde boş değerler döndürmesi ZORUNLUDUR.
  • [C-0-5] API yöntemlerinin, SDK belgelerinde boş değerlere izin verilmeyen sınıfların işlemsiz uygulamalarını döndürmesi ZORUNLUDUR.
  • [C-0-6] API yöntemlerinin, SDK dokümanlarında belirtilmeyen istisnalar YAYINLAMAMALIDIR.
  • [C-0-7] Cihaz uygulamalarının, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki getSystemAvailableFeatures() ve hasSystemFeature(String) yöntemleri aracılığıyla doğru donanım yapılandırma bilgilerinin tutarlı bir şekilde raporlanması ZORUNLUDUR.

Bu şartların geçerli olduğu tipik bir senaryo örneği telephony API'dir: Telefon olmayan cihazlarda bile bu API'ler makul şekilde işlemsiz olarak uygulanmalıdır.

7.1. Ekran ve Grafikler

Android'de, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında iyi bir şekilde çalışmasını sağlamak amacıyla, uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan olanaklar vardır. Cihazların, bu bölümde ayrıntılı olarak açıklandığı şekilde bu API'leri ve davranışları doğru bir şekilde uygulaması ZORUNLUDUR.

Bu bölümdeki şartlarda belirtilen birimler aşağıdaki şekilde tanımlanmıştır:

  • fiziksel çapraz boyut olduğundan emin olun. Ekranın aydınlatmalı kısmının iki karşıt köşesi arasındaki inç cinsinden mesafe.
  • inç başına nokta (dpi). 1 inçlik doğrusal bir yatay veya dikey aralığın kapsadığı piksel sayısı. dpi değerlerinin listelendiği yerlerde, hem yatay hem de dikey dpi aralık dahilinde olmalıdır.
  • en boy oranı. Uzun boyuttaki piksellerin ekranın kısa olan boyutuna oranı. Örneğin, 480x854 piksellik bir ekran 854/480 = 1, 779 veya yaklaşık "16:9" olur.
  • yoğunluktan bağımsız piksel (dp). Sanal piksel birimi, 160 dpi ekrana göre normalleştirilir ve şu şekilde hesaplanır: piksel = dps * (yoğunluk/160).

7.1.1. Ekran Yapılandırması

7.1.1.1. Ekran Boyutu

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

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

    • Configuration.uiMode özelliğinin UI_MODE_TYPE_Watch dışında bir değere ayarlandığı ve Configuration.screenLayout için small boyutu bildiren cihazların en az 426 dp x 320 dp'ye sahip olması ZORUNLUDUR.
    • Configuration.screenLayout için normal boyutunu bildiren cihazların en az 480 dp x 320 dp olması ZORUNLUDUR.
    • Configuration.screenLayout için large boyutunu bildiren cihazların en az 640 dp x 480 dp'ye sahip olması ZORUNLUDUR.
    • Configuration.screenLayout için xlarge boyutunu bildiren cihazların en az 960 dp x 720 dp'ye sahip olması ZORUNLUDUR.
  • [C-0-2] Cihaz uygulamalarının, Android SDK dokümanlarında açıklandığı gibi, AndroidManifest.xml'deki <supports-screens> özelliği aracılığıyla uygulamaların ekran boyutu konusunda belirttiği desteği doğru bir şekilde dikkate alması ZORUNLUDUR.

7.1.1.2. Ekran En Boy Oranı

Fiziksel ekran görüntüsünün ekran en boy oranı değeriyle ilgili herhangi bir kısıtlama olmasa da üçüncü taraf uygulamalarının oluşturulduğu mantıksal ekranın (view.Display API'leri ve Configuration API'si aracılığıyla bildirilen yükseklik ve genişlik değerlerinden türetilebilir) ekran en boy oranı aşağıdaki şartları karşılamalıdır:

  • [C-0-1] Configuration.uiMode öğesinin UI_MODE_TYPE_NORMAL olarak ayarlandığı cihaz uygulamalarının en boy oranı 1,3333 (4:3) ile 1,86 (yaklaşık 16:9) arasında olmalıdır. Aşağıdaki koşullardan biri karşılandığında uygulamanın uzatılmaya hazır olduğu kabul edilmez:

    • Uygulama, android.max_aspect meta veri değeri aracılığıyla daha büyük ekran en boy oranını desteklediğini beyan etti.
    • Uygulama, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabileceğini beyan eder.
    • Uygulama API düzeyi 26 veya üstünü hedefliyor ve izin verilen en boy oranını kısıtlayacak bir android:MaxAspectRatio bildirmiyor.
  • [C-0-2] Configuration.uiMode öğesinin UI_MODE_TYPE_WATCH olarak ayarlandığı cihaz uygulamalarının en boy oranı değerinin 1,0 (1:1) olarak ayarlanması ZORUNLUDUR.

7.1.1.3. Ekran Yoğunluğu

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

  • [C-0-1] Varsayılan olarak, cihaz uygulamalarının DENSITY_DEVICE_STABLE API'si aracılığıyla aşağıdaki mantıksal Android çerçevesi yoğunluklarından yalnızca birini bildirmesi ZORUNLUDUR. Bu değer herhangi bir zamanda DEĞİŞMEMELİDİR. Ancak cihaz, ilk başlatma işleminden sonra kullanıcı tarafından yapılan ekran yapılandırma değişikliklerine (ör. ekran boyutu) göre farklı bir 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)
  • Mantıksal yoğunluk, raporlanan ekran boyutunu desteklenen minimum değerin altına itmediği sürece, cihaz uygulamalarında ekranın fiziksel yoğunluğuna sayısal olarak en yakın olan standart Android çerçeve yoğunluğu TANIMLANMALIDIR. Fiziksel yoğunluğa sayısal olarak en yakın olan standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuyla sonuçlanıyorsa cihaz uygulamaları, bir sonraki en düşük standart Android çerçeve yoğunluğunu Bildirmelidir.

Cihazın ekran boyutunu değiştirme imkanı varsa:

  • [C-1-1] Görüntü boyutu, yerel yoğunluğun 1,5 katından daha büyük bir şekilde ölçeklenmemelidir veya 320 dp'den küçük (kaynak niteleyici sw320 dp'ye eşdeğerdir) etkili bir minimum ekran boyutu üretmemelidir (hangisi önce gerçekleşirse).
  • [C-1-2] Görüntü boyutu, yerel yoğunluğun 0,85 katından daha küçük olacak şekilde ölçeklendirilemez.
  • İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için, Yerel Görüntüleme seçeneklerinde aşağıdaki ölçeklendirmenin (yukarıda belirtilen sınırlara uyarak) sağlanması ÖNERİLİR
  • Küçük: 0,85x
  • Varsayılan: 1x (Yerel görüntülü reklam ölçeği)
  • Büyük: 1,15x
  • Daha büyük: 1,3 kat
  • En büyük 1,45x

7.1.2. Görüntü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ğerleri BİLDİRMELİDİR.

Cihaz uygulamaları, yerleşik 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ülü reklam metriklerine ilişkin makul değerleri BİLDİRMELİDİR.

7.1.3. Ekran Yönlendirme

Cihaz uygulamaları:

  • [C-0-1], desteklediği ekran yönlerini (android.hardware.screen.portrait ve/veya android.hardware.screen.landscape) BİLDİRMELİ ve en az bir desteklenen yön bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönlü yatay ekranı olan bir cihaz, yalnızca android.hardware.screen.landscape durumunu 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 geçerli yönü için doğru değeri Bildirmelidir.

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

  • [C-1-1], uygulamaların dikey veya yatay ekran yönünü desteklemektedir. Yani cihaz, uygulamanın belirli bir ekran yönü isteğini yerine getirmelidir.
  • [C-1-2] yön değiştirilirken bildirilen ekran boyutunu veya yoğunluğunu DEĞİŞTİRMEMELİDİR.
  • Varsayılan olarak dikey veya yatay yön seçilebilir.

7.1.4. 2D ve 3D Grafiklerde Hızlandırma

7.1.4.1 OpenGL ES

Cihaz uygulamaları:

  • [C-0-1], desteklenen OpenGL ES sürümlerini (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ımlamalıdır.
  • [C-0-2], desteklediğini belirttiği her OpenGL ES sürümü için ilgili tüm yönetilen API'lerin ve yerel API'lerin desteğini içermesi ZORUNLUDUR.

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

  • [C-1-1], Android SDK dokümanlarında ayrıntılı olarak açıklandığı şekilde hem OpenGL ES 1.0 hem de 2.0'ı desteklemelidir.
  • [SR]'nin OpenGL ES 3.0'ı desteklemesi için ÖNEMLE ÖNERİLİR.
  • OpenGL ES 3.1 veya 3.2'yi DESTEKLEMELİDİR.

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

  • [C-2-1], uyguladığı OpenGL ES tarafından yönetilen API'ler ve yerel API'ler aracılığıyla raporlamalı, diğer yandan da desteklemedikleri uzantı dizelerini Bildiremez.
  • [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]'nin EGL_KHR_partial_update'i desteklemesi ÖNEMLE ÖNERİLİR.
  • getString() yöntemi (destekledikleri herhangi bir doku sıkıştırma biçimi) aracılığıyla doğru şekilde rapor ALINMALIDIR. Bu genellikle satıcıya özgü bir durumdur.

Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2'yi desteklediğini bildiriyorsa aşağıdaki durumlar geçerli olur:

  • [C-3-1], libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev sembollerine ek olarak, bu sürüme karşılık gelen işlev simgelerini de dışa aktarmalıdır.

Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa, bunlar:

  • [C-4-1] OpenGL ES Android Uzantı Paketi'ni bütünüyle DESTEKLEMELİDİR.

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

  • [C-5-1], desteği android.hardware.opengles.aep özellik bayrağı aracılığıyla tanımlamalıdır.

Cihaz uygulamaları, EGL_KHR_mutable_render_buffer uzantısı için destek sunarsa:

  • [C-6-1], EGL_ANDROID_front_buffer_auto_refresh uzantısını da DESTEKLEMELİDİR.
7.1.4.2 Vulkan

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

Cihaz uygulamaları OpenGL ES 3.0 veya 3.1'i destekliyorsa, bunlar:

  • [SR] Vulkan 1.0 desteği içermesi ÖNEMLE ÖNERİLİR .

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

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

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

  • [C-1-1], android.hardware.vulkan.level ve android.hardware.vulkan.version özellik bayraklarıyla doğru tam sayı değerini Bildirmelidir.
  • [C-1-2] Vulkan yerel API'si vkEnumeratePhysicalDevices() için en az bir VkPhysicalDevice Numaralandırması ZORUNLUDUR .
  • [C-1-3] Numaralı her VkPhysicalDevice için Vulkan 1.0 API'lerini tam olarak uygulamalıdır.
  • [C-1-4], uygulama paketinin yerel kitaplık dizinindeki libVkLayer*.so adlı yerel kitaplıklarda bulunan katmanları Vulkan yerel API'leri vkEnumerateInstanceLayerProperties() ve vkEnumerateDeviceLayerProperties() aracılığıyla numaralandırması ZORUNLUDUR .
  • [C-1-5], uygulamanın android:debuggable özelliği true olarak ayarlanmadığı sürece, uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanları Numaralandırmamalı veya Vulkan API'yi izlemek ya da ona müdahale etmek için başka yöntemler SUNMAMALIDIR.
  • [C-1-6], Vulkan'da yerel API'ler aracılığıyla destekledikleri tüm uzantı dizelerini BİLDİRMELİ, diğer yandan doğru şekilde desteklemedikleri uzantı dizelerini BİLDİRMEMELİDİR.

Vulkan 1.0 desteği dahil değilse cihaz uygulamaları:

  • [C-2-1], Vulkan özellik bayraklarından herhangi birini (ör. android.hardware.vulkan.level, android.hardware.vulkan.version) BELİRTMEMELİDİR.
  • [C-2-2], Vulkan yerel API'si (vkEnumeratePhysicalDevices()) için herhangi bir VkPhysicalDevice Numaralandırılmamalı.
7.1.4.3 RenderScript
  • [C-0-1] Cihaz uygulamaları, Android SDK dokümanlarında ayrıntılı olarak açıklandığı gibi Android RenderScript'i desteklemektedir.
7.1.4.4 2D Grafik Hızlandırma

Android, uygulamaların 2D grafikler için Uygulama, Etkinlik, Pencere veya Görünüm düzeyinde donanım hızlandırmayı etkinleştirmek istediklerini android:hardwareAccelerated manifest etiketi veya doğrudan API çağrıları aracılığıyla etkinleştirmek istediklerini beyan eden bir mekanizmaya sahiptir.

Cihaz uygulamaları:

  • [C-0-1], donanım hızlandırmayı varsayılan olarak ETKİNLEŞTİRMELİDİR ve geliştiricinin istekte bulunması durumunda android:hardwareAccelerated="false" değerini ayarlayarak veya donanım hızlandırmayı doğrudan Android View API'leri aracılığıyla devre dışı bırakarak donanım hızlandırmayı devre dışı bırakmalısınız.
  • [C-0-2] donanım hızlandırma ile ilgili Android SDK dokümanlarıyla uyumlu davranış sergilemelidir.

Android, geliştiricilerin donanımla hızlandırılmış OpenGL ES dokularını bir kullanıcı arayüzü hiyerarşisindeki oluşturma hedefleri olarak doğrudan entegre etmesini sağlayan bir TextureView nesnesi içerir.

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

Cihaz uygulamaları , Display.isWideColorGamut() üzerinden geniş gamlı ekranları desteklediğini iddia ediyorsa aşağıdaki durumlar geçerli olur:

  • [C-1-1] Ekran rengi kalibre edilmiş olmalıdır.
  • [C-1-2]; sRGB renk gamını tamamen CIE 1931 xyY alanında kapsayan bir ekrana sahip olmalıdır.
  • [C-1-3] CIE 1931 xyY alanındaki gamı, NTSC 1953'ün en az% 90'ını kaplayan bir ekranın olması ZORUNLUDUR.
  • [C-1-4] OpenGL ES 3.0, 3.1 veya 3.2'yi desteklemesi ve düzgün şekilde bildirmesi gerekir.
  • [C-1-5] EGL_KHR_no_config_context, EGL_EXT_pixel_format_float,EGL_KHR_gl_colorspace, EGL_EXT_colorspace_scrgb_linear ve EGL_GL_colorspace_display_p3 uzantıları için desteğin reklamını YAPMALIDIR.
  • [SR] GL_EXT_sRGB dilini desteklemeleri ÖNEMLE ÖNERİLİR.

Buna karşılık, 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ı kapsaması GEREKİR.

7.1.5. Eski Uygulama Uyumluluğu Modu

Android, ekran boyutunun bağımsızlığından önceki eski Android sürümleri için geliştirilmemiş eski uygulamalar için çerçevenin 'normal' ekran boyutu eşdeğeri (320 dp genişlik) modunda ç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. Cihazlar, bu dokümanda özellikle izin verilmedikçe, Android SDK'sı tarafından tanımlanan bu API'lerin tümünü desteklemelidir.

Cihaz uygulamaları:

  • [C-0-1] 16 bit renkli grafikleri oluşturabilen ekranları DESTEKLEMELİDİR.
  • 24 bit renkli grafiğe sahip ekranlar DESTEKLENMELİDİR.
  • [C-0-2], animasyonları oluşturabilen ekranları DESTEKLEMELİDİR.
  • [C-0-3] 0,9 ile 1,15 arasında piksel en boy oranına (PAR) sahip bir ekran teknolojisinin kullanılması ZORUNLUDUR. Diğer bir deyişle, piksel en boy oranı, 10 ila% 15 toleransla kareye (1.0) yakın bir yerde OLMALIDIR.

7.1.7. İkincil Ekranlar

Android, medya paylaşımı özelliklerini etkinleştirmek için ikincil ekran desteği ve harici ekranlara erişim için geliştirici API'leri içerir.

Cihaz uygulamaları kablolu, kablosuz veya yerleşik ek ekran bağlantısı üzerinden harici ekranı destekliyorsa:

  • [C-1-1], DisplayManager sistem hizmetini ve API'yi Android SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.

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, bunlar:

Cihaz uygulamaları: [C-0-1], android.content.res.Configuration.keyboard (QWERTY veya 12 tuşlu) biçiminde belirtilen biçimlerden biriyle 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. Dokunmatik Olmayan Gezinme

Android, dokunmatik olmayan gezinme mekanizması olarak d-pad, iztopu ve tekerlek desteği sunar.

Cihaz uygulamaları:

Cihaz uygulamalarında dokunmatik olmayan gezinme özelliği yoksa:

  • [C-1-1] Metin seçimi ve düzenlenmesi için Giriş Yönetim Motorlarıyla uyumlu, makul bir alternatif kullanıcı arayüzü mekanizmasının sunulması ZORUNLUDUR. Yukarı akış Android açık kaynak uygulaması, dokunmatik olmayan gezinme girişleri olmayan cihazlarla kullanılmaya uygun bir seçim mekanizması içerir.

7.2.3. Gezinme Tuşları

Genellikle özel bir fiziksel düğme veya dokunmatik ekranın belirli bir bölümü aracılığıyla sağlanan Ana Ekran, Son Kullanılanlar ve Geri işlevleri, Android gezinme paradigması açısından oldukça önemlidir. Bu yüzden cihaz uygulamaları da iyi bir uygulamadır:

  • [C-0-1], bir kullanıcıya etkinliği olan yüklü uygulamaları, ACTION=MAIN ve CATEGORY=LAUNCHER veya CATEGORY=LEANBACK_LAUNCHER ile ayarlanmış yüklü uygulamaları, Televizyon cihazı uygulamaları için başlatması ZORUNLUDUR.<intent-filter> Ana Sayfa işlevi, bu kullanıcı tarafından sağlanan mekanizma olmalıdır.
  • Son Kullanılanlar ve Geri işlevi için düğmeler SAĞLANMALIDIR.

Ana Ekran, Son Kullanılanlar veya Geri işlevleri sağlanırsa:

  • [C-1-1] erişimi varsa tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir olması ZORUNLUDUR.
  • [C-1-2], her bir işlevin hangi tek bir işlemi tetikleyeceğini net bir şekilde göstermelidir. Düğmenin üzerinde görünür bir simge olması, ekranın gezinme çubuğu bölümünde bir yazılım simgesi gösterilmesi veya kullanıma hazır kurulum deneyimi sırasında kullanıcıya adım adım açıklamalı demo akışı boyunca yol göstermek bu tür göstergelere örnek olarak verilebilir.

Cihaz uygulamaları:

  • [SR], Android 4.0'dan itibaren işlem çubuğunu kullanarak kullanımdan kaldırıldığından Menü işlevi için giriş mekanizması sağlamaması ÖNEMLE ÖNERİLİR.

Cihaz uygulamaları Menü işlevini sağlıyorsa:

  • [C-2-1] İşlem taşma menüsü pop-up'ı boş olmadığında ve işlem çubuğu görünür olduğunda işlem taşma düğmesini görüntülemelidir.
  • [C-2-2] İşlem çubuğunda taşma düğmesi seçilerek görüntülenen işlem taşma pop-up'ının konumunu DEĞİŞTİRMEMELİDİR, ancak Menü işlevi seçildiğinde işlem taşma pop-up'ını ekranda değiştirilmiş bir konumda OLUŞTURABİLİRSİNİZ.

Cihaz uygulamaları, Menü işlevini sağlamıyorsa geriye dönük uyumluluk için:

  • [C-3-1] targetSdkVersion 10'dan az olduğunda, fiziksel bir düğme, yazılım tuşu veya hareketler aracılığıyla Menü işlevini uygulamalarda kullanılabilir hale getirmesi ZORUNLUDUR. Bu Menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmedikçe erişilebilir olmalıdır.

Cihaz uygulamaları Destek işlevini sağlıyorsa:

  • [C-4-1] Diğer gezinme tuşları erişilebilir olduğunda Asistan işlevini tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir hale getirmelidir.
  • [SR] ANA SAYFA işlevine uzun basmanın bu belirtilen etkileşim olarak kullanılması ÖNERİLİR.

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

  • [C-5-1] Gezinme tuşları ekranın ayrı bir bölümünü kullanmalı, uygulamalarda kullanılamaz ve ekranın uygulamalar tarafından kullanılabilir olan bölümünü gizlememeli veya başka bir şekilde engellememelidir.
  • [C-5-2] Bölüm 7.1.1'de belirtilen şartları karşılayan uygulamalar için ekranın bir bölümünün sunulması ZORUNLUDUR.
  • [C-5-3], uygulamanın View.setSystemUiVisibility() API yöntemiyle belirlediği işaretleri dikkate almalıdır. Böylece, ekranın farklı bir bölümünün (gezinme çubuğu olarak da bilinir) SDK'da belirtildiği şekilde düzgün şekilde gizlenmesi gerekir.

7.2.4. Dokunmatik Ekranlı Giriş

Android, dokunmatik ekran, dokunmatik alan ve sahte dokunmatik giriş cihazı gibi çeşitli işaretçi giriş sistemlerini destekler. Dokunmatik ekrana dayalı cihaz uygulamaları, kullanıcının ekrandaki öğeleri doğrudan değiştiriyor izlenimi vereceği bir ekranla ilişkilendirilir. Kullanıcı ekrana doğrudan dokunduğundan, sistem, manipüle edilen nesneleri göstermek için herhangi bir ek ücret gerektirmez.

Cihaz uygulamaları:

  • Bir tür işaretçi giriş sistemine (fare gibi veya dokunmaya benzer) sahip olması GEREKİR.
  • Tamamen bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.

Dokunmatik ekran (tek dokunma veya daha iyisi) içeren cihaz uygulamaları:

  • [C-1-1] Configuration.touchscreen API alanı için TOUCHSCREEN_FINGER değerini bildirmeli.
  • [C-1-2] android.hardware.touchscreen ve android.hardware.faketouch özellik bayraklarını BİLDİRMELİDİR

Cihaz uygulamaları, birden fazla dokunmayı izleyebilen bir dokunmatik ekran içeriyorsa, bunlar:

  • [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.

Dokunmatik ekran içermeyen (ve yalnızca işaretçi cihazı kullanan) cihaz uygulamaları, bölüm 7.2.5'teki sahte dokunma gereksinimlerini karşılıyorsa:

  • [C-3-1], android.hardware.touchscreen ile başlayan hiçbir özellik işaretini BİLDİRMEMELİ ve yalnızca android.hardware.faketouch BELİRTİLMELİDİR.

7.2.5. Sahte Dokunmatik Giriş

Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesini tahmin eden bir kullanıcı giriş sistemi sağlar. Örneğin, ekran üzerinde bir imleci yönlendiren bir fare veya uzaktan kumanda, dokunmaya yaklaşır ancak önce kullanıcının üzerine gelmesini veya odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi, jiroskop işaretçisi, kontrol çubuğu ve çok dokunmalı dokunmatik yüzey gibi çok sayıda giriş cihazı, sahte dokunma etkileşimlerini destekleyebilir. Android'de sabit bir android.hardware.faketouch özelliği bulunur. Bu özellik, dokunmatik olmayan girişlere (temel hareket desteği dahil) yeterince emüle edebilen fare veya dokunmatik yüzey gibi yüksek kaliteli, dokunmatik olmayan (işaretçi tabanlı) bir giriş cihazına karşılık gelir ve cihazın, dokunmatik ekran işlevlerinin emüle edilmiş bir alt kümesini desteklediğini belirtir.

Dokunmatik ekran içermeyen cihaz uygulamaları, ancak kullanıma sunmak istedikleri başka bir işaretçi giriş sistemi içeriyorsa:

  • android.hardware.faketouch özellik bayrağı için destek bildirilmelidir.

android.hardware.faketouch için destek bildirilen cihaz uygulamaları:

  • [C-1-1] İşaretçi konumunun mutlak X ve Y ekran konumlarını bildirmeli ve ekranda görsel bir işaretçi görüntülemelidir.
  • [C-1-2] Dokunma etkinliğini, işaretçinin ekranda aşağı veya yukarı gitme sırasında gerçekleşen durum değişikliğini belirten işlem koduyla BİLDİRMELİDİR.
  • [C-1-3], ekrandaki bir nesne üzerinde işaretçiyi aşağı ve yukarı DESTEKLEMELİDİR. Bu özellik, kullanıcıların ekrandaki bir nesneye dokunma emülasyonuna olanak tanır.
  • [C-1-4] bir zaman eşiği dahilinde, kullanıcıların ekrandaki bir nesneye iki kez dokunmasına olanak tanıyan işaretçi aşağı, yukarı işaretçi, aşağı ve ardından yukarıyı ve ardından ekrandaki bir nesnedeki aynı yeri DESTEKLEMELİDİR.
  • [C-1-5] İşaretçiyi ekranda rastgele bir nokta üzerinde aşağı doğru DESTEKLEMELİDİR. İşaretçinin ekranda rastgele bir noktaya hareket etmesi ve ardından yukarıya doğru işaretçi hareket etmesi gerekir. Bu şekilde kullanıcılar dokunarak sürüklemeyi emüle edebilir.
  • [C-1-6] İşaretçiyi aşağı doğru desteklemeli, sonra da kullanıcıların nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ardından işaretçiyi ekranda yukarıya taşımasına izin vermelidir. Bu özellik, kullanıcının ekrandaki bir nesneyi hızla kaydırmasına olanak tanır.
  • [C-1-7] Configuration.touchscreen API alanı için TOUCHSCREEN_NOTOUCH değerini bildirmesi GEREKİR.

android.hardware.faketouch.multitouch.distinct için destek bildirilen cihaz uygulamaları:

  • [C-2-1], android.hardware.faketouch için destek bildirmeli.
  • [C-2-2] İki veya daha fazla bağımsız işaretçi girişinin ayrı şekilde izlenmesini DESTEKLEMELİDİR.

android.hardware.faketouch.multitouch.jazzhand için destek bildirilen cihaz uygulamaları:

  • [C-3-1], android.hardware.faketouch için destek beyanı ZORUNLUDUR.
  • [C-3-2] 5'in ayrı takibini (parmak ellerini takip etme) veya daha fazla işaretçi girişini tamamen bağımsız olarak desteklemelidir.

7.2.6. Oyun Kumandası Desteği

7.2.6.1. Düğme Eşlemeleri

Cihaz uygulamaları android.hardware.gamepad özellik bayrağını beyan ederse:

  • [C-1-1] Bir denetleyicinin gömülmesi veya kutuya ayrı bir kumanda ile gönderilmesi ZORUNLUDUR. Bu, aşağıdaki tablolarda listelenen tüm etkinliklerin girilmesini sağlar.
  • [C-1-2] HID etkinliklerini, aşağıdaki tablolarda listelendiği gibi ilişkili Android view.InputEvent sabitleriyle eşleyebilmesi gerekir. Yukarı akış Android uygulaması, bu şartı karşılayan oyun kumandaları için uygulama sürecini de kapsar.
Düğme HID Kullanımı2 Android Düğmesi
1. 0x09 0x0001 KEYCODE_Button_A (96)
B1 0x09 0x0002 KEYCODE_Button_B (97)
X1 0x09 0x0004 KEYCODE_Button_X (99)
E1 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ıklama1 0x09 0x000D KEYCODE_Button_THUMBL (106)
Sağ çubuk tıklama1 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 (0x01 0x0005) içinde belirtilmelidir.

3 Bu kullanım için Mantıksal Minimum 0, Mantıksal Maksimum 7, Fiziksel Minimum 0, Fiziksel Maksimum 315, Derece Birim 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öndürme olmadığını ve yukarı düğmesine basıldığını, 1 mantıksal değeri ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını gösterir.

4 MotionEvent

Analog Kontroller1 HID Kullanımı Android Düğmesi
Sol Tetikleyici 0x02 0x00C5 AXIS_LTRIGGER
Sağ tetikleyici 0x02 0x00C4 AXIS_RTRIGGER
Sol kontrol çubuğu 0x01 0x0030
0x01 0x0031
AXIS_X
AXIS_Y
Sağ kontrol çubuğu 0x01 0x0032
0x01 0x0035
AXIS_Z
AXIS_RZ

1 MotionEvent

7.2.7. Uzaktan Kumanda

Cihaza özel gereksinimler için bkz. Bölüm 2.3.1.

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ünü içeriyorsa cihaz uygulamasının, bu API'yi Android SDK dokümanlarında ve sensörler hakkındaki Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.

Cihaz uygulamaları:

  • [C-0-1], android.content.pm.PackageManager sınıfına göre sensörlerin varlığını veya yokluğunu doğru şekilde Bildirmelidir.
  • [C-0-2], SensorManager.getSensorList() ve benzer yöntemler kullanılarak desteklenen sensörlerin doğru bir listesini döndürmelidir.
  • [C-0-3] Diğer tüm sensör API'leri için makul bir şekilde çalışmalıdır (örneğin, uygulamalar dinleyicileri kaydetmeye çalıştığında true veya false uygun şekilde döndürülmelidir; ilgili sensörler mevcut olmadığında sensör dinleyicileri çağrılmamalıdır vb.).

Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türünü içeriyorsa:

  • [C-1-1], Android SDK dokümanlarında tanımlandığı gibi her sensör türü için ilgili Uluslararası Birim Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini rapor etmelidir.
  • [C-1-2] Sensör verilerini maksimum 100 milisaniye gecikmeyle raporlanması ZORUNLUDUR
  • 2 * uygulama işlemcisi etkin durumdayken gereken minimum 5 ms + 2 * sample_time kadar gerekli gecikmeyle aktarılan bir sensör akışı için sample_time. Bu gecikme, filtreleme gecikmelerini içermez.
  • [C-1-3], ilk sensör örneğinin, etkinleştirilmekte olan sensörün 400 milisaniye + 2 * sample_time içinde raporlanması ZORUNLUDUR. Bu örneğin doğruluk oranının 0 olması kabul edilebilir.
  • [SR] Etkinlik zamanını, Android SDK dokümanlarında tanımlandığı gibi, etkinliğin gerçekleştiği ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edildiği şekilde nanosaniye cinsinden bildirmesi GEREKİR. Mevcut ve yeni Android cihazların bu gereksinimleri karşılaması ÖNERİLİR. Böylece, bu cihazların GEREKLİ bir bileşen haline gelebileceği gelecekteki platform sürümlerine geçiş yapabilirler. Senkronizasyon hatasının 100 milisaniyenin altında olması GEREKİR.

  • [C-1-7] Android SDK belgelerinde belirtilen bir API'nin sürekli sensör olması için cihaz uygulamalarının düzenli olarak %3'ün altında bir ses dalgalanmasına sahip olması GEREKİR.

  • [C-1-8] Sensör etkinlik akışının, cihazın CPU'sunun askıya alma durumuna girmesini veya askıya alma durumundan uyanmasını engellememesi gerekir.

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

Yukarıdaki liste tam kapsamlı değildir. Android SDK'nın ve sensörler ile ilgili Android Açık Kaynak Dokümanları'nın belgelenen davranışları güvenilir olarak kabul edilir.

Bazı sensör türleri kompozittir. Diğer bir deyişle, başka bir veya daha fazla sensörün sağladığı verilerden elde edilebilir. (Örnek olarak yön sensörü ve doğrusal ivme sensörü verilebilir.)

Cihaz uygulamaları:

  • Bu sensör türleri, sensör türleri bölümünde açıklandığı gibi, ön koşul niteliğindeki fiziksel sensörleri içerdiklerinde KULLANILMALIDIR.

Cihaz uygulamaları bir kompozit sensör içeriyorsa:

  • [C-2-1] sensörü, birleşik sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.

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] En az 50 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
  • [C-1-2] TYPE_ACCELEROMETER sensörünü uygulamalı ve bildirmeli.
  • [C-1-3], Android API'lerinde ayrıntılı olarak açıklanan Android sensör koordinat sistemine UYMALIDIR.
  • [C-1-4] herhangi bir eksende serbest düşüşten itibaren yer çekiminin dört katını(4 g) veya daha fazlasını ölçebilmesi ZORUNLUDUR.
  • [C-1-5] çözünürlüğü en az 12 bit olmalıdır.
  • [C-1-6] 0,05 m/sn'den fazla olmayan bir standart sapmaya sahip OLMALIDIR.Burada, en yüksek örnekleme hızında en az 3 saniyelik bir süre boyunca toplanan örnekler için standart sapma eksen başına hesaplanmalıdır.
  • TYPE_SIGNIFICANT_MOTION kompozit sensörünü uygulamak için [SR] ÖNERİLİR.
  • Online ivme ölçer kalibrasyonu mevcutsa TYPE_ACCELEROMETER_UNCALIBRATED sensörünün uygulanması [SR] işlevi ÖNEMLE ÖNERİLİR.
  • TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER birleşik sensörlerini Android SDK dokümanında açıklandığı şekilde UYGULAMALIDIR.
  • Maksimum 200 Hz'e kadar olan etkinlikler Bildirilmelidir.
  • Çözünürlüğü en az 16 bit olmalıdır.
  • Kullanım sırasında özelliklerin yaşam döngüsü içinde değişip dengelenmesi durumunda kullanım sırasında kalibre edilmesi gerekir. Ayrıca, cihazı yeniden başlatma işlemleri arasında dengeleme parametrelerini korumak gerekir.
  • Sıcaklık dengelemenin yapılması GEREKİR.
  • TYPE_ACCELEROMETER_UNCALIBRATED sensörü de uygulanmalıdır.

Cihaz uygulamaları 3 eksenli ivme ölçer ve TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER kompozit sensörlerinden herhangi biri uygulanmışsa:

  • [C-2-1] Bu cihazların güç tüketimlerinin toplamı her zaman 4 mW'dan az olmalıdır.
  • Cihaz dinamik veya statik bir durumda olduğunda her biri 2 mW ve 0,5 mW'nun 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 kompozit sensörlerini uygulaması ZORUNLUDUR.
  • TYPE_GAME_ROTATION_VECTOR kompozit sensörü uygulansın mı?
  • [SR] Mevcut ve yeni Android cihazların TYPE_GAME_ROTATION_VECTOR sensörünün uygulanması ÖNEMLE ÖNERİLİR.

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

  • [C-4-1] bir TYPE_ROTATION_VECTOR kompozit sensör uygulaması ZORUNLUDUR.

7.3.2. Manyetometre

  • Cihaz uygulamaları 3 eksenli bir manyetometre (pusula) İÇERMELİDİR.

Cihaz uygulamaları 3 eksenli bir manyetometre içeriyorsa, bunlar:

  • [C-1-1] TYPE_MAGNETIC_FIELD sensörünü uygulaması ZORUNLUDUR.
  • [C-1-2] en az 10 Hz frekansına kadar olan etkinlikleri raporlayabilmeli ve en az 50 Hz'e kadar olan etkinlikleri raporlamalıdır.
  • [C-1-3], Android API'lerinde ayrıntılı olarak açıklanan Android sensör koordinat sistemine UYMALIDIR.
  • [C-1-4] doygunlaştırılmadan önce her bir eksende -900 μT ile +900 μT arasında ölçüm yapabilmelidir.
  • [C-1-5] manyetometreyi dinamik (akımla oluşturulan) ve statik (mıknatıstan kaynaklanan) manyetik alanlardan uzağa yerleştirerek [C-1-5]'in sert demir ofset değerinin 700 μT'den az olması ve 200 μT'nin altında bir değere sahip olması ZORUNLUDUR.
  • [C-1-6] 0,6 μT'ye eşit veya daha yoğun bir çözünürlüğe sahip olmalıdır.
  • [C-1-7], online kalibrasyonu ve sert demir yangısını dengelemeyi desteklemeli ve cihazı yeniden başlatmalar arasında dengeleme parametrelerini korumalıdır.
  • [C-1-8] yumuşak demir katkısının uygulanması ZORUNLUDUR. Kalibrasyon, kullanım sırasında veya cihazın üretimi sırasında yapılabilir.
  • [C-1-9] en yüksek örnekleme hızında en az 3 saniyelik bir süre boyunca toplanan örneklerde eksen başına hesaplanan bir standart sapmaya sahip olmalıdır; bu değer 1, 5 μT'den yüksek olmamalıdır; standart sapma 0, 5 μT'nin üzerinde olmamalıdır.
  • TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörü KULLANILMALIDIR.
  • [SR] Mevcut ve yeni Android cihazların TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörünün uygulanması ÖNEMLE ÖNERİLİR.

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

  • [C-2-1] bir TYPE_ROTATION_VECTOR kompozit sensör uygulaması ZORUNLUDUR.

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

  • TYPE_GEOMAGNETIC_ROTATION_VECTOR sensörü uygulanabilir.

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

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

7.3.3. GPS

Cihaz uygulamaları:

  • Bir GPS/GNSS alıcısı İÇERMELİDİR.

Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve yeteneği uygulamalara android.hardware.location.gps özellik bayrağı aracılığıyla bildiriyorsa:

  • [C-1-1], LocationManager#requestLocationUpdate üzerinden istendiğinde en az 1 Hz konum çıkışlarını DESTEKLEMELİDİR.
  • [C-1-2] 0,5 Mb/sn veya daha hızlı veri hızına sahip bir internet bağlantısına bağlandığında, açık hava koşullarında konumu (güçlü sinyaller, göz ardı edilebilir çok yol, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı süre) belirleyebilmelidir. Bu gereklilik, genellikle GPS/GNSS kilitlenme süresini en aza indirmek amacıyla bir tür Yardımlı veya Tahmini GPS/GNSS tekniğinin kullanılmasıyla karşılanır (Yardım verileri Referans Saati, Referans Konum ve Uydu Efeeri/Saati içerir).
    • [SR] Bu tür bir konum hesaplaması yapıldıktan sonra, konum istekleri yeniden başlatıldığında cihazın açık gökyüzünde, ilk konum hesaplamasından sonraki bir saate kadar (veri bağlantısı olmadan istek gönderilse bile) ve/veya bir güç döngüsünden sonra cihazın konumunu belirlemesi ÖNEMLE ÖNERİLİR.
  • Konum belirlendikten sonra açık gökyüzü koşullarında, sabit durumdayken veya saniye başına 1 metreden daha düşük hızla hareket ederken:

    • [C-1-3] 20 metre içindeki konumu ve saniyenin en az% 95'inde hızı 0,5 metreden belirleyebilmelidir.
    • [C-1-4] Bir takımyıldıza ait en az 8 uyduyu GnssStatus.Callback aracılığıyla aynı anda takip edip rapor etmelidir.
    • Birden fazla takımyıldızdan en az 24 uyduyu aynı anda izleyebilmeli (ör. GPS + Glonass, Beidou, Galileo'dan en az biri).
    • [C-1-5] GNSS teknolojisi üretimini "getGnssYearOfDonanım" test API'si üzerinden Bildirmelidir.
    • [SR] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışlarını sunmaya devam eder.
    • [SR] SBAS hariç, takip edilen tüm takım yıldızlardan GNSS ölçümlerini (GnssStatus mesajlarında bildirildiği gibi) bildirin.
    • [SR] AGC'yi ve GNSS ölçümünün sıklığını raporlama.
    • [SR] Her bir GPS Konumunun parçası olarak tüm doğruluk tahminlerini (Rutun, Hız ve Dikey dahil) bildirir.
    • [SR]'nin, "2016" veya "2017" yılını Test API'si LocationManager.getGnssYearOfHardware() aracılığıyla bildiren zorunlu ek şartlardan mümkün olduğunca fazla sayıda karşılaması ÖNERİLİR.

Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve kapasiteyi android.hardware.location.gps özellik bayrağı ve LocationManager.getGnssYearOfHardware() Test API'si "2016" veya daha yeni yılı bildirerek uygulamalara bildiriyorsa:

  • [C-2-1] GPS/GNSS kullanılarak hesaplanan bir konum henüz raporlanmamış olsa bile, GPS ölçümleri bulunur bulunmaz bildirilmelidir.
  • [C-2-2] GPS sözde aralıklarının ve sözde aralık oranlarının, konum belirlendikten sonra açık gökyüzü koşullarında, saniye başına 0,2 metreden daha düşük ivme karesiyle sabit veya hareket halindeyken ve 20 metre içinde konumun ve saniyede en az% 95'lik 0,2 metre içinde hızın hesaplanması için yeterlidir.

Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve kapasiteyi android.hardware.location.gps özellik bayrağı ve LocationManager.getGnssYearOfHardware() Test API'si "2017" veya daha yeni yılı bildirerek uygulamalara bildiriyorsa:

  • [C-3-1] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışlarını sunmaya devam ETMELİDİR.
  • [C-3-2], SBAS hariç olmak üzere, takip edilen tüm takım yıldızlara ait GNSS ölçümlerinin Bildirilmesi ZORUNLUDUR (GnssStatus mesajlarında bildirildiği gibi).
  • [C-3-3] AGC'yi ve GNSS ölçümünün sıklığını raporlaması GEREKİR.
  • [C-3-4] her bir GPS Konumunun parçası olarak tüm doğruluk tahminlerini (Yön, Hız ve Dikey dahil) Bildirmelidir.

7.3.4. Jiroskop

Cihaz uygulamaları:

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

Cihaz uygulamaları bir jiroskop içeriyorsa:

  • [C-1-1] En az 50 Hz frekansına kadar olan etkinlikleri raporlayabilmesi ZORUNLUDUR.
  • [C-1-2] TYPE_GYROSCOPE sensörünü uygulamalı ve TYPE_GYROSCOPE_UNCALIBRATED sensörünü de uygulamalıdır.
  • [C-1-3] saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmesi ZORUNLUDUR.
  • [C-1-4] çözünürlüğünün 12 bit veya daha yüksek olması ve 16 bit veya daha yüksek çözünürlüğe sahip olması ZORUNLUDUR.
  • [C-1-5] için sıcaklık dengelemesi ZORUNLUDUR.
  • [C-1-6] kullanım esnasında kalibre edilip telafi edilmeli ve cihazı yeniden başlatmalar arasında dengeleme parametrelerini korumak zorundadır.
  • [C-1-7] Hz başına 1e-7 rad^2 / s^2 (Hz başına varyans veya rad^2 / s) üzerinde bir varyans OLMALIDIR. Varyansın, örnekleme hızıyla birlikte değişmesine izin verilir, ancak bu değerle sınırlandırılması ZORUNLUDUR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz, 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
  • [SR] Mevcut ve yeni Android cihazların SENSOR_TYPE_GYROSCOPE_UNCALIBRATED sensörünün uygulanması ÖNEMLE ÖNERİLİR.
  • [SR] Cihaz oda sıcaklığında hareketsizken kalibrasyon hatasının 0,01 rad/sn'den düşük olması ÖNEMLE ÖNERİLİR.
  • Maksimum 200 Hz'e kadar olan etkinlikler Bildirilmelidir.

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

  • [C-2-1] bir TYPE_ROTATION_VECTOR kompozit sensör uygulaması ZORUNLUDUR.

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

  • [C-3-1] TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION kompozit sensörlerini uygulaması ZORUNLUDUR.
  • [SR] Mevcut ve yeni Android cihazların TYPE_GAME_ROTATION_VECTOR sensörünün uygulanması ÖNEMLE ÖNERİLİR.
  • TYPE_GAME_ROTATION_VECTOR kompozit sensörü uygulansın mı?

7.3.5. Barometre

  • Cihaz uygulamalarında barometre (ortam hava basıncı sensörü) OLMALIDIR.

Cihaz uygulamaları barometre içeriyorsa:

  • [C-1-1] TYPE_PRESSURE sensörünü uygulamalı ve bildirmelidir.
  • [C-1-2] 5 Hz veya daha yüksek hızlarda etkinlik sunmak ZORUNLUDUR.
  • [C-1-3] için sıcaklık dengelemesi ZORUNLUDUR.
  • [SR] 300 hPa - 1100 hPa aralığındaki basınç ölçümlerini raporlayabilmek için ÖNEMLE ÖNERİLİR.
  • Mutlak doğruluk oranının 1hPa olması gerekir.
  • 20 hPa aralığında göreli doğruluk oranının 0,12 hPa olması gerekir (deniz seviyesinde yaklaşık 200 metrelik değişimde ~1 milyon doğruluk oranına eşdeğer).

7.3.6. Termometre

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

Cihaz uygulamaları bir ortam termometresi (sıcaklık sensörü) içeriyorsa bunlar:

  • [C-1-1] SENSOR_TYPE_AMBIENT_TEMPERATURE olarak tanımlanmalı ve kullanıcının cihazla etkileşime girdiği ortam (oda/araç kabini) sıcaklığının Santigrat olarak ölçülmesi ZORUNLUDUR.
  • [C-1-2] SENSOR_TYPE_TEMPERATURE olarak TANIMLANMALIDIR.
  • [C-1-3] cihazın CPU sıcaklığının ölçülmesi ZORUNLUDUR.
  • [C-1-4] Başka hiçbir sıcaklığı ölçMEMELİDİR.

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ı bir fotometre (ortam ışığı sensörü) İÇEREBİLİR.

7.3.8. Yakınlık Sensörü

  • Cihaz uygulamaları yakınlık sensörü İÇEREBİLİR.

Cihaz uygulamaları bir yakınlık sensörü içeriyorsa bunlar:

  • [C-1-1], ekranla aynı yöndeki bir nesnenin yakınlığını ölçmesi ZORUNLUDUR. Diğer bir deyişle, yakınlık sensörünün ekrana yakın nesneleri algılamak için Yönde olması ZORUNLUDUR, çünkü bu sensör türünün birincil amacı, kullanıcı tarafından kullanılan bir telefonu algılamaktır. Cihaz uygulamaları, başka bir yöne sahip yakınlık sensörü içeriyorsa bu sensöre bu API üzerinden ERİŞİLEMEMELİDİR.
  • [C-1-2] 1 bit veya daha yüksek doğrulukta olması ZORUNLUDUR.

7.3.9. Yüksek Kaliteli Sensörler

Cihaz uygulamaları, bu bölümde tanımlandığı gibi yüksek kaliteli bir dizi sensör içerir ve bunları üçüncü taraf uygulamalarının kullanımına sunarsa:

  • [C-1-1], özelliği android.hardware.sensor.hifi_sensors özellik bayrağı aracılığıyla tanımlamalıdır.

Cihaz uygulamaları android.hardware.sensor.hifi_sensors bildiriyorsa:

  • [C-2-1] aşağıdaki şartları karşılayan bir TYPE_ACCELEROMETER sensörüne sahip olmalıdır:

    • En az -8 g ile +8 g arasında bir ölçüm aralığının olması ZORUNLUDUR.
    • Ölçüm çözünürlüğü en az 1024 LSB/G olmalıdır.
    • Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansının 400 Hz veya daha yüksek olması ZORUNLUDUR.
    • 400 uG/abilen Hz'in üzerinde olmayan bir ölçüm gürültüsü olması ZORUNLUDUR.
    • Bu sensörün uyandırılmadan ve en az 3.000 sensör olayına sahip arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
    • Toplu işlem güç tüketiminin 3 mW'dan düşük olmaması ZORUNLUDUR.
    • 24 saatlik statik veri kümesine göre sabit gürültü yanlılığı stabilitesi \<15 μg 🏈 Hz olmalıdır.
    • Sıcaklığa kıyasla ≤ +/- 1 mg / °C şeklinde bir sapma değişimi olması gerekir.
    • En uygun çizginin doğrusal olmayan değeri ≤ %0,5 ve hassasiyet değişimi ≤ %0,03/C° olmalıdır.
    • Sensörün gürültü bütünlüğünün yeterli şekilde belirlenmesi için beyaz gürültü spektrumu KULLANILMALIDIR.
  • [C-2-2], TYPE_ACCELEROMETER ile aynı kalite şartlarına sahip bir TYPE_ACCELEROMETER_UNCALIBRATED OLMALIDIR.

  • [C-2-3] aşağıdaki koşulları karşılayan bir TYPE_GYROSCOPE sensörüne sahip olmalıdır:

    • En az -1000 ila +1000 dps arasında bir ölçüm aralığının olması ZORUNLUDUR.
    • En az 16 LSB/d/sn ölçüm çözünürlüğüne sahip olması ZORUNLUDUR.
    • Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansının 400 Hz veya daha yüksek olması ZORUNLUDUR.
    • 0,014°/s/çalışmasının ölçüm paraziti olması ZORUNLUDUR.
    • 24 saatlik statik veri kümesinden 0,0002 °/sn çekin.çekin.
    • Sıcaklığa kıyasla ≤ +/- 0,05 °/ s / °C şeklinde bir sapma değişimi olması GEREKİR.
    • Sıcaklığa kıyasla hassasiyetinde değişimin ≤ %0,02 / °C olması gerekir.
    • ≤ %0,2 doğrusal olmayan, en uygun çizgiye sahip olmalıdır.
    • Gürültü yoğunluğu 0,007 °/s/çekince ≤ olmalıdır.
    • Sensörün gürültü bütünlüğünün yeterli şekilde belirlenmesi için beyaz gürültü spektrumu KULLANILMALIDIR.
    • Cihaz sabit durumdayken 10 ~ 40 °C sıcaklık aralığında 0,002 rad/sn'den az kalibrasyon hatası ALINMALIDIR.
  • [C-2-4], TYPE_GYROSCOPE ile aynı kalite şartlarına sahip bir TYPE_GYROSCOPE_UNCALIBRATED OLMALIDIR.

  • [C-2-5] aşağıdaki koşulları karşılayan bir TYPE_GEOMAGNETIC_FIELD sensörüne sahip olmalıdır:
    • En az -900 ile +900 uT arasında bir ölçüm aralığının olması ZORUNLUDUR.
    • En az 5 LSB/uT ölçüm çözünürlüğüne sahip olması ZORUNLUDUR.
    • Minimum ölçüm frekansının 5 Hz veya daha düşük olması ZORUNLUDUR.
    • Maksimum ölçüm frekansının 50 Hz veya daha yüksek olması ZORUNLUDUR.
    • 0,5 uT'nin üzerinde olmayan bir ölçüm gürültüsü olması ZORUNLUDUR.
  • [C-2-6], TYPE_GEOMAGNETIC_FIELD ile aynı kalite şartlarına ve ayrıca şunlara sahip bir TYPE_MAGNETIC_FIELD_UNCALIBRATED OLMALIDIR:
    • Bu sensörün uyandırılmadan ve en az 600 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
    • Sensörün gürültü bütünlüğünün yeterli şekilde belirlenmesi için beyaz gürültü spektrumu KULLANILMALIDIR.
  • [C-2-7] TYPE_PRESSURE sensörü OLMALIDIR:
    • En az 300 ila 1100 hPa arasında bir ölçüm aralığının olması ZORUNLUDUR.
    • En az 80 LSB/hPa ölçüm çözünürlüğüne sahip olmalıdır.
    • Minimum ölçüm frekansı 1 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansının 10 Hz veya daha yüksek olması ZORUNLUDUR.
    • Ölçüm gürültüsünün 2 Pa/✓ Hz'den yüksek olması ZORUNLUDUR.
    • Bu sensörün uyandırılmadan ve en az 300 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
    • Toplu işlem güç tüketiminin 2 mW'dan düşük olmaması ZORUNLUDUR.
  • [C-2-8] aşağıdaki koşulları karşılayan bir TYPE_GAME_ROTATION_VECTOR sensörüne sahip olmalıdır:
    • Bu sensörün uyandırılmadan ve en az 300 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
    • Toplu işlem güç tüketiminin 4 mW'dan düşük olmaması ZORUNLUDUR.
  • [C-2-9] TYPE_SIGNIFICANT_MOTION sensörü OLMALIDIR:
    • Güç tüketimi, cihaz hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha düşük olmamalıdır.
  • [C-2-10] aşağıdaki koşulları karşılayan bir TYPE_STEP_DETECTOR sensörüne sahip olmalıdır:
    • Bu sensörün uyandırılmadan ve en az 100 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
    • Güç tüketimi, cihaz hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha düşük olmamalıdır.
    • Toplu işlem güç tüketiminin 4 mW'dan düşük olmaması ZORUNLUDUR.
  • [C-2-11] aşağıdaki koşulları karşılayan bir TYPE_STEP_COUNTER sensörüne sahip olmalıdır:
    • Güç tüketimi, cihaz hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha düşük olmamalıdır.
  • [C-2-12] aşağıdaki koşulları karşılayan bir TILT_DETECTOR sensörüne sahip olmalıdır:
    • Güç tüketimi, cihaz hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha düşük olmamalıdır.
  • [C-2-13] İvme ölçer, Jiroskop sensörü ve Manyetometre tarafından bildirilen aynı fiziksel etkinliğe ait etkinlik zaman damgasının birbirinden en fazla 2,5 milisaniye uzakta olması ZORUNLUDUR.
  • [C-2-14] Jiroskop sensör etkinliği zaman damgalarının kamera alt sistemiyle aynı zaman tabanında ve hatadan en fazla 1 milisaniye uzakta olması gerekir.
  • [C-2-15], yukarıdaki fiziksel sensörlerden herhangi birinde veri bulunan verileri uygulamaya takiben 5 milisaniye içinde uygulamalara örnekler iletmelidir.
  • [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde, cihaz statikken 0,5 mW'tan, cihaz hareket ederken ise 2,0 mW'dan yüksek bir güç tüketimi OLMAMALIDIR:
    • SENSOR_TYPE_SIGNIFICANT_MOTION
    • SENSOR_TYPE_STEP_DETECTOR
    • SENSOR_TYPE_STEP_COUNTER
    • SENSOR_TILT_DETECTORS
  • [C-2-17] TYPE_PROXIMITY sensörü OLABİLİR, ancak varsa en az 100 sensör etkinliği arabellek kapasitesine sahip olması ZORUNLUDUR.

Bu bölümdeki güç tüketimi gereksinimlerinin hiçbirinin Uygulama İşlemci'nin güç tüketimini içermediğini unutmayın. Tüm sensör zincirinin (sensör, destek devreleri, özel sensör işleme sistemleri vb.) çektiği güç buna dahildir.

Cihaz uygulamaları doğrudan sensör desteği içeriyorsa:

  • [C-3-1], doğrudan kanal türleri desteğinin ve doğrudan rapor ücretlerinin destek düzeyini isDirectChannelTypeSupported ve getHighestDirectReportRateLevel API üzerinden doğru şekilde beyan etmelidir.
  • [C-3-2] Sensör doğrudan kanalını desteklediğini belirten tüm sensörlerde iki sensör doğrudan kanal türünden en az birini DESTEKLEMELİDİR
  • TYPE_HARDWARE_BUFFER
  • TYPE_MEMORY_FILE
  • Aşağıdaki türlerde birincil sensör (uyandırma dışı varyant) için sensör doğrudan kanalı üzerinden olay raporlamasının DESTEKLENMELİDİR:
  • TYPE_ACCELEROMETER
  • TYPE_ACCELEROMETER_UNCALIBRATED
  • TYPE_GYROSCOPE
  • TYPE_GYROSCOPE_UNCALIBRATED
  • TYPE_MAGNETIC_FIELD
  • TYPE_MAGNETIC_FIELD_UNCALIBRATED

7.3.10. Parmak İzi Sensörü

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

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

Cihaz uygulamaları, bir parmak izi sensörü içeriyorsa ve sensörü üçüncü taraf uygulamalarının kullanımına sunuyorsa:

  • [C-1-1], android.hardware.fingerprint özelliği için destek verdiğini BELİRTMELİDİR.
  • [C-1-2], Android SDK dokümanlarında açıklandığı gibi ilgili API'yi tam olarak uygulamalıdır.
  • [C-1-3] %0,002'den yüksek olmayan bir yanlış kabul oranı OLMALIDIR.
  • [SR] Adres sahteciliği ve sahtecilik konulu kabul oranının %7'nin üzerinde olmaması ÖNEMLE ÖNERİLİR.
  • [C-1-4] Bu modun, güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceğini açıklaması ve adres sahteciliği ve sahtecilikle ilgili kabul oranları %7'nin üzerindeyse bu modu etkinleştirmenin risklerini açıkça belirtmesi ZORUNLUDUR.
  • [C-1-5] Parmak izi doğrulaması için beş yanlış denemeden sonra en az 30 saniye süreyle hız sınırlaması GEREKİR.
  • [C-1-6] cihazın donanım destekli bir anahtar deposu uygulamasına sahip olması ve parmak izi eşleştirmesini bir Güvenilir Yürütme Ortamı (TEE) ya da TEE'ye giden güvenli kanala sahip bir çip üzerinde gerçekleştirmesi ZORUNLUDUR.
  • [C-1-7], Android Açık Kaynak Projesi sitesindeki uygulama yönergelerinde belgelendiği gibi, Güvenilir Yürütme Ortamı (TEE) dışında edinilemez, okunamayacak veya değiştirilemeyecek şekilde tüm tanınabilir parmak izi verilerinin şifrelenmesi ve kriptografik olarak doğrulanması ZORUNLUDUR.
  • [C-1-8] Kullanıcının, TEE tarafından korunan mevcut cihaz kimlik bilgilerini (PIN/desen/şifre) veya mevcut cihaz kimlik bilgilerini (PIN/desen/şifre) eklemesini veya güven zinciri oluşturmadan önce parmak izi eklenmesinin engellenmesi ZORUNLUDUR. Android Açık Kaynak Projesi'nin uygulanması, bu işlem için çerçeve içindeki mekanizmayı sağlar.
  • [C-1-9] Üçüncü taraf uygulamalarının, ayrı ayrı parmak izlerini birbirinden ayırt etmesine izin VERMEMELİDİR.
  • [C-1-10] DevicePolicyManager.KEYGUARD_DISABLE_FINGERYA işaretini dikkate almalı.
  • [C-1-11] Android 6.0'dan önceki bir sürümden yeni sürüme geçildiğinde, parmak izi verilerinin yukarıdaki şartları karşılamak için güvenli bir şekilde taşınması veya kaldırılması ZORUNLUDUR.
  • [SR] Yanlış ret oranının cihaz üzerinde ölçülen %10'dan düşük olması ÖNEMLE ÖNERİLİR.
  • [SR] Kayıtlı bir parmağın, parmak izi sensörüne dokunulduğu andan ekranın kilidi açılana kadar sürdüğü gecikmenin 1 saniyeden az olması ÖNEMLE ÖNERİLİR.
  • Android Açık Kaynak Projesi'nde sağlanan Android Parmak İzi simgesini kullanmanız GEREKİR.

7.3.11. Yalnızca Android Automotive sensörleri

Otomotivle ilgili sensörler android.car.CarSensorManager API içinde tanımlanmıştır.

7.3.11.1. Mevcut Dişli

Cihaza özel gereksinimler için bkz. Bölüm 2.5.1.

7.3.11.2. Gündüz Gece Modu

Cihaza özel gereksinimler için bkz. Bölüm 2.5.1.

7.3.11.3. Sürüş Durumu

Cihaza özel gereksinimler için bkz. Bölüm 2.5.1.

7.3.11.4. Tekerlek Hızı

Cihaza özel gereksinimler için bkz. Bölüm 2.5.1.

7.3.12. Poz Sensörü

Cihaz uygulamaları:

  • 6 serbestlik derecesine sahip poz sensörünü destekleyebilir.

Cihaz uygulamaları, 6 serbestlik derecesine sahip poz sensörünü destekliyorsa:

  • [C-1-1] TYPE_POSE_6DOF sensörünü uygulamalı ve bildirmeli.
  • [C-1-2], tek başına döndürme vektöründen daha doğru OLMALIDIR.

7.4. Veri Bağlantısı

7.4.1. Telefon Hizmeti

Android API'ları tarafından kullanılan "telefon" ve bu dokümanda özellikle, bir GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanımla ilgilidir. Bu sesli aramalar paket anahtarlı olabilir veya olmayabilir, ancak aynı ağ kullanılarak uygulanabilecek herhangi bir veri bağlantısından bağımsız olarak Android'in amaçları doğrultusunda kullanılır. Diğer bir deyişle, Android "telefon" işlevi ve API'leri özellikle sesli aramaları ve SMS'leri ifade eder. Örneğin, arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarına bakılmaksızın telefon cihazı olarak kabul edilmez.

  • Android, telefon donanımı bulunmayan cihazlarda KULLANILABİLİR. Yani Android, telefon dışındaki 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 işaretlerini teknolojiye göre beyan etmelidir.
  • [C-1-2] bu teknolojiye yönelik API için tam destek uygulaması ZORUNLUDUR.

Cihaz uygulamaları telefon donanımı içermiyorsa:

  • [C-2-1], tüm API'leri işlemsiz olarak uygulaması ZORUNLUDUR.
7.4.1.1. Numara Engelleme Uyumluluğu

Cihaz uygulamaları android.hardware.telephony feature bildirirse:

  • [C-1-1] Numara engelleme desteği İÇERMELİDİR
  • [C-1-2], BlockedNumberContract ve ilgili API'yi SDK dokümanlarında açıklandığı gibi tam olarak uygulamalıdır.
  • [C-1-3], uygulamalarla etkileşimde bulunmadan "BlockedNumberProvider" içindeki bir telefon numarasından gelen tüm çağrıları ve mesajları engellemelidir. Bunun tek istisnası, numara engellemenin SDK dokümanlarında açıklandığı gibi geçici olarak kaldırılmasıdır.
  • [C-1-4], engellenen bir arama için platform çağrı kaydı sağlayıcısına YAZMAMALIDIR.
  • [C-1-5], engellenen bir mesaj için Telefon hizmeti sağlayıcısına YAZMAMALIDIR.
  • [C-1-6], TelecomManager.createManageBlockedNumbersIntent() yönteminin döndürdüğü niyetle açılan bir engellenen sayılar yönetimi kullanıcı arayüzü uygulaması ZORUNLUDUR.
  • [C-1-7] Android platformu birincil kullanıcının cihazdaki telefon hizmetleri üzerinde tam kontrole sahip olduğunu varsaydığından, ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine izin VERMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzünün ikincil kullanıcılar için gizlenmesi ve engellenenler listesine yine de uyulması ZORUNLUDUR.
  • Cihaz Android 7.0 sürümüne güncellendiğinde, engellenen numaraları sağlayıcıya taşımanız GEREKİR.
7.4.1.2. Telekom API'sı

Cihaz uygulamaları android.hardware.telephony bildiriminde bulunursa:

  • [C-SR] Mikrofonlu kulaklığın KEYCODE_MEDIA_PLAY_PAUSE ve KEYCODE_HEADSETHOOK etkinliklerini android.telecom API'leri için aşağıdaki şekilde işlemek ÖNERİLİR:
    • Devam eden bir arama sırasında önemli etkinliğe kısa bir süre basıldığı algılandığında Connection.onDisconnect() numaralı telefonu arayın.
    • Gelen bir arama sırasında önemli etkinliğe kısa bir süre basıldığı algılandığında Connection.onAnswer() numaralı telefonu çağırın.
    • Gelen bir arama sırasında önemli etkinliğe uzun bir süre basıldığı algılandığında Connection.onReject() numaralı telefonu ara.
    • CallAudioState için yoksayma durumunu aç/kapat

7.4.2. IEEE 802.11 (Kablosuz)

Cihaz uygulamaları:

  • 802.11'in bir veya daha fazla biçimi için destek İÇERMELİDİR.

Cihaz uygulamaları, 802.11 desteği içeriyorsa ve işlevi üçüncü taraf bir uygulamaya sunuyorsa

  • [C-1-1] İlgili Android API'sinin uygulanması ZORUNLUDUR.
  • [C-1-2], donanım özelliği bayrağı android.hardware.wifi Bildirilmelidir.
  • [C-1-3], çoklu yayın API'sini SDK dokümanlarında açıklandığı gibi uygulaması ZORUNLUDUR.
  • [C-1-4], çoklu yayın DNS'yi (mDNS) DESTEKLEMELİ ve aşağıdakiler dahil olmak üzere herhangi bir işlem sırasında mDNS paketlerini (224.0.0.251) İZLEMEMELİDİR:
    • Ekran etkin durumda olmadığında bile.
    • Android Televizyon cihaz uygulamaları için, bekleme modundaki güçlerde bile.
  • STA bağlantısı yokken kaynak MAC adresi ve yoklama istek çerçevelerinin sıra numarası rastgele hale getirilmelidir (her taramanın başında bir kez).
    • Bir taramadan oluşan her yoklama isteği çerçeveleri grubu tek bir tutarlı MAC adresi kullanmalıdır (MAC adresini tarama işleminin ortasında rastgele hale getirmemek gerekir).
    • Yoklama isteği sıra numarası, bir taramadaki yoklama istekleri arasında normal şekilde (sıralı olarak) yinelenmelidir
    • Kontrol isteği sıra numarası, bir taramanın son yoklama isteği ile bir sonraki taramanın ilk yoklama isteği arasında rastgele bir değere sahip olmalıdır.
  • STA bağlantısı kesildiğinde, yoklama istek çerçevelerinde yalnızca aşağıdaki bilgi öğelerine izin verilmelidir:
    • SSID Parametresi Grubu (0)
    • DS Parametre Grubu (3)
7.4.2.1. Kablosuz Doğrudan Bağlantı

Cihaz uygulamaları:

  • Kablosuz Doğrudan Bağlantı (eşler arası kablosuz) desteği İÇERMELİDİR.

Kablosuz Doğrudan Bağlantı desteği içeren cihaz uygulamaları:

  • [C-1-1], ilgili Android API'yi SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.
  • [C-1-2] android.hardware.wifi.direct donanım özelliğini bildirmesi GEREKİR.
  • [C-1-3] normal kablosuz işlemini DESTEKLEMELİDİR.
  • Kablosuz ve Doğrudan Kablosuz Bağlantı işlemlerini aynı anda DESTEKLEMELİDİR.

Cihaz uygulamaları:

Cihaz uygulamaları TDLS desteği içeriyorsa ve TDLS WifiManager API tarafından etkinleştirilmişse:

  • [C-1-1], WifiManager.isTdlsSupported tarihine kadar TDLS'yi desteklediğini beyan etmelidir.
  • TDLS'yi yalnızca mümkün VE yararlı olduğunda kullanın.
  • Performansı Wi-Fi erişim noktasından daha kötü olduğunda TDLS'nin biraz sezgisel olması ve TDLS'yi KULLANMAMALIDIR.
7.4.2.3. Kablosuz Ağ Uyumlu

Cihaz uygulamaları:

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

  • [C-1-1], WifiAwareManager API'lerini SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.
  • [C-1-2], android.hardware.wifi.aware özellik bayrağını beyan etmelidir.
  • [C-1-3] Kablosuz ve Wi-Fi Aware işlemlerini aynı anda DESTEKLEMELİDİR.
  • [C-1-4], 30 dakikadan uzun aralıklarla ve Wi-Fi Aware'i etkinleştirildiğinde Wi-Fi Aware yönetim arayüzü adresini rastgele hale getirmesi ZORUNLUDUR.
7.4.2.4. Kablosuz Ağ Şifre Noktası

Cihaz uygulamaları:

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

  • [C-1-1], Passpoint ile ilişkili WifiManager API'lerini SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.
  • [C-1-2] Genel Reklamcılık Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi özellikle Ağ Keşfi ve Seçim ile ilişkili olan IEEE 802.11u standardını DESTEKLEMELİDİR.

Bunun aksine, cihaz uygulamaları kablosuz ağ Passpoint desteğini içermiyorsa:

  • [C-2-1] Passpoint ile ilgili WifiManager API'leri uygulanırken UnsupportedOperationException ZORUNLUDUR.

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ı android.hardware.vr.high_performance özelliği beyan ederse:

  • [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı'nı DESTEKLEMELİDİR.

Android'de Bluetooth ve Bluetooth Düşük Enerji desteği vardır.

Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:

  • [C-2-1], ilgili platform özelliklerini (sırasıyla android.hardware.bluetooth ve android.hardware.bluetooth_le) beyan etmeli ve platform API'lerini uygulamalıdır.
  • A2DP, AVCP, OBEX gibi ilgili Bluetooth profilleri cihaza uygun şekilde uygulansın.

Cihaz uygulamaları Bluetooth Düşük Enerji desteği içeriyorsa:

  • [C-3-1] android.hardware.bluetooth_le donanım özelliğinin beyan edilmesi ZORUNLUDUR.
  • [C-3-2], GATT (genel özellik profili) tabanlı Bluetooth API'lerini, SDK dokümanlarında ve android.bluetooth dokümanında açıklandığı şekilde ETKİNLEŞTİRMELİDİR.
  • [C-3-3], ScanFilter API sınıflarına yönelik filtreleme mantığının uygulanıp uygulanmadığını belirtmek üzere BluetoothAdapter.isOffloadedFilteringSupported() için doğru değeri Bildirmelidir.
  • [C-3-4], Düşük Enerji reklamcılığının desteklenip desteklenmediğini belirtmek için BluetoothAdapter.isMultipleAdvertisementSupported() için doğru değerin Bildirilmesi ZORUNLUDUR.
  • ScanFilter API uygulanırken filtreleme mantığının Bluetooth yonga setine boşaltılmasını DESTEKLEMELİDİR.
  • Toplu taramanın Bluetooth yonga setine boşaltılmasını DESTEKLEMELİDİR.
  • En az 4 alanlı çoklu reklamı DESTEKLEMELİDİR.

  • [SR] 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulanması ve kullanıcı gizliliğini korumak için adresi zaman aşımı olduğunda döndürmesi ÖNEMLE ÖNERİLİR.

7.4.4. Near Field Communication

Cihaz uygulamaları:

  • Near Field Communication (NFC) için alıcı-verici ve ilgili donanım İÇERMELİDİR.
  • [C-0-1], NFC desteği içermese veya sınıfları protokolden bağımsız veri temsili biçimini temsil ettiğinden android.hardware.nfc özelliğini beyan etmese bile android.nfc.NdefMessage ve android.nfc.NdefRecord API'lerini uygulaması ZORUNLUDUR.

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

  • [C-1-1] android.hardware.nfc özelliğini android.content.pm.PackageManager.hasSystemFeature() yönteminden BİLDİRMELİDİR.
  • NDEF mesajlarını aşağıdaki NFC standartları aracılığıyla okuyabilmesi ve yazabilmesi ZORUNLUDUR:
  • [C-1-2] Aşağıdaki NFC standartlarına göre bir NFC Forumu okuyucusu/yazarı (NFC Forumu teknik özelliği NFCForum-TS-DigitalProtocol-1.0 tarafından tanımlandığı şekilde) olarak hareket edebilmelidir:
  • NfcA (ISO14443-3A)
  • NFCB (ISO14443-3B)
  • NfcF (JIS X 6319-4)
  • IsoDep (ISO 14443-4)
  • NFC Forum Etiketi Tür 1, 2, 3, 4, 5 (NFC Forumu tarafından tanımlanmıştır)
  • [SR] Aşağıdaki NFC standartlarını kullanarak ham verilerin yanı sıra NDEF mesajlarını da okuyup yazabilmesi ÖNERİLİR. NFC standartları GERÇEKTEN ÖNERİLİR olarak belirtilse de gelecekteki bir sürümün Uyumluluk Tanımı'nın bunları ZORUNLU olarak değiştirmesi planlanmaktadır. Bu standartlar bu sürümde isteğe bağlıdır, ancak gelecekteki sürümlerde gerekli olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine geçebilmeleri için bu gereksinimleri şimdi karşılamaları önemle tavsiye edilir.

  • [C-1-3] aşağıdaki eşler arası standartlar ve protokoller aracılığıyla veri iletme ve alma yeteneği OLMALIDIR:

  • ISO 18092
  • LLCP 1.2 (NFC Forumu tarafından tanımlanır)
  • SDP 1.0 (NFC Forumu tarafından tanımlanmıştır)
  • NDEF Aktarma Protokolü
  • SNEP 1.0 (NFC Forumu tarafından tanımlanmıştır)
  • [C-1-4] Android Beam desteğinin olması ve Android Beam'in varsayılan olarak ETKİNLEŞTİRİLMESİ GEREKİR.
  • [C-1-5], Android Beam veya başka bir özel NFC P2p modu etkinken Android Beam'i kullanarak ileti gönderip alabilmelidir.
  • [C-1-6] SNEP varsayılan sunucusunu uygulaması ZORUNLUDUR. Varsayılan SNEP sunucusu tarafından alınan geçerli NDEF mesajlarının uygulamalara android.nfc.ACTION_NDEF_DISCOVERED amacı kullanılarak gönderilmesi ZORUNLUDUR. Ayarlarda Android Beam'in devre dışı bırakılması, gelen NDEF mesajının gönderilmesini DEVRE DIŞI BIRAKMAMALIDIR.
  • [C-1-7], NFC paylaşım ayarlarını göstermek için android.settings.NFCSHARING_SETTINGS niyetini dikkate almalıdır.
  • [C-1-8] NPP sunucusunu uygulaması ZORUNLUDUR. NPP sunucusu tarafından alınan iletilerin, SNEP varsayılan sunucusuyla aynı şekilde İŞLENMELİDİR.
  • [C-1-9] Android Beam etkinleştirildiğinde bir SNEP istemcisi uygulamalı ve giden P2P NDEF'yi varsayılan SNEP sunucusuna göndermeyi denemelidir. Varsayılan SNEP sunucusu bulunamazsa istemcinin bir NPP sunucusuna veri göndermeyi denemesi GEREKİR.
  • [C-1-10]; android.nfc.NfcAdapter.setNdefPushMessage, android.nfc.NfcAdapter.setNdefPushMessageCallback ve android.nfc.NfcAdapter.enableForegroundNdefPush kullanarak ön plan etkinliklerinin giden P2P NDEF mesajını ayarlamasına izin vermelidir.
  • Giden P2P NDEF iletilerini göndermeden önce bir hareket veya ekranda "Işınlamak için Dokun" gibi bir onay hareketi KULLANILMALIDIR.
  • Cihaz Bluetooth Nesne Aktarma Profili'ni destekliyorsa, [C-1-11] Bluetooth'a NFC Bağlantısı aktarımını DESTEKLEMELİDİR.
  • [C-1-12], android.nfc.NfcAdapter.setBeamPushUris kullanılırken NFC Forumu'ndan "Bağlantı Aktarma sürüm 1.2" ve "NFC sürüm 1.0'ı kullanarak Bluetooth Güvenli Basit Eşleme" özelliklerini uygulayarak Bluetooth'a bağlantı aktarımını desteklemelidir. Bu tür bir uygulamada, devir isteğinin/seçim kayıtlarının NFC üzerinden değiştirilmesi için "urn:nfc:sn:handover" hizmet adıyla devir LLCP hizmetinin uygulanması ZORUNLUDUR, ayrıca Bluetooth veri aktarımı için de Bluetooth Nesne Aktarma Profili'ni kullanmalıdır. Eski nedenlerden (Android 4.1 cihazlarla uyumluluklarını korumak için) uygulamanın, devir isteğinin/seçim kayıtlarının NFC üzerinden değişimiyle ilgili SNEP GET isteklerini yine de kabul etmesi gerekir. Ancak bir uygulamanın kendisi, bağlantı aktarımı gerçekleştirmek için SNEP GET istekleri GÖNDERMEMELİDİR.
  • [C-1-13] NFC keşif modundayken desteklenen tüm teknolojileri yoklaması ZORUNLUDUR.
  • Cihaz uyanık durumdayken ve ekran etkin durumdayken, kilit ekranının kilidi açıkken NFC keşif modunda olması GEREKİR.
  • Thinfilm NFC Barcode ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmesi gerekir.

(Herkese açık bağlantıların yukarıda belirtilen JIS, ISO ve NFC Forumu spesifikasyonları için kullanılamadığını unutmayın.)

Android, NFC Ana Kart Emülasyonu (HCE) modunu destekler.

Cihaz uygulamaları, HCE (NfcA ve/veya NfcB için) yapabilen ve Uygulama Kimliği (AID) yönlendirmesini destekleyen bir NFC denetleyici yonga seti içeriyorsa:

  • [C-2-1], android.hardware.nfc.hce özellik sabitini BİLDİRMELİDİR.
  • [C-2-2], Android SDK'da tanımlandığı gibi NFC HCE API'lerini DESTEKLEMELİDİR.

Cihaz uygulamaları, NfcF için HCE yapabilen bir NFC denetleyici yonga seti içeriyorsa ve bu özelliği üçüncü taraf uygulamalarda uyguluyorsa:

  • [C-3-1], android.hardware.nfc.hcef özellik sabitini Bildirmelidir.
  • [C-3-2], Android SDK'da tanımlandığı gibi NfcF Kart Emülasyon API'lerini uygulaması ZORUNLUDUR.

Cihaz uygulamaları bu bölümde açıklandığı gibi genel NFC desteğini içeriyorsa ve okuyucu/yazar rolünde MIFARE teknolojisini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:

  • [C-4-1], Android SDK'da belirtildiği şekilde ilgili Android API'lerini 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 android.content.pm.PackageManager sınıfında sabit bir değer olarak görünmediğini unutmayın.

7.4.5. Minimum Ağ Yeteneği

Cihaz uygulamaları:

  • [C-0-1] Bir veya daha fazla veri ağı türü için destek İÇERMELİDİR. Özellikle, cihaz uygulamalarının 200 Kbit/sn veya daha yüksek hıza sahip en az bir veri standardını desteklemesi ZORUNLUDUR. Bu şartı karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet, Bluetooth PAN vb. verilebilir.
  • [C-0-2]; bir IPv6 ağ yığını içermeli ve java.net.Socket ile java.net.URLConnection gibi yönetilen API'lerin yanı sıra AF_INET6 yuvaları gibi yerel API'leri kullanarak IPv6 iletişimini desteklemelidir.
  • [C-0-3] IPv6'nın varsayılan olarak ETKİNLEŞTİRİLMESİ GEREKİR.
  • Örneğin, IPv6 iletişiminin IPv4 kadar güvenilir olduğundan emin olunması ZORUNLUDUR.
  • [C-0-4] Doz modunda IPv6 bağlantısı ZORUNLUDUR.
  • [C-0-5] Hız sınırlama, en az 180 saniyelik RA kullanım ömrü kullanan IPv6 uyumlu ağlarda cihazın IPv6 bağlantısını kaybetmesine NEDEN OLMAMALIDIR.
  • Ayrıca birincil veri bağlantısı bir fiziksel ağ standardı (Ethernet gibi) olduğunda 802.11 (Kablosuz) gibi en az bir ortak kablosuz veri standardı için destek İÇERMELİDİR
  • Birden fazla veri bağlantısı biçimi uygulayamaz.

Gerekli IPv6 desteği düzeyi, aşağıdaki gibi ağ türüne bağlıdır:

Cihaz uygulamaları kablosuz ağları destekliyorsa, bunlar:

  • [C-1-1], kablosuz ağda çift yığınlı ve yalnızca IPv6 işlemini DESTEKLEMELİDİR.

Cihaz uygulamaları Ethernet ağlarını destekliyorsa, bunlar:

  • [C-2-1] Ethernet'te çift yığın işlemini DESTEKLEMELİDİR.

Cihaz uygulamaları hücresel veriyi destekliyorsa:

  • Bir cihaz aynı anda birden fazla ağa (ör. Kablosuz ve hücresel veri), .
  • Hücresel veri üzerinde IPv6 işlemini (yalnızca IPv6 ve muhtemelen çift yığın) DESTEKLEMELİ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ının varsayılan olarak açık olması gerekir.

7.4.7. Veri tasarrufu

Cihaz uygulamaları sayaçlı bağlantı içeriyorsa:

  • [SR] Veri tasarrufu modunu sağlamanız ÖNEMLE ÖNERİ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ürmelidir
  • [C-2-2] ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED İLE İLGİLİ YAYINLANMAMALIDIR.
  • [C-2-3], Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS amacını işleyen bir etkinlik İÇERMELİDİR ancak bunu işlemsiz olarak uygulayabilir.

7.5. Kameralar

Cihaz uygulamaları en az bir kamera içeriyorsa:

  • [C-1-1], android.hardware.camera.any özellik bayrağını beyan etmelidir.
  • [C-1-2] Bir uygulamanın, aynı anda cihazdaki en büyük çözünürlüklü kamera sensörü tarafından üretilen resimlerin boyutuna eşit 3 RGBA_8888 bit eşlem ayırması; temel önizleme ve görüntü yakalamaya devam etmek amacıyla kameranın da açık olması ZORUNLUDUR.

7.5.1. Arka Kamera

Arka kamera, cihazın yan tarafında, ekranın karşısında bulunan bir kameradır. Diğer bir deyişle, geleneksel bir kamera gibi cihazın uzak tarafındaki sahneleri görüntüler.

Cihaz uygulamaları:

  • Arka yüz kamerası KULLANILMALIDIR.

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üğünde olması ZORUNLUDUR.
  • Kamera sürücüsünde, donanım otomatik odaklama veya yazılım otomatik odaklama (uygulama yazılımına göre şeffaf) uygulanmalıdır.
  • Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanıma sahip OLABİLİR.
  • Flaş İÇEREBİLİR.

Kamerada bir flaş varsa:

  • [C-2-1] Kamera önizleme yüzeyine bir android.hardware.Camera.PreviewCallback örneği kaydedilmişse 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ı YANMAMALIDIR. Bu kısıtlamanın, cihazdaki yerleşik 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 Yüz Kamera

Ön kamera, cihazın ekranla aynı tarafında bulunan bir kameradır. Diğer bir deyişle, genellikle video konferans ve benzer uygulamalarda kullanıcının görüntüsünü almak için kullanılan bir kameradır.

Cihaz uygulamaları:

  • Ön kamera içerebilir

Cihaz uygulamaları en az bir ön kamera içeriyorsa:

  • [C-1-1] android.hardware.camera.any ve android.hardware.camera.front özellik bayrağını bildirmelidir.
  • [C-1-2] Çözünürlüğü en az VGA (640x480 piksel) olmalıdır.
  • [C-1-3] Kamera API'si için varsayılan olarak ön kamera KULLANILMAMALIDIR ve cihazdaki tek kamera olsa bile, ön kamerayı varsayılan arka kamera olarak değerlendirecek şekilde API'yi AYARLANMAMALIDIR.
  • [C-1-5] Geçerli uygulama, android.hardware.Camera.setDisplayOrientation() yöntemine yapılan bir çağrıyla Kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesinin uygulama tarafından belirtilen yöne göre yatay olarak yansıtılması ZORUNLUDUR. Diğer taraftan, geçerli uygulama, android.hardware.Camera.setDisplayOrientation() yöntemine yapılan bir çağrıyla Kamera ekranının döndürülmesini açıkça istemediğinde önizlemenin cihazın varsayılan yatay ekseni boyunca yansıtılması ZORUNLUDUR.
  • [C-1-6], uygulama geri çağırma işlevinde döndürülen veya medya depolama alanına kaydedilen nihai hareketsiz görüntü ya da video akışlarını YAZMAMALIDIR.
  • [C-1-7], yayın sonrası tarafından görüntülenen resmi, kamera önizleme görüntü akışıyla aynı şekilde yansıtmalıdır.
  • Bölüm 7.5.1'de açıklandığı gibi, arka kameralarda kullanılabilen özellikler (otomatik odaklama, flaş vb.) içerebilir.

Cihaz uygulamaları, kullanıcı tarafından döndürülebiliyorsa (örneğin, bir ivme ölçer ile otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak):

  • [C-2-1] Kamera önizlemesinin, cihazın mevcut yönüne göre yatay olarak yansıtılması ZORUNLUDUR.

7.5.3. Harici Kamera

Cihaz uygulamaları:

  • Her zaman bağlı olmayan harici bir kamera desteği İÇEREBİLİR.

Harici kamera desteği içeren cihaz uygulamaları:

  • [C-1-1] android.hardware.camera.external ve android.hardware camera.any platform özellik bayrağını beyan etmek ZORUNLUDUR.
  • Harici kamera USB bağlantı noktası üzerinden bağlanıyorsa [C-1-2] USB Video Sınıfı'nı (UVC 1.0 veya üzeri) desteklemektedir.
  • 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.
  • Birden fazla kamerayı destekleyebilir.
  • Kamera tabanlı video kodlamayı destekleyebilir. Destekleniyorsa cihaz uygulaması tarafından eş zamanlı olarak kodlanmamış bir MJPEG yayının (QVGA veya daha yüksek çözünürlük) erişilebilir olması ZORUNLUDUR.

7.5.4. Kamera API'si Davranışı

Android, kameraya erişmek için iki API paketi içerir. Yeni android.hardware.camera2 API'si ise uygulamaya düşük düzeyli kamera kontrolü sunar. Bunlar arasında verimli sıfır kopyalı seri çekim/akış akışları ve kare başına pozlama, kazanç, beyaz dengesi kazanımları, renk dönüştürme, parazit giderme, keskinleştirme ve daha birçok özellik bulunur.

Eski API paketi (android.hardware.Camera), Android 5.0'da kullanımdan kaldırıldı olarak işaretlendi ancak uygulamaların kullanması için hâlâ mevcut olmalıdır. Android cihaz uygulamalarında, bu bölümde ve Android SDK'sında açıklandığı şekilde API'nin desteklenmeye devam etmesi ZORUNLUDUR.

Cihaz uygulamalarının, mevcut tüm kameralarda kamerayla ilgili API'lerde aşağıdaki davranışları uygulaması ZORUNLUDUR. Cihaz uygulamaları:

  • [C-0-1] Bir uygulama android.hardware.Camera.Parameters.setPreviewFormat(int) yöntemini hiç çağırmadığında uygulama geri çağırmalarına sağlanan önizleme verileri için android.hardware.PixelFormat.YCbCr_420_SP KULLANMALIDIR.
  • Bir uygulama android.hardware.Camera.PreviewCallback örneği kaydettiğinde ve sistem onPreviewFrame() yöntemini çağırdığında ve önizleme biçimi YCbCr_420_SP olduğunda [C-0-2] yine NV21 kodlama biçiminde OLMALIDIR. Bayttaki veriler[] onPreviewFrame() içine aktarılır. Diğer bir deyişle, NV21 varsayılan değer olmalıdır.
  • [C-0-3] android.hardware.Camera ürününde hem ön hem de arka kameralarda kamera önizlemeleri için YV12 biçimini (android.graphics.ImageFormat.YV12 sabit değeri ile belirtildiği gibi) DESTEKLEMELİDİR. (Donanımla video kodlayıcı ve kamerada herhangi bir yerel piksel biçimi kullanılabilir, ancak cihaz uygulamasının YV12'ye dönüştürmeyi desteklemesi ZORUNLUDUR.)
  • [C-0-4], android.request.availableCapabilities ürününde REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE özelliğini tanıtan android.hardware.camera2 cihazlar için android.media.ImageReader API üzerinden çıkış olarak android.hardware.ImageFormat.YUV_420_888 ve android.hardware.ImageFormat.JPEG biçimlerini desteklemelidir.
  • Cihazın donanımda otomatik odaklama veya başka özellikler içerip içermediğine bakılmaksızın [C-0-5] yine de Android SDK belgelerindeki Kamera API'sinin tamamını uygulaması ZORUNLUDUR. Örneğin, otomatik odaklama özelliği olmayan kameraların kayıtlı tüm android.hardware.Camera.AutoFocusCallback örneklerini çağırması ZORUNLUDUR (bunun, otomatik odaklama olmayan bir kamerayla alakası olmasa bile). Bunun ön kameralar için geçerli olduğunu unutmayın. Örneğin, çoğu ön kamera otomatik odaklamayı desteklemese de, API geri çağırmalarının açıklandığı gibi yine de "sahte" olması gerekir.
  • [C-0-6], android.hardware.Camera.Parameters sınıfında sabit olarak tanımlanan her parametre adını tanımalı ve dikkate almalıdır. Öte yandan, cihaz uygulamaları, android.hardware.Camera.Parameters üzerinde sabit değer olarak belgelenenler dışında android.hardware.Camera.setParameters() yöntemine iletilen dize sabitlerini dikkate ALMAMALIDIR veya TANIMMAMALIDIR. Diğer bir deyişle, donanım izin veriyorsa cihaz uygulamalarının tüm standart Kamera parametrelerini desteklemesi ve özel Kamera parametre türlerini DESTEKLEMEMELİDİR. Örneğin, yüksek dinamik aralık (HDR) görüntüleme teknikleri kullanılarak görüntü yakalamayı destekleyen cihaz uygulamalarında, Camera.SCENE_MODE_HDR kamera parametresinin desteklenmesi ZORUNLUDUR.
  • [C-0-7], Android SDK'da açıklandığı gibi android.info.supportedHardwareLevel özelliğiyle uygun destek düzeyini bildirmeli ve uygun çerçeve özelliği işaretlerini bildirmelidir.
  • [C-0-8] android.hardware.camera2 cihazının kamera özelliklerini de android.request.availableCapabilities özelliği aracılığıyla beyan etmeli ve uygun özellik bayraklarını beyan etmelidir. Takılı kamera cihazlarından herhangi biri özelliği destekliyorsa özellik bayrağının tanımlanması ZORUNLUDUR.
  • Kamera tarafından yeni bir resim çekildiğinde ve resim medya mağazasına eklendiğinde [C-0-9] Camera.ACTION_NEW_PICTURE intent'ini yayınlamalıdır.
  • Kamera tarafından yeni bir video kaydedildiğinde ve resim girişi medya mağazasına eklendiğinde [C-0-10] Camera.ACTION_NEW_VIDEO niyetini yayınlamalıdır.

7.5.5. Kamera Yönü

Cihaz uygulamalarında ön veya arka kamera varsa, bu tür kameralar:

  • [C-1-1] Kameranın uzun boyutu, ekranın uzun boyutuyla aynı olacak şekilde yönlendirilmelidir. Yani, cihaz yatay yönde tutulduğunda, kameraların yatay yönde resim çekmesi GEREKİR. Bu, cihazın doğal yönü ne olursa olsun geçerlidir. Yani, yatay birincil cihazların yanı sıra dikey birincil cihazlar için de geçerlidir.

7.6. Bellek ve Depolama

7.6.1. Minimum Bellek ve Depolama

Cihaz uygulamaları:

  • [C-0-1] Uygulamaların veri dosyalarını indirmek için kullanabileceği bir İndirme Yöneticisi İÇERMELİDİR ve varsayılan "önbellek" konumuna en az 100 MB'lık tek tek dosyaları indirebilmelidir.

7.6.2. Uygulama Paylaşılan Depolama Alanı

Cihaz uygulamaları:

  • [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı SUNMALIDIR. Bunlar genellikle "paylaşılan harici depolama", "uygulama paylaşılan depolama alanı" veya yüklendiği Linux yolu "/sdcard" olarak da bilinir.
  • [C-0-2], depolama alanının dahili depolama bileşeni veya çıkarılabilir depolama ortamında (ör. Güvenli Dijital kart yuvası) uygulanmış olmasından bağımsız olarak, varsayılan olarak, yani "kullanıma hazır" bir paylaşılan depolama biriminin eklenmesi gerekir.
  • [C-0-3] Uygulama paylaşılan depolama alanını doğrudan sdcard Linux yoluna EKLEMELİ veya sdcard ile gerçek ekleme noktasına Linux sembolik bir bağlantısı dahil etmelidir.
  • [C-0-4], bu paylaşılan depolama alanında android.permission.WRITE_EXTERNAL_STORAGE iznini SDK'da belirtildiği şekilde zorunlu kılmalıdır. Paylaşılan depolama biriminin, bu izni alan herhangi bir uygulama tarafından yazılabilir olması ZORUNLUDUR.

Cihaz uygulamaları, aşağıdakilerden biri kullanılarak yukarıdaki şartları karşılayabilir:

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

Yukarıdaki gereksinimleri karşılamak için çıkarılabilir depolama alanı kullanılan cihaz uygulamalarında şunlar geçerli olur:

  • [C-1-1] Yuvada depolama ortamı olmadığında kullanıcıyı uyaran bir bildirim mesajı veya pop-up kullanıcı arayüzü GEREKİR.
  • [C-1-2] FAT biçiminde bir depolama ortamı (ör. SD kart) veya kutu üzerinde ve satın alma sırasında bulunan ve ayrı olarak satın alınabilecek diğer materyallerde yer alması ZORUNLUDUR.

Cihaz uygulamaları, yukarıdaki gereksinimleri 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ŞABİLİRSİNİZ.

Cihaz uygulamaları birden çok paylaşılan depolama yolu (örneğin, bir SD kart yuvası ve paylaşılan dahili depolama) içeriyorsa:

  • [C-3-1] Pakete özel dizinlere veya ACTION_OPEN_DOCUMENT_TREE niyeti tetiklenerek döndürülen URI içindeki durumlar hariç, yalnızca WRITE_EXTERNAL_STORAGE izni olan önceden yüklenmiş ve ayrıcalıklı Android uygulamalarının ikincil harici depolamaya yazmasına izin verilmelidir.

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

  • [C-3-1] bir ana bilgisayardan uygulamanın paylaşılan depolama alanındaki verilere erişmek için bir mekanizma SAĞLAMALIDIR.
  • Her iki depolama yolundaki içeriği, Android'in medya tarayıcı hizmeti ve android.provider.MediaStore üzerinden şeffaf bir şekilde TAŞI VERMELİDİR.
  • USB yığın depolama birimi KULLANABİLİR, ancak bu gereksinimi karşılamak için Medya Aktarım Protokolü KULLANILMALIDIR.

Cihaz uygulamalarında USB çevre birimi moduna sahip bir USB bağlantı noktası varsa ve Medya Aktarım Protokolü destekleniyorsa:

  • Referans Android MTP ana makinesi olan Android Dosya Aktarımı ile uyumlu OLMALIDIR.
  • 0x00 değerinde bir USB cihaz sınıfı Bildirilmelidir.
  • USB arayüzü adı "MTP" olarak BELİRTİLMELİDİR.

7.6.3. Kabul Edilebilir Depolama Alanı

Cihazın, televizyonun aksine mobil olması bekleniyorsa cihaz uygulamaları şunlardır:

  • [SR] Kabul edilebilir depolama alanının yanlışlıkla kesilmesi veri kaybına/bozulmasına neden olabileceğinden, bu depolama alanının uzun ömürlü sabit bir konumda uygulanması ÖNEMLE ÖNERİLİR.

Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya diğer koruyucu kapaklar gibi uzun vadede sabit bir yerdeyse cihaz uygulamaları şunlardır:

7.7. USB

Cihaz uygulamalarının 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ının, standart A veya type-C USB bağlantı noktasına sahip bir USB ana makinesine bağlanabilmesi ZORUNLUDUR.
  • [C-1-2], USB standart cihaz tanımlayıcısındaki doğru iSerialNumber değerini android.os.Build.SERIAL üzerinden BİLDİRMELİDİR.
  • [C-1-3], Type-C direnç standardına göre 1,5A ve 3,0A şarj cihazlarını algılamalı ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri ALGILAMALIDIR.
  • [SR] Bağlantı noktasında mikro B, mikro AB veya Type-C USB form faktörü KULLANILMALIDIR. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçebilmesi için bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR.
  • [SR] Bağlantı noktası, cihazın alt kısmına (doğal yöne göre) yerleştirilmeli veya tüm uygulamalarda (ana ekran dahil) yazılım ekranı döndürmenin etkinleştirilmesi gerekir. Böylece, cihaz alttaki bağlantı noktası olacak şekilde doğrultulduğunda ekran doğru şekilde çizilebilir. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçebilmesi için bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR.
  • [SR] USB Pil Şarj özelliği, düzeltme 1.2'de belirtildiği gibi, HS sesi ve trafik sırasında 1,5 A akım çizme desteğinin uygulanması GEREKİR. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçebilmesi için bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR.
  • [SR] Vbus voltajını varsayılan düzeylerin ötesinde değiştiren özel şarj yöntemlerini desteklememesi veya bu şekilde havuz/kaynak rollerini değiştirmesi, standart USB Güç Aktarımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunlarına neden olabilir. Bu özellik "ŞİMDİ ÖNERİLİR" olarak adlandırılsa da gelecekteki Android sürümlerinde standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemek için tüm C tipi cihazlar GEREKTİR.
  • [SR] Type-C USB ve USB ana makine modunu desteklediklerinde veri ve güç rolü değişimi için Güç Aktarımı'nı desteklemesi ÖNERİLİR.
  • Yüksek voltajlı şarj için Güç Aktarımı'nı ve ekran çıkışı gibi Alternatif Modlar'ı DESTEKLEMELİDİR.
  • Android Open Accessory (AOA) API'sini ve spesifikasyonunu Android SDK dokümanlarında belirtildiği şekilde UYGULAMALIDIR.

USB bağlantı noktası içeren cihaz uygulamaları AOA spesifikasyonunu uyguluyorsa:

  • [C-2-1], android.hardware.usb.accessory donanım özelliği için destek beyanı ZORUNLUDUR.
  • [C-2-2] USB yığın depolama sınıfının, arayüz açıklamasının sonunda "android" dizesi olması ZORUNLUDUR. iInterface

7.7.2. USB ana makine modu

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

  • [C-1-1], Android USB ana makine API'sini Android SDK'sında belirtildiği şekilde uygulamalı ve android.hardware.usb.host donanım özelliği için destek verdiğini beyan etmelidir.
  • [C-1-2], standart USB çevre birimlerini bağlamak için destek sunmalıdır. Diğer bir deyişle, aşağıdakilerden birini yapmalıdır:
    • Cihaz üzerinde C tipi bağlantı noktasına sahip olun veya cihazdaki özel bağlantı noktasını standart bir USB type-C bağlantı noktasına (USB Type-C cihazı) uyarlayan kablolarla gönderin.
    • Cihaz üzerinde A tipi bir cihaza sahip olun veya cihazdaki özel bağlantı noktasını standart bir USB A Tipi bağlantı noktasına adapte eden kablolarla gönderin.
    • Cihaz üzerinde bir mikro AB bağlantı noktasına sahip olun. Bu bağlantı noktası, standart A tipi bağlantı noktasına uyarlanan bir kabloyla gönderilmelidir.
  • [C-1-3] USB tip A veya mikro AB bağlantı noktalarından type-C bağlantı noktasına (priz) dönüştürülen bir adaptörle GÖNDERİLMEMELİDİR.
  • [SR] Android SDK dokümanlarında belirtildiği gibi USB ses sınıfının uygulanması ÖNERİLİR.
  • Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini desteklemektedir; USB Type-C konnektörleri için USB Type-C Kablo ve Konnektör Spesifikasyonu Revizyonu 1.2'nin Fesih Parametreleri bölümünde belirtildiği gibi veya USB-AB2 Şarj konnektörü için USB-AB2 Şarj Cihazı teknik özellikleri için Düzeltme 1'de belirtildiği şekilde Aşağı Akış Bağlantı Noktası(CDP) çıkış akım aralığının kullanılması en az 1, 5 A'lık bir kaynak akımının reklamını yapmalıdır.
  • USB Type-C standartları uygulanmalı ve desteklenmelidir.

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ı DESTEKLEMELİDİR
  • [C-2-2], USB HID Kullanım Tabloları ve Voice Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının aşağıdaki gibi KeyEvent sabitleriyle algılanmasını ve eşlenmesini desteklemelidir:
    • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CD): KEYCODE_MEDIA_PLAY_PAUSE
    • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0E9): KEYCODE_VOLUME_UP
    • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0EA): KEYCODE_VOLUME_DOWN
    • Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CF): KEYCODE_VOICE_ASSIST

Cihaz uygulamaları, ana makine modunu ve Depolama Erişim Çerçevesi'ni (SAF) destekleyen bir USB bağlantı noktası içeriyorsa:

  • [C-3-1], uzaktan bağlanmış tüm MTP (Medya Aktarım Protokolü) cihazlarını tanımalı ve bu cihazların içeriklerini ACTION_GET_CONTENT, ACTION_OPEN_DOCUMENT ve ACTION_CREATE_DOCUMENT amaçları üzerinden erişilebilir hale getirmelidir. .

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

  • [C-4-1] USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rol Bağlantı Noktası işlevini uygulamalıdır.
  • [SR] DisplayPort'u desteklemesi ÖNERİLİR, USB SuperSpeed Veri Hızlarını DESTEKLEMELİDİR, veri ve güç rolü değiştirme için Güç Aktarımı'nı desteklemek ÖNERİLİR.
  • [SR] USB Type-C Kablo ve Konnektör Spesifikasyonu Düzeltmesi 1.2 belgesindeki Ek A'da açıklandığı gibi Ses Adaptörü Aksesuar Modu'nu DESTEKLEMEMESİ ÖNEMLE ÖNERİLİR.
  • Cihazın form faktörü için en uygun Deneme.* modelini uygulamalısınız. Örneğin, bir avuç içi cihazda Try.SNK modelini uygulaması GEREKİR.

7.8. Ses

7.8.1. Mikrofon

Mikrofon içeren cihaz uygulamaları:

  • [C-1-1], android.hardware.microphone özellik sabitini Bildirmelidir.
  • [C-1-2], bölüm 5.4'te belirtilen ses kaydı şartlarını ZORUNLUDUR.
  • [C-1-3] Bölüm 5.6'da belirtilen ses gecikmesi şartlarını karşılamalıdır.
  • [SR] Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın kaydın desteklenmesi ÖNEMLE ÖNERİLİR.

Mikrofonu olmayan cihaz uygulamaları:

  • [C-2-1], android.hardware.microphone özellik sabitini BildirMEMELİDİR.
  • [C-2-2] Bölüm 7 uyarınca, ses kaydı API'sini en azından işlemsiz olarak uygulaması ZORUNLUDUR.

7.8.2. Ses Çıkışı

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

  • [C-1-1], android.hardware.audio.output özellik sabitini Bildirmelidir.
  • [C-1-2] Bölüm 5.5'te belirtilen ses çalma şartlarını karşılamalıdır.
  • [C-1-3] Bölüm 5.6'da belirtilen ses gecikmesi şartlarını karşılamalıdır.
  • [SR] Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın oynatmanın desteklenmesi Şiddetle ÖNERİLİR.

Hoparlör veya ses çıkış bağlantı noktası bulunmayan cihaz uygulamaları:

  • [C-2-1], android.hardware.audio.output özelliğini BİLDİRMEMELİDİR.
  • [C-2-2] Ses Çıkışı ile ilgili API'leri en azından işlemsiz olarak uygulaması ZORUNLUDUR.

Bu bölümün amaçları doğrultusunda "çıkış bağlantı noktası", 3, 5 mm ses jakı, HDMI veya USB ses sınıfına sahip USB ana makine modu bağlantı noktası gibi fiziksel bir arayüzdür. Bluetooth, kablosuz ağ veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" olarak değerlendirilmez.

7.8.2.1. Analog Ses Bağlantı Noktaları

Android ekosisteminde 3,5 mm'lik ses fişini kullanan mikrofonlu kulaklıklar ve diğer ses aksesuarları ile uyumlu olması için, cihaz uygulamasında bir veya daha fazla analog ses bağlantı noktası varsa ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması gerekir.

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], mikrofon ile ses fişindeki toprak iletkenleri arasında bulunan aşağıdaki 3 eşdeğer empedans aralığı için anahtar kodlarını algılamayı ve eşlemeyi desteklemelidir:
    • 70 ohm veya daha düşük: KEYCODE_HEADSETHOOK
    • 210-290 ohm: KEYCODE_VOLUME_UP
    • 360-680 ohm: KEYCODE_VOLUME_DOWN
  • [C-1-4] Fiş takıldığında ACTION_HEADSET_PLUG işlevinin tetiklenmesi ZORUNLUDUR. Ancak bunun için, fişteki tüm temas noktaları jaktaki ilgili segmentlerine dokunmalıdır.
  • [C-1-5] 32 ohm hoparlör empedansı üzerindeki çıkış voltajının en az 150 mV ±% 10'unu taşıyabilmesi ZORUNLUDUR.
  • [C-1-6] 1,8 V ~ 2,9 V arasında bir mikrofon sapma voltajı OLMALIDIR.
  • [SR] Mikrofon ile ses fişindeki toprak iletkenleri arasındaki aşağıdaki eşdeğer empedans aralığında anahtar kodu algılaması ve bu koda eşlemesi ÖNEMLE ÖNERİLİR:
    • 110-180 ohm: KEYCODE_VOICE_ASSIST
  • OMTP pin çıkışı sırasında ses fişlerini DESTEKLEMELİDİR.
  • Mikrofonlu stereo kulaklıklardan yapılan ses kaydını DESTEKLEMELİDİR.

Cihaz uygulamalarında 4 iletkenli 3,5 mm ses jakı varsa ve mikrofon destekliyorsa ve android.intent.action.HEADSET_PLUG cihazını ekstra değer mikrofonu 1 olarak ayarlayarak yayınlarsa:

  • [C-2-1], takılı ses aksesuarındaki mikrofonun algılanmasını DESTEKLEMELİDİR.

7.8.3. Yakın-Ultrasound

Yakın Ultrasound ses, 18,5 kHz ila 20 kHz'lik banttır.

Cihaz uygulamaları:

  • Ultrasona yakın ses özelliği desteğini AudioManager.getProperty API'si aracılığıyla aşağıdaki şekilde doğru şekilde BİLDİRMELİDİR:

PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND değeri "true" ise VOICE_RECOGNITION ve UNPROCESSED ses kaynakları aşağıdaki şartların karşılanması gerekir:

  • [C-1-1] 18,5 kHz ile 20 kHz aralığında mikrofonun ortalama güç yanıtının 2 kHz'deki yanıtın en fazla 15 dB altında olması ZORUNLUDUR.
  • [C-1-2] -26 dBFS'de 19 kHz ton için mikrofonun 18,5 kHz'den 20 kHz'e kadar ağırlıklandırılmamış sinyal-gürültü oranı 50 dB'den düşük olmamalıdır.

PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND değeri "true" ise:

  • [C-2-1] Konuşmacının 18,5 kHz-20 kHz aralığındaki ortalama yanıtı, 2 kHz'lik yanıtın 40 dB'den düşük olmaması ZORUNLUDUR.

7.9. Sanal Gerçeklik

Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "Sanal Gerçeklik" (VR) uygulamalarını oluşturmak için kullanılabilecek API'ler ve olanaklar sunar. Cihaz uygulamalarının bu API'leri ve davranışları doğru bir şekilde uygulaması GEREKİR.

7.9.1. Sanal Gerçeklik Modu

Android'de VR Modu desteği sunulur. Bu özellik, VR uygulamasında kullanıcı odaklıyken bildirimlerin stereoskopik olarak oluşturulmasını sağlar ve monoküler sistem kullanıcı arayüzü bileşenlerini devre dışı bırakır.

7.9.2. Sanal Gerçeklik Yüksek Performans

Cihaz uygulamaları, android.hardware.vr.high_performance özellik bayrağı aracılığıyla daha uzun kullanıcı boyunca yüksek performanslı VR desteğini tespit ederse:

  • [C-1-1] en az 2 fiziksel çekirdeğinin olması ZORUNLUDUR.
  • [C-1-2] android.software.vr.mode feature ZORUNLUDUR.
  • [C-1-3] Sürekli performans modunu DESTEKLEMELİDİR.
  • [C-1-4] OpenGL ES 3.2'yi DESTEKLEMELİDİR.
  • [C-1-5] Vulkan Donanım Düzeyi 0'ı DESTEKLEMELİ ve Vulkan Donanım Düzeyi 1'i DESTEKLEMELİDİR.
  • [C-1-6] EGL_KHR_mutable_render_buffer, EGL_ANDROID_front_buffer_auto_refresh, EGL_ANDROID_get_native_client_buffer, EGL_KHR_fence_sync, EGL_KHR_wait_sync, EGL_IMG_context_priority, EGL_EXT_protected_content özelliklerini uygulamalı ve mevcut EGL uzantıları listesinde uzantıları göstermelidir.
  • [C-1-7] GPU ve ekranın, paylaşılan ön arabelleğe erişimi senkronize edebilmesi ZORUNLUDUR. Böylece, 60 fps'de sanal gerçeklik içeriğinin iki oluşturma bağlamıyla, dönüşümlü olarak oluşturulması, hiçbir gözyaşı görüntüsü olmadan görüntülenir.
  • [C-1-8] GL_EXT_multisampled_render_to_texture, GL_OVR_multiview, GL_OVR_multiview2, GL_OVR_multiview_multisampled_render_to_texture, GL_EXT_protected_textures, GL_EXT_EGL_image_array, GL_EXT_external_buffer uygulamasını uygulamalı ve mevcut GL uzantıları listesinde uzantıları göstermelidir.
  • [C-1-9], AHardwareBuffer işaretleri AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER ve AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA için NDK'da açıklandığı gibi desteğin uygulanması ZORUNLUDUR.
  • [C-1-10] AHardwareBuffers desteğinin birden fazla katmanla uygulanması ZORUNLUDUR.
  • [C-1-11] H.264 kod çözme hızının en az 3840x2160 @30 fps-40 Mb/sn'de (1920x1080@30 fps-10 Mb/sn 4 örneğine veya 60 Mb/sn-20 fps'de 2 örneğine eşdeğer) H.264 kod çözmeyi desteklemesi gerekir.
  • [C-1-12] HEVC ve VP9'U DESTEKLEMELİDİR, en az 1920x1080@30 fps-10 Mb/sn. kod çözme kabiliyetine sahip olmalıdır ve 3840x2160@30fps-20Mb/sn (40 fps-50x10 x 0x180x10 örneğine denk) kodunu çözebilmelidir.
  • [C-1-13], HardwarePropertiesManager.getDeviceTemperatures API'yi DESTEKLEMELİ ve deri sıcaklığı için doğru değerleri döndürmelidir.
  • [C-1-14] cihazın yerleşik bir ekranı olması, çözünürlüğünün de en az FullHD(1080p) olması ve QuadHD (1440p) veya daha yüksek olması ÖNERİLMELİDİR.
  • [C-1-15] VR Modu'ndayken ekranın en az 60 Hz güncellenmesi ZORUNLUDUR.
  • [C-1-16] Ekran gecikmesi (Gri-Gri, Beyazdan Siyaha ve Siyahdan Beyaza geçiş süresinde ölçüldüğü üzere) 6 milisaniyeden az OLMALIDIR.
  • [C-1-17] Ekranın, 5 milisaniyeden az kalıcılık içeren düşük kalıcılık modunu desteklemesi ZORUNLUDUR. Kalıcılık, bir pikselin ışık yaktığı 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'ü DESTEKLEMELİDİR.
  • [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-1-20], yukarıda listelenen tüm doğrudan kanal türleri için TYPE_HARDWARE_BUFFER doğrudan kanal türünü DESTEKLEMELİDİR.
  • [SR] android.hardware.sensor.hifi_sensors özelliğini desteklemesi için ÖNEMLE ÖNERİLİR ve android.hardware.hifi_sensors için jiroskop, ivme ölçer ve manyetometre ile ilgili gereksinimleri karşılamalıdır.
  • Ön plan uygulamasına özel bir çekirdek sağlayabilir ve en üst ön plan uygulamasına özel CPU çekirdeği sayısını döndürmek için Process.getExclusiveCores API'yi DESTEKLEYEBİLİR. Münhasır çekirdek destekleniyorsa çekirdek, üzerinde başka herhangi bir kullanıcı alanı işleminin (uygulama tarafından kullanılan cihaz sürücüleri hariç) çalıştırılmasına izin VERMEMELİDİR, ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına İZİN VERİLMELİDİR.

8. Performans ve Güç

Bazı minimum performans ve güç ölçütleri, kullanıcı deneyimi açısından kritik öneme sahiptir ve geliştiricilerin uygulama geliştirirken üstleneceği varsayımları etkiler.

8.1. Kullanıcı Deneyiminde Tutarlılık

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ü sağlanabilir. Cihaz türüne bağlı olarak, cihaz uygulamalarında 2. bölümde açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev değiştirme için ölçülebilir gereksinimler OLABİLİR.

8.2. Dosya G/Ç Erişim Performansı

Uygulamanın özel veri depolamasında (/data bölümü) tutarlı bir dosya erişimi performansı için ortak bir temel sağlamak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak doğru bir beklenti belirlemelerini sağlar. Cihaz türüne bağlı olarak, aşağıdaki okuma ve yazma işlemleriyle ilgili olarak cihaz uygulamalarının 2. bölümünde açıklanan belirli gereksinimler OLABİLİR:

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

8.3. Güç Tasarrufu Modları

Android, pil kullanımını optimize etmek için Uygulama Bekleme ve Doz güç tasarrufu modlarını içerir. [SR] Bu modlardan muaf tutulan tüm uygulamaların, son kullanıcı tarafından görünür hale getirilmesi ÖNERİLİR. [SR] Bu güç tasarrufu modlarının tetikleme, bakım, uyandırma algoritmaları ve genel sistem ayarlarının kullanımı, Android Açık Kaynak Projesi'nden sapmaması ÖNEMLE ÖNERİLİR.

Güç tasarrufu modlarına ek olarak, Android cihaz uygulamaları, Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) tarafından tanımlanan 4 uyku gücü durumunun herhangi birini veya tümünü uygulayabilir.

Cihaz uygulamaları, ACPI tarafından tanımlandığı şekilde S3 ve S4 güç durumlarını uyguluyorsa:

  • [C-1-1] bu durumları yalnızca cihazın fiziksel olarak bir parçası olan bir kapağı kapatırken girmeniz ZORUNLUDUR.

8.4. Güç Tüketimi Hesaplaması

Güç tüketiminin daha doğru bir şekilde hesaplanması ve raporlanması, uygulama geliştiriciye uygulamanın güç kullanım modelini optimize edecek teşvikler ve araçlar sağlar.

Cihaz uygulamaları:

  • [SR] Android Açık Kaynak Projesi sitesinde belirtildiği üzere, her bir donanım bileşeninin mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına güç profili sağlanması ÖNERİLİR.
  • [SR] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden raporlamanız ÖNEMLE ÖNERİLİR.
  • [SR] Her işlemin UID'sine göre CPU güç tüketimini bildirmeniz ÖNEMLE ÖNERİLİR. Android Açık Kaynak Projesi, uid_cputime çekirdek modülünün uygulanması aracılığıyla bu gereksinimi karşılar.
  • [SR] Bu güç kullanımının uygulama geliştiriciye adb shell dumpsys batterystats kabuk komutu aracılığıyla sağlanması için ÖNEMLE ÖNERİLİR.
  • Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemezse, donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.

8.5. Tutarlı performans

Arka planda çalışan diğer uygulamalar veya sıcaklık sınırları nedeniyle CPU'nun kısıtlanması nedeniyle, yüksek performanslı ve uzun süre çalışan uygulamalarda performans önemli ölçüde dalgalanabilir. Android'de programatik arayüzler bulunur. Böylece, cihaz uygun olduğunda ön plandaki uygulama, sistemin bu tür dalgalanmaları gidermek için kaynak tahsisini optimize etmesini isteyebilir.

Cihaz uygulamaları:

Cihaz uygulamaları Sürdürülebilir Performans Modu'nu desteklediğini bildiriyorsa:

  • [C-1-1] Uygulama talep ettiğinde üst ön plan uygulamasına en az 30 dakika boyunca tutarlı bir performans düzeyi sunmalıdır.
  • [C-1-2], Window.setSustainedPerformanceMode() API ve diğer ilgili API'lere UYMALIDIR.

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

  • Ön plandaki uygulama tarafından ayırtılabilecek en az bir tane özel çekirdek sağlanmalıdır.

Cihaz uygulamaları, en üstteki ön plan uygulaması için tek bir özel çekirdeğin ayrılmasını destekliyorsa:

  • [C-2-1], üst ön plan uygulaması tarafından ayırtılabilecek özel çekirdeklerin kimlik numaralarını Process.getExclusiveCores() API yöntemi aracılığıyla Bildirmelidir.
  • [C-2-2], uygulama tarafından kullanılan cihaz sürücülerinin özel çekirdeklerde çalışması için kullanılan cihazlar dışında hiçbir kullanıcı alanı işlemine izin VERMEMELİDİR, ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına izin SAĞLAYABİLİR.

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

9. Güvenlik Modeli Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] Android geliştirici dokümanlarındaki API'lerde yer alan Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli UYGULAMALIDIR.

  • [C-0-2], herhangi bir üçüncü taraftan/yetkililerden ek izin/sertifika gerektirmeden, kendinden imzalı uygulamaların yüklenmesini DESTEKLEMELİDİR. Özellikle, uyumlu cihazların aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını desteklemesi ZORUNLUDUR.

9.1. İzinler

Cihaz uygulamaları:

  • [C-0-1], Android geliştirici dokümanlarında tanımlandığı gibi Android izin modelini DESTEKLEMELİDİR. Özel olarak, SDK dokümanlarında açıklanan her bir iznin uygulanması ZORUNLUDUR; hiçbir izin çıkarılamaz, değiştirilemez veya yoksayılamaz.

  • Yeni izin kimliği dizelerinin android.\* ad alanında olmaması koşuluyla ek izinler ETABİLİR.

  • [C-0-2] PROTECTION_FLAG_PRIVILEGED protectionLevel içeren izinlerin, yalnızca sistem görüntüsünün ayrıcalıklı yollarında ve her bir uygulama için açık şekilde izin verilenler listesine eklenmiş izinlerin alt kümesinde önceden yüklenmiş uygulamalara verilmelidir. AOSP uygulaması, bu şartı etc/permissions/ yolundaki dosyalardan her bir uygulama için izin verilenler listesindeki izinleri okuyup dikkate alarak ve ayrıcalıklı yol olarak system/priv-app yolunu kullanarak vermelidir.

Tehlikeli koruma seviyesi olan izinler, çalışma zamanında istenen izinlerdir. targetSdkVersion > 22 değerine sahip uygulamalar bunları çalışma zamanında ister.

Cihaz uygulamaları:

  • [C-0-3] Kullanıcıya, istenen çalışma zamanı izinlerini verip vermeyeceğinize karar vermesi için özel bir arayüz göstermeli ve ayrıca kullanıcının çalışma zamanında istenen izinleri yönetebileceği bir arayüz de sunmalısınız.
  • [C-0-4] Her iki kullanıcı arayüzünün de yalnızca bir kez uygulanması ZORUNLUDUR.
  • [C-0-5] Aşağıdaki durumlar haricinde, önceden yüklenmiş uygulamalara çalışma zamanında istenen izin VERMEMELİDİR:
  • kullanıcının izni, uygulama tarafından kullanılmadan önce alınabilir
  • çalışma zamanı izinleri, önceden yüklenen uygulamanın varsayılan işleyici olarak ayarlandığı bir intent kalıbıyla ilişkili

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

  • [C-1-1], 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 bu izni iptal etmek üzere kullanıcıya tarafından erişilebilen mekanizmalar sunar.

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

9.2. UID ve İşlem Yalıtımı

Cihaz uygulamaları:

  • [C-0-1], her uygulamanın benzersiz bir Unixstyle UID'si olarak ve ayrı bir işlem içinde çalıştığı Android uygulaması korumalı alan modelini desteklemelidir.
  • [C-0-2], uygulamaların Güvenlik ve İzinler referansında tanımlandığı gibi düzgün şekilde imzalanmış ve oluşturulmuş olması koşuluyla, aynı Linux kullanıcı kimliğiyle 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ının, Dalvik Yürütülebilir Biçim veya yerel kod dışında bir yazılım ya da teknoloji kullanarak uygulama yürüten çalışma zamanı ortamları içerse bile Android güvenlik ve izin modeli tutarlılığı ZORUNLUDUR. Başka bir deyişle:

  • [C-0-1] Alternatif çalışma zamanlarının kendilerinin Android uygulamaları olması ve 9. bölümde açıklanan standart Android güvenlik modeline uyması ZORUNLUDUR.

  • [C-0-2] Alternatif çalışma zamanlarına, <uses-permission> mekanizması üzerinden çalışma zamanının AndroidManifest.xml dosyasında istenmemiş izinlerle korunan kaynaklara erişim izni VERİLMEMELİDİR.

  • [C-0-3] Alternatif çalışma zamanları, uygulamaların, sistem uygulamalarıyla sınırlı olan Android izinleriyle korunan özellikleri kullanmasına İZİN VERMEMELİDİR.

  • [C-0-4] Alternatif çalışma zamanlarının Android korumalı alan modeline uyması ZORUNLUDUR. Ayrıca, alternatif bir çalışma zamanı kullanan 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ı YENİDEN KULLANMAMALIDIR.

  • [C-0-5] Alternatif çalışma zamanlarının, diğer Android uygulamalarına karşılık gelen korumalı alanlarla BAŞLATILMAMALIDIR veya bu uygulamalara erişim izni VERMEMELİDİR.

  • [C-0-6] Alternatif çalışma zamanları, süper kullanıcının (kök) veya başka bir kullanıcı kimliğinin herhangi bir ayrıcalığıyla BAŞLATILMAMALIDIR, başka uygulamalara verilemez veya başka uygulamalara verilemez.

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

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

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

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

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

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

9.5. Çok Kullanıcılı Destek

Android, birden fazla kullanıcı desteği içerir ve tam kullanıcı izolasyonu desteği sağlar.

  • Cihaz uygulamaları, birincil harici depolama olarak çıkarılabilir medya kullanıyorlarsa çoklu kullanıcı özelliğini ETKİNLEŞTİRMEYE BAŞLAMAMALIDIR.

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

  • [C-1-1], çok kullanıcılı destek ile ilgili aşağıdaki koşulları karşılamalıdır.
  • [C-1-2] Her kullanıcı için, API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı üzere Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulaması ZORUNLUDUR.
  • [C-1-3] Her kullanıcı örneği için ayrı ve izole paylaşılan uygulama depolama alanı (/sdcard olarak da bilinir) dizinlerine sahip olması ZORUNLUDUR.
  • [C-1-4] Belirli bir kullanıcıya ait olan ve belirli bir kullanıcı adına çalıştırılan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolanıyor olsa bile, başka bir kullanıcının sahip olduğu dosyaları listeleyememesi, okumaması veya bunlara yazması mümkün OLMALIDIR.
  • [C-1-5] Çoklu kullanıcı etkinleştirildiğinde, yalnızca sistem tarafından erişilebilen çıkarılamayan medyada depolanan bir anahtar kullanılarak SD kartın içeriğini şifrelemek ZORUNLUDUR. Bunun için, cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanır. Bu durum, medyayı ana makine PC tarafından okunamaz hale getireceğinden ana makine PC'lerin geçerli kullanıcının verilerine erişmesini sağlamak için MTP'ye veya benzer bir sisteme geçmek için cihaz uygulamalarının yapılması gerekecektir.

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

  • [C-2-1], cihaz sahiplerinin ek kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlanmış profilleri DESTEKLEMELİDİR. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamlar oluşturup bu ortamlarda bulunan uygulamalardaki kısıtlamaları daha ayrıntılı şekilde yönetebilir.

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

  • [C-3-1] kısıtlı profilleri DESTEKLEMEMELİDİR, ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için denetimlerin AOSP uygulamasıyla uyumlu OLMALIDIR.

9.6. Premium SMS Uyarısı

Android, giden premium SMS mesajları ile ilgili olarak kullanıcıları uyarma desteği sunar. Premium SMS mesajları, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıdan ücret alınabilecek kısa mesajlardır.

android.hardware.telephony için destek bildirilen cihaz uygulamaları:

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

9.7. Çekirdek Güvenlik Özellikleri

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

  • [C-0-1] Android çerçevesinin altında SELinux veya başka güvenlik özellikleri uygulanmış olsa bile mevcut uygulamalarla uyumluluğun sürdürülmesi ZORUNLUDUR.
  • [C-0-2] Bir güvenlik ihlali algılandığında ve Android çerçevesinin altında uygulanan güvenlik özelliği tarafından başarıyla engellendiğinde görünür bir kullanıcı arayüzü BULUNMAMALIDIR. Ancak, başarılı bir kötüye kullanımla sonuçlanan engellenmemiş bir güvenlik ihlali meydana geldiğinde kullanıcı arayüzü görünür 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 OLMAMALIDIR.
  • [C-0-4] API (Cihaz Yönetimi API'si gibi) aracılığıyla başka bir uygulamayı etkileyebilecek uygulamaların, uyumluluğa uymayan bir politika yapılandırmasına izin VERMEMELİDİR.
  • [C-0-5] Android Açık Kaynak Proje sitesinde açıklandığı üzere her işleme daha dar kapsamlı bir şekilde erişim izni verilebilmesi için medya çerçevesini birden çok işleme bölmesi ZORUNLUDUR.
  • [C-0-6], çok iş parçacıklı programlardan yapılandırılabilir bir politika kullanarak sistem çağrılarının filtrelenmesine olanak tanıyan bir çekirdek uygulamasını korumalı alana alma mekanizmasının uygulanması ZORUNLUDUR. Yukarı akış Android Açık Kaynak Projesi, source.android.com sayfasının Kernel Yapılandırması bölümünde açıklandığı gibi, iş parçacığı grubu senkronizasyonu (TSYNC) ile seccomp-BPF'yi etkinleştirerek bu şartı karşılar.

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

  • [C-0-7], çekirdek yığını arabellek taşma korumaları (ör. CONFIG_CC_STACKPROTECTOR_STRONG) UYGULAMALIDIR.
  • [C-0-8] Yürütülebilir kodun salt okunur, salt okunur verilerin yürütülebilir ve yazılabilir olmadığı ve yazılabilir verilerin de yürütülebilir olmadığı (ör. CONFIG_DEBUG_RODATA veya CONFIG_STRICT_KERNEL_RWX) katı çekirdek belleği korumaları ZORUNLUDUR.
  • [SR] Yalnızca başlatma sırasında yazılan ve başlatma işleminden sonra salt okunur olarak işaretlenen çekirdek verilerinin tutulması ÖNERİLİR (ör. __ro_after_init).
  • [SR}, kullanıcı alanı ile çekirdek alanı arasındaki kopyaların statik ve dinamik nesne boyutu sınırlarını kontrol etmesi ÖNERİLİR (ör. CONFIG_HARDENED_USERCOPY).
  • [SR] Çekirdek içinde çalışırken (ör. donanım PXN'si veya CONFIG_CPU_SW_DOMAIN_PAN ya da CONFIG_ARM64_SW_TTBR0_PAN aracılığıyla emülasyonlu olan) kullanıcı alanı belleğini hiçbir zaman çalıştırmaması ÖNERİLİR.
  • [SR] Normal usercopy erişim API'lerinin (ör. donanım PAN'ı veya CONFIG_CPU_SW_DOMAIN_PAN ya da CONFIG_ARM64_SW_TTBR0_PAN aracılığıyla emülasyonlu) çekirdekteki kullanıcı alanı belleğini hiçbir zaman okumaması veya yazmaması ÖNERİLİR.
  • [SR] Çekirdek kodu ile belleğin düzenini rastgele hale getirmek ve rastgele hale gelecek şekilde ortaya çıkabilecek durumları önlemek için ÖNEMLE ÖNERİLİR (ör. /chosen/kaslr-seed Device Tree node veya EFI_RNG_PROTOCOL üzerinden bootloader entropisiyle CONFIG_RANDOMIZE_BASE).

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

  • [C-1-1] SELinux'u uygulaması ZORUNLUDUR.
  • [C-1-2] SELinux'u genel uygulama moduna ayarlamanın ZORUNLUDUR.
  • [C-1-3] Tüm alan adları zorunlu modda yapılandırılması ZORUNLUDUR. Bir cihaza/tedarikçi firmaya özel alanlar da dahil olmak üzere izin modundaki alanlara izin verilmez.
  • [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy klasöründe bulunan "hiçbir zaman izin verme" kurallarını DEĞİŞTİRMEMELİ, DEĞERLENDİRMEMELİ veya DEĞİŞTİRMEMELİDİR. Politikanın hem AOSP SELinux alanlarında hem de cihaza/tedarikçi firmaya özel alan adları için mevcut tüm "izin verilmemesi" kurallarıyla derlenmesi ZORUNLUDUR.
  • Yukarı akış Android Açık Kaynak Projesi'nin sistem/sepolicy klasöründe sağlanan varsayılan SELinux politikasını korumalı ve bu politikaya yalnızca kendi cihaza özel yapılandırmaları için ekleme yapmalıdır.

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

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

9.8. Gizlilik

9.8.1. Kullanım Geçmişi

Android, kullanıcının seçimlerini saklar ve bu geçmişi UsageStatsManager aracılığıyla yönetir.

Cihaz uygulamaları:

  • [C-1-1] Bu tür kullanıcı geçmişinin makul bir saklama süresi TUTULMASI ZORUNLUDUR.
  • [SR] 14 günlük saklama süresinin, AOSP uygulamasında varsayılan olarak yapılandırıldığı şekilde tutulması ÖNEMLE ÖNERİLİR.

9.8.2. Kayıt

Cihaz uygulamaları, sistemde ekranda görüntülenen içeriği yakalayan ve/veya cihazda oynatılan ses akışını kaydeden bir işlev içeriyorsa:

  • [C-1-1] Bu işlev her etkinleştirildiğinde ve etkin bir şekilde görüntü kaydederken/kaydettiğinde kullanıcıya sürekli bir bildirim OLMALIDIR.

Cihaz uygulamaları, kullanıcının bağlamı hakkında faydalı bilgiler edinmek için ortam sesi kaydedebilen, kullanıma hazır bir bileşen içeriyorsa:

  • [C-2-1] Kullanıcının açık bir şekilde izin vermediği durumlar dışında, cihaz üzerindeki kalıcı depolama alanında saklanmamalı veya kaydedilen ham sesi ya da orijinal sese veya yakın bir faksa dönüştürülebilecek herhangi bir biçimi cihazdan dışarı aktarabilirsiniz.

9.8.3. Bağlantı

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

  • [C-1-1], paylaşılan depolama biriminin içeriğine USB bağlantı noktası üzerinden erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü GÖRÜNTÜLEMELİDİR.

9.8.4. Ağ Trafiği

Cihaz uygulamaları:

  • [C-0-1], sistem tarafından güvenilen Sertifika Yetkilisi (CA) mağazası için yukarı akış Android Açık Kaynak Projesi'nde sağlanan kök sertifikaların önceden yüklenmesi ZORUNLUDUR.
  • [C-0-2] boş bir kullanıcı kök CA deposuyla gönderilmesi ZORUNLUDUR.
  • [C-0-3], bir kullanıcı kök sertifika yetkilisi eklendiğinde kullanıcıya ağ trafiğinin izlenebileceğini belirten bir uyarı GÖRÜNTÜLEMELİ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örüntülemelidir:
    • Bu ağ trafiği izlenebilir.
    • Bu ağ trafiği, VPN'i sağlayan ilgili VPN uygulaması üzerinden yönlendiriliyor.

Cihaz uygulamalarında, ağ veri trafiğini bir proxy sunucu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN verilmiş bir VPN hizmetini önceden yükleyen) ve varsayılan olarak kullanıma hazır şekilde etkinleştirilen bir mekanizma varsa:

  • [C-2-1] Söz konusu mekanizma etkinleştirmeden önce kullanıcının iznini istemelidir. Söz konusu VPN, Cihaz Politikası Denetleyicisi tarafından DevicePolicyManager.setAlwaysOnVpnPackage() üzerinden etkinleştirilmemişse kullanıcının ayrı bir izin vermesi gerekmez ancak yalnızca bilgilendirilmesi ZORUNLUDUR.

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

  • [C-3-1] AndroidManifest.xml dosyasında her zaman açık VPN hizmetini desteklemeyen uygulamalar için SERVICE_META_DATA_SUPPORTS_ALWAYS_ON özelliği false olarak ayarlanarak bu kullanıcı fırsatının devre dışı bırakılması ZORUNLUDUR.

9.9. Veri Depolama Şifrelemesi

Cihaz uygulamaları, 9.11.1 bölümünde açıklandığı gibi bir güvenli kilit ekranını destekliyorsa, bunlar:

  • [C-1-1] uygulamanın özel verilerinin (/data partition) yanı sıra cihazın kalıcı ve kaldırılamaz bir parçasıysa uygulama paylaşılan depolama alanı bölümünün (/sdcard partition) veri depolama şifrelemesini DESTEKLEMELİDİR.

Cihaz uygulamaları, bölüm 9.11.1'de açıklandığı gibi bir güvenli kilit ekranını ve 50 MiB/sn'nin üzerinde Gelişmiş Şifreleme Standardı (AES) kripto performansı ile veri depolama şifrelemesini destekliyorsa:

  • Kullanıcı ilk kurulum deneyimini tamamladığında [C-2-1] veri depolama şifrelemesinin varsayılan olarak etkinleştirilmiş olması ZORUNLUDUR. Cihaz uygulamaları, şifrelemenin varsayılan olarak devre dışı bırakıldığı önceki bir Android sürümünde zaten kullanıma sunulduysa bu tür bir cihaz, sistem yazılımı güncellemesi üzerinden bu gereksinimi karşılayamaz ve dolayısıyla muaf tutulabilir.

  • Dosya Tabanlı Şifreleme'yi (FBE) uygulayarak yukarıdaki veri depolama şifrelemesi koşulunun karşılanması gerekir.

9.9.1. Doğrudan Başlatma

Cihaz uygulamaları:

  • [C-0-1] Depolama Alanı Şifreleme'yi desteklemese bile Doğrudan Başlatma modu API'lerini uygulaması ZORUNLUDUR.

  • [C-0-2] Doğrudan Başlatmaya duyarlı uygulamalara, Cihazda Şifrelenmiş (DE) ve Kimlik Bilgisiyle Şifrelenmiş (CE) depolama konumlarının kullanıcının kullanılabilir olduğunu bildirmek için ACTION_LOCKED_BOOT_COMPLETED ve ACTION_USER_UNLOCKED Amaçlarının yayınlanması ZORUNLUDUR.

9.9.2. Dosya Tabanlı Şifreleme

Cihaz uygulamaları FBE'yi destekliyorsa:

  • [C-1-1] kullanıcının kimlik bilgilerini alması için kullanıcıyı zorlamadan başlatılmalı ve ACTION_LOCKED_BOOT_COMPLETED mesajı yayınlandıktan sonra Doğrudan Başlatmaya duyarlı uygulamaların Cihazla Şifrelenmiş (DE) depolama alanına erişmesine izin verilmelidir.
  • [C-1-2], Kimlik Bilgisi Şifrelenmiş (CE) depolama alanına yalnızca kullanıcı kimlik bilgilerini (ör. şifre kodu, PIN, desen veya parmak izi) sağlayarak cihazın kilidini açtıktan ve ACTION_USER_UNLOCKED mesajı yayınlandıktan sonra izin verilmelidir.
  • [C-1-3], kullanıcı tarafından sağlanan kimlik bilgileri olmadan CE korumalı depolama alanının kilidini açmak için herhangi bir yöntem SUNMAMALIDIR.
  • [C-1-4] Doğrulanmış Başlatma'yı desteklemeli ve DE anahtarlarının, cihazın donanım güven kaynağına kriptografik olarak bağlı olduğundan emin olmalıdır.
  • [C-1-5], XTS modunda anahtar uzunluğu 256 bit olan AES kullanılarak dosya içeriğinin şifrelenmesini desteklemektedir.
  • [C-1-6], CBC-CTS modunda anahtar uzunluğu 256 bit olan AES kullanılarak dosya adının şifrelenmesini desteklemektedir.

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

  • [C-1-7] kriptografik olarak donanım destekli bir Anahtar Deposu'na bağlı olması ZORUNLUDUR.

  • [C-1-8] CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine bağlı ZORUNLUDUR.
  • [C-1-9] Kullanıcı kilit ekranı kimlik bilgilerini belirtmediğinde CE anahtarları varsayılan bir şifre koduna BAĞLANMALIDIR.
  • [C-1-10] benzersiz ve farklı olmalıdır. Bir başka deyişle, hiçbir kullanıcının CE veya DE anahtarı, başka bir kullanıcının CE veya DE anahtarlarıyla eşleşmemelidir.

  • Önceden yüklenmiş gerekli uygulamaları (ör. Alarm, Telefon, Messenger) Doğrudan Başlatma'ya karşı duyarlı hale getirmelisiniz.

  • Dosya içeriği ve dosya adı şifrelemesi için alternatif şifreleri, anahtar uzunluklarını ve modları destekleyebilir, ancak varsayılan olarak zorunlu olarak desteklenen şifrelerin, anahtar uzunluklarının ve modların kullanılması ZORUNLUDUR.

Yukarı akış Android Açık Kaynak projesi, Linux çekirdek ext4 şifreleme özelliğine göre 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], AES'nin 128 bit (veya üstü) anahtarla ve depolama için tasarlanmış bir modla (örneğin, AES-XTS, AES-CBC-ESSIV) bir arada kullanılması ZORUNLUDUR.
  • [C-1-2] Şifreleme anahtarını sarmalamak için varsayılan bir şifre kodu KULLANMALI ve şifreleme anahtarı, şifrelenmeden istendiği zaman depolama alanına YAZMAMALIDIR.
  • [C-1-3] Kullanıcı açık bir şekilde devre dışı bırakmadıkça (etkin kullanımda olmadığı sürece), kilit ekranı kimlik bilgileri yavaş çalışan bir algoritma (ör. PBKDF2 veya scrypt) kullanılarak genişletilerek şifreleme anahtarını varsayılan olarak şifrelemesi gerekir.
  • [C-1-4] Kullanıcı bir kilit ekranı kimlik bilgisi belirtmediyse veya şifreleme için şifre kodu kullanımını devre dışı bıraktıysa ve cihaz, donanım destekli bir anahtar deposu sağlıyorsa yukarıdaki varsayılan şifre genişletme algoritmasının, kriptografik olarak bu anahtar deposuna bağlı olması ZORUNLUDUR.
  • [C-1-5], şifreleme anahtarını cihazdan dışarı GÖNDERMEMELİDİR (kullanıcı şifre kodu ve/veya donanıma bağlı anahtarla sarmalanmış olsa bile).

Yukarı akış Android Açık Kaynak projesi, Linux çekirdek özelliği dm-crypt'e göre 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 durumu konusunda şeffaflık sağlar. Cihaz uygulamaları:

  • [C-0-1], bootloader durumlarının sistem görüntüsünün yanıp sönmesine izin verip vermediğini kontrol etmek için PersistentDataBlockManager.getFlashLockState() System API yöntemi aracılığıyla doğru şekilde BİLDİRMELİDİR. FLASH_LOCK_UNKNOWN durumu, bu yeni sistem API yönteminin bulunmadığı önceki bir Android sürümünden yükseltme yapan cihaz uygulamaları için ayrılmıştır.

Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Bir cihaz uygulaması bu özelliği destekliyorsa:

  • [C-1-1], platform özelliği bayrağını android.software.verified_boot BELİRTMELİDİR.
  • [C-1-2] Her başlatma sırasında doğrulama ZORUNLUDUR.
  • [C-1-3] Doğrulamanın, güven kökü olan sabit bir donanım anahtarından başlatılması ve sistem bölmesine kadar devam etmesi ZORUNLUDUR.
  • [C-1-4], sonraki aşamada kodu yürütmeden önce, sonraki aşamada tüm baytların bütünlüğünü ve özgünlüğünü kontrol etmek için doğrulamanın her aşamasını uygulamalıdır.
  • [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'nin güncel önerileri kadar güçlü doğrulama algoritmalarının kullanılması ZORUNLUDUR.
  • [C-1-6] Sistem doğrulaması başarısız olduğunda başlatmanın tamamlanmasına İZİN VERİLMEMELİDİR. Kullanıcı yine de başlatmayı denemesini kabul etmez. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALIDIR.
  • [C-1-7] Kullanıcı, önyükleyicinin kilidini açık bir şekilde açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERİLMEMELİDİR.
  • [SR] Cihazda birden fazla ayrı çip varsa (ör. radyo, özel görüntü işlemcisi) bu yongaların her birinin başlatma işlemi, başlatma sırasındaki her aşamanın doğrulanması için GERÇEKTEN ÖNERİLİR.
  • [SR] değişiklik algılamalı depolama alanının kullanılması ÖNEMLE ÖNERİLİR: Bootloader'ın kilidi açıldığında. Müdahale tespiti içeren depolama, önyükleme yükleyicinin, depolama alanının HLOS (Üst Düzey İşletim Sistemi) içinden değiştirilip değiştirilmediğini tespit edebilmesini sağlar.
  • [SR] Cihazı kullanırken kullanıcıya istem göstermesi ÖNERİLİR ve önyükleyici kilitli modundan önyükleyici kilitli moduna geçişe izin vermeden önce fiziksel onay gerektirmelidir.
  • [SR] HLOS için geri alma koruması (ör. başlatma, sistem bölümleri) uygulamak ve izin verilen minimum OS sürümünü belirlemek üzere kullanılan meta verileri depolamak için değişiklik algılama depolama alanı kullanmak ÖNEMLE ÖNERİLİR.
  • Kalıcı donanım yazılımına (ör. modem, kamera) sahip tüm bileşenlerde geri alma koruması uygulanmalıdır ve izin verilen minimum sürümü belirlemek üzere kullanılan meta verileri depolamak için müdahale algılama depolama alanı KULLANILMALIDIR.

Yukarı akış Android Açık Kaynak Projesi, external/avb/ deposunda bu özelliğin tercih edilen uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleyiciye entegre edilebilir.

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

  • [C-2-1] Cihaz bütünlüğü için doğrulanmış önyüklemeyi DESTEKLEMELİDİR.

Android'in önceki sürümlerinde, doğrulanmış önyüklemeyi desteklemeden zaten bir cihaz uygulaması başlatıldıysa bu tür bir cihaz, sistem yazılımı güncellemesiyle bu özellik için destek ekleyemez ve dolayısıyla bu şarttan muaf tutulur.

9:11. Anahtarlar ve Kimlik Bilgileri

Android Anahtar Deposu Sistemi, uygulama geliştiricilerinin şifreleme anahtarlarını bir kapsayıcıda depolamalarına ve KeyChain API veya Keystore API üzerinden şifreleme işlemlerinde kullanmalarına olanak tanır. Cihaz uygulamaları:

  • [C-0-1] En az 8.192'den fazla anahtarın içe aktarılmasına izin verilmesi ZORUNLUDUR.
  • [C-0-2] Kilit ekranı kimlik doğrulaması için hız sınırı denemeleri ZORUNLUDUR ve bir üstel geri yükleme algoritması ZORUNLUDUR. 150 başarısız denemeden sonra, gecikmenin deneme başına en az 24 saat olması ZORUNLUDUR.
  • Oluşturulabilecek anahtar sayısını SINIRLAMAMALIDIR.

Cihaz uygulaması güvenli kilit ekranını desteklediğinde:

  • [C-1-1], anahtar deposu uygulamasını güvenli donanımla yedeklemesi ZORUNLUDUR.
  • [C-1-2], Android KeyStore sisteminin desteklenen algoritmalarını, çekirdekte ve daha üst kısımda çalışan koddan güvenli bir şekilde izole edilmiş bir alanda, düzgün bir şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmaları ile MD5, SHA1 ve SHA-2 ailesi karma işlevlerinin uygulamalarına SAHİP OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole ortamın dahili durumuna erişebileceği tüm olası mekanizmaları Engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu gereksinimi karşılar. Ancak ARM TrustZone tabanlı başka bir çözüm veya uygun hipervizör tabanlı yalıtımın üçüncü taraflarca incelendiği güvenli bir uygulama, alternatif seçeneklerdir.
  • [C-1-3] izole yürütme ortamında kilit ekranı kimlik doğrulamasını gerçekleştirmesi ZORUNLUDUR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilir. Kilit ekranı kimlik bilgilerinin, yalnızca izole yürütme ortamının kilit ekranı kimlik doğrulaması gerçekleştirmesine izin verecek şekilde saklanabilmesi ZORUNLUDUR. 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 gerçekleştirildiği anahtar onayını DESTEKLEMELİDİR. Onay imzalama anahtarlarının, anahtarların cihaz tanımlayıcıları olarak kullanılmasını engelleyecek kadar çok sayıda cihaz arasında paylaşılması ZORUNLUDUR. Bu koşulu karşılamanın bir yolu,belirli bir SKU'dan en az 100.000 birim üretilmediği sürece aynı onay anahtarını paylaşmaktır. 100.000'den fazla SKU üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.

Önceki Android sürümünde bir cihaz uygulaması kullanıma sunulduysa bu tür bir cihaz, donanım destekli anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmediği sürece donanım destekli anahtar deposuna sahip olma zorunluluğundan muaf olur.

9.11.1. Güvenli Kilit Ekranı

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

  • [C-1-1] Ekran otomatik kilidinin ertelendiği veya ekran kilidinin güven aracısı tarafından açılabileceği durumların Ayarlar ve Kilit ekranı kullanıcı arayüzünde kullanıcıyı belirtmesi ZORUNLUDUR. AOSP, "Ayarı otomatik olarak kilitle" ve "Güç düğmesi ayarı anında kilitler" menüleri için bir metin açıklaması ve kilit ekranında ayırt edilebilir bir simge göstererek bu gereksinimi karşılar.
  • [C-1-2] DevicePolicyManager sınıfındaki KEYGUARD_DISABLE_TRUST_AGENTS sabiti gibi tüm güven aracısı API'lerine saygı duymalı ve bu API'leri tam olarak uygulamalıdır.
  • [C-1-3], birincil kişisel cihaz (ör. avuç içi) olarak kullanılan bir cihazda TrustAgentService.addEscrowToken() işlevini tam olarak UYGULAMAMALIDIR, ancak genellikle paylaşılan cihaz uygulamalarında işlevi tam olarak UYGULAMAYABİLİR.
  • [C-1-4], TrustAgentService.addEscrowToken() tarafından eklenen jetonları cihazda depolamadan önce şifrelemelidir.
  • [C-1-5] şifreleme anahtarı cihazda saklanamaz.
  • [C-1-6], veri depolama alanının şifresini çözmek için emanet jetonunu etkinleştirmeden önce kullanıcının güvenlik açısından etkileri konusunda kullanıcıyı bilgilendirmelidir.

Cihaz uygulamaları kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse bu tür bir kimlik doğrulama yönteminin ekranı kilitlemenin güvenli bir yolu olarak değerlendirilmesi için şunlar geçerlidir:

Cihaz uygulamaları, bilinen bir gizli anahtara dayalı olması halinde kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse, bu tür bir kimlik doğrulama yönteminin ekranı kilitlemenin güvenli bir yolu olarak değerlendirilmesi için şunlar geçerlidir:

  • [C-3-1] İzin verilen en kısa giriş uzunluğunun entropisi 10 bitten büyük ZORUNLUDUR.
  • [C-3-2] Olası tüm girişlerin maksimum entropisinin 18 bitten büyük olması ZORUNLUDUR.
  • [C-3-3] AOSP'de uygulanan ve sağlanan mevcut kimlik doğrulama yöntemlerinden (PIN,desen, şifre) hiçbirinin yerine geçmemesi ZORUNLUDUR.
  • Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını DevicePolicyManager.setPasswordQuality() yöntemi aracılığıyla PASSWORD_QUALITY_SOMETHING değerinden daha kısıtlayıcı bir kalite sabitiyle ayarladığında [C-3-4] devre dışı bırakılması ZORUNLUDUR.

Cihaz uygulamaları, fiziksel bir jetona veya konuma dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya değiştirirse bu tür bir kimlik doğrulama yöntemi, ekranı kilitlemenin güvenli bir yolu olarak kabul edilir:

  • [C-4-1], bilinen bir gizli anahtarı temel alan ve güvenli kilit ekranı gibi değerlendirilme şartlarını karşılayan birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmasının olması ZORUNLUDUR.
  • [C-4-2] devre dışı bırakılmalı ve birincil kimlik doğrulamanın ekran kilidini açmasına yalnızca, Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı, PASSWORD_QUALITY_UNSPECIFIED değerinden daha kısıtlayıcı bir kalite sabitine sahip DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS) ya da DevicePolicyManager.setPasswordQuality() yöntemiyle ayarladığında izin verilmelidir.
  • [C-4-3] En az 72 saatte bir veya daha kısa aralıklarla birincil kimlik doğrulama (ör. PIN, desen, şifre) için kullanıcıya sorgu gönderilmesi ZORUNLUDUR.

Cihaz uygulamaları, biyometriye dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse bu tür bir kimlik doğrulama yöntemi, ekranı kilitlemenin güvenli bir yolu olarak kabul edilir:

  • [C-5-1], bilinen bir gizli anahtarı temel alan ve güvenli kilit ekranı gibi değerlendirilme şartlarını karşılayan birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmasının olması ZORUNLUDUR.
  • [C-5-2] devre dışı bırakılmalı ve birincil kimlik doğrulamasının yalnızca Cihaz Politikası Denetleyicisi (DPC) uygulaması DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_FINGERPRINT) yöntemini çağırarak tuş koruyucu özellik politikasını ayarladığında ekranın kilidini açmasına izin verilmelidir.
  • [C-5-3] Bölüm 7.3.10'da açıklandığı gibi bir parmak izi sensörü için gerekene eşit veya bu değerden daha yüksek bir yanlış kabul oranına sahip olmalıdır ya da başka bir şekilde devre dışı bırakılması ve birincil kimlik doğrulamasının yalnızca Cihaz Politikası Denetleyicisi (DPC) uygulaması, şifre kalitesi politikasını DevicePolicyManager.setPasswordQuality() yöntemini kullanarak PASSWORD_QUALITY_BIOMETRIC_WEAK değerinden daha kısıtlayıcı bir kalite sabitiyle ayarladığında ekranın kilidini açmasına izin vermesi ZORUNLUDUR.
  • [SR] Bölüm 7.3.10'da açıklandığı şekilde parmak izi sensörü için gerekli olana eşit veya bundan daha yüksek sahte kabul oranlarına sahip olması ÖNEMLE ÖNERİLİR.

Adres sahteciliği ve sahte kabul oranları, bölüm 7.3.10'da açıklandığı gibi bir parmak izi sensörü için gerekli olana eşit veya bundan daha yüksek değilse ve Device Policy Denetleyicisi (DPC) uygulaması, şifre kalitesi politikasını DevicePolicyManager.setPasswordQuality() yöntemi aracılığıyla PASSWORD_QUALITY_BIOMETRIC_WEAK değerinden daha kısıtlayıcı bir kalite sabitiyle ayarladıysa:

  • [C-6-1] Bu biyometrik yöntemlerin devre dışı bırakılması ve yalnızca birincil kimlik doğrulamanın ekran kilidini açmasına izin verilmesi ZORUNLUDUR.
  • [C-6-2] En az 72 saatte bir veya daha kısa aralıklarla birincil kimlik doğrulama (ör. PIN, desen, şifre) için kullanıcıyı sorgulamalıdır.

Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bunları değiştirirse ve tuş koruyucunun kilidini açmak için böyle bir kimlik doğrulama yöntemi kullanılacak, ancak güvenli kilit ekranı olarak değerlendirilmeyecekse bunlar:

9:12. Veri Silme

Tüm cihaz uygulamaları:

  • [C-0-1] kullanıcılara "Fabrika Verilerine Sıfırlama" işlemini gerçekleştirmeleri için bir mekanizma SAĞLAMALIDIR.
  • [C-0-2] Kullanıcı tarafından oluşturulan tüm verilerin silinmesi ZORUNLUDUR. Yani, aşağıdakiler 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 silmelidir.
  • [C-0-4] Birincil kullanıcının Device Policy Controller uygulaması tarafından DevicePolicyManager.wipeData() API çağrıldığında yukarıdaki "Fabrika Verilerine Sıfırlama" işlemini tetiklemesi ZORUNLUDUR.
  • Yalnızca mantıksal bir veri silme işlemi gerçekleştiren hızlı bir veri silme seçeneği SAĞLAYABİLİR.

9:13. Güvenli Başlatma Modu

Android, kullanıcıların yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda önyükleme yapmasını sağlayan Güvenli Başlatma Modu sağlar. "Güvenli Başlatma Modu" olarak bilinen bu mod, kullanıcıya zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı tanır.

Cihaz uygulamaları şunlardır:

  • [SR] Güvenli Başlatma Modu'nun uygulanması ÖNERİLİR.

Cihaz uygulamaları Güvenli Başlatma Modu'nu uygularsa:

  • [C-1-1], üçüncü taraf uygulamasının bir Cihaz Politikası Denetleyicisi olduğu ve UserManager.DISALLOW_SAFE_BOOT işaretini doğru olarak ayarladığı durumlar dışında, kullanıcıya Güvenli Başlatma Modu'na cihazda yüklü üçüncü taraf uygulamalarıyla kesintiye uğramayacak şekilde girme seçeneği sunmalıdır.

  • [C-1-2], kullanıcıya Güvenli Mod'da üçüncü taraf uygulamalarını kaldırma özelliği SUNMALIDIR.

  • Kullanıcıya, normal başlatma işleminden farklı bir iş akışı kullanarak başlatma menüsünden Güvenli Başlatma Modu'na geçme seçeneği SUNMALIDIR.

9:14. Otomotiv Araç Sistemi Yalıtımı

Android Automotive cihazlarının, CAN veri yolu gibi araç ağları üzerinden mesaj gönderip almak için araç HAL'sini kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.

Bu alt sistemlerle kötü amaçlı veya istenmeyen etkileşimleri önlemek için Android çerçeve katmanlarının altına güvenlik özellikleri uygulanarak veri alışverişinin güvenliği sağlanabilir.

10. Yazılım Uyumluluğu Testi

Cihaz uygulamalarının bu bölümde açıklanan tüm testlerden geçmesi ZORUNLUDUR.

Ancak hiçbir yazılım test paketinin tam kapsamlı olmadığını unutmayın. Bu nedenle, cihaz uygulayıcılarına Android Açık Kaynak Projesi'nin sağladığı referans ve tercih edilen Android uygulamasında mümkün olduğunca minimum sayıda değişiklik yapmaları ÖNERİLİR. Bu sayede, yeniden çalışma gerektiren uyumsuzluklara neden olabilecek hatalar ve olası cihaz güncellemeleri riski en aza indirilir.

10.1. Uyumluluk Test Paketi

Cihaz uygulamalarının, cihazdaki son gönderim yazılımını kullanarak Android Açık Kaynak Projesi'nde bulunan Android Uyumluluk Test Paketi'ni (CTS) geçmesi ZORUNLUDUR. Buna ek olarak, cihazı uygulayıcıların Android Açık Kaynak ağacındaki referans uygulamasını mümkün olduğunca çok kullanmaları gerekir. Ayrıca, CTS'de belirsizlik olması durumunda ve referans kaynak kodu bölümlerinin her türlü yeniden uygulanmasıyla ilgili uyumluluk sağlanmalıdır.

CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Herhangi bir yazılım gibi CTS'nin kendisi de hatalar içerebilir. CTS'nin sürümü bu Uyumluluk Tanımı'ndan bağımsız olarak oluşturulacaktır ve Android 8.1 için CTS'nin birden fazla revizyonu yayınlanabilir. Cihaz uygulamalarının, cihaz yazılımı tamamlandığında mevcut olan en son CTS sürümünü geçebilmesi ZORUNLUDUR.

10.2. CTS Doğrulayıcı

Cihaz uygulamalarının, CTS Doğrulayıcı'da geçerli tüm durumları doğru bir şekilde yürütülmesi ZORUNLUDUR. Uyumluluk Test Paketi'nde yer alan CTS Doğrulayıcı, kamera ve sensörlerin doğru çalışması gibi otomatik sistem tarafından test edilemeyen işlevleri test etmek amacıyla gerçek kişi olan bir operatör tarafından çalıştırılmak üzere tasarlanmıştır.

CTS Doğrulayıcı, isteğe bağlı bazı donanımlar da dahil olmak üzere birçok donanım türünü test eder. Cihaz uygulamalarının sahip oldukları donanımlar için yapılan tüm testlerden geçmesi ZORUNLUDUR. Örneğin, bir cihaz ivme ölçere sahipse CTS Doğrulayıcı'da İvmeölçer test durumunu doğru şekilde yürütülmesi ZORUNLUDUR. Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerin test durumları atlanabilir veya çıkarılabilir.

Yukarıda belirtildiği gibi, her cihaz ve her derleme CTS Doğrulayıcı'yı doğru şekilde ÇALIŞTIRMALIDIR. Bununla birlikte, birçok derleme birbirine çok benzediği için cihaz uygulayıcılarının yalnızca önemsiz şekillerde farklılık gösteren derlemelerde CTS Doğrulayıcı'yı açık bir şekilde çalıştırması beklenmez. Özellikle, CTS Doğrulayıcı'yı geçmiş bir uygulamadan farklı olan cihaz uygulamaları, yalnızca içerdiği yerel ayarlar, marka vb. bakımından farklıdır. CTS Doğrulayıcı testini atlayabilir.

11. Güncellenebilir Yazılım

Cihaz uygulamaları, sistem yazılımının tamamının yerini alacak bir mekanizma İÇERMELİDİR. Mekanizmanın "canlı" yükseltme yapması gerekmez, yani cihazın yeniden başlatılması gerekebilir.

Cihaza önceden yüklenmiş yazılımın tamamının yerini alabilmesi şartıyla herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu şartı karşılar:

  • Yeniden başlatma aracılığıyla çevrimdışı güncelleme ile "Kablosuz (OTA)" indirme işlemleri.
  • "Tethered" özelliği, ana bilgisayardan USB üzerinden güncellenir.
  • "Çevrimdışı" seçeneği, çıkarılabilir depolama alanındaki bir dosyadan yeniden başlatma ve güncelleme yaparak güncellenir.

Bununla birlikte, cihaz uygulaması, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sayaçsız bir veri bağlantısı desteği içeriyorsa, yeniden başlatma yoluyla çevrimdışı güncelleme ile OTA indirmelerinin desteklenmesi ZORUNLUDUR.

Kullanılan güncelleme mekanizması, kullanıcı verileri silinmeden güncellemeleri DESTEKLEMELİDİR. Diğer bir deyişle, güncelleme mekanizması, uygulamanın özel verilerini ve uygulama paylaşılan verilerini KORUMALIDIR. Yayın öncesi Android yazılımının bu şartı karşılayan bir güncelleme mekanizması içerdiğini unutmayın.

Android 6.0 ve sonraki sürümlerde başlatılan cihaz uygulamaları için güncelleme mekanizması, sistem görüntüsünün, bir OTA'dan sonra beklenen sonuçla aynı ikili program olduğunu doğrulamayı DESTEKLEMELİDİR. Android 5.1'den itibaren 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, başlatma kontrolü HAL'sini kullanarak uygular.

Bir cihaz uygulamasında yayınlandıktan sonra, ancak Android Uyumluluk Ekibi'ne danışılarak üçüncü taraf uygulamaların uyumluluğunu etkilemesi belirlenen makul ürün ömrü içinde bir hata tespit edilirse, cihazı uygulayıcının yukarıda açıklanan mekanizmaya göre uygulanabilecek bir yazılım güncellemesi aracılığıyla bu hatayı düzeltmesi GEREKİR.

Android, Cihaz Sahibi uygulamasının (varsa) sistem güncellemelerinin yüklenmesini kontrol etmesini sağlayan özellikler içerir. Bunu kolaylaştırmak için, android.software.device_admin bildiren cihazlar için sistem güncelleme alt sisteminin SystemUpdatePolicy sınıfında açıklanan davranışı uygulaması GEREKİR.

12. Doküman Değişiklik Günlüğü

Bu sürümdeki Uyumluluk Tanımı'nda yapılan değişikliklerin özeti için:

Bireysel bölümlerde yapılan değişikliklerin özeti için:

  1. Giriş
  2. Cihaz Türleri
  3. Yazılım
  4. Uygulama Paketi
  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üleme İpuçları

Değişiklikler şu şekilde işaretlenmiştir:

  • CDD
    Uyumluluk gereksinimlerinde önemli değişiklikler yapılmıştır.

  • Dokümanlar
    Kozmetik veya derlemeyle ilgili değişiklikler.

En iyi görüntüleme için, değişiklik günlüğü URL'lerinize pretty=full ve no-merges URL parametrelerini ekleyin.

13. Bize Ulaşın

android-uyumluluk forumu'na katılarak açıklama isteyebilir veya dokümanın kapsamadığını düşündüğünüz sorunları dile getirebilirsiniz.