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 listelenmiştir.

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

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

Android 8.1 ile uyumlu olarak kabul edilmek için cihaz uygulamalarının, referansla dahil edilen tüm dokümanlar dahil olmak üzere bu Uyumluluk Tanımı'nda sunulan koşulları İYİCE karşılaması GEREKİR.

Bu tanım veya 10. bölümde açıklanan yazılım testleri net değilse, eksikse ya da bu konuda bilgi verilmiyorsa mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcının sorumluluğundadır.

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

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

1.1 Doküman Yapısı

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

2. Bölüm, belirli bir cihaz türü için geçerli olan tüm ZORUNLU ve ÇOK ÖNERİLİR koşullarını içerir. 2. Bölüm'ün her alt bölümü belirli bir cihaz türüne ayrılmıştır.

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

1.1.2. Şart kimliği

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

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

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

  • Cihaz Türü Kimliği (2. Cihaz Türleri
    • C: Temel (Tüm Android cihaz uygulamalarında geçerli olan şartlar)
    • H: Android el cihazı
    • T: Android Television cihaz
    • C: Android Automotive uygulaması
  • Koşul kimliği
    • Koşulsuz olduğunda bu kimlik 0 olarak ayarlanır.
    • Koşul koşullu olduğunda 1. koşul için 1 atanır ve sayı aynı bölüm ve aynı cihaz türü içinde 1 artar.
  • Şart kimliği
    • Bu kimlik 1 ile başlar ve aynı bölümde ve aynı koşulda 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 paketi sağlar. Bununla birlikte, nispeten daha iyi bir uygulama dağıtım ekosistemine sahip birkaç cihaz türü vardır.

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

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

2.1 Cihaz Yapılandırmaları

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

2.2. El Cihazı Gereksinimleri

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

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

  • Hareketlilik sağlayan bir güç kaynağı (ör. pil) olmalıdır.
  • Fiziksel çapraz ekran boyutu 2,5 ila 8 inç arasında olmalıdır.

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

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

2.2.1. Donanım

Ekran Boyutu (Bölüm 7.1.1.1)

Elde taşınabilir cihaz uygulamaları:

  • [H-0-1] Fiziksel diyagonal boyutu en az 2,5 inç olan bir ekrana sahip OLMALIDIR.*

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

Elde taşınabilir cihaz uygulamaları:

  • [H-SR] Kullanıcılara ekran boyutunu değiştirme imkanı sunulması önemle ÖNERİLİR.

Eski Uygulama Uyumluluğu Modu (Bölüm 7.1.5)

Elde taşınabilir cihaz uygulamaları:

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

Klavye (7.2.1 Bölümü)

Elde taşınabilir cihaz uygulamaları:

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

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

Elde taşınabilir cihaz uygulamaları:

  • [H-0-1] Ana Sayfa, Son Aramalar ve Geri işlevlerini ZORUNLUDIR.

  • [H-0-2] Geri işlevinin (KEYCODE_BACK) hem normal hem de uzun basma etkinliğini ön plan uygulamasına GÖNDERMELİDİR.

Dokunmatik Ekran Girişi (Bölüm 7.2.4)

Elde taşınabilir cihaz uygulamaları:

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

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

Elde taşınabilir cihaz uygulamaları:

  • [H-SR] 3 eksenli ivme ölçer eklemeniz önemle ÖNERİLİR.

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

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

Jiroskop (Bölüm 7.3.4)

Elde kullanılan cihaz uygulamaları jiroskop içeriyorsa:

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

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

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

  • Yakınlık sensörü içermelidir.

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

Elde taşınabilir cihaz uygulamaları:

  • 6 serbestlik derecesine sahip poz sensörünü desteklemeniz ÖNERİLİR.

Bluetooth (Bölüm 7.4.3)

Elde taşınabilir cihaz uygulamaları:

  • Bluetooth ve Bluetooth LE desteği DAHİL OLMALIDIR.

Veri Tasarrufu (Bölüm 7.4.7)

Elde kullanılan cihaz uygulamaları, ücretli bağlantı içeriyorsa:

  • [H-1-1] Veri tasarrufu modu sağlanmalıdır.

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

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

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

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

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

  • [H-4-1] Varsayılan ekranda QHD'ye (ör. QWXGA) kadar ekran kartı çözünürlüğü kullanılıyorsa çekirdek ve kullanıcı alanında kullanılabilen bellek en az 1344 MB OLMALIDIR.

El cihazı uygulamaları 32 bit ve 64 bit ABI'leri destekliyorsa:

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

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

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

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

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

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

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

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

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

Uygulama Ortak Depolama Alanı (Bölüm 7.6.2)

Elde taşınabilir cihaz uygulamaları:

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

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

Elde taşınabilir cihaz uygulamaları:

  • Çevre birimi modunu destekleyen bir USB bağlantı noktası DAHİL OLMALIDIR.

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

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

Mikrofon (Bölüm 7.8.1)

Elde taşınabilir cihaz uygulamaları:

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

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

Elde taşınabilir cihaz uygulamaları:

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

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

El cihazı uygulamaları VR modu desteği içeriyorsa:

  • [H-1-1] android.software.vr.mode özelliğini İLANI ZORUNLUDUR.*

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

  • [H-2-1] android.app.Activity#setVrModeEnabled aracılığıyla VR uygulamaları tarafından etkinleştirilebilen android.service.vr.VrListenerService uygulamasını içeren bir uygulama DAHİL EDİLMELİDİR.*

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

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

  • [H-1-1] android.hardware.vr.high_performance özellik bayrağını İLANI GEREKTİRİR.*

2.2.2. Multimedya

Ses Kodlama (Bölüm 5.1.1)

El cihazı uygulamaları 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 (düşük gecikmeli gelişmiş AAC)

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

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

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

Video Kodlama (Bölüm 5.2)

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

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

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

El cihazı uygulamaları aşağıdaki video kod çözme işlemlerini desteklemelidir:

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

2.2.3. Yazılım

WebView Uyumluluğu (Bölüm 3.4.1)

Elde taşınabilir cihaz uygulamaları:

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

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

Elde taşınabilir cihaz uygulamaları:

  • [H-0-1] Genel kullanıcı web tarayıcılığı için bağımsız bir Tarayıcı uygulaması DAHİL OLMALIDIR.

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

Elde taşınabilir cihaz uygulamaları:

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

  • [H-SR] ShortcutManager API aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcının uygulanması önemle ÖNERİLİR.

  • [H-SR] Uygulama simgelerinin rozetlerini gösteren varsayılan bir başlatıcı uygulaması eklemeniz önemle ÖNERİLİR.

Widget'lar (Bölüm 3.8.2)

Elde taşınabilir cihaz uygulamaları:

  • [H-SR] Üçüncü taraf uygulama widget'larını desteklemeniz önemle ÖNERİLİR.

Bildirimler (Bölüm 3.8.3)

Elde taşınabilir cihaz uygulamaları:

  • [H-0-1] Üçüncü taraf uygulamalarının, Notification ve NotificationManager API sınıfları aracılığıyla kullanıcıları önemli olaylar hakkında bilgilendirmesine İZİN VERMELİDİR.
  • [H-0-2] Zengin bildirimleri DESTEKLEMELİDİR.
  • [H-0-3] Uyarıları desteklemelidir.
  • [H-0-4] Uygulama, kullanıcıya bildirimleri doğrudan kontrol etme (ör.yanıtlama, erteleme, reddetmek, engelleme) olanağı sunan bir bildirim gölgesi İÇERMELİDİR. Bu olanak, AOSP'de uygulanan işlem düğmeleri veya kontrol paneli gibi kullanıcı özelliklerinden sağlanabilir.

Arama (Bölüm 3.8.4)

Elde taşınabilir cihaz uygulamaları:

  • [H-SR] Yardımcı işlem'i işlemek için cihaza bir asistan uygulanması önemle ÖNERİLİR.

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

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

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

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

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

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

Erişilebilirlik (Bölüm 3.10)

Elde taşınabilir 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şlevselliğine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi önemle ÖNERİLİR.

Text-to-Speech (Bölüm 3.11)

Elde taşınabilir cihaz uygulamaları:

  • [H-0-1] Üçüncü taraf TTS motorlarının yüklenmesini desteklemelidir.

  • [H-SR] Cihazdaki dilleri destekleyen bir TTS motoru eklemeniz önemle ÖNERİLİR.

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

Elde taşınabilir cihaz uygulamaları:

  • [H-SR] Hızlı Ayarlar kullanıcı arayüzü bileşeni eklemeniz önemle ÖNERİLİR.

Eşlik Eden Cihaz Eşleme (Bölüm 3.15)

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

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

2.2.4. Performans ve Güç

Kullanıcı Deneyimi Tutarlılığı (Bölüm 8.1)

El cihazı uygulamaları için:

  • [H-0-1] Tutarlı kare gecikmesi. Tutarlı olmayan kare gecikmesi veya kare oluşturma gecikmesi saniyede 5 kareden daha sık OLMAYACAĞI gibi saniyede 1 kareden az OLMALIDIR.
  • [H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamalarında, Android Compatibility Test Suite (CTS) tarafından tanımlandığı şekilde 10.000 liste girişinin yer aldığı bir listeyi 36 saniyeden kısa sürede kaydırarak düşük gecikmeli kullanıcı deneyimi sağlanmalıdır.
  • [H-0-3] Görevler arasında geçiş. Birden fazla uygulama başlatıldığında, zaten çalışan bir uygulamanın yeniden başlatılması 1 saniyeden kısa sürmelidir.

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

Elde taşınabilir cihaz uygulamaları:

  • [H-0-1] En az 5 MB/sn'lik sıralı yazma performansı SAĞLAMALIDIR.
  • [H-0-2] En az 0,5 MB/sn rastgele yazma performansı SAĞLAMALIDIR.
  • [H-0-3] En az 15 MB/sn sıralı okuma performansı SAĞLAMALIDIR.
  • [H-0-4] En az 3,5 MB/sn rastgele okuma performansı SAĞLAMALIDIR.

Enerji Tasarrufu Modları (Bölüm 8.3)

El cihazı uygulamaları için:

  • [H-0-1] Uygulama Bekleme ve Uyku güç tasarrufu modlarından muaf tutulan tüm uygulamalar son kullanıcıya GÖSTERİLMELİDİR.
  • [H-0-2] Uygulama Bekleme ve Uyku güç tasarrufu modlarının tetiklenmesi, bakımı, uyanma algoritmaları ve genel sistem ayarlarının kullanımı Android Açık Kaynak Projesi'nden farklı OLMAYACAK.

Enerji Tüketimi Muhasebesi (8.4 Bölümleri)

Elde taşınabilir cihaz uygulamaları:

  • [H-0-1] Her donanım bileşeninin mevcut tüketim değerini ve Android Open Source Project sitesinde belirtildiği gibi bileşenlerin zaman içinde pilin yaklaşık olarak ne kadar tükenmesine neden olduğunu tanımlayan bileşen başına güç profili sağlanmalıdır.
  • [H-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden BİLDİRİLMELİDİR.
  • [H-0-3] Her işlemin UID'si başına CPU güç tüketimini bildirmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
  • [H-0-4] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır.
  • Donanım bileşeninin güç kullanımını bir uygulamaya bağlayamıyorsanız donanım bileşeninin kendisine bağlanmalıdır.

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

2.2.5. Güvenlik Modeli

İzinler (Bölüm 9.1)

Elde taşınabilir cihaz uygulamaları:

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

2.3. Televizyon Gereksinimleri

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

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

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

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

2.3.1. Donanım

Dokunmadan gezinme (Bölüm 7.2.2)

Televizyon cihazı uygulamaları:

  • [T-0-1] D-pad desteklemelidir.

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

Televizyon cihazı uygulamaları:

  • [T-0-1] Ana Sayfa ve Geri işlevlerini ZORUNLUDIR.
  • [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 denetleyicileri için destek içermeli ve android.hardware.gamepad özellik işaretini 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'e kadar frekansta etkinlikleri raporlayabilmelidir.

Bluetooth (Bölüm 7.4.3)

Televizyon cihazı uygulamaları:

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

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

Televizyon cihazı uygulamaları:

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

Mikrofon (Bölüm 7.8.1)

Televizyon cihazı uygulamaları:

  • Mikrofon içermelidir.

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

Televizyon cihazı uygulamaları:

  • [T-0-1] Ses çıkışına sahip OLMALI ve android.hardware.audio.output değerini belirtmelidir.

2.3.2. Multimedya

Ses Kodlama (Bölüm 5.1)

Televizyon cihazı uygulamaları 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 (düşük gecikmeli gelişmiş AAC)

Video Kodlama (Bölüm 5.2)

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

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

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ı desteklemeniz önemle ÖNERİLİR.
  • [T-SR] 30 kare/saniye (FPS) hızında 1080p çözünürlüklü videonun H.264 kodlamasını desteklemeniz önemle ÖNERİLİR.

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

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

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

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

  • [T-SR] MPEG-2

H.264 (Bölüm 5.3.4)

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

  • [T-1-1] Yüksek Profil Seviye 4.2 ve HD 1080p (60 fps) kod çözme profilini DESTEKLEMELİDİR.
  • [T-1-2] Aşağıdaki tabloda belirtildiği gibi hem HD profilleri hem de Temel Profil, Ana Profil veya Yüksek Profil Seviye 4.2 ile kodlanmış videoların kodunu çözebilmelidir.

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

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

  • [T-1-1] Ana Profil 4.1 Ana katmanını desteklemelidir.
  • [T-SR] HD 1080p için 60 fps video kare hızını desteklemeniz önemle ÖNERİLİR.

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

  • [T-2-1] Kodek, Main10 5. Katman Ana Katman profilini DESTEKLEMELİDİR.

VP8 (Bölüm 5.3.6)

Televizyon cihazı uygulamaları VP8 codec'ini destekliyorsa:

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

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

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

VP9 (Bölüm 5.3.7)

TV cihazı uygulamaları VP9 codec'ini ve UHD video kod çözmeyi destekliyorsa:

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

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

  • [T-2-1] 1080p için 60 fps desteklenmelidir.

Güvenli Medya (Bölüm 5.8)

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

  • [T-1-1] Tüm kablolu harici ekranlar için HDCP 2.2 desteklenmelidir.

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

  • [T-2-1] Tüm kablolu harici ekranlar için HDCP 1.4 desteklenmelidir.

Televizyon cihazı uygulamaları:

  • [T-SR] Are STRONGLY RECOMMENDED to support simultaneous decoding of secure streams. En azından iki akış için eşzamanlı kod çözme işlemi KESİNLİKLE ÖNERİLİR.

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

Televizyon cihazı uygulamaları:

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

2.3.3. Yazılım

Televizyon cihazı uygulamaları:

WebView uyumluluğu (Bölüm 3.4.1)

Televizyon cihazı uygulamaları:

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

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

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

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

Çoklu pencereler (Bölüm 3.8.14)

Televizyon cihazı uygulamaları:

  • [T-SR] Pencere içinde pencere (PIP) modunu çoklu pencerede desteklemeniz ö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 TV cihaz uygulamalarında, talkback açık kaynak projesinde sağlanan Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevselliğine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi önemle ÖNERİLİR.

Text-to-Speech (Bölüm 3.11)

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

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

  • [T-0-1] Üçüncü taraf TTS motorlarının yüklenmesini desteklemelidir.

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

Televizyon cihazı uygulamaları:

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

2.2.4. Performans ve Güç

Kullanıcı Deneyimi Tutarlılığı (Bölüm 8.1)

Televizyon cihazı uygulamaları için:

  • [T-0-1] Tutarlı kare gecikmesi. Tutarlı olmayan kare gecikmesi veya kare oluşturma gecikmesi saniyede 5 kareden daha sık OLMAYACAĞI gibi saniyede 1 kareden az 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ı SAĞLAMALIDIR.
  • [T-0-2] En az 0,5 MB/sn rastgele yazma performansı SAĞLAMALIDIR.
  • [T-0-3] En az 15 MB/sn sıralı okuma performansı SAĞLAMALIDIR.
  • [T-0-4] En az 3,5 MB/sn rastgele okuma performansı SAĞLAMALIDIR.

Enerji Tasarrufu Modları (Bölüm 8.3)

Televizyon cihazı uygulamaları için:

  • [T-0-1] Uygulama Bekleme ve Uyku güç tasarrufu modlarından muaf tutulan tüm uygulamalar son kullanıcıya GÖSTERİLMELİDİR.
  • [T-0-2] Uygulamada Bekleme ve Uyku güç tasarrufu modlarının tetiklenmesi, bakımı, uyanma algoritmaları ve genel sistem ayarlarının kullanımı Android Açık Kaynak Projesi'nden farklı OLMAYACAK.

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

Televizyon cihazı uygulamaları:

  • [T-0-1] Her donanım bileşeninin mevcut tüketim değerini ve Android Open Source Project sitesinde belirtildiği gibi bileşenlerin zaman içinde pilin yaklaşık olarak ne kadar tükenmesine neden olduğunu tanımlayan bileşen başına güç profili ZORUNLUDUR.
  • [T-0-2] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden BİLDİRMENİZ GEREKİR.
  • [T-0-3] Her işlemin UID'si başına CPU güç tüketimini bildirmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
  • Donanım bileşeninin güç kullanımını bir uygulamaya bağlayamıyorsanız donanım bileşeninin kendisine bağlanmalıdır.
  • [T-0-4] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır.

2.4. İzleme Şartları

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

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

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

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

2.4.1. Donanım

Ekran Boyutu (Bölüm 7.1.1.1)

Cihaz uygulamalarını izleme:

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

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

Cihaz uygulamalarını izleme:

  • [W-0-1] Kullanıcının Ana Sayfa işlevine ve UI_MODE_TYPE_WATCH'te olmadığı sürece Geri işlevine erişebilmesi GEREKİR.

Dokunmatik Ekran Girişi (Bölüm 7.2.4)

Cihaz uygulamalarını izleme:

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

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

Cihaz uygulamalarını izleme:

  • [W-SR] 3 eksenli ivme ölçer eklemeniz önemle ÖNERİLİR.

Bluetooth (Bölüm 7.4.3)

Cihaz uygulamalarını izleme:

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

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

Cihaz uygulamalarını izleme:

  • [W-0-1] Uygulama gizli verileri ("/data" bölümü olarak da bilinir) için en az 1 GB kalıcı depolama alanı BULUNMASI GEREKİR
  • [W-0-2] Çekirdek ve kullanıcı alanında en az 416 MB bellek olması ZORUNLUDUR.

Mikrofon (Bölüm 7.8.1)

Cihaz uygulamalarını izleme:

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

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

Cihaz uygulamalarını izleme:

  • Ses çıkışı OLABİLİR ancak OLMASI GEREKMEZ.

2.4.2. Multimedya

Ek koşul yoktur.

2.4.3. Yazılım

Cihaz uygulamalarını izleme:

  • [W-0-1] android.hardware.type.watch özelliğiNİ İLANI GEREKİR.
  • [W-0-2] uiMode = UI_MODE_TYPE_WATCH değerini desteklemelidir.

Arama (Bölüm 3.8.4)

Cihaz uygulamalarını izleme:

  • [W-SR] Assist işlemini gerçekleştirmek için cihaza bir asistan uygulanması önemle ÖNERİLİR.

Erişilebilirlik (Bölüm 3.10)

android.hardware.audio.output özellik işaretini açıklayan 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şlevselliğine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi önemle ÖNERİLİR.

Text-to-Speech (Bölüm 3.11)

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

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

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

2.5. Otomotiv Şartları

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

Android cihaz uygulamaları, android.hardware.type.automotive özelliğini beyan ediyorsa veya aşağıdaki ölçütlerin tümünü karşılıyorsa Otomotiv olarak sınıflandırılır.

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

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

2.5.1. Donanım

Ekran Boyutu (Bölüm 7.1.1.1)

Otomotiv cihaz uygulamaları:

  • [A-0-1] Fiziksel diyagonal boyutu en az 6 inç olan bir ekrana sahip OLMALIDIR.
  • [A-0-2] Ekran boyutu 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 Sayfa işlevini ZORUNLU KULLANIYOR ve Geri ve Son İşlevleri KULLANABİLİYOR olmalıdır.
  • [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 eklemeniz önemle ÖNERİLİR.

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

GPS (Bölüm 7.3.3)

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

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

Jiroskop (Bölüm 7.3.4)

Otomotiv cihaz uygulamaları jiroskop içeriyorsa:

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

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

Otomotiv cihaz uygulamaları:

  • Mevcut ekipmanı SENSOR_TYPE_GEAR olarak sağlamalıdır.

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şaretinin değeri, gösterge paneli gündüz/gece moduyla tutarlı OLMALI ve ortam ışığı sensörünün girişine dayalı OLMALIDIR.
  • Temel ortam ışığı sensörü, fotometre ile aynı OLABİLİR.

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

Otomotiv cihaz uygulamaları:

  • [A-0-1] Araç tamamen durduğunda ve park edildiğinde varsayılan değeri DRIVE_STATUS_UNRESTRICTED olan SENSOR_TYPE_DRIVING_STATUS olarak tanımlanan sürüş durumunu DESTEKLEMELİDİR. SENSOR_TYPE_DRIVING_STATUS'ü, ürünün gönderildiği pazarlar için geçerli tüm yasa ve yönetmeliklere uygun şekilde yapılandırmak 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ı İÇERMELİDİR.

Bluetooth (Bölüm 7.4.3)

Otomotiv cihaz uygulamaları:

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

  • [A-0-2] Android Automotive uygulamaları aşağıdaki Bluetooth profillerini DESTEKLEMELİDİR:

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

Minimum Ağ Kapasitesi (Bölüm 7.4.5)

Otomotiv cihaz uygulamaları:

  • Hücresel ağa dayalı veri bağlantısı desteği DAHİL OLMALIDIR.

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

Otomotiv cihaz uygulamaları:

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

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

Otomotiv cihaz uygulamaları:

  • Çevre birimi modunu destekleyen bir USB bağlantı noktası DAHİL OLMALIDIR.

Mikrofon (Bölüm 7.8.1)

Otomotiv cihaz uygulamaları:

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

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

Otomotiv cihaz uygulamaları:

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

2.5.2. Multimedya

Ses Kodlama (Bölüm 5.1)

Otomotiv cihaz uygulamaları 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 (düşük gecikmeli gelişmiş AAC)

Video Kodlama (Bölüm 5.2)

Otomotiv cihaz uygulamaları aşağıdaki video kodlamayı desteklemelidir:

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

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

Otomotiv cihaz uygulamaları aşağıdaki video kod çözme işlemlerini desteklemelidir:

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

Otomotiv cihaz uygulamalarının aşağıdaki video kod çözme işlemlerini desteklemesi ö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ğiNİ İLKLEŞTİRMELİDİR.
  • [A-0-2] uiMode = UI_MODE_TYPE_CAR değerini desteklemelidir.
  • [A-0-3] Android Automotive uygulamaları, android.car.* ad alanındaki tüm herkese açık API'leri DESTEKLEMELİDİR.

WebView Uyumluluğu (Bölüm 3.4.1)

Otomotiv cihaz uygulamaları:

  • [A-0-1] android.webkit.Webview API için eksiksiz bir uygulama sağlanmalı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'sini kullanan bildirimleri GÖSTERMELİDİR.

Arama (Bölüm 3.8.4)

Otomotiv cihaz uygulamaları:

Medya kullanıcı arayüzü (Bölüm 3.14)

Otomotiv cihaz uygulamaları:

  • [A-0-1] 3.14 numaralı bölümde açıklandığı gibi medya API'lerini kullanan üçüncü taraf uygulamalarını desteklemek için bir kullanıcı arayüzü çerçevesi DAHİL EDİLMELİDİR.

2.2.4. Performans ve Güç

Enerji Tasarrufu Modları (Bölüm 8.3)

Otomotiv cihaz uygulamaları için:

  • [A-0-1] Uygulama Bekleme ve Uyku güç tasarrufu modlarından muaf tutulan tüm uygulamalar son kullanıcıya GÖSTERİLMELİDİR.
  • [A-0-2] Uygulama Bekleme ve Uyku güç tasarrufu modlarının tetiklenmesi, bakımı, uyanma algoritmaları ve genel sistem ayarlarının kullanımı Android Açık Kaynak Projesi'nden farklı OLMAYACAK.

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

Otomotiv cihaz uygulamaları:

  • [A-0-1] Her donanım bileşeninin mevcut tüketim değerini ve Android Open Source Project sitesinde belirtildiği gibi bileşenlerin zaman içinde pilin yaklaşık olarak ne kadar tükenmesine neden olduğunu tanımlayan bileşen başına güç profili ZORUNLUDUR.
  • [A-0-2] Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden BİLDİRMENİZ GEREKİR.
  • [A-0-3] Her işlemin UID'si başına CPU güç tüketimini bildirmelidir. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
  • Donanım bileşeninin güç kullanımını bir uygulamaya bağlayamıyorsanız donanım bileşeninin kendisine bağlanmalıdır.
  • [A-0-4] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır.

2.2.5. Güvenlik Modeli

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

Automotive cihaz uygulamaları birden fazla kullanıcı içeriyorsa:

  • [A-1-1] Kullanıcının giriş yapmasına gerek kalmadan araç sistemi tarafından sağlanan tüm işlevlere izin veren bir misafir hesabı DAHİL OLMALIDIR.

Otomotiv Araç Sistemi İzolasyon (Bölüm 9.14)

Otomotiv cihaz uygulamaları:

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

2.6. Tablet Gereksinimleri

Android tablet cihaz, genellikle kapaklı form faktöründe değil, iki elle tutularak kullanılan bir Android cihaz uygulamasıdır.

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

  • Hareketlilik sağlayan bir güç kaynağı (ör. pil) olmalıdır.
  • Köşeden köşeye çapraz fiziksel ekran boyutu 7 ila 18 inç arasında olmalıdır.

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

2.4.1. Donanım

Ekran Boyutu (Bölüm 7.1.1.1)

Tablet cihaz uygulamaları:

  • [Ta-0-1] 7 ila 18 inç aralığında bir ekrana sahip OLMALIDIR.

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

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

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

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

  • Android Open Accessory (AOA) API'sini UYGULAYABİLİR.

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

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

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

3. Yazılım

3.1. Yönetilen API Uyumluluğu

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

  • [C-0-1] Cihaz uygulamalarında, Android SDK'sı tarafından sunulan tüm belgelenmiş API'ler veya yayın öncesi Android kaynak kodunda "@SystemApi" işaretçisiyle süslenmiş tüm API'ler için belgelenmiş tüm davranışlar da dahil olmak üzere eksiksiz uygulamalar sağlanmalıdır.

  • [C-0-2] Cihaz uygulamalarında TestApi ek açıklamasıyla (@TestApi) işaretlenmiş tüm sınıflar, yöntemler ve ilişkili öğeler desteklenmeli/korunmalıdır.

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

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

3.1.1. Android Uzantıları

Android, aynı API düzeyi sürümünü korurken yönetilen API'leri genişletme desteğini içerir.

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

3.2. Soft API Uyumluluğu

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

3.2.1. İzinler

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

3.2.2. Derleme Parametreleri

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

  • [C-0-1] Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının uyması GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre Ayrıntılar
VERSION.RELEASE Şu anda çalışan Android sisteminin, kullanıcılar tarafından okunabilir biçimdeki sürümü. Bu alanda 8.1 bölümünde tanımlanan dize değerlerinden biri bulunmalıdır.
VERSION.SDK Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 8.1 için bu alanda 8.1_INT tam sayı değeri BULUNMASI GEREKİR.
VERSION.SDK_INT Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 8.1 için bu alanda 8.1_INT tam sayı değeri BULUNMASI GEREKİR.
VERSION.INCREMENTAL Cihaz uygulayıcısı tarafından seçilen ve kullanıcılar tarafından okunabilir biçimde, o anda çalışan Android sisteminin belirli bir derlemesini belirten bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişiklik tanımlayıcısının kullanıldığını belirtmektir. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir.
MASA Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı kullanıcı tarafından okunabilir biçimde tanımlayan bir değer. Bu alanın olası bir kullanımı, cihazı besleyen kartın belirli bir revizyonunu belirtmektir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir.
BRAND Cihazla ilişkili marka adını son kullanıcıların bildiği şekilde yansıtan bir değer. Kullanıcı tarafından okunabilir biçimde OLMALI ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını temsil ETMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir.
SUPPORTED_ABIS Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility.
SUPPORTED_32_BIT_ABIS Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility.
SUPPORTED_64_BIT_ABIS Yerel kodun ikinci talimat setinin (CPU türü + ABI kuralı) adı. 3.3. bölüme bakın. Native API Compatibility.
CPU_ABI Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility.
CPU_ABI2 Yerel kodun ikinci talimat setinin (CPU türü + ABI kuralı) adı. 3.3. bölüme bakın. Native API Compatibility.
CİHAZ Cihaz uygulayıcısı tarafından seçilen, cihazın donanım özelliklerinin yapılandırmasını ve endüstriyel tasarımını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEMELİDİR.
FINGERPRINT Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunaklı OLMALIDIR. Şu şablona UYGUN OLMALIDIR:

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

Örnek:

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

Parmak izi boşluk karakteri İÇERMEMELİDİR. Yukarıdaki şablona dahil edilen diğer alanlarda boşluk karakterleri varsa derleme parmak izinde alt çizgi ("_") karakteri gibi başka bir karakterle DEĞİŞTİRİLMESİ GEREKİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALIDIR.

DONANIM Donanımın adı (çekirdek komut satırından veya /proc'ten). Makul ölçüde okunaklı OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir.
HOST Derlemenin oluşturulduğu ana makineyi benzersiz şekilde tanımlayan, kullanıcıların okuyabileceği biçimde bir dize. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir.
Kimlik Cihaz uygulayıcısı tarafından, belirli bir sürümü belirtmek için seçilen, kullanıcı tarafından 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 derlemeleri arasında ayrım yapabileceği kadar anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir.
ÜRETİCİ Ürünün özgün donanım üreticisinin (OEM) ticari adı. Bu alanın biçimi için herhangi bir koşul yoktur. Yalnızca boş veya boş dize ("") OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEmelidir.
MODEL Cihaz uygulayıcısı tarafından seçilen ve son kullanıcının bildiği cihaz adını içeren bir değer. Bu, cihazın pazarlandığı ve son kullanıcılara satıldığı adla aynı OLMALIDIR. Bu alanın biçimi için herhangi bir koşul yoktur. Yalnızca boş veya boş dize ("") OLMAMALIDIR. Bu alan, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEmelidir.
ÜRÜN Cihaz uygulayıcısı tarafından seçilen ve belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değerdir. Bu değer, aynı marka içinde benzersiz OLMALIDIR. Kullanıcılar tarafından okunabilir OLMALIDIR ancak son kullanıcılar tarafından görüntülenmesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım süresi boyunca DEĞİŞTİRİLMEMELİDİR.
SERİ Aynı MODEL ve ÜRETİCİ'ye sahip cihazlarda mevcut ve benzersiz OLMASI GEREKEN donanım seri numarası. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^([a-zA-Z0-9]{6,20})$" normal ifadesiyle eşleşmelidir.
ETİKETLER Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayırt edici hale getiren, virgülle ayrılmış etiket listesi. Bu alanda, üç tipik Android platformu imzalama yapılandırmasına karşılık gelen değerlerden biri BULUNMASI GEREKİR: release-keys, dev-keys, test-keys.
SÜRE Derlemenin gerçekleştiği zamanın zaman damgasını temsil eden bir değer.
TÜR Derlemenin çalışma zamanı yapılandırmasını belirten, cihaz uygulayıcısı tarafından seçilen bir değer. Bu alanda, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri BULUNMASI GEREKİR: user, userdebug veya eng.
KULLANICI Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı veya kullanıcı kimliği. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir.
SECURITY_PATCH Bir derlemenin güvenlik yaması düzeyini gösteren bir değer. Derlemenin, belirtilen Android Herkese Açık Güvenlik Bülteni'nde açıklanan sorunlardan hiçbirine karşı herhangi bir şekilde güvenlik açığı olmadığını GÖSTERMELİDİR. [YYYY-AA-GG] biçiminde OLMALIDIR ve Android Herkese Açık Güvenlik Bülteni veya Android Güvenlik Uyarısı'nda belirtilen bir dizeyle eşleşmelidir (ör. "2015-11-01").
BASE_OS Android Public Security Bulletin'da sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden bir değer. Doğru değeri bildirmelidir ve böyle bir derleme yoksa boş bir dize ("") bildirmelidir.
BOOTLOADER Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili önyükleyici sürümünü kullanıcılar tarafından okunabilir biçimde tanımlayan bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir.
getRadioVersion() Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili radyo/modem sürümünü kullanıcılar tarafından okunabilir biçimde tanımlayan bir değer OLMALIDIR (olmalıdır veya döndürmelidir). Bir cihazda dahili radyo/modem yoksa NULL döndürülmelidir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir.

3.2.3. Intent Uyumluluğu

3.2.3.1. Temel Uygulama Amaçları

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

  • [C-0-1] Cihaz uygulamalarında, AOSP'deki aşağıdaki temel Android uygulamaları tarafından tanımlanan tüm herkese açık intent filtresi kalıpları için bir intent işleyiciyle bir veya daha fazla uygulama ya da hizmet bileşeni ÖNCEDEN YÜKLENMESİ GEREKİR:

    • Masa Saati
    • Tarayıcı
    • Takvim
    • Kişiler
    • Galeri
    • GlobalSearch
    • Roketatar
    • Müzik
    • Ayarlar
3.2.3.2. Amaç Çözümü
  • [C-0-1] Android genişletilebilir bir platform olduğundan, cihaz uygulamalarında 3.2.3.1 numaralı bölümde belirtilen her intent kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına izin VERİLMELİDİR. Android açık kaynaklı üst yayını, buna varsayılan olarak izin verir.
  • [C-0-2] Dvice uygulayıcıları, sistem uygulamalarının bu intent kalıplarını kullanımına özel ayrıcalıklar eklememeli veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü üstlenmesini engellememelidir. Bu yasak, özellikle kullanıcının tümü aynı intent kalıbını işleyen birden fazla uygulama arasından seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bunlarla sınırlı değildir.

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

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

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

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

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

Cihaz uygulamaları:

  • [C-0-1] SDK dokümanlarında açıklandığı gibi, uygun sistem etkinliklerine yanıt olarak herkese açık yayın intent'lerini YAYITLAMALIDIR. Arka plan uygulamalarıyla ilgili sınırlama SDK dokümanlarında da açıklandığı için bu şartın 3.5 numaralı bölümle çelişmediğini unutmayın.
3.2.3.5. Varsayılan Uygulama Ayarları

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

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

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

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

  • [C-2-1] Varsayılan SMS uygulamasını değiştirmek için bir iletişim kutusu göstermek üzere android.provider.Telephony.ACTION_CHANGE_DEFAULT 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 vermek için bir iletişim kutusu göstermek üzere android.telecom.action.CHANGE_DEFAULT_DIALER intent'ini UYGULAMALIDIR.

  • [C-2-3] PhoneAccounts ile ilişkili ConnectionServices'ı ve telekomünikasyon servis sağlayıcının giden arama yapmak için kullanacağı varsayılan PhoneAccount'ı yapılandırmak üzere kullanıcıya kolaylık sağlamak için android.telecom.action.CHANGE_PHONE_ACCOUNTS intent'ini UYGUNLAMALIDIR. AOSP uygulaması, "Aramalar" ayarlar menüsüne "Arama Hesapları seçeneği" menüsü ekleyerek bu koşulu karşılar.

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

Cihaz uygulamaları VoiceInteractionService'ü 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ı AYARALAMALI.
  • [C-1-2] Birincil ekranda çalışan bir etkinliğe benzer API uyumluluğunu GARANTİ ETMELİDİR.
  • [C-1-3] Yeni etkinlik, ActivityOptions.setLaunchDisplayId() API aracılığıyla bir hedef ekran belirtilmeden başlatıldığında yeni etkinliği, onu başlatan etkinlikle aynı ekrana yönlendirmelidir.
  • [C-1-4] Display.FLAG_PRIVATE işareti olan bir ekran kaldırıldığında tüm etkinlikleri İYİCE yok etmelidir.
  • [C-1-5] Ekranın boyutu değiştirilirse VirtualDisplay üzerindeki tüm etkinlikler buna göre yeniden boyutlandırılmalıdır.
  • Bir metin giriş alanı ikincil ekranda odaklandığında birincil ekranda IME (giriş yöntemi düzenleyici, kullanıcıların metin girmesini sağlayan bir kullanıcı kontrolü) gösterilEBİLİR.
  • Dokunma veya tuş girişleri desteklendiğinde, ikincil ekranda giriş odağını birincil ekrandan bağımsız olarak UYGULAMALIDIR.
  • Gösterilmek, doğru şekilde çalışmak ve ikincil ekranda bir etkinlik başlatılırsa uyumluluğu korumak için söz konusu ekrana karşılık gelen android.content.res.Configuration olmalıdır.

Cihaz uygulamaları, ikincil ekranlarda normal Android etkinliklerinin başlatılmasına izin veriyorsa ve birincil ile ikincil ekranlar farklı android.util.DisplayMetrics değerlerine sahipse:

  • [C-2-1] Boyutlandırılamayan etkinliklere (AndroidManifest.xml içinde resizeableActivity=false olan) ve API düzeyi 23 veya altını hedefleyen uygulamalara ikincil ekranlarda İZİN 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 bu ekranın, sistemin ve ekranda bulunan etkinliklerin sahibi bu ekranda uygulama başlatabilmelidir. Herkes android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda uygulama başlatabilir.

3.3. Yerel API Uyumluluğu

Cihaz uygulayıcıları şunlardır:

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

  • [SR] Aşağıda listelenen kitaplıkların, Android Açık Kaynak Projesi'ndeki uygulamalarının kullanılması KESİNLİKLE ÖNERİLİR.

3.3.1. Uygulama İkili Arabirimleri

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

Cihaz uygulamaları:

  • [C-0-1] Bir veya daha fazla tanımlanmış ABI ile uyumlu OLMALI ve Android NDK ile uyumluluk sağlamalıdır.
  • [C-0-2] Standart Java Native Interface (JNI) semantiğini kullanarak yönetilen ortamda çalışan kodun yerel kodu çağırması için destek DAHİL OLMALIDIR.
  • [C-0-3] Aşağıdaki listedeki her gerekli kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
  • [C-0-4] 64 bit ABI destekleniyorsa eşdeğer 32 bit ABI desteklenmelidir.
  • [C-0-5] Cihaz tarafından desteklenen yerel Uygulama İkili Arabirimi'ni (ABI) android.os.Build.SUPPORTED_ABIS, android.os.Build.SUPPORTED_32_BIT_ABIS ve android.os.Build.SUPPORTED_64_BIT_ABIS parametreleri aracılığıyla doğru şekilde bildirmelidir. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene göre sıralanmış ABI'lerin virgülle ayrılmış bir listesidir.
  • [C-0-6] Yukarıdaki parametreler aracılığıyla yalnızca Android NDK ABI Yönetimi dokümanının en son sürümünde belgelenen ve açıklanan ABI'leri bildirmeli ve Advanced SIMD (NEON olarak da bilinir) uzantısı desteği içermelidir.
  • [C-0-7] Yerel API'ler sağlayan aşağıdaki kitaplıkların tümünü yerel kod içeren uygulamalara SUNMALIDIR:

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

  • [C-0-9] /vendor/etc/public.libraries.txt dosyasında doğrudan üçüncü taraf uygulamalarına sunulan AOSP dışındaki ek kitaplıklar ZORUNLUDIR.
  • [C-0-10] AOSP'de sistem kitaplıkları olarak uygulanan ve sağlanan diğer yerel kitaplıklar, API düzeyi 24 veya daha yüksek sürümleri hedefleyen üçüncü taraf uygulamalara gösterilmemelidir.
  • [C-0-11] NDK'da tanımlandığı şekilde tüm OpenGL ES 3.1 ve Android Extension Pack işlev simgelerini libGLESv3.so kitaplığı aracılığıyla DIŞA aktarmalıdır. Tüm sembollerin BULUNMASI GEREKİR ancak 7.1.4.1 numaralı bölümde, her bir ilgili işlevin tam olarak ne zaman uygulanacağıyla ilgili koşullar daha ayrıntılı olarak açıklanmaktadır.
  • [C-0-12] Temel Vulkan 1.0 işlev sembollerinin 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 sembollerini libvulkan.so kitaplığı aracılığıyla dışa aktarmalıdır. Tüm sembollerin BULUNMASI GEREKİR ancak 7.1.4.2 numaralı bölümde, her bir ilgili işlevin tam olarak ne zaman uygulanacağıyla ilgili koşullar daha ayrıntılı olarak açıklanmaktadır.
  • Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kod ve başlık dosyaları kullanılarak OLUŞTURULMALIDIR

Android 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 cihazlarsa:

  • [C-1-1] ARMv8 mimarisi, mevcut yerel kodda kullanılan bazı işlemler de dahil olmak üzere çeşitli CPU işlemlerinin desteğini sonlandırsa da aşağıdaki desteği sonlandırılmış işlemler, yerel CPU desteği veya yazılım emülasyonu aracılığıyla 32 bit yerel ARM kodu için kullanılabilir durumda KALMALIDIR:

    • 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ğu sağlamak için 32 bit ARM uygulamaları tarafından okunduğunda /proc/cpuinfo içine aşağıdaki satırların DAHİL EDİLMESİ GEREKİR.

    • Features:, ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi.
    • CPU architecture:, ardından cihazın desteklediği en yüksek ARM mimarisini açıklayan bir tam sayı (ör. ARMv8 cihazlar için "8").
  • 64 bit ARM veya ARM dışı uygulamalar tarafından okunduğunda /proc/cpuinfo değiştirilmemelidir.

3.4. Web Uyumluluğu

3.4.1. WebView Uyumluluğu

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

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

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

    • $(VERSION) dizesinin değeri, android.os.Build.VERSION.RELEASE değerinin aynısı OLMALIDIR.
    • $(MODEL) dizenin değeri, android.os.Build.MODEL değerinin aynısı OLMALIDIR.
    • $(BUILD) dizesinin değeri, android.os.Build.ID değeriyle AYNI OLMALIDIR.
    • $(CHROMIUM_VER) dizesinin değeri, yayın öncesi Android Açık Kaynak Projesi'ndeki Chromium sürümünün OLMALIDIR.
    • Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobil ifadesini EKSİLTİREBİLİR.
  • WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliği için destek İÇERMELİDİR ve özelliği destekliyorsa HTML5 spesifikasyonuna uygun OLMALIDIR.

3.4.2. Tarayıcı Uyumluluğu

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

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

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

3.5. API Davranış Uyumluluğu

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

  • [C-0-1] Cihazlar, standart bir intent'in davranışını veya anlamını DEĞİŞTİRMEMELİDİR.
  • [C-0-2] Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, İçerik Sağlayıcı vb.) yaşam döngüsünü veya yaşam döngüsü anlamlarını DEĞİŞTİRMEMELİDİR.
  • [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEmelidir.
  • Cihazlar, arka plan uygulamalarında uygulanan sınırlamaları DEĞİŞTİREMEZ. Arka plan uygulamaları için daha ayrıntılı olarak belirtmek gerekirse:
    • [C-0-4] GnssMeasurement ve GnssNavigationMessage'ten çıktı almak için uygulama tarafından kaydedilen geri çağırma işlemlerini durdurmaları GEREKİR.
    • [C-0-5] LocationManager API sınıfı veya WifiManager.startScan() yöntemi aracılığıyla uygulamaya sağlanan güncellemelerin sıklığını hız sınırlamalı.
    • [C-0-6] Uygulama API düzeyi 25 veya üstünü hedefliyorsa yayın amacı "signature" veya "signatureOrSystem" protectionLevel izni gerektirmediği veya istisna listesinde yer almadığı sürece, uygulamanın manifest dosyasında standart Android intent'lerinin örtülü yayınları için yayın alıcılarının kaydedilmesine İZİN VERMEMELİDİR.
    • [C-0-7] Uygulama, API düzeyi 25 veya üstünü hedefliyorsa kullanıcı tarafından görülebilen bir görevi gerçekleştirmek için geçici izin verilenler listesine yerleştirilmediği sürece, uygulamanın arka plan hizmetlerini durdurması GEREKİR. Bu işlem, uygulama hizmetlerinin stopSelf() yöntemini çağırmış gibi yapılır.
    • [C-0-8] Uygulama API düzeyi 25 veya üstünü hedefliyorsa uygulamanın tuttuğu wakelock'ları AÇIKLAMASI GEREKİR.

Yukarıdaki listede olası her duruma yer verilmemiştir. Uyumluluk Test Paketi (CTS), platformun önemli bölümlerini davranışsal uyumluluk açısından test eder ancak platformun tamamını test etmez. Android Open Source Project ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcıları, sistemin önemli bölümlerini yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodu KULLANMALIDIR.

3.6. API ad alanları

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

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

Yani:

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

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

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

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

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

Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarının birini iyileştirmeyi önerirse (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) source.android.com adresini ziyaret edip bu sitedeki bilgilere göre değişiklik ve kod katkıda bulunma sürecine BAŞLAMALIDIR.

Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmayla ilgili standart kurallara karşılık geldiğini unutmayın. Bu bölüm, bu kuralları pekiştirmeyi ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmeyi amaçlamaktadır.

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

Cihaz uygulamaları:

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

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

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

  • ÇALIŞMA ORTAMI'nın kararlılığını sağlamak için çeşitli yürütme modları ve hedef mimariler altında fuzz testleri ÇALIŞTIRILMALIDIR. 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 Watch 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
large 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, bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerini alacak üçüncü taraf uygulamaları için destek içerir.

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

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

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

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

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

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

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

  • [C-5-1] NotificationChannel.setShowBadge() API yöntemine UYGUN OLMALIDIR. Diğer bir deyişle, değer true olarak ayarlanmışsa uygulama simgesiyle ilişkili bir görsel imkanı gösterin ve uygulamanın tüm bildirim kanalları değeri false olarak ayarladığında herhangi bir uygulama simgesi rozeti şeması göstermeyin.
  • Üçüncü taraf uygulamaları, özel API'lerin kullanımıyla özel rozet şemasının desteklendiğini belirtiyorsa uygulama simgesi rozetlerini özel rozet şemasıyla geçersiz kılabilir ancak SDK'da açıklanan bildirim rozetleri API'leri (ör. Notification.Builder.setNumber() ve Notification.Builder.setBadgeIconType() API'si) aracılığıyla sağlanan kaynakları ve değerleri kullanmalıdır.

3.8.2. Widget'lar

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

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

  • [C-1-1] android.software.app_widgets platform özelliği için destek BEYAN EDİLMELİDİR.
  • [C-1-2] Uygulama widget'ları için yerleşik destek içermeli ve doğrudan Başlatıcı'dan uygulama widget'ları eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü olanakları sunmalıdır.
  • [C-1-3] Standart ızgara boyutunda 4 x 4 widget oluşturabilmelidir. Ayrıntılar için Android SDK dokümanlarındaki Uygulama Widget'ı Tasarım Kuralları'na bakın.
  • Kilit ekranında uygulama widget'larını DESTEKLEYEBİLİR.

Cihaz uygulamaları, üçüncü taraf uygulama widget'larını ve kısayolların uygulama içinde sabitlenmesini 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 etkinlikler hakkında bilgilendirmesine ve kullanıcıların dikkatini çekmesine olanak tanıyan Notification ve NotificationManager API'leri içerir.

3.8.3.1. Bildirimlerin sunumu

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

  • [C-1-1] SDK dokümanlarında açıklandığı şekilde ve mümkün olduğunca cihaz uygulama donanımıyla donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim varsa titreşim API'lerinin doğru şekilde uygulanması GEREKİR. Bir cihaz uygulamasında donanım yoksa ilgili API'ler no-op olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmıştır.
  • [C-1-2] Bildirimler için referans Android açık kaynak uygulaması tarafından sağlanan kullanıcı deneyiminden farklı bir kullanıcı deneyimi SUNABİLSE de API'lerde veya Durum/Sistem Çubuğu simge stil kılavuzunda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) DOĞRU şekilde oluşturmalıdır.
  • [C-1-3] Bildirimleri güncellemek, kaldırmak ve gruplandırmak için API'ler için açıklanan davranışları doğru şekilde uygulamalıdır.
  • [C-1-4] NotificationChannel API'sinin tam davranışını SDK'da belgelenmiş şekilde sağlamalıdır.
  • [C-1-5] Her kanal ve uygulama paketi düzeyinde belirli bir üçüncü taraf uygulamasının bildirimini engellemek ve değiştirmek için kullanıcılara bir kolaylık sunmalıdır.
  • [C-1-6] Ayrıca, silinen bildirim kanallarını görüntülemek için kullanıcılara bir kolaylık sağlamalıdır.
  • Zengin bildirimleri DESTEKLEMELİDİR.
  • Bazı yüksek öncelikli bildirimleri uyarı bildirimleri olarak GÖSTERMELİDİR.
  • Bildirimleri erteleme seçeneği kullanıcılara sunulmalıdır.
  • Sürücünün dikkatinin dağılması gibi güvenlik sorunlarını azaltmak için üçüncü taraf uygulamalarının kullanıcıları önemli etkinlikler hakkında ne zaman bilgilendirebileceğinin görünürlüğünü ve zamanlamasını yönetebilir.

Cihaz uygulamaları zengin bildirimleri destekliyorsa:

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

Cihaz uygulamaları uyarı bildirimlerini destekliyorsa:

  • [C-3-1] Bildirimler gösterilirken Notification.Builder API sınıfında açıklandığı gibi bildirim görünümünü ve kaynaklarını KULLANMALIDIR.
3.8.3.2. Bildirim Dinleyici Hizmeti

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

Cihaz uygulamaları, özellik işaretini android.hardware.ram.normal raporlarsa:

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

Cihaz uygulamalarında bildirimleri erteleme olanağı sunuluyorsa:

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

Cihaz uygulamaları, DND özelliğini destekliyorsa:

  • [C-1-1] ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS intent'ine yanıt verecek bir etkinlik UYGULANMALIDIR. UI_MODE_TYPE_NORMAL ile yapılan uygulamalarda bu etkinlik, kullanıcının uygulamaya DND politikası yapılandırmalarına erişim izni verebileceği veya vermeyeceği bir etkinlik OLMALIDIR.
  • [C-1-2] Cihaz uygulaması, kullanıcının üçüncü taraf uygulamalarına DND politikası yapılandırmasına erişme izni vermesi veya vermemesi için bir yöntem sağladığında, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kuralların yanı sıra uygulamalar tarafından oluşturulan otomatik DND kurallarını GÖSTERMELİDİR.
  • [C-1-3] NotificationManager.Policy üzerinden iletilen suppressedVisualEffects değerlerini İYİCE dikkate ALMALIDIR ve bir uygulama SUPPRESSED_EFFECT_SCREEN_OFF veya SUPPRESSED_EFFECT_SCREEN_ON işaretlerinden herhangi birini ayarladıysa kullanıcıya Görsel efektlerin, Rahatsız Etmeyin ayarları menüsünde devre dışı bırakıldığını BELİRTMELİDİR.

Android, geliştiricilerin uygulamalarına arama özelliğini dahil etmelerine ve uygulamalarının verilerini küresel sistem aramasına sunmalarına olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmelerine olanak tanıyan, kullanıcılar yazarken öneriler gösteren ve sonuçları gösteren tek bir sistem genelinde kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü yeniden kullanmasına ve ortak küresel arama kullanıcı arayüzüne sonuç sağlamasına olanak tanır.

  • Android cihaz uygulamalarında, kullanıcı girişine yanıt olarak anlık öneriler sunabilen tek, paylaşılan, sistem genelinde bir arama kullanıcı arayüzü olan genel arama YER ALMALIDIR.

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

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

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

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

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

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

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

3.8.5. Uyarılar ve pop-up'lar

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

Cihaz uygulamalarında ekran veya video çıkışı varsa:

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

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

3.8.6. Temalar

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

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

Cihaz uygulamalarında ekran veya video çıkışı varsa:

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

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

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

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

3.8.7. Animasyonlu Duvar Kağıtları

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

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

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

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

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

3.8.8. Etkinlik Değiştirme

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

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

7.2.3 numaralı bölümde açıklandığı gibi son uygulamalar işlev gezinme anahtarı da dahil olmak üzere cihaz uygulamaları arayüzü değiştiriyorsa:

  • [C-1-1] En az 7 görüntülenen etkinliği DESTEKLEMELİDİR.
  • Bir seferde en az 4 etkinliğin başlığını GÖSTERMELİDİR.
  • [C-1-2] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirip devre dışı bırakabileceği bir ayarlar menüsü sunmalıdır.
  • Son uygulamalarda vurgu rengini, simgesini ve ekran başlığını GÖSTERMELİDİR.
  • Kapatma imkanı ("x") gösterilMELİDİR ancak kullanıcı ekranlarla etkileşime geçene kadar bu işlem ertelenebilir.
  • Önceki etkinliğe kolayca geçmek için bir kısayol UYGULANMALIDIR.
  • Son uygulamalar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işlemini TETİKLEMELİDİR.
  • Son uygulamalar işlev tuşuna uzun basıldığında, destekleniyorsa bölünmüş ekran çoklu pencere modunu TETİKLEMELİDİR.
  • İlişkili son etkinlikleri birlikte hareket eden bir grup olarak GÖSTEREBİLİR.

  • [SR] Genel bakış ekranı için yayın öncesi Android kullanıcı arayüzünün (veya küçük resim tabanlı benzer bir arayüzün) kullanılması önemle ÖNERİLİR.

3.8.9. Giriş Yönetimi

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

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

  • [C-1-1] android.software.input_methods platform özelliğini İLANI ZORUNLUDUR ve Android SDK dokümanlarında tanımlandığı şekilde IME API'lerini desteklemelidir.
  • [C-1-2] android.settings.INPUT_METHOD_SETTINGS intent'ine yanıt olarak üçüncü taraf giriş yöntemleri eklemek ve yapılandırmak için kullanıcının erişebileceği bir mekanizma SAĞLANMALIDIR.

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

3.8.10. Kilit Ekranı Medya Denetimi

Android 5.0'den itibaren, medya uygulamalarının kilit ekranında görüntülenen oynatma kontrolleriyle entegrasyonuna olanak tanıyan Medya Bildirim Şablonu'nun kullanılması önerilir. Bu nedenle, Uzaktan Kumanda İstemci API'sinin desteği sonlandırılmıştır.

3.8.11. Ekran koruyucular (eski adıyla Hayaller)

Android, daha önce Düşler olarak adlandırılan etkileşimli ekran koruyucuları için destek sunar. Ekran koruyucular, güç kaynağına bağlı bir cihaz boştayken veya masaüstü dock'ına yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Android Watch cihazlar ekran koruyucuları UYGULAYABİLİR ancak diğer cihaz uygulama türleri ekran koruyucu desteği içermeli ve kullanıcıların android.settings.DREAM_SETTINGS intent'ine yanıt olarak ekran koruyucuları yapılandırmaları için bir ayar seçeneği sunmalıdır.

3.8.12. Konum

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

  • [C-1-1] Konum modları, Ayarlar'daki Konum menüsünde GÖSTERİLMELİDİR.

3.8.13. Unicode ve Yazı Tipi

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

Cihaz uygulamalarında ekran veya video çıkışı varsa:

  • [C-1-1] Bu emoji karakterlerini renkli glifte oluşturabilmelidir.
  • [C-1-2] Şunlar için destek DAHİL OLMALIDIR:
  • Cihazdaki diller için farklı ağırlıklara sahip Roboto 2 yazı tipi (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black, sans-serif-condensed, sans-serif-condensed-light).
  • Latin, Yunanca ve Kiril alfabelerinin Unicode 7.0'daki tam kapsamı (Latin A, B, C ve D aralıkları ve Unicode 7.0'daki para birimi sembolleri bloğundaki tüm glifler dahil).
  • Unicode Teknik Raporu 51'de belirtildiği gibi cilt tonunu ve çeşitli aile emojilerini DESTEKLEMELİDİR.

Cihaz uygulamalarında IME varsa:

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

3.8.14. Çoklu pencereler

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

  • [C-1-1] Bu tür çoklu pencere modlarını, Android SDK'sının çoklu pencere modu destek dokümanlarında açıklanan uygulama davranışlarına ve API'lerine uygun şekilde uygulamalı ve aşağıdaki koşulları karşılamalıdır:
  • [C-1-2] Uygulamalar, AndroidManifest.xml dosyasında android:resizeableActivity özelliğini true olarak ayarlayarak veya targetSdkVersion değerini 24'ten büyük bir değere getirerek çoklu pencere modunda çalışabildiklerini açıkça ya da dolaylı olarak belirtebilir. Bu özelliği manifest'lerinde açıkça false olarak ayarlayan uygulamalar çoklu pencere modunda BAŞLATILMAMALISDIR. targetSdkVersion değeri 24'ten küçük olan ve bu android:resizeableActivity özelliğini ayarlamayan eski uygulamalar çoklu pencere modunda başlatılabilir ancak sistem, uygulamanın çoklu pencere modunda beklendiği gibi çalışmayabileceğine dair uyarı vermelidir.
  • [C-1-3] Ekran yüksekliği < 440 dp ve ekran genişliği < 440 dp ise bölünmüş ekran veya serbest biçim modu 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üklemelidir.
  • [C-2-2] Bölünmüş ekranlı çok pencereli bir uygulamanın sabitlenmiş etkinliğini kırpmalıdır ancak Başlatıcı uygulaması odaklanan pencereyse bazı içeriklerini göstermelidir.
  • [C-2-3] Üçüncü taraf başlatıcı uygulamasının beyan edilen AndroidManifestLayout_minWidth ve AndroidManifestLayout_minHeight değerlerini dikkate ALMALISI ve sabitlenmiş etkinliğin bazı içeriklerini gösterirken bu değerleri geçersiz kılmaması GEREKİR.

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

  • [C-3-1] Uygulama aşağıdaki durumlarda etkinlikleri pencere içinde pencere çoklu pencere modunda BAŞLATMALIDIR: * API düzeyi 26 veya üstünü hedefliyor ve android:supportsPictureInPicture bildiriyor * API düzeyi 25 veya altını hedefliyor ve hem android:resizeableActivity hem de android:supportsPictureInPicture bildiriyor.
  • [C-3-2] setActions() API aracılığıyla geçerli PIP etkinliği tarafından belirtildiği şekilde SystemUI'deki işlemleri göstermeLİDİR.
  • [C-3-3] PIP etkinliği tarafından setAspectRatio() API aracılığıyla belirtildiği gibi, 1:2,39'dan büyük veya eşit ve 2,39:1'den küçük veya eşit en boy oranlarını DESTEKLEMELİDİR.
  • [C-3-4] PIP penceresini kontrol etmek için KeyEvent.KEYCODE_WINDOW kullanılmalıdır; PIP modu uygulanmamışsa anahtar ön plan etkinliği tarafından kullanılabilir olmalıdır.
  • [C-3-5] Bir uygulamanın PIP modunda görüntülenmesini engellemek için kullanıcıya bir kolaylık sunmalıdır; AOSP uygulaması, bildirim gölgesinde kontrollere sahip olarak bu koşulu karşılar.
  • [C-3-6] Configuration.uiMode UI_MODE_TYPE_TELEVISION olarak yapılandırıldığında PIP penceresi için minimum 108 dp genişlik ve yükseklik, PIP penceresi için minimum 240 dp genişlik ve 135 dp yükseklik AYIRTMALIDIR

3.9. Cihaz Yönetimi

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

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

  • [C-1-1] android.software.device_admin beyan EDİLMELİDİR.
  • [C-1-2] 3.9.1 numaralı bölümde ve 3.9.1.1 numaralı bölümde açıklandığı şekilde cihaz sahibi temel hazırlığını desteklemelidir.
  • [C-1-3] Cihaz, kendisini düşük RAM'e sahip bir cihaz olarak bildirecek veya dahili (çıkarılamaz) depolama alanını paylaşılan depolama alanı olarak ayıracak şekilde yapılandırılmadığı sürece, yönetilen profillerin desteğini android.software.managed_users özellik işareti aracılığıyla BEYAN ETMELİDİR.

3.9.1 Cihaz Temel Hazırlığı

3.9.1.1 Cihaz sahibi temel hazırlığı

Cihaz uygulamaları android.software.device_admin bildirirse:

  • [C-1-1] Cihaz Politikası İstemcisinin (DPC) aşağıda açıklandığı şekilde Cihaz Sahibi uygulaması olarak kaydedilmesini desteklemelidir:
  • [C-1-2] Kullanıcının veya cihazın yöneticisinin açık izni ya da işlemi olmadan bir uygulamayı (önceden yüklenmiş uygulama dahil) Cihaz Sahibi uygulaması olarak AYARLAMAMALIDIR.

Cihaz uygulamaları android.software.device_admin değerini belirtiyorsa ancak özel bir cihaz sahibi yönetim çözümü de içeriyorsa ve çözümlerinde yapılandırılmış bir uygulamayı standart Android DevicePolicyManager API'leri tarafından tanınan standart "cihaz sahibi"nin "cihaz sahibi eşdeğeri" olarak tanıtımını yapacak bir mekanizma sağlıyorsa:

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

Cihaz uygulamaları android.software.managed_users bildirirse:

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

  • [C-1-2] Yönetilen profil sağlama işlemi (android.app.action.PROVISION_MANAGED_PROFILE tarafından başlatılan akış) kullanıcı deneyimi AOSP uygulamasıyla uyumlu OLMALIDIR.

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

    • Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya başka bir kullanıcı özelliği (ör. yayın öncesi AOSP bilgi simgesi).
    • Cihaz yöneticisi tarafından setShortSupportMessage üzerinden sağlanan kısa bir açıklama mesajı.
    • DPC uygulamasının simgesi.

3.9.2 Yönetilen Profil Desteği

Cihaz uygulamaları android.software.managed_users bildirirse:

  • [C-1-1] android.app.admin.DevicePolicyManager API'leri aracılığıyla yönetilen profilleri DESTEKLEMELİDİR.
  • [C-1-2] Yalnızca bir yönetilen profilin oluşturulmasına izin VERMELİDİR.
  • [C-1-3] Yönetilen uygulamaları, widget'ları ve Son Aramalar ve Bildirimler gibi rozetli diğer kullanıcı arayüzü öğelerini temsil etmek için bir simge rozeti (AOSP yayın öncesi çalışma rozetine benzer) KULLANMALIDIR.
  • [C-1-4] Kullanıcının yönetilen profil uygulamasında olduğunu belirtmek için bir bildirim simgesi (AOSP yayın öncesi iş rozetine benzer) GÖSTERMELİDİR.
  • [C-1-5] Cihaz açıldığında (ACTION_USER_PRESENT) ve ön plan uygulaması yönetilen profildeyse kullanıcının yönetilen profilde olduğunu belirten bir pop-up GÖSTERMELİDİR.
  • [C-1-6] Yönetilen profilin bulunduğu durumlarda, kullanıcının cihaz politikası denetleyicisi tarafından etkinleştirildiyse intent'i yönetilen profilden birincil kullanıcıya veya tam tersi şekilde yönlendirmesine izin vermek için intent "seçicisinde" görsel bir kolaylık gösterilmelidir.
  • [C-1-7] Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı özelliklerini GÖSTERMELİDİR:
    • Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması.
    • Birincil kullanıcı veya yönetilen profilde yüklü VPN uygulamalarının bağımsız yönetimi.
    • Birincil kullanıcı veya yönetilen profilde yüklü uygulamaların bağımsız yönetimi.
    • Birincil kullanıcı veya yönetilen profildeki hesapların bağımsız yönetimi.
  • [C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş numara çevirici, kişiler ve mesajlaşma uygulamalarının, birincil profildekilerin yanı sıra yönetilen profildeki (varsa) arayan bilgilerini aramasına ve bilmesine 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 etkin olduğu cihazlar için geçerli tüm güvenlik şartlarını karşılamalıdır (9.5 numaralı bölüme bakın).
  • [C-1-10] Yönetilen bir profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı belirtme özelliğiNİ DESTEKLEMELİDİR.
    • Cihaz uygulamalarında DevicePolicyManager.ACTION_SET_NEW_PASSWORD intent'i dikkate alınmalı ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmaya yönelik bir arayüz gösterilmelidir.
    • Yönetilen profilin kilit ekranı kimlik bilgileri, Android Açık Kaynak Projesi Sitesi'nde belirtildiği gibi üst profille aynı kimlik bilgisi depolama ve yönetim mekanizmalarını KULLANMAK ZORUNDADIR.
    • getParentProfileInstance tarafından döndürülen DevicePolicyManager örneği çağrılmadığı sürece DPC şifre politikaları yalnızca yönetilen profilin kilit ekranı kimlik bilgileri için UYGULANMALIDIR.
  • Yönetilen profildeki kişiler, önceden yüklenmiş arama günlüğünde, arama içi kullanıcı arayüzünde, devam eden ve kaçırılan arama bildirimlerinde, kişi ve mesajlaşma uygulamalarında gösterildiğinde yönetilen profil uygulamalarını belirtmek için kullanılan rozetle işaretlenmelidir.

3.10. Erişilebilirlik

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

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

  • [C-1-1] Accessibility API'leri SDK dokümanlarında açıklandığı şekilde Android erişilebilirlik çerçevesinin bir uygulamasını SAĞLAMALIDIR.
  • [C-1-2] Erişilebilirlik etkinlikleri oluşturmalı ve SDK'da belirtildiği gibi kayıtlı tüm AccessibilityService uygulamalarına uygun AccessibilityEvent göndermelidir.
  • [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ının erişebileceği bir mekanizma sağlama android.settings.ACCESSIBILITY_SETTINGS amacına UYGUN OLMALIDIR.
  • [C-1-4] Etkin erişilebilirlik hizmetleri AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON bildirdiğinde kullanıcının erişilebilirlik hizmetini kontrol etmesine olanak tanıyan bir düğme sistem gezinme çubuğuna EKLENMELİDİR . Sistem gezinme çubuğu olmayan cihaz uygulamalarında bu şartın geçerli olmadığını, ancak cihaz uygulamalarının bu erişilebilirlik hizmetlerini kontrol etmek için kullanıcılara bir kolaylık sunması gerektiğini unutmayın.

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

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

3.11. Metin Okuma

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

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

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

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

3.12. TV Girişi Çerçevesi

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

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [C-1-1] android.software.live_tv platform özelliğini İLKLE bildirmelidir.
  • [C-1-2] Bir TV uygulaması (TV uygulaması) önceden yüklemeli ve 3.12.1 numaralı bölümde açıklanan tüm koşulları karşılamalıdır.

3.12.1. TV uygulaması

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [C-1-1] TV uygulaması, TV kanallarını yükleme ve kullanma olanağı sunmalı ve aşağıdaki şartları karşılamalıdır:

android.software.live_tv özellik işaretini bildiren Android cihaz uygulamaları için gerekli olan TV uygulaması aşağıdaki koşulları KESİNLİKLE karşılamalıdır:

  • Cihaz uygulamalarında, üçüncü taraf TIF tabanlı girişlerin (üçüncü taraf girişleri) yüklenmesi ve yönetilmesine izin 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ÖSTERİLMEMELİDİR (ör. TV uygulamasından üçüncü taraf girişlerinin listesini genişletmek).

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

3.12.1.1. Elektronik Program Rehberi

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [C-1-1] TvContract.Programs alanlarındaki değerlerden oluşturulan bir elektronik program rehberi (EPG) içermesi gereken bilgilendirici ve etkileşimli bir yer paylaşımı GÖSTERMELİDİR.
  • [C-1-2] Kanal değişikliğinde, cihaz uygulamaları OYNATILAN PROGRAMIN EPG verilerini GÖSTERMELİDİR.
  • [SR] Yüklü girişlerin ve üçüncü taraf girişlerinin eşit derecede belirgin şekilde gösterilmesi için EPG'nin KUVVETLE ÖNERİLİR. EPG, üçüncü taraf girişlerini EPG'de yüklü girişlerden tek bir gezinme işleminden daha uzakta GÖSTERMEMELİDİR.
  • EPG, tüm yüklü girişlerden ve üçüncü taraf girişlerinden gelen bilgileri GÖSTERMELİDİR.
  • EPG, yüklü 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ındaki (ör. uzaktan kumanda, uzaktan kumanda uygulaması veya oyun kumandası) D-pad, Geri ve Ana Sayfa tuşları aracılığıyla aşağıdaki işlevler için gezinmeye İZİN VERMELİDİR:

    • TV kanallarını değiştirme
    • EPG'yi açma
    • Üçüncü taraf TIF tabanlı girişleri yapılandırma ve bunlara göre ayarlama yapma (bu girişler destekleniyorsa)
    • Ayarlar menüsünü açma
  • Önemli etkinlikleri CEC üzerinden HDMI girişlerine İLETMELİDİR.

3.12.1.3. TV girişi uygulaması bağlama

Android Television cihaz uygulamalarında TV giriş uygulaması bağlama özelliği desteklenmelidir.Bu özellik, tüm girişlerin mevcut etkinlikten başka bir etkinliğe etkinlik bağlantıları (ör. canlı programdan ilgili içeriğe bağlantı) sağlamasına olanak tanır. TV uygulaması, sağlandığında TV giriş uygulaması bağlantısını GÖSTERMELİ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ırma özelliğinin desteklenmesi önemle ÖNERİLİR.
  • İlgili programda zaman kaydırma mümkünse kullanıcıya, oynatılan programı duraklatma ve devam ettirme seçeneği SUNULMALIDIR.
3.12.1.5. TV kaydı

Cihaz uygulamaları TIF'yi destekliyorsa:

  • [SR] TV kaydını desteklemek için ÇOK ÖNEMLİ.
  • TV girişi kayıt işlemini destekliyorsa ve program kaydetme işlemi yasaklanmış değilse EPG, program kaydetme seçeneği sunabilir.

3.13. Hızlı Ayarlar

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

Cihaz uygulamalarında Hızlı Ayarlar kullanıcı arayüzü bileşeni varsa:

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

3.14. Medya kullanıcı arayüzü

Cihaz uygulamaları , MediaBrowser ve MediaSession'e dayalı üçüncü taraf uygulamaları destekleyen kullanıcı arayüzü çerçevesini içeriyorsa:

3.15. Hazır Uygulamalar

Cihaz uygulamaları aşağıdaki koşulları karşılamalıdır:

  • [C-0-1] Anında Uygulamalara yalnızca android:protectionLevel değeri "ephemeral" olan izinler VERİLMELİDİR.
  • [C-0-2] Aşağıdakilerden biri geçerli olmadığı sürece hazır uygulamalar, örtülü intent'ler aracılığıyla yüklü uygulamalarla etkileşimde BULUNMAMALIDIR:
    • Bileşenin intent kalıbı filtresi gösterilir ve CATEGORY_BROWSABLE özelliğine sahiptir
    • İşlem, ACTION_SEND, ACTION_SENDTO, ACTION_SEND_MULTIPLE seçeneklerinden biri olmalıdır.
    • Hedef, android:visibleToInstantApps ile açıkça gösteriliyor
  • [C-0-3] Bileşen, android:visibleToInstantApps aracılığıyla gösterilmediği sürece Hazır Uygulamalar, yüklü uygulamalarla açıkça etkileşime GİRMEMELİDİR.
  • [C-0-4] Yüklü Uygulamalar, Hazır Uygulama yüklü uygulamaya açıkça bağlanmadığı sürece cihazdaki Hazır Uygulamalarla ilgili ayrıntıları GÖREMEZ.

3.16. Tamamlayıcı Cihaz Eşleme

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

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

  • [C-1-1] Özellik bayrağı FEATURE_COMPANION_DEVICE_SETUP İSTENİR .
  • [C-1-2] android.companion paketindeki API'lerin tam olarak uygulandığından EMİN OLMALIDIR.
  • [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ı özelliklerini ZORUNLU KILIN.

4. Uygulama Paketleme Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] Resmi Android SDK'sına dahil olan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarını yükleyip çalıştırabilmelidir.
  • Yukarıdaki şart zor olabileceğinden, cihaz uygulamalarının AOSP referans uygulamasının paket yönetimi sistemini kullanması ÖNERİLİR.
  • [C-0-2] APK İmza Şeması v2 ve JAR imzalama kullanılarak ".apk" dosyalarının doğrulanmasını DESTEKLEMELİDİR.
  • [C-0-3] .apk, Android Manifest, Dalvik bayt kodu veya RenderScript bayt kodu biçimlerini, bu dosyaların diğer uyumlu cihazlarda düzgün şekilde yüklenmesini ve çalışmasını engelleyecek şekilde UZATMASI GEREKMEZ.
  • [C-0-4] DELETE_PACKAGE izni için SDK'da belirtildiği gibi, paketin mevcut "kayıtlı yükleyicisi" dışındaki uygulamaların uygulamayı herhangi bir istem göstermeden sessizce kaldırmasına İZİN VERMEMELİDİR. Bunun tek istisnası, PACKAGE_NEEDS_VERIFICATION intent'ini işleyen sistem paket doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE intent'ini işleyen depolama alanı yöneticisi uygulamasıdır.

Yüklemeyi isteyen uygulama aşağıdaki tüm koşulları karşılamadığı sürece cihaz uygulamaları, bilinmeyen kaynaklardan uygulama paketleri YÜKLEMEMELİDİR:

  • REQUEST_INSTALL_PACKAGES iznini beyan ETMESİ veya android:targetSdkVersion değerinin 24 veya daha düşük bir değere ayarlanmış olması GEREKİR.
  • Kullanıcı tarafından bilinmeyen kaynaklardan uygulama yükleme izni VERİLMİŞ OLMALIDIR.

Cihaz uygulamalarında android.settings.MANAGE_UNKNOWN_APP_SOURCES intent'ini işleyen bir işlem OLMALIDIR. Uygulama başına bilinmeyen kaynaklardan uygulama yükleme iznini verme/iptal etme seçeneği sunmaları GEREKİR ancak cihaz uygulaması kullanıcıların bu seçeneği kullanmasına izin vermek istemiyorsa bunu işlemsiz olarak uygulamayı ve startActivityForResult() için RESULT_CANCELED döndürmeyi SEÇEBİLİR. Ancak bu gibi durumlarda bile kullanıcıya neden böyle bir seçenek sunulmadığını belirtmelidir.

5. Multimedya Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] MediaCodecList tarafından beyan edilen her codec için bölüm 5.1'de tanımlanan medya biçimlerini, kodlayıcıları, kod çözücüleri, dosya türlerini ve kapsayıcı biçimlerini DESTEKLEMELİDİR.
  • [C-0-2] Üçüncü taraf uygulamaları tarafından kullanılabilen kodlayıcılar ve kod çözücüler için MediaCodecList aracılığıyla destek beyan ETMEK VE RAPORLAMAK ZORUNLUDUR.
  • [C-0-3] Kodlayabileceği tüm biçimlerin kodunu çözebilmeli ve üçüncü taraf uygulamalarına sunabilmelidir. Buna, kodlayıcılarının oluşturduğu tüm bit akışları ve CamcorderProfile'da raporlanan profiller dahildir.

Cihaz uygulamaları:

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

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

Google veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerinden arındırılmış olduğuna dair herhangi bir beyanda bulunmadığını lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya ücretsiz yazılım da dahil olmak üzere bu kodun uygulanabilmesi için ilgili patent sahiplerinden patent lisansları almaları gerekebileceğini göz önünde bulundurmaları önerilir.

5.1. Medya codec'leri

5.1.1. Ses Kodlaması

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

Cihaz uygulamaları android.hardware.microphone değerini belirtiyorsa aşağıdaki ses kodlamasını DESTEKLEMELİDİR:

  • [C-1-1] PCM/WAVE

5.1.2. Ses Kod Çözme

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

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

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

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

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

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

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ındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
  • ADTS ham AAC (.aac, ADIF desteklenmez)
  • MPEG-TS (.ts, atlanabilir değildir)
MPEG-4 HE AAC Profili (AAC+) 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
MPEG-4 HE AACv2
Profili (geliştirilmiş AAC+)
16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği.
AAC ELD (gelişmiş düşük gecikmeli AAC) 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerikler desteklenir.
AMR-NB 8 kHz'te örneklenmiş 4,75 ila 12,2 Kb/sn 3GPP (.3gp)
AMR-WB 16 kHz'te örneklenen 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız
FLAC Mono/stereo (çok kanallı değil). 48 kHz'e kadar örnek hızları (ancak 48 ila 44,1 kHz azaltıcı düşük geçiş filtresi içermediğinden, 44,1 kHz çıkışlı cihazlarda 44,1 kHz'e kadar örnek hızları ÖNERİLİR). 16 bit ÖNERİLİR; 24 bit için dithering uygulanmaz. Yalnızca FLAC (.flac)
MP3 Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR) MP3 (.mp3)
MIDI MIDI Türü 0 ve 1. DLS 1 ve 2 sürümü. XMF ve Mobil XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek
  • 0 ve 1 türü (.mid, .xmf, .mxmf)
  • RTTTL/RTX (.rtttl, .rtx)
  • OTA (.ota)
  • iMelody (.imy)
Vorbis
  • Ogg (.ogg)
  • Matroska (.mkv, Android 4.0+)
PCM/WAVE 16 bit doğrusal PCM (donanım sınırına kadar hız). Cihazlar, 8000, 11025, 16000 ve 44100 Hz frekanslarında ham PCM kaydı için örnekleme hızlarını DESTEKLEMELİDİR. WAVE (.wav)
Opus Matroska (.mkv), Ogg(.ogg)

5.1.4. Resim Kodlaması

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

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

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

5.1.5. Resim Kodu Çözme

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

Cihaz uygulamaları aşağıdaki resim kod çözme işlemlerini kodlamayı DESTEKLEMELİDİR:

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

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

Biçim/Codec Ayrıntılar Desteklenen dosya türleri/kapsayıcı biçimleri
JPEG Taban+aşamalı JPEG (.jpg)
GIF GIF (.gif)
PNG PNG (.png)
BMP BMP (.bmp)
WebP WebP (.webp)
İşlenmemiş ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw)

5.1.7. Video codec'leri

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

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

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

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

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

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

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

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

5.1.8. Video codec'leri listesi

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

5.2. Video Kodlama

Cihaz uygulamaları herhangi bir video kodlayıcıyı destekliyorsa ve üçüncü taraf uygulamalarına sunuluyorsa:

  • İki kaydırmalı pencerede, kare içi (I karesi) aralıkları arasındaki bit hızından yaklaşık% 15 daha yüksek OLMAMALIDIR.
  • 1 saniyelik hareketli bir pencerede bit hızının yaklaşık% 100'ünden fazla olmamalıdır.

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

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

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

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

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

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

5.2.1. H.263

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

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

5.2.2. H-264

Cihaz uygulamaları H.264 codec'ini destekliyorsa:

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

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

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

5.2.3. VP8

Cihaz uygulamaları VP8 codec'ini destekliyorsa:

  • [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
  • Aşağıdaki HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
  • Matroska WebM dosyası yazma özelliğini DESTEKLEMELİDİR.
  • Web video akışının ve video konferans hizmetlerinin kabul edilebilir kalitede olmasını sağlamak için WebM projesi RTC donanım kodlama koşullarını karşılayan bir donanım VP8 codec'i KULLANMALIDIR.

Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için VP8 kodlamanın desteklendiğini bildirirse:

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

5.2.4. VP9

Cihaz uygulamaları VP9 codec'ini destekliyorsa:

  • Matroska WebM dosyası yazma özelliğini DESTEKLEMELİDİR.

5.3. Video kod çözme

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

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

Cihaz uygulamaları , HDR_TYPE_DOLBY_VISION aracılığıyla Dolby Vision kod çözücü desteğini belirtiyorsa:

  • [C-2-1] Dolby Vision uyumlu bir çıkarıcı sağlanmalıdır.
  • [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) parça dizini, birleştirilmiş Dolby Vision katmanının parça dizini ile aynı olacak şekilde AYARLANMALIDIR.

5.3.1. MPEG-2

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

  • [C-1-1] Ana Profil Üst Düzey'i desteklemelidir.

5.3.2. H.263

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

  • [C-1-1] Temel Profil 30. ve 45. seviyelerini desteklemelidir.

5.3.3. MPEG-4

MPEG-4 kod çözücüleri olan cihaz uygulamaları:

  • [C-1-1] Basit Profil 3. Seviyesi desteklenmelidir.

5.3.4. H.264

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

  • [C-1-1] Ana Profil 3.1 Seviyesi ve Temel Profil desteklenmelidir. ASO (Arızi Dilimli Sıralama), FMO (Esnek Makro Blok Sıralama) ve RS (Yedek Dilimler) desteği İSTİĞE BAĞLIDIR.
  • [C-1-2] Aşağıdaki tabloda listelenen ve Temel Profil ile Ana Profil Seviye 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlük) profillerine sahip videoların kodunu çözebilmelidir.
  • Aşağıdaki tabloda belirtilen HD (Yüksek Çözünürlük) profilleriyle videoların kodunu çözebilmelidir.

Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik, video çözünürlüğüne eşit veya video çözünürlüğünden büyükse 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'ini destekliyorsa:

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

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

  • [C-2-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin H.265 veya VP9 kod çözme işlemlerinden en az birini DESTEKLEMELİDİR.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p UHD
Video çözünürlüğü 352 x 288 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel 3.840 x 2.160 piksel
Video kare hızı 30 fps 30 fps 30 fps 30/60 fps (H.265 donanım kod çözme özelliğine sahip 60 fps televizyon) 60 fps
Video bit hızı 600 Kb/sn 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

5.3.6. VP8

Cihaz uygulamaları VP8 codec'ini destekliyorsa:

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

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

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

5.3.7. VP9

Cihaz uygulamaları VP9 codec'ini destekliyorsa:

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

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

  • [C-2-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 video çözünürlüğünden büyükse:

  • [C-3-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin VP9 veya H.265 kod çözme işlemlerinden en az birini desteklemelidir.
SD (Düşük kalite) SD (Yüksek kalite) HD 720p HD 1080p UHD
Video çözünürlüğü 320 x 180 piksel 640 x 360 piksel 1280 x 720 piksel 1920 x 1080 piksel 3.840 x 2.160 piksel
Video kare hızı 30 fps 30 fps 30 fps 30 fps (60 fpsVP9 donanım kod çözme özelliğine sahip televizyonlar) 60 fps
Video bit hızı 600 Kb/sn 1,6 Mb/sn 4 Mb/sn 5 Mb/sn 20 Mb/sn

5.4. Ses Kaydetme

Bu bölümde belirtilen şartlardan bazıları Android 4.3'ten beri "OLMALI" olarak listelenirken gelecek sürümlerin Uyumluluk Tanımı'nda bu şartlar "OLMALIDIR" olarak değiştirilmesi planlanmaktadır. Mevcut ve yeni Android cihazların, "OLMALI" olarak listelenen bu koşulları karşılaması ŞİDDETLE ÖNERİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiğinde Android uyumluluğu elde edemezler.

5.4.1. Ham Ses Kaydı

Cihaz uygulamaları android.hardware.microphone bildirirse:

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

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

  • Örnekleme hızları: 8000, 11025, 16000, 44.100 Hz
  • Kanallar: Mono

  • [C-1-2] Yukarı örnekleme olmadan yukarıdaki örnek hızlarında KAYDETMELİDİR.

  • [C-1-3] Yukarıda verilen örnekleme hızları, azaltılmış örneklemeyle yakalandığında uygun bir kenar yumuşatma filtresi DAHİL EDİLMELİDİR.
  • Ham ses içeriğinin AM radyo ve DVD kalitesinde yakalanmasına izin VERMELİDİR. Bu, aşağıdaki özellikleri ifade eder:

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

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

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 yapmadan KAYDETMELİDİR.
  • [C-2-2] Yukarı veya aşağı örnekleme için uygun bir kenar yumuşatma filtresi DAHİL EDİLMELİDİR.

5.4.2. Ses Tanıma için Kayıt

Cihaz uygulamaları android.hardware.microphone bildirirse:

  • [C-1-1] android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION ses kaynağını 44.100 ve 48.000 örnekleme hızlarından birinde KAYDETMELİDİR.
  • [C-1-2] AudioSource.VOICE_RECOGNITION ses kaynağından ses akışı kaydederken varsayılan olarak tüm gürültü azaltma ses işlemeyi devre dışı bırakmalıdır.
  • [C-1-3] AudioSource.VOICE_RECOGNITION ses kaynağından ses akışı kaydederken varsayılan olarak tüm otomatik kazanç kontrollerini devre dışı bırakmalıdır.
  • Ses tanıma ses akışını, yaklaşık olarak düz bir genlik ve frekans özelliğiyle kaydetmelidir: Özellikle 100 Hz ile 4.000 Hz arasında ±3 dB.
  • Ses tanıma ses akışını, giriş hassasiyeti 1000 Hz'de 90 dB ses gücü seviyesi (SPL) kaynağı 16 bit örnekler için 2500 RMS olacak şekilde ayarlanmış şekilde KAYDETMELİDİR.
  • PCM genlik seviyelerinin, mikrofondaki 90 dB SPL'ye göre -18 dB ile +12 dB arasında en az 30 dB aralığındaki giriş SPL değişikliklerini doğrusal olarak izleyeceği şekilde ses tanıma ses akışını KAYDETMELİDİR.
  • Ses tanıma ses akışını, mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için toplam harmonik bozulma (THD) %1'den az olacak şekilde KAYDETMELİDİR.

Cihaz uygulamaları, ses tanıma için ayarlanmış android.hardware.microphone ve gürültü azaltma teknolojilerini belirtiyorsa:

  • [C-2-1] Bu ses efektinin android.media.audiofx.NoiseSuppressor API ile kontrol edilebilir olmasına İZİN VERİLMELİDİR.
  • [C-2-2] AudioEffect.Descriptor.uuid alanı aracılığıyla her gürültü azaltma teknolojisi uygulamasını benzersiz şekilde tanımlamalıdır.

5.4.3. Oynatma işlemini yeniden yönlendirmek için yakalama

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

Cihaz uygulamaları hem android.hardware.audio.output hem de android.hardware.microphone bildirirse:

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

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

5.5. Ses Çalma

Android, 7.8.2 numaralı bölümde tanımlandığı üzere uygulamaların ses çıkışı çevre birimi üzerinden ses oynatmasına izin veren desteği içerir.

5.5.1. Ham Ses Oynatma

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

  • [C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına izin VERMELİDİR:

    • Biçim: Doğrusal PCM, 16 bit
    • Örnekleme hızları: 8000, 11025, 16000, 22050, 32000, 44100
    • Kanallar: Mono, Stereo
  • Aşağıdaki özelliklere sahip ham ses içeriklerinin oynatılmasına İZİN VERİLMELİDİR:

    • Örnekleme hızları: 24000, 48000

5.5.2. Ses Efektleri

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

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

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

5.5.3. Ses Çıkışı Ses Seviyesi

Otomotiv cihaz uygulamaları:

  • AudioAttributes tarafından tanımlanan içerik türü veya kullanım ve android.car.CarAudioManager'de herkese açık olarak tanımlanan araç ses kullanımı kullanılarak ses hacminin her ses akışı için ayrı ayrı ayarlanmasına İZİN VERİLMELİDİR.

5.6. Ses gecikmesi

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

Bu bölümde aşağıdaki tanımlar kullanılmaktadır:

  • output latency. Bir uygulamanın PCM kodlu veri çerçevesi yazması ile ilgili sesin cihaz üzerindeki bir dönüştürücüde çevreye sunulması veya sinyalin bir bağlantı noktası üzerinden cihazdan çıkması ve harici olarak gözlemlenebilmesi arasındaki aralık.
  • Soğuk çıkış gecikmesi. Ses çıkış sistemi istek öncesinde boşta ve kapalıyken ilk karenin çı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 üzerindeki bir dönüştürücüde cihaza sunulması veya sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın ilgili PCM kodlu veri çerçevesini okuması arasındaki aralık.
  • Giriş kaybı. Giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.
  • Soğuk giriş gecikmesi. Ses giriş sistemi istek öncesinde boşta ve kapalıyken, kaybedilen giriş süresinin ve ilk karenin giriş gecikmesinin toplamı.
  • sürekli giriş gecikmesi. Cihaz ses kaydederken sonraki kareler için giriş gecikmesi.
  • Soğuk çıkış jitter'i. Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
  • Soğuk giriş jitter'i. Soğuk giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
  • sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesi artı sürekli çıkış gecikmesi artı bir arabellek döneminin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için zaman tanır.
  • OpenSL ES PCM arabellek sırası API'si. Android NDK'daki PCM ile ilgili OpenSL ES API'leri grubu.
  • AAudio doğal ses API'si. Android NDK'daki AAudio API'leri grubu.

Cihaz uygulamaları android.hardware.audio.output değerini belirtiyorsa aşağıdaki şartları karşılamaları veya aşmaları önemle ÖNERİLİR:

  • [SR] 100 milisaniye veya daha az soğuk çıkış gecikmesi
  • [SR] 45 milisaniye veya daha az sürekli çıkış gecikmesi
  • [SR] Soğuk çıkış jitter'ini en aza indirme

OpenSL ES PCM arabellek sırası API'si kullanılırken cihaz uygulamaları, ilk kalibrasyondan sonra yukarıdaki koşulları karşılıyorsa en az bir desteklenen ses çıkış cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için aşağıdakiler geçerlidir:

  • [SR] android.hardware.audio.low_latency özellik işaretini bildirerek düşük gecikmeli sesi bildirmeniz önemle ÖNERİLİR.
  • [SR] AAudio API aracılığıyla düşük gecikmeli sesle ilgili gereksinimleri de karşılamanız önemle ÖNERİLİR.

Cihaz uygulamaları, OpenSL ES PCM arabellek sırası API'si aracılığıyla düşük gecikmeli sesle ilgili koşulları karşılamıyorsa:

  • [C-1-1] Düşük gecikmeli ses desteğini bildirmemelidir.

Cihaz uygulamalarında android.hardware.microphone varsa aşağıdaki giriş ses koşullarını karşılamaları önemle ÖNERİLİR:

  • [SR] 100 milisaniye veya daha az soğuk giriş gecikmesi
  • [SR] 30 milisaniye veya daha az sürekli giriş gecikmesi
  • [SR] 50 milisaniye veya daha az sürekli gidiş dönüş gecikmesi
  • [SR] Soğuk giriş jitter'ini en aza indirme

5.7. Ağ Protokolleri

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

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

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

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

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

Medya Segmenti Biçimleri

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

Ses codec'leri:

  • AAC
AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın.
ADTS çerçeveleme ve ID3 etiketleri içeren AAC ISO 13818-7 AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın.
WebVTT WebVTT

RTSP (RTP, SDP)

Profil adı Referanslar Gerekli codec desteği
H264 AVC RFC 6184 H264 AVC ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın.
MP4A-LATM RFC 6416 AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın.
H263-1998 RFC 3551
RFC 4629
RFC 2190
H263 ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın.
H263-2000 RFC 4629 H263 ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın.
AMR RFC 4867 AMR-NB ile ilgili ayrıntılar için 5.1.1 numaralı bölüme bakın.
AMR-WB RFC 4867 AMR-WB hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın.
MP4V-ES RFC 6416 MPEG-4 SP ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın.
mpeg4-generic RFC 3640 AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın.
MP2T RFC 2250 Ayrıntılar için HTTP Canlı Akış'ın altındaki MPEG-2 Taşıma Akışı bölümüne bakın.

5.8. Secure Media

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

  • [C-1-1] Display.FLAG_SECURE için destek beyan ETMEK ZORUNLUDUR.

Cihaz uygulamaları Display.FLAG_SECURE desteğini ve kablosuz ekran protokolünü destekliyorsa:

  • [C-2-1] Miracast gibi kablosuz protokoller üzerinden bağlı ekranlar için bağlantıyı HDCP 2.x veya daha yeni bir sürüm gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİKLEŞTİRMELİDİR.

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

  • [C-3-1] Tüm kablolu harici ekranlar için HDCP 1.2 veya daha yeni sürümleri DESTEKLEMELİDİR.

5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)

Cihaz uygulamaları, android.software.midi özelliği için desteği android.content.pm.PackageManager sınıfı üzerinden bildirirse:

  • [C-1-1] MIDI olmayan genel bağlantılar sağladıkları tüm MIDI özellikli donanım aktarımlarında MIDI'yi desteklemelidir. Bu tür aktarımlar:

  • [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.hardware.audio.pro özelliği için desteği android.content.pm.PackageManager sınıfı aracılığıyla bildirirse:

  • [C-1-1] android.hardware.audio.low_latency özelliği için destek bildirmelidir.
  • [C-1-2] 5.6 Ses Gecikmesi bölümünde tanımlandığı gibi sürekli gidiş dönüş ses gecikmesi OLMALIDIR, 20 milisaniye veya daha az OLMALIDIR ve en az bir desteklenen yolda 10 milisaniye veya daha az OLMALIDIR.
  • [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen USB bağlantı noktaları ZORUNLUDUR.
  • [C-1-4] android.software.midi özelliği için destek bildirmelidir.
  • [C-1-5] OpenSL ES PCM arabellek sırası API'sini kullanarak gecikmeleri ve USB ses şartlarını karşılamalıdır.
  • [SR] Ses etkinken ve CPU yükü değişirken tutarlı bir CPU performansı sağlamak için ÇOK ÖNEMLE ÖNERİLİR. Bu, SimpleSynth 1bd6391 commit'i kullanılarak test edilmelidir. SimpleSynth uygulamasının aşağıdaki parametrelerle çalıştırılması ve 10 dakika sonra sıfır eksik çalışma elde etmesi gerekir:
    • Çalışma döngüsü: 200.000
    • Değişken yük: AÇIK (bu seçenek, 2 saniyede bir iş döngüsü değerinin% 100'ü ile% 10'u arasında geçiş yapar ve CPU denetleyicisinin davranışını test etmek için tasarlanmıştır)
    • Sabitlenmiş yük: KAPALI
  • Sesli saatin hatalı çalışmasını ve standart saate göre kaymasını en aza indirmelidir.
  • Her ikisi de etkinken ses saati kaymasını CPU'ya göre en aza indirmelidir CLOCK_MONOTONIC.
  • Cihaz üzerindeki dönüştürücüler üzerinden ses gecikmesini en aza indirmelidir.
  • USB dijital ses üzerinden ses gecikmesini en aza indirmelidir.
  • Tüm yollardaki ses gecikmesi ölçümlerini belgelemelidir.
  • Bu, geri aramanın tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediği için ses arabelleğinin tamamlanması geri arama giriş zamanlarında gecikmeyi en aza indirmelidir.
  • Bildirilen gecikmede normal kullanımda sıfır ses eksikliği (çıkış) veya aşma (giriş) sağlamalıdır.
  • Kanallar arası gecikme farkı sıfır OLMALIDIR.
  • Tüm aktarımlarda MIDI ortalama gecikmesini en aza indirmelidir.
  • Tüm aktarımlarda yük altında MIDI gecikmesi değişkenliğini (jitter) en aza indirmelidir.
  • Tüm aktarımlarda doğru MIDI zaman damgaları SAĞLANMALIDIR.
  • Soğuk başlatmadan hemen sonraki dönem de dahil olmak üzere cihaz üzerindeki dönüştürücülerde ses sinyali gürültüsünü en aza indirmelidir.
  • Her ikisi de etkinken ilgili uç noktaların giriş ve çıkış tarafları arasında sıfır ses saati farkı SAĞLAMALIDIR. İlgili uç noktalara örnek olarak cihaz üzerindeki mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.
  • Her ikisi de etkinken aynı iş parçacığındaki ilgili uç noktaların giriş ve çıkış tarafları için ses arabelleği tamamlama geri çağırma işlevlerini İŞLEMELİDİR ve giriş geri çağırma işlevinden döndükten hemen sonra çıkış geri çağırma işlevine girmelidir. Yada geri çağırmaların aynı iş parçacığında işlenmesi mümkün değilse uygulamanın giriş ve çıkış taraflarında tutarlı bir zamanlamaya sahip olması için giriş geri çağırma işlevini girdikten kısa bir süre sonra çıkış geri çağırma işlevini girin.
  • İlgili uç noktaların giriş ve çıkış tarafları için HAL ses arabelleği arasındaki faz farkını en aza indirmelidir.
  • Dokunma gecikmesini en aza indirmelidir.
  • Yük altında dokunma gecikmesi değişkenliğini (jitter) en aza indirmelidir.

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

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

  • [SR] Aynı şartları AAudio API üzerinden de karşılamanız önemle ÖNERİLİR.

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

Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı atlanmışsa ve USB ana makine modunu destekleyen USB bağlantı noktaları eklenmişse:

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

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

  • [C-4-1] Bit derinliği kaybı veya yeniden örnekleme olmadan 20 bit veya 24 bit derinlikte ve 192 kHz'te stereo ve sekiz kanalda çıkış desteklenmelidir.

5.11. İşlenmemiş için yakalama

Android, android.media.MediaRecorder.AudioSource.UNPROCESSED ses kaynağı aracılığıyla işlenmemiş ses kaydı için destek içerir. OpenSL ES'de, SL_ANDROID_RECORDING_PRESET_UNPROCESSED kayıt hazır ayarı ile erişilebilir.

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

  • [C-1-1] Desteği android.media.AudioManager mülkü PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED aracılığıyla bildirmelidir.

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

  • [C-1-3] İşlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofonun orta frekans aralığına kıyasla düşük frekans aralığındaki genlik seviyelerini GÖSTERMELİDİR: Özellikle 5 Hz ile 100 Hz arasında ±20 dB.

  • [C-1-4] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla yüksek frekans aralığındaki genlik seviyelerini GÖSTERMELİDİR: Özellikle 7.000 Hz ile 22 KHz arasında ±30 dB.

  • [C-1-5] Ses girişi hassasiyeti, işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonda 94 dB ses basıncı düzeyinde (SPL) çalınan 1000 Hz sinüs dalga kaynağının 16 bitlik örnekler için 520 RMS (veya kayan nokta/çift hassasiyetli örnekler için -36 dB tam ölçek) yanıt vereceği şekilde AYARLANMALIDIR.

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

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

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

  • [C-1-8] Mimaride herhangi bir nedenle sinyal işleme varsa devre dışı bırakılmalı ve sinyal yoluna etkili bir şekilde sıfır gecikme veya ek gecikme eklenmelidir.
  • [C-1-9] Seviye çarpanı, yolda olmasına izin verilirken sinyal yolunda gecikme veya gecikmeli veri girişi OLMAMALIDIR.

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

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

  • [C-2-1] Destek eksikliğini doğru şekilde belirtmek için AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED) API yöntemi için null döndürülmelidir.
  • [SR], işlenmemiş kayıt kaynağının sinyal yolu ile ilgili koşulların çoğunu karşılamak için yine de önemle ÖNERİLİR.

6. Geliştirici Araçları ve Seçenekleri 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] dumpsys dahil olmak üzere Android SDK'sında belirtildiği şekilde tüm adb işlevlerini DESTEKLEMELİDİR.
    • [C-0-3] dumpsys aracılığıyla kaydedilen cihaz sistemi etkinliklerinin (batterystats , diskstats, fingerprint, graphicsstats, netstats, notification, procstats) biçimini veya içeriğini DEĞİŞTİRMEMELİDİR.
    • [C-0-4] Cihaz tarafındaki adb daemon'ın varsayılan olarak etkin olmaması VE Android Hata Ayıklama Köprüsü'nü etkinleştirmek için kullanıcının erişebileceği bir mekanizmanın olması ZORUNLUDUR.
    • [C-0-5] MUST support secure adb. Android, güvenli adb desteği içerir. Güvenli adb, kimliği doğrulanmış bilinen ana makinelerde adb'yi etkinleştirir.
    • [C-0-6] adb'nin ana makineden bağlanmasına olanak tanıyan bir mekanizma YETERLİ OLMALIDIR. Örnek:

      • USB bağlantı noktası olmayan ve çevre birimi modunu desteklemeyen cihaz uygulamaları, adb'yi yerel alan ağı (ör. Ethernet veya kablosuz ağ) üzerinden UYGULAMALIDIR.
      • Windows 7, 9 ve 10 için geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan sürücüler SAĞLANMALIDIR.
  • Dalvik Debug Monitor Service (ddms)

    • [C-0-7] Android SDK'da belirtildiği gibi tüm ddms özelliklerini DESTEKLEMELİDİR. ddms, adb kullandığından ddms desteği varsayılan olarak devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Hata Ayıklama Köprüsü'nü etkinleştirdiğinde desteklenmesi GEREKİR.
  • Monkey
    • [C-0-8] Monkey çerçevesini İÇERMELİ ve uygulamaların kullanabileceği şekilde HAZIRLAYACAK.
  • SysTrace
    • [C-0-9] Android SDK'da belirtildiği gibi systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak etkin olmamalıdır ve Systrace'i etkinleştirmek için kullanıcının erişebileceği bir mekanizma BULUNMASI GEREKİR.

6.2. Geliştirici seçenekleri

Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmasına yönelik destek içerir.

Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sunmalıdır. Bu uygulamalar:

  • [C-0-1] Uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS intent'ini UYGUNLAŞTIRMALIDIR. Yukarı akış Android uygulaması, Geliştirici Seçenekleri menüsünü varsayılan olarak gizler ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesine yedi (7) kez bastıktan sonra Geliştirici Seçenekleri'ni başlatmasını sağlar.
  • [C-0-2] Geliştirici Seçenekleri varsayılan olarak GİZLENMELİDİR ve özel izin verilenler listesine ekleme gerekmeden Geliştirici Seçenekleri'ni etkinleştirecek bir mekanizma sağlanmalıdır.
  • Kullanıcının güvenliğinin önemli olduğu senaryolarda dikkat dağıtıcı durumları önlemek için menüyü görsel olarak gizleyerek veya devre dışı bırakarak Geliştirici Seçenekleri menüsüne erişimi geçici olarak SINIRLAYABİLİR.

7. Donanım Uyumluluğu

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

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

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

  • [C-0-2] Bileşen API'leri için tam sınıf tanımları (SDK tarafından belirtildiği şekilde) yine de sunulmalıdır.
  • [C-0-3] API'nin davranışları makul bir şekilde işlemsiz olarak uygulanmalıdır.
  • [C-0-4] API yöntemleri, SDK dokümanlarında izin verildiğinde null değerler DÖNDÜRMELİDİR.
  • [C-0-5] API yöntemleri, SDK dokümanlarında null değerlere izin verilmeyen sınıfların işlemsiz uygulamalarını DÖNDÜRMELİDİR.
  • [C-0-6] API yöntemleri, SDK dokümanlarında belirtilmeyen istisnalar ÇIKARTMAMALIDIR.
  • [C-0-7] Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki getSystemAvailableFeatures() ve hasSystemFeature(String) yöntemleri aracılığıyla tutarlı bir şekilde doğru donanım yapılandırma bilgilerini bildirmelidir.

Bu koşulların geçerli olduğu bir senaryoya tipik bir örnek, telefon API'sidir: Telefon olmayan cihazlarda bile bu API'ler makul bir şekilde işlem yapmaz olarak uygulanmalıdır.

7.1. Görüntü ve Grafikler

Android, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında sorunsuz şekilde çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan özellikler içerir. Cihazlar, bu bölümde ayrıntılı olarak açıklandığı şekilde bu API'leri ve davranışları düzgün bir şekilde uygulamalıdır.

Bu bölümdeki şartlarda referans verilen birimler aşağıdaki şekilde tanımlanır:

  • Fiziksel çapraz boyut. Ekranın aydınlatılmış kısmının iki karşıt köşesi arasındaki mesafe (inç cinsinden).
  • inç başına nokta sayısı (dpi). 1 inçlik doğrusal yatay veya dikey bir açıklık tarafından kapsanan piksel sayısı. dpi değerlerinin listelendiği yerlerde hem yatay hem de dikey dpi aralık içinde olmalıdır.
  • en boy oranı. Uzun boyuttaki piksellerin ekranın kısa boyutuna oranı. Örneğin, 480x854 piksel boyutunda bir ekran için 854/480 = 1, 779 veya yaklaşık olarak "16:9" değeri elde edilir.
  • yoğunluktan bağımsız piksel (dp). 160 dpi ekrana göre normalleştirilmiş sanal piksel birimi. Şu şekilde hesaplanır: piksel = dp * (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ırmadaki ekran düzeni boyutunu sorgulamasına olanak tanır.

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

    • Configuration.uiMode parametresi UI_MODE_TYPE_WATCH dışında bir değere ayarlanmış ve Configuration.screenLayout için small boyutu raporlayan cihazların en az 426 dp x 320 dp boyutunda olması GEREKİR.
    • Configuration.screenLayout için normal boyutu bildiren cihazların en az 480 dp x 320 dp olması GEREKİR.
    • Configuration.screenLayout için large boyutu bildiren cihazların en az 640 dp x 480 dp olması GEREKİR.
    • Configuration.screenLayout için xlarge boyutu bildiren cihazların en az 960 dp x 720 dp olması GEREKİR.
  • [C-0-2] Cihaz uygulamalarında, Android SDK dokümanlarında açıklandığı gibi, AndroidManifest.xml dosyasında <supports-screens> özelliği aracılığıyla uygulamaların ekran boyutları için belirtilen desteği doğru şekilde dikkate ALMALIDIR.

7.1.1.2. Ekran En Boy Oranı

Fiziksel ekranı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 ekran en boy oranı (view.Display API'leri ve Configuration API'si aracılığıyla raporlanan yükseklik ve genişlik değerlerinden yola çıkılarak belirlenebilir) aşağıdaki koşulları karşılamalıdır:

  • [C-0-1] Configuration.uiMode değeri UI_MODE_TYPE_NORMAL olarak ayarlanmış cihaz uygulamalarında, uygulama aşağıdaki koşullardan birini karşılayarak daha uzun bir şekilde uzatılmaya hazır olarak kabul edilmedikçe 1,3333 (4:3) ile 1,86 (yaklaşık 16:9) arasında bir en boy oranı değeri OLMALIDIR:

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

7.1.1.3. Ekran Yoğunluğu

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

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

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

Cihazın ekran boyutunu değiştirme seçeneği varsa:

  • [C-1-1] Görüntü boyutu, doğal yoğunluğun 1,5 katından daha büyük bir ölçeğe ayarlanmamalı veya hangisi önce gerçekleşirse 320 dp'den (kaynak tanımlayıcısı sw320dp'ye eşdeğer) daha küçük bir etkili minimum ekran boyutu üretmemelidir.
  • [C-1-2] Görüntü boyutu, doğal yoğunluğun 0,85 katından daha küçük bir ölçekte OLMAMALIDIR.
  • İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için doğal görüntüleme seçeneklerinin aşağıdaki ölçeklendirmesinin sağlanması ÖNERİLİR (yukarıda belirtilen sınırlara uyulmalıdır)
  • Küçük: 0,85x
  • Varsayılan: 1x (yerel ekran ölçeği)
  • Büyük: 1,15x
  • Daha büyük: 1,3 kat
  • En büyük 1,45x

7.1.2. Görüntülü Reklam Metrikleri

Cihaz uygulamalarında ekran veya video çıkışı varsa:

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

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

7.1.3. Ekran Yönlendirme

Cihaz uygulamaları:

  • [C-0-1] Desteklenen ekran yönlerini (android.hardware.screen.portrait ve/veya android.hardware.screen.landscape) bildirmeli ve en az bir desteklenen yönü bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yatay ekrana sahip bir cihaz yalnızca android.hardware.screen.landscape değerini bildirmelidir.
  • [C-0-2] android.content.res.Configuration.orientation, android.view.Display.getOrientation() veya diğer API'ler aracılığıyla sorgulandığı her zaman cihazın mevcut yönü için doğru değeri bildirmelidir.

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

  • [C-1-1] Dikey veya yatay ekran yönüne göre uygulamalar tarafından dinamik yönü DESTEKLEMELİDİR. Yani cihaz, uygulamanın belirli bir ekran yönü isteğini dikkate almalıdır.
  • [C-1-2] Yön değiştirilirken bildirilen ekran boyutu veya yoğunluğu DEĞİŞTİRİLMEMELİDİR.
  • Varsayılan olarak dikey veya yatay yönü seçebilir.

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

7.1.4.1 OpenGL ES

Cihaz uygulamaları:

  • [C-0-1] Yönetilen API'ler (ör. GLES10.getString() yöntemi) ve yerel API'ler aracılığıyla desteklenen OpenGL ES sürümlerini (1.1, 2.0, 3.0, 3.1, 3.2) DOĞRU şekilde tanımlamalıdır.
  • [C-0-2] Desteklendiğini belirttikleri her OpenGL ES sürümü için ilgili tüm yönetilen API'ler ve yerel API'ler için destek DAHİL OLMALIDIR.

Cihaz uygulamalarında ekran veya video çıkışı varsa:

  • [C-1-1] Android SDK dokümanlarında belirtildiği şekilde hem OpenGL ES 1.0 hem de 2.0'ı DESTEKLEMELİDİR.
  • [SR] OpenGL ES 3.0'u desteklemesi ö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:

  • [C-2-1] Uygulamaya koydukları diğer OpenGL ES uzantılarını OpenGL ES yönetilen API'leri ve yerel API'ler aracılığıyla bildirMELİDİR ve tam tersine, desteklemedikleri uzantı dizelerini bildirMEmelidir.
  • [C-2-2] EGL_KHR_image, EGL_KHR_image_base, EGL_ANDROID_image_native_buffer, EGL_ANDROID_get_native_client_buffer, EGL_KHR_wait_sync, EGL_KHR_get_all_proc_addresses, EGL_ANDROID_presentation_time, EGL_KHR_swap_buffers_with_damage ve EGL_ANDROID_recordable uzantılarını DESTEKLEMELİDİR.
  • [SR] için EGL_KHR_partial_update özelliğinin DESTEKLENMESİ önemle ÖNERİLİR.
  • Destekledikleri doku sıkıştırma biçimlerini (genellikle tedarikçiye özgüdür) getString() yöntemi aracılığıyla doğru şekilde bildirmelidir.

Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2 desteğini belirtiyorsa:

  • [C-3-1] libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev simgelerine ek olarak bu sürümler için ilgili işlev simgelerini dışa aktarmalıdır.

Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa:

  • [C-4-1] OpenGL ES Android Uzatma Paketi'nin tamamını desteklemelidir.

Cihaz uygulamaları OpenGL ES Android Uzatma Paketi'ni tamamen destekliyorsa:

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

Cihaz uygulamaları EGL_KHR_mutable_render_buffer uzantısını destekliyorsa:

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

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

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

  • [SR] Vulkan 1.0 desteğinin eklenmesi önemle ÖNERİLİR .

Cihaz uygulamalarında ekran veya video çıkışı varsa:

  • Vulkan 1.0 desteği DAHİL OLMALIDIR.

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

  • [C-1-1] android.hardware.vulkan.level ve android.hardware.vulkan.version özellik işaretleriyle doğru tam sayı değerini bildirmelidir.
  • [C-1-2] Vulkan yerel API'si vkEnumeratePhysicalDevices() için en az bir VkPhysicalDevice sayılmalıdır .
  • [C-1-3] Her bir listelenen VkPhysicalDevice için Vulkan 1.0 API'lerini tam olarak UYGULAMALIDIR.
  • [C-1-4] Uygulama paketinin yerel kitaplık dizininde libVkLayer*.so olarak adlandırılan yerel kitaplıklarda bulunan katmanları Vulkan yerel API'leri vkEnumerateInstanceLayerProperties() ve vkEnumerateDeviceLayerProperties() aracılığıyla listelemeLİDİR .
  • [C-1-5] Uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanları listelememeli veya uygulamada android:debuggable özelliği true olarak ayarlanmadığı sürece Vulkan API'yi izlemenin ya da yakalamanın başka yollarını sağlamamalıdır.
  • [C-1-6] Desteklediği tüm uzantı dizelerini Vulkan yerel API'leri aracılığıyla bildirmeli ve tam olarak desteklemediği uzantı dizelerini bildirmemelidir.

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

  • [C-2-1] Vulkan özellik işaretlerinden hiçbirini (ör. android.hardware.vulkan.level, android.hardware.vulkan.version) İLAN ETMEmelidir.
  • [C-2-2] Vulkan doğal API'si vkEnumeratePhysicalDevices() için herhangi bir VkPhysicalDevice dizine eklenmemelidir.
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 DESTEKLEMELİDİR.
7.1.4.4 2D Grafik Hızlandırma

Android, uygulamaların android:hardwareAccelerated manifest etiketi veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini beyan etmelerini sağlayan bir mekanizma içerir.

Cihaz uygulamaları:

  • [C-0-1] Varsayılan olarak donanım hızlandırmayı etkinleştirmeli ve geliştirici android:hardwareAccelerated="false" değerini ayarlayarak veya donanım hızlandırmayı doğrudan Android View API'leri aracılığıyla devre dışı bırakarak donanım hızlandırmayı devre dışı bırakmasını İSTEMELİDİR.
  • [C-0-2] Donanım hızlandırma ile ilgili Android SDK dokümanlarıyla tutarlı bir davranış sergilemelidir.

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

  • [C-0-3] TextureView API'yi DESTEKLEMELİ ve yayın öncesi Android uygulamasıyla tutarlı davranış sergileMELİDİR.
7.1.4.5 Geniş renk gamına sahip ekranlar

Cihaz uygulamaları , Display.isWideColorGamut() aracılığıyla geniş renk gamına sahip ekranları desteklediğini iddia ediyorsa:

  • [C-1-1] Renk kalibre edilmiş bir ekrana sahip OLMALIDIR.
  • [C-1-2] CIE 1931 xyY alanında sRGB renk gamını tamamen kapsayan bir ekrana sahip OLMALIDIR.
  • [C-1-3] CIE 1931 xyY uzayında NTSC 1953'ün en az% 90'ı kadar alanı olan bir ekrana sahip OLMALIDIR.
  • [C-1-4] OpenGL ES 3.0, 3.1 veya 3.2'yi desteklemeli ve bunu doğru şekilde bildirmelidir.
  • [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ına yönelik destek reklamını YAPMALIDIR.
  • [SR] GL_EXT_sRGB için destek almanızı önemle ÖNERİRİZ.

Buna karşılık, cihaz uygulamaları geniş kapsamlı ekranları desteklemiyorsa:

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

7.1.5. Eski Uygulama Uyumluluğu Modu

Android, çerçevenin ekran boyutundan bağımsızlık özelliğinin bulunmadığı eski Android sürümleri için geliştirilmemiş eski uygulamaların yararına, çerçevenin "normal" ekran 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. Bu belgede özel olarak izin verilmediği sürece cihazlar, Android SDK'sı tarafından tanımlanan bu API'lerin tümünü desteklemelidir.

Cihaz uygulamaları:

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

7.1.7. İkincil Ekranlar

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

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

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

7.2. Giriş Cihazları

Cihaz uygulamaları:

7.2.1. Klavye

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

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

7.2.2. Dokunmatik olmayan gezinme

Android, dokunmatik olmayan gezinme mekanizmaları olarak d-pad, izleme topu ve tekerlek desteği içerir.

Cihaz uygulamaları:

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

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

7.2.3. Gezinme Tuşları

Ana Sayfa, En Son ve Geri işlevleri, genellikle özel bir fiziksel düğme veya dokunmatik ekranın farklı bir kısmıyla etkileşim yoluyla sağlanır. Bu işlevler, Android gezinme paradigması ve dolayısıyla cihaz uygulamaları için gereklidir:

  • [C-0-1] ACTION=MAIN ve CATEGORY=LAUNCHER ile ayarlanmış <intent-filter> etkinliği olan yüklü uygulamaları başlatmak için kullanıcılara bir kolaylık sunmalıdır veya televizyon cihazı uygulamaları için CATEGORY=LEANBACK_LAUNCHER kullanmalıdır. Ana Sayfa işlevi, bu kullanıcı olanağı için mekanizma OLABİLİR.
  • Son Kullanılanlar ve Geri işlevi için düğmeler YER ALMALIDIR.

Ana Sayfa, Son Aramalar veya Geri işlevleri sağlanıyorsa:

  • [C-1-1] Bunlardan herhangi birine erişilebiliyorsa tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir.
  • [C-1-2] Her işlevi hangi tek bir işlemin tetikleyeceğine dair net bir açıklama YAZILMALIDIR. Düğmeye basıldığında görünen bir simge, ekranın gezinme çubuğu bölümünde bir yazılım simgesi göstermek veya kutudan çıkarıldıktan sonra kurulum deneyimi sırasında kullanıcıyı adım adım rehberli bir demo akışında yönlendirmek bu tür bir gösterge örneğidir.

Cihaz uygulamaları:

  • [SR], Android 4.0'dan beri işlem çubuğu lehine desteği sonlandırıldığı için Menü işlevi için giriş mekanizması sağ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üğmesi GÖSTERİLMELİDİR.
  • [C-2-2] İşlem çubuğundaki taşma düğmesi seçilerek gösterilen işlem taşma pop-up'ının konumunu DEĞİŞTİRMEMELİDİR ancak menü işlevi seçilerek gösterildiğinde işlem taşma pop-up'ını ekranda değiştirilmiş bir konumda oluşturabilir.

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

  • [C-3-1] targetSdkVersion 10'dan az olduğunda fiziksel bir düğme, yazılım anahtarı veya hareketler aracılığıyla Menü işlevini uygulamalara sunmalıdır. Diğer gezinme işlevleriyle birlikte gizlenmediği sürece bu menü işlevine erişilebilir olmalıdır.

Cihaz uygulamaları Yardım işlevini sağlıyorsa:

  • [C-4-1] Diğer gezinme tuşlarına erişilebildiğinde Yardım işlevine tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir.
  • [SR] Bu belirlenen etkileşim olarak ANA SAYFA işlevinde uzun basma özelliğinin kullanılması önemle ÖNERİLİR.

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

  • [C-5-1] Gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANABİLİR ve ekranın uygulamalar tarafından kullanılabilen bölümünü GÖZDEN KAÇIRMASIN veya başka bir şekilde engelleMESİN.
  • [C-5-2] Ekranın bir bölümünü, 7.1.1 numaralı bölümde tanımlanan koşulları karşılayan uygulamalara sunmalıdır.
  • [C-5-3] Ekranın bu belirgin kısmının (diğer adıyla gezinme çubuğu) SDK'da belirtildiği gibi düzgün bir şekilde gizlenmesi için uygulama tarafından View.setSystemUiVisibility() API yöntemi aracılığıyla ayarlanan işaretleri UYGUNLAMALI.

7.2.4. Dokunmatik Ekran Girişi

Android; dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunmatik giriş cihazları gibi çeşitli işaretçi giriş sistemlerini destekler. Dokunmatik ekran tabanlı cihaz uygulamaları, kullanıcının ekrandaki öğelerle doğrudan etkileşim kurduğu izlenimi verecek şekilde bir ekranla ilişkilendirilir. Kullanıcı doğrudan ekrana dokunduğundan sistem, üzerinde işlem yapılan nesneleri belirtmek için ek kolaylıklara ihtiyaç duymaz.

Cihaz uygulamaları:

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

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

  • [C-1-1] Configuration.touchscreen API alanı için TOUCHSCREEN_FINGER değerini bildirmelidir.
  • [C-1-2] android.hardware.touchscreen ve android.hardware.faketouch özellik işaretlerini bildirmelidir

Cihaz uygulamalarında tek bir dokunuşu değil, birden fazla dokunuşu izleyebilen bir dokunmatik ekran varsa:

  • [C-2-1] Cihazdaki belirli dokunmatik ekranın türüne karşılık gelen uygun özellik işaretlerini android.hardware.touchscreen.multitouch, android.hardware.touchscreen.multitouch.distinct, android.hardware.touchscreen.multitouch.jazzhand bildirmelidir.

Cihaz uygulamaları dokunmatik ekran içermiyorsa (ve yalnızca işaretçi cihaz kullanıyorsa) ve 7.2.5 numaralı bölümdeki sahte dokunma şartlarını karşılıyorsa:

  • [C-3-1] android.hardware.touchscreen ile başlayan özellik işaretlerini BİLDİRMEMELİDİR ve yalnızca android.hardware.faketouch işaretini BİLDİRMELİDİR.

7.2.5. Sahte Dokunmatik Giriş

Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesine benzer bir kullanıcı girişi sistemi sağlar. Örneğin, ekranda bir imleci hareket ettiren fare veya uzaktan kumanda, dokunmaya benzer ancak kullanıcının önce imleci veya odak noktasını seçip ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi, jiroskop işaretçisi, kontrol çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı, sahte dokunma etkileşimlerini destekleyebilir. Android, android.hardware.faketouch özelliğini içerir. Bu özellik, dokunmatik tabanlı girişi (temel hareket desteği dahil) yeterince taklit edebilen fare veya dokunmatik yüzey gibi dokunmatik olmayan (işaretçi tabanlı) yüksek kaliteli bir giriş cihazına karşılık gelir ve cihazın dokunmatik ekran işlevinin taklit edilmiş bir alt kümesini desteklediğini belirtir.

Cihaz uygulamalarında dokunmatik ekran bulunmasa da kullanıma sunmak istedikleri başka bir işaretçi giriş sistemi varsa:

  • android.hardware.faketouch özellik işareti için destek BEYAN EDİLMELİDİR.

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

  • [C-1-1] İşaretçi konumunun mutlak X ve Y ekran konumlarını bildirmeli ve ekranda görsel bir işaretçi göstermelidir.
  • [C-1-2] Dokunma etkinliğini, işaretçinin ekranda aşağı veya yukarı hareket etmesiyle oluşan durum değişikliğini belirten işlem koduyla bildirmelidir.
  • [C-1-3] Ekrandaki bir nesneye işaretçiyi aşağı ve yukarı hareket ettirme özelliği DESTEKLENMELİDİR. Bu özellik, kullanıcıların ekrandaki bir nesneye dokunma işlemini taklit etmesine olanak tanır.
  • [C-1-4] Ekrandaki bir nesnenin aynı yerinde, belirli bir süre içinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketlerini desteklemelidir. Bu sayede kullanıcılar ekrandaki bir nesneye çift dokunmayı taklit edebilir.
  • [C-1-5] Ekrandaki herhangi bir noktada aşağı bakan bir işaretçiyi, işaretçiyi ekrandaki herhangi bir noktaya taşımayı ve ardından kullanıcıların dokunma sürüklemesini taklit etmesine olanak tanıyan yukarı bakan bir işaretçiyi desteklemelidir.
  • [C-1-6] İşaretçinin aşağı doğru hareket etmesini desteklemeli, ardından kullanıcıların nesneyi ekranda hızlıca farklı bir konuma taşımasına ve ardından ekranda yukarı doğru hareket etmesine izin vermelidir. Bu sayede kullanıcılar ekranda bir nesneyi fırlatabilir.
  • [C-1-7] Configuration.touchscreen API alanı için TOUCHSCREEN_NOTOUCH değerini bildirmelidir.

Cihaz uygulamaları android.hardware.faketouch.multitouch.distinct için destek belirtiyorsa:

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

Cihaz uygulamaları android.hardware.faketouch.multitouch.jazzhand için destek belirtiyorsa:

  • [C-3-1] android.hardware.faketouch için destek beyan ETMELI.
  • [C-3-2] 5 (bir elin parmaklarını izleme) veya daha fazla işaretçi girişinin tamamen bağımsız olarak ayrı ayrı izlenmesini DESTEKLEMELİDİR.

7.2.6. Oyun Kumandası Desteği

7.2.6.1. Düğme Eşlemeleri

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

  • [C-1-1] Aşağıdaki tablolarda listelenen tüm etkinliklerin girilmesini sağlayacak bir denetleyicinin yerleştirilmiş olması veya kutuda ayrı bir denetleyicinin bulunması ZORUNLUDUR.
  • [C-1-2] HID etkinliklerini, aşağıdaki tablolarda listelenen ilişkili Android view.InputEvent sabitleriyle eşleyebilmelidir. Yukarı akış Android uygulaması, bu koşulu karşılayan oyun denetleyicileri için uygulamayı içerir.
Düğme HID Kullanımı2 Android düğmesi
A1 0x09 0x0001 KEYCODE_BUTTON_A (96)
B1 0x09 0x0002 KEYCODE_BUTTON_B (97)
X1 0x09 0x0004 KEYCODE_BUTTON_X (99)
Y1 0x09 0x0005 KEYCODE_BUTTON_Y (100)
D-pad yukarı1
D-pad aşağı1
0x01 0x00393 AXIS_HAT_Y4
D-pad sola1
D-pad sağa1
0x01 0x00393 AXIS_HAT_X4
Sol üst kenar düğmesi1 0x09 0x0007 KEYCODE_BUTTON_L1 (102)
Sağ üst kenar düğmesi1 0x09 0x0008 KEYCODE_BUTTON_R1 (103)
Sol çubuk tıklama1 0x09 0x000E KEYCODE_BUTTON_THUMBL (106)
Sağ çubuğun tıklanması1 0x09 0x000F KEYCODE_BUTTON_THUMBR (107)
Ana Sayfa1 0x0c 0x0223 KEYCODE_HOME (3)
Geri1 0x0c 0x0224 KEYCODE_BACK (4)

1 KeyEvent

2 Yukarıdaki HID kullanımları, bir oyun kumandası CA'sında (0x01 0x0005) tanımlanmalıdır.

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

4 MotionEvent

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

1 MotionEvent

7.2.7. Uzaktan Kumanda

Cihaza özgü gereksinimler için 2.3.1 numaralı bölüme bakın.

7.3. Sensörler

Cihaz uygulamalarında, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türü varsa cihaz uygulaması bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde UYGULAMALIDIR.

Cihaz uygulamaları:

  • [C-0-1] android.content.pm.PackageManager sınıfına göre sensörlerin varlığını veya yokluğunu doğru şekilde bildirmelidir.
  • [C-0-2] SensorManager.getSensorList() ve benzer yöntemler aracılığıyla desteklenen sensörlerin doğru bir listesini DÖNDÜRMELİDİR.
  • [C-0-3] Diğer tüm sensör API'leri için makul davranmalıdır (ör. uygulamalar dinleyici kaydetmeye çalıştığında uygun şekilde true veya false döndürerek, ilgili sensörler mevcut olmadığında sensör dinleyicilerini çağırmamak vb.).

Cihaz uygulamalarında, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türü varsa geliştiriciler:

  • [C-1-1] Android SDK dokümanlarında tanımlandığı şekilde her sensör türü için ilgili Uluslararası Birim Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini bildirmelidir.
  • [C-1-2] Sensör verilerini en fazla 100 milisaniye gecikmeli olarak raporlamalıdır
  • En az 5 ms gecikmeyle aktarılan bir sensör için 2 * sample_time + uygulama işlemcisi etkinken 2 * sample_time. Bu gecikmeye filtreleme gecikmeleri dahil değildir.
  • [C-1-3] İlk sensör örneğini, sensörün etkinleştirilmesinden sonraki 400 milisaniye + 2 * sample_time içinde bildirmelidir. Bu örneğin doğruluk değerinin 0 olması kabul edilebilir.
  • [SR] Etkinlik zamanını Android SDK dokümanlarında tanımlandığı şekilde nanosaniye cinsinden raporlamalıdır. Bu zaman, etkinliğin gerçekleştiği zamanı temsil eder ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edilir. Mevcut ve yeni Android cihazların bu şartları karşılaması ŞİDDETLE ÖNERİLİR. Böylece, bu şartın ZORUNLU bir bileşen haline gelebileceği gelecekteki platform sürümlerine yükseltme yapabilecek. Senkronizasyon hatası 100 milisaniyenin altında OLMALIDIR.

  • [C-1-7] Android SDK dokümanlarında sürekli sensör olarak belirtilen API'ler için cihaz uygulamalarında, ardışık etkinlikler arasındaki raporlanan zaman damgası değerlerinin farkının standart sapması olarak tanımlanan ve %3'ün altında olması gereken jitter değerine sahip düzenli aralıklarla veri örnekleri sağlanmalıdır.

  • [C-1-8] Sensör etkinlik akışının, cihazın CPU'sunun askıya alma durumuna girmesini veya askıya alma durumundan uyandırılmasını ÖNLEMEDİĞİNDEN EMİN OLMALIDIR.

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

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

Bazı sensör türleri karmadır. Yani bir veya daha fazla sensör tarafından sağlanan verilerden türetilebilirler. (Yön sensörü ve doğrusal hızlanma sensörü buna örnek gösterilebilir.)

Cihaz uygulamaları:

  • Sensör türleri bölümünde açıklanan ön koşul fiziksel sensörleri içerdiğinde bu sensör türlerini UYGULAMALIDIR.

Cihaz uygulamaları kompozit sensör içeriyorsa:

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

7.3.1. İvme ölçer

  • Cihaz uygulamalarında 3 eksenli ivme ölçer BULUNMASI GEREKİR.

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

  • [C-1-1] En az 50 Hz'ye kadar sıklıktaki etkinlikleri raporlayabilmelidir.
  • [C-1-2] TYPE_ACCELEROMETER sensörünü uygulamalı ve bildirmelidir.
  • [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR.
  • [C-1-4] Herhangi bir eksende serbest düşüşten başlayarak yerçekiminin dört katına(4g) kadar veya daha fazlasını ölçebilmelidir.
  • [C-1-5] En az 12 bit çözünürlüğe sahip OLMALIDIR.
  • [C-1-6] Standart sapma en fazla 0,05 m/s^2 olmalıdır.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına hesaplanır.
  • TYPE_SIGNIFICANT_MOTION karma sensörünü uygulamak için [SR] ŞİDDETLE ÖNERİLİR.
  • [SR], online ivmeölçer kalibrasyonunun kullanılabildiği durumlarda TYPE_ACCELEROMETER_UNCALIBRATED sensörünü UYGULAMASI KESİNLİKLE ÖNERİLİR.
  • TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER birleşik sensörlerini Android SDK belgesinde açıklandığı şekilde UYGULAMALIDIR.
  • En az 200 Hz'e kadar olan etkinlikleri raporlamalıdır.
  • Çözünürlüğü en az 16 bit olmalıdır.
  • Özellikler yaşam döngüsü boyunca değişirse ve telafi edilirse kullanım sırasında kalibre EDİLMELİDİR ve cihaz yeniden başlatılırken telafi parametreleri korunmalıdır.
  • Sıcaklık dengelenmelidir.
  • TYPE_ACCELEROMETER_UNCALIBRATED sensörünü de UYGULAMALIDIR.

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

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

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

  • [C-3-1] TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION birleşik sensörlerini UYGULAMALI.
  • TYPE_GAME_ROTATION_VECTOR karma sensör uygulanmalıdır.
  • [SR] Mevcut ve yeni Android cihazlarda TYPE_GAME_ROTATION_VECTOR sensörünün uygulanması önemle ÖNERİLİR.

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

  • [C-4-1] TYPE_ROTATION_VECTOR birleşik sensörü UYGULANMALIDIR.

7.3.2. Manyetometre

  • Cihaz uygulamalarında 3 eksenli bir manyetometre (pusula) BULUNMASI GEREKİR.

Cihaz uygulamaları 3 eksenli bir manyetometre içeriyorsa:

  • [C-1-1] TYPE_MAGNETIC_FIELD sensörünü UYGULAMALIDIR.
  • [C-1-2] En az 10 Hz'ye kadar sıklıkta etkinlikleri raporlayabİLMELİ ve en az 50 Hz'ye kadar sıklıkta etkinlikleri raporlamalıdır.
  • [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR.
  • [C-1-4] Doygunluk öncesi her eksende -900 µT ile +900 µT arasında ölçüm yapabilmelidir.
  • [C-1-5] Manyetometre, dinamik (akımla indüklenen) ve statik (mıknatısla indüklenen) manyetik alanlardan uzak bir yere yerleştirilerek sabit demir ofset değeri 700 µT'den az OLMALIDIR ve 200 µT'nin altında bir değere sahip OLMALIDIR.
  • [C-1-6] 0,6 µT'ye eşit veya daha yoğun bir çözünürlüğe sahip OLMALIDIR.
  • [C-1-7] Sabit demir önyargısının çevrimiçi kalibrasyonunu ve telafisini desteklemeli ve cihaz yeniden başlatmaları arasında telafi parametrelerini korumalıdır.
  • [C-1-8] Yumuşak demir telafisi uygulanmış OLMALIDIR. Kalibre işlemi, cihaz kullanılırken veya cihazın üretimi sırasında yapılabilir.
  • [C-1-9] En hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklere göre eksen başına hesaplanmış standart sapma 1, 5 µT'den yüksek OLMAYACAK; standart sapma 0, 5 µT'den yüksek OLMAYACAK.
  • TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörünü UYGULAMALI.
  • [SR] Mevcut ve yeni Android cihazlarda TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörünün uygulanması önemle ÖNERİLİR.

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

  • [C-2-1] TYPE_ROTATION_VECTOR birleşik sensörü UYGULANMALIDIR.

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

  • TYPE_GEOMAGNETIC_ROTATION_VECTOR sensörünü UYGULAYABİLİR.

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

  • [C-3-1] 10 mW'dan az güç tüketmelidir.
  • Sensör 10 Hz'de toplu mod için kaydedildiğinde 3 mW'den az güç TÜKETMELİDİR.

7.3.3. GPS

Cihaz uygulamaları:

  • GPS/GNSS alıcısı DAHİL OLMALIDIR.

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

  • [C-1-1] LocationManager#requestLocationUpdate üzerinden istendiğinde konum çıkışlarını en az 1 Hz hızda DESTEKLEMELİDİR.
  • [C-1-2] 0, 5 Mb/sn veya daha hızlı veri hızına sahip bir internet bağlantısına bağlıyken açık hava koşullarında (güçlü sinyaller, ihmal edilebilir çoklu yol, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı zaman) konumu belirleyebilmelidir. Bu şart genellikle GPS/GNSS kilitlenme süresini en aza indirmek için Yardımlı veya Tahmini GPS/GNSS tekniği kullanılarak karşılanır (Yardım verileri Referans Zaman, Referans Konum ve Uydu Ephemeris/Kronometre içerir).
    • [SR] Bu tür bir konum hesaplaması yapıldıktan sonra, cihazın konum istekleri yeniden başlatıldığında, ilk konum hesaplamasından sonraki bir saate kadar, sonraki istek veri bağlantısı olmadan ve/veya güç döngüsü sonrasında bile açık havada 10 saniye içinde konumunu belirleyebilmesi önemle ÖNERİLİR.
  • Açık hava koşullarında, konum belirlendikten sonra sabitken veya saniye kare başına 1 metreden daha az ivmeyle hareket ederken:

    • [C-1-3] En az% 95 oranında, konumu 20 metre içinde ve hızı saniyede 0, 5 metre içinde belirleyebilmelidir.
    • [C-1-4] Bir takımyıldızındaki en az 8 uyduyu aynı anda GnssStatus.Callback üzerinden izlemeli ve bildirmelidir.
    • Birden fazla takımyıldızından (ör. GPS + Glonass, Beidou, Galileo'dan en az biri) en az 24 uyduyu aynı anda izleyebilmelidir.
    • [C-1-5] GNSS teknolojisinin nesil bilgisini "getGnssYearOfHardware" test API'si aracılığıyla bildirmelidir.
    • [SR] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışlarını vermeye devam edin.
    • [SR] SBAS hariç, izlenen tüm takımyıldızlarından (GnssStatus mesajlarında bildirildiği gibi) GNSS ölçümlerini raporlayın.
    • [SR] AGC ve GNSS ölçümünün sıklığını raporlayın.
    • [SR] Her GPS konumunun bir parçası olarak tüm doğruluk tahminlerini (Yön, Hız ve Dikey dahil) raporlayın.
    • [SR], Test API LocationManager.getGnssYearOfHardware() aracılığıyla "2016" veya "2017" yılını bildiren cihazlar için ek zorunlu şartlardan mümkün olduğunca çoğunu karşılamanın ÖNEMLE ÖNERİLDİĞİNİ belirtmek isteriz.

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

  • [C-2-1] GPS/GNSS'den hesaplanan bir konum henüz raporlanmasa bile GPS ölçümleri bulunur bulunmaz raporlanmalıdır.
  • [C-2-2] Konum belirlendikten sonra açık hava koşullarında sabitken veya saniye kare başına 0,2 metreden daha az ivmeyle hareket ederken GPS sanal menzilleri ve sanal menzil hızlarını bildirmelidir. Bu değerler, konumu en az% 95 oranında 20 metre içinde, hızı ise saniyede 0,2 metre içinde hesaplamak için yeterlidir.

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

  • [C-3-1] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışlarını vermeye DEVAM ETMELİDİR.
  • [C-3-2] SBAS hariç, izlenen tüm takımyıldızlarından (GnssStatus mesajlarında bildirildiği gibi) GNSS ölçümlerini bildirmelidir.
  • [C-3-3] AGC ve GNSS ölçümünün sıklığını bildirmelidir.
  • [C-3-4] Her 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 de dahil edilmediği sürece jiroskop sensörü İÇERMEMELİDİR.

Cihaz uygulamaları jiroskop içeriyorsa:

  • [C-1-1] En az 50 Hz'ye kadar sıklıktaki etkinlikleri raporlayabilmelidir.
  • [C-1-2] TYPE_GYROSCOPE sensörünü UYGULAMALI ve TYPE_GYROSCOPE_UNCALIBRATED sensörünü de UYGULAMALI.
  • [C-1-3] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
  • [C-1-4] 12 bit veya daha yüksek çözünürlükte OLMALIDIR ve 16 bit veya daha yüksek çözünürlükte OLMALIDIR.
  • [C-1-5] Sıcaklık dengeleme özelliği OLMALIDIR.
  • [C-1-6] Kullanım sırasında kalibre edilmeli ve telafi edilmeli, ayrıca cihaz yeniden başlatılırken telafi parametreleri korunmalıdır.
  • [C-1-7] Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) daha büyük bir varyansa SAHİP OLMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle SINIRLANDIRILMALIDIR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz bu değer 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
  • [SR] Mevcut ve yeni Android cihazlarda SENSOR_TYPE_GYROSCOPE_UNCALIBRATED sensörünün uygulanması önemle ÖNERİLİR.
  • [SR] Cihaz oda sıcaklığında sabitken kalibrasyon hatasının 0,01 rad/s'den az olması önemle ÖNERİLİR.
  • En az 200 Hz'e kadar olan etkinlikleri raporlamalıdır.

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

  • [C-2-1] TYPE_ROTATION_VECTOR birleşik sensörü UYGULANMALIDIR.

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

  • [C-3-1] TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION birleşik sensörlerini UYGULAMALI.
  • [SR] Mevcut ve yeni Android cihazlarda TYPE_GAME_ROTATION_VECTOR sensörünün uygulanması önemle ÖNERİLİR.
  • TYPE_GAME_ROTATION_VECTOR karma sensör uygulanmalıdır.

7.3.5. Barometre

  • Cihaz uygulamalarında barometre (ortam hava basıncı sensörü) BULUNMASI GEREKİR.

Cihaz uygulamaları barometre içeriyorsa:

  • [C-1-1] TYPE_PRESSURE sensörünü uygulamalı ve bildirmelidir.
  • [C-1-2] Etkinlikleri 5 Hz veya daha yüksek bir hızda yayınlayabilmelidir.
  • [C-1-3] Sıcaklık dengeleme özelliği OLMALIDIR.
  • [SR] 300hPa ila 1100hPa aralığındaki basınç ölçümlerini raporlayabilmek için ÇOK ÖNEMLİ.
  • Mutlak doğruluğu 1 hPa OLMALIDIR.
  • 20 hPa aralığında 0,12 hPa bağıl doğruluğa SAHİP OLMALIDIR (deniz seviyesinde ~200 m değişimde ~1 m doğruluğa eşdeğerdir).

7.3.6. Termometre

Cihaz uygulamaları: Ortam termometresi (sıcaklık sensörü) içerebilir. CPU sıcaklık sensörü içerebilir ancak KESİNLİKLE içermemelidir.

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

  • [C-1-1] SENSOR_TYPE_AMBIENT_TEMPERATURE olarak tanımlanmalı ve kullanıcının cihazla etkileşimde bulunduğu yerin ortam (oda/araç kabini) sıcaklığını santigrat derece cinsinden ölçmelidir.
  • [C-1-2] SENSOR_TYPE_TEMPERATURE olarak tanımlanmalıdır.
  • [C-1-3] Cihazın CPU'sunun sıcaklığını ÖLÇMELİDİR.
  • [C-1-4] Başka bir sıcaklık Ö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. Fotoğraf ölçer

  • Cihaz uygulamaları bir fotometre (ortam ışığı sensörü) İÇERİEBİLİR.

7.3.8. Yakınlık Sensörü

  • Cihaz uygulamaları bir yakınlık sensörü içerEBİLİR.

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

  • [C-1-1] Bir nesnenin yakınlığını ekranla aynı yönde ölçmelidir. Yani, bu sensör türünün birincil amacı kullanıcının kullandığı telefonu algılamak olduğundan yakınlık sensörü, ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Cihaz uygulamalarında başka bir yönde yakınlık sensörü varsa bu API üzerinden erişilememelidir.
  • [C-1-2] 1 bit veya daha fazla doğruluk değerine sahip OLMALIDIR.

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

Cihaz uygulamaları bu bölümde tanımlandığı şekilde daha yüksek kaliteli sensörler içeriyorsa ve bunları üçüncü taraf uygulamalarına sunuyorsa:

  • [C-1-1] android.hardware.sensor.hifi_sensors özellik bayrağı aracılığıyla özelliği tanımlaması GEREKİR.

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

  • [C-2-1] TYPE_ACCELEROMETER sensörüne sahip OLMALIDIR. Bu sensör:

    • En az -8 g ile +8 g arasında bir ölçüm aralığına sahip OLMALIDIR.
    • Ö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ı 400 Hz veya daha yüksek olmalıdır.
    • Ölçüm gürültüsü 400 uG/√Hz'den yüksek OLMAMALIDIR.
    • Bu sensörün, en az 3.000 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
    • Gruplandırma güç tüketimi en fazla 3 mW olmalıdır.
    • 24 saatlik statik veri kümesinden <15 μg √Hz sabit gürültü önyargı kararlılığına sahip OLMALIDIR.
    • Sıcaklığa göre önyargı değişikliğinin ≤ +/- 1 mg / °C olması GEREKİR.
    • En iyi uyum çizgisi doğrusal olmayanlığı %0,5'ten az, sıcaklığa göre hassasiyet değişimi ise %0,03/°C'den az OLMALIDIR.
    • Sensörün gürültü bütünlüğünün yeterli şekilde tanımlanması için beyaz gürültü spektrumuna sahip OLMALIDIR.
  • [C-2-2] TYPE_ACCELEROMETER ile aynı kalite koşullarına sahip bir TYPE_ACCELEROMETER_UNCALIBRATED OLMALIDIR.

  • [C-2-3] TYPE_GYROSCOPE sensörüne sahip OLMALIDIR. Bu sensör:

    • En az -1000 ile +1000 dps arasında bir ölçüm aralığına sahip OLMALIDIR.
    • Ölçüm çözünürlüğü en az 16 LSB/dps olmalıdır.
    • Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansı 400 Hz veya daha yüksek olmalıdır.
    • Ölçüm gürültüsü 0,014°/s/√Hz'den yüksek OLMAMALIDIR.
    • 24 saatlik statik veri kümesinden < 0,0002 °/s √Hz sabit önyargı kararlılığına sahip OLMALIDIR.
    • Sıcaklığa göre önyargı değişimi ≤ +/- 0,05 °/ s / °C olmalıdır.
    • Sıcaklığa göre hassasiyet değişimi %0,02/°C'den az OLMALIDIR.
    • En iyi uyum doğrusunun doğrusal olmayanlığı %0,2'den az OLMALIDIR.
    • Gürültü yoğunluğu ≤ 0,007 °/s/√Hz olmalıdır.
    • Sensörün gürültü bütünlüğünün yeterli şekilde tanımlanması için beyaz gürültü spektrumuna sahip OLMALIDIR.
    • Cihaz sabitken 10 ila 40 ℃ sıcaklık aralığında kalibrasyon hatası 0,002 rad/s'den az OLMALIDIR.
  • [C-2-4] TYPE_GYROSCOPE ile aynı kalite koşullarına sahip bir TYPE_GYROSCOPE_UNCALIBRATED OLMALIDIR.

  • [C-2-5] TYPE_GEOMAGNETIC_FIELD sensörü şunlara sahip OLMALIDIR:
    • Ölçüm aralığı en az -900 ile +900 uT arasında OLMALIDIR.
    • Ölçüm çözünürlüğü en az 5 LSB/uT OLMALIDIR.
    • Minimum ölçüm frekansı 5 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansı 50 Hz veya daha yüksek olmalıdır.
    • Ölçüm gürültüsü 0,5 uT'tan yüksek OLMAMALIDIR.
  • [C-2-6] TYPE_GEOMAGNETIC_FIELD ile aynı kalite koşullarına sahip bir TYPE_MAGNETIC_FIELD_UNCALIBRATED'ye SAHİP OLMALIDIR ve ek olarak:
    • Bu sensörün, en az 600 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
    • Sensörün gürültü bütünlüğünün yeterli şekilde tanımlanması için beyaz gürültü spektrumuna sahip OLMALIDIR.
  • [C-2-7] TYPE_PRESSURE sensörü OLMALIDIR. Bu sensör:
    • En az 300 ile 1.100 hPa arasında bir ölçüm aralığına sahip OLMALIDIR.
    • Ölçüm çözünürlüğü en az 80 LSB/hPa OLMALIDIR.
    • Minimum ölçüm sıklığı 1 Hz veya daha düşük olmalıdır.
    • Maksimum ölçüm frekansı 10 Hz veya daha yüksek olmalıdır.
    • Ölçüm gürültüsü 2 Pa/√Hz'den yüksek OLMAMALIDIR.
    • Bu sensörün, en az 300 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
    • Gruplandırma güç tüketimi en fazla 2 mW olmalıdır.
  • [C-2-8] TYPE_GAME_ROTATION_VECTOR sensörü OLMALIDIR. Bu sensör:
    • Bu sensörün, en az 300 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
    • Gruplandırma güç tüketimi en fazla 4 mW olmalıdır.
  • [C-2-9] TYPE_SIGNIFICANT_MOTION sensörü ZORUNLUDUR. Bu sensör:
    • Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
  • [C-2-10] TYPE_STEP_DETECTOR sensörü şunlara sahip OLMALIDIR:
    • Bu sensörün, en az 100 sensör etkinliği arabelleğe alma özelliğine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
    • Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
    • Gruplandırma güç tüketimi en fazla 4 mW olmalıdır.
  • [C-2-11] TYPE_STEP_COUNTER sensörüne sahip OLMALIDIR. Bu sensör:
    • Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
  • [C-2-12] TILT_DETECTOR sensörü ZORUNLUDUR. Bu sensör:
    • Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
  • [C-2-13] İvmeölçer, jiroskop sensörü ve manyetometre tarafından raporlanan aynı fiziksel etkinliğin etkinlik zaman damgası 2,5 milisaniye içinde olmalıdır.
  • [C-2-14] Jiroskop sensör etkinliği zaman damgalarının, kamera alt sistemiyle aynı zaman tabanında ve 1 milisaniyelik hata payında olması GEREKİR.
  • [C-2-15] Veriler yukarıdaki fiziksel sensörlerden herhangi birinde mevcut olduğu andan itibaren 5 milisaniye içinde uygulamalara örnek göndermelidir.
  • [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz statik durumdayken 0,5 mW'den, cihaz hareket halindeyken 2,0 mW'den yüksek güç tüketimi OLMAZ:
    • 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 tampon kapasitesine sahip OLMALIDIR.

Bu bölümdeki tüm güç tüketimi şartlarının, uygulama işlemcisinin güç tüketimini içermediğini unutmayın. Sensör zincirinin tamamının (sensör, destekleyici devreler, özel sensör işleme sistemi vb.) kullandığı güç bu değere dahildir.

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

  • [C-3-1] Doğrudan kanal türleri ve doğrudan rapor oranları düzeyindeki desteği isDirectChannelTypeSupported ve getHighestDirectReportRateLevel API aracılığıyla doğru şekilde beyan ETMELI.
  • [C-3-2] Sensör doğrudan kanalı desteğini beyan eden tüm sensörler için 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 etkinlik raporlamayı DESTEKLEMELİ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ında güvenli bir kilit ekranı varsa:

  • Parmak izi sensörü DAHİL OLMALIDIR.

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

  • [C-1-1] android.hardware.fingerprint özelliği için destek beyan ETMESİ GEREKİR.
  • [C-1-2] İlgili API, Android SDK dokümanlarında açıklandığı şekilde eksiksiz şekilde uygulanmalıdır.
  • [C-1-3] Yanlış kabul oranı en fazla %0,002 olmalıdır.
  • [SR] Sahtecilik ve kimliğe bürünme kabul oranının %7'den yüksek olmaması önemle ÖNERİLİR.
  • [C-1-4] Sahtecilik ve kimliğe bürünme kabul oranları %7'den yüksekse bu modun güçlü bir PIN, desen veya şifreye kıyasla daha az güvenli olabileceğini ve etkinleştirmenin risklerini açıkça belirtmelidir.
  • [C-1-5] Parmak izi doğrulama için beş yanlış denemeden sonra deneme sayısını en az 30 saniye boyunca sınırlamalıdır.
  • [C-1-6] Donanım destekli bir anahtar deposu uygulamasına sahip OLMALI ve parmak izi eşleştirmeyi Güvenilir Yürütme Ortamı'nda (TEE) veya TEE'ye güvenli bir kanalla bağlı bir çipte gerçekleştirmelidir.
  • [C-1-7] Tanımlanabilir tüm parmak izi verilerinin, Android Open Source Project sitesindeki uygulama yönergelerinde belirtildiği şekilde Güvenli Yürütme Ortamı (TEE) dışında edinilemeyecek, okunamayacak veya değiştirilemeyecek şekilde şifrelenmesi ve kriptografik olarak kimliğinin doğrulanması GEREKİR.
  • [C-1-8] Kullanıcıdan mevcut kimlik bilgilerini onaylamasını veya TEE tarafından korunan yeni bir cihaz kimlik bilgisi (PIN/desen/şifre) eklemesini sağlayarak önce bir güven zinciri oluşturmadan parmak izi eklenmesini ÖNLEMELİDİR; Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevede mekanizmayı sağlar.
  • [C-1-9] Üçüncü taraf uygulamaların ayrı parmak izlerini ayırt etmesine İZİN VERMEMELİDİR.
  • [C-1-10] DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT işaretine UYMALIDIR.
  • [C-1-11] Android 6.0'dan önceki bir sürümden yükseltme yapıldığında, yukarıdaki şartları karşılamak için parmak izi verilerinin güvenli bir şekilde taşınması veya kaldırılması GEREKİR.
  • [SR] Cihaz üzerinde ölçülen yanlış reddetme oranının %10'un altında olması önemle ÖNERİLİR.
  • [SR] Kayıtlı bir parmak için parmak izi sensörüne dokunulduğu andan ekranın kilidinin açıldığı ana kadar geçen sürenin 1 saniyenin altında olması önemle ÖNERİLİR.
  • Android Açık Kaynak Projesi'nde sağlanan Android Parmak İzi simgesini KULLANMALIDIR.

7.3.11. Yalnızca Android Automotive sensörleri

Otomotive özgü sensörler android.car.CarSensorManager API içinde tanımlanır.

7.3.11.1. Mevcut Ekipman

Cihaza özgü gereksinimler için 2.5.1 numaralı bölüme bakın.

7.3.11.2. Gündüz Gece Modu

Cihaza özgü gereksinimler için 2.5.1 numaralı bölüme bakın.

7.3.11.3. Sürüş Durumu

Cihaza özgü gereksinimler için 2.5.1 numaralı bölüme bakın.

7.3.11.4. Tekerlek Hızı

Cihaza özgü gereksinimler için 2.5.1 numaralı bölüme bakın.

7.3.12. Poz Sensörü

Cihaz uygulamaları:

  • 6 serbestlik derecesine sahip poz sensörünü DESTEKLEYEBİLİR.

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

  • [C-1-1] TYPE_POSE_6DOF sensörünü uygulamalı ve bildirmelidir.
  • [C-1-2] Yalnızca rotasyon vektöründen daha doğru OLMALIDIR.

7.4. Veri Bağlantısı

7.4.1. Telefon Hizmeti

Android API'leri ve bu belge tarafından kullanılan "Telefon" terimi, özellikle GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanımı ifade eder. Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak Android'in işleyişine göre aynı ağ kullanılarak uygulanabilecek veri bağlantılarından bağımsız olarak kabul edilir. Diğer bir deyişle, Android "telefon" işlevi ve API'leri özellikle sesli aramaları ve SMS'leri ifade eder. Örneğin, arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarından bağımsız olarak telefon cihazı olarak kabul edilmez.

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

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

  • [C-1-1] android.hardware.telephony özellik bayrağını ve diğer alt özellik bayraklarını teknolojiye göre İLANI GEREKTİRİR.
  • [C-1-2] Söz konusu teknolojinin API'si için TAM destek uygulanmalıdır.

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

  • [C-2-1] API'lerin tamamını no-ops olarak UYGULAMALIDIR.
7.4.1.1. Numara Engelleme Uyumluluğu

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

  • [C-1-1] Numara engelleme desteği ZORUNLUDUR
  • [C-1-2] BlockedNumberContract ve ilgili API'yi SDK dokümanlarında açıklandığı şekilde TAMAMEN uygulamalıdır.
  • [C-1-3] "BlockedNumberProvider"daki bir telefon numarasından gelen tüm aramaları ve mesajları, uygulamalarla herhangi bir etkileşimde bulunmadan ENGELLEMELİDİR. Tek istisna, SDK dokümanlarında açıklandığı gibi numara engellemenin geçici olarak kaldırılmasıdır.
  • [C-1-4] Engellenen bir arama için platform arama kaydı sağlayıcısına YAZMAMALIDIR.
  • [C-1-5] Engellenen bir mesaj için Telefon hizmeti sağlayıcıya yazı YAZMAMALIDIR.
  • [C-1-6] TelecomManager.createManageBlockedNumbersIntent() yöntemi tarafından döndürülen intent ile açılan engellenen numara yönetimi kullanıcı arayüzü UYGULANMALIDIR.
  • [C-1-7] Android platformu, birincil kullanıcının cihazdaki tek bir telefon hizmeti örneği üzerinde tam kontrole sahip olduğunu varsaydığından ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzü ikincil kullanıcılar için GİZLENMELİDİR ve engellenen listeye yine UYULMALIDIR.
  • Cihaz Android 7.0'a güncellendiğinde engellenen numaralar sağlayıcıya taşınmalıdır.
7.4.1.2. Telecom API

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

  • [C-SR] android.telecom API'leri için sesli kulaklığın KEYCODE_MEDIA_PLAY_PAUSE ve KEYCODE_HEADSETHOOK etkinliklerini aşağıdaki gibi işlemek önemle ÖNERİLİR:
    • Devam eden bir arama sırasında önemli etkinliğe kısa basma algılanırsa Connection.onDisconnect() çağrısı yapılır.
    • Gelen bir arama sırasında önemli etkinliğe kısa basıldığı algılandığında Connection.onAnswer() çağrısı.
    • Gelen bir arama sırasında önemli etkinliğe uzun basıldığı algılanırsa Connection.onReject() çağrısı yapılır.
    • CallAudioState cihazının sessiz durumunu değiştirme

7.4.2. IEEE 802.11 (Kablosuz)

Cihaz uygulamaları:

  • 802.11'in bir veya daha fazla biçimi için destek DAHİL OLMALIDIR.

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

  • [C-1-1] İlgili Android API'sini UYGULAMALIDIR.
  • [C-1-2] Donanım özelliği işaretini android.hardware.wifi bildirmelidir.
  • [C-1-3] Çoklu yayın API'sini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
  • [C-1-4] Çoklu yayın DNS'yi (mDNS) desteklemeli ve aşağıdakiler dahil olmak üzere herhangi bir çalışma zamanında mDNS paketlerini (224.0.0.251) filtrelememelidir:
    • Ekran etkin durumda olmasa bile.
    • Android TV cihaz uygulamalarında, güç bekleme durumundayken bile.
  • STA bağlantısı kapalıyken her taramanın başında bir kez, kaynak MAC adresini ve keşif isteği çerçevelerinin sıra numarasını rastgele seçmelidir.
    • Bir taramadan oluşan her prob isteği çerçevesi grubu, tek bir tutarlı MAC adresi kullanmalıdır (MAC adresi, taramanın ortasında rastgele hale GETİRİLMEMELİDİR).
    • Prob isteği sıra numarası, bir taramada prob istekleri arasında normal şekilde (sıralı olarak) iterasyon yapmalıdır
    • Keşif isteği sıra numarası, bir taramanın son keşif isteği ile sonraki taramanın ilk keşif isteği arasında rastgele ayarlanmalıdır.
  • STA bağlantısı kapalıyken yalnızca aşağıdaki bilgi öğelerine sorgu isteği çerçevelerinde izin VERİLMELİDİR:
    • SSID Parametre Grubu (0)
    • DS Parametre Grubu (3)
7.4.2.1. Kablosuz Doğrudan Bağlantı

Cihaz uygulamaları:

  • Wi-Fi Direct (eşler arası kablosuz) desteği DAHİL OLMALIDIR.

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

  • [C-1-1] İlgili Android API'sini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
  • [C-1-2] android.hardware.wifi.direct donanım özelliğini ZORUNLUDIR.
  • [C-1-3] Normal kablosuz bağlantıyı desteklemelidir.
  • Kablosuz ve kablosuz doğrudan bağlantı işlemlerini eşzamanlı olarak DESTEKLEMELİDİR.

Cihaz uygulamaları:

Cihaz uygulamaları TDLS desteği içeriyorsa ve TDLS, WiFiManager API tarafından etkinleştirildiyse:

  • [C-1-1] WifiManager.isTdlsSupported üzerinden TDLS desteğini BEYAN ETMELİDİR.
  • TDLS yalnızca mümkün olduğunda VE faydalı olduğunda kullanılmalıdır.
  • Performansı kablosuz erişim noktası üzerinden gitmekten daha kötü olabilecek durumlarda TDLS'yi KULLANMAMALI ve bazı sezgisel yöntemlere sahip OLMALIDIR.
7.4.2.3. Wi-Fi Aware

Cihaz uygulamaları:

Cihaz uygulamaları, kablosuz ağ farkındalığı desteği içeriyorsa ve işlevi üçüncü taraf uygulamalarına sunuyorsa:

  • [C-1-1] WifiAwareManager API'lerini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
  • [C-1-2] android.hardware.wifi.aware özellik bayrağını İLANI GEREKTİRİR.
  • [C-1-3] Kablosuz bağlantı ve kablosuz bağlantı bilinir işlemleri aynı anda desteklemelidir.
  • [C-1-4] Kablosuz Ağ Farkındalığı yönetim arayüzü adresini 30 dakikadan uzun olmayan aralıklarla ve Kablosuz Ağ Farkındalığı etkinleştirildiğinde rastgele oluşturmalıdır.
7.4.2.4. Kablosuz Passpoint

Cihaz uygulamaları:

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

  • [C-1-1] Passpoint ile ilgili WifiManager API'lerini SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
  • [C-1-2] Özellikle Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi ağ keşfi ve seçimiyle ilgili IEEE 802.11u standardını DESTEKLEMELİDİR.

Buna karşılık, cihaz uygulamaları Wi-Fi Passpoint desteği içermiyorsa:

  • [C-2-1] Passpoint ile ilgili WifiManager API'lerinin uygulanması UnsupportedOperationException oluşturmalıdır.

7.4.3. Bluetooth

Cihaz uygulamaları Bluetooth ses profilini destekliyorsa:

  • Gelişmiş Ses Codec'lerini ve Bluetooth Ses Codec'lerini (ör. LDAC) DESTEKLEMELİDİR.

Cihaz uygulamaları android.hardware.vr.high_performance özelliğini beyan ederse:

  • [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzatma özelliğini DESTEKLEMELİDİR.

Android, Bluetooth ve Bluetooth Düşük Enerji desteği içerir.

Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:

  • [C-2-1] İlgili platform özelliklerini (sırasıyla android.hardware.bluetooth ve android.hardware.bluetooth_le) beyan ETMEK VE platform API'lerini uygulamak ZORUNLUDUR.
  • Cihaz için uygun olan A2DP, AVCP, OBEX gibi ilgili Bluetooth profillerini UYGULAMALIDIR.

Cihaz uygulamaları Bluetooth Düşük Enerji desteği içeriyorsa:

  • [C-3-1] android.hardware.bluetooth_le donanım özelliğini İLKLEŞTİRMELİDİR.
  • [C-3-2] GATT (genel özellik profili) tabanlı Bluetooth API'leri, SDK dokümanlarında ve android.bluetooth'ta açıklandığı şekilde etkinleştirilmelidir.
  • [C-3-3] ScanFilter API sınıflarının filtreleme mantığının uygulanıp uygulanmadığını belirtmek için BluetoothAdapter.isOffloadedFilteringSupported() için doğru değeri bildirmelidir.
  • [C-3-4] Düşük Enerji Reklamcılığı'nın desteklenip desteklenmediğini belirtmek için BluetoothAdapter.isMultipleAdvertisementSupported() için doğru değeri bildirmelidir.
  • ScanFilter API'yi uygularken filtreleme mantığının Bluetooth yonga setine aktarılmasını DESTEKLEMELİDİR.
  • Toplu taramanın Bluetooth yonga setine aktarılmasını desteklemelidir.
  • En az 4 yuva içeren çoklu reklamı DESTEKLEMELİDİR.

  • [SR] Kullanıcı gizliliğini korumak için 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulamak ve zaman aşımı olduğunda adresi döndürmek önemle ÖNERİLİR.

7.4.4. Yakın Alan İletişimi

Cihaz uygulamaları:

  • Near Field Communication (NFC) için bir alıcı/verici ve ilgili donanım İÇERMELİDİR.
  • [C-0-1] NFC desteği içermese veya sınıflar protokolden bağımsız bir veri temsili biçimi temsil ettiği için android.hardware.nfc özelliğini beyan etmese bile android.nfc.NdefMessage ve android.nfc.NdefRecord API'lerini UYGULAMALIDIR.

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

  • [C-1-1] android.hardware.nfc özelliğini android.content.pm.PackageManager.hasSystemFeature() yönteminden raporlamalıdır.
  • Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarını okuyup yazabilmelidir:
  • [C-1-2] Aşağıdaki NFC standartları aracılığıyla NFC Forum okuyucu/yazar (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0 tarafından tanımlandığı şekilde) olarak hareket edebilmelidir:
  • NfcA (ISO14443-3A)
  • NfcB (ISO14443-3B)
  • NfcF (JIS X 6319-4)
  • IsoDep (ISO 14443-4)
  • NFC Forumu Etiket Türleri 1, 2, 3, 4, 5 (NFC Forumu tarafından tanımlanmıştır)
  • [SR] Aşağıdaki NFC standartları aracılığıyla ham verilerin yanı sıra NDEF mesajlarını okuyup yazabilmeniz KESİNLİKLE ÖNERİLİR. NFC standartlarının "ŞİDDETLE ÖNERİLİR" olarak belirtilmesine rağmen, gelecekteki bir sürümün Uyumluluk Tanımı'nda bu standartların "ZORUNLU" olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları şimdiden karşılamaları önemle tavsiye edilir.

  • [C-1-3] Aşağıdaki eşler arası standartlar ve protokoller aracılığıyla veri gönderip alabilMELİDİR:

  • ISO 18092
  • LLCP 1.2 (NFC Forum tarafından tanımlanmıştır)
  • SDP 1.0 (NFC Forum tarafından tanımlanmıştır)
  • NDEF Push Protokolü
  • SNEP 1.0 (NFC Forum tarafından tanımlanmıştır)
  • [C-1-4] Android Beam desteği içermeli ve Android Beam'i varsayılan olarak etkinleştirmelidir.
  • [C-1-5] Android Beam etkinleştirildiğinde veya başka bir özel NFC P2p modu açıldığında Android Beam'i kullanarak gönderip alabilmeli.
  • [C-1-6] SNEP varsayılan sunucusunu UYGULAMALIDIR. Varsayılan SNEP sunucusu tarafından alınan geçerli NDEF mesajları, android.nfc.ACTION_NDEF_DISCOVERED intent'i kullanılarak uygulamalara gönderilmelidir. Android Beam'in ayarlardan 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 intent'ini UYGUNLAMALIDIR.
  • [C-1-8] NPP sunucusunu UYGULAMALI. NPP sunucusu tarafından alınan mesajlar, SNEP varsayılan sunucusu ile aynı şekilde işlenmelidir.
  • [C-1-9] Android Beam etkinleştirildiğinde bir SNEP istemcisi uygulamalı ve varsayılan SNEP sunucusuna giden P2P NDEF göndermeye çalışmalı. Varsayılan SNEP sunucusu bulunamazsa istemcinin bir NPP sunucusuna göndermeye çalışması GEREKİR.
  • [C-1-10] MUST allow foreground activities to set the outbound P2P NDEF message using android.nfc.NfcAdapter.setNdefPushMessage, and android.nfc.NfcAdapter.setNdefPushMessageCallback, and android.nfc.NfcAdapter.enableForegroundNdefPush.
  • Giden P2P NDEF mesajları göndermeden önce "İletmek için dokun" gibi bir hareket veya ekran onayı KULLANMALIDIR.
  • [C-1-11] Cihaz Bluetooth Nesne İtme Profilini desteklediğinde NFC bağlantısının Bluetooth'a aktarılmasını desteklemelidir.
  • [C-1-12] NFC Forum'un "Bağlantı Devre Alma sürümü 1.2" ve "NFC sürümü 1.0'u kullanarak Bluetooth Güvenli Basit Eşleme" özelliklerini uygulayarak android.nfc.NfcAdapter.setBeamPushUris kullanılırken Bluetooth'a bağlantı aktarımı desteklenmelidir. Bu tür bir uygulama, NFC üzerinden aktarma isteğini/seçilen kayıtları aktarmak için "urn:nfc:sn:handover" hizmet adıyla aktarma LLCP hizmetini UYGULAMALIDIR ve gerçek Bluetooth veri aktarımı için Bluetooth Nesne İtme Profili'ni KULLANMALIDIR. Eski nedenlerden dolayı (Android 4.1 cihazlarla uyumluluğu korumak için) uygulama, NFC üzerinden aktarma isteği/seçilen kayıtları değiştirmek için SNEP GET isteklerini kabul etmeye DEVAM ETMELİDİR. Ancak uygulamanın kendisi, bağlantı aktarımı yapmak için SNEP GET istekleri GÖNDERMEMELİDİR.
  • [C-1-13] NFC keşif modundayken desteklenen tüm teknolojiler için anket YAPMALIDIR.
  • Cihaz açıkken ekran etkin ve kilit ekranı kilidi açıkken NFC keşif modunda OLMALIDIR.
  • Thinfilm NFC Barkod ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.

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

Android, NFC Ana Kart Emülasyonu (HCE) modunu destekler.

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

  • [C-2-1] android.hardware.nfc.hce özellik sabitini bildirmelidir.
  • [C-2-2] Android SDK'sında tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.

Cihaz uygulamaları, NfcF için HCE'yi destekleyen bir NFC denetleyici yonga seti içeriyorsa ve bu özelliği üçüncü taraf uygulamaları için uyguluyorsa:

  • [C-3-1] android.hardware.nfc.hcef özellik sabitini ZORUNLUDIR.
  • [C-3-2] Android SDK'da tanımlandığı şekilde NfcF Kart Emülasyonu API'lerini UYGULAMALIDIR.

Cihaz uygulamaları bu bölümde açıklanan genel NFC desteğini içeriyorsa ve okuyucu/yazar rolünde MIFARE teknolojilerini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:

  • [C-4-1] Android SDK'sında belirtildiği şekilde ilgili Android API'lerini UYGULAMALIDIR.
  • [C-4-2] android.content.pm.PackageManager.hasSystemFeature() yönteminden com.nxp.mifare özelliğini bildirmelidir. Bunun standart bir Android özelliği olmadığını ve bu nedenle android.content.pm.PackageManager sınıfında sabit olarak görünmediğini unutmayın.

7.4.5. Minimum Ağ İşlevi

Cihaz uygulamaları:

  • [C-0-1] Bir veya daha fazla veri ağı biçimi için destek ZORUNLUDUR. Daha açık belirtmek gerekirse, cihaz uygulamalarında 200 Kb/sn veya daha yüksek hızda en az bir veri standardı desteği BULUNMASI GEREKİR. Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet, Bluetooth PAN vb. verilebilir.
  • [C-0-2] Bir IPv6 ağ yığınını İÇERMELİ ve java.net.Socket ile java.net.URLConnection gibi yönetilen API'lerin yanı sıra AF_INET6 soketleri gibi yerel API'leri kullanarak IPv6 iletişimini desteklemelidir.
  • [C-0-3] IPv6 varsayılan olarak etkinleştirilmelidir.
  • Örneğin, IPv6 iletişiminin IPv4 kadar güvenilir olmasını SAĞLAMALIDIR.
  • [C-0-4] Uyku modunda IPv6 bağlantısını ZORUNLU KULLANINIZ.
  • [C-0-5] Hız sınırlaması, cihazın en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu herhangi bir ağda IPv6 bağlantısını kaybetmesine NEDEN OLMAYACAK.
  • Birincil veri bağlantısı fiziksel bir ağ standardı (ör. Ethernet) olduğunda 802.11 (Kablosuz ağ) gibi en az bir ortak kablosuz veri standardı desteği de DAHİL OLMALIDIR.
  • Birden fazla veri bağlantısı biçimi UYGULAYABİLİR.

Gerekli IPv6 desteği düzeyi, ağ türüne bağlı olarak aşağıdaki gibidir:

Cihaz uygulamaları kablosuz ağları destekliyorsa:

  • [C-1-1] Kablosuz ağda çift yığın ve yalnızca IPv6 işlevini DESTEKLEMELİDİR.

Cihaz uygulamaları Ethernet ağlarını destekliyorsa:

  • [C-2-1] Ethernet'te çift yığınlı çalışmayı DESTEKLEMELİDİR.

Cihaz uygulamaları hücresel verileri destekliyorsa:

  • [C-3-1] Bir cihaz birden fazla ağa aynı anda bağlıyken (ör. Kablosuz ağ ve hücresel veri)
  • Hücresel verilerde IPv6 işlevini (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 varsayılan olarak ana otomatik senkronizasyon ayarının AÇIK olması GEREKİR.

7.4.7. Veri Tasarrufu

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

  • [SR] Veri tasarrufu modunu sunmanı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ÜRMELİDİR
  • [C-2-2] ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED yayını YAPILMAYACAK.
  • [C-2-3] Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS intent'ini işleyen bir etkinliğe sahip OLMALI ancak bunu işlem yapmadan uygulayabilir.

7.5. Kameralar

Cihaz uygulamaları en az bir kamera içeriyorsa:

  • [C-1-1] android.hardware.camera.any özellik bayrağını İLANI GEREKTİRİR.
  • [C-1-2] Temel önizleme ve fotoğraf çekme amacıyla kamera açıkken bir uygulamanın, cihazdaki en yüksek çözünürlüklü kamera sensörü tarafından üretilen görüntülerin boyutuna eşit 3 RGBA_8888 bitmap'i aynı anda ayırması ZORUNLUDUR.

7.5.1. Arka Kamera

Arka kamera, cihazın ekranın karşısındaki tarafında bulunan bir kameradır. Yani geleneksel bir kamera gibi cihazın uzak tarafındaki sahneleri görüntüler.

Cihaz uygulamaları:

  • Arka kamera içermelidir.

Cihaz uygulamalarında en az bir arka kamera varsa:

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

Kamerada flaş varsa:

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

7.5.2. Ön Kamera

Ön kamera, cihazın ekranla aynı tarafında bulunan bir kameradır. Yani genellikle görüntülü konferans ve benzeri 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 işaretini bildirmelidir.
  • [C-1-2] En az VGA (640x480 piksel) çözünürlüğe sahip OLMALIDIR.
  • [C-1-3] Camera API için varsayılan olarak ön kamera KULLANMAMALI ve API'yi, cihazdaki tek kamera olsa bile ön kamerayı varsayılan arka kamera olarak ele alacak şekilde yapılandırmamalıdır.
  • [C-1-5] Mevcut uygulama, android.hardware.Camera.setDisplayOrientation() yöntemine yapılan bir çağrı aracılığıyla kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesi, uygulama tarafından belirtilen yönde yatay olarak yansıtılmalıdır. Buna karşılık, geçerli uygulama android.hardware.Camera.setDisplayOrientation() yöntemine çağrı göndererek kamera ekranının döndürülmesini açıkça istemediğinde önizleme cihazın varsayılan yatay ekseni boyunca yansıtılmalıdır.
  • [C-1-6] Uygulama geri çağırmalarına döndürülen veya medya depolama alanına bağlanan nihai çekilen hareketsiz resim veya video akışlarını yansıtmamalıdır.
  • [C-1-7] Sonraki görüntüleme tarafından gösterilen görüntüyü, kamera önizleme resim akışıyla aynı şekilde yansıtmalıdır.
  • 7.5.1 numaralı bölümde açıklandığı gibi, arkaya bakan kameralarda kullanılabilen özellikleri (ör. otomatik odaklama, flaş vb.) İÇERİYE ALMAYABİLİR.

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

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

7.5.3. Harici Kamera

Cihaz uygulamaları:

  • Her zaman bağlı olması gerekmeyen harici bir kamera desteği OLABİLİR.

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

  • [C-1-1] Platform özellik işareti android.hardware.camera.external ve android.hardware camera.any İSTENİR.
  • [C-1-2] Harici kamera USB bağlantı noktası üzerinden bağlanıyorsa USB Video Sınıfı'nı (UVC 1.0 veya üzeri) DESTEKLEMELİDİR.
  • Yüksek kaliteli kodlanmamış akışların (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırma biçimlerini DESTEKLEMELİDİR.
  • Birden fazla kamerayı DESTEKLEYEBİLİR.
  • Kamera tabanlı video kodlamayı DESTEKLEYEBİLİR. Destekleniyorsa cihaz uygulaması, eşzamanlı olarak kodlanmamış / MJPEG akışına (QVGA veya daha yüksek çözünürlük) erişebilmelidir.

7.5.4. Kamera API'si Davranışı

Android, kameraya erişmek için iki API paketi içerir. Daha yeni android.hardware.camera2 API, uygulamaya daha düşük düzeyde kamera kontrolü sunar. Bu kontrol, sıfır kopyalama gerektiren verimli seri/akış akışları ve pozlama, kazanç, beyaz denge kazançları, renk dönüştürme, gürültü giderme, keskinleştirme ve daha fazlası için kare başına kontroller içerir.

Eski API paketi android.hardware.Camera, Android 5.0'de desteği sonlandırılmış olarak işaretlenmiştir ancak uygulamaların kullanabilmesi için hâlâ kullanılabilir durumdadır. Android cihaz uygulamalarında, API'nin bu bölümde ve Android SDK'sında açıklandığı şekilde sürekli olarak desteklendiğinden emin olunmalıdır.

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

  • [C-0-1] Bir uygulama android.hardware.Camera.Parameters.setPreviewFormat(int)'u hiç çağırmamışsa uygulama geri çağırmalarına sağlanan önizleme verileri için android.hardware.PixelFormat.YCbCr_420_SP kullanılmalıdır.
  • [C-0-2] Ayrıca, bir uygulama bir android.hardware.Camera.PreviewCallback örneği kaydettiğinde ve sistem onPreviewFrame() yöntemini çağrdığında ve önizleme biçimi YCbCr_420_SP olduğunda byte[] içindeki veriler onPreviewFrame()'a aktarılırken NV21 kodlama biçiminde OLMALIDIR. Yani NV21 varsayılan OLMALIDIR.
  • [C-0-3] android.hardware.Camera için hem ön hem de arka kameraların kamera önizlemelerinde YV12 biçimini (android.graphics.ImageFormat.YV12 sabitiyle belirtilir) DESTEKLEMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüşümü DESTEKLEMELİDİR.)
  • [C-0-4] android.request.availableCapabilities'te REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE özelliğinin reklamını yapan android.hardware.camera2 cihazlar için android.media.ImageReader API üzerinden android.hardware.ImageFormat.YUV_420_888 ve android.hardware.ImageFormat.JPEG biçimlerini çıkış olarak DESTEKLEMELİDİR.
  • [C-0-5] Cihazın donanım otomatik odaklama veya başka özellikler içerip içermediğine bakılmaksızın, Android SDK dokümanlarında yer alan Kamera API'nin tamamını uygulamalıdır. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı tüm android.hardware.Camera.AutoFocusCallback örneklerini çağırmaya DEVAM ETMELİDİR (otomatik odaklama özelliği olmayan bir kamerayla alakalı olmasa bile). Bunun ön kameralar için geçerli olduğunu unutmayın. Örneğin, çoğu ön kamera otomatik odaklama özelliğini desteklemese bile API geri çağırmalarının açıklandığı şekilde "taklit" edilmesi gerekir.
  • [C-0-6] android.hardware.Camera.Parameters sınıfında sabit olarak tanımlanan her parametre adını tanımalıdır. Buna karşılık, cihaz uygulamaları android.hardware.Camera.Parameters üzerinde sabit olarak belgelenenler dışında android.hardware.Camera.setParameters() yöntemine iletilen dize sabitlerini HİÇBİR ŞEKİLDE dikkate ALMAMALI veya tanımamalıdır. Yani cihaz uygulamaları, donanım izin veriyorsa tüm standart kamera parametrelerini DESTEKLEMELİ ve özel kamera parametresi türlerini DESTEKLEMEMELİDİR. Örneğin, yüksek dinamik aralık (HDR) görüntüleme teknikleri kullanılarak görüntü yakalamayı destekleyen cihaz uygulamaları Camera.SCENE_MODE_HDR kamera parametresini desteklemelidir.
  • [C-0-7] Android SDK'sında açıklandığı şekilde android.info.supportedHardwareLevel mülküyle uygun destek düzeyini ve uygun çerçeve özellik işaretlerini bildirmelidir.
  • [C-0-8] Ayrıca android.request.availableCapabilities mülkü aracılığıyla android.hardware.camera2 kamera özelliklerini ve uygun özellik işaretlerini de beyan ETMELI; Bağlı kamera cihazlarından herhangi biri özelliği destekliyorsa özellik işaretini tanımlamalıdır.
  • [C-0-9] Kamera tarafından yeni bir resim çekildiğinde ve resmin girişi medya mağazasına eklendiğinde Camera.ACTION_NEW_PICTURE intent'ini YAYITLAMALIDIR.
  • [C-0-10] Kamera tarafından yeni bir video kaydedildiğinde ve resmin girişi medya mağazasına eklendiğinde Camera.ACTION_NEW_VIDEO intent'ini YAYITLAMALIDIR.

7.5.5. Kamera yönü

Cihaz uygulamalarında ön veya arka kamera varsa bu kameralar:

  • [C-1-1] Kameranın uzun boyutu ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmelidir. Yani cihaz yatay yönde tutulduğunda kameralar YATAŞ YÖNDE resim çekmek ZORUNDADIR. Bu, cihazın doğal yöneliminden bağımsız olarak geçerlidir. Yani hem yatay birincil cihazlar hem de dikey birincil cihazlar için geçerlidir.

7.6. Bellek ve Depolama

7.6.1. Minimum Bellek ve Depolama

Cihaz uygulamaları:

  • [C-0-1] Uygulamaların veri dosyalarını indirmek için KULLANABİLECEKLERİ bir İndirme Yöneticisi İÇERMELİDİR ve en az 100 MB boyutunda tekil dosyaları varsayılan "önbelleğe alma" konumuna indirebilmelidir.

7.6.2. Uygulama Ortak Depolama Alanı

Cihaz uygulamaları:

  • [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı sunmalıdır. Bu depolama alanı genellikle "paylaşılan harici depolama alanı", "uygulama tarafından paylaşılan depolama alanı" veya "/sdcard" Linux yolu olarak da adlandırılır.
  • [C-0-2] Depolama alanının dahili bir depolama bileşeninde mi yoksa çıkarılabilir bir depolama ortamında (ör. Secure Digital kart yuvası) mı uygulandığından bağımsız olarak, varsayılan olarak bağlı ortak depolama alanıyla yapılandırılmalıdır.
  • [C-0-3] Uygulamanın ortak depolama alanını doğrudan sdcard Linux yoluna bağlamalı veya sdcard ile gerçek bağlama noktasına bir Linux sembolik bağlantısı eklemelidir.
  • [C-0-4] Bu paylaşılan depolama alanında android.permission.WRITE_EXTERNAL_STORAGE iznini SDK'da belirtildiği şekilde ZORUNLUDUR. Aksi takdirde, paylaşılan depolama alanı bu izni alan tüm uygulamalar tarafından yazılabilir OLMALIDIR.

Cihaz uygulamaları aşağıdakilerden birini kullanarak yukarıdaki koşulları karşılayabilir:

  • Kullanıcının erişebildiği çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası).
  • Android Açık Kaynak Projesi'nde (AOSP) uygulandığı şekilde dahili (çıkarılamaz) depolama alanının bir kısmı.

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

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

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

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

Cihaz uygulamaları birden fazla ortak depolama yolu içeriyorsa (ör. hem SD kart yuvası hem de ortak dahili depolama alanı) bu uygulamalar:

  • [C-3-1] Yalnızca paketlerine özel dizinlere veya ACTION_OPEN_DOCUMENT_TREE intent'inin tetiklenmesiyle döndürülen URI içinde yazma dışında, ikincil harici depolamaya yazmak için yalnızca WRITE_EXTERNAL_STORAGE iznine sahip önceden yüklenmiş ve ayrıcalıklı Android uygulamalarına İZİN VERMELİDİR.

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

  • [C-3-1] Uygulamanın ortak depolama alanındaki verilere ana bilgisayardan erişmek için bir mekanizma SAĞLANMALIDIR.
  • Android'in medya tarayıcısı hizmeti ve android.provider.MediaStore aracılığıyla her iki depolama yolundaki içerikleri şeffaf bir şekilde GÖSTERMELİDİR.
  • USB yığın depolama alanı kullanabilir ancak bu koşulu karşılamak için Medya Aktarım Protokolü KULLANMALIDIR.

Cihaz uygulamalarında USB çevre birimi modu olan ve Medya Aktarımı Protokolü'nü destekleyen bir USB bağlantı noktası varsa:

  • Referans Android MTP ana makinesi Android Dosya Aktarımı ile uyumlu OLMALIDIR.
  • 0x00 USB cihaz sınıfını raporlamalıdır.
  • "MTP" USB arayüzü adını bildirmelidir.

7.6.3. Dahili Hale Getirilebilir Depolama Alanı

Cihazın, televizyonun aksine mobil olması bekleniyorsa cihaz uygulamaları şunlardır:

  • [SR] Kabul edilebilir depolama alanının yanlışlıkla bağlantısının kesilmesi veri kaybına/bozulmasına neden olabileceğinden, kabul edilebilir depolama alanını uzun süreli olarak sabit bir konumda uygulamanız önemle ÖNERİLİR.

Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya başka bir koruyucu kapak gibi uzun süreli sabit bir konumdaysa cihaz uygulamaları şu şekildedir:

7.7. USB

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

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

7.7.1. USB çevre birimi modu

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

  • [C-1-1] Bağlantı noktası, standart A tipi veya C tipi USB bağlantı noktası olan bir USB ana makinesine bağlanabilmelidir.
  • [C-1-2] USB standart cihaz tanımlayıcısı içinde android.os.Build.SERIAL aracılığıyla iSerialNumber değerinin doğru değerini bildirmelidir.
  • [C-1-3] Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını algılamalı ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri algılamalıdır.
  • [SR] Bağlantı noktası mikro-B, mikro-AB veya Type-C USB form faktörünü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılaması önemle ÖNERİLİR.
  • [SR] Bağlantı noktası, cihazın alt kısmında (doğal yönü) yer ALMALIDIR veya cihaz alt tarafa bakacak şekilde yönlendirildiğinde ekranın doğru şekilde çizilmesi için tüm uygulamalarda (ana ekran dahil) yazılım ekranı döndürülmesi etkinleştirilmelidir. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılamaları önemle ÖNERİLİR.
  • [SR] USB Pil Şarjı spesifikasyonunun 1.2 numaralı düzeltmesinde belirtildiği gibi, HS bip sesi ve trafik sırasında 1,5 A akım çekme desteği UYGULANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılaması önemle ÖNERİLİR.
  • [SR] Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya alıcı/kaynak rollerini değiştiren özel şarj yöntemlerinin desteklenmemesi önemle ÖNERİLİR. Aksi takdirde, standart USB Güç Aktarımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunları yaşanabilir. Bu, "ŞİDDETLE ÖNERİLİR" olarak belirtilse de gelecekteki Android sürümlerinde tüm C tipi cihazların standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemesi GEREKEBİLİR.
  • [SR] Type-C USB ve USB ana makine modunu desteklediklerinde veri ve güç rolü değişimi için Güç Bağlantısı'nı desteklemeleri önemle ÖNERİLİR.
  • Yüksek voltajlı şarj için güç aktarımı ve ekran çıkışı gibi alternatif modları desteklemelidir.
  • Android Open Accessory (AOA) API'sini ve spesifikasyonunu Android SDK dokümanlarında belirtildiği gibi UYGULAMALIDIR.

USB bağlantı noktası içeren cihaz uygulamaları AOA spesifikasyonunu uygularsa:

  • [C-2-1] android.hardware.usb.accessory donanım özelliği için destek BEYAN EDİLMELİDİR.
  • [C-2-2] USB toplu depolama sınıfı, USB toplu depolama biriminin arayüz açıklaması iInterface dizeninin sonuna "android" dizesini DAHİL ETMELİDİR.

7.7.2. USB ana makine modu

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

  • [C-1-1] Android USB ana makine API'sini Android SDK'da belirtildiği şekilde UYGULAMALI ve android.hardware.usb.host donanım özelliğini desteklediğini BEYAN ETMELİDİR.
  • [C-1-2] Standart USB çevre birimlerini bağlamak için destek UYGULAMALIDIR. Diğer bir deyişle, aşağıdakilerden birini YAPMALIDIR:
    • Cihaz üzerinde C tipi bağlantı noktası bulunmalıdır veya cihaz üzerinde özel bir bağlantı noktasını standart USB C tipi bağlantı noktasına uyarlayan kablolar (USB Type-C cihaz) gönderilmelidir.
    • Cihaz üzerinde A tipi bir bağlantı noktası bulunmalıdır veya cihaz üzerinde özel bir bağlantı noktasını standart bir USB A tipi bağlantı noktasına uyarlayan kablolar gönderilmelidir.
    • Cihaz üzerinde mikro AB bağlantı noktası olmalıdır. Bu bağlantı noktası, standart A tipi bağlantı noktasına uyarlanabilen bir kabloyla birlikte gönderilmelidir.
  • [C-1-3] USB A tipi veya mikro-AB bağlantı noktalarını Type-C bağlantı noktasına (priz) dönüştüren bir adaptörle birlikte GÖNDERİLMEMELİDİR.
  • [SR] Android SDK dokümanlarında belirtildiği gibi USB ses sınıfını uygulamanız önemle tavsiye edilir.
  • Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini desteklemelidir; USB Type-C konnektörler için USB Type-C Kablo ve Konnektör Spesifikasyonu 1.2 Sürümünün Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1, 5 A kaynak akımı reklamı yapmalı veya Micro-AB konnektörler için USB Pil Şarjı Spesifikasyonları 1.2 Sürümünde belirtildiği gibi Aşağı Akım Şarj Bağlantı Noktası(CDP) çıkış akımı aralığını kullanmalıdır.
  • USB Type-C standartlarını uygulamalı ve desteklemelidir.

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

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

Cihaz uygulamaları, ana makine modunu ve Depolama Aksesuar Çerçevesi'ni (SAF) destekleyen bir USB bağlantı noktası içeriyorsa:

  • [C-3-1] Uzaktan bağlı tüm MTP (Medya Aktarım Protokolü) cihazlarını TANIMALI ve içeriklerini ACTION_GET_CONTENT, ACTION_OPEN_DOCUMENT ve ACTION_CREATE_DOCUMENT intent'leri aracılığıyla erişilebilir hâle GETİRMELİDİR. .

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

  • [C-4-1] USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rollü Bağlantı Noktası işlevini UYGULAMALIDIR.
  • [SR] DisplayPort'u desteklemesi İYİCE ÖNERİLİR, USB Süper Hızlı Veri Hızlarını DESTEKLEMELİDİR ve veri ve güç rolü değişimi için Güç Aktarımı'nı desteklemesi İYİCE ÖNERİLİR.
  • [SR] USB Type-C Kablo ve Konnektör Spesifikasyonu 1.2 Sürümünün A Eki'nde açıklandığı şekilde Ses Adaptörü Aksesuar Modu'nun DESTEKLENMEMESİ KESİNLİKLE ÖNERİLİR.
  • Cihaz form faktörüne en uygun Try.* modelini UYGULAMALI. Örneğin, el cihazı Try.SNK modelini UYGULAMALIDIR.

7.8. Ses

7.8.1. Mikrofon

Cihaz uygulamalarında mikrofon varsa:

Cihaz uygulamalarında mikrofon atlanmışsa:

  • [C-2-1] android.hardware.microphone özellik sabitini HİÇBİR ZAMAN bildirmemelidir.
  • [C-2-2] Ses kaydı API'sini 7. bölüm uyarınca en azından no-ops olarak UYGULAMALIDIR.

7.8.2. Ses Çıkışı

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

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

  • [C-2-1] android.hardware.audio.output özelliğini bildirmemelidir.
  • [C-2-2] Ses çıkışıyla ilgili API'ler en azından işlemsiz olarak uygulanmalıdır.

Bu bölümde "çıkış bağlantı noktası", 3, 5 mm ses jakı, HDMI veya USB ses sınıfına sahip USB ana makine modu bağlantı noktası gibi bir fiziksel arayüzdür. Bluetooth, kablosuz ağ veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" içerme olarak kabul edilmez.

7.8.2.1. Analog Ses Bağlantı Noktaları

Android ekosisteminde 3, 5 mm ses fişi kullanan kulaklık ve diğer ses aksesuarlarıyla uyumlu olması için bir cihaz uygulamasında bir veya daha fazla analog ses bağlantı noktası varsa ses bağlantı noktalarından en az biri 4 iletkenli 3, 5 mm ses jakı OLMALIDIR.

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

  • [C-1-1] Mikrofonlu stereo kulaklıklarda ve stereo kulaklıklarda ses oynatmayı DESTEKLEMELİDİR.
  • [C-1-2] CTIA pin-out sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR.
  • [C-1-3] Ses fişindeki mikrofon ile topraklama iletkenleri arasındaki eşdeğer empedans aralığının aşağıdaki 3 aralığı için anahtar kodlarının algılanması ve eşlenmesi desteklenmelidir:
    • 70 ohm veya daha az: KEYCODE_HEADSETHOOK
    • 210-290 ohm: KEYCODE_VOLUME_UP
    • 360-680 ohm: KEYCODE_VOLUME_DOWN
  • [C-1-4] ACTION_HEADSET_PLUG, fiş takıldığında tetiklenmelidir ancak yalnızca fişteki tüm kontaklar, jaktaki ilgili segmentlerine değdikten sonra tetiklenmelidir.
  • [C-1-5] 32 ohm hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
  • [C-1-6] Mikrofon önyargı voltajı 1,8 V ile 2,9 V arasında OLMALIDIR.
  • [SR] Ses fişindeki mikrofon ile topraklama iletkenleri arasındaki eşdeğer empedans aralığının algılanması ve anahtar koduyla eşlenmesi önemle tavsiye edilir:
    • 110-180 ohm: KEYCODE_VOICE_ASSIST
  • OMTP pin-out sırasına sahip ses fişlerini DESTEKLEMELİDİR.
  • Mikrofonlu stereo kulaklıklardan ses kaydı desteklenmelidir.

Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa, mikrofon destekleniyor ve android.intent.action.HEADSET_PLUG 1 olarak ayarlanmış ek değer mikrofonuyla yayınlanıyorsa:

  • [C-2-1] Takılı ses aksesuarındaki mikrofonun algılanması desteklenmelidir.

7.8.3. Ultrasona yakın

Ultrason ses yakını, 18,5 kHz ile 20 kHz arasındaki banttır.

Cihaz uygulamaları:

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

PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND "true" ise VOICE_RECOGNITION ve UNPROCESSED ses kaynakları aşağıdaki koşulları KESİNLİKLE karşılamalıdır:

  • [C-1-1] Mikrofonun 18,5 kHz ila 20 kHz bandındaki ortalama güç yanıtı, 2 kHz'deki yanıtın en fazla 15 dB altında OLMALIDIR.
  • [C-1-2] -26 dBFS'de 19 kHz ton için mikrofonun 18,5 kHz ile 20 kHz arasındaki ağırlanmamış sinyal-gürültü oranı 50 dB'den düşük OLMAMALIDIR.

PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND "true" ise:

  • [C-2-1] Hoparlörün 18,5 kHz - 20 kHz arasındaki ortalama yanıtı, 2 kHz'deki yanıtın 40 dB altında OLMAYACAK.

7.9. Sanal Gerçeklik

Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "Sanal Gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamalarında bu API'ler ve davranışlar bu bölümde açıklandığı şekilde doğru şekilde uygulanmalıdır.

7.9.1. Sanal Gerçeklik Modu

Android, bildirimlerin stereoskopik olarak oluşturulmasını yöneten ve bir VR uygulaması kullanıcının odağındayken tek gözlü sistem kullanıcı arayüzü bileşenlerini devre dışı bırakan VR Modu desteği içerir.

7.9.2. Sanal Gerçeklik Yüksek Performans

Cihaz uygulamaları, android.hardware.vr.high_performance özellik bayrağı aracılığıyla daha uzun kullanıcı süreleri için yüksek performanslı VR desteğini tanımlarsa:

  • [C-1-1] En az 2 fiziksel çekirdeğe sahip OLMALIDIR.
  • [C-1-2] android.software.vr.mode feature beyan EDİLMELİDİR.
  • [C-1-3] Sürekli performans modunu DESTEKLEMELİDİR.
  • [C-1-4] OpenGL ES 3.2 desteklenmelidir.
  • [C-1-5] Vulkan Donanım Seviyesi 0'ı destekleMELİ ve Vulkan Donanım Seviyesi 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 uzantılarını UYGULAMALI ve uzantıları kullanılabilir EGL uzantıları listesinde göstermeli.
  • [C-1-7] GPU ve ekran, paylaşılan ön arabelleğe erişimi senkronize edebilmelidir. Böylece, VR içeriğinin iki oluşturma bağlamıyla 60 fps'de dönüşümlü olarak oluşturulması, görünür yırtılma kusurları olmadan görüntülenebilir.
  • [C-1-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 özelliklerini UYGULAMALI ve uzantıları kullanılabilir GL uzantıları listesinde göstermeli.
  • [C-1-9] NDK'da açıklandığı gibi AHardwareBuffer işaretleri AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER ve AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA için destek UYGULANMALIDIR.
  • [C-1-10] Birden fazla katmanlı AHardwareBuffers desteği UYGULANMALIDIR.
  • [C-1-11] En az 3840x2160@30fps-40Mbps (1920x1080@30fps-10Mbps'lik 4 örnek veya 1920x1080@60fps-20Mbps'lik 2 örnekle eşdeğer) H.264 kod çözme desteği ZORUNLUDUR.
  • [C-1-12] HEVC ve VP9'yi DESTEKLEMELİ, en az 1920x1080@30fps-10Mb/sn çözme kapasitesine sahip OLMALI ve 3840x2160@30fps-20Mb/sn (1920x1080@30fps-5Mb/sn'nin 4 örneğine eşdeğer) çözme kapasitesine SAHİP OLMALIDIR.
  • [C-1-13] HardwarePropertiesManager.getDeviceTemperatures API'yi desteklemeli ve deri sıcaklığı için doğru değerler döndürmelidir.
  • [C-1-14] Yerleşik ekrana sahip OLMALIDIR ve çözünürlüğü en az FullHD(1080p) OLMALIDIR. QuadHD (1440p) veya daha yüksek çözünürlük kullanılması İYİCE ÖNERİLİR.
  • [C-1-15] Ekran, VR modundayken en az 60 Hz'de güncellenmelidir.
  • [C-1-16] Ekran gecikmesi (gri-gri, beyaz-siyah ve siyah-beyaz geçiş süresi ölçülmüştür) 6 milisaniyeden AZ OLMALIDIR.
  • [C-1-17] Ekran, 5 milisaniyeden az kalıcılığa sahip düşük kalıcılığa sahip bir modu DESTEKLEMELİDİR. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
  • [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzatma bölümü 7.4.3 desteklenmelidir.
  • [C-1-19] Aşağıdaki varsayılan sensör türlerinin tümü için Doğrudan Kanal Türü'nü desteklemeli ve doğru şekilde bildirmelidir:
    • TYPE_ACCELEROMETER
    • TYPE_ACCELEROMETER_UNCALIBRATED
    • TYPE_GYROSCOPE
    • TYPE_GYROSCOPE_UNCALIBRATED
    • TYPE_MAGNETIC_FIELD
    • TYPE_MAGNETIC_FIELD_UNCALIBRATED
  • [C-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ğinin desteklenmesi önemle ÖNERİLİR ve android.hardware.hifi_sensors için jiroskop, ivme ölçer ve manyetometreyle ilgili koşulları karşılamalıdır.
  • Ön plan uygulamasına özel bir çekirdek sağlayabilir ve en üstteki ön plan uygulamasına özel CPU çekirdeklerinin numaralarını döndürmek için Process.getExclusiveCores API'yi destekleyebilir. Özel çekirdek destekleniyorsa çekirdek, üzerinde başka kullanıcı alanı işlemlerinin (uygulama tarafından kullanılan cihaz sürücüleri hariç) çalıştırılmasına İZİN VERMEK ZORUNDADIR ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına İZİN VEREBİLİR.

8. Performans ve Güç

Bazı minimum performans ve güç ölçütleri kullanıcı deneyimi açısından kritiktir ve geliştiricilerin uygulama geliştirirken kullanacağı temel varsayımları etkiler.

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

Uygulamalar ve oyunlar için tutarlı bir kare hızı ve yanıt süreleri sağlamak üzere belirli minimum şartlar karşılanıyorsa son kullanıcıya sorunsuz bir kullanıcı arayüzü sağlanabilir. Cihaz türlerine bağlı olarak cihaz uygulamalarında, 2. bölümde açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev geçişi için ölçülebilir koşullar OLABİLİR.

8.2. Dosya G/Ç Erişim Performansı

Uygulamanın özel veri depolama alanında (/data bölümü) tutarlı bir dosya erişim performansı için ortak bir referans noktası sağlamak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak uygun bir beklenti belirlemelerine olanak tanır. Cihaz türlerine bağlı olarak cihaz uygulamalarında, aşağıdaki okuma ve yazma işlemleri için 2. bölümde açıklanan belirli şartlar OLABİLİR:

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

8.3. Güç Tasarrufu Modları

Android, pil kullanımını optimize etmek için Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarını içerir. [SR] Bu modlardan muaf tutulan tüm uygulamaların son kullanıcıya gösterilmesi önemle ÖNERİLİR. [SR] Bu güç tasarrufu modlarının tetiklenmesi, bakımı, uyanma algoritmaları ve genel sistem ayarlarının kullanımının Android Açık Kaynak Projesi'nden AYRILMAMASI önemle ÖNERİLİR.

Android cihaz uygulamaları, güç tasarrufu modlarına ek olarak Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) tarafından tanımlanan 4 uyku güç durumundan herhangi birini veya tümünü UYGULAYABİLİR.

Cihaz uygulamaları, ACPI tarafından tanımlandığı şekilde S3 ve S4 güç durumlarını uygularsa:

  • [C-1-1] Yalnızca cihazın fiziksel bir parçası olan bir kapak kapatıldığında bu durumlara GİRMELİDİR.

8.4. Güç Tüketimi Muhasebesi

Güç tüketiminin daha doğru bir şekilde hesaplanması ve raporlanması, uygulama geliştiriciye uygulamanın güç kullanım şeklini optimize etmek için hem teşvikler hem de araçlar sağlar.

Cihaz uygulamaları:

  • [SR] Android Open Source Project sitesinde belirtildiği gibi, her donanım bileşeninin mevcut tüketim değerini ve bileşenlerin zaman içinde pilin yaklaşık olarak ne kadar tükenmesine neden olduğunu tanımlayan bileşen başına güç profili sağlanması önemle ÖNERİLİR.
  • [SR] Tüm güç tüketimi değerlerinin miliamper saat (mAh) cinsinden raporlanması önemle ÖNERİLİR.
  • [SR] Her işlemin UID'si başına CPU güç tüketimini bildirmeniz önemle ÖNERİLİR. Android Açık Kaynak Projesi, uid_cputime çekirdek modülü uygulamasıyla bu koşulu karşılar.
  • [SR] Bu güç kullanımını, adb shell dumpsys batterystats kabuk komutu aracılığıyla uygulama geliştiriciye sunmanız önemle ÖNERİLİR.
  • Donanım bileşeninin güç kullanımını bir uygulamaya bağlayamıyorsanız donanım bileşeninin kendisine bağlanmalıdır.

8.5. Tutarlı Performans

Uzun süre çalışan yüksek performanslı uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırlamaları nedeniyle CPU'nun sınırlandırılması nedeniyle önemli ölçüde dalgalanabilir. Android, cihazın kapasitesi yeterli olduğunda ön plandaki en önemli uygulamanın, bu tür dalgalanmaları gidermek için sistemin kaynakların tahsisini optimize etmesini isteyebileceği programatik arayüzler içerir.

Cihaz uygulamaları:

Cihaz uygulamaları, Sürdürülebilir Performans Modu'nu desteklediğini bildirirse:

  • [C-1-1] Uygulama istediğinde, en üstteki ön plan uygulamasına en az 30 dakika boyunca tutarlı bir performans düzeyi SAĞLAMALIDIR.
  • [C-1-2] Window.setSustainedPerformanceMode() API'sini ve ilgili diğer API'leri UYGUNLAMALIDIR.

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

  • En üst ön plan uygulaması tarafından ayrılabilecek en az bir özel çekirdek SAĞLANMALIDIR.

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

  • [C-2-1] Üst ön plan uygulaması tarafından ayrılabilecek özel çekirdeklerin kimlik numaralarını Process.getExclusiveCores() API yöntemi aracılığıyla bildirmelidir.
  • [C-2-2] Uygulamanın özel çekirdeklerde çalışması için kullandığı cihaz sürücüleri dışındaki hiçbir kullanıcı alanı işlemine izin VERMEMELİDİR ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına izin VEREBİLİR.

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

9. Güvenlik Modeli Uyumluluğu

Cihaz uygulamaları:

  • [C-0-1] Android geliştirici dokümanlarında API'ler için Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli UYGULANMALIDIR.

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

9.1. İzinler

Cihaz uygulamaları:

  • [C-0-1] Android geliştirici belgelerinde tanımlandığı şekilde Android izin modelini desteklemelidir. Daha açık belirtmek gerekirse, SDK dokümanlarında açıklandığı şekilde tanımlanan her izni UYGULAMALARI GEREKIR; hiçbir izin atlanmamalı, değiştirilmemeli veya yok sayılmamalıdır.

  • Yeni izin kimliği dizelerinin android.\* ad alanında olmaması koşuluyla ek izinler EKLEYEBİLİRİ.

  • [C-0-2] protectionLevel değeri PROTECTION_FLAG_PRIVILEGED olan izinler YALNIZCA sistem resminin ayrıcalıklı yollarına önceden yüklenmiş uygulamalara ve her uygulama için açıkça izin verilenler listesinde yer alan izinlerin alt kümesine VERİLMELİDİR. AOSP uygulaması, etc/permissions/ yolundaki dosyalardan her uygulama için izin verilenler listesindeki izinleri okuyup dikkate alarak ve ayrıcalıklı yol olarak system/priv-app yolunu kullanarak bu koşulu karşılar.

Tehlikeli koruma düzeyine sahip izinler çalışma zamanı izinleridir. targetSdkVersion değeri 22'den büyük olan uygulamalar bunları çalışma zamanında ister.

Cihaz uygulamaları:

  • [C-0-3] Kullanıcının istenen çalışma zamanı izinlerini verip vermeyeceğine karar vermesi için özel bir arayüz GÖSTERMELİDİR ve ayrıca kullanıcının çalışma zamanı izinlerini yönetmesi için bir arayüz sağlamalıdır.
  • [C-0-4] Her iki kullanıcı arayüzünün de yalnızca bir uygulaması OLMALIDIR.
  • [C-0-5] Aşağıdaki durumlar hariç olmak üzere önceden yüklenmiş uygulamalara çalışma zamanı izni VERMEMELİDİR:
  • Uygulama tarafından kullanılmadan önce kullanıcının izni alınabilir.
  • Çalışma zamanında istenen izinler, önceden yüklenmiş uygulamanın varsayılan işleyici olarak ayarlandığı bir intent kalıbıyla ilişkilendirilmişse

Cihaz uygulamalarında önceden yüklenmiş bir uygulama varsa veya üçüncü taraf uygulamalarının kullanım istatistiklerine erişmesine izin vermek istiyorsanız:

  • [C-1-1] android.permission.PACKAGE_USAGE_STATS iznini açıklayan uygulamalar için android.settings.ACTION_USAGE_ACCESS_SETTINGS intent'ine yanıt olarak kullanıcıların erişebileceği bir mekanizma sağlayarak kullanım istatistiklerine erişim iznini verme veya iptal etme seçeneği sunmanız önemle ÖNERİLİR.

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

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

9.2. UID ve İşlem İzolasyon

Cihaz uygulamaları:

  • [C-0-1] Her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alanı modelini DESTEKLEMELİDİR.
  • [C-0-2] Güvenlik ve İzinler referansında tanımlandığı şekilde, uygulamaların düzgün bir şekilde 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 izinleri

Cihaz uygulamaları:

9.4. Alternatif Yürütme Ortamları

Cihaz uygulamaları, Dalvik Yürütülebilir Biçimi veya yerel koddan başka bir yazılım ya da teknoloji kullanarak uygulamaları çalıştıran çalışma ortamı içerse bile Android güvenlik ve izin modelinin tutarlılığını korumalıdır. Başka bir deyişle:

  • [C-0-1] Alternatif çalışma zamanları Android uygulamaları OLMALIDIR ve 9. bölümde başka bir yerde açıklandığı gibi standart Android güvenlik modeline uymalıdır.

  • [C-0-2] Alternatif çalışma zamanlarına, çalışma zamanının AndroidManifest.xml dosyasında istenmeyen izinlerle korunan kaynaklara <uses-permission> mekanizması aracılığıyla erişim İZİN VERİLMEMELİDİR.

  • [C-0-3] Alternatif çalışma ortamları, uygulamaların sistem uygulamalarıyla kısıtlanmış Android izinleriyle korunan özellikleri kullanmasına İZİN VERMEMELİDİR.

  • [C-0-4] Alternatif çalışma ortamları Android korumalı alan modeline UYMALIDIR ve alternatif çalışma ortamı kullanan yüklü uygulamalar, paylaşılan kullanıcı kimliği ve imzalama sertifikası gibi standart Android mekanizmaları dışında, cihazda yüklü başka bir uygulamanın korumalı alanını YENIDEN KULLANMAMALIDIR.

  • [C-0-5] Alternatif çalışma ortamları, diğer Android uygulamalarına karşılık gelen korumalı alanlarla başlatılmamalı, bu alanlara erişim izni vermemeli veya bu alanlara erişim izni almamalıdır.

  • [C-0-6] Alternatif çalışma zamanları, süper kullanıcının (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılmamalı, bu ayrıcalıklara sahip olmamalı ya da diğer uygulamalara bu ayrıcalıkları vermemelidir.

  • [C-0-7] Alternatif çalışma zamanlarının .apk dosyaları cihaz uygulamalarının sistem resmine dahil edildiğinde, cihaz uygulamalarında yer alan diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla imzalanmalıdır.

  • [C-0-8] Alternatif çalışma zamanları, uygulamaları yüklerken uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMAK ZORUNDADIR.

  • [C-0-9] Bir uygulamanın, karşılık gelen bir Android izninin bulunduğu bir cihaz kaynağını (ör. kamera, GPS vb.) kullanması gerektiğinde alternatif çalışma zamanı, kullanıcıyı uygulamanın bu kaynağa erişebileceği konusunda BİLGİLENDİRMELİDİR.

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

  • Alternatif çalışma ortamları, uygulamaları PackageManager üzerinden ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir.

  • Alternatif çalışma ortamları, alternatif çalışma ortamı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 ve tam kullanıcı izolasyonu desteği sunar.

  • Birincil harici depolama alanı için çıkarılabilir medya kullanan cihaz uygulamaları çok kullanıcılı özelliği etkinleştirebilir ancak etkinleştirmemelidir.

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

  • [C-1-1] Çok kullanıcılı destek ile ilgili aşağıdaki şartları karşılamalıdır.
  • [C-1-2] Her kullanıcı için, API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli UYGULAMALIDIR.
  • [C-1-3] Her kullanıcı örneği için ayrı ve izole edilmiş paylaşılan uygulama depolama alanı (/sdcard olarak da bilinir) dizinleri OLMALIDIR.
  • [C-1-4] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolanmış olsa bile başka bir kullanıcıya ait dosyaları listelemediğinden, okumadığından veya bu dosyalara yazmadığından EMİN OLMALIDIR.
  • [C-1-5] Çok kullanıcılı mod etkinleştirildiğinde, cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanıyorsa yalnızca sistem tarafından erişilebilen, çıkarılabilir olmayan bir medyada depolanan bir anahtar kullanarak SD kartın içeriğini şifrelemelidir. Bu durumda, ana bilgisayar PC'leri medya dosyalarını okuyamayacağından, ana bilgisayar PC'lerine mevcut kullanıcının verilerine erişim sağlamak için cihaz uygulamalarının MTP'ye veya benzer bir sisteme geçmesi gerekir.

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

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

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

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

9.6. Premium SMS Uyarısı

Android, kullanıcıları giden premium SMS mesajları hakkında uyarma desteği içerir. Premium SMS mesajları, operatöre kayıtlı bir hizmete gönderilen ve kullanıcıdan ücret alınabilecek kısa mesajlardır.

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

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

9.7. Çekirdek Güvenlik Özellikleri

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

  • [C-0-1] SELinux veya başka güvenlik özellikleri Android çerçevesinin altında uygulansa bile mevcut uygulamalarla uyumluluğu KORUMALIDIR.
  • [C-0-2] Bir güvenlik ihlali algılandığında ve Android çerçevesinin altında uygulanan güvenlik özelliği tarafından başarıyla engellendiğinde görünür bir kullanıcı arayüzü OLMAMALISIDIR ancak engellenmemiş bir güvenlik ihlali meydana geldiğinde ve bu durum başarılı bir istismarla sonuçlandığında görünür bir kullanıcı arayüzü OLABİLİR.
  • [C-0-3] SELinux'u veya Android çerçevesinin altında uygulanan diğer güvenlik özelliklerini kullanıcı veya uygulama geliştirici tarafından yapılandırılabilir hale GETİRMEMELİDİR.
  • [C-0-4] Bir API (ör. Cihaz Yönetimi API'si) aracılığıyla başka bir uygulamayı etkileyebilecek bir uygulamanın, uyumluluğu bozan bir politika yapılandırmasına İZİN VERMEMELİDİR.
  • [C-0-5] Android Açık Kaynak Projesi sitesinde açıklandığı gibi her işleme daha dar kapsamlı erişim izni verilebilmesi için medya çerçevesinin birden fazla işleme bölünmesi GEREKİR.
  • [C-0-6] Çok iş parçacıklı programlardan yapılandırılabilir bir politika kullanılarak sistem çağrılarının filtrelenmesine olanak tanıyan bir çekirdek uygulama korumalı alan mekanizması UYGULANMALIDIR. Yukarı yönlü Android Açık Kaynak Projesi, source.android.com'un Çekirdek Yapılandırması bölümünde açıklandığı gibi, seccomp-BPF'yi threadgroup senkronizasyonu (TSYNC) ile etkinleştirerek bu koşulu karşılar.

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

  • [C-0-7] Çekirdek yığın arabelleği taşması korumaları (ör. CONFIG_CC_STACKPROTECTOR_STRONG) UYGULANMALIDIR.
  • [C-0-8] Yürütülebilir kodun salt okunur, salt okunur verilerin yürütülemez ve yazılamaz, yazılabilir verilerin ise yürütülemez olduğu (ör. CONFIG_DEBUG_RODATA veya CONFIG_STRICT_KERNEL_RWX) katı çekirdek bellek korumaları UYGULANMALIDIR.
  • [SR] Yalnızca başlatma sırasında yazılan çekirdek verilerinin, başlatma işleminden sonra salt okunur olarak işaretlenmesi önemle ÖNERİLİR (ör. __ro_after_init).
  • [SR} Kullanıcı alanı ile çekirdek alanı (ör. CONFIG_HARDENED_USERCOPY) arasındaki kopyalarda statik ve dinamik nesne boyutu sınırları kontrolü uygulanması KESİNLİKLE ÖNERİLİR.
  • [SR] Çekirdekte çalışırken kullanıcı alanı belleğini hiçbir zaman çalıştırmamak İYİCE ÖNERİLİR (ör. donanım PXN veya CONFIG_CPU_SW_DOMAIN_PAN ya da CONFIG_ARM64_SW_TTBR0_PAN aracılığıyla taklit edilerek).
  • [SR] Normal kullanıcı kopyası erişim API'leri (ör. donanım PAN'ı veya CONFIG_CPU_SW_DOMAIN_PAN ya da CONFIG_ARM64_SW_TTBR0_PAN üzerinden taklit edilen) dışındaki çekirdekte kullanıcı alanı belleğini hiçbir zaman okumanız veya yazmamanız önemle ÖNERİLİR.
  • [SR] Çekirdek kodunun ve belleğin düzenini rastgele hale getirmek ve rastgeleleştirmeyi tehlikeye atacak maruz kalmalardan kaçınmak (ör. /chosen/kaslr-seed Device Tree node veya EFI_RNG_PROTOCOL aracılığıyla önyükleyici entropisi ile CONFIG_RANDOMIZE_BASE) önemle ÖNERİLİR.

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

  • [C-1-1] SELinux'u UYGULAMALI.
  • [C-1-2] SELinux'un genel yaptırım moduna ayarlanması GEREKİR.
  • [C-1-3] Tüm alanlar zorunlu modda yapılandırılmalıdır. Bir cihaza/tedarikçiye özgü alanlar da dahil olmak üzere izin verilen mod alan adlarına izin verilmez.
  • [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan system/sepolicy klasöründeki neverallow kuralları değiştirilmemeli, atlanmamalı veya değiştirilmemelidir ve politika hem AOSP SELinux alanları hem de cihaza/tedarikçiye özel alanlar için mevcut tüm neverallow kurallarıyla derlenmelidir.
  • Yukarı yönlü Android Open Source Project'in system/sepolicy klasöründe sağlanan varsayılan SELinux politikasını muhafaza ETMELI ve yalnızca kendi cihazlarına özel yapılandırmaları için bu politikaya başka öğeler eklemelidir.

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

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

9.8. Gizlilik

9.8.1. Kullanım Geçmişi

Android, kullanıcının seçimlerinin geçmişini depolar ve bu geçmişi UsageStatsManager tarafından yönetir.

Cihaz uygulamaları:

  • [C-1-1] Bu tür kullanıcı geçmişini makul bir saklama süresi boyunca SAKLAMALIDIR.
  • [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ında, sistemde ekranda gösterilen içerikleri yakalayan ve/veya cihazda oynatılan ses akışını kaydeden işlevler varsa bu uygulamalar:

  • [C-1-1] Bu işlev etkinleştirildiğinde ve aktif olarak görüntü/ses kaydı yapıldığında kullanıcıya sürekli bildirim gönderilmelidir.

Cihaz uygulamaları, kullanıcının bağlamıyla ilgili yararlı bilgiler elde etmek için ortam sesini kaydedebilen, kutudan çıkar çıkmaz etkinleştirilmiş bir bileşen içeriyorsa:

  • [C-2-1] Kayıtlı ham sesi veya orijinal sese veya benzer bir kopyaya dönüştürülebilecek herhangi bir biçimi, açık kullanıcı izni olmadan kalıcı cihaz üzerinde depolama alanında saklamamalı veya cihazdan aktarmamalıdır.

9.8.3. Bağlantı

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

  • [C-1-1] USB bağlantı noktası üzerinden paylaşılan depolama alanının içeriğine erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü GÖSTERMELİDİR.

9.8.4. Ağ Trafiği

Cihaz uygulamaları:

  • [C-0-1] Sistem tarafından güvenilen sertifika yetkilisi (CA) deposu için, yayın öncesi Android Açık Kaynak Projesi'nde sağlanan kök sertifikalarla aynı kök sertifikaları önceden yüklemelidir.
  • [C-0-2] Boş bir kullanıcı kök CA mağazasıyla gönderilmelidir.
  • [C-0-3] Kullanıcı kök CA'sı eklendiğinde kullanıcıya, ağ trafiğinin izlenebilir olduğunu belirten bir uyarı GÖSTERMELİDİR.

Cihaz trafiği bir VPN üzerinden yönlendirilirse cihaz uygulamaları:

  • [C-1-1] Kullanıcıya şunu belirten bir uyarı GÖSTERMELİDİR:
    • Bu ağ trafiği izlenebilir.
    • Bu ağ trafiği, VPN'yi sağlayan belirli VPN uygulaması üzerinden yönlendirilir.

Cihaz uygulamalarında, ağ veri trafiğini bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN izni verilmiş bir VPN hizmetini önceden yükleme) varsayılan olarak etkin olan bir mekanizma varsa bu mekanizmalar:

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

Cihaz uygulamaları, üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için bir kullanıcı özelliği uygularsa:

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

9.9. Veri Depolama Şifreleme

Cihaz uygulamaları, 9.11.1 numaralı bölümde açıklandığı şekilde güvenli bir kilit ekranını destekliyorsa:

  • [C-1-1] Uygulamanın özel verilerinin (/data partition) yanı sıra cihazın kalıcı ve çıkarılamayan bir parçasıysa uygulamanın ortak depolama alanı bölümünün (/sdcard partition) veri depolama şifrelemesini DESTEKLEMELİDİR.

Cihaz uygulamaları, 9.11.1 numaralı bölümde açıklandığı gibi güvenli bir kilit ekranını ve 50 MiB/sn'den yüksek Gelişmiş Şifreleme Standardı (AES) kripto performansıyla veri depolama şifrelemesini destekliyorsa:

  • [C-2-1] Kullanıcı kutudan çıkar çıkmaz kurulum deneyimini tamamladığında veri depolama alanı şifrelemesini varsayılan olarak etkinleştirmelidir. Cihaz uygulamaları, şifreleme varsayılan olarak devre dışı bırakılmış daha eski bir Android sürümünde kullanıma sunulmuşsa bu tür bir cihaz, sistem yazılımı güncellemesiyle şartı karşılayamaz ve bu nedenle muaf tutulabilir.

  • Dosya Tabanlı Şifreleme'yi (FBE) uygulayarak yukarıdaki veri depolama alanı şifreleme şartını karşılamalıdır.

9.9.1. Doğrudan Başlatma

Cihaz uygulamaları:

  • [C-0-1] Depolama alanı şifrelemeyi desteklemeseler bile doğrudan önyükleme modu API'lerini UYGULAMALARI GEREKİR.

  • [C-0-2] Doğrudan Açılış'tan haberdar olan uygulamalara Cihaz Şifrelenmiş (DE) ve Kimlik Bilgisi Şifrelenmiş (CE) depolama konumlarının kullanıcı tarafından kullanılabileceğini bildirmek için ACTION_LOCKED_BOOT_COMPLETED ve ACTION_USER_UNLOCKED Intent'leri yine de yayınlanmalıdır.

9.9.2. Dosya Tabanlı Şifreleme

Cihaz uygulamaları FBE'yi destekliyorsa:

  • [C-1-1] Kullanıcıdan kimlik bilgileri istemeden başlatılmalı ve ACTION_LOCKED_BOOT_COMPLETED mesajı yayınlandıktan sonra Doğrudan Açılış bilincine sahip uygulamaların Cihaz Şifrelenmiş (DE) depolama alanına erişmesine izin vermelidir.
  • [C-1-2] Kimlik Bilgisi Şifrelenmiş (CE) depolamaya yalnızca kullanıcı kimlik bilgilerini (ör. şifre kodu, PIN, desen veya parmak izi) sağlayarak cihazın kilidini açtıktan ve ACTION_USER_UNLOCKED mesajı yayınlandıktan sonra izin VERMELİDİR.
  • [C-1-3] Kullanıcı tarafından sağlanan kimlik bilgileri olmadan CE korumalı depolama alanının kilidini açma yöntemi SUNMAMALIDIR.
  • [C-1-4] Doğrulanmış Başlatma'yı desteklemeli ve DE anahtarlarının cihazın donanım güven köküne kriptografik olarak bağlandığından emin olmalıdır.
  • [C-1-5] XTS modunda 256 bit anahtar uzunluğuna sahip AES kullanılarak dosya içeriklerinin şifrelenmesini DESTEKLEMELİDİR.
  • [C-1-6] CBC-CTS modunda 256 bit anahtar uzunluğuna sahip AES kullanılarak dosya adının şifrelenmesini DESTEKLEMELİDİR.

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

  • [C-1-7] Kriptografik olarak donanım destekli bir anahtar deposuna bağlı OLMALIDIR.

  • [C-1-8] CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine BAĞLANMALIDIR.
  • [C-1-9] Kullanıcı kilit ekranı kimlik bilgilerini belirtmemişse CE anahtarları varsayılan bir şifre koduna BAĞLANMALIDIR.
  • [C-1-10] Benzersiz ve farklı OLMALIDIR. Başka bir deyişle, hiçbir kullanıcının CE veya DE anahtarı başka bir kullanıcının CE veya DE anahtarıyla eşleşmemelidir.

  • Önceden yüklenmiş temel uygulamaları (ör. Alarm, Telefon, Mesajlar) Doğrudan Önyükleme'den haberdar ETMELI.

  • Dosya içeriği ve dosya adı şifrelemesi için alternatif şifreler, anahtar uzunlukları ve modları DESTEKLEYEBİLİR ancak varsayılan olarak zorunlu olarak desteklenen şifreleri, anahtar uzunluklarını ve modları KULLANMAK ZORUNDADIR.

Yukarı akış Android Açık Kaynak projesi, Linux çekirdeğinin ext4 şifreleme özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.

9.9.3. Tam Disk Şifreleme

Cihaz uygulamaları tam disk şifrelemeyi (FDE) destekliyorsa:

  • [C-1-1] 128 bit (veya daha büyük) anahtar ve depolama için tasarlanmış bir mod (ör. AES-XTS, AES-CBC-ESSIV) ile AES kullanılmalıdır.
  • [C-1-2] Şifreleme anahtarını sarmalamak için varsayılan bir şifre kodu KULLANMALIDIR ve şifreleme anahtarını şifrelenmeden hiçbir zaman depolama alanına YAZMAMALIDIR.
  • [C-1-3] Kullanıcı açıkça devre dışı bırakmadığı sürece, şifreleme anahtarı varsayılan olarak AES ile şifrelenmelidir.Etkin kullanımda olduğu durumlar hariç, kilit ekranı kimlik bilgileri yavaş bir germe algoritması (ör. PBKDF2 veya scrypt) kullanılarak uzatılmalıdır.
  • [C-1-4] Kullanıcı kilit ekranı kimlik bilgilerini belirtmemişse veya şifreleme için şifre kodu kullanımını devre dışı bırakmışsa ve cihaz donanım destekli bir anahtar kutusu sağlıyorsa yukarıdaki varsayılan şifre uzatma algoritması, anahtar kutusuna kriptografik olarak bağlı OLMALIDIR.
  • [C-1-5] Şifreleme anahtarı cihazdan GÖNDERİLMEMEMELİDİR (kullanıcı şifre kodu ve/veya donanıma bağlı anahtarla sarmalanmış olsa bile).

Yukarı akış Android Açık Kaynak projesi, Linux çekirdeğindeki dm-crypt özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.

9.10. Cihaz bütünlüğü

Aşağıdaki şartlar, cihaz bütünlüğünün durumuyla ilgili şeffaflık sağlar. Cihaz uygulamaları:

  • [C-0-1] Sistem API yöntemi PersistentDataBlockManager.getFlashLockState() aracılığıyla, önyükleyici durumunun sistem görüntüsünün yanıp sönmesine izin verip vermediğini doğru şekilde bildirmelidir. FLASH_LOCK_UNKNOWN durumu, bu yeni sistem API yönteminin mevcut olmadığı Android'in önceki bir sürümünden yeni sürüme geçen 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ı özelliği destekliyorsa:

  • [C-1-1] Platform özelliği bayrağı android.software.verified_boot İSTENİR.
  • [C-1-2] Her önyükleme sırasında doğrulama YAPILMALIDIR.
  • [C-1-3] Doğrulama, güvenin kökü olan ve sistem bölümüne kadar giden değişmez bir donanım anahtarından BAŞLATILMALIDIR.
  • [C-1-4] Bir sonraki aşamadaki kodu yürütmeden önce bir sonraki aşamadaki tüm baytların bütünlüğünü ve özgünlüğünü kontrol etmek için doğrulamanın her aşamasını UYGULAMALIDIR.
  • [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'nin mevcut önerileri kadar güçlü doğrulama algoritmaları KULLANMALIDIR.
  • [C-1-6] Kullanıcı yine de önyükleme yapmayı denemeyi kabul etmediği sürece, sistem doğrulaması başarısız olduğunda önyüklemenin tamamlanmasına İZİN VERMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALISDIR.
  • [C-1-7] Kullanıcı, önyükleme yükleyicinin kilidini açıkça açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERMEMELİDİR.
  • [SR] Cihazda birden fazla ayrı çip (ör. radyo, özel görüntü işlemcisi) varsa bu çiplerin her birinin önyükleme işleminin, önyükleme sırasında her aşamasının doğrulanması önemle ÖNERİLİR.
  • [SR] Açılış yükleyicinin kilidi açıldığında bozulmaya karşı korumalı depolama alanı kullanılması KESİNLİKLE ÖNERİLİR. Bozulmaya karşı korumalı depolama, önyükleme yükleyicinin depolama alanında bozulma olup olmadığını HLOS'un (Yüksek Seviye İşletim Sistemi) içinden algılayabileceği anlamına gelir.
  • [SR] Cihaz kullanılırken kullanıcıya sorma ve önyükleme yükleyici kilitli moddan önyükleme yükleyici kilidi açık moda geçişe izin vermeden önce fiziksel onay istemek önemle ÖNERİLİR.
  • [SR] HLOS (ör. önyükleme, sistem bölümleri) için geri alma koruması uygulanması ve izin verilen minimum OS sürümünü belirlemek için kullanılan meta verileri depolamak amacıyla bozulmaya karşı korumalı depolama alanı kullanılması KESİNLİKLE ÖNERİLİR.
  • Kalıcı donanım yazılımı (ör. modem, kamera) içeren tüm bileşenler için geri alma koruması UYGULANMALIDIR ve izin verilen minimum sürümü belirlemek için kullanılan meta verileri depolamak üzere bozulmaya karşı korumalı depolama alanı KULLANILMALIDIR.

Yukarı yönlü Android Açık Kaynak Projesi, external/avb/ deposunda bu özelliğin tercih edilen bir uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleme yükleyiciye entegre edilebilir.

Cihaz uygulamaları , özellik işaretini android.hardware.ram.normal raporlarsa:

  • [C-2-1] Cihaz bütünlüğü için doğrulanmış başlatmayı DESTEKLEMELİDİR.

Bir cihaz uygulaması, Android'in önceki bir sürümünde doğrulanmış önyüklemeyi desteklemeden kullanıma sunulmuşsa bu tür bir cihaz, sistem yazılımı güncellemesiyle bu özellik için destek ekleyemez ve bu nedenle şarttan muaf tutulur.

9.11. Anahtarlar ve Kimlik Bilgileri

Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları bir kapsayıcıda depolamalarına ve KeyChain API veya Keystore API aracılığıyla kriptografik işlemlerde kullanmalarına olanak tanır. Cihaz uygulamaları:

  • [C-0-1] En az 8.192 anahtarın içe aktarılmasına izin VERMELİDİR.
  • [C-0-2] Kilit ekranı kimlik doğrulaması, deneme sayısını sınırlamalı ve üstel bir geri çekilme algoritmasına sahip olmalıdır. 150 başarısız denemeden sonra, deneme başına en az 24 saat bekleme süresi OLMALIDIR.
  • Oluşturulabilecek anahtar sayısını sınırlamamalıdır

Cihaz uygulaması güvenli kilit ekranını desteklediğinde:

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

Bir cihaz uygulaması daha önce başlatılmışsa ve bu cihaz, donanım destekli anahtar deposu gerektiren android.hardware.fingerprint özelliğini beyan etmiyorsa donanım destekli anahtar deposu bulundurma şartından muaftır.

9.11.1. Güvenli Kilit Ekranı

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

  • [C-1-1] Ekran otomatik kilidinin ertelendiği veya ekran kilidinin güven aracısı tarafından açılabildiği durumlarda kullanıcıyı Ayarlar ve Kilit Ekranı kullanıcı arayüzünde GÖSTERMELİDİR. AOSP, "Otomatik kilitleme ayarı" ve "Güç düğmesi anında kilitleme ayarı" menüleri için metin açıklaması ve kilit ekranında ayırt edilebilir bir simge göstererek koşulu karşılar.
  • [C-1-2] DevicePolicyManager sınıfındaki tüm güven aracısı API'lerine (ör. KEYGUARD_DISABLE_TRUST_AGENTS sabit) uymalı ve bunları eksiksiz şekilde uygulamalıdır.
  • [C-1-3] Birincil kişisel cihaz (ör. el cihazı) olarak kullanılan bir cihazda TrustAgentService.addEscrowToken() işlevini tam olarak UYGULAMAMALIDIR ancak işlevi genellikle paylaşılan cihaz uygulamalarında tam olarak UYGULAYABİLİR.
  • [C-1-4] TrustAgentService.addEscrowToken() tarafından eklenen jetonları cihazda saklamadan ÖNCE şifrelemelidir.
  • [C-1-5] Şifreleme anahtarı cihazda DEPOLANAMAZ.
  • [C-1-6] Veri depolama alanının şifresini çözmek için emanet jetonunu etkinleştirmeden önce kullanıcıyı güvenlikle ilgili sonuçlar hakkında BİLGİLENDİRMELİDİR.

Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya değiştirirse bu tür bir kimlik doğrulama yönteminin ekranı kilitlemek için güvenli bir yöntem olarak değerlendirilmesi gerekir.

Cihaz uygulamaları, bilinen bir gizli bilgiye dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya değiştirirse bu tür bir kimlik doğrulama yönteminin ekranı kilitlemek için güvenli bir yöntem olarak değerlendirilmesi için:

  • [C-3-1] İzin verilen en kısa giriş uzunluğunun entropisi 10 bitten büyük OLMALIDIR.
  • [C-3-2] Olası tüm girişlerin maksimum entropisi 18 bitten büyük OLMALIDIR.
  • [C-3-3] AOSP'de uygulanan ve sağlanan mevcut kimlik doğrulama yöntemlerinden (PIN,desen, şifre) hiçbirini İÇERMEMELİDİR.
  • [C-3-4] Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını PASSWORD_QUALITY_SOMETHING'dan daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setPasswordQuality() yöntemi aracılığıyla ayarladığında DEVRE DIŞI BIRAKILMALIDIR.

Cihaz uygulamaları, fiziksel jetona veya konuma dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler ya da değiştirirse bu tür bir kimlik doğrulama yönteminin ekranı kilitlemek için güvenli bir yöntem olarak değerlendirilmesi için:

  • [C-4-1] Bilinen bir gizliye dayalı ve güvenli kilit ekranı olarak değerlendirilme şartlarını karşılayan birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizmaya SAHİP OLMALIDIR.
  • [C-4-2] Devre dışı bırakılmalı ve yalnızca cihaz politikası denetleyicisi (DPC) uygulaması politikayı DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS) yöntemiyle veya PASSWORD_QUALITY_UNSPECIFIED'den daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setPasswordQuality() yöntemiyle ayarladığında ekranın kilidini açmak için birincil kimlik doğrulamasına izin vermelidir.
  • [C-4-3] Kullanıcıdan en az 72 saatte bir birincil kimlik doğrulama (ör. PIN, desen, şifre) isteğinde bulunulmalıdır.

Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini biyometriye göre ekler veya değiştirirse bu tür bir kimlik doğrulama yönteminin ekranı kilitlemek için güvenli bir yöntem olarak kabul edilmesi gerekir.

  • [C-5-1] Bilinen bir gizli anahtara dayalı ve güvenli kilit ekranı olarak değerlendirilme şartlarını karşılayan birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizmaya SAHİP OLMALIDIR.
  • [C-5-2] Devre dışı bırakılmalı ve yalnızca Device Policy Controller (DPC) uygulaması DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_FINGERPRINT) yöntemini çağırarak keguard özellik politikasını ayarladığında ekranın kilidini açmak için birincil kimlik doğrulamasına izin vermelidir.
  • [C-5-3] 7.3.10 bölümünde açıklandığı gibi, yanlış kabul oranının parmak izi sensörü için gerekenden eşit veya daha güçlü olması GEREKİR. Aksi takdirde devre dışı bırakılmalı ve yalnızca Device Policy Controller (DPC) uygulaması, şifre kalitesi politikasını PASSWORD_QUALITY_BIOMETRIC_WEAK'dan daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setPasswordQuality() yöntemi aracılığıyla ayarladığında birincil kimlik doğrulamanın ekranın kilidini açmasına izin vermelidir.
  • [SR] 7.3.10 bölümünde açıklandığı şekilde, parmak izi sensörü için gerekenlere eşit veya daha güçlü sahtekarlık ve kimliğe bürünme kabul oranlarının olması önemle ÖNERİLİR.

Sahtekarlık ve kimliğe bürünme kabul oranları, 7.3.10 numaralı bölümde açıklandığı şekilde bir parmak izi sensörü için gerekenle eşit veya daha güçlü değilse ve Cihaz Politikası Denetleyicisi (DPC) uygulaması, şifre kalitesi politikasını PASSWORD_QUALITY_BIOMETRIC_WEAK'ten daha kısıtlayıcı bir kalite sabitiyle DevicePolicyManager.setPasswordQuality() yöntemi aracılığıyla belirlediyse:

  • [C-6-1] Bu biyometrik yöntemleri DEVRE DIŞI BIRAKMALI ve ekranın kilidini açmak için yalnızca birincil kimlik doğrulamasına izin VERMELİ.
  • [C-6-2] En az 72 saatte bir veya daha kısa sürede kullanıcıdan birincil kimlik doğrulama (ör. PIN, desen, şifre) isteğinde BULUNMALIDIR.

Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini ekler veya değiştirirse ve bu tür bir kimlik doğrulama yöntemi, kilit ekranının kilidini açmak için kullanılacaksa ancak güvenli kilit ekranı olarak kabul edilmeyecekse:

9.12. Veri Silme

Tüm cihaz uygulamaları:

  • [C-0-1] Kullanıcılara "Fabrika Verilerine Sıfırlama" işlemi gerçekleştirebilecekleri bir mekanizma sağlamalıdır.
  • [C-0-2] Kullanıcı tarafından oluşturulan tüm veriler silinmelidir. Yani aşağıdakiler dışındaki tüm veriler:
    • Sistem görüntüsü
    • Sistem görüntüsünün gerektirdiği tüm işletim sistemi dosyaları
  • [C-0-3] Verileri NIST SP800-88 gibi ilgili endüstri standartlarını karşılayacak şekilde SİLMELİYDİR.
  • [C-0-4] Birincil kullanıcının Cihaz Politikası Denetleyici uygulaması tarafından DevicePolicyManager.wipeData() API çağrıldığında yukarıdaki "Fabrika Verilerini Sıfırla" işlemini TETİKLEMELİDİR.
  • Yalnızca mantıksal veri silme işlemi gerçekleştiren hızlı bir veri silme seçeneği SUNABİLİR.

9.13. Güvenli Önyükleme Modu

Android, kullanıcıların yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda önyükleme yapmasına olanak tanıyan Güvenli Modda Başlatma modunu sunar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcıya zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı sunar.

Cihaz uygulamaları şunlardır:

  • [SR] STRONGLY RECOMMENDED to implement Safe Boot Mode.

Cihaz uygulamaları Güvenli Önyükleme Modu'nu uygularsa:

  • [C-1-1] Kullanıcıya, üçüncü taraf uygulaması bir cihaz politikası denetleyicisi olup UserManager.DISALLOW_SAFE_BOOT işaretini doğru olarak ayarlamadığı sürece, cihazda yüklü üçüncü taraf uygulamaları tarafından kesintiye uğramayacak şekilde Güvenli Modda Başlatma moduna girme seçeneği ZORUNLUDUR.

  • [C-1-2] Kullanıcıya, güvenli modda üçüncü taraf uygulamalarını kaldırma olanağı SUNMALIDIR.

  • Kullanıcıya, normal önyüklemeden farklı bir iş akışı kullanarak önyükleme menüsünden Güvenli Önyükleme moduna girme seçeneği SUNMALIDIR.

9.14. Otomotiv Araç Sistemi İzolasyon

Android Automotive cihazların, CAN bus gibi araç ağları üzerinden mesaj gönderip almak için araç HAL'ini kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.

Bu alt sistemlerle kötü amaçlı veya kasıtsız etkileşimi önlemek için Android framework katmanlarının altına güvenlik özellikleri uygulanarak veri alışverişi güvence altına alınabilir.

10. Yazılım Uyumluluğu Testi

Cihaz uygulamaları bu bölümde açıklanan tüm testleri ZORUNLU ŞEKİLDE geçmelidir.

Ancak hiçbir yazılım test paketinin her şeyi kapsamadığını unutmayın. Bu nedenle, cihaz uygulayıcılarının Android Açık Kaynak Projesi'nde bulunan Android referans ve tercih edilen uygulamasında mümkün olduğunca az sayıda değişiklik yapması ŞİDDETLE ÖNERİLİR. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara neden olan hataların ortaya çıkma riskini en aza indirir.

10.1. Compatibility Test Suite

Cihaz uygulamalarının, cihazdaki nihai gönderim yazılımını kullanarak Android Açık Kaynak Projesi'nde bulunan Android Uyumluluk Test Paketi'nden (CTS) geçmesi ZORUNLUDUR. Ayrıca cihaz uygulayıcıları, Android Açık Kaynak ağacındaki referans uygulamayı mümkün olduğunca kullanmalı ve CTS'de belirsizlik olduğunda ve referans kaynak kodunun bölümlerinin yeniden uygulandığı durumlarda uyumluluğu sağlamalıdır.

CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Her yazılım gibi CTS de hata içerebilir. CTS, bu Uyumluluk Tanımı'ndan bağımsız olarak sürümlendirilir ve Android 8.1 için CTS'nin birden fazla düzeltmesi yayınlanabilir. Cihaz uygulamaları, cihaz yazılımı tamamlandığı sırada mevcut olan en son CTS sürümünden GEÇMELİDİR.

10.2. CTS Doğrulayıcı

Cihaz uygulamaları, CTS Doğrulayıcı'da geçerli tüm durumları doğru şekilde yürütmelidir. CTS Doğrulayıcı, Uyumluluk Test Paketi'ne dahildir ve kameranın ve sensörlerin doğru çalışması gibi otomatik bir sistem tarafından test edilemeyecek işlevleri test etmek için bir operatör tarafından çalıştırılmak üzere tasarlanmıştır.

CTS Doğrulayıcı, isteğe bağlı olan bazı donanımlar da dahil olmak üzere birçok donanım türü için testler içerir. Cihaz uygulamalarının, sahip oldukları donanımla ilgili tüm testleri GEÇMESİ GEREKİR. Örneğin, bir cihazda ivmeölçer varsa CTS Doğrulayıcı'da ivmeölçer testini doğru şekilde yürütmesi GEREKİR. Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test durumları atlanabilir veya çıkarılabilir.

Her cihaz ve her derleme, yukarıda belirtildiği gibi CTS Doğrulayıcı'yı doğru şekilde çalıştırmalıdır. Ancak birçok derleme birbirine çok benzediğinden, cihaz uygulayıcılarının yalnızca önemsiz farklılıklar gösteren derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Daha açık belirtmek gerekirse, CTS Doğrulayıcı'yı yalnızca dahil edilen yerel ayarlar, marka vb. açısından geçen bir uygulamadan farklı olan cihaz uygulamaları CTS Doğrulayıcı testini EKSLEYEBİLİR.

11. Güncellenebilir Yazılımlar

Cihaz uygulamalarında, sistem yazılımının tamamını değiştirecek bir mekanizma BULUNMASI GEREKİR. Mekanizmanın "canlı" yükseltmeler yapması gerekmez. Yani cihazın yeniden başlatılması gerekebilir.

Cihazın önceden yüklenmiş yazılımının tamamını değiştirebildiği sürece herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:

  • Yeniden başlatma yoluyla çevrimdışı güncellemeyle "Kablosuz (OTA)" indirme.
  • Ana makine bilgisayardan USB üzerinden "bağlantılı" güncellemeler.
  • Yeniden başlatma ve çıkarılabilir depolama alanındaki bir dosyadan güncelleme yoluyla "Çevrimdışı" güncellemeler.

Ancak cihaz uygulaması, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sınırsız veri bağlantısı desteği içeriyorsa yeniden başlatma yoluyla çevrimdışı güncellemeyle OTA indirmelerini desteklemelidir.

Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri desteklemelidir. Yani güncelleme mekanizması, uygulamanın gizli verilerini ve paylaşılan verilerini muhafaza ETMELIDİR. Yukarı akış Android yazılımının bu koşulu karşılayan bir güncelleme mekanizması içerdiğini unutmayın.

Android 6.0 ve sonraki sürümlerle kullanıma sunulan cihaz uygulamalarında güncelleme mekanizması, OTA'dan sonra sistem resminin ikili olarak beklenen sonuçla aynı olduğunu doğrulamayı DESTEKLEMELİDİR. Android 5.1'den beri eklenen, yayın öncesi Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu koşulu karşılar.

Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP, bu özelliği önyükleme denetimi HAL'ini kullanarak uygular.

Bir cihaz uygulamasında, cihaz kullanıma sunulduktan sonra ancak Android Uyumluluk Ekibi ile görüşülerek belirlenen makul ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa cihaz uygulayıcısı, hatayı az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesiyle DÜZELTMEKTE ZORUNLUDUR.

Android, cihaz sahibi uygulamasının (varsa) sistem güncellemelerinin yüklenmesini kontrol etmesine olanak tanıyan özellikler içerir. Bunu kolaylaştırmak için android.software.device_admin bildiren cihazların sistem güncelleme alt sistemi, SystemUpdatePolicy sınıfında açıklanan davranışı UYGULAMALIDIR.

12. Doküman Değişiklik Günlüğü

Bu sürümde Uyumluluk Tanımlama Belgesi'nde yapılan değişikliklerin özeti için:

Kişiler bölümlerindeki değişikliklerin özeti:

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

12.1. Değişiklik Günlüğünü Görüntülemeyle İlgili İpuçları

Değişiklikler aşağıdaki şekilde işaretlenir:

  • CDD
    Uyumluluk şartlarında önemli değişiklikler.

  • Dokümanlar
    Kozmetik veya derlemeyle ilgili değişiklikler.

En iyi görüntüleme için pretty=full ve no-merges URL parametrelerini değişiklik günlüğü URL'lerinize ekleyin.

13. Bize Ulaşın

Android uyumluluk forumuna katılarak açıklama isteyebilir veya dokümanda yer almadığını düşündüğünüz sorunları gündeme getirebilirsiniz.