Mnoho zapálených uživatelů Androidu využívá alternativní recovery, jako je TWRP nebo ClockworkMod, pro instalaci upravených ROM a modulů, vytváření a obnovu kompletních záloh zařízení, a dokonce i pro správu souborů prostřednictvím propracovaného správce souborů AROMA. Ačkoli většina uživatelů běžně nepotřebuje snímky obrazovky z recovery režimu, my, autoři blogů, vývojáři alternativních recovery a aplikací postavených na AROMA, a také tvůrci motivů pro recovery, tuto funkci často potřebujeme pro demonstraci recenzovaných produktů nebo aktuální práce. V následujícím textu si ukážeme, jak snadno pořídit snímky obrazovky vašeho Android zařízení, když je spuštěno v recovery režimu, bez ohledu na to, jakou alternativní recovery používáte.
Běžný postup pro pořízení snímku obrazovky, tedy kombinace tlačítka snížení hlasitosti a vypínače, v recovery režimu nefunguje. Dříve se k tomuto účelu používal nástroj DDMS z Android SDK, avšak s posledními aktualizacemi již tento postup není funkční.
Jediné funkční řešení, o kterém jsem dosud věděl, spočívalo v manuálním extrahování surových dat z framebufferu a jejich následném zpracování pomocí nástroje ffmpeg pro získání požadovaného snímku. Toto řešení má však jeden zásadní háček: neexistuje jediný univerzální příkaz pro všechna Android zařízení. Různá zařízení a recovery používají pro framebuffer odlišné formáty pixelů, a proto je třeba příkaz upravit tak, aby odpovídal nativnímu rozlišení zařízení a krokovému faktoru v surovém obraze. Osobně jsem strávil hodiny snahou o určení těchto parametrů u některých mých zařízení, když jsem vytvářel návody, které obsahovaly snímky obrazovky z recovery režimu.
Dnes vám představíme skvělý nástroj od člena XDA s přezdívkou makers_mark, který celou tuto práci zastane za vás a všechny tyto komplikace udrží v pozadí.
Představujeme Recovery Screenshot
Recovery Screenshot je skript (v této verzi dostupný pouze pro Windows), který využívá ADB a ffmpeg pro získání surových dat z framebufferu vašeho zařízení a jejich následné zpracování tak, aby vytvořil snímek obrazovky ve formátu PNG.
Než začnete vytvářet snímky obrazovky z recovery, je třeba nástroj nakonfigurovat pro vaše konkrétní zařízení. Podívejme se, jak na to.
Konfigurace Nástroje
Před pokračováním restartujte zařízení do recovery režimu, připojte jej k počítači pomocí USB kabelu a ujistěte se, že máte nainstalovány potřebné ovladače.
Stáhněte si Recovery Screenshot a extrahujte obsah ZIP archivu do libovolné složky ve vašem počítači. Poté spusťte nástroj pomocí souboru RUNrs.bat, který se nachází ve složce. Skript vám nabídne následující možnosti:
Zvolte první možnost, tedy provedení konfigurace, stisknutím klávesy 1. Poté budete dotázáni na rozměry obrazovky vašeho zařízení v pixelech. Nezapomeňte zadat menší rozměr jako šířku a větší jako výšku.
Recovery Screenshot následně stáhne data z framebufferu vašeho zařízení, zpracuje je v několika pixelových formátech pomocí ffmpeg a umístí zpracované PNG soubory do složky „Pixel_formats“, která se nachází ve složce, kam jste nástroj extrahovali.
Nyní otevřete složku Pixel_formats a prohlédněte si všechny obrázky. Všimnete si, že většina z nich vypadá nesprávně, což je naprosto v pořádku. Byly zpracovány s použitím jiného formátu pixelů, než jaký používá vaše zařízení. Musíte najít obrázek, který vypadá správně, poznamenat si jeho název (což je název jeho pixelového formátu) a pokračovat stisknutím libovolné klávesy.
Pokud se vám podařilo najít správný obrázek, pokračujte stisknutím klávesy 1 pro dokončení nastavení. Pokud jste tentokrát neměli štěstí, stiskněte 2 a nástroj otestuje více, méně běžně používaných formátů. V takovém případě si opět prohlédněte desítky nově přidaných obrázků ve stejné složce a poznačte si jejich název, až najdete ten správný.
Poté, co najdete správný formát pixelů, zadejte jej na další obrazovce přesně tak, jak se objevuje v názvu souboru (bez přípony .PNG). Například během testování se zařízením Nexus 5 byl správný obrázek pojmenován rgb0.png, takže správný formát pixelů byl rgb0.
Po zadání správného formátu pixelů pro vaše zařízení a stisknutí klávesy Enter je konfigurace dokončena – nyní můžete začít pořizovat snímky obrazovky z recovery režimu. Vaše nastavení se uloží, a při dalším spuštění již nebudete muset pro stejné zařízení skript znovu konfigurovat.
Snímání Obrazovky v Recovery
Po dokončení úvodní konfigurace se vám při každém spuštění nástroje zobrazí následující možnosti:
Mírně matoucí může být přítomnost tří možností pro získání framebufferu. Vysvětlení principu fungování systému dvojitých framebufferů v Androidu je nad rámec tohoto návodu. Obraz, který hledáte, se může nacházet v libovolném z framebufferů, proto je nejlepší vždy vybrat třetí možnost, tedy oba framebuffery. Stačí stisknout 3 a Recovery Screenshot začne stahovat a zpracovávat oba framebuffery.
Výsledné zpracované obrázky budou uloženy do podsložky v hlavní složce skriptu a budou pojmenovány podle aktuálního data. Obrázky uvnitř budou pojmenovány podle aktuálního času a také podle framebufferu (horní nebo dolní).
Mějte na paměti, že pokud budete chtít pořizovat snímky obrazovky jiného zařízení, bude možná nutné znovu nakonfigurovat nástroj. Chcete-li tak učinit, stačí na hlavní obrazovce stisknout 4, resetovat nastavení a začít znovu. Pátá možnost, tedy manuální režim, nevyžaduje připojení zařízení v recovery režimu a můžete ji použít pro ruční zadání nastavení a zpracování libovolného raw obrazového souboru.
Ukázkové Snímky
Zde je několik snímků obrazovky pořízených v recovery režimu pomocí skriptu. První snímek zobrazuje domovskou obrazovku TWRP recovery, druhý ukazuje průběh instalace a třetí je snímek správce souborů AROMA.
Ačkoliv se nejedná o funkci, kterou by využíval každý, protože běžní a dokonce i pokročilejší uživatelé pravděpodobně nikdy nebudou potřebovat pořizovat snímky z recovery režimu, Recovery Screenshot může být záchranou pro uživatele jako já, kteří museli dříve ručně stahovat data z framebufferu a pomocí příkazů ffmpeg zpracovávat raw obrázky, kdykoliv potřebovali zkontrolovat vlastní recovery nebo AROMA skript.