Navigace

Hlavnφ menu

 

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:

import com.nokia.mid.ui.*;

  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:

  import com.siemens.mp.game.*;

  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:

  import com.siemens.mp.game.*;

  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φ.

Kova°φk, Petr (30.9. 2003)
programßtor spoleΦnosti Delta E.S.