home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 October / PCWorld_2004-10_cd.bin / novinky / interval / clanek07.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-09-12  |  22.5 KB  |  286 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='-1' />
  10. <meta name='robots' content='index,follow' />
  11. <meta name='googlebot' content='index,follow,snippet,noarchive' />
  12. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  13. <meta name='keywords' content='Interval' />
  14. <meta name='ICBM' content='49.1915, 16.626' />
  15. <meta name='DC.Title' content='Interval.cz' />
  16. <meta name='DC.Identifier' content='http://interval.cz' />
  17. <meta name='DC.Language' content='cs' />
  18. <meta http-equiv='pics-label' content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline EN v2.0" l gen true for "http://interval.cz" r (nz 1 vz 1 lz 1 oz 1 cz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://interval.cz" r (n 0 s 0 v 0 l 0))' />
  19. <meta http-equiv='imagetoolbar' content='no' />
  20. <meta http-equiv='MSThemeCompatible' content='no' />
  21. <meta name='MSSmartTagsPreventParsing' content='true' />
  22. <link rel='shortcut icon' type='image/x-icon' href='favicon.ico' />
  23. <link rel='alternate' type='application/rss+xml' title='RSS Interval.cz' href='http://interval.cz/__rss/rss.asp' />
  24. <link rel='home' href='http://interval.cz' />
  25. <link rel='search' href='http://interval.cz/search_ex.asp' />
  26. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/html4.css' />
  27. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/basic_all.css' />
  28. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/homepage_all.css' />
  29. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/articles_all.css' />
  30. <link rel='stylesheet' type='text/css' media='print' href='__services/styles/articles_print.css' />
  31. <title>Interval.cz - webdesign a e-komerce denn∞</title>
  32. </head>
  33. <body class='interval interval-articles'>
  34. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  35. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  36. <div id='page-body'><div id='page-left'><div id='article'>
  37.  
  38.  
  39. <h2>J2ME v kostce - jak na zvuk III</h2>
  40. <p id='prepend'>V p°edchozφch Φlßncφch jsme se postupn∞ probrali univerzßlnφm rozhranφm pro manipulaci se zvukem v mobilnφch telefonech Mobile Media API a proprietßrnφm rozhranφm firmy Nokia. V tomto Φlßnku stejn²m zp∙sobem projdeme proprietßrnφ °eÜenφ API dalÜφch v²robc∙, firem Siemens, Samsung a Motorola.</p>
  41.  
  42. <h3>Siemens</h3>
  43. <p>Jak jsem uvedla <a href='http://interval.cz/clanek.asp?article=3250' title='Bittnerovß, Lucie Rut: J2ME v kostce - jak na zvuk I'>v prvnφm Φlßnku o zvuku</a>, v∞tÜina telefon∙ znaΦky Siemens obsahuje Φßst rozhranφ Mobile Media API (MMAPI) °eÜφcφ prßci se zvukem, jen toto rozhranφ schovßvß do jin²ch balφk∙, a to <code>com.siemens.mp.media</code> a <code>com.siemens.mp.media.control</code>. Krom∞ tohoto rozhranφ obsahujφ pro prßci se zvukem vÜechny telefony znaΦky Siemens jeÜt∞ t°i t°φdy v balφku <code>com.siemens.mp.game</code>. Jsou to t°φdy <code>Sound</code>, <code>Melody</code> a <code>MelodyComposer</code>. Tyto t°φdy jsou nezbytn∞ nutnΘ k p°ehrßnφ zvuku na starÜφch modelech telefon∙ znaΦky Siemens, jako jsou SL45i a M50, ale m∞ly by fungovat na vÜech modelech.</p>
  44.  
  45. <h4>P°ehrßnφ jednoho t≤nu</h4>
  46. <p>K p°ehrßnφ jednoho t≤nu danΘ frekvence a dΘlky slou₧φ t°φda <code>Sound</code>. Tato t°φda mß jedinou metodu, kterß je statickß:</p>
  47.  
  48. <div class='sample'>
  49. <span class='comment'>// P°ehrßnφ t≤nu s danou frekvencφ t≤nu v Hz a dΘlkou t≤nu
  50. <br />// v milisekundßch, tohle je konkrΘtn∞ 2 vte°iny trvajφcφ komornφ A</span>
  51. <br />Sound.playTone(440, 2000);
  52. </div>
  53.  
  54. <h4>P°ehrßnφ melodie</h4>
  55. <p>T°φda <code>MelodyComposer</code> je urΦena ke kompozici skladby. Za tφm ·Φelem definuje jako konstanty v²Üky t≤n∙ od A0 do do A4 (A0 odpovφdß naÜemu t≤nu malΘ A, tedy t≤nu s frekvencφ 220 Hz, kter² le₧φ v houslovΘm klφΦi na druhΘ pomocnΘ lince pod notovou osnovou).</p>
  56.  
  57. <div class='list'>
  58. <ul>
  59. <li><samp>TONE_A0, TONE_AIS0 ... TONE_GIS4, TONE_A4</samp></li>
  60. </ul>
  61. </div> 
  62.  
  63. <p>Dßle obsahuje t≤novΘ konstanty se specißlnφm v²znamem:</p>
  64.  
  65. <div class='list'>
  66. <ul>
  67. <li><em>TONE_PAUSE</em> - pomlka</li>
  68. <li><em>TONE_REPEAT</em> - opakuj od zaΦßtku a₧ sem n-krßt (n je parametr zadan² jako dΘlka t≤nu, musφ b²t p°irozenΘ Φφslo)</li>
  69. <li><em>TONE_REPEV</em> - opakuj od zaΦßtku a₧ sem stßle dokola</li>
  70. <li><em>TONE_REPON</em> - opakuj od zaΦßtku a₧ sem n-krßt a pak pokraΦuj dßl</li>
  71. <li><em>TONE_MARK</em> - nastavenφ znaΦky</li>
  72. <li><em>TONE_REPEAT_MARK</em> - opakuj od nejbli₧Üφ p°edchozφ znaΦky n-krßt</li>
  73. <li><em>TONE_REPEV_MARK</em> - opakuj od nejbli₧Üφ p°edchozφ znaΦky stßle dokola</li>
  74. <li><em>TONE_REPON_MARK</em> - opakuj od nejbli₧Üφ p°edchozφ znaΦky n-krßt a pak pokraΦuj dßl</li>
  75. </ul>
  76. </div> 
  77.  
  78. <p>DalÜφ konstanty urΦujφ dΘlku t≤n∙:</p>
  79.  
  80. <div class='list'>
  81. <ul>
  82. <li><em>TONELENGTH_1_1</em> - celß nota</li>
  83. <li><em>TONELENGTH_1_2</em> - p∙lovß nota</li>
  84. <li><em>TONELENGTH_1_4</em> - Φtvr¥ovß nota</li>
  85. <li><em>TONELENGTH_1_8</em> - osminovß nota</li>
  86. <li><em>TONELENGTH_1_16</em> - Üestnßctinovß nota</li>
  87. <li><em>TONELENGTH_1_32</em> - dvaat°icetinovß nota</li>
  88. <li><em>TONELENGTH_1_64</em> - Φty°iaÜedesßtinovß nota</li>
  89. <li><em>TONELENGTH_DOTTED_1_1</em> - celß nota s teΦkou</li>
  90. <li><em>TONELENGTH_DOTTED_1_2</em> - p∙lovß nota s teΦkou</li>
  91. <li><em>TONELENGTH_DOTTED_1_4</em> - Φtvr¥ovß nota s teΦkou</li>
  92. <li><em>TONELENGTH_DOTTED_1_8</em> - osminovß nota s teΦkou</li>
  93. <li><em>TONELENGTH_DOTTED_1_16</em> - Üestnßctinovß nota s teΦkou</li>
  94. <li><em>TONELENGTH_DOTTED_1_32</em> - dvaat°icetinovß nota s teΦkou</li>
  95. <li><em>TONELENGTH_DOTTED_1_64</em> - Φty°iaÜedesßtinovß nota s teΦkou</li>
  96. </ul>
  97. </div> 
  98.  
  99. <p>A po spoust∞ konstant koneΦn∞ n∞jakß ukßzka:</p>
  100.  
  101. <div class='sample'>
  102. <span class='comment'>// Definice posloupnosti t≤n∙ zvukovΘ ukßzky</span>
  103. <br />int[] tones = {
  104. <br />  MelodyComposer.TONE_G1, MelodyComposer.TONELENGTH_1_2,
  105. <br />  MelodyComposer.TONE_H1, MelodyComposer.TONELENGTH_1_2,
  106. <br />  MelodyComposer.TONE_D2, MelodyComposer.TONELENGTH_1_2,
  107. <br />  MelodyComposer.TONE_PAUSE, MelodyComposer.TONELENGTH_1_2,
  108. <br />  MelodyComposer.TONE_REPON, 2,
  109. <br />  MelodyComposer.TONE_MARK, 0,
  110. <br />  MelodyComposer.TONE_H1, MelodyComposer.TONELENGTH_1_4,
  111. <br />  MelodyComposer.TONE_H1, MelodyComposer.TONELENGTH_1_4,
  112. <br />  MelodyComposer.TONE_A1, MelodyComposer.TONELENGTH_1_4,
  113. <br />  MelodyComposer.TONE_H1, MelodyComposer.TONELENGTH_1_4,
  114. <br />  MelodyComposer.TONE_C2, MelodyComposer.TONELENGTH_1_2,
  115. <br />  MelodyComposer.TONE_A1, MelodyComposer.TONELENGTH_1_2,
  116. <br />  MelodyComposer.TONE_REPON_MARK, 2,
  117. <br />  MelodyComposer.TONE_H1, MelodyComposer.TONELENGTH_1_2,
  118. <br />  MelodyComposer.TONE_A1, MelodyComposer.TONELENGTH_1_2,
  119. <br />  MelodyComposer.TONE_G1, MelodyComposer.TONELENGTH_1_2,
  120. <br />  MelodyComposer.TONE_PAUSE, MelodyComposer.TONELENGTH_1_2,};
  121. </div>
  122.  
  123. <p>P°ehrßnφ ukßzky je velmi jednoduchΘ:</p>
  124.  
  125. <div class='sample'>
  126. <span class='comment'>// Vytvo°enφ instance t°φdy MelodyComposer s nastavenou
  127. <br />// melodiφ a tempem 120 ·der∙ za minutu</span>
  128. <br />MelodyComposer composer = new MelodyComposer(tones, 120);
  129. <br /><span class='comment'>// Zφskßnφ instance t°φdy Melody</span>
  130. <br />Melody melody = composer.getMelody();
  131. <br /><span class='comment'>// SpuÜt∞nφ p°ehrßvßnφ melodie. Metoda play neblokuje b∞h aplikace,
  132. <br />p°ehrßvßnφ probφhß na pozadφ.</span>
  133. <br />melody.play();
  134. </div>
  135.  
  136. <p>P°ehrßvßnφ melodie lze zastavit p°φkazem <code>melody.stop()</code>. Pokud zaΦnete p°ehrßvat novou zvukovou ukßzku v dob∞, kdy jeÜt∞ hraje p°edchozφ zvukovß ukßzka, p°ehrßvßnφ starΘ ukßzky se ihned ukonΦφ a bude spuÜt∞na ukßzka novß.</p>
  137. <p>T°φda <code>Melody</code> obsahuje pouze metody <code>play()</code> a <code>stop()</code>, nenabφzφ ₧ßdnou mo₧nost jak zjistit, zda zvukovß ukßzka jeÜt∞ hraje nebo u₧ skonΦila. Chcete-li po dobu b∞hu aplikace hrßt stßle dokola n∞jakou melodii, ukonΦete ji t≤nem <code>TONE_REPEV</code>.</p>
  138. <p>Takto se vym∞nφ melodie v ji₧ existujφcφ instanci t°φdy <code>MelodyComposer</code>:</p>
  139.  
  140. <div class='sample'>
  141. <span class='comment'>// Vymazßnφ aktußlnφ melodie</span>
  142. <br />composer.resetMelody();
  143. <br /><span class='comment'>// Nastavenφ novΘ melodie; lze provΘst pouze po jednotliv²ch notßch</span>
  144. <br />try{
  145. <br />   for(int i=0; i<tones.length; i++){
  146. <br />      composer.appendNote(tones[i], tones[++i]);
  147. <br />   }
  148. <br />} catch(Exception e){
  149. <br />}
  150. <br /><span class='comment'>// Nastavenφ tempa</span>
  151. <br />composer.setBPM(60);
  152. <br /><span class='comment'>// SpuÜt∞nφ p°ehrßvßnφ melodie</span>
  153. <br />composer.getMelody().play();
  154. </div>
  155.  
  156. <p>T°φda <code>MelodyComposer</code> obsahuje omezenφ na maximßlnφ dΘlku definice melodie. Tato maximßlnφ dΘlka se zjistφ metodou <code>maxLength()</code>, dΘlku aktußlnφ ukßzky vracφ metoda <code>length()</code>.</p>
  157. <p>To jsou vÜechna kouzla, kterß se dajφ s t°φdami <code>Sound</code>, <code>Melody</code> a <code>MelodyComposer</code> provozovat. ÄßdnΘ vymo₧enosti, jako posluchaΦe udßlostφ nebo spouÜt∞nφ zvukov²ch ukßzek ve formßtech jako nap°φklad MIDI Φi WAV, zde nenajdete.</p>
  158.  
  159. <h3>Samsung</h3>
  160. <p>Prßce se zvukem na telefonech znaΦky Samsung je snad jeÜt∞ jednoduÜÜφ. VÜe za°izuje t°φda <code>com.samsung.util.AudioClip</code>. Tato t°φda umo₧≥uje zjistit, zda je p°ehrßvßnφ zvuku implementovßno, a pokud ano, lze ovlßdat p°ehrßvßnφ zvukovΘ ukßzky nßsledujφcφmi metodami:</p>
  161.  
  162. <div class='list'>
  163. <ul>
  164. <li><em>play(int pocetOpakovani, int hlasitost)</em> - spustφ p°ehrßvßnφ, poΦet opakovßnφ ukßzky m∙₧e b²t Φφslo od 0 do 255 a hlasitost Φφslo od 0 do 5</li>
  165. <li><em>pause()</em> - p°eruÜφ p°ehrßvßnφ</li>
  166. <li><em>resume()</em> - pokraΦuje v p°ehrßvßnφ z mφsta, kde byla ukßzka p°eruÜena</li>
  167. <li><em>stop()</em> - ukonΦφ p°ehrßvßnφ ukßzky a uvolnφ vÜechny zdroje</li>
  168. </ul>
  169. </div>
  170.  
  171. <p>Samsung neumφ p°ehrßvat vφce zvukov²ch ukßzek zßrove≥. Pokud v okam₧iku spuÜt∞nφ zvukovΘ ukßzky u₧ n∞jakß hraje, je tato hrajφcφ ukßzka nahrazena novou.</p>
  172. <p>Pro specifikaci typu p°ehrßvanΘho zvuku obsahuje t°φda <code>AudioClip</code> ΦφselnΘ konstanty:</p>
  173.  
  174. <div class='list'>
  175. <ul>
  176. <li><em>TYPE_MMF</em> - hodnota 1</li>
  177. <li><em>TYPE_MP3</em> - hodnota 2</li>
  178. <li><em>TYPE_MIDI</em> - hodnota 3</li>
  179. </ul>
  180. </div>
  181.  
  182. <p>V API emulßtoru ale t°φda <code>AudioClip</code> tyto konstanty neobsahuje, proto je jist∞jÜφ mφsto nich pou₧φt Φφsla. TakΘ zatφm nemß smysl pou₧φvat jin² typ zvukovΘ ukßzky ne₧ MMF (formßt vyzvßn∞nφ na telefony Samsung), proto₧e zatφm jinΘ typy podporovßny nejsou, v²vojß°i si konstanty nejspφÜ p°ipravili pro p°φpad, ₧e by se jim cht∞lo p°ehrßvßnφ MP3 a MIDI implementovat v Jav∞ n∞kdy v budoucnosti.</p>
  183. <p>P°ehrßnφ zvukovΘ ukßzky vypadß takto:</p>
  184.  
  185. <div class='sample'>
  186. <span class='comment'>// Kontrola, zda je p°ehrßvßnφ zvuku implementovßno</span>
  187. <br />if(AudioClip.isSupported()) {
  188. <br />   <span class='comment'>// Vytvo°enφ instance t°φdy AudioClip s nastaven²m
  189. <br />   typem ukßzky a cestou k ukßzce</span>
  190. <br />   AudioClip clip = new AudioClip(1, "/ukazka.mmf");
  191. <br />   <span class='comment'>// SpuÜt∞nφ ukßzky jedenkrßt s maximßlnφ hlasitostφ</span>
  192. <br />   clip.play(1, 5);
  193. <br />}
  194. </div>
  195.  
  196. <h3>Motorola</h3>
  197. <p>N∞kterΘ telefony znaΦky Motorola u₧ obsahujφ implementaci MIDP 2.0 (V300, V400, V500, V600), tak₧e u nich se k p°ehrßvßnφ zvuku pou₧ije MMAPI. N∞kterΘ z t∞ch telefon∙, kterΘ obsahujφ pouze implementaci MIDP 1.0, majφ navφc proprietßrnφ API od Motoroly, kterΘ usnad≥uje v²voj her a zßrove≥ obsahuje t°φdy pro p°ehrßvßnφ zvuku. Jsou to nap°φklad telefony C370, C450, C550. Na strßnkßch <a href='http://www.motocoder.com'>Motocoderu</a> najdete k jednotliv²m telefon∙m podrobnou dokumentaci.</p>
  198. <p>T°φdy urΦenΘ k p°ehrßvßnφ zvuku se nachßzejφ v balφku <code>com.motorola.game</code> a jsou dv∞. T°φda <code>BackgroundMusic</code> reprezentuje hudbu na pozadφ aplikace a t°φda <code>SoundEffect</code> reprezentuje zvukov² efekt ve h°e. S t∞mito t°φdami se dßle pracuje s pou₧itφm metod t°φdy <code>GameScreen</code>:</p>
  199.  
  200. <div class='list'>
  201. <ul>
  202. <li><em>boolean soundEffectsSupported()</em> - vrßtφ "true", pokud je podporovßno p°ehrßvßnφ zvukov²ch efekt∙</li>
  203. <li><em>boolean backgroundMusicSupported()</em> - vrßtφ "true", pokud je podporovßno p°ehrßvßnφ hudby na pozadφ</li>
  204. <li><em>int getMaxSoundsSupported()</em> - vrßtφ maximßlnφ mo₧n² poΦet zßrove≥ p°ehrßvan²ch zvuk∙, kterΘ telefon zvlßdne</li>
  205. <li><em>void playSoundEffect(SoundEffect efekt, int hlasitost, int priorita)</em> - spustφ zvukov² efekt. Hlasitost a priorita mohou b²t od 0 do 100. Pokud by m∞lo zßrove≥ hrßt vφce efekt∙, ne₧ za°φzenφ zvlßdß, p°ehraje se ten, kter² mß nastavenou vyÜÜφ prioritu. ZvukovΘ efekty hrajφ pouze tehdy, kdy₧ je jejich instance t°φdy <code>GameScreen</code> zobrazena na displeji.</li>
  206. <li><em>void stopAllSoundEffects()</em> - zastavφ p°ehrßvßnφ vÜech zvukov²ch efekt∙ (net²kß se hudby na pozadφ)</li>
  207. <li><em>void playBackgroundMusic (BackgroundMusic zvuk, boolean opakovat)</em> - spustφ p°ehrßvßnφ zvuku na pozadφ aplikace. Pokud u₧ n∞jak² zvuk na pozadφ hraje, je tφmto nahrazen, je-li parametr <code>zvuk</code> "null", je pouze prßv∞ p°ehrßvan² zvuk zastaven. Parametr <code>opakovat</code> urΦuje, zda se mß hrßt zvukovß ukßzka stßle dokola (true) nebo nikoli (false).</li>
  208. </ul>
  209. </div>
  210.  
  211. <h4>Zvuk na pozadφ</h4>
  212. <p>Na pozadφ hry nebo aplikace m∙₧e b²t spuÜt∞n maximßln∞ jeden zvuk. Tento zvuk m∙₧e b²t ulo₧en v JAR souboru aplikace, nebo m∙₧e b²t na serveru a aplikace si jej stßhne s pou₧itφm protokolu HTTP. Implementovan² formßt je pouze MIDI 0 nebo 1.</p>
  213.  
  214. <div class='sample'>
  215. <span class='comment'>// vytvo°enφ vlastnφ t°φdy rozÜi°ujφcφ GameScreen</span>
  216. <br />public class MyScreen extends GameScreen {
  217. <br />  public void playBackgroundMusic(){
  218. <br />    try{
  219. <br />      <span class='comment'>// Vytvo°enφ instance t°φdy BackgroundMusic</span>
  220. <br />      BackgroundMusic samp =
  221. <br />         BackgroundMusic.createBackgroundMusic("/samp.mid");
  222. <br />      <span class='comment'>// SpuÜt∞nφ ukßzky stßle dokola.</span>
  223. <br />      playBackgroundMusic(samp, true);
  224. <br />    }catch(FileFormatNotSupportedException e){
  225. <br />      <span class='comment'>// Formßt zvukovΘ ukßzky nenφ podporovßn</span>
  226. <br />    }
  227. <br />  }
  228. <br />}
  229. </div>
  230.  
  231. <p>Zvukov² efekt se spustφ analogicky jako zvuk na pozadφ.</p>
  232.  
  233. <h3>Zßv∞rem</h3>
  234. <p>Tyto Φlßnky o zvuku nem∞ly ambice pokr²t ·pln∞ vÜechny znaΦky telefon∙, na kter²ch se dß potkat Java, ale mohli jste se v nich seznßmit s t∞mi nejrozÜφ°en∞jÜφmi znaΦkami v ╚echßch a p°ilehlΘm okolφ. Pokud se rozhodnete u₧ivatele n∞jakΘ aplikace obÜ¥astnit zvukov²mi efekty, urΦit∞ nezapome≥te na mo₧nost tyto efekty vypnout. Ud∞lßte tφm radost nejen Ükolßk∙m nudφcφm se na hodin∞ matematiky.</p>
  235.  
  236. <h3>Odkazy, zdroje</h3>
  237.  
  238. <div class='list'>
  239. <ul>
  240. <li><a href='http://java.sun.com/products/j2mewtoolkit/'>J2ME Wireless Toolkit</a> - obecn² emulßtor od firmy Sun</li>
  241. <li><a href='http://www.motocoder.com/motorola/pcsHome.jsp'>Motocoder</a> - strßnky pro v²vojß°e pracujφcφ s telefony znaΦky Motorola</li>
  242. <li><a href='http://developer.samsungmobile.com/eng/front_zone/bbs/bbs_main.jsp?p_menu_id=1500'>Samsung</a> - emulßtory a dalÜφ informace pro v²vojß°e pracujφcφ s telefony znaΦky Samsung</li>
  243. <li><a href='https://communication-market.siemens.de/portal/main.aspx?pid=1'>Siemens</a> - portßl pro v²vojß°e pracujφcφ s telefony znaΦky Siemens</li>
  244. </ul>
  245. </div>
  246.  
  247.  
  248.  
  249. <div id='article-author'>
  250. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=144'>Bittnerovß, Lucie Rut</a> (12. 8. 2004)
  251. <div id='article-about-author'>programßtor û analytik <a href="http://www.amaio.cz">Amaio Technologies</a></div>
  252. </div>
  253.  
  254.  
  255. </div></div>
  256. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  257. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  258.  
  259.  
  260.  
  261. <div class='page-right-box book'>
  262.     <h3>Kni₧nφ novinka</h3>
  263.     <div class='page-right-box-in'>
  264.         <div class='book-top'>
  265.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=254'>Macromedia Flash MX 2004, oficißlnφ v²ukov² kurz</a></h4>
  266.         </div>
  267.         <div class='image'>
  268.             <img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  269.         </div>
  270.         <div class='book-bottom'>Cena: <span class='book-price-old'>550 KΦ</span> <span class='book-price-new'>495 KΦ</span></div>
  271.     </div>
  272. </div>
  273.  
  274.  
  275.  
  276. <div class='page-right-box reading'><h3 title='NejΦten∞jÜφ Φlßnky za poslednφch 7 dn∙'>NejΦten∞jÜφ</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3549'>Hrßtky s okrajem textu v CSS</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3527'>Manußly aneb Jak jsem se nauΦil ned∞lat si starosti a mφt rßd internet</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3528'>PφÜeme pro web - odliÜte se od konkurence</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3546'>Zamezenφ vφcenßsobnΘho odeslßnφ formulß°e JavaScriptem</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3550'>Nßvrh aplikacφ v jazyce UML - textovß specifikace p°φpad∙ u₧itφ</a></li></ul></div></div><div class='page-right-box cauldron'><h3 title='Nejdiskutovan∞jÜφ Φlßnky za poslednφch 21 dn∙'>Diskuznφ kotel</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3533' title='(55 komentß°∙)'>Editory pro webdesignΘry - velk² programßtor</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3529' title='(40 komentß°∙)'>Zaklφnadla na spam</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3527' title='(22 komentß°∙)'>Manußly aneb Jak jsem se nauΦil ned∞lat si starosti a mφt rßd internet</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3517' title='(21 komentß°∙)'>PφÜeme pro web - podle Φeho se zßkaznφci rozhodujφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3549' title='(16 komentß°∙)'>Hrßtky s okrajem textu v CSS</a></li></ul></div></div>
  277.  
  278.  
  279.  
  280. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  281. </div>
  282. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  283. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  284. </body>
  285. </html>
  286.