1. Giriş
Bu belgede, cihazların Android 9 ile uyumlu olması için karşılanması gereken şartlar listelenmektedir.
"MUST" (ZORUNLU), "MUST NOT" (ZORUNLU DEĞİL), "REQUIRED" (GEREKLİ), "SHALL" (OLACAK), "SHALL NOT" (OLMAYACAK), "SHOULD" (OLMALI), "SHOULD NOT" (OLMAMALI), "RECOMMENDED" (ÖNERİLEN), "MAY" (OLABİLİR) ve "OPTIONAL" (İSTEĞE BAĞLI) ifadelerinin kullanımı, RFC2119'da tanımlanan IETF standardına uygundur.
Bu belgede kullanıldığı şekliyle "cihaz uygulayıcı" veya "uygulayıcı", Android 9'u çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluş anlamına gelir. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Cihaz uygulamalarının Android 9 ile uyumlu olarak kabul edilebilmesi için referans yoluyla dahil edilen tüm belgeler de dahil olmak üzere bu Uyumluluk Tanımı'nda belirtilen şartları KARŞILAMASI GEREKİR.
Bu tanım veya bölüm 10'da açıklanan yazılım testleri sessiz, belirsiz ya da eksik olduğunda, mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcısının sorumluluğundadır.
Bu nedenle, Android Açık Kaynak Projesi hem referans hem de tercih edilen Android uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nden edinilebilen "yukarı akış" kaynak koduna dayandırmaları ŞİDDETLE TAVSİYE EDİLİR. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilse de yazılım testlerini geçmek önemli ölçüde zorlaşacağından bu uygulamanın kullanılmaması ŞİDDETLE TAVSİYE EDİLİR. Compatibility Test Suite de dahil olmak üzere standart Android uygulamasıyla tam davranış uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşenlerin değiştirilmesi ve üzerinde değişiklik yapılması bu belgeyle açıkça yasaklanmıştır.
Bu belgede bağlantısı verilen kaynakların çoğu doğrudan veya dolaylı olarak Android SDK'dan alınmıştır ve bu SDK'nın dokümanlarındaki bilgilerle işlevsel olarak aynıdır. Bu Uyumluluk Tanımlama Belgesi veya Uyumluluk Test Paketi, SDK dokümanlarıyla çeliştiği durumlarda SDK dokümanları yetkili olarak kabul edilir. Bu belgenin tamamında bağlantısı verilen kaynaklarda sağlanan tüm teknik ayrıntılar, dahil edilerek bu Uyumluluk Tanımı'nın bir parçası olarak kabul edilir.
1.1 Belge Yapısı
1.1.1. Cihaz Türüne Göre Gereksinimler
2. Bölüm, belirli bir cihaz türü için geçerli olan tüm koşulları içerir. Bölüm 2'nin her alt bölümü belirli bir cihaz türüne ayrılmıştır.
Herhangi bir Android cihaz uygulaması için geçerli olan diğer tüm koşullar, Bölüm 2'den sonraki bölümlerde listelenmiştir. Bu şartlar, bu belgede "Temel Şartlar" olarak adlandırılır.
1.1.2. Şart Kimliği
ZORUNLU koşullar için koşul kimliği atanır.
- Kimlik yalnızca ZORUNLU koşullar için atanır.
- ŞİDDETLE TAVSİYE EDİLEN koşullar [SR] olarak işaretlenir ancak kimlik atanmaz.
- Kimlik; Cihaz Türü Kimliği, Durum Kimliği ve Şart Kimliği'nden (ör. C-0-1) oluşur.
Her kimlik aşağıda tanımlanmıştır:
- Cihaz Türü Kimliği (2. Cihaz Türleri)
- C: Temel (Tüm Android cihaz uygulamaları için geçerli olan şartlar)
- H: Android el cihazı
- T: Android Television cihaz
- Y: Android Automotive uygulaması
- Sekme: Android tablet uygulaması
- Koşul kimliği
- Koşulsuz olduğunda bu kimlik 0 olarak ayarlanır.
- Koşul zorunlu olduğunda 1. koşul için 1 atanır ve aynı bölüm ile aynı cihaz türünde sayı 1 artar.
- Şart kimliği
- Bu kimlik 1'den başlar ve aynı bölüm ile aynı koşulda 1'er artar.
1.1.3. 2. Bölümdeki şart kimliği
Bölüm 2'deki Şart Kimliği, ilgili bölüm kimliğiyle başlar ve yukarıda açıklanan Şart Kimliği ile devam eder.
- Bölüm 2'deki kimlik şu bölümlerden oluşur : Bölüm Kimliği / Cihaz Türü Kimliği - Durum Kimliği - Şart Kimliği (ör. 7.4.3/A-0-1).
2. Cihaz Türleri
Android Açık Kaynak Projesi, çeşitli cihaz türleri ve form faktörleri için kullanılabilecek bir yazılım yığını sağlasa da uygulama dağıtım ekosistemi nispeten daha iyi kurulmuş birkaç cihaz türü vardır.
Bu bölümde, söz konusu cihaz türleri ve her cihaz türü için geçerli ek şartlar ve öneriler açıklanmaktadır.
Açıklanan cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamaları, bu Uyumluluk Tanımı'nın diğer bölümlerindeki tüm koşulları karşılamaya devam ETMELİDİR.
2.1 Cihaz Yapılandırmaları
Cihaz türüne göre donanım yapılandırmasındaki temel farklılıklar için bu bölümdeki cihaza özgü gereksinimlere bakın.
2.2. Elde Taşınabilir Cihaz Gereksinimleri
Android el cihazı, genellikle elde tutularak kullanılan bir Android cihaz uygulamasıdır (ör. MP3 çalar, telefon veya tablet).
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa elde taşınabilir cihaz olarak sınıflandırılır:
- Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
- 2,5 ila 8 inç arasında fiziksel bir çapraz ekran boyutuna sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar, Android el cihazı uygulamalarına özeldir.
2.2.1. Donanım
El cihazı uygulamaları:
- [7.1.1.1/H-0-1] Fiziksel diyagonal boyutu en az 2,5 inç olan bir ekranı OLMALIDIR.
- [7.1.1.3/H-SR] Kullanıcılara ekran boyutunu değiştirme olanağı sunulması ŞİDDETLE TAVSİYE EDİLİR (Ekran Yoğunluğu).
El cihazı uygulamaları , Configuration.isScreenHdr() aracılığıyla Yüksek Dinamik Aralık ekranları desteklediğini iddia ediyorsa:
- [7.1.4.5/H-1-1]
EGL_EXT_gl_colorspace_bt2020_pq,EGL_EXT_surface_SMPTE2086_metadata,EGL_EXT_surface_CTA861_3_metadata,VK_EXT_swapchain_colorspaceveVK_EXT_hdr_metadatauzantıları için destek reklamı VERİLMELİDİR.
El cihazı uygulamaları:
- [7.1.5/H-0-1] Yukarı akış Android açık kaynak kodu tarafından uygulanan eski uygulama uyumluluk modu desteği İÇERMELİDİR. Yani, cihaz uygulamaları uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri değiştirmemeli ve uyumluluk modunun davranışını değiştirmemelidir.
- [7.2.1/H-0-1] Üçüncü taraf Giriş Yöntemi Düzenleyici (IME) uygulamaları için destek içermelidir.
- [7.2.3/H-0-1] Ana Sayfa, Son Kullanılanlar ve Geri işlevleri SAĞLANMALIDIR.
- [7.2.3/H-0-2] Geri işlevinin (
KEYCODE_BACK) hem normal hem de uzun basma etkinliği ön plandaki uygulamaya GÖNDERİLMELİDİR. Bu etkinlikler sistem tarafından KULLANILMAMALI ve Android cihazın dışından (ör. Android cihaza bağlı harici donanım klavyesi) tetiklenebilir. - [7.2.4/H-0-1] Dokunmatik ekran girişi DESTEKLENMELİDİR.
- [7.2.4/H-SR] Ön plandaki etkinlik bu uzun basma etkinliklerini işlemediği takdirde, kullanıcı tarafından seçilen asistan uygulamasının (diğer bir deyişle VoiceInteractionService'i uygulayan uygulama) veya
KEYCODE_MEDIA_PLAY_PAUSEya daKEYCODE_HEADSETHOOKtuşuna uzun basıldığındaACTION_ASSISTişleyen bir etkinliğin başlatılması ŞİDDETLE TAVSİYE EDİLİR. - [7.3.1/H-SR] 3 eksenli ivme ölçer içermeleri ŞİDDETLE TAVSİYE EDİLİR.
El cihazı uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/H-1-1] Olayları en az 100 Hz sıklıkta bildirebilmelidir.
El cihazı uygulamalarında jiroskop varsa:
- [7.3.4/H-1-1] Etkinlikleri en az 100 Hz sıklıkta bildirebilmelidir.
Sesli arama yapabilen ve getPhoneType içinde PHONE_TYPE_NONE dışında bir değer belirtebilen elde taşınır cihaz uygulamaları:
- [7.3.8/H] Yakınlık sensörü İÇERMELİDİR.
El cihazı uygulamaları:
- [7.3.12/H-SR] 6 serbestlik dereceli duruş sensörünü desteklemeleri ÖNERİLİR.
- [7.4.3/H] Bluetooth ve Bluetooth LE desteği İÇERMELİDİR.
Elde taşınabilir cihaz uygulamaları, ölçülü bağlantı içeriyorsa:
- [7.4.7/H-1-1] Veri tasarrufu modu SAĞLANMALIDIR.
El cihazı uygulamaları:
- [7.6.1/H-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
- [7.6.1/H-0-2] Çekirdek ve kullanıcı alanı için 1 GB'tan az bellek kullanılabildiğinde
ActivityManager.isLowRamDevice()için "true" değeri DÖNDÜRÜLMELİDİR.
Elde taşınabilir cihaz uygulamaları yalnızca 32 bit ABI'yi desteklediğini beyan ediyorsa:
-
[7.6.1/H-1-1] Varsayılan ekranda qHD'ye (ör. FWVGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 416 MB OLMALIDIR.
-
[7.6.1/H-2-1] Varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 592 MB OLMALIDIR.
-
[7.6.1/H-3-1] Varsayılan ekranda FHD'ye (ör. WSXGA+) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR.
-
[7.6.1/H-4-1] Varsayılan ekranda QHD'ye (ör. QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1344 MB OLMALIDIR.
Elde taşınabilir cihaz uygulamaları herhangi bir 64 bit ABI'yi (32 bit ABI ile veya 32 bit ABI olmadan) desteklediğini beyan ediyorsa:
-
[7.6.1/H-5-1] Varsayılan ekranda qHD'ye kadar (ör. FWVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 816 MB OLMALIDIR.
-
[7.6.1/H-6-1] Varsayılan ekranda HD+'ya kadar (ör. HD, WSVGA) çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 944 MB OLMALIDIR.
-
[7.6.1/H-7-1] Varsayılan ekranda FHD'ye (ör.WSXGA+) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1. 280 MB OLMALIDIR.
-
[7.6.1/H-8-1] Varsayılan ekranda QHD'ye (ör. QWXGA) kadar çerçeve arabelleği çözünürlükleri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1824 MB OLMALIDIR.
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Elde taşınabilir cihaz uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan az veya 1 GB kullanılabilir bellek içeriyorsa:
- [7.6.1/H-9-1]
android.hardware.ram.lowözellik bayrağı BELİRTİLMELİDİR. - [7.6.1/H-9-2] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1,1 GB kalıcı depolama alanı OLMALIDIR.
Elde taşınabilir cihaz uygulamaları, çekirdek ve kullanıcı alanı için 1 GB'tan fazla bellek içeriyorsa:
- [7.6.1/H-10-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
- Özellik bayrağı
android.hardware.ram.normalBEYAN EDİLMELİDİR.
El cihazı uygulamaları:
- [7.6.2/H-0-1] 1 GiB'den küçük bir uygulama paylaşılan depolama alanı SAĞLAMAMALIDIR.
- [7.7.1/H] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
Elde taşınabilir cihaz uygulamaları, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.1/H-1-1] Android Open Accessory (AOA) API'si uygulanmalıdır.
El cihazı uygulamaları:
- [7.8.1/H-0-1] Mikrofon içermelidir.
- [7.8.2/H-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.outputbeyan edilmelidir.
El cihazı uygulamaları, VR modunu desteklemeye yönelik tüm performans koşullarını karşılayabiliyor ve VR modu desteği içeriyorsa:
- [7.9.1/H-1-1]
android.hardware.vr.high_performanceözellik bayrağı BELİRTİLMELİDİR. - [7.9.1/H-1-2]
android.service.vr.VrListenerService'yi uygulayan ve VR uygulamaları tarafındanandroid.app.Activity#setVrModeEnabledaracılığıyla etkinleştirilebilen bir uygulama İÇERMELİDİR.
2.2.2. Multimedya
El cihazı uygulamaları aşağıdaki ses kodlamasını DESTEKLEMELİDİR:
- [5.1.1/H-0-1] AMR-NB
- [5.1.1/H-0-2] AMR-WB
- [5.1.1/H-0-3] MPEG-4 AAC Profili (AAC LC)
- [5.1.1/H-0-4] MPEG-4 HE AAC Profili (AAC+)
- [5.1.1/H-0-5] AAC ELD (enhanced low delay AAC)
El cihazı uygulamaları, aşağıdaki ses kod çözme işlemlerini DESTEKLEMELİDİR:
El cihazı uygulamaları, aşağıdaki video kodlamayı desteklemeli ve üçüncü taraf uygulamalarına sunmalıdır:
El cihazı uygulamaları, aşağıdaki video kod çözme işlemlerini DESTEKLEMELİDİR:
2.2.3. Yazılım
El cihazı uygulamaları:
- [3.2.3.1/H-0-1] SDK dokümanlarında açıklandığı gibi
ACTION_GET_CONTENT,ACTION_OPEN_DOCUMENT,ACTION_OPEN_DOCUMENT_TREEveACTION_CREATE_DOCUMENTamaçlarını işleyen bir uygulamaya sahip OLMALI veDocumentsProviderAPI'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.WebviewAPI'nin eksiksiz bir uygulaması SAĞLANMALIDIR. - [3.4.2/H-0-1] Genel kullanıcı web'de gezinmesi için bağımsız bir Tarayıcı uygulaması İÇERMELİDİR.
- [3.8.1/H-SR] Kısayolların, widget'ların ve widgetFeatures'ın uygulama içi sabitlenmesini destekleyen varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.1/H-SR] ShortcutManager API aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.1/H-SR] Uygulama simgeleri için rozetler gösteren varsayılan bir başlatıcı uygulaması eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.2/H-SR] Üçüncü taraf uygulama widget'larının desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.8.3/H-0-1] Üçüncü taraf uygulamalarının,
NotificationveNotificationManagerAPI sınıfları aracılığıyla kullanıcıları önemli etkinlikler hakkında bilgilendirmesine İZİN VERİLMELİDİR. - [3.8.3/H-0-2] Zengin bildirimler desteklenmelidir.
- [3.8.3/H-0-3] Cihaz, heads-up bildirimlerini DESTEKLEMELİDİR.
- [3.8.3/H-0-4] Kullanıcıya, AOSP'de uygulandığı gibi işlem düğmeleri veya kontrol paneli gibi kullanıcı kolaylığı aracılığıyla bildirimleri doğrudan kontrol etme (ör. yanıtlama, erteleme, kapatma, engelleme) olanağı sağlayan bir bildirim gölgesi İÇERMELİDİR.
- [3.8.3/H-0-5]
RemoteInput.Builder setChoices()aracılığıyla sunulan seçenekler, bildirim gölgesinde GÖSTERİLMELİDİR. - [3.8.3/H-SR]
RemoteInput.Builder setChoices()aracılığıyla sağlanan ilk seçeneğin, ek kullanıcı etkileşimi olmadan bildirim gölgesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [3.8.3/H-SR] Kullanıcı, bildirim gölgesindeki tüm bildirimleri genişlettiğinde
RemoteInput.Builder setChoices()aracılığıyla sağlanan tüm seçeneklerin bildirim gölgesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [3.8.4/H-SR] Yardımcı işlemine yönelik istekleri işlemek için cihazda bir asistan uygulanması ŞİDDETLE TAVSİYE EDİLİR.
El cihazı uygulamaları Asistan işlemini destekliyorsa:
- [3.8.4/H-SR]
HOMEtuşuna uzun basmanın, bölüm 7.2.3'te açıklandığı gibi asistan uygulamasını başlatmak için belirlenmiş etkileşim olarak kullanılması ŞİDDETLE TAVSİYE EDİLİR. Kullanıcı tarafından seçilen yardım uygulamasını (diğer bir deyişleVoiceInteractionServiceuygulayan uygulama) veyaACTION_ASSISTamacını işleyen bir etkinliği BAŞLATMALIDIR.
Android el cihazı uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/H-1-1] Medya Bildirim Şablonu da dahil olmak üzere Kilit Ekranı Bildirimleri GÖSTERİLMELİDİR.
El cihazı uygulamaları güvenli kilit ekranını destekliyorsa:
- [3.9/H-1-1] Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tamamı UYGULANMALIDIR.
- [3.9/H-1-2] Cihaz, kendisini düşük RAM'li bir cihaz olarak bildirecek veya dahili (çıkarılamayan) depolama alanını paylaşılan depolama alanı olarak tahsis edecek şekilde yapılandırılmadığı sürece,
android.software.managed_usersözellik işareti aracılığıyla yönetilen profillerin desteği BİLDİRİLMELİDİR.
El cihazı uygulamaları:
- [3.10/H-0-1] Üçüncü taraf erişilebilirlik hizmetleri desteklenmelidir.
- [3.10/H-SR] TalkBack açık kaynak projesinde belirtildiği şekilde, cihazda Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğine eşit veya daha fazla işlevsellik sunan erişilebilirlik hizmetlerinin önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.11/H-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
- [3.11/H-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru eklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.13/H-SR] Hızlı Ayarlar kullanıcı arayüzü bileşeni içermeleri ŞİDDETLE TAVSİYE EDİLİR.
Android avuç içi cihaz uygulamaları FEATURE_BLUETOOTH veya FEATURE_WIFI desteği beyan ediyorsa:
- [3.16/H-1-1] Yardımcı cihaz eşleştirme özelliği DESTEKLENMELİDİR.
2.2.4. Performans ve Güç
- [8.1/H-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
- [8.1/H-0-2] Kullanıcı arayüzü gecikmesi. Cihaz uygulamaları, Android Uyumluluk Test Paketi (CTS) tarafından tanımlanan 10.000 liste girişinden oluşan bir listenin 36 saniyeden kısa sürede kaydırılmasını sağlayarak düşük gecikmeli kullanıcı deneyimi sunmalıdır.
- [8.1/H-0-3] Görev değiştirme. Birden fazla uygulama başlatıldığında, başlatılmış olan bir uygulamanın yeniden başlatılması 1 saniyeden kısa sürmelidir.
El cihazı uygulamaları:
- [8.2/H-0-1] En az 5 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.
- [8.2/H-0-2] En az 0,5 MB/sn rastgele yazma performansı sağlamalıdır.
- [8.2/H-0-3] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
- [8.2/H-0-4] En az 3,5 MB/sn rastgele okuma performansı sağlamalıdır.
El cihazı uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/H-1-1] Pil tasarrufu özelliğini etkinleştirme ve devre dışı bırakma için kullanıcıya olanak TANINMALIDIR.
- [8.3/H-1-2] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANIMALIDIR.
El cihazı uygulamaları:
- [8.4/H-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her bir donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/H-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/H-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu şartı karşılar. - [8.4/H-0-4] Bu güç kullanımını,
adb shell dumpsys batterystatskabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNMALIDIR. - [8.4/H] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
Elde taşınabilir cihaz uygulamalarında ekran veya video çıkışı varsa:
- [8.4/H-1-1]
android.intent.action.POWER_USAGE_SUMMARYamacına UYULMALI ve bu güç kullanımını gösteren bir ayarlar menüsü görüntülenmelidir.
2.2.5. Güvenlik Modeli
El cihazı uygulamaları:
- [9.1/H-0-1] Üçüncü taraf uygulamalarının,
android.permission.PACKAGE_USAGE_STATSizni aracılığıyla kullanım istatistiklerine erişmesine İZİN VERİLMELİ veandroid.settings.ACTION_USAGE_ACCESS_SETTINGSintentine yanıt olarak bu tür uygulamalara erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma sağlanmalıdır.
El cihazı uygulamaları güvenli bir kilit ekranını desteklediğinde:
- [9.11/H-1-1] KULLANICININ, KİLİDİN AÇIK OLDUĞU DURUMDAN KİLİTLİ DURUMA GEÇİŞ SÜRESİ OLAN EN KISA UYKU ZAMAN AŞIMI SÜRESİNİ (15 SANİYE VEYA DAHA KISA) SEÇMESİNE İZİN VERİLMELİDİR.
- [9.11/H-1-2] Bildirimleri gizlemek ve 9.11.1 Güvenli Kilit Ekranı'nda açıklanan birincil kimlik doğrulama dışında tüm kimlik doğrulama biçimlerini devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR. AOSP, tam kilitleme modu olarak bu koşulu karşılar.
2.3. Televizyon Gereksinimleri
Android TV cihazı, yaklaşık üç metre uzakta oturan kullanıcıların dijital medya, film, oyun, uygulama ve/veya canlı TV içeriklerini tüketebileceği bir eğlence arayüzü olan Android cihaz uygulamasıdır ("arkaya yaslanma" veya "3 metrelik kullanıcı arayüzü").
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa televizyon olarak sınıflandırılır:
- Kullanıcıdan üç metre uzakta olabilecek ekranda oluşturulan kullanıcı arayüzünü uzaktan kontrol etme mekanizması sağlamış olmalıdır.
- Köşegen uzunluğu 24 inçten büyük olan yerleşik bir ekranı olmalı VEYA VGA, HDMI, DisplayPort gibi bir video çıkış bağlantı noktası ya da ekran için kablosuz bir bağlantı noktası içermelidir.
Bu bölümün geri kalanındaki ek şartlar, Android TV cihaz uygulamalarına özeldir.
2.3.1. Donanım
Televizyon cihazı uygulamaları:
- [7.2.2/T-0-1] D-pad desteklenmelidir.
- [7.2.3/T-0-1] Ana Sayfa ve Geri işlevleri SAĞLANMALIDIR.
- [7.2.3/T-0-2] Geri işlevinin (
KEYCODE_BACK) hem normal hem de uzun basma etkinliği ön plandaki uygulamaya GÖNDERİLMELİDİR. - [7.2.6.1/T-0-1] Oyun kumandası desteği içermeli ve
android.hardware.gamepadözellik işaretini bildirmelidir. - [7.2.7/T] Kullanıcıların dokunmadan gezinme ve temel gezinme tuşları girişlerine erişebileceği bir uzaktan kumanda SAĞLANMALIDIR.
Televizyon cihaz uygulamaları jiroskop içeriyorsa:
- [7.3.4/T-1-1] Etkinlikleri en az 100 Hz sıklıkta raporlayabilmelidir.
Televizyon cihazı uygulamaları:
- [7.4.3/T-0-1] Bluetooth ve Bluetooth LE'yi desteklemelidir.
- [7.6.1/T-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 4 GB kalıcı depolama alanı OLMALIDIR.
Televizyon cihaz uygulamaları, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.5.3/T-1-1] Bu USB bağlantı noktası üzerinden bağlanan ancak her zaman bağlı olması gerekmeyen harici bir kamera için destek içermelidir.
TV cihazı uygulamaları 32 bit ise:
-
[7.6.1/T-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
TV cihazı uygulamaları 64 bit ise:
-
[7.6.1/T-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Televizyon cihazı uygulamaları:
- [7.8.1/T] Mikrofon içermelidir.
- [7.8.2/T-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.outputbeyan edilmelidir.
2.3.2. Multimedya
Televizyon cihazı uygulamaları, aşağıdaki ses kodlama biçimlerini DESTEKLEMELİDİR:
- [5.1/T-0-1] MPEG-4 AAC Profili (AAC LC)
- [5.1/T-0-2] MPEG-4 HE AAC Profili (AAC+)
- [5.1/T-0-3] AAC ELD (geliştirilmiş düşük gecikmeli AAC)
Televizyon cihazı uygulamaları, aşağıdaki video kodlama biçimlerini DESTEKLEMELİDİR:
Televizyon cihazı uygulamaları:
- [5.2.2/T-SR] 720p ve 1080p çözünürlüklü videoların saniyede 30 kare hızında H.264 kodlamasını desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihazı uygulamaları, aşağıdaki video kod çözme biçimlerini DESTEKLEMELİDİR:
- [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 değerler de dahil olmak üzere çözünürlüklerde H.264 kod çözme işlemini DESTEKLEMELİDİR:
- [5.3.4.4/T-1-1] Baseline Profili ile saniyede 60 kare hızında HD 1080p
- [5.3.4.4/T-1-2] Ana Profil ile saniyede 60 kare hızında HD 1080p
- [5.3.4.4/T-1-3] High Profile Level 4.2 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.5'te ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde H.265 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.5.4/T-1-1] Main Profile Level 4.1 ile saniyede 60 kare hızında HD 1080p
H.265 donanım kod çözücülerine sahip televizyon cihazı uygulamaları H.265 kod çözme ve UHD kod çözme profilini destekliyorsa:
- [5.3.5.5/T-2-1] Main10 Level 5 Main Tier profiliyle saniyede 60 kare hızında UHD kod çözme profilini DESTEKLEMELİDİR.
Televizyon cihaz uygulamaları, Bölüm 5.3.6'da ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler de dahil olmak üzere çözünürlüklerde VP8 kod çözme işlemini DESTEKLEMELİDİR:
- [5.3.6.4/T-1-1] Saniyede 60 kare hızında HD 1080p çözme profili
VP9 donanım kod çözücülerine sahip televizyon cihazı uygulamaları, Bölüm 5.3.7'de ayrıntılı olarak açıklandığı gibi, standart video kare hızlarında ve aşağıdakiler dahil olmak üzere çözünürlüklerde VP9 kod çözmeyi DESTEKLEMELİDİR:
- [5.3.7.4/T-1-1] Profil 0 ile saniyede 60 kare hızında HD 1080p (8 bit renk derinliği)
VP9 donanım kod çözücülerine sahip televizyon cihazı uygulamaları VP9 kod çözme ve UHD kod çözme profilini destekliyorsa:
- [5.3.7.5/T-2-1] 60 kare/saniye hızında, profil 0 (8 bit renk derinliği) ile UHD kod çözme profilini DESTEKLEMELİDİR.
- [5.3.7.5/T-2-1] 2. profille (10 bit renk derinliği) saniyede 60 kare hızında UHD kod çözme profilini desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihazı uygulamaları:
- [5.5.3/T-0-1] Sıkıştırılmış ses geçişi çıkışı (cihazda ses kod çözme işlemi yapılmaz) hariç olmak üzere, desteklenen çıkışlarda sistem ana ses seviyesi ve dijital ses çıkışı ses seviyesi zayıflatma desteği İÇERMELİDİR.
- [5.8/T-0-1] HDMI çıkış modu, tüm kablolu ekranlar için 50 Hz veya 60 Hz yenileme hızıyla desteklenebilecek maksimum çözünürlüğü seçecek şekilde AYARLANMALIDIR.
- [5.8/T-SR] Tüm kablolu ekranlar için kullanıcı tarafından yapılandırılabilir bir HDMI yenileme hızı seçici sağlanması ŞİDDETLE TAVSİYE EDİLİR.
- [5.8/T-SR] Güvenli akışların eş zamanlı olarak kodunun çözülmesini desteklemek için ŞİDDETLE TAVSİYE EDİLİR. En az iki akışın eşzamanlı olarak kodunun çözülmesi ŞİDDETLE TAVSİYE EDİLİR.
- [5.8] Tüm kablolu ekranlar için HDMI çıkış modu yenileme hızını, cihazın satıldığı bölgedeki video yenileme hızına bağlı olarak 50 Hz veya 60 Hz olarak AYARLAMALIDIR.
Televizyon cihazı uygulamaları UHD kod çözme özelliğini destekliyorsa ve harici ekran desteği varsa:
- [5.8/T-1-1] HDCP 2.2'yi desteklemelidir.
Televizyon cihaz uygulamaları UHD kod çözmeyi desteklemiyor ancak harici ekranları destekliyorsa:
- [5.8/T-2-1] HDCP 1.4 desteklenmelidir.
2.3.3. Yazılım
Televizyon cihazı uygulamaları:
- [3/T-0-1]
android.software.leanbackveandroid.hardware.type.televisionözellikleri BEYAN EDİLMELİDİR. - [3.4.1/T-0-1]
android.webkit.WebviewAPI'nin eksiksiz bir uygulamasını SAĞLAMALIDIR.
Android Television cihaz uygulamaları kilit ekranını destekliyorsa:
- [3.8.10/T-1-1] Medya Bildirim Şablonu da dahil olmak üzere kilit ekranı bildirimleri GÖSTERİLMELİDİR.
Televizyon cihazı uygulamaları:
- [3.8.14/T-SR] Pencere içinde pencere (PIP) modunda çoklu pencere özelliğini desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [3.10/T-0-1] Üçüncü taraf erişilebilirlik hizmetleri DESTEKLENMELİDİR.
- [3.10/T-SR] TalkBack açık kaynak projesinde belirtildiği gibi, cihazda Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Televizyon cihaz uygulamaları android.hardware.audio.output özelliğini bildiriyorsa:
- [3.11/T-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermeleri ŞİDDETLE TAVSİYE EDİLİR.
- [3.11/T-1-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
Televizyon cihazı uygulamaları:
- [3.12/T-0-1] TV Giriş Çerçevesi desteklenmelidir.
2.3.4. Performans ve Güç
- [8.1/T-0-1] Tutarlı kare gecikmesi. Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALI ve saniyede 1 kareden daha az OLMALIDIR.
- [8.2/T-0-1] En az 5 MB/sn'lik sıralı yazma performansı SAĞLANMALIDIR.
- [8.2/T-0-2] En az 0,5 MB/sn'lik rastgele yazma performansı SAĞLANMALIDIR.
- [8.2/T-0-3] En az 15 MB/sn'lik sıralı okuma performansı SAĞLANMALIDIR.
- [8.2/T-0-4] En az 3,5 MB/sn rastgele okuma performansı sağlamalıdır.
TV cihazı uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/T-1-1] Pil tasarrufu özelliğini etkinleştirme ve devre dışı bırakma için kullanıcıya olanak TANINMALIDIR.
- [8.3/T-1-2] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANINMALIDIR.
Televizyon cihazı uygulamaları:
- [8.4/T-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/T-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/T-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu şartı karşılar. - [8.4/T] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşeninin kendisine atanmalıdır.
- [8.4/T-0-4] Bu güç kullanımını,
adb shell dumpsys batterystatskabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNMALIDIR.
2.4. Saat Gereksinimleri
Android Watch cihaz, vücuda (ör. bileğe) takılmak üzere tasarlanmış bir Android cihaz uygulamasıdır.
Android cihaz uygulamaları, aşağıdaki ölçütlerin tümünü karşılıyorsa Kol Saati olarak sınıflandırılır:
- Fiziksel diyagonal uzunluğu 2,8 cm ile 6,3 cm arasında olan bir ekrana sahip olmalıdır.
- Vücutta taşınmak üzere tasarlanmış bir mekanizmaya sahip olmalıdır.
Bu bölümün geri kalanındaki ek şartlar, Android Watch cihaz uygulamalarına özeldir.
2.4.1. Donanım
Cihaz uygulamalarını izleyin:
-
[7.1.1.1/W-0-1] 1,1 ila 2,5 inç arasında fiziksel diyagonal boyuta sahip bir ekran OLMALIDIR.
-
[7.2.3/W-0-1] Kullanıcıya Ana Sayfa işlevi sunulmalı ve
UI_MODE_TYPE_WATCHkonumunda olmadığı sürece Geri işlevi kullanılabilmelidir. -
[7.2.4/W-0-1] Dokunmatik ekran girişi DESTEKLENMELİDİR.
-
[7.3.1/W-SR] 3 eksenli ivme ölçer içermesi ŞİDDETLE TAVSİYE EDİLİR.
-
[7.4.3/W-0-1] Bluetooth'u desteklemelidir.
-
[7.6.1/W-0-1] Uygulama özel verileri (diğer adıyla "/data" bölümü) için en az 1 GB kalıcı depolama alanı OLMALIDIR.
-
[7.6.1/W-0-2] Çekirdek ve kullanıcı alanı için en az 416 MB kullanılabilir bellek OLMALIDIR.
-
[7.8.1/W-0-1] Mikrofon içermelidir.
-
[7.8.2/W] Ses çıkışı OLABİLİR ancak OLMAMALIDIR.
2.4.2. Multimedya
Ek şart yoktur.
2.4.3. Yazılım
Cihaz uygulamalarını izleyin:
- [3/W-0-1]
android.hardware.type.watchözelliği BELİRTİLMELİDİR. - [3/W-0-2] MUST support uiMode = UI_MODE_TYPE_WATCH.
Cihaz uygulamalarını izleyin:
- [3.8.4/W-SR] Yardımcı işlemi'ni gerçekleştirmek için cihazda bir yardımcı uygulanması ŞİDDETLE TAVSİYE EDİLİR.
android.hardware.audio.output özellik işaretini bildiren cihaz uygulamalarını izleyin:
- [3.10/W-1-1] Üçüncü taraf erişilebilirlik hizmetleri desteklenmelidir.
- [3.10/W-SR] TalkBack açık kaynak projesinde belirtildiği gibi, Anahtar Erişimi ve TalkBack (önceden yüklenmiş metin okuma motorunun desteklediği diller için) erişilebilirlik hizmetlerinin işlevselliğiyle karşılaştırılabilir veya bu hizmetlerin işlevselliğini aşan erişilebilirlik hizmetlerinin cihaza önceden yüklenmesi ŞİDDETLE TAVSİYE EDİLİR.
Kol saati cihaz uygulamaları android.hardware.audio.output özelliğini bildiriyorsa:
-
[3.11/W-SR] Cihazda kullanılabilen dilleri destekleyen bir TTS motoru içermeleri ŞİDDETLE TAVSİYE EDİLİR.
-
[3.11/W-0-1] Üçüncü taraf TTS motorlarının yüklenmesi DESTEKLENMELİDİR.
2.4.4. Performans ve Güç
Watch cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/W-SR] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya uygunluk sağlanması ŞİDDETLE TAVSİYE EDİLİR.
- [8.3/W-SR] Pil Tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya uygunluk sağlanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarını izleyin:
- [8.4/W-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil boşalmasını tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/W-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/W-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu şartı karşılar. - [8.4/W-0-4] Bu güç kullanımı, uygulama geliştiriciye
adb shell dumpsys batterystatskabuk komutu aracılığıyla SUNULMALIDIR. - [8.4/W] Donanım bileşeninin güç kullanımı bir uygulamaya atanamıyorsa donanım bileşenine atfedilmelidir.
2.5. Otomotiv Şartları
Android Automotive uygulaması, sistemin bir kısmı veya tamamı ve/veya bilgi-eğlence işlevleri için işletim sistemi olarak Android'i çalıştıran bir araç ana birimini ifade eder.
Android cihaz uygulamaları, android.hardware.type.automotive özelliğini beyan ederse veya aşağıdaki ölçütlerin tümünü karşılarsa Otomotiv olarak sınıflandırılır.
- Otomotiv araçlarının bir parçası olarak yerleştirilmiş veya bu araçlara takılabilir.
- Sürücü koltuğu sırasındaki bir ekranı birincil ekran olarak kullanıyorsanız.
Bu bölümün geri kalanındaki ek şartlar, Android Automotive cihaz uygulamalarına özeldir.
2.5.1. Donanım
Otomotiv cihaz uygulamaları:
- [7.1.1.1/A-0-1] Fiziksel diyagonal boyutu en az 6 inç olan bir ekrana SAHİP OLMALIDIR.
-
[7.1.1.1/A-0-2] En az 750 dp x 480 dp ekran boyutu düzenine SAHİP OLMALIDIR.
-
[7.2.3/A-0-1] Ana Sayfa işlevi SAĞLANMALIDIR ve Geri ile Son Kullanılanlar işlevleri SAĞLANABİLİR.
-
[7.2.3/A-0-2] Geri işlevinin (
KEYCODE_BACK) hem normal hem de uzun basma etkinliği ön plandaki uygulamaya GÖNDERİLMELİDİR. -
[7.3.1/A-SR] 3 eksenli ivme ölçer içermeleri ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [7.3.1/A-1-1] Etkinlikleri en az 100 Hz sıklıkta raporlayabilmelidir.
- [7.3.1/A-1-2] Android araç sensörü koordinat sistemi ile uyumlu OLMALIDIR.
Otomotiv cihaz uygulamaları bir jiroskop içeriyorsa:
- [7.3.4/A-1-1] Etkinlikleri en az 100 Hz sıklıkta raporlayabilmelidir.
Otomotiv cihaz uygulamaları:
- [7.3.11/A-0-1] Mevcut dişli
SENSOR_TYPE_GEARolarak sağlanmalıdır.
Otomotiv cihaz uygulamaları:
- [7.3.11.2/A-0-1]
SENSOR_TYPE_NIGHTolarak tanımlanan gündüz/gece modu desteklenmelidir. - [7.3.11.2/A-0-2]
SENSOR_TYPE_NIGHTişaretinin değeri, kontrol panelinin gündüz/gece moduyla tutarlı OLMALI ve ortam ışığı sensörü girişine dayanmalıdır. -
Temel ortam ışığı sensörü, fotometre ile aynı OLABİLİR.
-
[7.3.11.4/A-0-1]
SENSOR_TYPE_CAR_SPEEDtarafından tanımlanan araç hızı SAĞLANMALIDIR. -
[7.3.11.5/A-0-1]
SENSOR_TYPE_PARKING_BRAKEtarafından tanımlandığı şekilde park freni durumu SAĞLANMALIDIR. -
[7.4.3/A-0-1] Bluetooth'u DESTEKLEMELİ ve Bluetooth LE'yi DESTEKLEMELİDİR.
- [7.4.3/A-0-2] Android Automotive uygulamaları, aşağıdaki Bluetooth profillerini DESTEKLEMELİDİR:
- Eller Serbest Profili (HFP) üzerinden telefon görüşmesi yapma.
- Ses Dağıtım Profili (A2DP) üzerinden medya oynatma.
- Uzaktan Ses ve Video Kontrolü Profili (AVRCP) üzerinden medya oynatma kontrolü.
- Telefon Rehberi Erişim Profili (PBAP) kullanılarak kişi paylaşımı.
-
[7.4.3/A-SR] Mesaj Erişim Profili'ni (MAP) desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
-
[7.4.5/A] Hücresel ağ tabanlı veri bağlantısı desteği İÇERMELİDİR.
-
[7.4.5/A] Sistem uygulamaları tarafından kullanılabilmesi gereken ağlar için
NetworkCapabilities#NET_CAPABILITY_OEM_PAIDsabitini 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,
f2fsdosya 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.
SDCardFSkullanılarak) ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamaları 32 bit ise:
-
[7.6.1/A-1-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 512 MB OLMALIDIR:
- Küçük/normal ekranlarda 280 dpi veya daha düşük
- Ekstra büyük ekranlarda ldpi veya daha düşük
- Büyük ekranlarda mdpi veya daha düşük
-
[7.6.1/A-1-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 608 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya daha yüksek
- Büyük ekranlarda hdpi veya daha yüksek
- Çok büyük ekranlarda mdpi veya daha yüksek
-
[7.6.1/A-1-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 896 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
-
[7.6.1/A-1-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.344 MB OLMALIDIR:
- Küçük/normal ekranlarda 560 dpi veya daha yüksek
- Büyük ekranlarda 400 DPI veya daha yüksek
- Ekstra büyük ekranlarda xhdpi veya daha yüksek
Otomotiv cihaz uygulamaları 64 bit ise:
-
[7.6.1/A-2-1] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 816 MB OLMALIDIR:
- Küçük/normal ekranlarda 280 dpi veya daha düşük
- Ekstra büyük ekranlarda ldpi veya daha düşük
- Büyük ekranlarda mdpi veya daha düşük
-
[7.6.1/A-2-2] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 944 MB OLMALIDIR:
- Küçük/normal ekranlarda xhdpi veya daha yüksek
- Büyük ekranlarda hdpi veya daha yüksek
- Çok büyük ekranlarda mdpi veya daha yüksek
-
[7.6.1/A-2-3] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.280 MB OLMALIDIR:
- Küçük/normal ekranlarda 400 DPI veya daha yüksek
- Büyük ekranlarda xhdpi veya daha yüksek
- Ekstra büyük ekranlarda tvdpi veya daha yüksek
-
[7.6.1/A-2-4] Aşağıdaki yoğunluklardan herhangi biri kullanılıyorsa çekirdek ve kullanıcı alanı için kullanılabilir bellek en az 1.824 MB OLMALIDIR:
- Küçük/normal ekranlarda 560 dpi veya daha yüksek
- Büyük ekranlarda 400 DPI veya daha yüksek
- Ekstra büyük ekranlarda xhdpi veya daha yüksek
Yukarıdaki "çekirdek ve kullanıcı alanı için kullanılabilir bellek" ifadesinin, cihaz uygulamalarında çekirdeğin kontrolünde olmayan radyo, video vb. gibi donanım bileşenlerine ayrılmış belleğe ek olarak sağlanan bellek alanını ifade ettiğini unutmayın.
Otomotiv cihaz uygulamaları:
- [7.7.1/A] Çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
Otomotiv cihaz uygulamaları:
- [7.8.1/A-0-1] Mikrofon içermelidir.
Otomotiv cihaz uygulamaları:
- [7.8.2/A-0-1] Ses çıkışı OLMALI ve
android.hardware.audio.outputbeyan etmelidir.
2.5.2. Multimedya
Otomotiv cihaz uygulamaları aşağıdaki ses kodlamasını DESTEKLEMELİDİR:
- [5.1/A-0-1] MPEG-4 AAC Profili (AAC LC)
- [5.1/A-0-2] MPEG-4 HE AAC Profili (AAC+)
- [5.1/A-0-3] AAC ELD (enhanced low delay AAC)
Otomotiv cihaz uygulamaları, aşağıdaki video kodlamayı DESTEKLEMELİDİR:
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_CARdesteklenmelidir. -
[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.WebviewAPI'nin eksiksiz bir uygulamasını SAĞLAMALIDIR. -
[3.8.3/A-0-1] Üçüncü taraf uygulamaları tarafından istendiğinde
Notification.CarExtenderAPI'sini kullanan bildirimleri GÖSTERMELİDİR. -
[3.8.4/A-SR] Yardımcı işlemine yönelik istekleri işlemek için cihazda bir asistanın uygulanması kesinlikle önerilir.
-
[3.13/A-SR] Hızlı Ayarlar kullanıcı arayüzü bileşeni içermesi ŞİDDETLE TAVSİYE EDİLİR.
Otomotiv cihaz uygulamalarında bas-konuş düğmesi varsa:
- [3.8.4/A-1-1] Kullanıcı tarafından seçilen asistan uygulamasını (diğer bir deyişle
VoiceInteractionServiceuygulayan uygulama) başlatmak için belirlenen etkileşim olarak bas-konuş düğmesine kısa basma işlemi KULLANILMALIDIR.
Otomotiv cihaz uygulamaları:
- [3.14/A-0-1] 3.14 bölümünde açıklandığı gibi medya API'lerini kullanan üçüncü taraf uygulamaları desteklemek için bir kullanıcı arayüzü çerçevesi İÇERMELİDİR.
2.5.4. Performans ve Güç
Otomotiv cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [8.3/A-1-1] Pil tasarrufu özelliğinin etkinleştirilip devre dışı bırakılması için kullanıcıya olanak TANINMALIDIR.
- [8.3/A-1-2] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak TANINMALIDIR.
Otomotiv cihaz uygulamaları:
- [8.2/A-0-1] İstatistiklerin Sistem API'si
android.car.storagemonitoring.CarStorageMonitoringManageraracılığıyla geliştiricilere sunulabilmesi için her işlemin UID'si başına kalıcı olmayan depolama alanına okunan ve yazılan bayt sayısını bildirmelidir. Android Açık Kaynak Projesi,uid_sys_statsçekirdek modülü aracılığıyla bu şartı karşılar. - [8.4/A-0-1] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili SAĞLANMALIDIR.
- [8.4/A-0-2] Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- [8.4/A-0-3] Her işlemin UID'si başına CPU güç tüketimi RAPORLANMALIDIR. Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu şartı karşılar. - [8.4/A] Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
- [8.4/A-0-4] Bu güç kullanımını,
adb shell dumpsys batterystatskabuk komutu aracılığıyla uygulama geliştiricinin kullanımına SUNMALIDIR.
2.5.5. Güvenlik Modeli
Otomotiv cihaz uygulamaları birden fazla kullanıcıyı destekliyorsa:
- [9.5/A-1-1] Kullanıcının oturum açmasını gerektirmeden araç sisteminin sağladığı tüm işlevlere izin veren bir misafir hesabı İÇERMELİDİR.
Otomotiv cihaz uygulamaları güvenli bir kilit ekranını destekliyorsa:
- [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şı gözetim yapılmalıdır. Bu, kötü amaçlı yazılımların araç ağını trafikle doldurmasını önler. Aksi takdirde, araç alt sistemlerinde arızalar meydana gelebilir.
2.6. Tablet Gereksinimleri
Android Tablet cihaz, aşağıdaki tüm ölçütleri karşılayan bir Android cihaz uygulamasıdır:
- Genellikle iki elle tutularak kullanılır.
- Clamshell veya dönüştürülebilir yapılandırmaya sahip olmamalıdır.
- Cihazla kullanılan tüm fiziksel klavye uygulamaları, standart bir bağlantı aracılığıyla bağlanmalıdır.
- Pil gibi mobilite sağlayan bir güç kaynağına sahip olmalıdır.
- 7-18 inç arasında fiziksel bir çapraz ekran boyutuna sahip olmalıdır.
Tablet cihaz uygulamaları, el cihazı uygulamalarına benzer şartlara sahiptir. İstisnalar, ilgili bölümde * işaretiyle belirtilir ve bu bölümde referans olarak not edilir.
2.4.1. Donanım
Ekran Boyutu
- [7.1.1.1/Tab-0-1] 7-18 inç arasında bir ekrana sahip OLMALIDIR.
Minimum Bellek ve Depolama Alanı (Bölüm 7.6.1)
Elde taşınabilir cihaz gereksinimlerinde küçük/normal ekranlar için listelenen ekran yoğunlukları tabletler için geçerli değildir.
USB çevre birimi modu (Bölüm 7.7.1)
Tablet cihaz uygulamaları, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- [7.7.1/Tab] Android Open Accessory (AOA) API'yi uygulayabilir.
Sanal Gerçeklik Modu (Bölüm 7.9.1)
Sanal Gerçeklikte Yüksek Performans (Bölüm 7.9.2)
Sanal gerçeklik şartları tabletler için geçerli değildir.
3. Yazılım
3.1. Yönetilen API Uyumluluğu
Yönetilen Dalvik bayt kodu yürütme ortamı, Android uygulamaları için birincil araçtır. Android uygulama programlama arayüzü (API), yönetilen çalışma zamanı ortamında çalışan uygulamalara sunulan Android platform arayüzleri kümesidir.
Cihaz uygulamaları:
-
[C-0-1] Android SDK tarafından kullanıma sunulan tüm belgelenmiş API'lerin veya yukarı akış Android kaynak kodunda "@SystemApi" işaretçisiyle süslenmiş tüm API'lerin, belgelenmiş tüm davranışlar dahil olmak üzere eksiksiz uygulamalarını SAĞLAMALIDIR.
-
[C-0-2] TestApi ek açıklaması (@TestApi) ile işaretlenen tüm sınıfları, yöntemleri ve ilişkili öğeleri desteklemeli/korumalıdır.
-
[C-0-3] Bu Uyumluluk Tanımı'nda özellikle izin verilen durumlar hariç olmak üzere, yönetilen API'ler atlanmamalı, API arayüzleri veya imzaları değiştirilmemeli, belgelenen davranıştan sapılmamalı ya da hiçbir işlem yapılmayan işlemler eklenmemelidir.
-
[C-0-4] Android'in API'ler içerdiği bazı donanım özellikleri atlandığında bile API'ler mevcut olmaya devam etmeli ve makul bir şekilde davranmalıdır. Bu senaryoya özgü şartlar için 7. bölüme bakın.
-
[C-0-5] SDK belgelerinde açıklandığı gibi, android ad alanında
@hiddenek açıklamasıyla süslenmiş ancak@SystemAPIveya@TestApiile 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: Cihaz uygulamasında gizli bir API yoksa veya farklı şekilde uygulanmışsa gizli API'yi kara listeye taşıyın ya da tüm kısıtlanmış listelerden çıkarın.
- MAY: AOSP'de gizli bir API yoksa gizli API'yi kısıtlanmış listelerden herhangi birine ekleyin.
- İzin verilenler listesi hariç, gizli bir API'yi kısıtlanmış bir listeden daha az kısıtlayıcı bir listeye taşıyan dinamik bir güncelleme mekanizması UYGULAYABİLİR.
3.1.1. Android Uzantıları
Android, aynı API düzeyi sürümünü korurken yönetilen API'lerin genişletilmesini destekler.
- [C-0-1] Android cihaz uygulamaları, her API düzeyi için izin verilen minimum sürümlerden daha yüksek veya bu sürümlere eşit sürümlere sahip hem paylaşılan kitaplık
ExtSharedhem de hizmetlerExtServicesiçin AOSP uygulamasını önceden yüklemelidir. Örneğin, API düzeyi 24'ü çalıştıran Android 7.0 cihaz uygulamaları EN AZ 1. sürümü içermelidir.
3.1.2. Android Kitaplığı
Apache HTTP istemcisinin desteği sonlandırıldığından cihaz uygulamaları:
- [C-0-1]
org.apache.http.legacykitaplığı, bootclasspath'e yerleştirilmemelidir. - [C-0-2] YALNIZCA uygulama aşağıdaki koşullardan birini karşıladığında
org.apache.http.legacykitaplığı 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.legacyolarak ayarlayarak kitaplığa ihtiyacı olduğunu manifest dosyasında belirtir.
AOSP uygulaması bu koşulları karşılar.
3.2. Yazılım API Uyumluluğu
Android, 3.1 bölümündeki yönetilen API'lere ek olarak, yalnızca çalışma zamanında kullanılabilen önemli bir "yumuşak" API de içerir. Bu API, intent'ler, izinler ve Android uygulamalarının derleme süresinde zorunlu kılınamayan benzer yönleri gibi öğeler biçimindedir.
3.2.1. İzinler
- [C-0-1] Cihaz uygulayıcıları, izin referans sayfasında belirtildiği şekilde tüm izin sabitlerini desteklemeli ve zorunlu kılmalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek şartların listelendiğini unutmayın.
3.2.2. Oluşturma Parametreleri
Android API'leri, android.os.Build sınıfında mevcut cihazı tanımlaması amaçlanan bir dizi sabit içerir.
- [C-0-1] Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının UYMASI GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
| Parametre | Ayrıntılar |
|---|---|
| VERSION.RELEASE | Şu anda yürütülen Android sisteminin sürümü, okunabilir biçimde. Bu alan, 9'da tanımlanan dize değerlerinden birini içermelidir. |
| VERSION.SDK | Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 9 için bu alanın değeri 9_INT tam sayısı OLMALIDIR. |
| VERSION.SDK_INT | Şu anda yürütülen Android sisteminin sürümü, üçüncü taraf uygulama kodunun erişebileceği bir biçimde. Android 9 için bu alanın değeri 9_INT tam sayısı OLMALIDIR. |
| VERSION.INCREMENTAL | Cihaz uygulayıcısı tarafından seçilen ve o anda yürütülen Android sisteminin belirli derlemesini belirten, kullanıcılar tarafından okunabilir biçimde bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişikliği tanımlayıcısının kullanıldığını belirtmektir. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır. |
| MASA | Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı tanımlayan, kullanıcılar tarafından okunabilir biçimdeki bir değer. Bu alan, cihazı çalıştıran kartın belirli bir revizyonunu belirtmek için kullanılabilir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
| BRAND | Cihazla ilişkili marka adını son kullanıcılara bilindiği şekliyle yansıtan bir değer. İnsan tarafından okunabilir biçimde OLMALI ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını TEMSİL ETMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
| SUPPORTED_ABIS | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| SUPPORTED_32_BIT_ABIS | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| SUPPORTED_64_BIT_ABIS | Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| CPU_ABI | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| CPU_ABI2 | Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bölüm 3.3'e bakın. Yerel API Uyumluluğu. |
| CİHAZ | Cihaz uygulayıcısı tarafından seçilen ve cihazın donanım özelliklerinin ve endüstriyel tasarımının yapılandırmasını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilmeli ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
| PARMAK İZİ |
Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunabilir OLMALIDIR. Şu şablona UYULMALIDIR:
$(BRAND)/$(PRODUCT)/ Ö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, okunabilir biçimdeki dize. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır. |
| Kimlik | Cihaz uygulayıcısı tarafından belirli bir sürümü belirtmek için seçilen, insanlar tarafından okunabilir biçimde bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapabilmesi için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir. |
| ÜRETİCİ | Ürünün Özgün Donanım Üreticisi'nin (OEM) ticari ünvanı. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalıdır veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca değişmemelidir. |
| MODEL | Cihaz uygulayıcısı tarafından seçilen ve cihazın son kullanıcı tarafından bilinen adını içeren bir değer. Bu, cihazın son kullanıcılara pazarlandığı ve satıldığı adla aynı OLMALIDIR. Bu alanın belirli bir biçimde olması gerekmez. Ancak bu alan boş olmamalıdır veya boş dize ("") içermemelidir. Bu alan, ürünün kullanım ömrü boyunca değişmemelidir. |
| ÜRÜN | Cihaz uygulayıcısı tarafından seçilen ve aynı marka içinde benzersiz OLMASI GEREKEN belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değer. Kullanıcıların okuyabileceği bir biçimde OLMALIDIR ancak son kullanıcıların görüntülemesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilmeli ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
| SERIAL | "UNKNOWN" döndürmelidir. |
| ETİKETLER | Cihaz uygulayıcı tarafından seçilen ve derlemeyi daha da ayırt eden virgülle ayrılmış etiket listesi. Bu alan, üç tipik Android platformu imzalama yapılandırmasına (release-keys, dev-keys, test-keys) karşılık gelen değerlerden birini içermelidir. |
| ZAMAN | Derlemenin gerçekleştiği zaman damgasını temsil eden bir değer. |
| TÜR | Cihaz uygulayıcısı tarafından seçilen ve derlemenin çalışma zamanı yapılandırmasını belirten bir değer. Bu alan, üç tipik Android çalışma zamanı yapılandırmasına (user, userdebug veya eng) karşılık gelen değerlerden birini içermelidir. |
| KULLANICI | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı ya da kullanıcı kimliği. Bu alanın belirli bir biçimde olması gerekmez. Tek şart, alanın boş (null) veya boş dize ("") olmamasıdır. |
| SECURITY_PATCH | Bir derlemenin güvenlik yaması seviyesini gösteren değer. Derlemenin, belirlenen Android herkese açık güvenlik bülteninde açıklanan sorunlardan hiçbirine karşı savunmasız OLMADIĞINI belirtmelidir. Android Herkese Açık Güvenlik Bülteni veya Android Güvenlik Tavsiyesi'nde belgelenen tanımlı bir dizeyle eşleşen [YYYY-AA-GG] biçiminde OLMALIDIR. Örneğin, "2015-11-01". |
| BASE_OS | Android Public Security Bulletin'de sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden bir değer. Doğru değeri RAPORLAMALI ve böyle bir derleme yoksa boş bir dize ("") raporlamalıdır. |
| BOOTLOADER | Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili önyükleyici sürümünü tanımlayan, kullanıcılar tarafından okunabilir biçimde bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir. |
| getRadioVersion() | Cihaz uygulayıcısı tarafından seçilen ve cihazda kullanılan belirli dahili radyo/modem sürümünü tanımlayan bir değeri, kullanıcılar tarafından okunabilir biçimde DÖNMELİDİR. Bir cihazda dahili radyo/modem yoksa NULL döndürmesi ZORUNLUDUR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir. |
| getSerial() | Aynı MODEL ve ÜRETİCİYE sahip cihazlarda kullanılabilir ve benzersiz OLMASI GEREKEN bir donanım seri numarası OLMALIDIR (veya döndürmelidir). Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALI ve "^[a-zA-Z0-9._-,]+$" normal ifadesiyle eşleşmelidir. |
3.2.3. Amaca Uygunluk
3.2.3.1. Temel uygulama amaçları
Android intent'leri, uygulama bileşenlerinin diğer Android bileşenlerinden işlev isteğinde bulunmasına olanak tanır. Android upstream projesi, temel Android uygulamaları olarak kabul edilen uygulamaların bir listesini içerir. Bu uygulamalar, yaygın işlemleri gerçekleştirmek için çeşitli amaç kalıplarını uygular.
-
[C-0-1] Cihaz uygulamaları, AOSP'deki aşağıdaki temel Android uygulamaları tarafından tanımlanan tüm genel amaç filtresi kalıpları için bir veya daha fazla uygulamayı ya da hizmet bileşenini amaç işleyiciyle birlikte önceden yüklemelidir:
- Masa Saati
- Tarayıcı
- Takvim
- Kişiler
- Galeri
- GlobalSearch
- Başlatıcı
- Müzik
- Ayarlar
3.2.3.2. Amaç Çözümleme
-
[C-0-1] Android genişletilebilir bir platform olduğundan, cihaz uygulamaları, Ayarlar hariç bölüm 3.2.3.1'de referans verilen her amaç kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına İZİN VERMELİDİR. Yukarı akış Android açık kaynak uygulaması, bu işleme varsayılan olarak izin verir.
-
[C-0-2] Cihaz uygulayıcıları, sistem uygulamalarının bu amaç kalıplarını kullanmasına özel ayrıcalıklar EKLEMEMELİ veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü ele geçirmesini ENGELLEMEMELİDİR. Bu yasak, özellikle kullanıcının aynı amaç kalıbını işleyen birden fazla uygulama arasında seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bununla sınırlı değildir.
-
[C-0-3] Cihaz uygulamaları, kullanıcıların amaçlar için varsayılan etkinliği değiştirebileceği bir kullanıcı arayüzü SAĞLAMALIDIR.
-
Ancak cihaz uygulamaları, varsayılan etkinlik veri URI'si için daha spesifik bir özellik sağladığında belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten bir amaç filtresi kalıbı, tarayıcının "http://" için temel amaç kalıbından daha spesifiktir.
Android ayrıca üçüncü taraf uygulamalarının, belirli web URI amaçları için yetkili bir varsayılan uygulama bağlantısı davranışını beyan etmesine olanak tanıyan bir mekanizma içerir. Bu tür yetkili bildirimler bir uygulamanın amaç filtresi kalıplarında tanımlandığında cihaz uygulamaları:
- [C-0-4] Yukarı akış Android Açık Kaynak Projesi'ndeki Paket Yöneticisi tarafından uygulanan Digital Asset Links spesifikasyonunda tanımlanan doğrulama adımlarını gerçekleştirerek tüm intent filtrelerini doğrulamaya ÇALIŞMALIDIR.
- [C-0-5] Uygulama yüklenirken intent filtrelerinin doğrulanması ZORUNLU olarak denenmeli ve başarıyla doğrulanan tüm URI intent filtreleri, URI'leri için varsayılan uygulama işleyicileri olarak ayarlanmalıdır.
- Başarıyla doğrulanırsa ancak diğer aday URI filtreleri doğrulanmazsa URI'leri için belirli URI intent filtrelerini varsayılan uygulama işleyicileri olarak AYARLAYABİLİR. Bir cihaz uygulaması bunu yaparsa ayarlar menüsünde kullanıcıya URI başına uygun kalıp geçersiz kılma işlemleri SAĞLAMALIDIR.
- Kullanıcıya Ayarlar'da uygulama başına uygulama bağlantıları kontrolleri aşağıdaki şekilde SAĞLANMALIDIR:
- [C-0-6] Kullanıcı, bir uygulamanın varsayılan uygulama bağlantıları davranışını (her zaman aç, her zaman sor veya asla açma) bütünsel olarak geçersiz kılabilmelidir. Bu, tüm aday URI intent filtreleri için eşit şekilde geçerli olmalıdır.
- [C-0-7] Kullanıcı, aday URI amaç filtrelerinin listesini GÖREBİLMELİDİR.
- Cihaz uygulaması, kullanıcıya başarılı bir şekilde doğrulanmış belirli aday URI intent filtrelerini intent filtresi bazında geçersiz kılma olanağı TANIMLAYABİLİR.
- [C-0-8] Cihaz uygulaması, bazı aday URI intent filtrelerinin doğrulamayı geçmesine izin verirken diğerlerinin başarısız olmasına izin veriyorsa kullanıcıların belirli aday URI intent filtrelerini görüntülemesine ve geçersiz kılmasına olanak tanımalıdır.
3.2.3.3. Niyet Ad Alanları
- [C-0-1] Cihaz uygulamaları, android. veya com.android. ad alanında ACTION, CATEGORY ya da başka bir anahtar dizesi kullanarak yeni bir intent veya yayın intent kalıbını destekleyen herhangi bir Android bileşeni İÇERMEMELİDİR.
- [C-0-2] Cihaz uygulayıcıları, başka bir kuruluşa ait paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni bir intent ya da yayın intent kalıbını destekleyen Android bileşenleri İÇERMEMELİDİR.
- [C-0-3] Cihaz uygulayıcıları, 3.2.3.1 bölümünde listelenen temel uygulamalar tarafından kullanılan amaç kalıplarını değiştirmemeli veya genişletmemelidir.
- Cihaz uygulamaları, kendi kuruluşlarıyla açık ve belirgin bir şekilde ilişkili ad alanlarını kullanan amaç kalıplarını içerebilir. Bu yasak, 3.6 bölümünde Java dili sınıfları için belirtilen yasağa benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikler konusunda bilgilendirilmek için belirli amaçları yayınlamak üzere platforma güvenir.
Cihaz uygulamaları:
- [C-0-1] SDK belgelerinde açıklandığı gibi, uygun sistem etkinliklerine yanıt olarak herkese açık yayın amaçlarını yayınlamalıdır. Arka plan uygulamalarıyla ilgili sınırlama SDK dokümanlarında da açıklandığı için bu şartın 3.5 bölümüyle çelişmediğini unutmayın.
3.2.3.5. Varsayılan Uygulama Ayarları
Android'de, kullanıcılara varsayılan uygulamalarını (ör. ana ekran veya SMS için) kolayca seçme imkanı sunan ayarlar bulunur.
Mantıklı olduğu durumlarda cihaz uygulamaları benzer bir ayarlar menüsü sağlamalı ve SDK belgelerinde aşağıda açıklandığı gibi intent filtresi kalıbı ve API yöntemleriyle uyumlu olmalıdır.
Cihaz uygulamaları android.software.home_screen bildiriyorsa:
- [C-1-1] Ana ekran için varsayılan uygulama ayarları menüsünü gösterme
android.settings.HOME_SETTINGSamacı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_DEFAULTamacını çağıracak bir ayarlar menüsü SAĞLANMALIDIR. -
[C-2-2] Kullanıcının varsayılan Telefon uygulamasını değiştirmesine izin veren bir iletişim kutusu gösterme
android.telecom.action.CHANGE_DEFAULT_DIALERamacı GEREKLİDİR.- Acil durum aramaları hariç gelen ve giden aramalar için kullanıcının seçtiği varsayılan Telefon uygulamasının kullanıcı arayüzü KULLANILMALIDIR. Acil durum aramalarında ise önceden yüklenmiş Telefon uygulaması kullanılır.
-
[C-2-3] android.telecom.action.CHANGE_PHONE_ACCOUNTS amacına uygun olarak,
PhoneAccountsile ilişkiliConnectionServicesöğesini yapılandırmak için kullanıcıya kolaylık sağlamalı ve telekomünikasyon hizmeti sağlayıcısının giden aramalar yapmak için kullanacağı varsayılan bir PhoneAccount oluşturmalıdır. AOSP uygulaması, "Aramalar" ayarları menüsünde "Arama Hesapları seçeneği" menüsünü ekleyerek bu şartı karşılar.
Cihaz uygulamaları android.hardware.nfc.hce bildiriyorsa:
- [C-3-1] Temassız ödeme 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] Ses girişi ve yardım için varsayılan uygulama ayarları menüsünü gösterme
android.settings.ACTION_VOICE_INPUT_SETTINGSamacı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 API uyumluluğu GARANTİ EDİLMELİDİR.
- [C-1-3] Yeni etkinlik,
ActivityOptions.setLaunchDisplayId()API'si aracılığıyla hedef ekran belirtilmeden başlatıldığında yeni etkinliği, onu başlatan etkinlikle aynı ekranda başlatMALIDIR. - [C-1-4]
Display.FLAG_PRIVATEbayraklı bir ekran kaldırıldığında TÜM etkinlikler yok edilmelidir. - [C-1-5] Ekranın boyutu değiştirilirse
VirtualDisplayüzerindeki tüm etkinliklerin boyutu buna göre değiştirilmelidir. - Bir metin girişi alanı ikincil ekranda odaklandığında bir IME (giriş yöntemi düzenleyici, kullanıcıların metin girmesini sağlayan bir kullanıcı kontrolü) birincil ekranda GÖSTERİLEBİLİR.
- Dokunma veya tuş girişleri desteklendiğinde, giriş odağını birincil ekrandan bağımsız olarak ikincil ekranda uygulamalıdır.
- İkincil ekranda bir etkinlik başlatılırsa gösterilmesi, doğru şekilde çalışması ve uyumluluğun korunması için bu ekrana karşılık gelen
android.content.res.Configurationolmalıdır.
Cihaz uygulamaları, ikincil ekranlarda normal Android Etkinlikleri'nin başlatılmasına izin veriyorsa ve birincil ile ikincil ekranlar farklı android.util.DisplayMetrics'e sahipse:
- [C-2-1] Yeniden boyutlandırılamayan etkinliklere (
AndroidManifest.xmliçinderesizeableActivity=falseolanlar) ve API düzeyi 23 veya daha düşük sürümleri hedefleyen uygulamalara ikincil ekranlarda İZİN VERİLMEMELİDİR.
Cihaz uygulamaları, ikincil ekranlarda normal Android Etkinlikleri'nin başlatılmasına izin veriyorsa ve ikincil ekranda android.view.Display.FLAG_PRIVATE işareti varsa:
- [C-3-1] Yalnızca söz konusu ekranın, sistemin ve ekranda bulunan etkinliklerin sahibi, ekranı başlatabilmelidir. Herkes, android.view.Display.FLAG_PUBLIC işaretine sahip bir ekranda başlatabilir.
3.3. Yerel API Uyumluluğu
Yerel kod uyumluluğu zordur. Bu nedenle, cihaz uygulayıcıları:
- [SR] Aşağıda listelenen kitaplıkların uygulamalarını yukarı akış Android Açık Kaynak Projesi'nden kullanmanız KESİNLİKLE ÖNERİLİR.
3.3.1. Uygulama İkili Arabirimleri
Yönetilen Dalvik bayt kodu, uygulamada .apk dosyası içinde uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak sağlanan yerel kodu çağırabilir. Yerel kod, temel işlemci teknolojisine büyük ölçüde bağlı olduğundan Android, Android NDK'da bir dizi Uygulama İkili Arabirimi (ABI) tanımlar.
Cihaz uygulamaları:
- [C-0-1] Tanımlanmış bir veya daha fazla ABI ile uyumlu OLMALI ve Android NDK ile uyumluluğu uygulamalıdır.
- [C-0-2] Standart Java Native Interface (JNI) semantiğini kullanarak yönetilen ortamda çalışan kodun yerel kodu çağırması için destek içermelidir.
- [C-0-3] Aşağıdaki listede yer alan her bir gerekli kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
- [C-0-5] Cihaz tarafından desteklenen yerel Uygulama İkili Arabirimi (ABI),
android.os.Build.SUPPORTED_ABIS,android.os.Build.SUPPORTED_32_BIT_ABISveandroid.os.Build.SUPPORTED_64_BIT_ABISparametreleri aracılığıyla doğru şekilde bildirilmelidir. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene doğru sıralanmış, virgülle ayrılmış ABI listeleridir. -
[C-0-6] Yukarıdaki parametreler aracılığıyla aşağıdaki ABI listesinin bir alt kümesini RAPORLAMALI ve listede olmayan hiçbir ABI'yi RAPORLAMAMALIDIR.
-
armeabi -
armeabi-v7a -
arm64-v8a -
x86 -
x86-64 -
[C-0-7] Yerel API'ler sağlayan aşağıdaki tüm kitaplıklar, yerel kod içeren uygulamalarda kullanılabilir OLMALIDIR:
-
libaaudio.so (AAudio yerel ses desteği)
- libandroid.so (yerel Android etkinliği desteği)
- libc (C kitaplığı)
- libcamera2ndk.so
- libdl (dinamik bağlayıcı)
- libEGL.so (yerel OpenGL yüzey yönetimi)
- libGLESv1_CM.so (OpenGL ES 1.x)
- libGLESv2.so (OpenGL ES 2.0)
- libGLESv3.so (OpenGL ES 3.x)
- libicui18n.so
- libicuuc.so
- libjnigraphics.so
- liblog (Android günlük kaydı)
- libmediandk.so (yerel medya API'leri desteği)
- libm (matematik kitaplığı)
- libneuralnetworks.so (Neural Networks API)
- libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
- libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
- libRS.so
- libstdc++ (C++ için minimum destek)
- libvulkan.so (Vulkan)
- libz (Zlib sıkıştırması)
- JNI arayüzü
-
-
[C-0-8] Yukarıda listelenen yerel kitaplıklar için herkese açık işlevler eklenmemeli veya kaldırılmamalıdır.
- [C-0-9]
/vendor/etc/public.libraries.txtiç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.sokitaplığı aracılığıyla tüm OpenGL ES 3.1 ve Android Extension Pack işlev sembollerini dışa aktarmalıdır. Tüm sembollerin bulunması ZORUNLU olsa da bölüm 7.1.4.1'de, ilgili işlevlerin tam olarak uygulanmasının beklendiği durumlarla ilgili şartlar daha ayrıntılı olarak açıklanmaktadır. - [C-0-12] MUST,
libvulkan.sokitaplığı aracılığıyla temel Vulkan 1.0 işlev simgeleri veVK_KHR_surface,VK_KHR_android_surface,VK_KHR_swapchain,VK_KHR_maintenance1veVK_KHR_get_physical_device_properties2uzantıları için işlev simgelerini dışa aktarmalıdır. Tüm sembollerin bulunması ZORUNLU olsa da bölüm 7.1.4.2'de, ilgili işlevlerin tam olarak uygulanmasının beklendiği durumlarla ilgili koşullar daha ayrıntılı olarak açıklanmaktadır. - Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kodu ve başlık dosyaları kullanılarak oluşturulmalıdır.
Android'in gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın.
3.3.2. 32 bit ARM Yerel Kod Uyumluluğu
Cihaz uygulamaları armeabi ABI'nin desteklendiğini bildiriyorsa:
- [C-3-1]
armeabi-v7a,armeabiyalnızca eski uygulamalarla geriye dönük uyumluluk için olduğundanarmeabi-v7ada desteklenmeli ve desteği bildirilmelidir.
Cihaz uygulamaları armeabi-v7a ABI'nin desteklendiğini bildiriyorsa bu ABI'yi kullanan uygulamalar:
-
[C-2-1]
/proc/cpuinfoiçinde aşağıdaki satırlar yer ALMALIDIR ve aynı cihazdaki değerler, diğer ABI'ler tarafından okunsa bile DEĞİŞTİRİLMEMELİDİR.-
Features:ve ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi. -
CPU architecture:ve ardından cihazın desteklediği en yüksek ARM mimarisini açıklayan bir tam sayı (ör. ARMv8 cihazlar için "8").
-
-
[C-2-2] ABI, ARMv8 mimarisinde yerel CPU desteği veya yazılım emülasyonu aracılığıyla uygulanmış olsa bile aşağıdaki işlemler her zaman kullanılabilir olmalıdır:
- SWP ve SWPB talimatları.
- SETEND talimatı.
- CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri.
-
[C-2-3] Advanced SIMD (diğer adıyla NEON) uzantısı için destek İÇERMELİDİR.
3.4. Web Uyumluluğu
3.4.1. WebView Uyumluluğu
Cihaz uygulamaları, android.webkit.Webview API'nin eksiksiz bir uygulamasını sağlıyorsa:
- [C-1-1] MUST report
android.software.webview. - [C-1-2]
android.webkit.WebViewAPI'nin uygulanması için Android 9 dalında yukarı akış Android Açık Kaynak Projesi'nden Chromium Projesi derlemesi KULLANILMALIDIR. -
[C-1-3] WebView tarafından bildirilen kullanıcı aracısı dizesi şu biçimde OLMALIDIR:
Mozilla/5.0 (Linux; Android $(VERSION); [$(MODEL)] [Build/$(BUILD)]; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36
- $(VERSION) dizesinin değeri, android.os.Build.VERSION.RELEASE değerine eşit OLMALIDIR.
- $(MODEL) dizesi BOŞ olabilir ancak boş değilse android.os.Build.MODEL ile aynı değere SAHİP OLMALIDIR.
- "Build/$(BUILD)" atlanabilir ancak varsa $(BUILD) dizesi android.os.Build.ID değeriyle aynı OLMALIDIR.
- $(CHROMIUM_VER) dizesinin değeri, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium sürümü OLMALIDIR.
- Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobile ifadesini atlayabilir.
-
WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliğini desteklemelidir ve özelliği destekliyorsa HTML5 spesifikasyonuna uygun olmalıdır.
3.4.2. Tarayıcı Uyumluluğu
Cihaz uygulamaları genel web'de gezinme için bağımsız bir Tarayıcı uygulaması içeriyorsa:
- [C-1-1] HTML5 ile ilişkili şu API'lerin her birini DESTEKLEMELİDİR:
- [C-1-2] HTML5/W3C webstorage API'yi DESTEKLEMELİ ve HTML5/W3C IndexedDB API'yi DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları, web depolama yerine IndexedDB'yi tercih etmeye başladığından IndexedDB'nin Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesi beklenmektedir.
- Bağımsız tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi GÖNDEREBİLİR.
- Bağımsız Tarayıcı uygulamasında (yukarı akış WebKit Tarayıcı uygulamasına veya üçüncü taraf bir alternatife dayalı olsun ya da olmasın) mümkün olduğunca fazla HTML5 desteği uygulamalıdır.
Ancak cihaz uygulamaları bağımsız bir Tarayıcı uygulaması içermiyorsa:
- [C-2-1] 3.2.3.1 bölümünde açıklanan herkese açık amaç kalıplarını desteklemeye DEVAM ETMELİDİR.
3.5. API Davranış Uyumluluğu
Cihaz uygulamaları:
- [C-0-9] Bölüm 3.5.1'de açıklandığı şekilde kısıtlanmadıkları sürece, yüklü tüm uygulamalarda API davranış uyumluluğunun uygulanmasını SAĞLAMALIDIR.
- [C-0-10] Yalnızca cihaz uygulayıcıları tarafından seçilen uygulamalar için API davranış uyumluluğunu sağlayan izin verilenler listesi yaklaşımı UYGULANMAMALIDIR.
API türlerinin (yönetilen, yumuşak, yerel ve web) her birinin davranışları, yukarı akış Android Açık Kaynak Projesi'nin tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumlulukla ilgili bazı özel alanlar şunlardır:
- [C-0-1] Cihazlar, standart bir amacın davranışını veya semantiğini DEĞİŞTİRMEMELİDİR.
- [C-0-2] Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, ContentProvider vb.) yaşam döngüsünü veya yaşam döngüsü semantiğini DEĞİŞTİRMEMELİDİR.
- [C-0-3] Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEMELİDİR.
- Cihazlar, arka plan uygulamalarına uygulanan sınırlamaları DEĞİŞTİRMEMELİDİR. Daha açık şekilde belirtmek gerekirse, arka planda çalışan uygulamalar için:
- [C-0-4] Uygulama tarafından
GnssMeasurementveGnssNavigationMessage'tan çıkış almak için kaydedilen geri aramaları yürütmeyi DURDURMALIDIR. - [C-0-5]
LocationManagerAPI sınıfı veyaWifiManager.startScan()yöntemi aracılığıyla uygulamaya sağlanan güncellemelerin sıklığını sıklık sınırlamasına tabi TUTMALIDIR. - [C-0-6] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa yayın amacı
"signature"veya"signatureOrSystem"protectionLevelizni gerektirmiyorsa ya da muafiyet listesinde değilse uygulamanın manifest dosyasında standart Android amaçlarının örtülü yayınları için yayın alıcılarının kaydedilmesine İZİN VERMEMELİDİR. - Uygulama, API düzeyi 25 veya üstünü hedefliyorsa kullanıcıya görünür bir görevi işlemek için geçici izin verilenler listesine yerleştirilmediği sürece, hizmetlerin
stopSelf()yöntemi çağrılmış gibi uygulamanın arka plan hizmetlerini DURDURMALIDIR. [C-0-7] - [C-0-8] Uygulama API düzeyi 25 veya sonraki sürümleri hedefliyorsa uygulamanın tuttuğu uyandırma kilitlerini serbest bırakması ZORUNLUDUR.
- [C-0-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ı, belirtilen sırada ve belirtilen adlarla (Provider.getName()tarafından döndürüldüğü gibi) ve sınıflarla döndürmelidir. Cihazlar, aşağıdaki belirtilen sağlayıcılar listesinden sonra ek sağlayıcılar döndürebilir.-
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 liste tam kapsamlı değildir. Uyumluluk Test Paketi (CTS), platformun önemli bölümlerini davranış uyumluluğu açısından test eder ancak tüm bölümlerini test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcılar sistemin önemli kısımlarını yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodunu KULLANMALIDIR.
3.5.1. Arka plan kısıtlaması
Cihaz uygulamaları, AOSP'de yer alan uygulama kısıtlamalarını uygularsa veya uygulama kısıtlamalarını genişletirse:
- [C-SR] Kullanıcının kısıtlanmış uygulamaların listesini görebileceği bir kullanıcı olanağı sunulması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-2] Her uygulamadaki kısıtlamaları etkinleştirmek / devre dışı bırakmak için kullanıcıya olanak TANINMALIDIR.
- [C-1-3] Sistem sağlığıyla ilgili kötü davranış kanıtı olmadan kısıtlamalar otomatik olarak UYGULANMAMALI, ancak takılı uyanık kalma kilitleri ve uzun süredir çalışan hizmetler gibi sistem sağlığıyla ilgili kötü davranışlar tespit edildiğinde uygulamalara kısıtlamalar UYGULANABİLİR. Ölçütler, cihaz uygulayıcıları tarafından belirlenebilir ancak uygulamanın sistem sağlığı üzerindeki etkisiyle ilgili OLMALIDIR. Uygulamanın piyasada popüler olmaması gibi tamamen sistem sağlığıyla ilgili olmayan diğer ölçütler kullanılmamalıdır.
- [C-1-4] Kullanıcı, uygulama kısıtlamalarını manuel olarak devre dışı bıraktığında uygulamalar için otomatik olarak uygulama kısıtlamaları uygulanMAMALI ve kullanıcıya uygulama kısıtlamaları uygulaması ÖNERİLEBİLİR.
- [C-1-5] Uygulama kısıtlamaları bir uygulamaya otomatik olarak uygulanırsa kullanıcıları bilgilendirmelidir.
- [C-1-6] Kısıtlanmış uygulama bu API'yi çağırdığında
ActivityManager.isBackgroundRestricted()içintruedöndürmELİDİR. - [C-1-7] Kullanıcı tarafından açıkça kullanılan ön plandaki en üst uygulama kısıtlanMAMALIDIR.
- [C-1-8] Kullanıcı, kısıtlanmış olan uygulamayı açıkça kullanmaya başladığında, en üstteki ön plan uygulaması haline gelen uygulamadaki kısıtlamaları ASKIYA ALMALIDIR.
3.6. API ad alanları
Android, Java programlama dili tarafından tanımlanan paket ve sınıf ad alanı kurallarına uyar. Cihaz uygulayıcıları, üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için bu paket ad alanlarında yasaklanmış değişiklikler (aşağıya bakın) YAPMAMALIDIR:
-
java.* -
javax.* -
sun.* -
android.* -
androidx.* -
com.android.*
Yani:
- [C-0-1] Android platformunda herkese açık olarak sunulan API'ler, herhangi bir yöntem veya sınıf imzası değiştirilerek ya da sınıflar veya sınıf alanları kaldırılarak değiştirilmemelidir.
- [C-0-2] Yukarıdaki ad alanlarındaki API'lere herkese açık olarak sunulan öğeler (ör. sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere alanlar ya da yöntemler) ya da Test veya Sistem API'leri eklenmemelidir. "Herkese açık öğe", yukarı akış Android kaynak kodunda kullanılan "@hide" işaretçisiyle süslenmemiş tüm yapılardır.
Cihaz uygulayıcıları, API'lerin temel uygulamasını DEĞİŞTİREBİLİR ancak bu tür değişiklikler:
- [C-0-3] Herkese açık API'lerin belirtilen davranışını ve Java dili imzasını etkilememelidir.
- [C-0-4] Reklamı yapılmamalı veya geliştiricilere başka bir şekilde gösterilmemelidir.
Ancak cihaz uygulayıcıları, standart Android ad alanı dışında özel API'ler ekleyebilir. Bu özel API'ler:
- [C-0-5] Başka bir kuruluşa ait olan veya başka bir kuruluşu ifade eden bir ad alanında OLMAMALIDIR. Örneğin, cihaz uygulayıcıları
com.google.*veya benzer ad alanına API ekleyemez. Bunu yalnızca Google yapabilir. Benzer şekilde, Google da diğer şirketlerin ad alanlarına API ekleyemez. - [C-0-6] Yalnızca bunları açıkça kullanan uygulamaların (<uses-library> mekanizması aracılığıyla) bu tür API'lerin artan bellek kullanımından etkilenmesi için Android paylaşılan kitaplığı olarak paketlenmelidir.
Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarından birini iyileştirmeyi (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) teklif ederse uygulayıcı source.android.com adresini ziyaret etmeli ve bu sitedeki bilgilere göre değişiklik ve kod katkısında bulunma sürecini başlatmalıdır.
Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmaya yönelik standart kurallara karşılık geldiğini unutmayın. Bu bölümün amacı yalnızca bu kuralları pekiştirmek ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmektir.
3.7. Çalışma Zamanı Uyumluluğu
Cihaz uygulamaları:
-
[C-0-1] MUST support the full Dalvik Executable (DEX) format and Dalvik bytecode specification and semantics.
-
[C-0-2] Dalvik çalışma zamanları, yukarı akış Android platformuna uygun olarak ve aşağıdaki tabloda belirtildiği şekilde bellek ayıracak şekilde yapılandırILMALIDIR. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 bölümüne bakın.)
-
Android RunTime (ART), Dalvik Executable Format'ın referans upstream uygulaması ve referans uygulamanın paket yönetim sistemi KULLANILMALIDIR.
-
Çalışma zamanının kararlılığını sağlamak için çeşitli yürütme modları ve hedef mimariler altında bulanıklaştırma testleri YAPILMALIDIR. Android Açık Kaynak Projesi web sitesindeki JFuzz ve DexFuzz bölümlerine bakın.
Aşağıda belirtilen bellek değerlerinin minimum değerler olduğu ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceği unutulmamalıdır.
| Ekran düzeni | Ekran Yoğunluğu | Minimum Uygulama Belleği |
|---|---|---|
| Android Watch | 120 dpi (ldpi) | 32 MB |
| 160 dpi (mdpi) | ||
| 213 dpi (tvdpi) | ||
| 240 dpi (hdpi) | 36MB | |
| 280 dpi (280dpi) | ||
| 320 dpi (xhdpi) | 48MB | |
| 360 dpi (360dpi) | ||
| 400 dpi (400dpi) | 56MB | |
| 420 dpi (420dpi) | 64MB | |
| 480 dpi (xxhdpi) | 88MB | |
| 560 dpi (560dpi) | 112MB | |
| 640 dpi (xxxhdpi) | 154MB | |
| küçük/normal | 120 dpi (ldpi) | 32 MB |
| 160 dpi (mdpi) | ||
| 213 dpi (tvdpi) | 48MB | |
| 240 dpi (hdpi) | ||
| 280 dpi (280dpi) | ||
| 320 dpi (xhdpi) | 80MB | |
| 360 dpi (360dpi) | ||
| 400 dpi (400dpi) | 96MB | |
| 420 dpi (420dpi) | 112MB | |
| 480 dpi (xxhdpi) | 128 MB | |
| 560 dpi (560dpi) | 192MB | |
| 640 dpi (xxxhdpi) | 256 MB | |
| large | 120 dpi (ldpi) | 32 MB |
| 160 dpi (mdpi) | 48MB | |
| 213 dpi (tvdpi) | 80MB | |
| 240 dpi (hdpi) | ||
| 280 dpi (280dpi) | 96MB | |
| 320 dpi (xhdpi) | 128 MB | |
| 360 dpi (360dpi) | 160MB | |
| 400 dpi (400dpi) | 192MB | |
| 420 dpi (420dpi) | 228MB | |
| 480 dpi (xxhdpi) | 256 MB | |
| 560 dpi (560dpi) | 384MB | |
| 640 dpi (xxxhdpi) | 512 MB | |
| xlarge | 120 dpi (ldpi) | 48MB |
| 160 dpi (mdpi) | 80MB | |
| 213 dpi (tvdpi) | 96MB | |
| 240 dpi (hdpi) | ||
| 280 dpi (280dpi) | 144MB | |
| 320 dpi (xhdpi) | 192MB | |
| 360 dpi (360dpi) | 240MB | |
| 400 dpi (400dpi) | 288MB | |
| 420 dpi (420dpi) | 336MB | |
| 480 dpi (xxhdpi) | 384MB | |
| 560 dpi (560dpi) | 576MB | |
| 640 dpi (xxxhdpi) | 768MB |
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.1. Başlatıcı (Ana Ekran)
Android'de bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerine üçüncü taraf uygulamaları kullanma desteği bulunur.
Cihaz uygulamaları, üçüncü taraf uygulamaların cihazın ana ekranının yerini almasına izin veriyorsa:
- [C-1-1] Platform özelliği
android.software.home_screenBİ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çinPackageManageryöntemleri çağrıldığındaAdaptiveIconDrawablenesnesi 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çintruebildirilmelidir. - [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çinfalsebildirilmelidir.
Cihaz uygulamaları, ShortcutManager API aracılığıyla üçüncü taraf uygulamaları tarafından sağlanan ek kısayollara hızlı erişim sağlayan varsayılan bir başlatıcı uyguluyorsa:
- [C-4-1] Belgelenmiş tüm kısayol özelliklerini (ör. statik ve dinamik kısayollar, kısayolları sabitleme) desteklemeli ve
ShortcutManagerAPI 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ğertrueolarak ayarlanmışsa uygulama simgesiyle ilişkili görsel bir imkan gösterin ve uygulamanın tüm bildirim kanalları değerifalseolarak ayarlamışsa herhangi bir uygulama simgesi rozetleme şeması göstermeyin. - Üçüncü taraf uygulamaları, özel API'ler kullanarak özel rozetleme şemasını desteklediğini belirttiğinde uygulama simgesi rozetlerini özel rozetleme şemasıyla geçersiz KILABİLİR ancak SDK'da açıklanan bildirim rozetleri API'leri aracılığıyla sağlanan kaynakları ve değerleri (ör.
Notification.Builder.setNumber()veNotification.Builder.setBadgeIconType()API'si) KULLANMALIDIR.
3.8.2. Widget'lar
Android, uygulamaların son kullanıcıya "AppWidget" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü tanımlayarak üçüncü taraf uygulama widget'larını destekler.
Cihaz uygulamaları üçüncü taraf uygulama widget'larını destekliyorsa:
- [C-1-1]
android.software.app_widgetsplatform özelliği için destek beyan EDİLMELİDİR. - [C-1-2] MUST include built-in support for AppWidgets and expose user interface affordances to add, configure, view, and remove AppWidgets directly within the Launcher.
- [C-1-3] Standart ızgara boyutunda 4 x 4 boyutundaki widget'ları oluşturabilmelidir. Ayrıntılar için Android SDK belgelerindeki Uygulama Widget'ı Tasarım Kuralları'na bakın.
- Kilit ekranında uygulama widget'larını DESTEKLEYEBİLİR.
Cihaz uygulamaları, üçüncü taraf uygulama widget'larını ve kısayolların uygulama içi sabitlenmesini destekliyorsa:
- [C-2-1]
AppWidgetManager.html.isRequestPinAppWidgetSupported()içintruebildirilmelidir. - [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 Gösterilmesi
Cihaz uygulamaları, üçüncü taraf uygulamalarının kullanıcıları önemli etkinlikler hakkında bilgilendirmesine izin veriyorsa:
- [C-1-1] SDK dokümanlarında açıklandığı gibi ve cihaz uygulamasının donanımıyla mümkün olduğu ölçüde, donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim motoru varsa titreşim API'lerini DOĞRU şekilde uygulaması ZORUNLUDUR. Bir cihaz uygulamasında donanım eksikse ilgili API'ler işlem yapmayan işlemler olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmıştır.
- [C-1-2] API'lerde veya Durum/Sistem Çubuğu simge stili kılavuzunda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) DOĞRU şekilde oluşturmalıdır. Bununla birlikte, referans Android Açık Kaynak uygulaması tarafından sağlanan bildirimlerden farklı bir kullanıcı deneyimi sunabilir.
- [C-1-3] Bildirimleri güncellemek, kaldırmak ve gruplandırmak için API'lerde açıklanan davranışlara uymalı ve bunları doğru şekilde uygulamalıdır.
- [C-1-4] SDK'da belgelenen NotificationChannel API'sinin tam davranışını SAĞLAMALIDIR.
- [C-1-5] Belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek ve değiştirmek için kullanıcıya olanak TANINMALIDIR.
- [C-1-6] SİLİNMİŞ BİLDİRİM KANALLARINI GÖSTERMEK İÇİN KULLANICIYA BİR OLANAK DA SUNULMALIDIR.
- [C-1-7] Notification.MessagingStyle aracılığıyla sağlanan tüm kaynaklar (resimler, çıkartmalar, simgeler vb.), bildirim metniyle birlikte ek kullanıcı etkileşimi olmadan doğru şekilde oluşturulmalıdır. Örneğin, setGroupConversation ile ayarlanan bir grup görüşmesinde android.app.Person aracılığıyla sağlanan simgeler de dahil olmak üzere tüm kaynaklar GÖSTERİLMELİDİR.
- [C-SR] Kullanıcı bu bildirimi birden çok kez kapattıktan sonra belirli bir üçüncü taraf uygulamasının bildirimini her kanal ve uygulama paketi düzeyinde engellemek için kullanıcıya otomatik olarak bir seçenek sunması ŞİDDETLE TAVSİYE EDİLİR.
- Zengin bildirimleri DESTEKLEMELİDİR.
- Daha yüksek öncelikli bazı bildirimleri uyarı bildirimi olarak göstermelidir.
- Bildirimleri ertelemek için kullanıcıya olanak tanımalıdır.
- MAY, sürücülerin dikkatini dağıtma gibi güvenlik sorunlarını azaltmak için üçüncü taraf uygulamaların kullanıcıları önemli etkinliklerden ne zaman haberdar edebileceğinin görünürlüğünü ve zamanlamasını yönetebilir.
Cihaz uygulamaları zengin bildirimleri destekliyorsa:
- [C-2-1] Gösterilen kaynak öğeleri için
Notification.StyleAPI sınıfı ve alt sınıfları aracılığıyla sağlanan kaynakları eksiksiz biçimde KULLANMALIDIR. Notification.StyleAPI sınıfında ve alt sınıflarında tanımlanan her bir kaynak öğesini (ör. simge, başlık ve özet metni) SUNMALIDIR.
Cihaz uygulamaları, heads-up bildirimlerini destekliyorsa:
- [C-3-1] Uyarı bildirimleri gösterilirken
Notification.BuilderAPI sınıfında açıklandığı gibi uyarı bildirimi görünümü ve kaynakları KULLANILMALIDIR. - [C-3-2]
Notification.Builder.addAction()aracılığıyla sağlanan işlemler, SDK'da açıklandığı gibi ek kullanıcı etkileşimi olmadan bildirim içeriğiyle birlikte GÖSTERİLMELİDİR.
3.8.3.2. Bildirim Dinleyici Hizmeti
Android, uygulamaların (kullanıcı tarafından açıkça etkinleştirildikten sonra) yayınlanan veya güncellenen tüm bildirimlerin bir kopyasını almasına olanak tanıyan NotificationListenerService API'lerini içerir.
Cihaz uygulamaları android.hardware.ram.normal özellik bayrağını bildiriyorsa:
- [C-1-1] Bildirim nesnesine eklenen tüm meta veriler dahil olmak üzere, bu tür yüklü ve kullanıcı tarafından etkinleştirilmiş tüm dinleyici hizmetlerindeki bildirimleri eksiksiz olarak doğru ve hızlı bir şekilde güncellemelidir.
- [C-1-2]
snoozeNotification()API çağrısına UYULMALI, bildirim kapatılmalı ve API çağrısında ayarlanan erteleme süresinden sonra geri arama yapılmalıdır.
Cihaz uygulamalarında bildirimleri ertelemek için kullanıcıya sunulan bir özellik varsa:
- [C-2-1]
NotificationListenerService.getSnoozedNotifications()gibi standart API'ler aracılığıyla ertelenen bildirim durumunu doğru şekilde yansıtmalıdır. - [C-2-2] Kalıcı/ön plan hizmetlerinden gelmedikleri sürece, yüklü her üçüncü taraf uygulamasından gelen bildirimleri ertelemek için bu kullanıcı işlevini KULLANIMA SUNMALIDIR.
3.8.3.3. DND (Rahatsız Etmeyin)
Cihaz uygulamaları, DND özelliğini destekliyorsa:
- [C-1-1] ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS amacına yanıt verecek bir etkinlik uygulanmalıdır. UI_MODE_TYPE_NORMAL ile uygulamalarda bu, kullanıcının uygulamaya DND politika yapılandırmalarına erişim izni verebileceği veya erişimi reddedebileceği bir etkinlik OLMALIDIR.
- [C-1-2] Cihaz uygulaması, kullanıcının üçüncü taraf uygulamalarına Rahatsız Etmeyin politikası yapılandırmasına erişim izni vermesini veya bu erişimi reddetmesini sağlayacak bir yöntem sunuyorsa uygulamalar tarafından oluşturulan Otomatik Rahatsız Etmeyin kuralları, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kurallarla birlikte GÖSTERİLMELİDİR.
- [C-1-3]
NotificationManager.Policyile iletilensuppressedVisualEffectsdeğerlerine UYULMALIDIR ve bir uygulama SUPPRESSED_EFFECT_SCREEN_OFF veya SUPPRESSED_EFFECT_SCREEN_ON işaretlerinden herhangi birini ayarladıysa kullanıcılara, DND ayarları menüsünde görsel efektlerin devre dışı bırakıldığını BELİRTMELİDİR.
3.8.4. Arama
Android, geliştiricilerin uygulamalarına arama işlevini eklemelerine ve uygulamalarının verilerini küresel sistem aramasında göstermelerine olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmesine, yazarken önerileri görüntülemesine ve sonuçları göstermesine olanak tanıyan tek bir sistem genelinde kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü yeniden kullanmasına ve geliştiricilerin ortak global arama kullanıcı arayüzüne sonuçlar sunmasına olanak tanır.
- Android cihaz uygulamaları, kullanıcı girişine yanıt olarak anlık öneriler sunabilen, sistem genelinde tek bir paylaşılan arama kullanıcı arayüzü olan genel aramayı İÇERMELİDİR.
Cihaz uygulamaları genel arama arayüzünü uyguluyorsa:
- [C-1-1] Üçüncü taraf uygulamalarının, genel arama modunda çalıştırıldığında arama kutusuna öneri eklemesine olanak tanıyan API'leri uygulamalıdır.
Genel aramayı kullanan üçüncü taraf uygulamaları yüklü değilse:
- Varsayılan davranış, web arama motoru sonuçlarını ve önerilerini göstermek OLMALIDIR.
Android ayrıca, uygulamaların mevcut bağlamdaki bilgilerin ne kadarının cihazdaki asistanla paylaşılacağını seçmesine olanak tanıyan Assist API'lerini de içerir.
Cihaz uygulamaları Asistan eylemini destekliyorsa:
- [C-2-1] Aşağıdaki yöntemlerden biriyle bağlam paylaşıldığında son kullanıcıya açıkça belirtilmelidir:
- Asistan uygulaması bağlama her eriştiğinde, Android Açık Kaynak Projesi uygulamasının süresini ve parlaklığını karşılayan veya aşan bir süre boyunca ekranın kenarlarında beyaz ışık gösterilir.
- Önceden yüklenmiş asistan uygulaması için, varsayılan sesli giriş ve asistan uygulaması ayarları menüsünden iki gezinmeden daha az uzaklıkta bir kullanıcı olanağı sunulması ve bağlamın yalnızca asistan uygulaması, kullanıcı tarafından bir etkin kelime veya asistan gezinme anahtarı girişi aracılığıyla açıkça çağrıldığında paylaşılması.
- [C-2-2] Bölüm 7.2.3'te açıklandığı gibi, yardımcı uygulamayı başlatmak için belirlenen etkileşim, kullanıcı tarafından seçilen yardımcı uygulamayı (diğer bir deyişle
VoiceInteractionService'yi uygulayan uygulamayı) veyaACTION_ASSISTamacını işleyen bir etkinliği başlatmalıdır.
3.8.5. Uyarılar ve Toast Bildirimleri
Uygulamalar, kısa bir süre sonra kaybolan kısa ve modsuz dizeleri son kullanıcıya göstermek için Toast API'sini, uyarı pencerelerini diğer uygulamaların üzerinde katman olarak göstermek için ise TYPE_APPLICATION_OVERLAY pencere türü API'sini kullanabilir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
-
[C-1-1] Bir uygulamanın
TYPE_APPLICATION_OVERLAYkullanarak uyarı pencereleri göstermesini engellemek için kullanıcıya bir olanak SAĞLANMALIDIR . AOSP uygulaması, bildirim gölgesinde kontroller bulundurarak bu koşulu karşılar. -
[C-1-2] Toast API'yi desteklemeli ve uygulamalardan gelen Toast'ları son kullanıcılara kolayca görülebilecek şekilde göstermelidir.
3.8.6. Temalar
Android, uygulamaların bir Etkinlik veya uygulama genelinde stiller uygulaması için "temalar" sunar.
Android, uygulama geliştiricilerin Android SDK'da tanımlandığı şekilde Holo tema görünümüne ve tarzına uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir stil grubu olarak "Holo" ve "Material" tema ailesini içerir.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Uygulamalara sunulan Holo tema özelliklerinden hiçbirini değiştirmemelidir.
- [C-1-2] "Material" tema ailesini DESTEKLEMELİ ve Material tema özelliklerinden veya uygulamalara sunulan öğelerinden hiçbirini DEĞİŞTİRMEMELİDİR.
Android ayrıca, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünüm ve tarzına uymak istemeleri durumunda kullanabilecekleri, tanımlanmış bir dizi stil olarak "Cihaz Varsayılanı" tema ailesini de içerir.
- 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 durum çubuğu istediğinde Android cihaz uygulamaları, sistem durumu simgelerinin rengini siyaha çevirmelidir (ayrıntılar için R.style'a bakın).
3.8.7. Animasyonlu Duvar Kağıtları
Android, uygulamaların son kullanıcıya bir veya daha fazla "Canlı Duvar Kağıdı" göstermesine olanak tanıyan bir bileşen türü, ilgili API ve yaşam döngüsü tanımlar. Canlı duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak gösterilen, sınırlı giriş özelliklerine sahip animasyonlar, desenler veya benzer resimlerdir.
Donanım, tüm canlı duvar kağıtlarını işlevsellik açısından herhangi bir sınırlama olmadan, makul bir kare hızında ve diğer uygulamalar üzerinde olumsuz bir etkisi olmadan çalıştırabiliyorsa canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabildiği kabul edilir. Donanımdaki sınırlamalar nedeniyle duvar kağıtları ve/veya uygulamalar kilitlenirse, düzgün çalışmazsa, aşırı CPU veya pil gücü tüketirse ya da kabul edilemeyecek kadar düşük kare hızlarında çalışırsa donanımın animasyonlu duvar kağıdı çalıştırması mümkün değildir. Örneğin, bazı canlı duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamını kullanabilir. Animasyonlu duvar kağıdı, OpenGL bağlamlarını kullanan diğer uygulamalarla çakışabileceğinden birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.
- Yukarıda açıklandığı gibi animasyonlu duvar kağıtlarını güvenilir bir şekilde çalıştırabilen cihaz uygulamaları, animasyonlu duvar kağıtlarını uygulamalıdır.
Cihaz uygulamaları animasyonlu duvar kağıtlarını destekliyorsa:
- [C-1-1] android.software.live_wallpaper platform özellik işaretini bildirmelidir.
3.8.8. Etkinlikler Arasında Geçiş Yapma
Yukarı akış Android kaynak kodu, kullanıcının uygulamadan en son ayrıldığı andaki uygulamanın grafik durumunun küçük resmini kullanarak görev değiştirme ve son erişilen etkinlikleri ve görevleri görüntüleme için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi navigasyon tuşunu içeren cihaz uygulamaları arayüzü değiştirebilir.
Bölüm 7.2.3'te ayrıntılı olarak açıklandığı gibi, son kullanılanlar işlevi gezinme tuşunu içeren cihaz uygulamaları arayüzü değiştirirse:
- [C-1-1] En az 7 görüntülenen etkinliği destekLEMELİDİR.
- Aynı anda en az 4 etkinliğin başlığını göstermelidir.
- [C-1-2] Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirmek/devre dışı bırakmak için bir ayarlar menüsü sunmalıdır.
- Son kullanılanlarda vurgu rengi, simge ve ekran başlığı GÖSTERİLMELİDİR.
- Kapatma olanağı ("x") GÖSTERİLMELİDİR ancak bu, kullanıcı ekranlarla etkileşime girene kadar GECİKTİRİLEBİLİR.
- Önceki etkinliğe kolayca geçmek için kısayol İÇERMELİDİR.
- Son kullanılanlar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işlemini TETİKLEMELİDİR.
- Destekleniyorsa son kullanılan işlev tuşuna uzun basıldığında bölünmüş ekran çoklu pencere modu TETİKLENMELİDİR.
- Bağlı son öğeleri birlikte hareket eden bir grup olarak GÖSTEREBİLİR.
- [SR] Genel bakış ekranı için yukarı akış Android kullanıcı arayüzünün (veya benzer bir küçük resim tabanlı arayüzün) kullanılması ŞİDDETLE TAVSİYE EDİLİR.
3.8.9. Giriş Yönetimi
Android, Giriş Yönetimi'ni ve üçüncü taraf giriş yöntemi düzenleyicilerini destekler.
Cihaz uygulamaları, kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına izin veriyorsa:
- [C-1-1] android.software.input_methods platform özelliğini DEĞİŞKEN olarak bildirmeli ve Android SDK belgelerinde tanımlandığı şekilde IME API'lerini desteklemelidir.
- [C-1-2] android.settings.INPUT_METHOD_SETTINGS amacına yanıt olarak üçüncü taraf giriş yöntemlerini eklemek ve yapılandırmak için kullanıcı tarafından erişilebilen bir mekanizma SAĞLANMALIDIR.
Cihaz uygulamaları android.software.autofill özellik işaretini beyan ediyorsa:
- [C-2-1]
AutofillServiceveAutofillManagerAPI'leri tam olarak 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_SERVICEamacına uymalıdır.
3.8.10. Kilit ekranında medya kontrolü
Uzaktan Kumanda İstemcisi API'si, Android 5.0'dan itibaren kullanımdan kaldırıldı. Bunun yerine, medya uygulamalarının kilit ekranında gösterilen oynatma kontrolleriyle entegre olmasına olanak tanıyan Medya Bildirimi Şablonu kullanılıyor.
3.8.11. Ekran koruyucular (eski adıyla İlham Sahnesi)
Android, daha önce Dreams olarak adlandırılan etkileşimli ekran koruyucuları destekler. Ekran koruyucular, bir güç kaynağına bağlı cihaz boşta kaldığında veya masaüstü dock istasyonuna yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Android Watch cihazlar ekran koruyucuları uygulayabilir ancak diğer cihaz uygulamaları, ekran koruyucuları desteklemeli ve kullanıcılara android.settings.DREAM_SETTINGS amacına yanıt olarak ekran koruyucuları yapılandırmaları için bir ayar seçeneği sunmalıdır.
3.8.12. Konum
Cihaz uygulamaları, konum koordinatlarını sağlayabilen bir donanım sensörü (ör. GPS) içeriyorsa
- [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 karakterleri renkli glif olarak oluşturulabilmelidir.
- [C-1-2] Aşağıdakiler için destek içermelidir:
- Cihazda kullanılabilen diller için farklı ağırlıklara sahip Roboto 2 yazı tipi (sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black, sans-serif-condensed, sans-serif-condensed-light).
- Latin, Yunan ve Kiril alfabelerinin Unicode 7.0'daki tüm karakterleri (Latin Extended A, B, C ve D aralıkları ve Unicode 7.0'ın para birimi sembolleri bloğundaki tüm glifler dahil).
- Unicode Teknik Raporu #51'de belirtildiği gibi cilt tonu ve çeşitli aile emojilerini DESTEKLEMELİDİR.
Cihaz uygulamaları bir IME içeriyorsa:
- Bu emoji karakterleri için kullanıcıya bir giriş yöntemi SAĞLAMALIDIR.
3.8.14. Çoklu pencereler
Cihaz uygulamaları aynı anda birden fazla etkinliği görüntüleme özelliğine sahipse:
- [C-1-1] Bu tür çoklu pencere modlarını, Android SDK çoklu pencere modu destek belgelerinde açıklanan uygulama davranışlarına ve API'lerine uygun şekilde uygulamalı ve aşağıdaki koşulları karşılamalıdır:
- [C-1-2] Uygulamalar,
AndroidManifest.xmldosyasında çok pencereli modda çalışıp çalışamayacaklarını belirtebilir. Bu işlem,android:resizeableActivityözelliğinitrueolarak ayarlayarak açıkça veya targetSdkVersion'ı 24'ten büyük olacak şekilde ayarlayarak dolaylı olarak yapılabilir. Bu özelliği manifestlerinde açıkçafalseolarak 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
xlargeolan 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_minWidthveAndroidManifestLayout_minHeightdeğ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:supportsPictureInPicturebeyan ediyorsa * API düzeyi 25 veya önceki sürümleri hedefliyorsa ve hemandroid:resizeableActivityhem deandroid:supportsPictureInPicturebeyan ediyorsa. - [C-3-2]
setActions()API'si aracılığıyla, geçerli PIP etkinliğinde belirtildiği şekilde SystemUI'deki işlemleri kullanıma sunmalıdır. - [C-3-3]
setAspectRatio()API'si aracılığıyla PIP etkinliğinde belirtildiği gibi, 1:2,39'dan büyük veya eşit ve 2,39:1'den küçük veya eşit en-boy oranlarını DESTEKLEMELİDİR. - [C-3-4] PIP penceresini kontrol etmek için
KeyEvent.KEYCODE_WINDOWkullanı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.uiModeUI_MODE_TYPE_TELEVISIONolarak yapılandırıldığında ise PIP penceresi için minimum 240 dp genişlik ve 135 dp yükseklik ayrılmalıdır.
3.8.15. Ekran Kesimi
Android, SDK dokümanında açıklandığı gibi ekran kesimini destekler. DisplayCutout API'si, ekranda içerik görüntüleme için işlevsel olmayan bir alan tanımlar.
Cihaz uygulamalarında ekran kesikleri varsa bunlar:
- [C-1-1] YALNIZCA cihazın kısa kenarlarında kesikler OLMALIDIR. Aksine, cihazın en boy oranı 1,0 (1:1) ise kesme olmamalıdır.
- [C-1-2] Kenar başına birden fazla kesik OLMAMALIDIR.
- [C-1-3] SDK'da açıklandığı gibi, uygulama tarafından
WindowManager.LayoutParamsAPI'si aracılığıyla ayarlanan ekran kesme işaretlerine UYULMALIDIR. - [C-1-4]
DisplayCutoutAPI'sinde tanımlanan tüm kesme metrikleri için doğru değerler RAPORLANMALIDIR.
3.9. Cihaz Yönetimi
Android, güvenliğe önem veren uygulamaların Android Device Administration API aracılığıyla sistem düzeyinde cihaz yönetimi işlevlerini (ör. şifre politikalarını zorunlu kılma veya uzaktan silme) gerçekleştirmesine olanak tanıyan özellikler içerir.
Cihaz uygulamaları, Android SDK belgelerinde tanımlanan cihaz yönetimi politikalarının tamamını uyguluyorsa:
- [C-1-1]
android.software.device_adminBİLDİRİLMELİDİR. - [C-1-2] Bölüm 3.9.1 ve Bölüm 3.9.1.1'de açıklandığı şekilde cihaz sahibi hazırlığını DESTEKLEMELİDİR.
3.9.1 Cihaz Temel Hazırlığı
3.9.1.1 Cihaz sahibi temel hazırlığı
Cihaz uygulamaları android.software.device_admin beyan ederse:
- [C-1-1] Aşağıda açıklandığı gibi bir Cihaz Politikası İstemcisi'nin (DPC) Cihaz Sahibi uygulaması olarak kaydedilmesini DESTEKLEMELİDİR:
- Cihaz uygulamasında henüz kullanıcı verisi yapılandırılmamışsa:
- [C-1-3]
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)içintruebildirilmelidir. - [C-1-4]
android.app.action.PROVISION_MANAGED_DEVICEamaç işlemine yanıt olarak DPC uygulamasını Cihaz Sahibi uygulaması olarak KAYDETMELİDİR. - [C-1-5] Cihaz,
android.hardware.nfcözellik işareti aracılığıyla Near Field Communication (NFC) desteği sunduğunu belirtiyorsa ve MIME türüMIME_TYPE_PROVISIONING_NFColan bir kayıt içeren bir NFC mesajı alıyorsa DPC uygulamasını Cihaz Sahibi uygulaması olarak kaydetmelidir.
- [C-1-3]
- Cihaz uygulamasında kullanıcı verileri varsa:
- [C-1-6]
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)içinfalseraporu VERİLMELİDİR. - [C-1-7] Artık hiçbir DPC uygulamasını Cihaz Sahibi Uygulaması olarak kaydetmemelidir.
- [C-1-6]
- Cihaz uygulamasında henüz kullanıcı verisi yapılandırılmamışsa:
- [C-1-2] Uygulamanın cihaz sahibi olarak ayarlanmasına izin vermek için hazırlık sürecinde olumlu bir işlem YAPILMASI GEREKİR. İzin, kullanıcı işlemiyle veya hazırlama sırasında programatik olarak alınabilir ancak kesinlikle sabit kodlanmamalı ya da diğer cihaz sahibi uygulamalarının kullanımını engellememelidir.
Cihaz uygulamaları android.software.device_admin beyan ediyorsa ancak tescilli bir cihaz sahibi yönetim çözümü de içeriyorsa ve çözümlerinde yapılandırılmış bir uygulamayı standart Android DevicePolicyManager API'leri tarafından tanınan standart "Cihaz Sahibi" olarak "Cihaz Sahibi eşdeğeri" olarak tanıtma mekanizması sağlıyorsa:
- [C-2-1] Tanıtımı yapılan uygulamanın, yasal bir kurumsal cihaz yönetimi çözümüne ait olduğunu ve tescilli çözümde "Cihaz Sahibi" ile eşdeğer haklara sahip olacak şekilde yapılandırıldığını doğrulayan bir süreç OLMALIDIR.
- [C-2-2] DPC uygulamasını "Cihaz Sahibi" olarak kaydetmeden önce
android.app.action.PROVISION_MANAGED_DEVICEtarafından başlatılan akışla aynı AOSP Cihaz Sahibi izni açıklamasını göstermelidir. - DPC uygulaması "Cihaz Sahibi" olarak kaydedilmeden önce cihazda kullanıcı verileri OLABİLİR.
3.9.1.2 Yönetilen profil temel hazırlığı
Cihaz uygulamaları android.software.managed_users beyan ederse:
-
[C-1-1] Bir cihaz politikası denetleyici (DPC) uygulamasının yeni bir yönetilen profilin sahibi olmasına olanak tanıyan API'ler uygulanmalıdır.
-
[C-1-2] Kullanıcıların deneyimlediği yönetilen profil sağlama süreci (android.app.action.PROVISION_MANAGED_PROFILE tarafından başlatılan akış), AOSP uygulamasıyla uyumlu OLMALIDIR.
-
[C-1-3] Belirli bir sistem işlevi Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığında kullanıcıya bildirmek için Ayarlar'da aşağıdaki kullanıcı kolaylıklarını SAĞLAMALIDIR:
- Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya başka bir kullanıcı olanağı (ör. yukarı akış AOSP bilgi simgesi).
- Cihaz yöneticisi tarafından
setShortSupportMessagearacılığıyla sağlanan kısa açıklama mesajı. - DPC uygulamasının simgesi.
3.9.2 Yönetilen Profil Desteği
Cihaz uygulamaları android.software.managed_users beyan ederse:
- [C-1-1]
android.app.admin.DevicePolicyManagerAPI'leri aracılığıyla yönetilen profiller desteklenmelidir. - [C-1-2] Yalnızca bir yönetilen profilin oluşturulmasına İZİN VERİLMELİDİR.
- [C-1-3] Yönetilen uygulamaları, widget'ları ve diğer rozetli kullanıcı arayüzü öğelerini (ör. Son Kullanılanlar ve Bildirimler) temsil etmek için rozetli bir simge (AOSP'deki yukarı akış iş rozetine benzer) KULLANILMALIDIR.
- [C-1-4] Kullanıcının yönetilen bir profil uygulamasında olduğunu belirtmek için bildirim simgesi (AOSP yukarı akış iş rozetine benzer) GÖSTERİLMELİDİR.
- [C-1-5] Cihaz uyandığında (ACTION_USER_PRESENT) ve ön plandaki uygulama yönetilen profilin içindeyken kullanıcıya yönetilen profilde olduğunu belirten bir kısa mesaj göstermELİDİR.
- [C-1-6] Yönetilen bir profil varsa Cihaz Politikası Denetleyicisi tarafından etkinleştirilmişse kullanıcının, yönetilen profildeki amacı birincil kullanıcıya veya tam tersi yönde iletmesine izin vermek için Amaç "Seçici"de görsel bir kolaylık GÖSTERİLMELİDİR.
- [C-1-7] Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı kolaylıkları ZORUNLU olarak sunulmalıdır:
- Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması.
- Birincil kullanıcı veya yönetilen profile yüklenen VPN uygulamalarının bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profile yüklenen uygulamaların bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profil içindeki hesapların bağımsız yönetimi.
- [C-1-8] Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş çevirici, kişiler ve mesajlaşma uygulamalarının, arayan bilgilerini yönetilen profilde (varsa) ve birincil profilde arayıp bulabilmesini SAĞLAMALIDIR.
- [C-1-9] Yönetilen profil, birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa da birden fazla kullanıcının etkin olduğu bir cihaz için geçerli olan tüm güvenlik şartlarını karşıladığından EMİN OLMALIDIR (9.5 bölümüne bakın).
- [C-1-10] Yönetilen profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı belirtme özelliğini DESTEKLEMELİDİR.
- Cihaz uygulamaları,
DevicePolicyManager.ACTION_SET_NEW_PASSWORDamacı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 gösterildiğinde, bu kişilere ve mesajlaşma uygulamalarına, yönetilen profil uygulamalarını belirtmek için kullanılan rozetle aynı rozet eklenmelidir.
3.9.3 Yönetilen Kullanıcı Desteği
Cihaz uygulamaları android.software.managed_users beyan ederse:
- [C-1-1]
isLogoutEnabled,truedeğerini döndürdüğünde çok kullanıcılı oturumda mevcut kullanıcıdan çıkış yapıp birincil kullanıcıya geri dönmek için kullanıcıya bir olanak SAĞLANMALIDIR. Kullanıcı arayüzü, cihazın kilidi açılmadan kilit ekranından erişilebilir OLMALIDIR.
3.10. Erişilebilirlik
Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sağlar. Ayrıca Android, erişilebilirlik hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma almasını ve metin okuma, dokunsal geribildirim ve trackball/d-pad navigasyonu gibi alternatif geri bildirim mekanizmaları oluşturmasını sağlayan platform API'leri sunar.
Cihaz uygulamaları üçüncü taraf erişilebilirlik hizmetlerini destekliyorsa:
- [C-1-1] Erişilebilirlik API'leri SDK dokümanında açıklandığı gibi Android erişilebilirlik çerçevesinin bir uygulamasını SAĞLAMALIDIR.
- [C-1-2] SDK'da belirtildiği şekilde, erişilebilirlik etkinlikleri oluşturmalı ve uygun
AccessibilityEventdeğerini tüm kayıtlıAccessibilityServiceuygulamalarına iletmelidir. - [C-1-3] Önceden yüklenmiş erişilebilirlik hizmetlerinin yanı sıra üçüncü taraf erişilebilirlik hizmetlerini etkinleştirmek ve devre dışı bırakmak için kullanıcı tarafından erişilebilen bir mekanizma sağlama
android.settings.ACCESSIBILITY_SETTINGSamacına UYULMALIDIR. - [C-1-4] Etkinleştirilen erişilebilirlik hizmetleri
AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTONbeyan ettiğinde kullanıcının erişilebilirlik hizmetini kontrol etmesine olanak tanıyan bir düğme, sistemin gezinme çubuğuna EKLENMELİDİR . Sistem gezinme çubuğu olmayan cihaz uygulamalarında bu şartın geçerli olmadığını ancak cihaz uygulamalarının, bu erişilebilirlik hizmetlerini kontrol etmek için kullanıcıya bir olanak SUNMASI gerektiğini unutmayın.
Cihaz uygulamaları önceden yüklenmiş erişilebilirlik hizmetleri içeriyorsa:
- [C-2-1] Veri depolama alanı Dosya Tabanlı Şifreleme (FBE) ile şifrelendiğinde bu önceden yüklenmiş erişilebilirlik hizmetleri Doğrudan Başlatma Moduna Uygun uygulamalar olarak uygulanmalıdır.
- Kullanıcılara ilgili erişilebilirlik hizmetlerini etkinleştirmeleri için kutudan çıkarma kurulum akışında bir mekanizma SUNULMALIDIR. Ayrıca yazı tipi boyutunu, görüntü boyutunu ve büyütme hareketlerini ayarlama seçenekleri de sunulmalıdır.
3.11. Metin Okuma
Android, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına olanak tanıyan API'ler içerir ve hizmet sağlayıcıların TTS hizmetlerinin uygulamalarını sunmasına izin verir.
android.hardware.audio.output özelliğini bildiren cihaz uygulamaları:
- [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 izin vermek için kullanıcıya olanak TANINMALIDIR.
3.12. TV Input Framework
Android Television Input Framework (TIF), canlı içeriklerin Android Television cihazlara aktarılmasını kolaylaştırır. TIF, Android TV cihazlarını kontrol eden giriş modülleri oluşturmak için standart bir API sağlar.
Cihaz uygulamaları TIF'yi destekliyorsa:
- [C-1-1] Platform özelliği
android.software.live_tvBİLDİRİLMELİDİR. - [C-1-2] Bu API'leri ve üçüncü taraf TIF tabanlı girişler hizmetini kullanan bir uygulamanın cihaza yüklenip kullanılabilmesi için tüm TIF API'lerini desteklemelidir.
3.13. Hızlı Ayarlar
Android, sık kullanılan veya acilen ihtiyaç duyulan işlemlere hızlı erişim sağlayan bir Hızlı Ayarlar kullanıcı arayüzü bileşeni sunar.
Cihaz uygulamaları bir Hızlı Ayarlar kullanıcı arayüzü bileşeni içeriyorsa:
- [C-1-1] Kullanıcının,
quicksettingsAPI'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 açıklandığı şekilde (ör. meta veriler, simgeler, görüntüler) GÖSTERİLMELİDİR.
- [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 uygunluk sağlamak üzere bir çekmece veya başka bir mekanizma OLMALIDIR.
- [C-1-5]
KEYCODE_HEADSETHOOKveyaKEYCODE_MEDIA_PLAY_PAUSEtuşuna iki kez dokunmanınMediaSession.Callback#onMediaButtonEventiçinKEYCODE_MEDIA_NEXTolarak 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:protectionLeveldeğeri"instant"olarak ayarlanmış izinler verilmelidir. - [C-0-2] Aşağıdaki durumlardan biri geçerli OLMADIĞI SÜRECE hazır uygulamalar, örtülü amaçlar aracılığıyla yüklü uygulamalarla etkileşimde BULUNMAMALIDIR:
- Bileşenin intent modeli filtresi kullanıma sunulur ve CATEGORY_BROWSABLE içerir.
- İşlem, ACTION_SEND, ACTION_SENDTO veya ACTION_SEND_MULTIPLE işlemlerinden biridir.
- Hedef, android:visibleToInstantApps ile açıkça gösteriliyor.
- [C-0-3] Bileşen, android:visibleToInstantApps aracılığıyla kullanıma sunulmadığı sürece hazır uygulamalar, yüklü uygulamalarla açıkça etkileşimde BULUNMAMALIDIR.
- [C-0-4] Yüklü uygulamalar, hazır uygulama yüklü uygulamaya açıkça bağlanmadığı sürece cihazdaki hazır uygulamalarla ilgili ayrıntıları görmemelidir.
3.16. Yardımcı Cihaz Eşleme
Android, ikincil cihaz eşleştirmeyi destekleyerek ikincil cihazlarla ilişkilendirmeyi daha etkili bir şekilde yönetmenizi sağlar ve uygulamaların bu özelliğe erişmesi için CompanionDeviceManager API'sini sunar.
Cihaz uygulamaları, yardımcı cihaz eşleştirme özelliğini destekliyorsa:
- [C-1-1]
FEATURE_COMPANION_DEVICE_SETUPözellik işaretini BEYAN ETMELİDİR . - [C-1-2]
android.companionpaketindeki API'lerin tamamen uygulandığından EMİN OLMALIDIR. - [C-1-3] Kullanıcının, eşlik eden bir cihazın mevcut ve çalışır durumda olduğunu seçmesi/onaylaması için kullanıcıya olanaklar SUNULMALIDIR.
3:17. Ağır Sıklet Uygulamalar
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE özelliğini beyan ediyorsa:
- [C-1-1] Sistemde aynı anda yalnızca bir
cantSaveStateçalıştıran uygulama yüklü OLMALIDIR. Kullanıcı, bu tür bir uygulamadan açıkça çıkmadan ayrılırsa (ör. sistemde etkin bir etkinlikten ayrılırken sistemde etkin etkinlik kalmadığında geri düğmesine basmak yerine ana sayfa düğmesine basarak) cihaz uygulamaları, RAM'de bu uygulamaya öncelik VERMELİDİR. Bu, ön plandaki hizmetler gibi çalışmaya devam etmesi beklenen diğer öğeler için de geçerlidir. Bu tür bir uygulama arka plandayken sistem, CPU ve ağ erişimini sınırlama gibi güç yönetimi özelliklerini uygulamaya devam edebilir. - [C-1-2] Kullanıcı,
cantSaveStateözelliğiyle beyan edilen ikinci bir uygulamayı başlattıktan sonra normal durum kaydetme/geri yükleme mekanizmasına katılmayacak uygulamayı seçmek için bir kullanıcı arayüzü olanağı SAĞLANMALIDIR. - [C-1-3]
cantSaveStatebelirten uygulamalara, CPU performansını değiştirme veya planlama önceliğini değiştirme gibi başka politika değişiklikleri UYGULANMAMALIDIR.
Cihaz uygulamaları FEATURE_CANT_SAVE_STATE özelliğini bildirmezse:
- [C-1-1] Uygulamalar tarafından ayarlanan
cantSaveStateözelliği YOK SAYILMALI ve uygulama davranışı bu özelliğe göre DEĞİŞTİRİLMEMELİDİR.
4. Uygulama Paketleme Uyumluluğu
Cihaz uygulamaları:
- [C-0-1] Resmi Android SDK'sında bulunan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarını yükleyip çalıştırmalıdır.
- Yukarıdaki şart zorlayıcı olabileceğinden cihaz uygulamalarında AOSP referans uygulamasının paket yönetim sisteminin kullanılması ÖNERİLİR.
Cihaz uygulamaları:
- [C-0-2] APK İmza Şeması v3 , APK İmza Şeması v2 ve JAR imzalama kullanılarak ".apk" dosyalarının doğrulanması DESTEKLENMELİDİR.
- [C-0-3] .apk, Android Manifest, Dalvik bytecode veya RenderScript bytecode biçimlerini, bu dosyaların diğer uyumlu cihazlara doğru şekilde yüklenmesini ve bu cihazlarda doğru şekilde çalışmasını engelleyecek şekilde genişletMEMELİDİR.
-
[C-0-4]
DELETE_PACKAGEizniyle ilgili SDK'da belirtildiği gibi, paketin mevcut "kayıtlı yükleyicisi" dışındaki uygulamaların, kullanıcı onayı olmadan uygulamayı sessizce kaldırmasına İZİN VERİLMEMELİDİR. Tek istisnalar, PACKAGE_NEEDS_VERIFICATION intent'ini işleyen sistem paketi doğrulayıcı uygulaması ve ACTION_MANAGE_STORAGE intent'ini işleyen depolama alanı yöneticisi uygulamasıdır. -
[C-0-5]
android.settings.MANAGE_UNKNOWN_APP_SOURCESamacını işleyen bir etkinliğe SAHİP OLMALIDIR. -
[C-0-6] Yükleme isteğinde bulunan uygulama aşağıdaki şartların tümünü karşılamadığı sürece bilinmeyen kaynaklardan uygulama paketleri yüklenMEMELİDİR:
REQUEST_INSTALL_PACKAGESiznini BEYAN ETMELİ veyaandroid:targetSdkVersiondeğeri 24 ya da daha düşük olmalıdır.- Kullanıcı, bilinmeyen kaynaklardan uygulama yüklemek için İZİN VERMİŞ OLMALIDIR.
-
Uygulamalar için bilinmeyen kaynaklardan uygulama yükleme izni verme/iptal etme konusunda kullanıcıya bir seçenek SUNULMALIDIR. Ancak cihaz uygulamasında kullanıcıların bu seçeneğe sahip olmasına izin verilmek istenmiyorsa bu işlem yapılmayabilir ve
startActivityForResult()içinRESULT_CANCELEDdöndürülebilir. Ancak bu gibi durumlarda bile, kullanıcıya neden böyle bir seçenek sunulmadığını BELİRTMEK ZORUNDADIRLAR. -
[C-0-7] Aynı sistem API'si
PackageManager.setHarmfulAppWarningtarafından zararlı olabileceği belirtilen bir uygulamada etkinlik başlatmadan önce, sistem API'siPackageManager.setHarmfulAppWarningaracılığıyla sağlanan uyarı dizesini içeren bir uyarı iletişim kutusu GÖSTERMELİDİR. - Uyarı iletişim kutusunda uygulamayı kaldırmayı veya başlatmayı seçmek için kullanıcıya olanak tanınmalıdır.
5. Multimedya Uyumluluğu
Cihaz uygulamaları:
- [C-0-1]
MediaCodecListtarafından beyan edilen her codec için bölüm 5.1'de tanımlanan medya biçimlerini, kodlayıcıları, kod çözücüleri, dosya türlerini ve kapsayıcı biçimlerini DESTEKLEMELİDİR. - [C-0-2]
MediaCodecListaracı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
CamcorderProfileiçinde bildirilen profilleri içerir.
Cihaz uygulamaları:
- SHOULD aim for minimum codec latency, in others words, they
- Giriş arabelleklerini tüketmemeli ve depolamamalı, yalnızca işlendikten sonra giriş arabelleklerini döndürmelidir.
- Çözülen arabellekleri standartta (ör. SPS) belirtilenden daha uzun süre tutmamalıdır.
- Kodlanmış arabellekleri GOP yapısının gerektirdiğinden daha uzun süre tutmamalıdır.
Aşağıdaki bölümde listelenen tüm codec'ler, Android Açık Kaynak Projesi'nin tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.
Google'ın veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerinden muaf olduğuna dair herhangi bir beyanda bulunmadığını lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya paylaşılan yazılım da dahil olmak üzere bu kodun uygulamaları için ilgili patent sahiplerinden patent lisansı alması gerekebileceği konusunda bilgilendirilir.
5.1. Medya Codec'leri
5.1.1. Ses kodlama
Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.microphone beyan ediyorsa aşağıdaki ses kodlamasını DESTEKLEMELİDİR:
- [C-1-1] PCM/WAVE
5.1.2. Ses kod çözme
Daha fazla ayrıntı için 5.1.3. Ses Codec'leri Ayrıntıları'nı tıklayın.
Cihaz uygulamaları android.hardware.audio.output özelliğini desteklediğini beyan ediyorsa aşağıdaki ses biçimlerinin kodunu çözmeyi desteklemesi gerekir:
- [C-1-1] MPEG-4 AAC Profili (AAC LC)
- [C-1-2] MPEG-4 HE AAC Profili (AAC+)
- [C-1-3] MPEG-4 HE AACv2 Profili (gelişmiş AAC+)
- [C-1-4] AAC ELD (gelişmiş düşük gecikmeli AAC)
- [C-1-11] xHE-AAC (ISO/IEC 23003-3 Extended HE AAC Profili, USAC Baseline Profili ve ISO/IEC 23003-4 Dynamic Range Control Profili dahil)
- [C-1-5] FLAC
- [C-1-6] MP3
- [C-1-7] MIDI
- [C-1-8] Vorbis
- [C-1-9] PCM/WAVE
- [C-1-10] Opus
Cihaz uygulamaları, android.media.MediaCodec API'deki varsayılan AAC ses kod çözücüsü aracılığıyla çok kanallı akışların (ör. ikiden fazla kanal) AAC giriş arabelleklerinin PCM'ye kod çözülmesini destekliyorsa aşağıdakiler DESTEKLENMELİDİR:
- [C-2-1] Kod çözme işlemi, miksajı azaltmadan yapılmalıdır (ör. 5.0 AAC akışı, beş kanallı PCM olarak, 5.1 AAC akışı ise altı kanallı PCM olarak çözülmelidir).
- [C-2-2] Dinamik aralık meta verileri, ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde tanımlandığı gibi olmalıdır ve
android.media.MediaFormatDRC 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_LEVELveKEY_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.MediaFormattuşlarıyla ayarlanan yapılandırmaya göre davranmalıdır:KEY_AAC_DRC_TARGET_REFERENCE_LEVELveKEY_AAC_DRC_EFFECT_TYPE.
MPEG-4 AAC, HE AAC ve HE AACv2 profil kod çözücüleri:
- MAY, ISO/IEC 23003-4 Dinamik Aralık Kontrolü Profili kullanılarak ses yüksekliği ve dinamik aralık kontrolünü destekleyebilir.
ISO/IEC 23003-4 destekleniyorsa ve çözülmüş bir bit akışında hem ISO/IEC 23003-4 hem de ISO/IEC 14496-3 meta verileri varsa:
- ISO/IEC 23003-4 meta verileri ÖNCELİKLİDİR.
5.1.3. Ses Codec'i Ayrıntıları
| Biçim/Codec | Ayrıntılar | Desteklenen Dosya Türleri/Kapsayıcı Biçimleri |
|---|---|---|
|
MPEG-4 AAC Profili (AAC LC) |
8-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. |
|
| MPEG-4 HE AAC Profili (AAC+) | 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. | |
|
MPEG-4 HE AACv2 Profili (gelişmiş AAC+) |
16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 içerik desteği. | |
| AAC ELD (gelişmiş düşük gecikmeli AAC) | 16-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. | |
| USAC | 7,35-48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. | MPEG-4 (.mp4, .m4a) |
| AMR-NB | 8 kHz'de örneklenmiş 4,75 ila 12,2 kb/sn | 3GPP (.3gp) |
| AMR-WB | 16 kHz'de örneklenen 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız | |
| FLAC | Mono/Stereo (çok kanallı değil). 48 kHz'ye kadar örnek hızları (ancak 48 ila 44,1 kHz alt örnekleyici düşük geçiren filtre içermediğinden 44,1 kHz çıkışlı cihazlarda 44,1 kHz'ye kadar ÖNERİLİR). 16 bit ÖNERİLİR; 24 bit için titretme uygulanmaz. | Yalnızca FLAC (.flac) |
| MP3 | Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR) | MP3 (.mp3) |
| MIDI | MIDI Türü 0 ve 1. DLS 1 ve 2 sürümleri. XMF ve Mobile XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek |
|
| 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ın kodlanmasını DESTEKLEMELİDİR:
- [C-0-1] JPEG
- [C-0-2] PNG
- [C-0-3] WebP
5.1.5. Resim Kodu Çözme
Daha fazla ayrıntı için 5.1.6. Resim Codec'leri Ayrıntıları.
Cihaz uygulamaları, aşağıdaki görüntü kodlamasının çözülmesini DESTEKLEMELİDİR:
- [C-0-1] JPEG
- [C-0-2] GIF
- [C-0-3] PNG
- [C-0-4] BMP
- [C-0-5] WebP
- [C-0-6] Ham
- [C-0-7] HEIF (HEIC)
5.1.6. Görüntü Codec'leri Ayrıntıları
| Biçim/Codec | Ayrıntılar | Desteklenen Dosya Türleri/Kapsayıcı Biçimleri |
|---|---|---|
| JPEG | Temel+progresif | JPEG (.jpg) |
| GIF | GIF (.gif) | |
| PNG | PNG (.png) | |
| BMP | BMP (.bmp) | |
| WebP | WebP (.webp) | |
| İşlenmemiş | ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw) | |
| HEIF | Resim, Resim koleksiyonu, Resim dizisi | HEIF (.heif), HEIC (.heic) |
5.1.7. Video Codec'leri
- Web'de video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olması için cihaz uygulamalarında gereksinimleri karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
Cihaz uygulamaları video kod çözücü veya kodlayıcı içeriyorsa:
-
[C-1-1] Video codec'leri, standart ve yapılandırma tarafından belirlenen en büyük olası sıkıştırılmış ve sıkıştırılmamış kareyi barındıran ancak genel olarak fazla yer ayırmayan çıkış ve giriş bytebuffer boyutlarını desteklemelidir.
-
[C-1-2] Video kodlayıcılar ve kod çözücüler, YUV420 esnek renk biçimini (COLOR_FormatYUV420Flexible) DESTEKLEMELİDİR.
Cihaz uygulamaları, Display.HdrCapabilities aracılığıyla HDR profili desteği sunduğunu belirtiyorsa:
- [C-2-1] HDR statik meta veri ayrıştırması ve işlenmesi DESTEKLENMELİDİR.
Cihaz uygulamaları, MediaCodecInfo.CodecCapabilities sınıfında FEATURE_IntraRefresh aracılığıyla yenileme içi desteği duyuruyorsa:
- [C-3-1] 10-60 kare aralığındaki yenileme sürelerini DESTEKLEMELİ ve yapılandırılan yenileme süresinin% 20'si içinde doğru şekilde ÇALIŞMALIDIR.
5.1.8. Video Codec'leri Listesi
| Biçim/Codec | Ayrıntılar |
Desteklenen Dosya Türleri/ Kapsayıcı Biçimleri |
|---|---|---|
| H.263 |
|
|
| 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ü inceleyin. | MPEG-4 (.mp4) |
| MPEG-2 | Ana Profil | MPEG2-TS |
| MPEG-4 SP | 3GPP (.3gp) | |
| VP8 | Ayrıntılar için 5.2 ve 5.3 bölümlerine bakın. |
|
| VP9 | Ayrıntılar için 5.3. bölümü inceleyin. |
|
5.2. Video Kodlama
Cihaz uygulamaları herhangi bir video kodlayıcıyı destekleyip üçüncü taraf uygulamalarına sunuyorsa:
- İki kayan pencere arasında, kareler arası (I-frame) aralıklar arasındaki bit hızının yaklaşık% 15'inden fazla OLMAMALIDIR.
- 1 saniyelik kayan pencerede bit hızının yaklaşık% 100'ünden fazla OLMAMALIDIR.
Cihaz uygulamaları, köşegen uzunluğu en az 2,5 inç olan yerleşik bir ekran içeriyorsa, video çıkışı bağlantı noktası içeriyorsa veya android.hardware.camera.any özellik işareti aracılığıyla kamera desteği beyan ediyorsa:
- [C-1-1] En az bir VP8 veya H.264 video kodlayıcının desteğini içermeli ve bunu üçüncü taraf uygulamaları için kullanılabilir hale getirmelidir.
- Hem VP8 hem de H.264 video kodlayıcılarını desteklemeli ve bunları üçüncü taraf uygulamalarının kullanımına sunmalıdır.
Cihaz uygulamaları H.264, VP8, VP9 veya HEVC video kodlayıcılarından herhangi birini destekleyip üçüncü taraf uygulamalarına sunuyorsa:
- [C-2-1] Dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
- Değişken kare hızları desteklenmelidir. Bu durumda video kodlayıcı, anlık kare süresini giriş arabelleklerinin zaman damgalarına göre belirlemeli ve bit grubunu bu kare süresine göre tahsis etmelidir.
Cihaz uygulamaları MPEG-4 SP video kodlayıcıyı destekliyorsa ve üçüncü taraf uygulamalarına sunuyorsa:
- Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
5.2.1. H.263
Cihaz uygulamaları H.263 kodlayıcıları destekliyorsa ve üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1] Temel Profil Düzeyi 45'i DESTEKLEMELİDİR.
- Desteklenen kodlayıcı için dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
5.2.2. H-264
Cihaz uygulamaları H.264 codec'ini destekliyorsa:
- [C-1-1] Temel Profil Seviye 3'ü DESTEKLEMELİDİR. Ancak ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğu korumak için kodlayıcıların Baseline Profile'da ASO, FMO ve RS'yi KULLANMAMASI ÖNERİLİR.
- [C-1-2] Aşağıdaki tabloda yer alan SD (Standart Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
- Ana Profil Düzeyi 4'ü DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için H.264 kodlamasının desteklendiğini bildiriyorsa:
- [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
|---|---|---|---|---|
| Video çözünürlüğü | 320 x 240 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
| Video kare hızı | 20 fps | 30 fps | 30 fps | 30 fps |
| Video bit hızı | 384 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
5.2.3. VP8
Cihaz uygulamaları VP8 codec'ini destekliyorsa:
- [C-1-1] SD video kodlama profillerini DESTEKLEMELİDİR.
- Aşağıdaki HD (Yüksek Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
- Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
- Web video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olmasını sağlamak için WebM projesi RTC donanım kodlama şartlarını karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
Cihaz uygulamaları, medya API'leri aracılığıyla 720p veya 1080p çözünürlüklü videolar için VP8 kodlamasının desteklendiğini bildiriyorsa:
- [C-2-1] Aşağıdaki tablodaki kodlama profillerini DESTEKLEMELİDİR.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
|---|---|---|---|---|
| Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps |
| Video bit hızı | 800 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
5.2.4. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- Matroska WebM dosyalarının yazılması DESTEKLENMELİDİR.
5.3. Video kod çözme
Cihaz uygulamaları VP8, VP9, H.264 veya H.265 codec'lerini destekliyorsa:
- [C-1-1] Tüm VP8, VP9, H.264 ve H.265 codec'leri için aynı akışta standart Android API'leri aracılığıyla dinamik video çözünürlüğü ve kare hızı geçişini gerçek zamanlı olarak ve cihazda her codec tarafından desteklenen maksimum çözünürlüğe kadar desteklemelidir.
Cihaz uygulamaları HDR_TYPE_DOLBY_VISION aracılığıyla Dolby Vision kod çözücüsünü desteklediğini beyan ediyorsa:
- [C-2-1] Dolby Vision özellikli bir çıkarıcı SAĞLANMALIDIR.
- [C-2-2] Dolby Vision içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI) DOĞRU şekilde göstermELİDİR.
- [C-2-3] Geriye dönük uyumlu temel katmanların (varsa) parça dizini, birleştirilmiş Dolby Vision katmanının parça diziniyle aynı OLMALIDIR.
5.3.1. MPEG-2
Cihaz uygulamaları MPEG-2 kod çözücülerini destekliyorsa:
- [C-1-1] Ana Profil Yüksek Seviyesi desteklenmelidir.
5.3.2. H.263
Cihaz uygulamaları H.263 kod çözücülerini destekliyorsa:
- [C-1-1] MUST support Baseline Profile Level 30 and Level 45.
5.3.3. MPEG-4
MPEG-4 kod çözücüler içeren cihaz uygulamaları:
- [C-1-1] Simple Profile Level 3'ü DESTEKLEMELİDİR.
5.3.4. H.264
Cihaz uygulamaları H.264 kod çözücülerini destekliyorsa:
- [C-1-1] Main Profile Level 3.1 ve Baseline Profile'ı DESTEKLEMELİDİR. ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) desteği İSTEĞE BAĞLIDIR.
- [C-1-2] Aşağıdaki tabloda listelenen ve Baseline Profile ile Main Profile Level 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlük) profillerine sahip videoları çözebilmelidir.
- Aşağıdaki tabloda belirtildiği gibi HD (yüksek çözünürlük) profillerine sahip videoları çözebilmelidir.
Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse cihaz uygulamaları:
- [C-2-1] Aşağıdaki tabloda yer alan HD 720p video kod çözme profillerini DESTEKLEMELİDİR.
- [C-2-2] Aşağıdaki tabloda yer alan HD 1080p video kod çözme profillerini DESTEKLEMELİDİR.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
|---|---|---|---|---|
| Video çözünürlüğü | 320 x 240 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
| Video kare hızı | 30 fps | 30 fps | 60 fps | 30 fps (60 fpsTelevizyon) |
| Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.5. H.265 (HEVC)
Cihaz uygulamaları H.265 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda belirtildiği gibi, Ana Profil Düzeyi 3 Ana katmanını ve SD video kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
- [C-1-2] Donanım kod çözücü varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-2-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin H.265 veya VP9 kod çözme işlemlerinden en az birini desteklemelidir.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
|---|---|---|---|---|---|
| Video çözünürlüğü | 352 x 288 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30/60 fps (60 fpsH.265 donanım kod çözme özelliğine sahip televizyon) | 60 fps |
| Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
5.3.6. VP8
Cihaz uygulamaları VP8 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tablodaki SD kod çözme profillerini DESTEKLEMELİDİR.
- Koşulları karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
- Aşağıdaki tabloda yer alan HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-2-1] Cihaz uygulamaları, aşağıdaki tabloda yer alan 720p profillerini DESTEKLEMELİDİR.
- [C-2-2] Cihaz uygulamaları, aşağıdaki tablodaki 1080p profillerini DESTEKLEMELİDİR.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | |
|---|---|---|---|---|
| Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps (60 fpsTelevizyon) | 30 (60 fpsTelevizyon) |
| Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
5.3.7. VP9
Cihaz uygulamaları VP9 codec'ini destekliyorsa:
- [C-1-1] Aşağıdaki tabloda belirtildiği gibi SD video kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
Cihaz uygulamaları VP9 codec'ini ve donanım kod çözücüyü destekliyorsa:
- [C-2-1] Aşağıdaki tabloda belirtildiği gibi HD kod çözme profillerini DESTEKLEMELİDİR.
Display.getSupportedModes() yöntemiyle bildirilen yükseklik, video çözünürlüğüne eşit veya daha büyükse:
- [C-3-1] Cihaz uygulamaları, 720, 1080 ve UHD profillerinin VP9 veya H.265 kod çözme işlemlerinden en az birini desteklemelidir.
| SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
|---|---|---|---|---|---|
| Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
| Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps (60 fpsVP9 donanım kod çözme özelliğine sahip televizyon) | 60 fps |
| Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
5.4. Ses Kaydetme
Bu bölümde belirtilen bazı şartlar Android 4.3'ten beri SHOULD (GEREKLİ) olarak listeleniyor olsa da gelecekteki sürümlerin Uyumluluk Tanımı'nda bu şartların MUST (ZORUNLU) olarak değiştirilmesi planlanmaktadır. Mevcut ve yeni Android cihazların, GEREKLİ olarak listelenen bu koşulları karşılaması ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiklerinde Android uyumluluğu elde edemezler.
5.4.1. Ham Ses Kaydı
Cihaz uygulamaları android.hardware.microphone beyan ederse:
-
[C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına İZİN VERİLMELİDİR:
- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 8000, 11025, 16000, 44100 Hz
- Kanallar: Mono
-
[C-1-2] Yukarı örnekleme yapmadan yukarıdaki örnek hızlarında yakalama YAPILMALIDIR.
- [C-1-3] Yukarıda verilen örnekleme hızları, alt örnekleme ile yakalandığında uygun bir yumuşatma filtresi İÇERMELİDİR.
-
AM radyo ve DVD kalitesinde ham ses içeriği yakalamaya İZİN VERİLMELİDİR. Bu, aşağıdaki özelliklerin karşılanması anlamına gelir:
- Biçim: Doğrusal PCM, 16 bit
- Örnekleme hızları: 22050, 48000 Hz
- Kanallar: Stereo
Cihaz uygulamaları, AM radyosuna ve ham ses içeriğinin DVD kalitesinde yakalanmasına izin veriyorsa:
- [C-2-1] 16000:22050 veya 44100:48000'den yüksek bir oranda örnekleme artırılmadan kayıt YAPILMALIDIR.
- [C-2-2] Herhangi bir yukarı örnekleme veya aşağı örnekleme için uygun bir yumuşatma filtresi İÇERMELİDİR.
5.4.2. Ses tanıma için yakalama
Cihaz uygulamaları android.hardware.microphone beyan ederse:
- [C-1-1]
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITIONses kaynağını 44.100 ve 48.000 örnekleme hızlarından birinde yakalamalıdır. - [C-1-2]
AudioSource.VOICE_RECOGNITIONses 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_RECOGNITIONses kaynağından ses akışı kaydederken varsayılan olarak otomatik kazanç kontrolünü devre dışı BIRAKMALIDIR. - Ses tanıma ses akışını, frekans özelliklerine göre yaklaşık olarak düz genlikte kaydetmelidir. Özellikle 100 Hz ile 4.000 Hz arasında ±3 dB olmalıdır.
- Giriş hassasiyeti, 1.000 Hz'de 90 dB ses gücü seviyesine (SPL) sahip bir kaynağın 16 bitlik örnekler için 2.500 RMS verecek şekilde ayarlanmış olarak ses tanıma ses akışını KAYDETMELİDİR.
- Mikrofonda 90 dB SPL'ye göre -18 dB ile +12 dB arasında en az 30 dB aralığında PCM genlik seviyeleri, giriş SPL değişikliklerini doğrusal olarak takip edecek şekilde ses tanıma ses akışını KAYDETMELİDİR.
- Mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için% 1'den az toplam harmonik bozulma (THD) ile ses tanıma ses akışını KAYDETMELİDİR.
Cihaz uygulamaları, android.hardware.microphone ve konuşma tanıma için ayarlanmış gürültü bastırma (azaltma) teknolojilerini beyan ediyorsa:
- [C-2-1] Bu ses efektinin
android.media.audiofx.NoiseSuppressorAPI'si ile kontrol edilmesine İZİN VERİLMELİDİR. - [C-2-2]
AudioEffect.Descriptor.uuidalanı aracılığıyla her gürültü bastırma teknolojisi uygulamasını benzersiz şekilde tanımlAMALIDIR.
5.4.3. Oynatmanın yeniden yönlendirilmesi için yakalama
android.media.MediaRecorder.AudioSource sınıfı, REMOTE_SUBMIX ses kaynağını içerir.
Cihaz uygulamaları hem android.hardware.audio.output hem de android.hardware.microphone öğesini bildiriyorsa:
-
[C-1-1]
REMOTE_SUBMIXSes kaynağı, bir uygulama bu ses kaynağından kayıt yapmak içinandroid.media.AudioRecordAPI'sini kullandığında aşağıdakiler hariç tüm ses akışlarının karışımını yakalayacak şekilde düzgün bir şekilde uygulanmalıdır:-
AudioManager.STREAM_RING -
AudioManager.STREAM_ALARM -
AudioManager.STREAM_NOTIFICATION
-
5.5. Ses oynatma
Android, uygulamaların 7.8.2 bölümünde tanımlandığı şekilde ses çıkışı çevre birimi üzerinden ses oynatmasına olanak tanıyan desteği içerir.
5.5.1. Ham Ses Oynatma
Cihaz uygulamaları android.hardware.audio.output beyan ederse:
-
[C-1-1] Aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına İZİN VERİLMELİDİR:
- Biçim: Doğrusal PCM, 16 bit, 8 bit, kayan nokta
- Kanallar: Mono, Stereo, 8 kanala kadar geçerli çok kanallı yapılandırmalar
-
Örnekleme hızları (Hz cinsinden):
- Yukarıda listelenen kanal yapılandırmalarında 8000, 11025, 16000, 22050, 32000, 44100, 48000
- Mono ve stereo olarak 96000
-
Aşağıdaki özelliklere sahip ham ses içeriklerinin oynatılmasına İZİN VERİLMELİDİR:
- Örnekleme hızları: 24000, 48000
5.5.2. Ses efektleri
Android, cihaz uygulamaları için ses efektleri API'si sağlar.
Cihaz uygulamaları android.hardware.audio.output özelliğini bildiriyorsa:
- [C-1-1]
EFFECT_TYPE_EQUALIZERveEFFECT_TYPE_LOUDNESS_ENHANCERuygulamaları, AudioEffect alt sınıflarıEqualizer,LoudnessEnhanceraracılığıyla kontrol edilebilir şekilde desteklenmelidir. - [C-1-2]
Visualizersı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_PROCESSINGimplementation controllable through the AudioEffect subclassDynamicsProcessing. EFFECT_TYPE_BASS_BOOST,EFFECT_TYPE_ENV_REVERB,EFFECT_TYPE_PRESET_REVERBveEFFECT_TYPE_VIRTUALIZERuygulamalarınıAudioEffectalt sınıflarıBassBoost,EnvironmentalReverb,PresetReverbveVirtualizeraracılığıyla kontrol edilebilir şekilde DESTEKLEMELİDİR.
5.5.3. Ses Çıkış Ses Seviyesi
Otomotiv cihaz uygulamaları:
- AudioAttributes tarafından tanımlanan içerik türü veya kullanım ve
android.car.CarAudioManageriçinde herkese açık olarak tanımlanan araç ses sistemi kullanımı kullanılarak her ses akışı için ses düzeyinin ayrı ayrı ayarlanmasına İZİN VERİLMELİDİR.
5.6. Ses Gecikmesi
Ses gecikmesi, bir ses sinyalinin sistemden geçerken yaşadığı zaman gecikmesidir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikme sürelerine ihtiyaç duyar.
Bu bölümün amaçları doğrultusunda aşağıdaki tanımları kullanın:
- output latency. Bir uygulamanın PCM kodlu bir veri çerçevesi yazdığı zaman ile karşılık gelen sesin cihaz üzerindeki bir dönüştürücüde ortama sunulduğu veya bir bağlantı noktası üzerinden cihazdan çıktığı ve harici olarak gözlemlenebildiği zaman arasındaki aralık.
- Soğuk çıkış gecikmesi. Ses çıkışı sistemi istekten önce boşta kalıp kapatıldığında ilk karenin çıkış gecikmesi.
- sürekli çıkış gecikmesi. Cihaz ses çalmaya başladıktan sonraki karelerin çıkış gecikmesi.
- giriş gecikmesi. Bir sesin ortam tarafından cihaz üzerinde bulunan bir dönüştürücüye sunulması veya bir sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın PCM kodlu verilerin ilgili çerçevesini okuması arasındaki aralık.
- kayıp giriş. Bir giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.
- Soğuk giriş gecikmesi İstekten önce ses girişi sistemi boşta ve kapalıyken, kayıp giriş süresi ile ilk karenin giriş gecikmesinin toplamı.
- sürekli giriş gecikmesi. Cihaz ses yakalarken sonraki karelerin giriş gecikmesi.
- cold output jitter. Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- soğuk giriş titremesi. Soğuk giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- sürekli gidiş dönüş gecikmesi. Sürekli giriş gecikmesi, sürekli çıkış gecikmesi ve bir arabellek süresinin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için zaman tanır.
- OpenSL ES PCM arabellek sırası API'si. Android NDK'deki PCM ile ilgili OpenSL ES API'leri kümesi.
- AAudio yerel ses API'si. Android NDK'deki AAudio API'leri kümesi.
- Zaman damgası. Bir akış içindeki göreli kare konumundan ve bu karenin ilişkili uç noktada ses işleme ardışık düzenine girdiği veya bu ardışık düzenden çıktığı tahmini zamandan oluşan bir çift. AudioTimestamp başlıklı makaleyi de inceleyin.
Cihaz uygulamaları android.hardware.audio.output beyan ediyorsa aşağıdaki şartları karşılamaları veya aşmaları ŞİDDETLE TAVSİYE EDİLİR:
- [C-SR] 100 milisaniye veya daha az soğuk çıkış gecikmesi
- [C-SR] 45 milisaniye veya daha az sürekli çıkış gecikmesi
- [C-SR] Soğuk çıkış titremesini en aza indirin
- [C-SR] AudioTrack.getTimestamp ve
AAudioStream_getTimestamptarafı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ğını bildirerek düşük gecikmeli ses bildirilmesi ÖNEMLE 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_LATENCYdö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 olduğundan emin OLUNMASI ÖNEMLE 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_getTimestamptarafından döndürülen giriş zaman damgalarındaki hatayı +/- 1 ms ile sınırlayın.
5.7. Ağ Protokolleri
Cihaz uygulamaları, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemelidir.
Cihaz uygulamaları ses veya video kod çözücü içeriyorsa:
-
[C-1-1] Bölüm 5.1'de belirtilen tüm gerekli codec'leri ve kapsayıcı biçimlerini HTTP(S) üzerinden desteklemelidir.
-
[C-1-2] HTTP Canlı Yayın Taslak Protokolü, Sürüm 7 üzerinden aşağıdaki Medya Segmenti Biçimleri tablosunda gösterilen medya segmenti biçimlerini desteklemelidir.
-
[C-1-3] Aşağıdaki RTSP tablosunda belirtilen RTP ses ve video profilini ve ilgili codec'leri DESTEKLEMELİDİR. İstisnalar için lütfen bölüm 5.1'deki tablo dipnotlarına bakın.
Medya segmenti biçimleri
| Segment biçimleri | Referanslar | Gerekli codec desteği |
|---|---|---|
| MPEG-2 Transport Stream (Aktarma Akışı) | ISO 13818 |
Video codec'leri:
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 bölüm 5.1.1'e bakın. |
| WebVTT | WebVTT |
RTSP (RTP, SDP)
| Profil adı | Referanslar | Gerekli codec desteği |
|---|---|---|
| H264 AVC | RFC 6184 | H264 AVC ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
| MP4A-LATM | RFC 6416 | AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.1'e bakın. |
| H263-1998 |
RFC 3551 RFC 4629 RFC 2190 |
H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
| H263-2000 | RFC 4629 | H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
| AMR | RFC 4867 | AMR-NB ile ilgili ayrıntılar için bölüm 5.1.1'e bakın. |
| AMR-WB | RFC 4867 | AMR-WB ile ilgili ayrıntılar için 5.1.1 bölümüne bakın. |
| MP4V-ES | RFC 6416 | MPEG-4 SP ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
| mpeg4-generic | RFC 3640 | AAC ve varyantları hakkında ayrıntılı bilgi için bölüm 5.1.1'e bakın. |
| MP2T | RFC 2250 | Ayrıntılar için HTTP Canlı Yayın bölümündeki MPEG-2 Aktarım Akışı'na bakın. |
5.8. Güvenli Medya
Cihaz uygulamaları güvenli video çıkışını destekliyorsa ve güvenli yüzeyleri destekleyebiliyorsa:
- [C-1-1]
Display.FLAG_SECUREdesteği BEYAN EDİLMELİDİR.
Cihaz uygulamaları Display.FLAG_SECURE desteğini beyan ediyorsa ve kablosuz ekran protokolünü destekliyorsa:
- [C-2-1] Miracast gibi kablosuz protokollerle bağlanan ekranlar için bağlantı, HDCP 2.x veya daha yüksek gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİ HALE GETİRİLMELİDİR.
Cihaz uygulamaları Display.FLAG_SECURE desteğini ve kablolu harici ekranı destekliyorsa:
- [C-3-1] Kullanıcı tarafından erişilebilen kablolu bir bağlantı noktası üzerinden bağlanan tüm harici ekranlar için HDCP 1.2 veya daha yeni bir sürüm desteklenmelidir.
5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)
Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla android.software.midi özelliğinin desteklendiğini bildiriyorsa:
-
[C-1-1] Bu tür aktarımlar şu durumlarda geçerli olmak üzere, genel MIDI dışı bağlantı sağladıkları tüm MIDI özellikli donanım aktarımlarında MIDI'yi desteklemelidir:
- 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ı (sanal MIDI cihazları) DESTEKLENMELİDİR.
5.10. Profesyonel Ses
Cihaz uygulamaları, android.content.pm.PackageManager sınıfı aracılığıyla android.hardware.audio.pro özelliğinin desteklendiğini bildiriyorsa:
- [C-1-1]
android.hardware.audio.low_latencyözelliği için destek raporlanmalıdır. - [C-1-2] 5.6 Ses Gecikmesi bölümünde tanımlandığı şekilde sürekli gidiş dönüş ses gecikmesi en fazla 20 milisaniye OLMALI ve en az bir desteklenen yolda en fazla 10 milisaniye OLMALIDIR.
- [C-1-3] USB ana makine modunu ve USB çevre birimi modunu destekleyen bir USB bağlantı noktası içermelidir.
- [C-1-4]
android.software.midiözelliği için destek raporlanmalıdır. - [C-1-5] Hem OpenSL ES PCM arabellek sırası hem de AAudio yerel ses API'leri kullanılarak gecikme ve USB ses gereksinimleri karşılanmalıdır.
- [SR] Ses etkin durumdayken ve CPU yükü değişirken tutarlı bir CPU performansı seviyesi sağlamak için ŞİDDETLE TAVSİYE EDİLİR. Bu, SimpleSynth commit 1bd6391 kullanılarak test edilmelidir. SimpleSynth uygulaması aşağıdaki parametrelerle çalıştırılmalı ve 10 dakika sonra sıfır eksiklik elde etmelidir:
- Çalışma döngüleri: 200.000
- Değişken yük: AÇIK (Bu ayar, 2 saniyede bir iş döngüsü değerinin% 100'ü ile% 10'u arasında geçiş yapar ve CPU yöneticisi davranışını test etmek için tasarlanmıştır)
- Sabitlenmiş yükleme: KAPALI
- Ses saatiyle ilgili yanlışlıkları ve standart saate göre sapmaları EN AZA İNDİRMELİDİR.
- Her ikisi de etkin olduğunda, CPU'ya
CLOCK_MONOTONICkıyasla ses saati kaymasını en aza İNDİRMELİDİR. - Cihaz üzerindeki dönüştürücülerde ses gecikmesini EN AZA İNDİRMELİDİR.
- USB dijital ses üzerinden ses gecikmesini EN AZA İNDİRMELİDİR.
- Tüm yollardaki ses gecikmesi ölçümleri belgelenmelidir.
- Geri çağırma işlemi tarafından tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediği için ses arabelleği tamamlama geri çağırma giriş sürelerindeki titreşim EN AZA İNDİRİLMELİDİR.
- Bildirilen gecikme süresinde normal kullanımda sıfır ses yetersizliği (çıkış) veya aşımı (giriş) sağlamalıdır.
- Kanallar arası gecikme farkı sıfır olmalıdır.
- Tüm aktarımlarda MIDI ortalama gecikmesi en aza indirilmelidir.
- Tüm aktarımlarda yük altındaki MIDI gecikme süresi değişkenliğini (titreme) en aza İNDİRMELİDİR.
- Tüm aktarımlarda doğru MIDI zaman damgaları SAĞLANMALIDIR.
- Soğuk baştan başlatmadan hemen sonraki dönem de dahil olmak üzere, cihaz üzerindeki dönüştürücülerde ses sinyali gürültüsünü EN AZA İNDİRMELİDİR.
- Her ikisi de etkin olduğunda, karşılık gelen uç noktaların giriş ve çıkış tarafları arasında sıfır ses saati farkı SAĞLANMALIDIR. Karşılık gelen uç noktalara örnek olarak cihaz üzerindeki mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.
- Her ikisi de etkin olduğunda aynı iş parçacığındaki karşılık gelen uç noktaların giriş ve çıkış tarafları için ses arabelleği tamamlama geri çağırmalarını İŞLEMELİ ve giriş geri çağırmasından döndükten hemen sonra çıkış geri çağırmasına girmelidir. Geri aramaları aynı iş parçacığında işlemek mümkün değilse uygulamanın giriş ve çıkış taraflarının tutarlı bir zamanlamaya sahip olmasına izin vermek için giriş geri aramasından kısa bir süre sonra çıkış geri aramasını girin.
- Giriş ve çıkış tarafları için HAL ses arabelleğe alma arasındaki faz farkı en aza İNDİRİLMELİDİR.
- Dokunma gecikmesini en aza İNDİRMELİDİR.
- Yük altındaki dokunma gecikmesi değişkenliği (titreme) EN AZA İNDİRİLMELİDİR.
- Dokunma girişinden ses çıkışına kadar olan gecikme süresi 40 ms veya daha az OLMALIDIR.
Cihaz uygulamaları yukarıdaki tüm koşulları karşılıyorsa:
- [SR]
android.hardware.audio.proözelliğinin desteğiniandroid.content.pm.PackageManagersı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) özellikleri 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ında 4 iletkenli 3, 5 mm ses jakı atlanıyor ve USB ana makine modunu destekleyen USB bağlantı noktaları bulunuyorsa:
- [C-3-1] USB ses sınıfı uygulanmalıdır.
- [C-3-2] USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktası üzerinden 20 milisaniye veya daha az sürekli gidiş dönüş ses gecikmesine SAHİP OLMALIDIR.
- USB ses sınıfı kullanılarak USB ana makine modu bağlantı noktası üzerinden sürekli gidiş dönüş ses gecikmesi 10 milisaniye veya daha az OLMALIDIR.
Cihaz uygulamaları HDMI bağlantı noktası içeriyorsa:
- [C-4-1] En az bir yapılandırmada, bit derinliği kaybı veya yeniden örnekleme olmadan 20 bit ya da 24 bit derinlikte ve 192 kHz'de stereo ve sekiz kanallı çıkışı desteklemelidir.
5.11. İşlenmemiş için yakalama
Android, android.media.MediaRecorder.AudioSource.UNPROCESSED ses kaynağı aracılığıyla işlenmemiş ses kaydını destekler. OpenSL ES'de, kayıt ön ayarıyla SL_ANDROID_RECORDING_PRESET_UNPROCESSED erişilebilir.
Cihaz uygulamaları, işlenmemiş ses kaynağını desteklemeyi ve üçüncü taraf uygulamalarına sunmayı amaçlıyorsa:
-
[C-1-1]
android.media.AudioManagerözelliği PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED aracılığıyla destek bildirilmelidir. -
[C-1-2] Orta frekans aralığında yaklaşık olarak düz genlik-frekans özellikleri GÖSTERMELİDİR: Özellikle işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofon için 100 Hz ile 7.000 Hz arasında ±10 dB.
-
[C-1-3] Düşük frekans aralığında genlik seviyeleri GÖSTERMELİDİR: Özellikle işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun orta frekans aralığına kıyasla 5 Hz ile 100 Hz arasında ±20 dB.
-
[C-1-4] Yüksek frekans aralığında genlik seviyeleri GÖSTERMELİDİR: Özellikle, işlenmemiş ses kaynağını kaydetmek için kullanılan her bir mikrofonun orta frekans aralığına kıyasla 7.000 Hz ile 22 kHz arasında ±30 dB.
-
[C-1-5] Ses girişi hassasiyeti, 94 dB ses basıncı seviyesinde (SPL) çalınan 1.000 Hz sinüs tonu kaynağının, işlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofon için 16 bit örneklerde 520 RMS'li (veya kayan nokta/çift duyarlıklı örneklerde -36 dB tam ölçekli) bir yanıt verecek şekilde AYARLANMALIDIR.
-
[C-1-6] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonun 60 dB veya daha yüksek bir sinyal-gürültü oranına (SNR) sahip olması ZORUNLUDUR. (SNR, 94 dB SPL ile öz gürültünün eşdeğer SPL'si arasındaki fark olarak ölçülür, A ağırlıklı).
-
[C-1-7] İşlenmemiş ses kaynağını kaydetmek için kullanılan her mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için toplam harmonik bozulma (THD) %1'den az OLMALIDIR.
-
Seviyeyi istenen aralığa getirmek için kullanılan seviye çarpanı dışında, yolda başka sinyal işleme (ör. otomatik kazanç kontrolü, yüksek geçiren filtre veya yankı iptali) olmamalıdır. Başka bir deyişle:
- [C-1-8] Mimaride herhangi bir nedenle sinyal işleme varsa bu işleme DEVRE DIŞI BIRAKILMALI ve sinyal yolunda etkili bir şekilde sıfır gecikme veya ek gecikme oluşturulmalıdır.
- [C-1-9] Seviye çarpanının yolda olmasına izin verilir ancak sinyal yolunda gecikmeye veya gecikme süresine neden OLMAMALIDIR.
Tüm SPL ölçümleri, doğrudan test edilen mikrofonun yanında yapılır. Birden fazla mikrofon yapılandırması için bu koşullar her mikrofon için geçerlidir.
Cihaz uygulamaları android.hardware.microphone beyan ediyorsa ancak işlenmemiş ses kaynağını desteklemiyorsa:
- [C-2-1] Destek eksikliğini düzgün bir şekilde belirtmek için
AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED)API yöntemi içinnulldöndürmELİDİR. - [SR], işlenmemiş kayıt kaynağının sinyal yoluyla ilgili mümkün olduğunca çok sayıda koşulu karşılamak için HÂLÂ ŞİDDETLE TAVSİYE EDİLİR.
6. Geliştirici Araçları ve Seçeneklerinin Uyumluluğu
6.1. Geliştirici Araçları
Cihaz uygulamaları:
- [C-0-1] Android SDK'da sağlanan Android Geliştirici Araçları DESTEKLENMELİDİR.
-
- [C-0-2] Android SDK'da ve AOSP'de sağlanan kabuk komutlarında belgelendiği şekilde adb'yi desteklemelidir. Bu komutlar,
dumpsysvecmd statsdahil olmak üzere uygulama geliştiriciler tarafından kullanılabilir. - [C-0-3] MUST NOT alter the format or the contents of device system events (batterystats , diskstats, fingerprint, graphicsstats, netstats, notification, procstats) logged via the dumpsys command.
- [C-0-10] Aşağıdaki etkinlikleri eksiksiz olarak kaydetmeli ve
cmd statskabuk komutuna veStatsManagerSystem API sınıfına erişilebilir ve kullanılabilir hale getirmelidir.- ActivityForegroundStateChanged
- AnormallikAlgılandı
- AppBreadcrumbReported
- AppCrashOccurred
- AppStartOccurred
- BatteryLevelChanged
- BatterySaverModeStateChanged
- BleScanResultReceived
- BleScanStateChanged
- ChargingStateChanged
- DeviceIdleModeStateChanged
- ForegroundServiceStateChanged
- GpsScanStateChanged
- JobStateChanged
- PluggedStateChanged
- ScheduledJobStateChanged
- ScreenStateChanged
- SyncStateChanged
- SystemElapsedRealtime
- UidProcessStateChanged
- WakelockStateChanged
- WakeupAlarmOccurred
- WifiLockStateChanged
- WifiMulticastLockStateChanged
- WifiScanStateChanged
- [C-0-4] Cihaz tarafındaki adb arka plan programı varsayılan olarak etkin olmamalı ve Android Debug Bridge'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma olmalıdır.
- [C-0-5] Güvenli adb'yi desteklemelidir. Android, güvenli adb desteği içerir. Güvenli adb, bilinen kimliği doğrulanmış ana makinelerde adb'yi etkinleştirir.
-
[C-0-6] adb'nin bir ana makineden bağlanmasına izin veren bir mekanizma SAĞLANMALIDIR. Örneğin:
- Çevre birimi modunu destekleyen bir USB bağlantı noktası olmayan cihaz uygulamaları, adb'yi yerel ağ (ör. Ethernet veya kablosuz) üzerinden uygulamalıdır.
- Geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows 7, 9 ve 10 sürücüleri SAĞLANMALIDIR.
- [C-0-2] Android SDK'da ve AOSP'de sağlanan kabuk komutlarında belgelendiği şekilde adb'yi desteklemelidir. Bu komutlar,
-
Dalvik Debug Monitor Service (ddms)
- [C-0-7] Android SDK'da belgelendiği şekilde tüm ddms özelliklerini desteklemelidir. ddms, adb'yi kullandığından ddms desteği varsayılan olarak devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Debug Bridge'i etkinleştirdiğinde desteklenmelidir.
-
Monkey
- [C-0-8] Monkey çerçevesini içermeli ve uygulamaların kullanabilmesi için kullanılabilir hale getirmelidir.
-
SysTrace
- [C-0-9] Android SDK'da belgelendiği şekilde systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak devre dışı olmalı ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma OLMALIDIR.
Cihaz uygulamaları, android.hardware.vulkan.version özellik işaretleri aracılığıyla Vulkan 1.0 veya sonraki sürümlerin desteklendiğini bildiriyorsa:
- [C-1-1] Uygulama geliştiricinin GPU hata ayıklama katmanlarını etkinleştirmesine/devre dışı bırakmasına olanak tanıyan bir özellik SAĞLANMALIDIR.
- [C-1-2] GPU hata ayıklama katmanları etkinleştirildiğinde, vkEnumerateInstanceLayerProperties() ve vkCreateInstance() API yöntemlerini desteklemek için hata ayıklanabilir uygulamaların temel dizininde bulunan, harici araçlar tarafından sağlanan (yani platformun veya uygulama paketinin parçası olmayan) kitaplıklardaki katmanları listelemelidir.
6.2. Geliştirici seçenekleri
Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmasına olanak tanır.
Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sağlamalıdır. Bu bağlamda:
- [C-0-1] Uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS amacına UYULMALIDIR. Yukarı akış Android uygulaması, Geliştirici Seçenekleri menüsünü varsayılan olarak gizler ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesine yedi (7) kez bastıktan sonra Geliştirici Seçenekleri'ni başlatmasına olanak tanır.
- [C-0-2] Geliştirici Seçenekleri varsayılan olarak GİZLENMELİDİR.
- [C-0-3] Geliştirici Seçenekleri'nin etkinleştirilmesi için bir üçüncü taraf uygulamasına diğerine göre ayrıcalıklı muamele yapmayan net bir mekanizma SAĞLANMALIDIR. Geliştirici Seçenekleri'nin nasıl etkinleştirileceğini açıklayan, herkese açık bir doküman veya web sitesi SAĞLANMALIDIR. Bu doküman veya web sitesi, Android SDK dokümanlarından bağlanabilir OLMALIDIR.
- Geliştirici Seçenekleri etkinleştirildiğinde ve kullanıcının güvenliği söz konusu olduğunda kullanıcıya sürekli görsel bildirim GÖSTERİLMELİDİR.
- Kullanıcının güvenliğinin söz konusu olduğu durumlarda dikkat dağıtılmasını önlemek için Geliştirici Seçenekleri menüsüne erişimi, menüyü görsel olarak gizleyerek veya devre dışı bırakarak GEÇİCİ OLARAK sınırlayabilir.
7. Donanım Uyumluluğu
Bir cihazda, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir donanım bileşeni varsa:
- [C-0-1] Cihaz uygulaması, bu API'yi Android SDK belgelerinde açıklandığı şekilde uygulamalıdır.
SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime giriyorsa ve cihaz uygulamasında bu bileşen yoksa:
- [C-0-2] Bileşen API'leri için sınıf tanımları (SDK tarafından belgelendiği şekilde) yine sunulmalıdır.
- [C-0-3] API'nin davranışları, makul bir şekilde hiçbir işlem yapmayacak şekilde uygulanmalıdır.
- [C-0-4] API yöntemleri, SDK belgelerinde izin verilen durumlarda boş değerler döndürmelidir.
- [C-0-5] API yöntemleri, SDK belgelerinde boş değerlere izin verilmeyen sınıfların no-op uygulamalarını döndürmelidir.
- [C-0-6] API yöntemleri, SDK belgelerinde açıklanmayan istisnalar oluşturmamalıdır.
- [C-0-7] Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki
getSystemAvailableFeatures()vehasSystemFeature(String)yöntemleriyle tutarlı bir şekilde doğru donanım yapılandırma bilgilerini bildirmelidir.
Bu koşulların geçerli olduğu senaryolara tipik bir örnek, telefon API'sidir: Bu API'ler, telefon olmayan cihazlarda bile makul bir şekilde işlem yapmadan uygulanmalıdır.
7.1. Ekran ve Grafikler
Android, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında iyi çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan özellikler içerir. Cihazlar, bu bölümde ayrıntılı olarak açıklandığı şekilde bu API'leri ve davranışları doğru şekilde uygulamalıdır.
Bu bölümdeki şartlarda referans verilen birimler aşağıdaki şekilde tanımlanır:
- fiziksel çapraz boyut. Ekranın aydınlatılmış kısmının iki zıt köşesi arasındaki mesafedir.
- İnç başına nokta sayısı (dpi). 1 inçlik doğrusal yatay veya dikey bir aralığın kapsadığı piksel sayısı. DPI değerleri listelendiğinde hem yatay hem de dikey DPI aralığın içinde olmalıdır.
- en-boy oranı. Ekranın uzun boyutunun piksellerinin kısa boyutunun piksellerine oranı. Örneğin, 480x854 piksel boyutundaki bir ekranın en-boy oranı 854/480 = 1, 779 veya yaklaşık olarak "16:9" olur.
- Yoğunluktan bağımsız piksel (dp). 160 DPI ekrana göre normalleştirilmiş sanal piksel birimi. Piksel sayısı = DP * (yoğunluk/160) olarak hesaplanır.
7.1.1. Ekran Yapılandırması
7.1.1.1. Ekran Boyutu ve Şekli
Android kullanıcı arayüzü çerçevesi, çeşitli farklı mantıksal ekran düzeni boyutlarını destekler ve uygulamaların Configuration.screenLayout ile SCREENLAYOUT_SIZE_MASK ve Configuration.smallestScreenWidthDp kullanarak mevcut yapılandırmanın ekran düzeni boyutunu sorgulamasına olanak tanır.
Cihaz uygulamaları:
-
[C-0-1] Android SDK dokümanlarında tanımlandığı şekilde
Configuration.screenLayoutiçin doğru düzen boyutunu bildirmelidir. Özellikle, cihaz uygulamaları aşağıdaki gibi doğru mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarını bildirmelidir:Configuration.uiModedeğeri UI_MODE_TYPE_WATCH dışında bir değer olarak ayarlanmış veConfiguration.screenLayoutiçinsmallboyutu bildiren cihazlar en az 426 dp x 320 dp olmalıdır.normalboyutu içinConfiguration.screenLayoutbildiren cihazlar en az 480 dp x 320 dp olmalıdır.largeboyutu bildiren cihazlardaConfiguration.screenLayouten az 640 dp x 480 dp olmalıdır.xlargeboyutu bildiren cihazlar,Configuration.screenLayoutiçin en az 960 dp x 720 dp olmalıdır.
-
[C-0-2] Android SDK belgelerinde açıklandığı gibi, AndroidManifest.xml dosyasındaki <
supports-screens> özelliği aracılığıyla uygulamaların ekran boyutları için belirttiği desteği doğru şekilde karşılamalıdır. -
Köşeleri yuvarlatılmış bir ekran OLABİLİR.
Cihaz uygulamaları UI_MODE_TYPE_NORMAL özelliğini destekliyorsa ve yuvarlak köşeli bir ekran içeriyorsa:
- [C-1-1] Yuvarlatılmış köşelerin yarıçapının en fazla 38 dp olmasını SAĞLAMALIDIR.
- Dikdörtgen köşeli ekran moduna geçiş için kullanıcıya olanak tanınmalıdır.
7.1.1.2. Ekran En-Boy Oranı
Fiziksel ekranın en-boy oranı değeriyle ilgili bir kısıtlama olmasa da üçüncü taraf uygulamalarının oluşturulduğu mantıksal ekranın en-boy oranı (view.Display API'leri ve Configuration API aracılığıyla bildirilen yükseklik ve genişlik değerlerinden elde edilebilir) aşağıdaki şartları KARŞILAMALIDIR:
-
[C-0-1]
Configuration.uiModedeğeriUI_MODE_TYPE_NORMALolarak 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_aspectmeta veri değeri aracılığıyla daha büyük bir ekran en-boy oranını desteklediğini belirtmiş. - Uygulama, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabilir olduğunu beyan eder.
- Uygulama, API düzeyi 24 veya sonraki sürümleri hedefliyor ve izin verilen en-boy oranını kısıtlayacak bir
android:MaxAspectRatiobeyan etmiyor.
- Uygulama,
-
[C-0-2]
Configuration.uiModedeğeriUI_MODE_TYPE_WATCHolarak ayarlanmış cihaz uygulamalarında en boy oranı değeri 1,0 (1:1) olarak ayarlanmalıdır.
7.1.1.3. Ekran Yoğunluğu
Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar.
-
[C-0-1] Cihaz uygulamaları, varsayılan olarak DENSITY_DEVICE_STABLE API'si aracılığıyla yalnızca aşağıdaki mantıksal Android çerçeve yoğunluklarından birini bildirmelidir ve bu değer hiçbir zaman değişmemelidir. Ancak cihaz, ilk başlatmadan sonra ayarlanan, kullanıcı tarafından yapılan ekran yapılandırma değişikliklerine (ör. görüntü boyutu) göre farklı bir rastgele yoğunluk bildirebilir.
- 120 dpi (ldpi)
- 160 dpi (mdpi)
- 213 dpi (tvdpi)
- 240 dpi (hdpi)
- 260 dpi (260dpi)
- 280 dpi (280dpi)
- 300 dpi (300dpi)
- 320 dpi (xhdpi)
- 340 dpi (340dpi)
- 360 dpi (360dpi)
- 400 dpi (400dpi)
- 420 dpi (420dpi)
- 480 dpi (xxhdpi)
- 560 dpi (560dpi)
- 640 dpi (xxxhdpi)
-
Cihaz uygulamaları, bildirilen ekran boyutu desteklenen minimum boyutun altına düşmediği sürece, ekranın fiziksel yoğunluğuna sayısal olarak en yakın olan standart Android çerçeve yoğunluğunu tanımlamalıdır. Fiziksel yoğunluğa sayısal olarak en yakın olan standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuyla sonuçlanıyorsa cihaz uygulamaları, bir sonraki en düşük standart Android çerçeve yoğunluğunu bildirmelidir.
Cihazın görüntü boyutunu değiştirme imkanı varsa:
- [C-1-1] Ekran boyutu, yerel yoğunluğun 1,5 katından daha fazla ölçeklendirilmemeli veya önce hangisi gerçekleşirse gerçekleşsin 320 dp'den (kaynak niteleyicisi sw320dp'ye eşdeğer) daha küçük bir etkili minimum ekran boyutu oluşturmamalıdır.
- [C-1-2] Görüntü boyutu, doğal yoğunluğun 0,85 katından daha küçük bir ölçekte OLMAMALIDIR.
- İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için (yukarıda belirtilen sınırlara uyarak) Yerel Görüntüleme seçeneklerinin aşağıdaki şekilde ölçeklendirilmesi ÖNERİLİR.
- Küçük: 0,85x
- Varsayılan: 1x (Doğal ekran ölçeği)
- Büyük: 1,15 kat
- Daha büyük: 1,3 kat
- En büyük 1,45x
7.1.2. Görüntüleme Metrikleri
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1]
android.util.DisplayMetricsAPI'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.Displayiçinandroid.util.DisplayMetricsAPI'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.portraitve/veyaandroid.hardware.screen.landscape) BİLDİRMELİ ve en az bir desteklenen yönü BİLDİRMELİDİR. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönlü yatay ekranı olan bir cihaz YALNIZCAandroid.hardware.screen.landscapedeğerini bildirmelidir. - [C-0-2]
android.content.res.Configuration.orientation,android.view.Display.getOrientation()veya diğer API'ler aracılığıyla sorgulandığında cihazın mevcut yönü için doğru değeri bildirmelidir.
Cihaz uygulamaları her iki ekran yönünü de destekliyorsa:
- [C-1-1] Uygulamalar tarafından dikey veya yatay ekran yönüne dinamik yönlendirmeyi DESTEKLEMELİDİR. Yani cihaz, uygulamanın belirli bir ekran yönü isteğine uymalıdır.
- [C-1-2] Yön değiştirirken bildirilen ekran boyutu veya yoğunluğu DEĞİŞTİRİLMEMELİDİR.
- Varsayılan olarak dikey veya yatay yönü SEÇEBİLİR.
7.1.4. 2D ve 3D Grafik Hızlandırma
7.1.4.1 OpenGL ES
Cihaz uygulamaları:
- [C-0-1] Desteklenen OpenGL ES sürümleri (1.1, 2.0, 3.0, 3.1, 3.2), yönetilen API'ler (ör.
GLES10.getString()yöntemi aracılığıyla) ve yerel API'ler aracılığıyla doğru şekilde tanımlanmalıdır. - [C-0-2] Desteklediği belirlenen her OpenGL ES sürümü için ilgili tüm yönetilen API'lerin ve yerel API'lerin desteğini İÇERMELİDİR.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- [C-1-1] Android SDK belgelerinde belirtildiği ve ayrıntılı olarak açıklandığı gibi hem OpenGL ES 1.1 hem de 2.0'ı DESTEKLEMELİDİR.
- [SR] cihazların OpenGL ES 3.1'i desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- OpenGL ES 3.2'yi DESTEKLEMELİDİR.
Cihaz uygulamaları OpenGL ES sürümlerinden birini destekliyorsa:
- [C-2-1] Uyguladıkları diğer OpenGL ES uzantılarını OpenGL ES yönetilen API'leri ve yerel API'ler aracılığıyla bildirmeli ve desteklemedikleri uzantı dizelerini bildirmemelidir.
- [C-2-2]
EGL_KHR_image,EGL_KHR_image_base,EGL_ANDROID_image_native_buffer,EGL_ANDROID_get_native_client_buffer,EGL_KHR_wait_sync,EGL_KHR_get_all_proc_addresses,EGL_ANDROID_presentation_time,EGL_KHR_swap_buffers_with_damageveEGL_ANDROID_recordableuzantılarını DESTEKLEMELİDİR. - [SR], EGL_KHR_partial_update'i desteklemek için ŞİDDETLE TAVSİYE EDİLİR.
- Genellikle satıcıya özel olan ve destekledikleri tüm doku sıkıştırma biçimlerini
getString()yöntemiyle doğru şekilde bildirmelidir.
Cihaz uygulamaları OpenGL ES 3.0, 3.1 veya 3.2'yi desteklediğini beyan ediyorsa:
- [C-3-1] libGLESv2.so kitaplığındaki OpenGL ES 2.0 işlev sembollerine ek olarak bu sürümler için ilgili işlev sembollerini DIŞA AKTARMALIDIR.
Cihaz uygulamaları OpenGL ES 3.2'yi destekliyorsa:
- [C-4-1] OpenGL ES Android Extension Pack'in tamamını DESTEKLEMELİDİR.
Cihaz uygulamaları, OpenGL ES Android Extension Pack'i tamamen destekliyorsa:
- [C-5-1]
android.hardware.opengles.aepözellik bayrağıyla desteği TANIMLAMALIDIR.
Cihaz uygulamaları EGL_KHR_mutable_render_buffer uzantısı için destek sunuyorsa:
- [C-6-1]
EGL_ANDROID_front_buffer_auto_refreshuzantısını da desteklemelidir.
7.1.4.2 Vulkan
Android , yüksek performanslı 3D grafikler için düşük ek yüke sahip, platformlar arası bir API olan Vulkan'ı destekler.
Cihaz uygulamaları OpenGL ES 3.1'i destekliyorsa:
- [SR] Vulkan 1.1 desteği içermesi ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları ekran veya video çıkışı içeriyorsa:
- Vulkan 1.1 desteği İÇERMELİDİR.
Cihaz uygulamaları Vulkan 1.0 desteği içeriyorsa:
- [C-1-1]
android.hardware.vulkan.levelveandroid.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 birVkPhysicalDevicenumaralandırılmalıdır . - [C-1-3] Listelenen her
VkPhysicalDeviceiçin Vulkan 1.0 API'leri eksiksiz bir şekilde uygulanmalıdır. - [C-1-4] Uygulama paketinin yerel kitaplık dizininde
libVkLayer*.soolarak adlandırılan yerel kitaplıklarda bulunan katmanlar, Vulkan yerel API'lerivkEnumerateInstanceLayerProperties()vevkEnumerateDeviceLayerProperties()aracılığıyla numaralandırılmalıdır . - [C-1-5] Uygulamada
android:debuggableözelliğitrueolarak ayarlanmadığı sürece, uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanlar numaralandırılmamalı veya Vulkan API'yi izlemenin ya da yakalamanın başka yolları sunulmamalıdır. - [C-1-6] Destekledikleri tüm uzantı dizelerini Vulkan yerel API'leri aracılığıyla bildirmeli ve buna karşılık doğru şekilde desteklemedikleri uzantı dizelerini bildirmemelidir.
- [C-1-7] MUST support the VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, and VK_KHR_incremental_present extensions.
Cihaz uygulamaları Vulkan 1.0 desteği içermiyorsa:
- [C-2-1] Vulkan özellik işaretlerinden (ör.
android.hardware.vulkan.level,android.hardware.vulkan.version) herhangi birini BEYAN ETMEMELİDİR. - [C-2-2]
VkPhysicalDeviceVulkan yerel API'si içinvkEnumeratePhysicalDevices()herhangi bir öğe numaralandırılMAMALIDIR.
Cihaz uygulamaları Vulkan 1.1 desteği içeriyorsa:
- [C-3-1]
SYNC_FDharici semafor ve işleyici türleri için destek sunULMALIDIR. - [SR]
VK_ANDROID_external_memory_android_hardware_bufferuzantısını desteklemek için KESİNLİKLE ÖNERİLİR.
7.1.4.3 RenderScript
- [C-0-1] Cihaz uygulamaları, Android SDK belgelerinde ayrıntılı olarak açıklandığı gibi Android RenderScript'i desteklemelidir.
7.1.4.4 2D Graphics Acceleration
Android, uygulamaların android:hardwareAccelerated manifest etiketi veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini bildirmelerine olanak tanıyan bir mekanizma içerir.
Cihaz uygulamaları:
- [C-0-1] Varsayılan olarak donanım hızlandırma ETKİNLEŞTİRİLMELİDİR ve geliştirici android:hardwareAccelerated="false" değerini ayarlayarak veya doğrudan Android View API'leri üzerinden donanım hızlandırmayı devre dışı bırakarak talep ederse donanım hızlandırma DEVRE DIŞI BIRAKILMALIDIR.
- [C-0-2] Donanım hızlandırma ile ilgili Android SDK belgeleriyle tutarlı bir davranış sergilemelidir.
Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını doğrudan kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak entegre etmesine olanak tanıyan bir TextureView nesnesi içerir.
Cihaz uygulamaları:
- [C-0-3] TextureView API'yi desteklemeli ve yukarı akış Android uygulamasıyla tutarlı davranış sergilemelidir.
7.1.4.5 Geniş Gamutlu Ekranlar
Cihaz uygulamaları , Configuration.isScreenWideColorGamut() aracılığıyla geniş gamlı ekran desteği sunduğunu iddia ediyorsa:
- [C-1-1] Renk kalibrasyonu yapılmış bir ekrana SAHİP OLMALIDIR.
- [C-1-2] Gamı, CIE 1931 xyY alanında sRGB renk gamını tamamen kapsayan bir ekrana SAHİP OLMALIDIR.
- [C-1-3] CIE 1931 xyY alanında gamı, DCI-P3'ün en az% 90'ı kadar bir alana sahip bir ekrana SAHİP OLMALIDIR.
- [C-1-4] OpenGL ES 3.1 veya 3.2'yi DESTEKLEMELİ ve bunu düzgün şekilde bildirmelidir.
- [C-1-5]
EGL_KHR_no_config_context,EGL_EXT_pixel_format_float,EGL_KHR_gl_colorspace,EGL_EXT_gl_colorspace_scrgb,EGL_EXT_gl_colorspace_scrgb_linear,EGL_EXT_gl_colorspace_display_p3veEGL_KHR_gl_colorspace_display_p3uzantıları için destek reklamı VERİLMELİDİR. - [SR]
GL_EXT_sRGBdesteği için KESİNLİKLE ÖNERİLİR.
Aksine, cihaz uygulamaları geniş gamlı ekranları desteklemiyorsa:
- [C-2-1] Ekran renk gamı tanımlanmamış olsa da CIE 1931 xyY alanında sRGB'nin% 100'ünü veya daha fazlasını kapsamalıdır.
7.1.5. Eski Uygulama Uyumluluğu Modu
Android, ekran boyutu bağımsızlığından önceki eski Android sürümleri için geliştirilmemiş eski uygulamaların yararlanması amacıyla, çerçevenin "normal" ekran boyutuna eşdeğer (320 dp genişlik) bir modda çalıştığı bir "uyumluluk modu" belirtir.
7.1.6. Ekran Teknolojisi
Android platformu, uygulamaların ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. Bu belgede özellikle izin verilmediği sürece cihazlar, Android SDK tarafından tanımlanan bu API'lerin tümünü desteklemelidir.
Cihaz uygulamaları:
- [C-0-1] 16 bit renkli grafikler oluşturabilen ekranları DESTEKLEMELİDİR.
- 24 bit renkli grafikler görüntüleyebilen ekranları DESTEKLEMELİDİR.
- [C-0-2] Animasyon oluşturabilen ekranları DESTEKLEMELİDİR.
- [C-0-3] 0,9 ile 1,15 arasında piksel en boy oranına (PAR) sahip ekran teknolojisi KULLANILMALIDIR. Yani piksel en boy oranı, %10-15 toleransla kareye (1,0) yakın OLMALIDIR.
7.1.7. İkincil Ekranlar
Android, medya paylaşım özelliklerini etkinleştirmek için ikincil ekran desteği ve harici ekranlara erişmek için geliştirici API'leri içerir.
Cihaz uygulamaları, kablolu, kablosuz veya yerleşik ek ekran bağlantısı aracılığıyla harici ekranı destekliyorsa:
- [C-1-1] Android SDK belgelerinde açıklandığı şekilde
DisplayManagersistem 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 dokunmadan 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ğını BEYAN ETMELİDİR. - [C-1-2]
Input Management Frameworktamamen 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 temel öneme sahiptir ve bu nedenle cihaz uygulamaları:
- [C-0-1] Televizyon cihaz uygulamaları için
<intent-filter>,ACTION=MAINveCATEGORY=LAUNCHERveyaCATEGORY=LEANBACK_LAUNCHERile ayarlanmış bir etkinliğe sahip yüklü uygulamaları başlatmak için kullanıcıya bir olanak SAĞLANMALIDIR. Bu kullanıcı kolaylığı için Ana Sayfa işlevi mekanizma OLMALIDIR. - Son Kullanılanlar ve Geri işlevleri için düğmeler SAĞLANMALIDIR.
Ana Sayfa, Son Öğeler veya Geri işlevleri sağlanıyorsa bunlar:
- [C-1-1] Herhangi biri erişilebilir olduğunda tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilir OLMALIDIR.
- [C-1-2] Hangi tek işlemin her bir işlevi tetikleyeceği net bir şekilde belirtilmelidir. Düğmeye basılmış görünür bir simge, ekranın gezinme çubuğu bölümünde bir yazılım simgesi gösterme veya kutudan çıkarma kurulum deneyimi sırasında kullanıcıya adım adım rehberli bir demo akışı sunma gibi yöntemler bu tür bir göstergeye örnek olarak verilebilir.
Cihaz uygulamaları:
- [SR], Android 4.0'dan beri işlem çubuğu lehine desteği sonlandırıldığından Menü işlevi için giriş mekanizması sağlamAMALIDIR.
Cihaz uygulamaları Menü işlevini sağlıyorsa:
- [C-2-1] İşlem taşması menüsü pop-up'ı boş olmadığında ve işlem çubuğu görünür olduğunda işlem taşması düğmesi GÖSTERİLMELİDİR.
- [C-2-2] İşlem çubuğundaki taşma düğmesi seçilerek gösterilen işlem taşması pop-up'ının konumu DEĞİŞTİRİLMEMELİDİR ancak Menü işlevi seçilerek gösterildiğinde işlem taşması pop-up'ı ekranda değiştirilmiş bir konumda oluşturulabilir.
Cihaz uygulamaları Menü işlevini sağlamıyorsa geriye dönük uyumluluk için: * [C-3-1] targetSdkVersion değeri 10'dan küçük olduğunda Menü işlevini fiziksel bir düğme, yazılım tuşu veya hareketler aracılığıyla uygulamalara SUNMALIDIR. Bu menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmediği sürece erişilebilir olmalıdır.
Cihaz uygulamaları Yardımcı işlevini sağlıyorsa: * [C-4-1] Diğer gezinme tuşlarına erişilebildiğinde Yardımcı işlevine tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir. * [SR] Bu etkileşim için ANA SAYFA işlevinde uzun basma kullanılması KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları, gezinme tuşlarını göstermek için ekranın ayrı bir bölümünü kullanıyorsa:
- [C-5-1] Gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANMALI ve uygulamalar tarafından kullanılabilen ekran bölümünü kapatMAMALI veya başka bir şekilde engellememelidir.
- [C-5-2] Ekranın bir bölümünü, bölüm 7.1.1'de tanımlanan koşulları karşılayacak şekilde uygulamaların kullanımına sunMALIDIR.
- [C-5-3] Ekranın bu ayrı bölümünün (diğer adıyla gezinme çubuğu) SDK'da belgelendiği şekilde düzgün bir şekilde gizlenmesi için uygulamanın
View.setSystemUiVisibility()API yöntemiyle ayarladığı işaretlere UYULMALIDIR.
7.2.4. Dokunmatik ekran girişi
Android; dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunmatik giriş cihazları gibi çeşitli işaretçi giriş sistemleri için destek içerir. Dokunmatik ekran tabanlı cihaz uygulamaları, kullanıcıya ekrandaki öğeleri doğrudan kontrol ediyormuş izlenimi verecek şekilde bir ekranla ilişkilendirilir. Kullanıcı ekrana doğrudan dokunduğu için sistem, üzerinde işlem yapılan nesneleri belirtmek için ek bir çaba gerektirmez.
Cihaz uygulamaları:
- Bir tür işaretçi giriş sistemine (fare benzeri veya dokunmatik) SAHİP OLMALIDIR.
- Tamamen bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.
Cihaz uygulamalarında dokunmatik ekran (tek dokunuş veya daha iyi) varsa:
- [C-1-1]
Configuration.touchscreenAPI alanı içinTOUCHSCREEN_FINGERraporlanmalıdır. - [C-1-2]
android.hardware.touchscreenveandroid.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.jazzhandbildirmelidir.
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.touchscreenile başlayan hiçbir özellik bayrağı raporlanMAMALI ve yalnızcaandroid.hardware.faketouchraporlanMALIDIR.
7.2.5. Sahte Dokunmatik Giriş
Sahte dokunma arayüzü, dokunmatik ekran özelliklerinin bir alt kümesini taklit eden bir kullanıcı girişi sistemi sağlar. Örneğin, ekrandaki imleci hareket ettiren bir fare veya uzaktan kumanda, dokunma etkisini taklit eder ancak kullanıcının önce işaret etmesini ya da odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresini, jiroskop işaretçisi, oyun çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı sahte dokunma etkileşimlerini destekleyebilir. Android, dokunmaya dayalı girişi (temel hareket desteği dahil) yeterli düzeyde taklit edebilen ve cihazın dokunmatik ekran işlevselliğinin taklit edilmiş bir alt kümesini desteklediğini belirten, fare veya dokunmatik yüzey gibi son ürünün tasarıma uygunluğunun yüksek olması dokunmaya dayalı olmayan (işaretçi tabanlı) bir giriş cihazına karşılık gelen android.hardware.faketouch özelliğini içerir.
Cihaz uygulamaları dokunmatik ekran içermiyorsa ancak kullanılabilir hale getirmek istedikleri başka bir işaretçi giriş sistemi içeriyorsa:
android.hardware.faketouchözellik işaretinin desteklendiğini BEYAN ETMELİDİR.
Cihaz uygulamaları android.hardware.faketouch desteğini beyan ediyorsa:
- [C-1-1] İşaretçi konumunun mutlak X ve Y ekran konumları RAPORLANMALI ve ekranda görsel bir işaretçi gösterilmelidir.
- [C-1-2] Ekranda aşağı veya yukarı hareket eden işaretçide meydana gelen durum değişikliğini belirten işlem koduyla dokunma etkinliği RAPORLANMALIDIR.
- [C-1-3] Ekranda bir nesneye dokunma ve nesneyi bırakma hareketini desteklemelidir. Bu sayede kullanıcılar, ekrandaki bir nesneye dokunma hareketini taklit edebilir.
- [C-1-4] Kullanıcıların ekrandaki bir nesneye çift dokunmayı taklit etmesine olanak tanıyan bir süre eşiği içinde, ekrandaki bir nesnenin aynı yerinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketlerini desteklemelidir.
- [C-1-5] Kullanıcıların dokunarak sürükleme hareketini taklit etmesine olanak tanıyan, ekrandaki rastgele bir noktada işaretçi aşağı, ekrandaki başka bir rastgele noktaya işaretçi hareket ettirme ve ardından işaretçi yukarı hareketlerini desteklemelidir.
- [C-1-6] İşaretçi aşağı hareketini desteklemeli, ardından kullanıcıların nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ekranda işaretçi yukarı hareketini yapmasına izin vermelidir. Bu sayede kullanıcılar ekrandaki nesneyi fırlatabilir.
- [C-1-7]
Configuration.touchscreenAPI alanı içinTOUCHSCREEN_NOTOUCHraporlanmalıdır.
Cihaz uygulamaları android.hardware.faketouch.multitouch.distinct desteğini beyan ediyorsa:
- [C-2-1]
android.hardware.faketouchdesteğ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.faketouchdesteği BEYAN EDİLMELİDİR. - [C-3-2] 5 (parmakla yapılan el hareketlerinin takibi) veya daha fazla işaretçi girişinin tamamen bağımsız olarak ayrı ayrı takibini DESTEKLEMELİDİR.
7.2.6. Oyun Kumandası Desteği
7.2.6.1. Düğme Eşlemeleri
Cihaz uygulamaları android.hardware.gamepad özellik işaretini beyan ediyorsa:
- [C-1-1] Aşağıdaki tablolarda listelenen tüm etkinliklerin girilmesini sağlayacak bir kontrol cihazı yerleştirilmeli veya kutuda ayrı bir kontrol cihazıyla birlikte gönderilmelidir.
- [C-1-2] Aşağıdaki tablolarda listelendiği gibi, HID etkinliklerini ilişkili Android
view.InputEventsabitlerine eşleyebilmelidir. Yukarı akış Android uygulaması, bu şartı karşılayan oyun kumandaları için uygulama içerir.
| Düğme | HID Kullanımı2 | Android Düğmesi |
|---|---|---|
| A1 | 0x09 0x0001 | KEYCODE_BUTTON_A (96) |
| B1 | 0x09 0x0002 | KEYCODE_BUTTON_B (97) |
| X1 | 0x09 0x0004 | KEYCODE_BUTTON_X (99) |
| Y1 | 0x09 0x0005 | KEYCODE_BUTTON_Y (100) |
|
D-pad yukarı1 D-pad aşağı1 |
0x01 0x00393 | AXIS_HAT_Y4 |
|
D-pad sol1 D-pad sağ1 |
0x01 0x00393 | AXIS_HAT_X4 |
| Sol omuz düğmesi1 | 0x09 0x0007 | KEYCODE_BUTTON_L1 (102) |
| Sağ omuz düğmesi1 | 0x09 0x0008 | KEYCODE_BUTTON_R1 (103) |
| Sol çubuk tıklaması1 | 0x09 0x000E | KEYCODE_BUTTON_THUMBL (106) |
| Sağ çubuk tıklaması1 | 0x09 0x000F | KEYCODE_BUTTON_THUMBR (107) |
| Ana Sayfa1 | 0x0c 0x0223 | KEYCODE_HOME (3) |
| Geri1 | 0x0c 0x0224 | KEYCODE_BACK (4) |
1 KeyEvent
2 Yukarıdaki HID kullanımları bir oyun kumandası CA'sında (0x01 0x0005) beyan edilmelidir.
3 Bu kullanımın mantıksal minimum değeri 0, mantıksal maksimum değeri 7, fiziksel minimum değeri 0, fiziksel maksimum değeri 315, birimi derece ve rapor boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde dönüş olarak tanımlanır. Örneğin, 0 mantıksal değeri dönüş olmadığını ve yukarı düğmesine basıldığını, 1 mantıksal değeri ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını gösterir.
| Analog Kontroller1 | HID Kullanımı | Android Düğmesi |
|---|---|---|
| Sol tetikleyici | 0x02 0x00C5 | AXIS_LTRIGGER |
| Doğru Tetikleyici | 0x02 0x00C4 | AXIS_RTRIGGER |
| Sol kontrol çubuğu |
0x01 0x0030 0x01 0x0031 |
AXIS_X AXIS_Y |
| Sağ kontrol çubuğu |
0x01 0x0032 0x01 0x0035 |
AXIS_Z AXIS_RZ |
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.PackageManagersı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
trueveyafalsedöndürerek, ilgili sensörler mevcut olmadığında sensör dinleyicilerini çağırmayarak vb.).
Cihaz uygulamaları, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türü içeriyorsa:
- [C-1-1] Android SDK belgelerinde tanımlandığı şekilde, her sensör türü için ilgili Uluslararası Birimler Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini bildirmelidir.
- [C-1-2] Uygulama işlemcisi etkin olduğunda, minimum 5 ms + 2 * sample_time gecikme süresiyle yayınlanan bir sensör için sensör verileri, maksimum 100 milisaniye + 2 * sample_time gecikme süresiyle BİLDİRİLMELİDİR. Bu gecikmeye filtreleme gecikmeleri dahil değildir.
- [C-1-3] Etkinleştirilen sensörün ilk sensör örneği, 400 milisaniye + 2 * sample_time içinde RAPORLANMALIDIR. Bu örnekte doğruluk değerinin 0 olması kabul edilebilir.
-
[SR] Etkinliğin gerçekleştiği ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edildiği zamanı temsil eden, Android SDK belgelerinde tanımlandığı şekilde etkinlik zamanını nanosaniye cinsinden bildirmelidir. Mevcut ve yeni Android cihazların, gelecekte bu bileşenin ZORUNLU olabileceği platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR. Senkronizasyon hatası 100 milisaniyenin altında OLMALIDIR.
-
[C-1-4] Android SDK belgelerinde sürekli sensör olduğu belirtilen tüm API'ler için cihaz uygulamaları, aralıklı veri örneklerini sürekli olarak sağlamalıdır. Bu örneklerde, jitter'ın %3'ün altında olması GEREKİR. Jitter, bildirilen zaman damgası değerlerinin ardışık etkinlikler arasındaki farkının standart sapması olarak tanımlanır.
-
[C-1-5] SENSÖR ETKİNLİK AKIŞININ, CİHAZ CPU'SUNUN ASKIYA ALMA DURUMUNA GİRMESİNİ VEYA ASKIYA ALMA DURUMUNDAN UYANMASINI ENGELLEMEMESİ GEREKİR.
- Birden fazla sensör etkinleştirildiğinde güç tüketimi, tek tek sensörlerin bildirilen güç tüketiminin toplamını AŞMAMALIDIR.
Yukarıdaki liste kapsamlı değildir. Android SDK'nın belgelenmiş davranışı ve sensörler ile ilgili Android Açık Kaynak Belgeleri yetkili olarak kabul edilir.
Bazı sensör türleri bileşiktir. Bu türler, bir veya daha fazla sensör tarafından sağlanan verilerden elde edilebilir. (Örneğin, yön sensörü ve doğrusal ivme sensörü.)
Cihaz uygulamaları:
- Sensör türleri bölümünde açıklandığı gibi ön koşul olan fiziksel sensörleri içerdiğinde bu sensör türlerini uygulamalıdır.
Cihaz uygulamaları birleşik sensör içeriyorsa:
- [C-2-1] Sensörü, bileşik sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulamalıdır.
7.3.1. İvme ölçer
- Cihaz uygulamaları 3 eksenli ivme ölçer İÇERMELİDİR.
Cihaz uygulamaları 3 eksenli ivme ölçer içeriyorsa:
- [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
- [C-1-2]
TYPE_ACCELEROMETERsensörünü uygulamalı ve raporlamalıdır. - [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.
- [C-1-4] Herhangi bir eksende serbest düşüşten yerçekiminin dört katına(4g) veya daha fazlasına kadar ölçüm yapabilmelidir.
- [C-1-5] En az 12 bit çözünürlüğe sahip OLMALIDIR.
- [C-1-6] Standart sapma en fazla 0,05 m/sn^ olmalıdır.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına hesaplanmalıdır.
- [SR]
TYPE_SIGNIFICANT_MOTIONbileşik sensörünün uygulanması KESİNLİKLE ÖNERİLİR. - [SR], çevrimiçi ivmeölçer kalibrasyonu varsa
TYPE_ACCELEROMETER_UNCALIBRATEDsensörünü uygulaması KESİNLİKLE ÖNERİLİR. - Android SDK dokümanında açıklandığı gibi
TYPE_SIGNIFICANT_MOTION,TYPE_TILT_DETECTOR,TYPE_STEP_DETECTOR,TYPE_STEP_COUNTERbileşik sensörleri uygulamalıdır. - En az 200 Hz'ye kadar olan etkinlikleri RAPORLAMALIDIR.
- En az 16 bit çözünürlüğe SAHİP OLMALIDIR.
- Özellikler yaşam döngüsü boyunca değişirse kullanılmaya devam ederken kalibre edilmeli ve telafi edilmeli, telafi parametreleri cihaz yeniden başlatıldığında korunmalıdır.
- Sıcaklık dengelemesi YAPILMALIDIR.
- Ayrıca
TYPE_ACCELEROMETER_UNCALIBRATEDsensörü de uygulamalıdır.
Cihaz uygulamalarında 3 eksenli bir ivmeölçer varsa ve TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER bileşik sensörlerinden herhangi biri uygulanıyorsa:
- [C-2-1] Güç tüketimlerinin toplamı HER ZAMAN 4 mW'tan az OLMALIDIR.
- Cihaz dinamik veya statik durumdayken her biri 2 mW ve 0,5 mW'ın altında OLMALIDIR.
Cihaz uygulamaları 3 eksenli ivme ölçer ve jiroskop sensörü içeriyorsa:
- [C-3-1]
TYPE_GRAVITYveTYPE_LINEAR_ACCELERATIONbirleşik sensörleri uygulamalıdır. TYPE_GAME_ROTATION_VECTORbileşik sensörünü uygulamalıdır.- [SR] Mevcut ve yeni Android cihazlarda
TYPE_GAME_ROTATION_VECTORsensö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_VECTORbileşik sensör uygulaması ZORUNLUDUR.
7.3.2. Manyetometre
- Cihaz uygulamaları 3 eksenli bir manyetometre (pusula) İÇERMELİDİR.
Cihaz uygulamaları 3 eksenli manyetometre içeriyorsa:
- [C-1-1]
TYPE_MAGNETIC_FIELDsensörü UYGULANMALIDIR. - [C-1-2] Etkinlikleri en az 10 Hz sıklıkta raporlayabilmeli ve en az 50 Hz sıklıkta raporlamalıdır.
- [C-1-3] Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemi ile uyumlu OLMALIDIR.
- [C-1-4] Doygunluğa ulaşmadan önce her eksende -900 µT ile +900 µT arasında ölçüm yapabilmelidir.
- [C-1-5] Manyetometre, dinamik (akım kaynaklı) ve statik (mıknatıs kaynaklı) manyetik alanlardan uzağa yerleştirilerek 700 µT'den düşük bir sert demir ofset değerine SAHİP OLMALI ve 200 µT'nin altında bir değere SAHİP OLMALIDIR.
- [C-1-6] 0,6 µT'ye eşit veya daha yoğun bir çözünürlüğe SAHİP OLMALIDIR.
- [C-1-7] Sert demir sapmasının çevrimiçi kalibrasyonunu ve telafisini DESTEKLEMELİ ve cihaz yeniden başlatıldığında telafi parametrelerini KORUMALIDIR.
- [C-1-8] Yumuşak demir telafisi uygulanmalıdır. Kalibrasyon, cihaz kullanılırken veya üretilirken yapılabilir.
- [C-1-9] En hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen bazında hesaplanan standart sapması en fazla 1, 5 µT OLMALIDIR; standart sapması en fazla 0, 5 µT OLMALIDIR.
TYPE_MAGNETIC_FIELD_UNCALIBRATEDsensörü UYGULAMALIDIR.- [SR] Mevcut ve yeni Android cihazlarda
TYPE_MAGNETIC_FIELD_UNCALIBRATEDsensö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_VECTORbileşik sensör uygulaması ZORUNLUDUR.
Cihaz uygulamaları 3 eksenli manyetometre ve ivme ölçer içeriyorsa:
TYPE_GEOMAGNETIC_ROTATION_VECTORsensörünü UYGULAYABİLİR.
Cihaz uygulamaları 3 eksenli manyetometre, ivme ölçer ve TYPE_GEOMAGNETIC_ROTATION_VECTOR sensörü içeriyorsa:
- [C-3-1] 10 mW'tan az güç tüketmelidir.
- Sensör, 10 Hz'de toplu mod için kaydedildiğinde 3 mW'tan daha az güç tüketmelidir.
7.3.3. GPS
Cihaz uygulamaları:
- GPS/GNSS alıcısı İÇERMELİDİR.
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa:
- [C-1-1]
LocationManager#requestLocationUpdateüzerinden istendiğinde konum çıkışlarını en az 1 Hz hızında destekLEMELİDİR. - [C-1-2] 0,5 Mb/sn veya daha hızlı bir veri hızıyla internet bağlantısı kurulduğunda, açık hava koşullarında (güçlü sinyaller, ihmal edilebilir çok yollu yayılım, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı süre) konum belirleyebilmelidir. Bu koşul genellikle GPS/GNSS kilitleme süresini en aza indirmek için bir tür Destekli veya Tahmini GPS/GNSS tekniği kullanılarak karşılanır (Yardım verileri; Referans Zamanı, Referans Konumu ve Uydu Efemerisi/Saati'ni içerir).
- [C-1-6] Bu tür bir konum hesaplaması yapıldıktan sonra, cihaz uygulamaları, ilk konum hesaplamasından sonraki bir saat içinde konum istekleri yeniden başlatıldığında, sonraki istek veri bağlantısı olmadan ve/veya güç döngüsünden sonra yapılsa bile açık havada konumunu 5 saniye içinde belirlemelidir.
-
Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 1 metrekareden daha az ivmeyle hareket ederken:
- [C-1-3] Konumu en az% 95 oranında 20 metre, hızı ise 0, 5 metre/saniye içinde belirleyebilmelidir.
- [C-1-4] Bir takımyıldızdan en az 8 uyduyu aynı anda
GnssStatus.Callbacküzerinden izlemeli ve raporlamalıdır. - Birden fazla takımyıldızdan (ör. GPS + en az bir Glonass, Beidou, Galileo) en az 24 uyduyu aynı anda takip edebilmelidir.
- [C-1-5] "getGnssYearOfHardware" test API'si aracılığıyla GNSS teknolojisi neslini bildirmelidir.
- [SR] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışları sağlamaya devam edin.
- [SR] SBAS hariç olmak üzere, izlenen tüm takımyıldızlardan gelen GNSS ölçümlerini (GnssStatus mesajlarında bildirildiği gibi) raporlayın.
- [SR] AGC ve GNSS ölçüm sıklığını bildirin.
- [SR] Tüm doğruluk tahminlerini (Yön, Hız ve Dikey dahil) her GPS/GNSS konumunun bir parçası olarak bildirin.
- [SR], Test API aracılığıyla "2016" veya "2017" yılını bildiren cihazlar için ek zorunlu koşullardan mümkün olduğunca fazlasını karşılaması ŞİDDETLE TAVSİYE EDİLİR
LocationManager.getGnssYearOfHardware().
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa ve LocationManager.getGnssYearOfHardware() Test API'si "2016" veya daha yeni bir yılı bildiriyorsa:
- [C-2-1] GPS/GNSS'den hesaplanan bir konum henüz raporlanmamış olsa bile GNSS ölçümleri bulunur bulunmaz raporlanmalıdır.
- [C-2-2] Konum belirlendikten sonra açık hava koşullarında, sabit dururken veya saniyede 0,2 metrekarelik ivmeden daha az bir hızla hareket ederken konumun 20 metre, hızın ise saniyede 0,2 metre içinde hesaplanması için yeterli olan GNSS sahte aralıkları ve sahte aralık hızları, zamanın en az% 95'inde BİLDİRİLMELİDİR.
Cihaz uygulamaları GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa ve LocationManager.getGnssYearOfHardware() Test API'si "2017" veya daha yeni bir yılı bildiriyorsa:
- [C-3-1] Acil durum telefon araması sırasında normal GPS/GNSS konum çıkışları sağlamaya DEVAM ETMELİDİR.
- [C-3-2] SBAS hariç olmak üzere, izlenen tüm takımyıldızlardan gelen GNSS ölçümleri (GnssStatus mesajlarında bildirildiği gibi) RAPORLANMALIDIR.
- [C-3-3] AGC ve GNSS ölçüm sıklığı RAPORLANMALIDIR.
- [C-3-4] Her GPS/GNSS konumunun bir parçası olarak tüm doğruluk tahminleri (Yön, Hız ve Dikey dahil) BİLDİRİLMELİDİR.
Cihaz uygulamaları bir GPS/GNSS alıcısı içeriyorsa ve android.hardware.location.gps özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa ve LocationManager.getGnssYearOfHardware() Test API'si "2018" veya daha yeni bir yılı bildiriyorsa:
- [C-4-1] Mobil İstasyon Tabanlı (MS-Based) Ağ Tarafından Başlatılan acil durum oturumu görüşmesi sırasında uygulamalara normal GPS/GNSS çıkışları sağlamaya DEVAM ETMELİDİR.
- [C-4-2] Konumlar ve ölçümler, GNSS Konum Sağlayıcı API'lerine bildirilmelidir.
7.3.4. Jiroskop
Cihaz uygulamaları:
- Jiroskop (açısal değişim sensörü) İÇERMELİDİR.
- 3 eksenli ivme ölçer de dahil edilmediği sürece jiroskop sensörü İÇERMEMELİDİR.
Cihaz uygulamaları jiroskop içeriyorsa:
- [C-1-1] Etkinlikleri en az 50 Hz sıklıkta raporlayabilmelidir.
- [C-1-2]
TYPE_GYROSCOPEsensörü UYGULAMALI veTYPE_GYROSCOPE_UNCALIBRATEDsensörü de UYGULAMALIDIR. - [C-1-3] Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
- [C-1-4] 12 bit veya daha yüksek çözünürlüğe SAHİP OLMALI ve 16 bit veya daha yüksek çözünürlüğe SAHİP OLMALIDIR.
- [C-1-5] Sıcaklık dengelenmelidir.
- [C-1-6] Kullanım sırasında kalibre edilmeli ve telafi edilmeli, ayrıca cihaz yeniden başlatıldığında telafi parametreleri korunmalıdır.
- [C-1-7] Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) daha büyük bir varyansa SAHİP OLMAMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle sınırlandırılması ZORUNLUDUR. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz bu değer 1e-7 rad^2/s^2'den büyük OLMAMALIDIR.
- [SR] Mevcut ve yeni Android cihazlarda
SENSOR_TYPE_GYROSCOPE_UNCALIBRATEDsensö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_VECTORbileşik sensör uygulaması ZORUNLUDUR.
Cihaz uygulamalarında jiroskop ve ivme ölçer sensörü varsa:
- [C-3-1]
TYPE_GRAVITYveTYPE_LINEAR_ACCELERATIONbirleşik sensörleri uygulamalıdır. - [SR] Mevcut ve yeni Android cihazlarda
TYPE_GAME_ROTATION_VECTORsensörünün uygulanması ŞİDDETLE TAVSİYE EDİLİR. TYPE_GAME_ROTATION_VECTORbileş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_PRESSUREsensörü uygulanmalı ve raporlanmalıdır. - [C-1-2] Etkinlikler 5 Hz veya daha yüksek bir frekansta yayınlanabilmelidir.
- [C-1-3] Sıcaklık dengelenmelidir.
- [SR] 300 hPa ile 1.100 hPa arasındaki basınç ölçümlerini raporlayabilmek için ŞİDDETLE TAVSİYE EDİLİR.
- 1 hPa mutlak doğruluğa SAHİP OLMALIDIR.
- 20 hPa aralığında 0,12 hPa göreceli doğruluğa SAHİP OLMALIDIR (deniz seviyesinde ~200 m değişiklikte ~1 m doğruluğa eşdeğerdir).
7.3.6. Thermometer
Cihaz uygulamaları: * Ortam termometresi (sıcaklık sensörü) İÇEREBİLİR. * CPU sıcaklık sensörü İÇEREBİLİR ancak İÇERMEMELİDİR.
Cihaz uygulamalarında ortam termometresi (sıcaklık sensörü) varsa:
- [C-1-1]
SENSOR_TYPE_AMBIENT_TEMPERATUREolarak tanımlanmalı ve kullanıcının cihazla etkileşimde bulunduğu ortamdaki (oda/araç kabini) sıcaklığı santigrat derece cinsinden ölçmelidir. - [C-1-2]
SENSOR_TYPE_TEMPERATUREolarak tanımlanmalıdır. - [C-1-3] Cihazın CPU sıcaklığı ÖLÇÜLMELİDİR.
- [C-1-4] Başka bir sıcaklık ölçülmemelidir.
SENSOR_TYPE_TEMPERATURE sensör türünün Android 4.0'da kullanımdan kaldırıldığını unutmayın.
7.3.7. Fotometre
- Cihaz uygulamaları, fotometre (ortam ışığı sensörü) içerebilir.
7.3.8. Yakınlık Sensörü
- Cihaz uygulamaları yakınlık sensörü içerebilir.
Cihaz uygulamalarında yakınlık sensörü varsa:
- [C-1-1] Bir nesnenin yakınlığını ekranla aynı yönde ÖLÇMELİDİR. Yani, bu sensör türünün asıl amacı kullanıcının kullandığı telefonu algılamak olduğundan yakınlık sensörü, ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Cihaz uygulamaları başka bir yöne bakan yakınlık sensörü içeriyorsa bu sensöre bu API aracılığıyla erişileMEMELİDİR.
- [C-1-2] 1 bit veya daha fazla doğruluk olmalıdır.
7.3.9. Yüksek Doğruluk Oranı Sunan Sensörler
Cihaz uygulamaları bu bölümde tanımlandığı şekilde daha yüksek kaliteli bir sensör grubu içeriyorsa ve bunları üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
android.hardware.sensor.hifi_sensorsözellik bayrağı aracılığıyla capability nesnesini TANIMLAMALIDIR.
Cihaz uygulamaları android.hardware.sensor.hifi_sensors beyan ederse:
-
[C-2-1] Aşağıdaki özelliklere sahip bir
TYPE_ACCELEROMETERsensörü OLMALIDIR:- En az -8g ile +8g arasında bir ölçüm aralığı OLMALIDIR, en az -16g ile +16g arasında bir ölçüm aralığı OLMASI GEREKİR.
- En az 2.048 LSB/g ölçüm çözünürlüğüne SAHİP OLMALIDIR.
- En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı
RATE_VERY_FASTdestekLEMELİDİR. - 400 μg/√Hz'den fazla ölçüm gürültüsüne sahip OLMAMALIDIR.
- Bu sensörün, en az 3.000 sensör etkinliği arabelleğe alma özelliğine sahip, uyandırma içermeyen bir biçimi UYGULANMALIDIR.
- 3 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- Oda sıcaklığında test edildiğinde 30 μg √Hz'den daha az bir rastgele yürüyüş ivmesine SAHİP OLMALIDIR.
- Sıcaklığa göre ≤ +/- 1 mg/°C'lik bir sapma değişikliği OLMALIDIR.
- En uygun doğrusallık sapması ≤ %0,5 ve sıcaklığa karşı hassasiyet değişimi ≤ %0,03/C° olmalıdır.
- Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyeti < %2,5 ve eksenler arası hassasiyet varyasyonu < %0,2 OLMALIDIR.
-
[C-2-2]
TYPE_ACCELEROMETER_UNCALIBRATED,TYPE_ACCELEROMETERile aynı kalite koşullarına sahip OLMALIDIR. -
[C-2-3] Aşağıdaki özelliklere sahip bir
TYPE_GYROSCOPEsensörü OLMALIDIR:- En az -1.000 ile +1.000 dps arasında bir ölçüm aralığı OLMALIDIR.
- En az 16 LSB/dps ölçüm çözünürlüğüne sahip OLMALIDIR.
- En az 12,5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 400 Hz veya daha yüksek OLMALIDIR; SensorDirectChannel'ı
RATE_VERY_FASTdestekLEMELİDİR. - 0,014°/s/√Hz'den fazla olmayan bir ölçüm gürültüsüne sahip OLMALIDIR.
- [C-SR] Nyquist frekansının en az% 80'i kadar 3 dB ölçüm bant genişliğine ve bu bant genişliği içinde beyaz gürültü spektrumuna sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- Oda sıcaklığında test edildiğinde 0,001 °/s √Hz'den daha düşük bir hızda rastgele yürüyüşe sahip OLMALIDIR.
- Sıcaklığa karşı ≤ +/- 0,05 °/ s / °C'lik bir sapma değişikliği OLMALIDIR.
- Sıcaklığa karşı ≤ %0,02 / °C hassasiyet değişikliği OLMALIDIR.
- En iyi uyum doğrusu doğrusal olmama değeri ≤ %0,2 OLMALIDIR.
- Gürültü yoğunluğu ≤ 0,007 °/s/√Hz OLMALIDIR.
- Cihaz sabitken 10-40 °C sıcaklık aralığında kalibrasyon hatası 0,002 rad/sn'den az OLMALIDIR.
- 0,1°/s/g'den daha az g-hassasiyetine SAHİP OLMALIDIR.
- Cihazın çalışma sıcaklığı aralığında eksenler arası hassasiyet < %4,0 ve eksenler arası hassasiyet değişimi < %0,3 OLMALIDIR.
-
[C-2-4]
TYPE_GYROSCOPE_UNCALIBRATED,TYPE_GYROSCOPEile aynı kalite koşullarına sahip OLMALIDIR. -
[C-2-5] Aşağıdaki özelliklere sahip bir
TYPE_GEOMAGNETIC_FIELDsensörü OLMALIDIR:- En az -900 ile +900 μT arasında bir ölçüm aralığı OLMALIDIR.
- En az 5 LSB/uT ölçüm çözünürlüğüne SAHİP OLMALIDIR.
- En az 5 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 50 Hz veya daha yüksek OLMALIDIR.
- Ölçüm gürültüsü 0,5 uT'nin üzerinde OLMAMALIDIR.
-
[C-2-6]
TYPE_MAGNETIC_FIELD_UNCALIBRATEDile aynı kalite koşullarına sahip birTYPE_GEOMAGNETIC_FIELDOLMALIDIR ve ayrıca:- En az 600 sensör etkinliği arabelleğe alma özelliğine sahip, bu sensörün uyandırma içermeyen bir biçimini uygulamalıdır.
- [C-SR] Rapor hızı 50 Hz veya daha yüksek olduğunda 1 Hz'den en az 10 Hz'ye kadar beyaz gürültü spektrumunun olması ŞİDDETLE TAVSİYE EDİLİR.
-
[C-2-7] Aşağıdaki özelliklere sahip bir
TYPE_PRESSUREsensörü OLMALIDIR:- En az 300 ile 1.100 hPa arasında bir ölçüm aralığı OLMALIDIR.
- En az 80 LSB/hPa ölçüm çözünürlüğüne SAHİP OLMALIDIR.
- En az 1 Hz veya daha düşük bir ölçüm sıklığına sahip OLMALIDIR.
- Maksimum ölçüm sıklığı 10 Hz veya daha yüksek OLMALIDIR.
- 2 Pa/√Hz'yi aşmayan bir ölçüm gürültüsüne SAHİP OLMALIDIR.
- En az 300 sensör etkinliğinin arabelleğe alınabileceği, uyandırma içermeyen bir sensör biçimi uygulanmalıdır.
- 2 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-2-8] Aşağıdaki özelliklere sahip bir
TYPE_GAME_ROTATION_VECTORsensörü OLMALIDIR:- En az 300 sensör etkinliğinin arabelleğe alınabileceği, uyandırma içermeyen bir sensör biçimi uygulanmalıdır.
- 4 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-2-9] Aşağıdaki özelliklere sahip bir
TYPE_SIGNIFICANT_MOTIONsensö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_DETECTORsensörü OLMALIDIR:- En az 100 sensör etkinliğinin arabelleğe alınabileceği, uyandırma içermeyen bir sensör biçimi UYGULANMALIDIR.
- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- 4 mW'tan daha kötü olmayan bir toplu güç tüketimine SAHİP OLMALIDIR.
- [C-2-11] Aşağıdaki özelliklere sahip bir
TYPE_STEP_COUNTERsensö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_DETECTORsensörü OLMALIDIR:- Cihaz sabitken 0,5 mW'tan, hareket halindeyken ise 1,5 mW'tan daha fazla güç tüketmemelidir.
- [C-2-13] İvmeölçer, jiroskop ve manyetometre tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 2,5 milisaniye içinde OLMALIDIR. Akselerometre ve jiroskop tarafından bildirilen aynı fiziksel etkinliğin etkinlik zaman damgası, birbirine 0,25 milisaniye içinde OLMALIDIR.
- [C-2-14] JİROSKOP SENSÖRÜ ETKİNLİK ZAMAN DAMGALARI, KAMERA ALTSİSTEMİYLE AYNI ZAMAN TABANINDA VE 1 MİLİSANİYE HATA PAYI İÇİNDE OLMALIDIR.
- [C-2-15] Veriler yukarıdaki fiziksel sensörlerden herhangi birinde uygulamaya sunulduktan sonraki 5 milisaniye içinde uygulamalara örnekler sunULMALIDIR.
- [C-2-16] Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde cihaz statik durumdayken güç tüketimi 0,5 mW'tan, hareket hâlindeyken ise 2,0 mW'tan yüksek OLMAMALIDIR:
-
SENSOR_TYPE_SIGNIFICANT_MOTION -
SENSOR_TYPE_STEP_DETECTOR -
SENSOR_TYPE_STEP_COUNTER -
SENSOR_TILT_DETECTORS
-
- [C-2-17]
TYPE_PROXIMITYsensörü OLABİLİR ancak varsa minimum 100 sensör etkinliği arabellek kapasitesine SAHİP OLMALIDIR.
Bu bölümdeki tüm güç tüketimi şartlarının, uygulama işlemcisinin güç tüketimini içermediğini unutmayın. Sensör, destekleyici devreler, özel sensör işleme sistemi vb. dahil olmak üzere tüm sensör zincirinin çektiği gücü kapsar.
Cihaz uygulamaları doğrudan sensör desteği içeriyorsa:
- [C-3-1]
isDirectChannelTypeSupportedvegetHighestDirectReportRateLevelAPI'si aracılığıyla doğrudan kanal türlerinin ve doğrudan raporlama hızlarının desteklendiğini DOĞRU şekilde bildirmelidir. - [C-3-2] Sensör doğrudan kanalını desteklediğini belirten tüm sensörler için iki sensör doğrudan kanal türünden en az birini DESTEKLEMELİDİR.
- Aşağıdaki türlerdeki birincil sensör (uyandırma dışı varyant) için sensör doğrudan kanalı üzerinden etkinlik raporlamasını DESTEKLEMELİDİR:
-
TYPE_ACCELEROMETER -
TYPE_ACCELEROMETER_UNCALIBRATED -
TYPE_GYROSCOPE -
TYPE_GYROSCOPE_UNCALIBRATED -
TYPE_MAGNETIC_FIELD -
TYPE_MAGNETIC_FIELD_UNCALIBRATED
-
7.3.10. Biyometrik Sensörler
7.3.10.1. Parmak izi sensörleri
Cihaz uygulamaları güvenli bir kilit ekranı içeriyorsa:
- Parmak izi sensörü İÇERMELİDİR.
Cihaz uygulamaları parmak izi sensörü içeriyorsa ve sensörü üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
android.hardware.fingerprintözelliği için destek beyan EDİLMELİDİR. - [C-1-2] Android SDK belgelerinde açıklandığı gibi ilgili API TAMAMEN uygulanmalıdır.
- [C-1-3] YANLIŞ KABUL ORANI %0,002'DEN YÜKSEK OLMAMALIDIR.
- [SR] Sahtecilik ve kimliğe bürünme kabul oranının %7'den yüksek OLMAMASI ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-4] Sahtecilik ve kimliğe bürünme kabul oranları %7'den yüksekse bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceği ve etkinleştirmenin riskleri açıkça belirtilmelidir.
- [C-1-5] Parmak izi doğrulama için beş başarısız denemeden sonra denemeler en az 30 saniye boyunca sıklık sınırına tabi tutulmalıdır.
- [C-1-6] Donanım destekli bir anahtar deposu uygulamasına sahip OLMALI ve parmak izi eşleştirme işlemini Güvenilir Yürütme Ortamı'nda (TEE) veya TEE'ye güvenli bir kanal içeren bir çip üzerinde gerçekleştirmelidir.
- [C-1-7] TEE dışında elde edilemeyecek, okunamayacak veya değiştirilemeyecek şekilde tüm tanımlanabilir parmak izi verileri şifrelenmeli ve kriptografik olarak doğrulanmalıdır ya da Android Açık Kaynak Projesi sitesindeki uygulama yönergelerinde belgelendiği gibi TEE'ye güvenli bir kanal içeren bir çip kullanılmalıdır.
- [C-1-8] Kullanıcının mevcut bir cihaz kimlik bilgisini (PIN/desen/şifre) onaylaması veya TEE ile güvenli hale getirilmiş yeni bir cihaz kimlik bilgisi eklemesiyle önce güven zinciri oluşturulmadan parmak izi eklenmesi ENGELLENMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
- [C-1-9] Üçüncü taraf uygulamalarının, parmak izleri arasında ayrım yapmasına İZİN VERİLMEMELİDİR.
- [C-1-10] DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT işaretine UYULMALIDIR.
- [C-1-11] Android 6.0'dan önceki bir sürümden yükseltme yapıldığında, yukarıdaki şartları karşılamak için parmak izi verileri güvenli bir şekilde taşınmalı veya kaldırılmalıdır.
- [C-1-12] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama yoluyla da dahil olmak üzere) kullanıcının tanımlanabilir tüm parmak izi verileri TAMAMEN kaldırILMALIDIR.
- [C-1-13] Tanımlanabilir parmak izi verilerine veya bunlardan türetilen verilere (ör. yerleştirmeler) Uygulama İşlemcisi'nin şifrelenmemiş erişimine İZİN VERİLMEMELİDİR.
- [SR] Cihazda ölçüldüğü üzere %10'dan düşük bir yanlış ret oranına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Kayıtlı bir parmak için, parmak izi sensörüne dokunulduğu andan ekranın kilidi açılana kadar ölçülen gecikmenin 1 saniyeden kısa olması ŞİDDETLE TAVSİYE EDİLİR.
- Android Açık Kaynak Projesi'nde sağlanan Android parmak izi simgesi KULLANILMALIDIR.
7.3.10.2. Diğer Biyometrik Sensörler
Cihaz uygulamaları, parmak izi tabanlı olmayan bir veya daha fazla biyometrik sensör içeriyorsa ve bunları üçüncü taraf uygulamalarının kullanımına sunuyorsa:
- [C-1-1] YANLIŞ KABUL ORANI %0,002'DEN YÜKSEK OLMAMALIDIR.
- [C-SR] Sahtecilik ve kimliğe bürünme kabul oranının %7'den yüksek olmaması KESİNLİKLE ÖNERİLİR.
- [C-1-2] Sahtecilik ve kimliğe bürünme kabul oranları %7'den yüksekse bu modun güçlü bir PIN, desen veya şifre kadar güvenli olmayabileceği ve etkinleştirmenin riskleri net bir şekilde açıklanmalıdır.
- [C-1-3] Biyometrik doğrulama için beş başarısız denemeden sonra deneme sıklığına en az 30 saniye sınırlama GETİRİLMELİDİR. Burada başarısız deneme, kayıtlı bir biyometrik veriyle eşleşmeyen, yeterli yakalama kalitesine (ACQUIRED_GOOD) sahip bir denemedir.
- [C-1-4] Donanım destekli bir anahtar deposu uygulamasına sahip OLMALI ve biyometrik eşleşmeyi TEE'de veya TEE'ye güvenli bir kanal içeren bir çip üzerinde gerçekleştirmelidir.
- [C-1-5] Kimliği tanımlayabilecek tüm veriler, TEE dışında veya Android Open Source Project sitesindeki uygulama yönergelerinde belgelendiği gibi TEE'ye güvenli bir kanal sağlayan bir çipte elde edilemeyecek, okunamayacak veya değiştirilemeyecek şekilde şifrelenmeli ve kriptografik olarak doğrulanmalıdır.
- [C-1-6] Kullanıcının mevcut bir cihaz kimlik bilgisini (PIN/desen/şifre) onaylamasını veya TEE ile güvenli hale getirilmiş yeni bir cihaz kimlik bilgisi eklemesini sağlayarak önce güven zinciri oluşturmadan yeni biyometri eklenmesini ENGELLEMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
- [C-1-7] Üçüncü taraf uygulamaların biyometrik kayıtlar arasında ayrım yapmasına İZİN VERİLMEMELİDİR.
- [C-1-8] İlgili biyometri için bireysel işaretlemeye (ör.
DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT,DevicePolicymanager.KEYGUARD_DISABLE_FACEveyaDevicePolicymanager.KEYGUARD_DISABLE_IRIS) UYULMALIDIR. - [C-1-9] Kullanıcının hesabı kaldırıldığında (fabrika ayarlarına sıfırlama dahil) kullanıcının tanımlanabilir tüm biyometrik verileri tamamen KALDIRILMALIDIR.
- [C-1-10] TEE bağlamı dışında, tanımlanabilir biyometrik verilere veya bunlardan türetilen verilere (ör. yerleştirmeler) Uygulama İşlemcisi'ne şifrelenmemiş erişime İZİN VERİLMEMELİDİR.
- [C-SR] Cihazda ölçüldüğü üzere %10'dan düşük bir yanlış ret oranına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Kayıtlı her biyometrik için, biyometriğin algılandığı andan ekranın kilidinin açıldığı ana kadar ölçülen gecikmenin 1 saniyenin altında olması ŞİDDETLE TAVSİYE EDİLİR.
7.3.11. Yalnızca Android Automotive'e özel sensörler
Otomobile özel sensörler android.car.CarSensorManager API adresinde tanımlanmıştır.
7.3.11.1. Current Gear
Cihaza özel gereksinimler için Bölüm 2.5.1'e bakın.
7.3.11.2. Gündüz Gece Modu
Cihaza özel gereksinimler için Bölüm 2.5.1'e bakın.
7.3.11.3. Sürüş Durumu
Bu koşulun desteği sonlandırılmıştır.
7.3.11.4. Tekerlek Hızı
Cihaza özel gereksinimler için Bölüm 2.5.1'e bakın.
7.3.11.5. El Freni
Cihaza özel gereksinimler için Bölüm 2.5.1'e bakın.
7.3.12. Poz Sensörü
Cihaz uygulamaları:
- 6 serbestlik derecesiyle duruş sensörünü DESTEKLEYEBİLİR.
Cihaz uygulamaları 6 serbestlik dereceli duruş sensörünü destekliyorsa:
- [C-1-1]
TYPE_POSE_6DOFsensörünü uygulamalı ve raporlamalıdır. - [C-1-2] Yalnızca dönüş vektöründen daha doğru OLMALIDIR.
7.4. Veri Bağlantısı
7.4.1. Telefon
Android API'leri ve bu belgede kullanılan "Telefon Hizmetleri" terimi, özellikle GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanımı ifade eder. Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak Android açısından aynı ağ kullanılarak uygulanabilecek veri bağlantısından bağımsız olarak kabul edilir. Başka bir deyişle, Android'deki "telefon" işlevi ve API'ler özellikle sesli aramalar ve SMS ile ilgilidir. Örneğin, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarına bakılmaksızın arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, telefon cihazı olarak kabul edilmez.
- Android, telefon donanımı içermeyen cihazlarda KULLANILABİLİR. Yani Android, telefon olmayan cihazlarla uyumludur.
Cihaz uygulamaları GSM veya CDMA telefon özelliğini içeriyorsa:
- [C-1-1]
android.hardware.telephonyözellik bayrağını ve diğer alt özellik bayraklarını teknolojiye göre BİLDİRMELİDİR. - [C-1-2] Söz konusu teknoloji için API'nin tam desteğini uygulamalıdır.
Cihaz uygulamaları telefon donanımı içermiyorsa:
- [C-2-1] Tüm API'ler, işlem yapmayan işlemler olarak uygulanmalıdır.
7.4.1.1. Numara Engelleme Uyumluluğu
Cihaz uygulamaları android.hardware.telephony feature değerini bildiriyorsa:
- [C-1-1] Numara engelleme desteği İÇERMELİDİR.
- [C-1-2] SDK dokümanlarında açıklandığı gibi
BlockedNumberContractve ilgili API'yi eksiksiz bir şekilde uygulamalıdır. - [C-1-3] "BlockedNumberProvider"daki bir telefon numarasından gelen tüm aramalar ve mesajlar, uygulamalarla etkileşim olmadan ENGELLENMELİDİR. Tek istisna, SDK dokümanlarında açıklandığı gibi numara engellemenin geçici olarak kaldırıldığı durumdur.
- [C-1-4] Engellenen bir arama için platform arama kaydı sağlayıcısına yazmamalıdır.
- [C-1-5] Engellenen bir ileti için Telefon hizmeti sağlayıcıya yazılMAMALIDIR.
- [C-1-6]
TelecomManager.createManageBlockedNumbersIntent()yöntemi tarafından döndürülen amaçla açılan, engellenen numaraların yönetimi için bir kullanıcı arayüzü uygulamalıdır. - [C-1-7] Android platformu, birincil kullanıcının cihazdaki tek bir örnek olan telefon hizmetleri üzerinde tam kontrol sahibi olduğunu varsaydığından, ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERİLMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzü, ikincil kullanıcılar için GİZLENMELİ ve engellenenler listesine uyulmaya DEVAM EDİLMELİDİR.
- Bir cihaz Android 7.0'a güncellendiğinde engellenen numaralar sağlayıcıya taşınmalıdır.
7.4.1.2. Telecom API
Cihaz uygulamaları android.hardware.telephony bildiriyorsa:
- [C-1-1] SDK'da açıklanan
ConnectionServiceAPI'lerini DESTEKLEMELİDİR. - [C-1-2] Kullanıcı,
CAPABILITY_SUPPORT_HOLDüzerinden belirtilen bekletme özelliğini desteklemeyen bir üçüncü taraf uygulaması tarafından yapılan devam eden bir aramadayken yeni bir gelen aramayı GÖSTERMELİ ve kullanıcının gelen aramayı kabul etmesine veya reddetmesine olanak TANIMALIDIR. -
[C-SR] Gelen bir aramayı yanıtlamanın devam eden bir aramayı sonlandıracağını kullanıcıya bildirmesi ŞİDDETLE TAVSİYE EDİLİR.
AOSP uygulaması, kullanıcının gelen bir aramayı yanıtlaması durumunda diğer aramanın sonlandırılacağını belirten bir uyarı bildirimiyle bu şartları karşılar.
-
[C-SR] Üçüncü taraf uygulaması,
PhoneAccountüzerindekiEXTRA_LOG_SELF_MANAGED_CALLSekstralar anahtarınıtrueolarak 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.telecomAPI'leri için ses kulaklığınınKEYCODE_MEDIA_PLAY_PAUSEveKEYCODE_HEADSETHOOKetkinliklerini işlemesi ŞİDDETLE TAVSİYE EDİLİR:- Devam eden bir arama sırasında önemli etkinliğe kısa basma algılandığında
Connection.onDisconnect()işlevini çağırın. - Gelen arama sırasında önemli etkinlik tuşuna kısa basma algılandığında
Connection.onAnswer()işlevini çağırır. - Gelen arama sırasında önemli etkinliğe uzun basma işlemi algılandığında
Connection.onReject()işlevini çağırın. CallAudioStatesimgesinin sesini 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 içermelidir.
Cihaz uygulamaları 802.11 desteği içeriyorsa ve işlevselliği üçüncü taraf bir uygulamaya sunuyorsa:
- [C-1-1] Karşılık gelen Android API'si UYGULANMALIDIR.
- [C-1-2] Donanım özellik bayrağını
android.hardware.wifibildirmelidir. - [C-1-3] SDK belgelerinde açıklandığı gibi çoklu yayın API'si uygulanmalıdır.
- [C-1-4] Çoklu yayın DNS'yi (mDNS) DESTEKLEMELİ ve mDNS paketlerini (224.0.0.251) aşağıdakiler dahil olmak üzere çalışma süresince HİÇBİR ZAMAN filtrelememelidir:
- Ekran etkin durumda olmasa bile.
- Android Television cihaz uygulamaları için bekleme güç durumundayken bile geçerlidir.
- [C-1-5]
WifiManager.enableNetwork()API yöntemi çağrısı, uygulama trafiği için varsayılan olarak kullanılan vegetActiveNetworkileregisterDefaultNetworkCallbackgibiConnectivityManagerAPI 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 ağa (ör. hücresel veri) geçilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] STA bağlantısı kesilmişken her taramanın başında bir kez olmak üzere, kaynak MAC adresinin ve araştırma isteği çerçevelerinin sıra numarasının rastgele hale getirilmesi ŞİDDETLE TAVSİYE EDİLİR.
- Bir taramayı oluşturan her bir yoklama isteği çerçevesi grubu, tutarlı bir MAC adresi kullanmalıdır (MAC adresi, taramanın ortasında rastgele hale GETİRİLMEMELİDİR).
- Yoklama isteği sıra numarası, taramadaki yoklama istekleri arasında normal şekilde (sırayla) tekrarlanmalıdır.
- Yoklama isteği sıra numarası, bir taramanın son yoklama isteği ile bir sonraki taramanın ilk yoklama isteği arasında rastgele olmalıdır.
- STA bağlantısı kesilmişken yalnızca aşağıdaki öğelerin araştırma isteği çerçevelerinde kullanılması için [C-SR] ŞİDDETLE TAVSİYE EDİLİR:
- SSID Parametre Seti (0)
- DS Parametre Kümesi (3)
Cihaz uygulamaları kablosuz ağ özelliğini destekliyorsa ve konum taraması için kablosuz ağ kullanıyorsa:
- [C-2-1]
WifiManager.isScanAlwaysAvailableAPI yöntemiyle okunan değerin etkinleştirilmesi/devre dışı bırakılması için kullanıcıya bir uygunluk SAĞLANMALIDIR.
7.4.2.1. Kablosuz Doğrudan Bağlantı
Cihaz uygulamaları:
- Kablosuz Doğrudan Bağlantı (Kablosuz ağdan kablosuz ağa) desteği OLMALIDIR.
Cihaz uygulamaları Kablosuz Doğrudan Bağlantı desteği içeriyorsa:
- [C-1-1] SDK belgelerinde açıklandığı şekilde ilgili Android API'sini uygulamalıdır.
- [C-1-2]
android.hardware.wifi.directdonanım özelliğini bildirmelidir. - [C-1-3] Normal kablosuz ağ çalışmasını DESTEKLEMELİDİR.
- [C-1-4] MUST support Wi-Fi and Wi-Fi Direct operations concurrently.
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.isTdlsSupportedaracılığıyla TDLS desteği beyan EDİLMELİDİR. - TDLS'yi YALNIZCA mümkün OLDUĞUNDA VE faydalı OLDUĞUNDA kullanmalıdır.
- Performansı kablosuz ağ erişim noktası üzerinden gitmekten daha kötü olabileceği durumlarda, sezgisel bir yaklaşıma sahip OLMALI ve TDLS KULLANMAMALIDIR.
7.4.2.3. Wi-Fi Aware
Cihaz uygulamaları:
- 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]
WifiAwareManagerAPI'leri, SDK dokümanlarında açıklandığı şekilde uygulamalıdır. - [C-1-2]
android.hardware.wifi.awareözellik bayrağı BEYAN EDİLMELİDİR. - [C-1-3] MUST support Wi-Fi and Wi-Fi Aware operations concurrently.
- [C-1-4] Wi-Fi Aware yönetim arayüzü adresini 30 dakikadan uzun olmayan aralıklarla ve Wi-Fi Aware her etkinleştirildiğinde rastgele seçmelidir.
Cihaz uygulamaları, Bölüm 7.4.2.5'te açıklandığı gibi Wi-Fi Aware ve Wi-Fi Konum desteği içeriyorsa ve bu işlevleri üçüncü taraf uygulamalarına sunuyorsa:
- [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ı:
- Kablosuz Passpoint desteği İÇERMELİDİR.
Cihaz uygulamaları Wi-Fi Passpoint desteği içeriyorsa:
- [C-1-1] SDK belgelerinde açıklandığı şekilde Passpoint ile ilgili
WifiManagerAPI'leri uygulamalıdır. - [C-1-2] IEEE 802.11u standardını, özellikle de Genel Reklam Hizmeti (GAS) ve Erişim Ağı Sorgu Protokolü (ANQP) gibi Ağ Keşfi ve Seçimi ile ilgili olarak DESTEKLEMELİDİR.
Aksine, cihaz uygulamaları Wi-Fi Passpoint desteği içermiyorsa:
- [C-2-1] Passpoint ile ilgili
WifiManagerAPI'lerinin uygulanmasıUnsupportedOperationExceptionistisnası 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]
WifiRttManagerAPI'leri, SDK dokümanlarında açıklandığı şekilde uygulamalıdır. - [C-1-2]
android.hardware.wifi.rttözellik bayrağı BEYAN EDİLMELİDİR. - [C-1-3] RTT'nin yürütüldüğü kablosuz arayüz bir erişim noktasıyla ilişkilendirilmemişken yürütülen her RTT patlaması için kaynak MAC adresini rastgele hale GETİRMELİDİR.
7.4.3. Bluetooth
Cihaz uygulamaları Bluetooth Ses profilini destekliyorsa:
- Gelişmiş Ses Codec'lerini ve Bluetooth Ses Codec'lerini (ör. LDAC) DESTEKLEMELİDİR.
Cihaz uygulamaları HFP, A2DP ve AVRCP'yi destekliyorsa:
- Toplamda en az 5 bağlı cihazı DESTEKLEMELİDİR.
Cihaz uygulamaları android.hardware.vr.high_performance özelliğini beyan ediyorsa:
- [C-1-1] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı'nı DESTEKLEMELİDİR.
Android, Bluetooth ve Bluetooth Düşük Enerji'yi destekler.
Cihaz uygulamaları Bluetooth ve Bluetooth Düşük Enerji desteği içeriyorsa:
- [C-2-1] İlgili platform özelliklerini (sırasıyla
android.hardware.bluetoothveandroid.hardware.bluetooth_le) beyan ETMELİ ve platform API'lerini uygulamalıdır. - Cihaza uygun şekilde A2DP, AVRCP, OBEX, HFP gibi ilgili Bluetooth profillerini UYGULAMALIDIR.
Cihaz uygulamaları Bluetooth Düşük Enerji desteği içeriyorsa:
- [C-3-1]
android.hardware.bluetooth_ledonanım özelliğini BEYAN ETMELİDİR. - [C-3-2] SDK dokümanlarında ve android.bluetooth'ta açıklandığı gibi GATT (genel özellik profili) tabanlı Bluetooth API'lerini ETKİNLEŞTİRMELİDİR.
- [C-3-3] ScanFilter API sınıfları için filtreleme mantığının uygulanıp uygulanmadığını belirtmek üzere
BluetoothAdapter.isOffloadedFilteringSupported()için doğru değeri RAPORLAMALIDIR. - [C-3-4] Düşük enerjili reklamcılığın desteklenip desteklenmediğini belirtmek için
BluetoothAdapter.isMultipleAdvertisementSupported()özelliği için doğru değeri bildirmelidir. - ScanFilter API uygulanırken filtreleme mantığının Bluetooth yonga setine aktarılması DESTEKLENMELİDİR.
- Toplu taramanın Bluetooth yonga setine aktarılması DESTEKLENMELİDİR.
-
En az 4 yuvalı çoklu reklamı DESTEKLEMELİDİR.
-
[SR] Kullanıcı gizliliğini korumak için 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulaması ve zaman aşımında adresi döndürme ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Bluetooth LE'yi destekliyorsa ve konum taraması için Bluetooth LE'yi kullanıyorsa:
- [C-4-1] MUST provide a user affordance to enable/disable the value read through the System API
BluetoothAdapter.isBleScanAlwaysAvailable().
7.4.4. Near-Field Communications
Cihaz uygulamaları:
- Yakın alan iletişimi (NFC) için bir alıcı-verici ve ilgili donanım İÇERMELİDİR.
- [C-0-1]
android.nfc.NdefMessageveandroid.nfc.NdefRecordAPI'leri, NFC desteği içermese veyaandroid.hardware.nfcözelliğini beyan etmese bile uygulamalıdır. Çünkü sınıflar, protokolden bağımsız bir veri gösterimi biçimini temsil eder.
Cihaz uygulamaları NFC donanımı içeriyorsa ve bu donanımı üçüncü taraf uygulamalarına sunmayı planlıyorsa:
- [C-1-1]
android.content.pm.PackageManager.hasSystemFeature()yöntemi ileandroid.hardware.nfcözelliğini raporlaması ZORUNLUDUR. - Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarını okuyup yazabilmelidir:
- [C-1-2] Aşağıdaki NFC standartları aracılığıyla NFC Forum okuyucu/yazıcı (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0'da tanımlandığı gibi) olarak işlev görebilmelidir:
- NfcA (ISO14443-3A)
- NfcB (ISO14443-3B)
- NfcF (JIS X 6319-4)
- IsoDep (ISO 14443-4)
- NFC Forum Etiket Türleri 1, 2, 3, 4, 5 (NFC Forum tarafından tanımlanır)
-
[SR] Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarının yanı sıra ham verileri okuyup yazabilmesi KESİNLİKLE ÖNERİLİR. NFC standartlarının ŞİDDETLE TAVSİYE EDİLEN olarak belirtildiğini ancak gelecekteki bir sürümün Uyumluluk Tanımı'nda bunların ZORUNLU olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılamaları önemle tavsiye edilir.
-
[C-1-3] Aşağıdaki eşler arası standartlar ve protokoller aracılığıyla veri iletebilmeli ve alabilmelidir:
- ISO 18092
- LLCP 1.2 (NFC Forum tarafından tanımlanır)
- SDP 1.0 (NFC Forum tarafından tanımlanır)
- NDEF Push Protocol
- SNEP 1.0 (NFC Forum tarafından tanımlanır)
- [C-1-4] Android Beam desteği İÇERMELİ ve Android Beam varsayılan olarak ETKİNLEŞTİRİLMELİDİR.
- [C-1-5] Android Beam etkinleştirildiğinde veya başka bir tescilli NFC P2p modu açıldığında Android Beam'i kullanarak gönderme ve alma işlemleri YAPILABİLMELİDİR.
- [C-1-6] SNEP varsayılan sunucusu uygulanmalıdır. Varsayılan SNEP sunucusu tarafından alınan geçerli NDEF mesajları,
android.nfc.ACTION_NDEF_DISCOVEREDamacı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_SETTINGSNFC 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 Bluetooth'a DEVREDİLMELİDİR.
- [C-1-12] NFC Forum'un "Connection Handover version 1.2" ve "Bluetooth Secure Simple Pairing Using NFC version 1.0" spesifikasyonlarını uygulayarak
android.nfc.NfcAdapter.setBeamPushUriskullanılırken Bluetooth'a bağlantı aktarımını DESTEKLEMELİDİR. Bu tür bir uygulama, NFC üzerinden devretme isteği/seçme kayıtlarını değiştirmek için "urn:nfc:sn:handover" hizmet adıyla devretme LLCP hizmetini uygulamalı ve gerçek Bluetooth veri aktarımı için Bluetooth Object Push Profile'ı kullanmalıdır. Eski nedenlerden dolayı (Android 4.1 cihazlarla uyumlu kalmak için) uygulama, NFC üzerinden devretme isteği/kayıt seçme işlemlerinin değişimi için SNEP GET isteklerini kabul etmeye DEVAM ETMELİDİR. Ancak uygulamanın kendisi, bağlantı devretme işlemini gerçekleştirmek için SNEP GET istekleri göndermemelidir. - [C-1-13] NFC keşif modundayken desteklenen tüm teknolojiler için yoklama YAPILMALIDIR.
- Cihaz uyanıkken, ekran etkin durumdayken ve kilit ekranı açıkken NFC keşif modunda OLMALIDIR.
- Thinfilm NFC Barcode ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.
Yukarıda belirtilen JIS, ISO ve NFC Forum spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.
Android, NFC ana kart emülasyonu (HCE) modunu destekler.
Cihaz uygulamaları, HCE (NfcA ve/veya NfcB için) özellikli bir NFC denetleyici yonga seti içeriyorsa ve uygulama kimliği (AID) yönlendirmesini destekliyorsa:
- [C-2-1]
android.hardware.nfc.hceözelliği sabiti RAPORLANMALIDIR. - [C-2-2] Android SDK'da tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.
Cihaz uygulamaları, NfcF için HCE özellikli bir NFC denetleyici yonga seti içeriyorsa ve özelliği üçüncü taraf uygulamaları için uyguluyorsa:
- [C-3-1]
android.hardware.nfc.hcefözelliği sabiti RAPORLANMALIDIR. - [C-3-2] Android SDK'da tanımlandığı şekilde NfcF Card Emulation API'lerini uygulamalıdır.
Cihaz uygulamaları bu bölümde açıklandığı gibi genel NFC desteği içeriyorsa ve okuyucu/yazıcı rolünde MIFARE teknolojilerini (MIFARE Classic, MIFARE Ultralight, MIFARE Classic'te NDEF) destekliyorsa:
- [C-4-1] İlgili Android API'lerini, Android SDK'sında belgelendiği şekilde uygulamalıdır.
- [C-4-2]
android.content.pm.PackageManager.hasSystemFeature() yöntemindencom.nxp.mifareözelliğini bildirmelidir. Bunun standart bir Android özelliği olmadığını ve bu nedenleandroid.content.pm.PackageManagersınıfında sabit olarak görünmediğini unutmayın.
7.4.5. Minimum Ağ İşlevi
Cihaz uygulamaları:
- [C-0-1] Bir veya daha fazla veri ağı biçimi için destek içermelidir. Daha net bir ifadeyle, cihaz uygulamaları en az 200 Kbit/sn veya daha yüksek hızda veri standardı desteği İÇERMELİDİR. EDGE, HSPA, EV-DO, 802.11g, Ethernet ve Bluetooth PAN, bu koşulu karşılayan teknolojilere örnek olarak verilebilir.
- Fiziksel bir ağ standardı (ör. Ethernet) birincil veri bağlantısı olduğunda 802.11 (kablosuz) gibi en az bir yaygın kablosuz veri standardı için de destek içermelidir.
- Birden fazla veri bağlantısı biçimi uygulayabilir.
- [C-0-2]
java.net.Socketvejava.net.URLConnectiongibi yönetilen API'lerin yanı sıraAF_INET6yuvaları gibi yerel API'leri kullanarak IPv6 iletişimini desteklemeli ve bir IPv6 ağ yığını içermelidir. - [C-0-3] Varsayılan olarak IPv6'yı etkinleştirmelidir.
- IPv6 iletişiminin IPv4 kadar güvenilir olmasını SAĞLAMALIDIR. Örneğin:
- [C-0-4] Uyku modunda IPv6 bağlantısını SÜRDÜRMELİDİR.
- [C-0-5] Hız sınırlama, en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu ağlarda cihazın IPv6 bağlantısını kaybetmesine NEDEN OLMAMALIDIR.
- [C-0-6] IPv6 ağına bağlandığında, cihazda yerel olarak herhangi bir adres veya bağlantı noktası çevirisi yapılmadan üçüncü taraf uygulamalarına ağa doğrudan IPv6 bağlantısı SAĞLANMALIDIR. Hem
Socket#getLocalAddressveyaSocket#getLocalPortgibi yönetilen API'ler hem degetsockname()veyaIPV6_PKTINFOgibi NDK API'leri, ağda paket göndermek ve almak için kullanılan IP adresini ve bağlantı noktasını DÖNDÜRMELİDİR.
Gerekli IPv6 desteği düzeyi, aşağıdaki şartlarda gösterildiği gibi ağ türüne bağlıdır.
Cihaz uygulamaları kablosuz bağlantıyı destekliyorsa:
- [C-1-1] Çift yığınlı ve yalnızca IPv6 ile çalışmayı kablosuz ağda DESTEKLEMELİDİR.
Cihaz uygulamaları Ethernet'i destekliyorsa:
- [C-2-1] Ethernet'te çift yığınlı çalışmayı DESTEKLEMELİDİR.
Cihaz uygulamaları hücresel veriyi destekliyorsa:
- Hücresel bağlantıda IPv6 işlemini (yalnızca IPv6 ve muhtemelen çift yığın) desteklemelidir.
Cihaz uygulamaları birden fazla ağ türünü (ör. kablosuz ve hücresel veri) destekliyorsa:
- [C-3-1] Cihaz aynı anda birden fazla ağ türüne bağlıyken her ağda yukarıdaki şartları aynı anda karşılamalıdır.
7.4.6. Senkronizasyon Ayarları
Cihaz uygulamaları:
- [C-0-1]
getMasterSyncAutomatically()yönteminin "true" değerini döndürmesi için ana otomatik senkronizasyon ayarı varsayılan olarak açık OLMALIDIR.
7.4.7. Veri Tasarrufu
Cihaz uygulamaları, ölçülü bağlantı içeriyorsa:
- [SR] Veri tasarrufu modunun sağlanması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları veri tasarrufu modunu sağlıyorsa:
- [C-1-1] SDK belgelerinde açıklandığı gibi
ConnectivityManagersınıfındaki tüm API'leri desteklemelidir. - [C-1-2] Ayarlarda,
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGSamacı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_DISABLEDdeğerini DÖNDÜRMELİDİR. - [C-2-2]
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGEDyayınlanmamalıdır. - [C-2-3]
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGSamacını işleyen bir etkinliğe SAHİP OLMALI ancak bunu işlem yapmayan bir işlem olarak UYGULAYABİLİR.
7.4.8. Güvenlik unsurları
Cihaz uygulamaları, Open Mobile API özellikli güvenli öğeleri destekleyip üçüncü taraf uygulamalarına sunuyorsa:
- [C-1-1]
android.se.omapi.SEService.getReaders()yöntemi çağrıldığında kullanılabilir Güvenli Öğeler okuyucuları numaralandırılmalıdır.
7.5. Kameralar
Cihaz uygulamaları en az bir kamera içeriyorsa:
- [C-1-1]
android.hardware.camera.anyözellik bayrağını BEYAN ETMELİDİR. - [C-1-2] Temel önizleme ve fotoğraf çekme amacıyla kamera açıkken bir uygulamanın, cihazdaki en yüksek çözünürlüklü kamera sensörünün ürettiği görüntülerin boyutuna eşit 3 RGBA_8888 bit eşlemi aynı anda ayırması ZORUNLU olmalıdır.
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.cameraveandroid.hardware.camera.anyözellik bayrağını bildirmelidir. - [C-1-2] En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
- Kamera sürücüsünde donanım veya yazılım otomatik odaklama uygulanmalıdır (uygulama yazılımı için şeffaf).
- Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanımı OLABİLİR.
- Flaş İÇEREBİLİR.
Kamerada flaş varsa:
- [C-2-1] Bir
android.hardware.Camera.PreviewCallbackörneği Kamera önizleme yüzeyine kaydedilmişken, uygulama birCamera.ParametersnesnesininFLASH_MODE_AUTOveyaFLASH_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.PreviewCallbackkullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Kamera
Ön kamera, cihazın ekranıyla aynı tarafında bulunan bir kameradır. Genellikle kullanıcıyı görüntülemek için kullanılır (ör. video konferans ve benzeri uygulamalarda).
Cihaz uygulamaları:
- Ön kamera içerebilir.
Cihaz uygulamaları en az bir ön kameraya sahipse:
- [C-1-1]
android.hardware.camera.anyveandroid.hardware.camera.frontözellik bayrağını bildirmelidir. - [C-1-2] En az VGA (640x480 piksel) çözünürlüğe sahip OLMALIDIR.
- [C-1-3] Kamera API'si için varsayılan olarak ön kamera KULLANILMAMALI ve API, cihazdaki tek kamera olsa bile ön kamerayı varsayılan arka kamera olarak kabul edecek şekilde YAPILANDIRILMAMALIDIR.
- [C-1-4] Geçerli uygulama,
android.hardware.Camera.setDisplayOrientation()yöntemi çağrısıyla Kamera ekranının döndürülmesini açıkça istediğinde kamera önizlemesi, uygulama tarafından belirtilen yöne göre yatay olarak yansıtılmalıdır. Aksine, mevcut 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şiyle manuel olarak):
- [C-2-1] Kamera önizlemesi, cihazın mevcut yönüne göre yatay olarak aynalanmalıdır.
7.5.3. Harici Kamera
Cihaz uygulamaları:
- Her zaman bağlı olması gerekmeyen harici bir kamera için destek içerebilir.
Cihaz uygulamaları harici kamera desteği içeriyorsa:
- [C-1-1] Platform özellik işaretini
android.hardware.camera.externalveandroid.hardware camera.anyBİLDİRMELİDİR. - [C-1-2] Harici kamera USB ana bağlantı noktası üzerinden bağlanıyorsa USB Video Class'ı (UVC 1.0 veya üzeri) DESTEKLEMELİDİR.
- [C-1-3] Fiziksel bir harici kamera cihazı bağlıyken kamera CTS testlerini GEÇMELİDİR. Kamera CTS testiyle ilgili ayrıntıları source.android.com adresinde bulabilirsiniz.
- Yüksek kaliteli kodlanmamış akışların (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırmalarını DESTEKLEMELİDİR.
- MAY, birden fazla kamerayı destekleyebilir.
- Kameraya dayalı video kodlamayı DESTEKLEYEBİLİR.
Kameraya dayalı video kodlama destekleniyorsa:
- [C-2-1] Eşzamanlı olarak kodlanmamış / MJPEG akışı (QVGA veya daha yüksek çözünürlük) cihaz uygulamasında ERİŞİLEBİLİR OLMALIDIR.
7.5.4. Kamera API'sinin Davranışı
Android, kameraya erişmek için iki API paketi içerir. Daha yeni olan android.hardware.camera2 API, uygulamaya daha düşük düzeyde kamera kontrolü sunar. Bu kontrol; verimli sıfır kopyalı seri çekim/akış akışları ve pozlama, kazanç, beyaz dengesi kazançları, renk dönüştürme, gürültü azaltma, keskinleştirme gibi özelliklerin kare başına kontrolünü içerir.
Eski API paketi,android.hardware.Camera, Android 5.0'da kullanımdan kaldırıldı olarak işaretlenir ancak uygulamaların kullanmaya devam edebilmesi gerekir. Android cihaz uygulamaları, bu bölümde ve Android SDK'da açıklandığı şekilde API'nin desteklenmeye devam etmesini SAĞLAMALIDIR.
Kullanımdan kaldırılan android.hardware.Camera sınıfı ile daha yeni olan android.hardware.camera2 paketi arasında ortak olan tüm özellikler, her iki API'de de eşdeğer performans ve kaliteye sahip OLMALIDIR. Örneğin, eşdeğer ayarlarda otomatik odaklama hızı ve doğruluğu aynı olmalı, çekilen görüntülerin kalitesi de aynı olmalıdır. İki API'nin farklı anlamsal yapısına bağlı özelliklerin eşleşen hıza veya kaliteye sahip olması gerekmez ancak mümkün olduğunca yakın olmalıdır.
Cihaz uygulamaları, mevcut tüm kameralar için kamerayla ilgili API'lerde aşağıdaki davranışları uygulamalıdır. Cihaz uygulamaları:
- [C-0-1] Bir uygulama hiçbir zaman
android.hardware.Camera.Parameters.setPreviewFormat(int)'u çağırmadığında, uygulama geri çağırmalarına sağlanan önizleme verileri içinandroid.hardware.PixelFormat.YCbCr_420_SPKULLANILMALIDIR. - [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 NV21 kodlama biçiminde OLMALIDIR. Yani NV21, varsayılan olmalıdır. - [C-0-3]
android.hardware.Cameraiçin hem ön hem de arka kameraların kamera önizlemelerinde YV12 biçimi (android.graphics.ImageFormat.YV12sabitiyle 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.availableCapabilitiesbölgesindeREQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLEcapability nesnesinin bildirme yapanandroid.hardware.camera2Cihazlar içinandroid.media.ImageReaderAS (kimlik doğrulama sunucusu)'si aracılığıyla çıkış olarakandroid.hardware.ImageFormat.YUV_420_888veandroid.hardware.ImageFormat.JPEGbiçimleri DESTEKLENMELİDİR. - [C-0-5] Cihazda donanım otomatik odaklama veya başka özellikler bulunup bulunmadığına bakılmaksızın, Android SDK dokümanlarında yer alan Camera API'nin tamamı uygulanmalıdır. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı tüm
android.hardware.Camera.AutoFocusCallbackörneklerini yine de çağırmalıdır (bu, otomatik odaklama özelliği olmayan bir kamera için geçerli olmasa da). Bu durumun öne bakan kameralar için de geçerli olduğunu unutmayın. Örneğin, öne bakan kameraların çoğu otomatik odaklamayı desteklemese de API geri çağırmaları yine de açıklandığı gibi "taklit edilmelidir". - [C-0-6]
android.hardware.Camera.Parameterssınıfında sabit olarak tanımlanan her parametre adını TANIMALI ve KABUL ETMELİDİR. Bunun aksine, cihaz uygulamalarıandroid.hardware.Camera.setParameters()yöntemine iletilen 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_HDRkamera parametresini DESTEKLEMELİDİR. - [C-0-7] Android SDK'da açıklandığı şekilde
android.info.supportedHardwareLevelözelliğiyle uygun destek düzeyini BİLDİRMELİ ve uygun çerçeve özellik işaretlerini BİLDİRMELİDİR. - [C-0-8]
android.hardware.camera2özelliğinin bireysel kamera özellikleriniandroid.request.availableCapabilitiesözelliği aracılığıyla beyan ETMELİ ve uygun özellik işaretlerini beyan ETMELİDİR. Ekli kamera cihazlarından herhangi biri özelliği destekliyorsa özellik işareti tanımlanmalıdır. - [C-0-9] Kamera ile yeni bir fotoğraf çekildiğinde ve fotoğrafın girişi medya deposuna eklendiğinde
Camera.ACTION_NEW_PICTUREamacı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_VIDEOamacını yayınLAMALIDIR. - [C-SR] Çerçeve tarafından desteklenen fiziksel kamera türü ve fiziksel kameralar için
CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVELdeğeriLIMITED,FULLveyaLEVEL_3olduğu sürece, aynı yöne bakan birden fazla kamerası olan cihazlarda, bu yöne bakan her fiziksel kameradan oluşan,CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERAcapability nesnesini listeleyen mantıksal bir kamera cihazını desteklemek ŞİDDETLE TAVSİYE EDİLİR.
7.5.5. Kamera yönü
Cihaz uygulamalarında ön veya arka kamera varsa bu kameralar:
- [C-1-1] Kameranın uzun boyutu, ekranın uzun boyutuyla aynı yönde OLMALIDIR. Yani cihaz yatay yönde tutulduğunda kameralar, görüntüleri yatay yönde çekmelidir. Bu, cihazın doğal yönünden bağımsız olarak geçerlidir. Yani, yatay yönü birincil olan cihazlar ve dikey yönü birincil olan cihazlar için geçerlidir.
7.6. Bellek ve Depolama
7.6.1. Minimum Bellek ve Depolama Alanı
Cihaz uygulamaları:
- [C-0-1] Uygulamaların veri dosyalarını indirmek için KULLANABİLECEĞİ bir İndirme Yöneticisi İÇERMELİDİR ve en az 100 MB boyutundaki dosyaları varsayılan "önbellek" konumuna indirebilmelidir.
7.6.2. Uygulama Ortak Depolama Alanı
Cihaz uygulamaları:
- [C-0-1] Uygulamalar tarafından paylaşılacak depolama alanı sunULMALIDIR. Bu alan genellikle "paylaşılan harici depolama alanı", "uygulama tarafından paylaşılan depolama alanı" veya üzerine monte edildiği Linux yolu "/sdcard" olarak da adlandırılır.
- [C-0-2] Depolama alanı, dahili depolama bileşeninde veya çıkarılabilir bir depolama ortamında (ör.Secure Digital kart yuvası) uygulanıp uygulanmadığına bakılmaksızın, varsayılan olarak monte edilmiş paylaşılan depolama alanı ile yapılandırılmalıdır. Diğer bir deyişle, "kullanıma hazır" olmalıdır.
- [C-0-3] Uygulama tarafından paylaşılan depolama alanı doğrudan Linux yoluna
sdcardeklenmeli veyasdcardkonumundan gerçek ekleme noktasına bir Linux sembolik bağlantısı içermelidir. - [C-0-4] SDK'da belirtildiği gibi, bu paylaşılan depolama alanında
android.permission.WRITE_EXTERNAL_STORAGEizni ZORUNLU olarak uygulanmalıdır. Paylaşılan depolama alanı, bu izni alan herhangi bir uygulama tarafından yazılabilir OLMALIDIR.
Cihaz uygulamaları, yukarıdaki koşulları aşağıdaki yöntemlerden birini kullanarak karşılayabilir:
- Kullanıcı tarafından erişilebilen çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası).
- Android Açık Kaynak Projesi'nde (AOSP) uygulanan dahili (çıkarılamayan) depolama alanının bir kısmı.
Cihaz uygulamaları yukarıdaki koşulları karşılamak için çıkarılabilir depolama birimi kullanıyorsa:
- [C-1-1] Yuvaya depolama ortamı takılmadığında kullanıcıyı uyaran bir kısa ileti veya pop-up kullanıcı arayüzü UYGULANMALIDIR.
- [C-1-2] FAT biçimli bir depolama ortamı (ör. SD kart) İÇERMELİ veya kutuda ve satın alma sırasında mevcut olan diğer materyallerde depolama ortamının ayrı olarak satın alınması gerektiği gösterilmelidir.
Cihaz uygulamaları yukarıdaki şartları karşılamak için çıkarılamayan depolama alanının bir kısmını kullanıyorsa:
- Dahili uygulama paylaşılan depolama alanının AOSP uygulamasını KULLANMALIDIR.
- Depolama alanını, uygulamanın özel verileriyle paylaşabilir.
Cihaz uygulamaları birden fazla paylaşılan depolama yolu (ör. hem SD kart yuvası hem de paylaşılan dahili depolama) içeriyorsa:
- [C-2-1] Paketlerine özel dizinlere veya
ACTION_OPEN_DOCUMENT_TREEamaçlı işlemi başlatarak döndürülenURIiçine yazma işlemi dışında, yalnızca önceden yüklenmiş ve ayrıcalıklı Android uygulamalarınınWRITE_EXTERNAL_STORAGEizniyle ikincil harici depolama alanına yazmasına İZİN VERİLMELİDİR.
Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:
- [C-3-1] Uygulamanın paylaşılan depolama alanındaki verilere ana bilgisayardan erişmek için bir mekanizma SAĞLANMALIDIR.
- Android'in medya tarayıcı hizmeti ve
android.provider.MediaStorearacılığıyla her iki depolama yolundaki içerikleri şeffaf bir şekilde kullanıma sunMALIDIR. - USB yığın depolama alanı KULLANILABİLİR ancak bu koşulu karşılamak için Medya Aktarım Protokolü KULLANILMALIDIR.
Cihaz uygulamalarında USB çevre birimi modu olan bir USB bağlantı noktası varsa ve Medya Aktarım Protokolü destekleniyorsa:
- Referans Android MTP ana makinesi Android Dosya Aktarımı ile uyumlu OLMALIDIR.
- 0x00 USB cihaz sınıfı bildirmelidir.
- "MTP" USB arayüzü adını bildirmelidir.
7.6.3. Dahili hale getirilebilir depolama alanı
Cihazın televizyon gibi sabit değil, mobil olması bekleniyorsa cihaz uygulamaları:
- [SR] Adaptable depolama biriminin uzun vadeli ve sabit bir konumda uygulanması ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, yanlışlıkla bağlantısının kesilmesi veri kaybına/bozulmasına neden olabilir.
Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya başka bir koruyucu kapak gibi uzun süreli sabit bir konumdaysa cihaz uygulamaları şunlardır:
- [SR] Dahili hale getirilebilir depolama alanı özelliğinin uygulanması KESİNLİKLE ÖNERİ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.SERIALaracılığıyla USB standart cihaz tanımlayıcısındaiSerialNumberdeğerini doğru şekilde bildirmelidir. - [C-1-3] Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını ALGILAMALI ve Type-C USB'yi destekliyorsa reklamdaki değişiklikleri ALGILAMALIDIR.
- [SR] Bağlantı noktası, micro-B, micro-AB veya Type-C USB form faktörünü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Bağlantı noktası, cihazın alt kısmında (doğal yönlendirmeye göre) yer almalıdır veya yazılım ekran döndürme özelliği tüm uygulamalar (ana ekran dahil) için etkinleştirilmelidir. Böylece, cihaz bağlantı noktası altta olacak şekilde yönlendirildiğinde ekran doğru şekilde çizilir. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] USB Pil Şarjı spesifikasyonu, revizyon 1.2'de belirtildiği gibi HS chirp ve trafik sırasında 1,5 A akım çekme desteği uygulamalıdır. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltilebilmesi için bu şartları karşılaması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya sink/source rollerini değiştiren tescilli şarj yöntemlerinin desteklenmemesi ŞİDDETLE TAVSİYE EDİLİR. Aksi takdirde, standart USB Güç Dağıtımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunları yaşanabilir. Bu durum "ŞİDDETLE TAVSİYE EDİLİR" olarak belirtilse de gelecekteki Android sürümlerinde tüm C tipi cihazların standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemesini ZORUNLU kılabiliriz.
- [SR] Type-C USB ve USB ana makine modunu desteklediklerinde veri ve güç rolü değiştirme için Güç Aktarımı'nın desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
- Yüksek voltajlı şarj için Güç Aktarımı'nı ve ekran çıkışı gibi Alternatif Modlar'ı desteklemelidir.
- Android SDK dokümanlarında belirtildiği gibi Android Open Accessory (AOA) API'sini ve spesifikasyonunu uygulamalıdır.
Cihaz uygulamaları bir USB bağlantı noktası içeriyorsa ve AOA spesifikasyonunu uyguluyorsa:
- [C-2-1]
android.hardware.usb.accessorydonanım özelliği için destek beyan EDİLMELİDİR. - [C-2-2] USB yığın depolama sınıfının arayüz açıklaması
iInterfacedizesinin 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.hostdonanım özelliği için destek beyan edilmelidir. - [C-1-2] Standart USB çevre birimlerinin bağlanması için destek sağlanmalıdır. Diğer bir deyişle, şunlardan biri YAPILMALIDIR:
- Cihaz üzerinde Type-C bağlantı noktası bulunmalı veya cihaz üzerinde bulunan tescilli bağlantı noktasını standart USB Type-C bağlantı noktasına (USB Type-C cihazı) uyarlayan kablolarla birlikte gönderilmelidir.
- Cihaz üzerinde A tipi bağlantı noktası bulunmalı veya cihaz üzerinde bulunan tescilli bağlantı noktasını standart USB A tipi bağlantı noktasına dönüştüren kablolarla birlikte gönderilmelidir.
- Cihazda, standart A tipi bağlantı noktasına uyarlanmış bir kabloyla birlikte gönderilmesi GEREKEN bir cihaz üzerinde micro-AB bağlantı noktası bulunmalıdır.
- [C-1-3] USB A veya micro-AB bağlantı noktalarını C tipi bağlantı noktasına (yuva) dönüştüren bir adaptörle birlikte gönderilmemelidir.
- [SR] Android SDK belgelerinde belirtildiği gibi USB ses sınıfının uygulanması ŞİDDETLE TAVSİYE EDİLİR.
- Ana makine modundayken bağlı USB çevre biriminin şarj edilmesini DESTEKLEMELİDİR.USB Type-C konnektörleri için USB Type-C Kablosu ve Konnektör Spesifikasyonu Revizyon 1.2'nin Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1,5 A kaynak akımı reklamını yapmalı veya Micro-AB konnektörleri için USB Pil Şarjı Spesifikasyonları, Revizyon 1.2'de belirtildiği gibi Şarj Edilen Aşağı Akım Bağlantı Noktası(CDP) çıkış akımı aralığını kullanmalıdır.
- USB Type-C standartlarını uygulamalı ve desteklemelidir.
Cihaz uygulamaları, ana makine modunu ve USB ses sınıfını destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-2-1] USB HID sınıfını desteklemelidir.
- [C-2-2] USB HID Kullanım Tabloları ve Sesli Komut Kullanım İsteği'nde belirtilen aşağıdaki HID veri alanlarının
KeyEventsabitleriyle 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şimi Çerçevesi'ni (SAF) destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-3-1] Uzaktan bağlanan tüm MTP (Medya Aktarım Protokolü) cihazları TANIMLAMALI ve içeriklerine
ACTION_GET_CONTENT,ACTION_OPEN_DOCUMENTveACTION_CREATE_DOCUMENTamaçları üzerinden erişilebilmesini SAĞLAMALIDIR. .
Cihaz uygulamaları, ana makine modunu ve USB Type-C'yi destekleyen bir USB bağlantı noktası içeriyorsa:
- [C-4-1] USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rol Bağlantı Noktası işlevselliği uygulanmalıdır.
- [SR] DisplayPort'u desteklemesi ŞİDDETLE TAVSİYE EDİLİR, USB SuperSpeed veri hızlarını desteklemesi GEREKİR ve veri ile güç rolü değiştirme için Güç Aktarımı'nı desteklemesi ŞİDDETLE TAVSİYE EDİLİR.
- [SR] USB Type-C Cable and Connector Specification Revision 1.2'nin Ek A bölümünde açıklandığı gibi Ses Adaptörü Aksesuar Modu'nun desteklenmemesi ŞİDDETLE TAVSİYE EDİLİR.
- Cihaz form faktörü için en uygun olan Try.* modelini uygulamalıdır. Örneğin, el cihazı Try.SNK modelini uygulamalıdır.
7.8. Ses
7.8.1. Mikrofon
Cihaz uygulamaları mikrofon içeriyorsa:
- [C-1-1]
android.hardware.microphoneözelliği sabitini bildirmelidir. - [C-1-2] 5.4 bölümündeki ses kaydı koşullarını KARŞILAMALIDIR.
- [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
- [SR] Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın kayıt özelliğini desteklemek için KESİNLİKLE ÖNERİLİR.
Cihaz uygulamalarında mikrofon yoksa:
- [C-2-1]
android.hardware.microphoneözelliği sabiti RAPORLANMAMALIDIR. - [C-2-2] 7. bölüm uyarınca ses kaydı API'si en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.
7.8.2. Ses Çıkışı
Cihaz uygulamaları, USB ses sınıfını kullanan 4 iletkenli 3,5 mm ses jakı veya USB ana makine modu bağlantı noktası gibi bir ses çıkışı çevre birimi için hoparlör ya da ses/multimedya çıkışı bağlantı noktası içeriyorsa:
- [C-1-1]
android.hardware.audio.outputözelliği sabitini bildirmelidir. - [C-1-2] Bölüm 5.5'teki ses çalma koşullarını KARŞILAMALIDIR.
- [C-1-3] Bölüm 5.6'daki ses gecikmesi koşullarını KARŞILAMALIDIR.
- [SR] 7.8.3 bölümünde açıklandığı gibi, ultrasona yakın oynatmayı desteklemeniz KESİNLİKLE ÖNERİLİR.
Cihaz uygulamalarında hoparlör veya ses çıkışı bağlantı noktası yoksa:
- [C-2-1]
android.hardware.audio.outputözelliği BİLDİRİLMEMELİDİR. - [C-2-2] Ses çıkışıyla ilgili API'ler en azından hiçbir işlem yapmayacak şekilde uygulanmalıdır.
Bu bölümün amaçları doğrultusunda "çıkış bağlantı noktası", USB ses sınıfına sahip 3, 5 mm ses jakı, HDMI veya USB ana makine modu bağlantı noktası gibi bir fiziksel arayüzdür. Bluetooth, kablosuz veya hücresel ağ gibi radyo tabanlı protokoller üzerinden ses çıkışı desteği, "çıkış bağlantı noktası" olarak kabul edilmez.
7.8.2.1. Analog Ses Bağlantı Noktaları
Android ekosisteminde 3,5 mm ses fişini kullanan kulaklıklar ve diğer ses aksesuarlarıyla uyumlu olabilmek için cihaz uygulamaları bir veya daha fazla analog ses bağlantı noktası içeriyorsa:
- [C-SR] Ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 4 iletkenli 3, 5 mm ses jakı varsa:
- [C-1-1] Stereo kulaklıklarda ve mikrofonlu stereo kulaklıklarda ses çalmayı DESTEKLEMELİDİR.
- [C-1-2] CTIA pin çıkışı sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR.
- [C-1-3] Ses fişindeki mikrofon ve toprak iletkenleri arasında aşağıdaki 3 eşdeğer empedans aralığı için algılama ve tuş kodlarına eşleme DESTEKLENMELİDİR:
-
70 ohm veya daha az:
KEYCODE_HEADSETHOOK -
210-290 ohm:
KEYCODE_VOLUME_UP -
360-680 ohm:
KEYCODE_VOLUME_DOWN
-
70 ohm veya daha az:
- [C-1-4] Fiş takıldığında
ACTION_HEADSET_PLUGtetiklenmelidir ancak yalnızca fişteki tüm kontaklar jak üzerindeki ilgili segmentlere dokunduktan sonra tetiklenmelidir. - [C-1-5] 32 ohm'luk hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
- [C-1-6] 1,8 V ~ 2,9 V arasında bir mikrofon önyargı voltajına SAHİP OLMALIDIR.
- [C-1-7] Ses fişindeki mikrofon ve toprak iletkenleri arasında aşağıdaki eşdeğer empedans aralığı için tuş kodunu algılamalı ve tuş koduyla eşlemelidir:
-
110-180 ohm:
KEYCODE_VOICE_ASSIST
-
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ı yapılması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamalarında 4 iletkenli 3,5 mm ses jakı varsa, mikrofon destekleniyorsa ve android.intent.action.HEADSET_PLUG, ek değer mikrofonu 1 olarak ayarlanmış şekilde yayınlanıyorsa:
- [C-2-1] Takılı ses aksesuarındaki mikrofonun algılanması DESTEKLENMELİDİR.
7.8.3. Near-Ultrasound
Yakın ultrasonik ses, 18,5 kHz ile 20 kHz arasındaki banttır.
Cihaz uygulamaları:
- AudioManager.getProperty API aracılığıyla yakın ultrason ses özelliği desteğini aşağıdaki şekilde doğru olarak bildirmelidir:
PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND değeri "true" ise VOICE_RECOGNITION ve UNPROCESSED ses kaynakları aşağıdaki koşulları KARŞILAMALIDIR:
- [C-1-1] Mikrofonun 18,5 kHz - 20 kHz bandındaki ortalama güç yanıtı, 2 kHz'deki yanıttan en fazla 15 dB daha düşük OLMALIDIR.
- [C-1-2] Mikrofonun 18,5 kHz - 20 kHz aralığındaki ağırlıksız sinyal-gürültü oranı, -26 dBFS'de 19 kHz ton için 50 dB'den düşük OLMAMALIDIR.
PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND "true" ise:
- [C-2-1] Hoparlörün 18,5 kHz - 20 kHz aralığındaki ortalama yanıtı, 2 kHz'deki yanıttan en fazla 40 dB daha düşük OLMALIDIR.
7.9. Sanal Gerçeklik
Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "sanal gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamaları, bu bölümde ayrıntılı olarak açıklandığı gibi bu API'leri ve davranışları düzgün bir şekilde uygulamalıdır.
7.9.1. Sanal Gerçeklik Modu
Android, bildirimlerin stereoskopik olarak oluşturulmasını sağlayan ve bir VR uygulaması kullanıcı odaklıyken tek gözle görülebilen sistem kullanıcı arayüzü bileşenlerini devre dışı bırakan VR Modu'nu destekler.
7.9.2. Sanal Gerçeklik Modu - Yüksek Performans
Cihaz uygulamaları VR modunu destekliyorsa:
- [C-1-1] En az 2 fiziksel çekirdeğe SAHİP OLMALIDIR.
- [C-1-2]
android.hardware.vr.high_performanceözelliğini BİLDİRMELİDİR. - [C-1-3] Sürekli performans modu desteklenmelidir.
- [C-1-4] OpenGL ES 3.2'yi DESTEKLEMELİDİR.
- [C-1-5]
android.hardware.vulkan.level0 desteklenmelidir. android.hardware.vulkan.level1 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_colorspaceuygulanmalı 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_texturesuygulanmalı ve uzantılar, kullanılabilir GL uzantıları listesinde gösterilmelidir. - [C-SR]
GL_EXT_external_buffer,GL_EXT_EGL_image_arrayuygulanması ve uzantıların, kullanılabilen GL uzantıları listesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] Vulkan 1.1'i desteklemeleri ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR]
VK_ANDROID_external_memory_android_hardware_buffer,VK_GOOGLE_display_timing,VK_KHR_shared_presentable_imageuygulanması ve kullanılabilir Vulkan uzantıları listesinde gösterilmesi ŞİDDETLE TAVSİYE EDİLİR. - [C-SR]
flagshemVK_QUEUE_GRAPHICS_BIThem deVK_QUEUE_COMPUTE_BIT'yi içerdiği vequeueCount'nin en az 2 olduğu en az bir Vulkan kuyruk ailesinin kullanıma sunulması ŞİDDETLE TAVSİYE EDİLİR. - [C-1-7] GPU ve ekran, paylaşılan ön arabelleğe erişimi senkronize edebilmelidir. Böylece, iki oluşturma bağlamıyla 60 FPS'de VR içeriğinin alternatif göz oluşturması, görünür yırtılma artefaktları olmadan gösterilir.
- [C-1-9] NDK'da açıklandığı gibi
AHardwareBufferişaretleriAHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER,AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATAveAHARDWAREBUFFER_USAGE_PROTECTED_CONTENTiçin destek uygulanmalıdır. - [C-1-10] En azından şu biçimler için
AHardwareBuffers'ninAHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT,AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE,AHARDWAREBUFFER_USAGE_PROTECTED_CONTENTkullanım işaretlerinin herhangi bir kombinasyonuyla desteklenmesi ZORUNLUDUR:AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM,AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM,AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM,AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT. - [C-SR]
AHardwareBuffer'ların birden fazla katmanla ve C-1-10'da belirtilen işaretler ve biçimlerle ayrılmasını desteklemek için ŞİDDETLE TAVSİYE EDİLİR. - [C-1-11] Sıkıştırılmış olarak ortalama 40 Mb/sn (30 kare/sn hızında 10 Mb/sn ile 1.920 x 1.080 çözünürlükte 4 örnek veya 60 kare/sn hızında 20 Mb/sn ile 1.920 x 1.080 çözünürlükte 2 örnek) ile en az 3.840 x 2.160 çözünürlükte ve 30 kare/sn hızında H.264 kod çözme işlemini desteklemelidir.
- [C-1-12] HEVC ve VP9'u DESTEKLEMELİ, ortalama 10 Mb/sn'ye sıkıştırılmış 30 kare/sn hızında en az 1.920 x 1.080 çözünürlükte kod çözme İŞLEMİNİ YAPABİLMELİ ve 30 kare/sn hızında 20 Mb/sn (30 kare/sn hızında 5 Mb/sn hızında 1.920 x 1.080 çözünürlükte 4 örneğe eşdeğer) hızında 3.840 x 2.160 çözünürlükte kod çözme İŞLEMİNİ YAPABİLMELİDİR.
- [C-1-13]
HardwarePropertiesManager.getDeviceTemperaturesAPI'yi desteklemeli ve deri sıcaklığı için doğru değerler döndürmelidir. - [C-1-14] Gömülü bir ekranı OLMALI ve çözünürlüğü EN AZ 1920 x 1080 olmalıdır.
- [C-SR] En az 2.560 x 1.440 ekran çözünürlüğüne sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-15] Ekran, VR modundayken en az 60 Hz'de güncellenmelidir.
- [C-1-17] Ekran, kalıcılığın 5 milisaniyeden kısa veya eşit olduğu düşük kalıcılık modunu desteklemelidir. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
- [C-1-18] Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı bölüm 7.4.3 desteklenmelidir.
- [C-1-19] Aşağıdaki varsayılan sensör türlerinin tümü için Doğrudan Kanal Türü'nü desteklemeli ve düzgün şekilde bildirmelidir:
-
TYPE_ACCELEROMETER -
TYPE_ACCELEROMETER_UNCALIBRATED -
TYPE_GYROSCOPE -
TYPE_GYROSCOPE_UNCALIBRATED -
TYPE_MAGNETIC_FIELD -
TYPE_MAGNETIC_FIELD_UNCALIBRATED
-
- [C-SR], yukarıda listelenen tüm Doğrudan Kanal Türleri için
TYPE_HARDWARE_BUFFERdoğrudan kanal türünü desteklemek üzere ŞİDDETLE TAVSİYE EDİLİR. - [C-1-21] 7.3.9 bölümünde belirtildiği gibi,
android.hardware.hifi_sensorsiçin jiroskop, ivme ölçer ve manyetometre ile ilgili şartları karşılamalıdır. - [C-SR]
android.hardware.sensor.hifi_sensorsözelliğini desteklemek için ŞİDDETLE TAVSİYE EDİLİR. - [C-1-22] Uçtan uca hareketten fotona gecikme süresi 28 milisaniyeden fazla OLMAMALIDIR.
- [C-SR] Uçtan uca hareketten fotona gecikme süresinin 20 milisaniyeden yüksek olmaması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-23] Siyah-beyaz geçişinden sonraki ilk karedeki piksellerin parlaklığı ile sabit durumdaki beyaz piksellerin parlaklığı arasındaki oran olan ilk kare oranı en az %85 OLMALIDIR.
- [C-SR] İlk kare oranının en az %90 olması KESİNLİKLE ÖNERİLİR.
- Ön plandaki uygulamaya özel bir çekirdek sağlayabilir ve
Process.getExclusiveCoresAPI'yi destekleyerek en üstteki ön plan uygulamasına özel CPU çekirdeklerinin sayısını döndürebilir.
Özel çekirdek destekleniyorsa çekirdek:
- [C-2-1] Üzerinde başka kullanıcı alanı işlemlerinin çalışmasına izin VERMEMELİDİR (uygulama tarafından kullanılan cihaz sürücüleri hariç), ancak gerektiğinde bazı çekirdek işlemlerinin çalışmasına İZİN VEREBİLİR.
8. Performans ve Güç
Minimum performans ve güç ölçütlerinden bazıları, kullanıcı deneyimi açısından kritik öneme sahiptir ve geliştiricilerin uygulama geliştirirken sahip olacağı temel varsayımları etkiler.
8.1. Kullanıcı Deneyimi Tutarlılığı
Uygulamalar ve oyunlar için tutarlı bir kare hızı ve yanıt süreleri sağlamak üzere belirli minimum gereksinimler varsa son kullanıcıya sorunsuz bir kullanıcı arayüzü sunulabilir. Cihaz uygulamaları, cihaz türüne bağlı olarak 2. bölümde açıklandığı gibi kullanıcı arayüzü gecikmesi ve görev değiştirme için ölçülebilir şartlara SAHİP OLABİLİR.
8.2. Dosya G/Ç Erişim Performansı
Uygulamanın özel veri depolama alanında (/data bölümü) tutarlı bir dosya erişimi performansı için ortak bir temel oluşturmak, uygulama geliştiricilerin yazılım tasarımlarına yardımcı olacak uygun beklentiler belirlemesine olanak tanır. Cihaz uygulamaları, cihaz türüne bağlı olarak aşağıdaki okuma ve yazma işlemleri için 2. bölümde açıklanan belirli şartlara sahip OLABİLİR:
- Sıralı yazma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
- Rastgele yazma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya yazma işlemiyle ölçülmüştür.
- Sıralı okuma performansı. 10 MB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.
- Rastgele okuma performansı. 4 KB yazma arabelleği kullanılarak 256 MB'lık bir dosya okunarak ölçülmüştür.
8.3. Güç tasarrufu modları
Cihaz uygulamaları, AOSP'de yer alan veya AOSP'de yer alan özellikleri genişleten, cihaz güç yönetimini iyileştirmeye yönelik özellikler içeriyorsa:
- [C-1-1] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarının tetikleme, bakım, uyandırma algoritmaları ve genel sistem ayarlarının kullanımı için AOSP uygulamasından sapılMAMALIDIR.
- [C-1-2] Uygulama bekleme modunda her paketteki uygulamalar için işlerin, alarmın ve ağın sıklık sınırını yönetmek üzere genel ayarların kullanımında AOSP uygulamasından sapılMAMALIDIR.
- [C-1-3] Uygulama Bekletme için kullanılan Uygulama Bekletme Grupları sayısı bakımından AOSP uygulamasından sapılMAMALIDIR.
- [C-1-4] Uygulama Bekletme Grupları ve Doze, Güç Yönetimi'nde açıklandığı şekilde uygulanMALIDIR.
- [C-1-5] Cihaz güç tasarrufu modundayken
PowerManager.isPowerSaveMode()içintruedöndürülmelidir. - [C-SR] Pil Tasarrufu özelliğini etkinleştirme ve devre dışı bırakma konusunda kullanıcıya uygunluk sağlamak ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarından muaf olan tüm uygulamaları görüntülemek için kullanıcıya olanak tanınması KESİNLİKLE ÖNERİLİR.
Android cihaz uygulamaları, güç tasarrufu modlarına ek olarak Advanced Configuration and Power Interface (ACPI) tarafından tanımlanan 4 uyku güç durumunun herhangi birini veya tümünü uygulayabilir.
Cihaz uygulamaları, ACPI tarafından tanımlanan S4 güç durumlarını uyguluyorsa:
- [C-1-1] YALNIZCA kullanıcı cihazı etkin olmayan bir duruma getirmek için açık bir işlem yaptıktan sonra (ör. cihazın fiziksel bir parçası olan bir kapağı kapatarak veya bir aracı ya da televizyonu kapatarak) ve kullanıcı cihazı yeniden etkinleştirmeden önce (ör. kapağı açarak veya aracı ya da televizyonu tekrar açarak) bu duruma girmelidir.
Cihaz uygulamaları, ACPI tarafından tanımlanan S3 güç durumlarını uyguluyorsa:
-
[C-2-1] Yukarıdaki C-1-1 koşulunu KARŞILAMALI veya yalnızca üçüncü taraf uygulamalarının sistem kaynaklarına (ör. ekran, CPU) ihtiyacı olmadığında S3 durumuna girmelidir.
Aksine, üçüncü taraf uygulamaların sistem kaynaklarına ihtiyacı olduğunda bu SDK'da açıklandığı gibi S3 durumundan çıkılmalıdır.
Örneğin, üçüncü taraf uygulamaları
FLAG_KEEP_SCREEN_ONaracılığıyla ekranın açık kalmasını veyaPARTIAL_WAKE_LOCKaracılığıyla CPU'nun çalışmaya devam etmesini isterken, C-1-1'de açıklandığı gibi kullanıcı cihazı etkin olmayan bir duruma getirmek için açıkça işlem yapmadığı sürece cihaz S3 durumuna GİRMEMELİDİR. Bunun aksine, üçüncü taraf uygulamalarının JobScheduler aracılığıyla uyguladığı bir görev tetiklendiğinde veya Firebase Cloud Messaging üçüncü taraf uygulamalarına teslim edildiğinde, kullanıcı cihazı etkin olmayan bir duruma getirmediği sürece cihaz S3 durumundan çıkmalıdır. Bunlar kapsamlı örnekler değildir ve AOSP, bu durumdan uyandırmayı tetikleyen kapsamlı uyandırma sinyalleri uygular.
8.4. Güç Tüketimi Muhasebesi
Güç tüketiminin daha doğru bir şekilde muhasebeleştirilmesi ve raporlanması, uygulama geliştiriciye hem teşvikler hem de uygulamanın güç kullanım şeklini optimize etme araçları sağlar.
Cihaz uygulamaları:
- [SR] Android Açık Kaynak Projesi sitesinde belgelendiği şekilde, her donanım bileşeninin akım tüketimi değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pilin hızlı tükenmesini tanımlayan, bileşen başına güç profili sağlanması ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Tüm güç tüketimi değerlerinin miliamper saat (mAh) cinsinden bildirilmesi ŞİDDETLE TAVSİYE EDİLİR.
- [SR] Her işlemin UID'si başına CPU güç tüketiminin bildirilmesi KESİNLİKLE ÖNERİLİR. Android Açık Kaynak Projesi,
uid_cputimeçekirdek modülü uygulamasıyla bu şartı karşılar. - [SR] Bu güç kullanımının uygulama geliştiriciye
adb shell dumpsys batterystatskabuk komutu aracılığıyla sunulması KESİNLİKLE ÖNERİLİR. - Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemiyorsa donanım bileşeninin kendisine atfedilmelidir.
8.5. Tutarlı Performans
Yüksek performanslı ve uzun süre çalışan uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırları nedeniyle CPU'nun hızının düşürülmesi yüzünden önemli ölçüde değişebilir. Android, cihazın kapasitesi yeterli olduğunda en üstteki ön plan uygulamasının, sistemden kaynakların tahsisini optimize etmesini isteyebilmesi için programatik arayüzler içerir.
Cihaz uygulamaları:
-
[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] MUST provide the top foreground application a consistent level of performance for at least 30 minutes, when the app requests it.
- [C-1-2]
Window.setSustainedPerformanceMode()API'si ve diğer ilgili API'ler KULLANILMALIDIR.
Cihaz uygulamaları iki veya daha fazla CPU çekirdeği içeriyorsa:
- En az bir özel çekirdek sağlamalıdır. Bu çekirdek, ön plandaki en üst uygulama tarafından ayrılabilir.
Cihaz uygulamaları, en üstteki ön plan uygulaması için özel bir çekirdek ayırmayı destekliyorsa:
- [C-2-1] Üstteki ön plan uygulaması tarafından ayrılabilen özel çekirdeklerin kimlik numaralarını
Process.getExclusiveCores()API yöntemiyle bildirmelidir. - [C-2-2] Uygulamanın özel çekirdeklerde çalışması için kullanılan cihaz sürücüleri dışında hiçbir kullanıcı alanı sürecine izin VERİLMEMELİDİR ancak gerektiğinde bazı çekirdek süreçlerinin çalışmasına İZİN VERİLEBİLİR.
Cihaz uygulamaları özel bir çekirdeği desteklemiyorsa:
- [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 platform güvenlik modeliyle tutarlı bir güvenlik modeli uygulamalıdır.
-
[C-0-2] Üçüncü taraflardan/yetkililerden ek izinler/sertifikalar gerektirmeden, kendi kendine imzalanmış uygulamaların yüklenmesini DESTEKLEMELİDİR. Daha net bir ifadeyle, uyumlu cihazlar, aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını DESTEKLEMELİDİR.
9.1. İzinler
Cihaz uygulamaları:
-
[C-0-1] Android geliştirici belgelerinde tanımlandığı şekilde Android izin modelini DESTEKLEMELİDİR. Özellikle, SDK belgelerinde tanımlandığı şekilde her izni uygulamaları ZORUNLUDUR. Hiçbir izin atlanamaz, değiştirilemez veya göz ardı edilemez.
-
Yeni izin kimliği dizeleri
android.\*ad alanında olmadığı sürece ek izinler EKLENEBİLİR. -
[C-0-2]
protectionLeveldeğeriPROTECTION_FLAG_PRIVILEGEDolan izinler YALNIZCA sistem görüntüsünün ayrıcalıklı yollarında önceden yüklenmiş uygulamalara ve her uygulama için açıkça izin verilenler listesindeki izinlerin alt kümesine verilmelidir. AOSP uygulaması,etc/permissions/yolundaki dosyalardan her uygulama için izin verilenler listesindeki izinleri okuyup uygulayarak ve ayrıcalıklı yol olaraksystem/priv-appyolunu kullanarak bu şartı karşılar.
Tehlikeli koruma düzeyine sahip izinler, çalışma zamanı izinleridir. targetSdkVersion ve üzeri sürümlere sahip uygulamalar, çalışma zamanında bunları ister.
Cihaz uygulamaları:
- [C-0-3] Kullanıcının istenen çalışma zamanı izinlerini verip vermeyeceğine karar verebileceği özel bir arayüz göstermeli ve kullanıcının çalışma zamanı izinlerini yönetebileceği bir arayüz sağlamalıdır.
- [C-0-4] Her iki kullanıcı arayüzünün de yalnızca bir uygulaması OLMALIDIR.
- [C-0-5] Önceden yüklenmiş uygulamalara şu durumlar hariç çalışma zamanı izni VERİLMEMELİDİR:
- Kullanıcının izni, uygulama kullanmadan önce alınabilir.
- Çalışma zamanında istenen izinler, önceden yüklenmiş uygulamanın varsayılan işleyici olarak ayarlandığı bir amaç kalıbıyla ilişkilendirilir.
- [C-0-6] YALNIZCA uygun şekilde güvenli bir kurtarma aracısı kaydeden sistem uygulamalarına
android.permission.RECOVER_KEYSTOREizni VERİLMELİDİR. Düzgün şekilde güvenliği sağlanmış bir kurtarma aracısı, cihaz dışı uzak depolama ile senkronize olan, cihaz üzerinde çalışan bir yazılım aracısı olarak tanımlanır. Bu aracılar, kilit ekranı bilgi faktörüne yönelik deneme yanılma saldırılarını önlemek için Google Cloud Key Vault Hizmeti'nde açıklanan korumaya eşdeğer veya daha güçlü bir koruma sağlayan güvenli donanımla donatılmıştır.
Cihaz uygulamaları önceden yüklenmiş bir uygulama içeriyorsa veya üçüncü taraf uygulamalarının kullanım istatistiklerine erişmesine izin vermek istiyorsa:
- [SR]
android.permission.PACKAGE_USAGE_STATSiznini beyan eden uygulamalar içinandroid.settings.ACTION_USAGE_ACCESS_SETTINGSamacına yanıt olarak kullanım istatistiklerine erişim izni vermek veya erişimi iptal etmek için kullanıcı tarafından erişilebilen bir mekanizma sağlaması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları, önceden yüklenmiş uygulamalar da dahil olmak üzere uygulamaların kullanım istatistiklerine erişmesini engellemeyi amaçlıyorsa:
- [C-1-1]
android.settings.ACTION_USAGE_ACCESS_SETTINGSamaç kalıbını işleyen bir etkinliğe sahip olmaya DEVAM ETMELİ ancak bunu no-op olarak uygulamalıdır. Yani, kullanıcıya erişim reddedildiğinde olduğu gibi eşdeğer bir davranışa sahip olmalıdır.
9.2. UID ve işlem izolasyonu
Cihaz uygulamaları:
- [C-0-1] Her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alanı modeli DESTEKLENMELİDİR.
- [C-0-2] Uygulamaların Güvenlik ve İzinler referansında tanımlandığı şekilde uygun şekilde imzalanıp oluşturulması koşuluyla, aynı Linux kullanıcı kimliği olarak birden fazla uygulamanın çalıştırılmasını DESTEKLEMELİDİR.
9.3. Dosya Sistemi İzinleri
Cihaz uygulamaları:
- [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 açıklandığı gibi Android uygulaması olmalı ve standart Android güvenlik modeline uymalıdır.
-
[C-0-2] Alternatif çalışma zamanlarına, çalışma zamanının
AndroidManifest.xmldosyasında istenmeyen izinlerle korunan kaynaklara <uses-permission> mekanizması aracılığıyla erişim izni VERİLMEMELİDİR. -
[C-0-3] Alternatif çalışma zamanları, uygulamaların sistem uygulamalarıyla sınırlı Android izinleriyle korunan özelliklerden yararlanmasına İZİN VERMEMELİDİR.
-
[C-0-4] Alternatif çalışma zamanları, Android korumalı alan modeline uymalıdır ve alternatif çalışma zamanı kullanılarak yüklenen uygulamalar, paylaşılan kullanıcı kimliği ve imzalama sertifikasının standart Android mekanizmaları dışında, cihazda yüklü başka bir uygulamanın korumalı alanını yeniden kullanmamalıdır.
-
[C-0-5] Alternatif çalışma zamanları, diğer Android uygulamalarına karşılık gelen sanal ortamlara erişim başlatmamalı, bu ortamlara erişim izni vermemeli veya bu ortamlara erişim izni almamalıdır.
-
[C-0-6] Alternatif çalışma zamanları, süper kullanıcı (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılMAMALI, bu ayrıcalıklar verilMEMELİ ya da diğer uygulamalara verilMEMELİDİR.
-
[C-0-7] Alternatif çalışma zamanlarının
.apkdosyaları 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ı
PackageManageraracılığıyla ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir. -
Alternatif çalışma zamanları, alternatif çalışma zamanını kullanan tüm uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlayabilir.
9.5. Çoklu Kullanıcı Desteği
Android, birden fazla kullanıcıyı destekler ve kullanıcıların tamamen izole edilmesini sağlar.
- Cihaz uygulamaları, birincil harici depolama için çıkarılabilir medya kullanıyorsa çok kullanıcılı modu etkinleştirebilir ancak etkinleştirmemelidir.
Cihaz uygulamaları birden fazla kullanıcı içeriyorsa:
- [C-1-1] Çoklu kullanıcı desteği ile ilgili aşağıdaki şartları KARŞILAMALIDIR.
- [C-1-2] API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde, her kullanıcı için Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli UYGULAMALIDIR.
- [C-1-3] Her kullanıcı örneği için ayrı ve yalıtılmış paylaşılan uygulama depolama alanı (diğer adıyla
/sdcard) dizinleri OLMALIDIR. - [C-1-4] Belirli bir kullanıcıya ait olan ve bu kullanıcı adına çalışan uygulamaların, her iki kullanıcının verileri aynı birimde veya dosya sisteminde depolansa bile başka bir kullanıcıya ait dosyaları listelemesine, okumasına ya da bu dosyalara yazmasına İZİN VERİLMEMELİDİR.
- [C-1-5] Cihaz uygulamaları harici depolama API'leri için çıkarılabilir medya kullanıyorsa çok kullanıcılı mod etkinleştirildiğinde SD kartın içeriği, yalnızca sistemin erişebildiği, çıkarılamayan medyada depolanan bir anahtarla ŞİFRELENMELİDİR. Bu durum, ana bilgisayarın medyayı okuyamamasına neden olacağından cihaz uygulamalarının, ana bilgisayarlara mevcut kullanıcının verilerine erişim sağlamak için MTP'ye veya benzer bir sisteme geçmesi gerekecektir.
Cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini bildirmezse:
- [C-2-1] Cihaz sahiplerinin cihazdaki ek kullanıcıları ve bu kullanıcıların özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlı profiller desteklenmelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamları hızlıca oluşturabilir ve bu ortamlarda kullanılabilen uygulamalarda daha ayrıntılı kısıtlamalar uygulayabilir.
Cihaz uygulamaları birden fazla kullanıcı içeriyorsa ve android.hardware.telephony özellik işaretini bildiriyorsa:
- [C-3-1] Kısıtlanmış profilleri desteklememeli ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için kontrollerin AOSP uygulamasıyla uyumlu olmalıdır.
9.6. Premium SMS Uyarısı
Android, kullanıcıları giden premium SMS mesajları konusunda uyarmayı destekler. Premium SMS iletileri, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıya ücret yansıtılmasına neden olabilecek kısa mesajlardır.
Cihaz uygulamaları android.hardware.telephony desteğini beyan ediyorsa:
- [C-1-1] Cihazdaki
/data/misc/sms/codes.xmldosyasında tanımlanan normal ifadelerle belirlenen numaralara SMS mesajı göndermeden önce kullanıcıları UYARMALIDIR. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılayan bir uygulama sağlar.
9.7. Security Features
Cihaz uygulamaları, hem çekirdekte hem de platformda aşağıdaki gibi açıklanan güvenlik özelliklerine uygunluğu sağlamalıdır.
Android korumalı alanı, Security-Enhanced Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikleri içerir. Cihaz uygulamaları:
- [C-0-1] SELinux veya diğer güvenlik özellikleri Android çerçevesinin altında uygulanmış olsa bile mevcut uygulamalarla uyumluluk KORUNMALIDIR.
- [C-0-2] Aşağıdaki Android çerçevesinin altında uygulanan güvenlik özelliği tarafından bir güvenlik ihlali tespit edilip başarıyla engellendiğinde görünür bir kullanıcı arayüzüne SAHİP OLMAMALI, ancak engellenmemiş bir güvenlik ihlali meydana gelip başarılı bir saldırıya yol açtığında görünür bir kullanıcı arayüzüne SAHİP OLABİLİR.
- [C-0-3] SELinux'u veya Android çerçevesinin altında uygulanan diğer güvenlik özelliklerini kullanıcı ya da uygulama geliştirici tarafından yapılandırılabilir HALE GETİRMEMELİDİR.
- [C-0-4] Bir API (ör. Cihaz Yönetimi API'si) aracılığıyla başka bir uygulamayı etkileyebilen bir uygulamanın, uyumluluğu bozan bir politika yapılandırmasına İZİN VERİLMEMELİDİR.
- [C-0-5] Medya çerçevesi, Android Açık Kaynak Projesi sitesinde açıklandığı gibi her işlem için daha sınırlı erişim izni verilebilecek şekilde birden fazla işleme bölünmelidir.
- [C-0-6] Çok iş parçacıklı programlardan yapılandırılabilir bir politika kullanılarak sistem çağrılarının filtrelenmesine olanak tanıyan bir çekirdek uygulama korumalı alan mekanizması UYGULANMALIDIR. Yukarı akış Android Açık Kaynak Projesi, source.android.com'un çekirdek yapılandırması bölümünde açıklandığı gibi iş parçacığı grubu senkronizasyonu (TSYNC) ile seccomp-BPF'yi etkinleştirerek bu koşulu karşılar.
Çekirdek bütünlüğü ve kendi kendini koruma özellikleri, Android güvenliğinin ayrılmaz bir parçasıdır. Cihaz uygulamaları:
- [C-0-7] Çekirdek yığını arabellek taşması korumaları (ör.
CONFIG_CC_STACKPROTECTOR_STRONG) UYGULANMALIDIR. - [C-0-8] Çalıştırılabilir kodun salt okunur, salt okunur verilerin çalıştırılamaz ve yazılamaz, yazılabilir verilerin ise çalıştırılamaz olduğu (ör.
CONFIG_DEBUG_RODATAveyaCONFIG_STRICT_KERNEL_RWX) sıkı çekirdek belleği korumaları UYGULANMALIDIR. - [C-0-9] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda, kullanıcı alanı ile çekirdek alanı arasındaki kopyaların statik ve dinamik nesne boyutu sınırları kontrolünü (ör.
CONFIG_HARDENED_USERCOPY) uygulamalıdır. - [C-0-10] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda çekirdek modunda yürütülürken kullanıcı alanı belleği yürütülmemelidir (ör. donanım PXN veya
CONFIG_CPU_SW_DOMAIN_PANya daCONFIG_ARM64_SW_TTBR0_PANaracılığıyla emüle edilmiş). - [C-0-11] Başlangıçta API düzeyi 28 veya daha yüksek bir sürümle gönderilen cihazlarda, çekirdekteki kullanıcı alanı belleği normal kullanıcı kopyası erişim API'leri (ör. donanım PAN veya
CONFIG_CPU_SW_DOMAIN_PANya daCONFIG_ARM64_SW_TTBR0_PANüzerinden emüle edilmiş) dışında okuma veya yazma İŞLEMİ YAPILMAMALIDIR. - [C-0-12] API düzeyi 28 veya daha yüksek bir sürümle birlikte gönderilen tüm cihazlarda (ör.
CONFIG_PAGE_TABLE_ISOLATIONveya "CONFIG_UNMAP_KERNEL_AT_EL0) çekirdek sayfası tablosu izolasyonu uygulanmalıdır. - [SR] Yalnızca başlatma sırasında yazılan çekirdek verilerinin, başlatma işleminden sonra salt okunur olarak işaretlenmesi (ör.
__ro_after_init) KESİNLİKLE ÖNERİLİR. - [SR] Çekirdek kodu ve belleğin düzeninin rastgele hale getirilmesi ve rastgele hale getirme işlemini tehlikeye atacak ifşalardan (ör.
CONFIG_RANDOMIZE_BASE/chosen/kaslr-seed Device Tree nodeveyaEFI_RNG_PROTOCOLaracılığıyla önyükleyici entropisi) kaçınılması ŞİDDETLE TAVSİYE EDİLİR.
Cihaz uygulamaları Linux çekirdeği kullanıyorsa:
- [C-1-1] SELinux'u uygulamalıdır.
- [C-1-2] SELinux, genel zorlama moduna AYARLANMALIDIR.
- [C-1-3] Tüm alanlar zorunlu kılma modunda yapılandırılmalıdır. Cihaza/tedarikçiye özgü alanlar da dahil olmak üzere izin verilen mod alanlarına izin verilmez.
- [C-1-4] Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy klasöründe bulunan neverallow kuralları değiştirilmemeli, atlanmamalı veya bunların yerine başka kurallar konulmamalıdır. Politika, hem AOSP SELinux alanları hem de cihaza/tedarikçiye özel alanlar için mevcut tüm neverallow kurallarıyla derlenmelidir.
- [C-1-5] API düzeyi 28 veya daha yüksek sürümleri hedefleyen üçüncü taraf uygulamaları, her uygulamanın özel veri dizininde uygulama başına SELinux kısıtlamalarıyla uygulama başına SELinux sanal alanlarında ÇALIŞTIRILMALIDIR.
- Android Açık Kaynak Projesi'nin yukarı akışındaki system/sepolicy klasöründe sağlanan varsayılan SELinux politikasını KORUMALI ve yalnızca kendi cihaza özel yapılandırmaları için bu politikaya eklemeler YAPMALIDIR.
Cihaz uygulamaları daha önceki bir Android sürümünde kullanıma sunulduysa ve sistem yazılımı güncellemesiyle [C-1-1] ve [C-1-5] şartlarını karşılayamıyorsa bu şartlardan MUAF TUTULABİLİR.
Cihaz uygulamaları Linux dışında bir çekirdek kullanıyorsa:
- [C-2-1] SELinux'a eşdeğer zorunlu bir erişim denetimi sistemi KULLANILMALIDIR.
Android, cihaz güvenliğinin ayrılmaz bir parçası olan birden fazla derinlemesine savunma özelliği içerir.
Cihaz uygulamaları:
- [C-SR] Üzerinde etkinleştirilmiş olan bileşenlerde Kontrol Akışı Bütünlüğü (CFI) veya Tam Sayı Taşması Temizleme (IntSan) özelliğinin devre dışı bırakılmaması ŞİDDETLE TAVSİYE EDİLİR.
- [C-SR] CFI ve IntSan'da açıklandığı gibi, ek güvenlik açısından hassas kullanıcı alanı bileşenleri için hem CFI hem de IntSan'ın etkinleştirilmesi ŞİDDETLE TAVSİYE EDİLİR.
9.8. Gizlilik
9.8.1. Kullanım Geçmişi
Android, kullanıcının seçimlerinin geçmişini saklar ve bu geçmişi UsageStatsManager ile yönetir.
Cihaz uygulamaları:
- [C-0-1] Bu tür kullanıcı geçmişi için makul bir saklama süresi belirlenmelidir.
- [SR] AOSP uygulamasında varsayılan olarak yapılandırılan 14 günlük saklama süresinin korunması ŞİDDETLE TAVSİYE EDİLİR.
Android, sistem etkinliklerini StatsLog tanımlayıcılarını kullanarak depolar ve bu tür geçmişi StatsManager ile IncidentManager System API aracılığıyla yönetir.
Cihaz uygulamaları:
- [C-0-2] MUST only include the fields marked with
DEST_AUTOMATICin the incident report created by the System API classIncidentManager. - [C-0-3]
StatsLogSDK dokümanlarında açıklanan etkinlikler dışında başka bir etkinliği günlüğe kaydetmek için sistem etkinliği tanımlayıcıları KULLANILMAMALIDIR. Ek sistem etkinlikleri kaydedilirse 100.000 ile 200.000 arasındaki farklı bir atom tanımlayıcısı KULLANILABİLİR.
9.8.2. Kayıt
Cihaz uygulamaları:
- [C-0-1] Kullanıcının izni olmadan veya devam eden net bildirimler olmadan kullanıcının özel bilgilerini (ör. tuş vuruşları, ekranda gösterilen metin) cihazdan gönderen yazılım bileşenleri kutudan çıkarıldığında önceden yüklenmemeli veya dağıtılmamalıdır.
Cihaz uygulamaları, ekranda gösterilen içerikleri yakalayan ve/veya cihazda oynatılan ses akışını kaydeden işlevler içeriyorsa:
- [C-1-1] Bu işlev etkinleştirildiğinde ve aktif olarak yakalama/kayıt yaparken kullanıcıya sürekli bir bildirim GÖSTERİLMELİDİR.
Cihaz uygulamaları, kullanıcının bağlamı hakkında faydalı bilgiler çıkarmak için ortam sesini kaydetme özelliğine sahip, kutudan çıkarıldığında etkinleştirilmiş bir bileşen içeriyorsa:
- [C-2-1] Kaydedilen ham ses veya orijinal sese ya da neredeyse aynı olan bir kopyaya geri dönüştürülebilen herhangi bir biçim, kullanıcının açık izni olmadan cihaz üzerinde kalıcı depolama alanında saklanmamalı veya cihazdan iletilmemelidir.
9.8.3. Bağlantı
Cihaz uygulamalarında USB çevre birimi modu desteği olan bir USB bağlantı noktası varsa:
- [C-1-1] USB bağlantı noktası üzerinden paylaşılan depolama alanının içeriğine erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü SUNULMALIDIR.
9.8.4. Ağ Trafiği
Cihaz uygulamaları:
- [C-0-1] Sistem tarafından güvenilen Sertifika Yetkilisi (CA) deposu için, yukarı akış Android Açık Kaynak Projesi'nde sağlanan kök sertifikaların aynısını önceden yüklemelidir.
- [C-0-2] Boş bir kullanıcı kök CA deposuyla gönderilmelidir.
- [C-0-3] Kullanıcı kök CA'sı eklendiğinde, ağ trafiğinin izlenebileceğini belirten bir uyarı kullanıcıya GÖSTERİLMELİDİR.
Cihaz trafiği VPN üzerinden yönlendiriliyorsa cihaz uygulamaları:
- [C-1-1] Kullanıcıya aşağıdakilerden birini belirten bir uyarı GÖSTERMELİDİR:
- Bu ağ trafiği izlenebilir.
- Bu ağ trafiği, VPN'yi sağlayan belirli VPN uygulaması üzerinden yönlendirilir.
Cihaz uygulamalarında, ağ verisi trafiğini bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren (örneğin, android.permission.CONTROL_VPN izniyle bir VPN hizmetini önceden yükleme) ve varsayılan olarak kutudan çıkarıldığında etkin olan bir mekanizma varsa:
- [C-2-1] Söz konusu VPN,
DevicePolicyManager.setAlwaysOnVpnPackage()aracılığıyla Cihaz Politikası Denetleyicisi tarafından etkinleştirilmediği sürece bu mekanizmayı etkinleştirmeden önce kullanıcının izni İSTENMELİDİR. Bu durumda kullanıcının ayrı bir izin vermesi gerekmez, yalnızca bilgilendirilmesi YETERLİDİR.
Cihaz uygulamaları, üçüncü taraf VPN uygulamasının "her zaman açık VPN" işlevini etkinleştirmek için kullanıcıya bir kolaylık sunuyorsa:
- [C-3-1]
AndroidManifest.xmldosyasında her zaman açık VPN hizmetini desteklemeyen uygulamalar için bu kullanıcı kolaylığını,SERVICE_META_DATA_SUPPORTS_ALWAYS_ONözelliğinifalseolarak ayarlayarak DEVRE DIŞI BIRAKMALIDIR.
9.9. Veri Depolama Şifrelemesi
Cihazda bulunan en yüksek performanslı AES teknolojisi (ör. ARM Cryptography Extensions) ile ölçülen Gelişmiş Şifreleme Standardı (AES) kripto performansı 50 MiB/sn'nin üzerindeyse cihaz uygulamaları:
- [C-1-1] Genellikle paylaşılan cihaz uygulamaları (ör. televizyon) hariç olmak üzere, cihazın kalıcı ve çıkarılamayan bir parçasıysa uygulama özel verilerinin (
/databölümü) yanı sıra uygulama ortak depolama bölümünün (/sdcardbölümü) veri depolama şifrelemesini destekLEMELİDİR. - [C-1-2] Genellikle paylaşılan cihaz uygulamaları (ör. televizyon) hariç olmak üzere, kullanıcı kutudan çıkarma kurulum deneyimini tamamladığında veri depolama şifrelemesi varsayılan olarak ETKİNLEŞTİRİLMELİDİR.
AES şifreleme performansı 50 MiB/sn veya daha düşükse cihaz uygulamaları, aşağıdakilerin herhangi birinde listelenen AES biçimi yerine Adiantum-XChaCha12-AES kullanabilir: Bölüm 9.9.2'deki AES-256-XTS [C-1-5]; Bölüm 9.9.2'deki CBS-CTS modunda AES-256 [C-1-6]; Bölüm 9.9.3'teki AES [C-1-1]; Bölüm 9.9.3'teki AES [C-1-3].
Cihaz uygulamaları daha önceki bir Android sürümünde kullanıma sunulduysa ve sistem yazılımı güncellemesiyle şartı karşılayamıyorsa yukarıdaki şartlardan MUAF TUTULABİLİR.
Cihaz uygulamaları:
- 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 Doğrudan Başlatma modu API'lerini uygulamalıdır.
-
[C-0-2]
ACTION_LOCKED_BOOT_COMPLETEDveACTION_USER_UNLOCKEDamaçları, doğrudan başlatmaya uygun uygulamalara cihaz şifreli (DE) ve kimlik bilgisi şifreli (CE) depolama konumlarının kullanıcı tarafından kullanılabildiğini bildirmek için yayınlanmaya DEVAM ETMELİDİR.
9.9.2. Dosya Tabanlı Şifreleme
Cihaz uygulamaları FBE'yi destekliyorsa:
- [C-1-1] Kullanıcıdan kimlik bilgisi istemeden başlatılMALI ve
ACTION_LOCKED_BOOT_COMPLETEDmesajı yayınlandıktan sonra Doğrudan Başlatma özelliğini destekleyen uygulamaların Cihaz Şifreleme (DE) depolama alanına erişmesine izin VERİLMELİDİR. - [C-1-2] Kullanıcı, kimlik bilgilerini (ör. geçiş kodu, PIN, desen veya parmak izi) girerek cihazın kilidini açtıktan ve
ACTION_USER_UNLOCKEDmesajı yayınlandıktan sonra yalnızca Kimlik Bilgisi Şifreli (CE) depolama alanına erişime İZİN VERİLMELİDİR. - [C-1-3] Kullanıcı tarafından sağlanan kimlik bilgileri veya kayıtlı bir emanet anahtarı olmadan CE korumalı depolama alanının kilidini açmak için herhangi bir yöntem SUNULMAMALIDIR.
- [C-1-4] Doğrulanmış Başlatma'yı desteklemeli ve DE anahtarlarının, cihazın güven kökünün donanımına kriptografik olarak bağlı olmasını sağlamalıdır.
- [C-1-5] Dosya içeriklerinin AES-256-XTS kullanılarak şifrelenmesi DESTEKLENMELİDİR. AES-256-XTS, XTS modunda çalıştırılan 256 bit anahtar uzunluğuna sahip Gelişmiş Şifreleme Standardı'nı ifade eder. XTS anahtarının tam uzunluğu 512 bittir.
-
[C-1-6] CBC-CTS modunda AES-256 kullanarak dosya adlarının şifrelenmesini DESTEKLEMELİDİR.
-
CE ve DE depolama alanlarını koruyan anahtarlar:
-
[C-1-7] Donanım tabanlı bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR.
- [C-1-8] CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine BAĞLANMALIDIR.
- [C-1-9] Kullanıcı kilit ekranı kimlik bilgileri belirtmediğinde CE anahtarları varsayılan bir şifre koduna bağlanmalıdır.
-
[C-1-10] Benzersiz ve farklı OLMALIDIR. Başka bir deyişle, hiçbir kullanıcının CE veya DE anahtarı başka bir kullanıcının CE veya DE anahtarıyla eşleşmemelidir.
-
[C-1-11] Varsayılan olarak zorunlu desteklenen şifreler, anahtar uzunlukları ve modlar KULLANILMALIDIR.
-
[C-SR] Dosya boyutları, sahiplik, modlar ve genişletilmiş özellikler (xattrs) gibi dosya sistemi meta verilerinin, cihazın donanım güven köküne kriptografik olarak bağlı bir anahtarla şifrelenmesi ŞİDDETLE TAVSİYE EDİLİR.
-
Önceden yüklenmiş temel uygulamalar (ör. Alarm, Telefon, Mesajlaşma) doğrudan başlatma özelliğini desteklemelidir.
- Dosya içeriği ve dosya adı şifrelemesi için alternatif şifreleri, anahtar uzunluklarını ve modları DESTEKLEYEBİLİR.
Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeği ext4 şifreleme özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.
9.9.3. Tam Disk Şifreleme
Cihaz uygulamaları tam disk şifrelemeyi (FDE) destekliyorsa:
- [C-1-1] Depolama için tasarlanmış bir modda (ör. XTS veya CBC-ESSIV) ve 128 bit veya daha uzun bir şifreleme anahtarı uzunluğuyla AES KULLANILMALIDIR.
- [C-1-2] Şifreleme anahtarını sarmalamak için varsayılan bir şifre kodu KULLANILMALI ve şifreleme anahtarı, şifrelenmeden hiçbir zaman depolama alanına YAZILMAMALIDIR.
- [C-1-3] Kullanıcı açıkça devre dışı bırakmadığı sürece, etkin kullanımda olduğu ve kilit ekranı kimlik bilgilerinin yavaş bir uzatma algoritması (ör. PBKDF2 veya scrypt) kullanılarak uzatıldığı durumlar hariç olmak üzere, şifreleme anahtarını varsayılan olarak AES ile şifrelemelidir.
- [C-1-4] Kullanıcı kilit ekranı kimlik bilgilerini belirtmediğinde veya şifreleme için geçiş kodu kullanımını devre dışı bıraktığında ve cihaz donanım destekli bir anahtar deposu sağladığında yukarıdaki varsayılan parola uzatma algoritması, anahtar deposuna kriptografik olarak bağlanmalıdır.
- [C-1-5] Şifreleme anahtarı, kullanıcı şifre kodu ve/veya donanıma bağlı anahtarla sarmalanmış olsa bile cihazdan gönderilmemelidir.
Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeği özelliği dm-crypt'e dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.
9.10. Cihaz bütünlüğü
Aşağıdaki şartlar, cihaz bütünlüğünün durumuyla ilgili şeffaflık sağlar. Cihaz uygulamaları:
-
[C-0-1] Sistem API yöntemi aracılığıyla
PersistentDataBlockManager.getFlashLockState()önyükleyici durumunun sistem görüntüsünün yüklenmesine izin verip vermediğini doğru şekilde bildirmelidir.FLASH_LOCK_UNKNOWNdurumu, bu yeni sistem API'si yönteminin bulunmadığı Android'in önceki bir sürümünden yükseltme yapan cihaz uygulamaları için ayrılmıştır. -
[C-0-2] Cihaz bütünlüğü için Doğrulanmış Başlatma'yı DESTEKLEMELİDİR.
Cihaz uygulamaları, Android'in önceki bir sürümünde Doğrulanmış Başlatma'yı desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu özellik için destek eklenemiyorsa bu şarttan MUAF TUTULABİLİR.
Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Cihaz uygulamaları bu özelliği destekliyorsa:
- [C-1-1] Platform özellik bayrağı
android.software.verified_bootBEYAN EDİLMELİDİR. - [C-1-2] Her başlatma sırasında doğrulama YAPILMALIDIR.
- [C-1-3] Doğrulamayı, güvenin kökü olan değişmez bir donanım anahtarından başlatmalı ve sistem bölümüne kadar devam etmelidir.
- [C-1-4] Bir sonraki aşamadaki kodu yürütmeden önce, sonraki aşamadaki tüm baytların bütünlüğünü ve gerçekliğini kontrol etmek için doğrulamanın her aşamasını uygulamak ZORUNLUDUR.
- [C-1-5] Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'in mevcut önerileri kadar güçlü doğrulama algoritmaları KULLANILMALIDIR.
- [C-1-6] Kullanıcı yine de başlatmayı denemeyi kabul etmediği sürece, sistem doğrulaması başarısız olduğunda başlatmanın tamamlanmasına İZİN VERİLMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALIDIR.
- [C-1-7] Kullanıcı, önyükleyiciyi açıkça kilidini açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERİLMEMELİDİR.
- [C-SR] Cihazda birden fazla ayrı çip varsa (ör. radyo, özel görüntü işleme birimi) önyükleme sırasında her aşamayı doğrulamak için bu çiplerin her birinin önyükleme işleminin yapılması ŞİDDETLE TAVSİYE EDİLİR.
- [C-1-8] Bootloader'ın kilidinin açık olup olmadığını depolamak için kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR. Kurcalamaya karşı korumalı depolama, önyükleyicinin depolamanın Android'in içinden kurcalanıp kurcalanmadığını algılayabileceği anlamına gelir.
- [C-1-9] Cihaz kullanılırken kullanıcıya istem göstermeli ve bootloader'ın kilitli moddan kilidi açık moda geçişine izin vermeden önce fiziksel onay istemelidir.
- [C-1-10] Android tarafından kullanılan bölümler (ör. önyükleme, sistem bölümleri) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum işletim sistemi sürümünü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.
- [C-SR] Tüm ayrıcalıklı uygulama APK dosyalarının, Doğrulanmış Başlatma ile korunan
/system'da köklenen bir güven zinciriyle doğrulanması ŞİDDETLE TAVSİYE EDİLİR. - [C-SR] Ayrıcalıklı bir uygulama tarafından APK dosyası dışından yüklenen yürütülebilir yapıtların (ör. dinamik olarak yüklenen kod veya derlenmiş kod) yürütülmeden önce doğrulanması veya hiç yürütülmemesi ŞİDDETLE TAVSİYE EDİLİR.
- Kalıcı yazılıma sahip tüm bileşenler (ör. modem, kamera) için geri alma koruması UYGULANMALIDIR ve izin verilen minimum sürümü belirlemek için kullanılan meta verileri depolamak üzere kurcalamaya karşı korumalı depolama alanı KULLANILMALIDIR.
Cihaz uygulamaları, Android'in önceki bir sürümünde C-1-8 ile C-1-10 arasındaki gereksinimleri desteklemeden kullanıma sunulduysa ve sistem yazılımı güncellemesiyle bu gereksinimler için destek eklenemiyorsa gereksinimlerden MUAF TUTULABİLİR.
Yukarı akış Android Açık Kaynak Projesi, bu özelliğin external/avb/ deposunda tercih edilen bir uygulamasını sağlar. Bu uygulama, Android'i yüklemek için kullanılan önyükleyiciye entegre edilebilir.
Cihaz uygulamaları:
- [C-R] Android Protected Confirmation API'yi desteklemeleri ÖNERİLİR.
Cihaz uygulamaları Android Korumalı Onayı API'sini destekliyorsa:
- [C-3-1]
ConfirmationPrompt.isSupported()API'si içintruebildirilmelidir. - [C-3-2] Android OS'in güvenli donanım tarafından algılanmadan engellemesini önleyecek şekilde güvenli donanımın ekran üzerinde tam kontrol sahibi olmasını SAĞLAMALIDIR.
- [C-3-3] Güvenli donanımın dokunmatik ekranın tam kontrolünü aldığından EMİN OLUNMALIDIR.
9.11. Anahtarlar ve Kimlik Bilgileri
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları bir kapsayıcıda depolamasına ve KeyChain API veya Keystore API aracılığıyla kriptografik işlemlerde kullanmasına olanak tanır. Cihaz uygulamaları:
- [C-0-1] En az 8.192 anahtarın içe aktarılmasına veya oluşturulmasına İZİN VERİLMELİDİR.
- [C-0-2] Kilit ekranı kimlik doğrulama işlemi, deneme sıklığını sınırlamalı ve eksponansiyel geri yükleme algoritmasına sahip olmalıdır. 150 başarısız denemeden sonra, her deneme için gecikme SÜRESİ en az 24 saat OLMALIDIR.
- Oluşturulabilecek anahtar sayısını SINIRLAMAMALIDIR.
Cihaz uygulaması güvenli kilit ekranını desteklediğinde:
- [C-1-1] MUST back up the keystore implementation with an isolated execution environment.
- [C-1-2] Çekirdek üzerinde ve üstünde çalışan koddan güvenli bir şekilde izole edilmiş bir alanda Android Keystore sisteminin desteklenen algoritmalarını düzgün şekilde desteklemek için RSA, AES, ECDSA ve HMAC kriptografik algoritmalarının ve MD5, SHA1 ve SHA-2 ailesi karma işlevlerinin uygulamaları OLMALIDIR. Güvenli yalıtım, çekirdek veya kullanıcı alanı kodunun erişime kapalı ortamın iç durumuna erişebileceği tüm olası mekanizmaları (DMA dahil) ENGELLEMELİDİR. Yukarı akış Android Açık Kaynak Projesi (AOSP), Trusty uygulamasını kullanarak bu şartı karşılar ancak ARM TrustZone tabanlı başka bir çözüm veya uygun bir hiper yönetici tabanlı izolasyonun üçüncü tarafça incelenmiş güvenli bir uygulaması da alternatif seçeneklerdir.
- [C-1-3] Kilit ekranı kimlik doğrulaması, izole yürütme ortamında YAPILMALIDIR ve yalnızca başarılı olduğunda kimlik doğrulamaya bağlı anahtarların kullanılmasına izin verilmelidir. Kilit ekranı kimlik bilgileri, yalnızca yalıtılmış yürütme ortamının kilit ekranı kimlik doğrulaması yapmasına izin verecek şekilde saklanmalıdır. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı (HAL) ve Trusty'yi sağlar.
- [C-1-4] Onay imzalama anahtarının güvenli donanımla korunduğu ve imzalama işleminin güvenli donanımda yapıldığı anahtar onayını DESTEKLEMELİDİR. Anahtarların cihaz tanımlayıcı olarak kullanılmasını önlemek için onay imzalama anahtarları yeterince çok sayıda cihazda paylaşılmalıdır. Bu koşulu karşılamanın bir yolu,belirli bir SKU'nun en az 100.000 birimi üretilmediği sürece aynı onay anahtarını paylaşmaktır. Bir SKU'nun 100.000'den fazla birimi üretilirse her 100.000 birim için farklı bir anahtar KULLANILABİLİR.
- [C-1-5] Kullanıcının, kilidi açık durumdan kilitli duruma geçiş için uyku zaman aşımını seçmesine izin VERİLMELİDİR. İzin verilen minimum zaman aşımı 15 saniyedir.
Bir cihaz uygulaması daha önceki bir Android sürümünde kullanıma sunulduysa bu cihaz, android.hardware.fingerprint özelliğini (izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposu gerektirir) beyan etmediği sürece, izole edilmiş bir yürütme ortamı tarafından desteklenen bir anahtar deposuna sahip olma ve anahtar tasdikini destekleme zorunluluğundan muaf tutulur.
9.11.1. Güvenli Kilit Ekranı
AOSP uygulaması, bilgi faktörüne dayalı birincil kimlik doğrulamanın ikincil güçlü bir biyometri veya daha zayıf üçüncül yöntemlerle desteklenebileceği katmanlı bir kimlik doğrulama modelini izler.
Cihaz uygulamaları:
- [C-SR] Aşağıdakilerden yalnızca birinin birincil kimlik doğrulama yöntemi olarak ayarlanması ŞİDDETLE TAVSİYE EDİLİR:
- Sayısal bir PIN
- Alfanümerik bir şifre
- Tam olarak 3x3 noktalı bir ızgarada kaydırma deseni
Yukarıdaki kimlik doğrulama yöntemlerinin bu belgede önerilen birincil kimlik doğrulama yöntemleri olarak adlandırıldığını unutmayın.
Cihaz uygulamaları, önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yol olarak yeni bir kimlik doğrulama yöntemi kullanırsa yeni kimlik doğrulama yöntemi:
- [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
createConfirmDeviceCredentialIntentvesetUserAuthenticationRequiredgibi 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ı kilitlemek için güvenli bir yol olarak kabul edilecek yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-3-1] Girişlerin izin verilen en kısa uzunluğunun entropisi 10 bit'ten büyük OLMALIDIR.
- [C-3-2] Olası tüm girişlerin maksimum entropisi 18 bit'ten fazla OLMALIDIR.
- [C-3-3] Yeni kimlik doğrulama yöntemi, AOSP'de uygulanan ve sağlanan önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) herhangi birinin yerini ALMAMALIDIR.
- [C-3-4] Cihaz Politikası Denetleyicisi (DPC) uygulaması,
PASSWORD_QUALITY_SOMETHINGdeğerinden daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()yöntemi aracılığıyla şifre kalitesi politikasını ayarladığında yeni kimlik doğrulama yöntemi DEVRE DIŞI BIRAKILMALIDIR.
Cihaz uygulamaları, kilit ekranının kilidini açmak için önerilen birincil kimlik doğrulama yöntemlerini ekler veya değiştirirse ve ekranı kilitlemek için güvenli bir yol olarak kabul edilecek biyometriye dayalı yeni bir kimlik doğrulama yöntemi kullanırsa yeni yöntem:
- [C-4-1] Bölüm 7.3.10.2'de açıklanan tüm şartları KARŞILAMALIDIR.
- [C-4-2] Bilinen bir sırra dayalı olan önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için geri dönüş mekanizması OLMALIDIR.
- [C-4-3] Device Policy Controller (DPC) uygulaması ,
DevicePolicyManager.setKeyguardDisabledFeatures()yöntemini çağırarak keguard özellik politikasını ayarladığında, ilişkili biyometrik işaretlerden (ör.KEYGUARD_DISABLE_BIOMETRICS,KEYGUARD_DISABLE_FINGERPRINT,KEYGUARD_DISABLE_FACEveyaKEYGUARD_DISABLE_IRIS) herhangi biriyle birlikte devre dışı bırakılmalı ve ekranın kilidini açmak için yalnızca önerilen birincil kimlik doğrulama yöntemine izin verilmelidir. - [C-4-4] Kullanıcıya, önerilen birincil kimlik doğrulama (ör. PIN, desen, şifre) için en az 72 saatte bir veya daha kısa aralıklarla meydan OKUMALIDIR.
- [C-4-5] 7.3.10 bölümünde belirtildiği gibi parmak izi sensörü için gerekenle eşit veya daha güçlü bir yanlış kabul oranına SAHİP OLMALI ya da aksi takdirde devre dışı BIRAKILMALI ve yalnızca Cihaz Politikası Denetleyicisi (DPC) uygulaması,
DevicePolicyManager.setPasswordQuality()yöntemiylePASSWORD_QUALITY_BIOMETRIC_WEAKdeğerinden daha kısıtlayıcı bir kalite sabiti kullanarak şifre kalitesi politikasını ayarladığında ekranın kilidinin açılmasına izin VERMELİDİR. - [C-SR] Bölüm 7.3.10'da açıklandığı şekilde, parmak izi sensörü için gerekenle eşit veya daha güçlü sahtecilik ve kimliğe bürünme kabul oranlarına sahip olması ŞİDDETLE TAVSİYE EDİLİR.
- [C-4-6] Bir işletim sistemi veya çekirdek ihlali, verilerin doğrudan yerleştirilerek kullanıcı olarak kimliğin yanlış şekilde doğrulanmasına izin vermeyecek şekilde güvenli bir işleme hattına SAHİP OLMALIDIR.
- [C-4-7] Uygulama,
KeyGenParameterSpec.Built.setUserAuthenticationRequired()içintruedeğerini ayarlarsa ve biyometrik kimlik doğrulama pasifse (ör.niyetle ilgili açık bir sinyalin olmadığı yüz veya iris), anahtar deposu anahtarlarına erişime izin vermek için açık bir onay işlemiyle (ör. düğmeye basma) eşleştirilmelidir. - [C-SR] Pasif biyometri için onay işleminin, işletim sistemi veya çekirdek ihlaliyle sahteciliğe karşı KESİNLİKLE güvenli hale getirilmesi ÖNERİLİR. Örneğin, bu, fiziksel bir düğmeye dayalı onay işleminin, yalnızca fiziksel bir düğmeye basılarak çalıştırılabilen bir güvenlik unsurunun (SE) yalnızca giriş amaçlı genel amaçlı giriş/çıkış (GPIO) pimi üzerinden yönlendirildiği anlamına gelir.
Biyometrik kimlik doğrulama yöntemleri, bölüm 7.3.10'da açıklandığı gibi sahtecilik ve kimliğe bürünme kabul oranlarını karşılamıyorsa:
- [C-5-1] Cihaz politikası denetleyici (DPC) uygulaması,
PASSWORD_QUALITY_BIOMETRIC_WEAKdeğ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 mutlaka sorgulanmalıdır. Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasının ardından boşta kalma zaman aşımı süresi sıfırlanır.
- [C-5-3] Yöntemler güvenli kilit ekranı olarak değerlendirilmemeli ve aşağıdaki bu bölümde C-8 ile başlayan koşulları karşılamalıdır.
Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bu yöntemleri değiştirirse ve yeni kimlik doğrulama yöntemi fiziksel bir jetona ya da konuma dayanıyorsa:
- [C-6-1] Bilinen bir sırra dayalı olan ve güvenli bir kilit ekranı olarak kabul edilme şartlarını karşılayan, önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için bir yedek mekanizmaya SAHİP OLMALIDIR.
- [C-6-2] Yeni yöntem DEVRE DIŞI BIRAKILMALIDIR ve Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı
PASSWORD_QUALITY_UNSPECIFIEDdeğerinden daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)yöntemi veyaDevicePolicyManager.setPasswordQuality()yöntemiyle ayarladığında ekranın kilidini açmak için yalnızca önerilen birincil kimlik doğrulama yöntemlerinden birine izin verilmelidir. - [C-6-3] Kullanıcı, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle en az 72 saatte bir veya daha kısa bir süre içinde kimliğini doğrulamalıdır.
- [C-6-4] Yeni yöntem, güvenli bir kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8'de listelenen kısıtlamalara uymalıdır.
Cihaz uygulamalarında güvenli bir kilit ekranı varsa ve TrustAgentService System API'yi uygulayan bir veya daha fazla güven aracısı varsa:
- [C-7-1] Cihaz kilidi ertelendiğinde veya güvenilir aracı tarafından kilidi açılabildiğinde ayarlar menüsünde ve kilit ekranında net bir gösterge OLMALIDIR. Örneğin, AOSP, ayarlar menüsünde "Otomatik kilitleme ayarı" ve "Güç düğmesiyle anında kilitleme" için metin açıklaması göstererek ve kilit ekranında ayırt edilebilir bir simge kullanarak bu koşulu karşılar.
- [C-7-2]
KEYGUARD_DISABLE_TRUST_AGENTSsabiti gibiDevicePolicyManagersınıfındaki tüm güven aracısı API'lerine UYULMALI ve bu API'ler tam olarak uygulanmalıdır. - [C-7-3] Birincil kişisel cihaz olarak kullanılan bir cihazda (ör. elde taşınabilir cihaz)
TrustAgentService.addEscrowToken()işlevi tam olarak uygulanMAMALI, ancak genellikle paylaşılan cihaz uygulamalarında (ör. Android TV veya otomotiv cihazı) işlev tam olarak uygulanABİLİR. - [C-7-4]
TrustAgentService.addEscrowToken()tarafından eklenen tüm depolanmış jetonlar ŞİFRELENMELİDİR. - [C-7-5] Şifreleme anahtarı, anahtarın kullanıldığı cihazda sakLANMAMALIDIR. Örneğin, telefonda depolanan bir anahtarın TV'deki kullanıcı hesabının kilidini açmasına izin verilir.
- [C-7-6] MUST inform the user about the security implications before enabling the escrow token to decrypt the data storage.
- [C-7-7] Önerilen birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizma OLMALIDIR.
- [C-7-8] Kullanıcı, önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle en az 72 saatte bir veya daha kısa aralıklarla kimliğini doğrulamalıdır.
- [C-7-9] Kullanıcı, 4 saatlik boşta kalma zaman aşımı süresinden sonra önerilen birincil kimlik doğrulama yöntemlerinden (ör. PIN, desen, şifre) biriyle kimlik doğrulamaya zorlanmalıdır. Cihaz kimlik bilgilerinin başarılı bir şekilde onaylanmasının ardından boşta kalma zaman aşımı süresi sıfırlanır.
- [C-7-10] Güvenli bir kilit ekranı olarak değerlendirilmemeli ve aşağıdaki C-8'de listelenen kısıtlamalara uymalıdır.
Cihaz uygulamaları, yukarıda açıklandığı gibi güvenli bir kilit ekranı olmayan kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri ekler veya bunları değiştirirse ve keyguard'ın kilidini açmak için yeni bir kimlik doğrulama yöntemi kullanırsa:
- [C-8-1] Cihaz Politikası Denetleyicisi (DPC) uygulaması,
DevicePolicyManager.setPasswordQuality()yöntemiylePASSWORD_QUALITY_UNSPECIFIEDdeğerinden daha kısıtlayıcı bir kalite sabiti kullanarak şifre kalitesi politikasını ayarladığında yeni yöntem DEVRE DIŞI bırakılmalıdır. - [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çintruedeğ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 KESİNLİKLE ÖNERİLİR.
Cihaz uygulamaları StrongBox'ı destekliyorsa:
-
[C-1-1] FEATURE_STRONGBOX_KEYSTORE beyan EDİLMELİDİR.
-
[C-1-2] Anahtar deposunu yedeklemek ve kullanıcı kimlik doğrulamasını güvenli hale getirmek için kullanılan özel bir güvenli donanım SAĞLANMALIDIR.
-
[C-1-3] Önbelleği, DRAM'i, yardımcı işlemcileri veya diğer temel kaynakları uygulama işlemcisi (AP) ile paylaşmayan ayrı bir CPU'ya SAHİP OLMALIDIR.
-
[C-1-4] AP ile paylaşılan tüm çevre birimlerinin StrongBox işlemesini hiçbir şekilde değiştiremeyeceğinden veya StrongBox'tan herhangi bir bilgi alamayacağından EMİN OLMALIDIR. AP, StrongBox'a erişimi devre dışı bırakabilir veya engelleyebilir.
-
[C-1-5] AP'nin manipülasyonuna karşı bağışıklığı olan, makul doğrulukta (+-%10) bir dahili saate SAHİP OLMALIDIR.
-
[C-1-6] MUST have a true random number generator that produces uniformly-distributed and unpredictable output.
-
[C-1-7] Fiziksel nüfuz ve aksaklığa karşı direnç de dahil olmak üzere kurcalamaya karşı dirençli OLMALIDIR.
-
[C-1-8] Güç, zamanlama, elektromanyetik radyasyon ve termal radyasyon yan kanalları aracılığıyla bilgi sızdırılmasına karşı direnç de dahil olmak üzere yan kanal direnci OLMALIDIR.
-
[C-1-9] İçeriklerin gizliliğini, bütünlüğünü, gerçekliğini, tutarlılığını ve güncelliğini sağlayan güvenli depolama alanı OLMALIDIR. StrongBox API'leri tarafından izin verilen durumlar dışında depolama birimi okunamaz veya değiştirilemez.
-
[C-1-3] ile [C-1-9] arasındaki şartlara uygunluğu doğrulamak için cihaz uygulamaları:
- [C-1-10] MUST include the hardware that is certified against the Secure IC Protection Profile BSI-CC-PP-0084-2014 or evaluated by a nationally accredited testing laboratory incorporating High attack potential vulnerability assessment according to the Common Criteria Application of Attack Potential to Smartcards.
- [C-1-11] Ortak Kriterler: Akıllı Kartlara Saldırı Potansiyelinin Uygulanması'na göre yüksek saldırı potansiyeli güvenlik açığı değerlendirmesini içeren, ulusal olarak akredite edilmiş bir test laboratuvarı tarafından değerlendirilen donanım yazılımını İÇERMELİDİR.
- [C-SR] AVA_VAN.5 ile desteklenen bir Güvenlik Hedefi, Değerlendirme Güvence Düzeyi (EAL) 5 kullanılarak değerlendirilen donanımı içermesi ŞİDDETLE TAVSİYE EDİLİR. EAL 5 sertifikası, gelecekteki bir sürümde zorunlu hale gelebilir.
-
[C-SR] özelliği, içeriden saldırıya karşı direnç (IAR) sağlamak için ŞİDDETLE TAVSİYE EDİLİR. Bu özellik sayesinde, ürün yazılımı imzalama anahtarlarına erişimi olan bir içeriden saldırgan, StrongBox'ın sırları sızdırmasına, işlevsel güvenlik şartlarını atlamasına veya hassas kullanıcı verilerine erişimi başka şekilde etkinleştirmesine neden olan bir ürün yazılımı oluşturamaz. IAR'yi uygulamanın önerilen yolu, donanım yazılımı güncellemelerine yalnızca IAuthSecret HAL aracılığıyla birincil kullanıcı şifresi sağlandığında izin vermektir.
9.12. Veri Silme
Tüm cihaz uygulamaları:
- [C-0-1] Kullanıcılara "Fabrika Verilerine Sıfırlama" işlemi yapabilecekleri bir mekanizma SAĞLANMALIDIR.
- [C-0-2] Kullanıcı tarafından oluşturulan tüm veriler SİLİNMELİDİR. Yani aşağıdaki veriler hariç tüm veriler:
- Sistem görüntüsü
- Sistem görüntüsü için gereken tüm işletim sistemi dosyaları
- [C-0-3] Verileri, NIST SP800-88 gibi ilgili endüstri standartlarını karşılayacak şekilde SİLMELİDİR.
- [C-0-4] Birincil kullanıcının Cihaz Politikası Denetleyici uygulaması tarafından
DevicePolicyManager.wipeData()API'si çağrıldığında yukarıdaki"Fabrika Verilerine Sıfırlama" işlemi TETİKLENMELİDİR. - Yalnızca mantıksal veri silme işlemi yapan hızlı bir veri silme seçeneği SUNABİLİR.
9.13. Güvenli Önyükleme Modu
Android, kullanıcılara yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda başlatma olanağı sunan güvenli başlatma modu sağlar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcılara zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı sunar.
Cihaz uygulamaları şunlardır:
- [SR] STRONGLY RECOMMENDED to implement Safe Boot Mode.
Cihaz uygulamaları Güvenli Önyükleme Modu'nu uyguluyorsa:
-
[C-1-1] Üçüncü taraf uygulama bir Cihaz Politikası Denetleyicisi olmadığı ve
UserManager.DISALLOW_SAFE_BOOTişaretini doğru olarak ayarlamadığı sürece, cihaza yüklenen üçüncü taraf uygulamaları tarafından kesintiye uğratılmayacak şekilde kullanıcıya güvenli modda başlatma seçeneği SUNULMALIDIR. -
[C-1-2] Kullanıcıya, güvenli modda üçüncü taraf uygulamalarını kaldırma özelliği SAĞLANMALIDIR.
-
Kullanıcıya, normal başlatma iş akışından farklı bir iş akışı kullanarak başlatma menüsünden güvenli modda başlatma seçeneği SUNULMALIDIR.
9.14. Otomotiv Araç Sistemi İzolasyonu
Android Automotive cihazların, CAN veri yolu gibi araç ağları üzerinden mesaj göndermek ve almak için araç HAL'ını kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir.
Veri alışverişi, bu alt sistemlerle kötü amaçlı veya kasıtsız etkileşimi önlemek için Android framework katmanlarının altında güvenlik özellikleri uygulanarak güvenli hale getirilebilir.
9.15. Abonelik Planları
"Abonelik planları", SubscriptionManager.setSubscriptionPlans() aracılığıyla bir mobil operatör tarafından sağlanan faturalandırma ilişkisi planı ayrıntılarını ifade eder.
Tüm cihaz uygulamaları:
- [C-0-1] Abonelik planlarını yalnızca başlangıçta sağlayan mobil operatör uygulamasına döndürmELİDİR.
- [C-0-2] Abonelik planlarını uzaktan yedeklememeli veya yüklememelidir.
- [C-0-3] YALNIZCA şu anda geçerli abonelik planları sunan mobil operatör uygulamasından
SubscriptionManager.setSubscriptionOverrideCongested()gibi geçersiz kılmalara izin VERİLMELİDİR.
10. Yazılım Uyumluluğu Testi
Cihaz uygulamaları, bu bölümde açıklanan tüm testleri GEÇMELİDİR. Ancak hiçbir yazılım test paketinin tamamen kapsamlı olmadığını unutmayın. Bu nedenle, cihaz uygulayıcıların Android Açık Kaynak Projesi'nden edinilebilen Android'in referans ve tercih edilen uygulamasında mümkün olduğunca az değişiklik yapması ŞİDDETLE TAVSİYE EDİLİR. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara neden olan hataların ortaya çıkma riskini en aza indirir.
10.1. Compatibility Test Suite
Cihaz uygulamaları:
-
[C-0-1] Cihazdaki son gönderim yazılımı kullanılarak Android Açık Kaynak Projesi'nden edinilebilen Android Compatibility Test Suite (CTS)'yi GEÇMELİDİR.
-
[C-0-2] CTS'de belirsizlik olması ve referans kaynak kodunun bölümlerinin yeniden uygulanması durumlarında uyumluluğu SAĞLAMALIDIR.
CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. CTS de diğer yazılımlar gibi hatalar içerebilir. CTS, bu Uyumluluk Tanımlama Belgesi'nden bağımsız olarak sürümlendirilir ve Android 9 için CTS'nin birden fazla düzeltmesi yayınlanabilir.
Cihaz uygulamaları:
-
[C-0-3] Cihaz yazılımı tamamlandığında mevcut olan en son CTS sürümünü GEÇMELİDİR.
-
Android Open Source ağacındaki referans uygulamayı mümkün olduğunca çok kullanmalıdır.
10.2. CTS Doğrulayıcı
CTS Doğrulayıcı, Uyumluluk Test Paketi'ne dahildir ve otomatik bir sistem tarafından test edilemeyen işlevleri (ör. kamera ve sensörlerin doğru çalışması) test etmek için bir operatör tarafından çalıştırılması amaçlanmıştır.
Cihaz uygulamaları:
- [C-0-1] CTS doğrulayıcısında geçerli tüm testleri doğru şekilde çalıştırmalıdır.
CTS Verifier, isteğe bağlı olanlar da dahil olmak üzere birçok donanım türü için testler içerir.
Cihaz uygulamaları:
- [C-0-2] Sahip oldukları donanımla ilgili tüm testleri GEÇMELİDİR. Örneğin, bir cihazda ivmeölçer varsa CTS Verifier'daki ivmeölçer test senaryosunu DOĞRU şekilde çalıştırmalıdır.
Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test senaryoları atlanabilir veya çıkarılabilir.
- [C-0-2] Yukarıda belirtildiği gibi, her cihaz ve her derleme, CTS Verifier'ı doğru şekilde ÇALIŞTIRMALIDIR. Ancak birçok derleme çok benzer olduğundan, cihaz uygulayıcıların CTS Doğrulayıcı'yı yalnızca önemsiz farklılıklar içeren derlemelerde açıkça çalıştırması beklenmez. Daha açık belirtmek gerekirse, CTS Verifier'ı geçen bir uygulamadan yalnızca dahil edilen yerel ayarlar, markalama vb. açısından farklılık gösteren cihaz uygulamaları CTS Verifier testini atlayabilir.
11. Güncellenebilir Yazılımlar
-
[C-0-1] Cihaz uygulamaları, sistem yazılımının tamamını değiştirecek bir mekanizma içermelidir. Mekanızmanın "canlı" yükseltme yapması gerekmez. Yani cihazın yeniden başlatılması GEREKEBİLİR. Cihazda önceden yüklenmiş yazılımın tamamının yerine geçebilmesi koşuluyla herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:
- Yeniden başlatma yoluyla çevrimdışı güncelleme ile "kablosuz (OTA)" indirmeleri.
- Ana makine PC'den USB üzerinden "bağlı" güncellemeler.
- Yeniden başlatma ve çıkarılabilir depolama birimindeki bir dosyadan güncelleme yoluyla "çevrimdışı" güncellemeler.
-
[C-0-2] Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri desteklemelidir. Yani güncelleme mekanizması, uygulamaya özel verileri ve uygulamada paylaşılan verileri KORUMALIDIR. Android'in yukarı akış yazılımında bu koşulu karşılayan bir güncelleme mekanizması bulunduğunu unutmayın.
Cihaz uygulamaları, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sınırsız veri bağlantısı desteği içeriyorsa:
- [C-1-1] Yeniden başlatma yoluyla çevrimdışı güncelleme ile OTA indirmelerini DESTEKLEMELİDİR.
Android 6.0 ve sonraki sürümlerle kullanıma sunulan cihaz uygulamalarında, güncelleme mekanizması, OTA'dan sonra sistem görüntüsünün beklenen sonuçla ikili olarak aynı olduğunu doğrulama işlemini DESTEKLEMELİDİR. Android 5.1'den beri eklenen, yukarı akış Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu şartı karşılar.
Ayrıca, cihaz uygulamaları A/B sistem güncellemelerini DESTEKLEMELİDİR. AOSP, bu özelliği önyükleme denetimi HAL'sini kullanarak uygular.
Bir cihaz uygulaması yayınlandıktan sonra ancak Android Uyumluluk Ekibi ile istişare edilerek belirlenen makul ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa:
- [C-2-1] Cihaz uygulayıcı, hatayı az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesiyle DÜZELTMELİDİR.
Android, cihaz sahibi uygulamasına (varsa) sistem güncellemelerinin yüklenmesini kontrol etme olanağı tanıyan özellikler içerir. Cihazlar için sistem güncelleme alt sistemi android.software.device_admin'i bildiriyorsa:
- [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 özeti 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. -
Dokümanlar
Kozmetik veya derlemeyle ilgili değişiklikler.
En iyi görüntüleme için pretty=full ve no-merges URL parametrelerini değişiklik günlüğü URL'lerinize ekleyin.
13. Bize Ulaşın
android-compatibility forumuna katılarak açıklama isteyebilir veya belgede yer almadığını düşündüğünüz sorunları gündeme getirebilirsiniz.