İçindekiler
3.2.3.1. Temel Uygulama Amaçları
3.2.3.5. Varsayılan Uygulama Ayarları
3.3.1. Uygulama İkili Arabirimleri
3.3.2. 32 bit ARM Yerel Kod Uyumluluğu
3.7. Çalışma zamanı uyumluluğu
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.10. Kilit Ekranı Medya Kontrolü
3.8.11. Ekran koruyucular (eski adıyla Hayaller)
3.9.1.1 Cihaz sahibine temel hazırlama
3.9.1.2 Yönetilen profil sağlama
3.9.2 Yönetilen Profil Desteği
3.12.1.1. Elektronik Program Rehberi
3.12.1.3. TV girişi uygulaması bağlama
3.14. Araç kullanıcı arayüzü API'leri
3.14.1. Araç Medya Kullanıcı Arayüzü
5.4.3. Oynatma işlemini yeniden yönlendirmek için yakalama
5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)
5.11. İşlenmemiş için yakalama
6. Geliştirici Araçları ve Seçenekleri Uyumluluğu
7.1. Görüntülü Reklamlar ve Grafikler
7.1.2. Görüntülü Reklam Ağı Metrikleri
7.2.4. Dokunmatik Ekran Girişi
7.3.9. Yüksek Doğruluk Oranı Sunan Sensörler
7.3.11. Yalnızca Android Automotive sensörleri
7.4.4. Near-Field Communications
7.4.6. Senkronizasyon Ayarları
7.5.4. Kamera API'si Davranışı
7.6.1. Minimum Bellek ve Depolama
7.6.2. Uygulama Paylaşılan Depolama Alanı
7.6.3. Dahili Hale Getirilebilir Depolama Alanı
7.8.2.1. Analog Ses Bağlantı Noktaları
7.9.2. Sanal Gerçeklik Yüksek Performans
8.1. Kullanıcı Deneyimi Tutarlılığı
1. Giriş
Bu dokümanda, cihazların Android 7.0 ile uyumlu olması için karşılanması gereken şartlar listelenmiştir.
"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" ve "OPTIONAL" kelimelerinin kullanımı RFC2119'da tanımlanan IETF standardına göredir.
Bu dokümanda "cihaz uygulayıcısı" veya "uygulayıcı", Android 7.0 çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluştur. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Android 7.0 ile uyumlu olarak kabul edilmek için cihaz uygulamalarının, referansla dahil edilen tüm dokümanlar da dahil olmak üzere bu Uyumluluk Tanımı'nda sunulan şartları karşılaması GEREKİR.
Bu tanım veya 10. bölümde açıklanan yazılım testleri net değilse, eksikse ya da bu konuda bilgi verilmiyorsa mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcının sorumluluğundadır.
Bu nedenle, Android Açık Kaynak Projesi hem Android'in referans kaynağı hem de tercih edilen uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nde bulunan "yukarı yönlü" kaynak koduna dayandırmaları önemle ÖNERİLİR. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilir olsa da yazılım testlerini geçmek önemli ölçüde daha zor olacağından bu uygulamanın kullanılmaması önemle tavsiye edilir. Uyumluluk Testi Paketi dahil olmak üzere standart Android uygulamasıyla davranışsal olarak tam uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen değişimlerinin ve modifikasyonlarının bu dokümanda açıkça yasaklandığını unutmayın.
Bu dokümanda bağlantısı verilen kaynakların çoğu doğrudan veya dolaylı olarak Android SDK'sından türetilmiştir ve işlevsel olarak ilgili SDK'nın dokümanlarında yer alan bilgilerle aynıdır. Bu Uyumluluk Tanımlama Belgesi veya Uyumluluk Testi Paketi'nin SDK dokümanlarıyla çeliştiği durumlarda SDK dokümanları yetkili kabul edilir. Bu dokümanda bağlantı verilen kaynaklarda sağlanan tüm teknik ayrıntılar, bu Uyumluluk Tanımı'nın bir parçası olarak kabul edilir.
2. Cihaz Türleri
Android Açık Kaynak Projesi, çeşitli cihaz türleri ve form faktörlerinin uygulanmasında kullanılmış olsa da mimarinin ve uyumluluk koşullarının birçok yönü, el cihazları için optimize edilmiştir. Android 5.0'den itibaren Android Açık Kaynak Projesi, bu bölümde açıklandığı gibi daha fazla cihaz türünü desteklemeyi amaçlamaktadır.
Android el cihazı, genellikle elinizde tutarak kullandığınız Android cihaz uygulamalarını (ör. mp3 çalarlar, telefonlar ve tabletler) ifade eder. Android el cihazı uygulamaları:
- Cihazda yerleşik bir dokunmatik ekran OLMALIDIR.
- Hareketliliği sağlayan bir güç kaynağına (ör. pil) sahip OLMALIDIR.
Android TV cihazı, yaklaşık üç metre uzaklıkta oturan kullanıcılar için dijital medya, film, oyun, uygulama ve/veya canlı TV içeriklerini tüketmeye yönelik bir eğlence arayüzü olan Android cihaz uygulamasını ifade eder ("rahatça izleme" veya "üç metrelik kullanıcı arayüzü"). Android TV cihazları:
- Yerleşik bir ekrana VEYA VGA, HDMI gibi bir video çıkış bağlantı noktasına VEYA ekran için kablosuz bağlantı noktasına sahip OLMALIDIR.
- android.software.leanback ve android.hardware.type.television özelliklerini İLKLEŞTİRMELİDİR.
Android kol saati cihazı, vücutta (kolda) takılmak üzere tasarlanmış bir Android cihaz uygulaması anlamına gelir ve:
- Fiziksel diyagonal uzunluğu 1,1 ila 2,5 inç arasında olan bir ekrana sahip OLMALIDIR.
- android.hardware.type.watch özelliğini İLKLEŞTİRMELİDİR.
- uiMode = UI_MODE_TYPE_WATCH desteklenmelidir.
Android Automotive uygulaması, sistem ve/veya bilgi-eğlence işlevinin bir kısmı ya da tamamı için işletim sistemi olarak Android'i çalıştıran bir araç ana birimini ifade eder. Android Automotive uygulamaları:
- Fiziksel diyagonal uzunluğu 6 inç veya daha büyük bir ekrana sahip OLMALIDIR.
- android.hardware.type.automotive özelliğini İLKLEŞTİRMELİDİR.
- uiMode = UI_MODE_TYPE_CAR desteklenmelidir.
- Android Automotive uygulamaları,
android.car.*
ad alanındaki tüm herkese açık API'leri DESTEKLEMELİDİR.
Yukarıdaki cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamalarının, Android 7.0 uyumlu olması için bu belgedeki tüm şartları karşılaması GEREKİR. Ancak şartın yalnızca yukarıdaki belirli bir Android cihaz türü için geçerli olduğu açıkça belirtilmişse bu şart geçerli değildir.
2.1 Cihaz Yapılandırmaları
Bu, cihaz türüne göre donanım yapılandırmasında bulunan önemli farklılıkların özetidir. (Boş hücreler "OLABİLİR" anlamına gelir). Bu tabloda tüm yapılandırmalar ele alınmamıştır. Daha fazla bilgi için ilgili donanım bölümlerine bakın.
Kategori | Özellik | Bölüm | El Kamerası | Televizyon | İzle | Automotive | Diğer |
---|---|---|---|---|---|---|---|
Giriş | D-pad | 7.2.2. Dokunmadan gezinme | MUST | ||||
Dokunmatik ekran | 7.2.4. Dokunmatik ekran girişi | MUST | MUST | OLMALI | |||
Mikrofon | 7.8.1. Mikrofon | MUST | OLMALI | MUST | MUST | OLMALI | |
Sensörler | İvme ölçer | 7.3.1 İvme Ölçer | OLMALI | OLMALI | OLMALI | ||
GPS | 7.3.3. GPS | OLMALI | OLMALI | ||||
Bağlantı | Kablosuz bağlantı | 7.4.2. IEEE 802.11 | OLMALI | OLMALI | OLMALI | OLMALI | |
Kablosuz Doğrudan Bağlantı | 7.4.2.1. Wi-Fi Direct | OLMALI | OLMALI | OLMALI | |||
Bluetooth | 7.4.3. Bluetooth | OLMALI | MUST | MUST | MUST | OLMALI | |
Bluetooth Düşük Enerji | 7.4.3. Bluetooth | OLMALI | MUST | OLMALI | OLMALI | OLMALI | |
Hücresel radyo | 7.4.5. Minimum Ağ Kapasitesi | OLMALI | |||||
USB çevre birimi/ana makine modu | 7.7. USB | OLMALI | OLMALI | OLMALI | |||
Çıkış | Hoparlör ve/veya ses çıkışı bağlantı noktaları | 7.8.2. Ses Çıkışı | MUST | MUST | MUST | MUST |
3. Yazılım
3.1. Yönetilen API Uyumluluğu
Yönetilen Dalvik bayt kodu yürütme ortamı, Android uygulamaları için birincil araçtır. Android uygulama programlama arayüzü (API), yönetilen çalışma ortamı içinde çalışan uygulamalara sunulan Android platform arayüzleri grubudur. Cihaz uygulamalarında, Android SDK'sı tarafından sunulan tüm belgelenmiş API'ler veya yayın öncesi Android kaynak kodunda "@SystemApi" işaretçisiyle süslenmiş tüm API'ler için tüm belgelenmiş davranışlar da dahil olmak üzere eksiksiz uygulamalar sağlanmalıdır.
Cihaz uygulamalarında TestApi ek açıklamasıyla (@TestApi) işaretlenmiş tüm sınıflar, yöntemler ve ilişkili öğeler desteklenmeli/korunmalıdır.
Cihaz uygulamalarında, bu Uyumluluk Tanımı'nda özellikle izin verildiği durumlar hariç olmak üzere yönetilen API'ler atlanmamalı, API arayüzleri veya imzaları değiştirilmemeli, belirtilen davranıştan sapılmamalı veya hiçbir işlem içermemelidir.
Bu Uyumluluk Tanımı, Android'in API'leri içerdiği bazı donanım türlerinin cihaz uygulamaları tarafından atlanmasına izin verir. Bu gibi durumlarda API'ler mevcut olmalı ve makul bir şekilde davranmalıdır. Bu senaryoya özgü gereksinimler için 7. bölüme bakın.
3.1.1. Android Uzantıları
Android, aynı API düzeyi sürümünü korurken yönetilen API'leri genişletme desteğini içerir. Android cihaz uygulamaları, hem paylaşılan kitaplığın ExtShared
hem de hizmetlerin ExtServices
AOSP uygulamasını, her API düzeyi için izin verilen minimum sürümlerden daha yüksek veya bu sürümlere eşit sürümlerle önceden yüklemelidir. Örneğin, API düzeyi 24'ü çalıştıran Android 7.0 cihaz uygulamaları en az 1. sürümü İÇERMELİDİR.
3.2. Soft API Uyumluluğu
Android, 3.1 numaralı bölümdeki yönetilen API'lere ek olarak, Android uygulamalarının uygulama derleme zamanında zorunlu kılınamayan intent'ler, izinler ve benzer özellikleri gibi şeyler şeklinde yalnızca çalışma zamanında kullanılabilen önemli bir "yumuşak" API de içerir.
3.2.1. İzinler
Cihaz uygulayıcıları, izin referans sayfasında belirtildiği şekilde tüm izin sabitlerini desteklemeli ve uygulamalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek koşulların listelendiğini unutmayın.
3.2.2. Derleme Parametreleri
Android API'leri, android.os.Build sınıfında mevcut cihazı tanımlamak için tasarlanmış bir dizi sabit içerir. Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının UYGUN OLMASI GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre | Ayrıntılar |
---|---|
VERSION.RELEASE | Şu anda çalışan Android sisteminin, kullanıcılar tarafından okunabilir biçimdeki sürümü. Bu alanda 7.0 sürümünde tanımlanan dize değerlerinden biri bulunmalıdır. |
VERSION.SDK | Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 7.0 için bu alanda 7.0_INT tam sayı değeri BULUNMASI GEREKİR. |
VERSION.SDK_INT | Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 7.0 için bu alanda 7.0_INT tam sayı değeri BULUNMASI GEREKİR. |
VERSION.INCREMENTAL | Cihaz uygulayıcısı tarafından seçilen ve kullanıcılar tarafından okunabilir biçimde, o anda çalışan Android sisteminin belirli bir derlemesini belirten bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişiklik tanımlayıcısının kullanıldığını belirtmektir. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
MASA | Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı kullanıcı tarafından okunabilir biçimde tanımlayan bir değer. Bu alanın olası bir kullanımı, cihazı besleyen kartın belirli bir revizyonunu belirtmektir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
BRAND | Cihazla ilişkili marka adını son kullanıcıların bildiği şekilde yansıtan bir değer. Kullanıcı tarafından okunabilir biçimde OLMALI ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını temsil ETMELİDİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
SUPPORTED_ABIS | Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility. |
SUPPORTED_32_BIT_ABIS | Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility. |
SUPPORTED_64_BIT_ABIS | Yerel kodun ikinci talimat setinin (CPU türü + ABI kuralı) adı. 3.3. bölüme bakın. Native API Compatibility. |
CPU_ABI | Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3. bölüme bakın. Native API Compatibility. |
CPU_ABI2 | Yerel kodun ikinci talimat setinin (CPU türü + ABI kuralı) adı. 3.3. bölüme bakın. Native API Compatibility. |
CİHAZ | Cihaz uygulayıcısı tarafından seçilen, cihazın donanım özelliklerinin yapılandırmasını ve endüstriyel tasarımını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞTİRİLMEMELİDİR. |
FINGERPRINT |
Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunaklı OLMALIDIR. Şu şablona UYGUN OLMALIDIR:
$(BRAND)/$(PRODUCT)/ Örnek:
acme/myproduct/ Parmak izi boşluk karakteri İÇERMEMELİDİR. Yukarıdaki şablona dahil edilen diğer alanlarda boşluk karakterleri varsa derleme parmak izinde alt çizgi ("_") karakteri gibi başka bir karakterle DEĞİŞTİRİLMESİ GEREKİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALIDIR. |
DONANIM | Donanımın adı (çekirdek komut satırından veya /proc'ten). Makul ölçüde okunaklı OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. |
HOST | Derlemenin oluşturulduğu ana makineyi benzersiz şekilde tanımlayan, kullanıcıların okuyabileceği biçimde bir dize. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
Kimlik | Cihaz uygulayıcısı tarafından, belirli bir sürümü belirtmek için seçilen, kullanıcı tarafından okunabilir biçimdeki bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapabileceği kadar anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9._-]+$" normal ifadesiyle eşleşmelidir. |
ÜRETİCİ | Ürünün özgün donanım üreticisinin (OEM) ticari adı. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
MODEL | Cihaz uygulayıcısı tarafından seçilen ve son kullanıcının bildiği cihaz adını içeren bir değer. Bu, cihazın pazarlandığı ve son kullanıcılara satıldığı adla aynı OLMALIDIR. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
ÜRÜN | Cihaz uygulayıcısı tarafından seçilen ve belirli ürünün (SKU) geliştirme adını veya kod adını içeren bir değerdir. Bu değer, aynı marka içinde benzersiz OLMALIDIR. Kullanıcılar tarafından okunabilir OLMALIDIR ancak son kullanıcılar tarafından görüntülenmesi amaçlanmamıştır. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9_-]+$" normal ifadesiyle eşleşmelidir. Bu ürün adı, ürünün kullanım süresi boyunca DEĞİŞTİRİLMEMELİDİR. |
SERİ | Aynı MODEL ve ÜRETİCİ'ye sahip cihazlarda mevcut ve benzersiz OLMASI GEREKEN donanım seri numarası. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^([a-zA-Z0-9]{6,20})$" normal ifadesiyle eşleşmelidir. |
ETİKETLER | Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayırt edici hale getiren, virgülle ayrılmış etiket listesi. Bu alanda, üç tipik Android platformu imzalama yapılandırmasına karşılık gelen değerlerden biri BULUNMASI GEREKİR: release-keys, dev-keys, test-keys. |
SÜRE | Derlemenin gerçekleştiği zamanın zaman damgasını temsil eden bir değer. |
TÜR | Derlemenin çalışma zamanı yapılandırmasını belirten, cihaz uygulayıcısı tarafından seçilen bir değer. Bu alanda, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri BULUNMASI GEREKİR: user, userdebug veya eng. |
KULLANICI | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı veya kullanıcı kimliği. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
SECURITY_PATCH | Bir derlemenin güvenlik yaması düzeyini gösteren bir değer. Derlemenin, belirtilen Android Herkese Açık Güvenlik Bülteni'nde açıklanan sorunlardan hiçbirine karşı herhangi bir şekilde güvenlik açığı olmadığını GÖSTERMELİDİR. [YYYY-AA-GG] biçiminde OLMALIDIR ve Android Herkese Açık Güvenlik Bülteni veya Android Güvenlik Uyarısı'nda belirtilen bir dizeyle eşleşmelidir (ör. "2015-11-01"). |
BASE_OS | Android Public Security Bulletin'da sağlanan yamalar dışında bu derlemeyle aynı olan derlemenin FINGERPRINT parametresini temsil eden bir değer. Doğru değeri bildirmelidir ve böyle bir derleme yoksa boş bir dize ("") bildirmelidir. |
3.2.3. Intent Uyumluluğu
3.2.3.1. Temel Uygulama Amaçları
Android intent'leri, uygulama bileşenlerinin diğer Android bileşenlerinden işlev istemesine olanak tanır. Android yayın öncesi projesi, temel Android uygulamaları olarak kabul edilen ve yaygın işlemleri gerçekleştirmek için çeşitli intent kalıpları uygulayan uygulamaların listesini içerir. Temel Android uygulamaları şunlardır:
- Masa Saati
- Tarayıcı
- Takvim
- Kişiler
- Galeri
- GlobalSearch
- Roketatar
- Müzik
- Ayarlar
Cihaz uygulamaları, uygun olduğu şekilde temel Android uygulamalarını veya bu temel Android uygulamalarının tüm Etkinlik veya Hizmet bileşenleri tarafından tanımlanan ve android:exported
özelliği aracılığıyla diğer uygulamalara dolaylı veya açık bir şekilde sunulan aynı intent kalıplarını uygulayan bir bileşeni İÇERMELİDİR.
3.2.3.2. Amaç Çözümü
Android genişletilebilir bir platform olduğundan cihaz uygulamalarında, 3.2.3.1 numaralı bölümde belirtilen her intent kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına izin VERİLMELİDİR. Yukarı yönlü Android açık kaynak uygulaması buna varsayılan olarak izin verir; cihaz uygulayıcıları, sistem uygulamalarının bu intent kalıplarını kullanımına özel ayrıcalıklar eklememeli veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü devralmasını engellememelidir. Bu yasak, özellikle kullanıcının tümü aynı intent kalıbını işleyen birden fazla uygulama arasından seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bunlarla sınırlı değildir.
Cihaz uygulamalarında, kullanıcıların intent'ler için varsayılan etkinliği değiştirmesi amacıyla bir kullanıcı arayüzü ZORUNLUDUR.
Ancak cihaz uygulamaları, varsayılan etkinlik veri URI için daha spesifik bir özellik sağladığında belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten bir intent filtresi kalıbı, tarayıcının "http://" için temel intent kalıbından daha spesifiktir.
Android, üçüncü taraf uygulamalarının belirli türde web URI intent'leri için yetkili bir varsayılan uygulama bağlama davranışı beyan etmesine olanak tanıyan bir mekanizma da içerir. Bir uygulamanın intent filtresi kalıplarında bu tür yetkili beyanlar tanımlandığında cihaz uygulamaları:
- Yukarı akış Android Açık Kaynak Projesi'ndeki Paket Yöneticisi tarafından uygulandığı şekilde Dijital Öğe Bağlantıları spesifikasyonunda tanımlanan doğrulama adımlarını uygulayarak tüm intent filtrelerini doğrulamaya ÇALIŞMALIDIR.
- Uygulamanın yüklenmesi sırasında intent filtrelerinin doğrulanmasını DENEYMELİ ve başarıyla doğrulanan tüm UIR intent filtrelerini, UIR'leri için varsayılan uygulama işleyicileri olarak ayarlamalıdır.
- Belirli URI intent filtrelerini, URI'leri için varsayılan uygulama işleyicileri olarak ayarlayabilir (bu filtreler başarıyla doğrulanmışsa ancak diğer URI filtresi adayları doğrulanamazsa). Bir cihaz uygulaması bunu yaparsa kullanıcıya ayarlar menüsünde URI başına uygun kalıp geçersiz kılma seçenekleri SUNULMALIDIR.
- Kullanıcıya Ayarlar'da uygulama başına Uygulama Bağlantıları kontrolleri sağlamalıdır. Bu kontroller aşağıdaki gibi olmalıdır:
- Kullanıcı, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütünsel olarak geçersiz kılabilmelidir. Bu davranış, uygulamanın her zaman açılması, her zaman sorulması veya hiçbir zaman açılmaması şeklinde olabilir ve tüm URI intent filtresi adayları için eşit şekilde geçerli olmalıdır.
- Kullanıcı, URI intent filtresi adaylarının listesini görebilmelidir.
- Cihaz uygulaması, kullanıcıya başarılı bir şekilde doğrulanmış belirli URI intent filtrelerini intent filtresi bazında geçersiz kılma olanağı SUNABİLİR.
- Cihaz uygulaması, bazı URI intent filtrelerinin doğrulamayı geçersiz kılmasına izin verirken bazılarının doğrulamayı geçmesine izin veriyorsa kullanıcılara belirli URI intent filtrelerini görüntüleme ve geçersiz kılma olanağı SUNMALIDIR.
3.2.3.3. Intent Ad Alanları
Cihaz uygulamalarında, android veya com.android. ad alanındaki bir ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni intent veya yayın intent kalıplarını dikkate alan Android bileşeni BULUNMAMALIDIR. Cihaz uygulayıcıları, başka bir kuruluşa ait bir paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni intent veya yayın intent kalıplarını dikkate alan Android bileşenleri İÇERMEMELİDİR. Cihaz uygulayıcıları, 3.2.3.1 numaralı bölümde listelenen temel uygulamalar tarafından kullanılan intent kalıplarından hiçbirini değiştirmemeli veya genişletmemelidir. Cihaz uygulamalarında, kendi kuruluşlarıyla açıkça ilişkili olan ad alanlarını kullanan intent kalıpları YER ALABİLİR. Bu yasak, 3.6 numaralı bölümde Java dil sınıfları için belirtilene benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişikliklerden haberdar olmak için belirli intent'leri yayınlamak üzere platformdan yararlanır. Android uyumlu cihazlar, uygun sistem etkinliklerine yanıt olarak herkese açık yayın intent'lerini YAYITLAMAK ZORUNDADIR. Yayın intent'leri SDK dokümanlarında açıklanmaktadır.
3.2.3.5. Varsayılan Uygulama Ayarları
Android, kullanıcılara varsayılan uygulamalarını (ör. ana ekran veya SMS) kolayca seçmelerini sağlayan ayarlar içerir. Uygun olduğu durumlarda, cihaz uygulamalarında benzer bir ayarlar menüsü sağlanmalı ve SDK dokümanlarında aşağıda açıklandığı şekilde intent filtresi kalıbı ve API yöntemleriyle uyumlu olmalıdır.
Cihaz uygulamaları:
- Cihaz uygulaması android.software.home_screen bildirirse Ana Ekran için varsayılan uygulama ayarları menüsünü göstermek üzere android.settings.HOME_SETTINGS intent'ini UYGUNLAMALIDIR.
- Cihaz uygulaması android.hardware.telephony bildirirse varsayılan SMS uygulamasını değiştirmek için bir iletişim kutusu göstermek üzere android.provider.Telephony.ACTION_CHANGE_DEFAULT intent'ini çağıracak bir ayarlar menüsü ZORUNLUDUR.
- Cihaz uygulaması android.hardware.nfc.hce özelliğini raporluyorsa Dokun ve Öde için varsayılan uygulama ayarları menüsünü göstermek üzere android.settings.NFC_PAYMENT_SETTINGS niyetini UYGUNLAMALIDIR.
- Cihaz uygulaması
android.hardware.telephony
bildirirse kullanıcının varsayılan Telefon uygulamasını değiştirmesine izin veren bir iletişim kutusu göstermek için android.telecom.action.CHANGE_DEFAULT_DIALER intent'ini UYGUNLAMALIDIR .
3.3. Yerel API Uyumluluğu
Yerel kod uyumluluğu zordur. Bu nedenle, cihaz uygulayıcılarının, aşağıda listelenen kitaplıkların Android Açık Kaynak Projesi'ndeki uygulamalarını kullanması ŞİDDETLE ÖNERİLİR.
3.3.1. Uygulama İkili Arabirimleri
Managed Dalvik bayt kodu, uygulama .apk dosyasında uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak sağlanan yerel kodu çağırabilir. Yerel kod, temel işlemci teknolojisine oldukça bağlı olduğundan Android, Android NDK'de bir dizi uygulama ikili arayüzü (ABI) tanımlar. Cihaz uygulamaları bir veya daha fazla tanımlanmış ABI ile uyumlu OLMALIDIR ve aşağıdaki gibi Android NDK ile uyumluluğu uygulamalıdır.
Bir cihaz uygulaması, Android ABI'si desteği içeriyorsa:
- Standart Java Native Interface (JNI) semantiğini kullanarak yönetilen ortamda çalışan kodun yerel kodu çağırması için destek DAHİL OLMALIDIR.
- Aşağıdaki listedeki her gerekli kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
- 64 bit ABI destekleniyorsa eşdeğer 32 bit ABI'yi DE desteklemelidir.
- Cihaz tarafından desteklenen yerel Uygulama İkili Arayüzü'nü (ABI), android.os.Build.SUPPORTED_ABIS, android.os.Build.SUPPORTED_32_BIT_ABIS ve android.os.Build.SUPPORTED_64_BIT_ABIS parametreleri aracılığıyla doğru şekilde bildirmelidir. Bu parametrelerin her biri, en çok tercih edilenden en az tercih edilene göre sıralanmış ABI'lerin virgülle ayrılmış bir listesidir.
- Yukarıdaki parametreler aracılığıyla yalnızca Android NDK ABI Yönetimi dokümanının en son sürümünde belgelenen ve açıklanan ABI'leri bildirmeli ve Advanced SIMD (NEON olarak da bilinir) uzantısı desteği içermelidir.
- Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kod ve başlık dosyaları kullanılarak OLUŞTURULMALIDIR
Android NDK'nın gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın. Bir cihaz uygulaması, önceden tanımlanmış mevcut bir ABI ile uyumlu değilse hiçbir ABI için destek bildirmemelidir.
Aşağıdaki yerel kod API'leri, yerel kod içeren uygulamalar tarafından KULLANILABİLİR OLMALIDIR:
- libandroid.so (yerel Android etkinliği desteği)
- libc (C kitaplığı)
- libcamera2ndk.so
- libdl (dinamik bağlayıcı)
- libEGL.so (yerel OpenGL yüzey yönetimi)
- libGLESv1_CM.so (OpenGL ES 1.x)
- libGLESv2.so (OpenGL ES 2.0)
- libGLESv3.so (OpenGL ES 3.x)
- libicui18n.so
- libicuuc.so
- libjnigraphics.so
- liblog (Android günlük kaydı)
- libmediandk.so (yerel medya API'leri desteği)
- libm (matematik kitaplığı)
- libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
- libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
- libRS.so
- libstdc++ (C++ için minimum destek)
- libvulkan.so (Vulkan)
- libz (Zlib sıkıştırması)
- JNI arayüzü
- Aşağıda açıklandığı şekilde OpenGL desteği
Yukarıda listelenen yerel kitaplıklar için cihaz uygulaması, herkese açık işlevleri eklememeli veya kaldırmamalıdır.
Yukarıda listelenmeyen ancak sistem kitaplıkları olarak AOSP'de uygulanıp sağlanan yerel kitaplıklar ayrılmıştır ve API düzeyi 24 veya üstünü hedefleyen üçüncü taraf uygulamalara AÇILMAMALISDIR.
Cihaz uygulamaları, AOSP dışındaki kitaplıklar ekleyebilir ve bunları doğrudan üçüncü taraf uygulamalarına API olarak gösterebilir ancak ek kitaplıklar /vendor/lib
veya /vendor/lib64
içinde OLMALI ve /vendor/etc/public.libraries.txt
içinde listelenmelidir .
Cihaz uygulamalarının libGLESv3.so dosyasını İÇERMESİ ve bunun sonucunda da NDK android-24 sürümünde tanımlandığı şekilde tüm OpenGL ES 3.1 ve Android Uzantı Paketi işlev simgelerini İHRACAT ETMESİ GEREKİR. Tüm semboller mevcut olmalıdır ancak yalnızca cihaz tarafından gerçekten desteklenen OpenGL ES sürümleri ve uzantılarıyla ilgili işlevler tam olarak uygulanmalıdır.
3.3.1.1. Grafik Kitaplıkları
Vulkan, yüksek performanslı 3D grafikler için düşük maliyetli, platformlar arası bir API'dir. Vulkan API'lerinin desteğini içermese bile cihaz uygulamaları aşağıdaki koşulları karşılamalıdır:
- Her zaman , temel Vulkan 1.0 API'nin yanı sıra
VK_KHR_surface
,VK_KHR_android_surface
veVK_KHR_swapchain
uzantılarının işlev simgelerini dışa aktaranlibvulkan.so
adlı bir yerel kitaplık SAĞLAMALIDIR.
Vulkan API'lerinin desteğini içeriyorsa cihaz uygulamaları:
vkEnumeratePhysicalDevices
araması üzerinden bir veya daha fazlaVkPhysicalDevices
bildirmelidir.- Listelenen her
VkPhysicalDevices
, Vulkan 1.0 API'yi eksiksiz şekilde UYGULAMALIDIR. - Doğru
PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL
vePackageManager#FEATURE_VULKAN_HARDWARE_VERSION
özellik işaretlerini bildirmelidir. - Uygulama paketinin yerel kitaplık dizininde
libVkLayer*.so
adlı yerel kitaplıklarda bulunan katmanlarılibvulkan.so
içindekivkEnumerateInstanceLayerProperties
vevkEnumerateDeviceLayerProperties
işlevleri aracılığıyla saymalıdır. - Uygulamada
android:debuggable=”true”
özelliği yoksa uygulama paketi dışındaki kitaplıklar tarafından sağlanan katmanları listelememeli veya Vulkan API'yi izlemenin ya da yakalamanın başka yollarını sağlamamalıdır.
Vulkan API'lerinin desteğini içermiyorsa cihaz uygulamaları:
vkEnumeratePhysicalDevices
çağrısı üzerinden 0VkPhysicalDevices
bildirmelidir.- Vulkan özellik bayraklarından
PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL
vePackageManager#FEATURE_VULKAN_HARDWARE_VERSION
hiçbirini İLAN ETMEmelidir.
3.3.2. 32 bit ARM Yerel Kod Uyumluluğu
ARMv8 mimarisi, mevcut yerel kodda kullanılan bazı işlemler de dahil olmak üzere çeşitli CPU işlemlerinin desteğini sonlandırıyor. 64 bit ARM cihazlarda, desteği sonlandırılan aşağıdaki işlemler 32 bit yerel ARM kodu için yerel CPU desteği veya yazılım emülasyonu aracılığıyla KESİNLİKLE kullanılabilir durumda kalmalıdır:
- SWP ve SWPB talimatları
- SETEND talimatı
- CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri
Android NDK'nın eski sürümleri, 32 bit ARM yerel kodundan CPU özelliklerini keşfetmek için /proc/cpuinfo dosyasını kullanıyordu. Bu NDK kullanılarak oluşturulan uygulamalarla uyumluluk için cihazların, 32 bit ARM uygulamaları tarafından okunduğunda /proc/cpuinfo dosyasında aşağıdaki satırları İÇERMESİ GEREKİR:
- "Özellikler: ", ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi.
- "CPU mimarisi: ", ardından cihazın desteklenen en yüksek ARM mimarisini tanımlayan bir tam sayı (ör. ARMv8 cihazlar için "8").
Bu koşullar yalnızca /proc/cpuinfo 32 bit ARM uygulamaları tarafından okunduğunda geçerlidir. Cihazlar, 64 bit ARM veya ARM olmayan uygulamalar tarafından okunduğunda /proc/cpuinfo dosyasını DEĞİŞTİRMEMELİDİR.
3.4. Web Uyumluluğu
3.4.1. WebView Uyumluluğu
android.software.webview platform özelliği, android.webkit.WebView API'sinin eksiksiz bir uygulamasını sağlayan tüm cihazlarda bildirilMELİDİR ve API'nin eksiksiz bir uygulamasını içermeyen cihazlarda bildirilMEMELİDİR. Android Açık Kaynak uygulaması, android.webkit.WebView'i uygulamak için Chromium Projesi'ndeki kodu kullanır. Web oluşturma sistemi için kapsamlı bir test paketi geliştirmek mümkün olmadığından cihaz uygulayıcıları, WebView uygulamasında Chromium'un belirli bir yayın derlemesini KULLANMAK ZORUNDADIR. Özellikle:
- Cihaz android.webkit.WebView uygulamaları, Android 7.0 için yayın öncesi Android Open Source Project'teki Chromium derlemesini temel almalıdır. Bu derleme, Web Görünümü için belirli işlev ve güvenlik düzeltmeleri içerir.
-
WebView tarafından bildirilen kullanıcı aracısı dizesi ŞU biçimde OLMALIDIR:
Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD); wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36
- $(VERSION) dizesinin değeri, android.os.Build.VERSION.RELEASE değerinin aynısı OLMALIDIR.
- $(MODEL) dizenin değeri, android.os.Build.MODEL değerinin aynısı OLMALIDIR.
- $(BUILD) dizesinin değeri, android.os.Build.ID değeriyle AYNI OLMALIDIR.
- $(CHROMIUM_VER) dizesinin değeri, yayın öncesi Android Açık Kaynak Projesi'ndeki Chromium sürümünün OLMALIDIR.
- Cihaz uygulamaları, kullanıcı aracısı dizesinde Mobil ifadesini EKSİLTİREBİLİR.
WebView bileşeni, mümkün olduğunca çok sayıda HTML5 özelliği için destek İÇERMELİDİR ve özelliği destekliyorsa HTML5 spesifikasyonuna uygun OLMALIDIR.
3.4.2. Tarayıcı Uyumluluğu
Bağımsız tarayıcı, WebKit dışında bir tarayıcı teknolojisine dayalı OLABİLİR. Ancak alternatif bir tarayıcı uygulaması kullanılsa bile üçüncü taraf uygulamalarına sağlanan android.webkit.WebView bileşeni, 3.4.1 numaralı bölümde açıklandığı gibi WebKit'e dayalı OLMALIDIR.
Uygulamalar, bağımsız tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi gönderebilir.
Bağımsız Tarayıcı uygulaması (üst akış WebKit Tarayıcı uygulamasına veya üçüncü taraf bir değişime dayalı olsun) mümkün olduğunca fazla HTML5 desteği İÇERMELİDİR. Cihaz uygulamalarının, HTML5 ile ilişkili aşağıdaki API'lerin her birini en azından desteklemesi GEREKİR:
Ayrıca cihaz uygulamaları HTML5/W3C webstorage API'yi destekleMELİ ve HTML5/W3C IndexedDB API'yi DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları webstorage yerine IndexedDB'i tercih etmeye başladığından, IndexedDB'in Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesinin beklendiğini unutmayın.
3.5. API Davranış Uyumluluğu
API türlerinin her birinin (yönetilen, yumuşak, yerel ve web) davranışları, yayın öncesi Android Open Source Project'in tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumluluğun bazı belirli alanları şunlardır:
- Cihazlar, standart bir intent'in davranışını veya anlamını DEĞİŞTİRMEmelidir.
- Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, İçerik Sağlayıcı vb.) yaşam döngüsünü veya yaşam döngüsü anlamlarını DEĞİŞTİRMEMELİDİR.
- Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEmelidir.
Yukarıdaki listede olası her duruma yer verilmemiştir. Uyumluluk Test Paketi (CTS), platformun önemli bölümlerini davranışsal uyumluluk açısından test eder ancak platformun tamamını test etmez. Android Open Source Project ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcıları, sistemin önemli bölümlerini yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodu KULLANMALIDIR.
3.6. API ad alanları
Android, Java programlama dili tarafından tanımlanan paket ve sınıf ad alanı kurallarına uyar. Cihaz uygulayıcıları, üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için aşağıdaki paket ad alanlarında yasaklanmış herhangi bir değişiklik YAPMAMALIDIR:
- java.*
- javax.*
- güneş.*
- android.*
- com.android.*
Yasaklanan değişiklikler arasında şunlar yer alır :
- Cihaz uygulamaları, herhangi bir yöntem veya sınıf imzasını değiştirerek ya da sınıfları veya sınıf alanlarını kaldırarak Android platformunda herkese açık olarak sunulan API'lerde değişiklik YAPMAMALIDIR.
- Cihaz uygulayıcıları, API'lerin temel uygulamasını DEĞİŞTİREBİLİR ancak bu tür değişiklikler, herkese açık olarak sunulan API'lerin belirtilen davranışını ve Java dili imzasını ETKİLEMEmelidir.
- Cihaz uygulayıcıları, yukarıdaki API'lere herkese açık öğeler (ör. sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere ait alanlar ya da yöntemler) ekleMEMELİDİR.
"Herkese açık olarak sunulan öğe", yayın öncesi Android kaynak kodunda kullanılan "@hide" işaretçisiyle süslenmemiş tüm yapılardır. Diğer bir deyişle, cihaz uygulayıcıları yukarıda belirtilen ad alanlarında yeni API'ler göstermemeli veya mevcut API'lerde değişiklik YAPMAMALIDIR. Cihaz uygulayıcıları yalnızca dahili değişiklikler YAPABİLİR ancak bu değişikliklerin reklamı YAPILMAMALI veya geliştiricilere başka bir şekilde gösterilMEMELİDİR.
Cihaz uygulayıcıları özel API'ler EKLEYEBİLİYOR ancak bu tür API'ler başka bir kuruluşa ait veya başka bir kuruluşa atıfta bulunan bir ad alanında OLMAYACAK. Örneğin, cihaz uygulayıcıları com.google.* veya benzer bir ad alanına API ekleMEmelidir: Bunu yalnızca Google yapabilir. Benzer şekilde, Google da diğer şirketlerin ad alanlarına API ekleMEmelidir. Ayrıca, bir cihaz uygulaması standart Android ad alanının dışında özel API'ler içeriyorsa bu API'ler bir Android paylaşılan kitaplığına paketlenmelidir. Böylece, bu API'lerin artan bellek kullanımı yalnızca bunları açıkça kullanan uygulamalardan (<uses-library> mekanizması aracılığıyla) etkilenir.
Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarının birini iyileştirmeyi önerirse (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) source.android.com adresini ziyaret edip bu sitedeki bilgilere göre değişiklik ve kod katkıda bulunma sürecine BAŞLAMALIDIR.
Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmayla ilgili standart kurallara karşılık geldiğini unutmayın. Bu bölüm, bu kuralları pekiştirmeyi ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmeyi amaçlamaktadır.
3.7. Çalışma Zamanı Uyumluluğu
Cihaz uygulamaları, tam Dalvik yürütülebilir (DEX) biçimini ve Dalvik bayt kodu spesifikasyonunu ve anlamlarını desteklemelidir. Cihaz uygulayıcıları, Dalvik Yürütülebilir Biçimi'nin referans yayın öncesi uygulamasını ve referans uygulamanın paket yönetimi sistemini kullanan ART'yi KULLANMALIDIR.
Cihaz uygulamaları, Dalvik çalışma zamanlarını, yukarı akış Android platformuna ve aşağıdaki tabloda belirtildiği şekilde bellek ayıracak şekilde yapılandırmalıdır. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 numaralı bölüme bakın.) Aşağıda belirtilen bellek değerlerinin minimum değerler olarak kabul edildiğini ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceğini unutmayın.
Ekran Düzeni | Ekran Yoğunluğu | Minimum Uygulama Belleği |
---|---|---|
Android Watch | 120 dpi (ldpi) | 32MB |
160 dpi (mdpi) | ||
213 dpi (tvdpi) | ||
240 dpi (hdpi) | 36MB | |
280 dpi (280dpi) | ||
320 dpi (xhdpi) | 48MB | |
360 dpi (360dpi) | ||
400 dpi (400dpi) | 56MB | |
420 dpi (420dpi) | 64MB | |
480 dpi (xxhdpi) | 88MB | |
560 dpi (560dpi) | 112MB | |
640 dpi (xxxhdpi) | 154MB | |
küçük/normal | 120 dpi (ldpi) | 32MB |
160 dpi (mdpi) | ||
213 dpi (tvdpi) | 48MB | |
240 dpi (hdpi) | ||
280 dpi (280dpi) | ||
320 dpi (xhdpi) | 80MB | |
360 dpi (360dpi) | ||
400 dpi (400dpi) | 96MB | |
420 dpi (420dpi) | 112MB | |
480 dpi (xxhdpi) | 128MB | |
560 dpi (560dpi) | 192MB | |
640 dpi (xxxhdpi) | 256MB | |
large | 120 dpi (ldpi) | 32MB |
160 dpi (mdpi) | 48MB | |
213 dpi (tvdpi) | 80MB | |
240 dpi (hdpi) | ||
280 dpi (280dpi) | 96MB | |
320 dpi (xhdpi) | 128MB | |
360 dpi (360dpi) | 160MB | |
400 dpi (400dpi) | 192MB | |
420 dpi (420dpi) | 228MB | |
480 dpi (xxhdpi) | 256MB | |
560 dpi (560dpi) | 384MB | |
640 dpi (xxxhdpi) | 512MB | |
xlarge | 120 dpi (ldpi) | 48MB |
160 dpi (mdpi) | 80MB | |
213 dpi (tvdpi) | 96MB | |
240 dpi (hdpi) | ||
280 dpi (280dpi) | 144MB | |
320 dpi (xhdpi) | 192MB | |
360 dpi (360dpi) | 240MB | |
400 dpi (400dpi) | 288MB | |
420 dpi (420dpi) | 336MB | |
480 dpi (xxhdpi) | 384MB | |
560 dpi (560dpi) | 576MB | |
640 dpi (xxxhdpi) | 768MB |
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.1. Başlatıcı (Ana Ekran)
Android, bir başlatıcı uygulaması (ana ekran) ve cihaz başlatıcısının (ana ekran) yerini alacak üçüncü taraf uygulamaları için destek içerir. Üçüncü taraf uygulamalarının cihaz ana ekranını değiştirmesine izin veren cihaz uygulamalarında android.software.home_screen platform özelliği İLANI GEREKİR.
3.8.2. Widget'lar
Android, uygulamaların son kullanıcıya "AppWidget" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü tanımlar. Bu özellik, el cihazı uygulamalarında DESTEKLENMESİ KESİNLİKLE ÖNERİLİR. Ana ekrana widget yerleştirmeyi destekleyen cihaz uygulamaları aşağıdaki koşulları karşılamalı ve android.software.app_widgets platform özelliğini desteklediğini beyan etmelidir.
- Cihaz başlatıcılar, uygulama widget'ları için yerleşik destek içermeli ve uygulama widget'larını doğrudan başlatıcıdan eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü olanakları sunmalıdır.
- Cihaz uygulamalarının standart ızgara boyutunda 4x4 widget oluşturabilmesi GEREKİR. Ayrıntılar için Android SDK dokümanlarındaki Uygulama Widget'ı Tasarım Yönergeleri'ne bakın.
- Kilit ekranı desteği içeren cihaz uygulamaları, kilit ekranındaki uygulama widget'larını DESTEKLEYEBİLİR.
3.8.3. Bildirimler
Android, geliştiricilerin cihazın donanım ve yazılım özelliklerini kullanarak kullanıcıları önemli etkinlikler hakkında bilgilendirmesine olanak tanıyan API'ler içerir.
Bazı API'ler, uygulamaların donanım (özellikle ses, titreşim ve ışık) kullanarak bildirim göndermesine veya dikkat çekmesine olanak tanır. Cihaz uygulamaları, SDK dokümanlarında açıklandığı şekilde ve mümkün olduğu ölçüde cihaz uygulaması donanımıyla donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim varsa titreşim API'lerinin doğru şekilde uygulanması GEREKİR. Bir cihaz uygulamasında donanım yoksa ilgili API'ler no-op olarak uygulanmalıdır. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmıştır.
Ayrıca, uygulama, API'lerde veya Durum/Sistem Çubuğu simge stil kılavuzunda sağlanan tüm kaynakları (simgeler, animasyon dosyaları vb.) doğru şekilde oluşturmalıdır. Android TV cihazlarda bu, bildirimlerin gösterilmemesini de kapsar. Cihaz uygulayıcıları, bildirimler için referans Android açık kaynak uygulaması tarafından sağlanan alternatif bir kullanıcı deneyimi SUNABİLİR. Ancak bu tür alternatif bildirim sistemleri, yukarıda belirtildiği gibi mevcut bildirim kaynaklarını DESTEKLEMELİDİR.
Android, aşağıdakiler gibi çeşitli bildirimler için destek içerir:
- Zengin bildirimler . Devam eden bildirimler için etkileşimli görüntülemeler.
- Uyarı bildirimleri . Etkileşimli Görüntüler, kullanıcıların mevcut uygulamadan ayrılmadan işlem yapmasına veya reklamı kapatmasına olanak tanır.
- Kilit ekranı bildirimleri'ne gidin . Görünürlük üzerinde ayrıntılı kontrol sunan kilit ekranında gösterilen bildirimler.
Bu tür bildirimler görünür hale getirildiğinde Android cihaz uygulamalarında zengin ve uyarı bildirimleri düzgün şekilde yürütülmeli ve Android API'lerinde belirtildiği gibi başlık/ad, simge, metin eklenmelidir.
Android, uygulamaların (kullanıcı tarafından açıkça etkinleştirildikten sonra) yayınlandıkları veya güncellendikleri sırada tüm bildirimlerin bir kopyasını almasına olanak tanıyan bildirim dinleyici hizmeti API'leri içerir. Cihaz uygulamaları, bildirim nesnesine eklenmiş tüm meta veriler dahil olmak üzere, bu tür tüm yüklü ve kullanıcı tarafından etkinleştirilmiş dinleyici hizmetlerine bildirimleri eksiksiz olarak doğru ve hızlı bir şekilde göndermelidir.
Rahatsız etmeyin özelliğini destekleyen cihaz uygulamaları aşağıdaki koşulları ZORUNLU KILACAK şekilde uygulanmalıdır:
- ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS intent'ine yanıt verecek bir etkinlik UYGULANMALIDIR. UI_MODE_TYPE_NORMAL ile yapılan uygulamalarda bu etkinlik, kullanıcının uygulamaya DND politikası yapılandırmalarına erişim izni verebileceği veya vermeyeceği bir etkinlik OLMALIDIR.
- Cihaz uygulaması, kullanıcının üçüncü taraf uygulamaların DND politikası yapılandırmasına erişmesine izin vermesi veya vermemesi için bir yöntem sağladığında, kullanıcı tarafından oluşturulan ve önceden tanımlanmış kuralların yanı sıra uygulamalar tarafından oluşturulan otomatik DND kurallarını GÖSTERMELİDİR.
NotificationManager.Policy
üzerinden iletilensuppressedVisualEffects
değerlerini UYGUNLAŞTIRMALIDIR ve bir uygulama SUPPRESSED_EFFECT_SCREEN_OFF veya SUPPRESSED_EFFECT_SCREEN_ON işaretlerinden herhangi birini ayarladığında, kullanıcıya Görsel efektlerin DND ayarları menüsünde devre dışı bırakıldığını GÖSTERMELİDİR.
3.8.4. Arat
Android, geliştiricilerin uygulamalarına arama özelliğini dahil etmelerine ve uygulamalarının verilerini küresel sistem aramasına sunmalarına olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmelerine olanak tanıyan, kullanıcılar yazarken öneriler gösteren ve sonuçları gösteren tek bir sistem genelinde kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü yeniden kullanmasına ve ortak küresel arama kullanıcı arayüzüne sonuç sağlamasına olanak tanır.
Android cihaz uygulamalarında, kullanıcı girişine yanıt olarak anlık öneriler sunabilen tek, paylaşılan, sistem genelinde bir arama kullanıcı arayüzü olan genel arama YER ALMALIDIR. Cihaz uygulamalarında, geliştiricilerin kendi uygulamalarında arama sağlamak için bu kullanıcı arayüzünü yeniden kullanmalarına olanak tanıyan API'ler UYGULANMALIDIR. Global arama arayüzünü uygulayan cihaz uygulamaları, üçüncü taraf uygulamalarının global arama modunda çalıştırıldığında arama kutusuna öneri eklemesine izin veren API'leri UYGULAMALIDIR. Bu işlevi kullanan üçüncü taraf uygulaması yüklü değilse varsayılan davranış, web arama motoru sonuçlarını ve önerilerini göstermek OLMALIDIR.
Android cihaz uygulamalarında Yardımcı işlem'i işlemek için cihazda bir asistan uygulanmalıdır. Android Automotive uygulamalarında ise bu işlem zorunludur.
Android, uygulamaların mevcut bağlamla ilgili ne kadar bilginin cihazdaki asistanla paylaşılacağı konusunda seçim yapmasına olanak tanımak için Assist API'lerini de içerir. Yardım işlemini destekleyen cihaz uygulamaları, ekranın kenarlarında beyaz bir ışık göstererek bağlamın paylaşıldığı durumları son kullanıcıya açıkça belirtmelidir. Son kullanıcının net bir şekilde görebileceğinden emin olmak için göstergenin, Android Open Source Project uygulamasının süresini ve parlaklığını karşılaması VEYA aşması GEREKİR.
3.8.5. Durum mesajları
Uygulamalar, son kullanıcıya kısa süre sonra kaybolan kısa, modal olmayan dizeler göstermek için "Toast" API'sini kullanabilir. Cihaz uygulamalarında, uygulamalardan son kullanıcılara gönderilen pop-up'lar yüksek görünür bir şekilde gösterilmelidir.
3.8.6. Temalar
Android, uygulamaların bir etkinliğin veya uygulamanın tamamına stil uygulamak için kullanabileceği bir mekanizma olarak "temalar" sağlar.
Android, Android SDK'sı tarafından tanımlanan Holo tema görünüm ve tarzını eşleştirmek isteyen uygulama geliştiricilerin kullanabileceği bir "Holo" tema ailesi içerir. Cihaz uygulamalarında, uygulamalara sunulan Holo tema özelliklerinden hiçbiri DEĞİŞTİRİLMEMELİDİR.
Android, uygulama geliştiricilerin farklı Android cihaz türlerinde tasarım temasının görünümünü ve tarzını eşleştirmek istiyorsa kullanabileceği tanımlanmış bir stil grubu olarak "Materyal" tema ailesini içerir. Cihaz uygulamaları "Material" tema ailesini DESTEKLEMELİDİR ve Material tema özelliklerinden veya uygulamalara sunulan öğelerinden hiçbirini DEĞİŞTİRMEmelidir.
Android, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünüm ve tarzını eşleştirmek isterse kullanabileceği tanımlanmış stiller grubu olarak "Cihaz Varsayılan" tema ailesini de içerir. Cihaz uygulamaları, uygulamalara sunulan Cihaz Varsayılan teması özelliklerini DEĞİŞTİREBİLİR.
Android, yarı saydam sistem çubuklarına sahip bir varyant temayı destekler. Bu tema, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içerikleriyle doldurmasına olanak tanır. Bu yapılandırmada tutarlı bir geliştirici deneyimi sunmak için durum çubuğu simgesi stilinin farklı cihaz uygulamalarında korunması önemlidir. Bu nedenle, Android cihaz uygulamalarında, sistem durumu simgeleri (ör. sinyal gücü ve pil seviyesi) ve sistem tarafından gönderilen bildirimler için beyaz renk ZORUNLUDUR. Simge sorunlu bir durumu belirtmediği veya uygulama SYSTEM_UI_FLAG_LIGHT_STATUS_BAR işaretini kullanarak açık renkli bir durum çubuğu istemediği sürece bu renk kullanılmalıdır. Bir uygulama açık renkli durum çubuğu istediğinde Android cihaz uygulamalarında sistem durumu simgelerinin rengi siyah olarak DEĞİŞTİRİLMELİDİR (ayrıntılar için R.style bölümüne bakın).
3.8.7. Animasyonlu Duvar Kağıtları
Android, uygulamaların son kullanıcıya bir veya daha fazla "Canlı Duvar Kağıdı" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü tanımlar. Canlı duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak görüntülenen, sınırlı giriş özelliklerine sahip animasyonlar, desenler veya benzer resimlerdir.
Donanım, tüm canlı duvar kağıtlarını işlevsellik açısından herhangi bir sınırlama olmadan, diğer uygulamalar üzerinde olumsuz bir etki oluşturmadan makul bir kare hızında çalıştırabiliyorsa canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabilir olarak kabul edilir. Donanımdaki sınırlamalar, duvar kağıtlarının ve/veya uygulamaların kilitlenmesine, arızalanmasına, aşırı CPU veya pil gücü tüketimine ya da kabul edilemeyecek kadar düşük kare hızlarında çalışmasına neden oluyorsa donanım, canlı duvar kağıdı çalıştıramaz. Örneğin, bazı canlı duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamı kullanabilir. OpenGL bağlamının canlı duvar kağıdı kullanımı, OpenGL bağlamı kullanan diğer uygulamalarla çakışabileceğinden canlı duvar kağıdı, birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.
Yukarıda açıklandığı gibi canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabilen cihaz uygulamaları, canlı duvar kağıtlarını UYGULAMALI ve uygulandığında platform özellik işareti android.software.live_wallpaper'ı BİLDİRMELİDİR.
3.8.8. Etkinlik Değiştirme
Yukarı yönlü Android kaynak kodu, görev değiştirme ve kullanıcının uygulamadan en son çıktığı andaki uygulamanın grafik durumunun küçük resmini kullanarak son erişilen etkinlikleri ve görevleri görüntülemek için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir. 7.2.3 numaralı bölümde ayrıntılı olarak açıklanan son etkinlikler işlevi gezinme anahtarı da dahil olmak üzere cihaz uygulamaları arayüzü değiştirebilir ancak aşağıdaki şartları karşılamalıdır:
- En az 6 görüntülenen etkinliği desteklemelidir.
- Bir seferde en az 4 etkinliğin başlığını GÖSTERMELİDİR.
- Ekran sabitleme davranışını uygulamalı ve kullanıcıya özelliği etkinleştirip devre dışı bırakabileceği bir ayarlar menüsü sağlamalıdır.
- Son uygulamalarda vurgu rengini, simgesini ve ekran başlığını GÖSTERMELİDİR.
- Kapatma imkanı ("x") gösterilMELİDİR ancak kullanıcı ekranlarla etkileşime geçene kadar bu işlem ertelenebilir.
- Önceki etkinliğe kolayca geçmek için bir kısayol UYGULANMALIDIR.
- İlişkili son etkinlikleri birlikte hareket eden bir grup olarak GÖSTEREBİLİR.
- Son uygulamalar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işlemini TETİKLEMELİDİR.
- Son uygulamalar işlev tuşuna uzun basıldığında, destekleniyorsa bölünmüş ekran çoklu pencere modunu TETİKLEMELİDİR.
Cihaz uygulamalarında, genel bakış ekranı için yayın öncesi Android kullanıcı arayüzünün (veya küçük resim tabanlı benzer bir arayüzün) kullanılması önemle ÖNERİLİR.
3.8.9. Giriş Yönetimi
Android, Giriş Yönetimi ve üçüncü taraf giriş yöntemi düzenleyicileri için destek içerir. Kullanıcıların cihazda üçüncü taraf giriş yöntemleri kullanmasına izin veren cihaz uygulamalarının android.software.input_methods platform özelliğini tanımlaması ve Android SDK dokümanlarında tanımlandığı şekilde IME API'lerini desteklemesi GEREKİR.
android.software.input_methods özelliğini açıklayan cihaz uygulamaları, üçüncü taraf giriş yöntemlerini eklemek ve yapılandırmak için kullanıcının erişebileceği bir mekanizma sağlamalıdır. Cihaz uygulamalarında, android.settings.INPUT_METHOD_SETTINGS intent'ine yanıt olarak ayarlar arayüzü GÖSTERİLMELİDİR.
3.8.10. Kilit Ekranı Medya Denetimi
Android 5.0'den itibaren, medya uygulamalarının kilit ekranında görüntülenen oynatma kontrolleriyle entegrasyonuna olanak tanıyan Medya Bildirim Şablonu'nun kullanılması önerilir. Bu nedenle, Uzaktan Kumanda İstemci API'sinin desteği sonlandırılmıştır. Android Automotive veya Watch uygulaması olmadığı sürece, kilit ekranını destekleyen cihaz uygulamaları Medya Bildirimi Şablonu dahil olmak üzere Kilit Ekranı Bildirimlerini GÖSTERMELİDİR.
3.8.11. Ekran koruyucular (eski adıyla Hayaller)
Android, daha önce Düşler olarak adlandırılan etkileşimli ekran koruyucuları için destek sunar. Ekran koruyucular, güç kaynağına bağlı bir cihaz boştayken veya masaüstü dock'ına yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Android Watch cihazlar ekran koruyucuları UYGULAYABİLİR ancak diğer cihaz uygulama türleri ekran koruyucu desteği içermeli ve kullanıcıların android.settings.DREAM_SETTINGS
intent'ine yanıt olarak ekran koruyucuları yapılandırmaları için bir ayar seçeneği sunmalıdır.
3.8.12. Konum
Bir cihazda konum koordinatlarını sağlayabilen bir donanım sensörü (ör. GPS) varsa Ayarlar'daki Konum menüsünde konum modları gösterilmelidir.
3.8.13. Unicode ve Yazı Tipi
Android, Unicode 9.0'da tanımlanan emoji karakterlerini destekler. Tüm cihaz uygulamaları bu emoji karakterlerini renkli glifte oluşturabilmelidir ve Android cihaz uygulamaları bir IME içeriyorsa kullanıcıya bu emoji karakterleri için bir giriş yöntemi sunmalıdır.
Android el cihazları, Unicode Teknik Raporu 51'de belirtildiği gibi ten rengini ve çeşitli aile emojilerini DESTEKLEMELİDİR.
Android, farklı kalınlıklara sahip Roboto 2 yazı tipini destekler (sans-serif-ince, sans-serif-açık, sans-serif-orta, sans-serif-siyah, sans-serif-yoğun, sans-serif-yoğun-açık). Bu yazı tiplerinin tümü, cihazda bulunan diller ve Latin, Yunanca ve Kiril dillerinin Unicode 7.0'daki tam kapsamı (Latin A, B, C ve D aralıkları dahil) ve Unicode 7.0'daki para birimi sembolleri bloğundaki tüm karakterler için DAHİL EDİLMELİDİR.
3.8.14. Çoklu pencereler
Bir cihaz uygulaması, birden fazla çoklu pencere modu uygulamamayı seçebilir ancak aynı anda birden fazla etkinlik görüntüleme özelliğine sahipse bu tür çoklu pencere modlarını Android SDK çoklu pencere modu destek dokümanlarında açıklanan uygulama davranışlarına ve API'lerine uygun şekilde uygulamalı ve aşağıdaki şartları karşılamalıdır:
- Uygulamalar, AndroidManifest.xml dosyasında
android:resizeableActivity
özelliği aracılığıyla açıkça veya targetSdkVersion değerinin 24'ten yüksek olmasıyla dolaylı olarak çoklu pencere modunda çalışabildiklerini belirtebilir. Bu özelliği manifest dosyalarında açıkça false olarak ayarlayan uygulamalar çoklu pencere modunda başlatılmamalıdır. Özelliği manifest dosyalarında ayarlamayan uygulamalar (targetSdkVersion < 24) çoklu pencere modunda başlatılabilir ancak sistem, uygulamanın çoklu pencere modunda beklendiği gibi çalışmayabileceği konusunda uyarı sağlamalıdır. - Hem ekran yüksekliği hem de genişliği 440 dp'den azsa cihaz uygulamalarında bölünmüş ekran veya serbest biçim modu TEKLİF EDİLMEMELİDİR.
- Ekran boyutu
xlarge
olan cihaz uygulamaları serbest biçim modunu DESTEKLEMELİDİR. - Android TV cihaz uygulamalarında, pencere içinde pencere (PIP) modu çoklu pencere desteklenmeli ve PIP AÇIK olduğunda PIP çoklu pencere sağ üst köşeye yerleştirilmelidir.
- PiP modu çoklu pencere desteğine sahip cihaz uygulamalarında, PiP penceresi için en az 240x135 dp ayrılmalıdır.
- PIP çoklu pencere modu destekliyorsa PIP penceresini kontrol etmek için
KeyEvent.KEYCODE_WINDOW
anahtarı ZORUNLU KILINACAK; aksi takdirde anahtar, ön plan etkinliği tarafından ZORUNLU KILINACAK.
3.9. Cihaz Yönetimi
Android, güvenlik bilincine sahip uygulamaların Android Cihaz Yönetimi API aracılığıyla sistem düzeyinde cihaz yönetimi işlevleri (ör. şifre politikalarını uygulama veya uzaktan silme) gerçekleştirmesine olanak tanıyan özellikler içerir. Cihaz uygulamalarında DevicePolicyManager sınıfının bir uygulaması ZORUNLUDUR. Güvenli kilit ekranını destekleyen cihaz uygulamalarında, Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tamamı uygulanmalı ve android.software.device_admin platform özelliği raporlanmalıdır.
3.9.1 Cihaz Temel Hazırlığı
3.9.1.1 Cihaz sahibi temel hazırlığı
Bir cihaz uygulaması android.software.device_admin
özelliğini beyan ediyorsa cihaz politikası istemcisinin (DPC) cihaz sahibi uygulaması için aşağıda belirtildiği şekilde temel hazırlığı uygulaması GEREKİR:
- Cihaz uygulamasında henüz yapılandırılmamış kullanıcı verileri varsa:
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içintrue
'ü bildirmelidir.android.app.action.PROVISION_MANAGED_DEVICE
intent işlemine yanıt olarak DPC uygulamasını cihaz sahibi uygulaması olarak kaydettirmelidir.- Cihaz,
android.hardware.nfc
özellik işareti aracılığıyla yakın alan iletişimi (NFC) desteğini beyan ederse ve MIME türüMIME_TYPE_PROVISIONING_NFC
olan bir kayıt içeren bir NFC mesajı alırsa DPC uygulamasını cihaz sahibi uygulaması olarak kaydettirmelidir.
- Cihaz uygulamasında kullanıcı verileri varsa:
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içinfalse
değerini bildirmelidir.- Artık hiçbir DPC uygulamasını Cihaz Sahibi Uygulaması olarak kaydettirmemelidir.
Cihaz uygulamalarında, cihaz yönetimi işlevlerini gerçekleştiren önceden yüklenmiş bir uygulama OLABİLİR ancak bu uygulama, kullanıcının veya cihazın yöneticisinin açık izni ya da işlemi olmadan Cihaz Sahibi uygulaması olarak AYARLANMAMALIDIR.
3.9.1.2 Yönetilen profil temel hazırlığı
Bir cihaz uygulamasında android.software.managed_users belirtiliyorsa yeni bir yönetilen profilin sahibi olarak bir cihaz politikası denetleyici (DPC) uygulamasının kaydedilebilmesi GEREKİR.
Yönetilen profil temel hazırlığı süreci (android.app.action.PROVISION_MANAGED_PROFILE tarafından başlatılan akış) kullanıcı deneyimi AOSP uygulamasıyla uyumlu OLMALIDIR.
Cihaz uygulamalarında, belirli bir sistem işlevi Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığında kullanıcıya bunu belirtmek için Ayarlar kullanıcı arayüzünde aşağıdaki kullanıcı özelliklerini ZORUNLU KULLANILMASI GEREKİR:
- Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya başka bir kullanıcı özelliği (ör. yayın öncesi AOSP bilgi simgesi).
- Cihaz yöneticisi tarafından
setShortSupportMessage
üzerinden sağlanan kısa bir açıklama mesajı. - DPC uygulamasının simgesi.
3.9.2 Yönetilen Profil Desteği
Yönetilen profil özelliğine sahip cihazlar şunlardır:
- android.software.device_admin iznini belirtin (3.9 Cihaz Yönetimi bölümüne bakın).
- Düşük RAM'e sahip cihazlar değildir (7.6.1 numaralı bölüme bakın).
- Dahili (kaldırılabilir olmayan) depolama alanını paylaşılan depolama alanı olarak ayırın (7.6.2 bölümüne bakın).
Yönetilen profillerin kullanılabildiği cihazlar ŞARTLAR:
- Platform özellik bayrağını
android.software.managed_users
tanımlayın . android.app.admin.DevicePolicyManager
API'leri aracılığıyla yönetilen profilleri destekler.- Yalnızca bir yönetilen profilin oluşturulmasına izin verin.
- Yönetilen uygulamaları, widget'ları ve Son Aramalar ve Bildirimler gibi rozetli diğer kullanıcı arayüzü öğelerini temsil etmek için simge rozeti (AOSP yayın öncesi çalışma rozetine benzer) kullanın.
- Kullanıcının yönetilen profil uygulamasında olduğunu belirtmek için bir bildirim simgesi (AOSP yayın iş rozetine benzer) gösterin.
- Cihaz açıldığında (ACTION_USER_PRESENT) ve ön plan uygulaması yönetilen profildeyse kullanıcının yönetilen profilde olduğunu belirten bir pop-up gösterin.
- Yönetilen profilin bulunduğu durumlarda, kullanıcının cihaz politikası denetleyicisi tarafından etkinleştirildiyse intent'i yönetilen profilden birincil kullanıcıya veya tam tersi şekilde yönlendirmesine izin vermek için intent "seçicisinde" görsel bir kolaylık gösterin.
- Yönetilen profilin bulunduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı özelliklerini gösterin:
- Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplanması.
- Birincil kullanıcı veya yönetilen profilde yüklü VPN uygulamalarının bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profilde yüklü uygulamaların bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profildeki hesapların bağımsız yönetimi.
- Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş numara çevirici, kişi ve mesajlaşma uygulamalarının, birincil profilin yanı sıra yönetilen profildeki (varsa) arayan bilgilerini de aradığından ve bulabildiğinden emin olun. Yönetilen profildeki kişiler, önceden yüklenmiş arama günlüğünde, arama içi kullanıcı arayüzünde, devam eden ve kaçırılan arama bildirimlerinde, kişi ve mesajlaşma uygulamalarında gösterildiğinde yönetilen profil uygulamalarını belirtmek için kullanılan rozetle işaretlenmelidir.
- 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 cihazlar için geçerli tüm güvenlik şartlarını karşılamalıdır (9.5 numaralı bölüme bakın).
- Yönetilen bir profilde çalışan uygulamalara erişim izni vermek için aşağıdaki koşulları karşılayan ayrı bir kilit ekranı belirtme özelliğini destekleyin.
- Cihaz uygulamalarında
DevicePolicyManager.ACTION_SET_NEW_PASSWORD
intent'i dikkate alınmalı ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmaya yönelik bir arayüz gösterilmelidir. - Yönetilen profilin kilit ekranı kimlik bilgileri, Android Açık Kaynak Projesi Sitesi'nde belirtildiği gibi üst profille aynı kimlik bilgisi depolama ve yönetim mekanizmalarını KULLANMAK ZORUNDADIR.
- getParentProfileInstance tarafından döndürülen
DevicePolicyManager
örneği çağrılmadığı sürece DPC şifre politikaları yalnızca yönetilen profilin kilit ekranı kimlik bilgileri için UYGULANMALIDIR.
- Cihaz uygulamalarında
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şim hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma çağrısı almasını ve metni konuşmaya dönüştürme, dokunma geri bildirimi ve izleme topu/d-pad gezinme gibi alternatif geri bildirim mekanizmaları oluşturmasını sağlayan platform API'leri sağlar.
Cihaz uygulamalarında aşağıdaki şartlar geçerlidir:
- Android Automotive uygulamaları, varsayılan Android uygulamasıyla tutarlı bir Android erişilebilirlik çerçevesi uygulaması SAĞLAMALIDIR.
- Cihaz uygulamalarında (Android Automotive hariç) varsayılan Android uygulamasıyla tutarlı bir Android erişilebilirlik çerçevesi uygulaması sağlanmalıdır.
- Cihaz uygulamaları (Android Automotive hariç) android.accessibilityservice API'leri aracılığıyla üçüncü taraf erişilebilirlik hizmeti uygulamalarını desteklemelidir.
- Cihaz uygulamaları (Android Automotive hariç) AccessibilityEvents oluşturmalı ve bu etkinlikleri varsayılan Android uygulamasıyla tutarlı bir şekilde kayıtlı tüm AccessibilityService uygulamalarına göndermelidir.
-
Cihaz uygulamalarında (ses çıkışı olmayan Android Automotive ve Android Watch cihazları hariç), erişilebilirlik hizmetlerini etkinleştirmek ve devre dışı bırakmak için kullanıcının erişebileceği bir mekanizma sağlanmalıdır ve android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS intent'ine yanıt olarak bu arayüz gösterilmelidir.
-
Ses çıkışı olan Android cihaz uygulamalarının, cihazda TalkBack** ve Anahtar Erişimi erişilebilirlik hizmetlerinin işlevselliğine eşdeğer veya bu işlevleri aşan erişilebilirlik hizmetleri uygulamaları sağlamak için KESİNLİKLE ÖNERİLİR (https://github.com/google/talkback).
- Ses çıkışına sahip Android Watch cihazlarda, TalkBack erişilebilirlik hizmetinin (https://github.com/google/talkback) işlevselliğiyle benzer veya daha fazla işlev sunan bir erişilebilirlik hizmeti uygulaması YER ALMALIDIR.
- Cihaz uygulamalarında, kullanıcıların ilgili erişilebilirlik hizmetlerini etkinleştirmesi için kutudan çıkar çıkmaz kurulum akışında bir mekanizma ve yazı tipi boyutunu, ekran boyutunu ve büyütme hareketlerini ayarlama seçenekleri BULUNMASI GEREKİR.
** Metin Okuma tarafından desteklenen diller için.
Ayrıca, önceden yüklenmiş bir erişilebilirlik hizmeti varsa cihazda Dosya Tabanlı Şifreleme (FBE) kullanılarak şifrelenmiş depolama alanı varsa bu hizmetin Doğrudan Önyükleme bilincine sahip {directBootAware} bir uygulama OLMASI GEREKİR.
3.11. Metin Okuma
Android, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına ve servis sağlayıcıların TTS hizmetlerinin uygulamalarını sunmasına olanak tanıyan API'ler içerir. android.hardware.audio.output özelliğini bildiren cihaz uygulamaları Android TTS çerçevesiyle ilgili bu koşulları karşılamalıdır.
Android Automotive uygulamaları:
- Android TTS çerçeve API'lerini desteklemelidir.
- Üçüncü taraf TTS motorlarının yüklenmesini DESTEKLEYEBİLİR. Destekleniyorsa iş ortakları, kullanıcının sistem düzeyinde kullanmak üzere bir TTS motoru seçmesine olanak tanıyan, kullanıcının erişebileceği bir arayüz SAĞLAMALIDIR.
Diğer tüm cihaz uygulamaları:
- Android TTS çerçeve API'lerini desteklemeli ve cihazda bulunan dilleri destekleyen bir TTS motoru içermelidir. Yukarı yönlü Android açık kaynak yazılımının tam özellikli bir TTS motoru uygulaması içerdiğini unutmayın.
- Üçüncü taraf TTS motorlarının yüklenmesini desteklemelidir.
- Kullanıcıların sistem düzeyinde kullanmak üzere bir TTS motoru seçmesine olanak tanıyan, kullanıcıların erişebileceği bir arayüz SAĞLAMALIDIR.
3.12. TV Girişi Çerçevesi
Android Television Giriş Çerçevesi (TIF), canlı içeriğin Android Television cihazlarına yayınını kolaylaştırır. TIF, Android TV cihazlarını kontrol eden giriş modülleri oluşturmak için standart bir API sağlar. Android televizyon cihazı uygulamaları TV Giriş Çerçevesi'ni DESTEKLEMELİDİR.
TIF'yi destekleyen cihaz uygulamaları, android.software.live_tv platform özelliğini İLKLEŞTİRMELİDİR.
3.12.1. TV uygulaması
Canlı TV desteğini beyan eden tüm cihaz uygulamalarında TV uygulaması (TV uygulaması) yüklü OLMALIDIR. Android Açık Kaynak Projesi, TV uygulamasının bir uygulamasını sağlar.
TV uygulaması, TV kanallarını yükleme ve kullanma olanağı sunmalı ve aşağıdaki şartları karşılamalıdır:
- Cihaz uygulamalarında, üçüncü taraf TIF tabanlı girişlerin ( üçüncü taraf girişleri) yüklenmesi ve yönetilmesine izin VERİLMELİDİR.
- Cihaz uygulamaları, önceden yüklenmiş TIF tabanlı girişler (yüklü girişler) ile üçüncü taraf girişleri arasında görsel ayrım sağlayabilir.
- Cihaz uygulamalarında, üçüncü taraf girişleri TV uygulamasından tek bir gezinme işleminden daha uzakta GÖSTERİLMEMELİDİR (ör. TV uygulamasından üçüncü taraf girişlerinin listesini genişletmek).
3.12.1.1. Elektronik Program Rehberi
Android Television cihaz uygulamalarında, TvContract.Programs alanlarındaki değerlerden oluşturulan bir elektronik program rehberi (EPG) içeren bilgilendirici ve etkileşimli bir yer paylaşımı gösterilMELİDİR. EPG aşağıdaki koşulları karşılamalıdır:
- EPG, tüm yüklü girişlerden ve üçüncü taraf girişlerinden gelen bilgileri GÖSTERMELİDİR.
- EPG, yüklü girişler ile üçüncü taraf girişleri arasında görsel ayrım sağlayabilir.
- EPG'nin, yüklü girişleri ve üçüncü taraf girişlerini eşit derecede belirgin bir şekilde göstermesi önemle ÖNERİLİR. EPG, üçüncü taraf girişlerini EPG'de yüklü girişlerden tek bir gezinme işleminden daha uzakta GÖSTERMEMELİDİR.
- Kanal değişikliğinde cihaz uygulamaları, o anda oynatılan programın EPG verilerini GÖSTERMELİDİR.
3.12.1.2. Navigasyon
TV uygulaması, Android televizyon cihazının giriş cihazlarındaki (ör. uzaktan kumanda, uzaktan kumanda uygulaması veya oyun kumandası) D-pad, Geri ve Ana Sayfa tuşları aracılığıyla aşağıdaki işlevler için gezinmeye İZİN VERMELİDİR:
- TV kanallarını değiştirme
- EPG'yi açma
- Üçüncü taraf TIF tabanlı girişleri yapılandırma ve bunlara göre ayarlama
- Ayarlar menüsünü açma
TV uygulaması, önemli etkinlikleri CEC üzerinden HDMI girişlerine İLETMELİDİR.
3.12.1.3. TV girişi uygulaması bağlama
Android Television cihaz uygulamalarının TV giriş uygulaması bağlama özelliğini desteklemesi GEREKİR.Bu özellik, tüm girişlerin mevcut etkinlikten başka bir etkinliğe etkinlik bağlantıları (ör. canlı programdan ilgili içeriğe bağlantı) sağlamasına olanak tanır. TV uygulaması, sağlandığında TV giriş uygulaması bağlantısını GÖSTERMELİDİR.
3.12.1.4. Zaman kaydırma
Android Television cihaz uygulamalarında, kullanıcının canlı içeriği duraklatmasına ve devam ettirmesine olanak tanıyan zaman kaydırma özelliği DESTEKLENMELİDİR. Cihaz uygulamalarında, ilgili program için zaman kaydırma mevcutsa kullanıcıya oynatılan programı duraklatma ve devam ettirme seçeneği ZORUNLUDIR.
3.12.1.5. TV kaydı
Android TV cihaz uygulamalarının TV kaydını desteklemesi önemle ÖNERİLİR. TV girişi kayıt özelliğini destekliyorsa EPG, söz konusu programın kaydı yasaklanmış değilse programı kaydetme seçeneği sunabilir. Cihaz uygulamalarında, kayıtlı programları oynatmak için bir kullanıcı arayüzü SAĞLANMALIDIR.
3.13. Hızlı Ayarlar
Android cihaz uygulamalarında, sık kullanılan veya acil olarak ihtiyaç duyulan işlemlere hızlı erişim sağlayan bir Hızlı Ayarlar kullanıcı arayüzü bileşeni YER ALMALIDIR.
Android, üçüncü taraf uygulamalarının Hızlı Ayarlar kullanıcı arayüzü bileşeninde sistem tarafından sağlanan kartların yanı sıra kullanıcı tarafından eklenebilecek kartlar uygulamasını sağlayan quicksettings
API'yi içerir. Bir cihaz uygulamasında Hızlı Ayarlar kullanıcı arayüzü bileşeni varsa:
- Kullanıcının üçüncü taraf uygulamalarından Hızlı Ayarlar'a kart eklemesine veya Hızlı Ayarlar'daki kartları kaldırmasına izin VERMELİDİR.
- Üçüncü taraf uygulamasından doğrudan Hızlı Ayarlar'a otomatik olarak kutu eklememelidir.
- Sistem tarafından sağlanan hızlı ayar karolarının yanı sıra üçüncü taraf uygulamalarından kullanıcı tarafından eklenen tüm karoları GÖSTERMELİDİR.
3.14. Araç kullanıcı arayüzü API'leri
3.14.1. Araç Medyası kullanıcı arayüzü
Automotive desteğini beyan eden tüm cihaz uygulamaları, MediaBrowser ve MediaSession API'lerini kullanan üçüncü taraf uygulamalarını desteklemek için bir kullanıcı arayüzü çerçevesi İÇERMELİDİR.
MediaBrowser ve MediaSession'a dayalı üçüncü taraf uygulamaları destekleyen kullanıcı arayüzü çerçevesinin aşağıdaki görsel koşulları vardır:
- MediaItem simgelerini ve bildirim simgelerini değiştirilmeden GÖSTERMELİDİR.
- Bu öğeleri MediaSession tarafından açıklandığı şekilde (ör. meta veriler, simgeler, görüntüler) GÖSTERMELİDİR.
- Uygulama başlığını GÖSTERMELİDİR.
- MediaBrowser hiyerarşisini sunmak için çekmece bulunmalıdır.
4. Uygulama Paketleme Uyumluluğu
Cihaz uygulamalarında, Android ".apk" dosyaları resmi Android SDK'sına dahil olan "aapt" aracı tarafından oluşturulduğu şekilde yüklenip çalıştırılmalıdır. Bu nedenle, cihaz uygulamaları referans uygulamanın paket yönetimi sistemini KULLANMALIDIR.
Paket yöneticisi, APK İmza Şeması v2 ve JAR imzalama kullanılarak ".apk" dosyalarının doğrulanmasını desteklemelidir.
Cihaz uygulamaları, .apk, Android Manifest, Dalvik bayt kodu veya RenderScript bayt kodu biçimlerini, bu dosyaların diğer uyumlu cihazlarda düzgün şekilde yüklenmesini ve çalışmasını engelleyecek şekilde UZATMAMALIDIR.
5. Multimedya Uyumluluğu
5.1. Medya codec'leri
Cihaz uygulamaları:
-
Bu belgede açıkça izin verildiği durumlar hariç olmak üzere Android SDK dokümanlarında belirtilen temel medya biçimlerini desteklemelidir.
-
Aşağıdaki tablolarda tanımlanan ve MediaCodecList aracılığıyla bildirilen medya biçimlerini, kodlayıcıları, kod çözücüleri, dosya türlerini ve kapsayıcı biçimlerini DESTEKLEMELİDİR.
-
Ayrıca, CamcorderProfile içinde raporlanan tüm profillerin kodunu çözebilmelidir.
-
Kodlayabileceği tüm biçimlerin kodunu çözebilmelidir. Kodlayıcılarının oluşturduğu tüm bit akışları buna dahildir.
Codec'ler minimum codec gecikmesi hedeflemelidir. Diğer bir deyişle, codec'ler:
- Giriş arabelleklerini tüketmemeli, depolamamalı ve yalnızca işlendikten sonra döndürmemelidir.
- Kodu çözülmüş arabellekleri standartta belirtilenden (ör. SPS) daha uzun süre tutmamalıdır.
- GOP yapısının gerektirdiğinden daha uzun süre kodlanmış arabellekleri TUTMAYACAK.
Aşağıdaki tabloda listelenen tüm codec'ler, Android Açık Kaynak Projesi'ndeki tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.
Google veya Open Handset Alliance'ın bu codec'lerin üçüncü taraf patentlerinden arındırılmış olduğuna dair herhangi bir beyanda bulunmadığını lütfen unutmayın. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya ücretsiz yazılım da dahil olmak üzere bu kodun uygulanabilmesi için ilgili patent sahiplerinden patent lisansları almaları gerekebileceğini göz önünde bulundurmaları önerilir.
5.1.1. Ses codec'leri
Biçim/Codec | Kodlayıcı | Kod çözücü | Ayrıntılar | Desteklenen dosya türleri/kapsayıcı biçimleri |
---|---|---|---|---|
MPEG-4 AAC Profili (AAC LC) |
GEREKLİ 1 | Zorunlu | 8 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 2 içeriği desteği. |
|
MPEG-4 HE AAC Profili (AAC+) |
GEREKLİ 1 (Android 4.1+) |
Zorunlu | 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 2 içeriği desteği. | |
MPEG-4 HE AACv2 Profili (geliştirilmiş AAC+) |
Zorunlu | 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1 2 içeriği desteği. | ||
AAC ELD (gelişmiş düşük gecikmeli AAC) |
GEREKLİ 1 (Android 4.1+) |
GEREKLİ (Android 4.1+) |
16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerikler desteklenir. | |
AMR-NB | ZORUNLU 3 | ZORUNLU 3 | 8 kHz'te örneklenmiş 4,75 ila 12,2 Kb/sn | 3GPP (.3gp) |
AMR-WB | ZORUNLU 3 | ZORUNLU 3 | 16 kHz'te örneklenen 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız | |
FLAC |
GEREKLİ (Android 3.1+) |
Mono/stereo (çok kanallı değil). 48 kHz'e kadar örnek hızları (ancak 48 ila 44,1 kHz azaltıcı düşük geçiş filtresi içermediğinden, 44,1 kHz çıkışlı cihazlarda 44,1 kHz'e kadar örnek hızları ÖNERİLİR). 16 bit ÖNERİLİR; 24 bit için dithering uygulanmaz. | Yalnızca FLAC (.flac) | |
MP3 | Zorunlu | Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR) | MP3 (.mp3) | |
MIDI | Zorunlu | MIDI Türü 0 ve 1. DLS 1 ve 2 sürümü. XMF ve Mobil XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek |
|
|
Vorbis | Zorunlu |
|
||
PCM/WAVE |
GEREKLİ 4 (Android 4.1+) |
Zorunlu | 16 bit doğrusal PCM (donanım sınırına kadar hız). Cihazlar, 8000, 11025, 16000 ve 44100 Hz frekanslarında ham PCM kaydı için örnekleme hızlarını DESTEKLEMELİDİR. | WAVE (.wav) |
Opus |
GEREKLİ (Android 5.0+) |
Matroska (.mkv), Ogg(.ogg) |
1 android.hardware.microphone özelliğini tanımlayan cihaz uygulamaları için gereklidir ancak Android Watch cihaz uygulamaları için isteğe bağlıdır.
2 Kayıt veya oynatma mono veya stereo olarak YAPILABİLİRSE de android.media.MediaCodec API'deki varsayılan AAC ses kod çözücü aracılığıyla çok kanallı akışların (ör. ikiden fazla kanal) AAC giriş arabelleklerinin PCM'ye kodunun çözülmesi için aşağıdakiler desteklenmelidir:
- Kod çözme işlemi, aşağı karıştırma olmadan gerçekleştirilir (ör. 5.0 AAC akışının kod çözme işlemi beş kanallı PCM olarak, 5.1 AAC akışının kod çözme işlemi altı kanallı PCM olarak gerçekleştirilmelidir),
- ISO/IEC 14496-3'teki "Dinamik Aralık Kontrolü (DRC)" bölümünde tanımlandığı üzere dinamik aralık meta verileri ve ses kodlayıcının dinamik aralıkla ilgili davranışlarını yapılandırmak için android.media.MediaFormat DRC anahtarları. AAC DRC anahtarları API 21'de kullanıma sunulmuştur. Bu anahtarlar şunlardır: KEY_AAC_DRC_ATTENUATION_FACTOR, KEY_AAC_DRC_BOOST_FACTOR, KEY_AAC_DRC_HEAVY_COMPRESSION, KEY_AAC_DRC_TARGET_REFERENCE_LEVEL ve KEY_AAC_ENCODED_TARGET_LEVEL.
3 Android el cihazı uygulamaları için gereklidir.
4 Android Watch cihaz uygulamaları da dahil olmak üzere android.hardware.microphone özelliğini tanımlayan cihaz uygulamaları için gereklidir.
5.1.2. Resim codec'leri
Biçim/Codec | Kodlayıcı | Kod çözücü | Ayrıntılar | Desteklenen dosya türleri/kapsayıcı biçimleri |
---|---|---|---|---|
JPEG | Zorunlu | Zorunlu | Taban+aşamalı | JPEG (.jpg) |
GIF | Zorunlu | GIF (.gif) | ||
PNG | Zorunlu | Zorunlu | PNG (.png) | |
BMP | Zorunlu | BMP (.bmp) | ||
WebP | Zorunlu | Zorunlu | WebP (.webp) | |
İşlenmemiş | Zorunlu | ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw) |
5.1.3. Video codec'leri
-
HDR profili desteğinin reklamını yapan codec'ler, HDR statik meta verilerini ayrıştırmayı ve işlemeyi desteklemelidir.
-
Bir medya codec'i, dahili yenileme desteğinin reklamını yapıyorsa 10-60 kare aralığındaki yenileme sürelerini desteklemeli ve yapılandırılmış yenileme süresinin% 20'si içinde doğru şekilde çalışmalıdır.
-
Video codec'leri, standart ve yapılandırma tarafından belirlenen en büyük sıkıştırılmış ve sıkıştırılmamış kareyi barındıran çıkış ve giriş bayt arabelleği boyutlarını desteklemeli ancak aşırı tahsis etmemelidir.
-
Video kodlayıcılar ve kod çözücüler YUV420 esnek renk biçimini (COLOR_FormatYUV420Flexible) DESTEKLEMELİDİR.
Biçim/Codec | Kodlayıcı | Kod çözücü | Ayrıntılar |
Desteklenen Dosya Türleri/ Kapsayıcı Biçimleri |
---|---|---|---|---|
H.263 | MAY | MAY |
|
|
H.264 AVC | GEREKLİ 2 | GEREKLİ 2 | Ayrıntılar için 5.2 ve 5.3 bölümlerine bakın. |
|
H.265 HEVC | GEREKLİ 5 | Ayrıntılar için 5.3 numaralı bölüme bakın. | MPEG-4 (.mp4) | |
MPEG-2 | KESİNLİKLE ÖNERİLİR 6 | Ana Profil | MPEG2-TS | |
MPEG-4 SP | GEREKLİ 2 | 3GPP (.3gp) | ||
VP8 3 |
GEREKLİ 2 (Android 4.3 ve sonraki sürümler) |
GEREKLİ 2 (Android 2.3.3+) |
Ayrıntılar için 5.2 ve 5.3 bölümlerine bakın. |
|
VP9 |
GEREKLİ 2 (Android 4.4+) |
Ayrıntılar için 5.3 numaralı bölüme bakın. |
|
1 Kamera donanımı içeren ve android.hardware.camera veya android.hardware.camera.front tanımlayan cihaz uygulamaları için gereklidir.
2 Android Watch cihazları dışındaki cihaz uygulamaları için gereklidir.
3 Web video akışının ve video konferans hizmetlerinin kabul edilebilir kalitede olması için cihaz uygulamalarında koşulları karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
4 Cihaz uygulamaları Matroska WebM dosyalarının yazılmasını DESTEKLEMELİDİR.
5 Android Automotive için KESİNLİKLE ÖNERİLİR, Android Watch için isteğe bağlıdır ve diğer tüm cihaz türleri için gereklidir.
6 Yalnızca Android TV cihaz uygulamalarında geçerlidir.
5.2. Video Kodlama
H.264, VP8, VP9 ve HEVC video kodlayıcıları:
- Dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
- Video kodlayıcının anlık kare süresini giriş arabelleklerinin zaman damgalarına göre belirlemesi ve bit grubunu bu kare süresine göre tahsis etmesi gereken değişken kare hızlarını DESTEKLEMELİDİR.
H.263 ve MPEG-4 video kodlayıcısı, dinamik olarak yapılandırılabilir bit hızlarını DESTEKLEMELİDİR.
Tüm video kodlayıcılar, iki kaydırmalı pencerede aşağıdaki bit hızı hedeflerini ETMELİDİR:
- Kare içi (I karesi) aralıkları arasındaki bit hızından en fazla% 15 daha yüksek olmalıdır.
- 1 saniyelik hareketli bir pencerede bit hızının yaklaşık% 100'ünden fazla olmamalıdır.
5.2.1. H.263
H.263 kodlayıcılara sahip Android cihaz uygulamaları, Temel Profil 45. Seviyesini DESTEKLEMELİDİR.
5.2.2. H-264
H.264 codec desteğine sahip Android cihaz uygulamaları:
- Temel Profil 3. Seviyesini desteklemelidir.
Ancak ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) için destek İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğu korumak için kodlayıcıların referans profili için ASO, FMO ve RS'nin KULLANILMAMASI ÖNERİLİR. - Aşağıdaki tabloda yer alan SD (Standart Çözünürlük) video kodlama profillerini DESTEKLEMELİDİR.
- Ana Profil 4. Seviyeyi DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
- Ayrıca, Android TV cihazlarda HD 1080p videonun 30 fps'de kodlanması önemle ÖNERİLİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p 1 | HD 1080p 1 | |
---|---|---|---|---|
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 |
1 Donanım tarafından desteklendiğinde ancak Android TV cihazları için ÇOK ÖNERİLİR.
5.2.3. VP8
VP8 codec desteğine sahip Android cihaz uygulamaları SD video kodlama profillerini DESTEKLEMELİ ve aşağıdaki HD (HD) video kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p 1 | HD 1080p 1 | |
---|---|---|---|---|
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 |
1 Donanım tarafından desteklendiğinde.
5.3. Video kod çözme
Cihaz uygulamaları:
-
Tüm VP8, VP9, H.264 ve H.265 codec'leri için aynı akıştaki standart Android API'leri aracılığıyla dinamik video çözünürlüğü ve kare hızı geçişini gerçek zamanlı olarak ve cihazdaki her codec'in desteklediği maksimum çözünürlüğe kadar desteklemelidir.
-
Dolby Vision kod çözücüyü destekleyen uygulamalar:
- Dolby Vision uyumlu bir çıkarıcı sağlanmalıdır.
-
Dolby Vision içeriğini cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).
-
Dolby Vision uyumlu bir çıkarıcı sağlayan uygulamalar, geriye dönük uyumlu temel katmanların (varsa) parça dizini ayarını, birleştirilmiş Dolby Vision katmanının parça dizini ile aynı olacak şekilde YAPMALIDIR.
5.3.1. MPEG-2
MPEG-2 kod çözücüleri olan Android cihaz uygulamaları, Ana Profil Yüksek Seviyesi'ni desteklemelidir.
5.3.2. H.263
H.263 kod çözücüleri içeren Android cihaz uygulamaları, Temel Profil 30. ve 45. düzeylerini desteklemelidir.
5.3.3. MPEG-4
MPEG-4 kod çözücüleri olan Android cihaz uygulamaları Basit Profil Seviye 3'ü DESTEKLEMELİDİR.
5.3.4. H.264
H.264 kod çözücüleri olan Android cihaz uygulamaları:
- Ana Profil 3.1 Seviyesi ve Temel Profil'i desteklemelidir.
ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) ve RS (Redundant Slices) için destek İSTEĞE BAĞLIDIR. - Aşağıdaki tabloda listelenen SD (Standart Çözünürlük) profillerine sahip ve Temel Profil ile Ana Profil Seviye 3.1 (720p30 dahil) ile kodlanmış videoların kodunu çözebilmelidir.
- Aşağıdaki tabloda belirtilen HD (Yüksek Çözünürlük) profilleriyle videoların kodunu çözebilmelidir.
- Ayrıca Android TV cihazları:
- Yüksek Profil 4.2 Seviyesi ve HD 1080p60 kod çözme profilini DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği gibi hem HD profilleri hem de Referans Profil, Ana Profil veya Yüksek Profil 4.2 ile kodlanmış videoların kodunu çözebilmelidir.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p 1 | HD 1080p 1 | |
---|---|---|---|---|
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 fps 2 ) |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
1 Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik, video çözünürlüğüne eşit veya video çözünürlüğünden büyük olduğunda ZORUNLUDUR.
2 Android TV cihaz uygulamaları için ZORUNLUDUR.
5.3.5. H.265 (HEVC)
5.1.3 numaralı bölümde açıklandığı şekilde H.265 codec'i destekleyen Android cihaz uygulamaları:
- Ana Profil 3. Katman Ana katmanını ve SD video kod çözme profillerini aşağıdaki tabloda belirtildiği şekilde desteklemelidir.
- Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
- Donanım kod çözücü varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
- Ayrıca Android TV cihazları:
- HD 720p kod çözme profilini desteklemelidir.
- HD 1080p kod çözme profilini desteklemek için ÇOK ÖNEMLİ. HD 1080p kod çözme profili destekleniyorsa Ana Profil Düzeyi 4.1 Ana katmanını desteklemelidir.
- UHD kod çözme profilini DESTEKLEMELİDİR. UHD kod çözme profili destekliyorsa codec, Main10 5. Katman Ana Katman profilini 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 | 3.840 x 2.160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps (60 fps 1 ) | 60 fps |
Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
1 H.265 donanım kod çözme özelliğine sahip Android TV cihaz uygulamaları için ZORUNLUDUR.
5.3.6. VP8
5.1.3 numaralı bölümde açıklandığı şekilde VP8 codec'ini destekleyen Android cihaz uygulamaları:
- Aşağıdaki tabloda yer alan SD kod çözme profillerini desteklemelidir.
- Aşağıdaki tabloda yer alan HD kod çözme profillerini DESTEKLEMELİDİR.
- Android TV cihazları HD 1080p60 kod çözme profilini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p 1 | HD 1080p 1 | |
---|---|---|---|---|
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 fps 2 ) | 30 (60 fps 2 ) |
Video bit hızı | 800 Kb/sn | 2 Mb/sn | 8 Mb/sn | 20 Mb/sn |
1 Display.getSupportedModes() yöntemi tarafından bildirilen yükseklik, video çözünürlüğüne eşit veya video çözünürlüğünden büyük olduğunda ZORUNLUDUR.
2 Android TV cihaz uygulamaları için ZORUNLUDUR.
5.3.7. VP9
5.1.3 numaralı bölümde açıklandığı şekilde VP9 codec'ini destekleyen Android cihaz uygulamaları:
- Aşağıdaki tabloda belirtilen SD video kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
- Donanım kod çözücü varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini DESTEKLEMELİDİR.
-
Ayrıca Android TV cihazları:
- HD 720p kod çözme profilini desteklemelidir.
- HD 1080p kod çözme profilini desteklemek için ÇOK ÖNEMLİ.
- UHD kod çözme profilini DESTEKLEMELİDİR. UHD video kod çözme profili destekleniyorsa 8 bit renk derinliğini ve VP9 Profil 2'yi (10 bit) desteklemelidir.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3.840 x 2.160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps (60 fps 1 ) | 60 fps |
Video bit hızı | 600 Kb/sn | 1,6 Mb/sn | 4 Mb/sn | 5 Mb/sn | 20 Mb/sn |
1 VP9 donanım kod çözme özelliğine sahip Android TV cihaz uygulamaları için ZORUNLUDUR.
5.4. Ses Kaydetme
Bu bölümde belirtilen şartlardan bazıları Android 4.3'ten beri "OLMALI" olarak belirtilse de gelecekteki bir sürümün Uyumluluk Tanımı'nda bu şartlar "OLMALI" yerine "OLMALIDIR" olarak değiştirilmesi planlanmaktadır. Mevcut ve yeni Android cihazların, "OLMALI" olarak belirtilen bu şartları karşılaması ŞİDDETLE ÖNERİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiğinde Android uyumluluğu elde edemezler.
5.4.1. Ham Ses Kaydı
android.hardware.microphone özelliğini açıklayan cihaz uygulamaları, aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına İZİN VERMELİDİR:
- Biçim : Doğrusal PCM, 16 bit
- Örnekleme hızları : 8000, 11025, 16000, 44100
- Kanallar : Mono
Yukarıdaki örnek hızlarda yakalama işlemi, artırılmış örnekleme olmadan YAPILMALIDIR ve tüm azaltılmış örnekleme işlemleri, uygun bir kenar yumuşatma filtresi içermelidir.
android.hardware.microphone özelliğini açıklayan cihaz uygulamaları, aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına İZİN VERMELİDİR:
- Biçim : Doğrusal PCM, 16 bit
- Örnekleme hızları : 22050, 48000
- Kanallar : Stereo
Yukarıdaki örnek hızları için yakalama destekleniyorsa yakalama işlemi 16000:22050 veya 44100:48000'den yüksek bir oranda yukarı örnekleme olmadan YAPILMALIDIR. Herhangi bir artırma veya azaltma işleminde uygun bir kenar yumuşatma filtresi ZORUNLUDUR.
5.4.2. Ses Tanıma için Kayıt
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION ses kaynağı, 44.100 ve 48.000 örnekleme hızlarından birinde kaydı desteklemelidir.
Yukarıdaki kayıt özelliklerine ek olarak, bir uygulama android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION ses kaynağını kullanarak ses akışı kaydetmeye başladığında:
- Cihaz, frekansla ilgili olarak yaklaşık olarak düz bir genlik sergilemelidir: Özellikle 100 Hz ile 4.000 Hz arasında ±3 dB.
- Ses giriş hassasiyeti, 1000 Hz'de 90 dB ses gücü düzeyi (SPL) kaynağının 16 bitlik örnekler için 2500 RMS değerine ulaşması şekilde AYARLANMALIDIR.
- PCM genlik seviyeleri, mikrofondaki 90 dB SPL referans alınarak -18 dB ile +12 dB arasında en az 30 dB aralığındaki giriş SPL değişikliklerini doğrusal olarak İZLEMEYECEK.
- Toplam harmonik bozulma, mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için% 1'den az OLMALIDIR.
- Gürültü azaltma işlemi (varsa) DEVRE DIŞI BIRAKILMALIDIR.
- Otomatik kazanç denetimi (varsa) DEVRE DIŞI BIRAKILMALIDIR.
Platform, konuşma tanıma için ayarlanmış gürültü azaltma teknolojilerini destekliyorsa efekt, android.media.audiofx.NoiseSuppressor API'den kontrol edilebilir OLMALIDIR. Ayrıca, gürültü azaltıcının efekt tanımlayıcısı için UUID alanı, gürültü azaltma teknolojisinin her bir uygulamasını benzersiz şekilde tanımlamalıdır.
5.4.3. Oynatma işlemini yeniden yönlendirmek için yakalama
android.media.MediaRecorder.AudioSource sınıfı, REMOTE_SUBMIX ses kaynağını içerir. android.hardware.audio.output bildiren cihazlar, REMOTE_SUBMIX ses kaynağını düzgün bir şekilde uygulamalıdır. Böylece, bir uygulama bu ses kaynağından kayıt yapmak için android.media.AudioRecord API'yi kullandığında aşağıdakiler hariç tüm ses akışlarının bir karışımını yakalayabilir:
- STREAM_RING
- STREAM_ALARM
- STREAM_NOTIFICATION
5.5. Ses Çalma
android.hardware.audio.output özelliğini açıklayan cihaz uygulamaları BU BÖLÜMDEKİ şartlara UYGUN OLMALIDIR.
5.5.1. Ham Ses Oynatma
Cihaz, aşağıdaki özelliklere sahip ham ses içeriklerinin oynatılmasına izin VERMELİDİR:
- Biçim : Doğrusal PCM, 16 bit
- Örnekleme hızları : 8000, 11025, 16000, 22050, 32000, 44100
- Kanallar : Mono, Stereo
Cihaz, aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına İZİN VERMELİDİR:
- Örnekleme hızları : 24000, 48000
5.5.2. Ses Efektleri
Android, cihaz uygulamaları için ses efektleri API'si sağlar. android.hardware.audio.output özelliğini açıklayan cihaz uygulamaları:
- AudioEffect alt sınıfları Equalizer ve LoudnessEnhancer aracılığıyla kontrol edilebilen EFFECT_TYPE_EQUALIZER ve EFFECT_TYPE_LOUDNESS_ENHANCER uygulamalarını DESTEKLEMELİDİR.
- Visualizer sınıfı aracılığıyla kontrol edilebilen Visualizer API uygulamasını desteklemelidir.
- BassBoost, EnvironmentalReverb, PresetReverb ve Virtualizer AudioEffect alt sınıfları aracılığıyla kontrol edilebilen EFFECT_TYPE_BASS_BOOST, EFFECT_TYPE_ENV_REVERB, EFFECT_TYPE_PRESET_REVERB ve EFFECT_TYPE_VIRTUALIZER uygulamalarını DESTEKLEMELİDİR.
5.5.3. Ses Çıkışı Ses Seviyesi
Android TV cihaz uygulamaları, sıkıştırılmış ses aktarma çıkışı (cihaz üzerinde ses kod çözme işlemi yapılmaz) hariç olmak üzere desteklenen çıkışlarda sistem ana ses düzeyi ve dijital ses çıkışı ses düzeyi azaltma desteği içermelidir.
Android Automotive cihaz uygulamalarında, AudioAttributes tarafından tanımlanan içerik türü veya kullanım ve android.car.CarAudioManager
'de herkese açık olarak tanımlanan araç ses kullanımı kullanılarak ses hacminin her ses akışı için ayrı ayrı ayarlanmasına İZİN VERİLMELİDİR .
5.6. Ses gecikmesi
Ses gecikmesi, ses sinyalinin bir sistemden geçerken yaşadığı zaman gecikmesidir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikme sürelerine ihtiyaç duyar.
Bu bölümde aşağıdaki tanımlar kullanılmaktadır:
- output latency . Bir uygulamanın PCM kodlu veri çerçevesi yazması ile ilgili sesin cihaz üzerindeki bir dönüştürücüde çevreye sunulması veya sinyalin bir bağlantı noktası üzerinden cihazdan çıkması ve harici olarak gözlemlenebilmesi arasındaki aralık.
- Soğuk çıkış gecikmesi . Ses çıkış sistemi istek öncesinde boşta ve kapalıyken ilk karenin çıkış gecikmesi.
- sürekli çıkış gecikmesi . Cihaz ses çaldıktan sonra sonraki kareler için çıkış gecikmesi.
- giriş gecikmesi . Bir sesin ortam tarafından cihaz üzerindeki bir dönüştürücüde cihaza sunulması veya sinyalin bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın ilgili PCM kodlu veri çerçevesini okuması arasındaki aralık.
- Giriş kaybı . Giriş sinyalinin kullanılamayan veya kullanılamayan ilk kısmı.
- soğuk giriş gecikmesi . Ses giriş sistemi istek öncesinde boşta ve kapalıyken, kaybedilen giriş süresinin ve ilk karenin giriş gecikmesinin toplamı.
- sürekli giriş gecikmesi . Cihaz ses kaydederken sonraki kareler için giriş gecikmesi.
- Soğuk çıkış jitteri . Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- Soğuk giriş jitteri . Soğuk giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- sürekli gidiş dönüş gecikmesi . Sürekli giriş gecikmesi artı sürekli çıkış gecikmesi artı bir arabellek döneminin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ile çıkış akışları arasındaki faz farkını azaltması için zaman tanır.
- OpenSL ES PCM arabellek sırası API'si . Android NDK'daki PCM ile ilgili OpenSL ES API'leri grubu.
android.hardware.audio.output özelliğini açıklayan cihaz uygulamalarının aşağıdaki ses çıkışı koşullarını karşılaması veya aşması önemle ÖNERİLİR:
- 100 milisaniye veya daha az soğuk çıkış gecikmesi
- 45 milisaniye veya daha az sürekli çıkış gecikmesi
- Soğuk çıkış jitter'ini en aza indirme
Bir cihaz uygulaması, OpenSL ES PCM arabellek sırası API'si kullanılırken yapılan ilk kalibrasyondan sonra bu bölümün şartlarını karşılıyorsa en az bir desteklenen ses çıkış cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için android.content.pm.PackageManager sınıfı aracılığıyla android.hardware.audio.low_latency özelliğini bildirerek düşük gecikmeli ses desteğini bildirmeniz önemle ÖNERİLİR. Buna karşılık, cihaz uygulaması bu koşulları karşılamıyorsa düşük gecikmeli ses desteğini bildirmemelidir.
android.hardware.microphone içeren cihaz uygulamalarının aşağıdaki giriş ses koşullarını karşılaması önemle ÖNERİLİR:
- 100 milisaniye veya daha az soğuk giriş gecikmesi
- 30 milisaniye veya daha az sürekli giriş gecikmesi
- 50 milisaniye veya daha az sürekli gidiş dönüş gecikmesi
- Soğuk giriş jitter'ini en aza indirme
5.7. Ağ Protokolleri
Cihazlar, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemelidir. Özellikle, cihazlar aşağıdaki medya ağı protokollerini DESTEKLEMELİDİR:
-
HTTP(S) aşamalı yayın
5.1 numaralı bölümde belirtilen tüm gerekli codec'ler ve kapsayıcı biçimleri HTTP(S) üzerinden DESTEKLENMELİDİR -
HTTP Live Streaming taslak protokolü, 7. sürüm
Aşağıdaki medya segmenti biçimleri DESTEKLENMELİDİR:
Segment biçimleri | Referanslar | Gerekli codec desteği |
---|---|---|
MPEG-2 Taşıma Akışı | ISO 13818 |
Video codec'leri:
Ses codec'leri:
|
ADTS çerçeveleme ve ID3 etiketleri içeren AAC | ISO 13818-7 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın. |
WebVTT | WebVTT |
-
RTSP (RTP, SDP)
Aşağıdaki RTP ses video profili ve ilgili codec'ler desteklenmelidir. İstisnalar için lütfen 5.1 numaralı bölümdeki tablo dipnotlarına bakın.
Profil adı | Referanslar | Gerekli codec desteği |
---|---|---|
H264 AVC | RFC 6184 | H264 AVC ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın. |
MP4A-LATM | RFC 6416 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın. |
H263-1998 |
RFC 3551 RFC 4629 RFC 2190 |
H263 ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın. |
H263-2000 | RFC 4629 | H263 ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın. |
AMR | RFC 4867 | AMR-NB ile ilgili ayrıntılar için 5.1.1 numaralı bölüme bakın. |
AMR-WB | RFC 4867 | AMR-WB hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın. |
MP4V-ES | RFC 6416 | MPEG-4 SP ile ilgili ayrıntılar için 5.1.3 numaralı bölüme bakın. |
mpeg4-generic | RFC 3640 | AAC ve varyantları hakkında ayrıntılı bilgi için 5.1.1 numaralı bölüme bakın. |
MP2T | RFC 2250 | Ayrıntılar için HTTP Canlı Akış'ın altındaki MPEG-2 Taşıma Akışı bölümüne bakın. |
5.8. Secure Media
Güvenli video çıkışını destekleyen ve güvenli yüzeyleri destekleyebilecek cihaz uygulamaları Display.FLAG_SECURE için destek beyan ETMELİYOR. Display.FLAG_SECURE için destek beyan eden cihaz uygulamaları, kablosuz ekran protokolünü destekliyorsa bağlantıyı Miracast kablosuz ekranlar için HDCP 2.x veya sonraki sürümler gibi kriptografik olarak güçlü bir mekanizmayla GÜVENLİ HALE GETİRMELİDİR. Benzer şekilde, kablolu harici ekranı destekliyorsa cihaz uygulamaları HDCP 1.2 veya daha yeni sürümleri desteklemelidir. Android TV cihaz uygulamaları, 4K çözünürlüğü destekleyen cihazlar için HDCP 2.2'yi, daha düşük çözünürlükler için ise HDCP 1.4 veya üstünü desteklemelidir. Yukarı akış Android açık kaynak uygulaması, bu koşulu karşılayan kablosuz (Miracast) ve kablolu (HDMI) ekranlar için destek içerir.
5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)
Bir cihaz uygulaması, uygulama içi MIDI yazılım aktarımını (sanal MIDI cihazları) destekliyorsa ve MIDI olmayan genel bağlantı sağladığı aşağıdaki MIDI özellikli donanım aktarıcılarının tümünde MIDI'yi destekliyorsa android.content.pm.PackageManager sınıfı aracılığıyla android.software.midi özelliğinin desteğini bildirmeniz önemle tavsiye edilir.
MIDI uyumlu donanım aktarıcıları şunlardır:
- USB ana makine modu (bölüm 7.7 USB)
- USB çevre birimi modu (7.7 USB bölümü)
- Merkezi rolde çalışan Bluetooth LE üzerinden MIDI (bölüm 7.4.3 Bluetooth)
Buna karşılık, cihaz uygulaması yukarıda listelenen belirli bir MIDI uyumlu donanım aktarıcısı üzerinden MIDI olmayan genel bağlantı sağlıyorsa ancak bu donanım aktarıcısı üzerinden MIDI'yi desteklemiyorsa android.software.midi özelliği için destek bildirmemelidir.
5.10. Profesyonel Ses
Bir cihaz uygulaması aşağıdaki koşulların tümünü karşılıyorsa android.content.pm.PackageManager sınıfı aracılığıyla android.hardware.audio.pro özelliği için destek bildirmeniz önemle tavsiye edilir.
- Cihaz uygulaması, android.hardware.audio.low_latency özelliğini desteklediğini bildirmelidir.
- 5.6 Ses Gecikmesi bölümünde tanımlandığı gibi, sürekli gidiş dönüş ses gecikmesi 20 milisaniye veya daha az OLMALIDIR ve en az bir desteklenen yolda 10 milisaniye veya daha az OLMALIDIR.
- Cihaz 4 iletkenli 3,5 mm ses jakı içeriyorsa ses jakı yolunda sürekli gidiş dönüş ses gecikmesi 20 milisaniye veya daha az OLMALIDIR ve ses jakı yolunda 10 milisaniye veya daha az OLMALIDIR.
- Cihaz uygulaması, USB ana makine modunu ve USB çevre birimi modunu destekleyen bir USB bağlantı noktası İÇERMELİDİR.
- USB ana makine modu, USB ses sınıfını UYGULAMALIDIR.
- Cihazda HDMI bağlantı noktası varsa cihaz uygulaması, bit derinliği kaybı veya yeniden örnekleme olmadan 20 bit veya 24 bit derinlikte ve 192 kHz'te stereo ve sekiz kanallı çıkışı DESTEKLEMELİDİR.
- Cihaz uygulaması, android.software.midi özelliğini desteklediğini bildirmelidir.
- Cihaz 4 iletkenli 3,5 mm ses jakı içeriyorsa cihaz uygulamasının, Kablolu Mikrofonlu Kulaklık Spesifikasyonu (v1.1)'nun Mobil cihaz (jak) özellikleri bölümüne uyması önemle ÖNERİLİR.
Gecikmeler ve USB ses koşulları OpenSL ES PCM arabellek sırası API'si kullanılarak ZORUNLU KILINACAK.
Ayrıca, bu özelliğin desteklendiğini bildiren cihaz uygulamalarının:
- Ses etkinken sürdürülebilir bir CPU performansı düzeyi sağlar.
- Sesli saatin hatalı çalışmasını ve standart saate göre kaymasını en aza indirin.
- Her ikisi de etkinken ses saatinin CPU'ya göre kaymasını en aza indirin
CLOCK_MONOTONIC
. - Cihaz üzerindeki dönüştürücüler üzerinden ses gecikmesini en aza indirin.
- USB dijital ses üzerinden ses gecikmesini en aza indirin.
- Tüm yollardaki ses gecikmesi ölçümlerini belgeleyin.
- Geri aramanın tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediği için ses arabelleğinin tamamlanması geri arama giriş zamanlarında gecikmeyi en aza indirin.
- Bildirilen gecikmede normal kullanım sırasında sıfır ses eksikliği (çıkış) veya aşma (giriş) sağlayın.
- Kanallar arası gecikme farkı sıfır olmalıdır.
- Tüm aktarımlarda MIDI ortalama gecikmesini en aza indirin.
- Tüm aktarımlarda yük altında MIDI gecikmesi değişkenliğini (jitter) en aza indirin.
- Tüm aktarımlarda doğru MIDI zaman damgalarını sağlayın.
- Soğuk başlatmadan hemen sonraki dönem de dahil olmak üzere cihaz üzerindeki dönüştürücülerde ses sinyali gürültüsünü en aza indirin.
- Her ikisi de etkinken ilgili uç noktaların giriş ve çıkış tarafları arasında sıfır ses saati farkı sağlayın. İlgili uç noktalara örnek olarak cihaz üzerindeki mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.
- Her ikisi de etkinken aynı iş parçacığındaki ilgili uç noktaların giriş ve çıkış tarafları için ses arabelleğinin tamamlanma geri çağırma işlevlerini işleyin ve giriş geri çağırma işlevinden döndükten hemen sonra çıkış geri çağırma işlevini girin. Yada geri çağırmaların aynı iş parçacığında işlenmesi mümkün değilse uygulamanın giriş ve çıkış taraflarında tutarlı bir zamanlamaya sahip olması için giriş geri çağırma işlevini girdikten kısa bir süre sonra çıkış geri çağırma işlevini girin.
- İlgili uç noktaların giriş ve çıkış tarafları için HAL ses arabelleği arasındaki faz farkını en aza indirin.
- Dokunma gecikmesini en aza indirin.
- Yük altında dokunma gecikmesi değişkenliğini (jitter) en aza indirin.
5.11. İşlenmemiş için yakalama
Android 7.0'dan itibaren yeni bir kayıt kaynağı eklendi. android.media.MediaRecorder.AudioSource.UNPROCESSED
ses kaynağı kullanılarak erişilebilir. OpenSL ES'de, SL_ANDROID_RECORDING_PRESET_UNPROCESSED
kayıt hazır ayarı ile erişilebilir .
Bir cihazın, işlenmemiş ses kaynağının desteğini android.media.AudioManager
mülkü PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED aracılığıyla bildirebilmesi için aşağıdaki koşulların tümünü karşılaması GEREKİR:
-
Cihaz, orta frekans aralığında yaklaşık olarak düz bir genlik-frekans özelliği sergilemelidir: Özellikle 100 Hz ile 7.000 Hz arasında ±10 dB.
-
Cihaz, düşük frekans aralığında genlik seviyeleri GÖSTERMELİDİR: Özellikle orta frekans aralığına kıyasla 5 Hz ile 100 Hz arasında ±20 dB.
-
Cihaz, yüksek frekans aralığında genlik seviyeleri GÖSTERMELİDİR: Özellikle orta frekans aralığına kıyasla 7000 Hz ile 22 KHz arasında ±30 dB.
-
Ses girişi hassasiyeti, 94 dB ses basıncı düzeyinde (SPL) çalınan 1000 Hz sinüs dalga sesi kaynağının 16 bitlik örnekler için 520 RMS'lik (veya kayan nokta/çift hassasiyetli örnekler için -36 dB tam ölçekli) bir yanıt vereceği şekilde AYARLANMALIDIR.
-
SNR > 60 dB (94 dB SPL ile kendi kendine gürültünün eşdeğer SPL değeri arasındaki fark, A ağırlıklı).
-
Mikrofonda 90 dB SPL giriş seviyesinde 1 kHz için toplam harmonik bozulma% 1'den az OLMALIDIR.
-
Yolda izin verilen tek sinyal işleme, seviyeyi istenen aralığa getirmek için kullanılan bir seviye çarpanı olabilir. Bu seviye çarpanı, sinyal yoluna gecikme veya gecikmeli veri eklememelidir.
-
Yolda otomatik kazanç kontrolü, yüksek geçiş filtresi veya yankı iptali gibi başka sinyal işleme işlemlerine izin verilmez. Mimaride herhangi bir nedenle sinyal işleme varsa devre dışı bırakılmalı ve sinyal yoluna etkili bir şekilde sıfır gecikme veya ek gecikme eklenmelidir.
Tüm SPL ölçümleri, test edilen mikrofonun hemen yanında yapılır.
Birden fazla mikrofon yapılandırması varsa bu koşullar her mikrofon için geçerlidir.
Bir cihazın, işlenmemiş kayıt kaynağının sinyal yoluyla ilgili koşulların çoğunu karşılaması önemle tavsiye edilir. Ancak, işlenmemiş ses kaynağını desteklediğini iddia eden bir cihaz, yukarıda listelenen bu koşulların tümünü karşılamalıdır.
6. Geliştirici Araçları ve Seçenekleri Uyumluluğu
6.1. Geliştirici araçları
Cihaz uygulamaları, Android SDK'da sağlanan Android Geliştirici Araçları'nı DESTEKLEMELİDİR. Android uyumlu cihazlar ŞUNLARLA uyumlu OLMALIDIR:
-
Android Debug Bridge (adb)
- Cihaz uygulamaları, dumpsys dahil olmak üzere Android SDK'sında belirtildiği şekilde tüm adb işlevlerini DESTEKLEMELİDİR.
- Cihaz tarafındaki adb daemon'ı varsayılan olarak etkin OLMAMALI ve Android Hata Ayıklama Köprüsü'nü açmak için kullanıcının erişebileceği bir mekanizma OLMALİDİR. Bir cihaz uygulaması USB çevre birimi modunu atlıyorsa Android Hata Ayıklama Köprüsü'nü yerel alan ağı (ör. Ethernet veya 802.11) üzerinden UYGULAMASI GEREKİR.
- Android, güvenli adb desteği içerir. Güvenli adb, kimliği doğrulanmış bilinen ana makinelerde adb'yi etkinleştirir. Cihaz uygulamaları güvenli adb'yi DESTEKLEMELİDİR.
-
Dalvik Debug Monitor Service (ddms)
- Cihaz uygulamaları, Android SDK'da belirtildiği gibi tüm ddms özelliklerini DESTEKLEMELİDİR.
- ddms, adb kullandığından ddms desteği varsayılan olarak devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Hata Ayıklama Köprüsü'nü etkinleştirdiğinde desteklenmesi GEREKİR.
- Monkey Cihaz uygulamalarında Monkey çerçevesi ZORUNLU KILINACAK ve uygulamaların kullanabileceği şekilde kullanıma sunulacaktır.
-
SysTrace
- Cihaz uygulamaları, Android SDK'da belirtildiği gibi systrace aracını DESTEKLEMELİDİR. Systrace varsayılan olarak devre dışı olmalıdır ve Systrace'i etkinleştirmek için kullanıcının erişebileceği bir mekanizma BULUNMASI GEREKİR.
- Linux tabanlı sistemlerin ve Apple Macintosh sistemlerinin çoğu, ek destek olmadan standart Android SDK araçlarını kullanarak Android cihazları tanır. Ancak Microsoft Windows sistemlerinde genellikle yeni Android cihazlar için sürücü gerekir. (Örneğin, yeni tedarikçi firma kimlikleri ve bazen yeni cihaz kimlikleri için Windows sistemlerinde özel USB sürücüleri gerekir.)
- Standart Android SDK'sında sağlandığı şekilde bir cihaz uygulaması adb aracı tarafından tanınmıyorsa cihaz uygulayıcıları, geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows sürücüleri SAĞLAMALIDIR. Bu sürücüler, Windows XP, Windows Vista, Windows 7, Windows 8 ve Windows 10 için hem 32 bit hem de 64 bit sürümlerinde sağlanmalıdır.
6.2. Geliştirici seçenekleri
Android, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmasına yönelik destek içerir. Cihaz uygulamalarında, uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS intent'i dikkate ALINMALIDIR. Yukarı akış Android uygulamasında Geliştirici Seçenekleri menüsü varsayılan olarak gizlenir ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menüsüne yedi (7) kez bastıktan sonra Geliştirici Seçenekleri'ni başlatmasına olanak tanır. Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sunmalıdır. Daha açık belirtmek gerekirse cihaz uygulamalarında Geliştirici Seçenekleri varsayılan olarak gizlenmeli ve Geliştirici Seçenekleri'ni etkinleştirmek için yayın öncesi Android uygulamasıyla tutarlı bir mekanizma sağlanmalıdır.
7. Donanım Uyumluluğu
Bir cihazda, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir donanım bileşeni varsa cihaz uygulaması bu API'yi Android SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR. SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime geçiyorsa ve cihaz uygulamasında bu bileşen yoksa:
- Bileşen API'leri için tam sınıf tanımları (SDK tarafından belirtildiği şekilde) yine de sunulmalıdır.
- API'nin davranışları makul bir şekilde no-op olarak uygulanmalıdır.
- API yöntemleri, SDK dokümanlarında izin verildiğinde null değerler DÖNDÜRMELİDİR.
- API yöntemleri, SDK dokümanlarında null değerlere izin verilmeyen sınıfların işlemsiz uygulamalarını DÖNDÜRMELİDİR.
- API yöntemleri, SDK dokümanlarında belirtilmeyen istisnalar İÇERMEMELİDİR.
Bu koşulların geçerli olduğu bir senaryoya tipik bir örnek, telefon API'sidir: Telefon olmayan cihazlarda bile bu API'ler makul bir şekilde işlem yapmaz olarak uygulanmalıdır.
Cihaz uygulamaları, aynı derleme parmak izi için android.content.pm.PackageManager sınıfındaki getSystemAvailableFeatures() ve hasSystemFeature(String) yöntemleri aracılığıyla tutarlı bir şekilde doğru donanım yapılandırma bilgilerini bildirmelidir.
7.1. Görüntü ve Grafikler
Android, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında sorunsuz şekilde çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan özellikler içerir. Cihazlar, bu bölümde ayrıntılı olarak açıklandığı şekilde bu API'leri ve davranışları düzgün bir şekilde uygulamalıdır.
Bu bölümdeki şartlarda referans verilen birimler aşağıdaki şekilde tanımlanır:
- fiziksel çapraz boyut . Ekranın aydınlatılmış kısmının iki karşıt köşesi arasındaki mesafe (inç cinsinden).
- inç başına nokta sayısı (dpi) . 1 inçlik doğrusal yatay veya dikey bir açıklık tarafından kapsanan piksel sayısı. dpi değerlerinin listelendiği yerlerde hem yatay hem de dikey dpi aralık içinde olmalıdır.
- en boy oranı . Uzun boyuttaki piksellerin ekranın kısa boyutuna oranı. Örneğin, 480x854 piksel boyutunda bir ekran için 854/480 = 1, 779 veya yaklaşık olarak "16:9" değeri elde edilir.
- yoğunluktan bağımsız piksel (dp) . 160 dpi ekrana göre normalleştirilmiş sanal piksel birimi. Şu şekilde hesaplanır: piksel = dp * (yoğunluk/160).
7.1.1. Ekran Yapılandırması
7.1.1.1. Ekran Boyutu
Android kullanıcı arayüzü çerçevesi çeşitli ekran boyutlarını destekler ve uygulamaların SCREENLAYOUT_SIZE_MASK ile android.content.res.Configuration.screenLayout üzerinden cihaz ekran boyutunu ("ekran düzeni" olarak da bilinir) sorgulamasına olanak tanır. Cihaz uygulamalarında, Android SDK dokümanlarında tanımlanan ve yayın öncesi Android platformu tarafından belirlenen doğru ekran boyutu bildirilmelidir. Daha açık belirtmek gerekirse, cihaz uygulamaları aşağıdaki mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarına göre doğru ekran boyutunu bildirmelidir.
- Android Watch cihazı olmadığı sürece cihazların ekran boyutu en az 426 dp x 320 dp ("küçük") olmalıdır.
- Ekran boyutunu "normal" olarak bildiren cihazların ekran boyutu en az 480 dp x 320 dp OLMALIDIR.
- Ekran boyutunu "büyük" olarak bildiren cihazların ekran boyutu en az 640 dp x 480 dp OLMALIDIR.
- Ekran boyutunu "çok büyük" olarak bildiren cihazların ekran boyutu en az 960 dp x 720 dp OLMALIDIR.
Ek bilgiler:
- Android Watch cihazlarda, fiziksel diyagonal boyutu 1,1 ila 2,5 inç arasında olan bir ekran OLMALIDIR.
- Android Automotive cihazlarda fiziksel diyagonal boyutu 6 inç veya daha büyük bir ekran OLMALIDIR.
- Android Automotive cihazların ekran boyutu en az 750 dp x 480 dp OLMALIDIR.
- Fiziksel olarak entegre ekrana sahip diğer Android cihaz uygulamalarında, fiziksel diyagonal boyutu en az 2, 5 inç olan bir ekran OLMALIDIR.
Cihazlar, bildirilen ekran boyutunu hiçbir zaman DEĞİŞTİREMEZ.
Uygulamalar, isteğe bağlı olarak AndroidManifest.xml dosyasındaki <supports-screens> özelliği aracılığıyla hangi ekran boyutlarını desteklediklerini belirtir. Cihaz uygulamalarında, Android SDK dokümanlarında açıklandığı gibi, uygulamaların küçük, normal, büyük ve çok büyük ekranlar için belirtilen desteği doğru şekilde dikkate ALMAK GEREKİR.
7.1.1.2. Ekran En Boy Oranı
Fiziksel ekran ekranının ekran en boy oranı değeriyle ilgili herhangi bir kısıtlama olmasa da üçüncü taraf uygulamalarının oluşturulduğu ve DisplayMetrics aracılığıyla raporlanan değerlerden türetilebilecek yüzeyin ekran en boy oranı aşağıdaki koşulları karşılamalıdır:
- uiMode, UI_MODE_TYPE_WATCH olarak yapılandırılmışsa en boy oranı değeri 1,0 (1:1) olarak AYARLANABİLİR.
- Üçüncü taraf uygulaması, android:resizeableActivity özelliği aracılığıyla yeniden boyutlandırılabilir olduğunu belirtiyorsa en boy oranı değeriyle ilgili herhangi bir kısıtlama yoktur.
- Diğer tüm durumlarda, uygulama maxAspectRatio meta veri değeri aracılığıyla daha yüksek bir ekran en boy oranını desteklediğini açıkça belirtmediği sürece en boy oranı 1,3333 (4:3) ile 1,86 (yaklaşık 16:9) arasında bir değer OLMALIDIR.
7.1.1.3. Ekran Yoğunluğu
Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar. Cihaz uygulamaları, android.util.DisplayMetrics API'leri aracılığıyla aşağıdaki mantıksal Android çerçeve yoğunluklarından yalnızca birini bildirmeli, uygulamaları bu standart yoğunlukta yürütmeli ve varsayılan ekran için değeri hiçbir zaman değiştirmemelidir.
- 120 dpi (ldpi)
- 160 dpi (mdpi)
- 213 dpi (tvdpi)
- 240 dpi (hdpi)
- 280 dpi (280dpi)
- 320 dpi (xhdpi)
- 360 dpi (360dpi)
- 400 dpi (400dpi)
- 420 dpi (420dpi)
- 480 dpi (xxhdpi)
- 560 dpi (560dpi)
- 640 dpi (xxxhdpi)
Cihaz uygulamaları, mantıksal yoğunluk bildirilen ekran boyutunu desteklenen minimum boyutun altına düşürmediği sürece, ekranın fiziksel yoğunluğuna sayısal olarak en yakın standart Android çerçeve yoğunluğunu tanımlamalıdır. Fiziksel yoğunluğa sayısal olarak en yakın standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuna neden oluyorsa cihaz uygulamaları bir sonraki en düşük standart Android çerçeve yoğunluğunu bildirmelidir.
Cihaz uygulamalarında, kullanıcılara ekran boyutunu değiştirme ayarı sunulması önemle ÖNERİLİR. Cihazın ekran boyutunu değiştirmek için bir uygulama varsa bu uygulama, aşağıda belirtildiği gibi AOSP uygulamasıyla uyumlu OLMALIDIR:
- Görüntü boyutu, doğal yoğunluğun 1,5 katından daha büyük bir ölçeğe ayarlanmamalı veya hangisi önce gerçekleşirse 320 dp'den (kaynak belirteci sw320dp'ye eşdeğer) daha küçük bir etkili minimum ekran boyutu oluşturmamalıdır.
- Görüntü boyutu, doğal yoğunluğun 0,85 katından daha küçük bir ölçeğe AYARLANMAMALIDIR.
- İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için doğal görüntüleme seçeneklerinin aşağıdaki ölçeklendirmesinin sağlanması ÖNERİLİR (yukarıda belirtilen sınırlara uyulmalıdır)
- Küçük: 0,85x
- Varsayılan: 1x (yerel ekran ölçeği)
- Büyük: 1,15x
- Daha büyük: 1,3 kat
- En büyük 1,45x
7.1.2. Görüntülü Reklam Metrikleri
Cihaz uygulamaları, android.util.DisplayMetrics içinde tanımlanan tüm ekran metrikleri için doğru değerleri bildirmeli ve varsayılan ekran olarak yerleşik veya harici ekranın kullanılıp kullanılmadığından bağımsız olarak aynı değerleri bildirmelidir.
7.1.3. Ekran Yönlendirme
Cihazlar, destekledikleri ekran yönlerini (android.hardware.screen.portrait ve/veya android.hardware.screen.landscape) bildirmeli ve en az bir desteklenen yönü bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yatay ekrana sahip bir cihaz yalnızca android.hardware.screen.landscape değerini bildirmelidir.
Hem dikey hem de yatay ekran yönünü bildiren cihazlar, uygulamaların dikey veya yatay ekran yönüne göre dinamik yönü desteklemesi GEREKİR. Yani cihaz, uygulamanın belirli bir ekran yönü isteğini dikkate almalıdır. Cihaz uygulamaları varsayılan olarak dikey veya yatay yönü seçEBİLİR.
Cihazlar, 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.
Cihazlar, yön değiştirirken bildirilen ekran boyutunu veya yoğunluğunu DEĞİŞTİRMEMELİDİR.
7.1.4. 2D ve 3D Grafik Hızlandırma
Cihaz uygulamaları, Android SDK dokümanlarındaki gibi hem OpenGL ES 1.0 hem de 2.0'ı DESTEKLEMELİDİR. Cihaz uygulamaları, destekleyebilecekleri cihazlarda OpenGL ES 3.0, 3.1 veya 3.2'yi DESTEKLEMELİDİR. Cihaz uygulamalarında, Android SDK dokümanlarında ayrıntılı olarak açıklandığı gibi Android RenderScript de desteklenmelidir.
Cihaz uygulamalarının, OpenGL ES 1.0, OpenGL ES 2.0, OpenGL ES 3.0, OpenGL 3.1 veya OpenGL 3.2'yi desteklediğini doğru şekilde tanımlaması DA GEREKİR. Yani:
- Yönetilen API'ler (ör. GLES10.getString() yöntemi aracılığıyla), OpenGL ES 1.0 ve OpenGL ES 2.0 desteğini bildirmelidir.
- Yerel C/C++ OpenGL API'leri (uygulamaların libGLES_v1CM.so, libGLES_v2.so veya libEGL.so aracılığıyla erişebildiği API'ler) OpenGL ES 1.0 ve OpenGL ES 2.0 desteğini bildirmelidir.
- OpenGL ES 3.0, 3.1 veya 3.2 desteğini beyan eden cihaz uygulamaları, ilgili yönetilen API'leri desteklemeli ve doğal C/C++ API'leri için destek içermelidir. OpenGL ES 3.0, 3.1 veya 3.2 desteğini açıklayan cihaz uygulamalarında libGLESv2.so, OpenGL ES 2.0 işlev simgelerine ek olarak ilgili işlev simgelerini DEĞİŞTİRMELİDİR.
Android, Java arayüzleri ve tessellation ile ASTC doku sıkıştırma biçimi gibi gelişmiş grafik işlevleri için yerel destek içeren bir OpenGL ES uzantı paketi sağlar. Cihaz OpenGL ES 3.2'yi destekliyorsa Android cihaz uygulamaları UZATIMCI PAKET'i destekleMELİDİR. Aksi takdirde UZATIMCI PAKET'i DESTEKLEYEBİLİR. Uzantı paketi tamamen destekliyorsa cihaz, android.hardware.opengles.aep
özellik işareti aracılığıyla desteği tanımlamalıdır.
Ayrıca cihaz uygulamaları, istenen OpenGL ES uzantılarını UYGULAYABİLİR. Ancak cihaz uygulamaları, destekledikleri tüm uzantı dizelerini OpenGL ES yönetilen ve yerel API'ler aracılığıyla bildirmelidir. Buna karşılık, desteklemedikleri uzantı dizelerini bildirmemelidir.
Android'in, uygulamaların isteğe bağlı olarak belirli OpenGL doku sıkıştırma biçimlerine ihtiyaç duyduklarını belirtmelerine yönelik destek içerdiğini unutmayın. Bu biçimler genellikle tedarikçiye özeldir. Android, belirli bir doku sıkıştırma biçimini uygulamak için cihaz uygulamalarını gerektirmez. Ancak, destekledikleri doku sıkıştırma biçimlerini OpenGL API'sindeki getString() yöntemi aracılığıyla doğru şekilde bildirmelidirler.
Android, uygulamaların android:hardwareAccelerated manifest etiketi veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini beyan etmelerini sağlayan bir mekanizma içerir.
Cihaz uygulamalarında donanım hızlandırma varsayılan olarak etkinleştirilmeli ve geliştirici android:hardwareAccelerated="false" değerini ayarlayarak veya donanım hızlandırmayı doğrudan Android View API'leri aracılığıyla devre dışı bırakarak donanım hızlandırmayı devre dışı bırakmalıdır.
Ayrıca, cihaz uygulamaları donanım hızlandırma ile ilgili Android SDK dokümanlarıyla tutarlı bir davranış sergilemelidir.
Android, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak doğrudan entegre etmesine olanak tanıyan bir TextureView nesnesi içerir. Cihaz uygulamaları TextureView API'yi DESTEKLEMELİ ve yayın öncesi Android uygulamasıyla tutarlı davranış sergileMELİDİR.
Android, EGLConfig'in görüntüleri videoya kaydeden bir ANativeWindow'a oluşturmayı destekleyip desteklemediğini belirten bir EGLConfig özelliği olan EGL_ANDROID_RECORDABLE için destek içerir. Cihaz uygulamaları EGL_ANDROID_RECORDABLE uzantısını DESTEKLEMELİDİR.
7.1.5. Eski Uygulama Uyumluluğu Modu
Android, çerçevenin ekran boyutundan bağımsızlık özelliğinin bulunmadığı eski Android sürümleri için geliştirilmemiş eski uygulamaların yararına, çerçevenin "normal" ekran boyutu eşdeğeri (320 dp genişlik) modunda çalıştığı bir "uyumluluk modu" belirtir.
- Android Automotive eski uyumluluk modunu desteklemez.
- Diğer tüm cihaz uygulamalarında, yayın öncesi Android açık kaynak kodu tarafından uygulanan eski uygulama uyumluluk modu desteği ZORUNLUDUR. Yani cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİ ve uyumluluk modunun davranışını DEĞİŞTİRMEMELİDİR.
7.1.6. Ekran Teknolojisi
Android platformu, uygulamaların ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. Bu belgede özel olarak izin verilmediği sürece cihazlar, Android SDK'sı tarafından tanımlanan bu API'lerin tümünü desteklemelidir.
- Cihazlar 16 bit renkli grafik oluşturabilen ekranları DESTEKLEMELİDİR ve 24 bit renkli grafik oluşturabilen ekranları DESTEKLEMELİDİR.
- Cihazlar, animasyon oluşturabilen ekranları DESTEKLEMELİDİR.
- Kullanılan ekran teknolojisinin piksel en boy oranı (PAR) 0,9 ile 1,15 arasında OLMALIDIR. Yani piksel en boy oranı, %10-15 toleransla kare (1,0) değerine yakın OLMALIDIR.
7.1.7. İkincil Ekranlar
Android, medya paylaşımı özelliklerini etkinleştirmek için ikincil ekran desteği ve harici ekranlara erişmek için geliştirici API'leri içerir. Bir cihaz, kablolu, kablosuz veya yerleşik ek ekran bağlantısı üzerinden harici ekranı destekliyorsa cihaz uygulaması, Android SDK dokümanlarında açıklandığı gibi DisplayManager API'yi UYGULAMALIDIR.
7.2. Giriş Cihazları
Cihazlar dokunmatik ekranı desteklemeli veya dokunmatik olmayan gezinme için 7.2.2 bölümünde listelenen şartları karşılamalıdır.
7.2.1. Klavye
Cihaz uygulamaları:
- http://developer.android.com adresinde açıklandığı gibi Giriş Yönetimi Çerçevesi (üçüncü taraf geliştiricilerin Giriş Yöntemi Düzenleyicileri (ör. sanal klavye) oluşturmasına olanak tanır) desteği ZORUNLUDUR.
- Ekran boyutu nedeniyle dokunmatik klavye kullanımını daha az makul hale getiren Android Watch cihazlar hariç olmak üzere en az bir dokunmatik klavye uygulaması (sabit klavye olup olmadığına bakılmaksızın) sağlanmalıdır.
- Ek sanal klavye uygulamaları içerebilir.
- Donanım klavyesi DAHİL OLABİLİR.
- android.content.res.Configuration.keyboard içinde belirtilen biçimlerden biriyle eşleşmeyen bir donanım klavyesi İÇERMEMELİDİR (QWERTY veya 12 tuşlu).
7.2.2. Dokunmatik olmayan gezinme
Cihaz uygulamaları:
- Cihaz uygulaması bir Android TV cihazı değilse dokunmatik olmayan bir gezinme seçeneğini (toplu imleç, d-pad veya tekerlek) EKSİLTİREBİLİR.
- android.content.res.Configuration.navigation için doğru değeri bildirmelidir.
- Giriş Yönetimi Motorları ile uyumlu, metin seçimi ve düzenleme için makul bir alternatif kullanıcı arayüzü mekanizması SAĞLAMALIDIR. Yukarı akış Android açık kaynak uygulaması, dokunmatik olmayan gezinme girişlerine sahip cihazlarla kullanıma uygun bir seçim mekanizması içerir.
7.2.3. Gezinme Tuşları
Ana Sayfa, Son Uygulamalar ve Geri işlevleri (sırasıyla KEYCODE_HOME, KEYCODE_APP_SWITCH, KEYCODE_BACK anahtar etkinlikleriyle eşlenir) Android gezinme paradigması için gereklidir ve bu nedenle:
- Android el cihazı uygulamalarında Ana Sayfa, Son Aramalar ve Geri işlevleri ZORUNLUDIR.
- Android TV cihaz uygulamalarında Ana Sayfa ve Geri işlevleri ZORUNLUDUR.
- Android Watch cihaz uygulamalarında, kullanıcının Home işlevine ve
UI_MODE_TYPE_WATCH
modunda olmadığı sürece Back işlevine erişebilmesi GEREKİR . - Android Watch cihaz uygulamalarında ve diğer Android cihaz türlerinde, tuş etkinliğindeki uzun basma etkinliği TÜKETİLEBİLİR
KEYCODE_BACK
ve ön plan uygulamasına gönderilmesi atlanabilir. - Android Automotive uygulamaları Ana Sayfa işlevini ZORUNLU olarak, Geri ve Son İşlemler işlevlerini İSTEĞE BAĞLI olarak sağlamalıdır.
- Diğer tüm cihaz uygulama türleri Ana Sayfa ve Geri işlevlerini ZORUNLU KILINCAK şekilde sağlamalıdır.
Bu işlevler, özel fiziksel düğmeler (mekanik veya kapasitif dokunmatik düğmeler gibi) aracılığıyla YAPILABİLİR veya ekranın farklı bir bölümündeki özel yazılım anahtarları, hareketler, dokunmatik panel vb. kullanılarak YAPILABİLİR. Android her iki uygulamayı da destekler. Bu işlevlerin tümüne, görünür olduklarında tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmelidir.
Sağlanan Son Aramalar işlevinin, tam ekran modunda diğer gezinme işlevleriyle birlikte gizlenmediği sürece görünür bir düğmesi veya simgesi OLMALIDIR. Bu durum, önceki Android sürümlerinden geçiş yapan ve gezinme için fiziksel düğmelere sahip olan, son uygulamalar düğmesi olmayan cihazlar için geçerli değildir.
Ana Sayfa ve Geri işlevleri (varsa) tam ekran modunda diğer gezinme işlevleriyle birlikte gizlenmediği veya uiMode UI_MODE_TYPE_MASK UI_MODE_TYPE_WATCH olarak ayarlanmadığı sürece her birinin görünür bir düğmesi veya simgesi OLMALIDIR.
Android 4.0'tan beri Menü işlevi, işlem çubuğu lehine kullanımdan kaldırılmıştır. Bu nedenle, Android 7.0 ve sonraki sürümlerle birlikte gönderilen yeni cihaz uygulamalarında Menü işlevi için özel bir fiziksel düğme UYGULANMAMALIDIR. Eski cihaz uygulamalarında menü işlevi için özel bir fiziksel düğme UYGULANMAMALIDIR. Ancak fiziksel menü düğmesi uygulanmışsa ve cihazda targetSdkVersion değeri 10'dan büyük olan uygulamalar çalışıyorsa cihaz uygulaması:
- Görünür olduğunda işlem çubuğunda işlem taşma düğmesini ve işlem taşma menüsü pop-up'ını boş göstermemelidir. Android 4.4'ten önce kullanıma sunulan ancak Android 7.0'a yükseltilen cihazlarda bu UYGUNDUR.
- İşlem çubuğundaki taşma düğmesi seçilerek görüntülenen işlem taşma pop-up'ının konumunu DEĞİŞTİRMEmelidir.
- Fiziksel menü düğmesi seçilerek görüntülendiğinde işlem taşması pop-up'ını ekranda değiştirilmiş bir konumda oluşturabilir.
Geriye dönük uyumluluk için cihaz uygulamalarında, targetSdkVersion 10'dan azsa fiziksel bir düğme, yazılım anahtarı veya hareketler aracılığıyla Menü işlevinin uygulamalara sunulması GEREKİR. Bu menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmediği sürece sunulmalıdır.
Yardımcı işlem ve/veya VoiceInteractionService
'ı destekleyen Android cihaz uygulamaları, diğer gezinme tuşları görünür durumdayken tek bir etkileşimle (ör. dokunma, çift tıklama veya hareket) yardımcı uygulamayı başlatabilmelidir. Bu etkileşim için ana sayfaya uzun basma seçeneğini kullanmanız önemle tavsiye edilir. Belirtilen etkileşim, kullanıcı tarafından seçilen yardımcı uygulamayı (yani VoiceInteractionService'i uygulayan uygulamayı) veya ACTION_ASSIST intent'ini işleyen bir etkinliği BAŞLATMAK ZORUNDADIR.
Cihaz uygulamalarında, gezinme tuşlarını görüntülemek için ekranın farklı bir bölümü KULLANILABİLİRSE ancak bu durumda aşağıdaki şartları karşılamalıdır:
- Cihaz uygulamalarında gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANABİLİR ve uygulamaların kullanabileceği ekran bölümünü GÖZDEN KAÇIRMASIN veya başka bir şekilde engelleMEMELİDİR.
- Cihaz uygulamaları, ekranın bir bölümünü 7.1.1 numaralı bölümde tanımlanan koşulları karşılayan uygulamalara sunmalıdır.
- Uygulamalar bir sistem kullanıcı arayüzü modu belirtmediğinde veya SYSTEM_UI_FLAG_VISIBLE belirtmediğinde cihaz uygulamaları gezinme tuşlarını GÖSTERMELİDİR.
- Uygulamalar SYSTEM_UI_FLAG_LOW_PROFILE belirttiğinde cihaz uygulamaları, gezinme tuşlarını göze çarpmayan bir "düşük profilli" (ör. karartılmış) modda sunmalıdır.
- Uygulamalar SYSTEM_UI_FLAG_HIDE_NAVIGATION belirttiğinde cihaz uygulamaları gezinme tuşlarını GİZMELİDİR.
7.2.4. Dokunmatik Ekran Girişi
Cihaz uygulamalarında bir tür işaretçi giriş sistemi (fare benzeri veya dokunmatik) OLMALIDIR. Ancak bir cihaz uygulaması işaretçi giriş sistemini desteklemiyorsa android.hardware.touchscreen veya android.hardware.faketouch özellik sabitlerini HİÇBİR ZAMAN bildirmemelidir. İşaretçi giriş sistemi içeren cihaz uygulamaları:
- Cihaz giriş sistemi birden fazla işaretçiyi destekliyorsa tamamen bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.
- Cihazdaki belirli dokunmatik ekranın türüne karşılık gelen android.content.res.Configuration.touchscreen değerini bildirmelidir.
Android, çeşitli dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunmatik giriş cihazları için destek içerir. Dokunmatik ekran tabanlı cihaz uygulamaları, kullanıcının ekrandaki öğelerle doğrudan etkileşim kurduğu izlenimi verecek şekilde bir ekranla ilişkilendirilir. Kullanıcı doğrudan ekrana dokunduğundan sistem, üzerinde işlem yapılan nesneleri belirtmek için ek kolaylıklara ihtiyaç duymaz. Buna karşılık, sahte dokunmatik arayüz, dokunmatik ekran özelliklerinin bir alt kümesine yakın bir kullanıcı giriş sistemi sağlar. Örneğin, ekranda bir imleci hareket ettiren fare veya uzaktan kumanda, dokunmaya benzer ancak kullanıcının önce imleci veya odak noktasını seçip ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi, jiroskop işaretçisi, kontrol çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı, sahte dokunma etkileşimlerini destekleyebilir. Android, android.hardware.faketouch özelliğini içerir. Bu özellik, dokunmatik tabanlı girişi (temel hareket desteği dahil) yeterince taklit edebilen fare veya dokunmatik yüzey gibi dokunmatik olmayan (işaretçi tabanlı) yüksek kaliteli bir giriş cihazına karşılık gelir ve cihazın dokunmatik ekran işlevinin taklit edilmiş bir alt kümesini desteklediğini belirtir. Sahte dokunma özelliğini açıklayan cihaz uygulamaları, 7.2.5 numaralı bölümdeki sahte dokunma şartlarını karşılamalıdır.
Cihaz uygulamalarında, kullanılan giriş türüne karşılık gelen doğru özellik ZORUNLUDIR. Dokunmatik ekran (tek dokunma veya daha iyi) içeren cihaz uygulamaları, platform özelliği olan android.hardware.touchscreen sabit değerini bildirmelidir. Platform özelliği sabiti android.hardware.touchscreen'i bildiren cihaz uygulamaları, platform özelliği sabiti android.hardware.faketouch'i de bildirmelidir. Dokunmatik ekran içermeyen (ve yalnızca işaretçi cihaz kullanan) cihaz uygulamaları hiçbir dokunmatik ekran özelliğini HİÇBİR ŞEKİLDE bildirmemelidir ve 7.2.5 numaralı bölümdeki sahte dokunma şartlarını karşılıyorsa yalnızca android.hardware.faketouch özelliğini bildirmelidir.
7.2.5. Sahte Dokunmatik Giriş
android.hardware.faketouch için destek beyan eden cihaz uygulamaları:
- İşaretçi konumunun mutlak X ve Y ekran konumlarını bildirmeli ve ekranda görsel bir işaretçi göstermelidir.
- Dokunma etkinliğini, işaretçinin ekranda aşağı veya yukarı hareket etmesiyle gerçekleşen durum değişikliğini belirten işlem koduyla bildirmelidir.
- Ekrandaki bir nesneye işaretçiyi aşağı ve yukarı hareket ettirme özelliğini desteklemelidir. Bu sayede kullanıcılar ekrandaki bir nesneye dokunma işlemini taklit edebilir.
- Ekranda bir nesnenin üzerinde, belirli bir süre içinde işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketlerini desteklemelidir. Bu sayede kullanıcılar ekrandaki bir nesneye iki kez dokunma işlemini taklit edebilir.
- Ekrandaki herhangi bir noktada aşağı bakan bir işaretçiyi, işaretçiyi ekrandaki herhangi bir noktaya taşımayı ve ardından kullanıcıların dokunma sürüklemesini taklit etmesine olanak tanıyan yukarı bakan bir işaretçiyi desteklemelidir.
- İşaretçinin aşağıya doğru hareket ettirilmesini desteklemeli, ardından kullanıcıların nesneyi ekranda hızlıca farklı bir konuma taşımasına ve ardından ekranda yukarı doğru hareket ettirilmesine izin vermelidir. Bu sayede kullanıcılar ekranda bir nesneyi fırlatabilir.
android.hardware.faketouch.multitouch.distinct için destek beyan eden cihazlar, yukarıdaki faketouch koşullarını karşılamalı ve ayrıca iki veya daha fazla bağımsız işaretçi girişinin ayrı ayrı izlenmesini desteklemelidir.
7.2.6. Oyun Kumandası Desteği
Android TV cihaz uygulamaları, aşağıda listelenen oyun kumandaları için düğme eşlemelerini desteklemelidir. Yukarı akış Android uygulaması, bu koşulu karşılayan oyun denetleyicileri için uygulamayı içerir.
7.2.6.1. Düğme Eşlemeleri
Android Television cihaz uygulamaları aşağıdaki anahtar eşlemelerini DESTEKLEMELİDİR:
Düğme | HID Kullanımı 2 | Android düğmesi |
---|---|---|
A 1 | 0x09 0x0001 | KEYCODE_BUTTON_A (96) |
B 1 | 0x09 0x0002 | KEYCODE_BUTTON_B (97) |
X 1 | 0x09 0x0004 | KEYCODE_BUTTON_X (99) |
Y 1 | 0x09 0x0005 | KEYCODE_BUTTON_Y (100) |
D-pad yukarı 1 D-pad aşağı 1 |
0x01 0x0039 3 | AXIS_HAT_Y 4 |
D-pad sola 1 D-pad sağa 1 |
0x01 0x0039 3 | AXIS_HAT_X 4 |
Sol omuz düğmesi 1 | 0x09 0x0007 | KEYCODE_BUTTON_L1 (102) |
Sağ omuz düğmesi 1 | 0x09 0x0008 | KEYCODE_BUTTON_R1 (103) |
Sol çubuk tıklama 1 | 0x09 0x000E | KEYCODE_BUTTON_THUMBL (106) |
Sağ çubuk tıklama 1 | 0x09 0x000F | KEYCODE_BUTTON_THUMBR (107) |
Ana Sayfa 1 | 0x0c 0x0223 | KEYCODE_HOME (3) |
Geri 1 | 0x0c 0x0224 | KEYCODE_BACK (4) |
1 KeyEvent
2 Yukarıdaki HID kullanımları, bir oyun kumandası CA'sında (0x01 0x0005) tanımlanmalıdır.
3 Bu kullanım için mantıksal minimum 0, mantıksal maksimum 7, fiziksel minimum 0, fiziksel maksimum 315, birim derece ve rapor boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde dönme olarak tanımlanır. Örneğin, 0 mantıksal değeri dönme olmadığını ve yukarı düğmesine basıldığını, 1 mantıksal değeri ise 45 derece dönmeyi ve hem yukarı hem de sol düğmesine basıldığını gösterir.
Analog Kontroller 1 | HID Kullanımı | Android düğmesi |
---|---|---|
Sol Tetikleyici | 0x02 0x00C5 | AXIS_LTRIGGER |
Sağ Tetikleyici | 0x02 0x00C4 | AXIS_RTRIGGER |
Sol kontrol çubuğu |
0x01 0x0030 0x01 0x0031 |
AXIS_X AXIS_Y |
Sağ kontrol çubuğu |
0x01 0x0032 0x01 0x0035 |
AXIS_Z AXIS_RZ |
7.2.7. Uzaktan Kumanda
Android TV cihazı uygulamalarında, kullanıcıların TV arayüzüne erişmesine olanak tanıyan bir uzaktan kumanda BULUNMASI GEREKİR. Uzaktan kumanda fiziksel bir uzaktan kumanda OLABİLİR veya cep telefonundan ya da tabletten erişilebilen yazılım tabanlı bir uzaktan kumanda olabilir. Uzaktan kumanda aşağıda tanımlanan koşulları karşılamalıdır.
- Arama olanağı . Kullanıcı fiziksel veya yazılım tabanlı uzaktan kumandadan sesli aramayı tetiklediğinde cihaz uygulamaları KEYCODE_SEARCH'i ÇAKMASI GEREKİR.
- Gezinme Tüm Android TV uzaktan kumandaları Geri, Ana Sayfa ve Seç düğmelerini ve D-pad etkinliklerini desteklemelidir.
7.3. Sensörler
Android, çeşitli sensör türlerine erişmek için API'ler içerir. Cihaz uygulamaları genellikle aşağıdaki alt bölümlerde belirtildiği gibi bu sensörleri EKSİLTİREBİLİR. Bir cihazda, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türü varsa cihaz uygulaması bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde UYGULAMALIDIR. Örneğin, cihaz uygulamaları:
- android.content.pm.PackageManager sınıfına göre sensörlerin varlığını veya yokluğunu doğru şekilde bildirmelidir.
- SensorManager.getSensorList() ve benzer yöntemler aracılığıyla desteklenen sensörlerin doğru bir listesini DÖNDÜRMELİDİR.
- Diğer tüm sensör API'leri için makul bir şekilde davranmalıdır (örneğin, uygulamalar dinleyici kaydetmeye çalıştığında uygun şekilde true veya false döndürerek, ilgili sensörler mevcut olmadığında sensör dinleyicilerini çağırmamak vb.).
- Android SDK dokümanlarında tanımlandığı gibi her sensör türü için ilgili Uluslararası Birim Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini bildirmelidir.
- Etkinlik zamanını Android SDK dokümanlarında tanımlandığı şekilde nanosaniye cinsinden İLETIYOR OLMALIDIR. Bu değer, etkinliğin gerçekleştiği zamanı temsil eder ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edilir. Mevcut ve yeni Android cihazların bu şartları karşılaması ŞİDDETLE ÖNERİLİR. Böylece, bu şartın ZORUNLU bir bileşen haline gelebileceği gelecekteki platform sürümlerine yükseltme yapabilecek. Senkronizasyon hatası 100 milisaniyenin altında OLMALIDIR.
- Uygulama işlemcisi etkinken 5 ms + 2 * sample_time minimum gecikmeli bir akışla aktarılan bir sensör söz konusu olduğunda, sensör verilerini 100 milisaniye + 2 * sample_time maksimum gecikmeli olarak bildirmelidir. Bu gecikmeye filtreleme gecikmeleri dahil değildir.
- İlk sensör örneğini, sensörün etkinleştirilmesinden sonraki 400 milisaniye + 2 * sample_time içinde bildirmelidir. Bu örneğin doğruluk değerinin 0 olması kabul edilebilir.
Yukarıdaki liste kapsamlı değildir. Android SDK'sının ve sensörler ile ilgili Android Açık Kaynak Dokümanları'nın belgelenmiş davranışı yetkili kabul edilir.
Bazı sensör türleri karmadır. Yani bir veya daha fazla sensör tarafından sağlanan verilerden türetilebilirler. (Yön sensörü ve doğrusal hızlanma sensörü buna örnek gösterilebilir.) Cihaz uygulamaları, sensör türleri bölümünde açıklanan ön koşul fiziksel sensörleri içerdiğinde bu sensör türlerini UYGULAMALIDIR. Bir cihaz uygulamasında karma sensör varsa sensör, karma sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulanmalıdır.
Bazı Android sensörleri, sürekli veri döndüren "sürekli" tetikleyici modunu destekler. Android SDK dokümanlarında kesintisiz sensör olarak belirtilen API'ler için cihaz uygulamalarında, kesintisiz olarak %3'ün altında jitter'e sahip olması gereken periyodik veri örnekleri sağlanmalıdır. Jitter, art arda gerçekleşen etkinlikler arasındaki raporlanan zaman damgası değerlerinin farkının standart sapması olarak tanımlanır.
Cihaz uygulamalarının, sensör etkinlik akışının cihaz CPU'sunun askıya alınmış duruma girmesini veya askıya alınmış durumdan uyandırılmasını ÖNLEMEDİĞİNDEN EMİN OLMASI GEREKİR.
Son olarak, birden fazla sensör etkinleştirildiğinde güç tüketimi, her bir sensörün raporlanan güç tüketiminin toplamını AŞMAMALIDIR.
7.3.1. İvme ölçer
Cihaz uygulamalarında 3 eksenli ivme ölçer BULUNMASI GEREKİR. Android el cihazı, Android Automotive uygulamaları ve Android Watch cihazlarının bu sensörü DAHİL ETMESİ KESİNLİKLE ÖNERİLİR. Bir cihaz uygulamasında 3 eksenli ivme ölçer varsa:
- TYPE_ACCELEROMETER sensörünü uygulamalı ve bildirmelidir.
- Android Watch cihazlar daha katı bir güç kısıtlamasına sahip olduğundan bu cihazlar için en az 50 Hz, diğer tüm cihaz türleri için ise 100 Hz'e kadar etkinlik raporlayabilmelidir.
- En az 200 Hz'e kadar olan etkinlikleri raporlamalıdır.
- Android API'lerinde açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR. Android Automotive uygulamaları, Android araç sensör koordinat sistemine UYGUN OLMALIDIR.
- Herhangi bir eksende serbest düşüşten başlayarak yerçekiminin dört katına (4 g) kadar veya daha fazlasını ölçebilmelidir.
- Çözünürlük en az 12 bit OLMALIDIR ve en az 16 bit OLMALIDIR.
- Özellikler yaşam döngüsü boyunca değişirse ve telafi edilirse kullanım sırasında kalibre EDİLMELİDİR ve cihaz yeniden başlatılırken telafi parametreleri korunmalıdır.
- Sıcaklık dengelenmelidir.
- Standart sapma en fazla 0,05 m/s^2 olmalıdır.Standart sapma, en hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına hesaplanır.
- TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER karma sensörlerini Android SDK belgesinde açıklandığı gibi UYGULAMALIDIR. Mevcut ve yeni Android cihazlarda TYPE_SIGNIFICANT_MOTION karma sensörünün uygulanması ŞİDDETLE ÖNERİLİR. Bu sensörlerden herhangi biri uygulanırsa güç tüketimlerinin toplamı her zaman 4 mW'dan az OLMALIDIR ve her biri 2 mW'dan az, cihaz dinamik veya statik durumdayken ise 0,5 mW'dan az OLMALIDIR.
- Jiroskop sensörü varsa TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION karma sensörlerini UYGULAMALI ve TYPE_GAME_ROTATION_VECTOR karma sensörünü UYGULAMALIDIR. Mevcut ve yeni Android cihazlarda TYPE_GAME_ROTATION_VECTOR sensörünün uygulanması önemle ÖNERİLİR.
- Jiroskop sensörü ve manyetometre sensörü de dahil edilmişse TYPE_ROTATION_VECTOR birleşik sensörü UYGULANMALIDIR.
7.3.2. Manyetometre
Cihaz uygulamalarında 3 eksenli bir manyetometre (pusula) BULUNMASI GEREKİR. 3 eksenli manyetometre içeren cihazlar:
- TYPE_MAGNETIC_FIELD sensörünü UYGULAMALI ve TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörünü de UYGULAMALIDIR. Mevcut ve yeni Android cihazlarda TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörünün uygulanması önemle ÖNERİLİR.
- En az 10 Hz'ye kadar sıklıkta etkinlikleri raporlayabİLMELİ ve en az 50 Hz'ye kadar sıklıkta etkinlikleri raporlaMALIDIR.
- Android API'lerinde açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR.
- Doygunluk öncesi her eksende -900 µT ile +900 µT arasında ölçüm yapabilmelidir.
- Manyetometre, dinamik (akımla indüklenen) ve statik (mıknatısla indüklenen) manyetik alanlardan uzak bir yere yerleştirilerek sabit demir ofset değeri 700 µT'den düşük OLMALIDIR ve 200 µT'den düşük bir değere sahip OLMALIDIR.
- Çözünürlük 0,6 µT'ye eşit veya daha yoğun OLMALIDIR ve 0,2 µT'ye eşit veya daha yoğun OLMALIDIR.
- Sıcaklık dengelenmelidir.
- Sabit demir önyargısının online kalibrasyonunu ve dengesini desteklemeli ve cihaz yeniden başlatmaları arasında denge parametrelerini korumalıdır.
- Yumuşak demir telafisi uygulanmış OLMALIDIR. Kalibre işlemi, cihaz kullanılırken veya cihazın üretimi sırasında yapılabilir.
- En hızlı örnekleme hızında en az 3 saniye boyunca toplanan örneklerde eksen başına hesaplanmış standart sapma 0,5 µT'den yüksek olmamalıdır.
- Bir ivmeölçer sensörü ve jiroskop sensörü de dahil edilmişse TYPE_ROTATION_VECTOR birleşik sensörü UYGULANMALIDIR.
- Bir ivme ölçer sensörü de uygulanıyorsa TYPE_GEOMAGNETIC_ROTATION_VECTOR sensörünü UYGULAYABİLİR. Ancak uygulandığında, sensör 10 Hz'de toplu mod için kaydedildiğinde 10 mW'den az ve 3 mW'den az güç TÜKETMELİDİR.
7.3.3. GPS
Cihaz uygulamaları bir GPS/GNSS alıcısı İÇERMELİDİR. Bir cihaz uygulaması GPS/GNSS alıcı içeriyorsa ve android.hardware.location.gps
özellik işareti aracılığıyla uygulamalara bu özelliği bildiriyorsa:
- Cihazın, acil durum telefon araması sırasında uygulamalara normal GPS/GNSS çıkışları sunmaya devam etmesi ve acil durum telefon araması sırasında konum çıkışının engellenmemesi önemle tavsiye edilir.
LocationManager#requestLocationUpdate
üzerinden istendiğinde en az 1 Hz hızda konum çıkışlarını DESTEKLEMELİDİR .- 0, 5 Mb/sn veya daha hızlı veri hızına sahip bir internet bağlantısına bağlıyken açık hava koşullarında (güçlü sinyaller, ihmal edilebilir çoklu yol, HDOP < 2) 10 saniye içinde (ilk düzeltme için hızlı zaman) konumu belirleyebilmelidir. Bu şart genellikle GPS/GNSS kilitlenme süresini en aza indirmek için Yardımlı veya Tahmini GPS/GNSS tekniği kullanılarak karşılanır (Yardım verileri Referans Zaman, Referans Konum ve Uydu Ephemeris/Kronometre içerir).
- Bu tür bir konum hesaplaması yapıldıktan sonra, cihazın konum istekleri yeniden başlatıldığında, ilk konum hesaplamasından sonraki bir saate kadar, sonraki istek veri bağlantısı olmadan yapıldığında ve/veya güç döngüsü yapıldıktan sonra bile açık havada 10 saniye içinde konumunu belirleyebilmesi önemle ÖNERİLİR.
- Açık hava koşullarında, konum belirlendikten sonra, sabitken veya saniye kare başına 1 metreden daha az ivmeyle hareket ederken:
- Cihaz, en az% 95 oranında konumu 20 metre, hızı ise 0,5 metre/saniye içinde belirleyebilmelidir.
- Aynı anda bir takımyıldızındaki en az 8 uyduyu GnssStatus.Callback aracılığıyla izlemeli ve bildirmelidir.
- Birden fazla takımyıldızından (ör. GPS + Glonass, Beidou, Galileo'dan en az biri) en az 24 uyduyu aynı anda izleyebilmelidir.
- "getGnssYearOfHardware" test API'si aracılığıyla GNSS teknolojisi neslini bildirmelidir.
- GNSS teknolojisi nesli "2016" veya daha yeni bir yıl olarak raporlanıyorsa aşağıdaki tüm şartları karşılamanızı önemle ÖNERİRİZ ve karşılamanızı ZORUNLU kılıyoruz.
- GPS/GNSS'den hesaplanan bir konum henüz raporlanmasa bile GPS ölçümleri bulunur bulunmaz raporlanmalıdır.
- Konum belirlendikten sonra açık hava koşullarında sabitken veya saniye kare başına 0,2 metreden daha az ivmeyle hareket ederken GPS sanal menzilleri ve sanal menzil hızlarını bildirmelidir. Bu değerler, en az% 95 oranında konumu 20 metre, hızı ise saniyede 0,2 metre içinde hesaplamak için yeterlidir.
Yukarıdaki GPS koşullarından bazılarının "ŞİDDETLE ÖNERİLİR" olarak belirtildiğini ancak sonraki büyük sürümün Uyumluluk Tanımı'nda bunların "ZORUNLU" olarak değiştirilmesinin beklendiğini unutmayın.
7.3.4. Jiroskop
Cihaz uygulamalarında jiroskop (açısal değişim sensörü) BULUNMASI GEREKİR. 3 eksenli ivme ölçer de dahil edilmediği sürece cihazlarda jiroskop sensörü BULUNMAMALIDIR. Cihaz uygulamasında jiroskop varsa:
- TYPE_GYROSCOPE sensörünü UYGULAMALI ve TYPE_GYROSCOPE_UNCALIBRATED sensörünü de UYGULAMALIDIR. Mevcut ve yeni Android cihazlarda SENSOR_TYPE_GYROSCOPE_UNCALIBRATED sensörünün uygulanması önemle ÖNERİLİR.
- Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmelidir.
- Android Watch cihazlar daha katı bir güç kısıtlamasına sahip olduğundan bu cihazlar için en az 50 Hz, diğer tüm cihaz türleri için ise 100 Hz'e kadar etkinlik raporlayabilmelidir.
- En az 200 Hz'e kadar olan etkinlikleri raporlamalıdır.
- 12 bit veya daha yüksek çözünürlükte OLMALIDIR ve 16 bit veya daha yüksek çözünürlükte OLMALIDIR.
- Sıcaklık dengeleme özelliğine sahip OLMALIDIR.
- Kullanım sırasında kalibre edilmeli ve telafi edilmelidir. Ayrıca, cihaz yeniden başlatılırken telafi parametreleri korunmalıdır.
- Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) büyük olmayan bir varyansa sahip OLMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle sınırlandırılmalıdır. 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 olmamalıdır.
- Bir ivmeölçer sensörü ve manyetometre sensörü de dahil edilmişse TYPE_ROTATION_VECTOR birleşik sensörü UYGULANMALIDIR.
- Bir ivmeölçer sensörü varsa TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION karma sensörlerini UYGULAMALI ve TYPE_GAME_ROTATION_VECTOR karma sensörünü UYGULAMALIDIR. Mevcut ve yeni Android cihazlarda TYPE_GAME_ROTATION_VECTOR sensörünün uygulanması önemle ÖNERİLİR.
7.3.5. Barometre
Cihaz uygulamalarında barometre (ortam hava basıncı sensörü) BULUNMASI GEREKİR. Cihaz uygulaması barometre içeriyorsa:
- TYPE_PRESSURE sensörünü UYGULAMALI ve raporlamalıdır.
- Etkinlikleri 5 Hz veya daha yüksek bir hızda yayınlayabilmelidir.
- Yüksekliği tahmin etmek için yeterli hassasiyete sahip OLMALIDIR.
- Sıcaklık dengeleme özelliğine sahip OLMALIDIR.
7.3.6. Termometre
Cihaz uygulamaları, ortam termometresi (sıcaklık sensörü) İÇERİEBİLİR. Varsa SENSOR_TYPE_AMBIENT_TEMPERATURE olarak tanımlanmalı ve ortam (oda) sıcaklığını santigrat derece cinsinden ölçmelidir.
Cihaz uygulamaları, CPU sıcaklık sensörü içerebilir ancak İÇERMEMELİDİR. Mevcutsa SENSOR_TYPE_TEMPERATURE olarak tanımlanmalı, cihazın CPU'sunun sıcaklığını ölçmeli ve başka bir sıcaklığı ÖLÇMEMELİDİR. SENSOR_TYPE_TEMPERATURE sensör türünün Android 4.0'da desteğinin sonlandırıldığını unutmayın.
7.3.7. Fotoğraf ölçer
Cihaz uygulamaları bir fotometre (ortam ışığı sensörü) İÇERİEBİLİR.
7.3.8. Yakınlık Sensörü
Cihaz uygulamaları bir yakınlık sensörü içerEBİLİR. Sesli arama yapabilen ve getPhoneType işlevinde PHONE_TYPE_NONE dışında bir değer belirten cihazlarda YAKINLIK SENSÖRÜ BULUNMASI GEREKİR. Bir cihaz uygulamasında yakınlık sensörü varsa:
- Bir nesnenin yakınlığını ekranla aynı yönde ölçmelidir. Yani, bu sensör türünün birincil amacı kullanıcının kullandığı telefonu algılamak olduğundan yakınlık sensörü, ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Bir cihaz uygulamasında başka bir yönde yakınlık sensörü varsa bu API aracılığıyla erişilememelidir.
- 1 bit veya daha fazla doğruluk değerine sahip OLMALIDIR.
7.3.9. Yüksek Doğruluk Oranı Sunan Sensörler
Bu bölümde listelenen tüm koşulları karşılayabilecek daha yüksek kaliteli bir sensör grubunu destekleyen cihaz uygulamaları, desteği android.hardware.sensor.hifi_sensors
özellik işareti aracılığıyla tanımlamalıdır.
android.hardware.sensor.hifi_sensors özelliğini açıklayan bir cihaz, aşağıdaki kalite koşullarını karşılayan aşağıdaki sensör türlerinin tamamını DESTEKLEMELİDİR:
- SENSOR_TYPE_ACCELEROMETER
- En az -8 g ile +8 g arasında bir ölçüm aralığına sahip OLMALIDIR.
- Ölçüm çözünürlüğü en az 1024 LSB/G olmalıdır.
- Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansı 400 Hz veya daha yüksek olmalıdır.
- Ölçüm gürültüsü 400 uG/√Hz'den yüksek OLMAMALIDIR.
- Bu sensörün, en az 3.000 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
- Gruplandırma güç tüketimi en fazla 3 mW olmalıdır.
- 24 saatlik statik veri kümesinden <15 μg √Hz sabit gürültü önyargı kararlılığına sahip OLMALIDIR.
- Sıcaklığa göre önyargı değişikliğinin ≤ +/- 1 mg / °C olması GEREKİR.
- En iyi uyum çizgisi doğrusal olmayanlığı %0,5'ten az, sıcaklığa göre hassasiyet değişimi ise %0,03/°C'den az OLMALIDIR.
-
SENSOR_TYPE_GYROSCOPE
- En az -1000 ile +1000 dps arasında bir ölçüm aralığına sahip OLMALIDIR.
- Ölçüm çözünürlüğü en az 16 LSB/dps olmalıdır.
- Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansı 400 Hz veya daha yüksek olmalıdır.
- Ölçüm gürültüsü 0,014°/s/√Hz'den yüksek OLMAMALIDIR.
- 24 saatlik statik veri kümesinden < 0,0002 °/s √Hz sabit önyargı kararlılığına sahip OLMALIDIR.
- Sıcaklığa göre önyargı değişimi ≤ +/- 0,05 °/ s / °C olmalıdır.
- Sıcaklığa göre hassasiyet değişimi %0,02/°C'den az OLMALIDIR.
- En iyi uyum doğrusunun doğrusal olmayanlığı %0,2'den az OLMALIDIR.
- Gürültü yoğunluğu ≤ 0,007 °/s/√Hz olmalıdır.
-
SENSOR_TYPE_GYROSCOPE ile aynı kalite koşullarına sahip SENSOR_TYPE_GYROSCOPE_UNCALIBRATED.
- SENSOR_TYPE_GEOMAGNETIC_FIELD
- Ölçüm aralığı en az -900 ile +900 uT arasında OLMALIDIR.
- Ölçüm çözünürlüğü en az 5 LSB/uT OLMALIDIR.
- Minimum ölçüm frekansı 5 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansı 50 Hz veya daha yüksek olmalıdır.
- Ölçüm gürültüsü 0,5 uT'tan yüksek OLMAMALIDIR.
- SENSOR_TYPE_GEOMAGNETIC_FIELD ile aynı kalite koşullarına sahip SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED ve ek olarak:
- Bu sensörün, en az 600 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
- SENSOR_TYPE_PRESSURE
- En az 300 ile 1.100 hPa arasında bir ölçüm aralığına sahip OLMALIDIR.
- Ölçüm çözünürlüğü en az 80 LSB/hPa OLMALIDIR.
- Minimum ölçüm sıklığı 1 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansı 10 Hz veya daha yüksek olmalıdır.
- Ölçüm gürültüsü 2 Pa/√Hz'den yüksek OLMAMALIDIR.
- Bu sensörün, en az 300 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
- Gruplandırma güç tüketimi en fazla 2 mW olmalıdır.
- SENSOR_TYPE_GAME_ROTATION_VECTOR
- Bu sensörün, en az 300 sensör etkinliği arabelleğe alma kapasitesine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
- Gruplandırma güç tüketimi en fazla 4 mW olmalıdır.
- SENSOR_TYPE_SIGNIFICANT_MOTION
- Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
- SENSOR_TYPE_STEP_DETECTOR
- Bu sensörün, en az 100 sensör etkinliği arabelleğe alma özelliğine sahip, uyandırmayan bir formunu UYGULAMALIDIR.
- Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
- Gruplandırma güç tüketimi en fazla 4 mW olmalıdır.
- SENSOR_TYPE_STEP_COUNTER
- Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
- SENSOR_TILT_DETECTOR
- Cihaz sabitken 0,5 mW'den, hareket halindeyken 1,5 mW'den daha yüksek olmayan bir güç tüketimine sahip OLMALIDIR.
Ayrıca bu tür cihazlar aşağıdaki sensör alt sistemi şartlarını DA karşılamalıdır:
- İvmeölçer, jiroskop sensörü ve manyetometre tarafından raporlanan aynı fiziksel etkinliğin etkinlik zaman damgası 2,5 milisaniye içinde olmalıdır.
- Jiroskop sensör etkinliği zaman damgalarının, kamera alt sistemiyle aynı zaman tabanında olması ve 1 milisaniyelik hata payı içinde olması GEREKİR.
- Yüksek hassasiyetli sensörler, verilerin fiziksel sensörde bulunduğu andan itibaren 5 milisaniye içinde uygulamalara örnek göndermelidir.
- Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde, cihaz statik durumdayken güç tüketimi 0,5 mW'den, cihaz hareket halindeyken ise 2,0 mW'den yüksek OLMAYACAK:
- SENSOR_TYPE_SIGNIFICANT_MOTION
- SENSOR_TYPE_STEP_DETECTOR
- SENSOR_TYPE_STEP_COUNTER
- SENSOR_TILT_DETECTORS
Bu bölümdeki tüm güç tüketimi şartlarının, uygulama işlemcisinin güç tüketimini içermediğini unutmayın. Sensör zincirinin tamamının (sensör, destekleyici devreler, özel sensör işleme sistemi vb.) kullandığı güç bu değere dahildir.
Aşağıdaki sensör türleri, android.hardware.sensor.hifi_sensors özelliğini açıklayan bir cihaz uygulamasında da DESTEKLENEBİLİR ancak bu sensör türleri mevcutsa aşağıdaki minimum arabelleğe alma özelliği koşulunu karşılamalıdır:
- SENSOR_TYPE_PROXIMITY: 100 sensör etkinliği
7.3.10. Parmak İzi Sensörü
Güvenli kilit ekranı olan cihaz uygulamalarında parmak izi sensörü YER ALMALIDIR. Bir cihaz uygulaması parmak izi sensörü içeriyorsa ve üçüncü taraf geliştiriciler için ilgili bir API'ye sahipse:
- android.hardware.fingerprint özelliği için destek BEYAN EDİLMELİDİR.
- İlgili API'yi Android SDK dokümanlarında açıklandığı şekilde eksiksiz şekilde uygulamalıdır.
- Yanlış kabul oranı %0,002'den yüksek OLMAMALIDIR.
- Cihaz üzerinde ölçülen yanlış reddetme oranının %10'un altında olması önemle ÖNERİLİR
- Kayıtlı bir parmak için parmak izi sensörüne dokunulduğu andan ekranın kilidinin açıldığı ana kadar geçen sürenin 1 saniyenin altında olması önemle ÖNERİLİR.
- Parmak izi doğrulaması için beş yanlış denemeden sonra deneme sayısını en az 30 saniye boyunca sınırlamalıdır.
- Donanım destekli bir anahtar deposu uygulamasına sahip OLMALI ve parmak izi eşleştirmeyi Güvenilir Yürütme Ortamı'nda (TEE) veya TEE'ye güvenli bir kanala sahip bir çipte gerçekleştirmelidir.
- Tanımlanabilir tüm parmak izi verilerinin, Android Open Source Project sitesindeki uygulama yönergelerinde belirtildiği şekilde Güvenilir Yürütme Ortamı (TEE) dışında edinilemeyecek, okunamayacak veya değiştirilemeyecek şekilde şifrelenmesi ve kriptografik olarak kimlik doğrulaması yapılması GEREKİR.
- Kullanıcıdan mevcut kimlik bilgilerini onaylamasını veya TEE tarafından korunan yeni bir cihaz kimlik bilgisi (PIN/desen/şifre) eklemesini sağlayarak önce bir güven zinciri oluşturmadan parmak izi eklenmesini ÖNLEMELİDİR. Android Açık Kaynak Projesi uygulaması, bunu yapmak için çerçevede mekanizmayı sağlar.
- Üçüncü taraf uygulamalarının ayrı parmak izlerini ayırt etmesine izin VERMEMELİDİR.
- DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT işaretini UYGUN şekilde uygulamalıdır.
- Android 6.0'dan önceki bir sürümden yükseltme yapıldığında, yukarıdaki şartları karşılamak için parmak izi verilerinin güvenli bir şekilde taşınması veya kaldırılması GEREKİR.
- Android Açık Kaynak Projesi'nde sağlanan Android Parmak İzi simgesini KULLANMALIDIR.
7.3.11. Yalnızca Android Automotive sensörleri
Otomotive özgü sensörler android.car.CarSensorManager API
içinde tanımlanır .
7.3.11.1. Mevcut Ekipman
Android Automotive uygulamaları, mevcut vitesi SENSOR_TYPE_GEAR olarak SAĞLAMALIDIR.
7.3.11.2. Gündüz Gece Modu
Android Automotive uygulamaları, SENSOR_TYPE_NIGHT olarak tanımlanan gündüz/gece modunu DESTEKLEMELİDİR. Bu işaretin değeri, gösterge tablosu gündüz/gece moduyla tutarlı OLMALIDIR ve ortam ışığı sensörünün girişine dayalı OLMALIDIR. Temel ortam ışığı sensörü, fotometre ile aynı OLABİLİR.
7.3.11.3. Sürüş Durumu
Android Automotive uygulamaları, araç tamamen durduğunda ve park edildiğinde varsayılan değeri DRIVE_STATUS_UNRESTRICTED olan SENSOR_TYPE_DRIVING_STATUS olarak tanımlanan sürüş durumunu DESTEKLEMELİDİR. SENSOR_TYPE_DRIVING_STATUS parametresinin, ürünün gönderildiği pazarlarda geçerli olan tüm yasa ve yönetmeliklere uygun şekilde yapılandırılması cihaz üreticilerinin sorumluluğundadır.
7.3.11.4. Tekerlek Hızı
Android Automotive uygulamaları, SENSOR_TYPE_CAR_SPEED olarak tanımlanan araç hızını ZORUNLU KILINCA sağlamalıdır.
7.3.12. Poz Sensörü
Cihaz uygulamaları, 6 serbestlik derecesine sahip poz sensörünü DESTEKLEYEBİLİR. Android el cihazlarının bu sensörü DESTEKLEMESİ ÖNERİLİR. Bir cihaz uygulaması 6 serbestlik derecesine sahip poz sensörünü destekliyorsa:
TYPE_POSE_6DOF
sensörünü uygulamalı ve bildirmelidir.- Yalnızca dönme vektöründen daha doğru OLMALIDIR.
7.4. Veri Bağlantısı
7.4.1. Telefon Hizmeti
Android API'leri ve bu belge tarafından kullanılan "Telefon" terimi, özellikle GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanımı ifade eder. Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak Android'in işleyişine göre aynı ağ kullanılarak uygulanabilecek veri bağlantılarından bağımsız olarak kabul edilir. Diğer bir deyişle, Android "telefon" işlevi ve API'leri özellikle sesli aramaları ve SMS'leri ifade eder. Örneğin, arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarından bağımsız olarak android.hardware.telephony özelliğini veya herhangi bir alt özelliği HİÇBİR ZAMAN bildirmemelidir.
Android, telefon donanımı içermeyen cihazlarda KULLANILABİLİR. Yani Android, telefon olmayan cihazlarla uyumludur. Ancak bir cihaz uygulaması GSM veya CDMA telefon görüşmesi içeriyorsa söz konusu teknolojinin API'si için tam destek sağlaması GEREKİR. Telefon donanımı içermeyen cihaz uygulamaları, API'lerin tamamını no-op olarak UYGULAMALIDIR.
7.4.1.1. Numara Engelleme Uyumluluğu
Android Telephony cihaz uygulamaları, numara engelleme desteğini İÇERMELİDİR ve:
- BlockedNumberContract ve ilgili API'yi SDK dokümanlarında açıklandığı şekilde tam olarak uygulamalıdır.
- "BlockedNumberProvider"da bulunan bir telefon numarasından gelen tüm aramaları ve mesajları, uygulamalarla herhangi bir etkileşimde bulunmadan engellemelidir. Tek istisna, SDK dokümanlarında açıklandığı gibi numara engellemenin geçici olarak kaldırılmasıdır.
- Engellenen aramalar için platform arama kaydı sağlayıcısına YAZMAMALIDIR.
- Engellenen bir mesaj için Telefon hizmeti sağlayıcıya yazı YAZMAMALIDIR.
- TelecomManager.createManageBlockedNumbersIntent() yöntemi tarafından döndürülen intent ile açılan bir engellenen numara yönetimi kullanıcı arayüzü UYGULANMALIDIR.
- Android platformu, birincil kullanıcının cihazdaki tek bir telefon hizmeti örneği üzerinde tam kontrole sahip olduğunu varsaydığında ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzü ikincil kullanıcılar için GİZLENMELİDİR ve engellenen listeye yine UYULMALIDIR.
- Cihaz Android 7.0'a güncellendiğinde engellenen numaralar sağlayıcıya taşınmalıdır.
7.4.2. IEEE 802.11 (Kablosuz)
Tüm Android cihaz uygulamalarında bir veya daha fazla 802.11 biçimi için destek YER ALMALIDIR. Bir cihaz uygulaması 802.11 desteği içeriyorsa ve işlevi üçüncü taraf bir uygulamaya sunuyorsa ilgili Android API'yi uygulamalıdır ve:
- Donanım özellik işareti android.hardware.wifi'yi bildirmelidir.
- Çoklu yayın API'sini SDK belgelerinde açıklandığı şekilde UYGULAMALIDIR.
- Çoklu yayın DNS'yi (mDNS) desteklemeli ve aşağıdakiler dahil olmak üzere herhangi bir çalışma zamanında mDNS paketlerini (224.0.0.251) filtrelememelidir:
- Ekran etkin durumda olmasa bile.
- Android TV cihaz uygulamalarında, güç bekleme durumundayken bile.
7.4.2.1. Kablosuz Doğrudan Bağlantı
Cihaz uygulamalarında Wi-Fi Direct (eşler arası kablosuz bağlantı) desteği YER ALMALIDIR. Bir cihaz uygulamasında kablosuz Direct desteği varsa SDK dokümanlarında açıklandığı gibi ilgili Android API'si uygulanmalıdır. Bir cihaz uygulamasında kablosuz doğrudan bağlantı desteği varsa:
- android.hardware.wifi.direct donanım özelliğini ZORUNLU olarak bildirmelidir.
- Normal kablosuz bağlantıyı desteklemelidir.
- Eşzamanlı kablosuz ve kablosuz doğrudan bağlantıyı desteklemelidir.
7.4.2.2. Kablosuz Tünel Doğrudan Bağlantısı Kurulumu
Cihaz uygulamalarında, Android SDK dokümanlarında açıklandığı gibi Kablosuz Tünel Doğrudan Bağlantı Kurulumu (TDLS) desteği YER ALMALIDIR. Bir cihaz uygulaması TDLS desteği içeriyorsa ve TDLS, WiFiManager API tarafından etkinleştirildiyse cihaz:
- TDLS yalnızca mümkün olduğunda VE faydalı olduğunda kullanılmalıdır.
- Performansı kablosuz erişim noktası üzerinden gitmekten daha kötü olabilecek durumlarda TDLS'yi KULLANMAMALI ve bazı sezgisel yöntemlere sahip OLMALIDIR.
7.4.3. Bluetooth
android.hardware.vr.high_performance
özelliğini destekleyen cihaz uygulamaları Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzatma özelliğini desteklemelidir.
Android, Bluetooth ve Bluetooth Düşük Enerji desteği içerir. Bluetooth ve Bluetooth Düşük Enerji desteği içeren cihaz uygulamaları, ilgili platform özelliklerini (sırasıyla android.hardware.bluetooth ve android.hardware.bluetooth_le) belirtmeli ve platform API'lerini uygulamalıdır. Cihaz uygulamaları, cihaza uygun olarak A2DP, AVCP, OBEX gibi ilgili Bluetooth profillerini UYGULAMALIDIR.
Android Automotive uygulamaları, Mesaj Erişim Profili'ni (MAP) DESTEKLEMELİDİR. Android Automotive uygulamaları aşağıdaki Bluetooth profillerini DESTEKLEMELİDİR:
- Eller Serbest Profili (HFP) üzerinden telefon araması.
- Ses Dağıtım Profili (A2DP) üzerinden medya oynatma.
- Uzaktan Kumanda Profili (AVRCP) üzerinden medya oynatma kontrolü.
- Telefon Rehberi Erişim Profili (PBAP) kullanılarak kişi paylaşımı.
Bluetooth Düşük Enerji desteği içeren cihaz uygulamaları:
- android.hardware.bluetooth_le donanım özelliğini İLKLEŞTİRMELİDİR.
- GATT (genel özellik profili) tabanlı Bluetooth API'lerini SDK dokümanlarında ve android.bluetooth'ta açıklandığı şekilde etkinleştirmeniz GEREKİR.
- 15 dakikadan uzun olmayan bir Çözümlenebilir Özel Adres (RPA) zaman aşımı uygulamanız ve kullanıcı gizliliğini korumak için zaman aşımı oluştuğunda adresi döndürmeniz önemle ÖNERİLİR.
- ScanFilter API uygulanırken filtreleme mantığının Bluetooth yonga setine aktarılmasını DESTEKLEMELİDİR ve android.bluetooth.BluetoothAdapter.isOffloadedFilteringSupported() yöntemi aracılığıyla sorgulandığında filtreleme mantığının uygulandığı yerin doğru değerini ORTAYA KOYMASI GEREKİR.
- Gruplandırılmış taramanın Bluetooth yonga setine aktarılmasını DESTEKLEMELİDİR ancak desteklenmiyorsa android.bluetooth.BluetoothAdapter.isOffloadedScanBatchingSupported() yöntemi aracılığıyla sorgulandığında "false" değerini ORTAYA KOYMASI GEREKİR.
- En az 4 yuvayla çoklu reklamı DESTEKLEMELİDİR ancak desteklenmiyorsa android.bluetooth.BluetoothAdapter.isMultipleAdvertisementSupported() yöntemi aracılığıyla sorgulandığında "false" değerini ORTAYA KOYMASI GEREKİR.
7.4.4. Yakın Alan İletişimi
Cihaz uygulamalarında Near Field Communication (NFC) için bir alıcı/verici ve ilgili donanım YER ALMALIDIR. Bir cihaz uygulaması NFC donanımı içeriyorsa ve bu donanımı üçüncü taraf uygulamalarına sunmayı planlıyorsa:
- android.content.pm.PackageManager.hasSystemFeature() yönteminden android.hardware.nfc özelliğini bildirmelidir.
- Aşağıdaki NFC standartları üzerinden NDEF mesajlarını okuyup yazabilmelidir:
- Aşağıdaki NFC standartları aracılığıyla NFC Forum okuyucu/yazıcı (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0 tarafından tanımlandığı şekilde) olarak hareket edebilmelidir:
- NfcA (ISO14443-3A)
- NfcB (ISO14443-3B)
- NfcF (JIS X 6319-4)
- IsoDep (ISO 14443-4)
- NFC Forumu Etiket Türleri 1, 2, 3, 4 (NFC Forumu tarafından tanımlanmıştır)
- Aşağıdaki NFC standartları aracılığıyla ham verilerin yanı sıra NDEF mesajlarını okuyup yazabilmeniz önemle ÖNERİLİR. Aşağıdaki NFC standartlarının "ŞİDDETLE ÖNERİLİR" olarak belirtilmesine rağmen, gelecekteki bir sürümün Uyumluluk Tanımı'nda bu standartların "ZORUNLU" olarak değiştirilmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır ancak gelecekteki sürümlerde zorunlu olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları şimdiden karşılamaları önemle tavsiye edilir.
- NfcV (ISO 15693)
- Thinfilm NFC Barkod ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmelidir.
- Aşağıdaki eşler arası standartlar ve protokoller üzerinden veri gönderip alabilme özelliğine SAHİP OLMALIDIR:
- ISO 18092
- LLCP 1.2 (NFC Forum tarafından tanımlanmıştır)
- SDP 1.0 (NFC Forum tarafından tanımlanmıştır)
- NDEF Push Protokolü
- SNEP 1.0 (NFC Forum tarafından tanımlanmıştır)
- Android Beam desteği ZORUNLUDUR.
- SNEP varsayılan sunucusunu UYGULAMALIDIR. Varsayılan SNEP sunucusu tarafından alınan geçerli NDEF mesajları, android.nfc.ACTION_NDEF_DISCOVERED intent'i kullanılarak uygulamalara gönderilmelidir. Android Beam'in ayarlardan devre dışı bırakılması, gelen NDEF mesajının gönderilmesini DEVRE DIŞI BIRAKMAMALIDIR.
- NFC paylaşım ayarlarını göstermek için android.settings.NFCSHARING_SETTINGS intent'ini İYİCE dikkate ALMALIDIR.
- NPP sunucusunu UYGULAMALIDIR. NPP sunucusu tarafından alınan mesajlar, SNEP varsayılan sunucusu ile aynı şekilde işlenmelidir.
- Android Beam etkinleştirildiğinde bir SNEP istemcisi uygulamalı ve varsayılan SNEP sunucusuna giden P2P NDEF göndermeye çalışmalı. Varsayılan SNEP sunucusu bulunamazsa istemcinin bir NPP sunucusuna göndermeye çalışması GEREKİR.
- Ön plan etkinliklerinin android.nfc.NfcAdapter.setNdefPushMessage, android.nfc.NfcAdapter.setNdefPushMessageCallback ve android.nfc.NfcAdapter.enableForegroundNdefPush yöntemlerini kullanarak giden P2P NDEF mesajını ayarlamasına İZİN VERMELİDİR.
- Giden P2P NDEF mesajları göndermeden önce "İletmek için dokun" gibi bir hareket veya ekran onayı KULLANMALIDIR.
- Android Beam'i varsayılan olarak etkinleştirmeli ve başka bir özel NFC P2p modu açıkken bile Android Beam'i kullanarak gönderip alabilmeli.
- Cihaz, Bluetooth Nesne İtme Profilini destekliyorsa NFC bağlantısının Bluetooth'a aktarılmasını desteklemelidir. Cihaz uygulamaları, NFC Forum'un "Bağlantı Devre Alma sürümü 1.2" ve "NFC sürümü 1.0'u kullanarak Bluetooth Güvenli Basit Eşleme" özelliklerini uygulayarak android.nfc.NfcAdapter.setBeamPushUris kullanılırken Bluetooth'a bağlantı aktarmayı desteklemelidir. Bu tür bir uygulama, NFC üzerinden aktarma isteğini/seçilen kayıtları aktarmak için "urn:nfc:sn:handover" hizmet adıyla aktarma LLCP hizmetini UYGULAMALIDIR ve gerçek Bluetooth veri aktarımı için Bluetooth Nesne İtme Profili'ni KULLANMALIDIR. Eski nedenlerden dolayı (Android 4.1 cihazlarla uyumluluğu korumak için) uygulama, NFC üzerinden aktarma isteği/seçilen kayıtları değiştirmek için SNEP GET isteklerini kabul etmeye DEVAM ETMELİDİR. Ancak uygulamanın kendisi, bağlantı aktarımı yapmak için SNEP GET istekleri GÖNDERMEMELİDİR.
- NFC keşif modundayken desteklenen tüm teknolojiler için anket YAPMALIDIR.
- Cihaz açıkken ekran etkin ve kilit ekranı kilidi açıkken NFC keşif modunda OLMALIDIR.
- Aşağıdaki NFC standartları aracılığıyla NFC Forum okuyucu/yazıcı (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0 tarafından tanımlandığı şekilde) olarak hareket edebilmelidir:
(Yukarıdaki JIS, ISO ve NFC Forum spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.)
Android, NFC Ana Kart Emülasyonu (HCE) modunu destekler. Bir cihaz uygulaması, HCE (NfcA ve/veya NfcB için) yapabilen bir NFC denetleyici yonga seti içeriyorsa ve uygulama kimliği (AID) yönlendirmesini destekliyorsa:
- android.hardware.nfc.hce özellik sabitini bildirmelidir.
- Android SDK'sında tanımlandığı şekilde NFC HCE API'lerini desteklemelidir.
Bir cihaz uygulaması, NfcF için HCE'yi destekleyen bir NFC denetleyici yonga seti içeriyorsa ve bu özelliği üçüncü taraf uygulamaları için uyguluyorsa:
- android.hardware.nfc.hcef özellik sabitini ZORUNLUDIR.
- Android SDK'sında tanımlandığı şekilde NfcF Kart Emülasyonu API'lerini UYGULAMALIDIR.
Ayrıca, cihaz uygulamaları aşağıdaki MIFARE teknolojileri için okuyucu/yazıcı desteği içerEBİLİR.
- MIFARE Classic
- MIFARE Ultralight
- MIFARE Classic'te NDEF
Android'in bu MIFARE türleri için API'ler içerdiğini unutmayın. Bir cihaz uygulaması, okuyucu/yazar rolünde MIFARE'i destekliyorsa:
- İlgili Android API'lerini Android SDK'da belirtildiği şekilde UYGULAMALIDIR.
- android.content.pm.PackageManager.hasSystemFeature() yönteminden com.nxp.mifare özelliğini bildirmelidir. Bunun standart bir Android özelliği olmadığını ve bu nedenle android.content.pm.PackageManager sınıfında sabit bir değer olarak görünmediğini unutmayın.
- Bu bölümde açıklandığı şekilde genel NFC desteğini de uygulamadığı sürece ilgili Android API'lerini uygulamamalı veya com.nxp.mifare özelliğini bildirmemelidir.
Bir cihaz uygulaması NFC donanımı içermiyorsa android.content.pm.PackageManager.hasSystemFeature() yönteminden android.hardware.nfc özelliğini İLAN ETMEMELİDİR ve Android NFC API'yi işlem yapmaz olarak UYGULAMALIDIR.
android.nfc.NdefMessage ve android.nfc.NdefRecord sınıfları protokolden bağımsız bir veri temsili biçimini temsil ettiğinden, cihaz uygulamaları NFC desteği içermese veya android.hardware.nfc özelliğini belirtmese bile bu API'leri UYGULAMALIDIR.
7.4.5. Minimum Ağ İşlevi
Cihaz uygulamaları, bir veya daha fazla veri ağı biçimi için destek içermelidir. Daha açık belirtmek gerekirse, cihaz uygulamalarında 200 Kb/sn veya daha yüksek hızda en az bir veri standardı desteği BULUNMASI GEREKİR. Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet, Bluetooth PAN vb. verilebilir.
Birincil veri bağlantısının fiziksel bir ağ standardı (ör. Ethernet) olduğu cihaz uygulamalarında 802.11 (Kablosuz) gibi en az bir yaygın kablosuz veri standardı desteği de YER ALMALIDIR.
Cihazlar birden fazla veri bağlantısı biçimi UYGULAYABİLİR.
Cihazlar bir IPv6 ağ yığınını İÇERMELİDİR ve java.net.Socket
ve java.net.URLConnection
gibi yönetilen API'lerin yanı sıra AF_INET6
soketleri gibi yerel API'leri kullanarak IPv6 iletişimini desteklemelidir. Gerekli IPv6 desteği düzeyi, ağ türüne bağlı olarak aşağıdaki gibidir:
- Kablosuz ağları destekleyen cihazlar, kablosuz ağda çift yığın ve yalnızca IPv6 işlevini desteklemelidir.
- Ethernet ağlarını destekleyen cihazlar, Ethernet'te çift yığınlı çalışmayı desteklemelidir.
- Hücresel veriyi destekleyen cihazlar, hücresel verilerde IPv6 işlevini (yalnızca IPv6 ve muhtemelen çift yığın) DESTEKLEMELİDİR.
- Bir cihaz aynı anda birden fazla ağa (ör. Kablosuz ağ ve hücresel veri) aynı anda bağlı olduğu her ağda bu koşulları karşılamalıdır.
IPv6 varsayılan olarak etkin OLMALIDIR.
IPv6 iletişiminin IPv4 kadar güvenilir olmasını sağlamak için cihaza gönderilen tekil IPv6 paketleri, ekran etkin durumda olmasa bile DÜŞÜRÜLMEMEMELİDİR. Güç tasarrufu için gerekliyse yinelenen aynı Yönlendirici Reklamları gibi gereksiz çoklu yayın IPv6 paketleri, donanımda veya donanım yazılımında hız sınırlı OLABİLİR. Bu gibi durumlarda, hız sınırlaması, cihazın en az 180 saniyelik RA ömrü kullanan IPv6 uyumlu herhangi bir ağda IPv6 bağlantısını kaybetmesine NEDEN OLMAMALISIDIR.
IPv6 bağlantısı, bekleme modunda tutulmalıdır.
7.4.6. Senkronizasyon Ayarları
getMasterSyncAutomatically() yönteminin "true" değerini döndürmesi için cihaz uygulamalarında varsayılan olarak ana otomatik senkronizasyon ayarı AÇIK OLMALIDIR.
7.4.7. Veri Tasarrufu
Veri tasarrufu modunu sunmak için ölçülü bağlantıya sahip cihaz uygulamalarının KUVVETLİ ŞEKİLDE ÖNERİLİR.
Bir cihaz uygulaması veri tasarrufu modunu sağlıyorsa:
-
SDK belgelerinde açıklandığı gibi
ConnectivityManager
sınıfındaki tüm API'leri desteklemelidir. -
Ayarlarda, kullanıcıların izin verilenler listesine uygulama eklemesine veya izin verilenler listesinden uygulama kaldırmasına olanak tanıyan bir kullanıcı arayüzü ZORUNLUDUR.
Buna karşılık, bir cihaz uygulaması veri tasarrufu modunu sağlamıyorsa:
-
ConnectivityManager.getRestrictBackgroundStatus()
içinRESTRICT_BACKGROUND_STATUS_DISABLED
değerini DÖNDÜRMELİDİR -
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED
yayını YAPMAMALIDIR -
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
intent'ini işleyen bir etkinliğe sahip OLMALI ancak bunu işlem yapmadan uygulayabilir.
7.5. Kameralar
Cihaz uygulamalarında arka kamera BULUNMASI GEREKİR ve ön kamera BULUNMASI MÜMKÜNDÜR. Arka kamera, cihazın ekranın karşısındaki tarafında bulunan bir kameradır. Yani geleneksel bir kamera gibi cihazın uzak tarafındaki sahneleri görüntüler. Ön kamera, cihazın ekranla aynı tarafında bulunan bir kameradır. Yani genellikle görüntülü konferans ve benzeri uygulamalarda kullanıcının görüntüsünü almak için kullanılan bir kameradır.
Bir cihaz uygulaması en az bir kamera içeriyorsa uygulamanın, temel önizleme ve fotoğraf çekme amacıyla kamera açıkken cihazdaki en yüksek çözünürlüklü kamera sensörü tarafından üretilen resimlerin boyutuna eşit 3 RGBA_8888 bitmap'i aynı anda ayırması ZORUNLUDUR.
7.5.1. Arka Kamera
Cihaz uygulamalarında arka kamera BULUNMASI GEREKİR. Bir cihaz uygulaması en az bir arka kamera içeriyorsa:
- android.hardware.camera ve android.hardware.camera.any özellik işaretini ZORUNLU olarak bildirmelidir.
- En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
- Kamera sürücüsünde donanım otomatik odaklama veya yazılım otomatik odaklama uygulanmış OLMALIDIR (uygulama yazılımı için şeffaf).
- Sabit odaklı veya EDOF (geniş alan derinliği) donanımına sahip OLABİLİR.
- FLAŞ içerebilir. Kamerada flaş varsa uygulama, Camera.Parameters nesnesinin FLASH_MODE_AUTO veya FLASH_MODE_ON özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece, bir android.hardware.Camera.PreviewCallback örneği bir kamera önizleme yüzeyine kaydedilmişken flaş ışığı YANMAZ. Bu kısıtlamanın cihazın yerleşik sistem kamerası uygulaması için değil, yalnızca Camera.PreviewCallback kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Kamera
Cihaz uygulamaları ön kamera içerEBİLİR. Bir cihaz uygulaması en az bir ön kamera içeriyorsa:
- android.hardware.camera.any ve android.hardware.camera.front özellik işaretlerini ZORUNLU olarak bildirmelidir.
- En az VGA (640x480 piksel) çözünürlüğe sahip OLMALIDIR.
- Camera API için varsayılan olarak ön kamera KULLANMAMALIDIR. Android'deki kamera API'si, ön kameralar için özel destek sunar ve cihaz uygulamalarında API, cihazdaki tek kamera olsa bile ön kamerayı varsayılan arka kamera olarak ele alacak şekilde yapılandırılmamalıdır.
- 7.5.1 numaralı bölümde açıklandığı gibi, arkaya bakan kameralarda kullanılabilen özellikleri (ör. otomatik odaklama, flaş vb.) İÇERİYE ALMAYABİLİR.
- Bir uygulamanın CameraPreview'da gösterdiği yayını aşağıdaki gibi yatay olarak yansıtmalıdır (yani yansıtmalıdır):
- Cihaz uygulaması kullanıcı tarafından döndürülebiliyorsa (ör. bir ivmeölçer aracılığıyla otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak) kamera önizlemesi, cihazın mevcut yönüne göre yatay olarak yansıtılmalıdır.
- Geçerli uygulama, android.hardware.Camera.setDisplayOrientation() yönteminin çağrılmasıyla kamera ekranının döndürülmesini açıkça talep ettiyse kamera önizlemesi, uygulama tarafından belirtilen yöne göre yatay olarak yansıtılmalıdır.
- Aksi takdirde önizleme, cihazın varsayılan yatay ekseni boyunca YANSITILMALIDIR.
- Son görüntüleme tarafından gösterilen görüntüyü kamera önizleme resim akışıyla aynı şekilde yansıtmalıdır. Cihaz uygulaması, izleme sonrası özelliğini desteklemiyorsa bu şart geçerli değildir.
- Uygulama geri çağırmalarına döndürülen veya medya depolama alanına bağlanan nihai çekilen hareketsiz resim veya video akışlarını yansıtMAMALIDIR.
7.5.3. Harici Kamera
Cihaz uygulamalarında, her zaman bağlı olmayabilecek harici bir kamera desteği BULUNMAYABİLİR. Harici kamera desteğine sahip cihazlar:
- Platform özellik bayrağı
android.hardware.camera.external
veandroid.hardware camera.any
bildirilmelidir . - Birden fazla kamerayı DESTEKLEYEBİLİR.
- Harici kamera USB bağlantı noktası üzerinden bağlanıyorsa USB Video Sınıfı'nı (UVC 1.0 veya üzeri) DESTEKLEMELİDİR.
- Yüksek kaliteli kodlanmamış akışların (ör. ham veya bağımsız olarak sıkıştırılmış resim akışları) aktarılmasını sağlamak için MJPEG gibi video sıkıştırma biçimlerini DESTEKLEMELİDİR.
- Kamera tabanlı video kodlamayı DESTEKLEYEBİLİR. Destekleniyorsa cihaz uygulaması, eşzamanlı olarak kodlanmamış / MJPEG akışına (QVGA veya daha yüksek çözünürlük) erişebilmelidir.
7.5.4. Kamera API'si Davranışı
Android, kameraya erişmek için iki API paketi içerir. Daha yeni android.hardware.camera2 API, uygulamaya daha düşük düzeyde kamera kontrolü sunar. Bu kontrol, sıfır kopyalama gerektiren verimli seri/akış akışları ve pozlama, kazanç, beyaz denge kazançları, renk dönüştürme, gürültü giderme, keskinleştirme ve daha fazlası için kare başına kontroller içerir.
Eski API paketi olan android.hardware.Camera, Android 5.0'de desteği sonlandırılmış olarak işaretlenmiştir ancak uygulamaların Android cihaz uygulamalarını kullanabilmesi için bu API'nin bu bölümde ve Android SDK'sında açıklandığı şekilde desteklenmesi gerekir.
Cihaz uygulamaları, mevcut tüm kameralar için kamerayla ilgili API'lerde aşağıdaki davranışları UYGULAMALIDIR:
- Bir uygulama hiç android.hardware.Camera.Parameters.setPreviewFormat(int) çağrısında bulunmadıysa cihaz, uygulama geri çağırmalarına sağlanan önizleme verileri için android.hardware.PixelFormat.YCbCr_420_SP'yi KULLANMAK ZORUNDADIR.
- Bir uygulama android.hardware.Camera.PreviewCallback örneği kaydederse ve önizleme biçimi YCbCr_420_SP olduğunda sistem onPreviewFrame() yöntemini çağırırsa onPreviewFrame() yöntemine iletilen byte[] içindeki veriler NV21 kodlama biçiminde olmalıdır. Yani NV21 varsayılan OLMALIDIR.
- android.hardware.Camera için cihaz uygulamaları, hem ön hem de arka kameraların kamera önizlemelerinde YV12 biçimini (android.graphics.ImageFormat.YV12 sabiti ile belirtildiği şekilde) DESTEKLEMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüşümü DESTEKLEMELİDİR.)
- android.hardware.camera2 için cihaz uygulamaları, android.media.ImageReader API aracılığıyla android.hardware.ImageFormat.YUV_420_888 ve android.hardware.ImageFormat.JPEG biçimlerini çıkış olarak desteklemelidir.
Cihaz uygulamalarında, cihazda donanım otomatik odaklama veya başka özellikler bulunup bulunmadığına bakılmaksızın Android SDK dokümanlarında yer alan Kamera API'sinin tamamı uygulanmalıdır. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı android.hardware.Camera.AutoFocusCallback örneklerini çağırmaya devam ETMEK ZORUNDADIR (otomatik odaklama özelliği olmayan kameralarla alakalı olmasa da). Bunun ön kameralar için geçerli olduğunu unutmayın. Örneğin, çoğu ön kamera otomatik odaklama özelliğini desteklemese bile API geri çağırmalarının açıklandığı şekilde "taklit" edilmesi gerekir.
Cihaz uygulamaları, temel donanım özelliği destekliyorsa android.hardware.Camera.Parameters sınıfında sabit olarak tanımlanan her parametre adını tanımalı ve dikkate almalıdır. Cihaz donanımı bir özelliği desteklemiyorsa API, dokümanlar uyarınca davranmalıdır. Buna karşılık, cihaz uygulamaları android.hardware.Camera.setParameters() yöntemine iletilen dize sabitlerini, android.hardware.Camera.Parameters üzerinde sabit olarak belgelenenler dışında tanımamalıdır. Yani cihaz uygulamaları, donanım izin veriyorsa tüm standart kamera parametrelerini DESTEKLEMELİ ve özel kamera parametresi türlerini DESTEKLEMEMELİDİR. Örneğin, yüksek dinamik aralık (HDR) görüntüleme teknikleri kullanılarak görüntü yakalamayı destekleyen cihaz uygulamaları, Camera.SCENE_MODE_HDR kamera parametresini desteklemelidir.
Tüm cihaz uygulamaları android.hardware.camera2 API'sinin tüm özelliklerini tam olarak destekleyemediğinden, cihaz uygulamaları Android SDK'da açıklandığı gibi android.info.supportedHardwareLevel mülküyle uygun destek düzeyini ve uygun çerçeve özellik işaretlerini bildirmelidir.
Cihaz uygulamalarında, android.request.availableCapabilities mülkü aracılığıyla android.hardware.camera2 özelliğinin ayrı kamera özellikleri de belirtilmeli ve uygun özellik işaretleri de belirtilmelidir. Bağlı kamera cihazlarından herhangi biri özelliği destekliyorsa cihaz, özellik işaretini tanımlamalıdır.
Cihaz uygulamaları, kamera tarafından yeni bir fotoğraf çekildiğinde ve fotoğrafın girişi medya mağazasına eklendiğinde Camera.ACTION_NEW_PICTURE intent'ini yayınlamalıdır.
Cihaz uygulamaları, kamera tarafından yeni bir video kaydedildiğinde ve resmin girişi medya mağazasına eklendiğinde Camera.ACTION_NEW_VIDEO intent'ini YAYITLAMAK ZORUNDADIR.
7.5.5. Kamera yönü
Hem ön hem de arka kameralar (varsa) kameranın uzun boyutu ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmelidir. Yani cihaz yatay yönde tutulduğunda kameralar YATAŞ YÖNDE resim çekmek ZORUNDADIR. Bu, cihazın doğal yöneliminden bağımsız olarak geçerlidir. Yani hem yatay birincil cihazlar hem de dikey birincil cihazlar için geçerlidir.
7.6. Bellek ve Depolama
7.6.1. Minimum Bellek ve Depolama
Cihaz uygulamalarında çekirdeğin ve kullanıcı alanının kullanabileceği bellek, aşağıdaki tabloda belirtilen minimum değerlere en az eşit veya bu değerlerden büyük OLMALIDIR. (Ekran boyutu ve yoğunluğu tanımları için 7.1.1 numaralı bölüme bakın.)
Yoğunluk ve ekran boyutu | 32 bit cihaz | 64 bit cihaz |
---|---|---|
Android Watch cihazlar (küçük ekranlar nedeniyle) | 416MB | Geçerli değil |
|
512MB | 816MB |
|
608MB | 944MB |
|
896MB | 1.280 MB |
|
1344MB | 1.824 MB |
Minimum bellek değerleri, çekirdeğin kontrolü altında olmayan radyo, video vb. donanım bileşenlerine ayrılmış bellek alanına ek olarak OLMALIDIR.
Android Watch olmadığı sürece, çekirdek ve kullanıcı alanında 512 MB'tan az bellek bulunan cihaz uygulamaları ActivityManager.isLowRamDevice() için "true" değerini İYİ DEĞERLERLE İADE ETMELİDİR.
Android TV cihazlarında en az 4 GB, diğer cihaz uygulamalarında ise uygulama özel verileri için en az 3 GB kalıcı depolama alanı BULUNMASI GEREKİR. Yani /data bölümü, Android TV cihazlar için en az 4 GB, diğer cihaz uygulamaları için en az 3 GB OLMALIDIR. Android çalıştıran cihaz uygulamalarının, gelecekteki platform sürümlerine yükseltebilmeleri için uygulama özel verileri için en az 4 GB kalıcı depolama alanına sahip olması ŞİDDETLE ÖNERİLİR.
Android API'leri, uygulamaların veri dosyalarını indirmek için KULLANABİLECEKLERİ bir İndir Yöneticisi içerir. İndirme Yöneticisi'nin cihaz uygulaması, en az 100 MB boyutunda dosyaları varsayılan "önbelleğe alma" konumuna indirebilmelidir.
7.6.2. Uygulama Ortak Depolama Alanı
Cihaz uygulamaları, genellikle "paylaşılan harici depolama alanı" olarak da adlandırılan uygulamalar için paylaşılan depolama alanı sunmalıdır.
Cihaz uygulamaları, varsayılan olarak "kutudan çıkar çıkmaz" ortak depolama alanı bağlı olacak şekilde yapılandırılmalıdır. Ortak depolama alanı, Linux yolu /sdcard'a bağlı değilse cihazda /sdcard'dan gerçek montaj noktasına bir Linux sembolik bağlantısı bulunmalıdır.
Cihaz uygulamalarında, kullanıcının erişebileceği çıkarılabilir depolama alanı (ör. Secure Digital (SD) kart yuvası) için donanım OLABİLİR. Bu yuva, paylaşılan depolama alanı şartını karşılamak için kullanılırsa cihaz uygulaması:
- SD kart olmadığında kullanıcıyı uyaran bir pop-up veya pop-up kullanıcı arayüzü UYGULANMALIDIR.
- 1 GB veya daha büyük boyutlu FAT biçimli bir SD kart DAHİL OLMALIDIR VEYA SD kartın ayrı olarak satın alınması gerektiği kutuda ve satın alma sırasında sunulan diğer materyallerde belirtilmelidir.
- SD kartı varsayılan olarak bağlamalıdır.
Alternatif olarak, cihaz uygulamaları, Android Açık Kaynak Projesi'nin ana akışına dahil olan uygulamalar için dahili (çıkarılamaz) depolama alanını paylaşılan depolama alanı olarak AYRIŞTIRABİLİR. Cihaz uygulamaları bu yapılandırma ve yazılım uygulamasını KULLANMALIDIR. Bir cihaz uygulaması, ortak depolama alanı şartını karşılamak için dahili (çıkarılabilir olmayan) depolama alanı kullanıyorsa ve bu depolama alanı uygulamanın özel verileriyle alan paylaşabiliyorsa en az 1 GB boyutunda olmalı ve /sdcard'a bağlı olmalıdır (veya /sdcard, başka bir yere bağlıysa fiziksel konuma yönelik sembolik bir bağlantı olmalıdır).
Cihaz uygulamalarında, bu paylaşılan depolama alanında android.permission.WRITE_EXTERNAL_STORAGE izninin belgelendiği şekilde uygulanması GEREKİR. Aksi takdirde, paylaşılan depolama alanı bu izni alan tüm uygulamalar tarafından yazılabilir OLMALIDIR.
Birden fazla paylaşılan depolama yolu içeren cihaz uygulamaları (ör. hem SD kart yuvası hem de paylaşılan dahili depolama alanı), yalnızca WRITE_EXTERNAL_STORAGE iznine sahip önceden yüklenmiş ve ayrıcalıklı Android uygulamalarının ikincil harici depolama alanına yazmasına izin VERMELİDİR. Paketlerine özel dizinlere veya ACTION_OPEN_DOCUMENT_TREE
intent'i tetiklenerek döndürülen URI
içinde yazma işlemleri bu kapsamda değildir.
Ancak cihaz uygulamalarında, Android'in medya tarayıcısı hizmeti ve android.provider.MediaStore aracılığıyla her iki depolama yolundaki içerikler şeffaf bir şekilde gösterilmelidir.
Kullanılan paylaşılan depolama alanı biçiminden bağımsız olarak, cihaz uygulamasında USB çevre birimi modu desteğine sahip bir USB bağlantı noktası varsa ana makineden paylaşılan depolama alanının içeriğine erişmek için bir mekanizma sağlanmalıdır. Cihaz uygulamalarında USB yığın depolama kullanılabilir ancak bu koşulu karşılamak için Medya Aktarımı Protokolü KULLANILMALIDIR. Cihaz uygulaması Medya Aktarımı Protokolü'nü destekliyorsa:
- Referans Android MTP ana makinesi Android Dosya Aktarımı ile uyumlu OLMALIDIR.
- 0x00 USB cihaz sınıfını raporlamalıdır.
- "MTP" USB arayüzü adını bildirmelidir.
7.6.3. Dahili Hale Getirilebilir Depolama Alanı
Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya başka bir koruyucu kılıf gibi uzun süreli sabit bir konumdaysa cihaz uygulamalarında uyarlanabilir depolama özelliğinin uygulanması önemle ÖNERİLİR.
Televizyon gibi cihaz uygulamaları, cihazın mobil değil statik olması beklendiğinden USB bağlantı noktaları üzerinden kullanıma sunulabilir. Ancak, doğası gereği mobil olan diğer cihaz uygulamalarında, yanlışlıkla bağlantılarının kesilmesi veri kaybına/bozulmasına neden olabileceğinden, uyarlanabilir depolama alanını uzun süreli olarak sabit bir konumda uygulamanız önemle tavsiye edilir.
7.7. USB
Cihaz uygulamaları USB çevre birimi modunu ve USB ana makine modunu DESTEKLEMELİDİR.
7.7.1. USB çevre birimi modu
Bir cihaz uygulaması, çevre birimi modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- Bağlantı noktası, standart A tipi veya C tipi USB bağlantı noktası olan bir USB ana cihaza bağlanabilmelidir.
- Bağlantı noktası, mikro-B, mikro-AB veya Type-C USB form faktörünü KULLANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılaması önemle ÖNERİLİR.
- Bağlantı noktası, cihazın alt kısmında (doğal yönde) OLMALIDIR veya cihaz alt tarafa bakacak şekilde yönlendirildiğinde ekranın doğru şekilde çizilmesi için tüm uygulamalarda (ana ekran dahil) yazılım ekranı döndürülmesi etkinleştirilmelidir. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılamaları önemle ÖNERİLİR.
- Android cihaza bağlı bir USB ana makinenin, USB yığın depolama veya Medya Aktarım Protokolü'nü kullanarak paylaşılan depolama biriminin içeriğine erişmesine İZİN VERMELİDİR.
- Android SDK dokümanlarında belirtildiği gibi Android Open Accessory (AOA) API'yi ve spesifikasyonunu UYGULAMALIDIR. Android el cihazı ise AOA API'yi UYGULAMALIDIR. AOA spesifikasyonunu uygulayan cihaz uygulamaları:
- android.hardware.usb.accessory donanım özelliği için destek BEYAN EDİLMELİDİR.
- USB ses sınıfını Android SDK dokümanlarında belirtildiği şekilde UYGULAMALIDIR.
- USB toplu depolama sınıfı, USB toplu depolama biriminin arayüz açıklaması
iInterface
dizenin sonunda "android" dizesini İÇERMELİDİR.
- USB Pil Şarjı spesifikasyonu, 1.2 revizyonu'nda belirtildiği gibi, HS cıvıltısı ve trafiği sırasında 1,5 A akım çekme desteği UYGULANMALIDIR. Mevcut ve yeni Android cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için bu şartları karşılaması önemle ÖNERİLİR.
- Type-C cihazlar, Type-C direnç standardına göre 1,5 A ve 3,0 A şarj cihazlarını algılamalı ve reklamdaki değişiklikleri algılamalıdır.
- USB ana makine modunu da destekleyen Type-C cihazların, veri ve güç rolü değişimi için güç bağlantısını desteklemesi önemle ÖNERİLİR.
- Type-C cihazlar, yüksek voltajlı şarj için Güç Aktarımı'nı ve ekran çıkışı gibi Alternatif Modları desteklemelidir.
- USB standart cihaz tanımlayıcısı içindeki iSerialNumber değerinin, android.os.Build.SERIAL değerine EŞİT OLMASI GEREKİR.
- Type-C cihazların, Vbus voltajını varsayılan seviyelerin ötesinde değiştiren veya alıcı/kaynak rollerini değiştiren özel şarj yöntemlerini desteklememesi önemle ÖNERİLİR. Aksi takdirde, standart USB Güç Aktarımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunları yaşanabilir. Bu, "ŞİDDETLE ÖNERİLİR" olarak belirtilse de gelecekteki Android sürümlerinde tüm C tipi cihazların standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemesi GEREKEBİLİR.
7.7.2. USB ana makine modu
Bir cihaz uygulaması, ana makine modunu destekleyen bir USB bağlantı noktası içeriyorsa:
- Cihaz uygulaması USB 3.1'i destekliyorsa Type-C USB bağlantı noktası KULLANMALIDIR.
- Standart olmayan bir bağlantı noktası form faktörü KULANILABİLİR ancak bu durumda bağlantı noktasını standart bir A tipi veya C tipi USB bağlantı noktasına uyarlayan bir kablo veya kablolar İÇERİSİNDE OLMALIDIR.
- Mikro-AB USB bağlantı noktası kullanabilir ancak bu durumda bağlantı noktasını standart bir A tipi veya C tipi USB bağlantı noktasına uyarlayan bir kablo veya kablolar ile birlikte gönderilmelidir.
- Android SDK dokümanlarında belirtildiği gibi USB ses sınıfını uygulamanız ŞİDDETLE ÖNERİLİR.
- Android USB ana makine API'sini Android SDK'da belirtildiği şekilde UYGULAMALI ve android.hardware.usb.host donanım özelliği için destek BEYAN ETMELİDİR.
- Ana makine modundayken cihaz şarjını desteklemelidir; USB Type-C konnektörler için [USB Type-C Kablo ve Konnektör Spesifikasyonu 1.2 Sürümünün] (http://www.usb.org/developers/docs/usb_31_021517.zip) Sonlandırma Parametreleri bölümünde belirtildiği gibi en az 1, 5 A kaynak akımı reklamı yapmalı veya Micro-AB konnektörler için USB Pil Şarjı Spesifikasyonları 1.2 Sürümünde belirtildiği gibi Aşağı Akım Şarj Bağlantı Noktası(CDP) çıkış akımı aralığını kullanmalıdır.
- USB Type-C cihazların DisplayPort'u desteklemesi ÇOK ÖNEMLİDİR, USB Süper Hızlı Veri Hızlarını DESTEKLEMELİDİR ve veri ve güç rolü değişimi için Güç Aktarımı'nı DESTEKLEMESİ ÇOK ÖNEMLİDİR.
- A tipi veya AB tipi bağlantı noktalarına sahip cihazlar, bu bağlantı noktasından C tipi bir yuvaya dönüştüren bir adaptörle birlikte GÖNDERİLMEMELİDİR.
- Uzaktan bağlı tüm MTP (Medya Aktarım Protokolü) cihazlarını tanımalı ve Depolama Aksesuarı Çerçevesi (SAF) destekliyorsa içeriklerini
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
veACTION_CREATE_DOCUMENT
intent'leri aracılığıyla erişilebilir hale getirmelidir. - Type-C USB bağlantı noktası kullanılıyorsa ve çevre birimi modu desteği sağlanıyorsa USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rol Bağlantı Noktası işlevini UYGULAMALIDIR.
- Çift Rol Bağlantı Noktası işlevi destekliyorsa cihaz form faktörüne en uygun Try.* modelini UYGULAMALI. Örneğin, el cihazı Try.SNK modelini UYGULAMALIDIR.
7.8. Ses
7.8.1. Mikrofon
Cihaz uygulamalarında mikrofon atlanabilir. Ancak bir cihaz uygulamasında mikrofon atlanmışsa android.hardware.microphone özellik sabitini HİÇBİR ZAMAN bildirmemelidir ve ses kaydı API'sini en azından 7. bölüm uyarınca no-op olarak uygulamalıdır. Mikrofonu olan cihaz uygulamaları ise:
- android.hardware.microphone özelliğinin sabit değerini bildirmelidir.
- 5.4 numaralı bölümdeki ses kaydı şartlarını karşılamalıdır.
- 5.6 numaralı bölümdeki ses gecikmesi koşullarını karşılamalıdır.
- 7.8.3 numaralı bölümde açıklandığı şekilde ultrason benzeri kayıt özelliğini desteklemeniz önemle tavsiye edilir.
7.8.2. Ses Çıkışı
Hoparlör içeren veya mikrofonlu kulaklık ya da harici hoparlör gibi ses çıkışı çevre birimi için ses/multimedya çıkış bağlantı noktası bulunan cihaz uygulamaları:
- android.hardware.audio.output özellik sabitini ZORUNLUDIR.
- 5.5 numaralı bölümdeki ses çalma koşullarını karşılamalıdır.
- 5.6 numaralı bölümdeki ses gecikmesi koşullarını karşılamalıdır.
- 7.8.3 numaralı bölümde açıklandığı şekilde ultrason yakın oynatma özelliğini desteklemeniz önemle tavsiye edilir.
Buna karşılık, bir cihaz uygulaması hoparlör veya ses çıkış bağlantı noktası içermiyorsa android.hardware.audio çıkış özelliğini HİÇBİR ZAMAN bildirmemelidir ve ses çıkışıyla ilgili API'leri en azından işlemsiz olarak uygulamalıdır.
Android Watch cihaz uygulamasında ses çıkışı OLABİLİR ancak OLMASI GEREKMEZ. Diğer Android cihaz uygulamalarında ise ses çıkışı OLMALI ve android.hardware.audio.output belirtilmelidir.
7.8.2.1. Analog Ses Bağlantı Noktaları
Android ekosisteminde 3, 5 mm ses fişi kullanan kulaklık ve diğer ses aksesuarlarıyla uyumlu olması için bir cihaz uygulamasında bir veya daha fazla analog ses bağlantı noktası varsa ses bağlantı noktalarından en az biri 4 iletkenli 3, 5 mm ses jakı OLMALIDIR. Bir cihaz uygulamasında 4 iletkenli 3, 5 mm ses jakı varsa:
- Stereo kulaklıklarda ve mikrofonlu stereo kulaklıklarda ses oynatmayı destekleMELİDİR ve mikrofonlu stereo kulaklıklarda ses kaydetmeyi DESTEKLEMELİDİR.
- CTIA pin çıkış sırasına sahip TRRS ses fişlerini DESTEKLEMELİDİR ve OMTP pin çıkış sırasına sahip ses fişlerini DESTEKLEMELİDİR.
- Cihaz uygulaması mikrofonu destekliyorsa takılı ses aksesuarındaki mikrofonun algılanması desteklenmeli ve android.intent.action.HEADSET_PLUG etkinliği, mikrofon ek değeri 1 olarak ayarlanarak yayınlanmalıdır.
- Ses fişindeki mikrofon ile topraklama iletkenleri arasındaki eşdeğer empedans aralıkları için anahtar kodlarının algılanması ve eşlenmesi desteklenmelidir:
- 70 ohm veya daha az : KEYCODE_HEADSETHOOK
- 210-290 Ohm : KEYCODE_VOLUME_UP
- 360-680 Ohm : KEYCODE_VOLUME_DOWN
- Mikrofon ile ses fişindeki topraklama iletkenleri arasındaki eşdeğer empedans aralığı için anahtar kodunu algılayıp eşlemeniz önemle tavsiye edilir:
- 110-180 Ohm: KEYCODE_VOICE_ASSIST
- Fiş takıldığında ACTION_HEADSET_PLUG etkinleştirilmelidir ancak yalnızca fişteki tüm temas noktaları, jaktaki ilgili segmentlerine değdikten sonra etkinleştirilmelidir.
- 32 Ohm hoparlör empedansında en az 150 mV ±% 10 çıkış voltajı sağlayabilmelidir.
- Mikrofon önyargı voltajı 1,8 V ile 2,9 V arasında OLMALIDIR.
7.8.3. Ultrasona yakın
Ultrason ses yakını, 18,5 kHz ile 20 kHz arasındaki banttır. Cihaz uygulamaları, AudioManager.getProperty API'si aracılığıyla ultrason yakın ses özelliğinin desteğini aşağıdaki şekilde doğru şekilde bildirmelidir:
- PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND "true" ise VOICE_RECOGNITION ve UNPROCESSED ses kaynakları aşağıdaki koşulları karşılamalıdır:
- Mikrofonun 18,5 kHz ila 20 kHz aralığındaki ortalama güç yanıtı, 2 kHz'deki yanıttan en fazla 15 dB daha düşük OLMALIDIR.
- Mikrofonun, -26 dBFS'de 19 kHz ton için 18,5 kHz ila 20 kHz arasındaki ağırlıklandırılmamış sinyal-gürültü oranı 50 dB'den düşük OLMAMALIDIR.
- PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND "true" ise hoparlörün 18,5 kHz - 20 kHz arasındaki ortalama yanıtı, 2 kHz'deki yanıtın 40 dB altında OLMAYACAK.
7.9. Sanal Gerçeklik
Android, yüksek kaliteli mobil VR deneyimleri de dahil olmak üzere "Sanal Gerçeklik" (VR) uygulamaları oluşturmak için API'ler ve olanaklar içerir. Cihaz uygulamalarında bu API'ler ve davranışlar bu bölümde açıklandığı şekilde doğru şekilde uygulanmalıdır.
7.9.1. Sanal Gerçeklik Modu
VR uygulamaları için bildirimlerin stereoskopik oluşturma işlemini yapan ve VR uygulaması kullanıcı odaklıyken tek gözlü sistem kullanıcı arayüzü bileşenlerini devre dışı bırakan bir modu destekleyen Android el cihazı uygulamalarında android.software.vr.mode
özelliği İLANI GEREKİR. Bu özelliği bildiren cihazlar, android.app.Activity#setVrModeEnabled
aracılığıyla VR uygulamaları tarafından etkinleştirilebilen android.service.vr.VrListenerService
uygulamasını İYİCE DAHİL ETMELİDİR .
7.9.2. Sanal Gerçeklik Yüksek Performans
Android el cihazı uygulamalarında, android.hardware.vr.high_performance
özellik işareti aracılığıyla daha uzun kullanıcı süreleri için yüksek performanslı sanal gerçeklik desteğinin sağlandığı belirtilmeli ve aşağıdaki şartlar karşılanmalıdır.
- Cihaz uygulamalarında en az 2 fiziksel çekirdek OLMALIDIR.
- Cihaz uygulamalarında android.software.vr.mode özelliği İLKLEŞTİRİLMELİDİR.
- Cihaz uygulamaları, ön plan uygulamasına özel bir çekirdek sağlayabilir ve en üstteki ön plan uygulamasına özel CPU çekirdeklerinin numaralarını döndürmek için Process.getExclusiveCores API'yi destekleyebilir. Özel çekirdek destekleniyorsa çekirdek, üzerinde başka kullanıcı alanı işlemlerinin (uygulama tarafından kullanılan cihaz sürücüleri hariç) çalıştırılmasına İZİN VERMEK ZORUNDADIR ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına İZİN VEREBİLİR.
- Cihaz uygulamaları, sürekli performans modunu DESTEKLEMELİDİR.
- Cihaz uygulamaları OpenGL ES 3.2'yi DESTEKLEMELİDİR.
- Cihaz uygulamaları Vulkan Donanım Seviyesi 0'ı DESTEKLEMELİDİR ve Vulkan Donanım Seviyesi 1'i DESTEKLEMELİDİR.
- Cihaz uygulamalarında, Paylaşılan Arabellek Modu için kullanılabilmesi amacıyla EGL_KHR_mutable_render_buffer ve EGL_ANDROID_front_buffer_auto_refresh, EGL_ANDROID_create_native_client_buffer, EGL_KHR_fence_sync ve EGL_KHR_wait_sync uygulanmalı ve mevcut EGL uzantıları listesinde uzantılar gösterilmelidir.
- GPU ve ekran, paylaşılan ön arabelleğe erişimi senkronize edebilmelidir. Böylece, VR içeriğinin iki oluşturma bağlamıyla 60 fps'de dönüşümlü olarak oluşturulması, görünür yırtılma kusurları olmadan görüntülenebilir.
- Cihaz uygulamalarında EGL_IMG_context_priority uygulanmalı ve uzantı, kullanılabilir EGL uzantıları listesinde gösterilmelidir.
- Cihaz uygulamalarında GL_EXT_multisampled_render_to_texture, GL_OVR_multiview, GL_OVR_multiview2 ve GL_OVR_multiview_multisampled_render_to_texture uygulanmalı ve mevcut GL uzantıları listesinde uzantılar gösterilmelidir.
- Cihaz uygulamalarında, Güvenli Doku Video Oynatma için kullanılabilmesi amacıyla EGL_EXT_protected_content ve GL_EXT_protected_textures uygulanmalı ve uzantılar, kullanılabilir EGL ve GL uzantıları listesinde gösterilmelidir.
- Cihaz uygulamaları en az 3840x2160@30fps-40Mbps (30 fps-10 Mb/sn'de 1920x1080'ün 4 örneğine veya 60 fps-20 Mb/sn'de 1920x1080'ün 2 örneğine eşdeğer) H.264 kod çözmeyi desteklemelidir.
- Cihaz uygulamaları HEVC ve VP9'u DESTEKLEMELİ, en az 1920x1080@30fps-10Mb/sn çözme kapasitesine SAHİP OLMALI ve 3840x2160@30fps-20Mb/sn (1920x1080@30fps-5Mb/sn'lik 4 örneğe eşdeğer) çözme kapasitesine SAHİP OLMALIDIR.
- Cihaz uygulamalarının android.hardware.sensor.hifi_sensors özelliğini desteklemesi önemle ÖNERİLİR ve android.hardware.hifi_sensors için jiroskop, ivme ölçer ve manyetometreyle ilgili gereksinimleri karşılamalıdır.
- Cihaz uygulamaları, HardwarePropertiesManager.getDeviceTemperatures API'yi desteklemeli ve deri sıcaklığı için doğru değerler döndürmelidir.
- Cihaz uygulamasında yerleşik bir ekran OLMALIDIR ve çözünürlüğü en az FullHD(1080p) OLMALIDIR. QuadHD (1440p) veya daha yüksek çözünürlük kullanılması İYİCE ÖNERİLİR.
- Ekranın diyagonal ölçüsü 4,7 inç ile 6 inç arasında OLMALIDIR.
- Ekran, VR modundayken en az 60 Hz'de güncellenmelidir.
- Griden griye, beyazdan siyaha ve siyahtan beyaza geçişteki ekran gecikmesi 3 ms'den AZA OLMALIDIR.
- Ekran, 5 ms'den az kalıcılığa sahip düşük kalıcı modu DESTEKLEMELİDİR. Kalıcılık, bir pikselin ışık yaydığı süre olarak tanımlanır.
- Cihaz uygulamaları Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzatma bölümü 7.4.3'ü desteklemelidir.
8. Performans ve Güç
Bazı minimum performans ve güç ölçütleri kullanıcı deneyimi açısından kritik öneme sahiptir ve geliştiricilerin uygulama geliştirirken kullanacağı temel varsayımları etkiler. Android Watch cihazlar aşağıdaki ölçütleri UYGUN OLMALIDIR ve diğer cihaz türleri aşağıdaki ölçütleri UYGUNLAMALIDIR.
8.1. Kullanıcı Deneyimi Tutarlılığı
Cihaz uygulamaları, uygulamalar ve oyunlar için tutarlı bir kare hızı ve yanıt süreleri sağlayarak sorunsuz bir kullanıcı arayüzü sunmalıdır. Cihaz uygulamaları aşağıdaki koşulları KESİNLİKLE karşılamalıdır:
- Tutarlı kare gecikmesi . Tutarlı olmayan kare gecikmesi veya kare oluşturma gecikmesi saniyede 5 kareden daha sık OLMAYACAĞI gibi saniyede 1 kareden az OLMALIDIR.
- Kullanıcı arayüzü gecikmesi . Cihaz uygulamalarında, Android Compatibility Test Suite (CTS) tarafından tanımlandığı şekilde 10.000 liste girişinin yer aldığı bir listeyi 36 saniyeden kısa sürede kaydırarak düşük gecikmeli kullanıcı deneyimi sağlanmalıdır.
- Görev değiştirme . Birden fazla uygulama başlatıldığında, zaten çalışan bir uygulamanın yeniden başlatılması 1 saniyeden kısa sürmelidir.
8.2. Dosya G/Ç Erişim Performansı
Cihaz uygulamaları, okuma ve yazma işlemleri için dahili depolama dosya erişimi performansının tutarlı olmasını SAĞLAMALIDIR.
- Sıralı yazma . Cihaz uygulamaları, 10 MB yazma arabelleği kullanarak 256 MB'lık bir dosya için en az 5 MB/sn'lik sıralı yazma performansı sağlamalıdır.
- Rastgele yazma . Cihaz uygulamaları, 4 KB yazma arabelleği kullanarak 256 MB'lık bir dosya için en az 0,5 MB/sn rastgele yazma performansı sağlamalıdır.
- Sıralı okuma Cihaz uygulamaları, 10 MB yazma arabelleği kullanarak 256 MB'lık bir dosya için en az 15 MB/sn'lik sıralı okuma performansı sağlamalıdır.
- Rastgele okuma . Cihaz uygulamaları, 4 KB yazma arabelleği kullanarak 256 MB'lık bir dosya için en az 3,5 MB/sn rastgele okuma performansı sağlamalıdır.
8.3. Güç Tasarrufu Modları
Android 6.0, pil kullanımını optimize etmek için Uygulamayı Beklemeye Alma ve Doz güç tasarrufu modlarını kullanıma sundu. Bu modlardan muaf tutulan tüm uygulamalar son kullanıcıya GÖSTERİLMELİDİR. Ayrıca, bu güç tasarrufu modlarının tetiklenmesi, bakımı, uyanma algoritmaları ve genel sistem ayarlarının kullanımı Android Açık Kaynak Projesi'nden farklı OLMAYACAK.
Android cihaz uygulamaları, güç tasarrufu modlarına ek olarak Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) tarafından tanımlanan 4 uyku güç durumunun herhangi birini veya tümünü UYGULAYABİLİR. Ancak S3 ve S4 güç durumlarını uygularsa yalnızca cihazın fiziksel bir parçası olan bir kapak kapatıldığında bu durumlara girebilir.
8.4. Güç Tüketimi Muhasebesi
Güç tüketiminin daha doğru bir şekilde hesaplanması ve raporlanması, uygulama geliştiriciye uygulamanın güç kullanım şeklini optimize etmek için hem teşvikler hem de araçlar sağlar. Bu nedenle, cihaz uygulamaları:
- Donanım bileşenlerinin güç kullanımını izleyebilmeli ve bu güç kullanımını belirli uygulamalarla ilişkilendirebilmelidir. Özellikle, uygulamalar:
- Her donanım bileşeninin mevcut tüketim değerini ve Android Open Source Project sitesinde belirtildiği gibi bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili ZORUNLUDUR.
- Tüm güç tüketimi değerlerini miliamper saat (mAh) cinsinden bildirmelidir.
- Donanım bileşeninin güç kullanımını bir uygulamaya bağlayamıyorsanız donanım bileşeninin kendisine bağlanmalıdır.
- Her işlemin UID'si başına CPU güç tüketimini bildirmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülü uygulamasıyla bu koşulu karşılar.
- Bu güç kullanımını,
adb shell dumpsys batterystats
kabuk komutu aracılığıyla uygulama geliştiriciye sunmalıdır. - android.intent.action.POWER_USAGE_SUMMARY intent'ini dikkate ALMALI ve bu güç kullanımını gösteren bir ayarlar menüsü göstermelidir.
8.5. Tutarlı Performans
Uzun süre çalışan yüksek performanslı uygulamalarda performans, arka planda çalışan diğer uygulamalar veya sıcaklık sınırlamaları nedeniyle CPU'nun sınırlandırılması nedeniyle önemli ölçüde dalgalanabilir. Android, cihazın kapasitesi yeterli olduğunda ön plandaki en önemli uygulamanın, bu tür dalgalanmaları gidermek için sistemin kaynakların tahsisini optimize etmesini isteyebileceği programatik arayüzler içerir.
Cihaz uygulamaları, Window.setSustainedPerformanceMode()
API yöntemi aracılığıyla istendiğinde ön plandaki en üst uygulamaya uzun süre boyunca tutarlı bir performans düzeyi sağlayabilen Sürdürülebilir Performans Modu'nu DESTEKLEMELİDİR. Cihaz uygulaması, PowerManager.isSustainedPerformanceModeSupported()
API yöntemi aracılığıyla Sürdürülebilir Performans Modu'nun desteğini doğru şekilde bildirmelidir.
İki veya daha fazla CPU çekirdeğine sahip cihaz uygulamaları, en üstteki ön plan uygulaması tarafından ayrılabilecek en az bir özel çekirdek SAĞLAMALIDIR. Sağlanan uygulamalar aşağıdaki şartları karşılamalıdır:
- Uygulamalar,
Process.getExclusiveCores()
API yöntemi aracılığıyla, en üst ön plan uygulaması tarafından ayrılabilecek özel çekirdeklerin kimlik numaralarını bildirmelidir. - Cihaz uygulamaları, uygulamanın özel çekirdeklerde çalışması için kullandığı cihaz sürücüleri dışındaki kullanıcı alanı işlemlerine İZİN VERMEK ZORUNDADIR ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına İZİN VEREBİLİR.
Bir cihaz uygulaması özel çekirdeği desteklemiyorsa Process.getExclusiveCores()
API yöntemi aracılığıyla boş bir liste döndürmesi GEREKİR.
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamalarında, Android geliştirici dokümanlarında API'ler için Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli uygulanmalıdır. Cihaz uygulamaları, üçüncü taraflardan/yetkililerden ek izinler/sertifikalar gerektirmeden kendi kendine imzalanan uygulamaların yüklenmesini DESTEKLEMELİDİR. Daha açık belirtmek gerekirse, uyumlu cihazlar aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını DESTEKLEMELİDİR.
9.1. İzinler
Cihaz uygulamaları, Android geliştirici belgelerinde tanımlandığı şekilde Android izin modelini desteklemelidir. Özellikle, uygulamalarda SDK dokümanlarında açıklandığı şekilde tanımlanan her izin ZORUNLU KILINACAK. Hiçbir izin atlanmamalı, değiştirilmemeli veya yok sayılmamalıdır. Yeni izin kimliği dizelerinin android.* ad alanında olmaması koşuluyla, uygulamalar ek izinler EKLEYEBİLİYOR.
protectionLevel
değeri 'PROTECTION_FLAG_PRIVILEGED' olan izinler yalnızca sistem görüntüsünün izin verilen ayrıcalıklı yollarına(ör. AOSP uygulamasındaki system/priv-app
yolu) önceden yüklenmiş uygulamalara VERİLMELİDİR.
Tehlikeli koruma düzeyine sahip izinler çalışma zamanı izinleridir. targetSdkVersion değeri 22'den büyük olan uygulamalar bunları çalışma zamanında ister. Cihaz uygulamaları:
- Kullanıcının istenen çalışma zamanı izinlerini verip vermeyeceğine karar vermesi için özel bir arayüz GÖSTERMELİDİR ve ayrıca kullanıcının çalışma zamanı izinlerini yönetmesi için bir arayüz sağlamalıdır.
- Her iki kullanıcı arayüzünün de yalnızca bir uygulaması OLMALIDIR.
- Aşağıdaki durumlar hariç olmak üzere önceden yüklenmiş uygulamalara çalışma zamanı izni VERMEMELİDİR:
- Uygulama tarafından kullanılmadan önce kullanıcının izni alınabilir.
- Çalışma zamanında istenen izinler, önceden yüklenmiş uygulamanın varsayılan işleyici olarak ayarlandığı bir intent kalıbıyla ilişkilendirilmişse
9.2. UID ve İşlem İzolasyon
Cihaz uygulamalarında, her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alanı modeli desteklenmelidir. Cihaz uygulamalarında, Güvenlik ve İzinler referansında tanımlandığı şekilde uygulamaların düzgün bir şekilde imzalanmış ve oluşturulmuş olması koşuluyla, aynı Linux kullanıcı kimliğiyle birden fazla uygulamanın çalıştırılması desteklenmelidir.
9.3. Dosya sistemi izinleri
Cihaz uygulamalarında Güvenlik ve İzinler referansında tanımlanan Android dosya erişim izinleri modeli desteklenmelidir.
9.4. Alternatif Yürütme Ortamları
Cihaz uygulamaları, Dalvik Yürütülebilir Biçimi veya yerel koddan başka bir yazılım ya da teknoloji kullanarak uygulamaları çalıştıran çalışma ortamı içerEBİLİR. Ancak bu tür alternatif yürütme ortamları, bu bölümde açıklandığı gibi Android güvenlik modelini veya yüklü Android uygulamalarının güvenliğini ÖNEMSEMEMELİDİR.
Alternatif çalışma ortamları Android uygulamaları OLMALIDIR ve 9. bölümde başka bir yerde açıklandığı gibi standart Android güvenlik modeline uymalıdır.
Alternatif çalışma zamanlarına, çalışma zamanının AndroidManifest.xml dosyasında <uses-permission> mekanizması aracılığıyla istenmeyen izinlerle korunan kaynaklara erişim İÇİN VERİLMEMELİDİR.
Alternatif çalışma zamanları, uygulamaların sistem uygulamalarıyla kısıtlanmış Android izinleriyle korunan özellikleri kullanmasına İZİN VERMEMELİDİR.
Alternatif çalışma zamanları Android korumalı alan modeline UYGUN OLMALIDIR. Özellikle alternatif çalışma süreleri:
- Uygulamaları PackageManager aracılığıyla ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) yüklemelidir.
- Alternatif çalışma zamanını kullanan tüm uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlayabilir.
- Alternatif bir çalışma zamanı kullanan yüklü uygulamalar, cihazda yüklü başka bir uygulamanın korumalı alanını (standart Android mekanizmaları olan paylaşılan kullanıcı kimliği ve imzalama sertifikası hariç) TEKRAR KULLANMAMALIDIR.
- Diğer Android uygulamalarına karşılık gelen korumalı alanlarla başlatılmamalı, bu alanlara erişim izni verilmemeli veya bu alanlara erişim izni verilmemelidir.
- Süper kullanıcının (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılmamalı, bu ayrıcalıklara sahip olmamalı ya da diğer uygulamalara bu ayrıcalıkları vermemelidir.
Alternatif çalışma zamanlarının .apk dosyaları bir cihaz uygulamasının sistem resmine DAHİL EDİLEBİLİR ancak cihaz uygulamasına dahil edilen diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla İMZALANACAK.
Alternatif çalışma zamanları, uygulamaları yüklerken uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMAK ZORUNDADIR. Bir uygulamanın, karşılık gelen bir Android izninin bulunduğu bir cihaz kaynağını (ör. kamera, GPS vb.) kullanması gerekiyorsa alternatif çalışma zamanı, kullanıcıyı uygulamanın bu kaynağa erişebileceği konusunda BİLGİLENDİRMELİDİR. Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmiyorsa çalışma zamanı ortamı, bu çalışma zamanını kullanan herhangi bir uygulamayı yüklerken çalışma zamanının sahip olduğu tüm izinleri LİSTELEMELİDİR.
9.5. Çok Kullanıcılı Destek
Android, birden fazla kullanıcı desteği ve tam kullanıcı izolasyonu desteği sunar. Cihaz uygulamalarında birden fazla kullanıcı etkinleştirilebilir ancak etkinleştirildiğinde çok kullanıcı desteği ile ilgili aşağıdaki koşulları karşılamalıdır:
- Çoklu kullanıcı desteğinin etkin olduğu Android Automotive cihaz uygulamalarında, kullanıcının giriş yapmasına gerek kalmadan araç sistemi tarafından sağlanan tüm işlevlere izin veren bir misafir hesabı ZORUNLUDUR.
- android.hardware.telephony özellik işaretini beyan etmeyen cihaz uygulamaları, cihaz sahiplerinin ek kullanıcıları ve cihazdaki özelliklerini yönetmelerine olanak tanıyan kısıtlanmış profilleri desteklemelidir. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamlar hızlıca oluşturabilir ve bu ortamlarda bulunan uygulamalarda daha ayrıntılı kısıtlamalar yönetebilir.
- Buna karşılık, android.hardware.telephony özellik işaretini açıklayan cihaz uygulamaları, kısıtlanmış profilleri DESTEKLEMEMELİ ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için AOSP'deki denetimlerin uygulanmasıyla uyumlu OLMALIDIR.
- Cihaz uygulamaları, her kullanıcı için API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli UYGULAMALIDIR.
- Android cihazdaki her kullanıcı örneğinin ayrı ve izole harici depolama alanı dizinleri OLMALIDIR. Cihaz uygulamaları, birden fazla kullanıcının verilerini aynı birimde veya dosya sisteminde DEPOLAYABİLİR. Ancak cihaz uygulaması, belirli bir kullanıcıya ait olan ve kullanıcı adına çalışan uygulamaların başka bir kullanıcıya ait verileri listelemediğinden, okumadığından veya bu verilere yazmadığından EMİN OLMALIDIR. SD kart yuvaları gibi çıkarılabilir medyaların, bir kullanıcının ana bilgisayar kullanarak başka bir kullanıcının verilerine erişmesine izin verebileceğini unutmayın. Bu nedenle, harici depolama alanı API'leri için çıkarılabilir medya kullanan cihaz uygulamalarında, çok kullanıcılı mod etkinleştirildiyse SD kartın içeriği yalnızca sisteme erişilebilen çıkarılabilir olmayan medyada depolanan bir anahtar kullanılarak ŞİFRELENMELİDİR. Bu durumda, ana bilgisayar PC'leri medya dosyalarını okuyamayacağından, ana bilgisayar PC'lerine mevcut kullanıcının verilerine erişim sağlamak için cihaz uygulamalarının MTP'ye veya benzer bir sisteme geçmesi gerekir. Buna göre, cihaz uygulamaları birincil harici depolama alanı için çıkarılabilir medya kullanıyorsa çok kullanıcılı özelliği etkinleştirebilir ancak etkinleştirmemelidir.
9.6. Premium SMS Uyarısı
Android, kullanıcıları giden premium SMS mesajları hakkında uyarma desteği içerir. Premium SMS mesajları, operatöre kayıtlı bir hizmete gönderilen ve kullanıcıdan ücret alınabilecek kısa mesajlardır. android.hardware.telephony desteğini beyan eden cihaz uygulamaları, cihazdaki /data/misc/sms/codes.xml dosyasında tanımlanan normal ifadeyle tanımlanan numaralara SMS mesajı göndermeden önce kullanıcıları uyarmalıdır. Android Açık Kaynak Projesi, bu koşulu karşılayan bir uygulama sağlar.
9.7. Çekirdek Güvenlik Özellikleri
Android Korumalı Alanı, Güvenlik Gelişmiş Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikleri içerir. SELinux veya Android çerçevesinin altında uygulanan diğer güvenlik özellikleri:
- Mevcut uygulamalarla uyumluluğu KORUMALIDIR.
- Bir güvenlik ihlali algılandığında ve başarıyla engellendiğinde görünür bir kullanıcı arayüzü OLMAMALISIDIR ancak engellenmemiş bir güvenlik ihlali meydana geldiğinde ve bu ihlal başarılı bir şekilde istismar edildiğinde görünür bir kullanıcı arayüzü OLABİLİR.
- Kullanıcı veya geliştirici tarafından yapılandırılaBİLMELİDİR.
Politika yapılandırması için herhangi bir API, başka bir uygulamayı etkileyebilecek bir uygulamaya (ör. Device Administration API) maruz bırakılırsa API, uyumluluğu bozan yapılandırmalara İZİN VERMEMELİDİR.
Cihazlar SELinux'u veya Linux dışında bir çekirdek kullanılıyorsa eşdeğer bir zorunlu erişim denetimi sistemi uygulamalıdır. Cihazlar, Android Açık Kaynak Projesi'ndeki referans uygulama tarafından karşılanan aşağıdaki koşulları da karşılamalıdır.
Cihaz uygulamaları:
- SELinux'u genel yaptırım moduna AYARINIZ GEREKİR.
- Tüm alanları zorunlu modda yapılandırmanız GEREKİR. Bir cihaza/tedarikçiye özgü alanlar da dahil olmak üzere izin verilen mod alan adlarına izin verilmez.
- Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan system/sepolicy klasöründeki neverallow kurallarını değiştirmemeli, atlamamalı veya değiştirmemeli ve politika hem AOSP SELinux alanları hem de cihaza/tedarikçiye özgü alanlar için mevcut tüm neverallow kurallarıyla derlenmelidir.
- Android Open Source Project sitesinde açıklandığı gibi her işleme daha dar kapsamlı erişim izni verilebilmesi için medya çerçevesini birden fazla işleme ayırmalıdır.
Cihaz uygulamalarında, yayın öncesi Android Açık Kaynak Projesi'nin system/sepolicy klasöründe sağlanan varsayılan SELinux politikası korunmalı ve yalnızca cihaza özgü yapılandırma için bu politikaya başka öğeler eklenmelidir. Cihaz uygulamaları, yayın öncesi Android Open Source Project ile uyumlu OLMALIDIR.
Cihazlar, ç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ı UYGULAMALIDIR. Yukarı yönlü Android Açık Kaynak Projesi, source.android.com'un Çekirdek Yapılandırması bölümünde açıklandığı gibi, seccomp-BPF'yi threadgroup senkronizasyonu (TSYNC) ile etkinleştirerek bu koşulu karşılar.
9.8. Gizlilik
Cihaz, sistemde ekranda görüntülenen içerikleri yakalayan ve/veya cihazda çalınan ses akışını kaydeden bir işlev uygularsa bu işlev etkinleştirildiğinde ve etkin bir şekilde yakalama/kayıt yapıldığında kullanıcıyı sürekli olarak bilgilendirmelidir.
Bir cihaz uygulamasında, ağ veri trafiğini varsayılan olarak bir proxy sunucusu veya VPN ağ geçidi üzerinden yönlendiren bir mekanizma varsa (ör. android.permission.CONTROL_VPN izni verilen bir VPN hizmetinin önceden yüklenmesi) cihaz uygulaması, bu mekanizmayı etkinleştirmeden önce kullanıcının iznini İSTEMELİDİR. VPN, Cihaz Politikası Denetleyicisi tarafından DevicePolicyManager.setAlwaysOnVpnPackage()
aracılığıyla etkinleştirilmediyse kullanıcının ayrı bir izin vermesi gerekmez ancak yalnızca bilgilendirilmelidir.
Cihaz uygulamaları, kullanıcı tarafından eklenen boş bir Sertifika Yetkilisi (CA) deposuyla birlikte gönderilmeli ve sistem tarafından güvenilen CA deposu için, yayın öncesi Android Açık Kaynak Projesi'nde sağlanan kök sertifikaları önceden yüklenmelidir.
Cihazlar bir VPN üzerinden yönlendirildiğinde veya kullanıcı kök CA'sı yüklendiğinde, uygulamada kullanıcıya ağ trafiğinin izlenebilir olduğunu belirten bir uyarı gösterilMELİDİR.
Bir cihaz uygulamasında USB çevre birimi modu desteğine sahip bir USB bağlantı noktası varsa USB bağlantı noktası üzerinden ortak depolama alanının içeriğine erişime izin vermeden önce kullanıcının iznini isteyen bir kullanıcı arayüzü GÖSTERİLMELİDİR.
9.9. Veri Depolama Şifreleme
Cihaz uygulaması, 9.11.1 bölümünde açıklandığı gibi güvenli bir kilit ekranını destekliyorsa cihaz, uygulama özel verilerinin (/data bölümü) yanı sıra cihazın kalıcı ve çıkarılamayan bir parçasıysa uygulamanın ortak depolama alanı bölümünün (/sdcard bölümü) veri depolama şifrelemesini DEĞİŞMEZ şekilde desteklemelidir.
Veri depolama alanı şifrelemeyi destekleyen ve Gelişmiş Şifreleme Standardı (AES) kripto performansı 50 MiB/sn'nin üzerinde olan cihaz uygulamalarında, kullanıcı kutudan çıkar çıkmaz kurulum deneyimini tamamladığında veri depolama alanı şifrelemesi varsayılan olarak etkinleştirilmelidir. Bir cihaz uygulaması, şifreleme varsayılan olarak devre dışı bırakılmış daha eski bir Android sürümünde kullanıma sunulmuşsa bu tür bir cihaz, sistem yazılımı güncellemesiyle şartı karşılayamaz ve bu nedenle muaf tutulabilir.
Cihaz uygulamaları, Dosya Tabanlı Şifreleme (FBE) uygulayarak yukarıdaki veri depolama alanı şifreleme şartını karşılamalıdır.
9.9.1. Doğrudan Başlatma
Tüm cihazlar, depolama alanı şifrelemeyi desteklemese bile doğrudan başlatma modu API'lerini uygulamalıdır. Özellikle de LOCKED_BOOT_COMPLETED ve ACTION_USER_UNLOCKED intent'leri, Doğrudan Açılış'tan haberdar olan uygulamalara Cihaz Şifrelenmiş (DE) ve Kimlik Bilgisi Şifrelenmiş (CE) depolama konumlarının kullanıcı tarafından kullanılabileceğini bildirmek için yine yayınlanmalıdır.
9.9.2. Dosya Tabanlı Şifreleme
FBE'yi destekleyen cihaz uygulamaları:
- LOCKED_BOOT_COMPLETED mesajı yayınlandıktan sonra kullanıcıdan kimlik bilgileri istemeden başlatılmalı ve Doğrudan Açılış bilincine sahip uygulamaların Cihaz Şifrelenmiş (DE) depolama alanına erişmesine izin vermelidir.
- Kimlik Bilgisi Şifrelenmiş (CE) depolamaya yalnızca kullanıcı kimlik bilgilerini (ör. şifre kodu, PIN, desen veya parmak izi) sağlayarak cihazın kilidini açtıktan ve ACTION_USER_UNLOCKED mesajı yayınlandıktan sonra izin VERMELİDİR. Cihaz uygulamaları, kullanıcı tarafından sağlanan kimlik bilgileri olmadan CE korumalı depolama alanının kilidini açma yöntemi SUNMAMALIDIR.
- Doğrulanmış Başlatma'yı desteklemeli ve DE anahtarlarının cihazın donanım kök güven kaynağına kriptografik olarak bağlanmasını sağlamalıdır.
- XTS modunda 256 bit anahtar uzunluğuna sahip AES kullanılarak dosya içeriklerinin şifrelenmesini desteklemelidir.
- CBC-CTS modunda 256 bit anahtar uzunluğuyla AES kullanılarak dosya adının şifrelenmesini desteklemelidir.
- Dosya içeriği ve dosya adı şifrelemesi için alternatif şifreler, anahtar uzunlukları ve modları DESTEKLEYEBİLİR ancak varsayılan olarak zorunlu olarak desteklenen şifreleri, anahtar uzunluklarını ve modları KULLANMAK ZORUNDADIR.
- Önceden yüklenmiş temel uygulamaları (ör. Alarm, Telefon, Mesajlar) Doğrudan Önyükleme'den haberdar ETMELI.
CE ve DE depolama alanlarını koruyan anahtarlar:
- Donanım destekli bir anahtar deposuna kriptografik olarak bağlı OLMALIDIR. CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine bağlı olmalıdır. Kullanıcı kilit ekranı kimlik bilgileri belirtmediyse CE anahtarları varsayılan bir şifre koduna BAĞLANMALIDIR.
- 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.
Yukarı akış Android Açık Kaynak projesi, Linux çekirdeğinin ext4 şifreleme özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.
9.9.3. Tam Disk Şifreleme
Tam disk şifrelemeyi (FDE) destekleyen cihaz uygulamaları. 128 bit (veya daha büyük) anahtar ve depolama için tasarlanmış bir mod (ör. AES-XTS, AES-CBC-ESSIV) ile AES kullanılmalıdır. Şifreleme anahtarı, şifrelenmeden hiçbir zaman depolama alanına YAZILMAMALIDIR. Etkin kullanımda olmadığında şifreleme anahtarı, yavaş bir germe algoritması (ör. PBKDF2 veya scrypt) kullanılarak gerilmiş kilit ekranı kimlik bilgileriyle AES şifrelenmelidir. Kullanıcı kilit ekranı kimlik bilgilerini belirtmediyse veya şifreleme için şifre kodu kullanımını devre dışı bıraktıysa sistem, şifreleme anahtarını sarmalamak için varsayılan bir şifre kodu KULLANMALIDIR. Cihaz donanım destekli bir anahtar mağazası sağlıyorsa şifre uzatma algoritması kriptografik olarak bu anahtar mağazasına BAĞLI OLMALIDIR. Şifreleme anahtarı cihazdan gönderilMEMELİDİR (kullanıcı şifre kodu ve/veya donanıma bağlı anahtarla sarmalanmış olsa bile). Yukarı akış Android Açık Kaynak projesi, Linux çekirdeğindeki dm-crypt özelliğine dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.
9.10. Cihaz bütünlüğü
Aşağıdaki koşullar, cihaz bütünlüğünün durumuyla ilgili şeffaflık sağlar.
Cihaz uygulamalarının, önyükleyici durumlarının sistem görüntüsünün yanıp sönmesine izin verip vermediğini System API yöntemi PersistentDataBlockManager.getFlashLockState() aracılığıyla doğru şekilde bildirmesi GEREKİR. FLASH_LOCK_UNKNOWN
durumu, bu yeni sistem API yönteminin mevcut olmadığı Android'in önceki bir sürümünden yeni sürüme geçen cihaz uygulamaları için ayrılmıştır.
Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Bir cihaz uygulaması özelliği destekliyorsa ŞUNLARI YAPMASI GEREKİR:
- android.software.verified_boot platform özellik işaretini tanımlayın.
- Her önyükleme sırasında doğrulama yapın.
- Doğrulamayı, güvenin kökü olan değişmez bir donanım anahtarından başlayıp sistem bölümüne kadar devam ettirin.
- Bir sonraki aşamadaki kodu yürütmeden önce, doğrulama aşamalarının her birini uygulayarak bir sonraki aşamadaki tüm baytların bütünlüğünü ve özgünlüğünü kontrol edin.
- Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'nin mevcut önerileri kadar güçlü doğrulama algoritmaları kullanın.
- Kullanıcı yine de önyükleme yapmayı denemeyi kabul etmediği sürece, sistem doğrulaması başarısız olduğunda önyüklemenin tamamlanmasına izin VERMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki veriler KULLANILMAMALISDIR.
- Kullanıcı, önyükleme yükleyicinin kilidini açıkça açmadığı sürece cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERMEMELİDİR.
Yukarı akış Android Açık Kaynak Projesi, Linux çekirdeği özelliği dm-verity'ye dayalı olarak bu özelliğin tercih edilen bir uygulamasını sağlar.
Android 6.0'dan itibaren, 50 MiB/saniyenin üzerindeki Gelişmiş Şifreleme Standardı (AES) kripto performansına sahip cihaz uygulamaları, cihaz bütünlüğü için doğrulanmış başlatmayı DESTEKLEMELİDİR.
Bir cihaz uygulaması, Android'in önceki bir sürümünde doğrulanmış önyüklemeyi desteklemeden kullanıma sunulmuşsa bu tür bir cihaz, sistem yazılımı güncellemesiyle bu özellik için destek ekleyemez ve bu nedenle şarttan muaf tutulur.
9.11. Anahtarlar ve Kimlik Bilgileri
Android Anahtar Deposu Sistemi, uygulama geliştiricilerin kriptografik anahtarları bir kapsayıcıda depolamalarına ve KeyChain API veya Keystore API aracılığıyla kriptografik işlemlerde kullanmalarına olanak tanır.
Tüm Android cihaz uygulamaları aşağıdaki şartları karşılamalıdır:
- Oluşturulabilecek anahtar sayısını sınırlamamalı ve en az 8.192 anahtarın içe aktarılmasına izin vermelidir.
- Kilit ekranı kimlik doğrulaması, deneme sayısını sınırlamalı ve üstel bir geri çekilme algoritmasına sahip olmalıdır. 150 başarısız denemeden sonra, deneme başına en az 24 saat bekleme süresi OLMALIDIR.
- Cihaz uygulaması güvenli kilit ekranını desteklediğinde anahtar deposu uygulamasını güvenli donanımla yedeklemesi VE aşağıdaki koşulları karşılaması GEREKİR:
- 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, SHA-2 aile karma oluşturma işlevlerinin donanım destekli uygulamalarını İÇERMELİDİR.
- Kilit ekranı kimlik doğrulamasını güvenli donanımda YAPMALI ve yalnızca başarılı olduğunda kimlik doğrulamasına bağlı anahtarların kullanılmasına izin vermelidir. Yukarı yönlü Android Açık Kaynak Projesi, bu koşulu karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı'nı (HAL) sağlar.
Bir cihaz uygulaması daha önce başlatılmışsa ve bu cihaz, donanım destekli anahtar deposu gerektiren android.hardware.fingerprint
özelliğini beyan etmiyorsa donanım destekli anahtar deposu bulundurma şartından muaftır.
9.11.1. Güvenli Kilit Ekranı
Cihaz uygulamaları, kilit ekranının kilidini açmak için kimlik doğrulama yöntemlerini EKLEYEBİLİR veya DEĞİŞTİREBİLİR ancak aşağıdaki koşulları karşılamalıdır:
- Bilinen bir gizli anahtara dayalı kimlik doğrulama yöntemi, aşağıdaki tüm koşulları karşılamadığı sürece GÜVENLİ KİLİT EKRANI olarak DEĞERLENDİRİLMEMELİDİR:
- İzin verilen en kısa giriş uzunluğunun entropisi 10 bitten büyük OLMALIDIR.
- Olası tüm girişlerin maksimum entropisi 18 bitten büyük OLMALIDIR.
- AOSP'de uygulanan ve sağlanan mevcut kimlik doğrulama yöntemlerinden (PIN, desen, şifre) hiçbirini İÇERMEMELİDİR.
- Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını
PASSWORD_QUALITY_SOMETHING
'dan daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla ayarladığında devre dışı bırakılmalıdır .
- Fiziksel jetona veya konuma dayalı kimlik doğrulama yöntemi, aşağıdaki tüm koşulları karşılamadığı sürece güvenli kilit ekranı olarak DEĞİLDİR:
- Bilinen bir gizli anahtara dayalı olan ve güvenli kilit ekranı olarak değerlendirilme şartlarını karşılayan birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizmaya SAHİP OLMALIDIR.
- Devre dışı bırakılmalı ve yalnızca Device Policy Controller (DPC) uygulaması politikayı
PASSWORD_QUALITY_UNSPECIFIED
'den daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)
yöntemiyle veyaDevicePolicyManager.setPasswordQuality()
yöntemiyle ayarladığında ekranın kilidini açmak için birincil kimlik doğrulamasına izin vermelidir .
- Biyometrik kimlik doğrulama yöntemi, aşağıdaki tüm koşulları karşılamadığı sürece güvenli kilit ekranı olarak DEĞERLENDİRİLMEMELİDİR:
- Bilinen bir gizli anahtara dayalı olan ve güvenli kilit ekranı olarak değerlendirilme şartlarını karşılayan birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizmaya SAHİP OLMALIDIR.
- Devre dışı bırakılmalı ve yalnızca Device Policy Controller (DPC) uygulaması
DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_FINGERPRINT)
yöntemini çağırarak keguard özellik politikasını ayarladığında ekranın kilidini açmak için birincil kimlik doğrulamasına izin vermelidir. - 7.3.10 bölümünde açıklandığı gibi, parmak izi sensörü için gerekenden eşit veya daha güçlü bir yanlış kabul oranına sahip OLMALIDIR. Aksi takdirde devre dışı bırakılmalı ve yalnızca Device Policy Controller (DPC) uygulaması, şifre kalitesi politikasını
PASSWORD_QUALITY_BIOMETRIC_WEAK
'ten daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla ayarladığında birincil kimlik doğrulamanın ekranın kilidini açmasına izin vermelidir.
- Kimlik doğrulama yöntemi güvenli bir kilit ekranı olarak değerlendirilemiyorsa:
- Hem
KeyguardManager.isKeyguardSecure()
hem deKeyguardManager.isDeviceSecure()
yöntemleri içinfalse
değerini döndürmelidir. - Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını
PASSWORD_QUALITY_UNSPECIFIED
'dan daha kısıtlayıcı bir kalite sabitiyleDevicePolicyManager.setPasswordQuality()
yöntemi aracılığıyla ayarladığında devre dışı bırakılmalıdır . DevicePolicyManager.setPasswordExpirationTimeout()
tarafından ayarlanan şifre geçerlilik süresi zamanlayıcılarını SIFIRLAMAMALIDIR.- Uygulama
KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)
çağrısında bulunduysa anahtar depolarına erişimin kimliğini doğrulamamalıdır.
- Hem
- Kimlik doğrulama yöntemi, 7.3.10 numaralı bölümde açıklandığı şekilde parmak izi sensörleri için gerekenden daha yüksek yanlış kabul oranına sahip fiziksel bir jetona, konuma veya biyometriye dayanıyorsa:
DevicePolicyManager.setPasswordExpirationTimeout()
tarafından ayarlanan şifre geçerlilik süresi zamanlayıcılarını SIFIRLAMAMALIDIR.- Uygulama
KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)
çağrısında bulunduysa anahtar depolarına erişimi kimlik doğrulamaması GEREKİR.
9.12. Veri Silme
Cihazlar, kullanıcılara aşağıdakiler hariç tüm verilerin mantıksal ve fiziksel olarak silinmesine olanak tanıyan bir "Fabrika Verilerini Sıfırlama" işlemi gerçekleştirme mekanizması SUNMALIDIR:
- Sistem görüntüsü
- Sistem görüntüsünün gerektirdiği tüm işletim sistemi dosyaları
Kullanıcı tarafından oluşturulan tüm veriler silinmelidir. Bu, NIST SP800-88 gibi veri silmeyle ilgili ilgili endüstri standartlarını karşılamalıdır. Bu, 3.9 Cihaz Yönetimi bölümünde açıklanan wipeData() API'nin (Android Device Administration API'nin bir parçası) uygulanması için ZORUNLUDUR.
Cihazlar, mantıksal veri silme işlemi gerçekleştiren hızlı bir veri silme işlemi sağlayabilir.
9.13. Güvenli Önyükleme Modu
Android, kullanıcıların yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda önyükleme yapmalarını sağlayan bir mod sunar. "Güvenli Önyükleme Modu" olarak bilinen bu mod, kullanıcıya zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı sunar.
Android cihaz uygulamalarında Güvenli Önyükleme Modu'nun uygulanması ve aşağıdaki şartların karşılanması önemle ÖNERİLİR:
-
Cihaz uygulamalarında, kullanıcıya önyükleme menüsünden güvenli önyükleme moduna girme seçeneği sunulmalıdır. Bu seçeneğe, normal önyüklemeden farklı bir iş akışı üzerinden erişilebilir.
-
Cihaz uygulamalarında, kullanıcıya Güvenli Modda Başlatma moduna girme seçeneği sunulmalıdır. Bu seçenek, cihazda yüklü üçüncü taraf uygulamaları tarafından kesintiye uğramayacak şekilde sunulmalıdır. Üçüncü taraf uygulaması bir Cihaz Politikası Denetleyicisiyse ve
UserManager.DISALLOW_SAFE_BOOT
işaretini doğru olarak ayarladıysa bu durum geçerli değildir. -
Cihaz uygulamalarında, kullanıcıya güvenli modda üçüncü taraf uygulamalarını kaldırma olanağı ZORUNLUDIR.
9.14. Otomotiv Araç Sistemi İzolasyon
Android Automotive cihazların, CAN bus gibi araç ağları üzerinden mesaj gönderip almak için araç HAL'ini kullanarak kritik araç alt sistemleriyle veri alışverişi yapması beklenir. Android Automotive cihaz uygulamalarında, Android çerçevesi veya üçüncü taraf uygulamaları ile araç alt sistemleri arasında kötü amaçlı veya kasıtsız etkileşimi önlemek için Android çerçevesi katmanlarının altında güvenlik özellikleri UYGULANMALIDIR. Bu güvenlik özellikleri şunlardır:
- Android çerçevesi araç alt sistemlerinden gelen mesajları denetleme (ör. izin verilen mesaj türlerini ve mesaj kaynaklarını izin verilenler listesine ekleme).
- Android çerçevesi veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı gözetleyici. Bu sayede, araç ağını trafikle dolduran ve araç alt sistemlerinin çalışmamasına yol açabilecek kötü amaçlı yazılımlara karşı koruma sağlanır.
10. Yazılım Uyumluluğu Testi
Cihaz uygulamaları bu bölümde açıklanan tüm testleri ZORUNLU ŞEKİLDE geçmelidir.
Ancak hiçbir yazılım test paketinin her şeyi kapsamadığını unutmayın. Bu nedenle, cihaz uygulayıcılarının Android Açık Kaynak Projesi'nde bulunan Android referans ve tercih edilen uygulamasında mümkün olduğunca az sayıda değişiklik yapması ŞİDDETLE ÖNERİLİR. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara neden olan hataların ortaya çıkma riskini en aza indirir.
10.1. Compatibility Test Suite
Cihaz uygulamalarının, cihazdaki nihai gönderim yazılımını kullanarak Android Açık Kaynak Projesi'nde bulunan Android Uyumluluk Test Paketi'nden (CTS) geçmesi ZORUNLUDUR. Ayrıca cihaz uygulayıcıları, Android Açık Kaynak ağacındaki referans uygulamayı mümkün olduğunca kullanmalı ve CTS'de belirsizlik olduğunda ve referans kaynak kodunun bölümlerinin yeniden uygulandığı durumlarda uyumluluğu sağlamalıdır.
CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Her yazılım gibi CTS de hata içerebilir. CTS, bu Uyumluluk Tanımı'ndan bağımsız olarak sürümlendirilir ve Android 7.0 için CTS'nin birden fazla düzeltmesi yayınlanabilir. Cihaz uygulamaları, cihaz yazılımı tamamlandığı sırada mevcut olan en son CTS sürümünden GEÇMELİDİR.
10.2. CTS Doğrulayıcı
Cihaz uygulamaları, CTS Doğrulayıcı'da geçerli tüm durumları doğru şekilde yürütmelidir. CTS Doğrulayıcı, Uyumluluk Test Paketi'ne dahildir ve kameranın ve sensörlerin doğru çalışması gibi otomatik bir sistem tarafından test edilemeyecek işlevleri test etmek için bir operatör tarafından çalıştırılmak üzere tasarlanmıştır.
CTS Doğrulayıcı, isteğe bağlı olan bazı donanımlar da dahil olmak üzere birçok donanım türü için testler içerir. Cihaz uygulamalarının, sahip oldukları donanımla ilgili tüm testleri GEÇMESİ GEREKİR. Örneğin, bir cihazda ivmeölçer varsa CTS Doğrulayıcı'da ivmeölçer testini doğru şekilde yürütmesi GEREKİR. Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test durumları atlanabilir veya çıkarılabilir.
Her cihaz ve her derleme, yukarıda belirtildiği gibi CTS Doğrulayıcı'yı doğru şekilde çalıştırmalıdır. Ancak birçok derleme birbirine çok benzediğinden, cihaz uygulayıcılarının yalnızca önemsiz farklılıklar gösteren derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Daha açık belirtmek gerekirse, CTS Doğrulayıcı'yı yalnızca dahil edilen yerel ayarlar, marka vb. açısından geçen bir uygulamadan farklı olan cihaz uygulamaları CTS Doğrulayıcı testini EKSLEYEBİLİR.
11. Güncellenebilir Yazılımlar
Cihaz uygulamalarında, sistem yazılımının tamamını değiştirecek bir mekanizma BULUNMASI GEREKİR. Mekanizmanın "canlı" yükseltmeler yapması gerekmez. Yani cihazın yeniden başlatılması gerekebilir.
Cihazın önceden yüklenmiş yazılımının tamamını değiştirebildiği sürece herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:
- Yeniden başlatma yoluyla çevrimdışı güncellemeyle "Kablosuz (OTA)" indirme.
- Ana makine bilgisayardan USB üzerinden "bağlantılı" güncellemeler.
- Yeniden başlatma ve çıkarılabilir depolama alanındaki bir dosyadan güncelleme yoluyla "Çevrimdışı" güncellemeler.
Ancak cihaz uygulaması, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sınırsız veri bağlantısı desteği içeriyorsa yeniden başlatma yoluyla çevrimdışı güncellemeyle OTA indirmelerini desteklemelidir.
Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri desteklemelidir. Yani güncelleme mekanizması, uygulamanın gizli verilerini ve paylaşılan verilerini muhafaza ETMELIDİR. Yukarı akış Android yazılımının bu koşulu karşılayan bir güncelleme mekanizması içerdiğini unutmayın.
Android 7.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 ikili olarak beklenen sonuçla aynı olduğunu doğrulamayı DESTEKLEMELİDİR. Android 5.1'den beri eklenen, yayın öncesi Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu koşulu karşılar.
Bir cihaz uygulamasında, cihaz kullanıma sunulduktan sonra ancak Android Uyumluluk Ekibi ile görüşülerek belirlenen makul ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa cihaz uygulayıcısı, hatayı az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesiyle DÜZELTMEKTE ZORUNLUDUR.
Android, cihaz sahibi uygulamasının (varsa) sistem güncellemelerinin yüklenmesini kontrol etmesine olanak tanıyan özellikler içerir. Bunu kolaylaştırmak için android.software.device_admin bildiren cihazların sistem güncelleme alt sistemi, SystemUpdatePolicy sınıfında açıklanan davranışı UYGULAMALIDIR.
12. Doküman Değişiklik Günlüğü
Bu sürümde Uyumluluk Tanımlama Belgesi'nde yapılan değişikliklerin özeti için:
Kişiler bölümlerindeki değişikliklerin özeti:
- 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 İlgili İpuçları
Değişiklikler aşağıdaki şekilde işaretlenir:
-
CDD
Uyumluluk şartlarında önemli değişiklikler. -
Dokümanlar
Kozmetik veya derlemeyle ilgili değişiklikler.
En iyi görüntüleme için pretty=full
ve no-merges
URL parametrelerini değişiklik günlüğü URL'lerinize ekleyin.
13. Bize Ulaşın
Android uyumluluk forumuna katılarak açıklama isteyebilir veya dokümanda yer almadığını düşündüğünüz sorunları gündeme getirebilirsiniz.