Düzeltme 2
Son güncelleme: 17 Şubat 2013
Telif hakkı © 2012, Google Inc. Tüm hakları saklıdır.
compatibility@android.com
İçindekiler
2. Kaynaklar
3. Yazılım
3.2. Soft API Uyumluluğu
3.3. Yerel API Uyumluluğu
3.4. Web Uyumluluğu
3.5. API Davranış Uyumluluğu
3.6. API Alan Adları
3.7. Sanal Makine Uyumluluğu
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.2. Bildirimler
3.8.3. Ara
3.8.4. Tostlar
3.8.5. Temalar
3.8.6. Animasyonlu Duvar Kağıtları
3.8.7. Son Uygulama Görünümü
3.8.8. Giriş Yönetimi Ayarları
3.8.9. Kilit ve Ana Ekran Widget'ları
3.8.10. Kilit Ekranı Medya Uzaktan Kumandası
3.8.11. Düşler
3.10 Erişilebilirlik
3.11 Metin Okuma
5. Multimedya Uyumluluğu
5.2. Video Kodlama
5.3. Video Kod Çözme
5.4. Ses Kaydı
5.5. Ses Gecikmesi
5.6. Ağ Protokolleri
7. Donanım Uyumluluğu
7.1.2. Görüntülü Reklam Ağı Metrikleri
7.1.3. Ekran Yönlendirmesi
7.1.4. 2D ve 3D Grafik Hızlandırması
7.1.5. Eski Uygulama Uyumluluk Modu
7.1.6. Ekran Türleri
7.1.7. Ekran Teknolojisi
7.1.8. Harici Ekranlar
7.2.2. Dokunmatik olmayan gezinme
7.2.3. Gezinme tuşları
7.2.4. Dokunmatik ekran girişi
7.3.2. Manyetometre
7.3.3. GPS
7.3.4. Jiroskop
7.3.5. Barometre
7.3.6. Termometre
7.3.7. Fotometr
7.3.8. Yakınlık Sensörü
7.4.2. IEEE 802.11 (Kablosuz)
7.4.3. Bluetooth
7.4.4. Near Field Communications
7.4.5. Minimum Ağ Kapasitesi
7.6. Bellek ve Depolama
7.7. USB
9. Güvenlik Modeli Uyumluluğu
9.2. UID ve İşlem İzolasyonu
9.3. Dosya Sistemi İzinleri
9.4. Alternatif Yürütme Ortamları
9.5. Çok Kullanıcılı Destek
9.6. Premium SMS Uyarısı
11. Güncelleyebilir Yazılımlar
12. Bizimle İletişime Geçin
Ek A - Bluetooth Test Prosedürü
1. Giriş
Bu belgede, cihazların Android 4.2 ile uyumlu olması için karşılanması gereken şartlar listelenmiştir.
"Zorunlu", "Zorunlu değil", "Gerekli", "Olmalıdır", "Olmamalıdır", "Olması gerekir", "Olmaması gerekir", "Önerilen", "Olabilir" ve "İsteğe bağlı" ifadeleri RFC2119 [Kaynaklar, 1] belgesinde tanımlanan IETF standardına göre kullanılmalıdır.
Bu dokümanda "cihaz uygulayıcısı" veya "uygulayıcı", Android 4.2 çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluştur. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Android 4.2 ile uyumlu olarak kabul edilmek için cihaz uygulamalarının, referansla dahil edilen tüm dokümanlar da dahil olmak üzere bu Uyumluluk Tanımı'nda sunulan şartları karşılaması GEREKİR.
Bu tanım veya 10. Bölüm'de açıklanan yazılım testleri net değilse, belirsizse ya da eksikse mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcının sorumluluğundadır.
Bu nedenle Android Açık Kaynak Projesi [Kaynaklar, 3], Android'in hem referans hem de tercih edilen uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nden edinilebilen "yukarı yönlü" kaynak koda dayandırmaları önemle tavsiye edilir. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilir olsa da yazılım testlerini geçmek önemli ölçüde daha zor olacağından bu uygulamadan kesinlikle kaçınılmalıdır. Uyumluluk Testi Paketi dahil ve hariç olmak üzere standart Android uygulamasıyla davranışsal olarak tam uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen değişimlerinin ve modifikasyonlarının bu dokümanda açıkça yasaklandığını unutmayın.
2. Kaynaklar
- IETF RFC2119 Şart Düzeyleri: http://www.ietf.org/rfc/rfc2119.txt
- Android Uyumluluk Programı'na Genel Bakış: http://source.android.com/docs/compatibility/index.html
- Android Açık Kaynak Projesi: http://source.android.com/
- API tanımları ve dokümanları: http://developer.android.com/reference/packages.html
- Android izinleri referansı: http://developer.android.com/reference/android/Manifest.permission.html
- android.os.Build referansı: http://developer.android.com/reference/android/os/Build.html
- Android 4.2'de izin verilen sürüm dizeleri: http://source.android.com/docs/compatibility/4.2/versions.html
- Renderscript: http://developer.android.com/guide/topics/graphics/renderscript.html
- Donanım Hızlandırma: http://developer.android.com/guide/topics/graphics/hardware-accel.html
- android.webkit.WebView sınıfı: http://developer.android.com/reference/android/webkit/WebView.html
- HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/
- HTML5 çevrimdışı özellikleri: http://dev.w3.org/html5/spec/Overview.html#offline
- HTML5 video etiketi: http://dev.w3.org/html5/spec/Overview.html#video
- HTML5/W3C coğrafi konum API'si: http://www.w3.org/TR/geolocation-API/
- HTML5/W3C web veritabanı API'si: http://www.w3.org/TR/webdatabase/
- HTML5/W3C IndexedDB API: http://www.w3.org/TR/IndexedDB/
- Dalvik sanal makinesi spesifikasyonu: Android kaynak kodunda, dalvik/docs adresinde mevcuttur.
- Uygulama widget'ları: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
- Bildirimler: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
- Uygulama Kaynakları: http://code.google.com/android/reference/available-resources.html
- Durum çubuğu simgesi stil kılavuzu: http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
- Search Manager: http://developer.android.com/reference/android/app/SearchManager.html
- Bildirimler: http://developer.android.com/reference/android/widget/Toast.html
- Temalar: http://developer.android.com/guide/topics/ui/themes.html
- R.style sınıfı: http://developer.android.com/reference/android/R.style.html
- Animasyonlu Duvar Kağıtları: https://android-developers.googleblog.com/2010/02/live-wallpapers.html
- Android Cihaz Yönetimi: http://developer.android.com/guide/topics/admin/device-admin.html
- DevicePolicyManager referansı: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
- Android Erişilebilirlik Hizmeti API'leri: http://developer.android.com/reference/android/accessibilityservice/package-summary.html
- Android Erişilebilirlik API'leri: http://developer.android.com/reference/android/view/accessibility/package-summary.html
- Eyes Free projesi: http://code.google.com/p/eyes-free
- Metni Konuştur API'leri: http://developer.android.com/reference/android/speech/tts/package-summary.html
- Referans araç dokümanları (adb, aapt, ddms, systrace için): http://developer.android.com/guide/developing/tools/index.html
- Android apk dosyası açıklaması: http://developer.android.com/guide/topics/fundamentals.html
- Manifest dosyaları: http://developer.android.com/guide/topics/manifest/manifest-intro.html
- Maymun test aracı: https://developer.android.com/studio/test/other-testing-tools/monkey
- Android android.content.pm.PackageManager sınıfı ve Donanım Özellikleri Listesi: http://developer.android.com/reference/android/content/pm/PackageManager.html
- Birden fazla ekranı destekleme: http://developer.android.com/guide/practices/screens_support.html
- android.util.DisplayMetrics: http://developer.android.com/reference/android/util/DisplayMetrics.html
- android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration.html
- android.hardware.SensorEvent: http://developer.android.com/reference/android/hardware/SensorEvent.html
- Bluetooth API: http://developer.android.com/reference/android/bluetooth/package-summary.html
- NDEF Push Protokolü: http://source.android.com/docs/compatibility/ndef-push-protocol.pdf
- MIFARE MF1S503X: http://www.nxp.com/documents/data_sheet/MF1S503x.pdf
- MIFARE MF1S703X: http://www.nxp.com/documents/data_sheet/MF1S703x.pdf
- MIFARE MF0ICU1: http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf
- MIFARE MF0ICU2: http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf
- MIFARE AN130511: http://www.nxp.com/documents/application_note/AN130511.pdf
- MIFARE AN130411: http://www.nxp.com/documents/application_note/AN130411.pdf
- Kamera yönü API'si: http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)
- Kamera: http://developer.android.com/reference/android/hardware/Camera.html
- Android Open Accessories: http://developer.android.com/guide/topics/usb/accessory.html
- USB Host API: http://developer.android.com/guide/topics/usb/host.html
- Android Güvenlik ve İzinler referansı: http://developer.android.com/guide/topics/security/security.html
- Android için Uygulamalar: http://code.google.com/p/apps-for-android
- Android DownloadManager: http://developer.android.com/reference/android/app/DownloadManager.html
- Android Dosya Aktarımı: http://www.android.com/filetransfer
- Android Medya Biçimleri: http://developer.android.com/guide/appendix/media-formats.html
- HTTP Canlı Yayın Taslak Protokolü: http://tools.ietf.org/html/draft-pantos-http-live-streaming-03
- NFC Bağlantı Devre Alma: http://www.nfc-forum.org/specs/spec_list/#conn_handover
- NFC Kullanarak Bluetooth Güvenli Basit Eşleme: http://www.nfc-forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf
- Wifi Çoklu Yayın API'si: http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
- İşlem Asistanı: http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST
- USB Şarj Şartnamesi: http://www.usb.org/developers/devclass_docs/USB_Battery_Charging_1.2.pdf
- Android Beam: http://developer.android.com/guide/topics/nfc/nfc.html
- Android USB Ses: http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO
- Android NFC Paylaşım Ayarları: http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS
- Wifi Direct (Wifi P2P): http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
- Kilit ve Ana Ekran Widget'ı: http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html
- UserManager referansı: http://developer.android.com/reference/android/os/UserManager.html
- Harici Depolama referansı: https://source.android.com/docs/core/storage
- Harici Depolama API'leri: http://developer.android.com/reference/android/os/Environment.html
- SMS kısa kodu: http://tr.wikipedia.org/wiki/Kısa_kod
- Medya Uzaktan Kumanda İstemcisi: http://developer.android.com/reference/android/media/RemoteControlClient.html
- Ekran Yöneticisi: http://developer.android.com/reference/android/hardware/display/DisplayManager.html
- Dreams: http://developer.android.com/reference/android/service/dreams/DreamService.html
- Android Uygulama Geliştirme ile İlgili Ayarlar: http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS
Bu kaynakların çoğu doğrudan veya dolaylı olarak Android 4.2 SDK'sından türetilmiştir ve işlevsel olarak bu SDK'nın dokümanlarında yer alan bilgilerle aynıdır. Bu Uyumluluk Tanımlama Belgesi'nin veya Uyumluluk Testi Paketi'nin SDK dokümanlarıyla çeliştiği durumlarda SDK dokümanları yetkili kabul edilir. Yukarıda yer alan referanslarda sağlanan tüm teknik ayrıntılar, bu Uyumluluk Tanımı'nın bir parçası olarak kabul edilir.
3. Yazılım
3.1. Yönetilen API Uyumluluğu
Yönetilen (Dalvik tabanlı) yürütme ortamı, Android uygulamalarının birincil aracıdır. Android uygulama programlama arayüzü (API), yönetilen sanal makine ortamında çalışan uygulamalara sunulan Android platform arayüzleri grubudur. Cihaz uygulamalarında, Android 4.2 SDK'sı tarafından kullanıma sunulan tüm belgelenmiş API'lerin (Kaynaklar, 4) belgelenmiş tüm davranışları da dahil olmak üzere eksiksiz uygulamalar sağlanmalıdır.
Cihaz uygulamalarında, bu Uyumluluk Tanımı'nda özellikle izin verildiği durumlar hariç olmak üzere yönetilen API'ler atlanmamalı, API arayüzleri veya imzaları değiştirilmemeli, belirtilen davranıştan sapılmamalı ya da işlem yapmama işlemleri dahil edilmemelidir.
Bu Uyumluluk Tanımı, Android'in API'leri içeren bazı donanım türlerinin cihaz uygulamaları tarafından atlanmasına izin verir. Bu gibi durumlarda API'ler mevcut olmalı ve makul bir şekilde davranmalıdır. Bu senaryoya özgü şartlar için 7. Bölüm'e bakın.
3.2. Soft API Uyumluluğu
Android, 3.1 Bölümü'ndeki yönetilen API'lere ek olarak, Android uygulamalarının derleme sırasında uygulanamayan Intent'ler, izinler ve benzer özellikleri gibi yalnızca çalışma zamanında önemli bir "yumuşak" API içerir.
3.2.1. İzinler
Cihaz uygulayıcıları, izin referans sayfasında [Kaynaklar, 5] belirtildiği gibi tüm izin sabitlerini desteklemeli ve uygulamalıdır. 10. Bölüm'de Android güvenlik modeliyle ilgili ek şartların listelendiğini unutmayın.
3.2.2. Derleme Parametreleri
Android API'leri, android.os.Build
sınıfında [Resources, 6] mevcut cihazı tanımlamak için tasarlanmış bir dizi sabit içerir. Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının UYGUN OLMASI GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre | Yorumlar |
android.os.Build.VERSION.RELEASE | Şu anda çalışan Android sisteminin, kullanıcılar tarafından okunabilir biçimdeki sürümü. Bu alanda [Kaynaklar, 7] bölümünde tanımlanan dize değerlerinden biri bulunmalıdır. |
android.os.Build.VERSION.SDK | Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 4.2 için bu alanın tam sayı değeri 17 OLMALIDIR. |
android.os.Build.VERSION.SDK_INT | Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 4.2 için bu alanın tam sayı değeri 17 OLMALIDIR. |
android.os.Build.VERSION.INCREMENTAL | Cihaz uygulayıcısı tarafından seçilen ve o anda çalışan Android sisteminin belirli derlemesini kullanıcılar tarafından okunabilir biçimde belirten bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için yeniden KULLANILAMAZ. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişiklik tanımlayıcısının kullanıldığını belirtmektir. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş dize ("") veya null değer OLMAMASI gerekir. |
android.os.Build.BOARD | Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı kullanıcı tarafından okunabilir biçimde tanımlayan bir değer. Bu alanın olası bir kullanımı, cihazı besleyen kartın belirli bir revizyonunu belirtmektir.
Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.BRAND | Cihazı üreten şirketin, kuruluşun, şahsın vb. adını kullanıcı tarafından okunabilir biçimde tanımlayan, cihaz uygulayıcısı tarafından seçilen bir değer. Bu alanın olası bir kullanımı, cihazı satan OEM'i ve/veya operatörü belirtmektir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
|
android.os.Build.CPU_ABI | Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3 Bölümü: Yerel API Uyumluluğu'na bakın. |
android.os.Build.CPU_ABI2 | Yerel kodun ikinci talimat setinin (CPU türü + ABI kuralı) adı. 3.3 Bölümü: Yerel API Uyumluluğu'na bakın. |
android.os.Build.DEVICE | Cihaz uygulayıcısı tarafından seçilen ve cihazın gövdesinin (bazen "endüstriyel tasarım" olarak da adlandırılır) belirli yapılandırmasını veya düzeltmesini tanımlayan bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.FINGERPRINT | Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunaklı OLMALIDIR. Şu şablonu İZLEMELİYDİR:
$(BRAND)/$(PRODUCT)/$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS) Örneğin: acme/mydevice/generic:4.2/JRN53/3359:userdebug/test-keys Parmak izi boşluk karakterleri İÇERMEMELİDİR. Yukarıdaki şablona dahil edilen diğer alanlarda boşluk karakterleri varsa derleme parmak izinde alt çizgi ("_") karakteri gibi başka bir karakterle DEĞİŞTİRİLMESİ GEREKİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALIDIR. |
android.os.Build.HARDWARE | Donanımın adı (çekirdek komut satırından veya /proc'ten). Makul ölçüde okunaklı OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.HOST | Derlemenin oluşturulduğu ana makineyi benzersiz şekilde tanımlayan, kullanıcı tarafından okunabilir biçimde bir dize. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
android.os.Build.ID | Cihaz uygulayıcısı tarafından, belirli bir sürümü belirtmek için kullanıcı tarafından okunabilir biçimde seçilen bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapması için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
|
android.os.Build.MANUFACTURER | Ürünün özgün donanım üreticisinin (OEM) ticari adı. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
android.os.Build.MODEL | Cihaz uygulayıcısı tarafından seçilen ve son kullanıcının bildiği cihaz adını içeren bir değer. Bu, cihazın pazarlandığı ve son kullanıcılara satıldığı adla aynı OLMALIDIR. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Bununla birlikte, alanın boş veya boş dize ("") OLMAMASI ZORUNLUDUR. |
android.os.Build.PRODUCT | Cihaz uygulayıcısı tarafından seçilen ve ürünün geliştirme adını veya kod adını (SKU) içeren bir değer. Kullanıcılar tarafından okunabilir OLMALIDIR ancak son kullanıcıların görüntülemesi için tasarlanmayabilir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.SERIAL | Varsa donanım seri numarası. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^([a-zA-Z0-9]{0,20})$" normal ifadesiyle eşleşmelidir. |
android.os.Build.TAGS | Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayırt edici hale getiren, virgülle ayrılmış bir etiket listesi. Örneğin, "unsigned,debug". Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.TIME | Derlemenin gerçekleştiği zamanın zaman damgasını temsil eden bir değer. |
android.os.Build.TYPE | Derlemenin çalışma zamanı yapılandırmasını belirten, cihaz uygulayıcısı tarafından seçilen bir değer. Bu alanda, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri OLMALIDIR: "user", "userdebug" veya "eng". Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.USER | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı veya kullanıcı kimliği. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
3.2.3. Intent Uyumluluğu
Cihaz uygulamalarında, aşağıdaki bölümlerde açıklandığı gibi Android'in gevşek bağlantılı Intent sistemi dikkate alınmalıdır. "Uygulanması", cihaz uygulayıcının eşleşen bir Intent filtresi belirten ve belirtilen her Intent kalıbı için doğru davranışı bağlayan ve uygulayan bir Android Activity veya Service sağlaması GEREKTİĞİ anlamına gelir.
3.2.3.1. Temel Uygulama Amaçları
Android yayın öncesi projesi, kişiler, takvim, fotoğraf galerisi, müzik çalar gibi çeşitli temel uygulamaları tanımlar. Cihaz uygulayıcıları bu uygulamaları alternatif sürümlerle DEĞİŞTİREBİLİR.
Ancak bu tür alternatif sürümler, yayın öncesi proje tarafından sağlanan aynı Intent kalıplarını UYGUNLAŞTIRMALIDIR. Örneğin, bir cihazda alternatif bir müzik çalar varsa şarkı seçmek için üçüncü taraf uygulamaları tarafından yayınlanan Intent kalıbını yine de dikkate almalıdır.
Aşağıdaki uygulamalar temel Android sistem uygulamaları olarak kabul edilir:
- Masa Saati
- Tarayıcı
- Takvim
- Kişiler
- Galeri
- GlobalSearch
- Roketatar
- Müzik
- Ayarlar
Temel Android sistem uygulamaları, "herkese açık" olarak kabul edilen çeşitli etkinlik veya hizmet bileşenleri içerir. Yani "android:exported" özelliği bulunmayabilir veya "true" değerine sahip olabilir.
Temel Android sistem uygulamalarından birinde tanımlanan ve "false" değerine sahip bir android:exported özelliği aracılığıyla herkese açık olmayan olarak işaretlenmeyen her etkinlik veya hizmet için cihaz uygulamalarında, temel Android sistem uygulamasıyla aynı Intent filtresi kalıplarını uygulayan aynı türde bir bileşen BULUNMASI GEREKİR.
Diğer bir deyişle, cihaz uygulaması temel Android sistem uygulamalarını DEĞİŞTİREBİLİR. Ancak bu durumda, cihaz uygulaması, değiştirilen her temel Android sistem uygulaması tarafından tanımlanan tüm Intent kalıplarını DESTEKLEMELİDİR.
3.2.3.2. Intent Geçersiz Kılmaları
Android genişletilebilir bir platform olduğundan cihaz uygulamalarında, 3.2.3.2 Bölümü'nde belirtilen her Intent kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına izin VERİLMELİDİR. Yukarı yönlü Android açık kaynak uygulaması buna varsayılan olarak izin verir. Cihaz uygulayıcıları, sistem uygulamalarının bu Intent kalıplarını kullanımına özel ayrıcalıklar eklememeli veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü devralmasını engellememelidir. Bu yasak, özellikle kullanıcının tümü aynı Intent kalıbını işleyen birden fazla uygulama arasında seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bunlarla sınırlı değildir.
Ancak cihaz uygulamaları, varsayılan etkinlik veri URI için daha spesifik bir filtre sağlıyorsa belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten bir intent filtresi, "http://" için tarayıcı filtresinden daha spesifiktir. Cihaz uygulamalarında, kullanıcıların intent'ler için varsayılan etkinliği değiştirmesi amacıyla bir kullanıcı arayüzü ZORUNLUDUR.
3.2.3.3. Intent Ad Alanları
Cihaz uygulamalarında, android.* veya com.android.* ad alanındaki bir ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni Intent veya Broadcast Intent kalıplarını dikkate alan Android bileşenleri BULUNMAMALIDIR. Cihaz uygulayıcıları, başka bir kuruluşa ait bir paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni Intent veya Broadcast Intent kalıplarını destekleyen Android bileşenleri İÇERMEMELİDİR. Cihaz uygulayıcıları, 3.2.3.1 numaralı bölümde listelenen temel uygulamalar tarafından kullanılan Intent kalıplarından hiçbirini DEĞİŞTİRMELİ veya GENİŞLETMEMELİDİR. Cihaz uygulamaları, kendi kuruluşlarıyla açıkça ilişkili olan ad alanlarının kullanıldığı Intent kalıplarını İÇERİEBİLİR.
Bu yasak, Bölüm 3.6'da Java dil sınıfları için belirtilene benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikler hakkında bilgilendirilmek için belirli Intent'leri yayınlamak üzere platformdan yararlanır. Android uyumlu cihazlar, uygun sistem etkinliklerine yanıt olarak herkese açık yayın Intent'lerini YAYINLAMALIDIR. Yayın intent'leri SDK dokümanlarında açıklanmaktadır.
3.3. Yerel API Uyumluluğu
3.3.1 Uygulama İkili Arabirimleri
Dalvik'te çalışan yönetilen kod, uygulama .apk dosyasında uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak sağlanan yerel kodu çağırabilir. Yerel kod, temel işlemci teknolojisine oldukça bağlı olduğundan Android, Android NDK'da docs/CPU-ARCH-ABIS.html
dosyasında bir dizi Uygulama İkili Arabirimi (ABI) tanımlar. Bir cihaz uygulaması bir veya daha fazla tanımlanmış ABI ile uyumluysa aşağıdaki gibi Android NDK ile uyumluluğu UYGULAMALIDIR.
Bir cihaz uygulaması, Android ABI'si desteği içeriyorsa:
- Standart Java Native Interface (JNI) semantikleri kullanılarak yönetilen ortamda çalışan kodun yerel koda çağrılması için destek DAHİL OLMALIDIR.
- Aşağıdaki listedeki her gerekli kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR
- Cihaz tarafından desteklenen yerel Uygulama İkili Arabirimi'ni (ABI)
android.os.Build.CPU_ABI
API üzerinden doğru şekilde bildirmelidir. - Yalnızca Android NDK'nın en son sürümünde,
docs/CPU-ARCH-ABIS.txt
dosyasında belgelenen ABI'leri bildirmelidir. - Yukarı yönlü Android açık kaynak projesinde bulunan kaynak kod ve başlık dosyaları kullanılarak OLUŞTURULMALIDIR
Aşağıdaki yerel kod API'leri, yerel kod içeren uygulamalar tarafından KULLANILABİLİR OLMALIDIR:
- libc (C kitaplığı)
- libm (matematik kitaplığı)
- C++ için minimum destek
- JNI arayüzü
- liblog (Android günlük kaydı)
- libz (Zlib sıkıştırması)
- libdl (dinamik bağlayıcı)
- libGLESv1_CM.so (OpenGL ES 1.0)
- libGLESv2.so (OpenGL ES 2.0)
- libEGL.so (yerel OpenGL yüzey yönetimi)
- libjnigraphics.so
- libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
- libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
- libandroid.so (yerel Android etkinliği desteği)
- Aşağıda açıklandığı şekilde OpenGL desteği
Android NDK'nın gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın. Bir cihaz uygulaması, mevcut bir önceden tanımlanmış ABI ile uyumlu değilse hiçbir ABI için destek bildirmemelidir.
Yerel kod uyumluluğu zordur. Bu nedenle, cihaz uygulayıcılarının uyumluluğu sağlamak için yukarıda listelenen kitaplıkların yayın öncesi uygulamalarını kullanmalarının ÇOK önemle tavsiye edildiği tekrar vurgulanmalıdır.
3.4. Web Uyumluluğu
3.4.1. WebView Uyumluluğu
Android Açık Kaynak uygulaması, android.webkit.WebView
'ü uygulamak için WebKit oluşturma motorunu kullanır. Bir web oluşturma sistemi için kapsamlı bir test paketi geliştirmek mümkün olmadığından cihaz uygulayıcıları, WebView uygulamasında WebKit'in belirli bir yayın öncesi derlemesini KULLANMAK ZORUNDADIR. Özellikle:
- Cihaz uygulamalarının
android.webkit.WebView
uygulamaları, Android 4.2 için yayındaki Android Açık Kaynak ağacındaki 534.30 WebKit derlemesini temel ALMALIDIR. Bu derleme, Web Görünümü için belirli bir işlev ve güvenlik düzeltmeleri grubu içerir. Cihaz uygulayıcıları WebKit uygulamasına özelleştirmeler EKLEYEBİLİR ancak bu tür özelleştirmeler, oluşturma davranışı da dahil olmak üzere Web Görünümü'nün davranışını DEĞİŞTİRMEMELİDİR. - WebView tarafından bildirilen kullanıcı aracısı dizesi şu biçimde OLMALIDIR:
Mozilla/5.0 (Linux; U; Android $(VERSION); $(LOCALE); $(MODEL) Build/$(BUILD)) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30
- $(VERSION) dizesinin değeri
android.os.Build.VERSION.RELEASE
değeriyle AYNI OLMALIDIR - $(LOCALE) dizesinin değeri, ülke kodu ve dil için ISO kurallarına uymalı ve cihazın mevcut yapılandırılmış yerel ayarını belirtmelidir.
- $(MODEL) dizesinin değeri
android.os.Build.MODEL
değeriyle AYNI OLMALIDIR. - $(BUILD) dizesinin değeri
android.os.Build.ID
değeriyle AYNI OLMALIDIR - Cihaz uygulamaları, kullanıcı aracısı dizesinde
Mobile
öğesini EKSİLTİREBİLİR.
- $(VERSION) dizesinin değeri
WebView bileşeni, HTML5'in mümkün olduğunca büyük bir kısmını [Kaynaklar, 11] desteklemelidir. Cihaz uygulamalarının, WebView'de HTML5 ile ilişkili aşağıdaki API'lerin her birini en azından desteklemesi GEREKİR:
- application cache/offline operation [Resources, 12]
- <video> etiketi [Kaynaklar, 13]
- coğrafi konum [Kaynaklar, 14]
Ayrıca, cihaz uygulamaları HTML5/W3C webstorage API'yi [Kaynaklar, 15] destekleMELİ ve HTML5/W3C IndexedDB API'yi [Kaynaklar, 16] DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları web depolama yerine IndexedDB'i tercih etmeye başladığından, IndexedDB'in Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesinin beklendiğini unutmayın.
Tüm JavaScript API'leri gibi HTML5 API'leri de, geliştirici tarafından normal Android API'leri aracılığıyla açıkça etkinleştirilmediği sürece WebView'de varsayılan olarak devre dışı bırakılmalıdır.
3.4.2. Tarayıcı Uyumluluğu
Cihaz uygulamalarında, genel kullanıcıların web'de gezinmesi için bağımsız bir tarayıcı uygulaması BULUNMASI GEREKİR. Bağımsız tarayıcı, WebKit dışında bir tarayıcı teknolojisine dayalı OLABİLİR. Ancak alternatif bir Tarayıcı uygulaması kullanılsa bile üçüncü taraf uygulamalarına sağlanan android.webkit.WebView
bileşeni, 3.4.1 numaralı bölümde açıklandığı gibi WebKit'e dayalı OLMALIDIR.
Uygulamalar, bağımsız tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi GÖNDERMEYEBİLİR.
Bağımsız Tarayıcı uygulaması (üst akış WebKit Tarayıcı uygulamasına veya üçüncü taraf bir değişime dayalı olsun), HTML5'in mümkün olduğunca büyük bir kısmı için destek İÇERMELİDİR [Kaynaklar, 11]. Cihaz uygulamalarının, HTML5 ile ilişkili aşağıdaki API'lerin her birini en azından desteklemesi GEREKİR:
- application cache/offline operation [Resources, 12]
- <video> etiketi [Kaynaklar, 13]
- coğrafi konum [Kaynaklar, 14]
Ayrıca, cihaz uygulamaları HTML5/W3C webstorage API'yi [Kaynaklar, 15] destekleMELİ ve HTML5/W3C IndexedDB API'yi [Kaynaklar, 16] DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları web depolama yerine IndexedDB'i tercih etmeye başladığından, IndexedDB'in Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesinin beklendiğini unutmayın.
3.5. API Davranış Uyumluluğu
API türlerinin her birinin (yönetilen, yumuşak, yerel ve web) davranışları, yayın öncesi Android açık kaynak projesinin tercih edilen uygulamasıyla tutarlı olmalıdır [Kaynaklar, 3]. Uyumluluğun bazı belirli alanları şunlardır:
- Cihazlar, standart bir Intent'in davranışını veya anlamını DEĞİŞTİREMEZ.
- Cihazlar, belirli bir sistem bileşeni türünün (ör. Hizmet, Etkinlik, İçerik Sağlayıcı vb.) yaşam döngüsünü veya yaşam döngüsü anlamlarını DEĞİŞTİRMEMELİDİR.
- Cihazlar, standart bir iznin anlamını DEĞİŞTİREMEZ
Yukarıdaki listede olası her duruma yer verilmemiştir. Uyumluluk Test Paketi (CTS), platformun önemli bölümlerini davranışsal uyumluluk açısından test eder ancak tümünü test etmez. Android Open Source Project ile davranışsal uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcıları sistemin önemli bölümlerini yeniden uygulamak yerine mümkün olduğunda Android Açık Kaynak Projesi aracılığıyla sunulan kaynak kodu KULLANMALIDIR.
3.6. API ad alanları
Android, Java programlama dili tarafından tanımlanan paket ve sınıf ad alanı kurallarına uyar. Cihaz uygulayıcıları, üçüncü taraf uygulamalarla uyumluluğu sağlamak için aşağıdaki paket ad alanlarında yasaklanmış herhangi bir değişiklik YAPMAMALIDIR:
- java.*
- javax.*
- güneş.*
- android.*
- com.android.*
Yasaklanan değişiklikler şunlardır:
- Cihaz uygulamaları, herhangi bir yöntem veya sınıf imzasını değiştirerek ya da sınıfları veya sınıf alanlarını kaldırarak Android platformunda herkese açık olarak sunulan API'lerde değişiklik YAPMAMALIDIR.
- Cihaz uygulayıcıları, API'lerin temel uygulamasını DEĞİŞTİREBİLİR ancak bu tür değişiklikler, herkese açık olarak sunulan API'lerin belirtilen davranışını ve Java dili imzasını ETKİLEMEmelidir.
- Cihaz uygulayıcıları, yukarıdaki API'lere herkese açık öğeler (ör. sınıflar veya arayüzler ya da mevcut sınıflara veya arayüzlere ait alanlar ya da yöntemler) EKLEMEMELİDİR.
"Herkese açık olarak sunulan öğe", yayın öncesi Android kaynak kodunda kullanılan "@hide" işaretçisiyle süslenmemiş tüm yapılardır. Diğer bir deyişle, cihaz uygulayıcıları yukarıda belirtilen ad alanlarında yeni API'ler göstermemeli veya mevcut API'leri değiştirmemelidir. Cihaz uygulayıcıları yalnızca dahili değişiklikler YAPABİLİR ancak bu değişikliklerin reklamı YAPILMAMALI veya geliştiricilere başka bir şekilde gösterilMEMELİDİR.
Cihaz uygulayıcıları özel API'ler EKLEYEBİLİYOR ancak bu tür API'ler başka bir kuruluşa ait veya başka bir kuruluşa atıfta bulunan bir ad alanında OLMAYACAK. Örneğin, cihaz uygulayıcıları com.google.* veya benzer bir ad alanına API ekleMEmelidir; bunu yalnızca Google yapabilir. Benzer şekilde, Google da diğer şirketlerin ad alanlarına API ekleMEmelidir. Ayrıca, bir cihaz uygulaması standart Android ad alanının dışında özel API'ler içeriyorsa bu API'ler, yalnızca açıkça kullanan uygulamaların (<uses-library>
mekanizması aracılığıyla) bu API'lerin artan bellek kullanımından etkilenmesi için bir Android paylaşılan kitaplığına paketlenmelidir.
Bir cihaz uygulayıcısı yukarıdaki paket ad alanlarının birini iyileştirmeyi önerirse (ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek) uygulayıcının source.android.com adresini ziyaret etmesi ve bu sitedeki bilgilere göre değişiklik ve kod katkıda bulunma sürecini başlatması GEREKİR.
Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmayla ilgili standart kurallara karşılık geldiğini unutmayın. Bu bölüm, bu kuralları pekiştirmeyi ve bu uyumluluk tanımına dahil ederek bağlayıcı hale getirmeyi amaçlamaktadır.
3.7. Sanal Makine Uyumluluğu
Cihaz uygulamaları, Dalvik Yürütülebilir (DEX) bayt kodu spesifikasyonunun tamamını ve Dalvik Sanal Makinesi anlamlarını [Kaynaklar, 17] desteklemelidir.
Cihaz uygulamaları, Dalvik'i, yukarı akış Android platformuna ve aşağıdaki tabloda belirtildiği şekilde bellek ayıracak şekilde yapılandırmalıdır. (Ekran boyutu ve ekran yoğunluğu tanımları için 7.1.1 numaralı bölüme bakın.)
Aşağıda belirtilen bellek değerlerinin minimum değerler olarak kabul edildiğini ve cihaz uygulamalarının uygulama başına daha fazla bellek ayırabileceğini unutmayın.
Ekran Boyutu | Ekran Yoğunluğu | Uygulama Belleği |
küçük / normal / büyük | ldpi / mdpi | 16MB |
küçük / normal / büyük | tvdpi / hdpi | 32MB |
küçük / normal / büyük | xhdpi | 64MB |
xlarge | mdpi | 32MB |
xlarge | tvdpi / hdpi | 64MB |
xlarge | xhdpi | 128MB |
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.1. Widget'lar
Android, uygulamaların son kullanıcıya "AppWidget" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü tanımlar [Kaynaklar, 18]. Android Açık Kaynak referans sürümü, kullanıcının ana ekrana uygulama widget'ları eklemesine, görüntülemesine ve kaldırmasına olanak tanıyan kullanıcı arayüzü özelliklerini içeren bir başlatıcı uygulaması içerir.
Cihaz uygulamaları, referans başlatıcıya (ör. ana ekran) alternatif bir seçenek OLABİLİR. Alternatif başlatıcılar, AppWidget'ler için yerleşik destek içermeli ve AppWidget'leri doğrudan başlatıcıdan eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü olanakları sunmalıdır. Alternatif başlatıcılar bu kullanıcı arayüzü öğelerini EKSİLTİREBİLİR. Ancak bu öğeler atlanırsa cihaz uygulaması, kullanıcıların uygulama widget'ları eklemesine, yapılandırmasına, görüntülemesine ve kaldırmasına olanak tanıyan, başlatıcıdan erişilebilen ayrı bir uygulama İÇERMEK ZORUNDADIR.
Cihaz uygulamalarının standart ızgara boyutunda 4x4 widget oluşturabilmesi GEREKİR. (Ayrıntılar için Android SDK dokümanlarında [Kaynaklar, 18] yer alan Uygulama Widget'ı Tasarım Kuralları'na bakın.
3.8.2. Bildirimler
Android, geliştiricilerin cihazın donanım ve yazılım özelliklerini kullanarak kullanıcıları önemli olaylardan [Kaynaklar, 19] haberdar etmelerine olanak tanıyan API'ler içerir.
Bazı API'ler, uygulamaların donanım (özellikle ses, titreşim ve ışık) kullanarak bildirim göndermesine veya dikkat çekmesine olanak tanır. Cihaz uygulamaları, SDK dokümanlarında açıklandığı şekilde ve mümkün olduğunca cihaz uygulaması donanımıyla donanım özelliklerini kullanan bildirimleri DESTEKLEMELİDİR. Örneğin, bir cihaz uygulamasında titreşim varsa titreşim API'lerinin doğru şekilde uygulanması GEREKİR. Bir cihaz uygulamasında donanım yoksa ilgili API'ler no-op olarak uygulanmalıdır. Bu davranışın 7. Bölüm'de daha ayrıntılı olarak açıklandığını unutmayın.
Ayrıca, uygulamada API'lerde [Kaynaklar, 20] veya Durum/Sistem Çubuğu simgesi stil kılavuzunda [Kaynaklar, 21] sağlanan tüm kaynaklar (simgeler, ses dosyaları vb.) doğru şekilde oluşturulmalıdır. Cihaz uygulayıcıları, bildirimler için referans Android açık kaynak uygulaması tarafından sağlanan alternatif bir kullanıcı deneyimi SUNABİLİR. Ancak bu tür alternatif bildirim sistemleri, yukarıda belirtildiği gibi mevcut bildirim kaynaklarını DESTEKLEMELİDİR.
Android 4.2, devam eden bildirimler için etkileşimli görünümler gibi zengin bildirimler için destek içerir. Cihaz uygulamalarında, Android API'lerinde belirtildiği gibi zengin bildirimler düzgün şekilde gösterilmeli ve yürütülmelidir.
3.8.3. Arat
Android, geliştiricilerin aramayı uygulamalarına dahil etmesine ve uygulamalarının verilerini küresel sistem aramasında göstermesine olanak tanıyan API'ler [Kaynaklar, 22] içerir. Genel olarak bu işlev, kullanıcıların sorgu girmelerine olanak tanıyan, kullanıcılar yazarken öneriler gösteren ve sonuçları gösteren tek bir sistem genelinde kullanıcı arayüzünden oluşur. Android API'leri, geliştiricilerin kendi uygulamalarında arama sağlamak için bu arayüzü yeniden kullanmasına ve ortak küresel arama kullanıcı arayüzüne sonuç sağlamasına olanak tanır.
Cihaz uygulamalarında, kullanıcı girişine yanıt olarak anlık öneriler sunabilen tek bir paylaşılan sistem genelinde arama kullanıcı arayüzü BULUNMASI GEREKİR. Cihaz uygulamalarında, geliştiricilerin kendi uygulamalarında arama sağlamak için bu kullanıcı arayüzünü yeniden kullanmalarına olanak tanıyan API'ler UYGULANMALIDIR. Cihaz uygulamalarında, üçüncü taraf uygulamalarının genel arama modunda çalıştırıldığında arama kutusuna öneri eklemesine olanak tanıyan API'ler UYGULANMALIDIR. Bu işlevi kullanan üçüncü taraf uygulaması yüklü değilse varsayılan davranış, web arama motoru sonuçlarını ve önerilerini göstermek OLMALIDIR.
3.8.4. Durum mesajları
Uygulamalar, son kullanıcıya kısa süre sonra kaybolan kısa, modal olmayan dizeler göstermek için "Toast" API'yi ([Kaynaklar, 23] bölümünde tanımlanmıştır) kullanabilir. Cihaz uygulamalarında, uygulamalardan son kullanıcılara gönderilen pop-up'lar yüksek görünür bir şekilde gösterilmelidir.
3.8.5. Temalar
Android, uygulamaların bir etkinliğin veya uygulamanın tamamına stil uygulamak için kullanabileceği bir mekanizma olarak "temalar" sağlar. Android 4.2, Android SDK'sı [Kaynaklar, 24] tarafından tanımlanan Holo tema görünüm ve tarzını eşleştirmek isteyen uygulama geliştiricilerin kullanabileceği bir "Holo" veya "holografik" tema içerir. Cihaz uygulamaları, uygulamalara sunulan Holo tema özelliklerinden hiçbirini DEĞİŞTİRMEMELİDİR [Kaynaklar, 25].
Android 4.2, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünümünü ve tarzını eşleştirmek isterse kullanabileceği, tanımlanmış bir stil grubu olarak yeni bir "Cihaz Varsayılan" teması içerir. Cihaz uygulamaları, uygulamalara sunulan DeviceDefault tema özelliklerini DEĞİŞTİREBİLİR [Kaynaklar, 25].
3.8.6. Animasyonlu Duvar Kağıtları
Android, uygulamaların son kullanıcıya bir veya daha fazla "canlı duvar kağıdı" göstermesine olanak tanıyan bir bileşen türü ve ilgili API ile yaşam döngüsü tanımlar [Kaynaklar, 26]. Canlı duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak görüntülenen, sınırlı giriş özelliklerine sahip animasyonlar, desenler veya benzer resimlerdir.
Donanım, tüm canlı duvar kağıtlarını işlevsellik açısından herhangi bir sınırlama olmadan, diğer uygulamalar üzerinde olumsuz bir etkisi olmadan makul bir kare hızında çalıştırabiliyorsa canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabilir. Donanımdaki sınırlamalar, duvar kağıtlarının ve/veya uygulamaların kilitlenmesine, hatalı çalışmasına, aşırı CPU veya pil gücü tüketimine ya da kabul edilemeyecek kadar düşük kare hızlarında çalışmasına neden oluyorsa donanım, canlı duvar kağıdını çalıştıramaz. Örneğin, bazı canlı duvar kağıtları içeriklerini oluşturmak için Open GL 1.0 veya 2.0 bağlamı kullanabilir. OpenGL bağlamının canlı duvar kağıdı kullanımı, OpenGL bağlamı kullanan diğer uygulamalarla çakışabileceğinden canlı duvar kağıdı, birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.
Yukarıda açıklandığı gibi canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabilen cihaz uygulamaları canlı duvar kağıtlarını UYGULAMALIDIR. Yukarıda açıklandığı şekilde animasyonlu duvar kağıtlarını güvenilir bir şekilde çalıştıramayacağı belirlenen cihaz uygulamalarında animasyonlu duvar kağıtları uygulanmamalıdır.
3.8.7. Son Uygulama Görünümü
Android 4.2 kaynak kodunun ana akışında, kullanıcının uygulamadan en son çıktığı andaki uygulamanın grafik durumunun küçük resmini kullanarak son uygulamaları görüntülemek için bir kullanıcı arayüzü bulunur. Cihaz uygulamalarında bu kullanıcı arayüzü DEĞİŞTİRİLEBİLİR veya KALDIRILABİLİR. Ancak Android'in gelecekteki bir sürümünde bu işlevin daha kapsamlı bir şekilde kullanılması planlanmaktadır. Cihaz uygulamalarının, son uygulamalar için yayın öncesi Android 4.2 kullanıcı arayüzünü (veya küçük resim tabanlı benzer bir arayüzü) kullanması önemle tavsiye edilir. Aksi takdirde, Android'in gelecekteki bir sürümüyle uyumlu olmayabilir.
3.8.8. Giriş Yönetimi Ayarları
Android 4.2, Giriş Yönetimi Motorları için destek içerir. Android 4.2 API'leri, özel uygulama IME'lerinin kullanıcı tarafından ayarlanabilen ayarları belirtmesine olanak tanır. Cihaz uygulamalarında, bu tür kullanıcı ayarlarını sağlayan bir IME gösterildiğinde kullanıcının IME ayarlarına her zaman erişebileceği bir yöntem BULUNMASI GEREKİR.
3.8.9. Kilit ve Ana Ekran Widget'ları
Android 4.2, kullanıcıların ana ekrana veya kilit ekranına yerleştirebileceği uygulama widget'ları için destek içerir (Ayrıntılar için Android SDK dokümanlarında [Kaynaklar, 69] yer alan Uygulama Widget'ı Tasarım Kuralları'na bakın).
Uygulama widget'ları, yeni bir etkinlik başlatmadan uygulama verilerine ve hizmetlerine hızlıca erişmenize olanak tanır. Widget'lar, sisteme widget'ın nereye yerleştirilebileceğini bildiren android:widgetCategory
manifest etiketini belirterek ana ekranda veya kilit ekranında kullanım desteğini belirtir. Özellikle cihaz uygulamaları aşağıdaki koşulları KESİNLİKLE karşılamalıdır.
- Cihaz uygulamalarında ana ekrandaki uygulama widget'ları desteklenmelidir.
- Cihaz uygulamaları kilit ekranını DESTEKLEMELİDİR. Cihaz uygulamalarında kilit ekranı desteği varsa cihaz uygulamaları kilit ekranındaki uygulama widget'larını DESTEKLEMELİDİR.
3.8.10. Kilit Ekranı Medya Uzaktan Kumandası
Android 4.2, medya uygulamalarının cihaz kilit ekranı gibi uzak bir görünümde görüntülenen oynatma kontrolleriyle entegrasyonuna olanak tanıyan Uzaktan Kumanda API'si desteği içerir[Kaynaklar, 74]. Cihaz uygulamalarında, uzaktan kumandaların cihaz kilit ekranına yerleştirilmesi için destek ZORUNLUDUR.
3.8.11. Rüyalar
Android 4.2, Rüyalar [Kaynaklar, 76] adlı etkileşimli ekran koruyucuları için destek içerir. Rüyalar, şarj cihazı boştayken veya masaüstü dock'ına yerleştirildiğinde kullanıcıların uygulamalarla etkileşim kurmasına olanak tanır. Cihaz uygulamalarında, Dreams desteği ZORUNLUDIR ve kullanıcıların Dreams'i yapılandırabileceği bir ayar seçeneği sunulmalıdır.
3.9 Cihaz Yönetimi
Android 4.2, güvenlik bilincine sahip uygulamaların Android Device Administration API [Kaynaklar, 27] aracılığıyla sistem düzeyinde cihaz yönetimi işlevleri (ör. şifre politikalarını uygulama veya uzaktan silme) gerçekleştirmesine olanak tanıyan özellikler içerir. Cihaz uygulamalarında DevicePolicyManager
sınıfının [Kaynaklar, 28] bir uygulaması sağlanmalı ve Android SDK dokümanlarında [Kaynaklar, 27] tanımlanan tüm cihaz yönetimi politikaları desteklenmelidir.
Not: Yukarıda belirtilen şartlardan bazıları Android 4.2 için "OLMALIDIR" şeklinde belirtilse de kilit ekranını destekleyen cihaz uygulamaları, kilit ekranındaki widget'ları yönetmek için Android SDK dokümanlarında [Kaynaklar, 27] tanımlandığı şekilde cihaz politikalarını desteklemelidir.
Not: Yukarıda belirtilen şartlardan bazıları Android 4.2 için "OLMALI" olarak belirtilmiş olsa da gelecekteki bir sürümün Uyumluluk Tanımı'nda bu şartlar "OLMALI" olarak değiştirilmesi planlanmaktadır. Yani bu şartlar Android 4.2'de isteğe bağlıdır ancak gelecekteki bir sürümde zorunludur. Android 4.2 çalıştıran mevcut ve yeni cihazların Android 4.2'de bu şartları karşılaması önemle tavsiye edilir. Aksi takdirde, gelecekteki bir sürüme yükseltildiğinde Android uyumluluğu elde edemezler.
3.10 Erişilebilirlik
Android 4.2, engelli kullanıcıların cihazlarında daha kolay gezinmesine yardımcı olan bir erişilebilirlik katmanı sağlar. Ayrıca Android 4.2, erişilebilirlik hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri çağırma işlevi almasını ve metni konuşmaya dönüştürme, dokunma geri bildirimi ve izleme topu/d-pad gezinme gibi alternatif geri bildirim mekanizmaları oluşturmasını sağlayan platform API'leri sağlar [Kaynaklar, 29]. Cihaz uygulamalarında, varsayılan Android uygulamasıyla tutarlı bir Android erişilebilirlik çerçevesi uygulaması sağlanmalıdır. Özellikle cihaz uygulamaları aşağıdaki koşulları karşılamalıdır.
- Cihaz uygulamalarında,
android.accessibilityservice
API'leri aracılığıyla üçüncü taraf erişilebilirlik hizmeti uygulamalarını desteklenmelidir [Kaynaklar, 30]. - Cihaz uygulamaları
AccessibilityEvents
oluşturmalı ve bu etkinlikleri varsayılan Android uygulamasıyla tutarlı bir şekilde kayıtlı tümAccessibilityService
uygulamalarına göndermelidir. - Cihaz uygulamalarında, erişilebilirlik hizmetlerini etkinleştirmek ve devre dışı bırakmak için kullanıcının erişebileceği bir mekanizma sağlanmalı ve bu arayüz,
android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS
intent'ine yanıt olarak gösterilmelidir.
Ayrıca, cihaz uygulamalarında cihazda bir erişilebilirlik hizmeti uygulaması sağlanMALI ve kullanıcıların cihaz kurulumu sırasında erişilebilirlik hizmetini etkinleştirebilecekleri bir mekanizma sağlanmalıdır. Erişilebilirlik hizmetinin açık kaynaklı bir uygulamasını EyesFree projesinden [Kaynaklar, 31] edinebilirsiniz.
3.11 Metin Okuma
Android 4.2, uygulamaların metin okuma (TTS) hizmetlerinden yararlanmasına ve servis sağlayıcıların TTS hizmetlerinin uygulamalarını sunmasına olanak tanıyan API'ler içerir [Kaynaklar, 32]. Cihaz uygulamalarının Android TTS çerçevesiyle ilgili aşağıdaki şartları karşılaması GEREKİR:
- Cihaz uygulamaları Android TTS çerçeve API'lerini DESTEKLEMELİ ve cihazda mevcut dilleri destekleyen bir TTS motoru İÇERMELİDİR. Yukarı yönlü Android açık kaynak yazılımının tam özellikli bir TTS motoru uygulaması içerdiğini unutmayın.
- Cihaz uygulamaları, üçüncü taraf TTS motorlarının yüklenmesini desteklemelidir.
- Cihaz uygulamalarında, kullanıcıların sistem düzeyinde kullanılacak bir TTS motoru seçmesine olanak tanıyan, kullanıcı tarafından erişilebilir bir arayüz ZORUNLUDUR.
4. Uygulama Paketleme Uyumluluğu
Cihaz uygulamaları, Android ".apk" dosyalarını resmi Android SDK'sına [Kaynaklar, 33] dahil olan "aapt" aracı tarafından oluşturulduğu şekilde yükleyip çalıştırmalıdır.
Cihaz uygulamalarında .apk [Kaynaklar, 34], Android manifest [Kaynaklar, 35], Dalvik bytecode [Kaynaklar, 17] veya renderscript bytecode biçimleri, bu dosyaların diğer uyumlu cihazlarda düzgün şekilde yüklenmesini ve çalışmasını engelleyecek şekilde UZATILMAMALIDIR. Cihaz uygulayıcıları, Dalvik'in referans yayın öncesi uygulamasını ve referans uygulamanın paket yönetimi sistemini KULLANMALIDIR.
5. Multimedya Uyumluluğu
Cihaz uygulamaları, hoparlör, kulaklık jakı, harici hoparlör bağlantısı gibi en az bir ses çıkışı biçimi İÇERMELİDİR.
5.1. Medya codec'leri
Cihaz uygulamaları, bu dokümanda açıkça izin verildiği durumlar hariç olmak üzere Android SDK dokümanlarında [Kaynaklar, 58] belirtilen temel medya biçimlerini DESTEKLEMELİDİR. Daha açık belirtmek gerekirse, cihaz uygulamaları aşağıdaki tablolarda tanımlanan medya biçimlerini, kodlayıcıları, kod çözücüleri, dosya türlerini ve kapsayıcı biçimlerini DESTEKLEMELİDİR. Bu codec'lerin tümü, Android Açık Kaynak Projesi'ndeki tercih edilen Android uygulamasında yazılım uygulamaları olarak sağlanır.
Ne Google ne de Open Handset Alliance, bu codec'lerin üçüncü taraf patentleriyle ilgili herhangi bir sorun içermediğine dair beyanda bulunmamaktadır. Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, açık kaynak yazılım veya paylaşımlı yazılım da dahil olmak üzere bu kodun uygulamalarının ilgili patent sahiplerinden patent lisansları gerektirebileceğini göz önünde bulundurması önerilir.
Mevcut cihaz donanımı, ilgili standartlar tarafından belirtilen gerekli bit hızlarıyla tam olarak eşleşen bit hızlarını her zaman desteklemediğinden, bu tablolarda çoğu video codec'i için belirli bit hızı koşullarının listelenmediğini unutmayın. Bunun yerine, cihaz uygulamaları, donanımda mümkün olan en yüksek bit hızını (özellikler tarafından tanımlanan sınırlara kadar) DESTEKLEMELİDİR.
Tür | Biçim / Codec | Kodlayıcı | Kod çözücü | Ayrıntılar | Dosya Türleri/Kapsayıcı Biçimleri |
---|---|---|---|---|---|
Ses | MPEG-4 AAC Profili (AAC LC) | GEREKLİ Mikrofon donanımı içeren ve android.hardware.microphone tanımlayan cihaz uygulamaları için gereklidir. |
Zorunlu | 8 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1* içerik desteği. |
|
MPEG-4 HE AAC Profili (AAC+) | Mikrofon donanımı içeren ve android.hardware.microphone özelliğini tanımlayan cihaz uygulamaları için ZORUNLU | Zorunlu | 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1* içerik desteği. | ||
MPEG-4 HE AAC v2 Profili (geliştirilmiş AAC+) | Zorunlu | 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo/5.0/5.1* içerik desteği. | |||
MPEG-4 Ses Nesnesi Türü ER AAC ELD (Gelişmiş Düşük Gecikmeli AAC) | Mikrofon donanımı içeren ve android.hardware.microphone özelliğini tanımlayan cihaz uygulamaları için ZORUNLU | Zorunlu | 16 ila 48 kHz arasındaki standart örnekleme hızlarına sahip mono/stereo içerik desteği. | ||
AMR-NB | GEREKLİ Mikrofon donanımı içeren ve android.hardware.microphone tanımlayan cihaz uygulamaları için gereklidir. |
Zorunlu | 8 kHz'te örneklenmiş 4,75 ila 12,2 Kb/sn | 3GPP (.3gp) | |
AMR-WB | GEREKLİ Mikrofon donanımı içeren ve android.hardware.microphone tanımlayan cihaz uygulamaları için gereklidir. |
Zorunlu | 16 kHz'te örneklenen 6,60 kbit/sn ile 23,85 kbit/sn arasında 9 hız | 3GPP (.3gp) | |
FLAC | GEREKLİ (Android 3.1 ve sonraki sürümler) |
Mono/stereo (çok kanallı değil). 48 kHz'e kadar örnek hızları (ancak 48 ila 44,1 kHz aşağı örnekleyici düşük geçiren filtre içermediğinden 44,1 kHz çıkışlı cihazlarda 44,1 kHz'e kadar örnek hızları önerilir). 16 bit önerilir; 24 bit için dithering uygulanmaz. | Yalnızca FLAC (.flac) | ||
MP3 | Zorunlu | Mono/Stereo 8-320 Kb/sn sabit (CBR) veya değişken bit hızı (VBR) | MP3 (.mp3) | ||
MIDI | Zorunlu | MIDI Türü 0 ve 1. DLS 1 ve 2 sürümü. XMF ve Mobil XMF. RTTTL/RTX, OTA ve iMelody zil sesi biçimleri için destek |
|
||
Vorbis | Zorunlu |
|
|||
PCM/WAVE | Zorunlu | Zorunlu | 8 bit ve 16 bit doğrusal PCM** (donanım sınırına kadar hızlarda). Cihazlar, 8000, 16.000 ve 44.100 Hz frekanslarında ham PCM kaydı için örnekleme hızlarını DESTEKLEMELİDİR. | WAVE (.wav) | |
Resim | JPEG | Zorunlu | Zorunlu | Taban+aşamalı | JPEG (.jpg) |
GIF | Zorunlu | GIF (.gif) | |||
PNG | Zorunlu | Zorunlu | PNG (.png) | ||
BMP | Zorunlu | BMP (.bmp) | |||
WEBP | Zorunlu | Zorunlu | WebP (.webp) | ||
Video | H.263 | GEREKLİ Kamera donanımı içeren ve android.hardware.camera veya android.hardware.camera.front değerini tanımlayan cihaz uygulamaları için gereklidir. |
Zorunlu |
|
|
H.264 AVC | GEREKLİ Kamera donanımı içeren ve android.hardware.camera veya android.hardware.camera.front değerini tanımlayan cihaz uygulamaları için gereklidir. |
Zorunlu | Referans profili (BP) |
|
|
MPEG-4 SP | Zorunlu | 3GPP (.3gp) | |||
VP8 | GEREKLİ (Android 2.3.3 ve sonraki sürümler) |
WebM (.webm) ve Matroska (.mkv, Android 4.0+) |
5.2 Video Kodlama
Arka kamera içeren ve android.hardware.camera
beyanı yapan Android cihaz uygulamaları aşağıdaki video kodlama profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD (Donanım tarafından desteklendiğinde) | |
---|---|---|---|
Video codec | H.264 Temel Profili | H.264 Temel Profili | H.264 Temel Profili |
Video çözünürlüğü | 176 x 144 piksel | 480 x 360 piksel | 1280 x 720 piksel |
Video kare hızı | 12 fps | 30 fps | 30 fps |
Video bit hızı | 56 Kb/sn | 500 Kb/sn veya daha yüksek | 2 Mb/sn veya daha yüksek |
Ses codec | AAC-LC | AAC-LC | AAC-LC |
Ses kanalları | 1 (mono) | 2 (stereo) | 2 (stereo) |
Ses bit hızı | 24 Kb/sn | 128 Kb/sn | 192 Kb/sn |
5.3 Video Kod Çözme
Android cihaz uygulamaları aşağıdaki VP8 video kod çözme profillerini DESTEKLEMELİDİR.
SD (Düşük kalite) | SD (Yüksek kalite) | HD 720p (Donanım tarafından desteklendiğinde) |
HD 1080p (Donanım tarafından desteklendiğinde) |
|
---|---|---|---|---|
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 | 8 Mb/sn | 20 Mb/sn |
5.4. Ses Kaydetme
Bir uygulama, ses akışı kaydetmeye başlamak için android.media.AudioRecord
API'yi kullandığında, mikrofon donanımı içeren ve android.hardware.microphone
bildiren cihaz uygulamaları aşağıdaki davranışların her biriyle ses örneklemeli ve kaydetmelidir:
- Cihaz, frekansa göre yaklaşık olarak düz bir genlik özelliği GÖSTERMELİDİR; özellikle 100 Hz ile 4.000 Hz arasında ±3 dB
- Ses giriş hassasiyeti, 1000 Hz'de 90 dB ses gücü seviyesi (SPL) kaynağının 16 bitlik örnekler için 2500 RMS vermesi olacak şekilde AYARLANMALIDIR.
- PCM genlik seviyeleri, mikrofondaki 90 dB SPL'ye göre en az 30 dB aralığında (-18 dB ila +12 dB) giriş SPL değişikliklerini doğrusal olarak İZLEMEYECEK.
- Toplam harmonik bozulma, 90 dB SPL giriş seviyesinde 1 kHz için% 1'den az OLMALIDIR.
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:
- Gürültü azaltma işlemi (varsa) DEVRE DIŞI BIRAKILMALIDIR.
- Otomatik kazanç denetimi (varsa) DEVRE DIŞI BIRAKILMALIDIR.
Not: Yukarıda belirtilen şartlardan bazıları Android 4.2 için "OLMALI" olarak belirtilmiş olsa da gelecekteki bir sürümün Uyumluluk Tanımı'nda bu şartlar "OLMALI" olarak değiştirilmesi planlanmaktadır. Yani bu şartlar Android 4.2'de isteğe bağlıdır ancak gelecekteki bir sürümde zorunludur. Android 4.2 çalıştıran mevcut ve yeni cihazların Android 4.2'de bu koşulları karşılaması önemle tavsiye edilir. Aksi takdirde, gelecekteki bir sürüme yükseltildiğinde Android uyumluluğu elde edemezler.
5.5. Ses gecikmesi
Ses gecikmesi, ses sinyalinin bir sistemden geçerken yaşadığı zaman gecikmesidir. Ses efektleri veya VOIP iletişimi gibi gerçek zamanlı efektler elde etmek için birçok uygulama sınıfı kısa gecikmeleri kullanır.
Bu bölümün amaçları doğrultusunda:
- "Çıkış gecikmesi", bir uygulamanın PCM kodlu veri çerçevesi yazması ile ilgili sesin harici bir dinleyici tarafından duyulabilmesi veya bir dönüştürücü tarafından gözlemlenebilmesi arasındaki aralık olarak tanımlanır.
- "Soğuk çıkış gecikmesi", ses çıkış sisteminin istek öncesinde boşta olduğu ve kapalı olduğu durumlarda ilk karenin çıkış gecikmesi olarak tanımlanır.
- "Sürekli çıkış gecikmesi", cihaz ses çalmaya başladıktan sonra sonraki karelerin çıkış gecikmesi olarak tanımlanır.
- "Giriş gecikmesi", harici bir sesin cihaza sunulmasıyla bir uygulamanın ilgili PCM kodlu veri çerçevesini okuduğu zaman aralığıdır.
- "Soğuk giriş gecikmesi", ses giriş sisteminin istek öncesinde boşta olduğu ve kapalı olduğu durumlarda, kaybedilen giriş süresinin ve ilk karenin giriş gecikmesinin toplamı olarak tanımlanır.
- "sürekli giriş gecikmesi", cihaz ses kaydederken sonraki kareler için giriş gecikmesi olarak tanımlanır
- "OpenSL ES PCM arabellek sırası API'si", Android NDK'daki PCM ile ilgili OpenSL ES API'leri grubudur; NDK_root bölümüne bakın
/docs/opensles/index.html
5. Bölüm uyarınca, tüm uyumlu cihaz uygulamaları en az bir ses çıkışı biçimi İÇERMELİDİR. Cihaz uygulamaları şu çıkış gecikmesi koşullarını karşılamalı veya aşmalıdır:
- 100 milisaniye veya daha az soğuk çıkış gecikmesi
- 45 milisaniye veya daha az sürekli çıkış gecikmesi
Bir cihaz uygulaması, OpenSL ES PCM arabellek sırası API'si kullanıldığında, en az bir desteklenen ses çıkış cihazında sürekli çıkış gecikmesi ve soğuk çıkış gecikmesi için ilk kalibrasyondan sonra bu bölümün şartlarını karşılıyorsa android.content.pm.PackageManager
sınıfı aracılığıyla "android.hardware.audio.low-latency" özelliğini bildirerek düşük gecikmeli ses desteğini bildirebilir. [Kaynaklar, 37] Buna karşılık, cihaz uygulaması bu koşulları karşılamıyorsa düşük gecikmeli ses desteğini bildirmemelidir.
Bölüm 7.2.5 uyarınca, mikrofon donanımı cihaz uygulamaları tarafından atlanabilir.
Mikrofon donanımı içeren ve android.hardware.microphone
beyan eden cihaz uygulamaları, aşağıdaki giriş ses gecikmesi şartlarını karşılamalıdır:
- 100 milisaniye veya daha az soğuk giriş gecikmesi
- 50 milisaniye veya daha az sürekli giriş gecikmesi
5.6. Ağ Protokolleri
Cihazlar, Android SDK dokümanlarında belirtildiği gibi ses ve video oynatma için medya ağı protokollerini DESTEKLEMELİDİR [Kaynaklar, 58]. Özellikle, cihazlar aşağıdaki medya ağı protokollerini DESTEKLEMELİDİR:
- RTSP (RTP, SDP)
- HTTP(S) aşamalı akış
- HTTP(S) Canlı Yayın taslak protokolü, 3. sürüm [Kaynaklar, 59]
6. Geliştirici Araçları ve Seçenekleri Uyumluluğu
6.1 Geliştirici Araçları
Cihaz uygulamaları, Android SDK'da sağlanan Android Geliştirici Araçları'nı DESTEKLEMELİDİR. Daha ayrıntılı olarak belirtmek gerekirse, Android uyumlu cihazlar ŞUNLARLA uyumlu OLMALIDIR:
- Android Debug Bridge (adb olarak bilinir) [Kaynaklar, 33]
Cihaz uygulamalarında, Android SDK'da belirtildiği gibi tümadb
işlevleri desteklenmelidir. Cihaz tarafındakiadb
daemon'u varsayılan olarak etkin OLMAMALI ve Android Hata Ayıklama Köprüsü'nü etkinleştirmek için kullanıcının erişebileceği bir mekanizma OLMALİDİR. - Dalvik Hata Ayıklama İzleyici Hizmeti (ddms olarak bilinir) [Kaynaklar, 33]
Cihaz uygulamalarında, Android SDK'sında belirtildiği gibi tümddms
özellikleri desteklenmelidir.ddms
,adb
kullandığındanddms
desteği varsayılan olarak devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android Hata Ayıklama Köprüsü'nü etkinleştirdiğinde desteklenmelidir. - Monkey [Kaynaklar, 36]
Cihaz uygulamaları Monkey çerçevesini İÇERMELİDİR ve uygulamaların kullanabileceği şekilde kullanıma sunmalıdır. - SysTrace [Kaynaklar, 33]
Cihaz uygulamalarında, Android SDK'sında belirtildiği gibi systrace aracı desteklenmelidir. Systrace varsayılan olarak devre dışı olmalıdır ve Systrace'i etkinleştirmek için kullanıcının erişebileceği bir mekanizma OLMALIDIR.
Android 4.2.2, güvenli adb desteği içerir. Güvenli adb, kimliği doğrulanmış bilinen ana makinelerde adb'yi etkinleştirir. Android 4.2.2 yüklü mevcut ve yeni cihazların Android 4.2'deki bu koşulu karşılaması önemle tavsiye edilir. Aksi takdirde, gelecekteki sürüme yükseltildiğinde Android uyumluluğu elde edemezler.
Linux tabanlı sistemlerin ve Apple Macintosh sistemlerinin çoğu, ek destek olmadan standart Android SDK araçlarını kullanarak Android cihazları tanır. Ancak Microsoft Windows sistemlerinde genellikle yeni Android cihazlar için sürücü gerekir. (Örneğin, yeni tedarikçi firma kimlikleri ve bazen yeni cihaz kimlikleri için Windows sistemlerinde özel USB sürücüleri gerekir.) Standart Android SDK'sında sağlandığı şekilde bir cihaz uygulaması adb
aracı tarafından tanınmıyorsa cihaz uygulayıcıları, geliştiricilerin adb
protokolünü kullanarak cihaza bağlanmasına olanak tanıyan Windows sürücüleri sağlamalıdır. Bu sürücüler, Windows XP, Windows Vista, Windows 7 ve Windows 8 için hem 32 bit hem de 64 bit sürümlerinde sağlanmalıdır.
6.2 Geliştirici Seçenekleri
Android 4.2, geliştiricilerin uygulama geliştirmeyle ilgili ayarları yapılandırmasına yönelik destek içerir. Cihaz uygulamaları, uygulama geliştirmeyle ilgili ayarları göstermek için android.settings.APPLICATION_DEVELOPMENT_SETTINGS intent'ini UYGUNLAŞTIRMALIDIR [Kaynaklar, 77]. Yukarı akış Android uygulaması, Geliştirici Seçenekleri menüsünü varsayılan olarak gizler ve kullanıcıların Ayarlar > Cihaz Hakkında > Derleme Numarası menü öğesine yedi (7) kez bastıktan sonra Geliştirici Seçenekleri'ni başlatmasını sağlar. Cihaz uygulamaları, Geliştirici Seçenekleri için tutarlı bir deneyim sunmalıdır. Daha açık belirtmek gerekirse, cihaz uygulamalarında Geliştirici Seçenekleri varsayılan olarak gizlenmeli ve Geliştirici Seçenekleri'ni etkinleştirmek için yayın öncesi Android uygulamasıyla tutarlı bir mekanizma sağlanmalıdır.
7. Donanım Uyumluluğu
Bir cihazda, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir donanım bileşeni varsa cihaz uygulaması bu API'yi Android SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR. SDK'daki bir API, isteğe bağlı olduğu belirtilen bir donanım bileşeniyle etkileşime geçiyorsa ve cihaz uygulamasında bu bileşen yoksa:
- Bileşenin API'leri için eksiksiz sınıf tanımları (SDK tarafından belirtildiği şekilde) hâlâ mevcut OLMALIDIR
- API'nin davranışları makul bir şekilde no-op olarak uygulanmalıdır
- API yöntemleri, SDK dokümanları tarafından izin verildiğinde null değerler DÖNDÜRMELİDİR.
- API yöntemleri, SDK dokümanlarında null değerlerine izin verilmeyen sınıfların işlemsiz uygulamalarını DÖNDÜRMELİDİR.
- API yöntemleri, SDK dokümanlarında belirtilmeyen istisnalar İÇERMEMELİDİR.
Bu koşulların geçerli olduğu bir senaryoya tipik bir örnek telefon API'sidir: Telefon olmayan cihazlarda bile bu API'ler makul bir şekilde işlem yapmaz olarak uygulanmalıdır.
Cihaz uygulamaları, android.content.pm.PackageManager
sınıfındaki getSystemAvailableFeatures()
ve hasSystemFeature(String)
yöntemleri aracılığıyla doğru donanım yapılandırma bilgilerini doğru şekilde raporlamalıdır. [Kaynaklar, 37]
7.1. Görüntü ve Grafikler
Android 4.2, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında sorunsuz şekilde çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan özellikler içerir [Kaynaklar, 38]. Cihazlar, bu bölümde ayrıntılı olarak açıklandığı şekilde bu API'leri ve davranışları düzgün şekilde uygulamalıdır.
Bu bölümdeki şartlarda referans verilen birimler aşağıdaki şekilde tanımlanır:
- "Fiziksel diyagonal boyut", ekranın aydınlatılmış kısmının iki karşıt köşesi arasındaki inç cinsinden mesafedir.
- "dpi" ("inç başına nokta" anlamına gelir), 1 inçlik doğrusal yatay veya dikey bir açıklık tarafından kapsanan piksel sayısıdır. dpi değerlerinin listelendiği yerlerde hem yatay hem de dikey dpi aralıkta olmalıdır.
- "En boy oranı", ekranın uzun boyutunun kısa boyuta oranıdır. Örneğin, 480x854 piksel boyutunda bir ekran için 854 / 480 = 1, 779 veya yaklaşık olarak "16:9" değeri elde edilir.
- "Yoğunluktan bağımsız piksel" veya ("dp"), 160 dpi ekrana göre normalleştirilmiş sanal piksel birimidir ve şu şekilde hesaplanır:
pixels = dps * (density / 160)
.
7.1.1. Ekran Yapılandırması
Ekran Boyutu
Android kullanıcı arayüzü çerçevesi, çeşitli ekran boyutlarını destekler ve uygulamaların android.content.res.Configuration.screenLayout
üzerinden SCREENLAYOUT_SIZE_MASK
ile cihaz ekran boyutunu ("ekran düzeni" olarak da bilinir) sorgulamasına olanak tanır. Cihaz uygulamaları, Android SDK dokümanlarında [Kaynaklar, 38] tanımlanan ve yayın öncesi Android platformu tarafından belirlenen doğru ekran boyutunu bildirmelidir. Daha açık belirtmek gerekirse cihaz uygulamaları, aşağıdaki mantıksal yoğunluktan bağımsız piksel (dp) ekran boyutlarına göre doğru ekran boyutunu bildirmelidir.
- Cihazların ekran boyutu en az 426 dp x 320 dp ("küçük") olmalıdır.
- Ekran boyutunu "normal" olarak bildiren cihazların ekran boyutu en az 480 dp x 320 dp OLMALIDIR
- Ekran boyutunu "büyük" olarak bildiren cihazların ekran boyutu en az 640 dp x 480 dp OLMALIDIR.
- "Çok büyük" ekran boyutu bildiren cihazların ekran boyutu en az 960 dp x 720 dp OLMALIDIR.
Ayrıca, cihazların fiziksel diyagonal ekran boyutu en az 2,5 inç OLMALIDIR.
Cihazlar, bildirilen ekran boyutunu hiçbir zaman DEĞİŞTİREMEZ.
Uygulamalar, isteğe bağlı olarak AndroidManifest.xml dosyasında <supports-screens>
özelliği aracılığıyla hangi ekran boyutlarını desteklediklerini belirtir. Cihaz uygulamalarında, Android SDK dokümanlarında açıklandığı gibi, uygulamaların küçük, normal, büyük ve çok büyük ekranlar için belirtilen desteği doğru şekilde dikkate alınmalıdır.
Ekran En Boy Oranı
En boy oranı 1,3333 (4:3) ile 1,85 (16:9) arasında OLMALIDIR.
Ekran Yoğunluğu
Android kullanıcı arayüzü çerçevesi, uygulama geliştiricilerin uygulama kaynaklarını hedeflemesine yardımcı olmak için bir dizi standart mantıksal yoğunluk tanımlar. Cihaz uygulamalarının, android.util.DisplayMetrics
API'leri aracılığıyla aşağıdaki mantıksal Android çerçeve yoğunluklarından birini bildirmesi ve uygulamaları bu standart yoğunlukta çalıştırması GEREKMEKTEDİR.
- "ldpi" olarak bilinen 120 dpi
- "mdpi" olarak bilinen 160 dpi
- "tvdpi" olarak bilinen 213 dpi
- "hdpi" olarak bilinen 240 dpi
- "xhdpi" olarak bilinen 320 dpi
- "xxhdpi" olarak bilinen 480 dpi
7.1.2. Görüntülü Reklam Metrikleri
Cihaz uygulamaları, android.util.DisplayMetrics
[Kaynaklar, 39] bölümünde tanımlanan tüm görüntüleme metrikleri için doğru değerleri bildirmelidir.
7.1.3. Ekran Yönlendirme
Cihazlar, dikey veya yatay ekran yönü için uygulamalar tarafından dinamik yönü desteklemelidir. Yani cihaz, uygulamanın belirli bir ekran yönü isteğini dikkate almalıdır. Cihaz uygulamalarında varsayılan olarak dikey veya yatay yön seçilebilir.
Cihazlar, android.content.res.Configuration.orientation, android.view.Display.getOrientation() veya diğer API'ler aracılığıyla sorgulandığında cihazın mevcut yönü için doğru değeri bildirmelidir.
Cihazlar, yönü değiştirirken bildirilen ekran boyutunu veya yoğunluğunu DEĞİŞTİRMEMELİDİR.
Cihazlar, destekledikleri ekran yönlerini (android.hardware.screen.portrait
ve/veya android.hardware.screen.landscape
) bildirmeli ve desteklenen en az bir yönü bildirmelidir. Örneğin, televizyon veya dizüstü bilgisayar gibi sabit yönde yatay ekrana sahip bir cihaz yalnızca android.hardware.screen.landscape
değerini bildirmelidir.
7.1.4. 2D ve 3D Grafik Hızlandırma
Cihaz uygulamalarında, Android SDK dokümanlarındaki gibi hem OpenGL ES 1.0 hem de 2.0 desteklenmelidir. Cihaz uygulamalarında, Android SDK dokümanlarında [Kaynaklar, 8] açıklandığı gibi Android Renderscript de desteklenmelidir.
Cihaz uygulamaları, OpenGL ES 1.0 ve 2.0'ı desteklediğini de doğru şekilde tanımlamalıdır. Yani:
- Yönetilen API'ler (
GLES10.getString()
yöntemi gibi), OpenGL ES 1.0 ve 2.0 desteğini bildirmelidir. - Yerleşik C/C++ OpenGL API'leri (yani libGLES_v1CM.so, libGLES_v2.so veya libEGL.so aracılığıyla uygulamalar tarafından kullanılabilenler) OpenGL ES 1.0 ve 2.0 desteğini bildirmelidir.
Cihaz uygulamaları, istenen OpenGL ES uzantılarını UYGULAYABİLİR. Ancak cihaz uygulamaları, destekledikleri tüm uzantı dizelerini OpenGL ES yönetilen ve yerel API'ler aracılığıyla bildirmelidir. Buna karşılık, desteklemedikleri uzantı dizelerini bildirmemelidir.
Android 4.2'nin, uygulamaların isteğe bağlı olarak belirli OpenGL doku sıkıştırma biçimlerine ihtiyaç duyduklarını belirtmelerine yönelik destek içerdiğini unutmayın. Bu biçimler genellikle tedarikçi firmaya özgüdür. Android 4.2, belirli bir doku sıkıştırma biçimini uygulamak için cihaz uygulamalarını gerektirmez. Ancak, destekledikleri doku sıkıştırma biçimlerini OpenGL API'deki getString()
yöntemi aracılığıyla doğru şekilde bildirmelidirler.
Android 4.2, uygulamaların bir manifest etiketi android:hardwareAccelerated
veya doğrudan API çağrıları kullanarak uygulama, etkinlik, pencere ya da görünüm düzeyinde 2D grafikler için donanım hızlandırmayı etkinleştirmek istediklerini beyan etmelerini sağlayan bir mekanizma içerir [Kaynaklar, 9].
Android 4.2'de cihaz uygulamalarında donanım hızlandırma varsayılan olarak etkinleştirilmeli ve geliştirici isterse android:hardwareAccelerated="false"
ayarını yaparak veya donanım hızlandırmayı doğrudan Android View API'leri aracılığıyla devre dışı bırakarak donanım hızlandırma devre dışı bırakılmalıdır.
Ayrıca, cihaz uygulamaları donanım hızlandırmayla ilgili Android SDK dokümanlarıyla [Kaynaklar, 9] tutarlı bir davranış sergilemelidir.
Android 4.2, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak doğrudan entegre etmesine olanak tanıyan bir TextureView
nesnesi içerir. Cihaz uygulamaları TextureView
API'yi DESTEKLEMELİ ve yayın öncesi Android uygulamasıyla tutarlı davranış sergilemelidir.
7.1.5. Eski Uygulama Uyumluluğu Modu
Android 4.2, çerçevenin ekran boyutundan bağımsızlık özelliğinin bulunmadığı eski Android sürümleri için geliştirilmemiş eski uygulamaların yararına, çerçevenin "normal" ekran boyutu eşdeğeri (320 dp genişlik) modunda çalıştığı bir "uyumluluk modu" belirtir. Cihaz uygulamalarında, yayın öncesi Android açık kaynak kodu tarafından uygulanan eski uygulama uyumluluk modu desteği ZORUNLUDUR. Yani cihaz uygulamaları, uyumluluk modunun etkinleştirildiği tetikleyicileri veya eşikleri DEĞİŞTİRMEMELİDİR ve uyumluluk modunun kendisinin davranışını DEĞİŞTİRMEMELİDİR.
7.1.6. Ekran Türleri
Cihaz uygulama ekranları iki türden birine ayrılır:
- Sabit piksel ekran uygulamaları: Ekran, yalnızca tek bir piksel genişliği ve yüksekliğini destekleyen tek bir paneldir. Genellikle ekran, cihaza fiziksel olarak entegre edilir. Cep telefonları ve tabletler buna örnek gösterilebilir.
- Değişken piksel ekran uygulamaları: Cihaz uygulamasında yerleşik ekran yoktur ve VGA, HDMI gibi bir video çıkış bağlantı noktası veya ekran için kablosuz bağlantı noktası bulunur ya da piksel boyutlarını değiştirebilen yerleşik bir ekran vardır. Örnekler arasında televizyonlar ve set üstü kutular yer alır.
Sabit piksel cihaz uygulamaları
Sabit piksel cihaz uygulamaları, bu Uyumluluk Tanımı'nda tanımlanan koşulları karşılamaları koşuluyla herhangi bir piksel boyutunda ekran kullanabilir.
Sabit piksel uygulamaları, harici ekranla kullanılmak üzere bir video çıkış bağlantı noktası İÇERİEBİLİR. Ancak bu ekran, uygulama çalıştırmak için kullanılıyorsa cihaz aşağıdaki koşulları karşılamalıdır:
- Cihaz, sabit piksel ekranda olduğu gibi 7.1.1 ve 7.1.2 bölümlerinde açıklanan ekran yapılandırmasını ve ekran metriklerini bildirmelidir.
- Cihaz, sabit piksel ekranla aynı mantıksal yoğunluğu bildirmelidir.
- Cihaz, sabit piksel ekranla aynı veya çok yakın ekran boyutlarını bildirmelidir.
Örneğin, 1024x600 piksel çözünürlüğe sahip 7 inç diyagonal boyuttaki bir tablet, sabit piksel büyük mdpi ekran uygulaması olarak kabul edilir. 720p veya 1080p'de görüntüleyen bir video çıkış bağlantı noktası içeriyorsa cihaz uygulaması, sabit piksel ekranın veya video çıkış bağlantı noktasının kullanılıp kullanılmadığından bağımsız olarak uygulamaların yalnızca büyük bir mdpi penceresinde yürütülmesi için çıkışı ölçeklendirmelidir.
Değişken Pikselli Cihaz Uygulamaları
Değişken pikselli cihaz uygulamaları 1280x720 veya 1920x1080'den (yani 720p veya 1080p) birini veya ikisini DE desteklemelidir. Değişken piksel ekranlara sahip cihaz uygulamaları başka bir ekran yapılandırması veya modunu DESTEKLEMEMELİDİR. Değişken piksel ekranlara sahip cihaz uygulamaları, çalışma zamanında veya önyükleme sırasında ekran yapılandırmasını ya da modunu DEĞİŞTİREBİLİR. Örneğin, bir set üstü kutu kullanıcısı 720p ekranı 1080p ekranla değiştirebilir ve cihaz uygulaması buna göre ayarlanabilir.
Ayrıca, değişken piksel cihaz uygulamaları bu piksel boyutları için aşağıdaki yapılandırma gruplarını bildirmelidir:
- 1280x720 (720p olarak da bilinir): "büyük" ekran boyutu, "tvdpi" (213 dpi) yoğunluğu
- 1920x1080 (1080p olarak da bilinir): "büyük" ekran boyutu, "xhdpi" (320 dpi) yoğunluk
Daha net bir ifadeyle, değişken piksel boyutlarına sahip cihaz uygulamalarının Android 4.2'de 720p veya 1080p ile sınırlı olduğu ve ekran boyutu ile yoğunluk gruplarını yukarıda belirtildiği gibi bildirecek şekilde yapılandırılmasının GEREKTİĞİ unutulmamalıdır.
7.1.7. Ekran Teknolojisi
Android platformu, uygulamaların ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir. Bu belgede özel olarak izin verilmediği sürece cihazlar, Android SDK'sı tarafından tanımlanan bu API'lerin tümünü desteklemelidir. Özellikle:
- Cihazlar 16 bit renkli grafik oluşturabilen ekranları DESTEKLEMELİDİR ve 24 bit renkli grafik oluşturabilen ekranları DESTEKLEMELİDİR.
- Cihazlar, animasyon oluşturabilen ekranları DESTEKLEMELİDİR.
- Kullanılan ekran teknolojisinin piksel en boy oranı (PAR) 0,9 ile 1,1 arasında OLMALIDIR. Yani piksel en boy oranı, %10 toleransla kare (1,0) değerine yakın OLMALIDIR.
7.1.8. Harici Ekranlar
Android 4.2, medya paylaşımı özelliklerini etkinleştirmek için ikincil ekran desteği ve harici ekranlara erişmek için geliştirici API'leri içerir. Bir cihaz, kablolu, kablosuz veya yerleşik ek ekran bağlantısı üzerinden harici ekranı destekliyorsa cihaz uygulaması, Android SDK dokümanlarında açıklandığı şekilde ekran yöneticisi API'sini UYGULAMALIDIR [Kaynaklar, 75].
Güvenli video çıkışını destekleyen ve güvenli yüzeyleri destekleyebilecek cihaz uygulamaları Display.SECURE_FLAG
için destek belirtmelidir. Özellikle, Display.SECURE_FLAG
desteğini beyan eden cihaz uygulamaları, Miracast kablosuz ekranlar için HDCP 2.x veya sonraki sürümleri, kablolu ekranlar için ise HDCP 1.2 veya sonraki sürümleri desteklemelidir. Yukarı akış Android açık kaynak uygulaması, bu koşulu karşılayan kablosuz (Miracast) ve kablolu (HDMI) ekranlar için destek içerir.
7.2. Giriş Cihazları
7.2.1. Klavye
Cihaz uygulamaları:
- http://developer.android.com adresinde açıklandığı gibi Giriş Yönetimi Çerçevesi (üçüncü taraf geliştiricilerin Giriş Yönetimi Motorları (ör. sanal klavye) oluşturmasına olanak tanır) desteği DAHİL OLMALIDIR
- En az bir yumuşak klavye uygulaması sağlanmalıdır (sabit klavye olup olmadığına bakılmaksızın)
- Ek sanal klavye uygulamaları içerebilir
- Donanım klavyesi OLABİLİR
android.content.res.Configuration.keyboard
[Kaynaklar, 40] bölümünde belirtilen biçimlerden biriyle eşleşmeyen bir donanım klavyesi İÇERMEMELİDİR (ör. QWERTY veya 12 tuşlu)
7.2.2. Dokunmatik olmayan gezinme
Cihaz uygulamaları:
- Dokunmatik olmayan bir gezinme seçeneğini (ör. izleme topu, d-pad veya tekerlek) EKSİLTİREBİLİR
android.content.res.Configuration.navigation
[Kaynaklar, 40] için doğru değeri bildirmelidir- Giriş Yönetimi Motorları ile uyumlu, metin seçimi ve düzenleme için makul bir alternatif kullanıcı arayüzü mekanizması SAĞLANMALIDIR. Yukarı yönlü Android açık kaynak uygulaması, dokunmatik olmayan gezinme girişlerine sahip cihazlarla kullanıma uygun bir seçim mekanizması içerir.
7.2.3. Gezinme tuşları
Ana Sayfa, Menü ve Geri işlevleri, Android gezinme paradigması için gereklidir. Cihaz uygulamaları, uygulamaları çalıştırırken bu işlevleri kullanıcının her zaman erişimine AÇIK hale GETİRMELİDİR. Bu işlevler özel fiziksel düğmeler (mekanik veya kapasitif dokunmatik düğmeler gibi) aracılığıyla VEYA özel yazılım anahtarları, hareketler, dokunmatik panel vb. kullanılarak uygulanabilir. Android 4.2 her iki uygulamayı da destekler.
Android 4.2, yardım işlemi desteği içerir [Kaynaklar, 63]. Cihaz uygulamalarında, uygulamalar çalışırken kullanıcının yardımcı işlemine her zaman erişebilmesi GEREKİR. Bu işlev, donanım veya yazılım anahtarları aracılığıyla UYGULANABİLİR.
Cihaz uygulamalarında, gezinme tuşlarını görüntülemek için ekranın farklı bir bölümü KULLANILABİLİRSE ancak bu durumda aşağıdaki koşulları İYİCE karşılamalıdır:
- Cihaz uygulamalı gezinme tuşları, ekranın uygulamalar tarafından kullanılamayan ayrı bir bölümünü KULLANMALIDIR ve uygulamaların kullanabileceği ekran bölümünü gizlememeli veya başka bir şekilde etkilememelidir.
- Cihaz uygulamalarında, ekranın bir kısmı Bölüm 7.1.1'de tanımlanan koşulları karşılayan uygulamalara sunulmalıdır.
- Uygulamalar bir sistem kullanıcı arayüzü modu belirtmediğinde veya
SYSTEM_UI_FLAG_VISIBLE
belirtdiğinde cihaz uygulamaları gezinme tuşlarını GÖSTERMELİDİR. - Cihaz uygulamaları, uygulamalar
SYSTEM_UI_FLAG_LOW_PROFILE
belirttiğinde gezinme düğmelerini dikkati dağıtmayan "düşük profilli" (ör. karartılmış) modda GÖSTERMELİDİR. - Cihaz uygulamaları
SYSTEM_UI_FLAG_HIDE_NAVIGATION
belirttiğinde gezinme tuşlarını GİZLEMEK ZORUNDADIR. - Cihaz uygulaması, targetSdkVersion <= 10 olduğunda uygulamalara bir Menü anahtarı sunMALIDIR ve targetSdkVersion > 10 olduğunda bir Menü anahtarı sunMAMALIDIR.
7.2.4. Dokunmatik ekran girişi
Cihaz uygulamaları:
- Bir tür işaretçi giriş sistemi (fare benzeri veya dokunmatik) OLMALIDIR.
- Herhangi bir türde (ör. kapasitif veya dirençli) dokunmatik ekran OLABİLİR
- Dokunmatik ekran birden fazla işaretçiyi destekliyorsa tamamen bağımsız olarak izlenen işaretçileri DESTEKLEMELİDİR.
- Cihazdaki belirli dokunmatik ekranın türüne karşılık gelen
android.content.res.Configuration
[Resources, 39] değerini bildirmelidir
Cihaz uygulamaları, kullanılan giriş türüne karşılık gelen doğru özelliği bildirmelidir. Android 4.2'nin, dokunmatik olmayan yüksek kaliteli bir giriş cihazına (ör. fare veya dokunmatik yüzey) karşılık gelen android.hardware.faketouch
özelliğini içerdiğini unutmayın. Bu özellik, dokunmatik tabanlı girişi (temel hareket desteği dahil) yeterince taklit edebilir ve cihazın dokunmatik ekran işlevinin taklit edilmiş bir alt kümesini desteklediğini gösterir.
Dokunmatik ekran (tek dokunma veya daha iyi) içeren cihaz uygulamaları da android.hardware.faketouch özelliğini bildirmelidir. Dokunmatik ekran içermeyen (ve yalnızca işaretçi cihaz kullanan) cihaz uygulamaları hiçbir dokunmatik ekran özelliğini HİÇBİR ŞEKİLDE bildirmemelidir ve yalnızca android.hardware.faketouch
değerini bildirmelidir.
7.2.5. Mikrofon
Cihaz uygulamalarında mikrofon atlanabilir. Ancak bir cihaz uygulamasında mikrofon yoksa android.hardware.microphone
özellik sabitini HİÇBİR ZAMAN bildirmemelidir ve ses kaydı API'sini Bölüm 7 uyarınca hiçbir işlem yapmadan uygulamalıdır.
Mikrofonu olan cihaz uygulamaları ise:
android.hardware.microphone
özellik sabitini bildirmelidir- Bölüm 5.4'teki ses kalitesi koşullarını karşılamalıdır.
- Bölüm 5.5'teki ses gecikmesi koşullarını karşılamalıdır.
7.3. Sensörler
Android 4.2, çeşitli sensör türlerine erişmek için API'ler içerir. Cihaz uygulamalarında, aşağıdaki alt bölümlerde belirtildiği gibi bu sensörler genellikle atlanabilir. Bir cihazda, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türü varsa cihaz uygulaması bu API'yi Android SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR. Örneğin, cihaz uygulamaları:
android.content.pm.PackageManager
sınıfına göre sensörlerin varlığını veya yokluğunu doğru şekilde bildirmelidir. [Kaynaklar, 37]SensorManager.getSensorList()
ve benzer yöntemler aracılığıyla desteklenen sensörlerin doğru listesini DÖNDÜRMELİDİR- Diğer tüm sensör API'leri için makul bir şekilde davranmalıdır (örneğin, uygulamalar dinleyici kaydettirmeye çalıştığında uygun şekilde doğru veya yanlış döndürerek, ilgili sensörler mevcut olmadığında sensör dinleyicilerini çağırmamak vb.).
- Tüm sensör ölçümlerini, Android SDK dokümanlarında [Kaynaklar, 41] tanımlandığı şekilde her sensör türü için ilgili Uluslararası Birim Sistemi (ör.metrik) değerlerini kullanarak bildirmelidir.
Yukarıdaki liste kapsamlı değildir. Android SDK'sının belgelenmiş davranışı yetkili kabul edilir.
Bazı sensör türleri sentetiktir. Yani bir veya daha fazla sensör tarafından sağlanan verilerden türetilebilirler. (Yön sensörü ve doğrusal hızlanma sensörü buna örnek gösterilebilir.) Cihaz uygulamaları, ön koşul olan fiziksel sensörleri içerdiğinde bu sensör türlerini UYGULAMALIDIR.
Android 4.2, yalnızca veriler değiştiğinde değil, sürekli olarak veri döndüren bir "akış" sensörü kavramı içerir. Cihaz uygulamaları, Android 4.2 SDK dokümanlarında akış sensörü olarak belirtilen API'ler için sürekli olarak düzenli veri örnekleri sağlamalıdır. Cihaz uygulamalarının, sensör akışının cihaz CPU'sunun askıya alınmış duruma girmesini veya askıya alınmış durumdan uyandırılmasını engellememesi GEREKTİĞİNİ unutmayın.
7.3.1. İvme ölçer
Cihaz uygulamalarında 3 eksenli ivme ölçer BULUNMASI GEREKİR. Bir cihaz uygulamasında 3 eksenli ivme ölçer varsa:
- Etkinlikleri 120 Hz veya daha yüksek bir hızda yayınlayabilmeli. Yukarıdaki ivmeölçer frekansının Android 4.2 için "OLMALI" olarak belirtilmesine rağmen, gelecekteki bir sürümün Uyumluluk Tanımı'nda bu değerlerin "OLMALI" olarak değiştirilmesinin planlandığını unutmayın. Yani bu standartlar Android 4.2'de isteğe bağlıdır ancak gelecekteki sürümlerde zorunludur. Android 4.2 çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için Android 4.2'de bu koşulları karşılamaları önemle tavsiye edilir.
- Android API'lerinde açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR (bkz. [Kaynaklar, 41])
- Herhangi bir üç boyutlu vektörde serbest düşüşten iki katı yerçekimine (2g) kadar veya daha fazlasını ölçebilmelidir.
- 8 bit veya daha fazla doğruluk değerine sahip OLMALIDIR
- Standart sapması 0,05 m/s^2'den büyük OLMAMALIDIR
7.3.2. Manyetometre
Cihaz uygulamalarında 3 eksenli bir manyetometre (ör. pusula) BULUNMASI GEREKİR. 3 eksenli manyetometre içeren cihazlar:
- Etkinlikleri 10 Hz veya daha yüksek bir hızda yayınlayabilmelidir.
- Android API'lerinde açıklandığı şekilde Android sensör koordinat sistemine UYGUN OLMALIDIR (bkz. [Kaynaklar, 41]).
- Coğrafi manyetik alanı kapsayacak şekilde yeterli bir alan gücü aralığını örnekleyebilmelidir.
- 8 bit veya daha fazla doğruluk değerine sahip OLMALIDIR
- Standart sapma 0,5 µT'den büyük OLMAMALIDIR
7.3.3. GPS
Cihaz uygulamaları bir GPS alıcısı İÇERMELİDİR. Bir cihaz uygulamasında GPS alıcısı varsa GPS kilitlenme süresini en aza indirmek için bir tür "desteklenen GPS" tekniği DAHİL EDİLMELİDİR.
7.3.4. Jiroskop
Cihaz uygulamalarında jiroskop (ör. açısal değişim sensörü) BULUNMASI GEREKİR. 3 eksenli ivme ölçer de dahil edilmediği sürece cihazlarda jiroskop sensörü OLMAMALIDIR. Cihaz uygulaması jiroskop içeriyorsa:
- Sıcaklık dengeleme özelliği ZORUNLUDUR
- 5,5*Pi radyan/saniyeye (yani saniyede yaklaşık 1.000 derece) kadar yön değişikliklerini ölçebilmelidir.
- Etkinlikleri 200 Hz veya daha yüksek bir hızda yayınlayabilmeli. Yukarıdaki jiroskop frekansının Android 4.2 için "OLMALI" olarak belirtildiğini ancak gelecekteki bir sürümün Uyumluluk Tanımı'nda bu değerin "OLMALI" olarak değiştirilmesinin planlandığını unutmayın. Yani bu standartlar Android 4.2'de isteğe bağlıdır ancak gelecekteki sürümlerde zorunludur. Android 4.2 çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için Android 4.2'de bu koşulları karşılamaları önemle tavsiye edilir.
- 12 bit veya daha yüksek doğruluk değerine sahip OLMALIDIR
- Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans veya rad^2 / s) büyük olmayan bir varyansa sahip OLMALIDIR. Varyansın örnekleme hızıyla değişmesine izin verilir ancak bu değerle sınırlandırılmalıdır. Diğer bir deyişle, jiroskopun varyansını 1 Hz örnekleme hızında ölçerseniz bu değer 1e-7 rad^2/s^2'den fazla olmamalıdır.
- Zaman damgalarının, donanım etkinliğinin gerçekleştiği zamana mümkün olduğunca yakın olması GEREKİR. Sabit gecikme kaldırılmalıdır.
7.3.5. Barometre
Cihaz uygulamaları bir barometre (ör. ortam hava basıncı sensörü) İÇERİEBİLİR. Cihaz uygulaması barometre içeriyorsa:
- Etkinlikleri 5 Hz veya daha yüksek bir hızda yayınlayabilmelidir.
- Yüksekliği tahmin etmeyi sağlayacak yeterli hassasiyete sahip OLMALIDIR
- Sıcaklık dengeleme özelliği ZORUNLUDUR
7.3.7. Termometre
Cihaz uygulamaları termometre (ör. sıcaklık sensörü) İÇERMEYEBİLİR ancak İÇERMEMELİDİR. Bir cihaz uygulamasında termometre varsa cihazın CPU sıcaklığını ÖLÇMESİ GEREKİR. Başka bir sıcaklığı ÖLÇMEMELİDİR. (Bu sensör türünün Android 4.2 API'lerinde desteğinin sonlandırıldığını unutmayın.)
7.3.7. Fotoğraf ölçer
Cihaz uygulamaları bir fotometre (ör. ortam ışığı sensörü) İÇERİEBİLİR.
7.3.8. Yakınlık Sensörü
Cihaz uygulamaları bir yakınlık sensörü içerEBİLİR. Bir cihaz uygulamasında yakınlık sensörü varsa nesnenin yakınlığını ekranla aynı yönde ölçmesi GEREKİR. Yani bu sensör türünün birincil amacı kullanıcının kullandığı telefonu algılamak olduğundan yakınlık sensörü, ekrana yakın nesneleri algılayacak şekilde yönlendirilmelidir. Bir cihaz uygulamasında başka bir yönde yakınlık sensörü varsa bu API aracılığıyla erişilememelidir. Bir cihaz uygulamasında yakınlık sensörü varsa 1 bit veya daha fazla doğruluk değeri OLMALIDIR.
7.4. Veri Bağlantısı
7.4.1. Telefon Hizmeti
Android 4.2 API'leri ve bu belge tarafından kullanılan "Telefon" terimi, özellikle GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı göndermeyle ilgili donanıma atıfta bulunur. Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak Android 4.2'nin amaçları doğrultusunda, aynı ağ kullanılarak uygulanabilecek veri bağlantılarından bağımsız olarak kabul edilir. Diğer bir deyişle, Android "telephony" işlevi ve API'leri özellikle sesli aramaları ve SMS'leri ifade eder. Örneğin, arama yapamayan veya SMS mesajı gönderip alamayan cihaz uygulamaları, veri bağlantısı için hücresel ağ kullanıp kullanmadıklarından bağımsız olarak "android.hardware.telephony" özelliğini veya herhangi bir alt özelliği bildirmemelidir.
Android 4.2, telefon donanımı içermeyen cihazlarda KULLANILABİLİR. Yani Android 4.2, telefon olmayan cihazlarla uyumludur. Ancak bir cihaz uygulaması GSM veya CDMA telefon görüşmesi içeriyorsa söz konusu teknolojinin API'si için tam destek UYGULANMALIDIR. Telefon donanımı içermeyen cihaz uygulamaları, API'lerin tamamını işlem yapmadan olarak UYGULAMALIDIR.
7.4.2. IEEE 802.11 (Kablosuz)
Android 4.2 cihaz uygulamalarında bir veya daha fazla 802.11 biçimi (b/g/a/n vb.) için destek YER ALMALIDIR. Bir cihaz uygulaması 802.11 desteği içeriyorsa ilgili Android API'yi UYGULAMASI GEREKİR.
Cihaz uygulamalarında çoklu yayın API'si, SDK dokümanlarında [Kaynaklar, 62] açıklandığı şekilde uygulanmalıdır. Kablosuz bağlantı desteği içeren cihaz uygulamaları, çoklu yayın DNS'sini (mDNS) desteklemelidir. Cihaz uygulamaları, ekran etkin durumda değilken de dahil olmak üzere herhangi bir çalışma zamanında mDNS paketlerini (224.0.0.251) filtrelememelidir.
7.4.2.1. WiFi Direct
Cihaz uygulamalarında kablosuz doğrudan bağlantı (eşler arası kablosuz bağlantı) desteği YER ALMALIDIR. Bir cihaz uygulamasında kablosuz doğrudan bağlantı desteği varsa ilgili Android API'si, SDK dokümanlarında [Kaynaklar, 68] açıklandığı şekilde uygulanmalıdır. Bir cihaz uygulamasında kablosuz doğrudan bağlantı desteği varsa:
- Normal kablosuz bağlantıyı desteklemelidir.
- Eşzamanlı kablosuz ve kablosuz doğrudan bağlantıyı desteklemelidir.
7.4.3. Bluetooth
Cihaz uygulamaları bir Bluetooth alıcı/verici içermelidir. Bluetooth alıcı/verici içeren cihaz uygulamaları, SDK dokümanlarında açıklandığı gibi [Kaynaklar, 42] RFCOMM tabanlı Bluetooth API'yi etkinleştirmek ZORUNDADIR. Cihaz uygulamaları, cihaza uygun olarak A2DP, AVRCP, OBEX gibi ilgili Bluetooth profillerini UYGULAMALIDIR.
Uyumluluk Testi Paketi, Android RFCOMM Bluetooth API'nin temel işlevlerini kapsayan test örneklerini içerir. Ancak Bluetooth, cihazlar arasındaki bir iletişim protokolü olduğundan tek bir cihazda çalışan birim testleriyle tam olarak test edilemez. Sonuç olarak, cihaz uygulamaları da Ek A'da açıklanan insan tarafından yönetilen Bluetooth test prosedürünü İŞLEMELİDİR.
7.4.4. Yakın Alan İletişimi
Cihaz uygulamalarında Near Field Communication (NFC) için bir alıcı/verici ve ilgili donanım YER ALMALIDIR. Bir cihaz uygulaması NFC donanımı içeriyorsa:
android.content.pm.PackageManager.hasSystemFeature()
yönteminden android.hardware.nfc özelliğini bildirmelidir. [Kaynaklar, 37]- Aşağıdaki NFC standartları üzerinden NDEF mesajlarını okuyup yazabilmelidir:
- Aşağıdaki NFC standartları üzerinden NFC Forum okuyucu/yazar (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0 tarafından tanımlandığı şekilde) olarak hareket edebilmelidir:
- NfcA (ISO14443-3A)
- NfcB (ISO14443-3B)
- NfcF (JIS 6319-4)
- IsoDep (ISO 14443-4)
- NFC Forumu Etiket Türleri 1, 2, 3, 4 (NFC Forumu tarafından tanımlanmıştır)
- Aşağıdaki NFC standartları üzerinden NFC Forum okuyucu/yazar (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0 tarafından tanımlandığı şekilde) olarak hareket edebilmelidir:
- Aşağıdaki NFC standartları üzerinden NDEF mesajlarını okuyup yazabilmelidir. Aşağıdaki NFC standartlarının Android 4.2 için "OLMALI" olarak belirtildiğini ancak gelecekteki bir sürümün Uyumluluk Tanımı'nda bu standartların "OLMALI" olarak değiştirilmesinin planlandığını unutmayın. Yani bu standartlar Android 4.2'de isteğe bağlıdır ancak gelecekteki sürümlerde zorunludur.
Android 4.2 çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için Android 4.2'de bu gereksinimleri karşılamaları önemle tavsiye edilir.
- NfcV (ISO 15693)
- Aşağıdaki eşler arası standartlar ve protokoller üzerinden veri gönderip alabilmeli:
- ISO 18092
- LLCP 1.0 (NFC Forum tarafından tanımlanmıştır)
- SDP 1.0 (NFC Forum tarafından tanımlanmıştır)
- NDEF Push Protokolü [Kaynaklar, 43]
- SNEP 1.0 (NFC Forum tarafından tanımlanmıştır)
- Android Beam desteği ZORUNLUDUR [Kaynaklar, 65]:
- SNEP varsayılan sunucusunu UYGULAMALIDIR. Varsayılan SNEP sunucusu tarafından alınan geçerli NDEF mesajları, android.nfc.ACTION_NDEF_DISCOVERED intent'i kullanılarak uygulamalara gönderilmelidir. Android Beam'in ayarlardan devre dışı bırakılması, gelen NDEF mesajının gönderilmesini devre dışı BIRAKMAMALIDIR.
- Cihaz uygulamalarında, NFC paylaşım ayarlarını göstermek için android.settings.NFCSHARING_SETTINGS intent'i [Kaynaklar, 67] kullanılmalıdır.
- NPP sunucusunu UYGULAMALIDIR. NPP sunucusu tarafından alınan mesajlar SNEP varsayılan sunucusuyla aynı şekilde işlenmelidir.
- Android Beam etkinleştirildiğinde varsayılan SNEP sunucusuna giden P2P NDEF göndermeye çalışan bir SNEP istemcisi UYGULAMALIDIR. Varsayılan SNEP sunucusu bulunamazsa istemcinin bir NPP sunucusuna göndermeyi DENEMESİ GEREKİR.
- Ön plan etkinliklerinin, android.nfc.NfcAdapter.setNdefPushMessage, android.nfc.NfcAdapter.setNdefPushMessageCallback ve android.nfc.NfcAdapter.enableForegroundNdefPush'i kullanarak giden P2P NDEF mesajını ayarlamasına izin VERMELİDİR.
- Giden P2P NDEF mesajları göndermeden önce "İletmek için dokun" gibi bir hareket veya ekran onayı KULLANMALIDIR.
- Android Beam'i varsayılan olarak etkinleştirmeLİDİR.
- Cihaz, Bluetooth Nesne İtme Profilini destekliyorsa NFC bağlantısının Bluetooth'a aktarılmasını desteklemelidir. Cihaz uygulamaları, android.nfc.NfcAdapter.setBeamPushUris kullanılırken NFC Forum'un "Connection Handover version 1.2" [Kaynaklar, 60] ve "Bluetooth Secure Simple Pairing Using NFC version 1.0" [Kaynaklar, 61] özelliklerini uygulayarak Bluetooth'a bağlantı aktarımını desteklemelidir. Bu tür bir uygulama, NFC üzerinden aktarma isteğini / seçilen kayıtları değiştirmek için SNEP GET isteklerini KULLANABİLİR ve gerçek Bluetooth veri aktarımı için Bluetooth Nesne İtme Profili'ni KULLANMAK ZORUNDADIR.
- NFC keşif modundayken desteklenen tüm teknolojiler için anket YAPMALIDIR.
- Cihaz açıkken ekran etkin ve kilit ekranı kilidi açıkken NFC keşif modunda OLMALIDIR.
(Yukarıdaki JIS, ISO ve NFC Forumu spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.)
Ayrıca, cihaz uygulamaları aşağıdaki MIFARE teknolojileri için okuyucu/yazıcı desteği içerEBİLİR.
- MIFARE Classic (NXP MF1S503x [Kaynaklar, 44], MF1S703x [Kaynaklar, 44])
- MIFARE Ultralight (NXP MF0ICU1 [Kaynaklar, 46], MF0ICU2 [Kaynaklar, 46])
- MIFARE Classic'te NDEF (NXP AN130511 [Kaynaklar, 48], AN130411 [Kaynaklar, 49])
Android 4.2'nin bu MIFARE türleri için API'ler içerdiğini unutmayın. Bir cihaz uygulaması, okuyucu/yazar rolünde MIFARE'i destekliyorsa:
- İlgili Android API'lerini Android SDK'sında belirtildiği şekilde UYGULAMALIDIR
android.content.pm.PackageManager.hasSystemFeature()
yönteminden com.nxp.mifare özelliğini bildirmelidir. [Kaynaklar, 37] Bunun standart bir Android özelliği olmadığını ve bu nedenlePackageManager
sınıfında sabit bir değer olarak görünmediğini unutmayın.- Bu bölümde açıklandığı şekilde genel NFC desteğini de uygulamadığı sürece ilgili Android API'lerini uygulamamalı veya com.nxp.mifare özelliğini bildirmemelidir
Bir cihaz uygulaması NFC donanımı içermiyorsa android.content.pm.PackageManager.hasSystemFeature()
yönteminden [Kaynaklar, 37] android.hardware.nfc özelliğini İLAN ETMEMELİDİR ve Android 4.2 NFC API'sini işlem yapmaz olarak UYGULAMALIDIR.
android.nfc.NdefMessage
ve android.nfc.NdefRecord
sınıfları protokolden bağımsız bir veri temsili biçimini temsil ettiğinden, NFC desteği içermeseler veya android.hardware.nfc özelliğini belirtmeseler bile cihaz uygulamaları bu API'leri UYGULAMALIDIR.
7.4.5. Minimum Ağ İşlevi
Cihaz uygulamalarında bir veya daha fazla veri ağı biçimi için destek ZORUNLUDUR. Daha açık belirtmek gerekirse, cihaz uygulamalarında 200 Kbit/sn veya daha yüksek hızda en az bir veri standardı desteği BULUNMASI GEREKİR. Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet vb. verilebilir.
Birincil veri bağlantısının fiziksel bir ağ standardı (Ethernet gibi) olduğu cihaz uygulamalarında 802.11 (Kablosuz) gibi en az bir yaygın kablosuz veri standardı desteği de YER ALMALIDIR.
Cihazlar birden fazla veri bağlantısı biçimi UYGULAYABİLİR.
7.5. Kameralar
Cihaz uygulamalarında arka kamera BULUNMASI GEREKİR ve ön kamera BULUNMASI MÜMKÜNDÜR. Arka kamera, cihazın ekranın karşısındaki tarafında bulunan bir kameradır. Yani geleneksel bir kamera gibi cihazın uzak tarafındaki sahneleri görüntüler. Ön kamera, cihazın ekranla aynı tarafında bulunan bir kameradır. Yani genellikle görüntülü konferans ve benzeri uygulamalarda kullanıcının görüntüsünü almak için kullanılan bir kameradır.
7.5.1. Arka Kamera
Cihaz uygulamalarında arka kamera BULUNMASI GEREKİR. Bir cihaz uygulaması arka kamera içeriyorsa:
- En az 2 megapiksel çözünürlüğe sahip OLMALIDIR.
- Kamera sürücüsünde donanım otomatik odaklama veya yazılım otomatik odaklama uygulanmış OLMALIDIR (uygulama yazılımı için şeffaf)
- Sabit odaklı veya EDOF (geniş alan derinliği) donanımına sahip OLABİLİR
- FLAŞ içerebilir. Kamerada ışık varsa uygulama,
Camera.Parameters
nesnesininFLASH_MODE_AUTO
veyaFLASH_MODE_ON
özelliklerini etkinleştirerek ışığı açıkça etkinleştirmediği sürece, bir android.hardware.Camera.PreviewCallback örneği bir kamera önizleme yüzeyine kaydedilmişken ışık YANMAZ. Bu kısıtlamanın cihazın yerleşik sistem kamera uygulaması için değil, yalnızcaCamera.PreviewCallback
kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Kamera
Cihaz uygulamaları ön kamera içerEBİLİR. Bir cihaz uygulamasında ön kamera varsa:
- Çözünürlüğü en az VGA (yani 640x480 piksel) olmalıdır.
- Camera API için varsayılan olarak ön kamera KULLANMAMALIDIR. Yani Android 4.2'deki kamera API'si, ön kameralar için özel destek sunar ve cihaz uygulamaları, API'yi cihazdaki tek kamera olsa bile ön kamerayı varsayılan arka kamera olarak ele alacak şekilde yapılandırmamalıdır.
- 7.5.1 numaralı bölümde açıklandığı gibi arkaya bakan kameralarda kullanılabilen özellikler (ör. otomatik odaklama, flaş vb.) DAHİL OLABİLİR.
- Bir uygulamanın CameraPreview'da gösterdiği yayını aşağıdaki gibi yatay olarak yansıtmalıdır (yani yansıtmalıdır):
- Cihaz uygulaması kullanıcı tarafından döndürülebiliyorsa (ör. bir ivmeölçer aracılığıyla otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak) kamera önizlemesi, cihazın mevcut yönüne göre yatay olarak yansıtılmalıdır.
- Geçerli uygulama,
android.hardware.Camera.setDisplayOrientation()
[Kaynaklar, 50] yöntemine yapılan bir çağrıyla kamera ekranının döndürülmesini açıkça talep ettiyse kamera önizlemesi, uygulama tarafından belirtilen yönde yatay olarak yansıtılmalıdır. - Aksi takdirde önizleme, cihazın varsayılan yatay ekseni boyunca YANSITILMALIDIR.
- Son görüntüleme tarafından gösterilen resmi, kamera önizleme resim akışıyla aynı şekilde yansıtmalıdır. (Cihaz uygulaması, görüntüleme sonrası özelliğini desteklemiyorsa bu şart geçerli değildir.)
- Uygulama geri çağırmalarına döndürülen veya medya depolama alanına bağlanan nihai çekilen hareketsiz resim veya video akışlarını yansıtMAMALIDIR
7.5.3. Kamera API'si Davranışı
Cihaz uygulamalarında, hem ön hem de arka kameralar için kamerayla ilgili API'ler için aşağıdaki davranışlar uygulanmalıdır:
- Bir uygulama hiç
android.hardware.Camera.Parameters.setPreviewFormat(int)
çağrısı yapmadıysa cihaz, uygulama geri çağırmalarına sağlanan önizleme verileri içinandroid.hardware.PixelFormat.YCbCr_420_SP
'u KULLANMAK ZORUNDADIR. - Bir uygulama bir
android.hardware.Camera.PreviewCallback
örneği kaydederse ve sistem, önizleme biçimi YCbCr_420_SP olduğundaonPreviewFrame()
yöntemini çağırırsaonPreviewFrame()
'a iletilenbyte[]
'deki veriler NV21 kodlama biçiminde olmalıdır. Yani NV21 varsayılan OLMALIDIR. - Cihaz uygulamaları, hem ön hem de arka kameralar için kamera önizlemelerinde YV12 biçimini (
android.graphics.ImageFormat.YV12
sabitiyle belirtilir) DESTEKLEMELİDİR. (Donanım video kodlayıcı ve kamera herhangi bir yerel piksel biçimini kullanabilir ancak cihaz uygulaması YV12'ye dönüşümü DESTEKLEMELİDİR.)
Cihaz uygulamalarında, cihazda donanım otomatik odaklama veya başka özellikler bulunup bulunmadığına bakılmaksızın Android 4.2 SDK dokümanlarında [Kaynaklar, 51] yer alan Camera API'nin tamamı uygulanmalıdır. Örneğin, otomatik odaklama özelliği olmayan kameralar, kayıtlı tüm android.hardware.Camera.AutoFocusCallback
örneklerini çağırmaya DEVAM ETMELİDİR (otomatik odaklama özelliği olmayan bir kamerayla alakalı olmasa da). Bunun ön kameralar için de geçerli olduğunu unutmayın. Örneğin, çoğu ön kamera otomatik odaklama özelliğini desteklemese bile API geri çağırmalarının açıklandığı şekilde "taklit" edilmesi gerekir.
Cihaz uygulamaları, temel donanım özelliği destekliyorsa android.hardware.Camera.Parameters
sınıfında sabit olarak tanımlanan her parametre adını tanımalı ve dikkate almalıdır. Cihaz donanımı bir özelliği desteklemiyorsa API, dokümanlar uyarınca davranmalıdır. Buna karşılık, cihaz uygulamalarında android.hardware.Camera.Parameters
üzerinde sabit olarak belgelenenler dışında android.hardware.Camera.setParameters()
yöntemine iletilen dize sabitleri dikkate alınmamalı veya tanınmamalıdır. Yani, donanım izin veriyorsa cihaz uygulamaları tüm standart kamera parametrelerini DESTEKLEMELİ ve özel kamera parametresi türlerini DESTEKLEMEMELİDİR.
Örneğin, yüksek dinamik aralık (HDR) görüntüleme teknikleri kullanılarak görüntü yakalamayı destekleyen cihaz uygulamaları Camera.SCENE_MODE_HDR
kamera parametresini [Kaynaklar, 78] desteklemelidir.
Cihaz uygulamaları, kamera tarafından yeni bir resim çekildiğinde ve resmin girişi medya mağazasına eklendiğinde Camera.ACTION_NEW_PICTURE
intent'i YAYITLAMALIDIR.
Cihaz uygulamaları, kamera tarafından yeni bir video kaydedildiğinde ve resmin girişi medya mağazasına eklendiğinde Camera.ACTION_NEW_VIDEO
intent'i YAYITLAMALIDIR.
7.5.4. Kamera yönü
Hem ön hem de arka kameralar (varsa) kameranın uzun boyutunun ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmelidir. Yani cihaz yatay yönde tutulduğunda kameraların yatay yönde görüntü çekmesi GEREKİR. Bu durum, cihazın doğal yöneliminden bağımsız olarak geçerlidir. Yani hem yatay birincil cihazlar hem de dikey birincil cihazlar için geçerlidir.
7.6. Bellek ve Depolama
7.6.1. Minimum Bellek ve Depolama
Cihaz uygulamalarında, çekirdek ve kullanıcı alanında en az 340 MB kullanılabilir bellek bulunmalıdır. 340 MB, çekirdeğin kontrolü altında olmayan radyo, video vb. donanım bileşenlerine ayrılmış belleğe ek olarak OLMALIDIR.
Cihaz uygulamalarında, uygulama özel verileri için en az 350 MB kalıcı olmayan depolama alanı bulunmalıdır. Yani /data
bölümü en az 350 MB OLMALIDIR.
Android API'leri, uygulamaların veri dosyalarını indirmek için kullanabileceği bir İndirme Yöneticisi içerir [Kaynaklar, 56]. İndirme Yöneticisi'nin cihaz uygulaması, en az 100 MB boyutunda tekil dosyaları varsayılan "önbelleğe" konumuna indirebilmelidir.
7.6.2. Uygulama Ortak Depolama Alanı
Cihaz uygulamaları, uygulamalar için paylaşılan depolama alanı sunmalıdır. Sağlanan paylaşılan depolama alanı en az 1 GB boyutunda OLMALIDIR.
Cihaz uygulamaları, varsayılan olarak "kutudan çıkar çıkmaz" paylaşılan depolama alanı ile yapılandırılmalıdır. Ortak depolama alanı /sdcard
Linux yoluna monte edilmemişse cihazda /sdcard
ile gerçek montaj noktası arasında bir Linux sembolik bağlantısı BULUNMASI GEREKİR.
Cihaz uygulamalarında, bu paylaşılan depolama alanında android.permission.WRITE_EXTERNAL_STORAGE
izninin belgelendiği şekilde uygulanması GEREKİR. Aksi takdirde, paylaşılan depolama alanı bu izni alan tüm uygulamalar tarafından yazılabilir OLMALIDIR.
Cihaz uygulamalarında, kullanıcının erişebileceği çıkarılabilir depolama alanı (ör. Secure Digital kart) için donanım OLABİLİR. Alternatif olarak, cihaz uygulamaları dahili (çıkarılabilir olmayan) depolama alanını uygulamalar için paylaşılan depolama alanı olarak AYRIŞTIRABİLİR.
Kullanılan ortak depolama biçiminden bağımsız olarak, cihaz uygulamalarında ana makine bilgisayardan ortak depolama alanının içeriğine erişmek için USB yığın depolama (UMS) veya Medya Aktarımı Protokolü (MTP) gibi bir mekanizma sağlanmalıdır. Cihaz uygulamalarında USB yığın depolama kullanılabilir ancak Medya Aktarımı Protokolü kullanılmalıdır. Cihaz uygulaması Medya Aktarımı Protokolü'nü destekliyorsa:
- Cihaz uygulaması, referans Android MTP ana makinesiyle (Android Dosya Aktarımı) [Kaynaklar, 57] uyumlu OLMALIDIR.
- Cihaz uygulaması,
0x00
USB cihaz sınıfını bildirmelidir. - Cihaz uygulaması, "MTP" USB arayüzü adını bildirmelidir.
Cihaz uygulamasında USB bağlantı noktası yoksa ana bilgisayara, ağ dosya sistemi gibi başka bir yöntemle ortak depolama alanının içeriğine erişim sağlaması GEREKİR.
İki yaygın örneği ele almak faydalı olacaktır. Bir cihaz uygulaması, ortak depolama alanı şartını karşılamak için SD kart yuvası içeriyorsa kullanıcılara satılan cihaza 1 GB veya daha büyük boyutlu FAT biçimli bir SD kart DAHİL EDİLMELİ ve varsayılan olarak monte EDİLMELİDİR.
Alternatif olarak, bir cihaz uygulaması bu koşulu karşılamak için dahili sabit depolama alanı kullanıyorsa bu depolama alanı 1 GB veya daha büyük OLMALI ve /sdcard
'e bağlı OLMALIDIR (veya başka bir yere bağlıysa /sdcard
fiziksel konuma yönelik sembolik bir bağlantı OLMALIDIR).
Birden fazla paylaşılan depolama yolu içeren cihaz uygulamaları (ör. hem SD kart yuvası hem de paylaşılan dahili depolama alanı), medya tarayıcısı ve ContentProvider gibi temel uygulamaları, her iki konuma yerleştirilen dosyaları şeffaf bir şekilde desteklemek için DEĞİŞTİRMELİDİR.
7.7. USB
Cihaz uygulamaları USB istemci bağlantı noktası ve USB ana makine bağlantı noktası İÇERMELİDİR.
Bir cihaz uygulaması USB istemci bağlantı noktası içeriyorsa:
- Bağlantı noktası, standart USB-A bağlantı noktası olan bir USB ana bilgisayara bağlanabilmelidir.
- Bağlantı noktası, cihaz tarafında mikro USB form faktörünü KULLANMALIDIR. Android 4.2 çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için Android 4.2'de bu koşulları karşılamaları önemle tavsiye edilir.
- Bağlantı noktası, kenarların ortasına yerleştirilmelidir. Cihaz uygulamalarında, cihazın alt kısmında (doğal yönü) bağlantı noktası yerleştirilmeli veya tüm uygulamalarda (ana ekran dahil) yazılım ekranı döndürülmesi etkinleştirilmelidir. Böylece, cihaz alt tarafa bakacak şekilde yönlendirildiğinde ekran doğru şekilde çizilir. Android 4.2 çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için Android 4.2'deki bu gereksinimleri karşılamaları önemle tavsiye edilir.
- Cihazın başka bağlantı noktaları varsa (ör. USB olmayan bir şarj bağlantı noktası) bu bağlantı noktası, mikro USB bağlantı noktasıyla aynı kenarda OLMALIDIR.
- Cihaza bağlı bir ana makinenin, USB yığın depolama veya Medya Aktarımı Protokolü'nü kullanarak paylaşılan depolama biriminin içeriğine erişmesine izin VERMELİDİR.
- Android Open Accessory API'yi ve spesifikasyonunu Android SDK dokümanlarında belirtildiği şekilde UYGULAMALI ve
android.hardware.usb.accessory
donanım özelliği için destek beyan ETMELİYOR [Kaynaklar, 52] - USB ses sınıfını Android SDK dokümanlarında belirtildiği şekilde UYGULAMALIDIR [Kaynaklar, 66]
- USB pil şarjı spesifikasyonu için destek UYGULANMALIDIR [Kaynaklar, 64] Android 4.2 çalıştıran mevcut ve yeni cihazların, gelecekteki platform sürümlerine yükseltebilmeleri için Android 4.2'de bu şartları karşılamaları önemle tavsiye edilir
Bir cihaz uygulaması USB ana makine bağlantı noktası içeriyorsa:
- Standart olmayan bir bağlantı noktası form faktörü KULLANILABİLİR ancak bu durumda bağlantı noktasını standart USB-A'ya uyarlayan bir kablo veya kablolar İÇERİR
- Android USB ana makine API'sini Android SDK'da belirtildiği şekilde UYGULAMALI ve donanım özelliği için destek beyan ETMELİDİR
android.hardware.usb.host
[Kaynaklar, 53]
Cihaz uygulamalarında Android Debug Bridge uygulanmalıdır. Bir cihaz uygulamasında USB istemci bağlantı noktası atlanmışsa Android hata ayıklama köprüsünü yerel alan ağı (ör. Ethernet veya 802.11) üzerinden UYGULAMASI GEREKİR.
8. Performans Uyumluluğu
Cihaz uygulamaları, aşağıdaki tabloda tanımlanan Android 4.2 uyumlu bir cihazın temel performans metriklerini karşılamalıdır:
Metrik | Performans Eşiği | Yorumlar |
Uygulama Başlatma Süresi | Aşağıdaki uygulamalar belirtilen süre içinde başlatılmalıdır.
|
Başlatma süresi, Linux sürecini başlatmak, Android paketini Dalvik sanal makinesine yüklemek ve onCreate'i çağırmak için gereken süre dahil olmak üzere, uygulamanın varsayılan etkinliğini yüklemenin tamamlanması için gereken toplam süre olarak ölçülür. |
Eşzamanlı Başvurular | Birden fazla uygulama başlatıldığında, zaten çalışan bir uygulamayı yeniden başlatmak, ilk başlatma süresinden daha kısa sürmelidir. |
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamalarında, Android geliştirici belgelerindeki API'ler [Kaynaklar, 54] bölümündeki Güvenlik ve İzinler referans belgesinde tanımlanan Android platform güvenlik modeliyle tutarlı bir güvenlik modeli uygulanmalıdır. Cihaz uygulamaları, üçüncü taraflardan/yetkililerden ek izinler/sertifikalar gerektirmeden kendi kendine imzalanan uygulamaların yüklenmesini DESTEKLEMELİDİR. Daha açık belirtmek gerekirse, uyumlu cihazlar aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını DESTEKLEMELİDİR.
9.1. İzinler
Cihaz uygulamaları, Android geliştirici dokümanlarında [Kaynaklar, 54] tanımlandığı şekilde Android izin modelini DESTEKLEMELİDİR. Daha açık belirtmek gerekirse, uygulamalarda SDK dokümanlarında açıklandığı şekilde tanımlanan her izin ZORUNLU KILINACAK. Hiçbir izin atlanmamalı, değiştirilmemeli veya yok sayılmamalıdır. Yeni izin kimliği dizelerinin android.* ad alanında olmaması koşuluyla, uygulamalar ek izinler EKLEYEBİLİYOR.
9.2. UID ve İşlem İzolasyon
Cihaz uygulamalarında, her uygulamanın benzersiz bir Unix tarzı UID olarak ve ayrı bir işlemde çalıştığı Android uygulama korumalı alanı modeli desteklenmelidir. Cihaz uygulamalarında, Güvenlik ve İzinler referansında [Kaynaklar, 54] tanımlandığı şekilde uygulamaların düzgün şekilde imzalanmış ve oluşturulmuş olması koşuluyla, aynı Linux kullanıcı kimliğiyle birden fazla uygulamanın çalıştırılması desteklenmelidir.
9.3. Dosya sistemi izinleri
Cihaz uygulamaları, Güvenlik ve İzinler referansında [Kaynaklar, 54] tanımlandığı şekilde Android dosya erişim izinleri modelini DESTEKLEMELİDİR.
9.4. Alternatif Yürütme Ortamları
Cihaz uygulamaları, Dalvik sanal makinesi veya yerel koddan başka bir yazılım ya da teknoloji kullanarak uygulamaları yürüten çalışma ortamı içerEBİLİR. Ancak bu tür alternatif yürütme ortamları, bu bölümde açıklandığı gibi Android güvenlik modelini veya yüklü Android uygulamalarının güvenliğini ÖNEMLİ ÖLÇÜDE ETKİLEMEmelidir.
Alternatif çalışma ortamları Android uygulamaları olmalı ve Bölüm 9'da başka bir yerde açıklandığı gibi standart Android güvenlik modeline uymalıdır.
Alternatif çalışma zamanlarına, çalışma zamanının AndroidManifest.xml dosyasında <uses-permission>
mekanizması aracılığıyla istenmeyen izinlerle korunan kaynaklara erişim İÇİN VERİLMEMELİDİR.
Alternatif çalışma zamanları, uygulamaların sistem uygulamalarıyla sınırlı Android izinleriyle korunan özellikleri kullanmasına İZİN VERMEMELİDİR.
Alternatif çalışma zamanları Android korumalı alan modeline UYGUN OLMALIDIR. Özellikle:
- Alternatif çalışma ortamları, uygulamaları PackageManager aracılığıyla ayrı Android korumalı alanlarına (ör. Linux kullanıcı kimlikleri) yüklemelidir.
- Alternatif çalışma ortamları, alternatif çalışma ortamını kullanan tüm uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlayabilir
- Alternatif çalışma ortamları ve alternatif çalışma ortamı kullanan yüklü uygulamalar, cihazda yüklü diğer uygulamaların korumalı alanını, paylaşılan kullanıcı kimliği ve imzalama sertifikası gibi standart Android mekanizmaları aracılığıyla kullanmak dışında TEKRAR KULLANMAMALIDIR.
- Alternatif çalışma ortamları, diğer Android uygulamalarına karşılık gelen korumalı alanlarla başlatılmamalı, bu alanlara erişim izni vermemeli veya bu alanlara erişim izni almamalıdır.
Alternatif çalışma zamanları, süper kullanıcının (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarıyla başlatılmamalı, bu ayrıcalıklara sahip olmamalı ya da diğer uygulamalara bu ayrıcalıkları vermemelidir.
Alternatif çalışma zamanlarının .apk dosyaları bir cihaz uygulamasının sistem resmine dahil EDİLEBİLİR ancak cihaz uygulamasına dahil edilen diğer uygulamaları imzalamak için kullanılan anahtardan farklı bir anahtarla İMZALANACAK.
Alternatif çalışma zamanları, uygulamaları yüklerken uygulama tarafından kullanılan Android izinleri için kullanıcı izni ALMAK ZORUNDADIR. Yani, bir uygulamanın, ilgili Android izninin bulunduğu bir cihaz kaynağını (ör. kamera, GPS vb.) kullanması gerekiyorsa alternatif çalışma zamanı, kullanıcıyı uygulamanın bu kaynağa erişebileceği konusunda BİLGİLENDİRMELİDİR. Çalışma zamanı ortamı, uygulama özelliklerini bu şekilde kaydetmiyorsa çalışma zamanı ortamı, bu çalışma zamanını kullanan herhangi bir uygulamayı yüklerken çalışma zamanının sahip olduğu tüm izinleri LİSTELEMELİDİR.
9.5. Çok Kullanıcılı Destek
Android 4.2, birden fazla kullanıcıyı destekler ve tam kullanıcı izolasyonu için destek sağlar [Kaynaklar, 70].
Cihaz uygulamaları, çok kullanıcılı destek ile ilgili şu koşulları karşılamalıdır[Kaynaklar, 71]:
- Birden fazla kullanıcısı olan cihazlarda telefon API'lerinin davranışı şu anda tanımlanmadığından, android.hardware.telephony'yi açıklayan cihaz uygulamalarında çok kullanıcılı desteği etkinleştirmemelidir.
- Cihaz uygulamaları, her kullanıcı için API'lerdeki Güvenlik ve İzinler referans belgesinde [Kaynaklar, 54] tanımlandığı şekilde Android platform güvenlik modeliyle tutarlı bir güvenlik modeli UYGULAMALIDIR.
Android cihazdaki her kullanıcı örneğinin ayrı ve izole harici depolama alanı dizinleri OLMALIDIR. Cihaz uygulamaları, birden fazla kullanıcının verilerini aynı birimde veya dosya sisteminde DEPOLAYABİLİR. Ancak cihaz uygulaması, belirli bir kullanıcıya ait olan ve kullanıcı adına çalışan uygulamaların başka bir kullanıcıya ait verileri listelemediğinden, okumadığından veya bu verilere yazmadığından EMİN OLMALIDIR. SD kart yuvaları gibi çıkarılabilir medyaların, bir kullanıcının ana bilgisayar kullanarak başka bir kullanıcının verilerine erişmesine izin verebileceğini unutmayın. Bu nedenle, harici depolama API'leri için çıkarılabilir medya kullanan cihaz uygulamalarında, çok kullanıcılı mod etkinleştirildiğinde SD kartın içeriği yalnızca sisteme erişilebilen çıkarılabilir olmayan medyada depolanan bir anahtar kullanılarak ŞİFRELENMELİDİR. Bu durumda, ana bilgisayar PC'leri medya dosyalarını okuyamayacağından, ana bilgisayar PC'lerine mevcut kullanıcının verilerine erişim sağlamak için cihaz uygulamalarının MTP'ye veya benzer bir sisteme geçmesi gerekir. Buna göre, cihaz uygulamaları birincil harici depolama alanı için çıkarılabilir medya [Kaynaklar, 72] kullanıyorsa çok kullanıcılı özelliği etkinleştirebilir ancak etkinleştirmemelidir. Yukarı yönlü Android açık kaynak projesi, uygulama harici depolama API'leri için dahili cihaz depolama alanını kullanan bir uygulama içerir. Cihaz uygulamaları bu yapılandırma ve yazılım uygulamasını KULLANMALIDIR. Birden fazla harici depolama yolu içeren cihaz uygulamaları, Android uygulamalarının ikincil harici depolamaya yazmasına İZİN VERMEMELİDİR.
9.6. Premium SMS Uyarısı
Android 4.2, kullanıcıları giden premium SMS mesajları konusunda uyarma desteği içerir. Premium SMS mesajları, operatöre kayıtlı bir hizmete gönderilen ve kullanıcıdan ücret alınabilecek kısa mesajlardır.
android.hardware.telephony
desteğini beyan eden cihaz uygulamaları, cihazdaki /data/misc/sms/codes.xml
dosyasında tanımlanan normal ifadeyle tanımlanan numaralara SMS mesajı göndermeden önce kullanıcıları uyarmalıdır.
Yukarı yönlü Android açık kaynak projesi, bu koşulu karşılayan bir uygulama sağlar.
10. Yazılım Uyumluluğu Testi
Cihaz uygulamaları bu bölümde açıklanan tüm testleri ZORUNLU ŞEKİLDE geçmelidir.
Ancak hiçbir yazılım test paketinin her şeyi kapsamadığını unutmayın. Bu nedenle, cihaz uygulayıcılarının Android Açık Kaynak Projesi'nde bulunan Android 4.2'nin referans ve tercih edilen uygulamasında mümkün olduğunca az değişiklik yapmaları önemle tavsiye edilir. Bu, yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara neden olan hataların eklenme riskini en aza indirir.
10.1. Compatibility Test Suite
Cihaz uygulamalarının, cihazdaki nihai gönderim yazılımını kullanarak Android Açık Kaynak Projesi'nden edinilebilen Android Uyumluluk Test Paketi'ni (CTS) [Kaynaklar, 2] GEÇMESİ GEREKİR. Ayrıca cihaz uygulayıcıları, Android Açık Kaynak ağacındaki referans uygulamayı mümkün olduğunca kullanmalı ve CTS'de belirsizlik olduğunda ve referans kaynak kodunun bölümlerinin yeniden uygulandığı durumlarda uyumluluğu sağlamalıdır.
CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Her yazılım gibi CTS de hata içerebilir. CTS, bu Uyumluluk Tanımı'ndan bağımsız olarak sürümlendirilir ve Android 4.2 için CTS'nin birden fazla düzeltmesi yayınlanabilir. Cihaz uygulamaları, cihaz yazılımı tamamlandığı sırada mevcut olan en son CTS sürümünü ZORUNLU KILINCA geçer.
10.2. CTS Doğrulayıcı
Cihaz uygulamaları, CTS Doğrulayıcı'da geçerli tüm durumları doğru şekilde yürütmelidir. Uyumluluk Test Paketi'ne dahil olan CTS Doğrulayıcı, kamera ve sensörlerin düzgün çalışması gibi otomatik bir sistem tarafından test edilemeyecek işlevleri test etmek için bir operatör tarafından çalıştırılmak üzere tasarlanmıştır.
CTS Doğrulayıcı, isteğe bağlı olan bazı donanımlar da dahil olmak üzere birçok donanım türü için testler içerir. Cihaz uygulamaları, sahip oldukları donanımla ilgili tüm testleri GEÇMELİDİR. Örneğin, bir cihazda ivmeölçer varsa CTS Doğrulayıcı'da İvmeölçer testini doğru şekilde yürütmelidir. Bu Uyumluluk Tanımı Belgesi'nde isteğe bağlı olarak belirtilen özelliklerle ilgili test durumları atlanabilir veya çıkarılabilir.
Her cihaz ve her derleme, yukarıda belirtildiği gibi CTS Doğrulayıcı'yı doğru şekilde çalıştırmalıdır. Ancak birçok derleme birbirine çok benzediğinden, cihaz uygulayıcılarının yalnızca önemsiz farklılıklar gösteren derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Daha açık belirtmek gerekirse, CTS Doğrulayıcı'yı yalnızca dahil edilen yerel ayarlar, marka vb. açısından geçen bir uygulamadan farklı olan cihaz uygulamaları CTS Doğrulayıcı testini EKSLEYEBİLİR.
10.3. Referans Uygulamaları
Cihaz uygulayıcıları, aşağıdaki açık kaynak uygulamaları kullanarak uygulama uyumluluğunu TEST ETMELİDİR:
- "Android için Uygulamalar" uygulamaları [Kaynaklar, 55]
- Replica Island (Android Market'te mevcuttur)
Uygulamanın uyumlu olarak kabul edilebilmesi için yukarıdaki her uygulamanın uygulamada başlatılması ve doğru şekilde çalışması GEREKİR.
11. Güncellenebilir Yazılımlar
Cihaz uygulamalarında, sistem yazılımının tamamını değiştirecek bir mekanizma BULUNMASI GEREKİR. Mekanizmanın "canlı" yükseltmeler yapması gerekmez. Yani cihazın yeniden başlatılması GEREKEBİLİR.
Cihazın önceden yüklenmiş yazılımının tamamını değiştirebildiği sürece herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri bu koşulu karşılar:
- Yeniden başlatma yoluyla çevrimdışı güncelleme ile kablosuz (OTA) indirmeler
- Ana makine PC'den USB üzerinden "bağlantılı" güncellemeler
- Yeniden başlatma ve çıkarılabilir depolama alanındaki bir dosyadan güncelleme yoluyla "Çevrimdışı" güncellemeler
Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri desteklemelidir. Yani güncelleme mekanizması, uygulama gizli verilerini ve uygulama paylaşılan verilerini muhafaza ETMELIDİR. Yukarı akıştaki Android yazılımının bu koşulu karşılayan bir güncelleme mekanizması içerdiğini unutmayın.
Bir cihaz uygulamasında, cihaz kullanıma sunulduktan sonra ancak Android Uyumluluk Ekibi ile yapılan danışma sonucunda belirlenen makul ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa cihaz uygulayıcısı, hatayı az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesi aracılığıyla DÜZELTMEKTE ZORUNLUDUR.
12. Bize Ulaşın
Açıklamalar almak ve dokümanda yer almadığını düşündüğünüz sorunları bildirmek için compatibility@android.com adresinden doküman yazarlarıyla iletişime geçebilirsiniz.
Ek A - Bluetooth Test Prosedürü
Uyumluluk Testi Paketi, Android RFCOMM Bluetooth API'nin temel işlevlerini kapsayan test örneklerini içerir. Ancak Bluetooth, cihazlar arasındaki bir iletişim protokolü olduğundan tek bir cihazda çalışan birim testleriyle tam olarak test edilemez. Bu nedenle, cihaz uygulamaları aşağıda açıklanan manuel olarak çalıştırılan Bluetooth test prosedürünü de ZORUNLU KILINACAK.
Test prosedürü, Android açık kaynak proje ağacında bulunan BluetoothChat örnek uygulamasına dayanır. Bu işlem için iki cihaz gerekir:
- Test edilecek yazılım derlemesini çalıştıran bir cihaz uygulaması
- Uyumlu olduğu bilinen ve test edilen cihaz uygulamasının modeliyle aynı olan ayrı bir cihaz uygulaması (yani "iyi bilinen" bir cihaz uygulaması)
Aşağıdaki test prosedüründe bu cihazlar sırasıyla "aday" ve "iyi bilinen" cihazlar olarak adlandırılır.
Yükleme ve Kurulum
- Android kaynak kodu ağacından "make samples" aracılığıyla BluetoothChat.apk oluşturma
- BluetoothChat.apk dosyasını iyi durumdaki cihaza yükleyin.
- BluetoothChat.apk dosyasını aday cihaza yükleyin
Uygulamalara göre Bluetooth kontrolünü test etme
- Bluetooth devre dışıyken BluetoothChat'i aday cihazda başlatın
- Aday cihazın Bluetooth'u açıp açmadığını veya kullanıcıdan Bluetooth'u açmasını isteyen bir iletişim kutusu gösterip göstermediğini doğrulayın
Eşlemeyi ve iletişimi test etme
- Her iki cihazda da Bluetooth Chat uygulamasını başlatın
- BluetoothChat'ten (Menüyü kullanarak) iyi bilinen cihazı bulunabilir hale getirme
- Aday cihazda, BluetoothChat'ten (Menüyü kullanarak) Bluetooth cihazlarını tarayın ve iyi bilinen cihazla eşleyin.
- Her cihazdan 10 veya daha fazla mesaj gönderin ve diğer cihazın bunları doğru şekilde aldığını doğrulayın
- Ana Sayfa'ya basarak her iki cihazda da BluetoothChat uygulamasını kapatın.
- Cihaz Ayarları uygulamasını kullanarak her cihazın eşlemesini kaldırın.
Eşlemeyi ve iletişimi ters yönde test etme
- Her iki cihazda da Bluetooth Chat uygulamasını başlatın.
- Aday cihazı BluetoothChat'ten (Menü'yü kullanarak) bulunabilir hale getirin.
- Çalıştığı bilinen cihazda, BluetoothChat'ten (Menüyü kullanarak) Bluetooth cihazlarını tarayın ve aday cihazla eşleyin.
- Her cihazdan 10 mesaj gönderin ve diğer cihazın bunları doğru şekilde aldığını doğrulayın.
- Başlatıcı'ya gitmek için Geri düğmesine art arda basarak her iki cihazda da Bluetooth Chat uygulamasını kapatın.
Testi yeniden başlatma
- Bluetooth Chat uygulamasını her iki cihazda da yeniden başlatın.
- Her cihazdan 10 veya daha fazla mesaj gönderin ve diğer cihazın bunları doğru şekilde aldığını doğrulayın.
Not: Yukarıdaki testlerde, bir test bölümünün Ana Sayfa'yı kullanarak sonlandırıldığı bazı durumlar ve Geri'yi kullanarak sonlandırıldığı bazı durumlar vardır. Bu testler gereksiz değildir ve isteğe bağlı değildir: Amaç, Bluetooth API'nin ve yığınının hem etkinlikler açıkça sonlandırılırken (kullanıcı Geri tuşuna basarak finish() çağrısını yaptığında) hem de dolaylı olarak arka plana gönderilirken (kullanıcı Ana Sayfa tuşuna basarak) düzgün çalıştığını doğrulamaktır. Her test dizisi açıklandığı şekilde YAPILMALIDIR.