1. Giriş
Bu belgede, cihazların Android 9 ile uyumlu olması için karşılanması gereken şartlar listelenmektedir.
"MUST" ("GEREKLİ"), "MUST NOT" ("GEREKLİ DEĞİL"), "REQUIRED" ("ZORUNLU"), "SHALL" ("OLACAK"), "SHALL NOT" ("OLMAYACAK"), "SHOULD" ("OLMALI"), "SHOULD NOT" ("OLMAMALI"), "RECOMMENDED" ("ÖNERİLİR"), "MAY" ("OLABİLİR") ve "OPTIONAL" ("İSTEĞE BAĞLI") ifadelerinin kullanımı, RFC2119'da tanımlanan IETF standardına uygundur.
Bu belgede kullanıldığı şekliyle "cihaz uygulayıcı" veya "uygulayıcı", Android 9'u çalıştıran bir donanım/yazılım çözümü geliştiren kişi ya da kuruluş anlamına gelir. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Cihaz uygulamalarının Android 9 ile uyumlu kabul edilebilmesi için referans yoluyla dahil edilen tüm belgeler de dahil olmak üzere bu Uyumluluk Tanımı'nda belirtilen koşulları KARŞILAMASI GEREKİR.
Bu tanımın veya bölüm 10'da açıklanan yazılım testlerinin sessiz, belirsiz ya da eksik olduğu durumlarda, mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcısının sorumluluğundadır.
Bu nedenle, Android Açık Kaynak Projesi hem referans hem de tercih edilen Android uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nde bulunan "yukarı akış" kaynak koduna dayandırmaları ŞİDDETLE TAVSİYE EDİLİR. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilse de yazılım testlerini geçmek önemli ölçüde zorlaşacağından bu uygulamanın kullanılmaması ŞİDDETLE TAVSİYE EDİLİR. Compatibility Test Suite de dahil olmak üzere standart Android uygulamasıyla tam davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşenlerin değiştirilmesi ve modifikasyonlarının bu belgeyle açıkça yasaklandığını unutmayın.
Bu belgede bağlantısı verilen kaynakların çoğu doğrudan veya dolaylı olarak Android SDK'dan alınmıştır ve bu SDK'nın dokümanlarındaki bilgilerle işlevsel olarak aynıdır. Bu Uyumluluk Tanımlama Belgesi veya Uyumluluk Test Paketi'nin SDK dokümanlarıyla uyuşmadığı durumlarda, SDK dokümanları yetkili olarak kabul edilir. Bu belgedeki bağlantılı kaynaklarda sağlanan tüm teknik ayrıntılar, dahil edilerek bu Uyumluluk Tanımı'nın bir parçası olarak kabul edilir.
1.1 Belge Yapısı
1.1.1. Cihaz Türüne Göre Gereksinimler
2. Bölüm, belirli bir cihaz türü için geçerli olan tüm koşulları içerir. Bölüm 2'nin her alt bölümü belirli bir cihaz türüne ayrılmıştır.
Herhangi bir Android cihaz uygulaması için geçerli olan diğer tüm koşullar, Bölüm 2'den sonraki bölümlerde listelenmiştir. Bu şartlar, bu belgede "Temel Şartlar" olarak adlandırılır.
1.1.2. Şart Kimliği
ZORUNLU koşullar için koşul kimliği atanır.
- Kimlik yalnızca ZORUNLU koşullar için atanır.
- ŞİDDETLE TAVSİYE EDİLEN koşullar [SR] olarak işaretlenir ancak kimlik atanmaz.
- Kimlik; Cihaz Türü Kimliği, Durum Kimliği ve Şart Kimliği'nden (ör. C-0-1) oluşur.
Her kimlik aşağıda tanımlanmıştır:
- Cihaz Türü Kimliği (2. Cihaz Türleri)
- C: Temel (Tüm Android cihaz uygulamaları için geçerli olan şartlar)
- H: Android el cihazı
- T: Android Television cihaz
- Y: Android Automotive uygulaması
- Sekme: Android tablet uygulaması
- Koşul kimliği
- Koşulsuz olduğunda bu kimlik 0 olarak ayarlanır.
- Koşul zorunlu olduğunda 1. koşul için 1 atanır ve aynı bölüm ile aynı cihaz türünde sayı 1 artar.
- Şart kimliği
- Bu kimlik 1'den başlar ve aynı bölüm ile aynı koşulda 1'er artar.
1.1.3. 2. Bölümdeki şart kimliği
Bölüm 2'deki Şart Kimliği, ilgili bölüm kimliğiyle başlar ve yukarıda açıklanan Şart Kimliği ile devam eder.
- Bölüm 2'deki kimlik şu bölümlerden oluşur : Bölüm Kimliği / Cihaz Türü Kimliği - Durum Kimliği - Şart Kimliği (ör. 7.4.3/A-0-1).
2. Cihaz Türleri
Android Açık Kaynak Projesi, çeşitli cihaz türleri ve form faktörleri için kullanılabilecek bir yazılım yığını sağlasa da uygulama dağıtım ekosistemi nispeten daha iyi kurulmuş birkaç cihaz türü vardır.
Bu bölümde, söz konusu cihaz türleri ve her cihaz türü için geçerli olan ek şartlar ve öneriler açıklanmaktadır.
Açıklanan cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamaları, bu Uyumluluk Tanımı'nın diğer bölümlerindeki tüm koşulları karşılamaya DEVAM ETMELİDİR.
2.1 Cihaz Yapılandırmaları
Cihaz türüne göre donanım yapılandırmasındaki temel farklılıklar için bu bölümdeki cihazlara özgü gereksinimlere bakın.
2.2. Elde Taşınabilir Cihaz Gereksinimleri
Android el cihazı, genellikle elde tutularak kullanılan bir Android cihaz uygulamasıdır (ör. MP3 çalar, telefon veya tablet).
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa elde taşınabilir cihaz olarak sınıflandırılır:
- Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
- 2,5 ila 8 inç arasında fiziksel bir çapraz ekran boyutuna sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar, Android el cihazı uygulamalarına özeldir.
2.2.1. Donanım
Elde taşınabilir cihaz uygulamaları:
- [7.1.1.1/H-0-1] Fiziksel diyagonal boyutu en az 2,5 inç olan bir ekranı OLMALIDIR.
- [7.1.1.3/H-SR] Kullanıcılara ekran boyutunu değiştirme olanağı sunmak ŞİDDETLE TAVSİYE EDİLİR (Ekran Yoğunluğu).
Elde taşınabilir cihaz uygulamaları , Configuration.isScreenHdr()
aracılığıyla yüksek dinamik aralıklı ekranları desteklediğini iddia ediyorsa:
- [7.1.4.5/H-1-1]
EGL_EXT_gl_colorspace_bt2020_pq
,EGL_EXT_surface_SMPTE2086_metadata
,EGL_EXT_surface_CTA861_3_metadata
,VK_EXT_swapchain_colorspace
veVK_EXT_hdr_metadata
uzantıları için destek reklamı YAPILMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [7.1.5/H-0-1] Yukarı akış Android açık kaynak kodu tarafından uygulanan eski uygulama uyumluluk modu desteğini İÇERMELİDİR. Yani, cihaz uygulamaları uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri değiştirmemeli ve uyumluluk modunun davranışını değiştirmemelidir.
- [7.2.1/H-0-1] Üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek içermelidir.
- [7.2.3/H-0-1] Ana Sayfa, Son Kullanılanlar ve Geri işlevleri SAĞLANMALIDIR.
- [7.2.3/H-0-2] Geri işlevinin (
KEYCODE_BACK
) hem normal hem de uzun basma etkinliği, ön plandaki uygulamaya GÖNDERİLMELİDİR. Bu etkinlikler sistem tarafından KULLANILMAMALI ve Android cihazın dışından (ör. Android cihaza bağlı harici donanım klavyesi) tetiklenebilir. - [7.2.4/H-0-1] Dokunmatik ekran girişi DESTEKLENMELİDİR.
- [7.2.4/H-SR] Ön plandaki etkinlik bu uzun basma etkinliklerini işlemediği takdirde, kullanıcının seçtiği asistan uygulamasının (diğer bir deyişle VoiceInteractionService'i uygulayan uygulama) veya
KEYCODE_MEDIA_PLAY_PAUSE
ya daKEYCODE_HEADSETHOOK
tuşuna uzun basıldığındaACTION_ASSIST
işleyen bir etkinliğin başlatılması ŞİDDETLE TAVSİYE EDİLİR. - [7.3.1/H-SR] 3 eksenli ivme ölçer içermeleri ŞİDDETLE TAVSİYE EDİLİR.
Elde taşınabilir cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/H-1-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.
Elde taşınabilir cihaz uygulamalarında jiroskop varsa:
- [7.3.4/H-1-1] Olayları en az 100 Hz sıklıkta bildirebilmelidir.
Sesli arama yapabilen ve getPhoneType
içinde PHONE_TYPE_NONE
dışında bir değer belirtebilen elde taşınır cihaz uygulamaları:
- [7.3.8/H] Yakınlık sensörü İÇERMELİDİR.
Elde taşınabilir cihaz uygulamaları:
- [7.3.12/H-SR] 6 serbestlik dereceli poz sensörünü desteklemeleri ÖNERİLİR.
- [7.4.3/H] Bluetooth ve Bluetooth LE desteği İÇERMELİDİR.
Elde taşınabilir cihaz uygulamaları, ölçülü bağlantı içeriyorsa:
- [7.4.7/H-1-1] Veri tasarrufu modu SAĞLANMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [7.6.1/H-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
- [7.6.1/H-0-2] Çekirdek ve kullanıcı alanı için 1 GB'tan az bellek olduğunda
ActivityManager.isLowRamDevice()
için "true" değeri DÖNDÜRÜLMELİDİR.
Elde taşınabilir cihaz uygulamaları yalnızca 32 bit ABI'yi desteklediğini beyan ediyorsa:
-
[7.6.1/H-1-1] Varsayılan ekranda qHD'ye kadar (ör. FWVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 416 MB OLMALIDIR.
-
[7.6.1/H-2-1] Varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 592 MB OLMALIDIR.
-
[7.6.1/H-3-1] Varsayılan ekranda FHD'ye (ör. WSXGA+) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR.
-
[7.6.1/H-4-1] Varsayılan ekranda QHD'ye (ör. QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1344 MB OLMALIDIR.
Elde taşınabilir cihaz uygulamaları herhangi bir 64 bit ABI'yi (32 bit ABI ile veya 32 bit ABI olmadan) desteklediğini beyan ediyorsa:
-
[7.6.1/H-5-1] Varsayılan ekranda qHD'ye (ör. FWVGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 816 MB OLMALIDIR.
-
[7.6.1/H-6-1] Varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 944 MB OLMALIDIR.
-
[7.6.1/H-7-1] Varsayılan ekranda FHD'ye (ör.WSXGA+) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1. 280 MB OLMALIDIR.
-
[7.6.1/H-8-1] Varsayılan ekranda QHD'ye (ör. QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1824 MB OLMALIDIR.
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Elde taşınabilir cihaz uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan az veya 1 GB kullanılabilir bellek içeriyorsa:
- [7.6.1/H-9-1]
android.hardware.ram.low
özellik işaretini BEYAN ETMELİDİR. - [7.6.1/H-9-2] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1,1 GB kalıcı depolama alanı OLMALIDIR.
Elde taşınabilir cihaz uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan fazla bellek içeriyorsa:
- [7.6.1/H-10-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
android.hardware.ram.normal
özellik bayrağını BEYAN ETMELİDİR.
Elde taşınabilir cihaz uygulamaları:
- [7.6.2/H-0-1] 1 GiB'den küçük bir uygulama paylaşılan depolama alanı SAĞLAMAMALIDIR.
- [7.7.1/H] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
Elde taşınabilir cihaz uygulamaları, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.1/H-1-1] Android Open Accessory (AOA) API'si uygulanmalıdır.
Elde taşınabilir cihaz uygulamaları:
- [7.8.1/H-0-1] Mikrofon içermelidir.
- [7.8.2/H-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.output
beyan edilmelidir.
Elde taşınabilir cihaz uygulamaları, VR modunu desteklemeyle ilgili tüm performans koşullarını karşılayabiliyorsa ve VR modu desteği içeriyorsa:
- [7.9.1/H-1-1]
android.hardware.vr.high_performance
özellik bayrağı BELİRTİLMELİDİR. - [7.9.1/H-1-2]
android.service.vr.VrListenerService
işlevini uygulayan ve VR uygulamaları tarafındanandroid.app.Activity#setVrModeEnabled
aracılığıyla etkinleştirilebilen bir uygulama İÇERMELİDİR.
2.2.2. Multimedya
Elde taşınan cihaz uygulamaları aşağıdaki ses kodlamasını DESTEKLEMELİDİR:
- [5.1.1/H-0-1] AMR-NB
- [5.1.1/H-0-2] AMR-WB
- [5.1.1/H-0-3] MPEG-4 AAC Profili (AAC LC)
- [5.1.1/H-0-4] MPEG-4 HE AAC Profili (AAC+)
- [5.1.1/H-0-5] AAC ELD (geliştirilmiş düşük gecikmeli AAC)
Elde taşınabilir cihaz uygulamaları, aşağıdaki ses kod çözme işlemlerini DESTEKLEMELİDİR:
Elde taşınabilir cihaz uygulamaları, aşağıdaki video kodlamayı desteklemeli ve üçüncü taraf uygulamalarına sunmalıdır:
Elde taşınan cihaz uygulamaları, aşağıdaki video kod çözme işlemlerini DESTEKLEMELİDİR:
2.2.3. Yazılım
Elde taşınabilir cihaz uygulamaları:
- [3.2.3.1/H-0-1] SDK dokümanlarında açıklandığı şekilde
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
,ACTION_OPEN_DOCUMENT_TREE
veACTION_CREATE_DOCUMENT
amaçlarını işleyen bir uygulamaya sahip OLMALI veDocumentsProvider
API'sini kullanarak doküman sağlayıcı verilerine erişmek için kullanıcıya olanak tanımalıdır. - [3.4.1/H-0-1]
android.webkit.Webview
API'nin eksiksiz bir uygulamasını SAĞLAMALIDIR. - [3.4.2/H-0-1] Genel kullanıcı web'de gezinmesi için bağımsız bir Tarayıcı uygulaması İÇERMELİDİR.
- [3.8.1/H-SR] Kısayolların, widget'ların ve widgetFeatures'ın uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.1/H-SR] Üçüncü taraf uygulamalarının ShortcutManager API'si aracılığıyla sağladığı ek kısayollara hızlı erişim sunan varsayılan bir başlatıcı uygulaması kullanılması ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.1/H-SR] Uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması eklemeniz ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.2/H-SR] Üçüncü taraf uygulama widget'larının desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.3/H-0-1] Üçüncü taraf uygulamalarının,
Notification
veNotificationManager
API sınıfları aracılığıyla kullanıcıları önemli etkinliklerden haberdar etmesine İZİN VERİLMELİDİR. - [3.8.3/H-0-2] Zengin bildirimler desteklenmelidir.
- [3.8.3/H-0-3] Anlık bildirimler desteklenmelidir.
- [3.8.3/H-0-4] Kullanıcıya, AOSP'de uygulandığı gibi işlem düğmeleri veya kontrol paneli gibi kullanıcı kolaylıkları aracılığıyla bildirimleri doğrudan kontrol etme (ör. yanıtlama, erteleme, kapatma, engelleme) olanağı sağlayan bir bildirim gölgesi İÇERMELİDİR.
- [3.8.3/H-0-5]
RemoteInput.Builder setChoices()
aracılığıyla sunulan seçenekler, bildirim gölgesinde GÖSTERİLMELİDİR. - [3.8.3/H-SR]
RemoteInput.Builder setChoices()
aracılığıyla sağlanan ilk seçeneğin, ek kullanıcı etkileşimi olmadan bildirim gölgesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [3.8.3/H-SR] Kullanıcı, bildirim gölgesindeki tüm bildirimleri genişlettiğinde
RemoteInput.Builder setChoices()
aracılığıyla sunulan tüm seçeneklerin bildirim gölgesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [3.8.4/H-SR] Yardımcı işlemine yönelik istekleri işlemek için cihazda bir asistan uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Elde taşınabilir cihaz uygulamaları Asistan işlemini destekliyorsa:
- [3.8.4/H-SR]
HOME
tuşuna uzun basmanın, bölüm 7.2.3'te açıklandığı gibi yardım uygulamasını başlatmak için belirlenmiş etkileşim olarak kullanılması ŞİDDETLE TAVSİYE EDİLİR. Kullanıcı tarafından seçilen yardımcı uygulamayı (diğer bir deyişleVoiceInteractionService
uygulayan uygulamayı) veyaACTION_ASSIST
amacını işleyen bir etkinliği BAŞLATMALIDIR.
Android el cihazı uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/H-1-1] Medya Bildirim Şablonu da dahil olmak üzere kilit ekranı bildirimleri GÖSTERİLMELİDİR.
Elde taşınabilir cihaz uygulamaları güvenli bir kilit ekranını destekliyorsa:
- [3.9/H-1-1] Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tamamı uygulanmalıdır.
- [3.9/H-1-2] Cihaz, kendisini düşük RAM'li bir cihaz olarak bildirecek veya dahili (çıkarılamayan) depolama alanını paylaşılan depolama alanı olarak tahsis edecek şekilde yapılandırılmadığı sürece,
android.software.managed_users
özellik işareti aracılığıyla yönetilen profillerin desteği BELİRTİLMELİDİR.
Elde taşınabilir cihaz uygulamaları:
- [3.10/H-0-1] Üçüncü taraf erişilebilirlik hizmetleri desteklenmelidir.
- [3.10/H-SR] TalkBack açık kaynak projesinde belirtildiği şekilde, Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.11/H-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
- [3.11/H-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.13/H-SR] Hızlı Ayarlar kullanıcı arayüzü bileşeni içermesi ŞİDDETLE TAVSİYE EDİLİR.
Android avuç içi cihaz uygulamaları FEATURE_BLUETOOTH
veya FEATURE_WIFI
desteği beyan ediyorsa:
- [3.16/H-1-1] Tamamlayıcı cihaz eşleme özelliği desteklenmelidir.
2.2.4. Performans ve Güç
- [8.1/H-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
- [8.1/H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları, Android Uyumluluk Test Paketi (CTS) tarafından tanımlanan 10.000 liste girişinden oluşan bir listenin 36 saniyeden kısa sürede kaydırılmasını sağlayarak düşük gecikmeli kullanıcı deneyimi sunmalıdır.
- [8.1/H-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, başlatılmış ve çalışmakta olan bir uygulamanın yeniden başlatılması 1 saniyeden kısa sürmelidir.
Elde taşınabilir cihaz uygulamaları:
- [8.2/H-0-1] En az 5 MB/sn sıralı yazma performansı sağlamalıdır.
- [8.2/H-0-2] En az 0,5 MB/sn rastgele yazma performansı sağlamalıdır.
- [8.2/H-0-3] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
- [8.2/H-0-4] En az 3,5 MB/sn rastgele okuma performansı sağlamalıdır.
Elde taşınabilir cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/H-1-1] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.
- [8.3/H-1-2] Uygulama Bekletme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANINMALIDIR.
Elde taşınabilir cihaz uygulamaları:
- [8.4/H-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/H-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/H-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/H-0-4] Bu güç kullanımı,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNULMALIDIR. - [8.4/H] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
Elde taşınabilir cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [8.4/H-1-1]
android.intent.action.POWER_USAGE_SUMMARY
amacına UYULMALI ve bu güç kullanımını gösteren bir ayarlar menüsü görüntülenmelidir.
2.2.5. Güvenlik Modeli
Elde taşınabilir cihaz uygulamaları:
- [9.1/H-0-1] Üçüncü taraf uygulamalarının,
android.permission.PACKAGE_USAGE_STATS
izni aracılığıyla kullanım istatistiklerine erişmesine İZİN VERİLMELİ veandroid.settings.ACTION_USAGE_ACCESS_SETTINGS
amacına yanıt olarak bu tür uygulamalara erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma sağlanmalıdır.
Elde taşınabilir cihaz uygulamaları güvenli bir kilit ekranını desteklediğinde:
- [9.11/H-1-1] KULLANICININ, KİLİDİ AÇIK DURUMDAN KİLİTLİ DURUMA GEÇİŞ SÜRESİ OLAN EN KISA UYKU ZAMAN AŞIMI SÜRESİNİ (15 SANİYE VEYA DAHA KISA) SEÇMESİNE İZİN VERİLMELİDİR.
- [9.11/H-1-2] Bildirimleri gizlemek ve 9.11.1 Güvenli Kilit Ekranı'nda açıklanan birincil kimlik doğrulama dışında tüm kimlik doğrulama biçimlerini devre dışı bırakmak için kullanıcıya olanak tanınmalıdır. AOSP, tam kilitleme modu olarak bu koşulu karşılar.
2.3. Televizyonla İlgili Şartlar
Android TV cihazı, kullanıcının yaklaşık üç metre uzakta oturarak dijital medya, film, oyun, uygulama ve/veya canlı TV içeriklerini tüketebileceği bir eğlence arayüzü olan Android cihaz uygulamasıdır ("arkaya yaslanma" veya "3 metrelik kullanıcı arayüzü").
Android cihaz uygulamaları, aşağıdaki tüm ölçütleri karşılıyorsa televizyon olarak sınıflandırılır:
- Kullanıcıdan üç metre uzakta olabilecek ekranda oluşturulan kullanıcı arayüzünü uzaktan kontrol etme mekanizması sağlamış olmalıdır.
- Köşegen uzunluğu 24 inçten büyük olan yerleşik bir ekranı olmalı VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası ya da ekran için kablosuz bir bağlantı noktası içermelidir.
Bu bölümün geri kalanındaki ek şartlar, Android TV cihaz uygulamalarına özeldir.
2.3.1. Donanım
Televizyon cihazı uygulamaları:
- [7.2.2/T-0-1] D-pad desteklenmelidir.
- [7.2.3/T-0-1] Ana Sayfa ve Geri işlevleri SAĞLANMALIDIR.
- [7.2.3/T-0-2] Geri işlevinin (
KEYCODE_BACK
) hem normal hem de uzun basma etkinliği, ön plandaki uygulamaya GÖNDERİLMELİDİR. - [7.2.6.1/T-0-1] Oyun kumandası desteği içermeli ve
android.hardware.gamepad
özellik işaretini bildirmelidir. - [7.2.7/T] Kullanıcılara dokunmadan gezinme ve temel gezinme tuşları girişlerine erişebilecekleri bir uzaktan kumanda SAĞLANMALIDIR.
Televizyon cihaz uygulamalarında jiroskop varsa:
- [7.3.4/T-1-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.
Televizyon cihazı uygulamaları:
- [7.4.3/T-0-1] Bluetooth ve Bluetooth LE'yi DESTEKLEMELİDİR.
- [7.6.1/T-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
Televizyon cihazı uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.5.3/T-1-1] Bu USB bağlantı noktası üzerinden bağlanan ancak her zaman bağlı olması gerekmeyen harici bir kamera için destek İÇERMELİDİR.
TV cihazı uygulamaları 32 bit ise:
-
[7.6.1/T-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
TV cihazı uygulamaları 64 bit ise:
-
[7.6.1/T-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Televizyon cihazı uygulamaları:
- [7.8.1/T] Mikrofon içermelidir.
- [7.8.2/T-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.output
beyan edilmelidir.
2.3.2. Multimedya
Televizyon cihazı uygulamaları aşağıdaki ses kodlama biçimlerini DESTEKLEMELİDİR:
- [5.1/T-0-1] MPEG-4 AAC Profili (AAC LC)
- [5.1/T-0-2] MPEG-4 HE AAC Profili (AAC+)
- [5.1/T-0-3] AAC ELD (gelişmiş düşük gecikmeli AAC)
Televizyon cihazı uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİDİR:
Televizyon cihazı uygulamaları:
- [5.2.2/T-SR] 720p ve 1080p çözünürlüklü videoların 30 kare/saniye hızında H.264 kodlamasını desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihazı uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİDİR:
- [5.3.3/T-0-1] MPEG-4 SP
- [5.3.4/T-0-2] H.264 AVC
- [5.3.5/T-0-3] H.265 HEVC
- [5.3.6/T-0-4] VP8
- [5.3.7/T-0-5] VP9
Televizyon cihazı uygulamalarının aşağıdaki video kod çözme biçimlerini desteklemesi ŞİDDETLE TAVSİYE EDİLİR:
- [5.3.1/T-SR] MPEG-2
Televizyon cihazı uygulamaları, Bölüm 5.3.4'te ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdaki çözünürlüklerde H.264 kod çözme işlemini DESTEKLEMELİDİR:
- [5.3.4.4/T-1-1] Baseline Profili ile saniyede 60 kare hızında HD 1080p
- [5.3.4.4/T-1-2] Ana Profil ile saniyede 60 kare hızında HD 1080p
- [5.3.4.4/T-1-3] High Profile Level 4.2 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.5'te ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde H.265 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.5.4/T-1-1] Main Profile Level 4.1 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülerine sahip televizyon cihaz uygulamaları H.265 kod çözme ve UHD kod çözme profilini destekliyorsa:
- [5.3.5.5/T-2-1] Main10 Level 5 Main Tier profiliyle saniyede 60 kare hızında UHD kod çözme profilini DESTEKLEMELİDİR.
Televizyon cihazı uygulamaları, Bölüm 5.3.6'da ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdaki çözünürlüklerde VP8 kod çözme işlemini DESTEKLEMELİDİR:
- [5.3.6.4/T-1-1] Saniyede 60 kare hızında HD 1080p çözme profili
VP9 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.7'de ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde VP9 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.7.4/T-1-1] Profil 0 ile saniyede 60 kare hızında HD 1080p (8 bit renk derinliği)
VP9 donanım kod çözücülerine sahip televizyon cihazı uygulamaları VP9 kod çözmeyi ve UHD kod çözme profilini destekliyorsa:
- [5.3.7.5/T-2-1] 60 kare/saniye hızında, profil 0 (8 bit renk derinliği) ile UHD kod çözme profilini DESTEKLEMELİDİR.
- [5.3.7.5/T-2-1] 2. profille (10 bit renk derinliği) saniyede 60 kare hızında UHD kod çözme profilini desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihazı uygulamaları:
- [5.5.3/T-0-1] Sıkıştırılmış ses geçişi çıkışı (cihazda ses kod çözme işlemi yapılmaz) hariç olmak üzere, desteklenen çıkışlarda sistemin ana ses seviyesi ve dijital ses çıkışı ses seviyesi zayıflatma desteği İÇERMELİDİR.
- [5.8/T-0-1] Tüm kablolu ekranlar için HDMI çıkış modu, 50 Hz veya 60 Hz yenileme hızıyla desteklenebilecek maksimum çözünürlüğü seçecek şekilde AYARLANMALIDIR.
- [5.8/T-SR] Tüm kablolu ekranlar için kullanıcı tarafından yapılandırılabilir bir HDMI yenileme hızı seçici sağlanması ŞİDDETLE TAVSİYE EDİLİR.
- [5.8/T-SR] Güvenli akışların eşzamanlı olarak kodunun çözülmesini desteklemek için ŞİDDETLE TAVSİYE EDİLİR. En az iki akışın eşzamanlı olarak kodunun çözülmesi ŞİDDETLE TAVSİYE EDİLİR.
- [5.8] Tüm kablolu ekranlar için HDMI çıkış modu yenileme hızını, cihazın satıldığı bölgedeki video yenileme hızına bağlı olarak 50 Hz veya 60 Hz olarak AYARLAMALIDIR.
Televizyon cihaz uygulamaları UHD kod çözmeyi destekliyorsa ve harici ekran desteği varsa:
- [5.8/T-1-1] HDCP 2.2'yi desteklemelidir.
Televizyon cihaz uygulamaları UHD kod çözme özelliğini desteklemiyor ancak harici ekranları destekliyorsa:
- [5.8/T-2-1] HDCP 1.4 desteklenmelidir.
2.3.3. Yazılım
Televizyon cihazı uygulamaları:
- [3/T-0-1]
android.software.leanback
veandroid.hardware.type.television
özellikleri BEYAN EDİLMELİDİR. - [3.4.1/T-0-1]
android.webkit.Webview
API'nin eksiksiz bir uygulamasını SAĞLAMALIDIR.
Android TV cihaz uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/T-1-1] Medya Bildirim Şablonu da dahil olmak üzere kilit ekranı bildirimleri GÖSTERİLMELİDİR.
Televizyon cihazı uygulamaları:
- [3.8.14/T-SR] Pencere içinde pencere (PIP) modunda çoklu pencere özelliğini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.10/T-0-1] Üçüncü taraf erişilebilirlik hizmetleri DESTEKLENMELİDİR.
- [3.10/T-SR] TalkBack açık kaynak projesinde belirtildiği gibi, cihazda Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motoru tarafından desteklenen diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihaz uygulamaları android.hardware.audio.output
özelliğini bildiriyorsa:
- [3.11/T-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermeleri ŞİDDETLE TAVSİYE EDİLİR.
- [3.11/T-1-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
Televizyon cihazı uygulamaları:
- [3.12/T-0-1] TV Giriş Çerçevesi desteklenmelidir.
2.3.4. Performans ve Güç
- [8.1/T-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
- [8.2/T-0-1] En az 5 MB/sn sıralı yazma performansı SAĞLANMALIDIR.
- [8.2/T-0-2] En az 0,5 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.
- [8.2/T-0-3] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
- [8.2/T-0-4] En az 3,5 MB/sn rastgele okuma performansı sağlamalıdır.
Televizyon cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/T-1-1] Pil tasarrufu özelliğinin etkinleştirilmesi ve devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.
- [8.3/T-1-2] Uygulama Bekletme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları göstermek için kullanıcıya olanak TANINMALIDIR.
Televizyon cihazı uygulamaları:
- [8.4/T-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/T-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/T-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/T] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.
- [8.4/T-0-4] Bu güç kullanımını,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNMALIDIR.
2.4. Saat Gereksinimleri
Android Watch cihaz, vücuda (ör. bileğe) takılmak üzere tasarlanmış bir Android cihaz uygulamasıdır.
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa Kol Saati olarak sınıflandırılır:
- Fiziksel diyagonal uzunluğu 1,1 ile 2,5 inç arasında olan bir ekrana sahip olmalıdır.
- Vücutta taşınmak üzere tasarlanmış bir mekanizmaya sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar, Android Watch cihaz uygulamalarına özeldir.
2.4.1. Donanım
Cihaz uygulamalarını izleyin:
-
[7.1.1.1/W-0-1] 1,1 ila 2,5 inç arasında fiziksel diyagonal boyuta sahip bir ekran OLMALIDIR.
-
[7.2.3/W-0-1] Kullanıcıya Ana Sayfa işlevi sunulmalı ve
UI_MODE_TYPE_WATCH
dışında Geri işlevi kullanılabilmelidir. -
[7.2.4/W-0-1] Dokunmatik ekran girişi desteklenmelidir.
-
[7.3.1/W-SR] 3 eksenli ivme ölçer içermesi ŞİDDETLE TAVSİYE EDİLİR.
-
[7.4.3/W-0-1] Bluetooth'u desteklemelidir.
-
[7.6.1/W-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1 GB kalıcı depolama alanı OLMALIDIR.
-
[7.6.1/W-0-2] Çekirdek ve kullanıcı alanı için en az 416 MB kullanılabilir bellek OLMALIDIR.
-
[7.8.1/W-0-1] Mikrofon içermelidir.
-
[7.8.2/W] Ses çıkışı OLABİLİR ancak OLMAMALIDIR.
2.4.2. Multimedya
Ek şart yoktur.
2.4.3. Yazılım
Cihaz uygulamalarını izleyin:
- [3/W-0-1]
android.hardware.type.watch
özelliği DEKLARA EDİLMELİDİR. - [3/W-0-2] MUST support uiMode = UI_MODE_TYPE_WATCH.
Cihaz uygulamalarını izleyin:
- [3.8.4/W-SR] Yardımcı işlemini gerçekleştirmek için cihazda bir yardımcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
android.hardware.audio.output
özellik işaretini bildiren cihaz uygulamalarını izleyin:
- [3.10/W-1-1] Üçüncü taraf erişilebilirlik hizmetleri DESTEKLENMELİDİR.
- [3.10/W-SR] TalkBack açık kaynak projesinde belirtildiği şekilde, cihazda Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Kol saati cihaz uygulamaları android.hardware.audio.output özelliğini bildiriyorsa:
-
[3.11/W-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermesi ŞİDDETLE TAVSİYE EDİLİR.
-
[3.11/W-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
2.4.4. Performans ve Güç
Wear cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/W-SR] Uygulama Bekletme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya kolaylık sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
- [8.3/W-SR] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya kolaylık sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarını izleyin:
- [8.4/W-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/W-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/W-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/W-0-4] Bu güç kullanımı, uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla SUNULMALIDIR. - [8.4/W] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atfedilmelidir.
2.5. Otomotiv Şartları
Android Automotive uygulaması, sistemin ve/veya bilgi-eğlence işlevinin bir kısmı ya da tamamı için işletim sistemi olarak Android'i çalıştıran bir araç ana birimini ifade eder.
Android cihaz uygulamaları, android.hardware.type.automotive
özelliğini beyan ederse veya aşağıdaki ölçütlerin tümünü karşılarsa Otomotiv olarak sınıflandırılır.
- Otomotiv araçlarının bir parçası olarak yerleştirilmiş veya bu araçlara takılabilir olmalıdır.
- Sürücü koltuğu sırasındaki bir ekranı birincil ekran olarak kullanıyorsanız.
Bu bölümün geri kalanındaki ek şartlar, Android Automotive cihaz uygulamalarına özeldir.
2.5.1. Donanım
Otomotiv cihaz uygulamaları:
- [7.1.1.1/A-0-1] En az 6 inç fiziksel diyagonal boyutta bir ekrana SAHİP OLMALIDIR.
-
[7.1.1.1/A-0-2] En az 750 dp x 480 dp ekran boyutu düzenine SAHİP OLMALIDIR.
-
[7.2.3/A-0-1] Ana Sayfa işlevi SAĞLANMALIDIR ve Geri ile Son Kullanılanlar işlevleri SAĞLANABİLİR.
-
[7.2.3/A-0-2] Geri işlevinin (
KEYCODE_BACK
) normal ve uzun basma etkinliklerinin her ikisi de ön plandaki uygulamaya GÖNDERİLMELİDİR. -
[7.3.1/A-SR] 3 eksenli ivme ölçer içermesi ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/A-1-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.
- [7.3.1/A-1-2] Android araba sensörü koordinat sistemi ile UYUMLU OLMALIDIR.
Otomotiv cihaz uygulamaları bir jiroskop içeriyorsa:
- [7.3.4/A-1-1] En az 100 Hz sıklıkta etkinlik raporlayabilmelidir.
Otomotiv cihaz uygulamaları:
- [7.3.11/A-0-1] Mevcut dişli,
SENSOR_TYPE_GEAR
olarak sağlanmalıdır.
Otomotiv cihaz uygulamaları:
- [7.3.11.2/A-0-1]
SENSOR_TYPE_NIGHT
olarak tanımlanan gündüz/gece modu DESTEKLENMELİDİR. - [7.3.11.2/A-0-2]
SENSOR_TYPE_NIGHT
işaretinin değeri, kontrol paneli gündüz/gece moduyla tutarlı OLMALI ve ortam ışığı sensörü girişine dayanmalıdır. -
Altta yatan ortam ışığı sensörü, fotometreyle aynı OLABİLİR.
-
[7.3.11.4/A-0-1]
SENSOR_TYPE_CAR_SPEED
tarafından tanımlanan araç hızı SAĞLANMALIDIR. -
[7.3.11.5/A-0-1]
SENSOR_TYPE_PARKING_BRAKE
tarafından tanımlanan park freni durumu SAĞLANMALIDIR. -
[7.4.3/A-0-1] Bluetooth'u DESTEKLEMELİ ve Bluetooth LE'yi DESTEKLEMELİDİR.
- [7.4.3/A-0-2] Android Automotive uygulamaları, aşağıdaki Bluetooth profillerini DESTEKLEMELİDİR:
- Eller Serbest Profili (HFP) üzerinden telefon görüşmesi yapma.
- Ses Dağıtım Profili (A2DP) üzerinden medya oynatma.
- Uzaktan Kumanda Profili (AVRCP) üzerinden medya oynatma kontrolü.
- Telefon Rehberi Erişim Profili (PBAP) kullanılarak yapılan kişi paylaşımı.
-
[7.4.3/A-SR] Mesaj Erişim Profili'nin (MAP) desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
-
[7.4.5/A] Hücresel ağ tabanlı veri bağlantısı desteği İÇERMELİDİR.
-
[7.4.5/A] Sistem uygulamaları tarafından kullanılabilmesi gereken ağlar için
NetworkCapabilities#NET_CAPABILITY_OEM_PAID
sabitini kullanabilir. -
[7.6.1/A-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
Otomotiv cihaz uygulamaları:
- [7.6.1/A] Veri bölümü, flash depolamada daha iyi performans ve uzun ömür sunmak için biçimlendirilmelidir. Örneğin,
f2fs
dosya sistemi kullanılmalıdır.
Otomotiv cihaz uygulamaları, dahili çıkarılamayan depolama alanının bir bölümü aracılığıyla paylaşılan harici depolama alanı sağlıyorsa:
- [7.6.1/A-SR] Harici depolama alanında gerçekleştirilen işlemlerde G/Ç ek yükünü azaltmak için (ör.
SDCardFS
kullanarak) ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları 32 bit ise:
-
[7.6.1/A-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 512 MB OLMALIDIR:
- Küçük/normal ekranlarda 280 dpi veya daha düşük
- Ekstra büyük ekranlarda ldpi veya daha düşük
- Büyük ekranlarda mdpi veya daha düşük
-
[7.6.1/A-1-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 608 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya daha yüksek
- Büyük ekranlarda hdpi veya daha yüksek
- Çok büyük ekranlarda mdpi veya daha yüksek
-
[7.6.1/A-1-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
-
[7.6.1/A-1-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.344 MB OLMALIDIR:
- Küçük/normal ekranlarda 560 dpi veya daha yüksek
- Büyük ekranlarda 400 DPI veya daha yüksek
- Ekstra büyük ekranlarda xhdpi veya daha yüksek
Otomotiv cihaz uygulamaları 64 bit ise:
-
[7.6.1/A-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 816 MB OLMALIDIR:
- Küçük/normal ekranlarda 280 dpi veya daha düşük
- Ekstra büyük ekranlarda ldpi veya daha düşük
- Büyük ekranlarda mdpi veya daha düşük
-
[7.6.1/A-2-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 944 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya daha yüksek
- Büyük ekranlarda hdpi veya daha yüksek
- Çok büyük ekranlarda mdpi veya daha yüksek
-
[7.6.1/A-2-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
-
[7.6.1/A-2-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.824 MB OLMALIDIR:
- Küçük/normal ekranlarda 560 dpi veya daha yüksek
- Büyük ekranlarda 400 DPI veya daha yüksek
- Ekstra büyük ekranlarda xhdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Otomotiv cihaz uygulamaları:
- [7.7.1/A] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
Otomotiv cihaz uygulamaları:
- [7.8.1/A-0-1] Mikrofon içermelidir.
Otomotiv cihaz uygulamaları:
- [7.8.2/A-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.output
beyan etmelidir.
2.5.2. Multimedya
Otomotiv cihaz uygulamaları aşağıdaki ses kodlamasını DESTEKLEMELİDİR:
- [5.1/A-0-1] MPEG-4 AAC Profili (AAC LC)
- [5.1/A-0-2] MPEG-4 HE AAC Profili (AAC+)
- [5.1/A-0-3] AAC ELD (enhanced low delay AAC)
Otomotiv cihaz uygulamaları, aşağıdaki video kodlamasını DESTEKLEMELİDİR:
Otomotiv cihaz uygulamaları, aşağıdaki video kod çözme işlemlerini DESTEKLEMELİDİR:
Otomotiv cihaz uygulamalarının aşağıdaki video kod çözme işlemlerini desteklemesi ŞİDDETLE TAVSİYE EDİLİR:
- [5.3/A-SR] H.265 HEVC
2.5.3. Yazılım
Otomotiv cihaz uygulamaları:
-
[3/A-0-1]
android.hardware.type.automotive
özelliği BELİRTİLMELİDİR. -
[3/A-0-2] uiMode =
UI_MODE_TYPE_CAR
desteklenmelidir. -
[3/A-0-3]
android.car.*
ad alanındaki tüm herkese açık API'leri DESTEKLEMELİDİR. -
[3.4.1/A-0-1]
android.webkit.Webview
API'nin eksiksiz bir uygulamasını SAĞLAMALIDIR. -
[3.8.3/A-0-1] Üçüncü taraf uygulamaları tarafından istendiğinde
Notification.CarExtender
API'sini kullanan bildirimleri GÖSTERMELİDİR. -
[3.8.4/A-SR] Yardımcı işlemine yönelik istekleri işlemek için cihazda bir asistan uygulanması önemle tavsiye edilir.
-
[3.13/A-SR] Hızlı Ayarlar kullanıcı arayüzü bileşeni içermesi ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamalarında bas-konuş düğmesi varsa:
- [3.8.4/A-1-1] Kullanıcı tarafından seçilen asistan uygulamasını (diğer bir deyişle
VoiceInteractionService
'yi uygulayan uygulama) başlatmak için belirlenen etkileşim olarak bas-konuş düğmesine kısa basma işlemi KULLANILMALIDIR.
Otomotiv cihaz uygulamaları:
- [3.14/A-0-1] 3.14 bölümünde açıklandığı gibi medya API'lerini kullanan üçüncü taraf uygulamaları desteklemek için bir kullanıcı arayüzü çerçevesi İÇERMELİDİR.
2.5.4. Performans ve Güç
Automotive cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/A-1-1] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.
- [8.3/A-1-2] Uygulama Bekletme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANINMALIDIR.
Otomotiv cihaz uygulamaları:
- [8.2/A-0-1] İstatistiklerin Sistem API'si
android.car.storagemonitoring.CarStorageMonitoringManager
aracılığıyla geliştiricilere sunulabilmesi için her işlemin UID'si başına kalıcı olmayan depolama alanına okunan ve yazılan bayt sayısını bildirmelidir. Android Açık Kaynak Projesi,uid_sys_stats
çekirdek modülü aracılığıyla bu şartı karşılar. - [8.4/A-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/A-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/A-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar. - [8.4/A] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
- [8.4/A-0-4] Bu güç kullanımını,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNMALIDIR.
2.5.5. Güvenlik Modeli
Otomotiv cihaz uygulamaları birden fazla kullanıcıyı destekliyorsa:
- [9.5/A-1-1] Kullanıcının oturum açmasını gerektirmeden araç sistemi tarafından sağlanan tüm işlevlere izin veren bir misafir hesabı İÇERMELİDİR.
Otomotiv cihaz uygulamaları güvenli bir kilit ekranını destekliyorsa:
- [9.9.2/A-1-1] Kullanıcıya özel kimlik doğrulama anahtarlarıyla şifrelemeyi DESTEKLEMELİDİR. Bunu yapmanın bir yolu Dosya Tabanlı Şifreleme (FBE)'dir.
Otomotiv cihaz uygulamaları:
- [9.14/A-0-1] Android çerçevesi araç alt sistemlerinden gelen mesajları kontrol etmelidir. Örneğin, izin verilen mesaj türleri ve mesaj kaynakları için izin verilenler listesi oluşturulmalıdır.
- [9.14/A-0-2] Android çerçevesinden veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı watchdog işlevi KULLANILMALIDIR. Bu, kötü amaçlı yazılımların araç ağını trafikle doldurmasını önler. Aksi takdirde, araç alt sistemlerinde arıza meydana gelebilir.
2.6. Tablet Gereksinimleri
Android Tablet cihaz, aşağıdaki tüm ölçütleri karşılayan bir Android cihaz uygulamasıdır:
- Genellikle iki elle tutularak kullanılır.
- Clamshell veya dönüştürülebilir yapılandırmaya sahip olmamalıdır.
- Cihazla kullanılan tüm fiziksel klavye uygulamaları, standart bir bağlantı aracılığıyla bağlanmalıdır.
- Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
- 7-18 inç arasında fiziksel bir çapraz ekran boyutuna sahip olmalıdır.
Tablet cihaz uygulamaları, elde taşınabilir cihaz uygulamalarına benzer gereksinimlere sahiptir. İstisnalar, ilgili bölümde * işaretiyle belirtilir ve bu bölümde referans olarak not edilir.
2.4.1. Donanım
Ekran Boyutu
- [7.1.1.1/Tab-0-1] 7-18 inç arasında bir ekrana SAHİP OLMALIDIR.
Minimum Bellek ve Depolama Alanı (Bölüm 7.6.1)
Elde taşınabilir cihaz gereksinimlerinde küçük/normal ekranlar için listelenen ekran yoğunlukları tabletler için geçerli değildir.
USB çevre birimi modu (Bölüm 7.7.1)
Tablet cihaz uygulamaları, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.1/Tab] Android Open Accessory (AOA) API'yi UYGULAYABİLİR.
Sanal Gerçeklik Modu (Bölüm 7.9.1)
Sanal Gerçeklikte Yüksek Performans (Bölüm 7.9.2)
Sanal gerçeklik şartları tabletler için geçerli değildir.
3. Yazılım
3.1. Yönetilen API Uyumluluğu
Yönetilen Dalvik bayt kodu yürütme ortamı, Android uygulamaları için birincil araçtır. Android uygulama programlama arayüzü (API), yönetilen çalışma zamanı ortamında çalışan uygulamalara sunulan Android platform arayüzleri kümesidir.
Cihaz uygulamaları:
-
[C-0-1] Android SDK tarafından kullanıma sunulan veya yukarı akış Android kaynak kodunda "@SystemApi" işaretçisiyle süslenmiş tüm API'lerin, belgelenmiş tüm davranışlar dahil olmak üzere eksiksiz uygulamalarını SAĞLAMALIDIR.
-
[C-0-2] TestApi ek açıklaması (@TestApi) ile işaretlenen tüm sınıfları, yöntemleri ve ilişkili öğeleri desteklemeli/korumalıdır.
-
[C-0-3] Bu Uyumluluk Tanımı'nda özellikle izin verilen durumlar hariç olmak üzere, yönetilen API'ler atlanmamalı, API arayüzleri veya imzaları değiştirilmemeli, belgelenen davranıştan sapılmamalı ya da hiçbir işlem yapmayan işlemler eklenmemelidir.
-
[C-0-4] Android'in API'ler içerdiği bazı donanım özellikleri atlandığında bile API'ler mevcut olmaya ve makul bir şekilde davranmaya DEVAM ETMELİDİR. Bu senaryoya özgü şartlar için 7. bölüme bakın.
-
[C-0-5] SDK belgelerinde açıklandığı gibi, android ad alanında
@hidden
ek açıklamasıyla süslenmiş ancak@SystemAPI
veya@TestApi
ile süslenmemiş API'ler olarak tanımlanan gizli API'lerin üçüncü taraf uygulamaları tarafından kullanımını KISITLAMALI ve AOSP'deki uygun API düzeyi dalı içinprebuilts/runtime/appcompat/
yolunda sağlanan geçici liste ve yasaklılar listesi dosyalarındakiyle aynı kısıtlanmış listelerde yer alan her bir gizli API ile birlikte gönderilmelidir. Ancak:- MAY, eğer gizli bir API yoksa veya cihaz uygulamasında farklı şekilde uygulanmışsa gizli API'yi kara listeye taşıyın ya da tüm kısıtlanmış listelerden çıkarın.
- MAY: AOSP'de gizli bir API yoksa gizli API'yi kısıtlanmış listelerden herhangi birine ekleyin.
- İzin verilenler listesi hariç, gizli bir API'yi kısıtlanmış bir listeden daha az kısıtlayıcı bir listeye taşıyan dinamik bir güncelleme mekanizması UYGULAYABİLİR.
3.1.1. Android Uzantıları
Android, aynı API düzeyi sürümünü korurken yönetilen API'lerin genişletilmesini destekler.
- [C-0-1] Android cihaz uygulamaları, her API düzeyi için izin verilen minimum sürümlerden daha yüksek veya bu sürümlere eşit sürümlere sahip hem paylaşılan kitaplık
ExtShared
hem de hizmetlerExtServices
için AOSP uygulamasını önceden yüklemelidir. Örneğin, API düzeyi 24'ü çalıştıran Android 7.0 cihaz uygulamaları EN AZ sürüm 1'i içermelidir.
3.1.2. Android Kitaplığı
Apache HTTP istemcisinin desteği sonlandırıldığından cihaz uygulamaları:
- [C-0-1]
org.apache.http.legacy
kitaplığı, bootclasspath'e yerleştirilmemelidir. - [C-0-2] YALNIZCA uygulama aşağıdaki koşullardan birini karşıladığında
org.apache.http.legacy
kitaplığı uygulama sınıf yoluna eklenmelidir:- API düzeyi 28 veya daha düşük bir sürümü hedefliyorsa
<uses-library>
öğesininandroid:name
özelliğiniorg.apache.http.legacy
olarak ayarlayarak kitaplığa ihtiyacı olduğunu manifest dosyasında belirtir.
AOSP uygulaması bu koşulları karşılar.
3.2. Yazılım API'si Uyumluluğu
Android, bölüm 3.1'deki yönetilen API'lere ek olarak, yalnızca çalışma zamanında kullanılabilen önemli bir "yumuşak" API de içerir. Bu API, niyetler, izinler ve Android uygulamalarının derleme zamanında zorunlu kılınamayan benzer yönleri gibi öğeler biçimindedir.
3.2.1. İzinler
- [C-0-1] Cihaz uygulayıcıları, izin referans sayfasında belirtildiği şekilde tüm izin sabitlerini desteklemeli ve zorunlu kılmalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek şartların listelendiğini unutmayın.
3.2.2. Oluşturma Parametreleri
Android API'leri, android.os.Build sınıfında mevcut cihazı tanımlaması amaçlanan çeşitli sabitler içerir.
- [C-0-1] Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının UYMASI GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre | Ayrıntılar |
---|---|
VERSION.RELEASE | Şu anda yürütülen Android sisteminin sürümü, okunabilir biçimde. Bu alan, 9'da tanımlanan dize değerlerinden birini içermelidir. |
VERSION.SDK | Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 9 için bu alanın değeri 9_INT tam sayısı OLMALIDIR. |
VERSION.SDK_INT | Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 9 için bu alanın değeri 9_INT tam sayısı OLMALIDIR. |
VERSION.INCREMENTAL | Cihaz uygulayıcısı tarafından seçilen ve o anda yürütülen Android sisteminin belirli derlemesini belirten, kullanıcılar tarafından okunabilir biçimde bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişikliği tanımlayıcısının kullanıldığını belirtmektir. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır. |
MASA | Cihaz uygulayıcısı tarafından seçilen ve cihazın kullandığı belirli dahili donanımı tanımlayan, kullanıcılar tarafından okunabilir biçimdeki bir değer. Bu alan, cihazı çalıştıran kartın belirli bir revizyonunu belirtmek için kullanılabilir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
BRAND | Cihazla ilişkili marka adını son kullanıcılara bilindiği şekliyle yansıtan bir değer. Okunabilir biçimde OLMALI ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını TEMSİL ETMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
SUPPORTED_ABIS | Yerel kodun talimat kümesinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
SUPPORTED_32_BIT_ABIS | Yerel kodun talimat kümesinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
SUPPORTED_64_BIT_ABIS | Yerel kodun ikinci talimat setinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
CPU_ABI | Yerel kodun talimat kümesinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
CPU_ABI2 | Yerel kodun ikinci talimat setinin adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Native API Compatibility (Yerel API Uyumluluğu). |
CİHAZ | Cihaz uygulayıcısı tarafından seçilen ve cihazın donanım özelliklerinin ve endüstriyel tasarımının yapılandırmasını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilmeli ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
PARMAK İZİ |
Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunabilir OLMALIDIR. Şu şablona UYULMALIDIR:
$(BRAND)/$(PRODUCT)/ Örneğin:
acme/myproduct/ Parmak izi, boşluk karakterleri içermemelidir. Yukarıdaki şablonda yer alan diğer alanlarda boşluk karakterleri varsa bunlar, derleme parmak izinde alt çizgi ("_") karakteri gibi başka bir karakterle DEĞİŞTİRİLMELİDİR. Bu alanın değeri 7 bitlik ASCII olarak kodlanabilmelidir. |
DONANIM | Donanımın adı (çekirdek komut satırından veya /proc'tan). Makul ölçüde okunabilir OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
HOST | Derlemenin oluşturulduğu ana makineyi benzersiz bir şekilde tanımlayan, kullanıcıların okuyabileceği biçimde bir dize. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır. |
ID | Cihaz uygulayıcısı tarafından belirli bir sürümü belirtmek için seçilen, insanlar tarafından okunabilir biçimde bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapabilmesi için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir. |
ÜRETİCİ | Ürünün Özgün Donanım Üreticisi'nin (OEM) ticari adı. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalıdır veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca değişmemelidir. |
MODEL | Cihaz uygulayıcısı tarafından seçilen ve cihazın son kullanıcı tarafından bilinen adını içeren bir değer. Bu, cihazın son kullanıcılara pazarlandığı ve satıldığı adla AYNI OLMALIDIR. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalıdır veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca değişmemelidir. |
ÜRÜN | Cihaz uygulayıcısı tarafından seçilen ve aynı marka içinde benzersiz OLMASI GEREKEN belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değer. Kullanıcıların okuyabileceği bir biçimde OLMALIDIR ancak son kullanıcıların görüntülemesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilmeli ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
SERIAL | "UNKNOWN" döndürmelidir. |
ETİKETLER | Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayırt eden virgülle ayrılmış etiket listesi. Bu alan, üç tipik Android platformu imzalama yapılandırmasına (release-keys, dev-keys, test-keys) karşılık gelen değerlerden birini içermelidir. |
SÜRE | Derlemenin gerçekleştiği zaman damgasını temsil eden bir değer. |
TÜR | Cihaz uygulayıcısı tarafından seçilen ve derlemenin çalışma zamanı yapılandırmasını belirten bir değer. Bu alan, üç tipik Android çalışma zamanı yapılandırmasına (user, userdebug veya eng) karşılık gelen değerlerden birini içermelidir. |
KULLANICI | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı ya da kullanıcı kimliği. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır. |
SECURITY_PATCH | Bir derlemenin güvenlik yaması düzeyini gösteren değer. Bu, derlemenin, belirlenen Android herkese açık güvenlik bülteninde açıklanan sorunlardan herhangi birine karşı hiçbir şekilde güvenlik açığı içermediğini göstermelidir. Android Herkese Açık Güvenlik Bülteni veya Android Güvenlik Tavsiyesi'nde belgelenen tanımlı bir dizeyle eşleşen [YYYY-AA-GG] biçiminde OLMALIDIR. Örneğin, "2015-11-01". |
BASE_OS | Android Public Security Bulletin'de sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden bir değer. Doğru değeri RAPORLAMALI ve böyle bir derleme yoksa boş bir dize ("") raporlamalıdır. |
BOOTLOADER | Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili önyükleyici sürümünü tanımlayan, kullanıcılar tarafından okunabilir biçimdeki değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir. |
getRadioVersion() | Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili radyo/modem sürümünü tanımlayan bir değeri, kullanıcılar tarafından okunabilir biçimde İÇERMELİDİR (veya döndürmelidir). Bir cihazda dahili radyo/modem yoksa NULL döndürmesi GEREKİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir. |
getSerial() | Aynı MODEL ve ÜRETİCİYE sahip cihazlarda kullanılabilir ve benzersiz olması GEREKEN bir donanım seri numarası (olmalı veya döndürmelidir). Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir. |
3.2.3. Amaca Uygunluk
3.2.3.1. Temel uygulama amaçları
Android intent'leri, uygulama bileşenlerinin diğer Android bileşenlerinden işlev isteğinde bulunmasına olanak tanır. Android upstream projesi, temel Android uygulamaları olarak kabul edilen uygulamaların bir listesini içerir. Bu uygulamalar, yaygın işlemleri gerçekleştirmek için çeşitli amaç kalıplarını uygular.
-
[C-0-1] Cihaz uygulamaları, AOSP'deki aşağıdaki temel Android uygulamaları tarafından tanımlanan tüm genel amaç filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini amaç işleyiciyle birlikte önceden yüklemelidir:
- Masa Saati
- Tarayıcı
- Takvim
- Kişiler
- Galeri
- GlobalSearch
- Launcher
- Müzik
- Ayarlar
3.2.3.2. Amaç Çözümleme
-
[C-0-1] Android genişletilebilir bir platform olduğundan cihaz uygulamaları, Ayarlar hariç bölüm 3.2.3.1'de referans verilen her amaç kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına İZİN VERMELİDİR. Yukarı akış Android açık kaynak uygulaması, bu işleme varsayılan olarak izin verir.
-
[C-0-2] Cihaz uygulayıcıları, sistem uygulamalarının bu amaç kalıplarını kullanmasına özel ayrıcalıklar TANIMLAMAMALI veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü ele geçirmesini ENGELLEMEMELİDİR. Bu yasak, özellikle kullanıcının aynı amaç kalıbını işleyen birden fazla uygulama arasında seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bununla sınırlı değildir.
-
[C-0-3] Cihaz uygulamaları, kullanıcıların amaçlar için varsayılan etkinliği değiştirebileceği bir kullanıcı arayüzü SAĞLAMALIDIR.
-
Ancak, varsayılan etkinlik, veri URI'si için daha spesifik bir özellik sağladığında cihaz uygulamaları belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten bir amaç filtresi kalıbı, tarayıcının "http://" için temel amaç kalıbından daha spesifiktir.
Android ayrıca üçüncü taraf uygulamalarının, belirli web URI amaçları türleri için yetkili bir varsayılan uygulama bağlantısı davranışı bildirmesine olanak tanıyan bir mekanizma içerir. Bu tür yetkili beyanlar bir uygulamanın amaç filtresi kalıplarında tanımlandığında cihaz uygulamaları:
- [C-0-4] MUST, yukarı akış Android Açık Kaynak Projesi'ndeki Paket Yöneticisi tarafından uygulanan Digital Asset Links spesifikasyonunda tanımlanan doğrulama adımlarını gerçekleştirerek tüm amaç filtrelerini doğrulamaya çalışmalıdır.
- [C-0-5] Uygulama yüklenirken niyet filtrelerinin doğrulanması DENENMELİ ve başarıyla doğrulanan tüm URI niyet filtreleri, URI'leri için varsayılan uygulama işleyicileri olarak ayarlanmalıdır.
- Başarıyla doğrulanırsa ancak diğer aday URI filtreleri doğrulanamazsa URI'leri için belirli URI amaç filtrelerini varsayılan uygulama işleyicileri olarak AYARLAYABİLİR. Bir cihaz uygulaması bunu yaparsa ayarlar menüsünde kullanıcıya URI başına uygun kalıp geçersiz kılma işlemleri SAĞLAMALIDIR.
- Kullanıcıya Ayarlar'da uygulama başına uygulama bağlantıları kontrolleri aşağıdaki şekilde SAĞLANMALIDIR:
- [C-0-6] Kullanıcı, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütünsel olarak geçersiz kılabilmelidir. Bu davranış, her zaman açma, her zaman sorma veya hiçbir zaman açma şeklinde olmalı ve tüm aday URI amaç filtreleri için eşit şekilde geçerli olmalıdır.
- [C-0-7] Kullanıcı, aday URI amaç filtrelerinin listesini GÖREBİLMELİDİR.
- Cihaz uygulaması, kullanıcıya başarıyla doğrulanmış belirli aday URI amaç filtrelerini amaç filtresi bazında geçersiz kılma olanağı SAĞLAYABİLİR.
- [C-0-8] Cihaz uygulaması, bazı aday URI amaç filtrelerinin doğrulamayı geçmesine, bazılarının ise başarısız olmasına izin veriyorsa kullanıcıların belirli aday URI amaç filtrelerini görüntülemesine ve geçersiz kılmasına olanak tanımalıdır.
3.2.3.3. Niyet Ad Alanları
- [C-0-1] Cihaz uygulamaları, android. veya com.android. ad alanında ACTION, CATEGORY ya da başka bir anahtar dizesi kullanarak yeni bir intent veya yayın intent kalıbını destekleyen herhangi bir Android bileşeni İÇERMEMELİDİR.
- [C-0-2] Cihaz uygulayıcıları, başka bir kuruluşa ait paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni bir intent ya da yayın intent kalıplarını destekleyen Android bileşenleri içermemelidir.
- [C-0-3] Cihaz uygulayıcıları, 3.2.3.1 bölümünde listelenen temel uygulamalar tarafından kullanılan amaç kalıplarını değiştirmemeli veya genişletmemelidir.
- Cihaz uygulamaları, kendi kuruluşlarıyla açık ve belirgin bir şekilde ilişkili ad alanlarını kullanan amaç kalıplarını içerebilir. Bu yasak, bölüm 3.6'da Java dili sınıfları için belirtilen yasağa benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikleri bildirmek için belirli amaçları yayınlamak üzere platforma güvenir.
Cihaz uygulamaları:
- [C-0-1] SDK belgelerinde açıklandığı gibi, uygun sistem etkinliklerine yanıt olarak herkese açık yayın amaçlarını yayınlamalıdır. Arka plan uygulamalarıyla ilgili sınırlama SDK dokümanlarında da açıklandığı için bu şartın 3.5 bölümüyle çelişmediğini unutmayın.
3.2.3.5. Varsayılan Uygulama Ayarları
Android'de, kullanıcılara varsayılan uygulamalarını (ör. ana ekran veya SMS için) kolayca seçme olanağı sunan ayarlar bulunur.
Cihaz uygulamaları, anlamlı olduğu durumlarda benzer bir ayarlar menüsü sağlamalı ve SDK belgelerinde aşağıda açıklandığı gibi amaç filtresi kalıbı ve API yöntemleriyle uyumlu olmalıdır.
Cihaz uygulamaları android.software.home_screen
bildiriyorsa:
- [C-1-1] Ana ekran için varsayılan uygulama ayarları menüsünü gösterme
android.settings.HOME_SETTINGS
amacına UYULMALIDIR.
Cihaz uygulamaları android.hardware.telephony
bildiriyorsa:
-
[C-2-1] Varsayılan SMS uygulamasını değiştirmek için bir iletişim kutusu göstermek üzere
android.provider.Telephony.ACTION_CHANGE_DEFAULT
amacını çağıracak bir ayarlar menüsü SAĞLANMALIDIR. -
[C-2-2] Kullanıcının varsayılan Telefon uygulamasını değiştirmesine izin vermek için bir iletişim kutusu gösterme
android.telecom.action.CHANGE_DEFAULT_DIALER
amacına UYULMALIDIR.- Acil durum aramaları hariç gelen ve giden aramalar için kullanıcının seçtiği varsayılan Telefon uygulamasının kullanıcı arayüzü KULLANILMALIDIR. Acil durum aramalarında ise önceden yüklenmiş Telefon uygulaması kullanılır.
-
[C-2-3] android.telecom.action.CHANGE_PHONE_ACCOUNTS amacına uygun olarak,
PhoneAccounts
ile ilişkiliConnectionServices
'ı yapılandırmak için kullanıcıya kolaylık sağlamalı ve telekomünikasyon hizmeti sağlayıcısının giden aramalar yapmak için kullanacağı varsayılan bir PhoneAccount'u desteklemelidir. AOSP uygulaması, "Aramalar" ayarları menüsünde "Arama Hesapları seçeneği" menüsünü ekleyerek bu şartı karşılar.
Cihaz uygulamaları android.hardware.nfc.hce
bildiriyorsa:
- [C-3-1] Dokundur ve Öde için varsayılan uygulama ayarları menüsünü göstermek üzere android.settings.NFC_PAYMENT_SETTINGS amacına UYULMALIDIR.
Cihaz uygulamaları VoiceInteractionService
özelliğini destekliyorsa ve aynı anda bu API'yi kullanan birden fazla uygulama yüklüyse:
- [C-4-1] Sesli giriş ve yardım için varsayılan uygulama ayarları menüsünü gösterme
android.settings.ACTION_VOICE_INPUT_SETTINGS
amacına UYULMALIDIR.
3.2.4. İkincil ekranlardaki etkinlikler
Cihaz uygulamaları, ikincil ekranlarda normal Android Etkinlikleri'nin başlatılmasına izin veriyorsa:
- [C-1-1]
android.software.activities_on_secondary_displays
özellik bayrağı AYARLANMALIDIR. - [C-1-2] Birincil ekranda çalışan bir etkinliğe benzer şekilde API uyumluluğu GARANTİ EDİLMELİDİR.
- [C-1-3] Yeni etkinlik,
ActivityOptions.setLaunchDisplayId()
API'si aracılığıyla hedef ekran belirtilmeden başlatıldığında yeni etkinliği başlatan etkinlikle aynı ekranda başlatILMALIDIR. - [C-1-4]
Display.FLAG_PRIVATE
bayraklı bir ekran kaldırıldığında TÜM etkinlikler yok EDİLMELİDİR. - [C-1-5] Ekranın kendisi yeniden boyutlandırılırsa
VirtualDisplay
üzerindeki tüm etkinlikler buna göre yeniden boyutlandırILMALIDIR. - Bir metin girişi alanı ikincil ekranda odaklandığında bir IME (giriş yöntemi düzenleyici, kullanıcıların metin girmesini sağlayan bir kullanıcı kontrolü) birincil ekranda GÖSTERİLEBİLİR.
- Dokunma veya tuş girişleri desteklendiğinde, giriş odağını birincil ekrandan bağımsız olarak ikincil ekranda uygulamalıdır.
- İkincil ekranda bir etkinlik başlatılırsa gösterilmesi, doğru şekilde çalışması ve uyumluluğun korunması için bu ekrana karşılık gelen
android.content.res.Configuration
olmalıdır.
Cihaz uygulamaları, ikincil ekranlarda normal Android Etkinlikleri'nin başlatılmasına izin veriyorsa ve birincil ile ikincil ekranların farklı android.util.DisplayMetrics değerleri varsa:
- [C-2-1] Yeniden boyutlandırılamayan etkinliklere (
AndroidManifest.xml
içinderesizeableActivity=false
olanlar) ve API düzeyi 23 veya daha düşük olan uygulamalara ikincil ekranlarda İZİN VERİLMEMELİDİR.
Cihaz uygulamaları, ikincil ekranlarda normal Android Etkinlikleri'nin başlatılmasına izin veriyorsa ve ikincil ekranda android.view.Display.FLAG_PRIVATE işareti varsa:
- [C-3-1] Yalnızca söz konusu ekranın, sistemin ve ekranda zaten bulunan etkinliklerin sahibi, ekranı başlatabilmelidir. Herkes, android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda başlatma işlemi yapabilir.
3.3. Yerel API Uyumluluğu
Yerel kod uyumluluğu zordur. Bu nedenle, cihaz uygulayıcıları:
- [SR] Aşağıda listelenen kitaplıkların uygulamalarını yukarı akış Android Açık Kaynak Projesi'nden kullanmanız KESİNLİKLE ÖNERİLİR.
3.3.1. Uygulama İkili Arabirimleri
Yönetilen Dalvik bayt kodu, uygulamada uygun cihaz donanım mimarisi için derlenmiş bir ELF .so
dosyası olarak sağlanan yerel kodu çağırabilir..apk
Yerel kod, temel işlemci teknolojisine büyük ölçüde bağlı olduğundan Android, Android NDK'da bir dizi Uygulama İkili Arabirimi (ABI) tanımlar.
Cihaz uygulamaları:
- [C-0-1] Tanımlanmış bir veya daha fazla ABI ile uyumlu OLMALI ve Android NDK ile uyumluluğu uygulamalıdır.
- [C-0-2] Standart Java Native Interface (JNI) semantiğini kullanarak yönetilen ortamda çalışan kodun yerel kodu çağırması için destek içermelidir.
- [C-0-3] Aşağıdaki listede yer alan her bir gerekli kitaplıkla kaynak uyumlu (yani başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
- [C-0-5]
android.os.Build.SUPPORTED_ABIS
,android.os.Build.SUPPORTED_32_BIT_ABIS
veandroid.os.Build.SUPPORTED_64_BIT_ABIS
parametreleri aracılığıyla cihaz tarafından desteklenen yerel Uygulama İkili Arabirimi'ni (ABI) doğru şekilde bildirmelidir. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene doğru sıralanmış, virgülle ayrılmış ABI listeleridir. -
[C-0-6] Yukarıdaki parametreler aracılığıyla aşağıdaki ABI listesinin bir alt kümesini RAPORLAMALI ve listede olmayan hiçbir ABI'yi RAPORLAMAMALIDIR.
-
armeabi
-
armeabi-v7a
-
arm64-v8a
-
x86
-
x86-64
-
[C-0-7] Yerel API'ler sağlayan aşağıdaki tüm kitaplıklar, yerel kod içeren uygulamalarda KULLANILABİLİR olmalıdır:
-
libaaudio.so (AAudio yerel ses desteği)
- libandroid.so (yerel Android etkinliği desteği)
- libc (C kitaplığı)
- libcamera2ndk.so
- libdl (dinamik bağlayıcı)
- libEGL.so (yerel OpenGL yüzey yönetimi)
- libGLESv1_CM.so (OpenGL ES 1.x)
- libGLESv2.so (OpenGL ES 2.0)
- libGLESv3.so (OpenGL ES 3.x)
- libicui18n.so
- libicuuc.so
- libjnigraphics.so
- liblog (Android günlük kaydı)
- libmediandk.so (yerel medya API'leri desteği)
- libm (matematik kitaplığı)
- libneuralnetworks.so (Neural Networks API)
- libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
- libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
- libRS.so
- libstdc++ (C++ için minimum destek)
- libvulkan.so (Vulkan)
- libz (Zlib sıkıştırması)
- JNI arayüzü
-
-
[C-0-8] Yukarıda listelenen yerel kitaplıklar için herkese açık işlevler eklenmemeli veya kaldırılmamalıdır.
- [C-0-9]
/vendor/etc/public.libraries.txt
içinde doğrudan üçüncü taraf uygulamalarına sunulan ek AOSP dışı kitaplıkları LİSTELEMELİDİR. - [C-0-10] AOSP'de sistem kitaplıkları olarak uygulanan ve sağlanan diğer yerel kitaplıklar, ayrılmış oldukları için API düzeyi 24 veya sonraki sürümleri hedefleyen üçüncü taraf uygulamalarına sunulmamalıdır.
- [C-0-11] NDK'da tanımlandığı şekilde,
libGLESv3.so
kitaplığı aracılığıyla tüm OpenGL ES 3.1 ve Android Extension Pack işlev sembollerini dışa aktarmalıdır. Tüm sembollerin bulunması GEREKTİĞİNİ ancak bölüm 7.1.4.1'de, ilgili işlevlerin tam olarak uygulanmasının beklendiği durumlarla ilgili koşulların daha ayrıntılı olarak açıklandığını unutmayın. - [C-0-12]
libvulkan.so
kitaplığı aracılığıyla temel Vulkan 1.0 işlev simgeleri veVK_KHR_surface
,VK_KHR_android_surface
,VK_KHR_swapchain
,VK_KHR_maintenance1
veVK_KHR_get_physical_device_properties2
uzantıları için işlev simgelerini dışa aktarmalıdır. Tüm sembollerin bulunması GEREKTİĞİNİ, ancak bölüm 7.1.4.2'de her bir ilgili işlevin tam olarak uygulanmasının beklendiği durumlarla ilgili koşulların daha ayrıntılı olarak açıklandığını unutmayın. - Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kodu ve başlık dosyaları kullanılarak oluşturulmalıdır.
Android'in gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın.
3.3.2. 32 bit ARM Yerel Kod Uyumluluğu
Cihaz uygulamaları armeabi
ABI'nin desteklendiğini bildiriyorsa:
- [C-3-1]
armeabi-v7a
de desteklenmeli ve desteklendiği bildirilmelidir.armeabi
yalnızca eski uygulamalarla geriye dönük uyumluluk için kullanılır.
Cihaz uygulamaları armeabi-v7a
ABI'nin desteklendiğini bildiriyorsa bu ABI'yi kullanan uygulamalar:
-
[C-2-1]
/proc/cpuinfo
içinde aşağıdaki satırları İÇERMELİ ve aynı cihazdaki değerleri, diğer ABI'ler tarafından okunduklarında bile DEĞİŞTİRMEMELİDİR.-
Features:
ve ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi. -
CPU architecture:
ve ardından cihazın desteklediği en yüksek ARM mimarisini açıklayan bir tam sayı (ör. ARMv8 cihazlar için "8").
-
-
[C-2-2] ABI, ARMv8 mimarisinde yerel CPU desteği veya yazılım emülasyonu aracılığıyla uygulanmış olsa bile aşağıdaki işlemler her zaman kullanılabilir olmalıdır:
- SWP ve SWPB talimatları.
- SETEND talimatı.
- CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri.
-
[C-2-3] Advanced SIMD (diğer adıyla NEON) uzantısı için destek İÇERMELİDİR.
3.4. Web Uyumluluğu
3.4.1. WebView Uyumluluğu
Cihaz uygulamaları, android.webkit.Webview
API'nin eksiksiz bir uygulamasını sağlıyorsa:
- [C-1-1]
android.software.webview
BİLDİRİLMELİDİR. - [C-1-2]
android.webkit.WebView
API'nin uygulanması için Android 9 dalında yukarı akış Android Açık Kaynak Projesi'nden Chromium Projesi derlemesi KULLANILMALIDIR. -
[C-1-3] WebView tarafından bildirilen kullanıcı aracısı dizesi şu biçimde OLMALIDIR:
Mozilla/5.0 (Linux; Android $(VERSION); [$(MODEL)] [Build/$(BUILD)]; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36
- $(VERSION) dizesinin değeri, android.os.Build.VERSION.RELEASE değerine eşit OLMALIDIR.
- $(MODEL) dizesi BOŞ olabilir ancak boş değilse android.os.Build.MODEL ile aynı değere SAHİP OLMALIDIR.
- "Build/$(BUILD)" atlanabilir ancak mevcutsa $(BUILD) dizesi android.os.Build.ID değeriyle aynı OLMALIDIR.
- $(CHROMIUM_VER) dizesinin değeri, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium sürümü OLMALIDIR.
- Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobile'ı ATLAYABİLİR.
-
WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliğini desteklemelidir ve özelliği destekliyorsa HTML5 spesifikasyonuna uygun olmalıdır.
3.4.2. Tarayıcı Uyumluluğu
Cihaz uygulamaları genel web'de gezinme için bağımsız bir Tarayıcı uygulaması içeriyorsa:
- [C-1-1] HTML5 ile ilişkili şu API'lerin her birini DESTEKLEMELİDİR:
- [C-1-2] HTML5/W3C webstorage API'sini DESTEKLEMELİ ve HTML5/W3C IndexedDB API'sini DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları, web depolama yerine IndexedDB'yi tercih etmeye başladığından IndexedDB'nin Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesi beklenmektedir.
- Bağımsız tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi gönderilebilir.
- Bağımsız tarayıcı uygulamasında (yukarı akış WebKit tarayıcı uygulamasına veya üçüncü taraf bir alternatife dayalı olsun ya da olmasın) mümkün olduğunca fazla HTML5 desteği uygulanmalıdır.
Ancak cihaz uygulamaları bağımsız bir Tarayıcı uygulaması içermiyorsa:
- [C-2-1] 3.2.3.1 bölümünde açıklandığı gibi herkese açık amaç kalıplarını desteklemeye DEVAM ETMELİDİR.
3.5. API Davranış Uyumluluğu
Cihaz uygulamaları:
- [C-0-9] Bölüm 3.5.1'de açıklandığı şekilde kısıtlanmadıkları sürece, yüklü tüm uygulamalarda API davranış uyumluluğunun uygulandığından EMİN OLMALIDIR.
- [C-0-10] YALNIZCA cihaz uygulayıcıları tarafından seçilen uygulamalar için API davranış uyumluluğunu sağlayan izin verilenler listesi yaklaşımı UYGULANMAMALIDIR.
API türlerinin (yönetilen, yumuşak, yerel ve web) her birinin davranışları, yukarı akış Android Açık Kaynak Projesi'nin tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumlulukla ilgili bazı özel alanlar şunlardır:
- [C-0-1] Cihazlar, standart bir amacın davranışını veya semantiğini DEĞİŞTİRMEMELİDİR.
- [C-0-2] Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, ContentProvider vb.) yaşam döngüsünü veya yaşam döngüsü semantiğini değiştirmemelidir.
- [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEMELİDİR.
- Cihazlar, arka plan uygulamalarına uygulanan sınırlamaları DEĞİŞTİRMEMELİDİR. Daha açık şekilde belirtmek gerekirse, arka planda çalışan uygulamalar için:
- [C-0-4] Uygulama tarafından
GnssMeasurement
veGnssNavigationMessage
'dan çıkış almak için kaydedilen geri çağırma işlemlerini DURDURMALIDIR. - [C-0-5]
LocationManager
API sınıfı veyaWifiManager.startScan()
yöntemi aracılığıyla uygulamaya sağlanan güncellemelerin sıklığını SINIRLANDIRMALIDIR. - [C-0-6] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa yayın amacı
"signature"
veya"signatureOrSystem"
protectionLevel
izni gerektirmediği ya da muafiyet listesinde olmadığı sürece, uygulamanın manifest dosyasında standart Android amaçlarının örtülü yayınları için yayın alıcılarının kaydedilmesine İZİN VERMEMELİDİR. - Uygulama, API düzeyi 25 veya üstünü hedefliyorsa kullanıcıya görünür bir görevi yerine getirmek için geçici izin verilenler listesine yerleştirilmediği sürece, hizmetlerin
stopSelf()
yöntemi çağrılmış gibi uygulamanın arka plan hizmetlerini DURDURMALIDIR. [C-0-7] - Uygulama API düzeyi 25 veya üstünü hedefliyorsa [C-0-8] uygulamanın tuttuğu uyandırma kilitlerini serbest bırakması ZORUNLUDUR.
- [C-0-4] Uygulama tarafından
- [C-0-9] Uygulama, listeyi
insertProviderAt()
veyaremoveProvider()
aracılığıyla değiştirmemişse cihazlar,Security.getProviders()
yönteminden döndürülen ilk yedi dizi değeri olarak aşağıdaki güvenlik sağlayıcıları, verilen sırada ve verilen adlarla (Provider.getName()
tarafından döndürüldüğü gibi) ve sınıflarla döndürmelidir. Cihazlar, aşağıdaki belirtilen sağlayıcı listesinden sonra ek sağlayıcılar döndürebilir.-
AndroidNSSP -
android.security.net.config.NetworkSecurityConfigProvider
-
AndroidOpenSSL -
com.android.org.conscrypt.OpenSSLProvider
-
CertPathProvider -
sun.security.provider.CertPathProvider
-
AndroidKeyStoreBCWorkaround -
android.security.keystore.AndroidKeyStoreBCWorkaroundProvider
-
BC -
com.android.org.bouncycastle.jce.provider.BouncyCastleProvider
-
HarmonyJSSE -
com.android.org.conscrypt.JSSEProvider
-
AndroidKeyStore -
android.security.keystore.AndroidKeyStoreProvider
-
AndroidNSSP -
Yukarıdaki listede olası her duruma yer verilmemiştir. Uyumluluk Test Paketi (CTS), platformun önemli bölümlerini davranış uyumluluğu açısından test eder ancak tüm bölümlerini test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcılar sistemin önemli kısımlarını yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodunu KULLANMALIDIR.
3.5.1. Arka plan kısıtlaması
Cihaz uygulamaları, AOSP'de yer alan uygulama kısıtlamalarını uygular veya uygulama kısıtlamalarını genişletirse:
- [C-SR] Kullanıcının kısıtlanmış uygulamaların listesini görebileceği bir kullanıcı olanağı sunması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-2] Her uygulamadaki kısıtlamaları etkinleştirmek / devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR.
- [C-1-3] Sistem sağlığıyla ilgili kötü davranış kanıtı olmadan kısıtlamalar otomatik olarak uygulanMAMALI, ancak takılı kalmış uyandırma kilitleri ve uzun süredir çalışan hizmetler gibi sistem sağlığıyla ilgili kötü davranışlar tespit edildiğinde uygulamalara kısıtlamalar uygulanABİLİR. Ölçütler, cihaz uygulayıcıları tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili OLMALIDIR. Uygulamanın piyasada popüler olmaması gibi tamamen sistem sağlığıyla ilgili olmayan diğer ölçütler kullanılmamalıdır.
- [C-1-4] Kullanıcı, uygulama kısıtlamalarını manuel olarak devre dışı bıraktığında uygulamalara yönelik uygulama kısıtlamaları otomatik olarak uygulanMAMALI ve kullanıcıya uygulama kısıtlamalarını uygulaması ÖNERİLEBİLİR.
- [C-1-5] Uygulama kısıtlamaları bir uygulamaya otomatik olarak uygulanırsa kullanıcıları bilgilendirmelidir.
- [C-1-6] Kısıtlanmış uygulama bu API'yi çağırdığında
ActivityManager.isBackgroundRestricted()
içintrue
döndürmelidir. - [C-1-7] Kullanıcı tarafından açıkça kullanılan ön plandaki en üst uygulama kısıtlanMAMALIDIR.
- [C-1-8] Kullanıcı, kısıtlanmış olan uygulamayı açıkça kullanmaya başladığında, en üstteki ön plan uygulaması haline gelen uygulamadaki kısıtlamalar ASKIYA ALINMALIDIR.
3.6. API ad alanları
Android, Java programlama dili tarafından tanımlanan paket ve sınıf ad alanı kurallarını izler. Cihaz uygulayıcıları, üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için bu paket ad alanlarında yasaklanmış değişiklikler (aşağıya bakın) YAPMAMALIDIR:
-
java.*
-
javax.*
-
sun.*
-
android.*
-
androidx.*
-
com.android.*
Yani:
- [C-0-1] Android platformunda herkese açık olarak sunulan API'ler, herhangi bir yöntem veya sınıf imzası değiştirilerek ya da sınıflar veya sınıf alanları kaldırılarak değiştirilmemelidir.
- [C-0-2] Yukarıdaki ad alanlarındaki API'lere herkese açık olarak sunulan öğeler (ör. sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere alanlar ya da yöntemler) ya da Test veya Sistem API'leri eklenmemelidir. "Herkese açık öğe", yukarı akış Android kaynak kodunda kullanılan "@hide" işaretçisiyle süslenmemiş tüm yapılardır.
Cihaz uygulayıcıları, API'lerin temel uygulamasını DEĞİŞTİREBİLİR ancak bu tür değişiklikler:
- [C-0-3] Herhangi bir herkese açık API'nin belirtilen davranışını ve Java dili imzasını etkilememelidir.
- [C-0-4] Reklamı yapılmamalı veya geliştiricilere başka bir şekilde gösterilmemelidir.
Ancak, cihaz uygulayıcıları standart Android ad alanı dışında özel API'ler ekleyebilir. Bununla birlikte, özel API'ler:
- [C-0-5] Başka bir kuruluşa ait olan veya başka bir kuruluşu ifade eden bir ad alanında OLMAMALIDIR. Örneğin, cihaz uygulayıcılar
com.google.*
veya benzer ad alanına API eklememelidir. Bunu yalnızca Google yapabilir. Benzer şekilde, Google da diğer şirketlerin ad alanlarına API eklememelidir. - [C-0-6] Yalnızca bunları açıkça kullanan uygulamaların (<uses-library> mekanizması aracılığıyla) bu tür API'lerin artan bellek kullanımından etkilenmesi için Android paylaşılan kitaplığı olarak paketlenmelidir.
Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarından birini iyileştirmeyi (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) teklif ederse uygulayıcı source.android.com adresini ziyaret etmeli ve bu sitedeki bilgilere göre değişiklik ve kod katkısında bulunma sürecini başlatmalıdır.
Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmayla ilgili standart kurallara karşılık geldiğini unutmayın. Bu bölümün amacı yalnızca bu kuralları pekiştirmek ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmektir.
3.7. Çalışma Zamanı Uyumluluğu
Cihaz uygulamaları:
-
[C-0-1] MUST support the full Dalvik Executable (DEX) format and Dalvik bytecode specification and semantics.
-
[C-0-2] Dalvik çalışma zamanlarını, yukarı akış Android platformuna uygun olarak ve aşağıdaki tabloda belirtildiği şekilde bellek ayıracak şekilde yapılandırmalıdır. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 bölümüne bakın.)
-
Android RunTime (ART), Dalvik Executable Format'ın referans upstream uygulaması ve referans uygulamanın paket yönetim sistemi KULLANILMALIDIR.
-
Çalışma zamanının kararlılığını sağlamak için çeşitli yürütme modları ve hedef mimariler altında bulanıklaştırma testleri YAPILMALIDIR. Android Açık Kaynak Projesi web sitesindeki JFuzz ve DexFuzz bölümlerine bakın.
Aşağıda belirtilen bellek değerlerinin minimum değerler olduğu ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceği unutulmamalıdır.
Ekran Düzeni | Ekran Yoğunluğu | Minimum Uygulama Belleği |
---|---|---|
Android Watch | 120 dpi (ldpi) | 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'de bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerine üçüncü taraf uygulamaları kullanma desteği bulunur.
Cihaz uygulamaları, üçüncü taraf uygulamaların cihazın ana ekranının yerini almasına izin veriyorsa:
- [C-1-1] Platform özelliği
android.software.home_screen
BİLDİRİLMELİDİR. - [C-1-2] Üçüncü taraf uygulaması, simgesini sağlamak için
<adaptive-icon>
etiketini kullandığında ve simgeleri almak içinPackageManager
yöntemleri çağrıldığındaAdaptiveIconDrawable
nesnesi döndürülmelidir.
Cihaz uygulamaları, kısayolların uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı içeriyorsa:
- [C-2-1]
ShortcutManager.isRequestPinShortcutSupported()
içintrue
bildirilmelidir. - [C-2-2] Uygulamalar tarafından
ShortcutManager.requestPinShortcut()
API yöntemiyle istenen kısayolları eklemeden önce kullanıcıya soran bir kullanıcı arayüzü OLMALIDIR. - [C-2-3] Uygulama kısayolları sayfasında belirtildiği gibi, sabitlenmiş kısayollar ile dinamik ve statik kısayollar desteklenmelidir.
Aksine, cihaz uygulamaları uygulama içi kısayol sabitlemeyi desteklemiyorsa:
- [C-3-1]
ShortcutManager.isRequestPinShortcutSupported()
içinfalse
bildirilmelidir.
Cihaz uygulamaları, ShortcutManager API aracılığıyla üçüncü taraf uygulamalarının sağladığı ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uyguluyorsa:
- [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 tam olarak uygulamalıdır.
Cihaz uygulamalarında, uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması varsa:
- [C-5-1]
NotificationChannel.setShowBadge()
API yöntemine UYMALIDIR. Diğer bir deyişle, değertrue
olarak ayarlanmışsa uygulama simgesiyle ilişkili görsel bir ipucu gösterin ve uygulamanın tüm bildirim kanalları değerifalse
olarak ayarlamışsa herhangi bir uygulama simgesi rozet şeması göstermeyin. - Üçüncü taraf uygulamaları, özel API'ler kullanarak özel rozet şemasını desteklediğini belirttiğinde uygulama simgesi rozetlerini özel rozet şemasıyla geçersiz KILABİLİR ancak SDK'da açıklanan bildirim rozetleri API'leri (ör.
Notification.Builder.setNumber()
veNotification.Builder.setBadgeIconType()
API) aracılığıyla sağlanan kaynakları ve değerleri KULLANMALIDIR.
3.8.2. Widget'lar
Android, uygulamaların son kullanıcıya bir "AppWidget" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü tanımlayarak üçüncü taraf uygulama widget'larını destekler.
Cihaz uygulamaları üçüncü taraf uygulama widget'larını destekliyorsa:
- [C-1-1] Platform özelliği
android.software.app_widgets
için destek beyan EDİLMELİDİR. - [C-1-2] AppWidget'ler için yerleşik destek İÇERMELİ ve AppWidget'leri doğrudan Başlatıcı'ya 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 boyutundaki widget'ları oluşturabilmelidir. Ayrıntılar için Android SDK belgelerindeki Uygulama Widget'ı Tasarım Kuralları'na bakın.
- Kilit ekranında uygulama widget'larını DESTEKLEYEBİLİR.
Cihaz uygulamaları, üçüncü taraf uygulama widget'larını ve uygulama içi kısayol sabitlemeyi destekliyorsa:
- [C-2-1]
AppWidgetManager.html.isRequestPinAppWidgetSupported()
içintrue
bildirilmelidir. - [C-2-2] Uygulamalar tarafından
AppWidgetManager.requestPinAppWidget()
API yöntemiyle istenen kısayolları eklemeden önce kullanıcıya soran bir kullanıcı arayüzü OLMALIDIR.
3.8.3. Bildirimler
Android'de, üçüncü taraf uygulama geliştiricilerin kullanıcılara önemli etkinlikleri bildirmesine ve cihazın donanım bileşenlerini (ör. ses, titreşim ve ışık) ve yazılım özelliklerini (ör. bildirim gölgesi, sistem çubuğu) kullanarak kullanıcıların dikkatini çekmesine olanak tanıyan Notification
ve NotificationManager
API'leri bulunur.
3.8.3.1. Bildirimlerin Sunulması
Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli etkinlikler hakkında bilgilendirmesine izin veriyorsa:
- [C-1-1] SDK dokümanlarında açıklandığı gibi ve cihaz uygulamasının donanımıyla mümkün olduğu ölçüde, donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim motoru varsa titreşim API'lerini DOĞRU şekilde uygulaması ZORUNLUDUR. Bir cihaz uygulamasında donanım eksikse ilgili API'ler işlem yapmayan işlemler olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmıştır.
- [C-1-2] API'lerde veya Durum/Sistem Çubuğu Simgeleri Stil Kılavuzu'nda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) doğru şekilde oluşturmalıdır. Bununla birlikte, referans Android Açık Kaynak uygulaması tarafından sağlanan bildirimlerden farklı bir kullanıcı deneyimi sunabilir.
- [C-1-3] Bildirimleri güncellemek, kaldırmak ve gruplandırmak için API'ler ile ilgili açıklanan davranışlara uymalı ve bunları doğru şekilde uygulamalıdır.
- [C-1-4] SDK'da belgelenen NotificationChannel API'sinin tüm davranışlarını SAĞLAMALIDIR.
- [C-1-5] Belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek ve değiştirmek için kullanıcıya bir olanak SUNULMALIDIR.
- [C-1-6] SİLİNMİŞ bildirim kanallarını görüntülemek için kullanıcıya bir olanak SAĞLANMALIDIR.
- [C-1-7] Notification.MessagingStyle aracılığıyla sağlanan tüm kaynaklar (resimler, çıkartmalar, simgeler vb.), bildirim metniyle birlikte ek kullanıcı etkileşimi olmadan DOĞRU şekilde oluşturulmalıdır. Örneğin, setGroupConversation ile ayarlanan bir grup görüşmesinde android.app.Person aracılığıyla sağlanan simgeler de dahil olmak üzere tüm kaynaklar GÖSTERİLMELİDİR.
- [C-SR] Kullanıcı bu bildirimi birden çok kez kapattıktan sonra belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek için kullanıcıya otomatik olarak bir seçenek sunulması ŞİDDETLE TAVSİYE EDİLİR.
- Zengin bildirimleri DESTEKLEMELİDİR.
- Daha yüksek öncelikli bazı bildirimleri uyarı bildirimi olarak göstermelidir.
- Bildirimleri ertelemek için kullanıcıya bir seçenek SUNULMALIDIR.
- MAY, sürücünün dikkatinin dağılması gibi güvenlik sorunlarını azaltmak için yalnızca üçüncü taraf uygulamalarının kullanıcıları önemli etkinliklerden ne zaman haberdar edebileceğinin görünürlüğünü ve zamanlamasını yönetir.
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ı eksiksiz biçimde KULLANMALIDIR. Notification.Style
API sınıfında ve alt sınıflarında tanımlanan her bir kaynak öğesini (ör. simge, başlık ve özet metni) SUNMALIDIR.
Cihaz uygulamaları, heads-up bildirimlerini destekliyorsa:
- [C-3-1] Önizleme bildirimleri gösterilirken
Notification.Builder
API sınıfında açıklandığı gibi önizleme bildirimi görünümü ve kaynakları KULLANILMALIDIR. - [C-3-2]
Notification.Builder.addAction()
aracılığıyla sağlanan işlemler, SDK'da açıklandığı gibi ek kullanıcı etkileşimi olmadan bildirim içeriğiyle birlikte GÖSTERİLMELİDİR.
3.8.3.2. Bildirim Dinleyici Hizmeti
Android, uygulamaların (kullanıcı tarafından açıkça etkinleştirildikten sonra) yayı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ı android.hardware.ram.normal
özellik işaretini bildiriyorsa:
- [C-1-1] Bildirim nesnesine eklenen tüm meta veriler de dahil olmak üzere, bu tür yüklü ve kullanıcı tarafından etkinleştirilmiş dinleyici hizmetlerindeki bildirimleri eksiksiz olarak doğru ve hızlı bir şekilde güncellemelidir.
- [C-1-2]
snoozeNotification()
API çağrısına UYULMALI, bildirim kapatılmalı ve API çağrısında ayarlanan erteleme süresinden sonra geri arama yapılmalıdır.
Cihaz uygulamalarında bildirimleri ertelemek için kullanıcı arayüzü varsa:
- [C-2-1]
NotificationListenerService.getSnoozedNotifications()
gibi standart API'ler aracılığıyla ertelenen bildirim durumunu doğru şekilde yansıtmalıdır. - [C-2-2] Kalıcı/ön plan hizmetlerinden gelmedikleri sürece, yüklü her üçüncü taraf uygulamasından gelen bildirimleri ertelemek için bu kullanıcı işlevini KULLANIMA SUNMALIDIR.
3.8.3.3. DND (Rahatsız Etmeyin)
Cihaz uygulamaları DND özelliğini destekliyorsa:
- [C-1-1] ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS amacına yanıt veren bir etkinlik uygulanmalıdır. UI_MODE_TYPE_NORMAL ile uygulamalarda bu etkinlik, kullanıcının uygulamaya DND politikası yapılandırmalarına erişim izni verebileceği veya erişimi reddedebileceği bir etkinlik OLMALIDIR.
- [C-1-2] Cihaz uygulaması, kullanıcının üçüncü taraf uygulamalarına Rahatsız Etmeyin politikası yapılandırmasına erişim izni vermesini veya bu erişimi reddetmesini sağlayacak bir yöntem sunuyorsa uygulamalar tarafından oluşturulan Otomatik Rahatsız Etmeyin kurallarını, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kurallarla birlikte GÖSTERMELİDİR.
- [C-1-3]
NotificationManager.Policy
ile iletilensuppressedVisualEffects
değerlerine UYULMALIDIR ve bir uygulama SUPPRESSED_EFFECT_SCREEN_OFF veya SUPPRESSED_EFFECT_SCREEN_ON işaretlerinden herhangi birini ayarladıysa kullanıcılara, görsel efektlerin Rahatsız Etmeyin ayarları menüsünde devre dışı bırakıldığını BELİRTMELİDİR.
3.8.4. Arat
Android, geliştiricilerin uygulamalarına arama işlevini eklemelerine ve uygulamalarının verilerini küresel sistem aramasında göstermelerine olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmesine, yazarken önerileri görüntülemesine ve sonuçları göstermesine olanak tanıyan tek bir sistem genelinde kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü yeniden kullanmasına ve geliştiricilerin ortak global arama kullanıcı arayüzüne sonuçlar sunmasına olanak tanır.
- Android cihaz uygulamaları, kullanıcı girişine yanıt olarak anlık öneriler sunabilen, sistem genelinde tek bir paylaşılan arama kullanıcı arayüzü olan genel aramayı İÇERMELİDİR.
Cihaz uygulamaları genel arama arayüzünü uyguluyorsa:
- [C-1-1] Üçüncü taraf uygulamalarının, genel arama modunda çalıştırıldığında arama kutusuna öneri eklemesine olanak tanıyan API'leri uygulamalıdır.
Genel aramayı kullanan üçüncü taraf uygulamaları yüklü değilse:
- Varsayılan davranış, web arama motoru sonuçlarını ve önerilerini göstermek OLMALIDIR.
Android ayrıca, uygulamaların mevcut bağlamdaki bilgilerin ne kadarının cihazdaki asistanla paylaşılacağını seçmesine olanak tanıyan Assist API'lerini de içerir.
Cihaz uygulamaları Asistan işlemini destekliyorsa:
- [C-2-1] Aşağıdaki yöntemlerden biriyle bağlamın paylaşıldığı zamanı son kullanıcıya net bir şekilde BELİRTİN:
- Asistan uygulaması bağlama her eriştiğinde, Android Açık Kaynak Projesi uygulamasının süresini ve parlaklığını karşılayan veya aşan bir süre boyunca ekranın kenarlarında beyaz ışık gösterilir.
- Önceden yüklenmiş asistan uygulaması için, varsayılan sesli giriş ve asistan uygulaması ayarları menüsünden iki gezinmeden daha az uzaklıkta bir kullanıcı olanağı sunulması ve bağlamın yalnızca asistan uygulaması, kullanıcı tarafından bir etkin kelime veya asistan gezinme anahtarı girişi aracılığıyla açıkça çağrıldığında paylaşılması.
- [C-2-2] Bölüm 7.2.3'te belirtildiği gibi, yardım uygulamasını başlatmak için belirlenen etkileşim, kullanıcı tarafından seçilen yardım uygulamasını (diğer bir deyişle
VoiceInteractionService
'yi uygulayan uygulamayı) veyaACTION_ASSIST
amacını işleyen bir etkinliği başlatmalıdır.
3.8.5. Uyarılar ve Bildirimler
Uygulamalar, kısa bir süre sonra kaybolan kısa ve modsuz dizeleri son kullanıcıya göstermek için Toast
API'sini, uyarı pencerelerini diğer uygulamaların üzerinde katman olarak göstermek için ise TYPE_APPLICATION_OVERLAY
pencere türü API'sini kullanabilir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
-
[C-1-1] Bir uygulamanın
TYPE_APPLICATION_OVERLAY
kullanarak uyarı pencereleri göstermesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR . AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu koşulu karşılar. -
[C-1-2] Toast API'yi desteklemeli ve uygulamalardan gelen Toast'ları son kullanıcılara kolayca görülebilecek şekilde göstermelidir.
3.8.6. Temalar
Android, uygulamaların bir Etkinlik veya uygulamanın tamamında stil uygulaması için "temalar" sunar.
Android, uygulama geliştiricilerin Android SDK'da tanımlandığı şekilde Holo tema görünümüne ve hissine uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir dizi stil olarak "Holo" ve "Material" tema ailesini içerir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Uygulamalara sunulan Holo tema özelliklerinden hiçbirini değiştirmemelidir.
- [C-1-2] "Material" tema ailesini DESTEKLEMELİ ve Material tema özelliklerinin hiçbirini veya uygulamalara sunulan öğelerini DEĞİŞTİRMEMELİDİR.
Android'de ayrıca, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünüm ve tarzına uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir dizi stil olarak "Cihazda kullanılan tema" tema ailesi de bulunur.
- Cihaz uygulamaları, uygulamalara sunulan Device Default tema özelliklerini değiştirebilir.
Android, yarı saydam sistem çubuklarına sahip bir tema varyantını destekler. Bu tema, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içerikleriyle doldurmasına olanak tanır. Bu yapılandırmada tutarlı bir geliştirici deneyimi sağlamak için durum çubuğu simge stilinin farklı cihaz uygulamalarında korunması önemlidir.
Cihaz uygulamaları sistem durumu çubuğu içeriyorsa:
- [C-2-1] Simge, sorunlu bir durumu belirtmediği veya bir uygulama SYSTEM_UI_FLAG_LIGHT_STATUS_BAR işaretini kullanarak açık renkli bir durum çubuğu istemediği sürece sistem durumu simgeleri (ör. sinyal gücü ve pil seviyesi) ve sistem tarafından verilen bildirimler için BEYAZ renk KULLANILMALIDIR.
- [C-2-2] Bir uygulama açık renkli bir durum çubuğu istediğinde Android cihaz uygulamaları, sistem durumu simgelerinin rengini siyaha çevirmelidir (ayrıntılar için R.style'a bakın).
3.8.7. Animasyonlu Duvar Kağıtları
Android, uygulamaların son kullanıcıya bir veya daha fazla "Canlı Duvar Kağıdı" göstermesine olanak tanıyan bir bileşen türü, ilgili API ve yaşam döngüsü tanımlar. Canlı duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak gösterilen, sınırlı giriş özelliklerine sahip animasyonlar, desenler veya benzer resimlerdir.
Donanımın, işlevsellik açısından herhangi bir sınırlama olmaksızın, diğer uygulamalar üzerinde olumsuz bir etkisi olmadan ve makul bir kare hızında tüm canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabildiği durumlarda canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabildiği kabul edilir. Donanımdaki sınırlamalar nedeniyle duvar kağıtları ve/veya uygulamalar kilitleniyor, düzgün çalışmıyor, aşırı CPU veya pil gücü tüketiyor ya da kabul edilemeyecek kadar düşük kare hızlarında çalışıyorsa donanımın canlı duvar kağıdı çalıştırması mümkün değildir. Örneğin, bazı canlı duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamını kullanabilir. Canlı duvar kağıdı, OpenGL bağlamlarının kullanımı diğer uygulamalarla çakışabileceğinden birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.
- Yukarıda açıklandığı gibi animasyonlu duvar kağıtlarını güvenilir bir şekilde çalıştırabilen cihaz uygulamaları, animasyonlu duvar kağıtlarını uygulamalıdır.
Cihaz uygulamaları animasyonlu duvar kağıtlarını destekliyorsa:
- [C-1-1] android.software.live_wallpaper platform özellik işaretini bildirmelidir.
3.8.8. Etkinlikler Arasında Geçiş
Yukarı akış Android kaynak kodu, kullanıcının uygulamadan en son ayrıldığı andaki uygulamanın grafik durumunun küçük resmini kullanarak görev değiştirme ve son erişilen etkinlikleri ve görevleri görüntüleme için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi navigasyon tuşunu içeren cihaz uygulamaları arayüzü değiştirebilir.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi gezinme tuşunu içeren cihaz uygulamaları arayüzü değiştirirse:
- [C-1-1] En az 7 görüntülenen etkinliği desteklemelidir.
- En az 4 etkinliğin başlığını aynı anda GÖSTERMELİDİR.
- [C-1-2] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirmek/devre dışı bırakmak için bir ayarlar menüsü sunmalıdır.
- Son kullanılanlarda vurgu rengi, simge ve ekran başlığı GÖSTERİLMELİDİR.
- Kapatma işlevi ("x") GÖSTERİLMELİDİR ancak bu işlev, kullanıcı ekranlarla etkileşime girene kadar GECİKTİRİLEBİLİR.
- Önceki etkinliğe kolayca geçmek için bir kısayol UYGULANMALIDIR.
- Son kullanılanlar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işlemini TETİKLEMELİDİR.
- Destekleniyorsa son işlevler tuşuna uzun basıldığında bölünmüş ekran çoklu pencere modu TETİKLENMELİDİR.
- Bağlı kuruluşlara ait son öğeleri birlikte hareket eden bir grup olarak GÖSTEREBİLİR.
- [SR] Genel bakış ekranı için yukarı akış Android kullanıcı arayüzünün (veya benzer bir küçük resim tabanlı arayüzün) kullanılması ŞİDDETLE TAVSİYE EDİLİR.
3.8.9. Giriş Yönetimi
Android, Giriş Yönetimi'ni ve üçüncü taraf giriş yöntemi düzenleyicilerini destekler.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:
- [C-1-1] MUST declare the platform feature android.software.input_methods and support IME APIs as defined in the Android SDK documentation.
- [C-1-2] android.settings.INPUT_METHOD_SETTINGS amacına yanıt olarak üçüncü taraf giriş yöntemlerini eklemek ve yapılandırmak için kullanıcı tarafından erişilebilen bir mekanizma SAĞLANMALIDIR.
Cihaz uygulamaları android.software.autofill
özellik işaretini beyan ediyorsa:
- [C-2-1]
AutofillService
veAutofillManager
API'leri TAMAMEN uygulamalı ve kullanıcının otomatik doldurmayı etkinleştirmesine/devre dışı bırakmasına ve varsayılan otomatik doldurma hizmetini değiştirmesine olanak tanıyan varsayılan uygulama ayarları menüsünü göstermeandroid.settings.REQUEST_SET_AUTOFILL_SERVICE
amacına uymalıdır.
3.8.10. Kilit ekranında medya kontrolü
Android 5.0'dan itibaren, medya uygulamalarının kilit ekranında gösterilen oynatma kontrolleriyle entegre olmasına olanak tanıyan Medya Bildirimi Şablonu lehine Uzaktan Kumanda İstemcisi API'sinin desteği sonlandırılmıştır.
3.8.11. Ekran koruyucular (eski adıyla İlham Sahnesi)
Android, daha önce Dreams olarak adlandırılan etkileşimli ekran koruyucuları destekler. Ekran koruyucular, bir güç kaynağına bağlı cihaz boşta kaldığında veya masaüstü dock'ına yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Android Watch cihazlar ekran koruyucuları uygulayabilir ancak diğer cihaz uygulamaları, ekran koruyucuları desteklemeli ve kullanıcılara android.settings.DREAM_SETTINGS
amacına yanıt olarak ekran koruyucuları yapılandırmaları için bir ayar seçeneği sunmalıdır.
3.8.12. Konum
Cihaz uygulamaları, konum koordinatlarını sağlayabilen bir donanım sensörü (ör. GPS) içeriyorsa
- [C-1-2] Ayarlar'daki Konum menüsünde konumun mevcut durumu GÖSTERİLMELİDİR.
- [C-1-3] Ayarlar'daki Konum menüsünde konum modları GÖSTERİLMEMELİDİR.
3.8.13. Unicode ve Yazı Tipi
Android, Unicode 10.0'da tanımlanan emoji karakterlerini destekler.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Bu emoji karakterlerini renkli glif olarak oluşturabilmelidir.
- [C-1-2] Aşağıdakiler için destek içermelidir:
- Cihazda kullanılabilen diller için farklı ağırlıklara sahip Roboto 2 yazı tipi (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black, sans-serif-condensed, sans-serif-condensed-light).
- Latin Extended A, B, C ve D aralıkları ile Unicode 7.0'ın para birimi sembolleri bloğundaki tüm glifler dahil olmak üzere Latin, Yunan ve Kiril alfabelerinin Unicode 7.0'daki tüm karakterleri
- Unicode Teknik Raporu #51'de belirtildiği gibi cilt tonu ve çeşitli aile emojilerini DESTEKLEMELİDİR.
Cihaz uygulamaları bir IME içeriyorsa:
- Bu emoji karakterleri için kullanıcıya bir giriş yöntemi SAĞLAMALIDIR.
3.8.14. Çoklu pencereler
Cihaz uygulamaları aynı anda birden fazla etkinliği görüntüleyebiliyorsa:
- [C-1-1] Android SDK çoklu pencere modu destek belgelerinde açıklanan uygulama davranışlarına ve API'lere uygun olarak bu tür çoklu pencere modlarını uygulamalı ve aşağıdaki koşulları karşılamalıdır:
- [C-1-2] Uygulamalar,
AndroidManifest.xml
dosyasında çok pencereli modda çalışıp çalışamayacaklarını belirtebilir. Bu işlem,android:resizeableActivity
özelliğinitrue
olarak ayarlayarak açıkça veya targetSdkVersion'ı 24'ten büyük olacak şekilde ayarlayarak dolaylı olarak yapılabilir. Bu özelliği manifestlerinde açıkçafalse
olarak ayarlayan uygulamalar çoklu pencere modunda başlatılMAMALIDIR. targetSdkVersion < 24 olan ve buandroid:resizeableActivity
özelliğini ayarlamayan eski uygulamalar çoklu pencere modunda başlatılabilir ANCAK sistem, uygulamanın çoklu pencere modunda beklendiği gibi çalışmayabileceği konusunda uyarı vermelidir. - [C-1-3] Ekran yüksekliği < 440 dp ve ekran genişliği < 440 dp ise bölünmüş ekran veya serbest biçim modu sunULMAMALIDIR.
- Ekran boyutu
xlarge
olan cihaz uygulamaları, serbest biçim modunu DESTEKLEMELİDİR.
Cihaz uygulamaları çoklu pencere modlarını ve bölünmüş ekran modunu destekliyorsa:
- [C-2-1] Varsayılan olarak yeniden boyutlandırılabilir bir başlatıcı önceden yüklenmelidir.
- [C-2-2] Başlatıcı uygulaması odaklanılan pencereyse bölünmüş ekranlı çok pencereli bir uygulamanın yerleştirilmiş etkinliği KESİLMELİ ancak bu etkinliğin bazı içerikleri GÖSTERİLMELİDİR.
- [C-2-3] Üçüncü taraf başlatıcı uygulamasının beyan edilen
AndroidManifestLayout_minWidth
veAndroidManifestLayout_minHeight
değerlerine UYULMALI ve yerleştirilmiş etkinliğin bazı içerikleri gösterilirken bu değerler geçersiz kılınmamalıdır.
Cihaz uygulamaları, çoklu pencere modlarını ve pencere içinde pencere çoklu pencere modunu destekliyorsa:
- [C-3-1] Uygulama şu durumlarda etkinlikleri resim içinde resim çoklu pencere modunda başlatmalıdır: * API düzeyi 26 veya sonraki sürümleri hedefliyorsa ve
android:supportsPictureInPicture
beyan ediyorsa * API düzeyi 25 veya önceki sürümleri hedefliyorsa ve hemandroid:resizeableActivity
hem deandroid:supportsPictureInPicture
beyan ediyorsa. - [C-3-2]
setActions()
API'si aracılığıyla, mevcut PIP etkinliğinde belirtildiği şekilde SystemUI'deki işlemleri kullanıma sunmalıdır. - [C-3-3]
setAspectRatio()
API'si aracılığıyla PIP etkinliğinde belirtildiği gibi, 1:2,39'dan büyük veya eşit ve 2,39:1'den küçük veya eşit en boy oranlarını DESTEKLEMELİDİR. - [C-3-4] PIP penceresini kontrol etmek için
KeyEvent.KEYCODE_WINDOW
kullanılmalıdır. PIP modu uygulanmamışsa tuş, ön plandaki etkinlik için kullanılabilir olmalıdır. - [C-3-5] Bir uygulamanın PIP modunda görüntülenmesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR. AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu şartı karşılar.
- [C-3-6] PIP penceresi için minimum 108 dp genişlik ve yükseklik,
Configuration.uiMode
UI_MODE_TYPE_TELEVISION
olarak yapılandırıldığında ise PIP penceresi için minimum 240 dp genişlik ve 135 dp yükseklik ayrılmalıdır.
3.8.15. Ekran Kesimi
Android, SDK dokümanında açıklandığı gibi ekran kesimini destekler. DisplayCutout
API, ekranda içerik görüntüleme için işlevsel olmayan bir alanı tanımlar.
Cihaz uygulamaları ekran kesiklerini içeriyorsa:
- [C-1-1] YALNIZCA cihazın kısa kenarlarında kesik olmalıdır. Aksine, cihazın en boy oranı 1,0 (1:1) ise kesik olmamalıdır.
- [C-1-2] Kenar başına birden fazla kesik olmamalıdır.
- [C-1-3] SDK'da açıklandığı gibi, uygulama tarafından
WindowManager.LayoutParams
API'si aracılığıyla ayarlanan ekran kesme işaretlerine UYMALIDIR. - [C-1-4]
DisplayCutout
API'sinde tanımlanan tüm kesme metrikleri için doğru değerler RAPORLANMALIDIR.
3.9. Cihaz Yönetimi
Android, güvenlik konusunda hassas uygulamaların Android Device Administration API aracılığıyla sistem düzeyinde cihaz yönetimi işlevlerini (ör. şifre politikalarını zorunlu kılma veya uzaktan silme) gerçekleştirmesine olanak tanıyan özellikler içerir.
Cihaz uygulamaları, Android SDK belgelerinde tanımlanan cihaz yönetimi politikalarının tamamını uyguluyorsa:
- [C-1-1]
android.software.device_admin
BİLDİRİLMELİDİR. - [C-1-2] Bölüm 3.9.1 ve Bölüm 3.9.1.1'de açıklandığı gibi cihaz sahibi tarafından sağlama işlemini desteklemelidir.
3.9.1 Cihaz Temel Hazırlığı
3.9.1.1 Cihaz sahibi temel hazırlığı
Cihaz uygulamaları android.software.device_admin
beyan ederse:
- [C-1-1] Aşağıda açıklandığı gibi bir Cihaz Politikası İstemcisi'nin (DPC) Cihaz Sahibi uygulaması olarak kaydedilmesini DESTEKLEMELİDİR:
- Cihaz uygulaması henüz kullanıcı verileri içermediğinde:
- [C-1-3]
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içintrue
raporlanmalıdır. - [C-1-4]
android.app.action.PROVISION_MANAGED_DEVICE
amaç işlemine yanıt olarak DPC uygulamasını Cihaz Sahibi uygulaması olarak KAYDETMELİDİR. - [C-1-5] Cihaz, özellik işareti
android.hardware.nfc
aracılığıyla Near Field Communication (NFC) desteği bildiriyorsa ve MIME türüMIME_TYPE_PROVISIONING_NFC
olan bir kayıt içeren bir NFC mesajı alıyorsa DPC uygulaması, cihaz sahibi uygulaması olarak kaydedilmelidir.
- [C-1-3]
- Cihaz uygulamasında kullanıcı verileri varsa:
- [C-1-6]
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içinfalse
raporu VERİLMELİDİR. - [C-1-7] Artık hiçbir DPC uygulamasını cihaz sahibi uygulaması olarak kaydetmemelidir.
- [C-1-6]
- Cihaz uygulaması henüz kullanıcı verileri içermediğinde:
- [C-1-2] Uygulamanın cihaz sahibi olarak ayarlanmasına izin vermek için hazırlık sürecinde olumlu bir işlem YAPILMALIDIR. İzin, kullanıcı işlemiyle veya hazırlama sırasında programatik olarak verilebilir ancak kesinlikle sabit kodlanmamalı ya da diğer cihaz sahibi uygulamalarının kullanımını engellememelidir.
Cihaz uygulamaları android.software.device_admin
beyan ediyorsa ancak tescilli bir cihaz sahibi yönetim çözümü de içeriyorsa ve çözümlerinde yapılandırılmış bir uygulamayı standart Android DevicePolicyManager API'leri tarafından tanınan standart "Cihaz Sahibi" ile "Cihaz Sahibi eşdeğeri" olarak tanıtma mekanizması sağlıyorsa:
- [C-2-1] Tanıtımı yapılan uygulamanın, yasal bir kurumsal cihaz yönetimi çözümüne ait olduğunu ve tescilli çözümde "Cihaz Sahibi" ile eşdeğer haklara sahip olacak şekilde yapılandırıldığını doğrulayan bir süreç OLMALIDIR.
- [C-2-2] DPC uygulaması "Cihaz Sahibi" olarak kaydedilmeden önce
android.app.action.PROVISION_MANAGED_DEVICE
tarafından başlatılan akışla aynı AOSP Cihaz Sahibi izni açıklamasını göstermelidir. - DPC uygulaması "Cihaz Sahibi" olarak kaydedilmeden önce cihazda kullanıcı verileri OLABİLİR.
3.9.1.2 Yönetilen profil temel hazırlığı
Cihaz uygulamaları android.software.managed_users
beyan ederse:
-
[C-1-1] Bir cihaz politikası denetleyici (DPC) uygulamasının yeni bir yönetilen profilin sahibi olmasına izin veren API'ler uygulanmalıdır.
-
[C-1-2] Kullanıcıların deneyimlediği yönetilen profil sağlama süreci (android.app.action.PROVISION_MANAGED_PROFILE tarafından başlatılan akış), AOSP uygulamasıyla uyumlu OLMALIDIR.
-
[C-1-3] Belirli bir sistem işlevi Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığında kullanıcıya bildirmek için Ayarlar'da aşağıdaki kullanıcı kolaylıkları SAĞLANMALIDIR:
- Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya başka bir kullanıcı olanağı (ör. yukarı akış AOSP bilgi simgesi).
- Cihaz yöneticisi tarafından
setShortSupportMessage
aracılığıyla sağlanan kısa bir açıklama mesajı. - DPC uygulamasının simgesi.
3.9.2 Yönetilen Profil Desteği
Cihaz uygulamaları android.software.managed_users
beyan ederse:
- [C-1-1]
android.app.admin.DevicePolicyManager
API'leri aracılığıyla yönetilen profiller desteklenmelidir. - [C-1-2] Yalnızca bir yönetilen profilin oluşturulmasına İZİN VERİLMELİDİR.
- [C-1-3] Yönetilen uygulamaları, widget'ları ve diğer rozetli kullanıcı arayüzü öğelerini (ör. Son Kullanılanlar ve Bildirimler) temsil etmek için simge rozeti (AOSP'deki yukarı akış iş rozetine benzer) KULLANILMALIDIR.
- [C-1-4] Kullanıcının yönetilen bir profil uygulamasında olduğunu belirtmek için bildirim simgesi (AOSP yukarı akış iş rozetine benzer) GÖSTERİLMELİDİR.
- [C-1-5] Cihaz uyandığında (ACTION_USER_PRESENT) ve ön plandaki uygulama yönetilen profilin içindeyse kullanıcıya yönetilen profilde olduğunu belirten bir kısa mesaj GÖSTERİLMELİDİR.
- [C-1-6] Yönetilen profil varsa Cihaz Politikası Denetleyicisi tarafından etkinleştirilmişse kullanıcının, yönetilen profilden birincil kullanıcıya veya tam tersi yönde niyet iletmesine izin vermek için Niyet "Seçici"de görsel bir kolaylık GÖSTERİLMELİDİR.
- [C-1-7] Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı olanakları SUNULMALIDIR:
- Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması.
- Birincil kullanıcı veya yönetilen profile yüklenen VPN uygulamalarının bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profile yüklenen uygulamaların bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profil içindeki hesapların bağımsız yönetimi.
- [C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş çevirici, kişiler ve mesajlaşma uygulamalarının, arayan bilgilerini birincil profildeki bilgilerle birlikte yönetilen profildeki (varsa) bilgilerden arayabilmesini ve bulabilmesini SAĞLAMALIDIR.
- [C-1-9] Yönetilen profil, birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa da birden fazla kullanıcının etkin olduğu bir cihaz için geçerli olan tüm güvenlik şartlarını karşıladığından EMİN OLMALIDIR (9.5. bölümüne bakın).
- [C-1-10] Yönetilen profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı belirtme özelliğini DESTEKLEMELİDİR.
- Cihaz uygulamaları,
DevicePolicyManager.ACTION_SET_NEW_PASSWORD
amacına uymalı ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmak üzere bir arayüz göstermelidir. - Yönetilen profilin kilit ekranı kimlik bilgileri, Android Açık Kaynak Projesi Sitesi'nde belgelendiği gibi üst profil ile aynı kimlik bilgisi depolama ve yönetim mekanizmalarını KULLANMALIDIR.
- DPC şifre politikaları, getParentProfileInstance tarafından döndürülen
DevicePolicyManager
örneği çağrılmadığı sürece YALNIZCA yönetilen profilin kilit ekranı kimlik bilgilerine uygulanmalıdır.
- Cihaz uygulamaları,
- Yönetilen profildeki kişiler, önceden yüklenmiş arama günlüğünde, görüşme içi kullanıcı arayüzünde, devam eden ve cevapsız arama bildirimlerinde, kişiler ve mesajlaşma uygulamalarında gösterildiğinde, yönetilen profil uygulamalarını belirtmek için kullanılan rozetle aynı rozetle işaretlenmelidir.
3.9.3 Yönetilen Kullanıcı Desteği
Cihaz uygulamaları android.software.managed_users
beyan ederse:
- [C-1-1]
isLogoutEnabled
,true
değerini döndürdüğünde çok kullanıcılı oturumda mevcut kullanıcıdan çıkış yapıp birincil kullanıcıya geri dönmek için kullanıcıya bir olanak SAĞLANMALIDIR. Kullanıcı arayüzü, cihazın kilidi açılmadan kilit ekranından erişilebilir OLMALIDIR.
3.10. Erişilebilirlik
Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sağlar. Ayrıca Android, erişilebilirlik hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma almasını ve metin okuma, dokunsal geri bildirim ve trackball/d-pad navigasyonu gibi alternatif geri bildirim mekanizmaları oluşturmasını sağlayan platform API'leri sunar.
Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-1-1] Accessibility API'leri SDK dokümanında açıklandığı gibi Android erişilebilirlik çerçevesinin bir uygulamasını SAĞLAMALIDIR.
- [C-1-2] Erişilebilirlik etkinlikleri OLUŞTURULMALI ve SDK'da belirtildiği gibi tüm kayıtlı
AccessibilityService
uygulamalarına uygunAccessibilityEvent
sunulmalıdır. - [C-1-3] Önceden yüklenmiş erişilebilirlik hizmetlerinin yanı sıra üçüncü taraf erişilebilirlik hizmetlerinin etkinleştirilip devre dışı bırakılması için kullanıcı tarafından erişilebilen bir mekanizma sağlama
android.settings.ACCESSIBILITY_SETTINGS
amacına UYULMALIDIR. - [C-1-4] Etkinleştirilen erişilebilirlik hizmetleri
AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON
beyan ettiğinde, kullanıcının erişilebilirlik hizmetini kontrol etmesine olanak tanıyan bir düğme, sistemin gezinme çubuğuna EKLENMELİDİR . Sistem gezinme çubuğu olmayan cihaz uygulamalarında bu şartın geçerli olmadığını ancak cihaz uygulamalarının, bu erişilebilirlik hizmetlerini kontrol etmek için kullanıcıya bir olanak SUNMASI gerektiğini unutmayın.
Cihaz uygulamaları önceden yüklenmiş erişilebilirlik hizmetleri içeriyorsa:
- [C-2-1] Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde bu önceden yüklenmiş erişilebilirlik hizmetleri Direct Boot Aware uygulamaları olarak uygulanmalıdır.
- Kullanıcılara ilgili erişilebilirlik hizmetlerini etkinleştirmeleri için kutudan çıkarma kurulum akışında bir mekanizma SUNULMALIDIR. Ayrıca yazı tipi boyutunu, ekran boyutunu ve büyütme hareketlerini ayarlama seçenekleri de SUNULMALIDIR.
3.11. Metin Okuma
Android, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına olanak tanıyan API'ler içerir ve hizmet sağlayıcıların TTS hizmetlerinin uygulamalarını sağlamasına izin verir.
android.hardware.audio.output özelliğini bildiren cihaz uygulamaları:
- [C-1-1] Android TTS çerçevesi API'leri DESTEKLENMELİDİR.
Cihaz uygulamaları, üçüncü taraf TTS motorlarının yüklenmesini destekliyorsa:
- [C-2-1] Kullanıcının sistem düzeyinde kullanılacak bir TTS motoru seçmesine olanak tanıyan kullanıcı olanağı SAĞLANMALIDIR.
3.12. TV Input Framework
Android Television Input Framework (TIF), canlı içeriklerin Android Television cihazlarına iletilmesini kolaylaştırır. TIF, Android TV cihazlarını kontrol eden giriş modülleri oluşturmak için standart bir API sağlar.
Cihaz uygulamaları TIF'yi destekliyorsa:
- [C-1-1] Platform özelliği
android.software.live_tv
BİLDİRİLMELİDİR. - [C-1-2] Bu API'leri ve üçüncü taraf TIF tabanlı girişler hizmetini kullanan bir uygulamanın cihaza yüklenip kullanılabilmesi için tüm TIF API'lerini desteklemelidir.
3.13. Hızlı Ayarlar
Android, sık kullanılan veya acilen ihtiyaç duyulan işlemlere hızlı erişim sağlayan bir Hızlı Ayarlar kullanıcı arayüzü bileşeni sunar.
Cihaz uygulamaları Hızlı Ayarlar kullanıcı arayüzü bileşeni içeriyorsa:
- [C-1-1] Kullanıcının,
quicksettings
API'leri aracılığıyla sağlanan kutucukları üçüncü taraf uygulamasına eklemesine veya üçüncü taraf uygulamasından kaldırmasına İZİN VERİLMELİDİR. - [C-1-2] Üçüncü taraf uygulamalarından alınan kutular doğrudan Hızlı Ayarlar'a otomatik olarak eklenMEMELİDİR.
- [C-1-3] Sistem tarafından sağlanan hızlı ayar kutucuklarının yanı sıra kullanıcı tarafından eklenen tüm üçüncü taraf uygulama kutucukları GÖSTERİLMELİDİR.
3.14. Medya kullanıcı arayüzü
Cihaz uygulamaları , MediaBrowser
ve MediaSession
'a bağlı üçüncü taraf uygulamalarını destekleyen kullanıcı arayüzü çerçevesini içeriyorsa:
- [C-1-1] MediaItem simgeleri ve bildirim simgeleri değiştirilmeden gösterilmelidir.
- [C-1-2] Bu öğeler, MediaSession tarafından belirtildiği şekilde (ör. meta veriler, simgeler, görüntüler) gösterilmelidir.
- [C-1-3] Uygulama başlığı GÖSTERİLMELİDİR.
- [C-1-4] MediaBrowser hiyerarşisini sunmak ve MediaBrowser hiyerarşisi için kullanıcıya kolaylık sağlamak üzere bir çekmece veya başka bir mekanizma OLMALIDIR.
- [C-1-5]
KEYCODE_HEADSETHOOK
veyaKEYCODE_MEDIA_PLAY_PAUSE
tuşuna iki kez dokunmanın,MediaSession.Callback#onMediaButtonEvent
içinKEYCODE_MEDIA_NEXT
olarak değerlendirilmesi ZORUNLUDUR.
3.15. Hazır Uygulamalar
Cihaz uygulamaları AŞAĞIDAKİ koşulları karşılamalıdır:
- [C-0-1] Anlık uygulamalara YALNIZCA
android:protectionLevel
değeri"instant"
olarak ayarlanmış izinler verilmelidir. - [C-0-2] Aşağıdaki durumlardan biri geçerli OLMADIĞI SÜRECE hazır uygulamalar, örtülü amaçlar aracılığıyla yüklü uygulamalarla etkileşimde BULUNMAMALIDIR:
- Bileşenin amaç kalıbı filtresi kullanıma sunulur ve CATEGORY_BROWSABLE içerir.
- İşlem, ACTION_SEND, ACTION_SENDTO veya ACTION_SEND_MULTIPLE işlemlerinden biridir.
- Hedef, android:visibleToInstantApps ile açıkça gösteriliyor.
- [C-0-3] Bileşen, android:visibleToInstantApps aracılığıyla kullanıma sunulmadığı sürece hazır uygulamalar, yüklü uygulamalarla açıkça etkileşimde BULUNMAMALIDIR.
- [C-0-4] Yüklü uygulamalar, hazır uygulama yüklü uygulamaya açıkça bağlanmadığı sürece cihazdaki hazır uygulamalarla ilgili ayrıntıları GÖRMEMELİDİR.
3.16. Yardımcı Cihaz Eşleme
Android, yardımcı cihazlarla eşlemeyi destekleyerek yardımcı cihazlarla ilişkilendirmeyi daha etkili bir şekilde yönetmenizi sağlar ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager
API'sini sunar.
Cihaz uygulamaları, yardımcı cihaz eşleme özelliğini destekliyorsa:
- [C-1-1] Özellik bayrağı
FEATURE_COMPANION_DEVICE_SETUP
BEYAN EDİLMELİDİR . - [C-1-2]
android.companion
paketindeki API'lerin tamamen uygulandığından EMİN OLMALIDIR. - [C-1-3] Kullanıcının, eşlik eden bir cihazın mevcut ve çalışır durumda olduğunu seçmesi/onaylaması için kullanıcıya olanaklar SUNULMALIDIR.
3:17. Yüksek Boyutlu Uygulamalar
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE
özelliğini beyan ediyorsa:
- [C-1-1] Sistemde aynı anda yalnızca bir tane
cantSaveState
çalıştıran uygulama yüklü OLMALIDIR. Kullanıcı, bu tür bir uygulamadan açıkça çıkmadan ayrılırsa (ör. sistemde etkin bir etkinlikten ayrılırken sistemde etkin etkinlik kalmadığında geri düğmesine basmak yerine ana sayfa düğmesine basarak) cihaz uygulamaları, RAM'de bu uygulamaya öncelik VERMELİDİR. Bu, ön plan hizmetleri gibi çalışmaya devam etmesi beklenen diğer öğeler için de geçerlidir. Bu tür bir uygulama arka plandayken sistem, CPU ve ağ erişimini sınırlama gibi güç yönetimi özelliklerini uygulamaya devam edebilir. - [C-1-2] Kullanıcı,
cantSaveState
özelliğiyle beyan edilen ikinci bir uygulamayı başlattıktan sonra normal durum kaydetme/geri yükleme mekanizmasına katılmayacak uygulamayı seçmek için bir kullanıcı arayüzü olanağı SAĞLANMALIDIR. - [C-1-3]
cantSaveState
belirten uygulamalara, CPU performansını değiştirme veya planlama önceliğini değiştirme gibi başka politika değişiklikleri UYGULANMAMALIDIR.
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE
özelliğini beyan etmiyorsa:
- [C-1-1] Uygulamalar tarafından ayarlanan
cantSaveState
özelliği YOK SAYILMALI ve uygulama davranışı bu özelliğe göre DEĞİŞTİRİLMEMELİDİR.
4. Uygulama Paketleme Uyumluluğu
Cihaz uygulamaları:
- [C-0-1] Resmi Android SDK'sında bulunan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarını yükleyip çalıştırabilmelidir.
- Yukarıdaki koşul zorlayıcı olabileceğinden cihaz uygulamalarının, AOSP referans uygulamasının paket yönetim sistemini kullanması ÖNERİLİR.
Cihaz uygulamaları:
- [C-0-2] APK İmza Şeması v3 , APK İmza Şeması v2 ve JAR imzalama kullanılarak “.apk” dosyalarının doğrulanması DESTEKLENMELİDİR.
- [C-0-3] .apk, Android Manifest, Dalvik bytecode veya RenderScript bytecode biçimlerini, bu dosyaların diğer uyumlu cihazlara doğru şekilde yüklenmesini ve bu cihazlarda doğru şekilde çalışmasını engelleyecek şekilde genişLETMEMELİDİR.
-
[C-0-4] Paket için geçerli "kayıtlı yükleyici" dışındaki uygulamaların,
DELETE_PACKAGE
izniyle ilgili SDK'da belirtildiği gibi, kullanıcı onayı olmadan uygulamayı sessizce kaldırmasına İZİN VERİLMEMELİDİR. Tek istisnalar, PACKAGE_NEEDS_VERIFICATION amacını işleyen sistem paketi doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE amacını işleyen depolama yöneticisi uygulamasıdır. -
[C-0-5]
android.settings.MANAGE_UNKNOWN_APP_SOURCES
amacını işleyen bir etkinliğe SAHİP OLMALIDIR. -
[C-0-6] Yükleme isteğinde bulunan uygulama aşağıdaki şartların tümünü karşılamadığı sürece bilinmeyen kaynaklardan uygulama paketleri yüklememelidir:
REQUEST_INSTALL_PACKAGES
iznini BEYAN ETMELİ veyaandroid:targetSdkVersion
değeri 24 ya da daha düşük olmalıdır.- Kullanıcı, bilinmeyen kaynaklardan uygulama yüklemek için İZİN VERMİŞ OLMALIDIR.
-
Uygulamaların bilinmeyen kaynaklardan yüklenmesi iznini uygulama bazında verme/iptal etme konusunda kullanıcıya bir seçenek SUNMALIDIR. Ancak cihaz uygulamasının kullanıcıların bu seçeneğe sahip olmasına izin vermek istememesi durumunda bu seçeneği işlem yapmayan bir işlev olarak uygulamayı ve
startActivityForResult()
içinRESULT_CANCELED
döndürmeyi SEÇEBİLİR. Ancak bu gibi durumlarda bile, kullanıcıya neden böyle bir seçenek sunulmadığını BELİRTMEK ZORUNDADIRLAR. -
[C-0-7] Aynı sistem API'si
PackageManager.setHarmfulAppWarning
tarafından zararlı olabileceği belirtilen bir uygulamada etkinlik başlatmadan önce, sistem API'siPackageManager.setHarmfulAppWarning
aracılığıyla sağlanan uyarı dizesini içeren bir uyarı iletişim kutusu kullanıcıya GÖSTERİLMELİDİR. - Uyarı iletişim kutusunda uygulamayı kaldırmayı veya başlatmayı seçmek için kullanıcıya bir seçenek SUNULMALIDIR.
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ı, çözücüleri, dosya türlerini ve kapsayıcı biçimlerini desteklemelidir. - [C-0-2]
MediaCodecList
aracılığıyla üçüncü taraf uygulamalarına sunulan kodlayıcıların ve kod çözücülerin desteği BİLDİRİLMELİ ve RAPORLANMALIDIR. - [C-0-3] Kodlayabildiği tüm biçimleri çözebilmeli ve üçüncü taraf uygulamalarına sunabilmelidir. Bu, kodlayıcılarının oluşturduğu tüm bit akışlarını ve
CamcorderProfile
içinde bildirilen profilleri içerir.
Cihaz uygulamaları:
- SHOULD aim for minimum codec latency, in others words, they
- Giriş arabelleklerini tüketmemeli ve depolamamalı, yalnızca işlendikten sonra giriş arabelleklerini döndürmelidir.
- Çözülen arabellekler, standartta (ör. SPS) belirtilenden daha uzun süre tutulmamalıdır.
- Kodlanmış arabellekleri GOP yapısının gerektirdiğinden daha uzun süre tutmamalıdır.
Aşağıdaki bölümde listelenen tüm codec'ler, Android Açık Kaynak Projesi'nin tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.
Google veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerinden muaf olduğuna dair herhangi bir beyanda bulunmadığını lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya paylaşılan yazılım da dahil olmak üzere bu kodun uygulamaları için ilgili patent sahiplerinden patent lisansı alması gerekebileceği konusunda bilgilendirilir.
5.1. Medya Codec'leri
5.1.1. Ses kodlama
Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.microphone
beyan ediyorsa aşağıdaki ses kodlamasını DESTEKLEMELİDİR:
- [C-1-1] PCM/WAVE
5.1.2. Ses kod çözme
Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.audio.output
özelliğini desteklediğini beyan ediyorsa aşağıdaki ses biçimlerinin kodunu çözmeyi desteklemesi gerekir:
- [C-1-1] MPEG-4 AAC Profili (AAC LC)
- [C-1-2] MPEG-4 HE AAC Profili (AAC+)
- [C-1-3] MPEG-4 HE AACv2 Profili (gelişmiş AAC+)
- [C-1-4] AAC ELD (gelişmiş düşük gecikmeli AAC)
- [C-1-11] xHE-AAC (ISO/IEC 23003-3 Extended HE AAC Profile, which includes the USAC Baseline Profile, and ISO/IEC 23003-4 Dynamic Range Control Profile)
- [C-1-5] FLAC
- [C-1-6] MP3
- [C-1-7] MIDI
- [C-1-8] Vorbis
- [C-1-9] PCM/WAVE
- [C-1-10] Opus
Cihaz uygulamaları, android.media.MediaCodec
API'deki varsayılan AAC ses kod çözücüsü aracılığıyla çok kanallı akışların (ör. ikiden fazla kanal) AAC giriş arabelleklerinin PCM'ye kod çözülmesini destekliyorsa aşağıdakiler DESTEKLENMELİDİR:
- [C-2-1] Kod çözme işlemi, aşağı karıştırma olmadan yapılmalıdır (ör. 5.0 AAC akışı, beş kanallı PCM olarak, 5.1 AAC akışı ise altı kanallı PCM olarak çözülmelidir).
- [C-2-2] Dinamik aralık meta verileri, ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde tanımlandığı gibi olmalıdır ve
android.media.MediaFormat
DRC anahtarları, ses kod çözücünün dinamik aralıkla ilgili davranışlarını yapılandırmak için kullanılmalıdır. AAC DRC anahtarları API 21'de kullanıma sunulmuştur ve şunlardır:KEY_AAC_DRC_ATTENUATION_FACTOR
,KEY_AAC_DRC_BOOST_FACTOR
,KEY_AAC_DRC_HEAVY_COMPRESSION
,KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
veKEY_AAC_ENCODED_TARGET_LEVEL
.
USAC ses kodunu çözerken MPEG-D (ISO/IEC 23003-4):
- [C-3-1] Ses yüksekliği ve DRC meta verileri, MPEG-D DRC Dinamik Aralık Kontrolü Profili Düzey 1'e göre yorumlanmalı ve uygulanmalıdır.
- [C-3-2] Kod çözücü, aşağıdaki
android.media.MediaFormat
tuşlarıyla ayarlanan yapılandırmaya göre davranmalıdır:KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
veKEY_AAC_DRC_EFFECT_TYPE
.
MPEG-4 AAC, HE AAC ve HE AACv2 profil kod çözücüleri:
- MAY, ISO/IEC 23003-4 Dinamik Aralık Kontrolü Profili'ni kullanarak ses yüksekliği ve dinamik aralık kontrolünü destekleyebilir.
ISO/IEC 23003-4 destekleniyorsa ve hem ISO/IEC 23003-4 hem de ISO/IEC 14496-3 meta verileri kod çözümü yapılmış bir bit akışında bulunuyorsa:
- ISO/IEC 23003-4 meta verileri öncelikli OLACAKTIR.
5.1.3. Ses Codec'leri Ayrıntıları
Biçim/Codec | Ayrıntılar | Desteklenen Dosya Türleri/Kapsayıcı Biçimleri |
---|---|---|
MPEG-4 AAC Profili (AAC LC) |
8-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
MPEG-4 HE AAC Profili (AAC+) | 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. | |
MPEG-4 HE AACv2 Profili (gelişmiş AAC+) |
16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. | |
AAC ELD (gelişmiş düşük gecikmeli AAC) | 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. | |
USAC | 7,35-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. | MPEG-4 (.mp4, .m4a) |
AMR-NB | 8 kHz'de örneklenmiş 4,75 ila 12,2 kb/sn | 3GPP (.3gp) |
AMR-WB | 16 kHz'de örneklenen 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız | |
FLAC | Mono/Stereo (çok kanallı değil). 48 kHz'ye kadar örnek hızları (ancak 48 ila 44,1 kHz alt örnekleyici düşük geçiren filtre içermediğinden 44,1 kHz çıkışlı cihazlarda 44,1 kHz'ye kadar ÖNERİLİR). 16 bit ÖNERİLİR; 24 bit için titreşim uygulanmaz. | Yalnızca FLAC (.flac) |
MP3 | Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR) | MP3 (.mp3) |
MIDI | MIDI Türü 0 ve 1. DLS 1 ve 2 sürümleri. XMF ve Mobile XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek |
|
Vorbis |
|
|
PCM/WAVE | 16 bit doğrusal PCM (donanım sınırına kadar olan hızlar). Cihazlar, ham PCM kaydı için 8000, 11025, 16000 ve 44100 Hz frekanslarında örnekleme hızlarını DESTEKLEMELİDİR. | WAVE (.wav) |
Opus | Matroska (.mkv), Ogg(.ogg) |
5.1.4. Resim Kodlama
Daha fazla ayrıntı için 5.1.6. Resim Codec'leri Ayrıntıları.
Cihaz uygulamaları, aşağıdaki görüntü kodlamasını desteklemelidir:
- [C-0-1] JPEG
- [C-0-2] PNG
- [C-0-3] WebP
5.1.5. Resim Kodu Çözme
Daha fazla ayrıntı için 5.1.6. Resim Codec'leri Ayrıntıları.
Cihaz uygulamaları, aşağıdaki görüntü kodlamasının çözülmesini DESTEKLEMELİDİR:
- [C-0-1] JPEG
- [C-0-2] GIF
- [C-0-3] PNG
- [C-0-4] BMP
- [C-0-5] WebP
- [C-0-6] Ham
- [C-0-7] HEIF (HEIC)
5.1.6. Görüntü Codec'leri Ayrıntıları
Biçim/Codec | Ayrıntılar | Desteklenen Dosya Türleri/Kapsayıcı Biçimleri |
---|---|---|
JPEG | Taban+aşamalı | JPEG (.jpg) |
GIF | GIF (.gif) | |
PNG | PNG (.png) | |
BMP | BMP (.bmp) | |
WebP | WebP (.webp) | |
İşlenmemiş | ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw) | |
HEIF | Resim, Resim koleksiyonu, Resim dizisi | HEIF (.heif), HEIC (.heic) |
5.1.7. Video Codec'leri
- Web'de video akışı 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ı video kod çözücü veya kodlayıcı içeriyorsa:
-
[C-1-1] Video codec'leri, standart ve yapılandırma tarafından belirlenen en büyük olası sıkıştırılmış ve sıkıştırılmamış kareyi barındıran çıkış ve giriş bytebuffer boyutlarını desteklemeli ancak genel olarak fazla yer ayırmamalıdır.
-
[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
üzerinden HDR profili desteği sunduğunu belirtiyorsa:
- [C-2-1] HDR statik meta veri ayrıştırması ve işlenmesi DESTEKLENMELİDİR.
Cihaz uygulamaları, MediaCodecInfo.CodecCapabilities
sınıfında FEATURE_IntraRefresh
aracılığıyla yenileme içi desteği duyuruyorsa:
- [C-3-1] 10-60 kare aralığındaki yenileme sürelerini desteklemeli ve yapılandırı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/ Kapsayıcı Biçimleri |
---|---|---|
H.263 |
|
|
H.264 AVC | Ayrıntılar için 5.2 ve 5.3 bölümlerine bakın. |
|
H.265 HEVC | Ayrıntılar için 5.3 bölümüne 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 bölümüne bakın. |
|
5.2. Video Kodlama
Cihaz uygulamaları herhangi bir video kodlayıcıyı destekleyip üçüncü taraf uygulamalarına sunuyorsa:
- İki kayan pencere arasında, kare içi (I-frame) aralıklar arasındaki bit hızının% 15'inden fazla OLMAMALIDIR.
- 1 saniyelik kayan pencerede bit hızının yaklaşık% 100'ünden fazla OLMAMALIDIR.
Cihaz uygulamaları, köşegen uzunluğu en az 2,5 inç olan yerleşik bir ekran içeriyorsa, video çıkışı bağlantı noktası içeriyorsa veya android.hardware.camera.any
özellik işareti aracılığıyla kamera desteği beyan ediyorsa:
- [C-1-1] VP8 veya H.264 video kodlayıcılarından en az birinin desteğini içermeli ve bunu üçüncü taraf uygulamalarının kullanımına sunmalıdır.
- Hem VP8 hem de H.264 video kodlayıcılarını desteklemeli ve bunları üçüncü taraf uygulamalarının kullanımına sunmalıdır.
Cihaz uygulamaları H.264, VP8, VP9 veya HEVC video kodlayıcılarından herhangi birini destekleyip üçüncü taraf uygulamalarına sunuyorsa:
- [C-2-1] Dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
- DEĞİŞKEN kare hızları DESTEKLENMELİDİR. Bu durumda video kodlayıcı, anlık kare süresini giriş arabelleklerinin zaman damgalarına göre BELİRLEMELİ ve bit aralığını bu kare süresine göre AYIRMALIDIR.
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 sunuyorsa:
- [C-1-1] Temel Profil Düzeyi 45'i DESTEKLEMELİDİR.
- Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
5.2.2. H-264
Cihaz uygulamaları H.264 codec'ini destekliyorsa:
- [C-1-1] Temel Profil Seviye 3'ü DESTEKLEMELİDİR. Ancak ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğu korumak için kodlayıcıların Baseline Profile'da ASO, FMO ve RS'yi KULLANMAMASI ÖNERİLİR.
- [C-1-2] Aşağıdaki tablodaki SD (Standart Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
- Ana Profil Düzeyi 4'ü DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için H.264 kodlamasının desteklendiğini bildiriyorsa:
- [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 240 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 20 fps | 30 fps | 30 fps | 30 fps |
Video bit hızı | 384 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
5.2.3. VP8
Cihaz uygulamaları VP8 codec'ini destekliyorsa:
- [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
- Aşağıdaki HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
- Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
- Web video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olmasını sağlamak için WebM projesi RTC donanım kodlama şartlarını karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için VP8 kodlamasının desteklendiğini bildiriyorsa:
- [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
5.2.4. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
5.3. Video kod çözme
Cihaz uygulamaları VP8, VP9, H.264 veya H.265 codec'lerini destekliyorsa:
- [C-1-1] Aynı akışta VP8, VP9, H.264 ve H.265 codec'lerinin tümü için gerçek zamanlı olarak ve cihazda her codec'in desteklediği maksimum çözünürlüğe kadar standart Android API'leri aracılığıyla dinamik video çözünürlüğü ve kare hızı geçişini DESTEKLEMELİDİR.
Cihaz uygulamaları HDR_TYPE_DOLBY_VISION
aracılığıyla Dolby Vision kod çözücüsünü desteklediğini beyan ediyorsa:
- [C-2-1] Dolby Vision özellikli bir çıkarıcı SAĞLANMALIDIR.
- [C-2-2] Dolby Vision içeriği, 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 diziniyle aynı OLMALIDIR.
5.3.1. MPEG-2
Cihaz uygulamaları MPEG-2 kod çözücülerini destekliyorsa:
- [C-1-1] Ana Profil Yüksek Seviyesi desteklenmelidir.
5.3.2. H.263
Cihaz uygulamaları H.263 kod çözücülerini destekliyorsa:
- [C-1-1] Baseline Profile Level 30 ve Level 45'i DESTEKLEMELİDİR.
5.3.3. MPEG-4
MPEG-4 kod çözücülerle cihaz uygulamaları varsa:
- [C-1-1] MUST support Simple Profile Level 3.
5.3.4. H.264
Cihaz uygulamaları H.264 kod çözücülerini destekliyorsa:
- [C-1-1] Main Profile Level 3.1 ve Baseline Profile'ı DESTEKLEMELİDİR. ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR.
- [C-1-2] Aşağıdaki tabloda listelenen ve Baseline Profile ile Main Profile Level 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlük) profillerine sahip videoları çözebilmelidir.
- Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlük) profillerine sahip videoları çözebilmelidir.
Display.getSupportedModes()
yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse cihaz uygulamaları:
- [C-2-1] Aşağıdaki tabloda yer alan HD 720p video kod çözme profillerini DESTEKLEMELİDİR.
- [C-2-2] Aşağıdaki tabloda yer alan HD 1080p video kod çözme profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 240 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 30 fps | 30 fps | 60 fps | 30 fps (60 fpsTelevizyon) |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.5. H.265 (HEVC)
Cihaz uygulamaları H.265 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda belirtildiği gibi Ana Profil Seviye 3 Ana katmanını ve SD video kod çözme profillerini 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öntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-2-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin H.265 veya VP9 kod çözme işlemlerinden en az birini desteklemelidir.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü | 352 x 288 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30/60 fps (60 fpsH.265 donanım kod çözme özelliğine sahip televizyon) | 60 fps |
Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
5.3.6. VP8
Cihaz uygulamaları VP8 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tablodaki SD kod çözme profillerini DESTEKLEMELİDİR.
- Koşulları karşılayan bir donanım VP8 codec'i KULLANMALIDIR.
- Aşağıdaki tabloda yer alan HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes()
yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-2-1] Cihaz uygulamaları, aşağıdaki tablodaki 720p profillerini DESTEKLEMELİDİR.
- [C-2-2] Cihaz uygulamaları, aşağıdaki tabloda yer alan 1080p profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps (60 fpsTelevizyon) | 30 (60 fpsTelevizyon) |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.7. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda belirtildiği gibi SD video kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları VP9 codec'ini ve donanım kod çözücüyü destekliyorsa:
- [C-2-1] Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes()
yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-3-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin VP9 veya H.265 kod çözme işlemlerinden en az birini desteklemelidir.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps (60 fpsVP9 donanım kod çözme özelliğine sahip televizyon) | 60 fps |
Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
5.4. Ses Kaydetme
Bu bölümde belirtilen şartlardan bazıları Android 4.3'ten beri SHOULD olarak listeleniyor olsa da gelecekteki sürümlerin Uyumluluk Tanımı'nda bunların MUST olarak değiştirilmesi planlanmaktadır. Mevcut ve yeni Android cihazların, GEREKLİ olarak listelenen bu koşulları karşılaması ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiklerinde Android uyumluluğu elde edemezler.
5.4.1. Ham Ses Kaydı
Cihaz uygulamaları android.hardware.microphone
beyan ederse:
-
[C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına İZİN VERİLMELİDİR:
- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 8.000, 11.025, 16.000, 44.100 Hz
- Kanallar: Mono
-
[C-1-2] Yukarı örnekleme yapmadan yukarıdaki örnek hızlarında kayıt YAPILMALIDIR.
- [C-1-3] Yukarıda verilen örnekleme hızları, alt örnekleme ile yakalandığında uygun bir yumuşatma filtresi İÇERMELİDİR.
-
AM radyo ve DVD kalitesinde ham ses içeriği yakalamaya İZİN VERİLMELİDİR. Bu, aşağıdaki özelliklerin karşılanması anlamına gelir:
- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 22050, 48000 Hz
- Kanallar: Stereo
Cihaz uygulamaları, AM radyo ve ham ses içeriğinin DVD kalitesinde yakalanmasına izin veriyorsa:
- [C-2-1] 16000:22050 veya 44100:48000'den yüksek bir oranda örnekleme artırılmadan kayıt YAPILMALIDIR.
- [C-2-2] Herhangi bir yukarı örnekleme veya aşağı örnekleme için uygun bir yumuşatma filtresi İÇERMELİDİR.
5.4.2. Ses tanıma için yakalama
Cihaz uygulamaları android.hardware.microphone
beyan ederse:
- [C-1-1]
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION
ses kaynağını 44.100 ve 48.000 örnekleme hızlarından birinde yakalamalıdır. - [C-1-2]
AudioSource.VOICE_RECOGNITION
ses kaynağından ses yayını kaydederken varsayılan olarak tüm gürültü azaltma ses işlemlerini devre dışı BIRAKMALIDIR. - [C-1-3]
AudioSource.VOICE_RECOGNITION
ses kaynağından ses akışı kaydederken varsayılan olarak otomatik kazanç kontrolünü devre dışı BIRAKMALIDIR. - Ses tanıma ses akışını, frekans özelliklerine göre yaklaşık olarak düz genlikle kaydetmelidir. Özellikle 100 Hz ile 4.000 Hz arasında ±3 dB olmalıdır.
- Ses tanıma ses akışını, giriş hassasiyeti 1000 Hz'de 90 dB ses gücü seviyesine (SPL) sahip bir kaynak 16 bitlik örnekler için 2.500 RMS verecek şekilde ayarlanmış olarak KAYDETMELİDİR.
- Mikrofonda 90 dB SPL'ye göre -18 dB ile +12 dB arasında en az 30 dB aralığında PCM genlik seviyeleri, giriş SPL değişikliklerini doğrusal olarak takip edecek şekilde ses tanıma ses akışını KAYDETMELİDİR.
- Mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için% 1'den az toplam harmonik bozulma (THD) ile ses tanıma ses akışını KAYDETMELİDİR.
Cihaz uygulamaları, android.hardware.microphone
ve konuşma tanıma için ayarlanmış gürültü bastırma (azaltma) teknolojilerini beyan ediyorsa:
- [C-2-1] Bu ses efektinin
android.media.audiofx.NoiseSuppressor
API'si ile kontrol edilmesine İZİN VERİLMELİDİR. - [C-2-2]
AudioEffect.Descriptor.uuid
alanı aracılığıyla her gürültü bastırma teknolojisi uygulamasını benzersiz şekilde tanımlamalıdır.
5.4.3. Oynatmanın yeniden yönlendirilmesi için yakalama
android.media.MediaRecorder.AudioSource
sınıfı, REMOTE_SUBMIX
ses kaynağını içerir.
Cihaz uygulamaları hem android.hardware.audio.output
hem de android.hardware.microphone
beyan ederse:
-
[C-1-1]
REMOTE_SUBMIX
Ses kaynağı, bir uygulama bu ses kaynağından kayıt yapmak içinandroid.media.AudioRecord
API'sini kullandığında aşağıdakiler hariç tüm ses akışlarının karışımını yakalayacak şekilde düzgün bir şekilde uygulanmalıdır:-
AudioManager.STREAM_RING
-
AudioManager.STREAM_ALARM
-
AudioManager.STREAM_NOTIFICATION
-
5.5. Ses Çalma
Android, uygulamaların 7.8.2 bölümünde tanımlandığı şekilde ses çıkışı çevre birimi üzerinden ses oynatmasına olanak tanıyan desteği içerir.
5.5.1. Ham Ses Oynatma
Cihaz uygulamaları android.hardware.audio.output
beyan ederse:
-
[C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına İZİN VERİLMELİDİR:
- Biçim: Doğrusal PCM, 16 bit, 8 bit, kayan nokta
- Kanallar: Mono, Stereo, 8 kanala kadar geçerli çok kanallı yapılandırmalar
-
Örnekleme hızları (Hz cinsinden):
- Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 32000, 44100, 48000
- Mono ve stereo olarak 96.000
-
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 ediyorsa:
- [C-1-1]
EFFECT_TYPE_EQUALIZER
veEFFECT_TYPE_LOUDNESS_ENHANCER
uygulamaları, AudioEffect alt sınıflarıEqualizer
,LoudnessEnhancer
aracılığıyla kontrol edilebilir şekilde desteklenmelidir. - [C-1-2]
Visualizer
sınıfı aracılığıyla kontrol edilebilen görselleştirici API uygulamasını DESTEKLEMELİDİR. - [C-1-3] MUST support the
EFFECT_TYPE_DYNAMICS_PROCESSING
implementation controllable through the AudioEffect subclassDynamicsProcessing
. EFFECT_TYPE_BASS_BOOST
,EFFECT_TYPE_ENV_REVERB
,EFFECT_TYPE_PRESET_REVERB
veEFFECT_TYPE_VIRTUALIZER
uygulamalarınıAudioEffect
alt sınıflarıBassBoost
,EnvironmentalReverb
,PresetReverb
veVirtualizer
aracılığıyla kontrol edilebilir şekilde DESTEKLEMELİDİR.
5.5.3. Ses Çıkış Ses Düzeyi
Otomotiv cihaz uygulamaları:
- AudioAttributes tarafından tanımlanan içerik türü veya kullanım ve
android.car.CarAudioManager
içinde herkese açık olarak tanımlanan araç ses sistemi kullanımı kullanılarak her ses akışı için ses seviyesinin ayrı ayrı ayarlanmasına İZİN VERİLMELİDİR.
5.6. Ses Gecikmesi
Ses gecikmesi, bir ses sinyalinin sistemden geçerken yaşadığı zaman gecikmesidir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikme sürelerine ihtiyaç duyar.
Bu bölümün amaçları doğrultusunda aşağıdaki tanımları kullanın:
- output latency. Bir uygulamanın PCM kodlu bir veri çerçevesini yazdığı zaman ile karşılık gelen sesin cihaz üzerinde bir dönüştürücüde ortama sunulduğu veya bir bağlantı noktası üzerinden cihazdan ayrılıp harici olarak gözlemlenebildiği zaman arasındaki aralık.
- Soğuk çıktı gecikmesi. Ses çıkışı sistemi istekten önce boşta kalıp kapatıldığında ilk karenin çıkış gecikmesi.
- sürekli çıkış gecikmesi. Cihaz ses çalmaya başladıktan sonraki karelerin çıkış gecikmesi.
- giriş gecikmesi. Bir sesin ortam tarafından cihazda bulunan bir dönüştürücüye sunulması veya bir sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın PCM kodlu verilerin ilgili çerçevesini okuması arasındaki aralık.
- kayıp giriş. Giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.
- Soğuk giriş gecikmesi. Ses girişi sistemi istekten önce boşta kalıp kapatıldığında, kaybolan giriş süresi ile ilk kare için giriş gecikmesinin toplamı.
- sürekli giriş gecikmesi. Cihaz ses yakalarken sonraki karelerin giriş gecikmesi.
- cold output jitter. Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- soğuk giriş titremesi. Soğuk giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesi, sürekli çıkış gecikmesi ve bir arabellek süresinin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için zaman tanır.
- OpenSL ES PCM arabellek sırası API'si. Android NDK'deki PCM ile ilgili OpenSL ES API'leri kümesi.
- AAudio yerel ses API'si. Android NDK'deki AAudio API'leri kümesi.
- Zaman damgası. Bir akış içindeki göreli kare konumundan ve bu karenin ilişkili uç noktadaki ses işleme ardışık düzenine girdiği veya bu ardışık düzenden çıktığı tahmini zamandan oluşan bir çift. AudioTimestamp başlıklı makaleyi de inceleyin.
Cihaz uygulamaları android.hardware.audio.output
beyan ediyorsa aşağıdaki şartları karşılaması veya aşması ŞİDDETLE TAVSİYE EDİLİR:
- [C-SR] 100 milisaniye veya daha az soğuk çıkış gecikmesi
- [C-SR] 45 milisaniye veya daha az sürekli çıkış gecikmesi
- [C-SR] Soğuk çıkış titremesini en aza indirin
- [C-SR] AudioTrack.getTimestamp ve
AAudioStream_getTimestamp
tarafından döndürülen çıkış zaman damgası +/- 1 ms'ye kadar doğrudur.
Cihaz uygulamaları yukarıdaki şartları karşılıyorsa, ilk kalibrasyondan sonra hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri kullanılırken, desteklenen en az bir ses çıkışı cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için:
- [C-SR]
android.hardware.audio.low_latency
özellik bayrağı bildirilerek düşük gecikmeli sesin bildirilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] AAudio API aracılığıyla düşük gecikmeli ses gereksinimlerini karşılamak KESİNLİKLE ÖNERİLİR.
- [C-SR]
AAudioStream_getPerformanceMode()
kaynağındanAAUDIO_PERFORMANCE_MODE_LOW_LATENCY
döndüren yayınlarda,AAudioStream_getFramesPerBurst()
tarafından döndürülen değerin,AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER
özellik anahtarı içinandroid.media.AudioManager.getProperty(String)
tarafından döndürülen değerden küçük veya ona eşit olması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri aracılığıyla düşük gecikmeli ses gereksinimlerini karşılamıyorsa:
- [C-1-1] Düşük gecikmeli ses desteği bildirilmemelidir.
Cihaz uygulamaları android.hardware.microphone
içeriyorsa aşağıdaki giriş sesi şartlarını karşılamaları ŞİDDETLE TAVSİYE EDİLİR:
- [C-SR] 100 milisaniye veya daha az soğuk giriş gecikmesi.
- [C-SR] 30 milisaniye veya daha az sürekli giriş gecikmesi.
- [C-SR] Gidiş dönüş gecikmesinin sürekli olarak 50 milisaniye veya daha az olması.
- [C-SR] Soğuk giriş titremesini en aza indirin.
- [C-SR] AudioRecord.getTimestamp veya
AAudioStream_getTimestamp
tarafından döndürülen giriş zaman damgalarındaki hatayı +/- 1 ms ile sınırlayın.
5.7. Ağ Protokolleri
Cihaz uygulamaları, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemelidir.
Cihaz uygulamaları ses veya video kod çözücü içeriyorsa:
-
[C-1-1] 5.1 bölümündeki tüm gerekli codec'leri ve kapsayıcı biçimlerini HTTP(S) üzerinden desteklemelidir.
-
[C-1-2] HTTP Live Streaming taslak protokolü, Sürüm 7 üzerinden aşağıdaki Medya Segmenti Biçimleri tablosunda gösterilen medya segmenti biçimlerini desteklemelidir.
-
[C-1-3] Aşağıdaki RTSP tablosunda belirtilen RTP ses ve video profilini ve ilgili codec'leri DESTEKLEMELİDİR. İstisnalar için lütfen bölüm 5.1'deki tablo dipnotlarına bakın.
Medya segmenti biçimleri
Segment biçimleri | Referanslar | Gerekli codec desteği |
---|---|---|
MPEG-2 Taşıma Akışı | ISO 13818 |
Video codec'leri:
Ses codec'leri:
|
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 bölümüne bakın. |
WebVTT | WebVTT |
RTSP (RTP, SDP)
Profil adı | Referanslar | Gerekli codec desteği |
---|---|---|
H264 AVC | RFC 6184 | H264 AVC ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
MP4A-LATM | RFC 6416 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 bölümüne bakın. |
H263-1998 |
RFC 3551 RFC 4629 RFC 2190 |
H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
H263-2000 | RFC 4629 | H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
AMR | RFC 4867 | AMR-NB ile ilgili ayrıntılar için 5.1.1 bölümüne bakın. |
AMR-WB | RFC 4867 | AMR-WB ile ilgili ayrıntılar için 5.1.1 bölümüne bakın. |
MP4V-ES | RFC 6416 | MPEG-4 SP ile ilgili ayrıntılar için 5.1.3 bölümüne bakın. |
mpeg4-generic | RFC 3640 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 bölümüne bakın. |
MP2T | RFC 2250 | Ayrıntılar için HTTP Live Streaming bölümündeki MPEG-2 Taşıma Akışı konusuna bakın. |
5.8. Güvenli Medya
Cihaz uygulamaları güvenli video çıkışını destekliyorsa ve güvenli yüzeyleri destekleyebiliyorsa:
- [C-1-1]
Display.FLAG_SECURE
desteği BEYAN EDİLMELİDİR.
Cihaz uygulamaları Display.FLAG_SECURE
desteği beyan ediyorsa ve kablosuz ekran protokolünü destekliyorsa:
- [C-2-1] Miracast gibi kablosuz protokollerle bağlanan ekranlar için bağlantıyı HDCP 2.x veya daha yüksek gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİ HALE GETİRMELİDİR.
Cihaz uygulamaları Display.FLAG_SECURE
desteğini ve kablolu harici ekranı desteklediğini beyan ediyorsa:
- [C-3-1] Kullanıcı tarafından erişilebilen kablolu bir bağlantı noktası üzerinden bağlanan tüm harici ekranlar için HDCP 1.2 veya daha yüksek bir sürüm desteklenmelidir.
5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)
Cihaz uygulamaları, android.content.pm.PackageManager
sınıfı aracılığıyla android.software.midi
özelliğinin desteklendiğini bildiriyorsa:
-
[C-1-1] Bu tür aktarımlar aşağıdaki durumlarda geçerli olmak üzere, genel MIDI dışı bağlantı sağladıkları tüm MIDI özellikli donanım aktarımlarında MIDI'yi desteklemelidir:
- USB ana makine modu, bölüm 7.7
- USB çevre birimi modu, bölüm 7.7
- Bluetooth LE üzerinden MIDI, merkezi rolü üstlenir, bölüm 7.4.3
-
[C-1-2] Uygulamalar arası MIDI yazılım aktarımını (sanal MIDI cihazları) DESTEKLEMELİDİR.
5.10. Profesyonel Ses
Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla android.hardware.audio.pro
özelliğinin desteklendiğini bildiriyorsa:
- [C-1-1]
android.hardware.audio.low_latency
özelliği için destek bildirimi ZORUNLUDUR. - [C-1-2] Bölüm 5.6 Ses Gecikmesi'nde tanımlandığı şekilde sürekli gidiş dönüş ses gecikmesi en fazla 20 milisaniye OLMALI ve desteklenen en az bir yolda en fazla 10 milisaniye OLMALIDIR.
- [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen bir veya daha fazla USB bağlantı noktası İÇERMELİDİR.
- [C-1-4]
android.software.midi
özelliği için destek raporlanmalıdır. - [C-1-5] Hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri kullanılarak gecikme ve USB ses gereksinimleri karşılanmalıdır.
- [SR] Ses etkin durumdayken ve CPU yükü değişirken tutarlı bir CPU performansı seviyesi sağlamak için KESİNLİKLE ÖNERİLİR. Bu, SimpleSynth commit 1bd6391 kullanılarak test edilmelidir. SimpleSynth uygulaması aşağıdaki parametrelerle çalıştırılmalı ve 10 dakika sonra sıfır eksiklik elde etmelidir:
- Çalışma döngüleri: 200.000
- Değişken yük: AÇIK (Bu, her 2 saniyede bir iş döngüsü değerinin% 100'ü ile% 10'u arasında geçiş yapar ve CPU yöneticisi davranışını test etmek için tasarlanmıştır)
- Sabit yük: KAPALI
- Ses saatiyle ilgili standart saate kıyasla yanlışlık ve sapma EN AZA İNDİRİLMELİDİR.
- Her ikisi de etkin olduğunda, CPU'ya kıyasla ses saati sapmasını en aza İNDİRMELİDİR.
CLOCK_MONOTONIC
- Cihaz içi dönüştürücülerde ses gecikmesini EN AZA İNDİRMELİDİR.
- USB dijital ses üzerinden ses gecikmesini EN AZA İNDİRMELİDİR.
- Tüm yollardaki ses gecikmesi ölçümleri belgelenmelidir.
- Geri arama, tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediğinden ses arabelleği tamamlama geri arama giriş sürelerindeki titreşim EN AZA İNDİRİLMELİDİR.
- Bildirilen gecikme süresinde normal kullanımda sıfır ses yetersizliği (çıkış) veya aşırı akış (giriş) sağlamalıdır.
- Kanallar arası gecikme farkı sıfır olmalıdır.
- Tüm aktarımlarda MIDI ortalama gecikmesi en aza indirilmelidir.
- Tüm aktarımlarda yük altındaki MIDI gecikme süresi değişkenliğini (titreme) EN AZA İNDİRMELİDİR.
- Tüm aktarımlarda doğru MIDI zaman damgaları SAĞLANMALIDIR.
- Soğuk başlatmadan hemen sonraki dönem de dahil olmak üzere, cihaz üzerindeki dönüştürücülerde ses sinyali gürültüsünü EN AZA İNDİRMELİDİR.
- Her ikisi de etkin olduğunda, karşılık gelen uç noktaların giriş ve çıkış tarafları arasında sıfır ses saati farkı SAĞLAMALIDIR. Karşılık gelen uç noktalara örnek olarak cihazdaki mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.
- Her ikisi de etkin olduğunda, aynı iş parçacığındaki karşılık gelen uç noktaların giriş ve çıkış tarafları için ses arabelleği tamamlama geri çağırmalarını İŞLEMELİ ve giriş geri çağırmasından döndükten hemen sonra çıkış geri çağırmasına girmelidir. Geri aramaları aynı iş parçacığında işlemek mümkün değilse uygulamanın giriş ve çıkış taraflarında tutarlı bir zamanlama sağlamak için çıkış geri aramasını giriş geri aramasından kısa bir süre sonra girin.
- Giriş ve çıkış tarafları için HAL ses arabelleğe alma arasındaki faz farkı en aza İNDİRİLMELİDİR.
- Dokunma gecikmesi en aza indirilmelidir.
- Yük altındayken dokunma gecikmesi değişkenliğini (titreme) EN AZA İNDİRMELİDİR.
- Dokunma girişinden ses çıkışına kadar olan gecikme süresi 40 ms veya daha az OLMALIDIR.
Cihaz uygulamaları yukarıdaki koşulların tümünü karşılıyorsa:
- [SR]
android.hardware.audio.pro
özelliğinin desteklendiğiniandroid.content.pm.PackageManager
sınıfı aracılığıyla bildirmeniz ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakı içeriyorsa:
- [C-2-1] Ses jakı yolu üzerinden sürekli gidiş dönüş ses gecikmesi 20 milisaniye veya daha az OLMALIDIR.
- [SR] Kablolu Ses Kulaklığı Spesifikasyonu (v1.1)'nun Mobil cihaz (jak) spesifikasyonları bölümüne uymanız ŞİDDETLE TAVSİYE EDİLİR.
- Ses jakı yolu üzerinden sürekli gidiş dönüş ses gecikmesi 10 milisaniye veya daha az OLMALIDIR.
Cihaz uygulamaları 4 iletkenli 3, 5 mm ses jakını atlıyor ve USB ana makine modunu destekleyen USB bağlantı noktaları içeriyorsa:
- [C-3-1] USB ses sınıfı UYGULANMALIDIR.
- [C-3-2] USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktası üzerinden 20 milisaniye veya daha az sürekli gidiş dönüş ses gecikmesine SAHİP OLMALIDIR.
- USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktası üzerinden sürekli gidiş dönüş ses gecikmesi 10 milisaniye veya daha az OLMALIDIR.
Cihaz uygulamaları HDMI bağlantı noktası içeriyorsa:
- [C-4-1] En az bir yapılandırmada, bit derinliği kaybı veya yeniden örnekleme olmadan 20 bit ya da 24 bit derinlikte ve 192 kHz'de stereo ve sekiz kanallı çıkışı desteklemelidir.
5.11. İşlenmemiş için Yakalama
Android, android.media.MediaRecorder.AudioSource.UNPROCESSED
ses kaynağı aracılığıyla işlenmemiş ses kaydını destekler. OpenSL ES'de, kayıt ön ayarıyla SL_ANDROID_RECORDING_PRESET_UNPROCESSED
erişilebilir.
Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemeyi ve üçüncü taraf uygulamalarına sunmayı amaçlıyorsa:
-
[C-1-1] Desteği
android.media.AudioManager
özelliği PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED üzerinden bildirmelidir. -
[C-1-2] Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri sergilemelidir: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 100 Hz ile 7.000 Hz arasında ±10 dB.
-
[C-1-3] Düşük frekans aralığında genlik seviyeleri GÖSTERİLMELİDİR: Özellikle işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofonun orta frekans aralığına kıyasla 5 Hz ile 100 Hz arasında ±20 dB.
-
[C-1-4] Yüksek frekans aralığında genlik seviyeleri GÖSTERMELİDİR: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofonun orta frekans aralığına kıyasla 7.000 Hz ile 22 kHz arasında ±30 dB.
-
[C-1-5] Ses girişi hassasiyeti, 94 dB ses basıncı seviyesinde (SPL) çalınan 1.000 Hz sinüs tonu kaynağının, işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofon için 16 bit örneklerde 520 RMS (veya kayan nokta/çift duyarlıklı örneklerde -36 dB tam ölçek) ile yanıt verecek şekilde AYARLANMALIDIR.
-
[C-1-6] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun 60 dB veya daha yüksek bir sinyal-gürültü oranına (SNR) sahip olması ZORUNLUDUR. (SNR, 94 dB SPL ile öz gürültünün eşdeğer SPL'si arasındaki fark olarak ölçülür, A ağırlıklı).
-
[C-1-7] İşlenmemiş ses kaynağını kaydetmek için kullanılan her 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 seviye çarpanı dışında, yolda başka bir sinyal işleme (ör. otomatik kazanç kontrolü, yüksek geçiren filtre veya yankı iptali) olmamalıdır. Başka bir deyişle:
- [C-1-8] Mimaride herhangi bir nedenle sinyal işleme varsa bu işleme DEVRE DIŞI BIRAKILMALI ve sinyal yolunda etkili bir şekilde sıfır gecikme veya ek gecikme oluşturulmalıdır.
- [C-1-9] Seviye çarpanının yolda olmasına izin verilir ancak sinyal yolunda gecikmeye veya gecikme süresine neden OLMAMALIDIR.
Tüm SPL ölçümleri, test edilen mikrofonun hemen yanında yapılır. Birden fazla mikrofon yapılandırması için bu koşullar her mikrofon için geçerlidir.
Cihaz uygulamaları android.hardware.microphone
beyan ediyorsa ancak işlenmemiş ses kaynağını desteklemiyorsa:
- [C-2-1] Desteklenmediğini düzgün şekilde belirtmek için
AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED)
API yöntemi içinnull
döndürülmelidir. - [SR], işlenmemiş kayıt kaynağının sinyal yoluyla ilgili mümkün olduğunca çok sayıda koşulu karşılamak için hâlâ ŞİDDETLE TAVSİYE EDİLİR.
6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
6.1. Geliştirici araçları
Cihaz uygulamaları:
- [C-0-1] Android SDK'da sağlanan Android Geliştirici Araçları desteklenmelidir.
-
- [C-0-2] Android SDK'sında ve AOSP'de sağlanan kabuk komutlarında belgelendiği şekilde adb'yi desteklemelidir. Bu komutlar, uygulama geliştiriciler tarafından
dumpsys
vecmd stats
dahil olmak üzere kullanılabilir. - [C-0-3] MUST NOT alter the format or the contents of device system events (batterystats , diskstats, fingerprint, graphicsstats, netstats, notification, procstats) logged via the dumpsys command.
- [C-0-10] Aşağıdaki etkinlikleri eksiksiz olarak kaydetmeli ve
cmd stats
kabuk komutuna veStatsManager
System API sınıfına erişilebilir ve kullanılabilir hale getirmelidir.- ActivityForegroundStateChanged
- AnormallikAlgılandı
- AppBreadcrumbReported
- AppCrashOccurred
- AppStartOccurred
- BatteryLevelChanged
- BatterySaverModeStateChanged
- BleScanResultReceived
- BleScanStateChanged
- ChargingStateChanged
- DeviceIdleModeStateChanged
- ForegroundServiceStateChanged
- GpsScanStateChanged
- JobStateChanged
- PluggedStateChanged
- ScheduledJobStateChanged
- ScreenStateChanged
- SyncStateChanged
- SystemElapsedRealtime
- UidProcessStateChanged
- WakelockStateChanged
- WakeupAlarmOccurred
- WifiLockStateChanged
- WifiMulticastLockStateChanged
- WifiScanStateChanged
- [C-0-4] Cihaz tarafındaki adb daemon'ı varsayılan olarak etkin olmamalı ve Android Debug Bridge'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma olmalıdır.
- [C-0-5] Güvenli adb'yi DESTEKLEMELİDİR. Android, güvenli adb'yi destekler. Güvenli adb, bilinen kimliği doğrulanmış ana makinelerde adb'yi etkinleştirir.
-
[C-0-6] adb'nin bir ana makineden bağlanmasına izin veren bir mekanizma SAĞLANMALIDIR. Örneğin:
- Çevre birimi modunu destekleyen bir USB bağlantı noktası olmayan cihaz uygulamaları, adb'yi yerel alan ağı (ör. Ethernet veya kablosuz) üzerinden uygulamalıdır.
- Geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows 7, 9 ve 10 sürücüleri SAĞLANMALIDIR.
- [C-0-2] Android SDK'sında ve AOSP'de sağlanan kabuk komutlarında belgelendiği şekilde adb'yi desteklemelidir. Bu komutlar, uygulama geliştiriciler tarafından
-
Dalvik Debug Monitor Service (ddms)
- [C-0-7] Android SDK'da belgelendiği şekilde tüm ddms özelliklerini DESTEKLEMELİDİR. ddms, adb'yi kullandığından ddms desteği varsayılan olarak devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Debug Bridge'i etkinleştirdiğinde desteklenmelidir.
-
Monkey
- [C-0-8] Monkey çerçevesini içermeli ve uygulamaların kullanabilmesi için kullanılabilir hale getirmelidir.
-
SysTrace
- [C-0-9] Android SDK'da belgelendiği şekilde systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak devre dışı olmalı ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma OLMALIDIR.
Cihaz uygulamaları, android.hardware.vulkan.version
özellik işaretleri aracılığıyla Vulkan 1.0 veya sonraki sürümlerin desteklendiğini bildiriyorsa:
- [C-1-1] Uygulama geliştiricinin GPU hata ayıklama katmanlarını etkinleştirmesine/devre dışı bırakmasına olanak tanıyan bir özellik SAĞLANMALIDIR.
- [C-1-2] GPU hata ayıklama katmanları etkinleştirildiğinde, vkEnumerateInstanceLayerProperties() ve vkCreateInstance() API yöntemlerini desteklemek için hata ayıklanabilir uygulamaların temel dizininde bulunan, harici araçlar tarafından sağlanan kitaplıklardaki (yani platformun veya uygulama paketinin parçası olmayan) katmanları numaralandIRMALIDIR.
6.2. Geliştirici seçenekleri
Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmasına olanak tanır.
Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sağlamalıdır. Bu bağlamda:
- [C-0-1] Uygulama geliştirme ile ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS amacına UYULMALIDIR. Yukarı akış Android uygulaması, Geliştirici Seçenekleri menüsünü varsayılan olarak gizler ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesine yedi (7) kez basarak Geliştirici Seçenekleri'ni başlatmasına olanak tanır.
- [C-0-2] Geliştirici Seçenekleri varsayılan olarak GİZLENMELİDİR.
- [C-0-3] Geliştirici Seçenekleri'nin etkinleştirilmesi için bir üçüncü taraf uygulamasına diğerine göre ayrıcalıklı muamele yapmayan net bir mekanizma SAĞLANMALIDIR. Geliştirici Seçenekleri'nin nasıl etkinleştirileceğini açıklayan, herkese açık bir doküman veya web sitesi SAĞLANMALIDIR. Bu doküman veya web sitesi, Android SDK dokümanlarından BAĞLANABİLİR olmalıdır.
- Geliştirici Seçenekleri etkinleştirildiğinde ve kullanıcının güvenliği söz konusu olduğunda kullanıcıya sürekli görsel bildirim GÖNDERMELİDİR.
- Kullanıcının güvenliğinin söz konusu olduğu durumlarda dikkat dağıtılmasını önlemek için Geliştirici Seçenekleri menüsüne erişimi, menüyü görsel olarak gizleyerek veya devre dışı bırakarak GEÇİCİ OLARAK sınırlayabilir.
7. Donanım Uyumluluğu
Bir cihazda, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir donanım bileşeni varsa:
- [C-0-1] Cihaz uygulaması, bu API'yi Android SDK belgelerinde açıklandığı şekilde uygulamalıdır.
SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime giriyorsa ve cihaz uygulamasında bu bileşen yoksa:
- [C-0-2] Bileşen API'leri için sınıf tanımları (SDK tarafından belgelendiği şekilde) yine sunulmalıdır.
- [C-0-3] API'nin davranışları, makul bir şekilde işlem yapmayan işlemler olarak uygulanmalıdır.
- [C-0-4] API yöntemleri, SDK belgelerinde izin verilen yerlerde null değerler döndürmelidir.
- [C-0-5] API yöntemleri, SDK belgelerinde boş değerlere izin verilmeyen sınıfların no-op uygulamalarını döndürmelidir.
- [C-0-6] API yöntemleri, SDK belgelerinde açıklanmayan istisnalar oluşturmamalıdır.
- [C-0-7] Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki
getSystemAvailableFeatures()
vehasSystemFeature(String)
yöntemleriyle tutarlı bir şekilde doğru donanım yapılandırma bilgilerini bildirmelidir.
Bu şartların geçerli olduğu senaryolara tipik bir örnek, telefon API'sidir: Bu API'ler, telefon olmayan cihazlarda bile makul bir şekilde işlem yapmayan (no-op) olarak uygulanmalıdır.
7.1. Ekran ve Grafik
Android, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında iyi çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan olanaklar 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 şartların referans verdiği birimler aşağıdaki şekilde tanımlanır:
- fiziksel çapraz boyut. Ekranın aydınlatılmış kısmının iki zıt köşesi arasındaki mesafedir.
- İnç başına nokta sayısı (dpi). 1 inçlik doğrusal yatay veya dikey bir aralığın kapsadığı piksel sayısı. DPI değerleri listelendiğinde hem yatay hem de dikey DPI aralığın içinde olmalıdır.
- en boy oranı. Ekranın uzun boyutunun piksellerinin kısa boyutunun piksellerine oranı. Örneğin, 480x854 piksel boyutundaki bir ekranın en-boy oranı 854/480 = 1, 779 veya yaklaşık olarak "16:9" olur.
- Yoğunluktan bağımsız piksel (dp). 160 DPI ekrana göre normalleştirilmiş sanal piksel birimi. Piksel sayısı = DP sayısı * (yoğunluk/160) şeklinde hesaplanır.
7.1.1. Ekran Yapılandırması
7.1.1.1. Ekran Boyutu ve Şekli
Android kullanıcı arayüzü çerçevesi, çeşitli farklı mantıksal ekran düzeni boyutlarını destekler ve uygulamaların Configuration.screenLayout
ile SCREENLAYOUT_SIZE_MASK
ve Configuration.smallestScreenWidthDp
kullanarak mevcut yapılandırmanın ekran düzeni boyutunu sorgulamasına olanak tanır.
Cihaz uygulamaları:
-
[C-0-1] Android SDK dokümanlarında tanımlandığı şekilde
Configuration.screenLayout
için doğru düzen boyutunu bildirmelidir. Daha net bir ifadeyle, cihaz uygulamaları aşağıdaki gibi doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını bildirmelidir:Configuration.uiMode
değeri UI_MODE_TYPE_WATCH dışında bir değer olarak ayarlanmış veConfiguration.screenLayout
içinsmall
boyutu bildiren cihazlar en az 426 dp x 320 dp olmalıdır.normal
boyutu bildiren cihazlardaConfiguration.screenLayout
için en az 480 dp x 320 dp olmalıdır.large
içinConfiguration.screenLayout
boyutunu bildiren cihazlar en az 640 dp x 480 dp olmalıdır.Configuration.screenLayout
içinxlarge
boyutu bildiren cihazlar en az 960 dp x 720 dp olmalıdır.
-
[C-0-2] Android SDK belgelerinde açıklandığı gibi, AndroidManifest.xml dosyasındaki <
supports-screens
> özelliği aracılığıyla uygulamaların ekran boyutları için belirttiği desteği DOĞRU şekilde karşılamalıdır. -
Köşeleri yuvarlatılmış bir ekran OLABİLİR.
Cihaz uygulamaları UI_MODE_TYPE_NORMAL
özelliğini destekliyorsa ve yuvarlak köşeli bir ekran içeriyorsa:
- [C-1-1] Yuvarlatılmış köşelerin yarıçapının 38 dp'ye eşit veya daha küçük olduğundan EMİN OLMALIDIR.
- Dikdörtgen köşeli görüntüleme moduna geçiş için kullanıcıya olanak tanınmalıdır.
7.1.1.2. Ekran En-Boy Oranı
Fiziksel ekranın en boy oranı değeriyle ilgili bir kısıtlama olmasa da üçüncü taraf uygulamalarının oluşturulduğu mantıksal ekranın en boy oranı (view.Display
API'leri ve Configuration API aracılığıyla bildirilen yükseklik ve genişlik değerlerinden elde edilebilir) aşağıdaki şartları KARŞILAMALIDIR:
-
[C-0-1]
Configuration.uiMode
değeriUI_MODE_TYPE_NORMAL
olarak ayarlanmış cihaz uygulamaları, aşağıdaki koşullardan birini karşılayarak uygulamanın daha uzun olacak şekilde genişletilmeye hazır olduğu kabul edilmediği sürece 1,3333 (4:3) ile 1,86 (yaklaşık 16:9) arasında bir en boy oranı değerine SAHİP OLMALIDIR:- Uygulama,
android.max_aspect
meta veri değeri aracılığıyla daha büyük bir ekran en-boy oranını desteklediğini belirtmiş. - Uygulama, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabilir olduğunu belirtir.
- Uygulama, API düzeyi 24 veya sonraki sürümleri hedefliyor ve izin verilen en boy oranını kısıtlayacak bir
android:MaxAspectRatio
beyan etmiyor.
- Uygulama,
-
[C-0-2]
Configuration.uiMode
değeriUI_MODE_TYPE_WATCH
olarak ayarlanmış cihaz uygulamalarında en boy oranı değeri 1,0 (1:1) olarak ayarlanmalıdır.
7.1.1.3. Ekran Yoğunluğu
Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar.
-
[C-0-1] Cihaz uygulamaları, varsayılan olarak DENSITY_DEVICE_STABLE API'si aracılığıyla yalnızca aşağıdaki mantıksal Android çerçeve yoğunluklarından birini bildirmelidir ve bu değer hiçbir zaman değişmemelidir. Ancak cihaz, ilk başlatmadan sonra ayarlanan, kullanıcı tarafından yapılan ekran yapılandırma değişikliklerine (ör. 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ı, bildirilen ekran boyutu desteklenen minimum boyutun altına düşmediği sürece, ekranın fiziksel yoğunluğuna sayısal olarak en yakın olan standart Android çerçeve yoğunluğunu tanımlamalıdır. Fiziksel yoğunluğa sayısal olarak en yakın olan standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuyla sonuçlanıyorsa cihaz uygulamaları, bir sonraki en düşük standart Android çerçeve yoğunluğunu bildirmelidir.
Cihazın ekran boyutunu değiştirme imkanı varsa:
- [C-1-1] Ekran boyutu, yerel yoğunluğun 1,5 katından daha fazla ölçeklendirilmemeli veya önce hangisi gerçekleşirse gerçekleşsin 320 dp'den (kaynak niteleyicisi sw320dp'ye eşdeğer) daha küçük bir etkili minimum ekran boyutu oluşturmamalıdır.
- [C-1-2] Ekran boyutu, doğal yoğunluğun 0,85 katından daha küçük bir ölçekte OLMAMALIDIR.
- İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için (yukarıda belirtilen sınırlara uyarak) Yerel Görüntüleme seçeneklerinin aşağıdaki şekilde ölçeklendirilmesi ÖNERİLİR.
- Küçük: 0,85x
- Varsayılan: 1x (Yerel ekran ölçeği)
- Büyük: 1,15 kat
- Daha büyük: 1,3 kat
- En büyük 1,45x
7.1.2. Görüntüleme Metrikleri
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1]
android.util.DisplayMetrics
API'sinde tanımlanan tüm görüntülü reklam metrikleri için doğru değerler RAPORLANMALIDIR.
Cihaz uygulamaları yerleşik bir ekran veya video çıkışı içermiyorsa:
- [C-2-1] Emüle edilen varsayılan
view.Display
içinandroid.util.DisplayMetrics
API'sinde tanımlanan tüm görüntüleme metrikleri için makul değerler RAPORLANMALIDIR.
7.1.3. Ekran Yönlendirme
Cihaz uygulamaları:
- [C-0-1] Hangi ekran yönlerini desteklediklerini (
android.hardware.screen.portrait
ve/veyaandroid.hardware.screen.landscape
) BİLDİRMELİ ve en az bir desteklenen yön bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönlü yatay ekranı olan bir cihaz YALNIZCAandroid.hardware.screen.landscape
değerini bildirmelidir. - [C-0-2]
android.content.res.Configuration.orientation
,android.view.Display.getOrientation()
veya diğer API'ler aracılığıyla sorgulandığında cihazın mevcut yönü için doğru değeri bildirmelidir.
Cihaz uygulamaları her iki ekran yönünü de destekliyorsa:
- [C-1-1] Uygulamalar tarafından dikey veya yatay ekran yönüne dinamik yönlendirmeyi DESTEKLEMELİDİR. Yani cihaz, uygulamanın belirli bir ekran yönü isteğine uymalıdır.
- [C-1-2] Yön değiştirilirken bildirilen ekran boyutu veya yoğunluğu DEĞİŞTİRİLMEMELİDİR.
- Varsayılan olarak dikey veya yatay yönünü SEÇEBİLİR.
7.1.4. 2D ve 3D Grafik Hızlandırma
7.1.4.1 OpenGL ES
Cihaz uygulamaları:
- [C-0-1] Yönetilen API'ler (ör.
GLES10.getString()
yöntemi aracılığıyla) ve yerel API'ler aracılığıyla desteklenen OpenGL ES sürümlerini (1.1, 2.0, 3.0, 3.1, 3.2) doğru şekilde tanımlamalıdır. - [C-0-2] Destekleneceği belirlenen her OpenGL ES sürümü için ilgili tüm yönetilen API'ler ve yerel API'ler desteklenmelidir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Android SDK belgelerinde belirtildiği ve ayrıntılı olarak açıklandığı gibi hem OpenGL ES 1.1 hem de 2.0'ı desteklemelidir.
- [SR] cihazların OpenGL ES 3.1'i desteklemesi ÖNEMLE TAVSİYE EDİLİR.
- OpenGL ES 3.2'yi DESTEKLEMELİDİR.
Cihaz uygulamaları OpenGL ES sürümlerinden birini destekliyorsa:
- [C-2-1] Uyguladıkları diğer OpenGL ES uzantılarını OpenGL ES yönetilen API'leri ve yerel API'ler aracılığıyla bildirmeli ve desteklemedikleri uzantı dizelerini bildirmemelidir.
- [C-2-2]
EGL_KHR_image
,EGL_KHR_image_base
,EGL_ANDROID_image_native_buffer
,EGL_ANDROID_get_native_client_buffer
,EGL_KHR_wait_sync
,EGL_KHR_get_all_proc_addresses
,EGL_ANDROID_presentation_time
,EGL_KHR_swap_buffers_with_damage
veEGL_ANDROID_recordable
uzantılarını DESTEKLEMELİDİR. - [SR], EGL_KHR_partial_update'i desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
- Genellikle satıcıya özel olan, destekledikleri tüm doku sıkıştırma biçimlerini
getString()
yöntemiyle doğru şekilde bildirmelidir.
Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2'yi desteklediğini beyan ediyorsa:
- [C-3-1] libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev sembollerine ek olarak bu sürümler için ilgili işlev sembollerini DIŞA AKTARMALIDIR.
Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa:
- [C-4-1] OpenGL ES Android Extension Pack'in tamamını DESTEKLEMELİDİR.
Cihaz uygulamaları, OpenGL ES Android Extension Pack'i tamamen destekliyorsa:
- [C-5-1]
android.hardware.opengles.aep
özellik işaretiyle desteği TANIMLAMALIDIR.
Cihaz uygulamaları EGL_KHR_mutable_render_buffer
uzantısı için destek sunuyorsa:
- [C-6-1]
EGL_ANDROID_front_buffer_auto_refresh
uzantısını da desteklemelidir.
7.1.4.2 Vulkan
Android , yüksek performanslı 3D grafikler için düşük ek yüke sahip, platformlar arası bir API olan Vulkan'ı destekler.
Cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:
- [SR] Vulkan 1.1 desteği EKLEMESİ ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- Vulkan 1.1 desteği OLMALIDIR.
Cihaz uygulamaları Vulkan 1.0 desteği içeriyorsa:
- [C-1-1]
android.hardware.vulkan.level
veandroid.hardware.vulkan.version
özellik işaretleriyle doğru tam sayı değeri RAPORLANMALIDIR. - [C-1-2] Vulkan yerel API'si
vkEnumeratePhysicalDevices()
için en az birVkPhysicalDevice
numaralandırılmalıdır . - [C-1-3] MUST fully implement the Vulkan 1.0 APIs for each enumerated
VkPhysicalDevice
. - [C-1-4] Uygulama paketinin yerel kitaplık dizininde
libVkLayer*.so
olarak adlandırılan yerel kitaplıklarda bulunan katmanlar, Vulkan yerel API'lerivkEnumerateInstanceLayerProperties()
vevkEnumerateDeviceLayerProperties()
aracılığıyla listelenmelidir . - [C-1-5] Uygulamada
android:debuggable
özelliğitrue
olarak ayarlanmadığı sürece, uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanlar numaralandırılmamalı veya Vulkan API'yi izlemenin ya da engellemenin başka yolları sunulmamalıdır. - [C-1-6] Destekledikleri tüm uzantı dizelerini Vulkan yerel API'leri aracılığıyla bildirmeli ve buna karşılık doğru şekilde desteklemedikleri uzantı dizelerini BİLDİRMEMELİDİR.
- [C-1-7] MUST support the VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, and VK_KHR_incremental_present extensions.
Cihaz uygulamaları Vulkan 1.0 desteği içermiyorsa:
- [C-2-1] Vulkan özellik işaretlerinden herhangi birini (ör.
android.hardware.vulkan.level
,android.hardware.vulkan.version
) BEYAN ETMEMELİDİR. - [C-2-2] Vulkan yerel API'si
VkPhysicalDevice
için herhangi birvkEnumeratePhysicalDevices()
numaralandırılMAMALIDIR.
Cihaz uygulamaları Vulkan 1.1 desteği içeriyorsa:
- [C-3-1]
SYNC_FD
harici semafor ve işleyici türleri için destek sunULMALIDIR. - [SR]
VK_ANDROID_external_memory_android_hardware_buffer
uzantısını desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
7.1.4.3 RenderScript
- [C-0-1] Cihaz uygulamaları, Android SDK belgelerinde ayrıntılı olarak açıklandığı gibi Android RenderScript'i desteklemelidir.
7.1.4.4 2D Graphics Acceleration
Android, uygulamaların android:hardwareAccelerated adlı bir manifest etiketi veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini bildirmelerine olanak tanıyan bir mekanizma içerir.
Cihaz uygulamaları:
- [C-0-1] Varsayılan olarak donanım hızlandırma ETKİNLEŞTİRİLMELİ ve geliştirici android:hardwareAccelerated="false” değerini ayarlayarak veya doğrudan Android View API'leri üzerinden donanım hızlandırmayı devre dışı bırakarak talep ederse donanım hızlandırma DEVRE DIŞI BIRAKILMALIDIR.
- [C-0-2] Donanım hızlandırma ile ilgili Android SDK belgeleriyle tutarlı bir davranış sergilemelidir.
Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını doğrudan kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak entegre etmesine olanak tanıyan bir TextureView nesnesi içerir.
Cihaz uygulamaları:
- [C-0-3] TextureView API'yi desteklemeli ve yukarı akış Android uygulamasıyla tutarlı davranış sergilemelidir.
7.1.4.5 Geniş Gama Aralığına Sahip Ekranlar
Cihaz uygulamaları , Configuration.isScreenWideColorGamut()
aracılığıyla geniş gamlı ekran desteği sunduğunu iddia ediyorsa:
- [C-1-1] Renk kalibrasyonu yapılmış bir ekrana sahip OLMALIDIR.
- [C-1-2] Gamı, CIE 1931 xyY alanında sRGB renk gamını tamamen kapsayan bir ekrana SAHİP OLMALIDIR.
- [C-1-3] CIE 1931 xyY alanında gamı, DCI-P3'ün en az% 90'ı kadar bir alana sahip bir ekrana SAHİP OLMALIDIR.
- [C-1-4] OpenGL ES 3.1 veya 3.2'yi DESTEKLEMELİ ve bunu düzgün şekilde bildirmelidir.
- [C-1-5]
EGL_KHR_no_config_context
,EGL_EXT_pixel_format_float
,EGL_KHR_gl_colorspace
,EGL_EXT_gl_colorspace_scrgb
,EGL_EXT_gl_colorspace_scrgb_linear
,EGL_EXT_gl_colorspace_display_p3
veEGL_KHR_gl_colorspace_display_p3
uzantıları için destek reklamı YAPILMALIDIR. - [SR]
GL_EXT_sRGB
desteği için ŞİDDETLE TAVSİYE EDİLİR.
Aksine, cihaz uygulamaları geniş gamlı ekranları desteklemiyorsa:
- [C-2-1] Ekran renk gamı tanımlanmamış olsa da CIE 1931 xyY alanında sRGB'nin% 100'ünü veya daha fazlasını kapsamalıdır.
7.1.5. Eski Uygulama Uyumluluk Modu
Android, ekran boyutu bağımsızlığından önceki eski Android sürümleri için geliştirilmemiş eski uygulamaların yararına olmak üzere, çerçevenin "normal" ekran boyutuna eşdeğer (320 dp genişlik) bir modda çalıştığı bir "uyumluluk modu" belirtir.
7.1.6. Ekran Teknolojisi
Android platformu, uygulamaların ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. Bu belgede özellikle izin verilmediği sürece cihazlar, Android SDK tarafından tanımlanan bu API'lerin tümünü desteklemelidir.
Cihaz uygulamaları:
- [C-0-1] 16 bit renkli grafikler oluşturabilen ekranları DESTEKLEMELİDİR.
- 24 bit renkli grafikler görüntüleyebilen ekranları DESTEKLEMELİDİR.
- [C-0-2] Animasyon oluşturabilen ekranları DESTEKLEMELİDİR.
- [C-0-3] Piksel en boy oranı (PAR) 0,9 ile 1,15 arasında olan ekran teknolojisi KULLANILMALIDIR. Yani piksel en boy oranı, %10-15 toleransla kareye (1,0) yakın OLMALIDIR.
7.1.7. İkincil Ekranlar
Android, medya paylaşım özelliklerini etkinleştirmek için ikincil ekran desteği ve harici ekranlara erişmek için geliştirici API'leri içerir.
Cihaz uygulamaları, kablolu, kablosuz veya yerleşik ek ekran bağlantısı üzerinden harici ekranı destekliyorsa:
- [C-1-1] Android SDK belgelerinde açıklandığı şekilde
DisplayManager
sistem hizmetini ve API'yi uygulamalıdır.
7.2. Giriş Cihazları
Cihaz uygulamaları:
- [C-0-1] Kullanıcı arayüzü öğeleri arasında gezinmek için dokunmatik ekran veya dokunmatik olmayan gezinme gibi bir giriş mekanizması İÇERMELİDİR.
7.2.1. Klavye
Cihaz uygulamaları, üçüncü taraf giriş yöntemi düzenleyici (IME) uygulamaları için destek içeriyorsa:
- [C-1-1]
android.software.input_methods
özellik bayrağı BEYAN EDİLMELİDİR. - [C-1-2]
Input Management Framework
tam olarak uygulanmalıdır. - [C-1-3] Önceden yüklenmiş bir yazılım klavyesi OLMALIDIR.
Cihaz uygulamaları: * [C-0-1] android.content.res.Configuration.keyboard içinde belirtilen biçimlerden biriyle (QWERTY veya 12 tuşlu) eşleşmeyen bir donanım klavyesi İÇERMEMELİDİR. * Ek yazılım klavyesi uygulamaları İÇERMELİDİR. * Donanım klavyesi İÇEREBİLİR.
7.2.2. Dokunmadan gezinme
Android, dokunmatik olmayan gezinme için d-pad, trackball ve tekerlek mekanizmalarını destekler.
Cihaz uygulamaları:
- [C-0-1] android.content.res.Configuration.navigation için doğru değer RAPORLANMALIDIR.
Cihaz uygulamalarında dokunma dışı gezinme özellikleri yoksa:
- [C-1-1] Metin seçimi ve düzenlemesi için, Giriş Yönetimi Motorları ile uyumlu makul bir alternatif kullanıcı arayüzü mekanizması SAĞLANMALIDIR. Yukarı akış Android açık kaynak uygulaması, dokunma dışı gezinme girişleri olmayan cihazlarla kullanıma uygun bir seçim mekanizması içerir.
7.2.3. Gezinme Tuşları
Genellikle özel bir fiziksel düğmeyle veya dokunmatik ekranın ayrı bir bölümüyle etkileşim yoluyla sağlanan Ana Sayfa, Son Kullanılanlar ve Geri işlevleri, Android gezinme paradigması için gereklidir ve bu nedenle cihaz uygulamaları:
- [C-0-1] Televizyon cihaz uygulamaları için
<intent-filter>
,ACTION=MAIN
veCATEGORY=LAUNCHER
veyaCATEGORY=LEANBACK_LAUNCHER
ile ayarlanmış bir etkinliğe sahip yüklü uygulamaları başlatmak için kullanıcıya bir olanak SAĞLANMALIDIR. Bu kullanıcı kolaylığı için ana sayfa işlevi mekanizma OLMALIDIR. - Son Kullanılanlar ve Geri işlevleri için düğmeler SAĞLANMALIDIR.
Ana Sayfa, Son Öğeler veya Geri işlevleri sağlanıyorsa bunlar:
- [C-1-1] Herhangi biri erişilebilir olduğunda tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir OLMALIDIR.
- [C-1-2] Her bir işlevi hangi tek eylemin tetikleyeceği net bir şekilde belirtilmelidir. Düğmeye basılmış görünür bir simge, ekranın gezinme çubuğu bölümünde bir yazılım simgesi gösterme veya kutudan çıkarma kurulum deneyimi sırasında kullanıcıya adım adım rehberli bir demo akışı sunma gibi yöntemler bu tür bir göstergeye örnek olarak verilebilir.
Cihaz uygulamaları:
- Android 4.0'dan beri işlem çubuğu lehine desteği sonlandırıldığından [SR]'nin Menü işlevi için giriş mekanizması sağlamAMASI ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Menü işlevini sağlıyorsa:
- [C-2-1] İşlem taşması menüsü pop-up'ı boş olmadığında ve işlem çubuğu görünür olduğunda işlem taşması düğmesi GÖSTERİLMELİDİR.
- [C-2-2] İşlem çubuğundaki taşma düğmesi seçilerek görüntülenen işlem taşması pop-up'ının konumu DEĞİŞTİRİLMEMELİDİR ancak Menü işlevi seçilerek görüntülendiğinde işlem taşması pop-up'ı ekranda değiştirilmiş bir konumda oluşturulabilir.
Cihaz uygulamaları Menü işlevini sağlamıyorsa geriye dönük uyumluluk için: * [C-3-1] targetSdkVersion
değeri 10'dan küçük olduğunda Menü işlevini fiziksel bir düğme, yazılım tuşu veya hareketler aracılığıyla uygulamalara SUNMALIDIR. Bu menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmediği sürece erişilebilir olmalıdır.
Cihaz uygulamaları Yardımcı işlevini sağlıyorsa: * [C-4-1] Diğer gezinme tuşlarına erişilebildiği durumlarda Yardımcı işlevine tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir. * [SR] Bu etkileşim için ANA SAYFA işlevine uzun basma KULLANMANIZ KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları, gezinme tuşlarını göstermek için ekranın ayrı bir bölümünü kullanıyorsa:
- [C-5-1] Gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANMALI ve uygulamalar tarafından kullanılabilen ekran bölümünü kapatMAMALI veya başka bir şekilde engellememelidir.
- [C-5-2] Ekranın bir bölümünü, bölüm 7.1.1'de tanımlanan koşulları karşılayan uygulamaların kullanımına SUNMALIDIR.
- [C-5-3] Ekranın bu ayrı bölümünün (diğer adıyla gezinme çubuğu) SDK'da belgelendiği şekilde düzgün bir şekilde gizlenmesi için uygulamanın
View.setSystemUiVisibility()
API yöntemiyle ayarladığı işaretlere UYULMALIDIR.
7.2.4. Dokunmatik ekran girişi
Android; dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunmatik giriş cihazları gibi çeşitli işaretçi giriş sistemleri için destek içerir. Dokunmatik ekran tabanlı cihaz uygulamaları, kullanıcıya ekrandaki öğeleri doğrudan kontrol ediyormuş izlenimi verecek şekilde bir ekranla ilişkilendirilir. Kullanıcı ekrana doğrudan dokunduğu için sistem, üzerinde işlem yapılan nesneleri belirtmek için ek bir çaba gerektirmez.
Cihaz uygulamaları:
- Bir tür işaretçi giriş sistemi (fare benzeri veya dokunmatik) OLMALIDIR.
- Tamamen bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.
Cihaz uygulamaları dokunmatik ekran (tek dokunuş veya daha iyi) içeriyorsa:
- [C-1-1]
Configuration.touchscreen
API alanı içinTOUCHSCREEN_FINGER
raporlanmalıdır. - [C-1-2]
android.hardware.touchscreen
veandroid.hardware.faketouch
özellik işaretleri BİLDİRİLMELİDİR.
Cihaz uygulamaları, tek bir dokunuştan fazlasını takip edebilen bir dokunmatik ekran içeriyorsa:
- [C-2-1] Cihazdaki dokunmatik ekranın türüne karşılık gelen uygun özellik işaretlerini
android.hardware.touchscreen.multitouch
,android.hardware.touchscreen.multitouch.distinct
,android.hardware.touchscreen.multitouch.jazzhand
bildirmelidir.
Cihaz uygulamaları dokunmatik ekran içermiyorsa (yalnızca işaretçi cihaz kullanılıyorsa) ve 7.2.5 bölümündeki sahte dokunma şartlarını karşılıyorsa:
- [C-3-1]
android.hardware.touchscreen
ile başlayan hiçbir özellik işareti raporlanmamalı ve yalnızcaandroid.hardware.faketouch
raporlanmalıdır.
7.2.5. Sahte Dokunmatik Giriş
Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesini taklit eden bir kullanıcı girişi sistemi sağlar. Örneğin, ekrandaki imleci hareket ettiren bir fare veya uzaktan kumanda, dokunma etkisini taklit eder ancak kullanıcının önce işaret etmesini veya odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresini, jiroskop işaretçisi, oyun çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı sahte dokunma etkileşimlerini destekleyebilir. Android, dokunmaya dayalı girişi (temel hareket desteği dahil) yeterli düzeyde taklit edebilen ve cihazın dokunmatik ekran işlevselliğinin taklit edilmiş bir alt kümesini desteklediğini belirten, fare veya izleme paneli gibi yüksek doğruluklu dokunmatik olmayan (işaretçi tabanlı) bir giriş cihazına karşılık gelen android.hardware.faketouch özelliğini içerir.
Cihaz uygulamaları dokunmatik ekran içermiyorsa ancak kullanılabilir hale getirmek istedikleri başka bir işaretçi giriş sistemi içeriyorsa:
android.hardware.faketouch
özellik işaretinin desteklendiğini BEYAN ETMELİDİR.
Cihaz uygulamaları android.hardware.faketouch
desteğini beyan ediyorsa:
- [C-1-1] İmleç konumunun mutlak X ve Y ekran konumları RAPORLANMALI ve ekranda görsel bir imleç gösterilmelidir.
- [C-1-2] Ekranda aşağı veya yukarı hareket eden işaretçide meydana gelen durum değişikliğini belirten işlem koduyla dokunma etkinliği RAPORLANMALIDIR.
- [C-1-3] Ekranda bir nesneye dokunma ve nesneyi bırakma hareketleri desteklenmelidir. Bu sayede kullanıcılar, ekrandaki bir nesneye dokunma hareketini taklit edebilir.
- [C-1-4] Kullanıcıların ekrandaki bir nesneye çift dokunmayı taklit etmesine olanak tanıyan bir süre eşiği içinde, ekrandaki bir nesnenin aynı yerinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketlerini desteklemelidir.
- [C-1-5] Kullanıcıların dokunarak sürükleme hareketini taklit etmesine olanak tanıyan, ekrandaki rastgele bir noktada işaretçi aşağı, ekrandaki başka bir rastgele noktaya işaretçi hareket ettirme ve ardından işaretçi yukarı hareketlerini desteklemelidir.
- [C-1-6] İşaretçi aşağı hareketini desteklemeli, ardından kullanıcıların nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ekranda işaretçi yukarı hareketini yapmasına izin vermelidir. Bu sayede kullanıcılar ekrandaki bir nesneyi fırlatabilir.
- [C-1-7]
Configuration.touchscreen
API alanı içinTOUCHSCREEN_NOTOUCH
raporlanmalıdır.
Cihaz uygulamaları android.hardware.faketouch.multitouch.distinct
desteğini beyan ediyorsa:
- [C-2-1]
android.hardware.faketouch
desteği BEYAN EDİLMELİDİR. - [C-2-2] İki veya daha fazla bağımsız işaretçi girişinin ayrı ayrı izlenmesi DESTEKLENMELİDİR.
Cihaz uygulamaları android.hardware.faketouch.multitouch.jazzhand
desteğini beyan ediyorsa:
- [C-3-1]
android.hardware.faketouch
desteği BEYAN EDİLMELİDİR. - [C-3-2] 5 (parmaklı bir eli takip etme) veya daha fazla işaretçi girişinin tamamen bağımsız olarak ayrı ayrı izlenmesini DESTEKLEMELİDİR.
7.2.6. Oyun Kumandası Desteği
7.2.6.1. Düğme Eşlemeleri
Cihaz uygulamaları android.hardware.gamepad
özellik işaretini beyan ediyorsa:
- [C-1-1] Aşağıdaki tablolarda listelenen tüm etkinliklerin girilmesini sağlayacak bir kontrol cihazı yerleştirilmeli veya kutuda ayrı bir kontrol cihazıyla birlikte gönderilmelidir.
- [C-1-2] Aşağıdaki tablolarda listelendiği gibi HID etkinliklerini ilişkili Android
view.InputEvent
sabitleriyle eşleyebilmelidir. Yukarı akış Android uygulaması, bu şartı karşılayan oyun kumandaları 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 sol1 D-pad sağ1 |
0x01 0x00393 | AXIS_HAT_X4 |
Sol omuz düğmesi1 | 0x09 0x0007 | KEYCODE_BUTTON_L1 (102) |
Sağ üst kenar düğmesi1 | 0x09 0x0008 | KEYCODE_BUTTON_R1 (103) |
Sol çubuğu tıklama1 | 0x09 0x000E | KEYCODE_BUTTON_THUMBL (106) |
Sağ çubuğu tıklama1 | 0x09 0x000F | KEYCODE_BUTTON_THUMBR (107) |
Ev1 | 0x0c 0x0223 | KEYCODE_HOME (3) |
Geri1 | 0x0c 0x0224 | KEYCODE_BACK (4) |
1 KeyEvent
2 Yukarıdaki HID kullanımları bir oyun kumandası CA'sında (0x01 0x0005) beyan edilmelidir.
3 Bu kullanımın mantıksal minimum değeri 0, mantıksal maksimum değeri 7, fiziksel minimum değeri 0, fiziksel maksimum değeri 315, birimi derece ve rapor boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde dönüş olarak tanımlanır. Örneğin, 0 mantıksal değeri dönüş olmadığını ve yukarı düğmesine basıldığını, 1 mantıksal değeri ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını gösterir.
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 |
7.2.7. Uzaktan Kumanda
Cihaza özgü gereksinimler için Bölüm 2.3.1'e bakın.
7.3. Sensörler
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa cihaz uygulaması, bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulamalıdır.
Cihaz uygulamaları:
- [C-0-1]
android.content.pm.PackageManager
sınıfına göre sensörlerin varlığını veya yokluğunu doğru bir şekilde bildirmelidir. - [C-0-2]
SensorManager.getSensorList()
ve benzeri yöntemlerle desteklenen sensörlerin doğru bir listesini döndürmelidir. - [C-0-3] Diğer tüm sensör API'leri için makul şekilde davranmalıdır (ör. uygulamalar dinleyici kaydetmeye çalıştığında uygun şekilde
true
veyafalse
döndürerek, ilgili sensörler mevcut olmadığında sensör dinleyicilerini çağırmayarak vb.).
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa:
- [C-1-1] Android SDK belgelerinde tanımlandığı şekilde, her sensör türü için ilgili Uluslararası Birimler Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini bildirmelidir.
- [C-1-2] Uygulama işlemcisi etkin olduğunda, minimum 5 ms + 2 * sample_time gecikme süresiyle aktarılan bir sensör için sensör verilerini maksimum 100 milisaniye + 2 * sample_time gecikme süresiyle BİLDİRMELİDİR. Bu gecikmeye filtreleme gecikmeleri dahil değildir.
- [C-1-3] Etkinleştirilen sensörün ilk sensör örneği, 400 milisaniye + 2 * sample_time içinde RAPORLANMALIDIR. Bu örnekte doğruluk değerinin 0 olması kabul edilebilir.
-
[SR] Android SDK belgelerinde tanımlandığı şekilde, etkinliğin gerçekleştiği ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edildiği zamanı temsil eden nanosaniye cinsinden etkinlik zamanını bildirmelidir. Mevcut ve yeni Android cihazların, gelecekte bu bileşenin ZORUNLU olabileceği platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR. Senkronizasyon hatası 100 milisaniyenin altında OLMALIDIR.
-
[C-1-4] Android SDK belgelerinde sürekli sensör olduğu belirtilen tüm API'ler için cihaz uygulamaları, aralıklı olarak veri örnekleri sağlamaya DEVAM ETMELİDİR. Bu örneklerde, jitter'ın %3'ün altında olması GEREKİR. Jitter, bildirilen zaman damgası değerlerinin ardışık etkinlikler arasındaki farkının standart sapması olarak tanımlanır.
-
[C-1-5] SENSÖR ETKİNLİK AKIŞININ, CİHAZ CPU'SUNUN ASKIYA ALMA DURUMUNA GİRMESİNİ VEYA ASKIYA ALMA DURUMUNDAN UYANMASINI ENGELLEMEMESİ GEREKİR.
- Birden fazla sensör etkinleştirildiğinde güç tüketimi, tek tek sensörlerin bildirilen güç tüketiminin toplamını AŞMAMALIDIR.
Yukarıdaki liste kapsamlı değildir. Android SDK'nın belgelenmiş davranışı ve sensörler ile ilgili Android Açık Kaynak Belgeleri yetkili olarak kabul edilir.
Bazı sensör türleri bileşiktir. Bu türler, bir veya daha fazla sensör tarafından sağlanan verilerden elde edilebilir. (Örneğin, yön sensörü ve doğrusal ivme sensörü.)
Cihaz uygulamaları:
- Sensör türleri bölümünde açıklandığı gibi ön koşul olan fiziksel sensörleri içerdiğinde bu sensör türlerini uygulamalıdır.
Cihaz uygulamaları birleşik sensör içeriyorsa:
- [C-2-1] Sensörü, bileşik sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulamalıdır.
7.3.1. İvme ölçer
- Cihaz uygulamaları 3 eksenli ivme ölçer İÇERMELİDİR.
Cihaz uygulamalarında 3 eksenli ivme ölçer varsa:
- [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
- [C-1-2]
TYPE_ACCELEROMETER
sensörünü uygulamalı ve raporlamalıdır. - [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.
- [C-1-4] Herhangi bir eksende serbest düşüşten yerçekiminin dört katına(4g) veya daha fazlasına kadar ölçüm yapabilmelidir.
- [C-1-5] En az 12 bit çözünürlüğe SAHİP OLMALIDIR.
- [C-1-6] Standart sapması en fazla 0,05 m/sn^ olmalıdır.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen bazında hesaplanmalıdır.
- [SR]
TYPE_SIGNIFICANT_MOTION
bileşik sensörünün uygulanması KESİNLİKLE TAVSİYE EDİLİR. - [SR], online ivmeölçer kalibrasyonu varsa
TYPE_ACCELEROMETER_UNCALIBRATED
sensörünü uygulaması KESİNLİKLE ÖNERİLİR. - Android SDK dokümanında açıklandığı şekilde
TYPE_SIGNIFICANT_MOTION
,TYPE_TILT_DETECTOR
,TYPE_STEP_DETECTOR
,TYPE_STEP_COUNTER
bileşik sensörleri uygulamalıdır. - En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.
- En az 16 bit çözünürlüğe SAHİP OLMALIDIR.
- Özellikler yaşam döngüsü boyunca değişirse kullanılmaktayken kalibre edilmeli ve telafi edilmeli, telafi parametreleri cihaz yeniden başlatıldığında korunmalıdır.
- Sıcaklık dengelenmelidir.
- Ayrıca
TYPE_ACCELEROMETER_UNCALIBRATED
sensörü de uygulamalıdır.
Cihaz uygulamalarında 3 eksenli bir ivmeölçer ve TYPE_SIGNIFICANT_MOTION
, TYPE_TILT_DETECTOR
, TYPE_STEP_DETECTOR
, TYPE_STEP_COUNTER
bileşik sensörlerinden herhangi biri uygulanıyorsa:
- [C-2-1] Güç tüketimlerinin toplamı HER ZAMAN 4 mW'tan az olmalıdır.
- Cihaz dinamik veya statik durumdayken her biri 2 mW ve 0,5 mW'ın altında OLMALIDIR.
Cihaz uygulamaları 3 eksenli ivme ölçer ve jiroskop sensörü içeriyorsa:
- [C-3-1]
TYPE_GRAVITY
veTYPE_LINEAR_ACCELERATION
birleşik sensörlerini uygulamalıdır. TYPE_GAME_ROTATION_VECTOR
bileşik sensörünü uygulamalıdır.- [SR] Mevcut ve yeni Android cihazlarda
TYPE_GAME_ROTATION_VECTOR
sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları 3 eksenli ivme ölçer, jiroskop sensörü ve manyetometre sensörü içeriyorsa:
- [C-4-1]
TYPE_ROTATION_VECTOR
bileşik sensör uygulaması ZORUNLUDUR.
7.3.2. Manyetometre
- Cihaz uygulamaları 3 eksenli bir manyetometre (pusula) İÇERMELİDİR.
Cihaz uygulamalarında 3 eksenli manyetometre varsa:
- [C-1-1]
TYPE_MAGNETIC_FIELD
sensörü UYGULANMALIDIR. - [C-1-2] Etkinlikleri en az 10 Hz sıklıkta raporlayabilmeli ve en az 50 Hz sıklıkta raporlamalıdır.
- [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.
- [C-1-4] Doygunluğa ulaşmadan önce her eksende -900 µT ile +900 µT arasında ölçüm yapabilmelidir.
- [C-1-5] Manyetometre, dinamik (akım kaynaklı) ve statik (mıknatıs kaynaklı) manyetik alanlardan uzağa yerleştirilerek 700 µT'den düşük bir sert demir dengeleme değerine SAHİP OLMALI ve 200 µT'nin altında bir değere SAHİP OLMALIDIR.
- [C-1-6] 0,6 µT'ye eşit veya daha yoğun bir çözünürlüğe SAHİP OLMALIDIR.
- [C-1-7] Sert demir sapmasının online kalibrasyonunu ve telafisini DESTEKLEMELİ ve telafi parametrelerini cihaz yeniden başlatmaları arasında KORUMALIDIR.
- [C-1-8] Yumuşak demir telafisi uygulanmalıdır. Kalibrasyon, cihaz kullanılırken veya üretimi sırasında yapılabilir.
- [C-1-9] En hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına hesaplanan standart sapma en fazla 1, 5 µT OLMALIDIR; standart sapma en fazla 0, 5 µT OLMALIDIR.
TYPE_MAGNETIC_FIELD_UNCALIBRATED
sensörü UYGULAMALIDIR.- [SR] Mevcut ve yeni Android cihazlarda
TYPE_MAGNETIC_FIELD_UNCALIBRATED
sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları 3 eksenli manyetometre, ivme ölçer sensörü ve jiroskop sensörü içeriyorsa:
- [C-2-1]
TYPE_ROTATION_VECTOR
bileşik sensörü uygulamalıdır.
Cihaz uygulamalarında 3 eksenli manyetometre ve ivme ölçer varsa:
TYPE_GEOMAGNETIC_ROTATION_VECTOR
sensörünü UYGULAYABİLİR.
Cihaz uygulamalarında 3 eksenli manyetometre, ivme ölçer ve TYPE_GEOMAGNETIC_ROTATION_VECTOR
sensörü varsa:
- [C-3-1] 10 mW'tan daha az güç tüketmelidir.
- Sensör, 10 Hz'de toplu mod için kaydedildiğinde 3 mW'tan daha az güç tüketmelidir.
7.3.3. GPS
Cihaz uygulamaları:
- GPS/GNSS alıcısı İÇERMELİDİR.
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa:
- [C-1-1]
LocationManager#requestLocationUpdate
üzerinden istendiğinde konum çıkışlarını en az 1 Hz hızında destekLEMELİDİR. - [C-1-2] 0,5 Mb/sn veya daha hızlı bir veri hızıyla internet bağlantısı kurulduğunda, açık hava koşullarında (güçlü sinyaller, ihmal edilebilir çok yollu yayılım, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı süre) konum belirleyebilmelidir. Bu koşul genellikle GPS/GNSS kilitleme süresini en aza indirmek için bir tür Destekli veya Tahmini GPS/GNSS tekniği kullanılarak karşılanır (Yardım verileri; Referans Zaman, Referans Konum ve Uydu Efemerisi/Saati içerir).
- [C-1-6] Bu tür bir konum hesaplaması yapıldıktan sonra, cihaz uygulamaları, konum istekleri yeniden başlatıldığında, ilk konum hesaplamasından sonraki bir saat içinde, sonraki istek veri bağlantısı olmadan ve/veya güç döngüsünden sonra bile açık havada konumunu 5 saniye içinde belirlemelidir.
-
Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 1 metrekareden daha az ivmeyle hareket ederken:
- [C-1-3] Konumu en az% 95 oranında 20 metre, hızı ise 0, 5 metre/saniye içinde belirleyebilmelidir.
- [C-1-4] Bir takımyıldızdan en az 8 uyduyu aynı anda
GnssStatus.Callback
üzerinden izlemeli ve raporlamalıdır. - Birden fazla takımyıldızdan (ör. GPS + Glonass, Beidou, Galileo'dan en az biri) en az 24 uyduyu aynı anda takip edebilmelidir.
- [C-1-5] "getGnssYearOfHardware" test API'si aracılığıyla GNSS teknolojisi neslini bildirmelidir.
- [SR] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışları sağlamaya devam edin.
- [SR] SBAS hariç olmak üzere, izlenen tüm takımyıldızlardan gelen GNSS ölçümlerini (GnssStatus mesajlarında bildirildiği gibi) raporlayın.
- [SR] AGC ve GNSS ölçüm sıklığını bildirin.
- [SR] Tüm doğruluk tahminlerini (Yön, Hız ve Dikey dahil) her GPS/GNSS konumunun bir parçası olarak bildirin.
- [SR], Test API aracılığıyla "2016" veya "2017" yılını bildiren cihazlar için ek zorunlu koşullardan mümkün olduğunca fazlasını karşılaması ŞİDDETLE TAVSİYE EDİLİR
LocationManager.getGnssYearOfHardware()
.
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa ve LocationManager.getGnssYearOfHardware()
Test API'si "2016" veya daha yeni bir yılı bildiriyorsa:
- [C-2-1] GPS/GNSS'den hesaplanan bir konum henüz raporlanmamış olsa bile, GNSS ölçümleri bulunur bulunmaz raporlanmalıdır.
- [C-2-2] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekarelik ivmeden daha az bir hızla hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıkları ve sahte aralık hızları, zamanın en az% 95'inde BİLDİRİLMELİDİR.
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa ve LocationManager.getGnssYearOfHardware()
Test API'si "2017" veya daha yeni bir yılı bildiriyorsa:
- [C-3-1] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışları sağlamaya DEVAM ETMELİDİR.
- [C-3-2] SBAS hariç olmak üzere, izlenen tüm takımyıldızlardan (GnssStatus mesajlarında bildirildiği gibi) GNSS ölçümleri RAPORLANMALIDIR.
- [C-3-3] MUST report AGC, and Frequency of GNSS measurement.
- [C-3-4] Tüm doğruluk tahminleri (Yön, Hız ve Dikey dahil) her GPS/GNSS konumunun bir parçası olarak RAPORLANMALIDIR.
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa ve LocationManager.getGnssYearOfHardware()
Test API'si "2018" veya daha yeni bir yılı bildiriyorsa:
- [C-4-1] Mobil İstasyon Tabanlı (MS-Based) Ağ Tarafından Başlatılan acil durum oturumu görüşmesi sırasında uygulamalara normal GPS/GNSS çıkışları sağlamaya DEVAM ETMELİDİR.
- [C-4-2] Konumlar ve ölçümler, GNSS Konum Sağlayıcı API'lerine bildirilmelidir.
7.3.4. Jiroskop
Cihaz uygulamaları:
- Jiroskop (açısal değişim sensörü) İÇERMELİDİR.
- 3 eksenli ivme ölçer de dahil edilmediği sürece jiroskop sensörü İÇERMEMELİDİR.
Cihaz uygulamalarında jiroskop varsa:
- [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
- [C-1-2]
TYPE_GYROSCOPE
sensörü UYGULAMALI veTYPE_GYROSCOPE_UNCALIBRATED
sensörü de UYGULAMALIDIR. - [C-1-3] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
- [C-1-4] Çözünürlük 12 bit veya daha yüksek OLMALIDIR ve 16 bit veya daha yüksek OLMASI GEREKİR.
- [C-1-5] Sıcaklık dengelenmelidir.
- [C-1-6] Kullanım sırasında KALİBRE EDİLMELİ ve telafi edilmeli, cihaz yeniden başlatıldığında telafi parametreleri korunmalıdır.
- [C-1-7] Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) daha büyük bir varyansa SAHİP OLMAMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle sınırlanması ZORUNLUDUR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
- [SR] Mevcut ve yeni Android cihazlarda
SENSOR_TYPE_GYROSCOPE_UNCALIBRATED
sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR. - [SR] Cihaz oda sıcaklığında sabitken kalibrasyon hatasının 0,01 rad/sn'den az olması ŞİDDETLE TAVSİYE EDİLİR.
- En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.
Cihaz uygulamaları jiroskop, ivme ölçer sensörü ve manyetometre sensörü içeriyorsa:
- [C-2-1]
TYPE_ROTATION_VECTOR
bileşik sensörü uygulamalıdır.
Cihaz uygulamalarında jiroskop ve ivme ölçer sensörü varsa:
- [C-3-1]
TYPE_GRAVITY
veTYPE_LINEAR_ACCELERATION
birleşik sensörlerini uygulamalıdır. - [SR] Mevcut ve yeni Android cihazlarda
TYPE_GAME_ROTATION_VECTOR
sensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR. TYPE_GAME_ROTATION_VECTOR
bileşik sensörünü uygulamalıdır.
7.3.5. Barometre
- Cihaz uygulamaları barometre (ortam hava basıncı sensörü) İÇERMELİDİR.
Cihaz uygulamaları barometre içeriyorsa:
- [C-1-1]
TYPE_PRESSURE
sensörü uygulanmalı ve raporlanmalıdır. - [C-1-2] Etkinlikler 5 Hz veya daha yüksek bir sıklıkta yayınlanmalıdır.
- [C-1-3] Sıcaklık dengelenmelidir.
- [SR] 300 hPa ile 1.100 hPa aralığındaki basınç ölçümlerini raporlayabilmek için KESİNLİKLE ÖNERİLİR.
- 1 hPa mutlak doğruluğa SAHİP OLMALIDIR.
- 20 hPa aralığında 0,12 hPa göreceli doğruluğa sahip OLMALIDIR (deniz seviyesinde ~200 m değişiklikte ~1 m doğruluğa eşdeğer).
7.3.6. Termometre
Cihaz uygulamaları: * Ortam termometresi (sıcaklık sensörü) İÇEREBİLİR. * CPU sıcaklık sensörü İÇEREBİLİR ancak İÇERMEMELİDİR.
Cihaz uygulamalarında ortam termometresi (sıcaklık sensörü) varsa:
- [C-1-1]
SENSOR_TYPE_AMBIENT_TEMPERATURE
olarak tanımlanmalı ve kullanıcının cihazla etkileşimde bulunduğu ortamın (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 sıcaklığı ÖLÇÜLMELİDİR.
- [C-1-4] Başka bir sıcaklık ölçülmemelidir.
SENSOR_TYPE_TEMPERATURE
sensör türünün Android 4.0'da kullanımdan kaldırıldığını unutmayın.
7.3.7. Fotometre
- Cihaz uygulamaları, fotometre (ortam ışığı sensörü) içerebilir.
7.3.8. Yakınlık Sensörü
- Cihaz uygulamaları yakınlık sensörü içerebilir.
Cihaz uygulamalarında yakınlık sensörü varsa:
- [C-1-1] Bir nesnenin yakınlığını ekranla aynı yönde ÖLÇMELİDİR. Yani, bu sensör türünün asıl amacı kullanıcının kullandığı telefonu algılamak olduğundan yakınlık sensörü, ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Cihaz uygulamalarında başka bir yöne bakan yakınlık sensörü varsa bu sensöre bu API aracılığıyla erişilememelidir.
- [C-1-2] Doğruluk değeri en az 1 bit olmalıdır.
7.3.9. Yüksek Doğruluk Oranı Sunan Sensörler
Cihaz uygulamaları bu bölümde tanımlandığı şekilde daha yüksek kaliteli bir sensör grubu içeriyorsa ve bunları üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
android.hardware.sensor.hifi_sensors
özellik bayrağı aracılığıyla özelliği TANIMLAMALIDIR.
Cihaz uygulamaları android.hardware.sensor.hifi_sensors
beyan ederse:
-
[C-2-1] Aşağıdaki özelliklere sahip bir
TYPE_ACCELEROMETER
sensörü OLMALIDIR:- En az -8g ile +8g arasında bir ölçüm aralığı OLMALIDIR, en az -16g ile +16g arasında bir ölçüm aralığı OLMALIDIR.
- En az 2.048 LSB/g ölçüm çözünürlüğüne SAHİP OLMALIDIR.
- En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı
RATE_VERY_FAST
destekLEMELİDİR. - 400 μg/√Hz'den fazla ölçüm gürültüsüne sahip OLMAMALIDIR.
- Bu sensörün, en az 3.000 sensör etkinliğini arabelleğe alma özelliğine sahip, uyandırma içermeyen bir biçimini uygulamalıdır.
- 3 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- Oda sıcaklığında test edildiğinde 30 μg √Hz'den daha az bir ivme rastgele yürüyüşüne SAHİP OLMALIDIR.
- Sıcaklığa karşı ≤ +/- 1 mg/°C'lik bir sapma değişikliği OLMALIDIR.
- En iyi uyum doğrusallık dışı değeri ≤ %0,5 ve sıcaklığa karşı hassasiyet değişimi ≤ %0,03/C° olmalıdır.
- Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyeti < %2,5 ve eksenler arası hassasiyet varyasyonu < %0,2 OLMALIDIR.
-
[C-2-2]
TYPE_ACCELEROMETER_UNCALIBRATED
,TYPE_ACCELEROMETER
ile aynı kalite koşullarına sahip OLMALIDIR. -
[C-2-3] Aşağıdaki özelliklere sahip bir
TYPE_GYROSCOPE
sensörü OLMALIDIR:- En az -1000 ile +1000 dps arasında bir ölçüm aralığı OLMALIDIR.
- En az 16 LSB/dps ölçüm çözünürlüğüne SAHİP OLMALIDIR.
- En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı
RATE_VERY_FAST
destekLEMELİDİR. - Ölçüm gürültüsü 0,014°/s/√Hz'den fazla OLMAMALIDIR.
- [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- Oda sıcaklığında test edildiğinde 0,001 °/s √Hz'den daha düşük bir hız rastgele yürüyüşüne SAHİP OLMALIDIR.
- Sıcaklığa karşı ≤ +/- 0,05 °/ s / °C değerinde bir sapma değişikliği OLMALIDIR.
- Sıcaklığa karşı ≤ %0,02 / °C hassasiyet değişikliği OLMALIDIR.
- En iyi uyum doğrusu doğrusal olmama değeri ≤ %0,2 OLMALIDIR.
- ≤ 0,007 °/s/√Hz gürültü yoğunluğuna SAHİP OLMALIDIR.
- Cihaz sabitken 10-40 °C sıcaklık aralığında kalibrasyon hatası 0,002 rad/sn'den az OLMALIDIR.
- 0,1°/sn/g'den daha az g hassasiyetine SAHİP OLMALIDIR.
- Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyeti < %4,0 ve eksenler arası hassasiyet değişimi < %0,3 OLMALIDIR.
-
[C-2-4]
TYPE_GYROSCOPE_UNCALIBRATED
,TYPE_GYROSCOPE
ile aynı kalite koşullarına sahip OLMALIDIR. -
[C-2-5] Aşağıdaki özelliklere sahip bir
TYPE_GEOMAGNETIC_FIELD
sensörü OLMALIDIR:- En az -900 ile +900 μT arasında bir ölçüm aralığı OLMALIDIR.
- En az 5 LSB/uT ölçüm çözünürlüğüne sahip OLMALIDIR.
- En az 5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 50 Hz veya daha yüksek OLMALIDIR.
- Ölçüm gürültüsü 0,5 uT'nin üzerinde OLMAMALIDIR.
-
[C-2-6]
TYPE_MAGNETIC_FIELD_UNCALIBRATED
,TYPE_GEOMAGNETIC_FIELD
ile aynı kalite koşullarına sahip OLMALI ve ayrıca:- En az 600 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırmayan bir biçimini uygulamalıdır.
- [C-SR] Rapor hızı 50 Hz veya daha yüksek olduğunda 1 Hz'den en az 10 Hz'ye kadar beyaz gürültü spektrumu olması ŞİDDETLE TAVSİYE EDİLİR.
-
[C-2-7] Aşağıdaki özelliklere sahip bir
TYPE_PRESSURE
sensörü OLMALIDIR:- En az 300 ile 1.100 hPa arasında bir ölçüm aralığı OLMALIDIR.
- En az 80 LSB/hPa ölçüm çözünürlüğüne SAHİP OLMALIDIR.
- En az 1 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 10 Hz veya daha yüksek OLMALIDIR.
- 2 Pa/√Hz'yi aşmayan bir ölçüm gürültüsüne SAHİP OLMALIDIR.
- En az 300 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırma içermeyen bir biçimini uygulamalıdır.
- 2 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-2-8] Aşağıdaki özelliklere sahip bir
TYPE_GAME_ROTATION_VECTOR
sensörü OLMALIDIR:- En az 300 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırma içermeyen bir biçimini uygulamalıdır.
- 4 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-2-9] Aşağıdaki özelliklere sahip bir
TYPE_SIGNIFICANT_MOTION
sensörü OLMALIDIR:- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- [C-2-10] Aşağıdaki özelliklere sahip bir
TYPE_STEP_DETECTOR
sensörü OLMALIDIR:- En az 100 sensör etkinliğinin arabelleğe alınabileceği, bu sensörün uyandırma içermeyen bir biçimi UYGULANMALIDIR.
- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- 4 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-2-11] Aşağıdaki özelliklere sahip bir
TYPE_STEP_COUNTER
sensörü OLMALIDIR:- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- [C-2-12] Aşağıdaki özelliklere sahip bir
TILT_DETECTOR
sensörü OLMALIDIR:- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- [C-2-13] İvmeölçer, jiroskop ve manyetometre tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 2,5 milisaniye içinde OLMALIDIR. İvmeölçer ve jiroskop tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 0,25 milisaniye içinde OLMALIDIR.
- [C-2-14] Jiroskop sensörü etkinliklerinin zaman damgaları, kamera alt sistemiyle aynı zaman tabanında ve 1 milisaniye hata payı içinde OLMALIDIR.
- [C-2-15] Veriler yukarıdaki fiziksel sensörlerden herhangi birinde uygulamaya sunulduktan sonraki 5 milisaniye içinde uygulamalara örnekler sunULMALIDIR.
- [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz statik durumdayken güç tüketimi 0,5 mW'tan, hareket hâlindeyken ise 2,0 mW'tan yüksek OLMAMALIDIR:
-
SENSOR_TYPE_SIGNIFICANT_MOTION
-
SENSOR_TYPE_STEP_DETECTOR
-
SENSOR_TYPE_STEP_COUNTER
-
SENSOR_TILT_DETECTORS
-
- [C-2-17]
TYPE_PROXIMITY
sensörü OLABİLİR ancak varsa minimum 100 sensör etkinliği arabellek kapasitesine SAHİP OLMALIDIR.
Bu bölümdeki tüm güç tüketimi şartlarının, uygulama işlemcisinin güç tüketimini içermediğini unutmayın. Sensör, destekleyici devreler, özel sensör işleme sistemi vb. gibi tüm sensör zincirinin çektiği gücü içerir.
Cihaz uygulamaları doğrudan sensör desteği içeriyorsa:
- [C-3-1]
isDirectChannelTypeSupported
vegetHighestDirectReportRateLevel
API'si aracılığıyla doğrudan kanal türleri ve doğrudan raporlama hızı düzeyinin desteğini DOĞRU şekilde bildirmelidir. - [C-3-2] Sensör doğrudan kanalını desteklediğini belirten tüm sensörler için iki sensör doğrudan kanal türünden en az birini DESTEKLEMELİDİR.
- Aşağıdaki türlerdeki birincil sensör (uyandırma dışı varyant) için sensör doğrudan kanalı üzerinden etkinlik raporlamasını DESTEKLEMELİDİR:
-
TYPE_ACCELEROMETER
-
TYPE_ACCELEROMETER_UNCALIBRATED
-
TYPE_GYROSCOPE
-
TYPE_GYROSCOPE_UNCALIBRATED
-
TYPE_MAGNETIC_FIELD
-
TYPE_MAGNETIC_FIELD_UNCALIBRATED
-
7.3.10. Biyometrik Sensörler
7.3.10.1. Parmak izi sensörleri
Cihaz uygulamaları güvenli bir kilit ekranı içeriyorsa:
- Parmak izi sensörü İÇERMELİDİR.
Cihaz uygulamaları parmak izi sensörü içeriyorsa ve sensörü üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
android.hardware.fingerprint
özelliği için destek beyan EDİLMELİDİR. - [C-1-2] Android SDK belgelerinde açıklandığı gibi ilgili API TAMAMEN uygulanmalıdır.
- [C-1-3] YANLIŞ KABUL ORANI %0,002'den yüksek OLMAMALIDIR.
- [SR] Sahtecilik ve kimliğe bürünme kabul oranının %7'den yüksek olmaması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-4] Sahtecilik ve kimliğe bürünme kabul oranları %7'den yüksekse bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceği ve etkinleştirmenin riskleri açıkça belirtilmelidir.
- [C-1-5] Parmak izi doğrulama için beş başarısız denemeden sonra denemeler en az 30 saniye boyunca hız sınırına tabi tutulmalıdır.
- [C-1-6] Donanım destekli bir anahtar deposu uygulamasına sahip OLMALI ve parmak izi eşleştirme işlemini güvenilir yürütme ortamında (TEE) veya TEE'ye güvenli bir kanal içeren bir çip üzerinde gerçekleştirmelidir.
- [C-1-7] TEE dışında elde edilemeyecek, okunamayacak veya değiştirilemeyecek şekilde tüm tanımlanabilir parmak izi verileri şifrelenmeli ve kriptografik olarak doğrulanmalıdır ya da Android Open Source Project sitesindeki uygulama yönergelerinde belgelendiği gibi TEE'ye güvenli bir kanal içeren bir çip kullanılmalıdır.
- [C-1-8] Kullanıcının mevcut bir cihaz kimlik bilgisini (PIN/desen/şifre) onaylamasını veya TEE ile güvenli hale getirilmiş yeni bir cihaz kimlik bilgisi eklemesini sağlayarak önce güven zinciri oluşturmadan parmak izi eklenmesini ENGELLEMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
- [C-1-9] Üçüncü taraf uygulamaların, parmak izleri arasında ayrım yapmasına İZİN VERİLMEMELİDİR.
- [C-1-10] DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT işaretine UYULMALIDIR.
- [C-1-11] Android 6.0'dan önceki bir sürümden yükseltildiğinde, yukarıdaki koşulları karşılamak için parmak izi verileri güvenli bir şekilde taşınmalı veya kaldırılmalıdır.
- [C-1-12] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama yoluyla da dahil olmak üzere) kullanıcının tanımlanabilir tüm parmak izi verileri tamamen kaldırILMALIDIR.
- [C-1-13] Tanımlanabilir parmak izi verilerine veya bunlardan türetilen verilere (ör. yerleştirmeler) Uygulama İşlemcisi'nin şifrelenmemiş şekilde erişmesine İZİN VERİLMEMELİDİR.
- [SR] Cihazda ölçüldüğü üzere %10'dan düşük bir yanlış ret oranına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Kayıtlı bir parmak için, parmak izi sensörüne dokunulduğu andan ekranın kilidi açıldığı ana kadar ölçülen gecikmenin 1 saniyeden kısa olması ŞİDDETLE TAVSİYE EDİLİR.
- Android Açık Kaynak Projesi'nde sağlanan Android parmak izi simgesi KULLANILMALIDIR.
7.3.10.2. Diğer Biyometrik Sensörler
Cihaz uygulamaları, parmak izi tabanlı olmayan bir veya daha fazla biyometrik sensör içeriyorsa ve bunları üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1] YANLIŞ KABUL ORANI %0,002'DEN YÜKSEK OLMAMALIDIR.
- [C-SR] Sahtecilik ve kimliğe bürünme kabul oranının %7'den yüksek olmaması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-2] Sahtecilik ve kimliğe bürünme kabul oranları %7'den yüksekse bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceği açıklanmalı ve etkinleştirmenin riskleri net bir şekilde belirtilmelidir.
- [C-1-3] Biyometrik doğrulama için beş başarısız denemeden sonra deneme sıklığına en az 30 saniye sınırlama GETİRİLMELİDİR. Burada başarısız deneme, kayıtlı bir biyometriyle eşleşmeyen, yeterli yakalama kalitesine (ACQUIRED_GOOD) sahip bir denemedir.
- [C-1-4] Donanım destekli bir anahtar deposu uygulamasına sahip OLMALI ve biyometrik eşleşmeyi TEE'de veya TEE'ye güvenli bir kanal içeren bir çip üzerinde gerçekleştirmelidir.
- [C-1-5] TEE dışında elde edilemeyecek, okunamayacak veya değiştirilemeyecek şekilde tüm tanımlanabilir veriler şifrelenmeli ve kriptografik olarak doğrulanmalıdır ya da Android Open Source Project sitesindeki uygulama yönergelerinde belirtildiği gibi TEE'ye güvenli bir kanal içeren bir çip kullanılmalıdır.
- [C-1-6] Kullanıcının mevcut bir cihaz kimliğini (PIN/desen/şifre) onaylamasını veya TEE ile güvenli hale getirilmiş yeni bir cihaz kimliği eklemesini sağlayarak önce güven zinciri oluşturmadan yeni biyometrik verilerin eklenmesini ENGELLEMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
- [C-1-7] Üçüncü taraf uygulamalarının biyometrik kayıtlar arasında ayrım yapmasına İZİN VERİLMEMELİDİR.
- [C-1-8] İlgili biyometri için bireysel işareti (ör.
DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT
,DevicePolicymanager.KEYGUARD_DISABLE_FACE
veyaDevicePolicymanager.KEYGUARD_DISABLE_IRIS
) ONURLANDIRMALIDIR. - [C-1-9] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama dahil) kullanıcının tanımlanabilir tüm biyometrik verileri tamamen KALDIRILMALIDIR.
- [C-1-10] TEE bağlamı dışında, tanımlanabilir biyometrik verilere veya bunlardan türetilen verilere (ör. yerleştirmeler) Uygulama İşlemcisi'ne şifrelenmemiş erişime İZİN VERİLMEMELİDİR.
- [C-SR] Cihazda ölçüldüğü üzere %10'dan düşük bir yanlış ret oranına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Kayıtlı her biyometrik için, biyometriğin algılanmasından ekranın kilidinin açılmasına kadar geçen sürenin 1 saniyeden kısa olması ŞİDDETLE TAVSİYE EDİLİR.
7.3.11. Yalnızca Android Automotive'e özel sensörler
Otomobile özgü sensörler android.car.CarSensorManager API
adresinde tanımlanmıştır.
7.3.11.1. Current Gear
Cihaza özgü gereksinimler için Bölüm 2.5.1'e bakın.
7.3.11.2. Gündüz Gece Modu
Cihaza özgü gereksinimler için Bölüm 2.5.1'e bakın.
7.3.11.3. Sürüş Durumu
Bu şartın desteği sonlandırılmıştır.
7.3.11.4. Tekerlek Hızı
Cihaza özgü gereksinimler için Bölüm 2.5.1'e bakın.
7.3.11.5. El Freni
Cihaza özgü gereksinimler için Bölüm 2.5.1'e bakın.
7.3.12. Poz Sensörü
Cihaz uygulamaları:
- 6 serbestlik derecesiyle poz sensörünü DESTEKLEYEBİLİR.
Cihaz uygulamaları 6 serbestlik dereceli duruş sensörünü destekliyorsa:
- [C-1-1]
TYPE_POSE_6DOF
sensörünü uygulamalı ve raporlamalıdır. - [C-1-2] Yalnızca dönüş vektöründen daha doğru OLMALIDIR.
7.4. Veri Bağlantısı
7.4.1. Telefon Hizmeti
Android API'leri ve bu belgede kullanılan "Telefon Hizmetleri" terimi, özellikle GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanımı ifade eder. Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak Android açısından aynı ağ kullanılarak uygulanabilecek veri bağlantısından bağımsız olarak kabul edilir. Başka bir deyişle, Android'deki "telefon" işlevi ve API'ler özellikle sesli aramalar ve SMS ile ilgilidir. Örneğin, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarına bakılmaksızın arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, telefon işlevi olan cihaz olarak kabul edilmez.
- Android, telefon donanımı içermeyen cihazlarda KULLANILABİLİR. Yani Android, telefon olmayan cihazlarla uyumludur.
Cihaz uygulamaları GSM veya CDMA telefon özelliğini içeriyorsa:
- [C-1-1]
android.hardware.telephony
özellik bayrağını ve diğer alt özellik bayraklarını teknolojiye göre BİLDİRMELİDİR. - [C-1-2] Söz konusu teknoloji için API'nin tam desteğini uygulamalıdır.
Cihaz uygulamaları telefon donanımı içermiyorsa:
- [C-2-1] MUST implement the full APIs as no-ops.
7.4.1.1. Numara Engelleme Uyumluluğu
Cihaz uygulamaları android.hardware.telephony feature
değerini bildiriyorsa:
- [C-1-1] Numara engelleme desteği İÇERMELİDİR.
- [C-1-2] SDK dokümanlarında açıklandığı gibi
BlockedNumberContract
ve ilgili API'yi eksiksiz bir şekilde uygulamalıdır. - [C-1-3] "BlockedNumberProvider"daki bir telefon numarasından gelen tüm aramalar ve mesajlar, uygulamalarla etkileşim olmadan ENGELLENMELİDİR. Tek istisna, SDK dokümanlarında açıklandığı gibi numara engellemenin geçici olarak kaldırıldığı durumdur.
- [C-1-4] Engellenen bir arama için platform arama kaydı sağlayıcısına yazılMAMALIDIR.
- [C-1-5] Engellenen bir mesaj için Telefon hizmeti sağlayıcısına yazılMAMALIDIR.
- [C-1-6]
TelecomManager.createManageBlockedNumbersIntent()
yöntemi tarafından döndürülen amaçla açılan, engellenen numaraların yönetimi için bir kullanıcı arayüzü uygulamalıdır. - [C-1-7] Android platformu, birincil kullanıcının cihazdaki tek bir örnek olan telefon hizmetleri üzerinde tam kontrol sahibi olduğunu varsaydığından, ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERİLMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzü, ikincil kullanıcılar için GİZLENMELİ ve engellenenler listesine uyulmaya DEVAM EDİLMELİDİR.
- Bir cihaz Android 7.0'a güncellendiğinde engellenen numaralar sağlayıcıya taşınmalıdır.
7.4.1.2. Telecom API
Cihaz uygulamaları android.hardware.telephony
bildiriyorsa:
- [C-1-1] SDK'da açıklanan
ConnectionService
API'lerini DESTEKLEMELİDİR. - [C-1-2] Kullanıcı,
CAPABILITY_SUPPORT_HOLD
üzerinden belirtilen bekletme özelliğini desteklemeyen bir üçüncü taraf uygulaması tarafından yapılan devam eden bir görüşmedeyken yeni bir gelen aramayı GÖSTERMELİ ve kullanıcıya gelen aramayı kabul etme veya reddetme olanağı SUNMALIDIR. -
[C-SR] Gelen bir aramaya yanıt vermenin devam eden bir aramayı sonlandıracağını kullanıcıya bildirmesi ŞİDDETLE TAVSİYE EDİLİR.
AOSP uygulaması, kullanıcının gelen bir aramayı yanıtlaması durumunda diğer aramanın sonlandırılacağını belirten bir uyarı bildirimiyle bu şartları karşılar.
-
[C-SR] Üçüncü taraf uygulaması,
PhoneAccount
üzerindekiEXTRA_LOG_SELF_MANAGED_CALLS
ekstralar anahtarınıtrue
olarak ayarladığında arama günlüğünde arama günlüğü girişi ve üçüncü taraf uygulamasının adını gösteren varsayılan çevirici uygulamasının önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] Aşağıdaki gibi
android.telecom
API'leri için ses kulaklığınınKEYCODE_MEDIA_PLAY_PAUSE
veKEYCODE_HEADSETHOOK
etkinliklerini işlemesi ŞİDDETLE TAVSİYE EDİLİR:- Devam eden bir arama sırasında önemli etkinliğe kısa basma algılandığında
Connection.onDisconnect()
işlevini çağırın. - Gelen arama sırasında önemli etkinliğe kısa basma algılandığında
Connection.onAnswer()
işlevini çağırır. - Gelen arama sırasında önemli etkinliğe uzun basma işlemi algılandığında
Connection.onReject()
işlevini çağırın. CallAudioState
simgesinin sesi kapatma durumunu değiştirin.
- Devam eden bir arama sırasında önemli etkinliğe kısa basma algılandığında
7.4.2. IEEE 802.11 (Kablosuz)
Cihaz uygulamaları:
- 802.11'in bir veya daha fazla biçimi için destek İÇERMELİDİR.
Cihaz uygulamaları 802.11 desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1] Karşılık gelen Android API'yi uygulamalıdır.
- [C-1-2] Donanım özelliği işaretini
android.hardware.wifi
bildirmelidir. - [C-1-3] SDK belgelerinde açıklandığı gibi çoklu yayın API'si uygulanmalıdır.
- [C-1-4] Çoklu yayın DNS'yi (mDNS) DESTEKLEMELİ ve mDNS paketlerini (224.0.0.251) aşağıdakiler dahil olmak üzere çalışma süresince HİÇBİR ZAMAN filtrelememelidir:
- Ekran etkin durumda olmasa bile.
- Android Television cihaz uygulamaları için (bekleme güç durumundayken bile).
- [C-1-5]
WifiManager.enableNetwork()
API yöntemi çağrısı, uygulama trafiği için varsayılan olarak kullanılan vegetActiveNetwork
ileregisterDefaultNetworkCallback
gibiConnectivityManager
API yöntemleri tarafından döndürülen, şu anda etkin olanNetwork
'ı değiştirmek için yeterli bir gösterge olarak değerlendirilmemelidir. Başka bir deyişle, yalnızca kablosuz ağın internet erişimi sağladığını başarıyla doğrularlarsa diğer ağ sağlayıcılar (ör. mobil veri) tarafından sağlanan internet erişimini devre dışı bırakabilirler. - [C-SR]
ConnectivityManager.reportNetworkConnectivity()
API yöntemi çağrıldığındaNetwork
üzerindeki internet erişiminin yeniden değerlendirilmesi ve değerlendirme sonucunda mevcutNetwork
'ün artık internet erişimi sağlamadığı belirlendiğinde internet erişimi sağlayan başka bir kullanılabilir ağa (ör. hücresel veri) geçilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] STA bağlantısı kesilmişken her taramanın başında bir kez olmak üzere, kaynak MAC adresinin ve araştırma isteği çerçevelerinin sıra numarasının rastgele hale getirilmesi ŞİDDETLE TAVSİYE EDİLİR.
- Bir taramayı oluşturan her bir araştırma isteği çerçevesi grubu, tutarlı bir MAC adresi kullanmalıdır (MAC adresi, taramanın ortasında rastgele hale GETİRİLMEMELİDİR).
- Yoklama isteği sıra numarası, taramadaki yoklama istekleri arasında normal şekilde (sırayla) tekrarlanmalıdır.
- Yoklama isteği sıra numarası, bir taramanın son yoklama isteği ile bir sonraki taramanın ilk yoklama isteği arasında rastgele olmalıdır.
- STA bağlantısı kesilmişken yalnızca aşağıdaki öğelerin araştırma isteği çerçevelerinde kullanılması için [C-SR] ŞİDDETLE TAVSİYE EDİLİR:
- SSID Parametre Seti (0)
- DS Parametre Kümesi (3)
Cihaz uygulamaları kablosuz ağ özelliğini destekliyorsa ve konum taraması için kablosuz ağ kullanıyorsa:
- [C-2-1]
WifiManager.isScanAlwaysAvailable
API yöntemiyle okunan değerin etkinleştirilmesi/devre dışı bırakılması için kullanıcıya bir olanak SAĞLANMALIDIR.
7.4.2.1. Kablosuz Doğrudan Bağlantı
Cihaz uygulamaları:
- Wi-Fi Direct (Wi-Fi eşler arası) desteği OLMALIDIR.
Cihaz uygulamaları Wi-Fi Direct desteği içeriyorsa:
- [C-1-1] SDK belgelerinde açıklandığı şekilde ilgili Android API'sini uygulamalıdır.
- [C-1-2]
android.hardware.wifi.direct
donanım özelliği RAPORLANMALIDIR. - [C-1-3] Normal kablosuz bağlantı çalışmasını DESTEKLEMELİDİR.
- [C-1-4] Kablosuz ve Kablosuz Doğrudan işlemlerini aynı anda desteklemelidir.
7.4.2.2. Wi-Fi Tunneled Direct Link Setup
Cihaz uygulamaları:
- Android SDK Dokümanlarında açıklandığı gibi Wi-Fi Tunneled Direct Link Setup (TDLS) desteği İÇERMELİDİR.
Cihaz uygulamaları TDLS desteği içeriyorsa ve TDLS, WiFiManager API'si tarafından etkinleştirilmişse:
- [C-1-1]
WifiManager.isTdlsSupported
üzerinden TDLS desteği beyan EDİLMELİDİR. - TDLS'yi YALNIZCA mümkün OLDUĞUNDA ve faydalı OLDUĞUNDA kullanmalıdır.
- Performansı kablosuz erişim noktası üzerinden gitmekten daha kötü olabileceği durumlarda sezgisel bir yaklaşıma sahip OLMALI ve TDLS KULLANMAMALIDIR.
7.4.2.3. Wi-Fi Aware
Cihaz uygulamaları:
- Wi-Fi Aware desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Aware desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
WifiAwareManager
API'lerini SDK belgelerinde açıklandığı şekilde uygulamalıdır. - [C-1-2]
android.hardware.wifi.aware
özellik bayrağı BEYAN EDİLMELİDİR. - [C-1-3] MUST support Wi-Fi and Wi-Fi Aware operations concurrently.
- [C-1-4] Wi-Fi Aware yönetim arayüzü adresini 30 dakikadan uzun olmayan aralıklarla ve Wi-Fi Aware her etkinleştirildiğinde rastgele hale GETİRMELİDİR.
Cihaz uygulamaları, Bölüm 7.4.2.5'te açıklandığı gibi Wi-Fi Aware ve Wi-Fi Konum desteği içeriyorsa ve bu işlevleri üçüncü taraf uygulamalarına sunuyorsa:
- [C-2-1] Konum algılamaya yönelik keşif API'leri (setRangingEnabled, setMinDistanceMm, setMaxDistanceMm ve onServiceDiscoveredWithinRange) uygulanmalıdır.
7.4.2.4. Wi-Fi Passpoint
Cihaz uygulamaları:
- Wi-Fi Passpoint desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Passpoint desteği içeriyorsa:
- [C-1-1]
WifiManager
API'leri, SDK belgelerinde açıklandığı şekilde uygulamalıdır. - [C-1-2] IEEE 802.11u standardını, özellikle de Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi Ağ Keşfi ve Seçimi ile ilgili olarak DESTEKLEMELİDİR.
Aksine, cihaz uygulamaları Wi-Fi Passpoint desteği içermiyorsa:
- [C-2-1] Passpoint ile ilgili
WifiManager
API'lerinin uygulanmasıUnsupportedOperationException
istisnası oluşturmalıdır.
7.4.2.5. Kablosuz Konum (Kablosuz Gidiş Dönüş Süresi - RTT)
Cihaz uygulamaları:
- Kablosuz konum desteği İÇERMELİDİR.
Cihaz uygulamaları, kablosuz konum desteği içeriyorsa ve işlevselliği üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
WifiRttManager
API'lerini SDK belgelerinde açıklandığı şekilde uygulamalıdır. - [C-1-2]
android.hardware.wifi.rtt
özellik bayrağı BEYAN EDİLMELİDİR. - [C-1-3] RTT'nin yürütüldüğü kablosuz arayüzü bir erişim noktasıyla ilişkilendirilmemişken yürütülen her RTT patlaması için kaynak MAC adresi rastgele hale GETİRİLMELİDİR.
7.4.3. Bluetooth
Cihaz uygulamaları Bluetooth Ses profilini destekliyorsa:
- Gelişmiş ses codec'lerini ve Bluetooth ses codec'lerini (ör. LDAC) DESTEKLEMELİDİR.
Cihaz uygulamaları HFP, A2DP ve AVRCP'yi destekliyorsa:
- Toplamda en az 5 bağlı cihazı DESTEKLEMELİDİR.
Cihaz uygulamaları android.hardware.vr.high_performance
özelliğini beyan ediyorsa:
- [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı desteklenmelidir.
Android, Bluetooth ve Bluetooth Düşük Enerji'yi destekler.
Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:
- [C-2-1] İlgili platform özelliklerini (sırasıyla
android.hardware.bluetooth
veandroid.hardware.bluetooth_le
) BEYAN ETMELİ ve platform API'lerini uygulamalıdır. - Cihaza uygun şekilde A2DP, AVRCP, OBEX, HFP gibi alakalı Bluetooth profillerini uygulamalıdır.
Cihaz uygulamaları Bluetooth Düşük Enerji desteği içeriyorsa:
- [C-3-1]
android.hardware.bluetooth_le
donanım özelliğini BEYAN ETMELİDİR. - [C-3-2] SDK dokümanlarında ve android.bluetooth'ta açıklandığı gibi GATT (genel özellik profili) tabanlı Bluetooth API'leri ETKİNLEŞTİRİLMELİDİR.
- [C-3-3] ScanFilter API sınıfları için filtreleme mantığının uygulanıp uygulanmadığını belirtmek üzere
BluetoothAdapter.isOffloadedFilteringSupported()
için doğru değeri RAPORLAMALIDIR. - [C-3-4] Düşük Enerjili Reklamcılığın desteklenip desteklenmediğini belirtmek için
BluetoothAdapter.isMultipleAdvertisementSupported()
için doğru değeri RAPORLAMALIDIR. - ScanFilter API uygulanırken filtreleme mantığının Bluetooth yonga setine aktarılması DESTEKLENMELİDİR.
- Toplu taramanın Bluetooth yonga setine aktarılması DESTEKLENMELİDİR.
-
En az 4 yerleşimle birden fazla reklamı desteklemelidir.
-
[SR] Kullanıcı gizliliğini korumak için 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulaması ve zaman aşımında adresi döndürme KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları Bluetooth LE'yi destekliyorsa ve konum taraması için Bluetooth LE'yi kullanıyorsa:
- [C-4-1] Sistem API'si
BluetoothAdapter.isBleScanAlwaysAvailable()
aracılığıyla okunan değerin etkinleştirilmesi/devre dışı bırakılması için kullanıcıya bir olanak SAĞLANMALIDIR.
7.4.4. Near-Field Communications
Cihaz uygulamaları:
- Yakın alan iletişimi (NFC) için bir alıcı-verici ve ilgili donanım İÇERMELİDİR.
- [C-0-1]
android.nfc.NdefMessage
veandroid.nfc.NdefRecord
API'leri, NFC desteği içermese veyaandroid.hardware.nfc
özelliğini beyan etmese bile uygulamalıdır. Bunun nedeni, sınıfların protokolden bağımsız bir veri gösterimi biçimini temsil etmesidir.
Cihaz uygulamaları NFC donanımı içeriyorsa ve bu donanımı üçüncü taraf uygulamalarına sunmayı planlıyorsa:
- [C-1-1]
android.content.pm.PackageManager.hasSystemFeature()
yöntemindenandroid.hardware.nfc
özelliğini raporlaması ZORUNLUDUR. - Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarını okuyup yazabilmelidir:
- [C-1-2] Aşağıdaki NFC standartları aracılığıyla NFC Forum okuyucu/yazıcı (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0'da tanımlandığı gibi) olarak işlev görebilmelidir:
- NfcA (ISO14443-3A)
- NfcB (ISO14443-3B)
- NfcF (JIS X 6319-4)
- IsoDep (ISO 14443-4)
- NFC Forum Etiket Türleri 1, 2, 3, 4, 5 (NFC Forum tarafından tanımlanır)
-
[SR] Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarının yanı sıra ham verileri de okuyup yazabilmesi KESİNLİKLE ÖNERİLİR. NFC standartlarının ŞİDDETLE TAVSİYE EDİLEN olarak belirtildiğini ancak gelecekteki bir sürümün Uyumluluk Tanımı'nda bunların ZORUNLU olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları hemen karşılamaları önemle tavsiye edilir.
-
[C-1-3] Aşağıdaki eşler arası standartlar ve protokoller aracılığıyla veri iletebilmeli ve alabilmelidir:
- ISO 18092
- LLCP 1.2 (NFC Forum tarafından tanımlanır)
- SDP 1.0 (NFC Forum tarafından tanımlanır)
- NDEF Push Protocol
- SNEP 1.0 (NFC Forum tarafından tanımlanır)
- [C-1-4] Android Beam desteği İÇERMELİ ve Android Beam'i varsayılan olarak ETKİNLEŞTİRMELİDİR.
- [C-1-5] Android Beam etkinleştirildiğinde veya başka bir tescilli NFC P2p modu açıldığında Android Beam kullanılarak gönderme ve alma İŞLEMİ YAPILABİLMELİDİR.
- [C-1-6] SNEP varsayılan sunucusu uygulanmalıdır. Varsayılan SNEP sunucusu tarafından alınan geçerli NDEF mesajları,
android.nfc.ACTION_NDEF_DISCOVERED
amacını kullanarak uygulamalara gönderilmelidir. Ayarlarda Android Beam'in devre dışı bırakılması, gelen NDEF mesajının gönderilmesini DEVRE DIŞI BIRAKMAMALIDIR. - [C-1-7]
android.settings.NFCSHARING_SETTINGS
NFC paylaşım ayarlarını gösterme amacına UYULMALIDIR. - [C-1-8] NPP sunucusu uygulanmalıdır. NPP sunucusu tarafından alınan iletiler, SNEP varsayılan sunucusuyla aynı şekilde işlenmelidir.
- [C-1-9] SNEP istemcisi uygulamalı ve Android Beam etkinleştirildiğinde varsayılan SNEP sunucusuna giden P2P NDEF göndermeye çalışmalıdır. Varsayılan bir SNEP sunucusu bulunamazsa istemci, bir NPP sunucusuna göndermeyi DENEMELİDİR.
- [C-1-10] MUST allow foreground activities to set the outbound P2P NDEF message using
android.nfc.NfcAdapter.setNdefPushMessage
, andandroid.nfc.NfcAdapter.setNdefPushMessageCallback
, andandroid.nfc.NfcAdapter.enableForegroundNdefPush
. - Giden P2P NDEF mesajlarını göndermeden önce "Işınlamak için dokunun" gibi bir hareket veya ekranda onay kullanmalıdır.
- [C-1-11] Cihaz, Bluetooth Object Push Profile'i desteklediğinde NFC bağlantı devri ile Bluetooth'a geçişi DESTEKLEMELİDİR.
- [C-1-12] NFC Forum'un "Connection Handover version 1.2" ve "Bluetooth Secure Simple Pairing Using NFC version 1.0" spesifikasyonlarını uygulayarak
android.nfc.NfcAdapter.setBeamPushUris
kullanılırken Bluetooth'a bağlantı aktarımını DESTEKLEMELİDİR. Bu tür bir uygulama, NFC üzerinden devretme isteği/seçme kayıtlarını değiştirmek için "urn:nfc:sn:handover" hizmet adıyla devretme LLCP hizmetini uygulamalı ve gerçek Bluetooth veri aktarımı için Bluetooth Object Push Profile'ı kullanmalıdır. Eski nedenlerden dolayı (Android 4.1 cihazlarla uyumlu kalmak için) uygulama, NFC üzerinden devretme isteği/kayıt seçme işlemlerinin değişimi için SNEP GET isteklerini kabul ETMELİDİR. Ancak bir uygulama, bağlantı devrini gerçekleştirmek için SNEP GET istekleri GÖNDERMEMELİDİR. - [C-1-13] NFC keşif modundayken desteklenen tüm teknolojiler için yoklama YAPILMALIDIR.
- Cihaz uyanıkken, ekran etkin durumdayken ve kilit ekranı açıkken NFC keşif modunda OLMALIDIR.
- Thinfilm NFC Barcode ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.
Yukarıda belirtilen JIS, ISO ve NFC Forum spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.
Android, NFC ana kart emülasyonu (HCE) modunu destekler.
Cihaz uygulamaları, HCE (NfcA ve/veya NfcB için) özellikli bir NFC denetleyici yonga seti içeriyorsa ve uygulama kimliği (AID) yönlendirmesini destekliyorsa:
- [C-2-1]
android.hardware.nfc.hce
özelliği sabiti RAPORLANMALIDIR. - [C-2-2] Android SDK'da tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.
Cihaz uygulamaları, NfcF için HCE'yi destekleyen bir NFC denetleyici yonga seti içeriyorsa ve özelliği üçüncü taraf uygulamaları için uyguluyorsa:
- [C-3-1]
android.hardware.nfc.hcef
özelliği sabiti RAPORLANMALIDIR. - [C-3-2] Android SDK'da tanımlandığı şekilde NfcF Card Emulation API'leri uygulanmalıdır.
Cihaz uygulamaları bu bölümde açıklandığı gibi genel NFC desteği içeriyorsa ve okuyucu/yazıcı rolünde MIFARE teknolojilerini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:
- [C-4-1] İlgili Android API'lerini Android SDK'sında belgelendiği şekilde uygulamalıdır.
- [C-4-2]
android.content.pm.PackageManager.hasSystemFeature
() yöntemindencom.nxp.mifare
özelliğini RAPORLAMALIDIR. Bunun standart bir Android özelliği olmadığını ve bu nedenleandroid.content.pm.PackageManager
sınıfında sabit olarak görünmediğini unutmayın.
7.4.5. Minimum Ağ İşlevi
Cihaz uygulamaları:
- [C-0-1] Bir veya daha fazla veri ağı biçimi için destek içermelidir. Daha net bir ifadeyle, cihaz uygulamaları en az 200 Kbit/sn veya daha yüksek hızda veri standardını desteklemelidir. Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet ve Bluetooth PAN verilebilir.
- Fiziksel bir ağ standardı (ör. Ethernet) birincil veri bağlantısı olduğunda 802.11 (kablosuz) gibi en az bir yaygın kablosuz veri standardı için de destek içermelidir.
- Birden fazla veri bağlantısı biçimi uygulayabilir.
- [C-0-2]
java.net.Socket
vejava.net.URLConnection
gibi yönetilen API'lerin yanı sıraAF_INET6
yuvaları gibi yerel API'leri kullanarak IPv6 iletişimini desteklemeli ve bir IPv6 ağ yığını içermelidir. - [C-0-3] Varsayılan olarak IPv6'yı etkinleştirmelidir.
- IPv6 iletişiminin IPv4 kadar güvenilir olmasını SAĞLAMALIDIR. Örneğin:
- [C-0-4] Uyku modunda IPv6 bağlantısı SÜRDÜRÜLMELİDİR.
- [C-0-5] Hız sınırlama, en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu ağlarda cihazın IPv6 bağlantısını kaybetmesine NEDEN OLMAMALIDIR.
- [C-0-6] IPv6 ağına bağlandığında, cihazda yerel olarak herhangi bir adres veya bağlantı noktası çevirisi yapılmadan üçüncü taraf uygulamalarına ağa doğrudan IPv6 bağlantısı SAĞLANMALIDIR. Hem
Socket#getLocalAddress
veyaSocket#getLocalPort
gibi yönetilen API'ler hem degetsockname()
veyaIPV6_PKTINFO
gibi NDK API'leri, ağda paket göndermek ve almak için kullanılan IP adresini ve bağlantı noktasını DÖNDÜRMELİDİR.
Gerekli IPv6 desteği düzeyi, aşağıdaki şartlarda gösterildiği gibi ağ türüne bağlıdır.
Cihaz uygulamaları Wi-Fi'yi destekliyorsa:
- [C-1-1] Çift yığınlı ve yalnızca IPv6 ile çalışmayı kablosuz ağda DESTEKLEMELİDİR.
Cihaz uygulamaları Ethernet'i destekliyorsa:
- [C-2-1] Ethernet'te çift yığınlı çalışmayı DESTEKLEMELİDİR.
Cihaz uygulamaları hücresel veriyi destekliyorsa:
- Hücresel bağlantıda IPv6 işlemini (yalnızca IPv6 ve muhtemelen çift yığın) desteklemelidir.
Cihaz uygulamaları birden fazla ağ türünü destekliyorsa (ör. Kablosuz ağ ve hücresel veri) kullanılıyorsa:
- [C-3-1] Cihaz aynı anda birden fazla ağ türüne bağlıyken her ağda yukarıdaki şartları aynı anda karşılamalıdır.
7.4.6. Senkronizasyon Ayarları
Cihaz uygulamaları:
- [C-0-1]
getMasterSyncAutomatically()
yönteminin "true" değerini döndürmesi için ana otomatik senkronizasyon ayarı varsayılan olarak açık OLMALIDIR.
7.4.7. Veri Tasarrufu
Cihaz uygulamaları, ölçülü bağlantı içeriyorsa:
- [SR] Veri tasarrufu modunun sağlanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları veri tasarrufu modunu sağlıyorsa:
- [C-1-1] SDK belgelerinde açıklandığı gibi
ConnectivityManager
sınıfındaki tüm API'leri desteklemelidir. - [C-1-2] Ayarlarda,
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
amacını işleyen ve kullanıcıların izin verilenler listesine uygulama eklemesine veya listeden uygulama kaldırmasına olanak tanıyan bir kullanıcı arayüzü SAĞLANMALIDIR.
Cihaz uygulamaları veri tasarrufu modunu sağlamıyorsa:
- [C-2-1]
ConnectivityManager.getRestrictBackgroundStatus()
içinRESTRICT_BACKGROUND_STATUS_DISABLED
değerini DÖNDÜRMELİDİR. - [C-2-2]
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED
yayınlanmamalıdır. - [C-2-3]
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
amacını işleyen bir etkinliğe SAHİP OLMALI ancak bunu işlem yapmayan bir işlev olarak uygulayabilir.
7.4.8. Güvenlik Unsurları
Cihaz uygulamaları, Open Mobile API özellikli güvenli öğeleri destekleyip üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
android.se.omapi.SEService.getReaders()
yöntemi çağrıldığında kullanılabilir Güvenli Öğeler okuyucuları listelenmelidir.
7.5. Kameralar
Cihaz uygulamaları en az bir kamera içeriyorsa:
- [C-1-1]
android.hardware.camera.any
özellik bayrağı BEYAN EDİLMELİDİR. - [C-1-2] Temel önizleme ve fotoğraf çekme amacıyla kamera açıkken bir uygulamanın, cihazdaki en yüksek çözünürlüklü kamera sensörünün ürettiği görüntülerin boyutuna eşit 3 RGBA_8888 bit eşlemi aynı anda ayırması GEREKİR.
7.5.1. Arka Kamera
Arka kamera, cihazın ekrana bakan tarafının tersinde bulunan bir kameradır. Yani cihazın uzak tarafındaki sahnelerin fotoğrafını çeker.
Cihaz uygulamaları:
- Arka kamera İÇERMELİDİR.
Cihaz uygulamaları en az bir arka kamera içeriyorsa:
- [C-1-1]
android.hardware.camera
veandroid.hardware.camera.any
özellik işaretini BİLDİRMELİDİR. - [C-1-2] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
- Kamera sürücüsünde (uygulama yazılımı için şeffaf) donanım veya yazılım otomatik odaklama özelliği OLMALIDIR.
- Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanımı OLABİLİR.
- Flaş İÇEREBİLİR.
Kamerada flaş varsa:
- [C-2-1] Bir
android.hardware.Camera.PreviewCallback
örneği Kamera önizleme yüzeyine kaydedilmişken, uygulama birCamera.Parameters
nesnesininFLASH_MODE_AUTO
veyaFLASH_MODE_ON
özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece flaş lambası YAKILMAMALIDIR. Bu kısıtlamanın, cihazın yerleşik sistem kamera uygulaması için değil, yalnızcaCamera.PreviewCallback
kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Kamera
Ön kamera, cihazın ekranıyla aynı tarafta bulunan bir kameradır. Genellikle kullanıcıyı görüntülemek için kullanılır (ör. video konferans ve benzeri uygulamalar).
Cihaz uygulamaları:
- Ön kamera içerebilir.
Cihaz uygulamalarında en az bir ön kamera varsa:
- [C-1-1]
android.hardware.camera.any
veandroid.hardware.camera.front
özellik işaretini BİLDİRMELİDİR. - [C-1-2] En az VGA (640x480 piksel) çözünürlüğe sahip OLMALIDIR.
- [C-1-3] Ön kamerayı Camera API'nin varsayılanı olarak KULLANMAMALI ve cihazda tek kamera olsa bile API'yi ön kamerayı varsayılan arka kamera olarak kabul edecek şekilde YAPILANDIRMAMALIDIR.
- [C-1-4] Geçerli uygulama,
android.hardware.Camera.setDisplayOrientation()
yöntemi çağrısıyla Kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesi, uygulama tarafından belirtilen yöne göre yatay olarak yansıtılmalıdır. Aksine, mevcut uygulamaandroid.hardware.Camera.setDisplayOrientation()
yöntemi çağrısıyla Kamera ekranının döndürülmesini açıkça istemediğinde önizleme, cihazın varsayılan yatay ekseni boyunca yansıtılmalıdır. - [C-1-5] Uygulama geri çağırmalarına döndürülen veya medya depolama alanına kaydedilen son yakalanan hareketsiz görüntü ya da video akışları YANSITILMAMALIDIR.
- [C-1-6] MUST mirror the image displayed by the postview in the same manner as the camera preview image stream.
- Bölüm 7.5.1'de açıklandığı gibi, arkaya bakan kameralarda kullanılabilen özellikler (ör. otomatik odaklama, flaş vb.) İÇEREBİLİR.
Cihaz uygulamaları kullanıcı tarafından döndürülebiliyorsa (ör. ivmeölçer aracılığıyla otomatik olarak veya kullanıcı giriş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 için destek içerebilir.
Cihaz uygulamaları harici kamera desteği içeriyorsa:
- [C-1-1]
android.hardware.camera.external
veandroid.hardware camera.any
platform özellik işaretini BİLDİRMELİDİR. - [C-1-2] Harici kamera USB ana bağlantı noktası üzerinden bağlanıyorsa USB Video Class (UVC 1.0 veya üzeri) desteklenmelidir.
- [C-1-3] Fiziksel bir harici kamera cihazı bağlıyken kamera CTS testlerini GEÇMELİDİR. Kamera CTS testiyle ilgili ayrıntıları source.android.com adresinde bulabilirsiniz.
- Yüksek kaliteli kodlanmamış akışların (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırmalarını DESTEKLEMELİDİR.
- MAY, birden fazla kamerayı destekleyebilir.
- Kameraya dayalı video kodlamayı DESTEKLEYEBİLİR.
Kameraya dayalı video kodlama destekleniyorsa:
- [C-2-1] Cihaz uygulamasında eşzamanlı olarak kodlanmamış / MJPEG akışı (QVGA veya daha yüksek çözünürlük) ERİŞİLEBİLMELİDİR.
7.5.4. Kamera API'sinin Davranışı
Android, kameraya erişmek için iki API paketi içerir. Daha yeni olan android.hardware.camera2 API, uygulamaya daha düşük düzeyde kamera kontrolü sunar. Bu kontrol; verimli sıfır kopyalı seri çekim/akış akışları ve pozlama, kazanç, beyaz dengesi kazançları, renk dönüştürme, gürültü azaltma, keskinleştirme gibi özelliklerin kare başına kontrolünü içerir.
Eski API paketi,android.hardware.Camera
, Android 5.0'da kullanımdan kaldırılmış olarak işaretlenir ancak uygulamaların kullanmaya devam edebilmesi gerekir. Android cihaz uygulamaları, bu bölümde ve Android SDK'da açıklandığı şekilde API'nin sürekli olarak desteklenmesini sağlamalıdır.
Kullanımdan kaldırılan android.hardware.Camera sınıfı ile daha yeni olan android.hardware.camera2 paketi arasındaki tüm ortak özellikler, her iki API'de de eşdeğer performans ve kaliteye sahip OLMALIDIR. Örneğin, eşdeğer ayarlarda otomatik odaklama hızı ve doğruluğu aynı olmalı, çekilen görüntülerin kalitesi de aynı olmalıdır. İki API'nin farklı semantiklerine bağlı özelliklerin eşleşen hıza veya kaliteye sahip olması gerekmez ancak mümkün olduğunca yakın olmalıdır.
Cihaz uygulamaları, mevcut tüm kameralar için kamerayla ilgili API'lerde aşağıdaki davranışları uygulamalıdır. Cihaz uygulamaları:
- [C-0-1] Bir uygulama hiçbir zaman
android.hardware.Camera.Parameters.setPreviewFormat(int)
'u çağırmadığında, uygulama geri çağırmalarına sağlanan önizleme verileri içinandroid.hardware.PixelFormat.YCbCr_420_SP
KULLANILMALIDIR. - [C-0-2] Bir uygulama
android.hardware.Camera.PreviewCallback
örneği kaydettiğinde, sistemonPreviewFrame()
yöntemini çağırdığında ve önizleme biçimi YCbCr_420_SP olduğunda,onPreviewFrame()
'ye geçirilen byte[] içindeki veriler de NV21 kodlama biçiminde OLMALIDIR. Yani NV21, varsayılan olmalıdır. - [C-0-3]
android.hardware.Camera
için hem ön hem de arka kameraların kamera önizlemelerinde YV12 biçimi (android.graphics.ImageFormat.YV12
sabitiyle gösterildiği gibi) DESTEKLENMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüştürmeyi DESTEKLEMELİDİR.) - [C-0-4]
android.request.availableCapabilities
bölgesindeREQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE
özelliğinin reklamını yapanandroid.hardware.camera2
cihazlar içinandroid.media.ImageReader
API'si aracılığıyla çıkış olarakandroid.hardware.ImageFormat.YUV_420_888
veandroid.hardware.ImageFormat.JPEG
biçimleri DESTEKLENMELİDİR. - [C-0-5] Cihazda donanım otomatik odaklama veya başka özellikler olup olmadığına bakılmaksızın, Android SDK dokümanlarında yer alan Camera API'nin tamamı uygulanmalıdır. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı
android.hardware.Camera.AutoFocusCallback
örneklerini yine de çağırmalıdır (bu, otomatik odaklama özelliği olmayan bir kamera için geçerli olmasa bile). Bunun öne bakan kameralar için geçerli olduğunu unutmayın. Örneğin, öne bakan kameraların çoğu otomatik odaklamayı desteklemese de API geri çağırmaları yine de açıklandığı gibi "taklit edilmelidir". - [C-0-6]
android.hardware.Camera.Parameters
sınıfında sabit olarak tanımlanan her parametre adını TANIMLAMALI ve KABUL ETMELİDİR. Bunun aksine, cihaz uygulamaları,android.hardware.Camera.setParameters()
yöntemine iletilen veandroid.hardware.Camera.Parameters
üzerinde sabit olarak belgelenenler dışındaki dize sabitlerini kabul etmemeli veya tanımamalıdır. Yani, donanım izin veriyorsa cihaz uygulamaları tüm standart kamera parametrelerini desteklemeli ve özel kamera parametre türlerini desteklememelidir. Örneğin, yüksek dinamik aralıklı (HDR) görüntüleme tekniklerini kullanarak görüntü yakalamayı destekleyen cihaz uygulamaları,Camera.SCENE_MODE_HDR
kamera parametresini DESTEKLEMELİDİR. - [C-0-7] Android SDK'da açıklandığı şekilde
android.info.supportedHardwareLevel
özelliğiyle uygun destek düzeyini BİLDİRMELİ ve uygun çerçeve özellik işaretlerini BİLDİRMELİDİR. - [C-0-8]
android.hardware.camera2
aracılığıylaandroid.request.availableCapabilities
özelliği üzerinden kendi kamera özelliklerini de beyan ETMELİ ve uygun özellik işaretlerini beyan ETMELİDİR. Ekli kamera cihazlarından herhangi biri özelliği destekliyorsa özellik işareti tanımlanmalıdır. - [C-0-9] Kamera ile yeni bir fotoğraf çekildiğinde ve fotoğrafın girişi medya deposuna eklendiğinde
Camera.ACTION_NEW_PICTURE
amacını yayınLAMALIDIR. - [C-0-10] Kamera tarafından yeni bir video kaydedildiğinde ve resim girişi medya deposuna eklendiğinde
Camera.ACTION_NEW_VIDEO
amacı YAYINLANMALIDIR. - [C-SR] Çerçeve tarafından desteklenen fiziksel kamera türü ve fiziksel kameralar için
CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL
değeriLIMITED
,FULL
veyaLEVEL_3
olduğu sürece, aynı yöne bakan birden fazla kamerası olan cihazlarda, o yöne bakan her fiziksel kameradan oluşan,CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
özelliğini listeleyen mantıksal bir kamera cihazını desteklemek ŞİDDETLE TAVSİYE EDİLİR.
7.5.5. Kamera Yönü
Cihaz uygulamalarında ön veya arka kamera varsa bu kameralar:
- [C-1-1] Kameranın uzun kenarı, ekranın uzun kenarıyla aynı yönde olacak şekilde yerleştirilmelidir. Yani cihaz yatay yönde tutulduğunda kameralar, görüntüleri yatay yönde çekmelidir. Bu, cihazın doğal yönü ne olursa olsun (yani yatay öncelikli cihazlar ve dikey öncelikli 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İLECEĞİ bir İndirme Yöneticisi İÇERMELİDİR ve en az 100 MB boyutundaki dosyaları varsayılan "önbellek" konumuna indirebilmelidir.
7.6.2. Uygulama Ortak Depolama Alanı
Cihaz uygulamaları:
- [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı sunULMALIDIR. Bu alan genellikle "paylaşılan harici depolama alanı", "uygulama tarafından paylaşılan depolama alanı" veya Linux yolu "/sdcard" olarak da adlandırılır.
- [C-0-2] Depolama biriminin dahili bir depolama bileşeninde mi yoksa çıkarılabilir bir depolama ortamında mı (ör.Secure Digital kart yuvası) uygulandığına bakılmaksızın, varsayılan olarak bağlı paylaşılan depolama birimiyle yapılandırılmalıdır. Diğer bir deyişle, "kullanıma hazır" olmalıdır.
- [C-0-3] Uygulama tarafından paylaşılan depolama alanı doğrudan Linux yoluna
sdcard
bağlanmalı veyasdcard
konumundan gerçek bağlama noktasına bir Linux sembolik bağlantısı içermelidir. - [C-0-4] SDK'da belirtildiği gibi, bu paylaşılan depolama alanında
android.permission.WRITE_EXTERNAL_STORAGE
izni ZORUNLU olarak uygulanmalıdır. Paylaşılan depolama alanı, bu izni alan herhangi bir uygulama tarafından yazılabilir OLMALIDIR.
Cihaz uygulamaları, yukarıdaki koşulları aşağıdaki yöntemlerden birini kullanarak karşılayabilir:
- Kullanıcı tarafından erişilebilen çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası).
- Android Açık Kaynak Projesi'nde (AOSP) uygulanan dahili (çıkarılamayan) depolama alanının bir kısmı.
Cihaz uygulamaları yukarıdaki koşulları karşılamak için çıkarılabilir depolama birimi kullanıyorsa:
- [C-1-1] Yuvaya depolama ortamı takılmadığında kullanıcıyı uyaran bir kısa mesaj veya pop-up kullanıcı arayüzü uygulamalıdır.
- [C-1-2] FAT biçimli bir depolama ortamı (ör. SD kart) İÇERMELİ veya satın alma sırasında kutuda ve diğer materyallerde depolama ortamının ayrı olarak satın alınması gerektiği gösterilmelidir.
Cihaz uygulamaları yukarıdaki şartları karşılamak için çıkarılamayan depolama alanının bir kısmını kullanıyorsa:
- Dahili uygulama paylaşılan depolama alanının AOSP uygulamasını KULLANMALIDIR.
- Depolama alanını uygulama özel verileriyle paylaşabilir.
Cihaz uygulamaları birden fazla paylaşılan depolama yolu (ör. hem SD kart yuvası hem de paylaşılan dahili depolama) içeriyorsa:
- [C-2-1] Paketlerine özel dizinlere veya
ACTION_OPEN_DOCUMENT_TREE
amaçlı işlemi başlatarak döndürülenURI
içine yazma işlemi dışında, ikincil harici depolama alanına yazma izni olan yalnızca önceden yüklenmiş ve ayrıcalıklı Android uygulamalarına izin VERİLMELİDİR.WRITE_EXTERNAL_STORAGE
Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:
- [C-3-1] Uygulamanın paylaşılan depolama alanındaki verilere ana bilgisayardan erişmek için bir mekanizma SAĞLANMALIDIR.
- Android'in medya tarayıcı hizmeti ve
android.provider.MediaStore
aracılığıyla her iki depolama yolundaki içerikleri şeffaf bir şekilde kullanıma sunMALIDIR. - USB yığın depolama kullanabilir ancak bu şartı karşılamak için Medya Aktarım Protokolü KULLANMALIDIR.
Cihaz uygulamalarında USB çevre birimi moduna sahip bir USB bağlantı noktası varsa ve Medya Aktarım Protokolü destekleniyorsa:
- Referans Android MTP ana makinesi Android Dosya Aktarımı ile uyumlu OLMALIDIR.
- 0x00 USB cihaz sınıfı bildirmelidir.
- "MTP" USB arayüzü adını bildirmelidir.
7.6.3. Dahili hale getirilebilir depolama alanı
Cihazın televizyon gibi olmaması ve mobil olması bekleniyorsa cihaz uygulamaları şunlardır:
- [SR] Adaptable storage'ı uzun vadede sabit bir konumda uygulamanız ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, yanlışlıkla bağlantısını kesmek veri kaybına/bozulmasına neden olabilir.
Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya başka bir koruyucu kapak gibi uzun süreli sabit bir konumdaysa cihaz uygulamaları:
- [SR] Dahili hale getirilebilir depolama alanı özelliğinin uygulanması ÖNEMLE TAVSİYE EDİLİR.
7.7. USB
Cihaz uygulamalarında USB bağlantı noktası varsa:
- USB çevre birimi modunu DESTEKLEMELİ ve USB ana makine modunu DESTEKLEMELİDİR.
7.7.1. USB çevre birimi modu
Cihaz uygulamalarında çevre birimi modunu destekleyen bir USB bağlantı noktası varsa:
- [C-1-1] Bağlantı noktası, standart Type-A veya Type-C USB bağlantı noktasına sahip bir USB ana makinesine bağlanabilmelidir.
- [C-1-2]
android.os.Build.SERIAL
aracılığıyla USB standart cihaz tanımlayıcısındaiSerialNumber
değerini doğru şekilde bildirmelidir. - [C-1-3] Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını ALGILAMALI ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri ALGILAMALIDIR.
- [SR] Bağlantı noktası, micro-B, micro-AB veya Type-C USB form faktörünü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Bağlantı noktası, cihazın alt kısmında (doğal yönlendirmeye göre) yer almalıdır veya yazılım ekran döndürme özelliği tüm uygulamalar (ana ekran dahil) için etkinleştirilmelidir. Böylece, cihaz bağlantı noktası altta olacak şekilde yönlendirildiğinde ekran doğru şekilde çizilir. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
- [SR], USB Pil Şarjı spesifikasyonu, revizyon 1.2'de belirtildiği gibi HS chirp ve trafik sırasında 1,5 A akım çekme desteğini uygulamalıdır. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya alıcı/kaynak rollerini değiştiren tescilli şarj yöntemlerinin desteklenmemesi KESİNLİKLE ÖNERİLİR. Aksi takdirde, standart USB Güç Dağıtımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunları yaşanabilir. Bu durum "KESİNLİKLE Ö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 ZORUNLU olabilir.
- [SR] Type-C USB ve USB ana makine modunu desteklediklerinde veri ve güç rolü değiştirme için Güç Aktarımı'nın desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- Yüksek voltajlı şarj için Power Delivery'yi ve ekran çıkışı gibi alternatif modları desteklemelidir.
- Android Open Accessory (AOA) API'sini ve spesifikasyonunu Android SDK dokümanlarında belirtildiği şekilde uygulamalıdır.
Cihaz uygulamaları bir USB bağlantı noktası içeriyorsa ve AOA spesifikasyonunu uyguluyorsa:
- [C-2-1]
android.hardware.usb.accessory
donanım özelliği için destek beyan EDİLMELİDİR. - [C-2-2] USB yığın depolama biriminin arayüz açıklaması
iInterface
dizesinin sonunda "android" dizesi BULUNMALIDIR.
7.7.2. USB ana makine modu
Cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-1-1] Android SDK'da belgelendiği şekilde Android USB ana makine API'si uygulanmalı ve
android.hardware.usb.host
donanım özelliği için destek beyan edilmelidir. - [C-1-2] Standart USB çevre birimlerinin bağlanması için destek sağlanmalıdır. Diğer bir deyişle, şunlardan biri YAPILMALIDIR:
- Cihazda Type-C bağlantı noktası bulunmalı veya cihazda bulunan tescilli bağlantı noktasını standart USB Type-C bağlantı noktasına (USB Type-C cihaz) dönüştüren kablolarla birlikte gönderilmelidir.
- Cihaz üzerinde A tipi bağlantı noktası olmalı veya cihaz üzerinde bulunan tescilli bir bağlantı noktasını standart USB A tipi bağlantı noktasına dönüştüren kablolarla birlikte gönderilmelidir.
- Cihazda, standart bir A tipi bağlantı noktasına uyarlanmış bir kabloyla birlikte GÖNDERİLMESİ GEREKEN bir cihaz içi micro-AB bağlantı noktası olmalıdır.
- [C-1-3] USB A tipi veya micro-AB bağlantı noktalarını C tipi bağlantı noktasına (yuva) dönüştüren bir adaptörle birlikte gönderilmemelidir.
- [SR] Android SDK belgelerinde belirtildiği gibi USB ses sınıfının uygulanması ŞİDDETLE TAVSİYE EDİLİR.
- Ana makine modundayken bağlı USB çevre birimi cihazının şarj edilmesini DESTEKLEMELİDİR.USB Type-C konnektörleri için USB Type-C Kablosu ve Konnektör Spesifikasyonu Revizyon 1.2'nin Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1,5 A kaynak akımı reklamı yapmalı veya Micro-AB konnektörleri için USB Pil Şarjı Spesifikasyonları, Revizyon 1.2'de belirtildiği gibi Şarj Edilen Aşağı Akım Bağlantı Noktası(CDP) çıkış akımı aralığını kullanmalıdır.
- USB Type-C standartlarını uygulamalı ve desteklemelidir.
Cihaz uygulamaları, ana makine modunu ve USB ses sınıfını destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-2-1] USB HID sınıfını desteklemelidir.
- [C-2-2] USB HID Kullanım Tabloları ve Sesli Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının
KeyEvent
sabitleriyle eşlenmesini ve algılanmasını aşağıdaki gibi DESTEKLEMELİDİR:- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CD):
KEYCODE_MEDIA_PLAY_PAUSE
- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0E9):
KEYCODE_VOLUME_UP
- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0EA):
KEYCODE_VOLUME_DOWN
- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CF):
KEYCODE_VOICE_ASSIST
- Kullanım Sayfası (0xC) Kullanım Kimliği (0x0CD):
Cihaz uygulamaları, ana makine modunu ve Depolama Erişim Çerçevesi'ni (SAF) destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-3-1] Uzaktan bağlı tüm MTP (Medya Aktarım Protokolü) cihazları TANIMLAMALI ve içeriklerine
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
veACTION_CREATE_DOCUMENT
amaçları üzerinden erişilebilmesini SAĞLAMALIDIR. .
Cihaz uygulamaları, ana makine modunu ve USB Type-C'yi destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-4-1] USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rol Bağlantı Noktası işlevselliği uygulanmalıdır.
- [SR] DisplayPort'u desteklemesi ŞİDDETLE TAVSİYE EDİLİR, USB SuperSpeed veri hızlarını desteklemesi GEREKİR ve veri ile güç rolü değiştirme için Güç Aktarımı'nı desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [SR] USB Type-C Kablosu ve Konnektör Spesifikasyonu Revizyon 1.2'nin Ek A bölümünde açıklandığı gibi Ses Adaptörü Aksesuar Modu'nun desteklenmemesi ŞİDDETLE TAVSİYE EDİLİR.
- Cihazın form faktörüne en uygun olan Try.* modelini uygulamalıdır. Örneğin, elde taşınabilir bir cihaz Try.SNK modelini uygulamalıdır.
7.8. Ses
7.8.1. Mikrofon
Cihaz uygulamaları mikrofon içeriyorsa:
- [C-1-1]
android.hardware.microphone
özelliği sabiti RAPORLANMALIDIR. - [C-1-2] 5.4 bölümündeki ses kaydı koşullarını KARŞILAMALIDIR.
- [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
- [SR] 7.8.3 bölümünde açıklandığı gibi, ultrasona yakın kayıt özelliğini desteklemek için KESİNLİKLE ÖNERİLİR.
Cihaz uygulamalarında mikrofon yoksa:
- [C-2-1]
android.hardware.microphone
özelliği sabiti RAPORLANMAMALIDIR. - [C-2-2] 7. bölüm uyarınca ses kaydı API'si en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.
7.8.2. Ses Çıkışı
Cihaz uygulamalarında USB ses sınıfı kullanılarak 4 iletkenli 3, 5 mm ses jakı veya USB ana makine modu bağlantı noktası gibi bir ses çıkışı çevre birimi için hoparlör ya da ses/multimedya çıkışı bağlantı noktası varsa:
- [C-1-1]
android.hardware.audio.output
özelliği sabiti RAPORLANMALIDIR. - [C-1-2] 5.5 bölümündeki ses çalma koşullarını KARŞILAMALIDIR.
- [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
- [SR] 7.8.3 bölümünde açıklandığı gibi, ultrasona yakın oynatmayı desteklemeniz KESİNLİKLE ÖNERİLİR.
Cihaz uygulamalarında hoparlör veya ses çıkışı bağlantı noktası yoksa:
- [C-2-1]
android.hardware.audio.output
özelliği RAPORLANMAMALIDIR. - [C-2-2] Ses çıkışıyla ilgili API'ler en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.
Bu bölümdeki amaçlar doğrultusunda "çıkış bağlantı noktası", 3, 5 mm ses jakı, HDMI veya USB ses sınıfına sahip USB ana bilgisayar modu bağlantı noktası gibi bir fiziksel arayüzdür. Bluetooth, kablosuz veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" olarak kabul edilmez.
7.8.2.1. Analog Ses Bağlantı Noktaları
Android ekosisteminde 3,5 mm ses fişini kullanan kulaklıklar ve diğer ses aksesuarlarıyla uyumlu olabilmek için cihaz uygulamaları bir veya daha fazla analog ses bağlantı noktası içeriyorsa:
- [C-SR] Ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:
- [C-1-1] Stereo kulaklıklarda ve mikrofonlu stereo kulaklıklarda ses çalmayı DESTEKLEMELİDİR.
- [C-1-2] CTIA pin çıkışı sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR.
- [C-1-3] Ses fişindeki mikrofon ve toprak iletkenleri arasında aşağıdaki 3 eşdeğer empedans aralığı için algılama ve tuş kodlarına eşleme DESTEKLENMELİDİR:
-
70 ohm veya daha az:
KEYCODE_HEADSETHOOK
-
210-290 ohm:
KEYCODE_VOLUME_UP
-
360-680 ohm:
KEYCODE_VOLUME_DOWN
-
70 ohm veya daha az:
- [C-1-4] Fiş takıldığında
ACTION_HEADSET_PLUG
tetiklenmelidir ancak yalnızca fişteki tüm kontaklar jak üzerindeki ilgili segmentlere temas ettikten sonra tetiklenmelidir. - [C-1-5] 32 ohm hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
- [C-1-6] 1,8 V ~ 2,9 V arasında bir mikrofon önyargı voltajına SAHİP OLMALIDIR.
- [C-1-7] Ses fişindeki mikrofon ve toprak iletkenleri arasında aşağıdaki eşdeğer empedans aralığı için tuş kodunu algılamalı ve tuş koduyla eşlemelidir:
-
110-180 ohm:
KEYCODE_VOICE_ASSIST
-
110-180 ohm:
- [C-SR] OMTP pin çıkışı sırasına sahip ses fişlerini desteklemek için KESİNLİKLE ÖNERİLİR.
- [C-SR] Mikrofonlu stereo kulaklıklardan ses kaydının desteklenmesi ÖNEMLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 4 iletkenli 3,5 mm ses jakı varsa, mikrofon destekleniyorsa ve android.intent.action.HEADSET_PLUG
, ek değerli mikrofon ayarı 1 olarak yayınlanıyorsa:
- [C-2-1] Takılı ses aksesuarındaki mikrofonun algılanması DESTEKLENMELİDİR.
7.8.3. Near-Ultrasound
Yakın ultrasonik ses, 18,5 kHz ile 20 kHz arasındaki banttır.
Cihaz uygulamaları:
- AudioManager.getProperty API aracılığıyla yakın ultrason ses özelliği desteğini aşağıdaki şekilde DOĞRU olarak bildirmelidir:
PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND
değeri "true" ise VOICE_RECOGNITION
ve UNPROCESSED
ses kaynakları aşağıdaki şartları KARŞILAMALIDIR:
- [C-1-1] Mikrofonun 18,5 kHz ile 20 kHz bandındaki ortalama güç yanıtı, 2 kHz'deki yanıttan en fazla 15 dB daha düşük OLMALIDIR.
- [C-1-2] Mikrofonun 18,5 kHz - 20 kHz aralığındaki ağırlıksız sinyal-gürültü oranı, -26 dBFS'de 19 kHz ton için 50 dB'den düşük OLMAMALIDIR.
PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND
"true" ise:
- [C-2-1] Hoparlörün 18,5 kHz - 20 kHz aralığındaki ortalama yanıtı, 2 kHz'deki yanıttan en fazla 40 dB daha düşük OLMALIDIR.
7.9. Sanal Gerçeklik
Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "sanal gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamaları, bu bölümde ayrıntılı olarak açıklandığı gibi bu API'leri ve davranışları düzgün bir şekilde uygulamalıdır.
7.9.1. Sanal Gerçeklik Modu
Android, bildirimlerin stereoskopik olarak işlenmesini sağlayan ve bir VR uygulaması kullanıcı odağındayken tek gözlü sistem kullanıcı arayüzü bileşenlerini devre dışı bırakan VR Modu'nu destekler.
7.9.2. Sanal Gerçeklik Modu - Yüksek Performans
Cihaz uygulamaları VR modunu destekliyorsa:
- [C-1-1] En az 2 fiziksel çekirdeğe SAHİP OLMALIDIR.
- [C-1-2]
android.hardware.vr.high_performance
özelliği BİLDİRİLMELİDİR. - [C-1-3] Sürekli performans modu desteklenmelidir.
- [C-1-4] OpenGL ES 3.2'yi DESTEKLEMELİDİR.
- [C-1-5]
android.hardware.vulkan.level
0 desteklenmelidir. android.hardware.vulkan.level
1 veya daha yeni bir sürüm desteklenmelidir.- [C-1-6]
EGL_KHR_mutable_render_buffer
,EGL_ANDROID_front_buffer_auto_refresh
,EGL_ANDROID_get_native_client_buffer
,EGL_KHR_fence_sync
,EGL_KHR_wait_sync
,EGL_IMG_context_priority
,EGL_EXT_protected_content
,EGL_EXT_image_gl_colorspace
uygulanmalı ve uzantılar, kullanılabilir EGL uzantılarının listesinde gösterilmelidir. - [C-1-8]
GL_EXT_multisampled_render_to_texture2
,GL_OVR_multiview
,GL_OVR_multiview2
,GL_OVR_multiview_multisampled_render_to_texture
,GL_EXT_protected_textures
uygulanmalı ve uzantılar, kullanılabilir GL uzantıları listesinde gösterilmelidir. - [C-SR]
GL_EXT_external_buffer
,GL_EXT_EGL_image_array
uygulanması ve uzantıların, kullanılabilen GL uzantıları listesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] Vulkan 1.1'i desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR]
VK_ANDROID_external_memory_android_hardware_buffer
,VK_GOOGLE_display_timing
,VK_KHR_shared_presentable_image
'ı uygulamaları ve kullanılabilir Vulkan uzantıları listesinde göstermeleri ŞİDDETLE TAVSİYE EDİLİR. - [C-SR]
flags
hemVK_QUEUE_GRAPHICS_BIT
hem deVK_QUEUE_COMPUTE_BIT
içerdiğinde vequeueCount
en az 2 olduğunda en az bir Vulkan sıra ailesinin kullanıma sunulması ŞİDDETLE TAVSİYE EDİLİR. - [C-1-7] GPU ve ekran, paylaşılan ön arabelleğe erişimi senkronize edebilmelidir. Böylece, iki oluşturma bağlamıyla 60 FPS'de VR içeriğinin alternatif gözle oluşturulması, görünür yırtılma artefaktları olmadan gösterilir.
- [C-1-9] NDK'da açıklandığı gibi
AHardwareBuffer
işaretleriAHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER
,AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA
veAHARDWAREBUFFER_USAGE_PROTECTED_CONTENT
için destek uygulanmalıdır. - [C-1-10] En azından şu biçimler için
AHardwareBuffer
s'ninAHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT
,AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE
,AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT
kullanım işaretlerinin herhangi bir kombinasyonuyla desteklenmesi ZORUNLUDUR:AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM
,AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM
,AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM
,AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT
. - [C-SR]
AHardwareBuffer
ile C-1-10'da belirtilen bayrak ve biçimlerin tahsisini desteklemek için ŞİDDETLE TAVSİYE EDİLİR. - [C-1-11] Sıkıştırılmış olarak ortalama 40 Mb/sn (30 kare/sn hızında 10 Mb/sn ile 1920 x 1080 çözünürlükte 4 örnek veya 60 kare/sn hızında 20 Mb/sn ile 1920 x 1080 çözünürlükte 2 örnek) ile en az 3840 x 2160 çözünürlükte ve 30 kare/sn hızında H.264 kod çözme işlemini desteklemelidir.
- [C-1-12] HEVC ve VP9'u DESTEKLEMELİ, ortalama 10 Mb/sn'ye sıkıştırılmış 30 kare/sn hızında en az 1.920 x 1.080 çözünürlükte kod çözme İŞLEMİNİ YAPABİLMELİ ve 30 kare/sn hızında 20 Mb/sn (30 kare/sn hızında 5 Mb/sn hızında 1.920 x 1.080 çözünürlükte 4 örneğe eşdeğer) hızında 3.840 x 2.160 çözünürlükte kod çözme İŞLEMİNİ YAPABİLMELİDİR.
- [C-1-13]
HardwarePropertiesManager.getDeviceTemperatures
API'yi desteklemeli ve cilt sıcaklığı için doğru değerler döndürmelidir. - [C-1-14] Gömülü bir ekranı OLMALI ve çözünürlüğü EN AZ 1920 x 1080 olmalıdır.
- [C-SR] En az 2560 x 1440 ekran çözünürlüğüne sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-15] Ekran, VR modundayken en az 60 Hz hızında güncellenmelidir.
- [C-1-17] Ekran, kalıcılığı ≤ 5 milisaniye olan düşük kalıcılık modunu desteklemelidir. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
- [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı bölüm 7.4.3 desteklenmelidir.
- [C-1-19] Aşağıdaki varsayılan sensör türlerinin tümü için Doğrudan Kanal Türü'nü desteklemeli ve doğru şekilde bildirmelidir:
-
TYPE_ACCELEROMETER
-
TYPE_ACCELEROMETER_UNCALIBRATED
-
TYPE_GYROSCOPE
-
TYPE_GYROSCOPE_UNCALIBRATED
-
TYPE_MAGNETIC_FIELD
-
TYPE_MAGNETIC_FIELD_UNCALIBRATED
-
- [C-SR], yukarıda listelenen tüm Doğrudan Kanal Türleri için
TYPE_HARDWARE_BUFFER
doğrudan kanal türünü desteklemek üzere ŞİDDETLE TAVSİYE EDİLİR. - [C-1-21] Bölüm 7.3.9'da belirtildiği gibi
android.hardware.hifi_sensors
için jiroskop, ivme ölçer ve manyetometre ile ilgili şartları KARŞILAMALIDIR. - [C-SR]
android.hardware.sensor.hifi_sensors
özelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR. - [C-1-22] Uçtan uca hareketten fotona gecikme süresi 28 milisaniyeden yüksek OLMAMALIDIR.
- [C-SR] Uçtan uca hareketten fotona gecikme süresinin 20 milisaniyeden yüksek olmaması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-23] Siyah-beyaz geçişinden sonraki ilk karedeki piksellerin parlaklığı ile sabit durumdaki beyaz piksellerin parlaklığı arasındaki oran olan ilk kare oranı EN AZ %85 olmalıdır.
- [C-SR] İlk kare oranının en az %90 olması KESİNLİKLE ÖNERİLİR.
- Ön plandaki uygulamaya özel bir çekirdek sağlayabilir ve en üstteki ön plan uygulamasına özel CPU çekirdeklerinin sayısını döndürmek için
Process.getExclusiveCores
API'sini destekleyebilir.
Özel çekirdek destekleniyorsa çekirdek:
- [C-2-1] Üzerinde başka kullanıcı alanı işlemlerinin çalışmasına izin VERMEMELİDİR (uygulama tarafından kullanılan cihaz sürücüleri hariç), ancak gerektiğinde bazı çekirdek işlemlerinin çalışmasına İZİN VEREBİLİR.
8. Performans ve Güç
Minimum performans ve güç ölçütlerinden bazıları, kullanıcı deneyimi açısından kritik öneme sahiptir ve geliştiricilerin uygulama geliştirirken sahip olacağı temel varsayımları etkiler.
8.1. Kullanıcı Deneyimi Tutarlılığı
Uygulamalar ve oyunlar için tutarlı bir kare hızı ve yanıt süreleri sağlamak üzere belirli minimum gereksinimler varsa son kullanıcıya sorunsuz bir kullanıcı arayüzü sunulabilir. Cihaz uygulamaları, cihaz türüne bağlı olarak bölüm 2'de açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev değiştirme için ölçülebilir gereksinimlere SAHİP OLABİLİR.
8.2. Dosya G/Ç Erişim Performansı
Uygulamanın özel veri depolama alanında (/data
bölümü) tutarlı bir dosya erişimi performansı için ortak bir temel oluşturmak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak uygun beklentiler belirlemesine olanak tanır. Cihaz uygulamaları, cihaz türüne bağlı olarak aşağıdaki okuma ve yazma işlemleri için 2. bölümde açıklanan belirli şartlara sahip OLABİLİR:
- Sıralı yazma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
- Rastgele yazma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
- Sıralı okuma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.
- Rastgele okuma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.
8.3. Güç tasarrufu modları
Cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [C-1-1] Uygulama Bekletme ve Doze güç tasarrufu modlarının tetikleme, bakım, uyandırma algoritmaları ve genel sistem ayarlarının kullanımı için AOSP uygulamasından sapılMAMALIDIR.
- [C-1-2] Uygulama beklemede özelliği için her gruptaki uygulamalarda işlerin, alarmın ve ağın sıklık sınırını yönetmek üzere genel ayarların kullanımıyla ilgili AOSP uygulamasından SAPMAMALIDIR.
- [C-1-3] Uygulama Bekletme için kullanılan Uygulama Bekletme Grupları sayısı bakımından AOSP uygulamasından sapmamalıdır.
- [C-1-4] Uygulama Bekletme Grupları ve Doze, Güç Yönetimi'nde açıklandığı şekilde uygulanmalıdır.
- [C-1-5] Cihaz güç tasarrufu modundayken
PowerManager.isPowerSaveMode()
içintrue
DÖNMELİDİR. - [C-SR] Pil tasarrufu özelliğini etkinleştirme ve devre dışı bırakma konusunda kullanıcıya kolaylık sağlamak KESİNLİKLE ÖNERİLİR.
- [C-SR] Uygulama Bekletme ve Doze güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak tanınması KESİNLİKLE ÖNERİLİR.
Android cihaz uygulamaları, güç tasarrufu modlarına ek olarak Advanced Configuration and Power Interface (ACPI) tarafından tanımlanan 4 uyku güç durumunun herhangi birini veya tamamını uygulayabilir.
Cihaz uygulamaları, ACPI tarafından tanımlanan S4 güç durumlarını uyguluyorsa:
- [C-1-1] YALNIZCA kullanıcı cihazı etkin olmayan bir duruma getirmek için açık bir işlem yaptıktan sonra (ör. cihazın fiziksel bir parçası olan bir kapağı kapatarak veya bir aracı ya da televizyonu kapatarak) ve kullanıcı cihazı yeniden etkinleştirmeden önce (ör. kapağı açarak veya aracı ya da televizyonu tekrar açarak) bu duruma girmelidir.
Cihaz uygulamaları, ACPI tarafından tanımlanan S3 güç durumlarını uyguluyorsa:
-
[C-2-1] Yukarıdaki C-1-1 koşulunu KARŞILAMALI veya yalnızca üçüncü taraf uygulamalarının sistem kaynaklarına (ör. ekran, CPU) ihtiyacı olmadığında S3 durumuna girmelidir.
Aksine, üçüncü taraf uygulamaların sistem kaynaklarına ihtiyacı olduğunda bu SDK'da açıklandığı gibi S3 durumundan çıkılması GEREKİR.
Örneğin, üçüncü taraf uygulamaları
FLAG_KEEP_SCREEN_ON
aracılığıyla ekranın açık kalmasını veyaPARTIAL_WAKE_LOCK
aracılığıyla CPU'nun çalışmaya devam etmesini isterken, C-1-1'de açıklandığı gibi kullanıcı cihazı etkin olmayan bir duruma getirmek için açıkça işlem yapmadığı sürece cihaz S3 durumuna GİRMEMELİDİR. Buna karşılık, üçüncü taraf uygulamalarının JobScheduler aracılığıyla uyguladığı bir görev tetiklendiğinde veya Firebase Cloud Messaging üçüncü taraf uygulamalarına teslim edildiğinde, kullanıcı cihazı etkin olmayan bir duruma getirmediği sürece cihaz S3 durumundan çıkmalıdır. Bunlar kapsamlı örnekler değildir ve AOSP, bu durumdan uyandırmayı tetikleyen kapsamlı uyandırma sinyalleri uygular.
8.4. Güç Tüketimi Muhasebesi
Güç tüketiminin daha doğru bir şekilde muhasebeleştirilmesi ve raporlanması, uygulama geliştiriciye hem teşvikler hem de uygulamanın güç kullanım şeklini optimize etme araçları sunar.
Cihaz uygulamaları:
- [SR] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her bir donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili sağlanması ÖNEMLE TAVSİYE EDİLİR.
- [SR] Tüm güç tüketimi değerlerinin miliamper saat (mAh) cinsinden bildirilmesi KESİNLİKLE ÖNERİLİR.
- [SR] Her işlemin UID'si başına CPU güç tüketiminin bildirilmesi ÖNEMLE TAVSİYE EDİ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ın, uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla sunulması KESİNLİKLE ÖNERİLİR. - Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
8.5. Tutarlı Performans
Yüksek performanslı ve uzun süre çalışan uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırları nedeniyle CPU'nun hızını düşürmesi nedeniyle önemli ölçüde değişebilir. Android, cihazın kapasitesi yeterli olduğunda en üstteki ön plan uygulamasının, sistemden kaynakların dağıtımını optimize etmesini isteyebilmesi için programatik arayüzler içerir.
Cihaz uygulamaları:
-
[C-0-1]
PowerManager.isSustainedPerformanceModeSupported()
API yöntemiyle Sürekli Performans Modu desteğini doğru şekilde bildirmelidir. -
Sürekli Performans Modu desteklenmelidir.
Cihaz uygulamaları, Sürekli Performans Modu'nu desteklediğini bildiriyorsa:
- [C-1-1] Uygulama istediğinde, ön plandaki en üst uygulamaya en az 30 dakika boyunca tutarlı bir performans düzeyi SAĞLANMALIDIR.
- [C-1-2]
Window.setSustainedPerformanceMode()
API'si ve diğer ilgili API'ler KULLANILMALIDIR.
Cihaz uygulamaları iki veya daha fazla CPU çekirdeği içeriyorsa:
- En az bir özel çekirdek sağlamalıdır. Bu çekirdek, ön plandaki en üst uygulama tarafından ayrılabilir.
Cihaz uygulamaları, üstteki ön plan uygulaması için özel bir çekirdek ayırmayı destekliyorsa:
- [C-2-1] Üstteki ön plan uygulaması tarafından ayrılabilen özel çekirdeklerin kimlik numaralarını
Process.getExclusiveCores()
API yöntemiyle bildirmelidir. - [C-2-2] Uygulamanın özel çekirdeklerde çalışması için kullanılan cihaz sürücüleri dışında hiçbir kullanıcı alanı sürecine izin VERİLMEMELİDİR ancak gerektiğinde bazı çekirdek süreçlerinin çalışmasına İZİN VERİLEBİLİR.
Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:
- [C-3-1]
Process.getExclusiveCores()
API yöntemiyle boş bir liste döndürmelidir.
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamaları:
-
[C-0-1] Android geliştirici belgelerindeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.
-
[C-0-2] Üçüncü taraflardan/yetkililerden ek izinler/sertifikalar gerektirmeden, kendi kendine imzalanmış uygulamaların yüklenmesini DESTEKLEMELİDİR. Daha net bir ifadeyle, uyumlu cihazlar aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını DESTEKLEMELİDİR.
9.1. İzinler
Cihaz uygulamaları:
-
[C-0-1] Android geliştirici belgelerinde tanımlandığı şekilde Android izin modelini desteklemelidir. Özellikle, SDK belgelerinde tanımlandığı şekilde her izni uygulamaları ZORUNLUDUR. Hiçbir izin atlanamaz, değiştirilemez veya göz ardı edilemez.
-
Yeni izin kimliği dizeleri
android.\*
ad alanında olmadığı sürece ek izinler EKLEYEBİLİR. -
[C-0-2]
protectionLevel
değeriPROTECTION_FLAG_PRIVILEGED
olan izinler YALNIZCA sistem görüntüsünün ayrıcalıklı yollarında önceden yüklenmiş uygulamalara ve her uygulama için açıkça izin verilenler listesindeki izinlerin alt kümesine verilmelidir. AOSP uygulaması,etc/permissions/
yolundaki dosyalardan her uygulama için izin verilenler listesindeki izinleri okuyup uygulayarak vesystem/priv-app
yolunu ayrıcalıklı yol olarak kullanarak bu şartı karşılar.
Tehlikeli koruma düzeyine sahip izinler, çalışma zamanı izinleridir. targetSdkVersion
> 22 olan uygulamalar, çalışma zamanında bunları ister.
Cihaz uygulamaları:
- [C-0-3] Kullanıcıya, istenen çalışma zamanı izinlerini verip vermeyeceğine karar verebileceği özel bir arayüz GÖSTERİLMELİ ve çalışma zamanı izinlerini yönetebileceği bir arayüz SAĞLANMALIDIR.
- [C-0-4] Her iki kullanıcı arayüzünün de yalnızca bir uygulaması OLMALIDIR.
- [C-0-5] Önceden yüklenmiş uygulamalara şu durumlar hariç çalışma zamanı izni VERİLMEMELİDİR:
- Kullanıcının izni, uygulama kullanmadan önce alınabilir.
- Çalışma zamanında istenen izinler, önceden yüklenmiş uygulamanın varsayılan işleyici olarak ayarlandığı bir amaç kalıbıyla ilişkilendirilir.
- [C-0-6] YALNIZCA düzgün şekilde güvenliği sağlanmış bir kurtarma aracısı kaydeden sistem uygulamalarına
android.permission.RECOVER_KEYSTORE
izni VERİLMELİDİR. Düzgün şekilde güvenliği sağlanmış bir kurtarma aracısı, cihaz dışı uzak depolama ile senkronize olan, cihaz üzerinde çalışan bir yazılım aracısı olarak tanımlanır. Bu aracılar, kilit ekranı bilgi faktörüne yönelik deneme yanılma saldırılarını önlemek için Google Cloud Key Vault Hizmeti'nde açıklanan korumaya eşdeğer veya daha güçlü bir korumaya sahip güvenli donanımla donatılmıştır.
Cihaz uygulamaları önceden yüklenmiş bir uygulama içeriyorsa veya üçüncü taraf uygulamalarının kullanım istatistiklerine erişmesine izin vermek istiyorsa:
- [SR]
android.permission.PACKAGE_USAGE_STATS
iznini bildiren uygulamalar içinandroid.settings.ACTION_USAGE_ACCESS_SETTINGS
amacına yanıt olarak kullanım istatistiklerine erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma sağlamanız ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, önceden yüklenmiş uygulamalar da dahil olmak üzere uygulamaların kullanım istatistiklerine erişmesini engellemeyi amaçlıyorsa:
- [C-1-1]
android.settings.ACTION_USAGE_ACCESS_SETTINGS
amaç kalıbını işleyen bir etkinliğe sahip olmaya DEVAM ETMELİ ancak bunu işlem yapmama (no-op) olarak uygulamalıdır. Yani, kullanıcıya erişim reddedildiğinde olduğu gibi eşdeğer bir davranışa sahip olmalıdır.
9.2. UID ve süreç izolasyonu
Cihaz uygulamaları:
- [C-0-1] Her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alan modelini DESTEKLEMELİDİR.
- [C-0-2] Uygulamaların Güvenlik ve İzinler referansında tanımlandığı şekilde uygun şekilde imzalanıp oluşturulması koşuluyla, aynı Linux kullanıcı kimliği olarak birden fazla uygulamanın çalıştırılmasını DESTEKLEMELİDİR.
9.3. Dosya Sistemi İzinleri
Cihaz uygulamaları:
- [C-0-1] Güvenlik ve İzinler referansında tanımlandığı şekilde Android dosya erişimi izinleri modelini DESTEKLEMELİDİR.
9.4. Alternatif Yürütme Ortamları
Cihaz uygulamaları, Dalvik Yürütülebilir Biçimi veya yerel kod dışında bir yazılım ya da teknoloji kullanarak uygulamaları yürüten çalışma zamanı ortamları içerse bile Android güvenlik ve izin modelinin tutarlılığını KORUMALIDIR. Başka bir deyişle:
-
[C-0-1] Alternatif çalışma zamanları, 9. bölümde başka bir yerde açıklandığı gibi Android uygulamaları olmalı ve standart Android güvenlik modeline uymalıdır.
-
[C-0-2] Alternatif çalışma zamanlarına, çalışma zamanının
AndroidManifest.xml
dosyasında <uses-permission
> mekanizması aracılığıyla istenmeyen izinlerle korunan kaynaklara erişim izni VERİLMEMELİDİR. -
[C-0-3] Alternatif çalışma zamanları, uygulamaların sistem uygulamalarıyla sınırlı Android izinleriyle korunan özelliklerden yararlanmasına İZİN VERMEMELİDİR.
-
[C-0-4] Alternatif çalışma zamanları, Android korumalı alan modeline uymalıdır ve alternatif çalışma zamanı kullanılarak yüklenen uygulamalar, paylaşılan kullanıcı kimliği ve imzalama sertifikası gibi standart Android mekanizmaları dışında cihazda yüklü başka bir uygulamanın korumalı alanını yeniden kullanamaz.
-
[C-0-5] Alternatif çalışma zamanları, diğer Android uygulamalarına karşılık gelen sanal ortamlara erişim başlatmamalı, erişim vermemeli veya bu sanal ortamlara erişim verilmemelidir.
-
[C-0-6] Alternatif çalışma zamanları, süper kullanıcı (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılmamalı, bu ayrıcalıklar verilmemeli ya da diğer uygulamalara verilmemelidir.
-
[C-0-7] Alternatif çalışma zamanlarının
.apk
dosyaları cihaz uygulamalarının sistem görüntüsüne dahil edildiğinde, cihaz uygulamalarıyla birlikte gelen diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla İMZALANMALIDIR. -
[C-0-8] Uygulamalar yüklenirken alternatif çalışma zamanları, uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMALIDIR.
-
[C-0-9] Bir uygulamanın, karşılık gelen bir Android izni olan bir cihaz kaynağını (ör. kamera, GPS vb.) kullanması gerektiğinde alternatif çalışma zamanı, kullanıcıyı uygulamanın bu kaynağa erişebileceği konusunda bilgilendirmelidir.
-
[C-0-10] Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmediğinde, bu çalışma zamanını kullanan herhangi bir uygulama yüklenirken çalışma zamanının sahip olduğu tüm izinleri LİSTELEMELİDİR.
-
Alternatif çalışma zamanları, uygulamaları
PackageManager
aracılığıyla ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir. -
Alternatif çalışma zamanları, alternatif çalışma zamanını kullanan tüm uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlayabilir.
9.5. Çok Kullanıcılı Destek
Android, birden fazla kullanıcıyı destekler ve kullanıcıların tamamen izole edilmesini sağlar.
- Cihaz uygulamaları, birincil harici depolama için çıkarılabilir medya kullanıyorsa çok kullanıcılı modu etkinleştirebilir ancak ETKİNLEŞTİRMEMELİDİR.
Cihaz uygulamaları birden fazla kullanıcı içeriyorsa:
- [C-1-1] Çoklu kullanıcı desteği ile ilgili aşağıdaki şartları KARŞILAMALIDIR.
- [C-1-2] MUST, her kullanıcı için API'lerde Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.
- [C-1-3] Her kullanıcı örneği için ayrı ve yalıtılmış paylaşılan uygulama depolama alanı (diğer adıyla
/sdcard
) dizinleri OLMALIDIR. - [C-1-4] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolansa bile başka bir kullanıcıya ait dosyaları listelemesine, okumasına ya da bu dosyalara yazmasına İZİN VERİLMEMELİDİR.
- [C-1-5] Cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanıyorsa çok kullanıcılı mod etkinleştirildiğinde SD kartın içeriği, yalnızca sistemin erişebildiği ve çıkarılamayan medyada depolanan bir anahtarla ŞİFRELENMELİDİR. Bu durum, ana bilgisayarın medyayı okuyamamasına neden olacağından cihaz uygulamalarının, ana bilgisayarlara mevcut kullanıcının verilerine erişim sağlamak için MTP'ye veya benzer bir sisteme geçmesi gerekir.
Cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildirmezse:
- [C-2-1] Cihaz sahiplerinin cihazdaki ek kullanıcıları ve bu kullanıcıların cihazda yapabileceklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı 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 kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
Cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony
özellik işaretini bildiriyorsa:
- [C-3-1] Kısıtlanmış profilleri desteklememeli ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için kontrollerin AOSP uygulamasında yer alanlarla uyumlu olmalıdır.
9.6. Premium SMS Uyarısı
Android, kullanıcılara gönderilen premium SMS mesajları hakkında uyarı verme özelliğini destekler. Premium SMS iletileri, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıya ücret yansıtılmasına neden olabilecek kısa mesajlardır.
Cihaz uygulamaları android.hardware.telephony
desteğini beyan ediyorsa:
- [C-1-1] Cihazdaki
/data/misc/sms/codes.xml
dosyasında tanımlanan normal ifadelerle belirlenen numaralara SMS mesajı göndermeden önce kullanıcıları UYARMALIDIR. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılayan bir uygulama sağlar.
9.7. Güvenlik Özellikleri
Cihaz uygulamaları, hem çekirdekte hem de platformda aşağıdaki gibi açıklanan güvenlik özelliklerine uygunluğu SAĞLAMALIDIR.
Android korumalı alanı, Security-Enhanced Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikleri içerir. Cihaz uygulamaları:
- [C-0-1] SELinux veya diğer güvenlik özellikleri Android çerçevesinin altında uygulandığında bile mevcut uygulamalarla uyumluluk KORUNMALIDIR.
- [C-0-2] Aşağıdaki Android çerçevesinin altında uygulanan güvenlik özelliği tarafından bir güvenlik ihlali algılanıp başarıyla engellendiğinde görünür bir kullanıcı arayüzüne SAHİP OLMAMALI, ancak engellenmemiş bir güvenlik ihlali gerçekleşip başarılı bir saldırıya yol açtığında görünür bir kullanıcı arayüzüne SAHİP OLABİLİR.
- [C-0-3] SELinux'u veya Android çerçevesinin altında uygulanan diğer güvenlik özelliklerini kullanıcı ya da uygulama geliştirici tarafından yapılandırılabilir HALE GETİRMEMELİDİR.
- [C-0-4] Bir API (ör. Cihaz Yönetimi API'si) aracılığıyla başka bir uygulamayı etkileyebilen bir uygulamanın, uyumluluğu bozan bir politika yapılandırmasına İZİN VERİLMEMELİDİR.
- [C-0-5] Medya çerçevesi, Android Açık Kaynak Projesi sitesinde açıklandığı gibi her işlem için erişimin daha dar kapsamlı olarak verilebilmesi amacıyla birden fazla işleme bölünmelidir.
- [C-0-6] Çok iş parçacıklı programlardan yapılandırılabilir bir politika kullanılarak sistem çağrılarının filtrelenmesine olanak tanıyan bir çekirdek uygulama korumalı alan mekanizması UYGULANMALIDIR. Yukarı akış Android Açık Kaynak Projesi, source.android.com'un çekirdek yapılandırması bölümünde açıklandığı gibi iş parçacığı grubu senkronizasyonu (TSYNC) ile seccomp-BPF'yi etkinleştirerek bu koşulu karşılar.
Çekirdek bütünlüğü ve kendi kendini koruma özellikleri, Android güvenliğinin ayrılmaz bir parçasıdır. Cihaz uygulamaları:
- [C-0-7] Çekirdek yığını arabellek taşması korumaları (ör.
CONFIG_CC_STACKPROTECTOR_STRONG
) UYGULANMALIDIR. - [C-0-8] 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
veyaCONFIG_STRICT_KERNEL_RWX
) sıkı çekirdek belleği korumaları UYGULANMALIDIR. - [C-0-9] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda, kullanıcı alanı ile çekirdek alanı arasındaki kopyaların statik ve dinamik nesne boyutu sınırları kontrolünü (ör.
CONFIG_HARDENED_USERCOPY
) uygulamalıdır. - [C-0-10] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda çekirdek modunda yürütülürken kullanıcı alanı belleğini yürütmemelidir (ör. donanım PXN veya
CONFIG_CPU_SW_DOMAIN_PAN
ya daCONFIG_ARM64_SW_TTBR0_PAN
aracılığıyla emüle edilmiş). - [C-0-11] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda, normal usercopy erişim API'leri (ör. donanım PAN veya
CONFIG_CPU_SW_DOMAIN_PAN
ya daCONFIG_ARM64_SW_TTBR0_PAN
üzerinden emüle edilmiş) dışında çekirdekteki kullanıcı alanı belleği okunmamalı veya yazılmamalıdır. - [C-0-12] API düzeyi 28 veya daha yüksek bir sürümle birlikte gönderilen tüm cihazlarda çekirdek sayfası tablosu izolasyonu (ör.
CONFIG_PAGE_TABLE_ISOLATION
veya "CONFIG_UNMAP_KERNEL_AT_EL0") uygulanmalıdır. - [SR] Yalnızca başlatma sırasında yazılan çekirdek verilerinin, başlatma işleminden sonra salt okunur olarak işaretlenmesi (ör.
__ro_after_init
) ŞİDDETLE TAVSİYE EDİLİR. - [SR] Çekirdek kodu ve belleğin düzeninin rastgele hale getirilmesi ve rastgele hale getirme işlemini tehlikeye atacak ifşalardan (ör.
CONFIG_RANDOMIZE_BASE
ile/chosen/kaslr-seed Device Tree node
veyaEFI_RNG_PROTOCOL
üzerinden önyükleyici entropisi) kaçınılması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Linux çekirdeği kullanıyorsa:
- [C-1-1] SELinux'u uygulamalıdır.
- [C-1-2] SELinux, genel zorlama moduna AYARLANMALIDIR.
- [C-1-3] Tüm alanlar zorunlu kılma modunda yapılandırılmalıdır. Cihaza/tedarikçiye özgü alanlar da dahil olmak üzere izin verilen mod alanlarına izin verilmez.
- [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy klasöründe bulunan neverallow kuralları değiştirilmemeli, atlanmamalı veya bunların yerine başka kurallar konmamalıdır. Politika, hem AOSP SELinux alanları hem de cihaza/tedarikçiye özel alanlar için mevcut tüm neverallow kurallarıyla derlenmelidir.
- [C-1-5] API düzeyi 28 veya daha yüksek sürümleri hedefleyen üçüncü taraf uygulamaları, her uygulamanın özel veri dizininde uygulama başına SELinux kısıtlamalarıyla uygulama başına SELinux sanal alanlarında ÇALIŞTIRILMALIDIR.
- Yukarı akış Android Açık Kaynak Projesi'nin system/sepolicy klasöründe sağlanan varsayılan SELinux politikasını KORUMALI ve yalnızca kendi cihaza özel yapılandırmaları için bu politikaya eklemeler YAPMALIDIR.
Cihaz uygulamaları daha önceki bir Android sürümünde kullanıma sunulduysa ve sistem yazılımı güncellemesiyle [C-1-1] ve [C-1-5] şartlarını karşılayamıyorsa bu şartlardan MUAF TUTULABİLİR.
Cihaz uygulamaları Linux dışında bir çekirdek kullanıyorsa:
- [C-2-1] SELinux'a eşdeğer zorunlu bir erişim denetimi sistemi KULLANILMALIDIR.
Android, cihaz güvenliğinin ayrılmaz bir parçası olan birden fazla derinlemesine savunma özelliği içerir.
Cihaz uygulamaları:
- [C-SR] Üzerinde etkinleştirilmiş olan bileşenlerde Kontrol Akışı Bütünlüğü (CFI) veya Tam Sayı Taşması Temizleme (IntSan) özelliğinin devre dışı bırakılmaması ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] CFI ve IntSan'da açıklandığı gibi, ek güvenlik açısından hassas kullanıcı alanı bileşenleri için hem CFI hem de IntSan'ın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR.
9.8. Gizlilik
9.8.1. Kullanım Geçmişi
Android, kullanıcının seçimlerinin geçmişini saklar ve bu geçmişi UsageStatsManager ile yönetir.
Cihaz uygulamaları:
- [C-0-1] Bu tür kullanıcı geçmişi için makul bir saklama süresi OLMALIDIR.
- [SR] AOSP uygulamasında varsayılan olarak yapılandırılan 14 günlük saklama süresinin korunması ŞİDDETLE TAVSİYE EDİLİR.
Android, sistem etkinliklerini StatsLog
tanımlayıcılarını kullanarak depolar ve bu tür geçmişi StatsManager
ile IncidentManager
System API'si aracılığıyla yönetir.
Cihaz uygulamaları:
- [C-0-2] MUST only include the fields marked with
DEST_AUTOMATIC
in the incident report created by the System API classIncidentManager
. - [C-0-3]
StatsLog
SDK dokümanlarında açıklanan etkinlikler dışında başka bir etkinliği günlüğe kaydetmek için sistem etkinliği tanımlayıcıları KULLANILMAMALIDIR. Ek sistem etkinlikleri kaydedilirse 100.000 ile 200.000 arasındaki aralıkta farklı bir atom tanımlayıcısı KULLANILABİLİR.
9.8.2. Kayıt
Cihaz uygulamaları:
- [C-0-1] Kullanıcının izni olmadan veya devam eden net bildirimler olmadan, kullanıcının özel bilgilerini (ör. tuş vuruşları, ekranda gösterilen metin) cihazdan gönderen yazılım bileşenleri kutudan çıkarıldığında önceden yüklenmemeli veya dağıtılmamalıdır.
Cihaz uygulamaları, ekranda gösterilen içerikleri yakalayan ve/veya cihazda oynatılan ses akışını kaydeden işlevler içeriyorsa:
- [C-1-1] Bu işlev etkinleştirildiğinde ve aktif olarak yakalama/kayıt yapıldığında kullanıcıya sürekli bir bildirim GÖSTERİLMELİDİR.
Cihaz uygulamaları, kullanıcının bağlamı hakkında faydalı bilgiler çıkarmak için ortam sesini kaydetme özelliğine sahip, kutudan çıkarıldığında etkinleştirilmiş bir bileşen içeriyorsa:
- [C-2-1] Kaydedilen ham ses veya orijinal sese ya da neredeyse aynı olan bir kopyaya geri dönüştürülebilen herhangi bir biçim, kullanıcının açık izni olmadan cihazdaki kalıcı depolama alanında saklanmamalı veya cihazın dışına aktarılmamalıdır.
9.8.3. Bağlantı
Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:
- [C-1-1] USB bağlantı noktası üzerinden paylaşılan depolama alanının içeriğine erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü SUNULMALIDIR.
9.8.4. Ağ Trafiği
Cihaz uygulamaları:
- [C-0-1] Sistem tarafından güvenilen Sertifika Yetkilisi (CA) deposu için, yukarı akış Android Açık Kaynak Projesi'nde sağlanan kök sertifikalarla aynı kök sertifikalar önceden yüklenmelidir.
- [C-0-2] Boş bir kullanıcı kök CA deposuyla gönderilmelidir.
- [C-0-3] Kullanıcı kök CA'sı eklendiğinde, ağ trafiğinin izlenebileceğini belirten bir uyarı kullanıcıya GÖSTERİLMELİDİR.
Cihaz trafiği VPN üzerinden yönlendiriliyorsa cihaz uygulamaları:
- [C-1-1] Kullanıcıya aşağıdakilerden birini belirten bir uyarı GÖSTERİLMELİDİR:
- Bu ağ trafiği izlenebilir.
- Bu ağ trafiği, VPN'i sağlayan belirli VPN uygulaması üzerinden yönlendirilir.
Cihaz uygulamalarında, ağ verisi trafiğini bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN
izniyle bir VPN hizmetini önceden yükleme) ve varsayılan olarak kutudan çıkarıldığında etkin olan bir mekanizma varsa:
- [C-2-1] Bu VPN,
DevicePolicyManager.setAlwaysOnVpnPackage()
aracılığıyla Cihaz Politikası Denetleyicisi tarafından etkinleştirilmediği sürece bu mekanizmayı etkinleştirmeden önce kullanıcının izni İSTENMELİDİR. Bu durumda kullanıcının ayrı bir izin vermesi gerekmez, yalnızca bilgilendirilmesi YETERLİDİR.
Cihaz uygulamaları, üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için kullanıcıya bir kolaylık sunuyorsa:
- [C-3-1]
AndroidManifest.xml
dosyasında her zaman açık VPN hizmetini desteklemeyen uygulamalar için bu kullanıcı kolaylığını,SERVICE_META_DATA_SUPPORTS_ALWAYS_ON
özelliğinifalse
olarak ayarlayarak DEVRE DIŞI BIRAKMALIDIR.
9.9. Veri Depolama Şifrelemesi
Cihazda bulunan en yüksek performanslı AES teknolojisi (ör. ARM Cryptography Extensions) ile ölçülen Gelişmiş Şifreleme Standardı (AES) kripto performansı 50 MiB/sn'nin üzerindeyse cihaz uygulamaları:
- [C-1-1] Genellikle paylaşılan cihaz uygulamaları (ör. televizyon) hariç olmak üzere, uygulamanın özel verilerinin (
/data
bölümü) ve cihazın kalıcı, çıkarılamayan bir parçasıysa uygulamanın ortak depolama bölümünün (/sdcard
bölümü) veri depolama şifrelemesini desteklemelidir. - [C-1-2] Genellikle paylaşılan cihaz uygulamaları (ör. televizyon) hariç olmak üzere, kullanıcı kutudan çıkarma kurulum deneyimini tamamladığında veri depolama şifrelemesi varsayılan olarak ETKİNLEŞTİRİLMELİDİR.
AES şifreleme performansı 50 MiB/sn veya daha düşükse cihaz uygulamaları, aşağıdakilerin herhangi birinde listelenen AES biçimi yerine Adiantum-XChaCha12-AES kullanabilir: Bölüm 9.9.2'deki AES-256-XTS [C-1-5]; Bölüm 9.9.2'deki CBS-CTS modunda AES-256 [C-1-6]; Bölüm 9.9.3'teki AES [C-1-1]; Bölüm 9.9.3'teki AES [C-1-3].
Cihaz uygulamaları daha önceki bir Android sürümünde kullanıma sunulduysa ve sistem yazılımı güncellemesiyle şartı karşılayamıyorsa yukarıdaki şartlardan MUAF TUTULABİLİR.
Cihaz uygulamaları:
- Dosya Tabanlı Şifreleme (FBE) uygulayarak yukarıdaki veri depolama şifreleme şartını KARŞILAMALIDIR.
9.9.1. Doğrudan Başlatma
Cihaz uygulamaları:
-
[C-0-1] Depolama Şifreleme'yi desteklemeseler bile Direct Boot modu API'lerini uygulamalıdır.
-
[C-0-2]
ACTION_LOCKED_BOOT_COMPLETED
veACTION_USER_UNLOCKED
amaçları, doğrudan başlatmaya uygun uygulamalara cihaz şifrelemeli (DE) ve kimlik bilgisi şifrelemeli (CE) depolama konumlarının kullanıcı için kullanılabilir olduğunu bildirmek üzere yayınlanmaya DEVAM ETMELİDİR.
9.9.2. Dosya Tabanlı Şifreleme
Cihaz uygulamaları FBE'yi destekliyorsa:
- [C-1-1] Kullanıcıdan kimlik bilgisi istemeden başlatılmalı ve
ACTION_LOCKED_BOOT_COMPLETED
mesajı yayınlandıktan sonra Doğrudan Başlatma özelliğini destekleyen uygulamaların Cihaz Şifreleme (DE) depolama alanına erişmesine izin verilmelidir. - [C-1-2] Kullanıcı, kimlik bilgilerini (ör. geçiş kodu, PIN, desen veya parmak izi) girerek cihazın kilidini açtıktan ve
ACTION_USER_UNLOCKED
mesajı yayınlandıktan sonra yalnızca Kimlik Bilgisi Şifreli (CE) depolama alanına erişime İZİN VERİLMELİDİR. - [C-1-3] Kullanıcı tarafından sağlanan kimlik bilgileri veya kayıtlı bir emanet anahtarı olmadan CE korumalı depolama alanının kilidini açmak için herhangi bir yöntem SUNULMAMALIDIR.
- [C-1-4] Doğrulanmış Başlatma'yı desteklemeli ve DE anahtarlarının, cihazın güven kökünün donanımına kriptografik olarak bağlı olmasını sağlamalıdır.
- [C-1-5] Dosya içeriklerinin AES-256-XTS kullanılarak şifrelenmesi DESTEKLENMELİDİR. AES-256-XTS, XTS modunda çalıştırılan 256 bit anahtar uzunluğuna sahip Gelişmiş Şifreleme Standardı'nı ifade eder. XTS anahtarının tam uzunluğu 512 bittir.
-
[C-1-6] Dosya adlarının CBC-CTS modunda AES-256 kullanılarak şifrelenmesini DESTEKLEMELİDİR.
-
CE ve DE depolama alanlarını koruyan anahtarlar:
-
[C-1-7] Donanım destekli bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR.
- [C-1-8] CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine BAĞLANMALIDIR.
- [C-1-9] Kullanıcı kilit ekranı kimlik bilgilerini belirtmediyse CE anahtarları varsayılan bir şifre koduna bağlanmalıdır.
-
[C-1-10] Benzersiz ve farklı OLMALIDIR. Başka bir deyişle, hiçbir kullanıcının CE veya DE anahtarı başka bir kullanıcının CE veya DE anahtarıyla eşleşmemelidir.
-
[C-1-11] Varsayılan olarak zorunlu desteklenen şifreler, anahtar uzunlukları ve modlar KULLANILMALIDIR.
-
[C-SR] Dosya boyutları, sahiplik, modlar ve genişletilmiş özellikler (xattrs) gibi dosya sistemi meta verilerinin, cihazın donanım güven köküne kriptografik olarak bağlı bir anahtarla şifrelenmesi ŞİDDETLE TAVSİYE EDİLİR.
-
Önceden yüklenmiş temel uygulamalar (ör. Alarm, Telefon, Mesajlaşma) doğrudan başlatma özelliğini desteklemelidir.
- Dosya içeriği ve dosya adı şifrelemesi için alternatif şifreleri, anahtar uzunluklarını ve modları DESTEKLEYEBİLİR.
Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeği ext4 şifreleme özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.
9.9.3. Tam Disk Şifreleme
Cihaz uygulamaları tam disk şifrelemeyi (FDE) destekliyorsa:
- [C-1-1] Depolama için tasarlanmış bir modda (ör. XTS veya CBC-ESSIV) ve 128 bit veya daha uzun bir şifreleme anahtarı uzunluğuyla AES KULLANILMALIDIR.
- [C-1-2] Şifreleme anahtarını sarmalamak için varsayılan bir şifre kodu KULLANILMALI ve şifreleme anahtarı, şifrelenmeden hiçbir zaman depolama alanına YAZILMAMALIDIR.
- [C-1-3] Kullanıcı açıkça devre dışı bırakmadığı sürece, etkin kullanımda olduğu durumlar hariç, şifreleme anahtarını varsayılan olarak AES ile şifrelemelidir.Bu durumda, yavaş bir uzatma algoritması (ör. PBKDF2 veya scrypt) kullanılarak kilit ekranı kimlik bilgileri uzatılır.
- [C-1-4] Kullanıcı kilit ekranı kimlik bilgilerini belirtmediğinde veya şifreleme için şifre kodu kullanımını devre dışı bıraktığında ve cihaz donanım destekli bir anahtar deposu sağladığında yukarıdaki varsayılan şifre uzatma algoritması, anahtar deposuna kriptografik olarak bağlanmalıdır.
- [C-1-5] Şifreleme anahtarı, kullanıcı şifresi ve/veya donanıma bağlı anahtarla sarmalanmış olsa bile cihazdan gönderilmemelidir.
Yukarı akış Android Açık Kaynak Projesi, Linux çekirdek özelliği dm-crypt'e dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.
9.10. Cihaz bütünlüğü
Aşağıdaki şartlar, cihaz bütünlüğünün durumuyla ilgili şeffaflık sağlar. Cihaz uygulamaları:
-
[C-0-1] Sistem API'si yöntemi aracılığıyla
PersistentDataBlockManager.getFlashLockState()
, önyükleyici durumunun sistem görüntüsünün yüklenmesine izin verip vermediğini doğru şekilde bildirmelidir.FLASH_LOCK_UNKNOWN
durumu, bu yeni sistem API'si yönteminin mevcut olmadığı Android'in önceki bir sürümünden yükseltme yapan cihaz uygulamaları için ayrılmıştır. -
[C-0-2] Cihaz bütünlüğü için Doğrulanmış Başlatma'yı DESTEKLEMELİDİR.
Cihaz uygulamaları, Android'in önceki bir sürümünde Doğrulanmış Başlatma'yı desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu özellik için destek eklenemiyorsa gereklilikten MUAF TUTULABİLİR.
Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Cihaz uygulamaları bu özelliği destekliyorsa:
- [C-1-1] Platform özellik bayrağı
android.software.verified_boot
BİLDİRİLMELİDİR. - [C-1-2] Her başlatma sırasında doğrulama YAPILMALIDIR.
- [C-1-3] Güvenin kökü olan değişmez bir donanım anahtarından doğrulama başlatılmalı ve sistem bölümüne kadar devam etmelidir.
- [C-1-4] Bir sonraki aşamadaki kodu yürütmeden önce, bir sonraki aşamadaki tüm baytların bütünlüğünü ve gerçekliğini kontrol etmek için doğrulamanın her aşamasını uygulamalıdır.
- [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'in mevcut önerileri kadar güçlü doğrulama algoritmaları KULLANILMALIDIR.
- [C-1-6] Kullanıcı yine de başlatmayı denemeyi kabul etmediği sürece, sistem doğrulaması başarısız olduğunda başlatmanın tamamlanmasına İZİN VERİLMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALIDIR.
- [C-1-7] Kullanıcı, önyükleyiciyi açıkça kilidini açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERİLMEMELİDİR.
- [C-SR] Cihazda birden fazla ayrı çip varsa (ör. radyo, özel görüntü işleme birimi) her bir çipin başlatma sürecinde, başlatma sırasında her aşamanın doğrulanması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-8] Önyükleyicinin kilidinin açık olup olmadığını depolamak için kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR. Kurcalamaya karşı korumalı depolama, önyükleyicinin depolamanın Android'in içinden kurcalanıp kurcalanmadığını algılayabileceği anlamına gelir.
- [C-1-9] Cihaz kullanılırken kullanıcıya istem göstermeli ve bootloader kilitli moddan bootloader kilidi açık moda geçişe izin vermeden önce fiziksel onay istemelidir.
- [C-1-10] Android tarafından kullanılan bölümler (ör. önyükleme, sistem bölümleri) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum işletim sistemi sürümünü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.
- [C-SR] Tüm ayrıcalıklı uygulama APK dosyalarının, Doğrulanmış Önyükleme ile korunan
/system
'da köklenen bir güven zinciriyle doğrulanması ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] Ayrıcalıklı bir uygulama tarafından APK dosyası dışından yüklenen yürütülebilir yapıtların (ör. dinamik olarak yüklenen kod veya derlenmiş kod) yürütülmeden önce doğrulanması ŞİDDETLE TAVSİYE EDİLİR veya hiç yürütülmemesi ŞİDDETLE TAVSİYE EDİLİR.
- Kalıcı yazılıma sahip tüm bileşenler (ör. modem, kamera) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum sürümü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.
Cihaz uygulamaları, Android'in önceki bir sürümünde C-1-8 ile C-1-10 arasındaki gereksinimleri desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu gereksinimler için destek eklenemiyorsa gereksinimlerden MUAF TUTULABİLİR.
Yukarı akış Android Açık Kaynak Projesi, bu özelliğin external/avb/
deposunda tercih edilen bir uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleyiciye entegre edilebilir.
Cihaz uygulamaları:
- [C-R] Android Protected Confirmation API'yi desteklemeleri ÖNERİLİR.
Cihaz uygulamaları Android Protected Confirmation API'yi destekliyorsa:
- [C-3-1]
ConfirmationPrompt.isSupported()
API'si içintrue
raporlanmalıdır. - [C-3-2] Güvenli donanımın, Android OS'in güvenli donanım tarafından algılanmadan engellemesini önleyecek şekilde ekran üzerinde tam kontrol sahibi olmasını SAĞLAMALIDIR.
- [C-3-3] Güvenli donanımın dokunmatik ekranın tam kontrolünü aldığından EMİN OLUNMALIDIR.
9.11. Anahtarlar ve Kimlik Bilgileri
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları bir kapsayıcıda depolamasına ve KeyChain API veya Keystore API aracılığıyla kriptografik işlemlerde kullanmasına olanak tanır. Cihaz uygulamaları:
- [C-0-1] En az 8.192 anahtarın içe aktarılmasına veya oluşturulmasına İZİN VERİLMELİDİR.
- [C-0-2] Kilit ekranı kimlik doğrulamasında deneme sayısı sınırlandırılmalı ve üstel geri çekilme algoritması kullanılmalıdır. 150 başarısız denemeden sonra, her deneme için gecikme SÜRESİ en az 24 saat OLMALIDIR.
- Oluşturulabilecek anahtar sayısını SINIRLAMAMALIDIR.
Cihaz uygulaması güvenli bir kilit ekranını desteklediğinde:
- [C-1-1] MUST back up the keystore implementation with an isolated execution environment.
- [C-1-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 ailesi karma oluşturma işlevlerinin uygulamalarına SAHİP OLMALIDIR. Güvenli izolasyon, çekirdek veya kullanıcı alanı kodunun DMA dahil olmak üzere izole edilmiş ortamın iç durumuna erişebileceği tüm olası mekanizmaları engellemelidir. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
- [C-1-3] Kilit ekranı kimlik doğrulaması, izole edilmiş yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Bu şartı karşılamak için Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty, yukarı akış Android Açık Kaynak Projesi tarafından sağlanır.
- [C-1-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Anahtarların cihaz tanımlayıcı olarak kullanılmasını önlemek için onay imzalama anahtarları yeterli sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamanın bir yolu,belirli bir SKU'nun en az 100.000 birimi üretilmediği sürece aynı onay anahtarını paylaşmaktır. Bir SKU'nun 100.000'den fazla birimi üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
- [C-1-5] Kilitli olmayan durumdan kilitli duruma geçiş için uyku zaman aşımını seçmesine izin VERİLMELİDİR. İzin verilen minimum zaman aşımı 15 saniyedir.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulduysa bu cihaz, android.hardware.fingerprint
özelliğini (izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektirir) beyan etmediği sürece, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaftır.
9.11.1. Güvenli Kilit Ekranı
AOSP uygulaması, bilgi faktörüne dayalı birincil kimlik doğrulamanın ikincil güçlü bir biyometri veya daha zayıf üçüncül yöntemlerle desteklenebileceği katmanlı bir kimlik doğrulama modelini izler.
Cihaz uygulamaları:
- [C-SR] Aşağıdakilerden yalnızca birinin birincil kimlik doğrulama yöntemi olarak ayarlanması ŞİDDETLE TAVSİYE EDİLİR:
- Sayısal bir PIN
- Alfanümerik bir şifre
- Tam olarak 3x3 noktalı bir ızgarada kaydırma deseni
Yukarıdaki kimlik doğrulama yöntemlerinin bu belgede önerilen birincil kimlik doğrulama yöntemleri olarak adlandırıldığını unutmayın.
Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yol olarak yeni bir kimlik doğrulama yöntemi kullanırsa yeni kimlik doğrulama yöntemi:
- [C-2-1] Anahtar Kullanımı İçin Kullanıcı Kimlik Doğrulaması Gerektirme bölümünde açıklandığı gibi kullanıcı kimlik doğrulama yöntemi OLMALIDIR.
- [C-2-2] Kullanıcı güvenli kilit ekranının kilidini açtığında üçüncü taraf geliştirici uygulamasının kullanabilmesi için tüm anahtarların kilidi AÇILMALIDIR. Örneğin, tüm anahtarlar
createConfirmDeviceCredentialIntent
vesetUserAuthenticationRequired
gibi ilgili API'ler aracılığıyla üçüncü taraf geliştirici uygulamaları tarafından kullanılabilir OLMALIDIR.
Cihaz uygulamaları, bilinen bir sırra dayalı olarak kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bunları değiştirirse ve ekranı kilitlemenin güvenli bir yolu olarak kabul edilecek yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-3-1] Girişlerin izin verilen en kısa uzunluğunun entropisi 10 bit'ten büyük OLMALIDIR.
- [C-3-2] Olası tüm girişlerin maksimum entropisi 18 bit'ten büyük OLMALIDIR.
- [C-3-3] Yeni kimlik doğrulama yöntemi, AOSP'de uygulanan ve sağlanan önerilen birincil kimlik doğrulama yöntemlerinin (ör. PIN, desen, şifre) hiçbirinin yerini ALMAMALIDIR.
- [C-3-4] Cihaz Politikası Denetleyicisi (DPC) uygulaması,
DevicePolicyManager.setPasswordQuality()
yöntemiylePASSWORD_QUALITY_SOMETHING
değerinden daha kısıtlayıcı bir kalite sabitiyle şifre kalitesi politikasını ayarladığında yeni kimlik doğrulama yöntemi DEVRE DIŞI BIRAKILMALIDIR.
Cihaz uygulamaları, kilit ekranının kilidini açmak için önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemenin güvenli bir yolu olarak kabul edilecek biyometriye dayalı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:
- [C-4-1] Bölüm 7.3.10.2'de açıklanan tüm şartları KARŞILAMALIDIR.
- [C-4-2] Bilinen bir sırra dayalı olan, önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmaya SAHİP OLMALIDIR.
- [C-4-3] MUST be disabled and only allow the recommended primary authentication to unlock the screen when the Device Policy Controller (DPC) application has set the keguard feature policy by calling the method
DevicePolicyManager.setKeyguardDisabledFeatures()
, with any of the associated biometric flags (i.e.KEYGUARD_DISABLE_BIOMETRICS
,KEYGUARD_DISABLE_FINGERPRINT
,KEYGUARD_DISABLE_FACE
, orKEYGUARD_DISABLE_IRIS
). - [C-4-4] Kullanıcıya, önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için en az 72 saatte bir veya daha kısa aralıklarla meydan OKUMALIDIR.
- [C-4-5] 7.3.10 bölümünde belirtildiği gibi parmak izi sensörü için gerekenle eşit veya daha güçlü bir yanlış kabul oranına SAHİP OLMALI ya da aksi takdirde devre dışı bırakılmalı ve yalnızca Device Policy Controller (DPC) uygulaması,
DevicePolicyManager.setPasswordQuality()
yöntemiylePASSWORD_QUALITY_BIOMETRIC_WEAK
değerinden daha kısıtlayıcı bir kalite sabiti kullanarak şifre kalitesi politikasını ayarladığında ekranın kilidini açmak için önerilen birincil kimlik doğrulama yöntemine izin VERMELİDİR. - [C-SR] Bölüm 7.3.10'da açıklandığı gibi, parmak izi sensörü için gerekenle eşit veya daha güçlü sahtecilik ve kimliğe bürünme kabul oranlarına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [C-4-6] Bir işletim sistemi veya çekirdek ihlali, verilerin doğrudan eklenerek kullanıcı olarak kimlik doğrulamasının yanlış yapılmasını sağlayamayacak şekilde güvenli bir işleme hattına SAHİP OLMALIDIR.
- [C-4-7] Uygulama,
KeyGenParameterSpec.Built.setUserAuthenticationRequired()
içintrue
değerini ayarlarsa ve biyometri pasifse (ör.niyetle ilgili açık bir sinyalin olmadığı yüz veya iris) anahtar deposu anahtarlarına erişime izin vermek için açık bir onay işlemiyle (ör. düğmeye basma) eşleştirilmelidir. - [C-SR] Pasif biyometri için onay işleminin, işletim sistemi veya çekirdek ihlaliyle sahteciliğe karşı KESİNLİKLE güvenli hale getirilmesi ÖNERİLİR. Örneğin, bu, fiziksel bir düğmeye dayalı onay işleminin, güvenli öğenin (SE) yalnızca giriş için kullanılan genel amaçlı bir giriş/çıkış (GPIO) pimi üzerinden yönlendirildiği anlamına gelir. Bu pim, fiziksel bir düğmeye basma dışında başka bir şekilde çalıştırılamaz.
Biyometrik kimlik doğrulama yöntemleri, 7.3.10 bölümünde açıklandığı gibi sahtecilik ve kimliğe bürünme kabul oranlarını karşılamıyorsa:
- [C-5-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması,
PASSWORD_QUALITY_BIOMETRIC_WEAK
değerinden daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla şifre kalitesi politikasını ayarladıysa yöntemler DEVRE DIŞI BIRAKILMALIDIR. - [C-5-2] Kullanıcı, 4 saatlik boşta kalma zaman aşımı süresinden sonra önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için sorgulanmalıdır. Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasının ardından boşta kalma zaman aşımı süresi sıfırlanır.
- [C-5-3] Yöntemler güvenli kilit ekranı olarak değerlendirilmemeli ve aşağıdaki bu bölümdeki C-8 ile başlayan koşulları karşılamalıdır.
Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bunları değiştirirse ve yeni kimlik doğrulama yöntemi fiziksel bir jetona ya da konuma dayanıyorsa:
- [C-6-1] Bilinen bir sırra dayalı olan ve güvenli bir kilit ekranı olarak kabul edilme şartlarını karşılayan, önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için geri dönüş mekanizması OLMALIDIR.
- [C-6-2] Yeni yöntem DEVRE DIŞI BIRAKILMALIDIR ve Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı
PASSWORD_QUALITY_UNSPECIFIED
'dan daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)
yöntemi veyaDevicePolicyManager.setPasswordQuality()
yöntemiyle ayarladığında ekranın kilidinin açılması için yalnızca önerilen birincil kimlik doğrulama yöntemlerinden birine izin verilmelidir. - [C-6-3] Kullanıcı, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle en az 72 saatte bir veya daha kısa aralıklarla kimliğini doğrulamalıdır.
- [C-6-4] Yeni yöntem, güvenli bir kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8 bölümünde listelenen kısıtlamalara uymalıdır.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService
System API'yi uygulayan bir veya daha fazla güven aracısı varsa:
- [C-7-1] Cihaz kilidi ertelendiğinde veya güvenilir aracı(lar) tarafından kilidi açılabildiğinde ayarlar menüsünde ve kilit ekranında net bir gösterge OLMALIDIR. Örneğin, AOSP, ayarlar menüsünde "Otomatik kilitleme ayarı" ve "Güç düğmesiyle anında kilitleme" için metin açıklaması göstererek ve kilit ekranında ayırt edilebilir bir simge kullanarak bu şartı karşılar.
- [C-7-2]
DevicePolicyManager
sınıfındaki tüm güven aracısı API'leri (ör.KEYGUARD_DISABLE_TRUST_AGENTS
sabiti) dikkate alınmalı ve tam olarak uygulanmalıdır. - [C-7-3] Birincil kişisel cihaz olarak kullanılan bir cihazda (ör. el cihazı)
TrustAgentService.addEscrowToken()
işlevi tam olarak uygulanMAMALIDIR ancak genellikle paylaşılan cihaz uygulamalarında (ör. Android TV veya otomotiv cihazı) işlev tam olarak uygulanABİLİR. - [C-7-4]
TrustAgentService.addEscrowToken()
tarafından eklenen tüm depolanmış jetonlar ŞİFRELENMELİDİR. - [C-7-5] Şifreleme anahtarı, anahtarın kullanıldığı cihazda saklanMAMALIDIR. Örneğin, telefonda depolanan bir anahtarın TV'deki kullanıcı hesabının kilidini açmasına izin verilir.
- [C-7-6] MUST inform the user about the security implications before enabling the escrow token to decrypt the data storage.
- [C-7-7] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizma OLMALIDIR.
- [C-7-8] Kullanıcı, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle en az 72 saatte bir veya daha kısa aralıklarla kimlik doğrulamaya zorunlu tutulmalıdır.
- [C-7-9] Kullanıcı, 4 saatlik boşta kalma süresinin ardından önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle kimlik doğrulamaya zorlanmalıdır. Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasının ardından boşta kalma zaman aşımı süresi sıfırlanır.
- [C-7-10] Güvenli bir kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8'de listelenen kısıtlamalara uymalıdır.
Cihaz uygulamaları, yukarıda açıklandığı gibi güvenli bir kilit ekranı olmayan kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse ve anahtar korumasının kilidini açmak için yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-8-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması,
PASSWORD_QUALITY_UNSPECIFIED
değerinden daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla şifre kalitesi politikasını ayarladığında yeni yöntem DEVRE DIŞI BIRAKILMALIDIR. - [C-8-2]
DevicePolicyManager.setPasswordExpirationTimeout()
tarafından ayarlanan şifre geçerlilik sonu zamanlayıcılarını sıfırlamamalıdır. - [C-8-3] Uygulama,
KeyGenParameterSpec.Builder.setUserAuthenticationRequired()
içintrue
değerini ayarladığında anahtar depolarına erişimin kimliğini DOĞRULAMAMALIDIR.
9.11.2. StrongBox
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları özel bir güvenli işlemcide ve yukarıda açıklanan izole yürütme ortamında depolamasına olanak tanır.
Cihaz uygulamaları:
- [C-SR] StrongBox'ı desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları StrongBox'ı destekliyorsa:
-
[C-1-1] FEATURE_STRONGBOX_KEYSTORE beyan EDİLMELİDİR.
-
[C-1-2] Anahtar deposunu yedeklemek ve kullanıcı kimlik doğrulamasını güvenli hale getirmek için kullanılan özel bir güvenli donanım SAĞLANMALIDIR.
-
[C-1-3] Önbelleği, DRAM'i, yardımcı işlemcileri veya diğer temel kaynakları uygulama işlemcisi (AP) ile paylaşmayan ayrı bir CPU'ya SAHİP OLMALIDIR.
-
[C-1-4] AP ile paylaşılan tüm çevre birimlerinin StrongBox işlemesini hiçbir şekilde değiştiremeyeceğinden veya StrongBox'tan herhangi bir bilgi alamayacağından EMİN OLMALIDIR. AP, StrongBox'a erişimi devre dışı bırakabilir veya engelleyebilir.
-
[C-1-5] AP'nin manipülasyonuna karşı bağışıklığı olan, makul doğrulukta (+-%10) bir dahili saate SAHİP OLMALIDIR.
-
[C-1-6] MUST have a true random number generator that produces uniformly-distributed and unpredictable output.
-
[C-1-7] Fiziksel nüfuz ve aksaklıklara karşı direnç de dahil olmak üzere kurcalamaya karşı dirençli OLMALIDIR.
-
[C-1-8] Güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla bilgi sızdırılmasına karşı direnç de dahil olmak üzere yan kanal direnci OLMALIDIR.
-
[C-1-9] İçeriğin gizliliğini, bütünlüğünü, gerçekliğini, tutarlılığını ve güncelliğini sağlayan güvenli depolama alanı OLMALIDIR. StrongBox API'leri tarafından izin verilen durumlar dışında depolama birimi okunamaz veya değiştirilemez.
-
[C-1-3] ile [C-1-9] arasındaki şartlara uygunluğu doğrulamak için cihaz uygulamaları:
- [C-1-10] MUST include the hardware that is certified against the Secure IC Protection Profile BSI-CC-PP-0084-2014 or evaluated by a nationally accredited testing laboratory incorporating High attack potential vulnerability assessment according to the Common Criteria Application of Attack Potential to Smartcards.
- [C-1-11] Ortak Kriterler: Saldırı Potansiyelinin Akıllı Kartlara Uygulanması'na göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesini içeren, ulusal olarak akredite edilmiş bir test laboratuvarı tarafından değerlendirilen donanım yazılımını içermelidir.
- [C-SR] AVA_VAN.5 ile desteklenen bir Güvenlik Hedefi, Değerlendirme Güvence Düzeyi (EAL) 5 kullanılarak değerlendirilen donanımı içermesi ŞİDDETLE TAVSİYE EDİLİR. EAL 5 sertifikası, gelecekteki bir sürümde zorunlu hale gelebilir.
-
[C-SR] öğelerinin, içeriden saldırıya karşı direnç (IAR) sağlaması ŞİDDETLE TAVSİYE EDİLİR. Bu, yazılım imzası anahtarlarına erişimi olan bir içeriden saldırganın, StrongBox'ın sırları sızdırmasına, işlevsel güvenlik şartlarını atlamasına veya hassas kullanıcı verilerine erişimi başka şekilde etkinleştirmesine neden olan yazılımlar üretemeyeceği anlamına gelir. IAR'yi uygulamanın önerilen yolu, donanım yazılımı güncellemelerine yalnızca IAuthSecret HAL üzerinden birincil kullanıcı şifresi sağlandığında izin vermektir.
9.12. Veri Silme
Tüm cihaz uygulamaları:
- [C-0-1] Kullanıcılara "Fabrika Verilerine Sıfırlama" işlemi yapabilecekleri bir mekanizma SAĞLANMALIDIR.
- [C-0-2] Kullanıcı tarafından oluşturulan tüm veriler SİLİNMELİDİR. Yani aşağıdaki veriler hariç tüm veriler:
- Sistem görüntüsü
- Sistem görüntüsü için gereken tüm işletim sistemi dosyaları
- [C-0-3] Verileri, NIST SP800-88 gibi ilgili endüstri standartlarını karşılayacak şekilde SİLMELİDİR.
- [C-0-4] Birincil kullanıcının Cihaz Politikası Denetleyici uygulaması tarafından
DevicePolicyManager.wipeData()
API'si çağrıldığında yukarıdaki"Fabrika Verilerine Sıfırlama" işlemi TETİKLENMELİDİR. - Yalnızca mantıksal veri silme işlemi yapan hızlı bir veri silme seçeneği SUNABİLİR.
9.13. Güvenli Önyükleme Modu
Android, kullanıcılara yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda başlatma olanağı sunan güvenli başlatma modu sağlar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcılara zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı sunar.
Cihaz uygulamaları şunlardır:
- [SR] STRONGLY RECOMMENDED to implement Safe Boot Mode.
Cihaz uygulamaları Güvenli Önyükleme Modu'nu uyguluyorsa:
-
[C-1-1] Üçüncü taraf uygulama bir cihaz politikası denetleyicisi değilse ve
UserManager.DISALLOW_SAFE_BOOT
işaretini doğru olarak ayarlamamışsa cihazda yüklü üçüncü taraf uygulamaları tarafından kesintiye uğratılmayacak şekilde kullanıcıya güvenli modda başlatma seçeneği SUNULMALIDIR. -
[C-1-2] Kullanıcıya, güvenli modda üçüncü taraf uygulamalarını kaldırma özelliği SAĞLANMALIDIR.
-
Kullanıcıya, normal başlatma iş akışından farklı bir iş akışı kullanarak başlatma menüsünden güvenli modda başlatma seçeneği SUNULMALIDIR.
9.14. Otomotiv Araç Sistemi İzolasyonu
Android Automotive cihazların, CAN veri yolu gibi araç ağları üzerinden mesaj göndermek ve almak için araç HAL'ını kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.
Veri alışverişi, bu alt sistemlerle kötü amaçlı veya kasıtsız etkileşimi önlemek için Android framework katmanlarının altında güvenlik özellikleri uygulanarak güvenli hale getirilebilir.
9.15. Abonelik Planları
"Abonelik planları", mobil operatör tarafından SubscriptionManager.setSubscriptionPlans()
aracılığıyla sağlanan faturalandırma ilişkisi planı ayrıntılarını ifade eder.
Tüm cihaz uygulamaları:
- [C-0-1] Abonelik planlarını yalnızca başlangıçta sağlayan mobil operatör uygulamasına döndürmelidir.
- [C-0-2] Abonelik planlarını uzaktan yedeklememeli veya yüklememelidir.
- [C-0-3] YALNIZCA şu anda geçerli abonelik planları sunan mobil operatör uygulamasından
SubscriptionManager.setSubscriptionOverrideCongested()
gibi geçersiz kılmalara izin VERİLMELİDİR.
10. Yazılım Uyumluluğu Testi
Cihaz uygulamaları, bu bölümde açıklanan tüm testleri GEÇMELİDİR. Ancak hiçbir yazılım test paketinin tam kapsamlı olmadığını unutmayın. Bu nedenle, cihaz uygulayıcıların Android Açık Kaynak Projesi'nden edinilebilen Android'in referans ve tercih edilen uygulamasında mümkün olduğunca az değişiklik yapması ŞİDDETLE TAVSİYE EDİLİR. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara neden olan hataların ortaya çıkma riskini en aza indirir.
10.1. Compatibility Test Suite
Cihaz uygulamaları:
-
[C-0-1] Cihazdaki son gönderim yazılımı kullanılarak Android Açık Kaynak Projesi'nden edinilebilen Android Uyumluluk Test Paketi'ni (CTS) GEÇMELİDİR.
-
[C-0-2] CTS'de belirsizlik olması ve referans kaynak kodunun bazı bölümlerinin yeniden uygulanması durumlarında uyumluluğu SAĞLAMALIDIR.
CTS, gerçek bir cihazda çalıştırılmak üzere tasarlanmıştır. Diğer yazılımlar gibi CTS de hatalar içerebilir. CTS, bu Uyumluluk Tanımı'ndan bağımsız olarak sürümlendirilir ve Android 9 için CTS'nin birden fazla düzeltmesi yayınlanabilir.
Cihaz uygulamaları:
-
[C-0-3] Cihaz yazılımı tamamlandığında mevcut olan en son CTS sürümünü GEÇMELİDİR.
-
Android Açık Kaynak ağacındaki referans uygulamayı mümkün olduğunca çok kullanmalıdır.
10.2. CTS Doğrulayıcı
CTS Verifier, Uyumluluk Test Paketi'ne dahildir ve otomatik bir sistem tarafından test edilemeyen işlevleri (ör. kamera ve sensörlerin doğru çalışması) test etmek için bir operatör tarafından çalıştırılması amaçlanmıştır.
Cihaz uygulamaları:
- [C-0-1] CTS doğrulayıcıdaki geçerli tüm testleri doğru şekilde yürütmelidir.
CTS Verifier, isteğe bağlı olanlar da dahil olmak üzere birçok donanım türü için testler içerir.
Cihaz uygulamaları:
- [C-0-2] Sahip oldukları donanımla ilgili tüm testleri GEÇMELİDİR. Örneğin, bir cihazda ivmeölçer varsa CTS Verifier'daki ivmeölçer test senaryosunu DOĞRU şekilde çalıştırmalıdır.
Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test senaryoları atlanabilir veya çıkarılabilir.
- [C-0-2] Yukarıda belirtildiği gibi, her cihaz ve her derleme, CTS Verifier'ı doğru şekilde ÇALIŞTIRMALIDIR. Ancak birçok derleme çok benzer olduğundan, cihaz uygulayıcıların yalnızca önemsiz şekillerde farklılık gösteren derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Daha açık belirtmek gerekirse, CTS Verifier'ı geçen bir uygulamadan yalnızca dahil edilen yerel ayarlar, markalama vb. açısından farklılık gösteren cihaz uygulamaları CTS Verifier testini ATLAYABİLİR.
11. Güncellenebilir Yazılımlar
-
[C-0-1] Cihaz uygulamaları, sistem yazılımının tamamını değiştirecek bir mekanizma içermelidir. Mekanizmanın "canlı" yükseltme yapması gerekmez. Yani cihazın yeniden başlatılması GEREKEBİLİR. Cihazda önceden yüklenmiş yazılımın tamamını değiştirebildiği sürece herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:
- Yeniden başlatma yoluyla çevrimdışı güncelleme ile "kablosuz (OTA)" indirmeleri.
- Ana makine PC'sinden USB üzerinden "bağlı" güncellemeler.
- Yeniden başlatma ve çıkarılabilir depolama birimindeki bir dosyadan güncelleme yoluyla "çevrimdışı" güncellemeler.
-
[C-0-2] Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri desteklemelidir. Yani güncelleme mekanizması, uygulamaya özel verileri ve uygulamada paylaşılan verileri KORUMALIDIR. Yukarı akış Android yazılımının bu şartı karşılayan bir güncelleme mekanizması içerdiğini unutmayın.
Cihaz uygulamaları, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sınırsız veri bağlantısı desteği içeriyorsa:
- [C-1-1] Yeniden başlatma yoluyla çevrimdışı güncelleme ile OTA indirmelerini desteklemelidir.
Android 6.0 ve sonraki sürümlerle kullanıma sunulan cihaz uygulamalarında, güncelleme mekanizması, OTA'dan sonra sistem görüntüsünün beklenen sonuçla ikili olarak aynı olduğunu doğrulama özelliğini DESTEKLEMELİDİR. Android 5.1'den beri eklenen, yukarı akış Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu şartı karşılar.
Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP, bu özelliği önyükleme denetimi HAL'sini kullanarak uygular.
Bir cihaz uygulaması yayınlandıktan sonra ancak Android Uyumluluk Ekibi ile istişare edilerek belirlenen ve üçüncü taraf uygulamalarının uyumluluğunu etkileyecek makul ürün ömrü içinde bir hata bulunursa:
- [C-2-1] Cihaz uygulayıcı, hatayı az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesiyle DÜZELTMELİDİR.
Android, cihaz sahibi uygulamasına (varsa) sistem güncellemelerinin yüklenmesini kontrol etme olanağı tanıyan özellikler içerir. Cihazlar için sistem güncelleme alt sistemi android.software.device_admin'i bildiriyorsa:
- [C-3-1] SystemUpdatePolicy sınıfında açıklanan davranış uygulanmalıdır.
12. Doküman değişiklik günlüğü
Bu sürümdeki Uyumluluk Tanımlama Belgesi değişikliklerinin özetini görmek için:
Bölümlerdeki değişikliklerin özeti için:
- Giriş
- Cihaz Türleri
- Yazılım
- Uygulama Paketleme
- Multimedya
- Geliştirici Araçları ve Seçenekleri
- Donanım Uyumluluğu
- Performans ve Güç
- Güvenlik Modeli
- Yazılım Uyumluluğu Testi
- Güncellenebilir Yazılımlar
- Doküman Değişiklik Günlüğü
- Bize Ulaşın
12.1. Değişiklik günlüğünü görüntülemeyle ilgili ipuçları
Değişiklikler aşağıdaki şekilde işaretlenir:
-
CDD
Uyumluluk şartlarında önemli değişiklikler yapıldı. -
Docs
Kozmetik veya derlemeyle ilgili değişiklikler.
En iyi görüntüleme için pretty=full
ve no-merges
URL parametrelerini değişiklik günlüğü URL'lerinize ekleyin.
13. Bize Ulaşın
android-compatibility forumuna katılarak açıklama isteyebilir veya dokümanda yer almadığını düşündüğünüz sorunları gündeme getirebilirsiniz.