Android nežádá po výrobcích telefonů čidlo, které u ucha zhasíná displej
Čidlo přiblížení zhasne displej, jakmile si telefon dáte k uchu. Apple ho popsal už v tiskové zprávě k prvnímu iPhonu, Android pro něj otevřel rozhraní na jaře 2009. Definice kompatibility Androidu ho ale dodnes vede jako nepovinný a počítá s tím, že umí jen dvě hodnoty.
Telefon si dáte k uchu a displej zhasne. Je to drobnost, které si nikdo nevšimne, dokud nepřestane fungovat; pak si člověk ukončí hovor lícní kostí nebo zapne bradou hlasitý odposlech. Stará se o to čidlo přiblížení, kousek elektroniky schovaný vedle sluchátka.

Trojice čidel v tiskové zprávě z roku 2007
Tisková zpráva z 9. ledna 2007, kterou Apple vydal v den představení iPhonu, věnuje čidlům samostatný oddíl. Jsou v něm tři: akcelerometr, čidlo přiblížení a čidlo okolního světla. O prostředním z nich zpráva říká v překladu toto: „Vestavěné čidlo přiblížení pozná, že jste iPhone zvedli k uchu, a okamžitě vypne displej, aby šetřilo energii a zabránilo nechtěným dotykům, dokud iPhone neoddálíte.“
V jedné větě jsou dvě různé věci. Zhasnutý displej ubere odběr, ale důležitější je ta druhá půlka. Dokud je tvář u telefonu, dotyková vrstva ignoruje, co se po ní otírá; bez toho by kapacitní displej u ucha spouštěl, co ho napadne.
Android pro čidlo otevřel rozhraní na jaře 2009
Aplikace se k čidlu v Androidu dostane přes konstantu TYPE_PROXIMITY ve třídě Sensor. Referenční dokumentace u ní uvádí „Added in API level 3“ a hodnotu 8. Úroveň 3 je podle výčtu Build.VERSION_CODES Android 1.5, vydaný v dubnu 2009 – tedy víc než dva roky po tiskové zprávě Applu.
U té konstanty stojí ještě jedna poznámka: je to probouzecí čidlo. Když se stav změní, systém kvůli němu probudí procesor, i když přístroj spí. U hovoru je to nutnost. Displej musí zhasnout v tu chvíli, ne až se telefon probere sám.
Měří v centimetrech, většinou ale zná jen dvě hodnoty
Co čidlo vrací, popisuje dokumentace třídy SensorEvent: vzdálenost předmětu v centimetrech. Hned za tou větou je ale výhrada, v překladu: „Některá čidla přiblížení umějí jen binární měření blízko, nebo daleko. V takovém případě má čidlo ve stavu daleko hlásit svůj maximální rozsah a ve stavu blízko hodnotu nižší.“
Aplikace, která čidlo vypíše, tedy u většiny telefonů neukáže plynulou řadu čísel, ale přeskakování mezi dvěma. Centimetry jsou formát, ne příslib přesnosti.
Co po čidle Android chce
Nejpodrobnější je definice kompatibility Androidu, dokument, kterým Google popisuje, co musí přístroj splnit, aby se dal označit za kompatibilní. Oddíl 7.3.8 začíná větou, že zařízení čidlo přiblížení mít smí – tedy nemusí. Teprve pak přijdou požadavky, a platí jen pro ta binární:
- čidlo musí měřit ve stejném směru, kterým míří displej, protože účelem je poznat telefon přiložený k hlavě;
- čidlo namířené jinam se přes tohle rozhraní nesmí zpřístupnit vůbec;
- přesnost musí být aspoň jeden bit;
- jako blízko se hlásí nula centimetrů, jako daleko pět;
- maximální rozsah i rozlišení musí být 5.
Těch pět centimetrů není naměřená vzdálenost, ale dohodnuté číslo. Dva telefony, které hlásí totéž, můžou mít čidlo s úplně jinou citlivostí a jiným úhlem záběru.
Nepovinné znamená nepovinné
Z toho, že čidlo není povinné, plyne pro vývojáře jediná praktická věc: aplikace nesmí počítat s tím, že ho telefon má. Kdo na něm chce něco stavět, musí se nejdřív zeptat systému, jestli tam je, a napsat i to, co se stane, když není.
Čidlo přiblížení tak zůstává součástkou, o které se mluví jedině tehdy, když přestane fungovat – a kterou specifikace Androidu po devatenácti letech od prvního iPhonu pořád vede jako dobrovolnou.
Zdroje
- Apple Reinvents the Phone with iPhone, tisková zpráva Applu, 9. ledna 2007
- Sensor a SensorEvent, referenční dokumentace Androidu
- Build.VERSION_CODES, referenční dokumentace Androidu
- Android 16 Compatibility Definition, oddíl 7.3.8