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

Užitečné odkazy

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

1 Příspěvěk v diskuzi

Odpovědět