Mastering Development Tools II.
GPS, správca balíčkov, dumpsys
, správca aktivít
Playing with GPS
Ako vývojar aplikácií pre chytré zariadenia budete častokrát pracovať aj so senzormi, ktoré tieto zariadenia obsahujú. Jedným z týchto senzorov je aj GPS, pomocou ktorého je možné sledovať polohu zariadenia. V tomto kroku sa pozrieme na to, čo všetko nám Android emulátor ponúka pre prácu s GPS senzorom.
Úloha
Zistite na vašom emulátore bez použitia Google, čo sa nachádza na súradniciach 21.249061 (longitude) a 48.733411 (latitude).
Pre riešenie tejto úlohy využite rozšírené ovládanie emulátora.
Úloha
Stiahnite si do počítača súbor morning.travel.gpx a importnite ho do emulátora prostredníctvom okna rozšíreného ovládania (Extended controls).
Úloha
Prehrajte tento súbor a výsledok prehrávania si overte v aplikácii Maps.
Tento súbor obsahuje postupnosť bodov, ktoré opisujú vykonanú cestu. V závislosti od hustoty bodov môžete rýchlosť prehrávania zrýchľovať a spomalovať. Samotnú prechádzku si môžete vizualizovať pomocou ľubovoľnej aplikácie, ktorá pracuje s GPS senzorom. V emulátore je nainštalovanou aplikáciou aplikácia Maps.
Package Management
O tom, aké balíky sú v OS Android nainštalované, vie Package Manager. Ten o nainštalovaných balíkoch vie rozličné informácie. Rovnako však umožňuje získať rozličné informácie o zariadení samotnom. Na použitie Package Manager-a sa pozrieme v tomto kroku.
Úloha
Získajte zoznam nainštalovaných balíkov v zariadení.
Aj keď je Package Manager v Android SDK reprezentovaný samostatným objektom, v príkazovom riadku s ním môžeme komunikovať pomocou nástroja pm
. Po jeho spustení bez parametrov sa vám zobrazí pomocník.
Úloha
Zistite zoznam vlastností (features), ktoré vaše zariadenie poskytuje.
Každé Android zariadenie poskytuje špecifické vlastnosti aj vzhľadom na to, akými senzormi je vybavené. To znamená, že ak je napr. vybavené GPS senzorom, bude obsahovať vlastnosť android.hardware.location
. Ak obsahuje kameru, bude obsahovať vlastnosti ako android.hardware.camera
, android.hardware.camera.autofocus
, poprípade android.hardware.camera.flash
, ak obsahuje aj blesk. V prípade, že budete vytvárať aplikáciu, ktorá pre svoju funkčnosť potrebuje niektorú z týchto vlastností, musíte ju vo svojej aplikácii overiť.
Úloha
Vytiahnite z emulátora inštalačný balík aplikácie Calendar
Main Building Blocks
Úloha
Z nasledujúceho odkazu si stiahnite do počítača aplikáciu Try Me
Pre stiahnutie môžete použiť napr. nástroj wget
.
Úloha
Nainštalujte aplikúciu Try Me na SD kartu vášho emulátora pomocou nástroja adb
.
Úloha
Spustite nainštalovanú aplikáciu.
Pokiaľ sa budete pokúšať aplikáciu spustiť, veľmi neuspejete. To preto, že táto aplikácia nemá grafické rozhranie. O tom, že je však aplikácia naozaj nainštalovaná, sa môžete presvedčiť z menu Settings > Apps, odkiaľ ju môžete v prípade potreby aj odinštalovať.
Inštaláciu si môžete rovnako overiť z príkazového riadku pomocou príkazu:
$ adb shell pm list packages | grep tryme
package:sk.tuke.smart.tryme
Úloha
Spustite aktivitu MainActivity
z balíka (aplikácie) sk.tuke.smart.tryme
pomocou správcu aktivít (Activity Manager).
Správca aktivít je dostupný v príkazovom riadku emulátora pomocou príkazu am
.
Pri špecifikovaní aktivity je potrebné uviesť aj balíček, do ktorého aktivita (teda trieda) patrí. Syntax tohto zápisu vyzerá nasledovne:
path.to.your.package/.activity
Ak ste postupovali správne, po spustení sa vám na obrazovke zariadenia zobrazí aktivita MainActivity
.
Úloha
Spustite aktivitu ReceiveMe
z balíka sk.tuke.smart.tryme
.
Úloha
Spustite aktivitu ReceiveMe
z balíka sk.tuke.smart.tryme
s textovým parametrom message
a správou Hello student
.
Pri otvorení novej aktivity by sa vám mal text Hello student
zobraziť na obrazovke zariadenia. Všimnite si rozdiely pri posielaní intent-u pri spúštaní aktivity:
- ak aplikácia ešte nebola spustená, spustí sa ako nová,
- ak aplikácia beží na pozadí (napr. bol použitý Home button), už existujúca aktivita
ReceiveMe
sa dostane do popredia, - ak je aktivita
ReceiveMe
na popredí, prijatý text ako parameter sa nezmení napriek prijatému intent-u s parametrommessage
.
Skúste vysvetliť takéto správanie sa aplikácie pri rôznych situáciách.
Úloha
Vytvorte broadcast správu sk.tuke.smart.tryme.MSG
s extra reťazcovým argumentom message
a správou “Hello world”
Broadcast je správa, ktorá je odoslaná do celého systému. Každá broadcast správa je identifikovaná jednoznačným identifikátorom a môže, ale nemusí so sebou niesť extra údaje. Ak chce aplikácia odoberať správy určitého typu, musí mať vytvorený tzv. broadcast receiver so špecifikovaním typu správ, ktoré má odoberať.
am broadcast -a sk.tuke.smart.tryme.MSG --es message "hello world"
Úloha
Odinštalujte aplikáciu Try Me z emulátora.
Summary
adb install tryme.apk
- nainštaluje balík/súbortryme.apk
z hosťovského počítačaadb uninstall sk.tuke.smart.tryme
- odinštaluje balíksk.tuke.smart.tryme
z Android-upm list packages
- zobrazí zoznam nainštalovaných balíkov v Android-epm path package sk.tuke.smart.tryme
- zobrazí cestu k inštalačnému balíčkusk.tuke.smart.tryme
v Android-epm list features
- zobrazí zoznam dostupných vlastností Android zariadeniaam start sk.tuke.smart.tryme/.MainActivity
- spustí aktivitu s názvomMainActivity
z balíčkask.tuke.smart.tryme
am boradcast -a sk.tuke.smart.tryme.MSG --es message "Hello world"
- pošle broadcast správusk.tuke.smart.tryme.MSG
do celého systému (prepínač-a
), ktorá nesie reťazec"Hello world"
dostupný pod kľúčommessage
Additional Tasks
Pomocou nástroja
dumpsys
zistite oprávnenia pre aplikáciu Camera.Pokúste sa aplikácii Camera odobrať oprávnenie
android.permission.CAMERA
.
Additional Links
- My Tracks - aplikácia pre Android, pomocou ktorej si môžete zaznamenať svoju trasu a exportovať ju do GPX alebo KML formátu vhodných pre použitie v Android emulátori
- Android Package Manager (pm) Cheat Sheet - ťahák pre používanie Package Manager-a
- Trieda
PackageManager
- dokumentácia Android SDK ku triedePackageManager
- dumpsys -
dumpsys
is a tool that runs on Android devices and provides information about system services.