Android 4.1 Uyumluluk Tanımı

Android 4.1 Uyumluluk Tanımlaması
Düzeltme 3
Son güncelleme: 24 Haziran 2013
Telif Hakkı © 2012, Google Inc. Tüm hakklar saklıdır.
compatibility@android.com
İçindekiler
1. Giriş
2. Kaynaklar
3. Yazılım
3.1. Yönetilen API Uyumluluğu
3.2. Yumuşak API Uyumluluğu
3.2.1. İzinler
3.2.2. Build Parameters
3.2.3. Intent Uyumluluğu
3.2.3.1. Temel Uygulama Amaç3.2.3.2.
 Intent Overrides
3.2.3.3. Intent Ad Alanları
3.2.3.4. Anonsun Amacı
3.3. Doğal API Uyumluluğu
3.3.1 Uygulama İkili Arayüzleri
3.4. Web Uyumluluğu
3.4.1. WebView Uyumluluğu
3.4.2. Tarayıcı Uyumluluğu
3.5. API Davranış Uyumluluğu
3.6. API Ad Alanları
3.7. Sanal Makine Uyumluluğu
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.1. Widget'lar
3.8.2. Bildirimler
3.8.3. Arama
3.8.4. Toast'lar
3.8.5. Temalar
3.8.6. Live Wal papers
3.8.7. Son Uygulama
3
.8.8. Giriş Yönetimi Ayarları
3.8.9. Kilit Ekranı Uzaktan Kumanda
3.9 Device Administration
3.10 Accessibility
3.11 Text-to-Speech
4. Application Packaging Uyumluluğu
5. Multimedya Uyumluluğu
5.1. Medya Codec'leri
5.2. Video Kodlama
5.3. Ses Kaydı
5.4. Ses Gecikmesi
5.5. Ağ Protokolleri
6. Geliştirici Aracı Uyumluluğu
7. Hardware Compatibility
7.1. Ekran ve Grafikler
7.1.1. Ekran Yapılandırması
7.1.2. Görüntülü Reklam Ağı Metrikleri
7.1.3. Ekran Yönü
7.1.4. 2D ve 3D Grafik Hızlandırma
7.1.5. Eski Uygulama Uyumluluk Modu
7.1.6. Ekran Türleri
7.1.7. Ekran Teknolojisi
7.2. Cihazlar
bölümündeki 7.2.1. Klavye
7.2.2. Dokunmatik olmayan gezinme
7.2.3. Gezinme tuşları
7.2.4. Dokunmatik ekran girişi
7.2.5. Sahte dokunma girişi
7.2.6. Mikrofon
7.3. Sensörler
7.3.1. İvme Ölçer

7.3.1. İvmeölçer
7.3.2. Manyetometre
7.3.3. GPS
7.3.4. Jiroskop
7.3.5. Barometer
7.3.6. Termometre
7.3.7. Fotometre
7.3.8. Yakınlık Sensörü
7.4. Veri Bağlantısı
7.4.1. Telefon Hizmeti
7.4.2. IEEE 802.11 (WiFi)
7.4.2.1. WiFi Direct
7.4.3. Bluetooth
7.4.4. Yakındaki Cihazlarla İletişim
7.4.5. Minimum Ağ İşlevi
7.5. Cameras
7.5.1. ArkaYüzlü Kamera
7.5.2. Ön Kamera
7.5.3. Kamera API Davranışları
7.5.4. Kamera Yönü
7.6. Bellek ve Depolama
7.6.1. Minimum Bellek ve Depolama
7.6.2. Uygulama Paylaşılan Depolama Alanı
7.7. USB
8. Performans Uyumluluğu
9. Güvenlik Modeli Uyumluluğu
9.1. İzinler
9.2. UID ve İşlem Ayrıştırması
9.3. Dosya Sistemi İzinleri
9.4. Alternatif Yürütme Ortamları
10. Yazılım Uyumluluğu Testi
10.1. Compatibility Test Suite
10.2. CTS Doğrulayıcı
10.3. Referans Uygulamaları
11. Güncellenebilir Yazılımlar
12. Bize Ulaşın
Ek A - Bluetooth Test Prosedürü

1. Giriş
Bu belgede, cihazların Android 4.1 ile
uyumlu olabilmesi için karşılanması gereken şartlar belirtilmektedir.
 "Must", "must not", "required", "shall ", "shall not", "should", "should not",
"recommended", "may" ve "optional" kelimelerinin kullanımı, RFC2119
[Kaynaklar, 1]. bölümünde tanımlanan IETF standardına göredir.
Bu dokümanda "cihaz uygulayıcısı" veya "uygulayıcı" olarak geçen terim, Android 4.1 çalıştıran bir donanım/yazılım çözümü geliştiren bir kişi veya kuruluştur.
 "Cihaz
uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Cihaz uygulamalarının Android 4.1 ile uyumlu kabul edilebilmesi için
bu Uyumluluk Tanımı'nda sunulan şartlara (referansla dahil edilen tüm belgeler dahil)
uygun olması GEREKİR.
Bu tanım veya Bölüm 10'da açıklanan yazılım testleri hakkında bilgi verilmediğinde,
belirsizlik olduğunda veya eksik bilgi verildiğinde, mevcut uygulamalarlauyumluluğu sağlamak cihaz uygulayıcının sorumluluğundadır.

Bu nedenle, Android Açık Kaynak Projesi [Kaynaklar, 3] hem Android'in 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ı akış" kaynak koduna dayandırmaları
önerilir. Bazı
bileşenler varsayımsal olarak alternatif uygulamalarla değiştirilebilir olsa da bu
uygulamanın önerilmesinin başlıca nedeni, yazılım testlerinden geçmenin 
önemli olarak daha zor olmasıdır. 
Uyumluluk Testi
 Süiti dahil olmak üzere standart Android uygulamasıyla tam davranışsal
uyumluluk sağlamak
uygulamacının sorumluluğundadır. Son olarak, belirli bileşen değişimlerinin ve
değişikliklerin bu dokümanda açıkça yasaklandığını unutmayın.
2. Kaynaklar
1.  IETF RFC2119 Şart Düzeyleri: http://www.ietf.org/rfc/rfc2119.txt
2.  Android Uyumluluk Programı'na Genel Bakış:
http://source.android.com/compatibility/index.html
3.  Android Açık Kaynak Projesi: http://source.android.com/
4.  API tanımları ve dokümanları:
http://developer.android.com/reference/packages.html
5.  Android izinleri referansı:
http://developer.android.com/reference/android/Manifest.permission.html
6.  android.os.Build referansı:
http://developer.android.com/reference/android/os/Build.html
7.  Android 4.1 al owed version strings:
http://source.android.com/compatibility/4.1/versions.html
8.  Renderscript:
http://developer.android.com/guide/topics/graphics/renderscript.html
9.  Donanım Hızlandırma:
http://developer.android.com/guide/topics/graphics/hardware-accel.html
10.  android.webkit.WebView sınıfı:
http://developer.android.com/reference/android/webkit/WebView.html
11.  HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/
12.  HTML5 çevrimdışı özellikleri: http://dev.w3.org/html5/spec/Overview.html#offline
13.  HTML5 video etiketi: http://dev.w3.org/html5/spec/Overview.html#video
14.  HTML5/W3C coğrafi konum API'si: http://www.w3.org/TR/geolocation-API/
15.  HTML5/W3C web veritabanı API: http://www.w3.org/TR/webdatabase/
16.  HTML5/W3C IndexedDB API: http://www.w3.org/TR/IndexedDB/
17.  Dalvik Sanal Makinesi özellikleri: Android kaynak kodunda, 
dalvik/docs
bölümündedir.  Uygulama Widget'ları:
http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
19.  Bildirimler:
http://developer.android.com/guide/topics/ui/notifiers/notifications.html
20.  Uygulama Kaynakları: http://code.google.com/android/reference/available-
resources.html
21.  Durum çubuğu simgesi stil kılavuzu:
http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
22.  Arama Yöneticisi:
http://developer.android.com/reference/android/app/SearchManager.html
23.  Toast'lar: http://developer.android.com/reference/android/widget/Toast.html
24.  Temalar: http://developer.android.com/guide/topics/ui/themes.html

25.  R.style sınıfı: http://developer.android.com/reference/android/R.style.html
26.  Canlı duvar kağıtları: http://developer.android.com/resources/articles/live-
wal papers.html
27.  Android Cihaz Yönetimi:
http://developer.android.com/guide/topics/admin/device-admin.html
28.  android.app.admin.DevicePolicyManager sınıfı:
http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
29.  Android Erişilebilirlik Hizmeti API'leri:
http://developer.android.com/reference/android/accessibilityservice/package-
summary.html
30.  Android Erişilebilirlik API'leri:
http://developer.android.com/reference/android/view/accessibility/package-
summary.html
31.  Eyes Free projesi: http://code.google.com/p/eyes-free
32.  Metin Seslendirme API'leri:
http://developer.android.com/reference/android/speech/tts/package-
summary.html
33.  Referans aracı dokümanları (adb, aapt, ddms için):
http://developer.android.com/guide/developing/tools/index.html
34.  Android apk dosyası açıklaması:
http://developer.android.com/guide/topics/fundamentals.html
35.  Manifest dosyaları: http://developer.android.com/guide/topics/manifest/manifest-
intro.html
36.  Monkey test aracı:
https://developer.android.com/studio/test/other-testing-tools/monkey
37.  Android android.content.pm.PackageManager sınıfı ve Donanım
Özellikleri
Listesi:
http://developer.android.com/reference/android/content/pm/PackageManager.html
38.  Birden fazla ekranı destekleme:
http://developer.android.com/guide/practices/screens_support.html
39.  android.util.DisplayMetrics:
http://developer.android.com/reference/android/util/DisplayMetrics.html
40.  android.content.res.Configuration:
http://developer.android.com/reference/android/content/res/Configuration.html
41.  android.hardware.SensorEvent:
http://developer.android.com/reference/android/hardware/SensorEvent.html
42.  Bluetooth API:
http://developer.android.com/reference/android/bluetooth/package-summary.html
43.  NDEF Push Protokolü: http://source.android.com/compatibility/ndef-push-
protocol.pdf
44.  MIFARE MF1S503X: http://www.nxp.com/documents/data_sheet/MF1S503x.pdf
45.  MIFARE MF1S703X: http://www.nxp.com/documents/data_sheet/MF1S703x.pdf
46.  MIFARE MF0ICU1: http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf
47.  MIFARE MF0ICU2:
http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf
48.  MIFARE AN130511:
http://www.nxp.com/documents/application_note/AN130511.pdf
49.  MIFARE AN130411:
http://www.nxp.com/documents/application_note/AN130411.pdf
50.  Kamera yönü API'si:
http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)
51.  android.hardware.Camera:
http://developer.android.com/reference/android/hardware/Camera.html
52.  Android Open Accessories:
http://developer.android.com/guide/topics/usb/accessory.html
53.  USB Host API: http://developer.android.com/guide/topics/usb/host.html
54.  Android Güvenlik ve İzinler referansı:
http://developer.android.com/guide/topics/security/security.html
55.  Android için Uygulamalar: http://code.google.com/p/apps-for-android
56.  android.app.DownloadManager sınıfı:
http://developer.android.com/reference/android/app/DownloadManager.html
57.  Android Dosya Aktarımı: http://www.android.com/filetransfer
58.  Android Medya Formatları: http://developer.android.com/guide/appendix/media-
formats.html
59.  HTTP Canlı Aktarımı Draft Protokolü: http://tools.ietf.org/html/draft-pantos-http-
live-streaming-03
60.  NFC Bağlantı Devre Alma: http://www.nfc-
forum.org/specs/spec_list/#conn_handover
61.  NFC Kullanarak Bluetooth Güvenli Basit Eşleme: http://www.nfc-
forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf
62.  Wifi Çoklu Yayın API'si:
http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html

63.  İşlem Asistanı:
http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST
64.  USB Şarj Şartnamesi:
http://www.usb.org/developers/devclass_docs/USB_Battery_Charging_1.2.pdf
65.  Android Beam: http://developer.android.com/guide/topics/nfc/nfc.html
66.  Android USB Ses:
http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO
67.  Android NFC Paylaşım Ayarları:
http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS
68.  Kablosuz Direkt (Kablosuz P2P):
http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
69.  Medya Uzaktan Kumanda İstemcisi:
http://developer.android.com/reference/android/media/RemoteControlClient.html
70.  Motion Event API:
http://developer.android.com/reference/android/view/MotionEvent.html
71.  Dokunmatik Giriş Yapılandırması: http://source.android.com/tech/input/touch-
devices.html
Bu kaynakların çoğu doğrudan veya dolaylı olarak Android 4.1 SDK'sından türetilmiştir
ve bu SDK'nın dokümanlarında yer alan bilgilerle işlevsel olarak aynıdır. 
Bu Uyumluluk Tanımı veya Uyumluluk Testi Paketi'nin SDK dokümanlarıyla çeliştiği
tüm durumlarda, SDK dokümanları yetkili kabul edilir. Yukarıdaki
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ı için birincil araçtı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.1 SDK'sı
[Kaynaklar, 4] tarafından kullanıma sunulan tüm belgelenmiş API'lerin, belgelenmiş tüm davranışları dahil olmak üzere tam uygulamaları sağlanmalıdır.
Cihazuygulamalarında,
yönetilen API'ler atlanmamalı, API arayüzleri veya imzalar değiştirilmemeli, belgelenen davranıştan sapılmamalı veya bu
Uyumluluk Tanımı'nda özel olarak izin verildiği durumlar dışında hiçbir işlem içermemelidir.

Bu Uyumluluk Tanımı, Android'in API'leri içerdiği bazı donanım türlerinin cihaz uygulamalarında atlanmasına izin verir.
 Bu gibi durumlarda, API'ler
hâlâ mevcut olmalı ve makul bir şekilde davranmalıdır. Bu
senaryoyla ilgili özel şartlar için Bölüm 7'ye bakın.
3.2. Yumuşak API Uyumluluğu
Android, 3.1 numaralı bölümdeki yönetilen API'lere ek olarak, Intent'ler, izinler ve Android uygulamalarının derleme sırasında uygulanamayan benzer yönleri gibi
yalnızca çalışma zamanında çalışan önemli bir "yumuşak" API de 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 koşulların listelendiğini unutmayın.
3.2.2. Derleme Parametreleri
Android API'leri, mevcut cihazı tanımlamak için tasarlanmış bir dizi sabit değer içerir
[Resources, 6] android.os.Build sınıfında. Cihaz uygulamalarında tutarlı ve
anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının
UYMALARI GEREKEN
bu değerlerin biçimleriyle ilgili ek kısıtlamalar
yer almaktadır.
Parametre
Yorumlar
Şu anda çalışan Android sisteminin, kullanıcılar tarafından okunabilen biçimdeki sürümü. Bu alanda [Resources, 7] bölümünde tanımlanan
android.os.Build.VERSION.RELEASE
dize değerlerinden biri bulunmalıdır.
Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde).
android.os.Build.VERSION.SDK
Android 4.1 için bu alanın tam sayı değeri 16 OLMALIDIR.

Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde).
android.os.Build.VERSION.SDK_INT
Android 4.1 için bu alanın tam sayı değeri 16 OLMALIDIR.
Cihaz uygulayıcısı tarafından seçilen ve kullanıcı tarafından okunabilir biçimde, 
şu anda çalışan Android sisteminin belirli bir derlemesini belirten bir değer. Bu değer,
android.os.Build.VERSION.INCREMENTAL
kullanıcılarına sunulan farklı derlemeler için yeniden KULLANILMAMALISDIR. 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 belirli biçimiyle ilgili herhangi bir şart yoktur. Bununla birlikte, 
boş veya boş dize ("") olmaması GEREKIR.
Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı tanımlayan, 
insan tarafından okunabilir biçimdeki bir değer. Bu alanın olası bir kullanımı, cihazı besleyen kartın belirli bir revizyonunu belirtmektir
android.os.Build.BOARD
. Bu alanın değeri 7 bitlik ASCI olarak kodlanabilir ve
"^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
Cihazın üreticisi olan şirket, kuruluş, şahıs vb.
adına dair, cihaz uygulayıcısı tarafından seçilen ve kullanıcı tarafından okunabilir biçimdeki bir değer. Bu alanın olası bir kullanımı, OEM'i
android.os.Build.BRAND
ve/veya cihazı satan operatörü belirtmektir. Bu alanın değeri 7 bitlik ASCI olarak kodlanabilir ve
 "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3 Bölümü'ne bakın: 
android.os.Build.CPU_ABI
Uyumsuzluğu
Yerel kodun ikinci talimat setinin adı (CPU türü + ABI kuralı). 3.3 numaralı bölüme bakın: Yerel
android.os.Build.CPU_ABI2
API Uyumluluğu.
Cihazın cihaz uygulayıcısı tarafından seçilen ve gövdenin belirli yapılandırmasını veya revizyonunu tanımlayan
android.os.Build.DEVICE
(bazen "endüstriyel tasarım" olarak adlandırılır) değeri. Bu alanın değeri 7 bit
ASCI olarak kodlanabilir VE "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunaklı OLMALIDIR. Şu şablonu UYGUNLAŞTIRMALIDIR: 

$(MARKA)/$(ÜRÜN)/$(CİHAZ):$(SÜRÜM.YAYIM)/$(Kimlik)/$(SÜRÜM.ARTIŞ):$(TİP)/$(ETİKETLER)
Örneğin: 
android.os.Build.FINGERPRINT
acme/mydevice/generic:4.1/JRN53/3359:userdebug/test-keys
Parmak izi boşluk karakteri İÇERMEMELİDİR. Yukarıdaki şablona dahil edilen diğer alanlarda
boşluk karakterleri varsa
alt çizgi ("_") karakteri gibi başka bir karakterle değiştirilmelidir. Bu alanın değeri 7 bit ASCI olarak kodlanabilir OLMALIDIR.
Donanımın adı (çekirdek komut satırından veya /proc'ten). Makine tarafından okunabilir olmalıdır.
android.os.Build.HARDWARE
Bu alanın değeri 7 bitlik ASCI olarak kodlanabilir ve "^[a-
zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
Derlemenin oluşturulduğu ana makineyi benzersiz şekilde tanımlayan, kullanıcı tarafından okunabilir biçimde bir dize. Bu alanın belirli biçimiyle ilgili
android.os.Build.HOST
koşulu yoktur. Bununla birlikte, bu alan boş veya boş dize ("") OLMAMALIDIR.
Cihaz uygulayıcısı tarafından belirli bir sürüme atıfta bulunmak için seçilen, kullanıcı tarafından okunabilir biçimdeki tanımlayıcı. Bu
alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak
android.os.Build.ID
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 bitlik ASCI olarak kodlanabilir
ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
Ürünün Orijinal Ekipman Üreticisi'nin (OEM) ticari adı. 
android.os.Build.MANUFACTURER
bu alanın özel biçimi için herhangi bir şart yoktur. Bununla birlikte, bu alan boş veya boş dize ("") OLMAMALIDIR.
Cihaz uygulayıcısı tarafından seçilen ve cihazın son kullanıcı tarafından bilinen adını içeren bir değer.Bu
android.os.Build.MODEL
cihazın son kullanıcılara pazarlandığı ve satıldığı adla aynı olması gerekir. Bu alanın
özel biçimiyle ilgili herhangi bir şart yoktur. Bununla birlikte, alanın boş veya boş dize ("") OLMAMASI GEREKİR.
Cihaz uygulayıcısı tarafından seçilen, ürünün geliştirme adını veya kod adını içeren bir değer
android.os.Build.PRODUCT
(SKU). Kullanıcı tarafından okunabilir OLMALIDIR ancak son kullanıcıların görüntülemesi için tasarlanmayabilir. Bu
alanın değeri 7 bit ASCI olarak kodlanabilir VE "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
Mevcutsa donanım seri numarası. Bu alanın değeri 7 bit ASCI olarak kodlanabilir ve
android.os.Build.SERIAL
 "^([a-zA-Z0-9]{0,20})$" normal ifadesiyle eşleşmelidir.
Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayırt eden, virgülle ayrılmış bir etiket listesi.
android.os.Build.TAGS
Örneğin, "unsigned,debug". Bu alanın değeri 7 bitlik ASCI olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
android.os.Build.TIME
Derlemenin gerçekleştiği zaman damgasını temsil eden bir değer.

Cihaz uygulayıcısı tarafından seçilen ve derlemenin çalışma zamanı yapılandırmasını belirten bir değer. Bu alanda
, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri bulunmalıdır: "user", 
android.os.Build.TYPE
"userdebug" veya "eng". Bu alanın değeri 7 bit ASCI olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı veya kullanıcı kimliği.
 
android.os.Build.USER
bu alanın özel biçimi için herhangi bir koşul yoktur. Bununla birlikte, bu alan boş veya boş dize ("") OLMAMALIDIR.
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. "Uygulanır" ifadesi, cihaz uygulayıcının
eşleşen bir Intent filtresi belirten ve
her bir belirtilen Intent kalıbı için doğru davranışı bağlayan ve uygulayan bir Android Etkinliği veya Hizmeti sağlaması GEREKTİĞİ anlamına gelir.
3.2.3.1. Temel Uygulama Amaçlarıyla
Android yüksek akış projesi; kişiler,
takvim, fotoğraf galerisi, müzik çalar vb. gibi bir dizi temel uygulamayı tanımlar. Cihaz uygulayıcıları,
bu uygulamaları alternatif sürümlerle DEĞİŞTİREBİLİR.
Bununla birlikte, bu tür alternatif sürümler, yayın öncesi proje tarafından sağlanan aynı Intent kalıplarını İYİ UYGULAMA

 Örneğin, bir cihazda alternatif bir müzik çalar varsa
bu cihaz,şarkı seçmek için üçüncü taraf uygulamaları tarafından yayınlanan Intent desenini yine de dikkate almalıdır.
Aşağıdaki uygulamalar temel Android sistem uygulamaları olarak kabul edilir:
Masaüstü Saati
Tarayıcı
Takvim
Kişiler
Galeri
Küresel Arama
Başlatıcı
Müzik
Ayarlar
Temel Android sistem uygulamaları, "herkese açık" olarak kabul edilen çeşitli Etkinlik veya Hizmet bileşenlerini 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şaretlenmemiş her etkinlik veya hizmet için cihaz uygulamaları, temel Android sistem uygulamasıyla aynı intent filtresi kalıplarını uygulayan aynı türde bir bileşen İÇERMELİDİR.
Diğer bir deyişle, cihaz uygulamaları temel Android sistem uygulamalarının yerini ALABİ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 İptalleri
Android genişletilebilir bir platform olduğundan, cihaz uygulamaları 3.2.3.2 bölümünde atıfta bulunan her Intent
modelinin üçüncü taraf uygulamaları tarafından iptal edilmesine İZİN VERMELİDİR. 
Yukarı yönlü Android açık kaynak uygulaması bu işlemi varsayılan olarak sağlar; cihaz
uygulayıcıları, sistem uygulamalarının bu Intent kalıplarını kullanması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ü üstlenmesini engellememelidir.

 Bu yasak, kullanıcının aynı Intent kalıbını işleyen birden fazla uygulama arasından seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünü devre dışı bırakmayı özellikle içerir (ancak bunlarla sınırlı değildir).


Bununla birlikte, cihaz uygulamaları belirli URI
kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Bu, varsayılan etkinlik veri URI'si için daha spesifik bir filtre sağlıyorsa
gerçekleşebilir. Örneğin, veri URI'sini
"http://www.android.com" belirten bir intent filtresi, "http://" için tarayıcı filtresinden daha spesifiktir. Cihaz
uygulamaları, kullanıcıların intentler için varsayılan etkinliği değiştirmesi
amacıyla bir kullanıcı arayüzü SAĞLAMALIDIR.
3.2.3.3. Intent Namespace
Cihaz uygulamalarında, android.* veya com.android.* namespace'inde bir ACTION, CATEGORY veya başka bir anahtar dizesi kullanan
yeni Intent veya Broadcast Intent kalıplarını dikkate alan hiçbir Android bileşeni YER ALMAMALIDIR.
 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ı uygulayan Android bileşenleri DAHİL ETMEmelidir.
 Cihaz uygulayıcıları, Bölüm 3.2.3.1'de listelenen temel uygulamalar tarafından kullanılan Intent
kalıplarından hiçbirini değiştirmemeli veya genişletmemelidir. Cihaz uygulamalarında,
kendi kuruluşlarıyla açıkça ilişkili alan adlarını kullanan intent kalıpları YER ALABİLİR.

Bu yasak, Bölüm 3.6'da Java dil sınıfları için belirtilene benzer.

3.2.3.4. Intent'leri Yayınlama
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişikliklerle ilgili

bildirim almak için belirli Intent'leri yayınlamak üzere platformdan yararlanır. Android uyumlu cihazlar,
uygun sistem etkinliklerine yanıt olarak herkese açık yayın Intent'lerini YAYITLAMAK ZORUNDADIR
. Yayın intent'leri, SDK dokümanlarında açıklanmaktadır.
3.3. Yerel API Uyumluluğu
3.3.1 Uygulama İkili Arabirimleri
Dalvik'te çalışan yönetilen kod, uygulama
.apk dosyasında sağlanan yerel koda, uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak çağrılabilir.
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ı bir Android ABI'si için destek içeriyorsa:

























































































































































































































































 Bir cihaz uygulaması, mevcut bir önceden tanımlanmış ABI ile uyumlu değilse
HİÇBİR ABI İÇİN DESTEK RAPORLAMAMALIDIR .
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ına başvurmaları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'i
uygulamak için WebKit oluşturma motorunu kullanır. 
Web oluşturma sistemi için kapsamlı bir test paketi geliştirmek mümkün olmadığından, cihaz uygulayıcıları WebView uygulamasında
WebKit'in belirli yüksek akış derlemesini KULLANMAK ZORUNDURLAR. Özel:
Cihaz uygulamalarının android.webkit.WebView uygulamaları
Android 4.1
için
yukarı yönlü Android açık kaynak ağacındaki 534.30 WebKit derlemesini temel almalıdır. Bu derleme, WebView için belirli bir işlev ve güvenlik
düzeltmeleri içerir. Cihaz uygulayıcıları,
WebKit uygulamasına özelleştirmeler EKLEYEBİLİYOR; ancak bu tür özelleştirmeler, oluşturma davranışı da dahil olmak üzere
WebView'in davranışını DEĞİŞTİRMEMELİDİR.
WebView tarafından raporlanan kullanıcı aracısı dizesi BU biçimte OLMALIDIR:
Mozilla/5.0 (Linux; U; Android $(VERSION); $(LOCALE); $(MODEL)
Build/$(BUILD)) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.1
Mobile Safari/534.30
 $(VERSION) dizenin değeri,

 $(VERSION) dizenin değeri,
android.os.Build.VERSION.RELEASE
için ayarlanan değerle aynı OLMALIDIR
 $(LOCALE) dizenin değeri,
ülke kodu ve dil için ISO sözleşmelerine UYMALIDIR ve cihazın mevcut yapılandırılmış
yerel diline atıfta BULUNMALIDIR
 $(MODEL) dizenin değeri,
android.os.Build.MODEL
için ayarlanan değerle aynı OLMALIDIR
 $(BUILD) dizenin değeri,
android.os.Build.ID
için ayarlanan değerle aynı OLMALIDIR
Cihaz uygulamaları, kullanıcı aracısı dizelerinde Mobil ifadesini EKLEYEBİLİYOR
WebView bileşeni, mümkün olduğunca çok sayıda HTML5
[Resources, 11] desteği içermelidir. Minimum y, cihaz uygulamaları
WebView'de HTML5 ile ilişkili bu API'lerin her birini desteklemelidir:
uygulama önbelleği/çevrimdışı işlem [Kaynaklar, 12]
<video> etiketi [Kaynaklar, 13]
coğrafi konum [Resources, 14]
Ek olarak, cihaz uygulamaları
HTML5/W3C web depolama API'sini desteklemelidir
[Kaynaklar, 15] ve HTML5/W3C IndexedDB API'sini desteklemelidir
[Kaynaklar, 16].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 hâline gelmesinin beklendiğini unutmayın.
JavaScript API'leri gibi HTML5 API'leri, geliştirici tarafından normal Android API'leri aracılığıyla açıkça etkinleştirilmediği sürece
bir 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ı web tarama deneyimi 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. Bununla birlikte, 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önderEBİLİR.
Bağımsız tarayıcı uygulaması (yön akışı WebKit tarayıcı
uygulamasına veya üçüncü taraf bir değişime dayalı olsun)
HTML5 [Kaynaklar, 11] için mümkün olduğunca fazla destek İÇERMELİDİR. Minimum düzeyde cihaz uygulamalarında
HTML5 ile ilişkili bu API'lerin her biri desteklenmelidir:
uygulama önbelleği/çevrimdışı işlem [Kaynaklar, 12]
<video> etiketi [Kaynaklar, 13]
coğrafi konum [Kaynaklar, 14]
Ek olarak, cihaz uygulamalarında HTML5/W3C web depolama API'si
[Kaynaklar, 15] desteklenmeli veHTML5/W3C IndexedDB API'si [Kaynaklar,
16] desteklenmelidir. 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 hâline 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ı, 
yönetici 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 tür sistem bileşeninin (ör. Hizmet, Etkinlik, İçerik Sağlayıcı vb.) yaşam döngüsünü veya yaşam döngüsü anlamını DEĞİŞTİREMEZ
Cihazlar, standart bir iznin anlamını DEĞİŞTİREMEZ
Yukarıdaki liste kapsamlı değildir.

 Uyumluluk Test Paketi (CTS),
platformun önemli bölümlerini davranışsal uyumluluk açısından test eder ancak tümünü test etmez . Android
Açık
Kaynak Projesi ile davranışsal uyumluluğu sağlamak
, uygulayıcının sorumluluğundadır. Bu nedenle, cihaz uygulayıcıları, sistemin önemli kısımlarını yeniden uygulamak yerine
mümkün olduğunda Android Açık Kaynak Projesi üzerinden
sunulan kaynak kodunu KULLANMALIDIR.
3.6. API Ad Alanları
Android, Java

programlama dilinde tanımlanan paket ve sınıf ad alanı kurallarına uyar. Üçüncü taraf uygulamalarıyla uyumluluğu sağlamak için cihaz
uygulayıcıları, aşağıdaki
paket ad alanlarında yasaklanmış herhangi bir değişiklik YAPMAMALIDIR:
java.*
javax.*
sun.*
android.*
com.android.*
Yasaklanmış değişiklikler şunlardır:
Cihaz uygulamalarında,
Android platformundaki herkese açık API'lerde 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 değişiklik YAPILMAMALISDIR.
Cihaz uygulayıcıları, API'lerin temel uygulamasını değiştirebilir ancak
bu tür değişiklikler, herkese açık API'lerin belirtilen davranışını ve Java dili
imzasını etkilememelidir.
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 alanlar ya da yöntemler) eklememelidir.
 "Herkese açık olarak sunulan öğe", yayın öncesi Android kaynak kodunda kullanılan "@hide"
işaretçisiyle süslenmemiş herhangi bir yapıdır. Diğer bir deyişle, cihaz
uygulayıcıları, yukarıda belirtilen
adı bölgelerinde 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şiklikler geliştiricilere reklam olarak gösterilmemeli veya başka bir şekilde gösterilmemelidir.
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ışındaki ö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ığında paketlenmelidir.
Cihaz uygulayıcısı, yukarıdaki paket ad alanlarının birini iyileştirmeyi teklif ederse
(ör. mevcut bir API'ye yararlı yeni işlevler ekleyerek veya yeni bir API ekleyerek)
uygulayıcı, source.android.com adresini ziyaret edip
değişiklikler ve kod katkıda bulunma sürecine başlamalıdır
.
Yukarıdaki kısıtlamaların, Java programlama dilinde API'leri adlandırmayla ilgili standart kurallara karşılık geldiğini unutmayın. Bu bölümde, bu kuralların pekiştirilmesi ve bu uyumluluk tanımına dahil edilerek bağlayıcı hâle getirilmesi amaçlanmıştır.


3.7. Sanal Makine Uyumluluğu
Cihaz uygulamalarında tam Dalvik Yürütülebilir (DEX) bytecode
özelliği ve Dalvik Sanal Makine söz dizimi [Kaynaklar, 17] desteklenmelidir.
Cihaz uygulamalarında, Dalvik'in hafızayı üst akış Android platformuna uygun şekilde ve aşağıdaki tabloda belirtildiği şekilde ayarladığından emin olun.
 (Ekran boyutu ve ekran yoğunluğu tanımları için
Bölüm 7.1.1'e bakın.)
Aşağıda belirtilen bellek değerlerinin minimum değerler olarak kabul edildiğini ve cihazimplementasyonunun uygulama başına daha fazla bellek ayırabileceğini unutmayın.

Ekran Boyutu
Ekran Yoğunluğu
Uygulama Hafızası
smal  / normal / large
ldpi / mdpi
16MB
smal  / normal / large
tvdpi / hdpi
32MB
smal  / normal / large
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, bir bileşen türünü ve buna karşılık gelen API'yi ve yaşam döngüsünü tanımlar. Bu bileşen türü,

uygulamaların son kullanıcıya bir "AppWidget" göstermesine olanak tanır [Kaynaklar, 18].Android
Open
Source referans sürümünde, kullanıcı arayüzü kolaylıklarını içeren ve kullanıcının ana ekrana AppWidget eklemesine, görüntülemesine ve kaldırmasına olanak tanıyan bir başlatıcı uygulaması bulunur.

Cihaz uygulamalarında, referans başlatıcıya (ör.
ana ekran) alternatif bir seçenek YERLEŞTİRİLEBİLİR. Alternatif başlatıcılar, uygulama widget'ları için yerleşik destek içermeli
ve uygulama widget'larını doğrudan başlatıcıdan eklemek, yapılandırmak, görüntülemek ve kaldırmak için kullanıcı arayüzü olanakları sunmalıdır.
Alternatif başlatıcılar bu kullanıcı arayüzü öğelerini İSTİYORSA atlayabilir. 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 ZORUNLUDIR.



Cihaz uygulamalarının, standart
ızgara boyutunda 4x4 widget oluşturabilmesi GEREKİR. (Ayrıntılar için Android SDK
dokümanlarındaki Uygulama Widget'ı Tasarım Kuralları'na [Kaynaklar, 18] bakın.
3.8.2. Bildirimler
Android, geliştiricilerin cihazın donanım ve yazılım özelliklerini kullanarak kullanıcıları önemli etkinlikler hakkında bilgilendirmesine olanak tanıyan API'ler içerir
[Kaynaklar, 19].
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ında,
SDK dokümanlarında açıklandığı gibi
donanım özelliklerini kullanan bildirimler desteklenmeli
ve mümkün olduğunca cihaz uygulaması donanımıyla kullanılmalıdır.
Örneğin, bir cihaz uygulamasında titreşim varsa
titreşim API'leri doğru şekilde uygulanmalıdır. Bir cihaz uygulamasında donanım yoksa
ilgili API'ler işlemsiz olarak UYGULANABİLİR. Bu davranışın
7. Bölümde 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şturmalısınız.

Cihaz uygulayıcıları, bildirimler için referans Android Açık Kaynak
uygulamasında 
sağlanan
alternatif bir kullanıcı deneyimi sağlayabilir
. Ancak bu tür alternatif bildirim sistemleri, yukarıda belirtildiği gibi mevcut
bildirim kaynaklarını desteklemelidir.
Android 4.1, 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 doğru şekilde gösterilmeli ve yürütülmelidir.
3.8.3.Arama
Android, geliştiricilerin aramayı uygulamalarına dahil etmelerine ve uygulamalarının verilerini küresel sistem aramasına göstermelerine olanak tanıyan API'ler [Kaynaklar, 22] içerir.
Genel olarak bu işlev, kullanıcıların sorgu girmesine olanak tanıyan, kullanıcıların yazdığı sırada ö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ı, geliştiricilerin kendi uygulamalarında arama sağlamak için bu kullanıcı
arayüzünü yeniden kullanmalarına olanak tanıyan API'leri UYGULAMALIDIR. Cihaz uygulamalarında
,
küresel arama modunda çalıştırıldığında üçüncü taraf uygulamaların arama kutusuna öneri eklemesine izin veren 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. Toast'lar
Uygulamalar, son kullanıcıya kısa
modal olmayan dizelerin gösterilmesi için "Toast" API'sini ([Kaynaklar, 23] bölümünde tanımlanmıştır) kullanabilir. Bu dize kısa bir süre sonra kaybolur. Cihaz
uygulamaları, uygulamalardan son kullanıcılara gönderilen Toast'ları
yüksek görünürlükte bir şekilde göstermelidir.
3.8.5. Temalar
Android, uygulamaların bir Etkinlik veya uygulamanın tamamında stil uygulamak için kullanabileceği bir mekanizma olarak "temalar" sağlar.
 Android 3.0, uygulama geliştiricilerin Android SDK'sı tarafından tanımlanan Holo tema görünümünü ve tarzını eşleştirmek isterse kullanabileceği
bir dizi tanımlanmış stil olarak yeni bir "Holo" veya "holografik"
tema tanıttı [Kaynaklar, 24]. Cihaz
uygulamaları,

uygulamalarına
maruz kalan Holo tema özelliklerinden hiçbirini DEĞİŞTİRMEMELİDİR [Kaynaklar, 25].
Android 4.0, uygulama geliştiricilerin cihaz uygulayıcısı tarafından tanımlanan cihaz temasının görünüm ve tarzını eşleştirmek isterse kullanabileceği
bir dizi tanımlanmış stil olarak yeni bir "Cihaz Varsayılan" teması kullanıma sundu.
Cihaz uygulamaları,
uygulamalara açık olan DeviceDefault tema özelliklerini değiştirebilir [Kaynaklar, 25].

3.8.6. Animasyonlu Duvar Kağıtları
Android, uygulamaların son kullanıcıya bir veya daha fazla "animasyonlu 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].
Animasyonlu duvar kağıtları, diğer uygulamaların arkasında duvar kağıdı olarak görüntülenen, sınırlı giriş özellikleri olan animasyonlar, desenler veya benzer resimlerdir.


Donanım, tüm canlı duvar kağıtlarını işlevsellik sınırlaması olmadan, makul bir kare hızında ve diğer uygulamalarda olumsuz bir etki oluşturmadan çalıştırabiliyorsa canlı duvar kağıtlarını güvenilir bir şekilde çalıştırabilir olarak kabul edilir.

 Donanımdaki sınırlamalar, duvar kağıtlarının
ve/veya uygulamaların kilitlenmesine, arızalanmasına, aşırı CPU veya pil gücü tüketimine ya da
kabul edilemeyecek kadar düşük kare hızlarında çalışmasına neden oluyorsa donanım, 
canlı duvar kağıdı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. Canlı duvar kağıdı, OpenGL bağlamının kullanımı
OpenGL bağlamı kullanan diğer uygulamalarla çakışma ihtimali
olduğundan birden fazla OpenGL bağlamını desteklemeyen donanımlarda güvenilir bir şekilde çalışmaz.
Yukarıdaki
 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
canlı duvar kağıtlarını güvenilir bir şekilde çalıştırmadığı belirlenen cihaz uygulamaları canlı duvar kağıtlarını UYGULAMAMALIDIR.
3.8.7. Son Uygulama Görüntüleme
Yukarı akış Android 4.1 kaynak kodu, 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ü içerir.

 Cihaz uygulamalarında bu kullanıcı arayüzü DEĞİŞTİRİLEBİLİR veya
kaldırılabilir; 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 Android 4.1 kullanıcı arayüzünü (veya benzer bir küçük resim tabanlı 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.1, Giriş Yönetimi Motorları için destek içerir. Android 4.1 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
YER ALMALIDIR.
3.8.9. Kilit Ekranı Uzaktan Kumanda
Android 4.0, medya uygulamalarının
cihaz kilit ekranı gibi uzaktan bir görünümde gösterilen oynatma kontrolleriyle entegrasyonuna olanak tanıyan Uzaktan Kumanda API'si desteğini kullanıma sundu
[Kaynaklar, 69]. Cihaz uygulamalarında,
cihaz kilit ekranına uzaktan kumanda yerleştirme
desteği bulunmalıdır.
3.9 Cihaz Yönetimi
Android 4.1, güvenlik bilincine sahip uygulamaların Android Cihaz Yönetimi API'si 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 [Kaynaklar,
27].

 Cihaz uygulamalarında
DevicePolicyManager sınıfının [Resources, 28] bir uygulaması sağlanMALIDIR ve
Android SDK dokümanlarında [Resources,
27] tanımlanan
tüm cihaz yönetimi politikaları desteklenmelidir.

Not: Yukarıda belirtilen şartlardan bazıları
Android 4.1 için "OLMALIDIR" olarak belirtilmiş olsa da gelecekteki bir sürümün Uyumluluk Tanımı'nda bu şartların "MUTLAKA" olarak değiştirilmesi planlanmaktadır.
 Yani bu şartlar Android 4.1'de isteğe bağlıdır ancak gelecekteki bir sürümde
zorunludur
. Android 4.1 yüklü mevcut ve yeni cihazların Android
4.1'deki 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.1, engelli kullanıcıların cihazlarında daha kolay gezinmesine yardımcı olan bir erişilebilirlik katmanı sağlar.
Ayrıca, Android 4.1,

erişim hizmeti uygulamalarının kullanıcı ve sistem etkinlikleri için geri bildirim almasını
ve metni konuşmaya dönüştürme, dokunma
geri bildirimi ve dokunmatik yüzey /d-pad gezinme gibi alternatif geri bildirim mekanizmaları oluşturmasını
sağlayan platform API'leri sağlar [Kaynaklar, 29]. Device implementations
MUST provide an implementation of the Android accessibility framework consistent
with the default Android implementation. Özellikle, cihaz uygulamalarının
aşağıdaki koşulları karşılaması GEREKİR.
Cihaz uygulamalarında, android.accessibilityservice API'leri [Kaynaklar,
30] aracılığıyla üçüncü taraf erişilebilirlik hizmeti uygulamalarını desteklenmelidir.
Cihaz uygulamalarında, AccessibilityEvents oluşturulmalı ve bu etkinlikler, kayıtlı tüm AccessibilityService uygulamalarında varsayılan Android uygulamasıyla tutarlı bir şekilde yayınlanmalıdır.
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ıdır 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ştirebileceği bir mekanizma sağlanmalıdır. Erişilebilirlik hizmetinin
açık kaynaklı bir uygulamasını Eyes Free projesinden [Kaynaklar, 31] edinebilirsiniz.
3.11 Metin Okuma
Android 4.1, uygulamaların metin okuma (TTS)
hizmetlerini kullanmasına olanak tanıyan 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 şu koşulları karşılaması GEREKİR:
Cihaz uygulamaları, Android TTS çerçevesi API'lerini desteklemeli ve
cihazdaki 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ında üçüncü taraf TTS motorlarının yüklenmesi desteklenmelidir.
Cihaz uygulamalarında, kullanıcıların sistem düzeyinde kullanmak üzere bir TTS motoru seçmesine olanak tanıyan, kullanıcı tarafından erişilebilir bir arayüz sağlanmalıdır.


4. Uygulama Paketleme Uyumluluğu
Cihaz uygulamalarında, Android ".apk" dosyalarının resmi Android SDK'sına
dahil olan "aapt" aracı tarafından oluşturulduğu şekilde yüklenmesi ve çalıştırılması GEREKİR [Kaynaklar, 33].
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 uzatılmamalıdır.
Cihaz uygulayıcıları, Dalvik'in referans
yukarı yönlü uygulamasını ve referans uygulamanın paket
yönetim sistemini KULLANMALIDIR.

5. Multimedya Uyumluluğu
Cihaz uygulamalarında
hoparlör, kulaklık jakı, harici hoparlör bağlantısı vb.
gibi en az bir ses çıkışı biçimi BULUNMASI GEREKİR.
5.1. Medya Codec'leri
Cihaz uygulamalarında, bu dokümanda açıkça izin verildiği durumlar hariç olmak üzere
Android SDK dokümanlarında [Kaynaklar, 58] belirtilen temel medya biçimleri desteklenmelidir.
 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 desteklemelidir. Bu
codec'lerin tümü, Android Açık Kaynak Projesi'ndeki
tercih edilen Android uygulamasında yazılım olarak sağlanır.
Google veya Open Handset Alliance'ın, bu codec'lerin üçüncü taraf patentleriyle ilgili herhangi bir hak talebinde bulunmadığını lütfen unutmayın.
Bu kaynak kodunu donanım veya yazılım ürünlerinde kullanmak isteyenlerin, 
bu kodun açık kaynak yazılım veya shareware dahil olmak üzere uygulanabilmesi için ilgili patent sahiplerinden patent lisansı almaları gerekebileceğini hatırlatmak isteriz.



Mevcut cihaz donanımı, ilgili standartlar tarafından belirtilen gerekli bit hızlarıyla tam olarak eşleşen bit hızlarını 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ında

özellikler tarafından tanımlanan sınırlara kadar donanımda mümkün olan en yüksek bit hızı desteklenmelidir.

Dosya Türleri/
Biçim /
Tür
Kodlayıcı
Kod Çözücü
Ayrıntılar
Kapsayıcı
Codec
Biçimler

Şu biçimler desteklenir:
ZORUNLU
mono/stereo/5.0/5.1*
MPEG-4
Cihaz uygulamalarında
AAC Profili
mikrofon donanımı içeren
içerik için gerekli
ZORUNLU
standart örnekleme
(AAC LC)
ve
3GPP
8 ila 48 arasındaki hızları tanımlayın
android.hardware.microphone.
(.3gp)
kHz.
MPEG-4
(.mp4,
MPEG-4
mono/stereo/5.0/5.1*
.m4a)
HE
AAC
içeriği
ADTS
ham
 
ZORUNLU
Profil
standart
AAC
 (.aac,
(AAC+)
16 ila 48
kHz
sıklıklarında
kod çözme.
Android
3.1+,
MPEG-4
desteği
cihaz
mono/stereo/5.0/5.1*
HE AAC v2
içeriği
profili
mikrofon donanımı
ve
 
4.0+, ADIF
standart
(geliştirilmiş
tanımlamak
16 ila 48
AAC+)
android.hardware.microphone
desteği)
kHz.



MPEG-TS
MPEG-4
(.ts,
Ses
Cihaz için ZORUNLU
Aralanabilir
mono/stereo içerik
içeren
nesne türü
uygulamaları için destek
Android
ER AAC
mikrofon donanımı
ve
standart
3.0+)
ELD
tanımlamak
örnekleme
süreleri
(Gelişmiş
android.hardware.microphone
16 ila 48 kHz.
Düşük Gecikmeli
AAC)
ZORUNLU
Cihaz uygulamalarında zorunludur
4,75 ila 12,2 Kb/sn
Mikrofon donanımı içeren
AMR-NB
ZORUNLU
3GPP (.3gp)
8 kHz'te örneklenmiş
ve
android.hardware.microphone parametresini tanımlamalıdır.
ZORUNLU
Cihaz uygulamalarında zorunlu
6,60 ile 23,85 kbit/sn
arasında 9 AMR-WB
mikrofon donanımı içeren
ZORUNLU
kbit/sn
3GPP (.3gp)
ve
16 kHz'te örneklenen
android.hardware.microphone değerini tanımlayın.
Mono/Stereo (çoklu kanallı değil)

Ses
48
kHz
örnek
hızları
(ancak 44,1
kHz
ŞART
FLAC
 
kHz
çıkışına sahip cihazlarda
44,1
kHz
örnek
hızı
(Android 3.1+)
önerilir.
48
FLAC
(.flac)
(Android 3.1+)
44,1
kHz
aşağı
sayıcısında
bir
 
geçirgen
 
filtre
 
bulunmadığından
bu




































































































































































































 16 bit
önerilir; 24 bit
için dither uygulanmaz.

Mono/Stereo 8-
320Kbps sabit
MP3
 
ZORUNLU
MP3 (.mp3)
(CBR) veya değişki
bit hızı (VBR)
Tür 0 ve
MIDI Tür 0 ve 1.
1 (.mid,
DLS Sürüm 1 ve
.xmf, .mxmf)
2. XMF ve Mobil
RTTTL/RTX
MIDI
 
ZORUNLU
XMF. (.rtttl, .rtx)
ringtone formats
OTA (.ota)
RTTTL/RTX, OTA,
iMelody
and iMelody
(.imy)

Ogg (.ogg)
Vorbis
 
REQUIRED
 
Matroska
(.mkv)
8-bit and 16-bit
linear PCM** (rates
up to limit of
hardware).Devices
MUST support
PCM/WAVE
REQUIRED
REQUIRED
WAVE (.wav)
sampling rates for
raw PCM recording
at 8000,16000 and
44100 Hz
frequencies
JPEG
REQUIRED
REQUIRED
Base+progressive
JPEG (.jpg)
GIF
 
REQUIRED
 
GIF (.gif)
Image
PNG
REQUIRED
REQUIRED
 
PNG (.png)
BMP
 
REQUIRED
 
BMP (.bmp)
WEBP
REQUIRED
REQUIRED
 
WebP (.webp)
REQUIRED
Required for device implementations
3GPP
that include camera hardware and
(.3gp)
H.263
REQUIRED
 
define android.hardware.camera
MPEG-4
or
(.mp4)
android.hardware.camera.front.

3GPP
(.3gp)
ZORUNLU
MPEG-4
(.mp4)
Cihaz uygulamalarında gerekli
Kamera donanımı ve
Temel Profil
Video
H.264 AVC
ZORUNLU
(.ts, 
AAC
define
android.hardware.camera
(BP)
yalnızca ses,
veya
değil
android.hardware.camera.front.
seekable,
Android
3.0+)
MPEG-4
 
ZORUNLU
 
3GPP (.3gp)
SP
WebM (.webm)
ZORUNLU
ve
Matroska
VP8
 
(Android
 
(.mkv, 
Android
2.3.3+)
4.0+)
*Not: Yalnızca 5.0/5.1 içeriğinin aşağı karıştırılması gerekir; 2'den fazla kanalın kaydı veya oluşturma işlemi isteğe bağlıdır. **Not: 16 bit doğrusal PCM yakalama zorunludur. 8 bit doğrusal PCM
kaydı zorunlu değildir.
5.2 Video Kodlaması
Arka kamera içeren ve
android.hardware.camera özelliğini açıklayan Android cihaz uygulamaları, aşağıdaki video kodlama profillerini DESTEKLEMELİDİR.
HD (Donanım tarafından desteklendiğinde
 
SD (Düşük kaliteli) SD (Yüksek kaliteli)
)
H.264 Baseline
H.264 Baseline
Video codec
H.264 Baseline Profile
Profile
Profile
Video
176 x 144 px
480 x 360 px
1280 x 720 px
çözünürlük
Video kare 12 fps
30 fps
30 fps
hızı
500 Kbps veya
Video bit hızı 56 Kbps
2 Mb/sn veya daha
yüksek
Ses codec'i AAC-LC
AAC-LC
AAC-LC

Ses
1 (mono)
2 (stereo)
2 (stereo)
kanal
Ses bit hızı 24 Kbps
128 Kbps
192 Kbps
5.3. Ses Kaydı
Bir uygulama, ses akışı kaydetmeye başlamak için android.media.AudioRecord API'sini kullandığında, mikrofon donanımı içeren ve android.hardware.microphone özelliğini belirten cihaz uygulamaları, sesleri aşağıdaki davranışlardan her biri ile örnekleyip kaydetmelidir:
Cihaz, frekansa göre yaklaşık olarak düz bir genlik sergilemelidir
özellikleri; özellikle 100 Hz ile 4000 Hz arasında ±3 dB
Ses girişi hassasiyeti, 1000 Hz'de 90 dB ses gücü seviyesi
(SPL) kaynağının 16 bitlik örnekler için 2500 RMS vermesi
böyle ayarlanmalıdır.
PCM genlik seviyeleri, mikrofondaki 90 dB SPL'ye göre -18 dB ile +12 dB arasında en az 30 dB
aralığındaki giriş SPL değişikliklerini doğrusal olarak izlemelidir.
Toplam harmonik bozulma, 90 dB SPL giriş
seviyesindeki 1 Khz için% 1'den az olmalıdır.


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:
Mevcutsa gürültü azaltma işlemi DEVRE DIŞI BIRAKILMALIDIR.
Mevcutsa otomatik kazanç kontrolü DEVRE DIŞI BIRAKILMALIDIR.
Not: Yukarıda belirtilen şartlardan bazıları
Android 4.1 için "OLMALIDIR" şeklinde belirtilmiş olsa da gelecekteki bir sürümün Uyumluluk Tanımı'nda bu şartların "MUTLAKA" olarak değiştirilmesi planlanmaktadır.
 Yani bu şartlar Android 4.1'de isteğe bağlıdır ancak gelecekteki bir sürümde
zorunludur
. Android 4.1 yüklü mevcut ve yeni cihazların Android
4.1'deki bu şartları karşılaması önemle tavsiye edilir. Aksi takdirde, gelecekteki bir sürüme yükseltildiğinde
Android uyumluluğu elde edemezler.

5.4. Ses gecikmesi
Ses gecikmesi, genel olarak bir uygulamanın ses çalma veya kayıt işlemi isteğinde bulunduğu andan cihaz uygulamasının işlemi başlattığı ana kadar geçen süre olarak tanımlanır.

 Birçok uygulama sınıfı, 
ses efektleri veya VoIP iletişimi gibi gerçek zamanlı efektler elde etmek için kısa gecikmeleri kullanır. Mikrofon donanımı içeren ve android.hardware.microphone
özelliğini açıklayan cihaz uygulamaları BU BÖLÜMDE AÇIKLANAN tüm ses gecikmesi koşullarını karşılamalıdır.
 Mikrofon donanımının cihaz uygulamaları tarafından atlanma koşullarına dair ayrıntılar için 7. Bölüme
bakın
.
Bu bölümde:
"Soğuk çıkış gecikmesi", bir uygulamanın ses oynatmayı istediği andan sesin çalmaya başladığı ana kadar geçen süredir. Bu süre, ses sistemi
istemden önce boşta ve kapalı durumdayken gerçekleşir
"Sıcak çıkış gecikmesi", bir uygulamanın ses oynatmayı istediği andan sesin çalmaya başladığı ana kadar geçen süredir. Bu süre, ses sistemi
istemden önce boşta ve kapalı durumdayken gerçekleşir
"Devamlı çıkış gecikmesi", bir uygulamanın çalınacak bir örnek istediği andan hoparlörün ilgili sesi fiziksel olarak çaldığı ana kadar geçen süredir. Bu süre, cihaz
oynatma modundayken gerçekleşir
"Soğuk giriş gecikmesi", bir uygulamanın ses kaydı yapmasını istediği andan ilk örneğin geri çağırma işlevi aracılığıyla uygulamaya gönderildiği ana kadar geçen süredir. Bu süre, ses sistemi ve mikrofon
istemden önce boşta ve kapalı durumdayken gerçekleşir
"Devamlı giriş gecikmesi", ortam sesi oluştuğunda ve cihaz kayıt modundayken bu sese karşılık gelen örnek geri çağırma işlevi aracılığıyla kayıt uygulamasına gönderildiğinde gerçekleşir
Yukarıdaki tanımlar kullanılarak cihaz uygulamalarında şu özelliklerin her biri GÖSTERİLMELİDİR:
100 milyon mikrosaniye veya daha kısa soğuk çıkış gecikmesi
10 milyon mikrosaniye veya daha kısa sıcak çıkış gecikmesi
45 milyon mikrosaniye veya daha kısa sürekli çıkış gecikmesi
100 milyon mikrosaniye veya daha kısa soğuk giriş gecikmesi
50 milyon mikrosaniye veya daha kısa sürekli giriş gecikmesi
Not: Yukarıda belirtilen şartlar Android 4.1 için "GÖSTERİLMELİDİR" şeklinde belirtilmiştir.

Gelecekteki bir sürüm için Uyumluluk Tanımı'nda bu şartların "ZORUNLU" olarak değiştirilmesi planlanmaktadır.
Böylece, bu şartlar Android 4.1'de isteğe bağlıdır ancak gelecekteki bir sürümde ZORUNLU olacaktır.








 Android 4.1 yüklü mevcut ve yeni cihazların Android 4.1'deki
bu koşulları karşılaması çok önemle önerilir
. Aksi takdirde, gelecekteki bir sürüme yükseltildiğinde
Android uyumluluğu elde edemezler.
Bir cihaz uygulaması bu bölümün şartlarını karşılıyorsa
 "android.hardware.audio.low-
latency" özelliğini android.content.pm.PackageManager sınıfı üzerinden bildirerek
düşük gecikmeli ses desteğini bildirebilir. [Resources, 37]
Buna karşılık, cihaz uygulaması bu koşulları karşılamıyorsa
düşük gecikmeli ses desteğini bildirmemelidir.
5.5. Ağ Protokolleri
Cihazlar, Android SDK dokümanlarında [Kaynaklar, 58] belirtildiği gibi ses ve video oynatma için medya ağı protokollerini DESTEKLEMELİDİR.
Özellikle, cihazlar
ŞU MEDYA AĞI PROTOKOLLERİNİ DESTEKLEMELİDİR:

RTSP (RTP, SDP)
HTTP(S) kademeli yayın
HTTP(S) canlı yayın taslak protokolü, Sürüm 3 [Kaynaklar, 59]
6. Geliştirici Aracı Uyumluluğu
Cihaz uygulamalarında, Android SDK'sında sağlanan Android Geliştirici Araçları
desteklenmelidir. Özellikle, Android uyumlu cihazlar şu cihazlarla UYUMLU OLMALIDIR:
Android Debug Bridge (adb olarak bilinir) [Kaynaklar, 33]
Cihaz uygulamaları,
Android SDK'da belgelenen
tüm adb işlevlerini desteklemelidir. Cihaz tarafındaki adb daemon'ı varsayılan olarak etkin OLMAMALIDIR ve
Android Hata Ayıklama Köprüsü'nü açmak için kullanıcının erişebileceği bir mekanizma OLMALİDİR.
Dalvik Hata Ayıklama İzleyici Hizmeti (ddms olarak bilinir) [Kaynaklar, 33]
Cihaz uygulamalarında, Android SDK'sında belirtildiği gibi tüm ddms özellikleri DESTEKLENMELİDİR.

 ddms, adb kullandığından ddms desteği
varsayılan olarak devre dışı OLMALIDIR ancak kullanıcı yukarıda belirtildiği gibi Android
Hata Ayıklama Köprüsü'nü etkinleştirdiğinde desteklenmelidir.
Monkey [Kaynaklar, 36]
Cihaz uygulamalarında Monkey çerçevesi YER ALMALIDIR ve
uygulamalar tarafından kullanılabilir hale getirilmelidir.
Çoğu Linux tabanlı sistem ve Apple Macintosh sistemi, 
standart Android SDK araçlarını kullanarak ek destek olmadan Android cihazları tanır. Ancak Microsoft
Windows sistemleri genellikle yeni Android cihazlar için sürücü gerektirir. (Örneğin,
yeni tedarikçi kimlikleri ve bazen yeni cihaz kimlikleri,
Windows sistemleri için özel USB sürücüleri gerektirir.) Bir cihaz uygulaması, standart Android SDK'sında sağlandığı şekilde
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 ve Windows 7 için hem
32 bit hem de 64 bit sürümlerde SAĞLANMALIDIR.
7. Donanım Uyumluluğu
Bir cihaz, üçüncü taraf geliştiriciler için karşılık gelen bir API'ye sahip belirli bir donanım bileşeni içeriyorsa cihaz uygulaması, 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 hiçbir işlem yapmadan uygulanmalıdır

API yöntemleri, SDK dokümanlarında izin verildiğinde boş değerler döndürmelidir

API yöntemleri, SDK dokümanlarında izin verilmediğinde sınıfların hiçbir işlem yapmadan uygulanmasını döndürmelidir

API yöntemleri, SDK dokümanlarında belirtilmeyen istisnalar atmamalıdır

Bu şartların geçerli olduğu bir senaryoya örnek olarak telefon dışı cihazlarda bile bu API'lerin makul bir şekilde hiçbir işlem yapmadan uygulanması gereken telefon API'si verilebilir.



Cihaz uygulamalarında, android.content.pm.PackageManager sınıfındaki getSystemAvailableFeatures() ve hasSystemFeature(String)
yöntemleri kullanılarak doğru donanım yapılandırma
bilgileri doğru şekilde raporlanmalıdır. [Resources, 37]
7.1. Ekran ve Grafikler
Android 4.1, üçüncü taraf uygulamalarının çeşitli donanım yapılandırmalarında iyi çalışmasını sağlamak için uygulama öğelerini ve kullanıcı arayüzü düzenlerini cihaza uygun şekilde otomatik olarak ayarlayan özellikler içerir [Kaynaklar, 38].

 Cihazlar, bu bölümde ayrıntılı olarak açıklandığı gibi
bu API'leri ve davranışları doğru bir şekilde uygulamalıdır.
Bu bölümdeki şartlarda atıfta bulunulan birimler aşağıdaki gibi tanımlanır:
"Fiziksel köşegen boyutu", 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 bir yatay veya dikey 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 daha uzun boyutunun daha kısa boyuta oranıdır.
 Örneğin, 480x854 piksellik bir ekran için 854 / 480 =
1, 779 veya yaklaşık "16:9" olur.
 "Yoğunluktan bağımsız piksel" veya ("dp"), 160
dpi ekrana normalleştirilmiş sanal piksel birimidir ve şu şekilde hesaplanır: piksel = dp * (yoğunluk / 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 aracılığıyla cihaz ekran boyutunu
 (diğer adıyla "ekran düzeni") sorgulamasına olanak tanır
SCREENLAYOUT_SIZE_MASK ile. Cihaz uygulamalarında, Android SDK dokümanlarında [Kaynaklar, 38] tanımlanan ve yayın öncesi Android platformu tarafından belirlenen doğru ekran
boyutu bildirilmelidir.
 Özellikle, cihaz uygulamalarında
aşağıdaki mantıksal yoğunluk bağımsız piksel (dp)
ekran boyutlarına göre doğru ekran boyutu bildirilmelidir.
Cihazların ekran boyutu en az 426 dp x 320 dp ('küçük ') OLMALIDIR
Ekran boyutunu "normal" olarak bildiren cihazların ekran boyutu en az 480
dp x 320 dp OLMALIDIR
Ekran boyutunu "büyük" olarak bildiren cihazların ekran boyutu en az 640
dp x 480 dp OLMALIDIR
Ekran boyutunu "çok büyük" olarak bildiren cihazların ekran boyutu en az 960
dp x 720 dp OLMALIDIR
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, AndroidManifest.xml dosyasında <supports-
screens> özelliğini kullanarak destekledikleri ekran boyutlarını belirtebilir. 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 ALINMALIDIR.
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ında, 
android.util.DisplayMetrics
API'leri aracılığıyla aşağıdaki mantıksal Android çerçeve yoğunluklarından birini bildirmeli
ve uygulamaları bu standart yoğunlukta yürütmelidir
.
120 dpi (bilinen adıyla "ldpi")
160 dpi (bilinen adıyla "mdpi")
213 dpi (bilinen adıyla "tvdpi")
240 dpi (bilinen adıyla "hdpi")
320 dpi (bilinen adıyla "xhdpi")
480 dpi (bilinen adıyla "xxhdpi")
Cihaz uygulamalarında,
mantıksal yoğunluk

bildirilen ekran boyutunu desteklenen minimum boyutun altına itmediği sürece
sayısal olarak ekranın fiziksel yoğunluğuna en yakın
standart Android çerçeve yoğunluğu tanımlanmalıdır. Fiziksel yoğunluğa en yakın sayısal standart Android
çerçeve yoğunluğu, desteklenen en küçük uyumlu ekran boyutundan (320 dp genişlik) daha küçük bir ekran
boyutuna neden oluyorsa
cihaz uygulamalarında bir sonraki en düşük standart Android
çerçeve yoğunluğu raporlanmalıdır.
7.1.2. Görüntüleme Metrikleri
Cihaz uygulamalarında, android.util.DisplayMetrics [Resources, 39] sınıfında tanımlanan tüm görüntüleme metrikleri için doğru değerler raporlanmalıdır.

7.1.3. Ekran Yönü
Cihazlar, uygulamaların dikey veya yatay ekran yönüne göre dinamik yön desteğine sahip OLMALIDIR.
 Yani cihaz, uygulamanın
belirli bir ekran yönelimi isteğini dikkate almalıdır. Cihaz uygulamalarında
dikey veya yatay yön varsayılan olarak seçilEBİLİR.
Cihazlar,
android.content.res.Configuration.orientation,
android.view.Display.getOrientation() veya diğer API'ler aracılığıyla her sorgulandığında cihazın mevcut yönelimi için doğru değeri bildirmelidir.
Cihazlar, yön değiştirirken bildirilen ekran boyutunu veya yoğunluğunu DEĞİŞTİRMEmelidir
.
Cihazlar, destekledikleri ekran yönlerini (
android.hardware.screen.portrait ve/veya android.hardware.screen.landscape) bildirmeli
ve en az bir desteklenen yönü bildirmelidir. Örneğin,
sabit yönlü yatay ekrana sahip bir cihaz (ör. televizyon veya dizüstü bilgisayar) yalnızca
android.hardware.screen.landscape değerini bildirmelidir.
7.1.4. 2D ve 3D Grafik Hızlandırması
Cihaz uygulamalarında, Android SDK dokümanlarındaki
ve ayrıntılı olarak açıklandığı şekilde hem OpenGL ES 1.0 hem de 2.0 desteklenmelidir. Cihaz uygulamalarında, 
Android SDK dokümanlarında ayrıntılı olarak açıklandığı gibi
Android Renderscript de desteklenmelidir
[Kaynaklar, 8].
Cihaz uygulamalarının, OpenGL ES 1.0 ve 2.0'ı desteklediğini doğru şekilde tanımlaması DA GEREKİR.
 Yani:
Yönetilen API'ler (ör. GLES10.getString() yöntemi aracılığıyla)
OpenGL ES 1.0 ve 2.0 için destek bildirmelidir
Doğal 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 için destek bildirmelidir.
Cihaz uygulamaları, istenen OpenGL ES uzantılarını uygulaYABİLİR.
Bununla birlikte, cihaz uygulamaları, destekledikleri tüm uzantı dizelerini OpenGL ES yönetilen ve
yerel API'ler aracılığıyla bildirMELİDİR.
Buna karşılık, desteklemedikleri uzantı dizelerini bildirMEmelidir.
Android 4.1'de, uygulamaların belirli OpenGL doku sıkıştırma biçimlerini gerektirdiğini belirtme
seçeneğinin bulunduğunu unutmayın. Bu biçimler genellikle satıcıya özgüdür.
 Android 4.1,
belirli bir doku sıkıştırma biçimini uygulamak için cihaz uygulamalarını gerektirmez. Ancak,
OpenGL API'sindeki getString() yöntemi ile
destekledikleri tüm doku sıkıştırma biçimlerini doğru olarak bildirmelidirler.
Android 4.1, uygulamaların
android:hardwareAccelerated manifest etiketi veya doğrudan
API çağrıları kullanılarak
uygulama, etkinlik, pencere veya
görünüm düzeyinde 2D grafikler için donanım hızlandırmasını etkinleştirmek istediğini belirtmesi
için bir mekanizma içerir [Kaynaklar, 9].
Android 4.1'de, cihaz uygulamalarında
varsayılan olarak donanım hızlandırması 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ırması devre dışı bırakılmalıdır.
Ayrıca, cihaz uygulamalarının donanım hızlandırmasıyla ilgili Android
SDK dokümanlarıyla [Kaynaklar, 9] tutarlı bir davranış sergilemesi GEREKİR.
Android 4.1, geliştiricilerin donanım hızlandırmalı OpenGL ES dokularını bir kullanıcı arayüzü hiyerarşisinde oluşturma hedefleri olarak doğrudan entegre etmesine olanak tanıyan bir TextureView nesnesi içerir.
Cihaz uygulamalarında TextureView API'yi desteklemeli ve

yukarı yönlü Android uygulamasıyla tutarlı bir davranış sergilemelidir.

7.1.5. Eski Uygulama Uyumluluk Modu
Android 4.1, çerçevenin ekran boyutundan bağımsızlık özelliğinden önceki Android sürümleri için geliştirilmemiş eski uygulamaların yararına
 "normal" ekran boyutuna eşdeğer (320 dp genişlik) bir modda çalıştığı bir "uyumluluk modu" belirtir.

 Cihaz uygulamalarında, Android açık kaynak kodunun üst akış tarafından uygulandığı şekliyle eski uygulama
uyumluluk modu için destek YER ALMALIDIR. Yani
, cihaz uygulamalarında
uyumluluk modunun etkinleştirildiği tetikleyiciler veya eşikler DEĞİŞTİRİLMEMELİDİR ve uyumluluk modunun kendi davranışı DEĞİŞTİRİLMEMELİDİR.

7.1.6. Ekran Türleri
Cihaz uygulama ekranları iki türden biri olarak sınıflandırılır:
Sabit piksel ekran uygulamaları: Ekran, yalnızca tek bir piksel genişliği ve
yüksekliği destekleyen tek bir paneldir. Ekran genellikle
cihazla fiziksel olarak entegredir. Mobil 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.

 Televizyonlar ve set üstü kutular buna örnek gösterilebilir.
Sabit Pikselli Cihaz Uygulamaları
Sabit pikselli 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 bir
ekranla kullanım için bir video çıkış bağlantı noktası İÇERİEBİLİR. Bununla birlikte, 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
Bölüm 7.1.1 ve 7.1.2'de ayrıntılı olarak açıklanan aynı ekran yapılandırmasını ve ekran metriklerini bildirmelidir.
Cihaz, sabit piksel ekranda olduğu gibi 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 boyutundaki bir tablet
sabit piksel büyük mdpi ekran uygulaması olarak kabul edilir. 720p veya 1080p'de görüntüleyen bir video
çıktı bağlantı noktası
içeriyorsa cihaz uygulaması,
sabit piksel ekranın veya video çıkış bağlantı noktasının
kullanılıp kullanılmadığına bakılmaksızın 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 birini (yani 720p veya 1080p) 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ında, çalışma zamanında veya önyükleme sırasında ekran yapılandırması ya da
modu DEĞİŞEBİ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
.
Ek olarak, değişken piksel boyutlarına sahip cihaz uygulamaları, aşağıdaki 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ğunluk
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ı, Android 4.1'de 720p veya 1080p ile sınırlıdır ve ekran boyutunu ve yoğunluk gruplarını yukarıda belirtildiği gibi bildirecek şekilde yapılandırılmalıdır.



7.1.7. Ekran Teknolojisi
Android platformu, uygulamaların ekranda zengin grafikler oluşturmasına olanak tanıyan API'ler içerir.
 Cihazlar, bu belgede özel olarak izin verilmediği sürece
Android SDK'sı tarafından tanımlanan bu API'lerin tümünü desteklemelidir. Özel:
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.2. Giriş Cihazları
7.2.1. Klavye
Cihaz uygulamaları:
http://developer.android. com adresinde ayrıntılı olarak açıklandığı gibi
Giriş Yönetimi Çerçevesi (üçüncü taraf geliştiricilerin Giriş Yönetimi Motorları (ör.
sanal klavye) oluşturmasına olanak tanır) için destek İÇERMELİ
En az bir sanal klavye uygulaması İÇERMELİ (sabit klavye olup olmadığına bakılmaksızın)
Ek sanal klavye uygulamaları İÇERİEBİLİR
Donanım klavyesi İÇERİEBİLİR
android.content.res.Configuration.keyboard [Resources, 40]
bölümünde belirtilen biçimlerden biriyle eşleşmeyen donanım klavyesi İÇERMEMELİ
(ör.QWERTY veya 12 tuşlu)
7.2.2.
Dokunmatik Olmayan Gezinme

Cihaz uygulamaları:
Dokunmatik olmayan bir gezinme seçeneğini atlayabilir (yani, bir dokunmatik top, d-pad veya
tekerlek atlayabilir)
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ğlamalıdır.
 
Yukarı yönlü Android açık kaynak yazılımı, dokunmatik olmayan gezinme girişlerine sahip olmayan 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ında, bu işlevler
uygulamalar çalışırken her zaman kullanıcıya sunulmalıdır. Bu işlevler
özel fiziksel düğmeler (mekanik veya kapasitif dokunmatik düğmeler gibi) aracılığıyla uygulanabilir veya
özel yazılım tuşları, hareketler, dokunmatik panel vb. kullanılarak uygulanabilir. Android
4.1 her iki uygulamayı da destekler.
Android 4.1, yardım işlemi için destek sunar [Kaynaklar, 63]. Cihaz
uygulamaları,
uygulamalar çalışırken
her zaman kullanıcıya yardımcı işlemi sunmalıdır. Bu işlev, donanım veya yazılım
anahtarları aracılığıyla uygulanabilir.
Cihaz uygulamaları, gezinme tuşlarını görüntülemek için ekranın ayrı bir bölümünü KULLANABİLİYOR ancak bu durumda şu koşulları karşılamalıdır:
Cihaz uygulamasındaki gezinme tuşları, ekranın uygulamaların kullanamadığı ayrı bir bölümünü KULLANABİLİYOR ve uygulamaların kullanabildiği ekran bölümünü GÖZDEN KAYBETMELİ veya başka bir şekilde engelleMEMELİDİR.
Cihaz uygulamaları, ekranın 7.1.1 numaralı bölümde tanımlanan koşulları karşılayan bir bölümünü uygulamalara AÇIKLAMALIDIR.
Cihaz uygulamaları, uygulamalar bir sistem kullanıcı arayüzü modu belirtmediğinde veya SYSTEM_UI_FLAG_VISIBLE belirtmediğinde gezinme tuşlarını GÖSTERMELİDİR.
Cihaz uygulamaları, uygulamalar SYSTEM_UI_FLAG_LOW_PROFILE belirttiğinde gezinme tuşlarını göze çarpmayan
"düşük profilli" (ör. karartılmış) modda GÖSTERMELİDİR.






Uygulamalar
SYSTEM_UI_FLAG_HIDE_NAVIGATION'ı belirttiğinde cihaz uygulamaları
gezinme tuşlarını gizlemelidir.
Cihaz uygulamaları,
targetSdkVersion <= 10 olduğunda uygulamalara bir menü tuşu sunmalı ve
targetSdkVersion > 10 olduğunda bir menü tuşu sunmamalıdır.
Cihaz uygulamaları,
7.1.1 Bölümü'nde tanımlanan koşulları karşılayan uygulamalara ekranın bir bölümünü sunmalıdır.
7.2.4. Dokunmatik ekran girişi
Cihaz uygulamalarında bir tür işaretçi giriş sistemi (fare benzeri veya dokunmatik) bulunmalıdır
. Bununla birlikte, bir cihaz uygulaması bir işaretçi
giriş sistemini desteklemiyorsa
android.hardware.touchscreen veya android.hardware.faketouch özellik sabitlerini bildirmemelidir. 

İşaretçi giriş sistemi içeren cihaz uygulamaları:
Tamamen bağımsız olarak izlenen işaretçileri desteklemelidir. Cihaz giriş sistemi
birden fazla işaretçiyi destekliyorsa

cihazdaki belirli dokunmatik ekranın türüne karşılık gelen android.content.res.Configuration.touchscreen
[Resources, 40] c değerini bildirmelidir
Android 4.0, çeşitli dokunmatik ekranlar, dokunmatik yüzeyler ve sahte dokunmatik
giriş cihazları için destek içerir. Dokunmatik ekran tabanlı cihaz uygulamaları, kullanıcının ekrandaki öğeleri doğrudan manipüle ettiği izlenimini verecek şekilde bir
ekranla [Kaynaklar, 71] ilişkilendirilir.
 Kullanıcı doğrudan ekrana dokunduğundan sistem, 
işlenmekte olan nesneleri belirtmek için ek kolaylıklara ihtiyaç duymaz. Buna
karşılık, sahte dokunmatik arayüz, dokunmatik
ekran özelliklerinin alt kümesini yakınlaştıran bir kullanıcı giriş sistemi sağlar. Örneğin, 
ekrandaki imleci hareket ettiren bir fare veya uzaktan kumanda, dokunmaya benzer ancak kullanıcının önce işaretçiyi veya odağı yerleştirip
 tıklamasını gerektirir. Fare, dokunmatik yüzey, jiroskop tabanlı hava faresi,
jiroskop işaretçi, kontrol çubuğu ve çoklu dokunmatik yüzey gibi birçok giriş cihazı, sahte dokunma etkileşimlerini destekleyebilir.
Android 4.0, android.hardware.faketouch özellik sabit değerini içerir. Bu değer,
dokunmaya dayalı girişi (temel
jest desteği dahil) yeterli düzeyde taklit edebilen fare veya dokunmatik yüzey gibi
dokunmayan yüksek kaliteli (yani işaretçi tabanlı) bir giriş cihazına karşılık gelir ve cihazın
dokunmatik ekran işlevinin taklit edilmiş bir alt kümesini desteklediğini belirtir. Sahte dokunma özelliğini belirten cihaz uygulamalarında
Bölüm 7.2.5'teki sahte dokunma koşullarını karşılanması GEREKİR.
Cihaz uygulamalarında, kullanılan giriş türüne karşılık gelen doğru özellik ZORUNLUDIR
raporlanmalıdır. Dokunmatik ekran (tek dokunma veya daha iyi) içeren cihaz uygulamaları
PLATFORM ÖZELLİĞİ SÜREKLİ DEĞERİ android.hardware.touchscreen'i BİLDİRMELİDİR. 
Platform özelliği sabit değerini
bildiren cihaz
uygulamaları,
android.hardware.touchscreen
platform özelliği sabit değerini de bildirmelidir
android.hardware.faketouch.Dokunmatik ekran
içermeyen (ve yalnızca işaretçi cihaza dayanmayan) cihaz uygulamaları herhangi bir dokunmatik ekran
özelliğini BİLDİRMEMELİ ve Bölüm 7.2.5'teki sahte dokunma koşullarını karşıladıkları takdirde yalnızca android.hardware.faketouch Bildirilmemelidir.

7.2.5.Sahte dokunma girişi
android.hardware.faketouch için destek beyan eden cihaz uygulamaları
işaretçi konumunun mutlak X ve Y ekran konumlarını bildirmeli ve
ekranda görsel bir işaretçi göstermelidir[Resources, 70]
işaretçinin ekranda aşağı veya yukarı hareket ettiğinde gerçekleşen durum değişikliğini belirten
işlem koduyla [Resources, 70] dokunma etkinliğini bildirmelidir
[Resources, 70]
ekranda bir nesneye işaretçi aşağı ve yukarı hareketi desteği sağlamalıdır. Bu, 
kullanıcılara ekrandaki bir nesneye dokunma işlemini taklit etme
imkanı verir
işaretçi aşağı, işaretçi yukarı, işaretçi aşağı ve ardından işaretçi yukarı hareketini aynı yerde
ekranda bir nesneye destek sağlamalıdır. Bu, kullanıcıların ekrandaki bir nesneye
çift dokunma işlemini taklit etmelerine olanak tanır [Resources, 70]
ekranda rastgele bir noktada işaretçi aşağı, işaretçi ekranda
rastgele başka bir noktaya hareket, ardından işaretçi yukarı hareketi desteği sağlamalıdır. Bu, kullanıcıların ekranda
dokunma ve sürükleme işlemini taklit etmelerine olanak tanır
işaretçi aşağı hareketini desteklemeli, ardından kullanıcıların nesneyi ekranda
farklı bir konuma hızlıca taşımalarına olanak tanımalı ve ardından ekranda
işaretçi yukarı hareketini desteklemelidir. Bu, kullanıcıların ekranda bir nesneyi
fırlatmalarına olanak tanır
android.hardware.faketouch.multitouch.distinct için destek beyan eden cihazlar
yukarıdaki sahte dokunma şartlarını karşılamalı ve ayrıca iki veya daha fazla bağımsız işaretçi girişinin
ayrıca izlenmesini desteklemelidir.  
7.2.6. Mikrofon
Cihaz uygulamalarında mikrofon EKSİLTİLEBİLİR. Bununla birlikte, bir cihaz uygulaması
mikrofonu atlarsa android.hardware.microphone özellik sabitini HİÇBİR ZAMAN bildirmemelidir
ve Bölüm 7'ye göre ses kaydı API'sini işlemsiz olarak uygulamalıdır.
Buna karşılık, mikrofonu olan cihaz uygulamaları:
android.hardware.microphone özellik sabitini bildirmelidir
Bölüm 5.4'teki ses kalitesi şartlarını karşılamalıdır
Bölüm 5.5'teki ses gecikmesi şartlarını karşılamalıdır
7.3. Sensörler

Android 4.1, çeşitli sensör türlerine erişmek için API'ler içerir. Cihaz
uygulamaları, aşağıdaki
alt bölümlerde belirtildiği gibi bu sensörleri genel olarak EKSİLTİREBİLİR. Bir cihazda, üçüncü taraf geliştiriciler için ilgili bir API'ye sahip belirli bir sensör türü varsa cihaz uygulaması, bu API'yi
Android SDK dokümanlarında açıklandığı şekilde UYGULAMALIDIR.
 Örneğin, cihaz uygulamalarında:

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İ

Diğer tüm sensör API'leri için makul davranmalıdır (örneğin, uygulamalar dinleyicileri kaydettirmeye çalışırken 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'sı dokümanlarında tanımlandığı şekilde her sensör türü için ilgili Uluslararası Birim Sistemi (ör. metrik) değerlerini kullanarak raporlamalıdır [Kaynaklar, 41]
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 başka sensör tarafından sağlanan verilerden türetilebilirler.
 (Örnekler arasında yönelme sensörü ve doğrusal
ivme sensörü yer alır.) Cihaz uygulamalarında, ön koşul olan fiziksel sensörleri içerdiğinde bu sensör
türleri UYGULANMALIDIR.
Android 4.1 API'leri, yalnızca veriler değiştiğinde değil, sürekli olarak veri döndüren bir "akış" sensörü kavramını kullanıma sunar.
 Cihaz
uygulamaları, Android 4.1 SDK dokümanlarında akışlı sensör olarak belirtilen
herhangi bir API için sürekli olarak düzenli veri örnekleri sağlamalıdır.
7.3.1. İvme ölçer
Cihaz uygulamalarında 3 eksenli bir ivme ölçer YER ALMALIDIR. Bir cihaz
uygulaması 3 eksenli bir ivmeölçer içeriyorsa:
120 Hz veya daha yüksek hızda etkinlik yayınlayABİLİR. Yukarıdaki
ivmeölçer frekansının Android 4.1 için "OLMALI" olarak belirtildiğini, ancak
gelecekteki bir sürüm için uyumluluk tanımının bu ifadeleri"MUTLAKA" olarak değiştirmesinin planlandığını unutmayın.
 Yani bu standartlar Android 4.1'de isteğe bağlıdır ancak gelecekteki sürümlerde
zorunludur
. Android 4.1 çalıştıran mevcut ve yeni cihazların
Android 4.1'deki bu koşulları karşılaması önerilir  böylece
gelecekteki platform sürümlerine yükseltilebilirler
Android API'lerinde ayrıntılı olarak açıklandığı gibi Android sensör koordinat sistemine uymalıdır
Android API'leri (bkz. [Kaynaklar, 41])
Herhangi bir üç boyutluvektörde
serbest düşüşten iki katı yerçekimine (2g) kadar veya daha fazlasını ölçebilmelidir8 bit veya daha fazla doğruluk değerine sahip olmalıdır
0,05 m/s^2'den fazla olmayan bir standart sapmaya sahip olmalıdır
7.3.2.

 Mıknatısölçer

Cihaz uygulamalarında 3 eksenli bir mıknatısölçer (ör. pusula) YER ALMALIDIR. 
Cihazda 3 eksenli bir manyetometre varsa:
10 Hz veya daha yüksek hızda etkinlik gönderebilmelidir

Android API'lerinde ayrıntılı olarak açıklandığı şekilde Android sensör koordinat sistemiyle uyumlu olmalıdır
 (bkz. [Kaynaklar, 41]).

Coğrafi manyetik alanı kapsayacak kadar yeterli bir alan gücü aralığını örnekleyebilmelidir

8 bit doğruluke sahip olmalıdır

0, 5 µT'den yüksek olmayan bir standart sapmaya sahip olmalıdır
7.3.3. GPS
Cihaz uygulamalarında GPS alıcısı OLMALIDIR. Bir cihaz uygulaması
GPS alıcısı içeriyorsa GPS kilitlenme süresini en aza indirmek için bir tür "desteklenen GPS"
tekniği İÇERMELİDİR.
7.3.4. Jiroskop
Cihaz uygulamalarında jiroskop (ör. açısal değişim sensörü) YER ALMALIDIR.
3 eksenli bir ivmeölçer de dahil edilmediği sürece cihazlarda jiroskop sensörü YER ALMAMALIDIR.
 Cihaz uygulamasında jiroskop varsa:

Sıcaklık telafisi YAPILMALIDIR
5,5*Pi
radyan/saniyeye (yani saniyede yaklaşık 1.000 derece) kadar yön değişikliklerini ölçebilmelidir
200 Hz veya daha yüksek hızda etkinlik yayınlayabilmelidir. 
Yukarıdaki jiroskop frekansının Android 4.1 için "OLMALI" olarak belirtildiğini, ancak
gelecekteki bir sürüm için uyumluluk tanımının bu ifadeleri"MUTLAKA" olarak değiştirmesinin planlandığını unutmayın.
 Yani bu standartlar Android 4.1'de isteğe bağlıdır ancak gelecekteki sürümlerde
zorunludur
. Android 4.1 çalıştıran mevcut ve yeni cihazların
Android 4.1'de bu koşulları karşılaması çok önemlidir  
böylece gelecekteki platform sürümlerine yükseltilebilirler
12 bit veya daha fazla doğruluk değerine sahip olmalıdır
Hz başına 1e-7 rad^2 / s^2'den (Hz başına varyans,
veya rad^2 / s) daha yüksek bir varyansa sahip olmamalıdır. Değişkenlik, örnekleme hızıyla birlikte değişmelidir ancak
bu değerle sınırlandırılmalıdır. Diğer bir deyişle, jiroskopun varyansını
1 Hz örnekleme hızınday
ö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 gecikmenin kaldırılması gerekir.
7.3.5. Barometre
Cihaz uygulamalarında barometre (ör. ortam hava basıncı sensörü) BULUNMASI MÜMKÜNDÜR. 
Cihaz uygulaması barometre içeriyorsa:
5 Hz veya daha yüksek hızda etkinlik yayınlayabilmelidir
Yüksekliği tahmin etmeyi sağlayacak yeterli hassasiyete sahip olmalıdır
Sıcaklık telafisi yapılmalıdır
7.3.7. Termometre
Cihaz uygulamalarında termometre (ör.
sıcaklık sensörü) bulunabilir ancak bulunmamalıdır. Cihaz uygulamasında termometre varsa
cihazın CPU'sunun sıcaklığını ölçmelidir. Başka bir sıcaklığı ÖLÇMEMELİDİR
. (Bu sensör türünün Android 4.1 API'lerinde desteğinin sonlandırıldığını unutmayın.)
7.3.7. Fotometre
Cihaz uygulamaları, fotometre (ör. ortam ışığı sensörü) İÇERİEBİLİR.
7.3.8. Yakınlık sensörü
Cihaz uygulamalarında yakınlık sensörü BULUNMAYABİLİR. Bir cihaz uygulaması
yakınlık sensörü içeriyorsa
ekranla aynı yönde bir nesnenin yakınlığını ölçmelidir. Yani, bu sensör türünün birincil amacı
kullanıcı tarafından kullanılan 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öne sahip bir 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 olmalıdır.
7.4. Veri Bağlantısı
7.4.1. Telefon hizmetleri
Android 4.1 API'leri ve bu doküman tarafından kullanılan "Telefon hizmetleri" terimi, GSM veya CDMA ağı üzerinden sesli arama yapma ve SMS mesajı gönderme ile ilgili donanıma özel olarak atıfta bulunur.

Bu sesli aramalar paket anahtarlamalı olabilir veya olmayabilir ancak
Android 4.1 için
aynı ağ kullanılarak uygulanabilecek herhangi bir veri bağlantısından bağımsız olarak kabul edilir. Diğer bir deyişle, Android "telefon"
işlevi ve API'leri, sesli aramalara ve SMS'lere özel olarak referans verir; örneğin, arama yapamayan veya SMS mesajları gönderip alamayan cihaz
uygulamalarında, veri bağlantısı için hücresel ağ
kullanıp kullanmadıklarından bağımsız olarak "android.hardware.telephony" özelliği veya alt özellikleri
bildirilmemelidir.
Android 4.1, telefon donanımı içermeyen cihazlarda KULANILABİLİR. Yani,
Android 4.1, telefon olmayan cihazlarla uyumludur. Bununla birlikte, bir cihaz
uygulamasında GSM veya CDMA telefon işlevi varsa bu teknolojinin API'si için tam destek
uygulamalıdır. Telefon
donanımı içermeyen cihaz uygulamaları, tüm API'leri işlemsiz olarak UYGULAMALIDIR.
7.4.2. IEEE 802.11 (Kablosuz)
Android 4.1 cihaz uygulamalarında, 802.11'in
bir veya daha fazla 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, SDK
dokümanlarında [Kaynaklar, 62] açıklandığı gibi çoklu yayın API'si uygulanmalıdır. Kablosuz desteği içeren cihaz uygulamaları
, çoklu yayın DNS'sini (mDNS) DESTEKLEMELİDİR. Cihaz uygulamalarında, ekran etkin durumda değilken de dahil olmak üzere herhangi bir çalışma zamanında mDNS
paketleri (224.0.0.251) filtrelenmemelidir
.
7.4.2.1. Kablosuz Doğrudan Bağlantı
Cihaz uygulamalarında kablosuz doğrudan bağlantı (eşler arası kablosuz bağlantı) desteği YER ALMALIDIR. 
Cihaz uygulamasında kablosuz doğrudan bağlantı desteği varsa
SDK dokümanlarında [Kaynaklar, 68] açıklandığı gibi ilgili Android API'yi UYGULAMASI GEREKİR. 
Cihaz uygulamasında kablosuz doğrudan bağlantı desteği varsa:
Kablosuz bağlantıyı normal şekilde desteklemelidir
Kablosuz bağlantı ve kablosuz doğrudan bağlantıyı aynı anda desteklemelidir
7.4.3. Bluetooth
Cihaz uygulamalarında Bluetooth alıcı/verici YER ALMALIDIR. Bluetooth
alıcı/verici içeren cihaz uygulamalarında, SDK dokümanlarında [Kaynaklar, 42] açıklandığı gibi RFCOMM tabanlı Bluetooth API'si etkinleştirilmelidir.
 Cihaz
uygulamaları,
cihaz için uygun olan A2DP, AVRCP, OBEX vb. 
 ilgili Bluetooth profillerini UYGULAMALIDIR.
Uyumluluk Testi Paketi, Android
RFCOMM Bluetooth API'sinin temel işlevlerini kapsayan testleri 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ı Bölüm A'da açıklanan insan tarafından yönetilen Bluetooth
test prosedürünü de İŞLEMİŞ OLMALIDIR.
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()
metodundan android.hardware.nfc özelliğini bildirmelidir.
[Resources, 37]
Aşağıdaki NFC
standartları ile NDEF mesajlarını okuyup yazabilmelidir:
Aşağıdaki NFC standartları ile NFC Forum okuyucu/yazar olarak (NFC Forum teknik spesifikasyonu NFCForum-TS-DigitalProtocol-1.0 tarafından tanımlandığı şekilde) çalışabilmelidir:
NfcA (ISO14443-3A)
NfcB (ISO14443-3B)
NfcF (JIS 6319-4)
IsoDep (ISO 14443-4)
NFC Forum Etiketi Türleri 1, 2, 3, 4 (NFC Forum tarafından tanımlanmıştır)
Aşağıdaki NFC standartları ile NDEF mesajlarını okuyup yazabilmelidir:


Aşağıdaki NFC standartlarının Android 4.1 için
"OLMALI" olarak belirtildiğini, gelecekteki bir sürüm için Uyumluluk Tanımı'nın ise
bu standartları "OLMALI" olarak değiştirmesinin planlandığını unutmayın. Yani bu standartlar
Android 4.1'de isteğe bağlıdır ancak gelecekteki sürümlerde zorunludur. Android 4.1
yüklü mevcut ve yeni cihazların
bu gereksinimleri karşılaması
önemle tavsiye edilir.Böylece,
gelecekteki platform sürümlerine
yükseltme yapabilecek
.
NfcV (ISO 15693)
Aşağıdaki eşler arası standartlar ve protokoller üzerinden veri gönderip alabilMELİDİR:
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 Protocol [Resources, 43]
SNEP 1.0 (NFC Forum tarafından tanımlanmıştır)
Android Beam desteği [Resources, 65] içerMELİDİR:
SNEP varsayılan sunucusunu uygulamalıdır.
 Varsayılan SNEP sunucusu tarafından alınan geçerli NDEF mesajları
, android.nfc.ACTION_NDEF_DISCOVERED intent'i kullanılarak uygulamalara GÖNDERİLMELİDİR
.
Ayarlar
bölümünde
Android Beam'in 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 dikkate ALINMALIDIR [Kaynaklar, 67].
NPP sunucusunu UYGULAMALIDIR. NPP sunucusu tarafından alınan iletiler
SNEP varsayılan sunucusu ile aynı şekilde işlenmelidir.
SNEP istemcisi uygulamalı ve Android Beam etkinleştirildiğinde varsayılan SNEP sunucusuna
giden P2P NDEF göndermeye çalışmalıdır. Varsayılan
SNEP sunucusu bulunamazsa istemci bir NPP
sunucusuna göndermeyi DENEMELİDİR.
Giden P2P NDEF mesajını ayarlamak için ön plan etkinliklerine izin VERMELİDİR
android.nfc.NfcAdapter.setNdefPushMessage,
android.nfc.NfcAdapter.setNdefPushMessageCal
ve
android.nfc.NfcAdapter.enableForegroundNdefPush kullanılmalıdır.
Giden P2P NDEF mesajları göndermeden önce bir hareket veya ekranda onay (ör.
Işınla'ya dokun) kullanılmalıdır.
Android Beam'i varsayılan olarak etkinleştirmeLİDİR
Cihaz
Bluetooth Nesne İtme Profili'ni desteklediğinde NFC bağlantısının Bluetooth'a aktarılmasını DESTEKLEMELİDİR. Cihaz uygulamalarında, 
android.nfc.NfcAdapter.setBeamPushUris
kullanılırken
"Bağlantı Devre Alma sürümü 1.2" [Kaynaklar, 60] ve "NFC
sürüm 1.0'u kullanarak Bluetooth Güvenli Basit Eşleme" [Kaynaklar, 61] özelliklerini uygulayarak
NFC Forumu'ndan
Bluetooth'a bağlantı aktarımı desteklenmelidir.Bu tür bir uygulama, NFC üzerinden aktarma isteği / seçilen kayıtları değiştirmek için SNEP GET isteklerini
KULLANMALIDIR
ve gerçek Bluetooth veri aktarımı için Bluetooth Nesne Push Profili'ni
KULLANMALIDIR
.

NFC keşif modundayken desteklenen tüm teknolojiler için POL yapmalıdır.
Cihaz uyanıkken ekran
etkin ve kilit ekranı kilidi açıkken NFC keşif modunda OLMALIDIR.
(Yukarıdaki JIS, ISO ve NFC Forum
spesifikasyonları için herkese açık bağlantıların kullanılamadığını unutmayın.)
Ayrıca, cihaz uygulamalarında aşağıdaki MIFARE teknolojileri için okuyucu/yazıcı desteği OLABİLİR.

MIFARE Classic (NXP MF1S503x [Resources, 44], MF1S703x [Resources, 44])
MIFARE Ultralight (NXP MF0ICU1 [Resources, 46], MF0ICU2 [Resources, 46])
MIFARE Classic'te NDEF (NXP AN1
30511 [Resources, 48], AN130411
[Resources, 49])
Bu MIFARE türleri için API'lerin Android 4.1'de yer aldığını unutmayın. Bir cihaz
uygulaması, okuyucu/yazar rolünde MIFARE'i destekliyorsa:

Android SDK'sında belgelendiği gibi ilgili Android API'lerini uygulamalıdır

android.content.pm.PackageManager.hasSystemFeature() yönteminden com.nxp.mifare özelliğini raporlamalıdır.
[Resources, 37] Bu özelliğin standart bir Android özelliği olmadığını ve bu nedenle
PackageManager sınıfında sabit bir değer olarak görünmediğini unutmayın.
Bu bölümde açıklandığı gibi genel NFC desteğini de uygulamadığı sürece
com.nxp.mifare özelliğini bildirmemelidir

Bir cihaz uygulaması NFC donanımı içermiyorsa
android.content.pm.PackageManager.hasSystemFeature()
yönteminden
android.hardware.nfc özelliğini bildirmemelidir
ve Android 4.1 NFC API'sini işlemsiz olarak uygulamalıdır.

android.nfc.NdefMessage ve android.nfc.NdefRecord sınıfları protokolden bağımsız bir veri temsili biçimini temsil ettiğinden, cihaz uygulamaları NFC desteği içermese veya
android.hardware.nfc özelliğini bildirmese bile bu API'leri uygulamalıdır.
7.4.5. Minimum Ağ Özelliği
Cihaz uygulamalarında, bir veya daha fazla veri ağı
türü için destek bulunmalıdır. Özellikle, cihaz uygulamalarında en az bir
200 Kb/sn veya daha yüksek veri standardı desteği YER ALMALIDIR. 
Bu koşulu karşılayan teknolojilere örnek olarak EDGE, HSPA, EV-DO, 802.11g, Ethernet vb. verilebilir.
Fiziksel bir ağ standardının (Ethernet gibi) birincil veri bağlantısı olduğu cihaz uygulamalarında
en az bir yaygın kablosuz veri standardı (ör. 802.11 (WiFi)) için destek de YER ALMALIDIR.

Cihazlar birden fazla veri bağlantısı biçimi UYGULAYABİLİR.

7.5. Kameralar
Cihaz uygulamalarında arka kamera bulunmalıdır ve ön kamera bulunabilir.
 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 ekranıyla aynı tarafta bulunan bir kameradır;
yani görüntülü konferans ve benzer uygulamalarda olduğu gibi 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 BULUNMALISIDIR. Bir cihaz
uygulamasında arka kamera varsa:
en az 2 megapiksel çözünürlükte OLMALIDIR
kamera sürücüsünde (uygulama yazılımına şeffaf) donanım otomatik odaklama veya yazılım otomatik odaklama uygulanmış OLMALIDIR
sabit odaklı veya EDOF (geniş alan derinliği) donanıma sahip OLABİLİR
flaşa sahip OLABİLİR.
 Kamera flaş içeriyorsa uygulama, Camera.Parameters nesnesinin FLASH_MODE_AUTO veya FLASH_MODE_ON özelliklerini etkinleştirerek flaşı açıkça etkinleştirmediği sürece, bir android.hardware.Camera.PreviewCal arka örneği bir kamera önizleme yüzeyine kaydedilmişken flaş lambası YANMAZ.



 Bu kısıtlamanın,
cihazın yerleşik sistem kamerası uygulaması için değil, yalnızca Camera.PreviewCallback
kullanan üçüncü taraf uygulamaları için geçerli olduğunu unutmayın.
7.5.2. Ön Kamera
Cihaz uygulamalarında ön kamera BULUNMAYABİLİR. Bir cihaz uygulaması
ön kamera içeriyorsa:
en az VGA çözünürlüğe (yani 640x480 piksel) sahip OLMALIDIR
Kamera API'si için varsayılan olarak ön kamera KULLANMAMALIDIR. Yani,
Android 4.1'deki kamera API'si ön yüz kameralar için özel desteğe sahiptir ve
cihaz uygulamaları, API'yi ön yüz kamerayı
cihazdaki tek kamera olmasına rağmen varsayılan arka yüz kamerası olarak kullanacak şekilde
yapılandırmamalıdır.
Bölüm 7.5.1'de açıklandığı gibi, arka yüz
kameralarında kullanılabilir özellikleri (ör. otomatik odak, flaş) içerebilir.
Bir uygulama tarafından
CameraPreview'da gösterilen aktarımı yatay yönde yansıtmalıdır (yani yansıtmalıdır):
Cihaz uygulaması kullanıcı tarafından döndürülebiliyorsa (ör.
ivmeölçer aracılığıyla otomatik olarak veya kullanıcı girişi aracılığıyla manuel olarak)
kamera
önizlemesi, cihazın mevcut
yönüne göre yatay yönde yansıtılmalıdır.
Mevcut uygulama, kamera
ekranının
android.hardware.Camera.setDisplayOrientation() [Kaynaklar, 50]
yöntemi aracılığıyla döndürülmesini açıkça talep ettiyse
kamera önizlemesi, uygulama tarafından belirtilen yöne göre yatay yönde yansıtılmalıdır.
Aksi takdirde, önizleme cihazın varsayılan
yatay ekseni boyunca yansıtılmalıdır.
Sonradan görüntüleme tarafından gösterilen görüntüyü
kamera önizleme görüntü akışı ile aynı şekilde yansıtmalıdır. (Cihaz uygulaması
sonradan görüntülemeyi desteklemiyorsa bu şart geçerli değildir.)

Uygulamaya geri döndürülen veya medya depolama alanına kaydedilen
son yakalanan sabit resim veya video akışlarını yansıtmamalıdır
7.5.3. Kamera API Davranışı
Cihaz uygulamalarında, hem ön hem de arka kameralar için kamerayla ilgili API'lerde aşağıdaki davranışlar uygulanmalıdır:
1.
  Bir uygulama hiç android.hardware.Camera.Parameters.setPreviewFormat(int) çağrısında bulunmadıysa
cihaz, uygulama çağrılarına sağlanan önizleme verileri için
android.hardware.PixelFormat.YCbCr_420_SP'yi KULLANMAK ZORUNDADIR.

2.  Bir uygulama bir android.hardware.Camera.PreviewCallback
sınıfı kaydederse ve önizleme
biçimi YCbCr_420_SP olduğunda sistem onPreviewFrame() yöntemini çağırırsa onPreviewFrame()
yöntemine iletilen byte[] içindeki veriler NV21 kodlama biçiminde olmalıdır. Yani, NV21 varsayılan olmalıdır.
3.  Cihaz uygulamalarında, hem ön hem de arka kameraların kamera önizlemeleri için YV12 biçimi (

android.graphics.ImageFormat.YV12 sabitiyle belirtildiği gibi) desteklenmelidir.
 (Donanım video kod çözücüsü ve kamera
herhangi bir doğal piksel biçimini kullanabilir ancak cihaz uygulaması
YV12'ye dönüşümü desteklemelidir.)
Cihaz uygulamalarında, 
4.1 SDK dokümanlarında [Kaynaklar, 51] yer alan
tam Kamera API'si uygulanmalıdır.
Cihazın donanım otomatik odaklama veya başka özellikleri olup olmadığına bakılmaksızın
 Örneğin, otomatik odaklama özelliği olmayan kameralar
, kayıtlı tüm android.hardware.Camera.AutoFocusCallback
örneklerini çağırmalıdır (otomatik odaklama özelliği olmayan kameralarla hiçbir ilgisi olmasa bile). Bu durumun
ön kameralar için geçerli olduğunu unutmayın. Örneğin, çoğu ön
kamera otomatik odaklama özelliğini desteklemese de API'nin arka kamerası
açıklandığı gibi "taklit" edilmelidir.
Cihaz uygulamalarında, temel donanım özelliği destekliyorsa
android.hardware.Camera.Parameters sınıfında sabit olarak tanımlanan her parametre adını tanıması ve dikkate alması GEREKİ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 sınıfında sabit olarak tanımlananlardan başka


söz dizimi sabitleri, android.hardware.Camera.setParameters() yöntemine


geçirilmemeli veya tanınmamalıdır. Yani, cihaz
uygulamaları, donanım
izin veriyorsa tüm standart kamera parametrelerini DESTEKLEMELİDİR ve özel kamera parametresi türlerini DESTEKLEMEMELİDİR.
Cihaz uygulamalarında, kamerayla yeni bir fotoğraf çekildiğinde ve fotoğrafın girişi medya mağazasına eklendiğinde Camera.ACTION_NEW_PICTURE intent'i YAYINLANABİLİR.


Cihaz uygulamalarında, kamera tarafından yeni bir video kaydedildiğinde ve resmin girişi medya mağazasına eklendiğinde
Camera.ACTION_NEW_VIDEO intent'i YAYINLANABİLİR.

7.5.4. Kamera Yönlendirmesi
Mevcutsa hem ön hem de arka kameralar, kameranın uzun boyutunun ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmelidir.
 Yani,
cihaz yatay yönde tutulduğunda kameralar
yatay yönde resim çekMELİDİR. Bu, cihazın doğal yöneliminden bağımsız olarak geçerlidir. Diğer bir deyişle, yatay yönde kullanılan cihazlar için olduğu kadar dikey yönde kullanılan cihazlar için de geçerlidir.

7.6. Bellek ve Depolama
7.6.1. Minimum Bellek ve Depolama
Cihaz uygulamalarında, çekirdek
ve kullanıcı alanında kullanılabilecek en az 340 MB bellek bulunmalıdır. 340 MB, 
çekici, video vb. gibi donanım bileşenlerine ayrılmış ve çekirdeğin
kontrolünde olmayan tüm belleklere ek olarak olmalıdır.
Cihaz uygulamalarında, uygulama özel verileri için en az 350 MB kalıcı olmayan depolama alanı BULUNMASI GEREKİR
. Yani, /data bölümü en az 350 MB olmalıdır.
Android API'leri, uygulamaların veri dosyalarını indirmek için kullanabileceği bir indirme yöneticisi içerir
[Kaynaklar, 56]. İndirilenler Yöneticisi'nin cihaz uygulaması
, en az 100 MB boyutunda tek tek dosyaları
varsayılan "önbelleğe" konumuna indirebilmelidir.
7.6.2. Uygulama Paylaşılan Depolama Alanı
Cihaz uygulamalarında uygulamalar için paylaşılan depolama alanı ZORUNLUDUR. Sağlanan
paylaşılan depolama alanı EN AZ 1 GB BOYUTUNDA OLMALIDIR.
Cihaz uygulamaları, varsayılan olarak ortak depolama alanı monte edilmiş şekilde,
"kutudan çıkar çıkmaz" yapılandırılmalıdır. Ortak depolama alanı, Linux /sdcard yoluna takılı değilse
cihaz, /sdcard'dan gerçek montaj noktasına bir Linux sembolik bağlantısı İÇERMELİDİR.
Cihaz uygulamalarında, bu paylaşılan depolama alanında
android.permission.WRITE_EXTERNAL_STORAGE izninin belgelendiği şekilde uygulanması GEREKİR.
Paylaşılan depolama alanı, bu izni alan tüm uygulamalar tarafından yazılabilir olmalıdır
.
Cihaz uygulamalarında,kullanıcının erişebileceği çıkarılabilir depolama alanı için donanım OLABİLİR
(ör. Secure Digital kart). Alternatif olarak, cihaz uygulamaları
dahili (çıkarılabilir olmayan) depolama alanını uygulamalar için paylaşılan depolama alanı olarak KULLANABİLİR.

Kullanılan paylaşılan depolama alanı biçiminden bağımsız olarak, cihaz uygulamalarında
USB toplu depolama (UMS) veya Medya Aktarım Protokolü (MTP) gibi
bir ana makine bilgisayardan paylaşılan depolama alanının içeriğine erişmek için bir mekanizma sağlanmalıdır.
Cihaz uygulamalarında USB toplu depolama alanı KULLANILABİLİR ancak Medya
Aktarım Protokolü KULLANILMALIDIR.Cihaz uygulaması Medya Aktarımı Protokolü'nü destekliyorsa:
Cihaz uygulaması, referans Android
MTP ana makinesiyle, Android Dosya Aktarımı [Kaynaklar, 57] ile UYUMLU OLMALIDIR.
Cihaz uygulaması, 0x00 USB cihaz sınıfını BİLDİRMELİDİR.
Cihaz uygulaması, "MTP" USB arayüzü adını BİLDİRMELİDİR.
Cihaz uygulamasında USB bağlantı noktası yoksa
ana bilgisayara,
ağ dosyası sistemi gibi başka bir yöntemle
paylaşılan depolama alanının içeriğine erişim sağlaması GEREKİR.
Yaygın olarak karşılaşılan iki örneği ele alalım. Bir cihaz uygulaması,
paylaşılan depolama alanı şartını karşılamak için bir SD kart yuvası içeriyorsa
1 GB veya daha büyük bir FAT biçimli SD kart
kullanıcılara satılan cihaza eklenmeli VE
varsayılan olarak takılmalı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'a monte edilmiş OLMALIDIR (veya /sdcard, başka bir yere monte edilmişse fiziksel konuma giden sembolik bir bağlantı OLMALIDIR.)

Birden fazla paylaşılan depolama yolu içeren cihaz uygulamalarında (ör. hem
SD kart yuvası hem de paylaşılan dahili depolama alanı), medya tarayıcısı ve ContentProvider gibi temel uygulamalar, her iki konuma da yerleştirilen dosyaları şeffaf bir şekilde desteklemek için DEĞİŞTİRİLMELİDİR.


7.7. USB
Cihaz uygulamalarında USB istemci bağlantı noktası ve USB ana makine bağlantı noktası YER ALMALIDIR.

Cihaz uygulamasında USB istemci bağlantı noktası varsa:
bağlantı noktası, standart USB-A bağlantı noktasına sahip bir USB ana makineye bağlanabilmelidir
bağlantı noktası, cihaz tarafında mikro USB form faktörünü KULLANMALIDIR. Android
4.1 çalıştıran mevcut
ve yeni cihazların,
gelecekteki
platform sürümlerine yükseltebilmeleri için Android 4.1'deki bu gereksinimleri karşılamaları 
çok önemle önerilir
. Bağlantı noktası, bir kenarın ortasına yerleştirilmelidir.
 Cihaz uygulamalarında
, bağlantı noktasının cihazın alt tarafında (doğal
yönlendirmeye göre) yerleştirilmesi VEYA tüm uygulamalar (ana
ekran dahil) için yazılım ekranı döndürme seçeneğinin etkinleştirilmesi GEREKİR.
Böylece, cihazın bağlantı noktası altta olacak şekilde yönlendirildiğinde
ekran doğru şekilde çizilir. Android 4.1 çalıştıran mevcut ve yeni cihazların, 
gelecekteki platform sürümlerine yükseltebilmeleri için
Android 4.1'deki bu gereksinimleri karşılamaları çok
önemlidir
.
Cihazın başka bağlantı noktaları varsa (ör. USB olmayan bir şarj bağlantı noktası)
bu bağlantı noktaları mikro USB bağlantı noktasıyla aynı kenarda OLMALIDIR
.
Cihazın bağlı olduğu ana makinenin, 
USB toplu depolama veya medya aktarma protokolünü kullanarak
paylaşılan depolama biriminin içeriğine erişmesine izin VERİLMELİDİR
.
Android
SDK dokümanlarında belirtildiği gibi Android
Open Accessory API'yi ve spesifikasyonu UYGULAMALIDIR
ve
android.hardware.usb.accessory
donanım özelliği için destek BEYAN ETMELİDİR [Kaynaklar, 52].
Android
SDK dokümanlarında belirtildiği gibi USB ses sınıfını UYGULAMALIDIR
[Kaynaklar, 66].
USB
pil şarjı spesifikasyonu için destek UYGULAMALIDIR
[Kaynaklar, 64].
Android
4.1 çalıştıran mevcut ve yeni cihazların, 
gelecekteki platform sürümlerine yükseltebilmeleri için
Android
4.1'deki bu gereksinimleri karşılamaları çok
önemlidir
.
Cihazın USB ana makine bağlantı noktası varsa:
Bu bağlantı noktası standart olmayan bir bağlantı noktası biçim faktörü kullanabilir ancak bu durumda bağlantı noktasını standart USB-A'ya uyarlayan bir kablo veya kablolar ile birlikte gönderilmelidir
.
Android
SDK'sında belirtildiği gibi Android
USB ana makine API'sini UYGULAMALIDIR
ve
android.hardware.usb.host
donanım özelliği için destek BEYAN ETMELİDİR [Kaynaklar, 53].
Cihaz uygulamalarında Android Debug Bridge UYGULANMALIDIR.
 Bir cihaz
uygulamasında USB istemci bağlantı noktası atlanmışsa
Android Hata Ayıklama Köprüsü
yerel alan ağı (ör. Ethernet veya 802.11)
üzerinden UYGULANMALIDIR.
8. Performans Uyumluluğu
Cihaz uygulamalarının, aşağıdaki tabloda tanımlanan Android 4.1
uyumlu bir cihazın temel performans metriklerini karşılaması GEREKİR:
Metrik
Performans Eşiği
Yorumlar
Aşağıdaki uygulamalar
belirtilen süre içinde
başlatılmalıdır.
Başlatma zamanı,
tarayıcının yüklenmesinin tamamlanması için gereken
toplam süre olarak ölçülür.
Uygulama
Başlatma
Zamanı
Kişiler:
Linux
işlemini başlatmak, Android
paketini Dalvik
VM'ye yüklemek ve
onCreate çağrısını yapmak için gereken süre dahil olmak üzere 700 ms
den kısa
Ayarlar:
700 ms
den kısa

700 ms
Birden fazla
uygulama
başlatıldığında,
zaten
eşzamanlı
çalışmakta olan bir uygulamayı
 
Uygulamalar
başlatıldıktan
sonra yeniden başlatma
,
orijinal
başlatma süresinden daha kısa sürmelidir.
9. Güvenlik Modeli Uyumluluğu
Cihaz uygulamalarında, Android geliştirici dokümanlarında yer alan API'lerdeki Güvenlik ve İzinler referans belgesinde [Kaynaklar, 54] tanımlandığı üzere Android
platform güvenlik modeliyle tutarlı bir güvenlik modeli UYGULANMALIDIR.
 Cihaz
uygulamaları, üçüncü taraflardan/yetkililerden ek izinler/sertifikalar
istemeden kendi kendine imzalanan uygulamaların yüklenmesini desteklemelidir.
Özellikle, uyumlu cihazlar
aşağıdaki alt bölümlerde açıklanan güvenlik mekanizmalarını desteklemelidir.
9.1. İzinler
Cihaz uygulamalarında, Android geliştirici dokümanlarında [Kaynaklar, 54] tanımlandığı şekilde Android izin modelini desteklenmelidir.
 Özellikle, uygulamalar
SDK dokümanlarında açıklandığı şekilde tanımlanan her izni UYGULAMALIDIR;
hiçbir izin atlanmamalı, değiştirilmemeli veyagöz ardı edilmemelidir. Yeni izin kimliği dizelerinin android.*
ad alanında olmaması koşuluyla,

uygulamalar ek izinler EKLEYEBİLİYOR.
9.2. UID ve İşlem İzolasyonu
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, aynı Linux kullanıcı kimliğiyle birden fazla uygulamanın çalıştırılması desteklenmelidir. Bunun için uygulamaların, Güvenlik ve İzinler referansında [Kaynaklar, 54] tanımlandığı şekilde düzgün bir şekilde imzalanması ve oluşturulması gerekir.



9.3. Dosya Sistemi İzinleri
Cihaz uygulamalarında, Güvenlik ve İzinler referansında [Kaynaklar, 54] tanımlandığı şekilde Android dosya erişim izinleri modeli desteklenmelidir.

9.4. Alternatif Yürütme Ortamları
Cihaz uygulamalarında, Dalvik sanal makinesi veya yerel koddan farklı bir yazılım ya da teknoloji kullanarak uygulamaları çalıştıran çalışma ortamı OLABİ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 ihlal etmemelidir.
Alternatif çalışma ortamları,
Bölüm 9'da başka bir yerde açıklandığı gibi standart Android güvenlik modeline uymalı ve Android uygulamaları olmalıdır.
Alternatif çalışma ortamlarına, çalışma ortamının AndroidManifest.xml dosyasında <uses-
permission> mekanizması aracılığıyla istenmeyen izinlerle korunan kaynaklara erişim İÇİNDEKİ OLMAYACAK.


Alternatif çalışma ortamları, uygulamaların sistem uygulamalarıyla sınırlı Android izinleriyle korunan özellikleri kullanmasına izin VERMEMELİDİR.

Alternatif çalışma zamanları Android korumalı alan modeline UYMALIDIR. Ayrıntılı olarak:
Alternatif çalışma ortamları, uygulamaları PackageManager aracılığıyla ayrı
Android korumalı alanlarına (ör. Linux kullanıcı kimlikleri) YÜKLEMELİDİR
Alternatif çalışma ortamları, tüm
alternatif çalışma ortamını kullanan uygulamalar tarafından paylaşılan tek bir Android korumalı alanı sağlayABİLİR
Alternatif çalışma ortamları ve alternatif çalışma ortamını kullanan yüklü uygulamalar,
cihazdaki diğer uygulamaların korumalı alanlarını,
ortak kullanıcı kimliği ve imzalama sertifikası gibi standart Android mekanizmaları aracılığıyla hariç tutmak şartıyla yeniden KULLANMAMALIDIR
Alternatif çalışma ortamları,
diğer Android uygulamalarına karşılık gelen korumalı alanları kullanarak,
başlatılmamalı, bu korumalı alanlara erişim izni verilmemeli veya bu korumalı alanlara erişim izni verilmemelidir
Alternatif çalışma ortamları,
süper kullanıcının (root) veya başka bir kullanıcı kimliğinin ayrıcalıklarını kullanarak
başlatılmamalı, bu ayrıcalıklara erişim izni verilmemeli veya bu ayrıcalıklara erişim izni verilmemelidir.
Alternatif çalışma zamanlarının .apk dosyaları, bir cihaz uygulamasının sistem görüntüsüne DAHİL EDİLEBİLİR ancak cihaz uygulamasına dahil edilen diğer uygulamaların imzalanması 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 ALMALIDIR. Yani, bir uygulamanın
karşılık gelen bir Android izni
 (ör. Kamera, GPS vb.)
olan bir cihaz kaynağını kullanması gerekiyorsa alternatif çalışma zamanında, uygulamanın bu kaynağa erişebileceği
kullanıcıya bildirilmelidir. Çalışma zamanı ortamı,
uygulama özelliklerini bu şekilde kaydetmezse çalışma zamanı ortamı, bu çalışma zamanını kullanan herhangi bir uygulamayı yüklerken çalışma zamanı ortamının sahip olduğu tüm
izinleri listelemelidir.
10. Yazılım Uyumluluk Testi
Cihaz uygulamalarının bu bölümde açıklanan tüm testleri İYİ GEÇİRMESİ GEREKİR.
Ancak hiçbir yazılım testi paketinin tam kapsamlı olmadığını unutmayın. Bu nedenle,
cihaz uygulayıcılarının, Android
4.1'in referans ve tercih edilen uygulamasında mümkün olduğunca az
değişiklik yapmaları
Android Açık Kaynak Projesi'nden
önerilmektedir. Bu,
yeniden çalışma ve olası cihaz güncellemeleri gerektiren uyumsuzluklara yol açan hatalara yol açma
riskini en aza indirir.
10.1. Uyumluluk Test Paketi
Cihaz uygulamalarının, Android Açık Kaynak Projesi'nden edinilebilen Android Uyumluluk Test Paketi'ni (CTS)
[Kaynaklar, 2] 
geçmesi VE cihazdaki nihai gönderim yazılımını kullanması 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 olması durumunda ve referans kaynak kodunun
parçalarının yeniden uygulanması için uyumluluğu sağlamalıdır.
CTS, gerçek bir cihazda çalışacak şekilde tasarlanmıştır. Herhangi bir yazılım gibi, 
CTS'de de hatalar olabilir. CTS, bu Uyumluluk
Tanımından bağımsız olarak sürümlenir ve Android 4.1 için CTS'nin birden fazla düzeltmesi yayınlanabilir. Cihaz
uygulamaları, cihaz
yazılımı tamamlandığında mevcut olan en son CTS sürümünden GEÇMELİDİR.
10.2. CTS Doğrulayıcı
Cihaz uygulamalarında, CTS
Doğrulayıcı'da geçerli tüm durumlar doğru şekilde yürütülmelidir. CTS Doğrulayıcı, Uyumluluk Test Paketi'ne dahildir ve
bir kameranın ve sensörlerin doğru çalışması gibi otomatik
bir sistem tarafından test edilemeyecek işlevleri test etmek için bir operatör tarafından çalıştırılmak üzere tasarlanmıştır.
CTS Doğrulayıcı, isteğe bağlı olan bazı donanımlar da dahil olmak üzere birçok donanım türü için testlere sahiptir.
 Cihaz uygulamalarının, sahip oldukları donanımla ilgili tüm testleri geçmesi GEREKİR.
Örneğin, bir cihazda ivmeölçer varsa bu cihaz, CTS Doğrulayıcı'da ivmeö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.
Yukarıdaki gibi her cihaz ve her derleme, CTS Doğrulayıcı'yı doğru şekilde çalıştırmalıdır.
Bununla birlikte, birçok derleme birbirine çok benzediğinden cihaz uygulayıcılarının
yalnızca önemsiz şekillerde farklı olan derlemelerde CTS Doğrulayıcı'yı açıkça çalıştırması beklenmez. Özellikle,
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 atlayabilir.
10.3.Referans Uygulamalar
Cihaz uygulayıcıları, aşağıdaki açık kaynak uygulamaları kullanarak uygulama uyumluluğunu test ETMELIDİR:
"Android için Uygulamalar" uygulamaları [Kaynaklar, 55]
Replica Island (Android Market'te mevcuttur)
Uygulamanın uyumlu kabul edilmesi için yukarıdaki her uygulamanın uygulamada başlatılması ve doğru şekilde çalışması ETMELIDİR.


11. Güncellenebilir Yazılım
Cihaz uygulamalarında, sistem yazılımının tamamını
değiştirme mekanizması BULUNMASI GEREKİR. Mekanizmanın "canlı" yükseltmeler yapması gerekmez. Yani cihazın
yeniden başlatılması GEREKEBİLİR.
Cihazdaki
önceden yüklenmiş yazılımın tamamını değiştirebildiği sürece herhangi bir yöntem kullanılabilir. Örneğin, aşağıdaki yaklaşımlardan herhangi biri
bu koşulu karşılar:
Yeniden başlatma yoluyla çevrimdışı güncellemeyle kablosuz (OTA) indirme
Ana bilgisayar PC'den USB üzerinden "bağlantılı" güncelleme
Yeniden başlatma ve çıkarılabilir depolama alanındaki bir dosyadan güncelleme yoluyla "çevrimdışı" güncelleme
Kullanılan güncelleme mekanizması, kullanıcı verilerini silmeden güncellemeleri desteklemelidir. Yani,
güncelleme mekanizması, uygulama gizli verilerini ve uygulama
paylaşılan verilerini korumalıdır. Yukarı akış 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 piyasaya sürüldükten sonra ancak
Android Uyumluluk Ekibi ile istişare edilerek belirlenen makul
ürün ömrü içinde üçüncü taraf uygulamalarının uyumluluğunu etkileyecek bir hata bulunursa
cihaz uygulayıcısı, hatayı
az önce açıklanan mekanizmaya göre uygulanabilen bir yazılım güncellemesiyle düzeltMELİDİR.
12. Bize Ulaşın
Konuyla ilgili daha fazla bilgi edinmek
ve belgede yer almadığını düşündüğünüz sorunları bildirmek için compatibility@android.com adresinden belgenin yazarlarıyla iletişime geçebilirsiniz.

Ek A - Bluetooth Test Prosedürü
Uyumluluk Testi Paketi, Android
RFCOMM Bluetooth API'sinin temel işlevlerini kapsayan testleri 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ı aşağıda açıklanan manuel Bluetooth
test prosedüründen de geçmek ZORUNDADIR.
Test prosedürü, Android
açık kaynak proje ağacında bulunan BluetoothChat örnek uygulamasına dayanır. Prosedürde iki cihaz gerekir:
test edilecek yazılım derlemesini çalıştıran bir aday cihaz uygulaması
uyumlu olduğu bilinen ayrı bir cihaz uygulaması ve test edilen cihaz uygulamasından bir model
yani "iyi bilinen" bir
cihaz uygulaması
Aşağıdaki test prosedürü bu cihazları sırasıyla "aday" ve "iyi bilinen
cihazlar" olarak ifade eder.
Kurulum ve Yükleme
1.  Android kaynak kodu ağacından "make samples" aracılığıyla BluetoothChat.apk'yi derleyin
2.  BluetoothChat.apk'yı iyi bildiğiniz cihazlara yükleyin
3.  BluetoothChat.apk'yi aday cihazlara yükleyin
Uygulamalarla Bluetooth Denetimini Test Edin
1.  Bluetooth devre dışıyken, aday cihazda BluetoothChat'i başlatın
2.  Aday cihazın Bluetooth'u açtığını veya kullanıcıya Bluetooth'u açması için bir iletişim kutusu gösterdiğini doğrulayın
Eşlemeyi ve İletişimi Test Et
1.
  Her iki cihazda da Bluetooth Chat uygulamasını başlatın
2.  BluetoothChat'ten
Menüyü
kullanarak
3.  Aday cihazda, BluetoothChat
bölümünden
(Menüyü kullanarak) Bluetooth cihazlarını tarayın ve iyi bilinen cihazla eşleyin
4.  Her cihazdan 10 veya daha fazla mesaj gönderin ve diğer cihazın
iletileri doğru şekilde aldığını
doğrulayın
5.  Ana Sayfa
düğmesine basarak her iki cihazda da BluetoothChat uygulamasını kapatın6.  Cihaz Ayarları uygulamasını kullanarak her cihazın eşlemesini kaldırın
Eşlemeyi ve İletişimi Ters
Yönde
test edin
1.  Her iki cihazda da Bluetooth Chat uygulamasını başlatın.
2.  Aday cihazı BluetoothChat'ten bulunabilir hale getirin (
Menüyü kullanarak).
3.  Sorunsuz olduğu bilinen cihazda, BluetoothChat
'ten Bluetooth cihazları arayın (Menüyü kullanarak) ve aday cihazla eşleyin.
4.  Her cihazdan 10 veya daha fazla mesaj gönderin ve diğer cihazın bunları doğru şekilde aldığını doğrulayın.

5.  Başlatıcı'ya gitmek için her iki cihazda da Bluetooth Chat uygulamasını kapatmak üzere art arda Geri düğmesine basın.

Yeniden lansmanları test etme
1.  Bluetooth Chat uygulamasını her iki cihazda da yeniden başlatın.
2.  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ü Ana Sayfa'yı kullanarak sonlandıran bazı durumlar ve
Geri'yi kullanan bazı durumlar vardır. Bu testler gereksiz değildir ve isteğe bağlı değildir: Amaç,
Bluetooth API'sinin ve yığınının hem
etkinlikler açıkça sonlandırılırken (kullanıcı Geri tuşuna basarak işlemi sonlandırır) hem de dolaylı olarak arka plana gönderilirken (kullanıcı Ana Sayfa tuşuna basarak işlemi sonlandırır) doğru şekilde çalıştığını doğrulamaktır.
 Her test dizisi
açıklandığı gibi
gerçekleştirilmelidir.