J2ME v p°φkladech - jak rozklepat mobil
Nßzev toho Φlßnku sice vypadß, jako by byl opsßn z n∞jakΘ kucha°ky, a mnoh²m z vßs asi nebude ·pln∞ jasnΘ, co mß spoleΦnΘho mobilnφ telefon a va°enφ, slibuji ale, ₧e ho nebudeme obalovat a sma₧it. NauΦφme se, jak ho pomocφ vestav∞nΘho za°φzenφ rozvibrovat. To se samoz°ejm∞ t²kß jen mobilnφch telefon∙ s podporou Javy, kterΘ majφ schopnost vibrovat u₧ od v²robce. Ovlßdßnφ vibracφ mobilnφho telefonu je navφc u ka₧dΘho v²robce jinΘ, tak₧e se zam∞°φme na mobilnφ telefony dvou nejrozÜφ°en∞jÜφch znaΦek, a sice Nokia a Siemens.
Nokio, ot°es se!
Firma Nokia do sv²ch mobilnφch telefon∙, kterΘ podporujφ Javu, implementovala hned n∞kolik knihoven na podporu multimΘdiφ a vibracφ. Nßs bude zajφmat jen jedna z nich - com.nokia.mid.ui. Tato knihovna umo₧≥uje programßtorovi p°φstup ke grafick²m prvk∙m (FullCanvas), k ovlßdßnφ podsvφcenφ displeje a takΘ k ovlßdßnφ vibracφ. Pokud budete chtφt spustit aplikaci pou₧φvajφcφ tuto knihovnu na mobilnφm telefonu od jinΘho v²robce ne₧ Nokia, budete nejspφÜ zklamßni, proto₧e nebude fungovat. To nßs p°i pou₧φvßnφ vibracφ znaΦn∞ omezuje.
Z knihovny pou₧ijeme t°φdu DeviceControl. Tato t°φda obsahuje metody, kterΘ umo₧nφ z aplikace ovlßdat osv∞tlenφ a vibrace mobilnφho telefonu. Pro ovlßdßnφ vibracφ nßs budou zajφmat jejφ metody startVibra(int frekvence, int trvani) a stopVibra().
Hodnoty p°edßvanΘ metod∞ startVibra() jsou celß Φφsla vyjad°ujφcφ frekvenci a dobu vibrovßnφ. Prvnφ hodnota ovlßdß frekvenci vibracφ, povolenΘ hodnoty jsou 0 a₧ 100. Nula se pou₧φvß k detekci, zda za°φzenφ, na kterΘm b∞₧φ midlet, umφ vibrovat. Pokud tomu tak nenφ, metoda vyvolß v²jimku IllegalStateException. Hodnota 1 rozvibruje za°φzenφ nejmenÜφ mo₧nou frekvencφ, hodnota 100 naopak nejv∞tÜφ. Druhß hodnota p°edßvanß metod∞ startVibra() je celΘ Φφslo a udßvß dobu trvßnφ vibrace v milisekundßch.
M∙₧e se stßt, ₧e mobilnφ telefon bude mφt vibrace vypnutΘ. V tom p°φpad∞ aplikace vyvolß v²jimku a skonΦφ. Proto je nutno volßnφ vibracφ umφstit do try-catch bloku, kter² poslou₧φ k zachycenφ v²jimky IllegalStateException.
Pou₧itφ vibracφ v mobilnφm telefonu Nokia se obsluhuje nßsledujφcφm k≤dem:
DeviceControl dc;
public void vibruj() {
try {
dc.startVibra(80, 1000);
try { Thread.sleep(1000); } catch(Exception e) { }
dc.stopVibra();
} catch(IllegalStateException e) { }
}
Tento k≤d rozvibruje mobil na jednu sekundu. Metoda vibruj() obsahuje dva try-catch bloky. Prvnφ zachycuje v²jimku p°i nepovedenΘm volßnφ vibrace, druh² blok se starß o pozastavenφ hlavnφho vlßkna na dobu vibrovßnφ. Jak je vid∞t, vibrace v Java aplikacφch nejsou nic slo₧itΘho ani nßroΦnΘho.
A jak vibruje Siemens?
Siemens, podobn∞ jako Nokia, pou₧φvß k ovlßdßnφ vibracφ svoje vlastnφ knihovny, pokud ale v aplikaci n∞kterou z nich pou₧ijete, pak tato aplikace s nejv∞tÜφ pravd∞podobnostφ nebude fungovat na mobilnφch telefonech jin²ch znaΦek. U telefon∙ Siemens je ovlßdßnφ vibracφ umφst∞no v knihovn∞ com.siemens.mp.game. Ta obsahuje t°φdu Vibrator, kterß, jak u₧ nßzev napovφdß, mß na starosti obsluhu vibracφ.
Vibrace v telefonech Siemens m∙₧eme pou₧φt dv∞ma zp∙soby. Prvnφ z nich je pou₧itφ metod startVibrator() a stopVibrator(). Tyto metody spustφ nebo zastavφ vibrßtor v mobilnφm telefonu. Jsou volßny bez parametr∙. Frekvence vibrace je toti₧ pevn∞ danß a dΘlku vibrace udßvß Φasovß prodleva od zavolßnφ metody startVibrator() a₧ po zavolßnφ stopVibrator(). Prodlevu nejlΘpe sami nastavφme tφm, ₧e pozastavφme hlavnφ vlßkno aplikace na p°edem zvolenou dobu. Tento zp∙sob vypadß v praxi asi takto:
Vibrator vv;
public void vibruj() {
try {
vv.startVibrator();
Thread.sleep(1000);
vv.stopVibrator();
} catch(Exception e) { }
}
Z p°φkladu je jasn∞ vid∞t pou₧itφ pozastavenφ vlßkna aplikace mezi spuÜt∞nφm a zastavenφm vibrace. Cel² obsah metody vibruj() je umφst∞n v try-catch bloku pro zachycenφ p°φpadn²ch v²jimek. Je to velmi podobnΘ zp∙sobu ovlßdßnφ vibracφ u telefon∙ Nokia.
Druh² zp∙sob pou₧φvß metodu triggerVibrator(int delka), kterß je volßna s parametrem. Tφmto parametrem je celΘ Φφslo urΦujφcφ dobu v milisekundßch, po kterou bude vibrßtor zapnut². I kdy₧ tato metoda nevy₧aduje pozastavenφ vlßkna aplikace, umφstφme ji takΘ do try-catch bloku pro zachycenφ p°φpadn²ch v²jimek. Tento zp∙sob demonstruje nßsledujφcφ k≤d:
Vibrator vv;
public void vibruj() {
try {
vv.triggerVibrator(1000);
} catch(Exception e) { }
}
Jak je vid∞t, je to opravdu jednoduchΘ. Pro implementaci do ji₧ hotovΘ aplikace staΦφ jen na zaΦßtek t°φdy p°idat import knihovny ovlßdajφcφ vibrace a do k≤du p°ipsat metodu vibruj(). Tu pak staΦφ jen zavolat kdykoli chceme, aby telefon zavibroval u₧ivateli v ruce. Metodu lze samoz°ejm∞ upravit tak, aby bylo mo₧no b∞hem zavolßnφ p°edem zvolit dΘlku vibrace mobilnφho telefonu - co₧ si mohou Φtenß°i dopracovat sami za domßcφ ·kol.
V²Üe uvedenΘ p°φklady nßzorn∞ demonstrujφ, jak jednoduchΘ je pou₧itφ vibracφ v mobilnφm telefonu. V∞°φm, ₧e Φtenß°i ji₧ sami p°ijdou na to, jak a kde se nejlΘpe vibrace v mobilnφch aplikacφch uplatnφ.
U₧iteΦnΘ odkazy
- Nokia forum - mnoho informacφ pro programßtory
- Nokia UI API - popis, obsahuje dalÜφ API funkce pro Nokie
- Siemens API - shrnutφ API funkcφ telefon∙ Siemens
P°edchozφ Φlßnky
- J2ME v p°φkladech - preloader aplikace
- J2ME v p°φkladech - alert neboli upozorn∞nφ
- J2ME v p°φkladech - kolikßtΘho je dnes?
- J2ME v p°φkladech - vybφrßme si podruhΘ
- J2ME v p°φkladech - vybφrßme si
- J2ME v p°φkladech - u₧ivatelsk² vstup
- J2ME v p°φkladech - tvorba menu II
- J2ME v p°φkladech - tvorba menu
- J2ME v p°φkladech