İçindekiler
3.2.3.1. Temel Uygulama Amaçları
3.2.3.5. Varsayılan Uygulama Ayarları
3.3.1. Uygulama İkili Arayüzleri
3.3.2. 32 bit ARM Yerel Kod Uyumluluğu
3.4.1. Web Görünümü 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 İlham Sahneleri)
3.9.1.1 Cihaz sahibi temel hazırlığı
3.9.1.2 Yönetilen profil temel hazırlığı
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
5.4.2. Ses Tanıma İçin Video Kayıt
5.4.3. Oynatmanın Yeniden Yönlendirilmesi için Fotoğraf Çekme
5.5.3. Ses Çıkışı Ses Seviyesi
5.9. Müzik Enstrümanı Dijital Arayüzü (MIDI)
5:11. İşlenmemiş İçerikleri Yakalama
6. Geliştirici Araçları ve Seçenek Uyumluluğu
7.1.2. Görüntülü Reklam Ağı Metrikleri
7.2.2. Dokunmatik Olmayan Gezinme
7.2.4. Dokunmatik Ekranlı Giriş
7.3.9. Yüksek Kaliteli Sensörler
7.3.11. Yalnızca Android Automotive sensörleri
7.4.1.1. Numara Engelleme Uyumluluğu
7.4.4. Near Field Communication
7.4.6. Senkronizasyon Ayarları
7.6.1. Minimum Bellek ve Depolama
7.6.2. Uygulama Paylaşılan Depolama Alanı
7.6.3. Kabul Edilebilir Depolama Alanı
7.8.2.1. Analog Ses Bağlantı Noktaları
7.9.2. Sanal Gerçeklik Yüksek Performans
8.1. Kullanıcı Deneyiminde Tutarlılık
1. Giriş
Bu dokümanda, cihazların Android 7.0 ile uyumlu olması için karşılanması gereken şartlar açıklanmaktadır.
"ZORUNLU", "ZORUNLU OLMAMALIDIR", "ZORUNLU", "YAPILMAYACAK", "YAPILMAYACAK", "ÖNERİLMEZ", "ÖNERİLİR" ve "İSTEĞE BAĞLI" ifadeleri, RFC2119'da tanımlanan IETF standardına göre yapılır.
Bu belgede belirtildiği gibi, "cihaz uygulayıcı" veya "uygulamacı", Android 7.0 çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluşu ifade eder. “Cihaz uygulaması” veya “uygulama” bu şekilde geliştirilmiş donanım/yazılım çözümüdür.
Cihaz uygulamalarının Android 7.0 ile uyumlu olarak kabul edilmesi için bu Uyumluluk Tanımı'nda belirtilen gereksinimleri (referans yoluyla dahil edilen tüm dokümanlar dahil) karşılaması ZORUNLUDUR.
Bu tanımın veya bölüm 10'da açıklanan yazılım testlerinin sessiz, muğlak ya da eksik olduğu durumlarda, mevcut uygulamalarla uyumluluğu sağlamak cihazı uygulayıcının sorumluluğundadır.
Bu nedenle, Android'in hem referans hem de tercih edilen uygulaması Android Açık Kaynak Projesi'dir. Cihaz uygulayıcılarının, uygulamalarını mümkün olan en geniş kapsamda Android Açık Kaynak Projesi'nde bulunan "yukarı akış" kaynak koduna dayandırması ÖNEMLE ÖNERİLİR. Bazı bileşenlerin alternatif uygulamalarla değiştirilebilir, ancak yazılım testlerini geçmek önemli ölçüde zorlaşacağından, bu uygulamaya uymamanız ÖNEMLE ÖNERİLİR. Uyumluluk Test Paketi ve sonrasında, standart Android uygulamasıyla tam davranış uyumluluğu sağlamak, uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen değişikliklerinin ve değişikliklerinin bu belgede açıkça yasaklandığını unutmayın.
Bu belgede bağlantı verilen kaynakların çoğu, doğrudan veya dolaylı olarak Android SDK'sından türetilmiştir ve söz konusu SDK'nın dokümanlarındaki bilgilerle işlevsel olarak aynı olacaktır. Bu Uyumluluk Tanımı veya Uyumluluk Test Paketi'nin, SDK dokümanlarını kabul etmediği durumlarda, SDK dokümanları güvenilir olarak kabul edilir. Bu belgedeki bağlantılı kaynaklarda sağlanan tüm teknik ayrıntılar, dahil etme işlemiyle bu Uyumluluk Tanımı'nın bir parçası olarak değerlendirilir.
2. Cihaz Türleri
Android Açık Kaynak Projesi, çeşitli cihaz türlerinin ve form faktörlerinin uygulanmasında kullanılmış olsa da mimari ve uyumluluk gereksinimlerinin birçok yönü avuç içi cihazlar için optimize edilmiştir. Android Açık Kaynak Projesi, Android 5.0'dan başlayarak bu bölümde açıklanan şekilde daha geniş bir cihaz türü yelpazesini kapsamayı amaçlamaktadır.
Android Avuç İçi Cihaz, genellikle mp3 çalar, telefon ve tablet gibi cihazın elde tutulmasıyla kullanılan Android cihaz uygulamalarını ifade eder. Android Avuç içi cihaz uygulamaları:
- Cihazda yerleşik bir dokunmatik ekran OLMALIDIR.
- Pil gibi hareketlilik sağlayan bir güç kaynağına sahip OLMALIDIR.
Android Televizyon cihazı yaklaşık üç metre uzakta oturan kullanıcılar için dijital medya, film, oyun, uygulama ve/veya canlı TV tüketimine yönelik bir eğlence arayüzü ("arkaya yaslanıp" kullanıcı arayüzü) olan bir Android cihaz uygulamasını ifade eder. Android Televizyon cihazları:
- Yerleşik bir ekranın olması VEYA VGA, HDMI ya da görüntü için kablosuz bağlantı noktası gibi bir video çıkış bağlantı noktası içermesi ZORUNLUDUR.
- android.software.leanback ve android.hardware.type.television özelliklerinin bildirilmesi ZORUNLUDUR.
Android Watch cihaz, vücuda (belki bileğe) ve aşağıdaki durumlarda kullanılmak üzere tasarlanmış Android cihaz uygulamasını ifade eder:
- Fiziksel köşegen uzunluğu 1,1 ile 2,5 inç arasında olan bir ekranın olması ZORUNLUDUR.
- android.hardware.type.watch özelliğinin beyan edilmesi ZORUNLUDUR.
- uiMode = UI_MODE_TYPE_Watch öğesinin desteklenmesi ZORUNLUDUR.
Android Automotive uygulaması, sistem ve/veya bilgi-eğlence işlevinin bir kısmı veya tamamı için işletim sistemi olarak Android çalıştıran araç ana birimini ifade eder. Android Automotive uygulamaları:
- Fiziksel köşegen uzunluğu 6 inç veya daha fazla olan bir ekran olması ZORUNLUDUR.
- android.hardware.type.automotive özelliğinin bildirilmesi ZORUNLUDUR.
- uiMode = UI_MODE_TYPE_CAR özelliğini DESTEKLEMELİDİR.
- Android Automotive uygulamalarının,
android.car.*
ad alanındaki tüm herkese açık API'leri desteklemesi ZORUNLUDUR.
Yukarıdaki cihaz türlerinden hiçbirine uymayan tüm Android cihaz uygulamalarının, Android 7.0 ile uyumlu olmak için bu belgedeki tüm şartları karşılaması ZORUNLUDUR. Ancak söz konusu gerekliliğin, yalnızca yukarıda belirtilen belirli bir Android cihaz türü için geçerli olduğu açık bir şekilde açıklanmamıştır.
2.1 Cihaz Yapılandırmaları
Burada, cihaz türüne göre donanım yapılandırmasındaki önemli farklılıkların özeti verilmiştir. (Boş hücreler "MAY" anlamına gelir). Bu tabloda tüm yapılandırmalar ele alınmamıştır; Daha fazla ayrıntı 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. Dokunmatik Olmayan Gezinme | ZORUNLU | ||||
Dokunmatik ekran | 7.2.4. Dokunmatik ekran girişi | ZORUNLU | ZORUNLU | YAPILMASI GEREKENLER | |||
Mikrofon | 7.8.1. Mikrofon | ZORUNLU | YAPILMASI GEREKENLER | ZORUNLU | ZORUNLU | YAPILMASI GEREKENLER | |
Sensörler | İvme ölçer | 7.3.1 İvme ölçer | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | ||
GPS | 7.3.3. GPS | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | ||||
Bağlantı | Kablosuz bağlantı | 7.4.2. IEEE 802.11 | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | |
Kablosuz Doğrudan Bağlantı | 7.4.2.1. Kablosuz Doğrudan Bağlantı | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | |||
Bluetooth | 7.4.3. Bluetooth | YAPILMASI GEREKENLER | ZORUNLU | ZORUNLU | ZORUNLU | YAPILMASI GEREKENLER | |
Bluetooth Düşük Enerji | 7.4.3. Bluetooth | YAPILMASI GEREKENLER | ZORUNLU | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | |
Hücresel radyo | 7.4.5. Minimum Ağ Kapasitesi | YAPILMASI GEREKENLER | |||||
USB çevre birimi/ana makine modu | 7.7. USB | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | YAPILMASI GEREKENLER | |||
Çıkış | Hoparlör ve/veya Ses çıkış bağlantı noktaları | 7.8.2. Ses Çıkışı | ZORUNLU | ZORUNLU | ZORUNLU | ZORUNLU |
3. Yazılım
3.1. Yönetilen API Uyumluluğu
Yönetilen Dalvik bayt kodu yürütme ortamı, Android uygulamalarının birincil aracıdır. Android Uygulama Programlama Arayüzü (API), yönetilen çalışma zamanı ortamında çalışan uygulamalara sunulan Android platformu arayüzleridir. Cihaz uygulamalarının, Android SDK tarafından kullanıma sunulan belgelenmiş tüm API'lerin veya yayın öncesi Android kaynak kodunda "@SystemApi" işaretçisiyle dekore edilmiş herhangi bir API'nin, belgelenen tüm davranışları da dahil olmak üzere eksiksiz uygulamaları GEREKİR.
Cihaz uygulamaları, TestApi ek açıklaması (@TestApi) ile işaretlenen tüm sınıfları, yöntemleri ve ilişkili öğeleri desteklemeli/korumalıdır.
Cihaz uygulamaları, bu Uyumluluk Tanımı'nda özel olarak izin verilen durumlar dışında yönetilen API'leri Atlatmamalı, API arayüzlerini veya imzalarını değiştirmemeli, belirtilen davranıştan sapmamalı ve işlem yapmama içermemelidir.
Bu Uyumluluk Tanımı, Android'in API'ler içerdiği bazı donanım türlerinin cihaz uygulamaları tarafından atlanmasına izin verir. Bu gibi durumlarda, API'lerin hâlâ mevcut olması ve makul bir şekilde davranması ZORUNLUDUR. Bu senaryoya ilişkin özel şartlar için 7. bölüme bakın.
3.1.1. Android Uzantıları
Android, aynı API düzeyinde sürümü korurken yönetilen API'leri genişletme desteği sunar. Android cihaz uygulamalarının AOSP uygulamasının hem ExtShared
paylaşılan kitaplığının hem de ExtServices
hizmetlerinin her API düzeyi için izin verilen minimum sürümden daha yeni veya bu sürüme eşit olan sürümlerine sahip olarak önceden yüklenmesi ZORUNLUDUR. Örneğin, API düzeyi 24 çalıştıran Android 7.0 cihaz uygulamalarının en az sürüm 1'i içermesi ZORUNLUDUR.
3.2. Esnek API Uyumluluğu
Android, bölüm 3.1'deki yönetilen API'lere ek olarak, Android uygulamalarının uygulama derleme zamanında zorunlu kılınamayan niyetler, izinler ve benzer yönleri gibi çalışma zamanına özel önemli bir "soft" API'yi de içerir.
3.2.1. İzinler
Cihazı uygulayıcıların, İzin referansı sayfasında belgelendiği gibi tüm izin sabit değerlerini desteklemeli ve uygulamalıdır. 9. bölümde Android güvenlik modeliyle ilgili ek gereksinimlerin listelendiğini unutmayın.
3.2.2. Derleme Parametreleri
Android API'leri, android.os.Build sınıfında geçerli cihazı tanımlamak için kullanılan bazı sabit değerler içerir. Cihaz uygulamaları genelinde tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının uyması gereken bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre | Ayrıntılar |
---|---|
SÜRÜM.YAYIN | Yürütülen Android sisteminin, okunabilir biçimdeki sürümü. Bu alanda 7.0'da tanımlanan dize değerlerinden biri OLMALIDIR. |
VERSION.SDK | Şu anda yürütülen Android sisteminin, üçüncü taraf uygulama kodunun erişebileceği bir biçimdeki sürümü. Android 7.0 için bu alanda 7.0_INT tam sayı değerinin olması ZORUNLUDUR. |
VERSION.SDK_INT | Şu anda yürütülen Android sisteminin, üçüncü taraf uygulama kodunun erişebileceği bir biçimdeki sürümü. Android 7.0 için bu alanda 7.0_INT tam sayı değeri ZORUNLUDUR. |
SÜRÜM.EK | Cihaz uygulayıcısı tarafından seçilen ve o anda yürütülen Android sisteminin özel derlemesini insan tarafından okunabilir biçimde tanımlayan bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için YENİDEN KULLANILMAMALIDIR. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak kontrolü değişiklik tanımlayıcısının kullanıldığını belirtmektir. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur. |
MASA | Cihaz uygulayıcısı tarafından seçilen, cihaz tarafından kullanılan belirli dahili donanımı tanımlayan, kullanıcıların okuyabileceği bir değer. Bu alanın olası bir kullanımı, cihaza güç veren kartın özel düzeltmesini belirtmektir. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR. |
MARKA | Cihazla ilişkilendirilmiş ve son kullanıcılar tarafından bilinen marka adını yansıtan bir değerdir. İnsanlar tarafından okunabilir bir biçimde olmalı ve cihazın üreticisini veya cihazın pazarlandığı şirket markasını temsil ETMELİDİR. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR. |
DESTEKLENMİŞ_ABIS | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
SUPPORTED_32_BİT_ABIS | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
SUPPORTED_64_BİT_ABIS | Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
CPU_ABI | Yerel kodun talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
CPU_ABI2 | Yerel kodun ikinci talimat grubunun adı (CPU türü + ABI kuralı). Bkz. bölüm 3.3. Yerel API Uyumluluğu. |
CİHAZ | Cihaz uygulayıcısı tarafından seçilen, donanım özelliklerinin yapılandırmasını ve cihazın endüstriyel tasarımını tanımlayan geliştirme adını veya kod adını içeren bir değer. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR. Bu cihaz adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
PARÇA YAZILIMI |
Bu derlemeyi benzersiz şekilde tanımlayan bir dize. İnsanlar tarafından makul ölçüde okunabilir olmalıdır. Aşağıdaki şablona uygun olması ZORUNLUDUR:
$(MARKA)/$(ÇARPIM)/ Örnek:
acme/ürünüm/ Parmak izi boşluk karakterleri İÇERMEMELİDİR. Yukarıdaki şablona dahil edilen diğer alanlarda boşluk karakterleri varsa bunların, derleme parmak izinde alt çizgi ("_") karakteri gibi başka bir karakterle değiştirilmesi ZORUNLUDUR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir olmalıdır. |
DONANIM | Donanımın adı (çekirdek komut satırından veya /proc'dan). İnsanlar tarafından makul ölçüde okunabilir olmalıdır. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR. |
BARINDIRMA | Derlemenin temelini oluşturan ana makineyi, kullanıcılar tarafından okunabilir biçimde benzersiz bir şekilde tanımlayan bir dize. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur. |
Kimlik | Cihaz uygulayıcısı tarafından belirli bir sürüme referansta bulunmak için seçilen, okunabilir biçimdeki bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemelerini ayırt edebilmesi için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9._-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR. |
ÜRETİCİ | Ürünün Özgün Donanım Üreticisi'nin (OEM) ticari adı. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur. |
MODEL | Cihaz uygulayıcısı tarafından seçilen ve son kullanıcı tarafından bilinen cihaz adını içeren bir değer. Bu ad, cihazın son kullanıcılara pazarlanmasında ve satışında kullanılan adla aynı olmalıdır. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur. |
ÜRÜN | Cihaz uygulayıcısı tarafından seçilen, belirli bir ürünün (SKU) geliştirme adını veya kod adını içeren, aynı marka içinde benzersiz olması ZORUNLUDUR. Kullanıcılar tarafından okunabilir olması ZORUNLUDUR, ancak son kullanıcıların görmesi amaçlanmamıştır. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^[a-zA-Z0-9_-]+$” normal ifadesiyle eşleşmesi ZORUNLUDUR. Bu ürün adı, ürünün kullanım ömrü boyunca DEĞİŞMEMELİDİR. |
SERİ | Aynı MODEL ve ÜRETİCİYE sahip cihazlarda kullanılabilir ve benzersiz olması GEREKEN donanım seri numarası. Bu alanın değerinin 7 bit ASCII olarak kodlanabilir olması ve “^([a-zA-Z0-9]{6,20})$” normal ifadesiyle eşleşmesi ZORUNLUDUR. |
ETİKETLER | Derlemeyi daha fazla ayırt eden, cihaz uygulayıcısı tarafından seçilen etiketlerin virgülle ayrılmış bir listesi. Bu alanın, üç tipik Android platform imzalama yapılandırmasına karşılık gelen değerlerden birinin bulunması ZORUNLUDUR: sürüm anahtarları, geliştirme anahtarları, test anahtarları. |
SÜRE | Derlemenin gerçekleştiği zaman damgasını temsil eden değer. |
TÜR | Cihaz uygulayıcısı tarafından seçilen ve derlemenin çalışma zamanı yapılandırmasını belirten değer. Bu alanda, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri ZORUNLUDUR: user, userdebug veya eng. |
KULLANICI | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı ya da kullanıcı kimliği. Boş veya boş dize ("") OLMAMALIDIR. Yalnızca bu alanın biçimiyle ilgili herhangi bir şart yoktur. |
SECURITY_PATCH | Bir derlemenin güvenlik yaması seviyesini gösteren değer. Yapının, belirlenen Android Kamu Güvenliği Bülteni'nde açıklanan sorunlardan herhangi birine karşı herhangi bir güvenlik açığına karşı herhangi bir güvenlik açığı olmadığının belirtilmesi ZORUNLUDUR. Bu değerin [YYYY-AA-GG] biçiminde olması ve Android Kamu Güvenliği Bülteni'nde veya Android Güvenlik Uyarısı'nda (örneğin, "2015-11-01") belgelenen tanımlı bir dizeyle eşleşmesi gerekir. |
TABAN_İşletim Sistemi | Android Kamu Güvenliği Bülteni'nde sağlanan yamalar haricinde, derlemenin FINGERPrint parametresini temsil eden, aksi takdirde bu derlemeyle aynı olan değer. Doğru değeri Bildirmelidir. Böyle bir derleme yoksa boş bir dize ("") bildirin. |
3.2.3. Amaç Uyumluluğu
3.2.3.1. Temel Uygulama Amaçları
Android amaçları, uygulama bileşenlerinin diğer Android bileşenlerinden işlevsellik istemesine izin verir. Android yukarı akış projesi, temel Android uygulamaları olarak kabul edilen ve yaygın işlemleri gerçekleştirmek için çeşitli intent kalıpları uygulayan uygulamaların bir listesini içerir. Temel Android uygulamaları şunlardır:
- Masa Saati
- Tarayıcı
- Takvim
- Kişiler
- Galeri
- Genel Arama
- Roketatar
- Müzik
- Ayarlar
Cihaz uygulamalarının, uygun şekilde temel Android uygulamalarını veya bu temel Android uygulamalarının tüm Etkinlik ya da Hizmet bileşenleri tarafından tanımlanan, üstü kapalı veya açık bir şekilde android:exported
özelliği aracılığıyla tanımladığı aynı intent kalıplarını uygulayan bir bileşeni içermesi ZORUNLUDUR.
3.2.3.2. Amaç Çözümü
Android genişletilebilir bir platform olduğundan, cihaz uygulamalarının üçüncü taraf uygulamaları tarafından bölüm 3.2.3.1'de başvurulan her intent kalıbının geçersiz kılınmasına izin verilmesi ZORUNLUDUR. Yukarı akış Android açık kaynak uygulaması varsayılan olarak buna izin verir. kullananların, sistem uygulamalarına özel ayrıcalıklar EKLEMEMELİDİR. ya da üçüncü taraf uygulamaların bu kalıplara bağlanmasını ve bunların kontrolünü üstlenmesini önleyebilirsiniz. Bu yasak, kullanıcının tümü aynı amaç kalıbını işleyen birden çok uygulama arasından seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını özellikle kapsar ancak bununla sınırlı değildir.
Cihaz uygulamalarında, kullanıcıların amaçlar için varsayılan etkinliği değiştirmeleri için bir kullanıcı arayüzü SAĞLANMALIDIR.
Bununla birlikte, varsayılan etkinlik veri URI'si için daha belirli bir özellik sağladığında, cihaz uygulamaları belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten intent filtresi kalıbı, tarayıcının "http://" için temel intent kalıbından daha spesifiktir.
Android, üçüncü taraf uygulamalarının belirli web URI amacı türleri için yetkili bir varsayılan uygulama bağlama davranışı beyan etmesine de olanak tanıyan bir mekanizmaya sahiptir. Bir uygulamanın intent filtresi modellerinde bu tür yetkili bildirimler tanımlandığında cihaz uygulamaları:
- Yukarı akış Android Açık Kaynak Projesi'nde Paket Yöneticisi tarafından uygulanan ve Dijital Öğe Bağlantıları spesifikasyonunda tanımlanan doğrulama adımlarını gerçekleştirerek tüm intent filtrelerini doğrulamaya çalışmalısınız.
- Uygulamanın yüklenmesi sırasında intent filtrelerini doğrulamaya çalışmalı ve başarıyla doğrulanan tüm UIR intent filtrelerini UIR'leri için varsayılan uygulama işleyici olarak ayarlamalıdır.
- Belirli URI intent filtreleri, başarılı bir şekilde doğrulanır ancak diğer aday URI filtreleri doğrulamada başarısız olursa URI'ları için varsayılan uygulama işleyiciler olarak AYARLANABİLİR. Bir cihaz uygulaması bunu yapıyorsa kullanıcıya ayarlar menüsünde her URI için uygun kalıp geçersiz kılmalarının sağlanması ZORUNLUDUR.
- Kullanıcıya, Ayarlar'da uygulama bazında Uygulama Bağlantıları denetimlerinin aşağıdaki gibi sağlanması ZORUNLUDUR:
- Kullanıcının, bir uygulamanın varsayılan uygulama bağlantıları davranışını bütün olarak geçersiz kabilmesi ZORUNLUDUR: Her zaman açık, her zaman sor veya hiçbir zaman açma. Bu davranış, tüm aday URI amaç filtreleri için eşit şekilde uygulanmalıdır.
- Kullanıcının aday URI intent filtrelerinin listesini görmesi ZORUNLUDUR.
- Cihaz uygulaması, kullanıcıya, amaca göre filtre temelinde, başarıyla doğrulanan belirli aday URI amaç filtrelerini geçersiz kılma imkanı SAĞLAYABİLİR.
- Cihaz uygulaması, bazı aday URI amaç filtrelerinin doğrulamada başarılı olmasına izin verirken bazıları başarısız olabiliyorsa cihaz uygulamasının, kullanıcılara belirli aday URI amaç filtrelerini görüntüleme ve geçersiz kılma imkanı ZORUNLUDUR.
3.2.3.3. Niyet Ad Alanları
Cihaz uygulamaları, Android'de ACTION, CATEGORY veya başka bir anahtar dizesini kullanan yeni amaçları veya yayın amacı kalıplarını dikkate alan hiçbir Android bileşeni İÇERMEMELİDİR. veya com.android. ad alanını kullanır. Cihaz uygulamaları, başka bir kuruluşa ait paket alanında ACTION, CATEGORY veya başka bir anahtar dizesini kullanan yeni amaçları veya yayın amacı kalıplarını dikkate alan Android bileşenleri İÇERMEMELİDİR. Cihaz uygulamaları, bölüm 3.2.3.1'de listelenen temel uygulamalar tarafından kullanılan intent kalıplarından hiçbirini DEĞİŞTİRMEMELİ veya genişletmemelidir. Cihaz uygulamaları, kendi kuruluşları ile açık ve bariz bir şekilde ilişkilendirilmiş ad alanlarını kullanan intent kalıpları İÇEREBİLİR. Bu yasak, bölüm 3.6'da Java dili sınıfları için belirtilen yasaka benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikleri bildirmek üzere belirli amaçları yayınlamak için platformu kullanır. Android uyumlu cihazlar, uygun sistem etkinliklerine yanıt olarak genel yayın amaçlarını YAYINLAMALIDIR. Yayın amaçları, SDK dokümanlarında açıklanmaktadır.
3.2.3.5. Varsayılan Uygulama Ayarları
Android'de, kullanıcıların ana ekran veya SMS gibi varsayılan uygulamalarını kolayca seçebilmelerini sağlayan ayarlar bulunur. Anlamlı olduğu durumlarda, cihaz uygulamalarının benzer bir ayarlar menüsü sağlaması ve aşağıdaki SDK dokümanlarında açıklanan amaç filtreleme kalıbı ve API yöntemleriyle uyumlu olması ZORUNLUDUR.
Cihaz uygulamaları:
- Cihaz uygulaması android.software.home_screen bildiriyorsa Ana Ekran için varsayılan uygulama ayarları menüsü göstermek üzere android.settings.HOME_SETTINGS amacı dikkate alınmalıdır.
- Cihaz uygulaması android.hardware.telephony değerini bildiriyorsa, varsayılan SMS uygulamasını değiştirmeye yönelik bir iletişim kutusu göstermek için android.provider.Telephony.ACTION_CHANGE_DEFAULT niyetini çağıracak bir ayarlar menüsü sağlanması ZORUNLUDUR.
- Cihaz uygulaması android.hardware.nfc.hce değerini bildiriyorsa Dokundur ve Öde için varsayılan uygulama ayarları menüsü göstermek için android.settings.NFC_PAYMENT_SETTINGS amacına uygun hareket edilmelidir.
- Cihaz uygulaması
android.hardware.telephony
değerini bildiriyorsa, 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 amacı dikkate alınmalıdır .
3.3. Yerel API Uyumluluğu
Yerel kod uyumluluğu zordur. Bu nedenle, cihaz uygulayıcılarına yukarı akış Android Açık Kaynak Projesi'nde bulunan aşağıdaki kitaplıkların uygulamalarını kullanmaları ÖNERİLİR.
3.3.1. Uygulama İkili Arabirimleri
Yönetilen Dalvik bayt kodu, uygulamanın .apk dosyasında sağlanan yerel kodu, uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak çağırabilir. Yerel kod temel işlemci teknolojisine büyük ölçüde bağlı olduğundan Android, Android NDK'da bir dizi Uygulama İkili Arabirimi'ni (ABI'ler) tanımlar. Cihaz uygulamalarının, tanımlı bir veya daha fazla ABI ile uyumlu olması ve aşağıda açıklandığı gibi, Android NDK ile uyumluluk sağlaması ZORUNLUDUR.
Cihaz uygulaması, Android ABI desteği içeriyorsa:
- Standart Java Yerel Arayüzü (JNI) semantiği kullanılarak yerel koda çağrı yapmak için yönetilen ortamda kod çalıştırma desteğinin bulunması ZORUNLUDUR.
- Aşağıdaki listede yer alan gerekli her kitaplıkla kaynak uyumlu (ör. başlıkla uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR.
- Herhangi bir 64 bit ABI destekleniyorsa, eşdeğer 32 bit ABI'nın desteklenmesi ZORUNLUDUR.
- Cihazın desteklediği yerel Uygulama İkili Arabirimi'ni (ABI) android.os.Build.SUPPORTED_ABIS, android.os.Build.SUPPORTED_32_BIT_ABIS ve android.os.Build.SUPPORTED_64_BIT_ABIS parametreleriyle doğru bir şekilde, her biri en çok tercih edilenden en az tercih edilene doğru sıralanmış ABI'lerin virgülle ayrılmış bir listesini kullanarak doğru bir şekilde raporlanması ZORUNLUDUR.
- Yukarıdaki parametreler aracılığıyla yalnızca Android NDK ABI Yönetimi dokümanlarının en son sürümünde belgelenen ve açıklanan ABI'lerin raporlanması ve Gelişmiş SIMD (NEON olarak da bilinir) uzantısı için destek GEREKLİDİR.
- Yukarı akış Android Açık Kaynak Projesi'nde bulunan kaynak kodu ve başlık dosyaları kullanılarak oluşturulmalıdır
Android NDK'nın gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın. Cihaz uygulaması mevcut bir önceden tanımlanmış ABI ile uyumlu değilse herhangi bir ABI için destek BildirMEMELİDİR.
Yerel kod içeren uygulamalarda aşağıdaki yerel kod API'lerinin kullanılabilmesi ZORUNLUDUR:
- libandroid.so (yerel Android etkinlik desteği)
- libc (C kitaplığı)
- libkamera2ndk.so
- libdl (dinamik bağlayıcı)
- libEGL.so (yerel OpenGL yüzey yönetimi)
- libGLESv1_CM.so (OpenGL ES 1.x)
- libGLESv2.so (OpenGL ES 2.0)
- libGLESv3.so (OpenGL ES 3.x)
- libicui18n.so
- libicuuc.so
- libjnigraphics.so
- liblog (Android günlük kaydı)
- libmediandk.so (yerel medya API'leri desteği)
- libm (matematik kitaplığı)
- libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
- libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
- libRS.so
- libstdc++ (C++ için minimum destek)
- libvulkan.so (Vulkan)
- libz (Zlib sıkıştırma)
- JNI arayüzü
- Aşağıda açıklandığı gibi OpenGL için destek
Yukarıda listelenen yerel kitaplıklar için cihaz uygulaması, herkese açık işlevleri EKLEMEMELİ veya KALDIRMAMALIDIR.
Yukarıda listelenmeyen ancak sistem kitaplıkları ayrıldığından ve API düzeyi 24 veya üstünü hedefleyen üçüncü taraf uygulamalarına SUNULMAYACAK olduğu için AOSP'de uygulanıp sağlanan yerel kitaplıklar.
Cihaz uygulamaları AOSP olmayan kitaplıklar ekleyebilir ve bunları doğrudan üçüncü taraf uygulamalarına API olarak sunabilir, ancak ek kitaplıklar /vendor/lib
veya /vendor/lib64
içinde OLMALI ve /vendor/etc/public.libraries.txt
içinde LİSTELENMELİDİR .
Cihaz uygulamalarının libGLESv3.so'yu içermesi ZORUNLUDUR. Buna karşılık, android-24 NDK sürümünde tanımlanan şekilde tüm OpenGL ES 3.1 ve Android Extension Pack işlev sembollerini dışa aktarmak ZORUNLUDUR. Tüm simgelerin mevcut olması gerekse de, yalnızca OpenGL ES sürümleri ve cihaz tarafından gerçekten desteklenen uzantılar için karşılık gelen 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. Cihaz uygulamaları, Vulkan API'leri desteği dahil olmasa bile aşağıdaki şartları yerine getirmelidir:
- Her zaman , temel Vulkan 1.0 API'sinin yanı sıra
VK_KHR_surface
,VK_KHR_android_surface
veVK_KHR_swapchain
uzantılarının işlev simgelerini dışa aktaranlibvulkan.so
adında bir yerel kitaplık ZORUNLUDUR.
Cihaz uygulamaları (Vulkan API'leri desteği dahilse):
vkEnumeratePhysicalDevices
aramasıyla bir veya daha fazlaVkPhysicalDevices
bildirilmesi ZORUNLUDUR.- Numaralanmış her
VkPhysicalDevices
, Vulkan 1.0 API'sini tam olarak uygulamalıdır. - Doğru
PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL
vePackageManager#FEATURE_VULKAN_HARDWARE_VERSION
özellik bayraklarının Bildirilmesi ZORUNLUDUR. - Uygulama paketinin yerel kitaplık dizinindeki
libVkLayer*.so
adlı yerel kitaplıklarda bulunan katmanların,libvulkan.so
içindekivkEnumerateInstanceLayerProperties
vevkEnumerateDeviceLayerProperties
işlevleriyle numaralandırılması ZORUNLUDUR - Uygulama
android:debuggable=”true”
özelliğine sahip olmadığı sürece, uygulama paketinin dışındaki kitaplıklar tarafından sağlanan katmanları Numaralandırmamalı veya Vulkan API'yi izlemek ya da ona müdahale etmek için başka yöntemler SUNMAMALIDIR.
Cihaz uygulamaları (Vulkan API desteği dahil değilse):
vkEnumeratePhysicalDevices
aramasında 0VkPhysicalDevices
durumu bildirilmelidir.PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL
vePackageManager#FEATURE_VULKAN_HARDWARE_VERSION
Vulkan özellik bayraklarından hiçbiri BELİRTİLMEMELİDİR.
3.3.2. 32 bit ARM Yerel Kod Uyumluluğu
ARMv8 mimarisi, mevcut yerel kodda kullanılan bazı işlemler dahil olmak üzere çeşitli CPU işlemlerini kullanımdan kaldırmıştır. 64 bit ARM cihazlarda, aşağıdaki desteği sonlandırılmış işlemlerin, yerel CPU desteği veya yazılım emülasyonu aracılığıyla 32 bit yerel ARM kodu tarafından kullanılabilmesi ZORUNLUDUR:
- SWP ve SWPB talimatları
- SETEND talimatı
- CP15ISB, CP15DSB ve CP15DMB bariyer işlemleri
Android NDK'nın eski sürümleri, 32 bit ARM yerel kodundan CPU özelliklerini keşfetmek için /proc/cpuinfo yönergesini kullanıyordu. Cihazların, bu NDK kullanılarak oluşturulan uygulamalarla uyumluluk için 32 bit ARM uygulamaları tarafından okunduğunda /proc/cpuinfo içinde aşağıdaki satırları içermesi ZORUNLUDUR:
- "Özellikler: " ve ardından cihaz tarafından desteklenen isteğe bağlı ARMv7 CPU özelliklerinin listesi.
- "CPU mimarisi: " ve ardından cihazın desteklenen en yüksek ARM mimarisini açıklayan bir tam sayı (ör. "8" (ARMv8 cihazlar için).
Bu şartlar yalnızca /proc/cpuinfo kodunun 32 bit ARM uygulamaları tarafından okunduğu durumlarda geçerlidir. Cihazlar, 64 bit ARM veya ARM olmayan uygulamalar tarafından okunurken /proc/cpuinfo ifadesini değiştirmemelidir.
3.4. Web Uyumluluğu
3.4.1. Web Görünümü Uyumluluğu
android.software.webview platform özelliği, android.webkit.WebView API'sinin tam uygulamasını sağlayan tüm cihazlarda bildirilmeli ve API tam olarak uygulanmadan cihazlarda Bildirilemez. Android Açık Kaynak uygulaması, android.webkit.WebView öğesini uygulamak için Chromium Projesi'ndeki kodu kullanır. Bir web oluşturma sistemi için kapsamlı bir test paketi geliştirmek uygun olmadığından, cihaz uygulayıcılarının WebView uygulamasında Chromium'un belirli bir yukarı akış derlemesini kullanması ZORUNLUDUR. Özellikle:
- Cihaz android.webkit.WebView uygulamaları, Android 7.0 için yukarı akış Android Açık Kaynak Projesi'ndeki Chromium derlemesine dayanmalıdır. Bu derleme, WebView için belirli işlevler ve güvenlik düzeltmeleri içerir.
-
WebView tarafından bildirilen kullanıcı aracısı dizesinin şu biçimde olması ZORUNLUDUR:
Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD); wv) AppleWebKit/537.36 (KHTML, Gecko gibi) Sürüm/4.0 $(CHROMIUM_VER) Mobile Safari/537.36
- $(VERSION) dizesinin değerinin, android.os.Build.VERSION.RELEASE değeriyle aynı olması ZORUNLUDUR.
- $(MODEL) dizesinin değerinin android.os.Build.MODEL değeriyle aynı olması ZORUNLUDUR.
- $(BUILD) dizesinin değerinin android.os.Build.ID değeriyle aynı olması ZORUNLUDUR.
- $(CHROMIUM_VER) dizesinin değerinin, yukarı akış Android Açık Kaynak Projesi'ndeki Chromium sürümü olması ZORUNLUDUR.
- Cihaz uygulamaları için kullanıcı aracısı dizesinde Mobil kelimesi ATLANABİLİR.
WebView bileşeninin mümkün olduğunca fazla HTML5 özelliği için destek içermesi GEREKİR ve özelliği destekliyorsa HTML5 spesifikasyonuna UYMALIDIR.
3.4.2. Tarayıcı Uyumluluğu
Bağımsız Tarayıcı, WebKit dışında bir tarayıcı teknolojisine dayanabilir. Bununla birlikte, alternatif bir Tarayıcı uygulaması kullanılsa bile, üçüncü taraf uygulamalara sağlanan android.webkit.WebView bileşeninin bölüm 3.4.1'de açıklandığı gibi WebKit'e dayanması ZORUNLUDUR.
Uygulamalar bağımsız Tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi gönderebilir.
Bağımsız Tarayıcı uygulamasının (yukarı akış WebKit Tarayıcı uygulamasına veya üçüncü taraf bir alternatife dayalı olarak) mümkün olduğunca çok HTML5 desteği içermesi GEREKİR. En azından, cihaz uygulamalarının HTML5 ile ilişkili şu API'lerin her birini desteklemesi ZORUNLUDUR:
Buna ek olarak, cihaz uygulamalarının HTML5/W3C webstorage API'yi DESTEKLEMELİ ve HTML5/W3C IndexedDB API'yi DESTEKLEMELİDİR. Web geliştirme standartları gövdeleri webstorage yerine IndexedDB'yi tercih etmeye başladıkça IndexedDB'nin, Android'in gelecekteki bir sürümünde gerekli bir bileşen olması beklenmektedir.
3.5. API Davranış Uyumluluğu
Her bir API türünün (yönetilen, yazılımlı, yerel ve web) davranışları, yukarı akış Android Açık Kaynak Projesi'nin tercih edilen uygulamasıyla tutarlı olmalıdır. Uyumlulukla ilgili belirli alanlar şunlardır:
- Cihazlar, standart bir niyetin davranışını veya anlamını DEĞİŞTİRMEMELİDİR.
- Cihazlar, belirli bir sistem bileşeni türünün (Hizmet, Etkinlik, ContentProvider vb.) yaşam döngüsü veya yaşam döngüsü anlamını DEĞİŞTİRMEMELİDİR.
- Cihazlar, standart bir iznin anlamını DEĞİŞTİRMEMELİDİR.
Yukarıdaki liste tam kapsamlı değildir. Uyumluluk Test Paketi (CTS), platformun büyük bölümünü davranış uyumluluğu açısından test eder, ancak hepsini test etmez. Android Açık Kaynak Projesi ile davranışsal uyumluluğu sağlamak, uygulayıcının sorumluluğundadır. Bu nedenle cihaz uygulayıcıları sistemin önemli bölümlerini yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla edinilen kaynak kodunu kullanmalıdır.
3.6. API Ad Alanları
Android, Java programlama dili tarafından tanımlanan paket ve sınıf ad alanı kurallarına uyar. Cihaz uygulamaları, üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için şu paket ad alanlarında yasaklanmış herhangi bir değişiklik YAPMAMALIDIR (aşağıya bakın):
- Java.*
- Javax.*
- güneş.*
- android.*
- com.android.*
Yasaklanan değişiklikler aşağıdakileri içerir :
- 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 kullanıma sunulmuş API'lerde DEĞİŞTİRİLMEMELİDİR.
- Cihaz uygulamaları, API'lerin temel uygulamasını değiştirebilir ancak bu tür değişiklikler herkese açık API'lerin belirtilen davranışını ve Java dili imzasını ETKİLEMEZ.
- Cihaz uygulamaları, yukarıdaki API'lere herkesin kullanımına açık olan hiçbir öğeyi (sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere yönelik alanlar ya da yöntemler gibi) EKLEMEMELİDİR.
"Herkese açık öğe", yukarı akış Android kaynak kodunda kullanıldığı şekilde "@hide" işaretçisiyle dekore edilmemiş her türlü yapıdır. Bir başka deyişle, cihaz uygulayıcıları yukarıda belirtilen ad alanlarındaki mevcut API'leri KULLANMAMALI veya mevcut API'leri DEĞİŞTİRMEMELİDİR. Cihaz uygulamaları yalnızca kurum içi değişiklikler yapabilir ancak bu değişikliklerin reklamı yapılmamalı veya geliştiriciler tarafından başka bir şekilde görülemez.
Cihaz uygulayıcıları özel API'ler ekleyebilir. Ancak bu tür API'lerin başka bir kuruluşa ait olan veya başka bir kuruluşa başvuruda bulunan bir ad alanında OLMAMALIDIR. Örneğin, cihaz uygulayıcıları com.google.* veya benzer ad alanına API EKLEMEMELİDİR, bunu yalnızca Google yapabilir. Benzer şekilde, Google diğer şirketlerin sitelerine API EKLEMEMELİDİR. ad alanları. Buna ek olarak, bir cihaz uygulamasında standart Android ad alanı dışında özel API'ler bulunuyorsa bu API'lerin paylaşılan bir Android kitaplıkta paketlenmesi ZORUNLUDUR. Böylece, yalnızca bu API'leri açıkça kullanan uygulamalar (<uses-library> mekanizmasıyla) bu API'lerin artan bellek kullanımından etkilenir.
Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarından birini iyileştirmeyi önerirse (örneğin, mevcut bir API'ye kullanışlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) uygulayıcının source.android.com adresini ziyaret etmesi ve söz konusu sitedeki bilgilere göre değişiklikler ve kod ekleme işlemine başlaması GEREKİR.
Yukarıdaki kısıtlamaların, API'leri Java programlama dilinde adlandırmaya ilişkin standart kurallara karşılık geldiğini unutmayın; bu bölümün amacı, söz konusu kuralları pekiştirmek ve bu Uyumluluk Tanımı'na dahil ederek bağlayıcı hale getirmektir.
3.7. Çalışma Zamanı Uyumluluğu
Cihaz uygulamalarının tam Dalvik Executable (DEX) biçimini ve Dalvik bayt kodu spesifikasyonu ve anlamını desteklemesi ZORUNLUDUR. Cihaz uygulayıcıları ART'ı, Dalvik Yürütülebilir Biçimi'nin referans yukarı akış uygulamasını ve referans uygulamanın paket yönetim sistemini kullanmalıdır.
Cihaz uygulamaları, Dalvik çalışma zamanlarını yukarı akış Android platformuna uygun şekilde ve aşağıdaki tabloda belirtildiği şekilde bellek tahsis edecek şekilde yapılandırılması ZORUNLUDUR. (Ekran boyutu ve ekran yoğunluğu tanımları için bölüm 7.1.1'e bakın.) Aşağıda belirtilen bellek değerlerinin minimum değerler olarak kabul edildiğini ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceğini unutmayın.
Ekran Düzeni | Ekran Yoğunluğu | Minimum Uygulama Belleği |
---|---|---|
Android Saat | 120 dpi (ldpi) | 32MB |
160 dpi (mdpi) | ||
213 dpi (tvdpi) | ||
240 dpi (hdpi) | 36MB | |
280 dpi (280dpi) | ||
320 dpi (xhdpi) | 48MB | |
360 dpi (360dpi) | ||
400 dpi (400dpi) | 56MB | |
420 dpi (420dpi) | 64MB | |
480 dpi (xxhdpi) | 88MB | |
560 dpi (560dpi) | 112MB | |
640 dpi (xxxhdpi) | 154MB | |
küçük/normal | 120 dpi (ldpi) | 32MB |
160 dpi (mdpi) | ||
213 dpi (tvdpi) | 48MB | |
240 dpi (hdpi) | ||
280 dpi (280dpi) | ||
320 dpi (xhdpi) | 80MB | |
360 dpi (360dpi) | ||
400 dpi (400dpi) | 96MB | |
420 dpi (420dpi) | 112MB | |
480 dpi (xxhdpi) | 128MB | |
560 dpi (560dpi) | 192MB | |
640 dpi (xxxhdpi) | 256MB | |
büyük | 120 dpi (ldpi) | 32MB |
160 dpi (mdpi) | 48MB | |
213 dpi (tvdpi) | 80MB | |
240 dpi (hdpi) | ||
280 dpi (280dpi) | 96MB | |
320 dpi (xhdpi) | 128MB | |
360 dpi (360dpi) | 160MB | |
400 dpi (400dpi) | 192MB | |
420 dpi (420dpi) | 228MB | |
480 dpi (xxhdpi) | 256MB | |
560 dpi (560dpi) | 384MB | |
640 dpi (xxxhdpi) | 512MB | |
xlarge | 120 dpi (ldpi) | 48MB |
160 dpi (mdpi) | 80MB | |
213 dpi (tvdpi) | 96MB | |
240 dpi (hdpi) | ||
280 dpi (280dpi) | 144MB | |
320 dpi (xhdpi) | 192MB | |
360 dpi (360dpi) | 240MB | |
400 dpi (400dpi) | 288MB | |
420 dpi (420dpi) | 336MB | |
480 dpi (xxhdpi) | 384MB | |
560 dpi (560dpi) | 576MB | |
640 dpi (xxxhdpi) | 768MB |
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.1. Başlatıcı (Ana Ekran)
Android'de başlatıcı uygulaması (ana ekran) ve cihaz başlatıcının (ana ekran) yerini alacak üçüncü taraf uygulamaları için destek bulunur. Üçüncü taraf uygulamalarının cihazın ana ekranının yerini almasına izin veren cihaz uygulamalarında android.software.home_screen platform özelliğinin bildirilmesi ZORUNLUDUR.
3.8.2. Widget'lar
Android, bir bileşen türü ile uygulamaların son kullanıcıya "AppWidget" sunmasını sağlayan API ve yaşam döngüsünü tanımlar. Bu özelliğin, Avuç İçi Cihaz uygulamalarında desteklenmesi ÖNERİLİR. Ana ekrana widget yerleştirmeyi destekleyen cihaz uygulamalarının, aşağıdaki şartları karşılaması ve android.software.app_widgets platform özelliğini desteklediğini belirtmesi ZORUNLUDUR.
- Cihaz başlatıcıların, AppWidget'lar için yerleşik desteği içermesi ve AppWidget'ları doğrudan Başlatıcı içinden eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü olanakları sunması ZORUNLUDUR.
- Cihaz uygulamalarının, standart ızgara boyutunda 4 x 4 olan widget'ları oluşturabilmesi ZORUNLUDUR. 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ında uygulama widget'larını desteklemektedir.
3.8.3. Bildirimler
Android, geliştiricilerin cihazın donanım ve yazılım özelliklerini kullanarak önemli etkinlikler hakkında kullanıcıları bilgilendirmesine olanak tanıyan API'ler içerir.
Bazı API'ler, donanımların (özellikle ses, titreşim ve ışık) kullanarak bildirimler gerçekleştirmesine veya dikkat çekmesine olanak tanır. Cihaz uygulamaları, SDK dokümanlarında açıklandığı gibi ve cihaz uygulama donanımıyla mümkün olduğu ölçüde donanım özelliklerini kullanan bildirimleri desteklemelidir. Örneğin, bir cihaz uygulaması titreşim içeriyorsa titreşim API'lerini doğru bir şekilde uygulaması ZORUNLUDUR. Bir cihaz uygulamasında donanım yoksa ilgili API'lerin işlemsiz olarak uygulanması ZORUNLUDUR. Bu davranış 7. bölümde daha ayrıntılı olarak açıklanmaktadır.
Ayrıca, uygulamanın, API'larda ya da Durum/Sistem Çubuğu simge stil kılavuzunda sağlanan tüm kaynakların (simgeler, animasyon dosyaları vb.) doğru şekilde oluşturulması ZORUNLUDUR. Android Televizyon cihazlarında bildirimler görüntülenmeyebilir. Cihaz uygulamaları, bildirimler için referans Android Açık Kaynak uygulamasının sağladığından alternatif bir kullanıcı deneyimi sağlayabilir; Ancak bu tür alternatif bildirim sistemlerinin yukarıdaki gibi mevcut bildirim kaynaklarını desteklemesi GEREKİR.
Android, aşağıdakiler gibi çeşitli bildirimleri destekler:
- Zengin bildirimler . Devam eden bildirimler için Etkileşimli Görünümler.
- Uyarı bildirimleri . Etkileşimli Görünümler kullanıcıları, mevcut uygulamadan ayrılmadan işlem yapabilir veya reddedebilir.
- Kilit ekranı bildirimleri . Kilit ekranında gösterilen bildirimler, görünürlük üzerinde ayrıntılı kontrol sağlar.
Android cihaz uygulamalarında bu tür bildirimler görünür hale geldiğinde Zengin ve Dikkat bildirimleri düzgün şekilde yürütülmeli ve Android API'lerinde belgelendiği şekliyle başlık/ad, simge ve metin içermelidir.
Android'de, uygulamaların (kullanıcı tarafından açık bir şekilde etkinleştirildikten sonra) yayınlanan veya güncellenen tüm bildirimlerin bir kopyasını almasına olanak tanıyan Bildirim Dinleyici Hizmet API'leri bulunur. Cihaz uygulamalarının, Bildirim nesnesine ekli tüm meta veriler de dahil olmak üzere, yüklü ve kullanıcı tarafından etkinleştirilen tüm dinleyici hizmetlerine doğru şekilde ve hemen bildirim göndermesi ZORUNLUDUR.
DND (Rahatsız Etmeyin) özelliğini destekleyen cihaz uygulamalarının aşağıdaki gereksinimleri karşılaması ZORUNLUDUR:
- ACTION_Bildirim_POLICY_ACCESS_SETTINGS amacına yanıt verecek bir etkinlik GEÇERLİDİR. UI_MODE_TYPE_NORMAL ile uygulamalarda, kullanıcının DND politika yapılandırmalarına uygulama erişimine izin verebileceği veya erişimi reddetebileceği bir etkinlik olması ZORUNLUDUR.
- Cihaz uygulaması, kullanıcıya üçüncü taraf uygulamalarının DND politika yapılandırmasına erişim izni verme veya verme yetkisini verdiyse, kullanıcının oluşturduğu ve önceden tanımlanmış kuralların yanı sıra uygulamalar tarafından oluşturulan Otomatik DND kurallarının da görüntülenmesi ZORUNLUDUR.
NotificationManager.Policy
ile iletilensuppressedVisualEffects
değerlerine uyulması ZORUNLUDUR. Bir uygulama, supPRESSED_fi_SCREEN_OFF veya supPRESSED_fi_SCREEN_ON işaretlerinden birini ayarlamışsa DND ayarları menüsünde görsel efektlerin basıldığını kullanıcıya belirtmelidir.
3.8.4. Arama
Android, geliştiricilerin aramayı uygulamalarına dahil etmelerine ve uygulama verilerini küresel sistem aramasına sergilemelerine olanak tanıyan API'ler içerir. Genel olarak bu işlev, kullanıcıların sorgu girmesine olanak tanıyan, kullanıcı yazarken önerileri gösteren ve sonuçları gösteren, sistem genelinde tek bir kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü tekrar kullanmalarına ve geliştiricilerin, yaygın genel arama kullanıcı arayüzüne sonuçlar sağlamalarına olanak tanır.
Android cihaz uygulamaları, genel arama özelliğini, kullanıcı girişlerine yanıt olarak gerçek zamanlı önerilerde bulunabilen, sistem çapında tek bir paylaşılan arama kullanıcı arayüzünü, yani genel aramayı İÇERMELİDİR. Cihaz uygulamaları, geliştiricilerin kendi uygulamalarında arama sağlamak için bu kullanıcı arayüzünü tekrar kullanmalarına olanak tanıyan API'lerin uygulanması GEREKİR. Genel arama arayüzünü uygulayan cihaz uygulamalarında, üçüncü taraf uygulamaların, genel arama modunda çalıştırıldığında arama kutusuna öneriler eklemesine izin veren API'lerin uygulanması ZORUNLUDUR. Bu işlevden yararlanan herhangi bir üçüncü taraf uygulaması yüklü değilse varsayılan davranış, web arama motoru sonuçlarını ve önerilerini görüntülemektir.
Android cihaz uygulamaları ile Android Automotive uygulamalarının destekleyici işlemi gerçekleştirmek için cihaza bir asistan uygulaması ZORUNLUDUR.
Android ayrıca, uygulamaların mevcut bağlam hakkında ne kadar bilginin cihazdaki asistanla paylaşılacağını belirlemesine olanak tanıyan Destek API'leri de içerir. Asistan işlemini destekleyen cihaz uygulamalarının, bağlam paylaşıldığında ekranın kenarlarında beyaz bir ışık görüntülenerek son kullanıcıya açıkça belirtilmesi ZORUNLUDUR. Son kullanıcı tarafından net bir şekilde görülebilmesi için göstergenin Android Açık Kaynak Projesi uygulamasının süresini ve parlaklığını karşılaması veya aşması ZORUNLUDUR.
3.8.5. Tostlar
Uygulamalar, kısa bir süre sonra kaybolan kalıcı olmayan kısa dizeleri son kullanıcıya göstermek için "Toast" API'sini kullanabilir. Cihaz uygulamalarında, uygulamalardaki Toast'lar son kullanıcılara yüksek görünürlüğe sahip şekilde gösterilmelidir.
3.8.6. Temalar
Android, uygulamaların bir Etkinliğin veya uygulamanın tamamında stilleri uygulayabilmesi için bir mekanizma olarak "tema" sunar.
Android, uygulama geliştiricilerin Android SDK'sı tarafından tanımlanan Holo teması görünüm ve tarzına uygun davranmak istediklerinde kullanabilecekleri bir dizi tanımlı stil olarak "Holo" tema ailesini içerir. Cihaz uygulamaları, uygulamalarda kullanıma sunulan Holo teması özelliklerinden hiçbirini DEĞİŞTİRMEMELİDİR.
Android, uygulama geliştiricilerin çok çeşitli Android cihaz türlerinde tasarım temasının görünümünü ve tarzını eşleştirmek istemeleri durumunda kullanabilecekleri bir dizi tanımlı stil olarak "Materyal" tema ailesi içerir. Cihaz uygulamaları, "Materyal" tema ailesini desteklemeli ve Materyal tema özelliklerini veya uygulamalara maruz kalan öğelerini DEĞİŞTİRMEMELİDİR.
Android ayrıca, cihaz temasının cihaz temasını uygulayan kullanıcı tarafından tanımlanan görünüm ve tarzıyla uyumlu olmasını isteyen uygulama geliştiricilerin kullanabileceği tanımlı stiller olarak bir "Cihaz Varsayılanı" tema ailesi içerir. Cihaz uygulamaları, uygulamalara sunulan Cihaz Varsayılan teması özelliklerini değiştirebilir.
Android, yarı saydam sistem çubuklarına sahip bir varyant temasını destekler. Bu özellik, uygulama geliştiricilerin durum ve gezinme çubuğunun arkasındaki alanı uygulama içeriğiyle doldurmalarına olanak tanır. Bu yapılandırmada tutarlı bir geliştirici deneyimi sağlamak için durum çubuğu simge stilinin farklı cihaz uygulamalarında korunması önemlidir. Bu nedenle, Android cihaz uygulamalarında sistem durumu simgeleri (sinyal gücü ve pil seviyesi gibi) ve sistem tarafından gönderilen bildirimler için beyaz renk kullanılmalıdır. Bu, simgenin sorunlu bir durumu belirtmediği veya bir uygulama SYSTEM_UI_FLAG_LIGHT_STATUS_BAR işaretini kullanarak ışıklı bir durum çubuğu istemediği durumlardır. Bir uygulama ışık durum çubuğu istediğinde, Android cihaz uygulamalarının sistem durumu simgelerinin rengini siyah olarak değiştirmesi ZORUNLUDUR (ayrıntılar için R.style bölümüne bakın).
3.8.7. Animasyonlu Duvar Kağıtları
Android, bir bileşen türü ile uygulamaların bir veya daha fazla "Animasyonlu Duvar Kağıdı"nı son kullanıcıya göstermesine olanak tanıyan API ve yaşam döngüsünü tanımlar. Animasyonlu duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak görüntülenen, sınırlı giriş özelliklerine sahip animasyonlar, desenler veya benzer resimlerdir.
Donanım, tüm animasyonlu duvar kağıtlarını işlevsel bir sınırlama olmadan, diğer uygulamaları olumsuz etkilemeden makul bir kare hızında çalıştırabiliyorsa güvenilir bir şekilde animasyonlu duvar kağıtları çalıştırabilir. Donanımdaki sınırlamalar, duvar kağıtlarının ve/veya uygulamaların kilitlenmesine, bozulmasına, aşırı CPU ya da pil gücü harcanmasına veya kabul edilemez düşük kare hızlarında çalışmasına neden olursa donanımın animasyonlu duvar kağıdını çalıştıramadığı kabul edilir. Örneğin, bazı animasyonlu duvar kağıtları içeriklerini oluşturmak için OpenGL 2.0 veya 3.x bağlamı kullanabilir. Animasyonlu duvar kağıdı, birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz çünkü bir OpenGL bağlamının canlı duvar kağıdı kullanımı, OpenGL bağlamı kullanan diğer uygulamalarla da çakışabilir.
Yukarıda açıklandığı gibi canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabilen cihaz uygulamalarının canlı duvar kağıtları uygulaması GEREKİR ve uygulandığında android.software.live_wallpaper platform özellik bayrağı Bildirilmelidir.
3.8.8. Etkinlik Değiştirme
Yukarı akış Android kaynak kodu, görev arasında geçiş yapmak ve son erişilen etkinlik ile görevleri görüntülemek için sistem düzeyinde bir kullanıcı arayüzü olan genel bakış ekranını içerir. Bu kullanıcı arayüzü, kullanıcının uygulamadan son ayrıldığı andaki grafik durumunun küçük resmini kullanır. Bölüm 7.2.3'te ayrıntılı olarak açıklandığı şekilde son kullanılanlar işlevi gezinme tuşu dahil olmak üzere cihaz uygulamaları, arayüzü değiştirebilir, ancak aşağıdaki gereksinimleri karşılaması ZORUNLUDUR:
- Görüntülenen en az 6 etkinliği DESTEKLEMELİDİR.
- Aynı anda en az 4 etkinliğin başlığı görüntülenmelidir.
- Ekran sabitleme davranışını uygulamalı ve kullanıcıya, özelliği açıp kapatmak için kullanabileceği bir ayarlar menüsü sunmak ZORUNLUDUR.
- Son kullanılan öğelerde vurgu rengi, simge, ekran başlığı GÖRÜNTÜLEMELİDİR.
- Kapanış mesajı ("x") GÖRÜNTÜLEMELİDİR, ancak kullanıcı ekranlarla etkileşime geçene kadar bu işlem ertelenebilir.
- Önceki etkinliğe kolayca geçiş yapmak için bir kısayol uygulanmalıdır
- İlişkili sonları birlikte hareket eden bir grup olarak GÖRÜNTÜLENEBİLİR.
- Son kullanılanlar işlev tuşuna iki kez dokunulduğunda, en son kullanılan iki uygulama arasında hızlı geçiş işleminin TEŞVİK EDİLMESİ GEREKİR.
- Destekleniyorsa, son kullanılanlar işlevleri tuşuna uzun basıldığında bölünmüş ekran çoklu pencere modunu TEŞVİK ETMELİDİR.
Cihaz uygulamalarının, genel bakış ekranı için yukarı akış 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'de Giriş Yönetimi ve üçüncü taraf giriş yöntemi düzenleyicileri için destek bulunur. Kullanıcıların cihazda üçüncü taraf giriş yöntemlerini kullanmasına olanak tanıyan cihaz uygulamalarında, android.software.input_methods platform özelliğinin belirtilmesi ve Android SDK dokümanlarında tanımlandığı gibi IME API'lerini desteklemesi ZORUNLUDUR.
android.software.input_methods özelliğini tanımlayan cihaz uygulamalarının, üçüncü taraf giriş yöntemlerini eklemek ve yapılandırmak için kullanıcı tarafından erişilebilen bir mekanizma SAĞLAMALIDIR. Cihaz uygulamalarında, android.settings.INPUT_METHOD_SETTINGS niyetine yanıt olarak ayarlar arayüzü görüntülenmelidir.
3.8.10. Kilit Ekranı Medya Kontrolü
Android 5.0 Remote Control Client API'nin desteği, medya uygulamalarının kilit ekranında görüntülenen oynatma kontrolleri ile entegre olmasına olanak tanıyan Medya Bildirim Şablonu'nun yerini almıştır. Android Automotive veya Watch uygulaması hariç kilit ekranını destekleyen cihaz uygulamalarında Medya Bildirim Şablonu da dahil olmak üzere Kilit Ekranı Bildirimleri'nin görüntülenmesi ZORUNLUDUR.
3.8.11. Ekran koruyucular (eski adıyla İlham Sahneleri)
Android, daha önce İlham Tonu adı verilen etkileşimli ekran koruyucular için destek sunar. Ekran koruyucular, güç kaynağına bağlı bir cihaz boştayken veya bir masa yuvasına yerleştirildiğinde kullanıcıların uygulamalarla etkileşimde bulunmasına olanak tanır. Android Watch cihazları ekran koruyucu KULLANABİLİR, ancak diğer cihaz uygulamalarının ekran koruyucu desteği içermesi ve kullanıcıların android.settings.DREAM_SETTINGS
amacına göre ekran koruyucularını yapılandırmaları için bir ayar seçeneği SAĞLANMALIDIR.
3.8.12. Konum
Bir cihazda, konum koordinatlarını sağlayabilecek bir donanım sensörü (ör. GPS) varsa Ayarlar'daki Konum menüsünde konum modlarının görüntülenmesi ZORUNLUDUR.
3.8.13. Unicode ve Yazı Tipi
Android, Unicode 9.0'da tanımlanan emoji karakterleri için destek sunar. Tüm cihaz uygulamalarının bu emoji karakterlerini renk glifiyle işleyebilmesi ZORUNLUDUR. Android cihaz uygulamaları bir IME içerdiğinde, kullanıcıya bu emoji karakterleri için bir giriş yöntemi sağlanmalıdır.
Android taşınabilir cihazlar, 51 numaralı Unicode Teknik Raporu'nda belirtildiği gibi cilt tonunu ve çeşitli aile emojilerini DESTEKLEMELİDİR.
Android, farklı ağırlıklara sahip Roboto 2 yazı tipini destekler: Sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-Black, sans-serif-condensed, sans-serif-condensed-light'tan oluşan Roboto 2 yazı tipi desteği.Cihazda kullanılabilen diller için bunların tümünün dahil edilmesi ZORUNLUDUR; Latin, Yunan ve D7 para birimi, Latin, Yunan ve D7 para birimi, Genişletilmiş ve D7 para birimi ve Unicode simgelerinin tam Unicode 7.0 kapsamı için dahil edilmelidir.
3.8.14. Çoklu Pencere
Bir cihaz uygulaması, çoklu pencere modlarını uygulamamayı tercih edebilir. Ancak, aynı anda birden fazla etkinliği gösterebiliyorsa bu tür çoklu pencere modlarını, Android SDK çoklu pencere modu destek dokümanlarında açıklanan uygulama davranışlarına ve API'lere uygun şekilde uygulaması ve aşağıdaki şartları karşılaması gerekir:
- Uygulamalar, AndroidManifest.xml dosyasında çoklu pencere modunda çalışıp çalışmadıklarını ya
android:resizeableActivity
özelliğiyle açık bir şekilde veya dolaylı olarak targetSdkVersion > 24. Bu özelliği, manifest dosyalarında açıkça false (yanlış) değerine ayarlayan uygulamalar, çoklu pencere modunda başlatılmamalıdır. Manifest dosyalarında bu özelliği ayarlamayan (targetSdkVersion < 24) uygulamalar çoklu pencere modunda başlatılabilir. Ancak sistemin, uygulamanın çoklu pencere modunda beklendiği gibi çalışmayabileceği konusunda uyarı vermesi GEREKİR. - Ekran yüksekliği ve genişliği 440 dp'den az olduğunda cihaz uygulamalarında bölünmüş ekran veya serbest biçim modu SUNMAMALIDIR.
- Ekran boyutu
xlarge
olan cihaz uygulamaları, serbest biçim modunu DESTEKLEMELİDİR. - Android Televizyon cihaz uygulamalarının pencere içinde pencere (PIP) modunu desteklemesi ve PIP AÇIK olduğunda PIP çoklu penceresini sağ üst köşeye yerleştirmesi gerekir.
- PIP modu çoklu pencere desteğine sahip cihaz uygulamalarının PIP penceresi için en az 240x135 dp ayırması ZORUNLUDUR.
- PIP çoklu pencere modu destekleniyorsa PIP penceresini kontrol etmek için
KeyEvent.KEYCODE_WINDOW
tuşunun kullanılması ZORUNLUDUR; Aksi takdirde, anahtarın ön plan etkinliğinde kullanılabilmesi ZORUNLUDUR.
3.9. Cihaz Yönetimi
Android, güvenliğe duyarlı uygulamaların sistem düzeyinde cihaz yönetimi işlevlerini gerçekleştirmesine (şifre politikalarını uygulama veya uzaktan silme işlemi gerçekleştirme gibi) Android Device Management API aracılığıyla olanak tanıyan özellikler içerir. Cihaz uygulamaları, DevicePolicyManager sınıfının bir uygulamasını sağlamalı ZORUNLUDUR. Güvenli kilit ekranını destekleyen cihaz uygulamalarının, Android SDK dokümanlarında tanımlanan cihaz yönetimi politikalarının tümünün uygulanması ve android.software.device_admin platform özelliğini bildirmesi ZORUNLUDUR.
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 ederse, bir Device Policy İstemcisi (DPC) uygulamasının Cihaz Sahibi uygulamasının temel hazırlığını aşağıda belirtildiği şekilde uygulaması ZORUNLUDUR:
- Cihaz uygulamasında henüz yapılandırılmış kullanıcı verisi yoksa:
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içintrue
adlı kullanıcının Bildirilmesi ZORUNLUDUR.- DPC uygulamasını, intent işlemine
android.app.action.PROVISION_MANAGED_DEVICE
yanıt olarak Cihaz Sahibi uygulaması olarak kaydettirmeniz ZORUNLUDUR. - Cihaz,
android.hardware.nfc
özellik bayrağı aracılığıyla Near Field Communication (NFC) desteği beyan ederse veMIME_TYPE_PROVISIONING_NFC
MIME türünde kayıt içeren bir NFC mesajı alırsa DPC uygulamasını Cihaz Sahibi uygulaması olarak kaydettirmeniz GEREKİR.
- Cihaz uygulamasında kullanıcı verileri olduğunda:
DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
içinfalse
adlı kullanıcının Bildirilmesi ZORUNLUDUR.- Bundan böyle herhangi bir DPC uygulamasını Cihaz Sahibi Uygulaması olarak kaydetmemeniz ZORUNLUDUR.
Cihaz uygulamalarında, cihaz yönetim işlevlerini gerçekleştiren önceden yüklenmiş bir uygulama OLABİLİR. Ancak bu uygulama, kullanıcıdan ya da cihazın yöneticisinden açık bir izin veya işlem alınmadan Cihaz Sahibi uygulaması olarak AYARLANMAMALIDIR.
3.9.1.2 Yönetilen profil temel hazırlığı
Bir cihaz uygulaması android.software.managed_users bilgisini tanımlarsa bir cihaz politikası denetleyici (DPC) uygulamasını yeni bir yönetilen profilin sahibi olarak kaydettirmenin mümkün olması ZORUNLUDUR.
Yönetilen profil temel hazırlığı işlemi (android.app.action.PROVISION_MANAGED_PROFILE tarafından başlatılan akış) kullanıcı deneyimi, AOSP uygulamasıyla uyumlu OLMALIDIR.
Cihaz uygulamaları, belirli bir sistem işlevinin Cihaz Politikası Denetleyicisi (DPC) tarafından devre dışı bırakıldığını kullanıcıya bildirmek için Ayarlar kullanıcı arayüzünde aşağıdaki kullanıcı olanaklarının sağlanması ZORUNLUDUR:
- Belirli bir ayarın cihaz yöneticisi tarafından kısıtlandığını gösteren tutarlı bir simge veya diğer kullanıcı özellikleri (ör. yukarı akış AOSP bilgisi simgesi).
- Cihaz Yöneticisi tarafından
setShortSupportMessage
aracılığıyla sağlanan kısa bir açıklama mesajı. - DPC uygulamasının simgesi.
3.9.2 Yönetilen Profil Desteği
Yönetilen profil özellikli cihazlar, şu özelliklere sahip cihazlardır:
- android.software.device_admin öğesini bildirin (Bölüm 3.9 Cihaz Yönetimi'ne bakın).
- Düşük RAM'li cihazlar (bölüm 7.6.1'e bakın).
- Dahili (kaldırılamaz) depolama alanını, paylaşılan depolama alanı olarak paylaştırın (bkz. bölüm 7.6.2).
Yönetilen profil özellikli cihazlarda:
- Platform özellik işaretini
android.software.managed_users
beyan edin . android.app.admin.DevicePolicyManager
API'leri aracılığıyla yönetilen profilleri destekleyin.- Yalnızca bir yönetilen profil oluşturulmasına izin verin.
- Yönetilen uygulamaları, widget'ları ve diğer rozetli kullanıcı arayüzü öğelerini (ör. Son Kullanılanlar ve Bildirimler.
- Kullanıcının yönetilen bir profil uygulamasında olduğunu belirtmek için bir bildirim simgesi (AOSP yayın öncesi iş rozetine benzer) görüntülenir.
- Cihaz uyandığında (ACTION_USER_PRESENT) ve ön plan uygulamasının yönetilen profil içinde yer aldığında, kullanıcının yönetilen profilde olduğunu belirten bir durum mesajı görüntüleyin.
- Yönetilen profilin mevcut olduğu durumlarda, "Seçici" Amaç bölümünde görsel bir uygun seçenek gösterin kullanıcının, niyeti yönetilen profilden birincil kullanıcıya veya Device Policy (Cihaz Politikası Denetleyicisi) tarafından etkinleştirildiyse birincil kullanıcıya iletmesine izin verir.
- Yönetilen bir profilin mevcut olduğu durumlarda, hem birincil kullanıcı hem de yönetilen profil için aşağıdaki kullanıcı olanaklarını gösterin:
- Birincil kullanıcı ve yönetilen profil için pil, konum, mobil veri ve depolama alanı kullanımının ayrı ayrı hesaplaması.
- Birincil kullanıcı veya yönetilen profilde yüklenen VPN uygulamalarının bağımsız yönetimi.
- Birincil kullanıcıya veya yönetilen profile yüklenen uygulamaların bağımsız yönetimi.
- Birincil kullanıcı veya yönetilen profilde hesapların bağımsız olarak yönetilmesi.
- Cihaz Politikası Denetleyicisi izin veriyorsa önceden yüklenmiş numara çeviricinin, kişilerin ve mesajlaşma uygulamalarının birincil profildekilerin yanı sıra yönetilen profilden de (varsa) arayan bilgilerini arayabildiğinden ve arayabildiğinden emin olun. Yönetilen profildeki kişiler önceden yüklenmiş çağrı kaydında, görüşme sırasında kullanıcı arayüzünde, devam eden ve cevapsız arama bildirimlerinde, kişilerde ve mesajlaşma uygulamalarında görüntülendiğinde bu kişilere, yönetilen profil uygulamalarını belirtmek için kullanılan rozetin aynısı SUNULMALIDIR.
- Yönetilen profil, birincil kullanıcıya ek olarak başka bir kullanıcı olarak sayılmasa da, birden fazla kullanıcının etkinleştirilmiş olduğu bir cihaz için geçerli olan tüm güvenlik gereksinimlerini karşılamalıdır (bkz. 9.5).
- 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ği desteklenir.
- Cihaz uygulamalarının
DevicePolicyManager.ACTION_SET_NEW_PASSWORD
amacına uygun olması ve yönetilen profil için ayrı bir kilit ekranı kimlik bilgisi yapılandırmak üzere bir arayüz göstermesi ZORUNLUDUR. - Yönetilen profilin kilit ekranı kimlik bilgilerinin, Android Açık Kaynak Proje Sitesi'nde belgelendiği gibi, ana profille aynı kimlik bilgisi depolama ve yönetim mekanizmalarını kullanması ZORUNLUDUR
- getParentProfileInstance tarafından döndürülen
DevicePolicyManager
örneğine çağrılmadığı sürece, DPC şifre politikalarının yalnızca yönetilen profilin kilit ekranı kimlik bilgileri için geçerli olması ZORUNLUDUR.
- Cihaz uygulamalarının
3:10. Erişilebilirlik
Android, engelli kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olan bir erişilebilirlik katmanı sağlar. Buna ek olarak Android, kullanıcı ve sistem etkinlikleri için geri çağırmaların yanı sıra metin okuma, dokunsal geri bildirim ve iztopu/d-pad gezinmesi gibi alternatif geri bildirim mekanizmaları oluşturmak üzere erişilebilirlik hizmeti uygulamalarına imkan tanıyan platform API'leri de sağlar.
Cihazlarla ilgili uygulamalar aşağıdaki gereksinimleri içerir:
- Android Automotive uygulamaları, varsayılan Android uygulamasıyla tutarlı bir şekilde Android erişilebilirlik çerçevesinin uygulamasını SAĞLAMALIDIR.
- Cihaz uygulamaları (Android Automotive hariç) için Android erişilebilirlik çerçevesinin varsayılan Android uygulamasıyla tutarlı bir şekilde uygulanması ZORUNLUDUR.
- Cihaz uygulamaları (Android Automotive hariç) android.accessibilityservice API'leri üzerinden üçüncü taraf erişilebilirlik hizmeti uygulamalarını DESTEKLEMELİDİR.
- Cihaz uygulamalarının (Android Automotive hariç) AccessibilityEvents oluşturması ve bu etkinlikleri kayıtlı tüm AccessibilityService uygulamalarına varsayılan Android uygulamasıyla tutarlı bir şekilde sunması ZORUNLUDUR
-
Cihaz uygulamaları (ses çıkışı hariç Android Automotive ve Android Watch cihazları) erişilebilirlik hizmetlerini etkinleştirmek ve devre dışı bırakmak için kullanıcı tarafından erişilebilen bir mekanizma SAĞLANMALIDIR ve android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS niyetine yanıt olarak bu arayüzün görüntülenmesi ZORUNLUDUR.
-
Ses çıkışlı Android cihaz uygulamalarının, cihazda TalkBack** ve Anahtar Erişimi erişilebilirlik hizmetlerinin (https://github.com/google/talkback) benzer veya daha kapsamlı işlevlerine eşdeğer ya da daha fazla işlev sunması için ÖNEMLE ÖNERİLİR.
- Ses çıkışlı Android Watch cihazları, cihazda TalkBack erişilebilirlik hizmetinin (https://github.com/google/talkback) işlevine benzer veya onu aşan bir erişilebilirlik hizmetinin uygulamalarını SAĞLAMALIDIR.
- Cihaz uygulamaları, kullanıma hazır kurulum akışında kullanıcılara ilgili erişilebilirlik hizmetlerini etkinleştirmelerini sağlayacak bir mekanizmanın yanı sıra yazı tipi boyutunu, görüntü boyutunu ve büyütme hareketlerini ayarlama seçenekleri sunmalıdır.
** Metin okuma özelliğinin desteklediği diller için.
Ayrıca, önceden yüklenmiş bir erişilebilirlik hizmeti varsa ve cihazın Dosya Tabanlı Şifreleme (FBE) kullanarak şifrelenmiş depolama alanı varsa Doğrudan Başlatma'ya duyarlı bir {directBootAware} uygulaması olması ZORUNLUDUR.
3:11. Metin-Konuşma
Android, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına ve servis sağlayıcılarının TTS hizmetlerini kullanmasına olanak tanıyan API'ler içerir. android.hardware.audio.Exit özelliğini bildiren cihaz uygulamaları, Android TTS çerçevesiyle ilgili bu şartları ZORUNLUDUR.
Android Automotive uygulamaları:
- Android TTS çerçeve API'lerini DESTEKLEMELİDİR.
- Üçüncü taraf TTS motorlarının yüklenmesini destekleyebilir. Destekleniyorsa iş ortakları, kullanıcının sistem düzeyinde kullanılacak bir TTS motoru seçmesine olanak tanıyan, kullanıcı tarafından erişilebilen bir arayüz sunmalıdır.
Diğer tüm cihaz uygulamaları:
- Android TTS çerçeve API'lerini DESTEKLEMELİ ve cihazda kullanılabilen dilleri destekleyen bir TTS motoru İÇERMELİDİR. Yukarı akış 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 DESTEKLEMELİDİR.
- Kullanıcıların sistem düzeyinde kullanılacak bir TTS motoru seçmesine olanak tanıyan, kullanıcı tarafından erişilebilen bir arayüz SAĞLANMALIDIR.
3:12. TV Girişi Çerçevesi
Android Televizyon Giriş Çerçevesi (TIF), canlı içeriğin Android Televizyon cihazlarına yayınlanmasını kolaylaştırır. TIF, Android Televizyon cihazlarını kontrol eden giriş modülleri oluşturmak için standart bir API sağlar. Android Televizyon cihazı uygulamalarının TV Giriş Çerçevesi'ni desteklemesi ZORUNLUDUR.
TIF'yi destekleyen cihaz uygulamalarında, platform özelliğinin android.software.live_tv olarak belirtilmesi ZORUNLUDUR.
3.12.1. TV uygulaması
Canlı TV desteğinin beyan edildiği tüm cihaz uygulamalarında, TV uygulamasının (TV uygulaması) yüklü olması ZORUNLUDUR. Android Açık Kaynak Projesi, TV uygulamasının bir uygulamasını sağlar.
TV uygulamasının, TV kanallarını yükleyip kullanmak için gerekli özellikleri sağlaması ve aşağıdaki gereksinimleri karşılaması ZORUNLUDUR:
- Cihaz uygulamaları, üçüncü taraf TIF tabanlı girişlerin ( üçüncü taraf girişleri) yüklenmesine ve yönetilmesine İZİN VERMELİDİR.
- Cihaz uygulamaları, önceden yüklenmiş TIF tabanlı girişler (yüklü girişler) ile üçüncü taraf girişleri arasında görsel ayrım sağlayabilir.
- Cihaz uygulamalarında, üçüncü taraf girişleri TV uygulamasından tek bir gezinme işleminden daha uzakta GÖRÜNTÜLEMEMELİDİR (ör. TV uygulamasından üçüncü taraf girişlerinin listesini genişletme).
3.12.1.1. Elektronik Program Rehberi
Android Televizyon cihaz uygulamalarının, bilgilendirme amaçlı ve etkileşimli bir yer paylaşımı göstermesi ZORUNLUDUR. Bu yer paylaşımı, TvContract.Programs alanlarındaki değerlerden oluşturulmuş bir elektronik program kılavuzunun (EPG) içermesi ZORUNLUDUR. EPG'nin aşağıdaki şartları karşılaması ZORUNLUDUR:
- EPG, yüklü tüm girişlerden ve üçüncü taraf girişlerinden bilgi GÖRÜNTÜLEMELİDİR.
- EPG, yüklenen girişler ile üçüncü taraf girişleri arasında görsel ayrım sağlayabilir.
- EPG, yüklü girişleri ve üçüncü taraf girişlerini eşit belirginlikle göstermesi için ÖNEMLE ÖNERİLİR. EPG, üçüncü taraf girişlerini EPG'de yüklü girişlerin dışında tek bir gezinme işleminden daha uzakta GÖRÜNTÜLEMEMELİDİR.
- Kanal değiştiğinde, cihaz uygulamalarının şu anda oynatılan programın EPG verilerini görüntülemesi ZORUNLUDUR.
3.12.1.2. Navigasyon
TV Uygulaması, Android Televizyon cihazının giriş cihazlarında (ör. uzaktan kumanda, uzaktan kumanda uygulaması veya oyun kumandası) D-pad, Geri ve Ana sayfa tuşlarıyla şu işlevler için gezinmeye İZİN VERMELİDİR:
- TV kanallarını değiştirme
- EPG açılıyor
- Üçüncü taraf TIF tabanlı girişleri yapılandırma ve ayarlama
- Ayarlar menüsünü açma
TV uygulaması, önemli etkinlikleri CEC aracılığıyla HDMI girişlerine iletmelidir.
3.12.1.3. TV giriş uygulaması bağlama
Android Televizyon cihaz uygulamalarında, tüm girişlerin geçerli etkinlikten başka bir etkinliğe etkinlik bağlantıları (ör. canlı programdan ilgili içeriğe bağlantı) sağlamasına olanak tanıyan TV giriş uygulaması bağlama özelliğinin desteklenmesi ZORUNLUDUR. TV uygulaması, sağlandığında TV girişi uygulama bağlantısını GÖRÜNTÜLEMELİDİR.
3.12.1.4. Zaman kaydırma
Android Televizyon cihaz uygulamalarının, kullanıcının canlı içeriği duraklatmasına ve devam ettirmesine olanak tanıyan zaman kaydırma desteği ZORUNLUDUR. Söz konusu program için zaman değiştirme kullanılabiliyorsa, cihaz uygulamalarının kullanıcıya o anda oynatılan programı duraklatması ve devam ettirmesi için bir yöntem OLMALIDIR.
3.12.1.5. TV kaydı
Android Televizyon cihaz uygulamalarının TV kaydını desteklemesi için ÖNEMLE ÖNERİLİR. TV girişi kaydı destekliyorsa, bu tür bir programın kaydı yasak değilse EPG programı kaydetmek için bir yöntem sağlayabilir. Cihaz uygulamalarında, kayıtlı programların yürütülmesi için bir kullanıcı arayüzü SAĞLANMALIDIR.
3:13. Hızlı Ayarlar
Android cihaz uygulamaları, 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 İÇERMELİDİR.
Android, üçüncü taraf uygulamalarının Hızlı Ayarlar kullanıcı arayüzü bileşeninde sistem tarafından sağlanan karoların yanı sıra kullanıcı tarafından eklenebilecek kartları uygulamasına olanak tanıyan quicksettings
API'sini içerir. Bir cihaz uygulamasının Hızlı Ayarlar kullanıcı arayüzü bileşeni varsa:
- Kullanıcının Hızlı Ayarlar'a üçüncü taraf bir uygulamadan kart eklemesine veya kaldırmasına İZİN VERİLMELİDİR.
- Bir üçüncü taraf uygulamasından doğrudan Hızlı Ayarlar'a otomatik olarak kutu EKLEMEMELİDİR.
- Üçüncü taraf uygulamalarındaki kullanıcılar tarafından eklenen tüm karoların, sistem tarafından sağlanan hızlı ayar kutularıyla birlikte GÖRÜNTÜLENMELİDİR.
3:14. Araç Kullanıcı Arayüzü API'leri
3.14.1. Araç Medya Kullanıcı Arayüzü
Otomotiv desteği olduğunu beyan eden tüm cihaz uygulamalarının, MediaTarayıcı ve MediaSession API'lerini kullanan üçüncü taraf uygulamaları destekleyecek bir kullanıcı arayüzü çerçevesi içermesi ZORUNLUDUR.
MediaTarayıcı ve MediaSession'a bağlı üçüncü taraf uygulamaları destekleyen kullanıcı arayüzü çerçevesinin aşağıdaki görsel gereksinimleri vardır:
- MediaItem simgeleri ve bildirim simgeleri değiştirilmeden GÖRÜNTÜLENMELİDİR.
- Bu öğelerin MediaSession tarafından açıklandığı şekilde görüntülenmesi ZORUNLUDUR (ör. meta veriler, simgeler, görüntüler).
- Uygulama başlığı GEREKLİDİR.
- MediaTarayıcı hiyerarşisini sunmak için çekmecenin olması ZORUNLUDUR.
4. Uygulama Paketleme Uyumluluğu
Cihaz uygulamalarının, resmi Android SDK'sında bulunan "aapt" aracı tarafından oluşturulan Android ".apk" dosyalarının yüklenmesi ve çalıştırılması ZORUNLUDUR. Bu nedenle, cihaz uygulamalarında referans uygulamanın paket yönetim sistemi KULLANILMALIDIR.
Paket yöneticisinin, ".apk" dosyalarının APK İmza Şeması v2 ve JAR imzalama kullanılarak doğrulanmasını desteklemesi GEREKİR.
Cihaz uygulamaları; .apk, Android Manifest, Dalvik bayt kodu veya RenderScript bayt kodu biçimlerini, bu dosyaların diğer uyumlu cihazlara yüklenmesini ve çalışmasını önleyecek şekilde GENİŞLETMEMELİDİR.
5. Multimedya Uyumluluğu
5.1. Medya Codec'leri
Cihaz uygulamaları:
-
Bu dokümanda açıkça izin verilen durumlar dışında, 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 parametresinde bildirilen tüm profillerin kodunu çözebilmesi ZORUNLUDUR
-
Kodlayabildiği tüm biçimlerin kodunu çözebilmesi ZORUNLUDUR. Buna kodlayıcılarının oluşturduğu tüm bit akışları dahildir.
Codec'ler minimum codec gecikmesini, diğer bir deyişle codec'leri hedeflemelidir.
- Giriş arabelleklerini ve giriş arabelleklerini yalnızca bir kez işlendikten sonra Tüketip depolamamalı ve depolamamalısınız.
- Kodu çözülmüş arabelleklerde, standart tarafından belirtilenden (ör. SPS) daha uzun süre TUTULMAMALIDIR.
- Kodlanmış tamponları GOP yapısının gerektirdiğinden daha uzun süre TUTULMAMALIDIR.
Aşağıdaki tabloda listelenen tüm codec'ler, Android Açık Kaynak Projesi'nden tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanmıştır.
Ne Google ne de Open Handset Alliance'ın, bu codec'lerin üçüncü taraf patentlerden bağımsız olduğu konusunda herhangi bir beyanda bulunmadığını unutmayın. Bu kaynak kodu donanım veya yazılım ürünlerinde kullanmak isteyen kişilere, açık kaynak yazılımlar veya paylaşılan yazılımlar da dahil olmak üzere bu kodu uygulamak için ilgili patent sahiplerinden patent lisansları alınması gerekebileceği tavsiye edilir.
5.1.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) |
ZORUNLU 1 | Zorunlu | 8 ila 48 kHz arasında standart örnekleme hızlarıyla mono/stereo/5.0/5.1 2 içerik desteği. |
|
MPEG-4 HE AAC Profili (AAC+) |
ZORUNLU 1 (Android 4.1 ve sonraki sürümleri) |
Zorunlu | 16-48 kHz arasında standart örnekleme hızlarıyla mono/stereo/5.0/5.1 2 içerik desteği. | |
MPEG-4 HE AACv2 Profil (geliştirilmiş AAC+) |
Zorunlu | 16-48 kHz arasında standart örnekleme hızlarıyla mono/stereo/5.0/5.1 2 içerik desteği. | ||
AAC ELD (geliştirilmiş düşük gecikmeli AAC) |
ZORUNLU 1 (Android 4.1 ve sonraki sürümleri) |
ZORUNLU (Android 4.1 ve sonraki sürümleri) |
Standart örnekleme hızları 16 ila 48 kHz arasında olan mono/stereo içerik desteği. | |
AMR ve NB | ZORUNLU 3 | ZORUNLU 3 | 8 kHz'de örneklenmiş 4,75 - 12,2 kb/sn | 3GPP (.3gp) |
AMR-WB | ZORUNLU 3 | ZORUNLU 3 | 16 kHz'de örneklenmiş 6,60 kbit/sn ile 23,85 kbit/s arasındaki 9 hız | |
FLAC |
ZORUNLU (Android 3.1 ve sonraki sürümleri) |
Mono/Stereo (çok kanallı değil). 48 kHz'e kadar örnek hızları (ancak 48-44,1 kHz alt örnekleyicide düşük geçiş filtresi bulunmadığından 44,1 kHz çıkışa sahip cihazlarda 44,1 kHz'e kadar ÖNERİLİR). 16 bit ÖNERİLİR; 24 bit için dither 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 Sürüm 1 ve 2. XMF ve Mobile XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek |
|
|
Vorbis | Zorunlu |
|
||
PCM/DALGA |
ZORUNLU 4 (Android 4.1 ve sonraki sürümleri) |
Zorunlu | 16 bit doğrusal PCM (donanım sınırına kadar hızlanır). Cihazların ham PCM kaydı için 8000, 11025, 16000 ve 44100 Hz frekanslarında örnekleme hızlarını desteklemesi gerekir. | DALGA (.wav) |
Opus |
ZORUNLU (Android 5.0 ve sonraki sürümler) |
Matroska (.mkv), Ogg(.ogg) |
1 android.hardware.microphone tanımlayan cihaz uygulamaları için gereklidir, Android Watch cihaz uygulamaları için isteğe bağlıdır.
2 Kayıt veya oynatma, mono veya stereo olarak yapılabilir. Ancak, android.media.MediaCodec API'deki varsayılan AAC ses kod çözücüyü kullanarak çok kanallı akışların (yani ikiden fazla kanal) AAC giriş arabelleklerinin kodunu çözme işlemi, aşağıdakilerin desteklenmesi ZORUNLUDUR:
- kod çözme işlemi, indirme işlemi yapılmadan gerçekleştirilir (örneğin, 5.0 AAC akışının kodu beş PCM kanalına, 5.1 AAC akışının kodu altı PCM kanalına ayrıştırılmalıdır),
- "Dinamik Aralık Kontrolü (DRC)" bölümünde tanımlandığı gibi dinamik aralık meta verileri ve android.media.MediaFormat DRC tuşlarını kullanabilirsiniz. AAC DRC anahtarları API 21'de kullanıma sunulmuştur ve şunlardır: KEY_AAC_DRC_ATTENUATION_FACTOR, KEY_AAC_DRC_BOOST_FACTOR, KEY_AAC_DRC_HEAVY_COMPRESSION, KEY_AAC_DRC_TARGET_REFERENCE_LEVEL ve KEY_AAC_ENCODED_TARGET_LEVEL
3 Android Avuç içi cihaz uygulamaları için gereklidir.
4 Android Watch cihaz uygulamaları da dahil olmak üzere android.hardware.microphone öğesini 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 | Temel+progresif | 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
-
Reklam HDR profili desteği sunan codec'ler, HDR statik meta veri ayrıştırma ve işlemeyi DESTEKLEMELİDİR.
-
Bir medya codec'i, içi yenileme desteğinin tanıtımını yapıyorsa 10 - 60 kare aralığındaki yenileme sürelerini desteklemeli ve yapılandırılmış yenileme döneminin% 20'sinde doğru şekilde çalışmalıdır.
-
Video codec'leri, standart ve yapılandırma tarafından belirtildiği gibi, uygun olan 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ı desteklemelidir.
-
Video kodlayıcılar ve kod çözücüler YUV420 esnek renk biçimini (COLOR_FormatYUV420Esnek) DESTEKLEMELİDİR.
Biçim/Codec | Kodlayıcı | Kod çözücü | Ayrıntılar |
Desteklenen Dosya Türleri/ Kapsayıcı Biçimleri |
---|---|---|---|---|
H.263 | MAYIS | MAYIS |
|
|
H.264 AVC | ZORUNLU 2 | ZORUNLU 2 | Ayrıntılar için bölüm 5.2 ve 5.3'e bakın |
|
H.265 HEVC | ZORUNLU 5 | Ayrıntılar için bkz. bölüm 5.3 | MPEG-4 (.mp4) | |
MPEG-2 | Şiddetle ÖNERİLİR 6 | Ana Profil | MPEG2-TS | |
MPEG-4 SP | ZORUNLU 2 | 3GPP (.3gp) | ||
VP8 3 |
ZORUNLU 2 (Android 4.3 ve sonraki sürümleri) |
ZORUNLU 2 (Android 2.3.3 ve sonraki sürümleri) |
Ayrıntılar için bölüm 5.2 ve 5.3'e bakın |
|
Başkan Yardımcısı |
ZORUNLU 2 (Android 4.4 ve sonraki sürümler) |
Ayrıntılar için bkz. bölüm 5.3 |
|
1 Kamera donanımı içeren ve android.hardware.camera veya android.hardware.camera.front'u tanımlayan cihaz uygulamaları için gereklidir.
2 Android Watch cihazları dışındaki cihaz uygulamaları için gereklidir.
3 Web video akışı ve video konferans hizmetlerinin kabul edilebilir kalitede olması için cihaz uygulamalarında, gereksinimleri karşılayan bir donanım VP8 codec'i KULLANILMALIDIR.
4 Cihaz uygulamaları, Matroska WebM dosyalarının yazılmasını DESTEKLEMELİDİR.
5 Android Automotive için ÖNEMLE Ö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 Televizyon cihazı uygulamaları için geçerlidir.
5.2. Video Kodlaması
H.264, VP8, VP9 ve HEVC video kodlayıcılar:
- Dinamik olarak yapılandırılabilen bit hızlarını DESTEKLEMELİDİR.
- Video kodlayıcı, giriş arabelleklerinin zaman damgalarına göre anlık kare süresini belirlemeli ve bit grubunu bu kare süresine göre ayırmalıdır.
H.263 ve MPEG-4 video kodlayıcı, dinamik olarak yapılandırılabilen bit hızlarını desteklemektedir.
Tüm video kodlayıcıları, iki kayan zaman aralığında aşağıdaki bit hızı hedeflerini KARŞILAŞMALIDIR:
- Kare içi (kare içi) aralıklar arasındaki bit hızının ~% 15'ten fazla olmaması GEREKİR.
- 1 saniyelik kayan bir pencerede bit hızının yaklaşık% 100'ün üzerinde olmamalıdır.
5.2.1. H.263
H.263 kodlayıcılarla Android cihaz uygulamalarının Temel Profil Düzeyi 45'i desteklemesi ZORUNLUDUR.
5.2.2. H-264
H.264 codec destekli Android cihaz uygulamaları:
- Temel Profil Düzeyi 3'ü DESTEKLEMELİDİR.
. Ancak ASO (İsteğe Bağlı Dilim Siparişi), FMO (Esnek Makro Blok Siparişleme) ve RS (Gereksiz Dilimler) desteği İSTEĞE BAĞLIDIR. Ayrıca, diğer Android cihazlarla uyumluluğun korunması için kodlayıcılar tarafından Temel Profilde ASO, FMO ve RS'lerin kullanılmaması ÖNERİLİR. - Aşağıdaki tabloda yer alan SD (Standart Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
- Ana Profil Düzeyi 4'ü DESTEKLEMELİDİR.
- Aşağıdaki tabloda belirtildiği şekilde HD (Yüksek Çözünürlüklü) video kodlama profillerini DESTEKLEMELİDİR.
- Ayrıca, Android Televizyon cihazlarının 30 fps'de HD 1080p video kodlaması Ö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ı | Saniyede 20 fps | 30 fps | 30 fps | 30 fps |
Video bit hızı | 384 Kb/sn | 2 Mb/sn | 4 Mb/sn | 10 Mb/sn |
1 Donanım tarafından desteklendiğinde, Android Televizyon cihazları için ÖNEMLE ÖNERİLİR.
5.2.3. VP8
VP8 codec destekli Android cihaz uygulamalarının SD video kodlama profillerini DESTEKLEMELİ ve aşağıdaki HD (Yüksek Çözünürlüklü) video kodlama profillerini desteklemesi GEREKİ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 Kodu Çözme
Cihaz uygulamaları:
-
Tüm VP8, VP9, H.264 ve H.265 codec'leri için aynı akışta, cihazdaki her bir codec tarafından desteklenen maksimum çözünürlüğe kadar standart Android API'leri aracılığıyla dinamik video çözünürlüğü ve kare hızı geçişinin desteklenmesi ZORUNLUDUR.
-
Dolby Vision kod çözücüyü destekleyen uygulamalar:
- Dolby Vision özellikli bir ayıklayıcı SAĞLANMALIDIR.
-
Dolby Vision içeriği, cihaz ekranında veya standart bir video çıkış bağlantı noktasında (ör. HDMI).
-
Dolby Vision özellikli bir ayıklayıcı sağlayan uygulamaların, varsa geriye dönük uyumlu temel katmanların izleme dizinini, birleştirilmiş Dolby Vision katmanının izleme diziniyle aynı olacak şekilde AYARLAMALIDIR.
5.3.1. MPEG-2
MPEG-2 kod çözücülere sahip Android cihaz uygulamaları Ana Profil Yüksek Düzeyi'ni desteklemelidir.
5.3.2. H.263
H.263 kod çözücülere sahip Android cihaz uygulamalarının Temel Profil Düzeyi 30 ve Düzey 45'i desteklemesi ZORUNLUDUR.
5.3.3. MPEG-4
MPEG-4 kod çözücülere sahip Android cihaz uygulamaları Basit Profil Düzeyi 3'ü DESTEKLEMELİDİR.
5.3.4. H.264
H.264 kod çözücülerle Android cihaz uygulamaları:
- Ana Profil Düzeyi 3.1 ve Temel Profil'i DESTEKLEMELİDİR.
. ASO (İsteğe Bağlı Dilim Siparişi), FMO (Esnek Makro Blok Siparişi) ve RS (Gereksiz Dilimler) desteği İSTEĞE BAĞLIDIR. - Aşağıdaki tabloda listelenen ve Temel Profil ile Ana Profil Düzeyi 3.1 (720p30 dahil) ile kodlanmış SD (Standart Çözünürlüklü) profillerine sahip videoların kodunu çözebilmesi ZORUNLUDUR.
- Aşağıdaki tabloda belirtildiği gibi HD (Yüksek Çözünürlüklü) profillerine sahip videoların kodunu çözebilmelidir.
- Buna ek olarak, Android Televizyon cihazları
- High Profile Level 4.2 ve HD 1080p60 kod çözme profilinin desteklenmesi ZORUNLUDUR.
- Aşağıdaki tabloda belirtildiği gibi her iki HD profiliyle videoların kodunu çözebilmeli ve Temel Profil, Ana Profil veya Yüksek Profil Düzeyi 4.2 ile kodlanmalıdır.
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üksekliğin, video çözünürlüğüne eşit veya ondan yüksek olması durumunda ZORUNLUDUR.
2 Android Televizyon cihazı uygulamaları için ZORUNLUDUR.
5.3.5. H.265 (HEVC)
Bölüm 5.1.3'te açıklandığı gibi H.265 codec'i destekleyen Android cihaz uygulamaları:
- Aşağıdaki tabloda belirtildiği gibi Ana Profil Düzeyi 3 Ana katmanının ve SD video kod çözme profillerinin desteklenmesi ZORUNLUDUR.
- Aşağıdaki tabloda belirtildiği şekilde HD kod çözme profillerini DESTEKLEMELİDİR.
- Donanım kod çözücü varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini desteklemelidir.
- Buna ek olarak Android Televizyon cihazları:
- HD 720p kod çözme profilini desteklemelidir.
- HD 1080p kod çözme profilini desteklemesi Şiddetle ÖNERİLİR. HD 1080p kod çözme profili destekleniyorsa Ana Profil Düzeyi 4.1 Ana katmanını desteklemesi ZORUNLUDUR.
- UHD kod çözme profilini DESTEKLEMELİDİR. UHD kod çözme profili destekleniyorsa codec'in, Ana 10 Seviye 5 Ana Katman profilini desteklemesi GEREKİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü | 352 x 288 piksel | 720 x 480 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 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 işlemi içeren Android Televizyon cihazı uygulamaları için ZORUNLUDUR.
5.3.6. VP8
Bölüm 5.1.3'te açıklandığı gibi VP8 codec'i destekleyen Android cihaz uygulamaları:
- Aşağıdaki tabloda yer alan SD kod çözme profillerini DESTEKLEMELİDİR.
- Aşağıdaki tabloda yer alan HD kod çözme profillerini DESTEKLEMELİDİR.
- Android Televizyon cihazları HD 1080p60 kod çözme profilini desteklemelidir.
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üksekliğin, video çözünürlüğüne eşit veya ondan yüksek olması durumunda ZORUNLUDUR.
2 Android Televizyon cihazı uygulamaları için ZORUNLUDUR.
5.3.7. Başkan Yardımcısı
Bölüm 5.1.3'te açıklandığı gibi VP9 codec'i destekleyen Android cihaz uygulamaları:
- Aşağıdaki tabloda belirtilen SD video kod çözme profillerinin desteklenmesi ZORUNLUDUR.
- Aşağıdaki tabloda belirtildiği şekilde HD kod çözme profillerini DESTEKLEMELİDİR.
- Donanım kod çözücü varsa aşağıdaki tabloda belirtilen HD kod çözme profillerini desteklemelidir.
-
Buna ek olarak Android Televizyon cihazları:
- HD 720p kod çözme profilini desteklemelidir.
- HD 1080p kod çözme profilini desteklemesi Şiddetle ÖNERİLİR.
- UHD kod çözme profilini DESTEKLEMELİDİR. UHD video kod çözme profili destekleniyorsa 8 bit renk derinliğini desteklemektedir ve VP9 Profile 2'yi (10 bit) DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p | HD 1080p | UHD | |
---|---|---|---|---|---|
Video çözünürlüğü | 320 x 180 piksel | 640 x 360 piksel | 1280 x 720 piksel | 1920 x 1080 piksel | 3840 x 2160 piksel |
Video kare hızı | 30 fps | 30 fps | 30 fps | 30 fps (60 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 özellikli Android Televizyon cihaz uygulamaları için ZORUNLUDUR.
5.4. Ses Kaydetme
Bu bölümde açıklanan gereksinimlerden bazıları Android 4.3'ten itibaren KULLANILMALIDIR şeklinde ifade edilmiş olsa da, gelecekteki bir sürümün Uyumluluk Tanımı'nın bunları "ZORUNLU" olarak değiştirmesi planlanmaktadır. Mevcut ve yeni Android cihazların, GEREKLİ olarak belirtilen bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR. Aksi takdirde, gelecekteki sürüme yükseltildiğinde Android uyumluluğuna ulaşamazlar.
5.4.1. Ham Ses Yakalama
android.hardware.microphone özelliğinin belirtildiği cihaz uygulamalarında, aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına izin verilmesi ZORUNLUDUR:
- Biçim : Doğrusal PCM, 16 bit
- Örnekleme ücretleri : 8000, 11025, 16000, 44100
- Kanallar : Mono
Yukarıdaki örnek hızları için yakalama yukarı örnekleme olmadan yapılmalıdır ve aşağı örnekleme için uygun bir kenar yumuşatma filtresi ZORUNLUDUR.
android.hardware.microphone tanımlayan cihaz uygulamaları, aşağıdaki özelliklere sahip ham ses içeriğinin yakalanmasına İZİN VERİLMELİDİR:
- Biçim : Doğrusal PCM, 16 bit
- Örnekleme ücretleri : 22050, 48000
- Kanallar : Stereo
Yukarıdaki örnek hızları için yakalama destekleniyorsa yakalamanın 16000:22050 veya 44100:48000'den yüksek bir oranda yukarı örnekleme yapılmadan yapılması ZORUNLUDUR. Yukarı veya aşağı örnekleme işleminde uygun bir kenar yumuşatma filtresi ZORUNLUDUR.
5.4.2. Ses Tanıma için Ekran Kaydı
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION ses kaynağının, örnekleme hızlarından birinde (44100 ve 48000) görüntü yakalamayı desteklemesi ZORUNLUDUR.
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, yaklaşık olarak sabit genlik ve frekans özelliklerine karşılık gelmelidir. Özellikle, 100 Hz ile 4000 Hz arasında ±3 dB.
- Ses giriş hassasiyeti, 1.000 Hz'de 90 dB ses gücü düzeyinde (SPL) bir kaynak, 16 bit örnekler için 2.500 RMS üretecek şekilde ayarlanmalıdır.
- PCM genlik seviyeleri, mikrofondaki -18 dB ila +12 dB, 90 dB SPL'de en az 30 dB'lik bir aralıkta giriş SPL değişikliklerini doğrusal olarak izlemelidir.
- Mikrofondaki 90 dB SPL giriş düzeyinde 1 kHz için toplam harmonik bozulma% 1'den az OLMALIDIR.
- Gürültü azaltma işleme varsa, bu özelliğin devre dışı bırakılması ZORUNLUDUR.
- Otomatik kazanç kontrolü (varsa) devre dışı ZORUNLUDUR.
Platform, konuşma tanıma için ayarlanmış gürültü azaltma teknolojilerini destekliyorsa bu etkinin android.media.audiofx.NoiseSuppressor API'sinden kontrol edilmesi ZORUNLUDUR. Ayrıca, gürültü azaltıcının efekt tanımlayıcısının UUID alanının, gürültü azaltma teknolojisinin her uygulamasını benzersiz bir şekilde tanımlaması ZORUNLUDUR.
5.4.3. Oynatmanın Yeniden Yönünün Belirlenmesi için Fotoğraf Çek
android.media.MediaRecorder.AudioSource sınıfı, REMOTE_SUBMIX ses kaynağını içerir. android.hardware.audio. çıkışlı cihazların REMOTE_SUBMIX ses kaynağını doğru bir şekilde uygulaması GEREKİ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
- CANLI_ALARM
- STREAM_BİLDİRİM
5.5. Ses Çalma
android.hardware.audio.çıkışlı cihaz uygulamalarının bu bölümdeki şartlara UYMALIDIR.
5.5.1. Ham Ses Oynatma
Cihazın, aşağıdaki özelliklere sahip ham ses içeriğinin oynatılmasına izin vermesi ZORUNLUDUR:
- Biçim : Doğrusal PCM, 16 bit
- Örnekleme ücretleri : 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 ücretleri : 24.000, 48.000
5.5.2. Ses Efektleri
Android, cihaz uygulamalarına yönelik bir ses efektleri API'si sağlar. android.hardware.audio.Exit özelliğini tanımlayan cihaz uygulamaları:
- AudioEffect alt sınıfları Equalizer, LoudnessDevelopr üzerinden kontrol edilebilen EF_TYPE_EQUALIZER ve EF_TYPE_LOUDNESS_ENHANCER uygulamalarını desteklemelidir.
- Görselleştirici sınıfıyla kontrol edilebilen görselleştirici API uygulamasını DESTEKLEMELİDİR.
- AudioEffect alt sınıfları BassBoost, EnvironmentalReverb, PresetReverb ve Virtualizer üzerinden kontrol edilebilen EF_TYPE_BASS_BOOST, EF_TYPE_ENV_REVERB, EF_TYPE_PRESET_REVERB ve EF_TYPE_VIRTUALIZER uygulamalarını desteklemektedir.
5.5.3. Ses Çıkışı Ses Seviyesi
Android Televizyon cihaz uygulamalarının, sıkıştırılmış ses geçişi çıkışı (cihazda herhangi bir ses kodu çözme işlemi yapılmaz) hariç olmak üzere, desteklenen çıkışlarda sistem Ana Ses Seviyesi ve dijital ses çıkışı sesi azaltma desteği içermesi ZORUNLUDUR.
Android Automotive cihaz uygulamalarında, AudioAttributes (Ses Özellikleri) özelliğinde tanımlandığı şekilde içerik türü veya kullanımı ve android.car.CarAudioManager
ürününde herkese açık olarak tanımlanan araç ses kullanımı kullanılarak ses düzeyinin her ses yayını için ayrı ayrı ayarlanması GEREKİR .
5.6. Ses Gecikmesi
Ses gecikmesi, ses sinyalinin bir sistemden geçmesi nedeniyle oluşan gecikmedir. Birçok uygulama sınıfı, gerçek zamanlı ses efektleri elde etmek için kısa gecikmelere ihtiyaç duyar.
Bu bölümün amaçları doğrultusunda, aşağıdaki tanımları kullanın:
- çıkış gecikmesi de sağlar . Bir uygulamanın PCM kodlu verilerin bir çerçevesini yazması ile cihaz üzerindeki bir dönüştürücüde veya sinyalin ortama karşılık gelen sesin bir bağlantı noktası aracılığıyla cihazdan ayrılması ve harici olarak gözlemlenmesi arasındaki zaman aralığı.
- soğuk çıkış gecikmesi . Ses çıkış sistemi istekten önce boşta ve kapalı olduğunda ilk kare için çıkış gecikmesi.
- sürekli çıkış gecikmesi . Cihaz ses çaldıktan sonra, sonraki kareler için çıkış gecikmesi.
- giriş gecikmesi . Bir sesin ortam tarafından cihaz üzerinde bir transdüser veya sinyalin cihaza sunulması ile cihazın bir bağlantı noktası üzerinden cihaza girmesi ile bir uygulamanın PCM kodlu verilerin karşılık gelen çerçevesini okuması arasında geçen aralık.
- kayıp giriş . Giriş sinyalinin kullanılamıyor veya kullanılamayan ilk kısmı.
- soğuk giriş gecikmesi . İstekten önce ses giriş sistemi boşta ve kapalı olduğunda ilk kare için kaybedilen giriş süresi ile giriş gecikmesinin toplamı.
- sürekli giriş gecikmesi . Cihaz ses kaydederken sonraki kareler için giriş gecikmesi.
- soğuk çıkış ses dalgalanması . Soğuk çıkış gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- soğuk giriş ses dalgalanması . Baştan gelen giriş gecikmesi değerlerinin ayrı ölçümleri arasındaki değişkenlik.
- sürekli gidiş dönüş gecikmesi . Sürekli giriş gecikmesi ile sürekli çıkış gecikmesi ve bir arabellek süresinin toplamı. Arabellek süresi, uygulamanın sinyali işlemesi ve giriş ve çıkış akışları arasındaki faz farkını azaltması için gereken süreyi sağlar.
- OpenSL ES PCM arabellek sırası API'si Android NDK içindeki PCM ile ilgili OpenSL ES API'leri grubu.
android.hardware.audio.çıkışlı cihaz uygulamalarının aşağıdaki ses çıkışı gereksinimlerini karşılaması veya aşması ÖNERİLİR:
- 100 milisaniye veya daha az soğuk çıkış gecikmesi
- 45 milisaniye veya daha kısa sürekli çıkış gecikmesi
- soğuk çıkış ses dalgalanmasını en aza indir
Bir cihaz uygulaması, OpenSL ES PCM arabellek sırası API'si kullanılırken herhangi bir ilk kalibrasyondan sonra bu bölümün şartlarını karşılıyorsa desteklenen en az bir ses çıkış cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için android.content.content.content.content üzerinden android.hardware.pmaudio.low_latency" özelliğini bildirerek düşük gecikmeli ses desteğinin raporlanması ÖNEMLE ÖNERİLİR. Öte yandan, cihaz uygulaması bu koşulları karşılamıyorsa düşük gecikmeli ses desteği BELİRTMEMELİDİR.
android.hardware.microphone içeren cihaz uygulamalarının, aşağıdaki giriş ses gereksinimlerini karşılaması ÖNEMLE ÖNERİLİR:
- 100 milisaniye veya daha az soğuk giriş gecikmesi
- 30 milisaniye veya daha kısa sürekli giriş gecikmesi
- 50 milisaniye veya daha kısa süreli sürekli gidiş dönüş gecikmesi
- soğuk giriş ses dalgalanmasını en aza indir
5.7. Ağ Protokolleri
Cihazlar, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini desteklemelidir. Cihazların özellikle aşağıdaki medya ağı protokollerini desteklemesi ZORUNLUDUR:
-
HTTP(S) progresif akış
Bölüm 5.1'de belirtilen tüm gerekli codec'ler ve kapsayıcı biçimleri HTTP(S) üzerinden DESTEKLENMELİDİR -
HTTP Canlı Yayın taslak protokolü, Sürüm 7
Aşağıdaki medya segmenti biçimlerinin desteklenmesi ZORUNLUDUR:
Segment biçimleri | Referanslar | Gerekli codec desteği |
---|---|---|
MPEG-2 Taşıma Akışı | ISO 13818 |
Video codec'leri:
ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. ve MPEG-2. Ses codec'leri:
|
ADTS kadrajı ve ID3 etiketleri içeren AAC | ISO 13818-7 | AAC ve varyantları hakkında ayrıntılar için bölüm 5.1.1'e bakın. |
WebVTT | WebVTT |
-
RTSP (RTP, SDP)
Aşağıdaki RTP ses videosu profili ve ilgili codec'ler DESTEKLENMELİDİR. İstisnalar için lütfen bölüm 5.1'deki 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 bölüm 5.1.3'e bakın. |
MP4A-LATM | RFC 6416 | AAC ve varyantları hakkında ayrıntılar için bölüm 5.1.1'e bakın. |
H263-1998 |
RFC 3551 RFC 4629 RFC 2190 |
H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
H263-2.000 | RFC 4629 | H263 ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
AMR | RFC 4867 | AMR-NB ile ilgili ayrıntılar için bölüm 5.1.1'e bakın. |
AMR-WB | RFC 4867 | AMR-WB hakkında ayrıntılı bilgi için bölüm 5.1.1'e bakın. |
MP4V-ES | RFC 6416 | MPEG-4 SP ile ilgili ayrıntılar için bölüm 5.1.3'e bakın. |
mpeg4-genel | RFC 3640 | AAC ve varyantları hakkında ayrıntılar için bölüm 5.1.1'e bakın. |
MP2T | RFC 2250 | Ayrıntılar için HTTP Canlı Akışı altındaki MPEG-2 Taşıma Akışı bölümüne bakın |
5.8. Güvenli Medya
Güvenli video çıkışını destekleyen ve güvenli yüzeyleri destekleyebilen cihaz uygulamalarında Ekran desteğinin belirtilmesi ZORUNLUDUR.FLAG_SECURE Display.FLAG_SECURE tarafından desteklendiğini belirten cihaz uygulamaları, kablosuz görüntüleme protokolünü destekliyorsa bağlantıyı, Miracast kablosuz ekranlar için HDCP 2.x veya sonraki sürümleri gibi kriptografik açıdan güçlü bir mekanizma ile güvenli hale getirmelidir. Benzer şekilde, kablolu harici ekranı destekliyorlarsa, cihaz uygulamalarının HDCP 1.2 veya üstünü desteklemesi ZORUNLUDUR. Android Televizyon cihaz uygulamalarının, 4K çözünürlüğü ve daha düşük çözünürlükler için HDCP 1.4 veya üstünü destekleyen cihazlarda HDCP 2.2'yi desteklemesi ZORUNLUDUR. Yukarı akış Android açık kaynak uygulaması, bu şartı karşılayan kablosuz (Miracast) ve kablolu (HDMI) ekranlar için destek içerir.
5.9. Müzik Aleti Dijital Arayüzü (MIDI)
Bir cihaz uygulaması, uygulamalar arası 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ımlarının tümünde MIDI'yı destekliyorsa android.content.pm.PackageManager sınıfı aracılığıyla android.software.midi özelliğine yönelik desteğin raporlanması ÖNEMLE ÖNERİLİR.
MIDI özellikli donanım aktarımları şunlardır:
- USB ana makine modu (bölüm 7.7 USB)
- USB çevre birimi modu (bölüm 7.7 USB)
- Merkezi rolde görev alan Bluetooth LE üzerinden MIDI (bölüm 7.4.3 Bluetooth)
Buna karşılık, cihaz uygulaması yukarıda listelenen belirli bir MIDI özellikli donanım aktarımı üzerinden genel MIDI olmayan bağlantı sağlıyorsa ancak bu donanım aktarımı üzerinden MIDI'yı desteklemiyorsa, android.software.midi özelliğine ilişkin destek BildirMEMELİDİR.
5.10. Profesyonel Ses
Bir cihaz uygulaması aşağıdaki gereksinimlerin tümünü karşılıyorsa android.content.pm.PackageManager sınıfı aracılığıyla android.hardware.audio.pro özelliğine ilişkin desteğin bildirilmesi ÖNEMLE ÖNERİLİR.
- Cihaz uygulamasının, android.hardware.audio.low_latency özelliği için destek bildirmesi ZORUNLUDUR.
- Bölüm 5.6'da Ses Gecikmesi'nde tanımlandığı gibi, kesintisiz gidiş dönüş ses gecikmesinin 20 milisaniye veya daha kısa olması ZORUNLUDUR ve desteklenen en az bir yol boyunca 10 milisaniye veya daha kısa olmalıdır.
- Cihaz, 4 iletkenli 3,5 mm ses jakı içeriyorsa, kesintisiz gidiş dönüş ses gecikmesinin, ses jakı yolundan 20 milisaniye veya daha az olması ve ses jakı yolunda en fazla 10 milisaniye olması GEREKİR.
- Cihaz uygulamasında USB ana makine modunu ve USB çevre birimi modunu destekleyen bir USB bağlantı noktası içermesi ZORUNLUDUR.
- USB ana makine modunda, USB ses sınıfının uygulanması ZORUNLUDUR.
- Cihazda bir HDMI bağlantı noktası varsa cihaz uygulamasının, bit derinliği kaybı veya yeniden örnekleme olmaksızın stereo çıkışları ve 20 bit veya 24 bit derinlikte sekiz kanalı ve 192 kHz'i DESTEKLEMELİDİR.
- Cihaz uygulamasının, android.software.midi özelliği için destek bildirmesi GEREKİR.
- Cihaz 4 iletkenli 3, 5 mm ses jakına sahipse Kablolu Mikrofonlu Kulaklık Spesifikasyonu'nun (v1.1) Mobil cihaz (jak) spesifikasyonları bölümüne uygun olması için cihaz uygulaması ÖNEMLE ÖNERİLİR.
Gecikmeler ve USB ses gereksinimleri OpenSL ES PCM arabellek sırası API'si kullanılarak karşılanmalıdır.
Ayrıca, bu özelliğin desteklendiğini bildiren bir cihaz uygulaması şunları YAPMAMALIDIR:
- Ses etkin durumdayken sürdürülebilir düzeyde CPU performansı sağlayın.
- Ses saatinin doğruluğunu en aza indirin ve standart saate göre kayması en aza indirilir.
- Her ikisi de etkin olduğunda
CLOCK_MONOTONIC
CPU'ya göre ses saati kayması en aza iner. - Cihaz üzerindeki transdüserlerde ses gecikmesini en aza indirin.
- USB dijital ses üzerinden ses gecikmesini en aza indirin.
- Ses gecikmesi ölçümlerini tüm yollar için belgeleyin.
- Geri çağırma ile tam CPU bant genişliğinin kullanılabilir yüzdesini etkilediğinden ses arabelleği tamamlama geri çağırma giriş sürelerinde titremeyi en aza indirin.
- Bildirilen gecikmede normal kullanım altında sıfır ses çıkışı (çıkış) veya aşım sayısı (giriş) sağlayın.
- Kanallar arası gecikme farkı sağlamamalıdır.
- Tüm aktarımlar üzerinde MIDI ortalama gecikmesini en aza indirin.
- Tüm aktarımlarda yük altındaki MIDI gecikmesi değişkenliğini (ses dalgalanması) en aza indirin.
- Tüm taşıma işlemleri için doğru MIDI zaman damgaları sağlayın.
- Soğuk başlatmadan hemen sonraki dönem de dahil olmak üzere cihaz üzerindeki transdüserlerde ses sinyali gürültüsünü en aza indirin.
- Her ikisi de etkin olduğunda, karşılık gelen uç noktalarının giriş ve çıkış tarafları arasında sıfır ses saati farkı sağlayın. Karşılık gelen bitiş noktalarına örnek olarak cihaz üzerinde mikrofon ve hoparlör ya da ses jakı girişi ve çıkışı verilebilir.
- Her ikisi de etkin olduğunda aynı iş parçacığındaki karşılık gelen uç noktaların giriş ve çıkış tarafları için ses arabelleği tamamlama geri çağırmalarını işleyin ve giriş geri çağırmasından hemen sonra çıkış geri çağırmasını girin. Geri çağırmaların aynı iş parçacığı üzerinde yapılması uygun değilse uygulamanın giriş ve çıkış tarafları için tutarlı bir zamanlamaya sahip olmasını sağlamak amacıyla, giriş geri çağırması girildikten kısa bir süre sonra çıkış geri çağırmasını girin.
- Karşılık gelen uç noktalarının giriş ve çıkış tarafları için HAL ses arabelleğe alma arasındaki faz farkını en aza indirin.
- Dokunma gecikmesini en aza indirin.
- Yükleme altında dokunma gecikmesi değişkenliğini (ses dalgalanması) en aza indirin.
5:11. İşlenmemiş İçerikleri Yakalama
Android 7.0'dan itibaren yeni bir kayıt kaynağı eklenmiştir. android.media.MediaRecorder.AudioSource.UNPROCESSED
ses kaynağı kullanılarak erişilebilir. OpenSL ES'de, SL_ANDROID_RECORDING_PRESET_UNPROCESSED
kayıt hazır ayarıyla erişilebilir .
Bir cihazın, işlenmemiş ses kaynağı desteğini android.media.AudioManager
PROPERTY_SUPPORT_AUDIO_SOURCE_UNİŞLEMED özelliği aracılığıyla bildirmek için aşağıdaki şartların hepsini karşılaması gerekir:
-
Cihazın orta frekans aralığında yaklaşık olarak düz genlik-frekans özelliklerine sahip olması ZORUNLUDUR: Özellikle 100 Hz ile 7000 Hz arasında ±10 dB.
-
Cihazın düşük frekans aralığında genlik seviyeleri sergilemesi ZORUNLUDUR. Özellikle, orta frekans aralığına kıyasla ±20 dB ile 5 Hz ile 100 Hz arasında değişen değerler elde edilmelidir.
-
Cihazın yüksek frekans aralığında genlik seviyeleri sergilemesi ZORUNLUDUR. Özellikle, orta frekans aralığına kıyasla ±30 dB'den 7.000 Hz - 22 KHz arasında değişen değerler elde edilmelidir.
-
Ses giriş hassasiyetinin, 94 dB Ses Basınç Düzeyinde (SPL) çalınan 1.000 Hz sinüsoidal ton kaynağının 16 bit örnek için 520 RMS (veya kayan nokta/çift hassasiyetli örnekler için -36 dB Tam Ölçek) ile yanıt vereceği şekilde ayarlanması ZORUNLUDUR.
-
SNR > 60 dB (94 dB SPL ve kendi kendine gürültünün eşdeğer SPL'si arasındaki fark, A ağırlıklı).
-
Mikrofondaki 90 dB SPL giriş düzeyinde 1 kHZ için toplam harmonik bozulma% 1'den az OLMALIDIR.
-
Yolda izin verilen tek sinyal işleme işlemi, seviyeyi istenen aralığa getirmek için seviye çarpanıdır. Bu seviye çarpanı, sinyal yolunda gecikme veya gecikme SAĞLAMAZ.
-
Yolda Otomatik Kazanç Kontrolü, Yüksek Geçiş Filtresi veya Yankı Giderme gibi başka bir sinyal işlemeye izin verilmez. Mimaride herhangi bir nedenle herhangi bir sinyal işleme mevcutsa devre dışı bırakılmalı ve sinyal yoluna etkin bir şekilde sıfır gecikme veya ekstra gecikme uygulanmalıdır.
Tüm SPL ölçümleri test edilen mikrofonun hemen yanında yapılır.
Birden fazla mikrofon yapılandırmasında bu koşullar her mikrofon için geçerlidir.
Cihazın, işlenmemiş kayıt kaynağının sinyal yoluna yönelik gereksinimlerin çoğunu karşılaması ÖNEMLE ÖNERİLİR; ancak bir cihaz işlenmemiş ses kaynağını desteklediğini iddia ediyorsa yukarıda listelenen bu gereksinimlerin tümünü karşılamalıdır.
6. Geliştirici Araçları ve Seçenek 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ının, dumpsys dahil olmak üzere Android SDK'da belirtildiği şekilde tüm adb işlevlerini desteklemesi ZORUNLUDUR.
- Cihaz tarafı adb arka plan programının varsayılan olarak etkin olmaması ve Android Hata Ayıklama Köprüsü'nü açmak için kullanıcı tarafından erişilebilen bir mekanizmanın olması ZORUNLUDUR. Bir cihaz uygulaması USB çevre birimi modunu atlarsa yerel alan ağı (Ethernet veya 802.11 gibi) üzerinden Android Hata Ayıklama Köprüsü'nü uygulaması ZORUNLUDUR.
- Android, güvenli adb desteği sunar. Güvenli adb, kimliği doğrulanmış ana makinelerde adb'yi etkinleştirir. Cihaz uygulamalarının güvenli adb'yi desteklemesi ZORUNLUDUR.
-
Dalvik Hata Ayıklama İzleme Hizmeti (ddms)
- Cihaz uygulamalarının, Android SDK'da belirtildiği şekilde tüm ddms özelliklerini desteklemesi ZORUNLUDUR.
- ddms desteği adb kullandığından, ddms desteğinin varsayılan olarak etkin olmaması GEREKİR, ancak kullanıcı yukarıdaki gibi Android Hata Ayıklama Köprüsü'nü her etkinleştirdiğinde bu özelliğin desteklenmesi ZORUNLUDUR.
- Monkey Cihaz uygulamaları, Monkey çerçevesini içermeli ve uygulamaların kullanımına açık olmalıdır.
-
SysTrace
- Cihaz uygulamalarının, Android SDK'da belirtildiği şekilde sistem izleme aracını desteklemesi ZORUNLUDUR. Systrace varsayılan olarak devre dışı olmalıdır ve Systrace'i etkinleştirmek için kullanıcı tarafından erişilebilen bir mekanizma ZORUNLUDUR.
- Linux tabanlı sistemlerin ve Apple Macintosh sistemlerinin çoğu, Android cihazları ek destek gerekmeden standart Android SDK araçlarını kullanarak tanır; Ancak Microsoft Windows sistemleri genellikle yeni Android cihazlar için sürücü gerektirir. (Örneğin, yeni tedarikçi firma kimlikleri ve bazen yeni cihaz kimlikleri, Windows sistemleri için özel USB sürücüleri gerektirir.)
- Bir cihaz uygulaması, standart Android SDK'sında sağlanan adb aracı tarafından tanınmazsa, cihaz uygulayıcılarının geliştiricilerin adb protokolünü kullanarak cihaza bağlanmasına izin veren Windows sürücülerini sağlamaları ZORUNLUDUR. Bu sürücülerin hem 32 bit hem de 64 bit sürümlerinde Windows XP, Windows Vista, Windows 7, Windows 8 ve Windows 10 için sağlanmalıdır.
6.2. Geliştirici seçenekleri
Android'de, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmaları için destek sunulur. Cihaz uygulamalarında, uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS amacına uygun hareket edilmesi ZORUNLUDUR. Yukarı akışlı Android uygulaması, varsayılan olarak Geliştirici Seçenekleri menüsünü gizler ve kullanıcıların, Ayarlar'da yedi (7) kez bastıktan sonra Geliştirici Seçenekleri'ni başlatmalarına olanak tanır. > Cihaz Hakkında > Derleme Numarası menü öğesi. Cihaz uygulamalarının Geliştirici Seçenekleri için tutarlı bir deneyim sağlaması ZORUNLUDUR. Özellikle, cihaz uygulamalarının varsayılan olarak Geliştirici Seçenekleri'ni gizlemesi GEREKİR ve Geliştirici Seçenekleri'ni etkinleştirmek için yukarı yönlü Android uygulaması ile tutarlı bir mekanizma SAĞLANMALIDIR.
7. Donanım Uyumluluğu
Bir cihaz, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir donanım bileşeni içeriyorsa, cihaz uygulamasının bu API'yi Android SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR. SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime girerse ve cihaz uygulaması bu bileşene sahip değilse:
- Bileşen API'leri için eksiksiz sınıf tanımları (SDK'da belirtildiği şekliyle) sunulması ZORUNLUDUR.
- API'nin davranışlarının, makul bir şekilde işlem yok şeklinde uygulanması ZORUNLUDUR.
- API yöntemlerinin, SDK belgelerinde izin verilen yerlerde boş değerler döndürmesi ZORUNLUDUR.
- API yöntemlerinin, SDK belgelerinde boş değerlere izin verilmeyen sınıfların işlemsiz uygulamalarını döndürmesi ZORUNLUDUR.
- API yöntemlerinde, SDK dokümanlarında belirtilmeyen istisnalar YAYINLANMAMALIDIR.
Bu şartların geçerli olduğu tipik bir senaryo örneği telephony API'dir: Telefon olmayan cihazlarda bile bu API'ler makul şekilde işlemsiz olarak uygulanmalıdır.
Cihaz uygulamalarının, aynı derleme parmak izi için android.content.pm.PackageManager sınıfında getSystemAvailableFeatures() ve hasSystemFeature(String) yöntemleri aracılığıyla doğru donanım yapılandırma bilgilerini tutarlı bir şekilde raporlaması ZORUNLUDUR.
7.1. Ekran ve Grafikler
Android'de, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında iyi bir şekilde çalışmasını sağlamak amacıyla, uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan olanaklar vardır. Cihazların, bu bölümde ayrıntılı olarak açıklandığı şekilde bu API'leri ve davranışları doğru bir şekilde uygulaması ZORUNLUDUR.
Bu bölümdeki şartlarda belirtilen birimler aşağıdaki şekilde tanımlanmıştır:
- fiziksel diyagonal boyut Ekranın aydınlatmalı kısmının iki karşıt köşesi arasındaki inç cinsinden mesafe.
- inç başına nokta (dpi) . 1 inçlik doğrusal bir yatay veya dikey aralığın kapsadığı piksel sayısı. Dpi değerleri listelendiğinde, hem yatay hem de dikey dpi aralık içinde olmalıdır.
- en boy oranı Uzun boyut piksellerinin, ekranın kısa olan boyutuna oranı. Örneğin, 480x854 piksellik bir ekran 854/480 = 1, 779 veya yaklaşık "16:9" olur.
- yoğunluktan bağımsız piksel (dp) Sanal piksel birimi, 160 dpi ekrana göre normalleştirilir ve şu şekilde hesaplanır: piksel = dps * (yoğunluk/160).
7.1.1. Ekran Yapılandırması
7.1.1.1. Ekran Boyutu
Android kullanıcı arayüzü çerçevesi, çeşitli farklı ekran boyutlarını destekler ve uygulamaların, SCREENLAYOUT_SIZE_MASK kodunu kullanarak android.content.res.Configuration.screenLayout aracılığıyla cihaz ekran boyutunu ("ekran düzeni" olarak da bilinir) sorgulamasına olanak tanır. Cihaz uygulamalarında, Android SDK dokümanlarında tanımlandığı gibi doğru ekran boyutu Bildirilmelidir ve yayın öncesi Android platformu tarafından belirlenir. Özellikle, cihaz uygulamalarının aşağıdaki mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarına göre doğru ekran boyutunu Bildirebilmesi ZORUNLUDUR.
- Cihazlar, Android Watch cihazları değilse en az 426 dp x 320 dp ("küçük") ekran boyutlarına sahip olmalıdır.
- Ekran boyutunu "normal" olarak bildiren cihazların ekran boyutlarının en az 480 dp x 320 dp olması ZORUNLUDUR.
- "Büyük" ekran boyutu bildiren cihazların ekran boyutları en az 640 dp x 480 dp OLMALIDIR.
- "çok büyük" ekran boyutu bildiren cihazların en az 960 dp x 720 dp ekran boyutlarına sahip olması ZORUNLUDUR.
Ek bilgiler:
- Android Watch cihazlarının ekranı, fiziksel köşegen boyutu 1,1 ile 2,5 inç arasında olmalıdır.
- Android Automotive cihazlarda, fiziksel köşegen boyutu 6 inç veya daha büyük olmalıdır.
- Android Automotive cihazların ekran boyutu en az 750 dp x 480 dp olmalıdır.
- Fiziksel olarak entegre bir ekranı olan diğer Android cihaz uygulama türlerinde, diyagonal olarak en az 2, 5 inç ekran kullanılabilmesi ZORUNLUDUR.
Cihazlar, bildirilen ekran boyutlarını hiçbir zaman DEĞİŞTİRMEMELİDİR.
Uygulamalar isteğe bağlı olarak hangi ekran boyutlarını desteklediklerini <supports-screen> özelliğini kullanmanızı öneririz. Cihaz uygulamalarının doğru bir şekilde, küçük, normal, büyük ve x büyük ekranlar için destek beyanında bulunuldu.
7.1.1.2. Ekran En Boy Oranı
Fiziksel ekran görüntüsünün ekran en boy oranı değeriyle ilgili herhangi bir kısıtlama olmasa da üçüncü taraf uygulamalarının oluşturulduğu ve DisplayMetrics üzerinden raporlanan değerlerden elde edilebilen ekran en boy oranının aşağıdaki şartları karşılaması ZORUNLUDUR:
- uiMode, UI_MODE_TYPE_watch olarak yapılandırılırsa 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ılabileceğini belirtiyorsa en boy oranı değeriyle ilgili herhangi bir kısıtlama yoktur.
- Diğer tüm durumlarda, uygulama maxAspectRatio meta veri değeriyle daha yüksek ekran en boy oranını desteklediğini açıkça belirtmediği sürece, en boy oranının 1,3333 (4:3) ve 1,86 (yaklaşık 16:9) arasında bir değer olması ZORUNLUDUR.
7.1.1.3. Ekran Yoğunluğu
Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerinin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar. Cihaz uygulamalarının, android.util.DisplayMetrics API'leri aracılığıyla aşağıdaki mantıksal Android çerçeve yoğunluklarından yalnızca birini bildirmesi ZORUNLUDUR. Ayrıca, uygulamaların bu standart yoğunlukta yürütülmesi ve varsayılan ekran değerinin herhangi bir zamanda DEĞİŞTİRİLMEMELİDİR.
- 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)
Mantıksal yoğunluk, raporlanan ekran boyutunu desteklenen minimum değerin altına itmediği sürece, cihaz uygulamalarında ekranın fiziksel yoğunluğuna sayısal olarak en yakın olan standart Android çerçeve yoğunluğu TANIMLANMALIDIR. Fiziksel yoğunluğa sayısal olarak en yakın olan standart Android çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran boyutuyla sonuçlanıyorsa cihaz uygulamaları, bir sonraki en düşük standart Android çerçeve yoğunluğunu Bildirmelidir.
Kullanıcılara ekran boyutunu değiştirmeleri için bir ayar sağlamak amacıyla cihaz uygulamaları ÖNEMLE ÖNERİLİR. Cihazın ekran boyutunu değiştirmeye yönelik bir uygulama varsa, bu uygulamanın aşağıda belirtilen AOSP uygulamasıyla uyumlu olması ZORUNLUDUR:
- Görüntü boyutu, yerel yoğunluğun 1,5 katından daha büyük bir şekilde ölçeklenmemelidir veya 320 dp'den (kaynak niteleyici sw320 dp'ye eşdeğerdir) daha küçük (hangisi önce gerçekleşirse) etkili bir minimum ekran boyutu ÜRETMEMELİDİR.
- Görüntü boyutu, yerel yoğunluğun 0,85 katından daha küçük boyutta Ölçeklendirilmemelidir.
- İyi bir kullanılabilirlik ve tutarlı yazı tipi boyutları sağlamak için, Yerel Görüntüleme seçeneklerinde aşağıdaki ölçeklendirmenin (yukarıda belirtilen sınırlara uyarak) sağlanması ÖNERİLİR
- Küçük: 0,85x
- Varsayılan: 1x (Yerel görüntülü reklam ölçeği)
- Büyük: 1,15x
- Daha büyük: 1,3 kat
- En büyük 1,45x
7.1.2. Görüntüleme Metrikleri
Cihaz uygulamalarında, android.util.DisplayMetrics bölümünde tanımlanan tüm ekran metrikleri için doğru değerler raporlanmalı ve yerleştirilmiş ekran mı yoksa harici ekranın mı varsayılan ekran olarak kullanılmasından bağımsız olarak aynı değerler BELİRTİLMELİDİR.
7.1.3. Ekran Yönlendirme
Cihazlar, destekledikleri ekran yönlerini (android.hardware.screen.portrait ve/veya android.hardware.screen.landscape) BİLDİRMELİ ve en az bir desteklenen yön bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönlü yatay ekranı olan bir cihaz, yalnızca android.hardware.screen.landscape'i Bildirmelisiniz.
Her iki ekran yönünü de bildiren cihazlar, uygulamaların dikey veya yatay ekran yönüne yönelik dinamik yönü desteklemelidir. Yani cihaz, uygulamanın belirli bir ekran yönü isteğini yerine getirmelidir. Cihaz uygulamalarında varsayılan olarak dikey veya yatay yön seçilebilir.
android.content.res.Configuration.orientation, android.view.Display.getOrientation() veya diğer API'ler ile sorgulandığında cihazların mevcut yönü için doğru değeri bilmeleri ZORUNLUDUR.
Cihazlar, yön değiştirirken bildirilen ekran boyutunu veya yoğunluğunu DEĞİŞTİRMEMELİDİR.
7.1.4. 2D ve 3D Grafiklerde Hızlandırma
Android SDK dokümanlarında açıklandığı ve ayrıntılı olarak açıklandığı cihaz uygulamalarının hem OpenGL ES 1.0 hem de 2.0'ı desteklemesi ZORUNLUDUR. Cihaz uygulamaları, destekleyebilen cihazlarda OpenGL ES 3.0, 3.1 veya 3.2'yi DESTEKLEMELİDİR. Cihaz uygulamalarının, Android SDK dokümanlarında ayrıntılı olarak açıklandığı gibi Android RenderScript'i de desteklemesi ZORUNLUDUR.
Cihaz uygulamalarının, kendilerini doğru bir şekilde OpenGL ES 1.0, OpenGL ES 2.0, OpenGL ES 3.0, OpenGL 3.1 veya OpenGL 3.2'yi desteklediğini belirtmeleri gerekir. Yani:
- Yönetilen API'lerin (örneğin, GLES10.getString() yöntemi aracılığıyla), OpenGL ES 1.0 ve OpenGL ES 2.0 için desteği bildirmesi GEREKİR.
- Yerel C/C++ OpenGL API'leri (uygulamalar için libGLES_v1CM.so, libGLES_v2.so veya libEGL.so) aracılığıyla kullanılabilen API'ler, OpenGL ES 1.0 ve OpenGL ES 2.0 için destek sunmalıdır.
- OpenGL ES 3.0, 3.1 veya 3.2'yi desteklediğini belirten cihaz uygulamalarının, ilgili yönetilen API'leri desteklemesi ve yerel C/C++ API'leri için destek içermesi ZORUNLUDUR. OpenGL ES 3.0, 3.1 veya 3.2 libGLESv2.5'i desteklediğini belirten cihaz uygulamalarında, OpenGL ES 2.0 işlev sembollerine ek olarak karşılık gelen işlev sembollerini de dışa aktarması ZORUNLUDUR.
Android, Java arayüzleri ve mozaikleme 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. Android cihaz uygulamalarının, cihaz OpenGL ES 3.2'yi desteklemesi ve diğer durumlarda bu paketi desteklemesi ZORUNLUDUR. Uzantı paketinin tamamı destekleniyorsa cihazın, desteği android.hardware.opengles.aep
özellik bayrağı yoluyla tanımlaması ZORUNLUDUR.
Ayrıca, cihaz uygulamaları istenen OpenGL ES uzantılarını uygulayabilir. Bununla birlikte, cihaz uygulamalarının, destekledikleri tüm uzantı dizelerini OpenGL ES tarafından yönetilen ve yerel API'ler aracılığıyla raporlamaları ve tam tersine, desteklemedikleri uzantı dizelerini Bildirmemeleri GEREKİR.
Android'in, uygulamaların isteğe bağlı olarak belirli OpenGL doku sıkıştırma biçimleri gerektirdiklerini belirtmeleri için destek içerdiğini unutmayın. Bu biçimler genellikle satıcıya özgüdür. Android'in, belirli bir doku sıkıştırma biçimini uygulaması için cihaz uygulaması gerekmez. Bununla birlikte, OpenGL API'sindeki getString() yöntemini kullanarak destekledikleri tüm doku sıkıştırma biçimlerini doğru bir şekilde raporlamaları GEREKİR.
Android, uygulamaların 2D grafikler için Uygulama, Etkinlik, Pencere veya Görünüm düzeyinde donanım hızlandırmayı etkinleştirmek istediklerini android:hardwareAccelerated manifest etiketi veya doğrudan API çağrıları aracılığıyla etkinleştirmek istediklerini beyan eden bir mekanizmaya sahiptir.
Cihaz uygulamalarında, varsayılan olarak donanım hızlandırmanın etkinleştirilmesi ZORUNLUDUR. Geliştiricinin istekte bulunması durumunda, android:hardwareAccelerated="false" değerini ayarlayarak veya donanım hızlandırmayı doğrudan Android View API'leri aracılığıyla devre dışı bırakarak donanım hızlandırmayı devre dışı bırakabilirsiniz.
Ayrıca, cihaz uygulamalarının donanım hızlandırma ile ilgili Android SDK dokümanlarıyla tutarlı davranışlar sergilemesi ZORUNLUDUR.
Android, geliştiricilerin donanımla hızlandırılmış OpenGL ES dokularını kullanıcı arayüzü hiyerarşisindeki oluşturma hedefleri olarak doğrudan entegre etmelerini sağlayan bir TextureView nesnesi içerir. Cihaz uygulamalarının TextureView API'yi desteklemesi ve yayın öncesi Android uygulamasıyla tutarlı davranış sergilemesi ZORUNLUDUR.
Android, EGL_ANDROID_RECORDABLE için destek içerir. EGLConfig özelliği, resimleri videoya kaydeden bir ANativeWindow'da oluşturmayı destekleyip desteklemediğini belirtir. Cihaz uygulamaları EGL_ANDROID_RECORDABLE uzantısını DESTEKLEMELİDİR.
7.1.5. Eski Uygulama Uyumluluğu Modu
Android, çerçevenin "normal" olarak çalıştığı bir "uyumluluk modu" belirtir Bu mod, ekran boyutu bağımsızlığından önceki Android sürümleri için geliştirilmemiş olan eski uygulamaların avantajını sunar.
- Android Automotive, eski uyumluluk modunu desteklemez.
- Diğer tüm cihaz uygulamalarının, yukarı akış Android açık kaynak kodu tarafından uygulandığı şekliyle eski uygulama uyumluluk modu desteği içermesi ZORUNLUDUR. Yani, cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİDİR ve uyumluluk modunun davranışını DEĞİŞTİRMEMELİDİR.
7.1.6. Ekran Teknolojisi
Android platformu, uygulamaların ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. Cihazlar, bu dokümanda özellikle izin verilmedikçe, Android SDK'sı tarafından tanımlanan bu API'lerin tümünü desteklemelidir.
- Cihazlar, 16 bit renkli grafikleri oluşturabilen ekranları DESTEKLEMELİ ve 24 bit renkli grafiğe sahip ekranları DESTEKLEMELİDİR.
- Cihazlar, animasyonları oluşturabilen ekranları DESTEKLEMELİDİR.
- Kullanılan ekran teknolojisinin 0,9 ile 1,15 arasında bir piksel en boy oranına (PAR) sahip olması ZORUNLUDUR. Diğer bir deyişle, piksel en boy oranı, 10 ila% 15 toleransla kareye (1.0) yakın bir yerde OLMALIDIR.
7.1.7. İkincil Ekranlar
Android, medya paylaşımı özelliklerini etkinleştirmek için ikincil ekran desteği ve harici ekranlara erişim için geliştirici API'leri içerir. Bir cihaz kablolu, kablosuz veya yerleşik ek ekran bağlantısı yoluyla harici ekranı destekliyorsa, cihaz uygulamasının Android SDK dokümanlarında açıklandığı gibi display Manager API'sini uygulaması GEREKİR.
7.2. Giriş Cihazları
Cihazların dokunmatik ekranı desteklemesi veya dokunmatik olmayan gezinme için 7.2.2'de listelenen gereksinimleri karşılaması gerekir.
7.2.1. Klavye
Cihaz uygulamaları:
- http://developer.android.com adresinde ayrıntılı olarak açıklandığı gibi Giriş Yönetimi Çerçevesi (üçüncü taraf geliştiricilerin Giriş Yöntemi Düzenleyicileri (ör. yazılım klavyesi) oluşturmasına olanak tanır) için destek ZORUNLUDUR.
- Ekran boyutunun yumuşak klavye kullanılmasını daha az makul hale getirdiği Android Watch cihazları hariç en az bir yumuşak klavye uygulaması (sabit klavye olup olmadığına bakılmaksızın) ZORUNLUDUR.
- Ek yazılım klavyesi uygulamaları İÇEREBİLİR.
- Donanım klavyesi İÇEREBİLİR.
- android.content.res.Configuration.keyboard biçiminde (QWERTY veya 12 tuşlu) belirtilen biçimlerden biriyle eşleşmeyen bir donanım klavyesi İÇERMEMELİDİR.
7.2.2. Dokunmatik Olmayan Gezinme
Cihaz uygulamaları:
- Cihaz uygulaması bir Android Televizyon cihazı değilse dokunmatik olmayan gezinme seçeneği (trackball, d-pad veya tekerlek) atlanabilir.
- android.content.res.Configuration.navigation için doğru değerin Bildirilmesi ZORUNLUDUR.
- Metin seçimi ve düzenlenmesi için Giriş Yönetim Motorlarıyla uyumlu, makul bir alternatif kullanıcı arayüzü mekanizmasının sağlanması ZORUNLUDUR. Yukarı akış Android açık kaynak uygulaması, dokunmatik olmayan gezinme girişleri olmayan cihazlarla kullanılmaya uygun bir seçim mekanizması içerir.
7.2.3. Gezinme Tuşları
Ana Sayfa, Son Kullanılanlar ve Geri işlevleri (sırasıyla KEYCODE_HOME, KEYCODE_APP_SWITCH, KEYCODE_BACK önemli etkinliklerle eşlenmiş) Android gezinme paradigması açısından vazgeçilmezdir. Bu nedenle:
- Android Avuç İçi cihaz uygulamalarının Ana Ekran, Son Kullanılanlar ve Geri işlevlerini sağlaması ZORUNLUDUR.
- Android Televizyon cihaz uygulamalarında Ana Ekran ve Geri işlevleri ZORUNLUDUR.
- Android Watch cihaz uygulamalarında kullanıcının Ana Sayfa işlevi,
UI_MODE_TYPE_WATCH
işlevinde olmadığı durumlar ise Geri işlevi tarafından kullanılabilmesi ZORUNLUDUR . - Android Watch cihaz uygulamalarında (diğer Android cihaz türlerinde değil)
KEYCODE_BACK
önemli etkinliğindeki uzun basma etkinliği kullanılabilir ve bu etkinlik ön plan uygulamasına gönderilmez. - Android Automotive uygulamaları Ana Sayfa işlevini SAĞLAMALIDIR ve Geri ve Son işlevlerini sağlayabilir.
- Diğer tüm cihaz uygulaması türlerinin Ana Ekran ve Geri işlevlerini sağlaması ZORUNLUDUR.
Bu işlevler özel fiziksel düğmelerle (mekanik veya kapasitif dokunma düğmeleri gibi) uygulanabilir ya da ekranın belirli bir bölümünde, hareketler, dokunmatik panel vb. üzerinde özel yazılım tuşları kullanılarak uygulanabilir. Android her iki uygulamayı da destekler. Bu işlevlerin tümüne tek bir işlemle (ör. dokunma, çift tıklama veya hareket) erişilebilmesi ZORUNLUDUR.
Son kullanılanlar işlevi (varsa), tam ekran modundaki diğer gezinme işlevleriyle birlikte gizlenmedikçe görünür bir düğme veya simgeye sahip OLMALIDIR. Bu durum, gezinme için fiziksel düğmeler içeren ve son kullanılanlar anahtarı olmayan önceki Android sürümlerinden yeni sürüme geçen cihazlar için geçerli değildir.
Tam ekran modundaki diğer gezinme işlevleriyle birlikte gizlenmedikçe veya uiMode UI_MODE_TYPE_MASK arayüzü UI_MODE_TYPE_Watch değerine ayarlandığında Ana Ekran ve Geri işlevlerinin (sağlanmışsa) her birinin görünür bir düğmesi veya simgesi olması ZORUNLUDUR.
Android 4.0'dan itibaren menü işlevi kullanımdan kaldırılarak yerine işlem çubuğu kullanılmaya başlandı. Bu nedenle, Android 7.0 ve sonraki sürümleri çalıştıran yeni cihaz uygulamalarında Menü işlevi için özel bir fiziksel düğme KULLANILMAMALIDIR. Daha eski cihaz uygulamalarında Menü işlevi için özel bir fiziksel düğme KULLANILMAMALIDIR, ancak fiziksel Menü düğmesi uygulanırsa ve cihaz targetSdkVersion > 10, cihaz uygulaması:
- İşlem çubuğunda işlem taşma düğmesi görünür olduğunda ve sonuçta ortaya çıkan işlem taşma menüsü pop-up'ı boş olmadığında bu düğmenin görüntülenmesi ZORUNLUDUR. Android 4.4'ten önce kullanıma sunulan ancak Android 7.0'a geçen bir cihaz uygulaması için bu ÖNERİLİR.
- İşlem çubuğundaki taşma düğmesi seçilerek görüntülenen işlem taşma pop-up'ının konumunu DEĞİŞTİRMEMELİDİR.
- Fiziksel menü düğmesi seçilerek görüntülendiğinde, işlem taşma pop-up'ı ekranda değiştirilmiş bir konumda OLUŞTURULABİLİR.
Geriye dönük uyumluluk için cihaz uygulamalarının, targetSdkVersion 10'dan az olduğu durumlarda, fiziksel bir düğme, yazılım tuşu veya hareketlerle Menü işlevinin uygulamalar tarafından kullanılabilmesi ZORUNLUDUR. Bu Menü işlevi, diğer gezinme işlevleriyle birlikte gizlenmedikçe sunulmalıdır.
Destek işlemini ve/veya VoiceInteractionService
özelliğini destekleyen Android cihaz uygulamalarının, diğer gezinme tuşları görünür olduğunda tek bir etkileşimle (ör. dokunma, çift tıklama veya hareket) bir asistan uygulamasını başlatabilmesi ZORUNLUDUR. Bu etkileşim olarak ana sayfa düğmesine uzun basmanız ÖNEMLE ÖNERİLİR. Belirlenen etkileşimin, kullanıcı tarafından seçilen yardım uygulamasını, diğer bir deyişle bir VoiceEngagementService'i uygulayan uygulamayı veya ACTION_ASSIST amacını işleyen bir etkinliği başlatması ZORUNLUDUR.
Cihaz uygulamalarında, gezinme tuşlarını görüntülemek için ekranın belirli bir bölümü KULLANILABİLİR, ancak bu durumda aşağıdaki gereksinimlerin karşılanması ZORUNLUDUR:
- Cihaz uygulaması gezinme tuşları, ekranın belirli bir bölümünü kullanmalı, uygulamalarda kullanılamaz ve ekranın uygulamalar tarafından kullanılabilen bölümünü belirsizleştirmemeli veya başka bir şekilde engellememelidir.
- Cihaz uygulamaları, bölüm 7.1.1'de belirtilen gereksinimleri karşılayan uygulamalara ekranın bir kısmını ZORUNLUDUR.
- Uygulamalar bir sistem kullanıcı arayüzü modu belirtmediğinde veya SYSTEM_UI_FLAG_VISIBLE değerini belirtmediğinde cihaz uygulamalarının gezinme tuşlarını görüntülemesi ZORUNLUDUR.
- Uygulamalar SYSTEM_UI_FLAG_LOW_PROFILE öğesini belirttiğinde, cihaz uygulamalarında gezinme tuşları göze çarpmayan bir "düşük profil" (ör. karartılmış) modda sunulmalıdır.
- Uygulamalar SYSTEM_UI_FLAG_HIDE_NAVIGATION değerini belirttiğinde cihaz uygulamalarının gezinme tuşlarını gizlemesi ZORUNLUDUR.
7.2.4. Dokunmatik Ekranlı Giriş
Cihaz uygulamalarında, bir tür işaretçi giriş sistemine (fare benzeri veya dokunarak) sahip olması GEREKİR. Ancak, işaretçi giriş sistemini desteklemeyen bir cihaz uygulaması android.hardware.touchscreen veya android.hardware.faketouch özellik sabitini BildirMEMELİDİR. İş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 dokunmatik ekranın türüne karşılık gelen android.content.res.Configuration.Touchscreen değerinin Bildirilmesi ZORUNLUDUR.
Android çeşitli dokunmatik ekranları, dokunmatik yüzeyleri ve sahte dokunmatik giriş cihazlarını destekler. Dokunmatik ekrana dayalı cihaz uygulamaları, kullanıcının ekrandaki öğeleri doğrudan değiştiriyor izlenimi vereceği bir ekranla ilişkilendirilir. Kullanıcı ekrana doğrudan dokunduğundan, sistem, manipüle edilen nesneleri göstermek için herhangi bir ek ücret gerektirmez. Öte yandan sahte dokunmatik arayüz, dokunmatik ekran özelliklerinin bir alt kümesini tahmin eden bir kullanıcı giriş sistemi sağlar. Örneğin, ekran üzerinde bir imleci yönlendiren bir fare veya uzaktan kumanda, dokunmaya yaklaşır ancak önce kullanıcının üzerine gelmesini veya odaklanmasını, ardından tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi, jiroskop işaretçisi, kontrol çubuğu ve çok dokunmalı dokunmatik yüzey gibi çok sayıda giriş cihazı, sahte dokunma etkileşimlerini destekleyebilir. Android'de sabit bir android.hardware.faketouch özelliği bulunur. Bu özellik, dokunmatik olmayan girişlere (temel hareket desteği dahil) yeterince emüle edebilen fare veya dokunmatik yüzey gibi yüksek kaliteli, dokunmatik olmayan (işaretçi tabanlı) bir giriş cihazına karşılık gelir ve cihazın, dokunmatik ekran işlevlerinin emüle edilmiş bir alt kümesini desteklediğini belirtir. Sahte dokunma özelliğini beyan eden cihaz uygulamaları, bölüm 7.2.5'te belirtilen sahte dokunma şartlarını ZORUNLUDUR.
Cihaz uygulamalarında, kullanılan girişin türüne karşılık gelen doğru özelliğin raporlanması ZORUNLUDUR. Dokunmatik ekran (tek dokunma veya daha iyisi) içeren cihaz uygulamalarının, platform özelliğindeki sabit android.hardware.touchscreen bildirmesi ZORUNLUDUR. Platformun sabit android.hardware.touchscreen özelliğini bildiren cihaz uygulamalarında da sabit android.hardware.faketouch platform özelliğinin raporlanması ZORUNLUDUR. Dokunmatik ekran içermeyen (ve yalnızca işaretçi cihazları kullanan) cihaz uygulamalarında dokunmatik ekran özelliği BİLDİRİLMEMELİDİR ve bölüm 7.2.5'te belirtilen sahte dokunma gereksinimlerini karşılayan cihazlar yalnızca android.hardware.faketouch Bildirilmelidir.
7.2.5. Sahte Dokunmatik Giriş
android.hardware.faketouch desteği bildirilen cihaz uygulamaları:
- İşaretçi konumunun mutlak X ve Y ekran konumlarını bildirmeli ve ekranda görsel bir işaretçi görüntülemelidir.
- Dokunma etkinliği, ekranda aşağı veya yukarı giden işaretçide gerçekleşen durum değişikliğini belirten işlem koduyla birlikte Bildirilmelidir.
- Ekrandaki bir nesnede işaretçinin aşağı ve yukarı yönde desteklenmesi ZORUNLUDUR. Bu özellik, kullanıcıların ekrandaki bir nesneye dokunma emülasyonuna olanak tanır.
- Bir zaman eşiğinde, kullanıcıların ekrandaki bir nesneye iki kez dokunma emülasyonuna olanak tanıyan işaretçi aşağı, yukarı işaretçi, yukarı ve aşağı işaretçisinin, ardından aşağı işaretçinin aynı yerde aynı yerde gösterilmesi ZORUNLUDUR.
- İşaretçinin ekranda rastgele bir noktada aşağı doğru desteklenmesi ZORUNLUDUR, işaretçi ekranda herhangi bir rastgele noktaya hareket eder ve ardından bir yukarı işaretçi hareket eder. Bu şekilde kullanıcılar dokunarak sürüklemeyi emüle edebilir.
- İşaretçinin aşağı doğru desteklenmesi ve kullanıcıların, nesneyi ekranda farklı bir konuma hızlıca taşımasına ve ardından fareyi ekranda yukarıya taşımasına izin verilmelidir. Bu şekilde, kullanıcılar ekrandaki bir nesneyi hızla hareket ettirebilir.
android.hardware.faketouch.multitouch.distinct desteğinin belirtildiği cihazların yukarıdaki sahte dokunma şartlarını karşılaması ZORUNLUDUR. Ayrıca iki veya daha fazla bağımsız işaretçi girişinin ayrı şekilde izlenmesini de desteklemelidir.
7.2.6. Oyun Kumandası Desteği
Android Televizyon cihaz uygulamaları, oyun kumandaları için aşağıda listelenen düğme eşlemelerini DESTEKLEMELİDİR. Yukarı akış Android uygulaması, bu şartı karşılayan oyun kumandaları için uygulama sürecini de kapsar.
7.2.6.1. Düğme Eşlemeleri
Android Televizyon cihaz uygulamalarının aşağıdaki tuş eşlemelerini DESTEKLEMELİDİR:
Düğme | HID Kullanımı 2 | Android Düğmesi |
---|---|---|
1. A | 0x09 0x0001 | KEYCODE_Button_A (96) |
B 1 | 0x09 0x0002 | KEYCODE_Button_B (97) |
X 1 | 0x09 0x0004 | KEYCODE_Button_X (99) |
E 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 sol 1 D-pad sağ 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 0x000D | 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 (0x01 0x0005) içinde belirtilmelidir.
3 Bu kullanım için Mantıksal Minimum 0, Mantıksal Maksimum 7, Fiziksel Minimum 0, Fiziksel Maksimum 315, Derece Birim ve Rapor Boyutu 4 olmalıdır. Mantıksal değer, dikey eksenden saat yönünde dönüş olarak tanımlanır; Örneğin, 0 mantıksal değeri döndürme olmadığını ve yukarı düğmesine basıldığını, mantıksal değeri 1 ise 45 derecelik bir dönüşü ve hem yukarı hem de sol tuşlara basıldığını belirtir.
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 |
EKS_X Eksen_Y |
Sağ kontrol çubuğu |
0x01 0x0032 0x01 0x0035 |
EKST_Z Eksen_RZ |
7.2.7. Uzaktan Kumanda
Android Televizyon cihazı uygulamalarında, kullanıcıların TV arayüzüne erişmesine olanak tanıyan bir uzaktan kumanda SAĞLANMALIDIR. Uzaktan kumanda, fiziksel bir uzaktan kumanda olabilir veya cep telefonu ya da tabletten erişilebilen yazılım tabanlı bir uzaktan kumanda olabilir. Uzaktan kumandanın aşağıda belirtilen şartları karşılaması ZORUNLUDUR.
- Arama fiyatı . Kullanıcı fiziksel veya yazılım tabanlı uzaktan kumandada sesli aramayı çağırdığında cihaz uygulamalarının KEYCODE_SEARCH tetiklemesi ZORUNLUDUR.
- Rota izleme . Tüm Android televizyon uzaktan kumandalarının Geri, Ana Ekran ve Seç düğmelerini ve D-pad etkinlikleri için desteği içermesi ZORUNLUDUR.
7.3. Sensörler
Android, çeşitli sensör türlerine erişim için API'ler içerir. Aşağıdaki alt bölümlerde belirtildiği gibi, cihaz uygulamalarında genellikle bu sensörler kullanılmayabilir. Bir cihaz, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir sensör türünü içeriyorsa cihaz uygulamasının, bu API'yi Android SDK dokümanlarında ve sensörler ile ilgili Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR. Örneğin, cihaz uygulamaları:
- Sensörlerin bulunup bulunmadığını android.content.pm.PackageManager sınıfına göre doğru bir şekilde Bildirmelisiniz.
- SensorManager.getSensorList() ve benzer yöntemlerle, desteklenen sensörlerin doğru bir listesini döndürmesi ZORUNLUDUR.
- Diğer tüm sensör API'leri için makul şekilde çalışmalıdır (örneğin, uygulamalar dinleyicileri kaydetmeye çalıştığında doğru veya yanlış değerini döndürerek ya da ilgili sensörler mevcut olmadığında sensör dinleyicilerini çağırmaz vb.).
- Android SDK dokümanlarında açıklandığı gibi, her sensör türü için ilgili Uluslararası Birim Sistemi (metrik) değerlerini kullanarak tüm sensör ölçümlerini rapor etmeniz gerekir.
- Android SDK dokümanlarında tanımlandığı gibi, etkinliğin gerçekleştiği ve SystemClock.elapsedRealtimeNano() saatiyle senkronize edildiği nanosaniye cinsinden etkinlik zamanını bildirmelisiniz. Mevcut ve yeni Android cihazların bu gereksinimleri karşılaması ÖNERİLİR. Böylece, bu cihazların GEREKLİ bir bileşen haline gelebileceği gelecekteki platform sürümlerine geçiş yapabilirler. Senkronizasyon hatasının 100 milisaniyenin altında olması GEREKİR.
- Uygulama işlemcisi etkin durumdayken gereken minimum gecikme süresi 5 ms + 2 * sample_time olan bir sensör akışı için sensör verileri maksimum 100 milisaniye + 2 * sample_time gecikmeyle raporlanmalıdır. Bu gecikme, filtreleme gecikmelerini içermez.
- İlk sensör örneğinin, etkinleştirildiği sensörün 400 milisaniye + 2 * sample_time süresi içinde raporlanması ZORUNLUDUR. Bu örneğin doğruluk oranının 0 olması kabul edilebilir.
Yukarıdaki liste tam kapsamlı değildir; Android SDK'nın ve sensörler ile ilgili Android Açık Kaynak Dokümanları'nın belgelenen davranışı güvenilir olarak kabul edilir.
Bazı sensör türleri kompozittir. Diğer bir deyişle, başka bir veya daha fazla sensörün sağladığı verilerden elde edilebilir. (Örnek olarak yön sensörü ve doğrusal ivme sensörü verilebilir.) Cihaz uygulamaları, sensör türleri bölümünde açıklandığı gibi, ön koşul niteliğindeki fiziksel sensörleri içerdiklerinde bu sensör türlerini KULLANMALIDIR. Bir cihaz uygulamasında kompozit sensör varsa sensörün birleşik sensörler hakkındaki Android Açık Kaynak dokümanlarında açıklandığı şekilde uygulanması GEREKİR.
Bazı Android sensörleri, verileri sürekli olarak döndüren "sürekli" tetikleme modunu destekler. Android SDK belgelerinde belirtilen API'lerin sürekli bir sensör olması için cihaz uygulamalarının sürekli olarak %3'ün altında bir ses dalgalanmasına sahip olması GEREKEN düzenli veri örnekleri sağlanması ZORUNLUDUR. Burada ses dalgalanması, ardışık etkinlikler arasındaki raporlanan zaman damgası değerleri farkının standart sapması olarak tanımlanır.
Cihaz uygulamalarının, sensör etkinlik akışının cihaz CPU'sunun askıya alma durumuna girmesini veya askıya alma durumundan uyanmasını engellememesi gerekir.
Son olarak, birden fazla sensör etkinleştirildiğinde, güç tüketimi, her bir sensörün bildirilen güç tüketiminin toplamını AŞILAMAMALIDIR.
7.3.1. İvme ölçer
Cihaz uygulamaları 3 eksenli ivme ölçer İÇERMELİDİR. Android mobil cihazlar, Android Automotive uygulamaları ve Android Watch cihazlarının bu sensörün bulunması ÖNEMLE ÖNERİLİR. Bir cihaz uygulaması 3 eksenli ivme ölçer içeriyorsa:
- TYPE_ACCELEROMETER sensörü uygulanmalı ve raporlanmalıdır.
- Android Watch cihazları için en az 50 Hz'lik bir frekansa kadar olan etkinliklerin rapor edilebilmesi ZORUNLUDUR. Bu tür cihazların güç kısıtlaması daha katı, diğer tüm cihaz türleri ise 100 Hz'dir.
- Maksimum 200 Hz'e kadar olan etkinlikler Bildirilmelidir.
- Android API'lerinde ayrıntılı olarak açıklanan Android sensör koordinat sistemine uyulması ZORUNLUDUR. Android Automotive uygulamaları, Android araba sensörü koordinat sistemine UYMALIDIR.
- Serbest düşüşten, herhangi bir eksende yer çekiminin dört katı (4 g) veya daha fazlasının ölçülebilmesi ZORUNLUDUR.
- Çözünürlüğü en az 12 bit olmalı ve çözünürlüğü en az 16 bit olmalıdır.
- Kullanım sırasında özelliklerin yaşam döngüsü içinde değişip dengelenmesi durumunda kullanım sırasında kalibre edilmesi gerekir. Ayrıca, cihazı yeniden başlatma işlemleri arasında dengeleme parametrelerini korumak gerekir.
- Sıcaklık dengelemenin yapılması GEREKİR.
- 0,05 m/sn'den fazla olmayan bir standart sapma OLMALIDIR.Burada, en yüksek örnekleme hızında en az 3 saniyelik bir süre boyunca toplanan örnekler için standart sapma eksen başına hesaplanmalıdır.
- TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR, TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER kompozit sensörleri Android SDK dokümanında açıklandığı şekilde UYGULAMALIDIR. Mevcut ve yeni Android cihazlarda TYPE_SIGNIFICANT_MOTION kompozit sensörün uygulanması ÖNEMLE ÖNERİLİR. Bu sensörlerden herhangi biri uygulanırsa, cihaz dinamik veya statik bir durumda olduğunda, cihazların güç tüketiminin toplamı her zaman 4 mW'dan az olmalı ve her biri 2 mW ve 0,5 mW'nun altında OLMALIDIR.
- Cihazda jiroskop sensörü varsa TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION kompozit sensörlerini uygulamalı ve TYPE_GAME_ROTATION_VECTOR kompozit sensörü KULLANMALIDIR. Mevcut ve yeni Android cihazların TYPE_GAME_ROTATION_VECTOR sensörünün uygulanması ÖNEMLE ÖNERİLİR.
- Üründe jiroskop sensörü ve manyetometre sensörü de varsa TYPE_ROTATION_VECTOR kompozit sensör uygulanması ZORUNLUDUR.
7.3.2. Manyetometre
Cihaz uygulamaları 3 eksenli bir manyetometre (pusula) İÇERMELİDİR. Bir cihazda 3 eksenli manyetometre varsa:
- TYPE_MAGNETIC_FIELD sensörünü uygulamalı ve TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörünü de uygulamamalıdır. Mevcut ve yeni Android cihazların TYPE_MAGNETIC_FIELD_UNCALIBRATED sensörünü uygulaması ÖNEMLE ÖNERİLİR.
- Etkinliklerin en az 10 Hz frekansına kadar raporlanabilmesi ve en az 50 Hz'e kadar olan etkinliklerin bildirilmesi GEREKİR.
- Android API'lerinde ayrıntılı olarak açıklanan Android sensör koordinat sistemine uyulması ZORUNLUDUR.
- Doyurmadan önce her bir eksende -900 μT ile +900 μT arasında ölçüm yapabilmemiz ZORUNLUDUR.
- Manyetometreyi dinamik (akım kaynaklı) ve statik (mıknatıstan kaynaklanan) manyetik alanlardan uzağa yerleştirerek 700 μT'den az sert demir ofset değerine sahip olunması ve 200 μT'nin altında bir değere sahip olması ZORUNLUDUR.
- 0,6 μT'ye eşit veya daha yoğun bir çözünürlüğe sahip olması ve 0,2 μT'den daha yoğun veya 0,2 μT'den daha yoğun bir çözünürlüğe sahip olması ZORUNLUDUR.
- Sıcaklık dengelemenin yapılması GEREKİR.
- Online kalibrasyonun ve sert demir önyargısının dengelemesinin desteklenmesi ve cihazın yeniden başlatılması arasında dengeleme parametrelerini korumak ZORUNLUDUR.
- Yumuşak demir katkısının uygulanması ZORUNLUDUR. Kalibrasyon, kullanım sırasında veya cihazın üretimi sırasında yapılabilir.
- En yüksek örnekleme hızıyla en az 3 saniyelik bir süre boyunca toplanan örnekler üzerinde eksen bazında hesaplanan (0,5 μT'den fazla olmayan) standart bir sapma OLMALIDIR.
- İvme ölçer sensörü ve jiroskop sensörü de dahilse TYPE_ROTATION_VECTOR kompozit sensör uygulanması ZORUNLUDUR.
- İvme ölçer sensörü de uygulanmışsa TYPE_GEOMAGNETIC_ROTATION_VECTOR sensörü uygulanabilir. Bununla birlikte, uygulandığında, sensör 10 Hz'de toplu moda kaydedildiğinde 10 mW'dan daha az tüketim ve 3 mW'tan az tüketmesi GEREKİR.
7.3.3. GPS
Cihaz uygulamaları bir GPS/GNSS alıcısı İÇERMELİDİR. Bir cihaz uygulaması GPS/GNSS alıcısı içeriyorsa ve bu özelliği uygulamalara android.hardware.location.gps
özellik bayrağı aracılığıyla bildirirse:
- Cihazın, acil durum telefon çağrısı sırasında uygulamalara normal GPS/GNSS çıkışları göndermeye devam etmesi ve bu konum çıkışının acil durum telefon araması sırasında engellenmemesi ÖNEMLE ÖNERİLİR.
LocationManager#requestLocationUpdate
üzerinden istendiğinde konum çıkışlarını en az 1 Hz hızında desteklemelidir .- 0,5 Mb/sn veya daha yüksek veri hızında bir internet bağlantısına bağlandığında, açık gökyüzü koşullarında (güçlü sinyaller, ihmal edilebilir çok yol, HDOP < 2) konumu 10 saniye içinde (ilk düzeltme için hızlı bir süre) belirlemesi gerekir. Bu gereklilik, genellikle GPS/GNSS kilitlenme süresini en aza indirmek amacıyla bir tür Yardımlı veya Tahmini GPS/GNSS tekniğinin kullanılmasıyla karşılanır (Yardım verileri Referans Saati, Referans Konum ve Uydu Efeeri/Saati içerir).
- Bu tür bir konum hesaplaması yapıldıktan sonra, cihazın konum istekleri yeniden başlatıldığında, ilk konum hesaplamasından en fazla bir saat sonrasına kadar (veri bağlantısı olmadan istek yapılmış olsa bile) ve/veya cihazın kapatıp açma işleminin ardından cihazın konumunu 10 saniye içinde açık gökyüzünde belirleyebilmesi ÖNEMLE ÖNERİLİR.
- Konum belirlendikten sonra açık gökyüzü koşullarında, sabit durumdayken veya saniye başına 1 metreden daha düşük hızla hareket ederken:
- Sistemin 20 metrelik bir hata payıyla konumu ve saniyede 0,5 metre (en az% 95) içinde hızı belirleyebilmesi ZORUNLUDUR.
- Bir takımyıldıza ait en az 8 uyduyu GnssStatus.Callback aracılığıyla aynı anda takip edip raporlamalıdır.
- Birden fazla takımyıldızdan en az 24 uyduyu aynı anda izleyebilmelidir (örneğin, GPS + Glonass, Beidou, Galileo'dan en az biri).
- GNSS teknolojisi üretiminin "getGnssYearOfDonanım" test API'si üzerinden raporlanması ZORUNLUDUR.
- GNSS teknolojisi üretiminin "2016" olarak raporlanması halinde aşağıdaki tüm gereksinimlerin karşılanması ÖNEMLE ÖNERİLİR ve aşağıdaki tüm gereksinimleri karşılamalıdır. veya daha yeni olması gerekir.
- GPS/GNSS üzerinden hesaplanan bir konum henüz raporlanmamış olsa bile, GPS ölçümleri bulunur bulunmaz raporlanmalıdır.
- Konum belirlendikten sonra açık gökyüzü koşullarında, sabit bir şekilde veya saniye başına ivme karesi 0,2 metreden daha düşük bir hızla hareket ederken, 20 metre içinde konumun ve 0,2 metre içindeki hızın en az% 95'inde hesaplanması için yeterli GPS sözde aralıklarının ve sözde aralık oranlarının raporlanması ZORUNLUDUR.
Yukarıdaki GPS gereksinimlerinden bazıları GERÇEKTEN ÖNERİLİR olarak belirtilse de bir sonraki ana sürümün Uyumluluk Tanımı'nın bunları ZORUNLU olarak değiştirmesi beklenir.
7.3.4. Jiroskop
Cihaz uygulamaları jiroskop (açısal değişim sensörü) İÇERMELİDİR. 3 eksenli ivme ölçer eklenmediği sürece cihazlar jiroskop sensörü İÇERMEMELİDİR. Bir cihaz uygulamasında jiroskop varsa:
- TYPE_GYROSCOPE sensörü ve TYPE_GYROSCOPE_UNCALIBRATED sensörü de KULLANILMALIDIR. Mevcut ve yeni Android cihazların SENSOR_TYPE_GYROSCOPE_UNCALIBRATED sensörünü uygulaması ÖNEMLE ÖNERİLİR.
- Saniyede 1.000 dereceye kadar yön değişikliklerini ölçebilmesi ZORUNLUDUR.
- Android Watch cihazları için en az 50 Hz'lik bir frekansa kadar olan etkinliklerin rapor edilebilmesi ZORUNLUDUR. Bu tür cihazların güç kısıtlaması daha katı, diğer tüm cihaz türleri ise 100 Hz'dir.
- Maksimum 200 Hz'e kadar olan etkinlikler Bildirilmelidir.
- Çözünürlüğü 12 bit veya daha yüksek olmalı ve çözünürlüğü 16 bit veya daha yüksek olmalıdır.
- Sıcaklık dengelemenin yapılması ZORUNLUDUR.
- Kullanım sırasında kalibre edilip telafi edilmeli ve cihaz yeniden başlatmaları arasında dengeleme parametreleri korunmalıdır.
- Hz başına 1e-7 rad^2 / s^2 (Hz başına varyans veya rad^2 / s) üzerinde bir varyans OLMALIDIR. Varyansın örnekleme hızıyla birlikte değişmesine izin verilir, ancak bu değerle sınırlandırılması gerekir. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz, 1e-7 rad^2/s^2'den büyük olmamalıdır.
- İvme ölçer sensörü ve manyetometre sensörü de dahilse TYPE_ROTATION_VECTOR kompozit sensör uygulanması ZORUNLUDUR.
- İvme ölçer sensörü varsa TYPE_GRAVITY ve TYPE_LINEAR_ACCELERATION kompozit sensörlerini uygulamalı ve TYPE_GAME_ROTATION_VECTOR kompozit sensörü uygulamalısınız. Mevcut ve yeni Android cihazların 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ü) OLMALIDIR. Bir cihaz uygulamasında barometre varsa:
- TYPE_PRESSURE sensörü uygulanmalı ve raporlanmalıdır.
- 5 Hz veya daha yüksek hızlarda etkinlik sunması ZORUNLUDUR.
- Rakımın tahmin edilebilmesi için yeterli hassasiyete sahip olması ZORUNLUDUR.
- Sıcaklık dengelemenin yapılması ZORUNLUDUR.
7.3.6. Termometre
Cihaz uygulamaları için ortam termometresi (sıcaklık sensörü) OLABİLİR. Mevcut olduğunda SENSOR_TYPE_AMBIENT_TEMPERATURE olarak tanımlanması ve ortam (oda) sıcaklığını Santigrat olarak ölçmesi ZORUNLUDUR.
Cihaz uygulamaları OLABİLİR, ancak CPU sıcaklık sensörü İÇERMEMELİDİR. Bu değer SENSOR_TYPE_TEMPERATURE olarak tanımlanmalı, cihazın CPU sıcaklığının ölçülmesi GEREKİR ve başka herhangi bir sıcaklığı ölçMEMELİDİR. SENSOR_TYPE_TEMPERATURE sensör türünün Android 4.0'da kullanımdan kaldırıldığını unutmayın.
7.3.7. Fotometre
Cihaz uygulamaları bir fotometre (ortam ışığı sensörü) İÇEREBİLİR.
7.3.8. Yakınlık Sensörü
Cihaz uygulamaları yakınlık sensörü İÇEREBİLİR. Sesli arama yapabilen ve getPhoneType'ta PHONE_TYPE_NONE dışında herhangi bir değer belirtebilen cihazların yakınlık sensörü OLMALIDIR. Bir cihaz uygulaması yakınlık sensörü içeriyorsa:
- Ekranla aynı yöne bakan bir nesnenin yakınlığının ölçülmesi GEREKİR. Diğer bir deyişle, yakınlık sensörünün ekrana yakın nesneleri algılayacak şekilde Yönde olması ZORUNLUDUR, çünkü bu sensör türünün birincil amacı, kullanıcı tarafından kullanılan bir telefonu algılamaktır. Bir cihaz uygulamasında, başka bir yöne sahip yakınlık sensörü varsa cihaza bu API üzerinden ERİŞİLEMEMELİDİR.
- 1 bit veya daha yüksek doğrulukta olması ZORUNLUDUR.
7.3.9. Yüksek Kaliteli Sensörler
Bu bölümde listelenen tüm gereksinimleri karşılayabilecek daha yüksek kaliteli bir dizi sensörü destekleyen cihaz uygulamalarında, desteğin android.hardware.sensor.hifi_sensors
özellik bayrağı aracılığıyla TANIMLANMASI GEREKİR.
android.hardware.sensor.hifi_sensors tanımlayan bir cihaz aşağıdaki kalite gereksinimlerini karşılayan aşağıdaki sensör türlerinin tümünü DESTEKLEMELİDİR:
- SENSÖR_TYPE_ACCELEROMETER
- En az -8 g ile +8 g arasında bir ölçüm aralığının olması ZORUNLUDUR.
- Ölçüm çözünürlüğü en az 1024 LSB/G olmalıdır.
- Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansının 400 Hz veya daha yüksek olması ZORUNLUDUR.
- 400 uG/abilen Hz'in üzerinde olmayan bir ölçüm gürültüsü olması ZORUNLUDUR.
- Bu sensörün uyandırılmadan ve en az 3.000 sensör olayına sahip arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
- Toplu işlem güç tüketiminin 3 mW'dan düşük olmaması ZORUNLUDUR.
- 24 saatlik statik veri kümesine göre sabit gürültü yanlılığı stabilitesi \<15 μg 🏈 Hz olmalıdır.
- Sıcaklığa kıyasla ≤ +/- 1 mg / °C şeklinde bir sapma değişiminin olması GEREKİR.
- En uygun çizginin doğrusal olmayan değeri ≤ %0,5 ve hassasiyet değişimi ≤ %0,03/C° olmalıdır.
-
SENSÖR_TÜRÜ_GYROSCOPE
- En az -1000 ila +1000 dps arasında bir ölçüm aralığının olması ZORUNLUDUR.
- En az 16 LSB/d/sn ölçüm çözünürlüğüne sahip olması ZORUNLUDUR.
- Minimum ölçüm frekansı 12,5 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansının 400 Hz veya daha yüksek olması ZORUNLUDUR.
- 0,014°/s/çalışmasının ölçüm paraziti olması ZORUNLUDUR.
- Sabit önyargı kararlılığı < 24 saatlik statik veri kümesinden 0,0002 °/sn çekin çekin.
- Sıcaklığa kıyasla ≤ +/- 0,05 °/ s / °C şeklinde bir sapma değişimi olması GEREKİR.
- Sıcaklığa kıyasla hassasiyetinde değişimin ≤ %0,02 / °C olması gerekir.
- ≤ %0,2 doğrusal olmayan, en uygun çizgiye sahip olmalıdır.
- Gürültü yoğunluğu 0,007 °/s/çekince ≤ olmalıdır.
-
SENSOR_TYPE_GYROSCOPE ile aynı kalite şartlarına sahip SENSOR_TYPE_GYROSCOPE_UNCALIBRATED.
- SENSÖR_TYPE_GEOMAGNETIC_FIELD
- En az -900 ile +900 uT arasında bir ölçüm aralığının olması ZORUNLUDUR.
- En az 5 LSB/uT ölçüm çözünürlüğüne sahip olması ZORUNLUDUR.
- Minimum ölçüm frekansının 5 Hz veya daha düşük olması ZORUNLUDUR.
- Maksimum ölçüm frekansının 50 Hz veya daha yüksek olması ZORUNLUDUR.
- 0,5 uT'nin üzerinde olmayan bir ölçüm gürültüsü olması ZORUNLUDUR.
- SENSOR_TYPE_GEOMAGNETIC_FIELD ile aynı kalite şartlarına ve ek olarak SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED:
- Bu sensörün uyandırılmadan ve en az 600 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
- SENSÖR_TYPE_PRESSURE
- En az 300 ila 1100 hPa arasında bir ölçüm aralığının olması ZORUNLUDUR.
- En az 80 LSB/hPa ölçüm çözünürlüğüne sahip olmalıdır.
- Minimum ölçüm frekansı 1 Hz veya daha düşük olmalıdır.
- Maksimum ölçüm frekansının 10 Hz veya daha yüksek olması ZORUNLUDUR.
- Ölçüm gürültüsünün 2 Pa/✓ Hz'den yüksek olması ZORUNLUDUR.
- Bu sensörün uyandırılmadan ve en az 300 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
- Toplu işlem güç tüketiminin 2 mW'dan düşük olmaması ZORUNLUDUR.
- SENSÖR_TYPE_GAME_ROTATION_VECTOR
- Bu sensörün uyandırılmadan ve en az 300 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
- Toplu işlem güç tüketiminin 4 mW'dan düşük olmaması ZORUNLUDUR.
- SENSÖR_TYPE_SIGNIFICANT_MOTION
- Güç tüketimi, cihaz hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha düşük olmamalıdır.
- SENSÖR_TYPE_STEP_DETECTOR
- Bu sensörün uyandırılmadan ve en az 100 sensör etkinliğinden oluşan arabelleğe alma özelliğine sahip bir biçimini uygulaması ZORUNLUDUR.
- Güç tüketimi, cihaz hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha düşük olmamalıdır.
- Toplu işlem güç tüketiminin 4 mW'dan düşük olmaması ZORUNLUDUR.
- SENSÖR_TYPE_STEP_COUNTER
- Güç tüketimi, cihaz hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha düşük olmamalıdır.
- SENSÖR_TILT_DETECTOR
- Güç tüketimi, cihaz hareketsizken 0,5 mW'dan, cihaz hareket halindeyken 1,5 mW'dan daha düşük olmamalıdır.
Ayrıca bu tür bir cihazın aşağıdaki sensör alt sistem gereksinimlerini karşılaması ZORUNLUDUR:
- İvme Ölçer, Jiroskop sensörü ve Manyetometre tarafından bildirilen aynı fiziksel etkinliğe ait etkinlik zaman damgasının birbirinden en fazla 2,5 milisaniye uzakta olması ZORUNLUDUR.
- Jiroskop sensörü etkinlik zaman damgalarının kamera alt sistemiyle aynı zamanda olması ve hatadan en fazla 1 milisaniye uzakta olması ZORUNLUDUR.
- Yüksek Kalitedeki sensörlerin, verilerin fiziksel sensörde mevcut olduğu andan uygulamaya ulaşıldığı andan itibaren 5 milisaniye içinde örneklere veri aktarması ZORUNLUDUR.
- Aşağıdaki sensörlerin herhangi bir kombinasyonu etkinleştirildiğinde güç tüketiminin cihaz statikken 0,5 mW'dan, cihaz hareket ederken ise 2,0 mW'dan yüksek olmaması ZORUNLUDUR:
- SENSÖR_TYPE_SIGNIFICANT_MOTION
- SENSÖR_TYPE_STEP_DETECTOR
- SENSÖR_TYPE_STEP_COUNTER
- SENSÖR_TILT_DETECTORS
Bu bölümdeki güç tüketimi gereksinimlerinin hiçbirinin Uygulama İşlemci'nin güç tüketimini içermediğini unutmayın. Tüm sensör zincirinin (sensör, destek devreleri, özel sensör işleme sistemleri vb.) çektiği güç buna dahildir.
android.hardware.sensor.hifi_sensors tanımlayan bir cihaz uygulamasında aşağıdaki sensör türleri de desteklenebilir. Ancak bu sensör türleri mevcutsa aşağıdaki minimum arabelleğe alma kapasitesi şartını karşılaması ZORUNLUDUR:
- SENSOR_TYPE_PROXIMITY: 100 sensör etkinliği
7.3.10. Parmak İzi Sensörü
Güvenli kilit ekranı kullanılan cihaz uygulamalarında parmak izi sensörü GEREKİR. Parmak izi sensörü içeren ve üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip cihaz uygulamalarında:
- android.hardware.fingerprint özelliği için destek bildirilmelidir.
- İlgili API'yi Android SDK dokümanlarında açıklandığı şekilde tam olarak uygulaması ZORUNLUDUR.
- %0,002'nin üzerinde olmayan bir yanlış kabul oranı OLMALIDIR.
- Cihazda ölçüldüğü üzere %10'dan düşük bir yanlış reddetme oranına sahip olması ÖNEMLE ÖNERİLİR
- 1 saniyenin altında bir gecikme olması ÖNEMLE ÖNERİLİR. Kayıtlı bir parmağa, parmak izi sensörüne dokunulduktan sonra ekranın kilidi açılana kadar geçen süre için ölçülür.
- Parmak izi doğrulaması için beş yanlış denemeden sonra en az 30 saniye süreyle hız sınırlaması YAPILMALIDIR.
- Donanım destekli bir anahtar deposu uygulamasına sahip olmanız ve parmak izi eşleştirmesini bir Güvenilir Yürütme Ortamı'nda (TEE) ya da TEE'ye giden güvenli kanala sahip bir çipte gerçekleştirmeniz ZORUNLUDUR.
- Android Açık Kaynak Projesi sitesindeki uygulama yönergelerinde belgelendiği üzere, Güvenilir Yürütme Ortamı (TEE) dışında edinilemeyecek, okunamayacak veya değiştirilemeyecek şekilde tüm tanınabilir parmak izi verilerinin şifrelenmesi ve kriptografik olarak doğrulanması ZORUNLUDUR.
- Kullanıcının mevcut olduğunu onaylaması veya TEE tarafından korunan yeni bir cihaz kimlik bilgisi (PIN/desen/şifre) eklemesini isteyerek bir güven zinciri oluşturmadan önce parmak izi eklenmesinin önlenmesi ZORUNLUDUR; Android Açık Kaynak Projesi'nin uygulanması, bunu yapmak için çerçevedeki mekanizmayı sağlar.
- Üçüncü taraf uygulamaların, ayrı ayrı parmak izlerini birbirinden ayırt etmesine izin VERMEMELİDİR.
- DevicePolicyManager.KEYGUARD_DISABLE_FINGERYA işaretinin dikkate alınması ZORUNLUDUR.
- Android 6.0'dan önceki bir sürümden yeni sürüme geçildiğinde, parmak izi verilerinin yukarıdaki şartları karşılamak için güvenli bir şekilde taşınması veya kaldırılması ZORUNLUDUR.
- Android Açık Kaynak Projesi'nde sağlanan Android Parmak İzi simgesini kullanmanız GEREKİR.
7.3.11. Yalnızca Android Automotive sensörleri
Otomotivle ilgili sensörler android.car.CarSensorManager API
içinde tanımlanmıştır .
7.3.11.1. Mevcut Dişli
Android Automotive uygulamaları, mevcut donanımı SENSOR_TYPE_GEAR olarak SUNMALIDIR.
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ğerinin, kontrol panelindeki gündüz/gece moduyla tutarlı olması ve ortam ışığı sensörü girişine dayalı olması ZORUNLUDUR. Temel ortam ışığı sensörü, Fotometre ile aynı OLABİLİR.
7.3.11.3. Sürüş Durumu
Android Automotive uygulamalarının, araç tamamen durup park hâlindeyken varsayılan değeri DRIVE_STATUS_UNRESTRICTED olmak üzere SENSOR_TYPE_DRIVING_STATUS olarak tanımlanan sürüş durumunu desteklemesi gerekir. SENSOR_TYPE_DRIVING_STATUS, ürünün gönderildiği pazarlar için geçerli olan tüm yasa ve düzenlemelere 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ı ZORUNLUDUR.
7.3.12. Poz Sensörü
Cihaz uygulamaları, 6 serbestlik derecesine sahip poz sensörünü destekleyebilir. Android Avuç İçi cihazların bu sensörü desteklemesi ÖNERİLİR. Bir cihaz uygulaması, 6 serbestlik derecesine sahip poz sensörünü destekliyorsa:
TYPE_POSE_6DOF
sensörü uygulanmalı ve raporlanmalıdır.- Yalnızca döndürme vektöründen daha doğru olması ZORUNLUDUR.
7.4. Veri Bağlantısı
7.4.1. Telefon Hizmeti
Android API'ları tarafından kullanılan "telefon" ve bu dokümanda özellikle, bir GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanımla ilgilidir. Bu sesli aramalar paket anahtarlı olabilir veya olmayabilir, ancak aynı ağ kullanılarak uygulanabilecek herhangi bir veri bağlantısından bağımsız olarak Android'in amaçları doğrultusunda kullanılır. Diğer bir deyişle, Android "telefon" işlevi ve API'leri özellikle sesli aramaları ve SMS'leri ifade eder. Örneğin, arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarına bakılmaksızın android.hardware.telephony özelliğini veya herhangi bir alt özelliği BildirMEMELİDİR.
Android, telefon donanımı bulunmayan cihazlarda KULLANILABİLİR. Yani Android, telefon dışındaki cihazlarla uyumludur. Bununla birlikte, bir cihaz uygulaması GSM veya CDMA telefon özelliğini içeriyorsa, söz konusu teknolojiye ilişkin API için tam destek gerçekleştirmesi GEREKİR. Telefon donanımı içermeyen cihaz uygulamalarının tam API'leri işlemsiz olarak uygulaması ZORUNLUDUR.
7.4.1.1. Numara Engelleme Uyumluluğu
Android Telephony cihaz uygulamaları, numara engelleme desteğinin yanı sıra şunları içermelidir:
- BlockNumberContract'ı ve ilgili API'yi, SDK dokümanlarında açıklandığı şekilde tam olarak uygulaması ZORUNLUDUR.
- 'BlockNumberProvider' içindeki bir telefon numarasından gelen tüm çağrılar ve mesajlar engellenmelidir Google Trendler'i kullanabilirsiniz. Bunun tek istisnası, numara engellemenin SDK dokümanlarında açıklandığı gibi geçici olarak kaldırılmasıdır.
- Engellenen bir arama için platform çağrı kaydı sağlayıcısına YANIT VERMEMELİDİR.
- Engellenen bir ileti için Telefon hizmeti sağlayıcısına YAZMAMALIDIR.
- TelecomManager.createManageBlockedNumbersIntent() yöntemi tarafından döndürülen intentle açılan, engellenen sayılar yönetimi kullanıcı arayüzü ZORUNLUDUR.
- Android platformu birincil kullanıcının cihazda telefon hizmetlerinin tam kontrolüne (tek bir örnek) sahip olduğunu varsaydığından, ikincil kullanıcıların cihazdaki engellenen numaraları görüntülemesine veya düzenlemesine İZİN VERİLMEMELİDİR. Engellemeyle ilgili tüm kullanıcı arayüzünün ikincil kullanıcılar için gizlenmesi ve engellenenler listesine yine de uyulması ZORUNLUDUR.
- Cihaz Android 7.0 sürümüne güncellendiğinde, engellenen numaraları sağlayıcıya taşımanız GEREKİR.
7.4.2. IEEE 802.11 (Kablosuz)
Tüm Android cihaz uygulamaları, bir veya daha fazla 802.11 biçimini İÇERMELİDİR. Bir cihaz uygulaması, 802.11 desteğini içeriyorsa ve işlevi üçüncü taraf bir uygulamaya sunuyorsa, ilgili Android API'sinin uygulanması GEREKİR:
- android.hardware.wifi donanım özelliği bayrağı BİLDİRİLMELİDİR.
- Multicast API'yi SDK dokümanlarında açıklandığı şekilde uygulaması ZORUNLUDUR.
- İşlem sırasında çoklu yayın DNS'yi (mDNS) DESTEKLEMELİ ve mDNS paketlerini (224.0.0.251) İZLEMEMELİDİR:
- Ekran etkin durumda olmadığında bile.
- Android Televizyon cihaz uygulamaları için, bekleme modundaki güçlerde bile.
7.4.2.1. Kablosuz Doğrudan Bağlantı
Cihaz uygulamaları, Kablosuz Doğrudan Bağlantı (eşler arası kablosuz) desteği İÇERMELİDİR. Bir cihaz uygulaması Kablosuz Doğrudan Bağlantı desteği içeriyorsa SDK dokümanlarında açıklandığı şekilde ilgili Android API'sini uygulaması GEREKİR. Bir cihaz uygulaması Kablosuz Doğrudan Bağlantı desteği içeriyorsa:
- android.hardware.wifi.direct donanım özelliğini BİLDİRMELİDİR.
- Normal kablosuz işlemi DESTEKLEMELİDİR.
- Eş zamanlı kablosuz ağ ve doğrudan kablosuz bağlantıyı DESTEKLEMELİDİR.
7.4.2.2. Kablosuz Tünelli Doğrudan Bağlantı Kurulumu
Cihaz uygulamaları, Android SDK Dokümanlarında açıklandığı gibi Kablosuz Tünelli Doğrudan Bağlantı Kurulumu (TDLS) desteğini İÇERMELİDİR. Bir cihaz uygulaması TDLS desteği içermiyorsa ve TDLS, WifiManager API tarafından etkinleştirildiyse cihaz:
- TDLS'yi yalnızca mümkün VE yararlı olduğunda kullanın.
- Performansı Wi-Fi erişim noktasından daha kötü olduğunda TDLS'nin biraz sezgisel olması ve TDLS'yi KULLANMAMALIDIR.
7.4.3. Bluetooth
android.hardware.vr.high_performance
özelliğini destekleyen cihaz uygulamaları, Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı'nı DESTEKLEMELİDİR.
Android'de Bluetooth ve Bluetooth Düşük Enerji desteği vardır. Bluetooth ve Bluetooth Düşük Enerji desteği içeren cihaz uygulamalarında, ilgili platform özelliklerinin (sırasıyla android.hardware.bluetooth ve android.hardware.bluetooth_le) beyan edilmesi ve platform API'lerinin uygulanması ZORUNLUDUR. Cihaz uygulamalarında A2DP, AVCP, OBEX gibi ilgili Bluetooth profilleri cihaza uygun şekilde Uygulanmalıdır.
Android Automotive uygulamaları, Mesaj Erişim Profili'ni (MAP) DESTEKLEMELİDİR. Android Automotive uygulamalarının aşağıdaki Bluetooth profillerini desteklemesi ZORUNLUDUR:
- Eller Serbest Profili (HFP) üzerinden telefon araması.
- Ses Dağıtım Profili (A2DP) üzerinden medya oynatma.
- Uzaktan Kumanda Profili (AVRCP) üzerinden medya oynatma kontrolü.
- Telefon Rehberi Erişim Profili'ni (PBAP) kullanarak kişi paylaşma.
Bluetooth Düşük Enerji desteği de dahil olmak üzere cihaz uygulamaları:
- android.hardware.bluetooth_le donanım özelliğinin beyan edilmesi ZORUNLUDUR.
- GATT (genel özellik profili) tabanlı Bluetooth API'lerinin, SDK dokümanlarında ve android.bluetooth dokümanlarında açıklandığı şekilde ETKİNLEŞTİRİLMESİ GEREKİR.
- .
- ScanFilter API uygulanırken filtreleme mantığının Bluetooth yonga setine boşaltılmasını DESTEKLEMELİDİR ve android.bluetooth.BluetoothAdapter.isOffloadedFilteringSupported() yöntemiyle her sorgu yapıldığında filtreleme mantığının uygulandığı doğru değerin raporlanması ZORUNLUDUR.
- Toplu taramanın Bluetooth yonga setine boşaltılması DESTEKLENMELİDİR, ancak desteklenmiyorsa, android.bluetooth.BluetoothAdapter.isOffloadedScanBatchingSupported() yöntemiyle her sorgu yapıldığında "false" (yanlış) olarak BİLDİRİLMELİDİR.
- En az 4 alanlı çoklu reklamı DESTEKLEMELİDİR. Ancak desteklenmiyorsa, android.bluetooth.BluetoothAdapter.isMultipleReklammentSupported() yöntemiyle her sorguda "false" (yanlış) değeri BELİRTİLMELİDİR.
7.4.4. Near Field Communication
Cihaz uygulamaları, bir alıcı-verici ve Near Field Communication (NFC) için ilgili donanım içermelidir. Bir cihaz uygulaması NFC donanımı içeriyorsa ve bunu üçüncü taraf uygulamalarına sunmayı planlıyorsa:
- android.content.pm.PackageManager.hasSystemFeature() yönteminden android.hardware.nfc özelliğini BİLDİRMELİDİR.
- Aşağıdaki NFC standartları aracılığıyla NDEF mesajlarını okuyup yazabilmesi ZORUNLUDUR:
- Aşağıdaki NFC standartlarına uygun olarak (NFC Forumu teknik özelliği NFCForum-TS-DigitalProtocol-1.0'da tanımlandığı şekilde) bir NFC Forumu okuyucusu/yazarı olarak hareket etme yetkin olması ZORUNLUDUR:
- NfcA (ISO14443-3A)
- NFCB (ISO14443-3B)
- NfcF (JIS X 6319-4)
- IsoDep (ISO 14443-4)
- NFC Forum Etiketi Tür 1, 2, 3, 4 (NFC Forumu tarafından tanımlanmıştır)
- Hem NDEF mesajlarını hem de aşağıdaki NFC standartlarını kullanarak ham verileri okuyup yazabilmek Kesinlikle ÖNERİLİR. Aşağıdaki NFC standartları GERÇEKTEN ÖNERİLİR olarak belirtilse de gelecekteki bir sürümün Uyumluluk Tanımı'nın bunları ZORUNLU olarak değiştirmesinin planlandığını unutmayın. Bu standartlar bu sürümde isteğe bağlıdır, ancak gelecekteki sürümlerde gerekli olacaktır. Android'in bu sürümünü çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine geçebilmeleri için bu gereksinimleri şimdi karşılamaları önemle tavsiye edilir.
- NFCV (ISO 15693)
- Thinfilm NFC Barcode ürünlerinin barkodunu ve URL'sini (kodlanmışsa) okuyabilmesi gerekir.
- Aşağıdaki eşler arası standartlar ve protokoller aracılığıyla veri iletip alabilmen ZORUNLUDUR:
- ISO 18092
- LLCP 1.2 (NFC Forumu tarafından tanımlanır)
- SDP 1.0 (NFC Forumu tarafından tanımlanmıştır)
- NDEF Aktarma Protokolü
- SNEP 1.0 (NFC Forumu tarafından tanımlanmıştır)
- Android Beam desteğinin bulunması ZORUNLUDUR.
- SNEP varsayılan sunucusunu uygulama ZORUNLUDUR. Varsayılan SNEP sunucusu tarafından alınan geçerli NDEF mesajlarının, android.nfc.ACTION_NDEF_DISCOVERED amacı kullanılarak uygulamalara gönderilmesi ZORUNLUDUR. Ayarlarda Android Beam'in 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 niyetine uyar.
- NPP sunucusunun uygulanması ZORUNLUDUR. NPP sunucusu tarafından alınan iletilerin, SNEP varsayılan sunucusuyla aynı şekilde İŞLENMELİDİR.
- Bir SNEP istemcisi uygulanmalı ve Android Beam etkinleştirildiğinde giden P2P NDEF'yi varsayılan SNEP sunucusuna göndermeyi denemelidir. Varsayılan SNEP sunucusu bulunamazsa istemcinin bir NPP sunucusuna veri göndermeyi denemesi GEREKİR.
- Ön plan etkinliklerinin giden P2P NDEF mesajını android.nfc.NfcAdapter.setNdefPushMessage, android.nfc.NfcAdapter.setNdefPushMessageCallback ve android.nfc.NfcAdapter.enableForegroundNdefPush kullanarak ayarlamasına izin verilmelidir.
- Giden P2P NDEF iletilerini göndermeden önce bir hareket veya ekranda "Işınlamak için Dokun" gibi bir onay hareketi KULLANILMALIDIR.
- Android Beam'in varsayılan olarak ETKİNLEŞTİRİLMESİ GEREKİR ve başka bir özel NFC P2p modu açık olsa bile Android Beam'i kullanarak gönderme ve alma özelliğinin olması ZORUNLUDUR.
- Cihaz, Bluetooth Nesne Aktarma Profili'ni desteklediğinde Bluetooth'a NFC Bağlantısının aktarılmasını DESTEKLEMELİDİR. Cihaz uygulamalarının, android.nfc.NfcAdapter.setBeamPushUris kullanılırken, NFC Forumu'ndan "Connection Handover sürüm 1.2" ve "NFC sürüm 1.0'ı Kullanarak Bluetooth Güvenli Basit Eşleme" özelliklerini uygulayarak Bluetooth'a bağlantı aktarımını desteklemesi ZORUNLUDUR. Bu tür bir uygulamada, devir isteğinin/seçim kayıtlarının NFC üzerinden değiştirilmesi için "urn:nfc:sn:handover" hizmet adıyla devir LLCP hizmetinin uygulanması ZORUNLUDUR, ayrıca Bluetooth veri aktarımı için de Bluetooth Nesne Aktarma Profili'ni kullanmalıdır. Eski nedenlerden (Android 4.1 cihazlarla uyumluluklarını korumak için) uygulamanın, devir isteğinin/seçim kayıtlarının NFC üzerinden değişimiyle ilgili SNEP GET isteklerini yine de kabul etmesi gerekir. Ancak bir uygulamanın kendisi, bağlantı aktarımı gerçekleştirmek için SNEP GET istekleri GÖNDERMEMELİDİR.
- NFC keşif modundayken, desteklenen tüm teknolojiler için yoklaması GEREKİR.
- Cihaz uyanık durumdayken ve ekran etkin durumdayken, kilit ekranının kilidi açıkken NFC keşif modunda olması GEREKİR.
- Aşağıdaki NFC standartlarına uygun olarak (NFC Forumu teknik özelliği NFCForum-TS-DigitalProtocol-1.0'da tanımlandığı şekilde) bir NFC Forumu okuyucusu/yazarı olarak hareket etme yetkin olması ZORUNLUDUR:
(Herkese açık bağlantıların yukarıda belirtilen JIS, ISO ve NFC Forumu spesifikasyonları için kullanılamadığını unutmayın.)
Android, NFC Ana Kart Emülasyonu (HCE) modunu destekler. 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 Bildirmelisiniz.
- Android SDK'da tanımlandığı şekliyle NFC HCE API'lerini DESTEKLEMELİDİR.
Bir cihaz uygulaması NfcF için HCE yapabilen bir NFC denetleyici yonga seti içeriyorsa ve bu özelliği üçüncü taraf uygulamalarında uyguluyorsa:
- android.hardware.nfc.hcef özellik sabitini Bildirmelisiniz.
- Android SDK'da tanımlandığı gibi NfcF Kart Emülasyon API'lerini uygulamalıdır.
Ayrıca, cihaz uygulamaları aşağıdaki MIFARE teknolojileri için okuyucu/yazar desteği İÇEREBİLİR.
- MIFARE Klasik
- MIFARE Ultra Hafif
- 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'yi destekliyorsa:
- İlgili Android API'lerinin Android SDK tarafından belirtildiği şekilde uygulanması ZORUNLUDUR.
- android.content.pm.PackageManager.hasSystemFeature() yönteminden com.nxp.mifare özelliğini BİLDİRMELİDİR. Bunun standart bir Android özelliği olmadığını ve bu nedenle android.content.pm.PackageManager sınıfında sabit değer olarak görünmediğini unutmayın.
- Bu bölümde açıklanan şekilde genel NFC desteği 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 BELİRTMEMELİ ve Android NFC API'yi işlemsiz olarak uygulaması GEREKİR.
android.nfc.NdefMessage ve android.nfc.NdefRecord sınıfları, protokolden bağımsız bir veri temsil biçimi temsil ettiğinden, cihaz uygulamalarının NFC desteği içermese veya android.hardware.nfc özelliğini beyan etmese bile bu API'leri uygulaması ZORUNLUDUR.
7.4.5. Minimum Ağ Yeteneği
Cihaz uygulamalarının bir veya daha fazla veri ağı biçimini desteklemesi ZORUNLUDUR. Özellikle, cihaz uygulamalarının 200 Kbit/sn veya daha yüksek hıza sahip en az bir veri standardını desteklemesi ZORUNLUDUR. Bu şartı karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet, Bluetooth PAN vb. verilebilir.
Birincil veri bağlantısının (Ethernet gibi) fiziksel ağ standardı olduğu cihaz uygulamaları, 802.11 (Kablosuz) gibi en az bir yaygın kablosuz veri standardına yönelik destek de İÇERMELİDİR.
Cihazlar birden fazla veri bağlantısı biçimi uygulayabilir.
Cihazların bir IPv6 ağ iletişimi yığını içermesi ve java.net.Socket
ve java.net.URLConnection
gibi yönetilen API'lerin yanı sıra AF_INET6
yuvaları gibi yerel API'leri kullanarak IPv6 iletişimini desteklemesi ZORUNLUDUR. Gerekli IPv6 desteği düzeyi, aşağıdaki gibi ağ türüne bağlıdır:
- Kablosuz ağları destekleyen cihazların, kablosuz ağda çift yığınlı ve yalnızca IPv6 işlemlerini DESTEKLEMELİDİR.
- Ethernet ağlarını destekleyen cihazlar, Ethernet'te çift yığın işlemini DESTEKLEMELİDİR.
- Hücresel veri kullanan cihazlar, hücresel veri üzerinde IPv6 işlemini DESTEKLEMELİDİR (yalnızca IPv6 ve muhtemelen çift yığın).
- Bir cihaz aynı anda birden fazla ağa (ör. Kablosuz ve hücresel veri) bağlı olduğu her ağda bu gereksinimleri aynı anda karşılaması GEREKİR.
IPv6 varsayılan olarak ETKİNLEŞTİRİLMELİDİR.
IPv6 iletişiminin IPv4 kadar güvenilir olmasını sağlamak için, cihaza gönderilen tek noktaya yayın IPv6 paketleri, ekran etkin durumda olmasa bile ATILMAMALIDIR. Birbirinin aynısı olan tekrarlı Yönlendirici Reklamları gibi gereksiz çoklu yayın IPv6 paketleri, güçten tasarruf etmek için gerekliyse donanım veya donanım yazılımında hız sınırlamalı OLABİLİR. Bu tür durumlarda hız sınırlama, en az 180 saniyelik RA kullanım ömrü kullanan IPv6 uyumlu ağlarda cihazın IPv6 bağlantısını kaybetmesine NEDEN OLMAMALIDIR.
IPv6 bağlantısının doz modunda SAĞLANMALIDIR.
7.4.6. Senkronizasyon Ayarları
getMasterSyncAutomatic() yönteminin "true" değerini döndürmesi için, cihaz uygulamalarında ana otomatik senkronizasyon ayarının varsayılan olarak açık olması ZORUNLUDUR.
7.4.7. Veri Tasarrufu
Sayaçlı bağlantı kullanılan cihaz uygulamalarının veri tasarrufu modunun sağlanması ÖNEMLE ÖNERİLİR.
Veri tasarrufu modu bir cihaz uygulaması tarafından sağlanıyorsa:
-
SDK dokümanlarında açıklandığı şekilde
ConnectivityManager
sınıfındaki tüm API'lerin desteklenmesi ZORUNLUDUR -
Ayarlarda, kullanıcıların izin verilenler listesine uygulama eklemesine veya listeden uygulama kaldırmasına olanak tanıyan bir kullanıcı arayüzü sağlanması ZORUNLUDUR.
Bunun aksine, bir cihaz uygulaması veri tasarrufu modunu sağlamıyorsa:
-
ConnectivityManager.getRestrictBackgroundStatus()
içinRESTRICT_BACKGROUND_STATUS_DISABLED
değerinin döndürülmesi ZORUNLUDUR -
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED
YAYINLANMAMALIDIR -
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
amacını işleyen bir etkinliğin olması ZORUNLUDUR, ancak bunu işlemsiz olarak uygulayabilir.
7.5. Kameralar
Cihaz uygulamaları bir arka kamera içermeli, ön kamera da İÇERMELİDİR. Arka kamera, cihazın yan tarafında, ekranın karşısındaki 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 video konferans ve benzer uygulamalarda olduğu gibi genellikle kullanıcının görüntüsünü almak için kullanılan bir kamera.
Cihaz uygulamasında en az bir kamera varsa, uygulamanın aynı anda cihazdaki en büyük çözünürlüklü kamera sensörü tarafından üretilen resimlerin boyutuna eşit 3 RGBA_8888 bit eşlem ayırmasının mümkün olması gerekir. Bununla birlikte, temel önizleme ve fotoğraf çekme işlemi için kamera açık olmalıdır.
7.5.1. Arka Kamera
Cihaz uygulamaları için bir arka kamera İÇERMELİDİR. Bir cihaz uygulamasında en az bir arka kamera varsa:
- android.hardware.camera ve android.hardware.camera.any özellik bayrağının Bildirilmesi ZORUNLUDUR.
- Çözünürlüğü en az 2 megapiksel olmalıdır.
- Kamera sürücüsünde, donanım otomatik odaklama veya yazılım otomatik odaklama (uygulama yazılımına göre şeffaf) uygulanmalıdır.
- Sabit odaklı veya EDOF (genişletilmiş alan derinliği) donanıma sahip OLABİLİR.
- Flaş İÇEREBİLİR. Kamerada flaş varsa, android.hardware.Kamera.PreviewCallback örneği bir Kamera önizleme yüzeyine kaydedilmişse ve uygulama, Kamera.Parameters nesnesinin FLASH_MODE_O veya FLASH_MODE_ON özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece flaş lambası YANITLAYMAMALIDIR. Bu kısıtlamanın, cihazın yerleşik sistem kamera uygulaması için değil, yalnızca Camera.PreviewCallback kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Yüz Kamera
Cihaz uygulamaları ön kamera içerebilir. Bir cihaz uygulamasında en az bir tane ön kamera varsa:
- android.hardware.camera.any ve android.hardware.camera.front özellik bayrağını BİLDİRMELİDİR.
- Çözünürlüğü en az VGA (640x480 piksel) olmalıdır.
- Kamera API'si için varsayılan olarak ön kamera KULLANILMAMALIDIR. Android'deki kamera API'si ön kameralar için özel destek içerir. Cihaz uygulamaları, cihazdaki tek kamera olsa bile ön kamerayı varsayılan arka kamera olarak değerlendirecek şekilde API'yi Yapılandırılmaz.
- Bölüm 7.5.1'de açıklandığı gibi, arka kameralarda kullanılabilen özellikler (otomatik odaklama, flaş vb.) içerebilir.
- CameraPreview'de bir uygulama tarafından görüntülenen akışı aşağıdaki şekilde yatay olarak yansıtması (yansıtılması) ZORUNLUDUR:
- Cihaz uygulaması kullanıcı tarafından döndürülebiliyorsa (örneğin bir ivme ölçer aracılığıyla otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak) kamera önizlemesinin cihazın geçerli yönüne göre yatay olarak yansıtılması ZORUNLUDUR.
- Geçerli uygulama, android.hardware.Kamera.setDisplayOrientation() yöntemine yapılan bir çağrıyla Kamera ekranının döndürülmesini açıkça istediyse, kamera önizlemesinin uygulama tarafından belirtilen yöne göre yatay olarak yansıtılması ZORUNLUDUR.
- Aksi takdirde, önizlemenin cihazın varsayılan yatay ekseni boyunca yansıtılması ZORUNLUDUR.
- Postview tarafından görüntülenen resmin, kamera önizleme resim akışıyla aynı şekilde yansıtılması ZORUNLUDUR. Cihaz uygulaması, görüntüleme sonrası özelliğini desteklemiyorsa bu koşul kesinlikle geçerli değildir.
- Uygulama geri çağırmalarına döndürülen veya medya depolama alanına kaydedilen, yakalanan nihai hareketsiz görüntü veya video akışlarını YANITLAMAMALIDIR.
7.5.3. Harici Kamera
Cihaz uygulamaları, her zaman bağlı olmayan harici bir kamera desteği İÇEREBİLİR. Harici kamera desteği içeren cihazlarda:
- Platform özellik bayrağı
android.hardware.camera.external
veandroid.hardware camera.any
bildirilmelidir . - Birden fazla kamerayı destekleyebilir.
- Harici kamera USB bağlantı noktası üzerinden bağlanıyorsa USB Video Sınıfı (UVC 1.0 veya üzeri) DESTEKLENMELİ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ırmalarını DESTEKLEMELİDİR.
- Kamera tabanlı video kodlamayı destekleyebilir. Destekleniyorsa cihaz uygulaması tarafından eş zamanlı olarak kodlanmamış bir MJPEG yayının (QVGA veya daha yüksek çözünürlük) erişilebilir olması ZORUNLUDUR.
7.5.4. Kamera API'si Davranışı
Android, kameraya erişmek için iki API paketi içerir. Yeni android.hardware.camera2 API'si ise uygulamaya düşük düzeyli kamera kontrolü sunar. Bunlar arasında verimli sıfır kopyalı seri çekim/akış akışları ve kare başına pozlama, kazanç, beyaz dengesi kazanımları, renk dönüştürme, parazit giderme, keskinleştirme ve daha birçok özellik bulunur.
Eski API paketi olan android.hardware.Kamera, Android 5.0'da desteği sonlandırıldı olarak işaretlenmiştir. Ancak uygulamaların, Android cihaz uygulamalarını kullanmak için yine de kullanılabilir durumda olması gerektiğinden, bu bölümde ve Android SDK'da açıklandığı şekilde API'nin desteklenmeye devam edilmesi ZORUNLUDUR.
Cihaz uygulamalarının, mevcut tüm kameralarda kamerayla ilgili API'lerde aşağıdaki davranışları uygulaması ZORUNLUDUR:
- Bir uygulama hiçbir zaman android.hardware.Kamera.Parameters.setPreviewFormat(int) çağrısında bulunmadıysa, uygulamanın geri çağırma işlemlerine sağlanan önizleme verileri için cihazın android.hardware.PixelFormat.YCbCr_420_SP kullanması ZORUNLUDUR.
- Bir uygulama bir android.hardware.Kamera.PreviewCallback örneği kaydederse ve önizleme biçimi YCbCr_420_SP olduğunda sistem, onPreviewFrame() yöntemini çağırırsa onPreviewFrame() işlevine aktarılan bayttaki verilerin[] daha da NV21 kodlama biçiminde olması gerekir. Diğer bir deyişle, NV21 varsayılan değer olmalıdır.
- android.hardware.Kamera'da, cihaz uygulamalarının hem ön hem de arka kameralardaki kamera önizlemelerinde YV12 biçimini (android.graphics.ImageFormat.YV12 sabiti ile belirtildiği şekliyle) desteklemesi ZORUNLUDUR. (Donanımla video kodlayıcı ve kamerada herhangi bir yerel piksel biçimi kullanılabilir, ancak cihaz uygulamasının YV12'ye dönüştürmeyi desteklemesi ZORUNLUDUR.)
- android.hardware.camera2 için yapılan cihaz uygulamalarının, android.media.ImageReader API'sinden alınan çıkış olarak android.hardware.ImageFormat.YUV_420_888 ve android.hardware.ImageFormat.JPEG biçimlerini desteklemesi gerekir.
Cihazda otomatik donanım odaklama veya diğer özellikler olsa da cihaz uygulamalarında Android SDK belgelerindeki Kamera API'sinin tamamının yine de uygulanması ZORUNLUDUR. Örneğin, otomatik odaklama özelliği olmayan kameraların yine de kayıtlı tüm android.hardware.Kamera.AutoFocusCallback örneklerini çağırması ZORUNLUDUR (bunun, otomatik odaklama olmayan bir kamerayla ilgisi olmasa bile). Bunun ön kameralar için geçerli olduğunu unutmayın; Örneğin, ön yüzündeki kameraların çoğu otomatik odaklamayı desteklemese de, API geri çağırmalarının açıklandığı gibi yine de "sahte" olması gerekir.
Temel donanım bu özelliği destekliyorsa, cihaz uygulamalarının android.hardware.Kamera.Parameters sınıfında sabit değer olarak tanımlanan her parametre adını tanıması ve dikkate alması ZORUNLUDUR. Cihaz donanımı bir özelliği desteklemiyorsa API belirtildiği şekilde çalışmalıdır. Öte yandan, cihaz uygulamaları, android.hardware.Kamera.Parameters parametresinde sabit değer olarak belgelenenler dışında, android.hardware.Kamera.setParameters() yöntemine iletilen dize sabit değerlerini KOŞULMAMALIDIR veya TANIMMAMALIDIR. Diğer bir deyişle, donanım izin veriyorsa cihaz uygulamalarının tüm standart Kamera parametrelerini desteklemesi ve özel Kamera parametre türlerini DESTEKLEMEMELİDİR. Örneğin, yüksek dinamik aralık (HDR) görüntüleme teknikleri kullanılarak görüntü yakalamayı destekleyen cihaz uygulamalarında, Kamera.SCENE_MODE_HDR kamera parametresi desteklenmelidir.
Tüm cihaz uygulamaları android.hardware.camera2 API'nin tüm özelliklerini tam olarak desteklemediğinden, cihaz uygulamalarının, Android SDK'da açıklandığı gibi android.info.supportedDonanımLevel özelliği ile uygun destek düzeyini bildirmesi ve uygun çerçeve özelliği bayraklarını bildirmesi GEREKİR.
Cihaz uygulamalarında, android.request.availableCapabilities özelliği aracılığıyla android.hardware.camera2 öğesinin bağımsız kamera özelliklerinin de beyan edilmesi ve uygun özellik bayraklarını beyan edilmesi ZORUNLUDUR; Cihaza takılı kamera cihazlarından herhangi biri özelliği destekliyorsa özellik bayrağını tanımlamalıdır.
Cihaz uygulamaları, kamera tarafından yeni bir resim çekildiğinde ve medya mağazasına resim girişi eklendiğinde Kamera'yı ACTION_NEW_PICTURE amacını yayınlamalıdır.
Kamera tarafından yeni bir video kaydedildiğinde ve resim girişi medya mağazasına eklendiğinde, cihaz uygulamalarında Kamera.ACTION_NEW_VIDEO intent'i YAYINLANMALIDIR.
7.5.5. Kamera Yönü
Varsa hem ön hem de arka kameralar, kameranın uzun boyutu ekranın uzun boyutuyla aynı olacak şekilde yönlendirilmelidir. Yani, cihaz yatay yönde tutulduğunda, kameraların yatay yönde resim çekmesi GEREKİR. Bu, cihazın doğal yönü ne olursa olsun geçerlidir; Yani, yatay birincil cihazların yanı sıra dikey birincil cihazlar için de geçerlidir.
7.6. Bellek ve Depolama
7.6.1. Minimum Bellek ve Depolama
Cihaz uygulamalarında çekirdek ve kullanıcı alanı tarafından kullanılabilen belleğin, en azından aşağıdaki tabloda belirtilen minimum değerlere eşit veya daha büyük olması ZORUNLUDUR. (Ekran boyutu ve yoğunluk tanımları için bölüm 7.1.1'e bakın.)
Yoğunluk ve ekran boyutu | 32 bit cihaz | 64 bit cihaz |
---|---|---|
Android Watch cihazları (daha küçük ekranlar nedeniyle) | 416MB | Geçerli değil |
|
512MB | 816MB |
|
608MB | 944MB |
|
896MB | 1.280 MB |
|
1.344 MB | 1.824 MB |
Minimum bellek değerlerinin, zaten radyo, video vb. gibi donanım bileşenlerine ayrılmış bellek alanına ek olarak olması ZORUNLUDUR. Bu alan, çekirdeğin kontrolünde değildir.
Android Watch olmadığı sürece, çekirdek ve kullanıcı alanı tarafından kullanılabilir ve 512 MB'tan az belleğe sahip cihaz uygulamalarının "true" (doğru) değerini döndürmesi ZORUNLUDUR ActivityManager.isLowRamDevice() için)
Android Televizyon cihazlarının en az 4 GB'a sahip olması, diğer cihaz uygulamalarında ise uygulamanın özel verileri için en az 3 GB kalıcı depolama alanının olması ZORUNLUDUR. Yani, /veri bölümünün, Android Televizyon cihazları için en az 4 GB ve diğer cihaz uygulamaları için en az 3 GB olması ZORUNLUDUR. Android çalıştıran cihaz uygulamalarının, uygulama özel verileri için en az 4 GB kalıcı depolama alanına sahip olması ÖNERİLİR. Böylece, gelecekteki platform sürümlerine de yükseltilebilirler.
Android API'lerinde, uygulamaların veri dosyalarını indirmek için kullanabileceği bir İndirme Yöneticisi bulunur. İndirme Yöneticisi'nin cihaz uygulamasının, en az 100 MB boyutundaki dosyaları varsayılan "önbellek" konumuna indirebilmesi ZORUNLUDUR.
7.6.2. Uygulama Paylaşılan Depolama Alanı
Cihaz uygulamalarının, uygulamalar için paylaşılan depolama alanı sunması ZORUNLUDUR. Bunlar genellikle "paylaşılan harici depolama" olarak da bilinir.
Cihaz uygulamalarının, paylaşılan depolama alanı varsayılan olarak "kullanıma hazır" olacak şekilde yapılandırılması ZORUNLUDUR. Paylaşılan depolama birimi Linuxpath /sdcard'a ekli değilse cihazın /sdcard ile gerçek ekleme noktasına Linux sembolik bir bağlantısı İÇERMELİDİR.
Cihaz uygulamalarında, kullanıcı tarafından erişilebilen çıkarılabilir depolama alanı için Secure Digital (SD) kart yuvası gibi donanım bulunabilir. Bu alan, paylaşılan depolama alanı gereksinimini karşılamak için kullanılırsa cihaz uygulaması:
- SD kart olmadığında kullanıcıyı uyaran bir durum mesajı veya pop-up kullanıcı arayüzü uygulanmalıdır.
- 1 GB veya daha büyük boyutta FAT biçimli bir SD kart İÇERMELİ VEYA SD kartın pakette ve satın alma sırasında stokta bulunan diğer malzemelerin üzerinde gösterilmesi gerekir. SD kartın ayrıca satın alınması gerekir.
- SD kart varsayılan olarak EKLEMELİDİR.
Alternatif olarak, cihaz uygulamaları, yukarı akış Android Açık Kaynak Projesi'nde yer aldığı şekilde, dahili (kaldırılamaz) depolama alanını uygulamalar için paylaşılan depolama alanı olarak ayırabilir. cihaz uygulamalarında bu yapılandırma ve yazılım uygulamasını KULLANMALIDIR. Bir cihaz uygulamasında, paylaşılan depolama alanı gereksinimini karşılamak için dahili (kaldırılamaz) depolama alanı kullanılıyorsa bu depolama alanı, uygulamanın özel verileriyle alan PAYLAŞABİLİR ancak boyutu en az 1 GB olması ve /sdcard'a (veya başka bir yere takılıysa /sdcard'ın fiziksel konuma simgesel bir bağlantı olması) ZORUNLUDUR.
Cihaz uygulamalarının, bu paylaşılan depolama alanında android.permission.WRITE_EXTERNAL_STORAGE izninde belirtildiği şekilde zorunlu kılınması ZORUNLUDUR. Paylaşılan depolama biriminin, bu izni alan herhangi bir uygulama tarafından yazılabilir olması ZORUNLUDUR.
Birden fazla paylaşılan depolama yolu içeren cihaz uygulamalarında (hem SD kart yuvası hem de paylaşılan dahili depolama alanı gibi) yalnızca önceden yüklenmiş ve WRITE_EXTERNAL_STORAGE izni olan ayrıcalıklı Android uygulamaları (pakete özel dizinlere veya ACTION_OPEN_DOCUMENT_TREE
niyetini tetikleyerek döndürülen URI
içinde yazdıkları durumlar hariç) ikincil harici depolamaya yazma iznine sahip.
Bununla birlikte, cihaz uygulamalarının her iki depolama yolundaki içeriği Android'in medya tarayıcı hizmeti ve android.provider.MediaStore üzerinden şeffaf bir şekilde açığa çıkarması GEREKİR.
Kullanılan paylaşılan depolama biriminin biçiminden bağımsız olarak, cihaz uygulamasında USB çevre birimi modu destekli bir USB bağlantı noktası varsa, paylaşılan depolama biriminin içeriğine bir ana bilgisayardan erişmek için bir mekanizmanın sağlanması ZORUNLUDUR. Cihaz uygulamalarında USB yığın depolama birimi KULLANILABİLİR, ancak bu gereksinimi karşılamak için Medya Aktarım Protokolü KULLANILMALIDIR. Cihaz uygulaması Medya Aktarım Protokolü'nü destekliyorsa:
- Referans Android MTP ana makinesi olan Android Dosya Aktarımı ile uyumlu OLMALIDIR.
- 0x00 değerinde bir USB cihaz sınıfı Bildirilmelidir.
- USB arayüzü adı "MTP" olarak BELİRTİLMELİDİR.
7.6.3. Kabul Edilebilir Depolama Alanı
Çıkarılabilir depolama cihazı bağlantı noktası, pil bölmesi veya diğer koruyucu kapak gibi uzun süre sabit bir yerdeyse kabul edilebilir depolama alanı uygulanması ÖNEMLE ÖNERİLİR.
Cihazın mobil değil statik olması beklendiğinden televizyon gibi cihaz uygulamalarında USB bağlantı noktaları üzerinden adaptasyon mümkün OLABİLİR. Ancak, mobil yapısı gereği mobil olan diğer cihaz uygulamaları için, uyarlanabilir depolama alanının yanlışlıkla kesilmesi veri kaybına veya bozulmaya neden olabileceğinden, bu depolama alanının uzun ömürlü sabit bir konumda uygulanması ÖNEMLE ÖNERİLİR.
7.7. USB
Cihaz uygulamaları, USB çevre birimi modunu DESTEKLEMELİ ve USB ana makine modunu DESTEKLEMELİDİR.
7.7.1. USB çevre birimi modu
Bir cihaz uygulamasında, çevre birimi modunu destekleyen bir USB bağlantı noktası varsa:
- Bağlantı noktasının, standart A veya type-C USB bağlantı noktasına sahip bir USB ana makinesine bağlanabilmesi ZORUNLUDUR.
- Bağlantı noktasında mikro B, mikro AB veya Type-C USB form faktörü KULLANILMALIDIR. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçebilmesi için bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR.
- Bağlantı noktası, cihazın alt kısmına (doğal yöne göre) yerleştirilmeli veya tüm uygulamalarda (ana ekran dahil) yazılım ekranı döndürmelidir. Böylece, cihaz alttaki bağlantı noktası olacak şekilde doğrultulduğunda ekran doğru şekilde çizilmelidir. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçebilmesi için bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR.
- Android cihaza bağlı bir USB ana makinesinin, USB yığın depolamasini veya Medya Aktarım Protokolü'nü kullanarak paylaşılan depolama biriminin içeriğine erişmesine İZİN VERİLMELİDİR.
- Android SDK dokümanlarında belirtildiği şekilde Android Open Accessory (AOA) API'sini ve spesifikasyonunu uygulaması GEREKMEKTEDİR. Ayrıca, söz konusu cihaz bir Android taşınabilir cihazsa AOA API'sini uygulaması GEREKİR. AOA spesifikasyonunun uygulandığı cihaz uygulamaları:
- android.hardware.usb.accessory donanım özelliği için destek beyanı ZORUNLUDUR.
- Android SDK dokümanlarında belirtildiği şekilde USB ses sınıfı'nın uygulanması ZORUNLUDUR.
- USB yığın depolama sınıfının "android" dizesini içermesi ZORUNLUDUR USB yığın depolama alanının
iInterface
dizesi arayüz açıklamasının sonunda
- USB Pil Şarj özelliği, düzeltme 1.2'de belirtildiği gibi HS sesi ve trafik sırasında 1,5 A akım çizme desteğinin uygulanması GEREKİR. Mevcut ve yeni Android cihazların gelecekteki platform sürümlerine geçebilmesi için bu gereksinimleri karşılaması ÖNEMLE ÖNERİLİR.
- C Tipi cihazların, Type-C direnç standardına göre 1,5A ve 3,0A şarj cihazlarını algılaması ve reklamdaki değişiklikleri algılaması gerekir.
- USB ana makine modunu da destekleyen Type-C cihazların, veri ve güç rolü değişiminde güç aktarımını desteklemesi ÖNEMLE ÖNERİLİR.
- C Tipi cihazlar yüksek voltajlı şarj için Güç Aktarımı'nı, ekran çıkışı gibi Alternatif Modları ise DESTEKLEMELİDİR.
- USB standart cihaz tanımlayıcısındaki iSerialNumber değerinin, android.os.Build.SERIAL değerine eşit olması ZORUNLUDUR.
- C Tipi cihazların, Vbus voltajını varsayılan düzeylerin ötesinde değiştiren özel şarj yöntemlerini desteklememesi veya bu şekilde havuz/kaynak rollerini değiştirmesi, standart USB Güç Aktarımı yöntemlerini destekleyen şarj cihazları veya cihazlarla birlikte çalışabilirlik sorunlarına neden olabilir. Bu özellik "ŞİMDİ ÖNERİLİR" olarak adlandırılsa da gelecekteki Android sürümlerinde standart C tipi şarj cihazlarıyla tam birlikte çalışabilirliği desteklemek için tüm C tipi cihazlar GEREKTİR.
7.7.2. USB ana makine modu
Bir cihaz uygulamasında ana makine modunu destekleyen bir USB bağlantı noktası varsa:
- Cihaz uygulaması USB 3.1'i destekliyorsa C Tipi USB bağlantı noktası KULLANILMALIDIR.
- Standart olmayan bir bağlantı noktası form faktörü KULLANILABİLİR, ancak bu durumda bağlantı noktasını standart A veya type-C USB bağlantı noktasına uyacak şekilde bir kablo veya kablolarla gönderilmesi ZORUNLUDUR.
- Mikro AB USB bağlantı noktası KULLANILABİLİR, ancak bu durumda bağlantı noktasını standart A veya type-C USB bağlantı noktasına uyacak şekilde bir kablo veya kablolarla GÖNDERİLMELİDİR.
- Android SDK dokümanlarında açıklandığı gibi USB ses sınıfını uygulamak için ÖNERİLİR.
- Android SDK'da belirtildiği şekilde Android USB ana makine API'sinin uygulanması ZORUNLUDUR ve android.hardware.usb.host donanım özelliği için destek bildirilmelidir.
- Ana makine modundayken cihazın şarj edilmesini DESTEKLEMELİDİR; USB Type-C konnektörleri için [USB Type-C Kablo ve Konnektör Spesifikasyonu Revizyonu 1.2] (http://www.usb.org/developers/docs/usb_31_021517.zip) Fesih Parametreleri bölümünde belirtildiği şekilde en az 1,5 A akım 1,5 A'lık bir akım kullanmalıdır.
- USB Type-C cihazların DisplayPort'u desteklemesi ÖNEMLE ÖNERİLİR, USB SuperSpeed Veri Hızlarını DESTEKLEMELİDİR, veri ve güç rolü değiştirme için Güç Aktarımı'nı desteklemek ÖNERİLİR.
- Herhangi bir tip A veya type-AB bağlantı noktasına sahip cihazlar, bu bağlantı noktasından type-C yuvasına dönüştürülen bir adaptörle GÖNDERİLMEMELİDİR.
- Depolama Erişim Çerçevesi (SAF) destekleniyorsa uzaktan bağlanmış MTP (Medya Aktarım Protokolü) cihazlarını tanımalı ve bu cihazların içeriklerini
ACTION_GET_CONTENT
,ACTION_OPEN_DOCUMENT
veACTION_CREATE_DOCUMENT
amaçları üzerinden erişilebilir hale getirmelidir. - Type-C USB bağlantı noktası kullanılıyorsa ve çevre birimi modu desteği de dahilse, USB Type-C spesifikasyonunda (bölüm 4.5.1.3.3) tanımlandığı şekilde Çift Rol Bağlantı Noktası işlevini uygulamanız ZORUNLUDUR.
- Çift Rol Bağlantı Noktası işlevi destekleniyorsa cihazın form faktörü için en uygun olan Try.* modelini uygulamalısınız. Örneğin, bir avuç içi cihazda Try.SNK modelini uygulaması GEREKİR.
7.8. Ses
7.8.1. Mikrofon
Cihaz uygulamalarında mikrofon kullanılmayabilir. Bununla birlikte, bir cihaz uygulamasında mikrofon atlanırsa android.hardware.microphone özellik sabitinin Bildirilmemesi ve ses kaydı API'sinin 7. bölüm uyarınca en azından işlem yok olarak uygulanması GEREKİR. Buna karşılık, mikrofon içeren cihaz uygulamaları:
- android.hardware.microphone özellik sabitini BİLDİRMELİDİR.
- Bölüm 5.4'te belirtilen ses kaydı gereksinimlerini karşılamanız ZORUNLUDUR.
- Bölüm 5.6'da belirtilen ses gecikmesi şartlarının karşılanması ZORUNLUDUR.
- Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın kaydın desteklenmesi ÖNEMLE ÖNERİLİR.
7.8.2. Ses Çıkışı
Mikrofonlu kulaklık veya harici hoparlör olarak ses çıkışı çevre birimi için hoparlör veya ses/multimedya çıkış bağlantı noktası da dahil olmak üzere cihaz uygulamaları:
- android.hardware.audio.Exit özellik sabiti BELİRTİLMELİDİR.
- Bölüm 5.5'te belirtilen ses çalma şartlarının karşılanması ZORUNLUDUR.
- Bölüm 5.6'da belirtilen ses gecikmesi şartlarının karşılanması ZORUNLUDUR.
- Bölüm 7.8.3'te açıklandığı gibi, ultrasona yakın oynatmanın desteklenmesi Şiddetle ÖNERİLİR.
Buna karşılık, hoparlör veya ses çıkış bağlantı noktası bulunmayan bir cihaz uygulamasında android.hardware.audio çıkış özelliğinin Bildirilmemesi ve Ses Çıkışı ile ilgili API'lerin en azından işlemsiz olarak uygulanması GEREKİR.
Android Watch cihaz uygulaması OLABİLİR, ancak ses çıkışı KULLANILMAMALIDIR, ancak diğer Android cihaz uygulama türlerinin bir ses çıkışına sahip olması ve android.hardware.audio.çıkışı bildirmesi ZORUNLUDUR.
7.8.2.1. Analog Ses Bağlantı Noktaları
Android ekosisteminde 3,5 mm'lik ses fişini kullanan mikrofonlu kulaklıklar ve diğer ses aksesuarları ile uyumlu olması için, cihaz uygulamasında bir veya daha fazla analog ses bağlantı noktası varsa ses bağlantı noktalarından en az birinin 4 iletkenli 3,5 mm ses jakı olması gerekir. Bir cihaz uygulamasında 4 iletkenli 3, 5 mm ses jakı varsa:
- Mikrofonlu stereo kulaklık ve stereo mikrofonlu kulaklıklarda ses oynatmanın desteklenmesi ve mikrofonlu stereo kulaklıklardan yapılan ses kaydının DESTEKLENMELİDİR.
- CTIA pin çıkış sırasına sahip TRRS ses fişlerini DESTEKLEMELİ ve OMTP pin çıkışı sırasında ses fişlerini DESTEKLEMELİDİR.
- Cihaz uygulaması bir mikrofonu destekliyorsa, takılı ses aksesuarında mikrofonun algılanmasını desteklemeli ve android.intent.action.HEADSET_PLUG öğesini, ekstra değer mikrofonu 1 olarak ayarlanmış şekilde yayınlamanız ZORUNLUDUR.
- Mikrofon ile ses fişindeki toprak iletkenleri arasında aşağıdaki 3 eşdeğer empedans aralığı için anahtar kodlarının algılanmasının ve eşlenmesinin desteklenmesi ZORUNLUDUR:
- 70 ohm veya daha düşük : KEYCODE_HEADSETHOOK
- 210-290 Ohm : KEYCODE_VOLUME_UP
- 360-680 Ohm : KEYCODE_VOLUME_DOWN
- Mikrofon ile ses fişindeki toprak iletkenleri arasındaki eşdeğer empedans aralığının aşağıdaki eşdeğeri için anahtar kodunun algılanıp anahtar koduyla eşlenmesi ÖNEMLE ÖNERİLİR:
- 110-180 Ohm: KEYCODE_VOICE_ASSIST
- Fiş takıldıktan sonra ACTION_HEADSET_PLUG işlevinin tetiklenmesi ZORUNLUDUR, ancak yalnızca fişteki tüm temas noktaları jaktaki ilgili segmentlerine dokunduktan sonra.
- 32 Ohm hoparlör empedansı üzerindeki çıkış voltajının en az 150 mV ±% 10'u kadar sürüşe uygun olması ZORUNLUDUR.
- 1,8 V ~ 2,9 V arasında bir mikrofon yanlılığı voltajı OLMALIDIR.
7.8.3. Yakın-Ultrasound
Yakın Ultrasound ses, 18,5 kHz ila 20 kHz'lik banttır. Cihaz uygulamalarının, AudioManager.getProperty API'si aracılığıyla neredeyse ultrason ses özelliği desteğini aşağıdaki gibi doğru bir şekilde bildirmesi ZORUNLUDUR:
- PROPERTY_SUPPORT_MIC_NEAR_ULTRASE değeri "true" ise VOICE_RECOGNITION ve UNprocessingED ses kaynakları aşağıdaki şartları karşılamalıdır:
- 18,5 kHz ile 20 kHz aralığındaki bir bantta mikrofonun ortalama güç yanıtının, 2 kHz'lik yanıtın 15 dB'den daha az olması ZORUNLUDUR.
- -26 dBFS'de 19 kHz ton için mikrofonun 18,5 kHz'den 20 kHz'e kadar olan ağırlıksız sinyal/gürültü oranı 50 dB'den düşük OLMAMALIDIR.
- PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASE değeri "true" ise konuşmacının ortalama yanıtının 18,5 kHz-20 kHz cinsinden 2 kHz'lik yanıtın altında 40 dB'den düşük olmaması ZORUNLUDUR.
7.9. Sanal Gerçeklik
Android, "Sanal Gerçeklik" oluşturmak için API'ler ve olanaklar sunar (VR) uygulamaları (yüksek kaliteli mobil VR deneyimleri) Cihaz uygulamalarının bu API'leri ve davranışları doğru bir şekilde uygulaması GEREKİR.
7.9.1. Sanal Gerçeklik Modu
Bir VR uygulaması kullanıcı odağı olduğunda, bildirimlerin stereoskopik olarak oluşturulmasını ve monoküler sistem kullanıcı arayüzü bileşenlerini devre dışı bırakan bir modu destekleyen Android avuç içi cihaz uygulamaları için android.software.vr.mode
özelliğinin bildirilmesi ZORUNLUDUR. Bu özelliği beyan eden cihazlar, VR uygulamaları tarafından android.app.Activity#setVrModeEnabled
aracılığıyla etkinleştirilebilen android.service.vr.VrListenerService
uygulamasını kullanan bir uygulama İÇERMELİDİR .
7.9.2. Sanal Gerçeklik Yüksek Performans
Android avuç içi cihaz uygulamalarında, android.hardware.vr.high_performance
özellik bayrağı aracılığıyla daha uzun kullanıcı sürelerinde yüksek performanslı sanal gerçeklik desteğinin tanımlanması ve aşağıdaki şartların karşılanması ZORUNLUDUR.
- Cihaz uygulamalarının en az 2 fiziksel çekirdeği olması ZORUNLUDUR.
- Cihaz uygulamalarında android.software.vr.mode özelliğinin bildirilmesi ZORUNLUDUR.
- Cihaz uygulamaları, ön plan uygulamasına özel bir çekirdek sağlayabilir ve en üstteki ön plan uygulamasına özel CPU çekirdeklerinin sayısını döndürmek için Process.getExclusiveCores API'yi destekleyebilir. Münhasır çekirdek destekleniyorsa çekirdek, üzerinde başka herhangi bir kullanıcı alanı işleminin (uygulama tarafından kullanılan cihaz sürücüleri hariç) çalıştırılmasına izin VERMEMELİDİR, ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına İZİN VERİLMELİDİR.
- Cihaz uygulamaları, sürekli performans modunu DESTEKLEMELİDİR.
- Cihaz uygulamaları OpenGL ES 3.2'yi DESTEKLEMELİDİR.
- Cihaz uygulamaları, Vulkan Donanım Düzeyi 0'ı DESTEKLEMELİ ve Vulkan Donanım Düzeyi 1'i DESTEKLEMELİDİR.
- Cihaz uygulamalarının, Paylaşılan Arabellek Modu'nda kullanılabilmesi ve mevcut EGL uzantıları listesinde uzantıları gösterebilmesi için 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 yöntemlerinin uygulanması ZORUNLUDUR.
- GPU ve ekranın, paylaşılan ön arabelleğe erişimi senkronize edebilmesi ZORUNLUDUR. Böylece, 60 fps'de VR içeriğinin iki oluşturma bağlamıyla alternatif göz oluşturulması, görünür yırtılma kusurları olmadan gösterilir.
- Cihaz uygulamalarının EGL_IMG_context_Priority uygulaması ZORUNLUDUR ve uzantıyı kullanılabilir EGL uzantıları listesinde gösterir.
- Cihaz uygulamalarının GL_EXT_multisampled_render_to_texture, GL_OVR_multiview, GL_OVR_multiview2 ve GL_OVR_multiview_multisampled_render_to_texture listesinde gösterilmesi ZORUNLUDUR.
- Cihaz uygulamalarında, Güvenli Doku Video Oynatmada kullanılabilmesi ve uzantıları kullanılabilir EGL ve GL uzantıları listesinde gösterebilmesi için EGL_EXT_ managed_content ve GL_EXT_ tamamlamanız gereken_korumalı_ dokular ZORUNLUDUR.
- Cihaz uygulamalarında en az 3840x2160@30 fps-40 Mb/sn H.264 kod çözme desteği ZORUNLUDUR (1920x1080@30 fps-10 Mb/sn 4 örneğine veya 60 fps-20 Mb/sn'de 2 örneğine eşdeğerdir).
- Cihaz uygulamalarının HEVC ve VP9'u desteklemesi, en az 1920x1080@30 fps-10 Mb/sn kodunu çözebilmesi ve 3840x2160@30 fps-20 Mb/sn (180Mb/s0050x1 piksellik örneğine eşdeğer) kodunu çözebilmesi ZORUNLUDUR.
- Cihaz uygulamalarının, android.hardware.sensor.hifi_sensors özelliğini desteklemesi için ÖNEMLE ÖNERİLİR ve android.hardware.hifi_sensors için jiroskop, ivme ölçer ve manyetometre ile ilgili gereksinimleri karşılaması ZORUNLUDUR.
- Cihaz uygulamalarının DonanımÖzellikleriManager.getDeviceTemperatures API'yi desteklemesi ve dış yüzey sıcaklığı için doğru değerleri döndürmesi ZORUNLUDUR.
- Cihaz uygulamasının yerleşik bir ekranı olması, çözünürlüğünün de en az FullHD(1080p) olması ve QuadHD (1440p) veya daha yüksek olması ÖNERİLMELİDİR.
- Ekranın 4,7 inç ölçüsü ZORUNLUDUR ve 6 inç olmalıdır.
- Ekran, SG Modundayken en az 60 Hz güncellemelerini GEREKTİRMELİDİR.
- Gri-Gri, Beyazdan Siyaha ve Siyahdan Beyaza geçiş sürelerinde ekran gecikmesi ≤ 3 ms ZORUNLUDUR.
- Ekranın, ≤ 5 ms kalıcılığa sahip düşük kalıcı bir modu desteklemesi gerekir. Kalıcılık, bir pikselin ışık yayan süreyi ifade eder.
- Cihaz uygulamaları, Bluetooth 4.2 ve Bluetooth LE Veri Uzunluğu Uzantısı 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 üstleneceği varsayımları etkiler. Android Watch cihazları ve diğer cihaz uygulama türlerinin aşağıdaki ölçütleri karşılaması ZORUNLUDUR.
8.1. Kullanıcı Deneyiminde Tutarlılık
Cihaz uygulamalarının, uygulamalar ve oyunlar için tutarlı kare hızı ve yanıt süreleri sağlayarak sorunsuz bir kullanıcı arayüzü sağlaması ZORUNLUDUR. Cihaz uygulamalarının aşağıdaki gereksinimleri karşılaması ZORUNLUDUR:
- Tutarlı kare gecikmesi . Tutarsız kare gecikmesi veya karelerin oluşturulmasında gecikme, saniyede 5 kareden daha sık OLMAMALIDIR ve saniyede 1 karenin altında OLMALIDIR.
- Kullanıcı arayüzü gecikmesi . Cihaz uygulamaları, Android Uyumluluk Test Paketi (CTS) tarafından 36 saniyeden kısa bir süre içinde tanımlandığı şekilde 10.000 liste girişinden oluşan bir listeyi kaydırarak düşük gecikmeli kullanıcı deneyimi sunmalıdır.
- Görev değiştirme . Birden fazla uygulama kullanıma sunulduğunda, zaten çalışan bir uygulamayı başlatıldıktan sonra yeniden başlatmak 1 saniyeden kısa sürer.
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ı ZORUNLUDUR.
- Sıralı yazma Cihaz uygulamalarında, 10 MB yazma arabelleği kullanan 256 MB'lık bir dosya için en az 5 MB/sn'lik sıralı yazma performansı sağlanması ZORUNLUDUR.
- Rastgele yazma . Cihaz uygulamalarında, 4 KB yazma arabelleği kullanan 256 MB'lık bir dosya için en az 0,5 MB/sn'lik rastgele bir yazma performansı ZORUNLUDUR.
- Sıralı okuma Cihaz uygulamalarında, 10 MB yazma arabelleği kullanan 256 MB'lık bir dosya için en az 15 MB/sn'lik sıralı okuma performansı ZORUNLUDUR.
- Rastgele okuma . Cihaz uygulamalarında, 4 KB yazma arabelleği kullanan 256 MB'lık bir dosya için en az 3,5 MB/sn'lik rastgele okuma performansının sağlanması ZORUNLUDUR.
8.3. Güç Tasarrufu Modları
Android 6.0'da, pil kullanımını optimize etmek için Uygulama Bekleme ve Doz güç tasarrufu modları kullanıma sunuldu. Bu modlardan muaf tutulan tüm Uygulamalar, son kullanıcı tarafından görünür OLMALIDIR. Ayrıca, bu güç tasarrufu modlarının tetiklenme, bakım, uyandırma algoritmaları ve genel sistem ayarlarının kullanımı, Android Açık Kaynak Projesi'nden farklı OLMAMALIDIR.
Güç tasarrufu modlarına ek olarak, Android cihaz uygulamaları, Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) tarafından tanımlanan 4 uyku gücü durumunun herhangi birini veya tümünü uygulayabilir. Ancak cihaz S3 ve S4 güç durumlarını uyguluyorsa bu durumlara yalnızca cihazın fiziksel olarak bir parçası olan bir kapak kapatıldığında girilebilir.
8.4. Güç Tüketimi Hesaplaması
Güç tüketiminin daha doğru bir şekilde hesaplanması ve raporlanması, uygulama geliştiriciye, uygulamanın güç kullanım modelini optimize etmek için hem teşvikler hem de araçlar sağlar. Dolayısıyla, cihaz uygulamaları:
- Donanım bileşeninin güç kullanımını izleyebilme ve kullanımı belirli uygulamalara güç veren özelliklerle ilişkilendirebilmek ZORUNLUDUR. Özel olarak, uygulamalar:
- Android Açık Kaynak Projesi sitesinde belirtildiği üzere, her donanım bileşeninin mevcut tüketim değerini ve bileşenlerin zaman içinde neden olduğu yaklaşık pil tüketimini tanımlayan bileşen başına bir güç profili SAĞLANMALIDIR.
- Tüm güç tüketimi değerleri miliamper saat (mAh) cinsinden bildirilmelidir.
- Donanım bileşeninin güç kullanımı bir uygulamayla ilişkilendirilemezse, donanım bileşeninin kendisiyle ilişkilendirilmesi GEREKİR.
- Her işlemin UID'si başına CPU güç tüketimi bildirilmelidir. Android Açık Kaynak Projesi,
uid_cputime
çekirdek modülünün uygulanması aracılığıyla bu şartı karşılar.
- Bu güç kullanımının, uygulama geliştiriciye
adb shell dumpsys batterystats
kabuk komutu aracılığıyla kullanılabilmesi ZORUNLUDUR. - android.intent.action.POWER_USAGE_SUMMARY amacına uygun hareket etmeli ve bu güç kullanımını gösteren bir ayarlar menüsü görüntülemelidir.
8.5. Tutarlı performans
Arka planda çalışan diğer uygulamalar veya sıcaklık sınırları nedeniyle CPU'nun kısıtlanması nedeniyle, yüksek performanslı ve uzun süre çalışan uygulamalarda performans önemli ölçüde dalgalanabilir. Android'de programatik arayüzler bulunur. Böylece, cihaz uygun olduğunda ön plandaki uygulama, sistemin bu tür dalgalanmaları gidermek için kaynak tahsisini optimize etmesini isteyebilir.
Cihaz uygulamaları, Window.setSustainedPerformanceMode()
API yöntemiyle istendiğinde üst ön plan uygulamasına uzun bir süre boyunca tutarlı bir performans düzeyi sağlayabilen Sürdürülebilir Performans Modunu DESTEKLEMELİDİR. Bir cihaz uygulamasının, sürdürülebilir performans modu desteğini PowerManager.isSustainedPerformanceModeSupported()
API yöntemi aracılığıyla doğru bir şekilde bildirmesi ZORUNLUDUR.
İki veya daha fazla CPU çekirdeğine sahip cihaz uygulamaları, üst ön plan uygulaması tarafından ayırtılabilecek en az bir tane özel çekirdek SAĞLANMALIDIR. Sağlanmışsa uygulamaların aşağıdaki gereksinimleri karşılaması ZORUNLUDUR:
- Uygulamaların, üst ön plan uygulaması tarafından ayırtılabilecek özel çekirdeklerin kimlik numaralarını
Process.getExclusiveCores()
API yöntemi kullanılarak raporlanması ZORUNLUDUR. - Cihaz uygulamaları, uygulama tarafından özel çekirdeklerde çalışmak için kullanılan cihaz sürücüleri hariç, kullanıcı alanı işlemlerine izin VERMEMELİDİR, ancak bazı çekirdek işlemlerinin gerektiği gibi çalışmasına izin SAĞLANABİLİR.
Bir cihaz uygulaması özel çekirdeği desteklemiyorsa Process.getExclusiveCores()
API yöntemiyle boş bir liste döndürmesi GEREKİR.
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamalarında, Android geliştirici dokümanlarındaki API'lerde yer alan Güvenlik ve İzinler referans belgesinde tanımlandığı şekilde Android platformu güvenlik modeliyle tutarlı bir güvenlik modeli uygulanmalıdır. Cihaz uygulamaları, herhangi bir üçüncü taraftan/yetkililerden ek izin/sertifika gerekmeden kendinden imzalı uygulamaların yüklenmesini desteklemelidir. Özellikle, uyumlu cihazların aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını desteklemesi ZORUNLUDUR.
9.1. İzinler
Cihaz uygulamalarının, Android geliştirici dokümanlarında tanımlandığı gibi Android izin modelini desteklemesi ZORUNLUDUR. Özellikle, uygulamaların SDK belgelerinde açıklanan şekilde her bir izni zorunlu kılması ZORUNLUDUR; hiçbir izin çıkarılamaz, değiştirilemez veya yoksayılamaz. Yeni izin kimliği dizelerinin android.* ad alanında olmaması durumunda uygulamalar ek izinler ETABİLİR.
protectionLevel
"PROTECTION_FLAG_PRIVILEGED" değerine sahip izinlerin, yalnızca sistem görüntüsünün izin verilenler listesindeki ayrıcalıklı yollarına(ör. AOSP uygulamasındaki system/priv-app
yolu) önceden yüklenmiş uygulamalara verilmelidir.
Tehlikeli koruma seviyesi olan izinler, çalışma zamanında istenen izinlerdir. targetSdkVersion olan uygulamalar > 22 bunları çalışma zamanında isteyin. Cihaz uygulamaları:
- Kullanıcının, istenen çalışma zamanı izinlerini verip vermeyeceğini seçmesi için özel bir arayüz gösterilmesi ve ayrıca kullanıcının çalışma zamanında istenen izinleri yönetebileceği bir arayüz sağlanması ZORUNLUDUR.
- Her iki kullanıcı arayüzü için yalnızca bir tane uygulama OLMALIDIR.
- Aşağıdaki durumlar haricinde, önceden yüklenmiş uygulamalara çalışma zamanında istenen izin VERMEMELİDİR:
- kullanıcının izni, uygulama tarafından kullanılmadan önce alınabilir
- çalışma zamanı izinleri, önceden yüklenen uygulamanın varsayılan işleyici olarak ayarlandığı bir intent kalıbıyla ilişkili
9.2. UID ve İşlem Yalıtımı
Cihaz uygulamalarının, her uygulamanın benzersiz bir Unixstyle UID'si olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alan modelini desteklemesi ZORUNLUDUR. Güvenlik ve İzinler referansında tanımlandığı gibi, uygulamaların düzgün bir şekilde imzalanmış ve oluşturulmuş olması koşuluyla, cihaz uygulamalarının aynı Linux kullanıcı kimliğiyle birden fazla uygulamanın çalıştırılmasını desteklemesi ZORUNLUDUR.
9.3. Dosya Sistemi İzinleri
Cihaz uygulamalarının, Güvenlik ve İzinler referansında tanımlanan Android dosya erişimi izinleri modelini desteklemesi ZORUNLUDUR.
9.4. Alternatif Yürütme Ortamları
Cihaz uygulamaları, uygulamaları Dalvik Yürütülebilir Biçim veya yerel kod dışında bir yazılım ya da teknoloji kullanarak yürüten çalışma zamanı ortamları içerebilir. 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 ihlal ETMEMELİDİR.
Alternatif çalışma zamanlarının kendileri Android uygulaması olması ve 9. bölümde açıklanan standart Android güvenlik modeline uyması ZORUNLUDUR.
Alternatif çalışma zamanlarına, <uses-permission> aracılığıyla çalışma zamanının AndroidManifest.xml dosyasında istenmeyen izinlerle korunan kaynaklara erişim VERİLMEMELİDİR. mekanizmasıdır.
Alternatif çalışma zamanları, uygulamaların, sistem uygulamalarıyla sınırlı olan Android izinleriyle korunan özellikleri kullanmasına İZİN VERMEMELİDİR.
Alternatif çalışma zamanlarının Android korumalı alan modeline uyması ZORUNLUDUR. Daha ayrıntılı olarak belirtmek gerekirse, alternatif çalışma zamanları:
- Uygulamaları PackageManager aracılığıyla ayrı Android korumalı alanlarına (Linux kullanıcı kimlikleri vb.) YÜKLEMELİDİR.
- Alternatif çalışma zamanını kullanan tüm uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlanabilir.
- Alternatif bir çalışma zamanı kullanan yüklü uygulamalar, standart Android mekanizmaları (paylaşılan kullanıcı kimliği ve imzalama sertifikası hariç) dışında, cihazda yüklü başka bir uygulamanın korumalı alanını YENİDEN KULLANMAMALIDIR.
- Diğer Android uygulamalarına karşılık gelen korumalı alanlar ile BAŞLATILMAMALIDIR, bu uygulamalara erişim izni vermemeli veya erişim izni ALINMAMALIDIR.
- Diğer uygulamalara süper kullanıcının (kök) veya başka bir kullanıcı kimliğiyle başlatılmamalı, bu ayrıcalıklara verilemez veya başka uygulamalara verilemez.
Alternatif çalışma zamanlarına ait .apk dosyaları, cihaz uygulamasının sistem görüntüsüne dahil edilebilir, ancak cihaz uygulamasına dahil olan diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla imzalanması ZORUNLUDUR.
Uygulama yüklerken, alternatif çalışma zamanlarının uygulama tarafından kullanılan Android izinleri için kullanıcı izni alması ZORUNLUDUR. Bir uygulamanın, karşılık gelen Android izni (Kamera, GPS vb. gibi) bulunan bir cihaz kaynağını kullanması gerekiyorsa, alternatif çalışma zamanı kullanıcıya uygulamanın bu kaynağa erişebileceğini bildirmelidir. Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmiyorsa çalışma zamanı ortamının, bu çalışma zamanını kullanan herhangi bir uygulamayı yüklerken çalışma zamanının kendisi tarafından tutulan tüm izinleri LİSTELEMELİDİR.
9.5. Çok Kullanıcılı Destek
Android, birden fazla kullanıcı desteği içerir ve tam kullanıcı izolasyonu desteği sağlar. Cihaz uygulamaları birden fazla kullanıcıyı etkinleştirebilir. Ancak etkinleştirildiğinde, çok kullanıcılı desteğe ilişkin aşağıdaki gereksinimlerin karşılanması ZORUNLUDUR:
- Çok kullanıcılı desteğin etkinleştirildiği 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ının, cihaz sahiplerinin diğer kullanıcıları ve bu kullanıcıların cihazdaki özelliklerini yönetmesine olanak tanıyan bir özellik olan kısıtlanmış profilleri DESTEKLEMELİDİR. Kısıtlanmış profiller sayesinde cihaz sahipleri, ek kullanıcıların çalışabileceği ayrı ortamlar oluşturup bu ortamlarda bulunan uygulamalardaki kısıtlamaları daha ayrıntılı şekilde yönetebilir.
- Buna karşılık, android.hardware.telephony özellik işaretini beyan eden cihaz uygulamaları, kısıtlanmış profilleri DESTEKLEMEMELİDİR, ancak diğer kullanıcıların sesli aramalara ve SMS'lere erişmesini etkinleştirmek /devre dışı bırakmak için denetimlerin AOSP uygulamasıyla uyumlu OLMALIDIR.
- Cihaz uygulamalarında, API'lerdeki Güvenlik ve İzinler referans belgesinde tanımlandığı üzere her kullanıcı için Android platform güvenliği modeliyle tutarlı bir güvenlik modeli uygulanmalıdır.
- Bir Android cihazdaki her kullanıcı örneğinin ayrı ve izole harici depolama dizinlerine sahip olması ZORUNLUDUR. Cihaz uygulamalarında birden fazla kullanıcı saklanabilir aynı birimdeki veya dosya sistemindeki veriler yer alır. Ancak cihaz uygulamasının, belirli bir kullanıcıya ait olan ve belirli bir kullanıcı adına çalıştırılan uygulamaların başka herhangi bir kullanıcıya ait verileri listeleyememesini, okuyamayacağını veya yazmasını zorunlu kılması ZORUNLUDUR. SD kart yuvası gibi çıkarılabilir medya öğelerinin, bir kullanıcının ana bilgisayar aracılığıyla diğer bir kullanıcının verilerine erişmesine olanak tanıyabileceğini unutmayın. Bu nedenle, harici depolama API'leri için çıkarılabilir medya kullanan cihaz uygulamalarında, çoklu kullanıcı yalnızca sistem tarafından erişilebilen kaldırılamayan medyada depolanan bir anahtar kullanılarak etkinleştirildiyse SD kartın içeriğini şifrelemesi ZORUNLUDUR. Bu durum, medyayı ana makine PC tarafından okunamaz hale getireceğinden ana makine PC'lerin geçerli kullanıcının verilerine erişmesini sağlamak için MTP'ye veya benzer bir sisteme geçmek için cihaz uygulamalarının yapılması gerekecektir. Buna göre, cihaz uygulamalarında birincil harici depolama olarak çıkarılabilir medya kullanılıyorsa çoklu kullanıcı uygulaması ETKİNLEŞTİRİLEMEZ, ancak ETKİNLEŞTİRMEMELİDİR.
9.6. Premium SMS Uyarısı
Android, giden premium SMS mesajları ile ilgili olarak kullanıcıları uyarma desteği sunar. Premium SMS mesajları, bir operatöre kayıtlı bir hizmete gönderilen ve kullanıcıdan ücret alınabilecek kısa mesajlardır. android.hardware.telephony desteği beyan eden cihaz uygulamalarının, cihazdaki /data/misc/sms/codes.xml dosyasında tanımlanan normal ifadelerle tanımlanan numaralara SMS mesajı göndermeden önce kullanıcıları uyarması ZORUNLUDUR. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılayan bir uygulama sağlar.
9.7. Çekirdek Güvenlik Özellikleri
Android Sandbox, Security-Advanced Linux (SELinux) zorunlu erişim denetimi (MAC) sistemini, seccomp korumalı alanını ve Linux çekirdeğindeki diğer güvenlik özelliklerini kullanan özellikler içerir. SELinux veya Android çerçevesinin altında uygulanan diğer güvenlik özellikleri:
- Mevcut uygulamalarla uyumluluğun sürdürülmesi ZORUNLUDUR.
- Bir güvenlik ihlali tespit edilip başarıyla engellendiğinde görünür bir kullanıcı arayüzü BULUNMAMALIDIR ancak başarıyla bir kötüye kullanımla sonuçlanan engellemesi kaldırılmış bir güvenlik ihlali meydana geldiğinde kullanıcı arayüzü görünür OLABİLİR.
- Kullanıcı veya geliştirici tarafından yapılandırılabilir OLMAMALIDIR.
Politika yapılandırmasına ilişkin herhangi bir API, başka bir uygulamayı (ör. Device Management API) etkileyebilecek bir uygulamada açığa çıkarsa API, uyumluluğu bozan yapılandırmalara İZİN VERMEMELİDİR.
Cihazların SELinux'u veya Linux dışında bir çekirdek kullanıyorsa eşdeğer bir zorunlu erişim kontrol sistemini uygulaması ZORUNLUDUR. Cihazların ayrıca, yukarı akış Android açık kaynak projesindeki referans uygulamanın karşılaması gereken aşağıdaki şartları da karşılaması ZORUNLUDUR.
Cihaz uygulamaları:
- SELinux'u genel uygulama moduna göre ayarlamak ZORUNLUDUR.
- Tüm alan adları zorunlu modda yapılandırılması ZORUNLUDUR. Bir cihaza/tedarikçi firmaya özel alanlar da dahil olmak üzere izin modundaki alanlara izin verilmez.
- Yukarı akış Android Açık Kaynak Projesi'nde (AOSP) sağlanan sistem/sepolicy klasöründe bulunan "hiçbir zaman izin verme" kurallarını DEĞİŞTİRMEMELİ, DEĞERLENDİRMEMELİ veya DEĞİŞTİRMEMELİDİR. Politikanın hem AOSP SELinux alanlarında hem de cihaza/tedarikçi firmaya özel alan adlarında mevcut tüm "izin verilmemesi" kurallarıyla derlenmesi ZORUNLUDUR.
- Android Açık Kaynak Projesi sitesinde açıklandığı üzere her işlem için daha dar kapsamlı bir erişim izni verilebilmesi için medya çerçevesinin birden çok işleme bölünmesi ZORUNLUDUR.
Cihaz uygulamaları, yukarı akış Android Açık Kaynak Projesi'nin sistem/sepolicy klasöründe sağlanan varsayılan SELinux politikasını koruyup bu politikaya yalnızca kendi cihaza özel yapılandırmaları için ekleme yapmalıdır. Cihaz uygulamalarının yukarı akış Android Açık Kaynak Projesi ile uyumlu OLMALIDIR.
Cihazların, çok iş parçacıklı programlardan yapılandırılabilir bir politika kullanarak sistem çağrılarının filtrelenmesine olanak tanıyan bir çekirdek uygulamasını korumalı alana alma mekanizması uygulaması ZORUNLUDUR. Yukarı akış Android Açık Kaynak Projesi, source.android.com sayfasının Kernel Yapılandırması bölümünde açıklandığı gibi, iş parçacığı grubu senkronizasyonu (TSYNC) ile seccomp-BPF'yi etkinleştirerek bu şartı karşılar.
9.8. Gizlilik
Cihaz, ekranda görüntülenen içeriği yakalayan ve/veya cihazda çalınan ses akışını kaydeden sistemde bir işlev uyguluyorsa, bu işlev her etkinleştirildiğinde ve etkin bir şekilde görüntü yakalama/kaydetme sırasında kullanıcıya sürekli olarak bilgi GEREKMELİDİR.
Bir cihaz uygulamasında, ağ veri trafiğini varsayılan olarak proxy sunucu veya VPN ağ geçidi üzerinden yönlendiren bir mekanizma varsa (örneğin, android.permission.Control_VPN ile bir VPN hizmetine önceden izin verilmesi), VPN'nin Device Policy (Cihaz Politikası Denetleyicisi) tarafından DevicePolicyManager.setAlwaysOnVpnPackage()
üzerinden etkinleştirilmesi durumunda, cihaz uygulamasının bu mekanizmayı etkinleştirmeden önce kullanıcının iznini istemesi GEREKİR. Bu durumda kullanıcının ayrı bir izin vermesi gerekmese de yalnızca bilgilendirilmesi ZORUNLUDUR.
Cihaz uygulamalarının, kullanıcı tarafından eklenen boş bir Sertifika Yetkilisi (CA) deposuyla gönderilmesi ve sistem tarafından güvenilen CA mağazası için yukarı akış Android Açık Kaynak Projesi'nde sağlanan aynı kök sertifikaların önceden yüklenmesi ZORUNLUDUR.
Cihazlar VPN üzerinden yönlendirildiğinde veya bir kullanıcı kök CA'sı yüklendiğinde uygulamanın, ağ trafiğinin kullanıcı tarafından izlenebileceğini belirten bir uyarı GÖRÜNTÜLEMELİDİR.
Bir cihaz uygulamasında USB çevre birimi modu destekli bir USB bağlantı noktası varsa, paylaşılan depolama biriminin içeriklerine USB bağlantı noktası üzerinden erişime izin vermeden önce kullanıcının onayını isteyen bir kullanıcı arayüzü sunulmalıdır.
9.9. Veri Depolama Şifrelemesi
Cihaz uygulaması, bölüm 9.11.1'de açıklandığı gibi bir güvenli kilit ekranını destekliyorsa, cihazın kalıcı ve kaldırılamaz bir parçası olması durumunda uygulamanın paylaşılan depolama alanı bölümünün (/veri bölümünün) yanı sıra uygulamanın paylaşılan depolama alanı bölümünü (/sdcard bölümü) de cihazın veri depolama şifrelemesini DESTEKLEMELİDİR.
Veri depolama şifrelemesini destekleyen ve 50 MiB/sn'den yüksek Gelişmiş Şifreleme Standardı (AES) şifreleme performanslarına sahip cihaz uygulamalarında, kullanıcı ilk kurulum deneyimini tamamladığında veri depolama şifrelemesinin varsayılan olarak etkinleştirilmiş olması ZORUNLUDUR. Şifreleme varsayılan olarak devre dışı bırakılmış önceki bir Android sürümünde bir cihaz uygulaması kullanıma sunulduysa bu tür bir cihaz, sistem yazılımı güncellemesi üzerinden bu gereksinimi karşılayamaz ve dolayısıyla muaf tutulabilir.
Cihaz uygulamaları, Dosya Tabanlı Şifreleme (FBE) uygulandığında yukarıdaki veri depolama şifrelemesi gereksinimini karşılamalıdır.
9.9.1. Doğrudan Başlatma
Tüm cihazlar Depolama Şifreleme'yi desteklemeseler bile Doğrudan Başlatma modu API'lerini uygulamalıdır. Özellikle, LOCKED_BOOT_COMPLETED ve ACTION_USER_UNLOCKED Amaçları, Doğrudan Başlatmaya duyarlı uygulamalara Cihazda Şifrelenmiş (DE) ve Kimlik Bilgisiyle Şifrelenmiş (CE) depolama konumlarının kullanıcının kullanılabilir olduğunu bildirmek için yayınlanıyor olmalıdır.
9.9.2. Dosya Tabanlı Şifreleme
FBE'yi destekleyen cihaz uygulamaları:
- Kullanıcının kimlik bilgilerini alması için kullanıcıya meydan okumadan başlatılması ve Doğrudan Başlatma'ya duyarlı uygulamaların LOCKED_BOOT_COMPLETED mesajı yayınlandıktan sonra Cihazla Şifrelenmiş (DE) depolama alanına erişmesine izin verilmesi ZORUNLUDUR.
- Kimlik Bilgisi Şifrelenmiş (CE) depolama alanına yalnızca kullanıcı, kimlik bilgilerini (ör. şifre kodu, PIN, desen veya parmak izi) sağlayarak cihazın kilidini açtıktan ve ACTION_USER_UNLOCKED mesajı yayınlandıktan sonra izin verilmelidir. Cihaz uygulamalarında, kullanıcı tarafından sağlanan kimlik bilgileri olmadan CE korumalı depolama alanının kilidini açmak için herhangi bir yöntem SUNMAMALIDIR.
- Doğrulanmış Başlatma'nın desteklenmesi ve DE anahtarlarının, cihazın donanım güven kaynağına kriptografik olarak bağlı olduğundan emin olması ZORUNLUDUR.
- XTS modunda, 256 bit anahtar uzunluğuna sahip AES kullanılarak dosya içeriklerinin şifrelenmesinin desteklenmesi ZORUNLUDUR.
- CBC-CTS modunda anahtar uzunluğu 256 bit olan AES kullanılarak dosya adının şifrelenmesinin desteklenmesi ZORUNLUDUR.
- Dosya içeriği ve dosya adı şifrelemesi için alternatif şifreleri, anahtar uzunluklarını ve modları destekleyebilir, ancak varsayılan olarak zorunlu olarak desteklenen şifrelerin, anahtar uzunluklarının ve modların kullanılması ZORUNLUDUR.
- Önceden yüklenmiş gerekli uygulamaları (ör. Alarm, Telefon, Messenger) Doğrudan Başlatma'ya karşı duyarlı hale getirmelisiniz.
CE ve DE depolama alanlarını koruyan anahtarlar:
- Donanım destekli bir Anahtar Deposu'na kriptografik olarak bağlı olması ZORUNLUDUR. CE anahtarları, kullanıcının kilit ekranı kimlik bilgilerine bağlı olmalıdır. Kullanıcı herhangi bir kilit ekranı kimlik bilgisi belirtmemişse CE anahtarları varsayılan bir şifre koduna BAĞLANMALIDIR.
- Benzersiz ve farklı olması ZORUNLUDUR. 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 anahtarlarıyla eşleşemez.
Yukarı akış Android Açık Kaynak projesi, Linux çekirdek ext4 şifreleme özelliğine göre bu özelliğin tercih edilen bir uygulamasını sağlar.
9.9.3. Tam Disk Şifreleme
Tam disk şifrelemeyi (FDE) destekleyen cihaz uygulamaları. AES'nin 128 bit (veya daha büyük) bir anahtarla ve depolama için tasarlanmış bir modla (örneğin, AES-XTS, AES-CBC-ESSIV) kullanılması ZORUNLUDUR. Şifreleme anahtarı, hiçbir zaman şifrelenmeden depolama alanına YAZILMAMALIDIR. Etkin kullanım dışında, şifreleme anahtarının, yavaş bir uzatma algoritması (ör. PBKDF2 veya şifreleme) kullanılarak genişletilen kilit ekranı kimlik bilgileriyle AES şifrelemesi gerekir. Kullanıcı kilit ekranı kimlik bilgisi 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 kullanmalıdır. Cihaz, donanım destekli bir anahtar deposu sağlıyorsa şifre genişletme algoritmasının bu anahtar deposuna kriptografik olarak bağlı olması ZORUNLUDUR. Şifreleme anahtarı, cihazdan GÖNDERİLMEMELİDİR (kullanıcının şifre kodu ve/veya donanıma bağlı anahtarla sarmalanmış olsa bile). Yukarı akış Android Açık Kaynak projesi, Linux çekirdek özelliği dm-crypt'e göre bu özelliğin tercih edilen bir uygulamasını sağlar.
9:10. Cihaz bütünlüğü
Aşağıdaki şartlar, cihaz bütünlüğünün durumunun şeffaf olmasını sağlar.
Cihaz uygulamaları, bootloader durumlarının sistem görüntüsünün yanıp sönmesine izin verip vermediğinin System API yöntemi PersistentDataBlockManager.getFlashLockState() ile doğru bir şekilde raporlanması ZORUNLUDUR. FLASH_LOCK_UNKNOWN
durumu, bu yeni sistem API yönteminin bulunmadığı önceki bir Android sürümünden yükseltme yapan cihaz uygulamaları için ayrılmıştır.
Doğrulanmış başlatma, cihaz yazılımının bütünlüğünü garanti eden bir özelliktir. Bir cihaz uygulaması bu özelliği destekliyorsa:
- android.software.verify_boot platform özellik işaretini beyan edin.
- Her başlatma sırasında doğrulama yapın.
- Doğrulamaya güven kökü olan sabit bir donanım anahtarından başlayın ve sistem bölümüne kadar uzanırsınız.
- Kodu bir sonraki aşamada çalıştırmadan önce, sonraki aşamada tüm baytların bütünlüğünü ve özgünlüğünü kontrol etmek için doğrulamanın her aşamasını uygulayın.
- Karma oluşturma algoritmaları (SHA-256) ve ortak anahtar boyutları (RSA-2048) için NIST'nin güncel önerileri kadar güçlü doğrulama algoritmalarını kullanın.
- Kullanıcı, cihazı herhangi bir şekilde başlatmayı denemediği sürece, sistem doğrulaması başarısız olduğunda başlatma işleminin tamamlanmasına İZİN VERİLMEMELİDİR. Bu durumda, doğrulanmamış depolama bloklarındaki verilerin kullanılmaması ZORUNLUDUR.
- Kullanıcı, önyükleyicinin kilidini açık bir şekilde açmadığı sürece, cihazdaki doğrulanmış bölümlerin değiştirilmesine İZİN VERİLMEMELİDİR.
Yukarı akış Android Açık Kaynak Projesi, Linux çekirdek özelliği dm-verity'ye göre bu özelliğin tercih edilen uygulamasını sağlar.
Android 6.0'dan itibaren, Gelişmiş Şifreleme Standardı (AES) şifreleme performansı 50 MiB/saniyenin üzerinde olan cihaz uygulamalarında cihaz bütünlüğü için doğrulanmış başlatma desteği ZORUNLUDUR.
Android'in önceki sürümlerinde, doğrulanmış önyüklemeyi desteklemeden zaten bir cihaz uygulaması başlatıldıysa bu tür bir cihaz, sistem yazılımı güncellemesiyle bu özellik için destek ekleyemez ve dolayısıyla bu şarttan muaf tutulur.
9:11. Anahtarlar ve Kimlik Bilgileri
Android Anahtar Deposu Sistemi, uygulama geliştiricilerinin şifreleme anahtarlarını bir kapsayıcıda depolamalarına ve KeyChain API veya Keystore API üzerinden şifreleme işlemlerinde kullanmalarına olanak tanır.
Tüm Android cihaz uygulamalarının aşağıdaki gereksinimleri karşılaması ZORUNLUDUR:
- Oluşturulabilecek anahtar sayısını sınırlamamalı ve en az 8.192'den fazla anahtarın içe aktarılmasına izin VERMELİDİR.
- Kilit ekranı kimlik doğrulaması için hız sınırlaması ZORUNLUDUR ve bir üstel geri yükleme algoritması ZORUNLUDUR. 150 başarısız denemeden sonra, gecikmenin deneme başına en az 24 saat olması ZORUNLUDUR.
- Cihaz uygulaması güvenli bir kilit ekranını desteklediğinde, anahtar deposu uygulamasını güvenli donanımla yedeklemesi ve aşağıdaki gereksinimleri karşılaması gerekir:
- Android Anahtar Deposu sisteminin desteklenen algoritmalarını düzgün bir şekilde desteklemek için RSA, AES, ECDSA ve HMAC şifreleme algoritmaları ile MD5, SHA1, SHA-2 Ailesi karma işlevlerinin donanım destekli uygulamalarına sahip OLMALIDIR.
- Kilit ekranı kimlik doğrulamasını güvenli donanımda gerçekleştirmesi ZORUNLUDUR ve kimlik doğrulamasına bağlı anahtarların kullanılmasına yalnızca işlem başarılı olduğunda izin verilir. Yukarı akış Android Açık Kaynak Projesi, bu şartı karşılamak için kullanılabilecek Gatekeeper Donanım Soyutlama Katmanı'nı (HAL) sağlar.
Önceki Android sürümünde bir cihaz uygulaması kullanıma sunulduysa bu tür bir cihaz, donanım destekli anahtar deposu gerektiren android.hardware.fingerprint
özelliğini beyan etmediği sürece donanım destekli anahtar deposuna sahip olma zorunluluğundan muaf olur.
9.11.1. Güvenli Kilit Ekranı
Cihaz uygulamalarında kilit ekranının kilidini açmak için kimlik doğrulama yöntemleri eklenebilir veya değiştirilebilir, ancak yine de aşağıdaki gereksinimlerin karşılanması ZORUNLUDUR:
- Kimlik doğrulama yöntemi, bilinen bir gizli anahtara dayalıysa aşağıdaki tüm gereksinimleri karşılamadığı sürece güvenli kilit ekranı olarak DEĞERLENDİRİLMEMELİDİR:
- İzin verilen en kısa giriş uzunluğunun entropisi 10 bitten büyük ZORUNLUDUR.
- Olası tüm girişlerin maksimum entropisinin 18 bitten büyük olması ZORUNLUDUR.
- Uygulanan ve AOSP'de sağlanan mevcut kimlik doğrulama yöntemlerinden (PIN, desen, şifre) hiçbirinin değiştirilmemesi ZORUNLUDUR.
- Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını
DevicePolicyManager.setPasswordQuality()
yöntemi aracılığıylaPASSWORD_QUALITY_SOMETHING
değerinden daha kısıtlayıcı bir kalite sabitiyle ayarladığında devre dışı bırakılması ZORUNLUDUR .
- Kimlik doğrulama yöntemi, fiziksel bir jetona veya konuma dayalıysa, aşağıdaki tüm şartları karşılamadığı sürece güvenli kilit ekranı olarak KULLANILMAMALIDIR:
- Bilinen bir gizli anahtarı temel alan ve güvenli kilit ekranı olarak değerlendirilme gereksinimlerini karşılayan birincil kimlik doğrulama yöntemlerinden birini kullanmak için yedek bir mekanizmanın olması ZORUNLUDUR.
- Bu politikanın devre dışı bırakılması ve birincil kimlik doğrulamasının yalnızca, Cihaz Politikası Denetleyicisi (DPC) uygulaması politikayı,
PASSWORD_QUALITY_UNSPECIFIED
değerinden daha kısıtlayıcı bir kalite sabitine sahipDevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)
yöntemiyle veyaDevicePolicyManager.setPasswordQuality()
yöntemiyle ayarladığında ekran kilidini açmasına izin vermesi ZORUNLUDUR .
- Kimlik doğrulama yöntemi, biyometriye dayalıysa aşağıdaki tüm şartları karşılamadığı sürece güvenli kilit ekranı olarak KULLANILMAMALIDIR:
- 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 mekanizmanın olması ZORUNLUDUR.
- Bu özelliğin devre dışı bırakılması ve birincil kimlik doğrulamanın yalnızca Device Policy Denetleyicisi (DPC) uygulaması
DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_FINGERPRINT)
yöntemini çağırarak tuş koruyucu özellik politikasını ayarladığında ekran kilidini açmasına izin verilmesi ZORUNLUDUR. - Bölüm 7.3.10'da açıklandığı gibi bir parmak izi sensörü için gerekene eşit veya bundan daha yüksek bir yanlış kabul oranına sahip olması ya da başka bir şekilde devre dışı bırakılması ve birincil kimlik doğrulamasının yalnızca Cihaz Politikası Denetleyicisi (DPC) uygulaması,
DevicePolicyManager.setPasswordQuality()
yöntemini kullanarak şifre kalitesi politikasınıPASSWORD_QUALITY_BIOMETRIC_WEAK
üzerinde daha kısıtlayıcı bir kalite sabitiyle ayarladığında ekranın kilidini açmasına izin vermesi ZORUNLUDUR .
- Kimlik doğrulama yöntemi güvenli kilit ekranı olarak değerlendirilemiyorsa:
- Hem
KeyguardManager.isKeyguardSecure()
hem deKeyguardManager.isDeviceSecure()
yöntemleri içinfalse
döndürülmesi ZORUNLUDUR. - Cihaz Politikası Denetleyici (DPC) uygulaması, şifre kalitesi politikasını
DevicePolicyManager.setPasswordQuality()
yöntemi aracılığıylaPASSWORD_QUALITY_UNSPECIFIED
değerinden daha kısıtlayıcı bir kalite sabitiyle ayarladığında devre dışı bırakılması ZORUNLUDUR . DevicePolicyManager.setPasswordExpirationTimeout()
tarafından ayarlanan şifre süre sonu zamanlayıcıları SIFIRLANMAMALIDIR.- Uygulama
KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)
çağırdıysa anahtar depolarına erişim için kimlik doğrulaması YAPILMAMALIDIR.
- Hem
- Kimlik doğrulama yöntemi fiziksel bir jetona, konuma veya biyometriye dayanıyorsa bölüm 7.3.10'da açıklandığı gibi parmak izi sensörleri için gerekli olandan daha yüksek yanlış kabul oranına sahip bir biyometri yöntemi varsa:
DevicePolicyManager.setPasswordExpirationTimeout()
tarafından ayarlanan şifre süre sonu zamanlayıcıları SIFIRLANMAMALIDIR.- Uygulama
KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)
çağırdıysa anahtar depolarına erişim için kimlik doğrulaması YAPILMAMALIDIR.
9:12. Veri Silme
Cihazların, kullanıcılara "Fabrika Verilerine Sıfırlama" işlemini gerçekleştirmeleri için bir mekanizma sağlaması ZORUNLUDUR Aşağıdakiler hariç tüm verilerin mantıksal ve fiziksel olarak silinmesini sağlar:
- Sistem görüntüsü
- Sistem görüntüsü için gereken tüm işletim sistemi dosyaları
Kullanıcı tarafından oluşturulan tüm verilerin silinmesi ZORUNLUDUR. Bunun, veri silmeyle ilgili NIST SP800-88 gibi ilgili endüstri standartlarını karşılaması ZORUNLUDUR. Bu özelliğin, Cihaz Yönetimi bölümü 3.9'da açıklanan silmeData() API'sinin (Android Device Management API'sinin bir parçası) uygulanması için kullanılması ZORUNLUDUR.
Cihazlar, mantıksal bir veri silme işlemi gerçekleştiren hızlı bir veri silme işlemi sağlayabilir.
9:13. Güvenli Başlatma Modu
Android, kullanıcıların yalnızca önceden yüklenmiş sistem uygulamalarının çalışmasına izin verilen ve tüm üçüncü taraf uygulamalarının devre dışı bırakıldığı bir modda önyüklemesini sağlayan bir mod sağlar. "Güvenli Başlatma Modu" olarak bilinen bu mod, kullanıcıya zararlı olabilecek üçüncü taraf uygulamalarını kaldırma olanağı tanır.
Güvenli Başlatma Modu'nun uygulanması ve aşağıdaki gereksinimlerin karşılanması için Android cihaz uygulamalarının ÖNEMLE ÖNERİLİR:
-
Cihaz uygulamaları, kullanıcıya, normal başlatma işleminden farklı bir iş akışıyla erişilebilen başlatma menüsünden Güvenli Başlatma Modu'na geçme seçeneği SAĞLAMALIDIR.
-
Üçüncü taraf uygulamasının bir Cihaz Politikası Denetleyicisi olduğu ve
UserManager.DISALLOW_SAFE_BOOT
işaretini doğru olarak ayarladığı durumlar dışında, cihaz uygulamalarında kullanıcıya Güvenli Başlatma Modu'na ve cihazda yüklü üçüncü taraf uygulamalarıyla kesintiye uğramayacak şekilde girme seçeneği sunulması ZORUNLUDUR. -
Cihaz uygulamaları, kullanıcıya Güvenli Mod'da üçüncü taraf uygulamalarını kaldırma olanağı SAĞLAMALIDIR.
9:14. Otomotiv Araç Sistemi Yalıtımı
Android Automotive cihazlarının, önemli araç alt sistemleriyle veri alışverişi yapması beklenir. Örneğin, CAN veri yolu gibi araç ağları üzerinden mesaj gönderip almak için araç HAL'sini kullanabilir. Android Automotive cihaz uygulamalarının, Android çerçevesi veya üçüncü taraf uygulamaları ile araç alt sistemleri arasında kötü amaçlı veya istenmeyen etkileşimleri önlemek için Android çerçeve katmanlarının altında güvenlik özellikleri uygulaması ZORUNLUDUR. Bu güvenlik özellikleri şunlardır:
- Android çerçevesi araç alt sistemlerinden gelen mesajları gizli tutma (ör. izin verilen mesaj türlerini ve mesaj kaynaklarını izin verilenler listesine ekleme).
- Android çerçevesinden veya üçüncü taraf uygulamalarından gelen hizmet reddi saldırılarına karşı bekçi. Bu, araç ağını trafikle boğarak araç alt sistemlerinin arızalanmasına neden olabilecek kötü amaçlı yazılımlara karşı koruma sağlar.
10. Yazılım Uyumluluğu Testi
Cihaz uygulamalarının bu bölümde açıklanan tüm testlerden geçmesi ZORUNLUDUR.
Ancak hiçbir yazılım test paketinin tam kapsamlı olmadığını unutmayın. Bu nedenle, cihaz uygulayıcılarına Android Açık Kaynak Projesi'nin sağladığı referans ve tercih edilen Android uygulamasında mümkün olduğunca minimum sayıda değişiklik yapmaları ÖNERİLİR. Bu sayede, yeniden çalışma gerektiren uyumsuzluklara neden olabilecek hatalar ve olası cihaz güncellemeleri riski en aza indirilir.
10.1. Uyumluluk Test Paketi
Cihaz uygulamalarının, cihazdaki son gönderim yazılımını kullanarak Android Açık Kaynak Projesi'nde bulunan Android Uyumluluk Test Paketi'ni (CTS) geçmesi ZORUNLUDUR. Buna ek olarak, cihaz uygulayıcılarının Android Açık Kaynak ağacındaki referans uygulamasını mümkün olduğunca çok kullanmaları gerekir. Ayrıca, CTS'de belirsizlik olması durumunda ve referans kaynak kodu bölümlerinin her türlü yeniden uygulanmasıyla ilgili uyumluluk sağlanmalıdır.
CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Herhangi bir yazılım gibi CTS'nin de kendisi hatalar içerebilir. CTS'nin sürümü bu Uyumluluk Tanımı'ndan bağımsız olarak oluşturulacaktır ve Android 7.0 için CTS'nin birden fazla revizyonu yayınlanabilir. Cihaz uygulamalarının, cihaz yazılımı tamamlandığında mevcut olan en son CTS sürümünü geçebilmesi ZORUNLUDUR.
10.2. CTS Doğrulayıcı
Cihaz uygulamalarının, CTS Doğrulayıcı'da geçerli tüm durumları doğru bir şekilde yürütülmesi ZORUNLUDUR. Uyumluluk Test Paketi'nde yer alan CTS Doğrulayıcı, kamera ve sensörlerin doğru çalışması gibi otomatik sistem tarafından test edilemeyen işlevleri test etmek amacıyla gerçek kişi olan bir operatör tarafından çalıştırılmak üzere tasarlanmıştır.
CTS Doğrulayıcı, isteğe bağlı bazı donanımlar da dahil olmak üzere birçok donanım türünü test eder. Cihaz uygulamalarının, sahip oldukları donanımlar için yapılan tüm testlerden geçmesi ZORUNLUDUR; Örneğin, bir cihazın ivme ölçer varsa CTS Doğrulayıcı'da İvme Ölçer test durumunu doğru şekilde yürütülmesi ZORUNLUDUR. Bu Uyumluluk Tanımlama Belgesi'nde isteğe bağlı olarak belirtilen özelliklerin test durumları atlanabilir veya çıkarılabilir.
Yukarıda belirtildiği gibi, her cihaz ve her derleme CTS Doğrulayıcı'yı doğru şekilde ÇALIŞTIRMALIDIR. Bununla birlikte, birçok derleme birbirine çok benzer olduğundan cihaz uygulayıcılarının yalnızca önemsiz şekillerde farklılık gösteren derlemelerde CTS Doğrulayıcı'yı açık bir şekilde çalıştırması beklenmez. Özellikle, CTS Doğrulayıcı'yı geçmiş bir uygulamadan farklı olan cihaz uygulamaları, yalnızca içerdiği yerel ayarlar, marka vb. bakımından farklıdır. CTS Doğrulayıcı testini atlayabilir.
11. Güncellenebilir Yazılım
Cihaz uygulamaları, sistem yazılımının tamamının yerini alacak bir mekanizma İÇERMELİDİR. Mekanizmanın "canlı" yükseltme yapması gerekmez, yani cihazın yeniden başlatılması gerekebilir.
Cihaza önceden yüklenmiş yazılımın tamamının yerini alabilmesi şartıyla herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu şartı karşılar:
- Yeniden başlatma aracılığıyla çevrimdışı güncelleme ile "Kablosuz (OTA)" indirme işlemleri.
- "Tethered" özelliği, ana bilgisayardan USB üzerinden güncellenir.
- "Çevrimdışı" seçeneği, çıkarılabilir depolama alanındaki bir dosyadan yeniden başlatma ve güncelleme yaparak güncellenir.
Bununla birlikte, cihaz uygulaması, 802.11 veya Bluetooth PAN (Kişisel Alan Ağı) profili gibi sayaçsız bir veri bağlantısı desteği içeriyorsa, yeniden başlatma yoluyla çevrimdışı güncelleme ile OTA indirmelerinin DESTEKLENMELİDİR.
Kullanılan güncelleme mekanizması, kullanıcı verileri silinmeden güncellemeleri DESTEKLEMELİDİR. Diğer bir deyişle, güncelleme mekanizması, uygulamanın özel verilerini ve uygulama paylaşılan verilerini KORUMALIDIR. Yayın öncesi Android yazılımının bu şartı karşılayan bir güncelleme mekanizması içerdiğini unutmayın.
Android 7.0 ve sonraki sürümlerde başlatılan cihaz uygulamaları için güncelleme mekanizması, sistem görüntüsünün, bir OTA'dan sonra beklenen sonuçla aynı ikili program olduğunu doğrulamayı DESTEKLEMELİDİR. Android 5.1'den itibaren eklenen, yukarı akış Android Açık Kaynak Projesi'ndeki blok tabanlı OTA uygulaması bu şartı karşılar.
Uygulama yayınlandıktan sonra bir cihaz uygulamasında, üçüncü taraf uygulamaların uyumluluğunu etkilemesi için Android Uyumluluk Ekibi'ne danışılarak belirlenen makul ürün ömrü içinde bir hata tespit edilirse, cihazı uygulayıcının söz konusu mekanizmaya göre uygulanabilecek bir yazılım güncellemesi aracılığıyla bu hatayı düzeltmesi GEREKİR.
Android, Cihaz Sahibi uygulamasının (varsa) sistem güncellemelerinin yüklenmesini kontrol etmesini sağlayan özellikler içerir. Bunu kolaylaştırmak için, android.software.device_admin bildiren cihazlar için sistem güncelleme alt sisteminin SystemUpdatePolicy sınıfında açıklanan davranışı uygulaması GEREKİR.
12. Doküman Değişiklik Günlüğü
Bu sürümdeki Uyumluluk Tanımı'nda yapılan değişikliklerin özeti için:
Bireysel bölümlerde yapılan değişikliklerin özeti için:
- Giriş
- Cihaz Türleri
- Yazılım
- Uygulama Paketi
- 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üleme İpuçları
Değişiklikler şu şekilde işaretlenmiştir:
-
CDD
Uyumluluk gereksinimlerinde önemli değişiklikler yapılmıştır. -
Dokümanlar
Kozmetik veya inşaatla ilgili değişiklikler.
En iyi görüntüleme için, değişiklik günlüğü URL'lerinize pretty=full
ve no-merges
URL parametrelerini ekleyin.
13. Bize Ulaşın
android-uyumluluk forumu'na katılarak açıklama isteyebilir veya dokümanın kapsamadığını düşündüğünüz sorunları dile getirebilirsiniz.