¸ðµç J2ME ÇÁ·Î±×·¥ÀÇ ±â¹ÝÇÏ¿¡ ±¸ÃàÇϱâ
Soma
Ghosh ¼±ÀÓ °³¹ßÀÚ, Entigo 2002³â 3¿ù
¿©·¯ºÐÀº ÀÚ¹Ù °¡»ó ¸Ó½ÅÀ» ¸Þ¸ð¸® ¿ë·®ÀÌ Àû°í ÀÚ¿øÀÌ Á¦ÇѵǾî ÀÖÀ¸¸ç ³×Æ®¿öÅ©·Î ¿¬°áµÈ ȯ°æ¿¡ ÀûÇÕÇÏ°Ô
¸¸µé°í ½ÍÀ» °ÍÀÌ´Ù. K °¡»ó ¸Ó½Å (KVM)ÀÇ Á߽ɿ¡ Ư¼öÇÑ Àڹ٠Ŭ·¡½º°¡ Àִµ¥, MIDletÀÌ
±×°ÍÀÌ´Ù. ÀÌ ±Û¿¡¼ Soma Ghosh´Â ¿©·¯ºÐ¿¡°Ô MIDlet Ŭ·¡½ºÀÇ Àå´ÜÁ¡À» ¼Ò°³ÇÏ°í ¿©·¯ºÐ ÀÚ½ÅÀÇ
J2ME ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÒ ¶§ À̸¦ È°¿ëÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÏ°Ú´Ù. ¿©·¯ºÐÀº MIDletÀÇ ÀÌ·ÐÀ» ¹è¿ì°í ³
ÈÄ ±×³à°¡ ±¸ÃàÇÏ´Â »ùÇà ÇÁ·Î±×·¥À» ÅëÇØ ±× ±â¼úÀÌ ½ÇÇàµÇ´Â °ÍÀ» È®ÀÎÇÏ°Ô µÉ °ÍÀÌ´Ù.
ÀÌ ÁÖÁ¦¿¡ ´ëÇØ ³»°¡ ÀÛ¼ºÇÑ ÀÌÀü ±Û¿¡¼ ³ª´Â Java 2 Platform, Micro Edition
(J2ME)ÀÇ ±âÃÊ »çÇ׵鿡 ´ëÇØ ³íÀÇÇÏ¿´´Ù. ±× ±ÛÀ» ÀоÁö ¾ÊÀº ºÐÀ̶ó¸é ÀÌ ±ÛÀ» Àбâ Àü¿¡ ¾Æ¸¶µµ ±×°ÍÀ»
¸ÕÀú ÀÐ¾î º¸¾Æ¾ß ÇÒ °ÍÀÌ´Ù. J2MEÀÇ °¡Àå Áß¿äÇÑ ±¸¼º ¿ä¼Ò°¡ MIDletÀÌ´Ù. ¿©±â¼ ¿ì¸®´Â MIDletÀÇ
»óÅÂ¿Í »óÅ ¾ÖÇø®ÄÉÀÌ¼Ç »Ó ¾Æ´Ï¶ó À̺¥Æ®¿Í ¿¹¿Ü¸¦ ó¸®Çϱâ À§ÇÑ ±â¹ýµéÀ» °ËÅäÇÏ¸é¼ MIDIetÀ» »ó¼¼È÷
»ìÆ캸µµ·Ï ÇÏ°Ú´Ù. ¶ÇÇÑ ¿©±â¿¡¼ ¼³¸íµÈ °³³äµéÀ» ÀÔÁõÇØ ÁÙ °£´ÜÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇØ º½À¸·Î½á °á·ÐÀ» Áþµµ·Ï
ÇÏ°Ú´Ù. ÀÌ ±ÛÀ» ³¡³¾ ¶§ÂëÀÌ¸é ¿©·¯ºÐÀº ¿©·¯ºÐ ÀÚ½ÅÀÇ J2ME ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÏ´Â ÁßÀÏ °ÍÀÌ´Ù.
MIDletÀ̶õ
¹«¾ùÀΰ¡?
Mobile Information Device Profile (MIDP)˼
À̵¿ Àüȳª ±âº»ÀûÀÎ ¼öÁØÀÇ ÆÊž Àåºñ¿Í °°Àº ¸ð¹ÙÀÏ Á¤º¸ Àåºñ¸¦ Ÿ°ÙÀ¸·Î
ÇÏ´Â ÀÚ¹Ù API ¼¼Æ®ÀÌ´Ù. MIDletÀº MIDP ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸»ÇÑ´Ù. ÀÌ ±Û¿¡¼´Â MIDlet
°ú MID ¾ÖÇø®ÄÉÀ̼Ƕó´Â ¿ë¾î°¡ ±³´ë·Î »ç¿ëµÈ´Ù. MIDletÀº J2ME ½ÇÇà ȯ°æÀÇ ±¸¼º ¿ä¼Ò°¡
µÈ´Ù.
MIDletÀº ¸ð¹ÙÀÏ Àåºñ¿¡¼ ÀÛµ¿Çϵµ·Ï ¼³°èµÇ¾úÀ¸¸ç ÀÚ¹Ù °¡»ó ¸Ó½ÅÀÇ
Çٽɸ¸ ¸ðÀº ¹öÀüÀÎ K Virtual Machine (KVM)ÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ¿¡ ÀÇÇØ ½ÇÇàµÇ°í
Á¦¾îµÇµµ·Ï ¸¸µé¾îÁ³´Ù.javax.microedition.midlet.MIDlet Ŭ·¡½º´Â
MIDlet°ú ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ »çÀÌÀÇ ÀÎÅÍÆäÀ̽º·Î ÀÛµ¿ÇÑ´Ù. ÀÌ Å¬·¡½ºÀÇ ¸Þ¼Òµå´Â ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡
MIDletÀ» ¸¸µé°í ±¸µ¿½ÃÅ°°í ÁßÁö½ÃÅ°°í ¾ø¾Öµµ·Ï ÇØÁØ´Ù.
J2ME ¾ÖÇø®ÄÉÀ̼ÇÀº javax.microedition.midlet.MIDlet
Ŭ·¡½º¸¦ È®ÀåÇØ¾ß Çϴµ¥, ÀÌ´Â ´ÙÀ½ ÀÛ¾÷µé¿¡ ´ëÇÑ ÇÁ·¹ÀÓ¿öÅ©¸¦ Á¦°øÇÑ´Ù.:
- ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ MIDlet »óÅ º¯È¸¦ ÅëÁöÇÏ°í ¿äûÇÔÀ¸·Î½á MIDletÀ» Á¦¾îÇϵµ·Ï
ÇÑ´Ù.
- MIDletÀÌ ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ °ü¸®ÇÏ´Â ¾ÖÇø®ÄÉÀÌ¼Ç ·¹Áö½ºÅ͸®ÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç µð½ºÅ©¸³ÅÍ
(application descriptor)·ÎºÎÅÍ Æ¯¼ºÀ» °Ë»öÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
±×¸² 1Àº MIDlet°ú ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ °£ÀÇ »óÈ£ÀÛ¿ëÀ» º¸¿©ÁØ´Ù.
±×¸² 1. MIDlet ȯ°æ
MIDletÀÇ »óÅÂ
MIDletÀº ±× ¼ö¸í Áֱ⠵¿¾È ´Ù¾çÇÑ »óÅ ·Î ÀÖÀ» ¼ö ÀÖ´Ù. ÀÌ »óŵéÀº ¾ÖÇø®ÄÉÀ̼Ç
°ü¸®ÀÚ°¡ ·±Å¸ÀÓ È¯°æ ³»¿¡¼ ¿©·¯ MIDletµéÀÇ ÇൿÀ» °ü¸®Çϵµ·Ï ÇØ ÁØ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ´Â
MIDletµéÀ» °³º°ÀûÀ¸·Î ½ÃÀÛ½ÃÅ°°í ÁßÁö½ÃÅ´À¸·Î½á ÁÖ¾îÁø ½ÃÁ¡¿¡ ¾î¶² MIDletÀÌ ÀÛµ¿ÇÒÁö ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.
¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ´Â ¶ÇÇÑ MIDletÀÇ »óŸ¦ À¯Áöº¸¼öÇÑ´Ù. MIDletÀº ´ÙÀ½ »óŵé Áß Çϳª·Î ÀÖÀ» ¼ö
ÀÖ´Ù.:
- ÀÛµ¿ : MIDletÀº ±¸µ¿½Ã¿¡ ÀÛµ¿ »óÅ·Πµé¾î°¡°í ÀϺΠÀÚ¿øÀ» Â÷ÁöÇÒ ¼ö ÀÖ´Ù.
- ÁßÁö : ÁßÁö »óÅ¿¡¼ MIDletÀº °øÀ¯µÈ ÀÚ¿øÀ» ÇØÁ¦ÇÏ°í Á¤ÁöÇÑ´Ù.
- Æıâ : ÀÌ°ÍÀº MIDletÀÇ Á¾·á ´Ü°èÀÌ´Ù. Á¾·áµÈ MIDletÀº ¸ðµç ÀÚ¿øÀ» ÇØÁ¦ÇÏ°í
¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ¿¡ ¾î¶² ¿µ¼ÓÀûÀÎ »óŸ¦ ÀúÀåÇØ¾ß ÇÑ´Ù.
±×¸² 2´Â MIDLetÀÇ »óÅ º¯È¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. È»ìÇ¥´Â Çã°¡µÈ »óÅ º¯È¸¦ ³ªÅ¸³½´Ù. ¿¹¸¦ µé¾î,
ÀÛµ¿ »óÅÂÀÇ MIDletÀº ÁßÁö »óųª Æı⠻óÅ Áß Çϳª·Î À̵¿ÇÒ ¼ö ÀÖ´Ù.
±×¸² 2. MIDletÀÇ »óÅ º¯È
»óÅ ±¸Çö : ÇÑ »óÅ¿¡¼ ´Ù¸¥ »óÅ·Î
À̵¿Çϱâ
¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ´Â »óŸ¦ ¹Ù²Ù±â À§ÇØ MIDlet¿¡ ƯÁ¤ ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. MIDletÀº ÀÌ ¸Þ¼Òµå¸¦
±¸ÇöÇÏ¿© ÀÚ½ÅÀÇ ³»ºÎ Çൿ°ú ÀÚ¿ø È°¿ëÀ» ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ Áö½ÃÇϴ´ë·Î ¾÷µ¥ÀÌÆ®½ÃŲ´Ù.:
startApp() : ÀÌ ¸Þ¼Òµå´Â MIDlet¿¡°Ô ÀÛµ¿ »óÅ·Πµé¾î°£´Ù´Â
½ÅÈ£¸¦ º¸³»¸ç, MIDletÀÇ ´ëÈÇü ȸé ȯ°æÀ» ¼³Á¤Çϱâ À§ÇÑ ÃʱâÈ ÀýÂ÷µé·Î ±¸¼ºµÇ¾î ÀÖ´Ù.
pauseApp() : ÀÌ ¸Þ¼Òµå´Â MIDlet¿¡°Ô ÀÛµ¿À» ¸ØÃß°í ÁßÁö »óÅ·Î
°¡¶ó°í ½ÅÈ£ÇÑ´Ù.
destroyApp() : ÀÌ ¸Þ¼Òµå´Â MIDlet¿¡°Ô ÀÛµ¿À» Á¾·áÇÏ°í Æıâ
»óÅ·Π°¡¶ó°í Áö½ÃÇÑ´Ù.
MIDletÀº ½º½º·Î ¸î °¡Áö »óŸ¦ °³½ÃÇÏ°í, ÀÌ ¸Þ¼Òµåµé Áß Çϳª¸¦ È£ÃâÇÏ¿© ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ¿¡°Ô
ÀÌ·¯ÇÑ »óÅ º¯ÈµéÀ» ÅëÁöÇÒ ¼ö ÀÖ´Ù.:
notifyDestroyed() : ÀÚ½ÅÀÌ Æı⠻óÅ·Πµé¾î°¬À½À» ¾ÖÇø®ÄÉÀ̼Ç
°ü¸®ÀÚ¿¡°Ô ÅëÁöÇϱâ À§ÇØ MIDletÀÌ »ç¿ëÇÏ´Â ¸Þ¼ÒµåÀÌ´Ù.
notifyPaused() : ÀÌ ¸Þ¼Òµå´Â MIDletÀÌ ÀÛµ¿ »óÅ·ΠÀÖ°í ½ÍÁö
¾ÊÀ¸¸ç ÁßÁö »óÅ·Π°¡°í ½Í´Ù°í ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ¿¡°Ô ÅëÁöÇÑ´Ù.
resumeRequest() : ÀÌ ¸Þ¼Òµå´Â MIDletÀÌ ÀÛµ¿ »óÅ·Π°¡°í
½Í¾îÇÔÀ» Ç¥½ÃÇÏ´Â ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÑ´Ù. ÀÌ ¸Þ¼Òµå¿¡ ´ëÇÑ È£ÃâÀº ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ »ç¿ëÇϴµ¥, ¾î¶²
¾ÖÇø®ÄÉÀ̼ÇÀÌ ÀÛµ¿ »óÅ·Π°¥Áö¸¦ °áÁ¤ÇÑ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ ÇÑ MIDletÀ» È°¼ºÈÇϱâ·Î °áÁ¤ÇÏ¸é ±×
MIDletÀÇ startApp() ¸Þ¼Òµå¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.
MIDletÀº ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀڷκÎÅÍ ÁöÁ¤µÈ Ư¼ºµéÀ» °Ë»öÇÏ´Â ¸ÞÄ¿´ÏÁòÀ» ¹Þ¾Ò´Ù.
getAppProperty() ¸Þ¼Òµå°¡ ±×°ÍÀÌ´Ù. MIDlet ¹èÄ¡ÀÇ ÀϺκÐÀ¸·Î Á¦°øµÇ´Â
ÀÌ Æ¯¼ºµéÀº ¾ÖÇø®ÄÉÀÌ¼Ç µð½ºÅ©¸³ÅÍ ÆÄÀÏ°ú manifest°¡ Á¶ÇÕµÈ °ÍÀ¸·ÎºÎÅÍ ¾ò¾îÁø´Ù.
startApp() ȤÀº pauseApp() µ¿¾È ·±Å¸ÀÓ
¿¹¿Ü°¡ ¹ß»ýÇϸé MIDletÀº Áï½Ã ÆıâµÉ °ÍÀÌ´Ù.
MIDletÀÇ À̺¥Æ®
ó¸®
»ç¿ëÀÚ°¡ MIDlet°ú »óÈ£ÀÛ¿ëÇÒ ¶§, À̺¥Æ®°¡ »ý¼ºµÈ´Ù. MIDletÀº ÀÚ½ÅÀÇ À̺¥Æ® ó¸®
¸ÞÄ¿´ÏÁòÀÇ ÀϺκÐÀ¸·Î ƯÁ¤ ÀÎÅÍÆäÀ̽ºµéÀ» Á¦°øÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀÌ À̺¥Æ®¸¦ ÅëÁö¹Þ°í ÀÌ¿¡ ´ëÇØ ÀÀ´äÇÒ ¼ö ÀÖµµ·Ï
ÇÑ´Ù. °¢ ÀÎÅÍÆäÀ̽º´Â Äݹé (callback) À̶ó°í ¾Ë·ÁÁø ¸Þ¼Òµå¸¦ Á¦°øÇϴµ¥, ÀÌ°ÍÀº À̺¥Æ®¿¡
ÀÀ´äÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀÌ ½ÇÇà½ÃÅ°´Â ÇÁ·Î±×·¡¸Ó Á¤ÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °ÍÀÌ´Ù.
MIDletÀÌ ½ÇÇàµÇ°í ÀÖ´Â µ¿¾È »ý¼ºµÇ´Â À̺¥Æ®µéÀº ´ÙÀ½°ú °°´Ù. :
- ȸ鿡¼ ÀԷµǴ ¸í·É¹®
- È¸é ¾ÆÀÌÅÛÀÇ ³»ºÎ »óÅÂÀÇ º¯È
- MIDlet°ú °ü·ÃµÈ Æù µ¥ÀÌÅͺ£À̽ºÀÇ ³»ºÎ »óÅÂÀÇ º¯È
MIDlet À̺¥Æ® ó¸® ¸ÞÄ¿´ÏÁòÀº listener ¸ðµ¨¿¡ ±â¹ÝÇÏ°í ÀÖ´Ù. °¢ °´Ã¼´Â À̺¥Æ®¸¦
ÅëÁö¹Þ°í ¿©±â¿¡ ÀÀ´äÇÒ ¼ö ÀÖµµ·Ï Listener¸¦ ±¸ÇöÇØ¾ß ÇÑ´Ù. À̸¦ À§ÇØ MIDletÀº
ItemStateListener , CommandListener ,
RecordListener ¶ó´Â ¼¼ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù. °¢°¢À» »ó¼¼ÇÏ°Ô »ìÆì º¸ÀÚ.
CommandListener
CommandListener ´Â ȸé Ãâ·ÂµÉ ¼ö ÀÖ´Â ¾ÆÀÌÅÛ (¿¹ : ȸ鿡 ÀԷµǴÂ
¸í·É¾î)µé¿¡¼ »ý¼ºµÇ´Â À̺¥Æ®¸¦ MID ¾ÖÇø®ÄÉÀ̼ǿ¡°Ô ÅëÁöÇϴ åÀÓÀ» °¡Áø´Ù.
CommandListener ´Â listener¸¦ È®ÀåÇÏ´Â °´Ã¼°¡ ±¸ÇöÇØ¾ß ÇÏ´Â
commandAction(Command c, Displayable d) ¸ÞÄ¿´ÏÁòÀ»
Á¦°øÇÑ´Ù. ÀÌ ¸Þ¼Òµå´Â ¸í·É¾î À̺¥Æ®°¡ Displayable d ¿¡ ¹ß»ýÇßÀ½À»
°¡¸®Å²´Ù.
ItemStateListener
ItemStateListener ´Â È¸é ¾ÆÀÌÅÛ (¿¹ : ȸ鿡 ÀÖ´Â
TextField ÀÇ °ª)ÀÇ ³»ºÎ »óÅ º¯È¸¦ MID ¾ÖÇø®ÄÉÀ̼ǿ¡°Ô ÅëÁöÇϸç, ¾ÆÀÌÅÛÀÇ
³»ºÎ »óÅ°¡ »ç¿ëÀÚ¿¡ ÀÇÇØ º¯°æµÇ¾úÀ» ¶§ È£ÃâµÇ´Â itemStateChanged(Item
I) ¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. ³»ºÎ »óÅÂÀÇ º¯È´Â »ç¿ëÀÚ¿¡ ÀÇÇØ ¹ß»ýÇÑ´Ù.:
ChoiceGroup ¿¡¼ ¼±ÅÃµÈ °ªµé º¯°æÇϱâ
- ´ëÈÇü
Gauge ÀÇ °ª Á¶Á¤Çϱâ
TextField ¿¡ °ªÀ» ÀÔ·ÂÇϰųª ¼öÁ¤Çϱâ
DateField ¿¡ ³¯Â¥³ª ½Ã°£ ÀÔ·ÂÇϱâ
¿©·¯ºÐÀº ³»°¡ ÀÛ¼ºÇÑ ÀÌÀü
±Û¿¡¼ À̵é È¸é ¾ÆÀÌÅÛ¿¡ °üÇØ ´õ ¹è¿ï ¼ö ÀÖ´Ù.
¾ÆÀÌÅÛ¿¡ ¾ðÁ¦ »õ °ªÀ» ÀÔ·ÂÇØ¾ß ÇÏ´ÂÁöÀÇ °áÁ¤Àº Àåºñ¿¡ ´Þ·Á ÀÖ´Ù. ¿¹¸¦ µé¾î,
TextField ³»¿¡ ÅؽºÆ® ÆíÁýÀ» ±¸ÇöÇÏ´Â °ÍÀº Àåºñ¿¡ µû¶ó ¾ÆÁÖ ´Ù¾çÇÏ´Ù.
ItemStateListener ´Â ¾ÖÇø®ÄÉÀ̼ÇÀÌ ´ëÈÇü ¾ÆÀÌÅÛÀÇ °ªÀ» º¯°æÇÑ
°æ¿ì¿¡´Â È£ÃâµÇÁö ¾Ê´Â´Ù. »ç¿ëÀÚ°¡ º¯°æÇßÀ» ¶§¸¸ È£ÃâµÈ´Ù.
RecordListener
RecordListener ÀÇ Ã¥ÀÓÀº ¾ÖÇø®ÄÉÀ̼ǰú ¿¬°üµÇ¾î ÀÖ´Â ·¹ÄÚµå ½ºÅä¾î¿¡¼
·¹ÄÚµå º¯°æ°ú °ü·ÃµÈ À̺¥Æ®¸¦ ¹Þ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀ» »ç¿ëÇÏ·Á¸é ¾ÖÇø®ÄÉÀ̼ÇÀº
RecordListener °¡ Á¦°øÇÏ´Â ´ÙÀ½ ¸Þ¼ÒµåµéÀ» ±¸ÇöÇØ¾ß ÇÑ´Ù. :
recordAdded() : ·¹Äڵ尡 ·¹ÄÚµå ½ºÅä¾î¿¡ Ãß°¡µÇ¾úÀ» ¶§
È£ÃâµÈ´Ù.
recordDeleted() : ·¹ÄÚµå ½ºÅä¾îÀÇ ·¹Äڵ尡 º¯°æµÈ ÈÄ¿¡
È£ÃâµÈ´Ù.
recordChanged() : ·¹ÄÚµå ½ºÅä¾î¿¡¼ ·¹Äڵ尡 »èÁ¦µÈ ÈÄ È£ÃâµÈ´Ù.
Listener¿Í °´Ã¼
¿¬°á½ÃÅ°±â
MIDletÀÌ ½ÇÇàµÉ ¶§ °´Ã¼µéÀÌ À̺¥Æ®¿¡ ÀÀ´äÇÒ ¼ö ÀÖµµ·Ï Listeners°¡ ÀÌµé °´Ã¼µé¿¡ ¿¬°áµÇ¾î¾ß
ÇÑ´Ù. MIDlet Ŭ·¡½º´Â À̺¥Æ® listener¸¦ °´Ã¼¿Í ¿¬°á½ÃÅ°±â À§ÇÑ Æ¯Á¤ ¸Þ¼ÒµåµéÀ» Á¦°øÇÑ´Ù.:
setCommandListener() : ÀÌ ¸Þ¼Òµå´Â ¸ðµç ¸í·É¾î¿¡ ´ëÇÑ
listener¸¦ Displayable ¿¡ ¼³Á¤Çϸç, ÀÌÀüÀÇ
CommandListener ¸¦ ¹Ù²Û´Ù
setItemStateListener() : ÀÌ ¸Þ¼Òµå´Â È¸é ¾ÆÀÌÅÛ¿¡ ´ëÇÑ
¾ÆÀÌÅÛ »óÅ listener¸¦ ¼³Á¤Çϸç, ÀÌÀüÀÇ itemStateListener ¸¦
¹Ù²Û´Ù.
addRecordStateListener() : ÀÌ ¸Þ¼Òµå´Â ·¹ÄÚµå ½ºÅä¾î¿¡
·¹ÄÚµå »óÅ listener¸¦ Ãß°¡ÇÑ´Ù.
±×¸² 3Àº MIDlet À̺¥Æ® ó¸® ¸ðµ¨ÀÌ´Ù.
±×¸² 3. MIDlet À̺¥Æ® ó¸®
MIDletÀÇ ¿¹¿Ü
MIDletÀº ¿¹¿Ü ó¸® ±â´ÉÀ» »ç¿ëÇØ ¿¹¿ÜÀûÀÎ »óȲÀ» ó¸®ÇÒ ¼ö ÀÖ´Ù. ¿¹¿Ü¶õ
ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â µ¿¾È Á¤»óÀûÀÎ ¸í·ÉÀÇ È帧À» È¥¶õ½ÃÅ°´Â À̺¥Æ®¸¦ ¸»ÇÑ´Ù. MIDletÀº ÀÚ¹Ù ¿¹¿Ü ó¸®
¸ÞÄ¿´ÏÁòÀÇ ¸ðµ¨À» º¸Á¸ÇÏ°í ÀÖ´Ù. ±×·¯ÇÑ ¿¡·¯°¡ ¸Þ¼Òµå¿¡ ¹ß»ýÇßÀ» ¶§, ¸Þ¼Òµå´Â ¿¹¿Ü °´Ã¼¸¦ ¸¸µé¾î À̸¦ ·±Å¸ÀÓ
½Ã½ºÅÛ¿¡ ³Ñ°Ü ÁØ´Ù. ¿¹¿Ü °´Ã¼´Â ¿¹¿ÜÀÇ À¯Çü ¹× ¿¹¿Ü°¡ ¹ß»ýÇßÀ» ¶§ ÇÁ·Î±×·¥ÀÇ »óÅ µî ¿¹¿Ü¿¡ °üÇÑ Á¤º¸¸¦
°¡Áö°í ÀÖ´Ù. ±×·¯¸é ·±Å¸ÀÓ ½Ã½ºÅÛÀº ¿¡·¯¸¦ ó¸®Çϱâ À§ÇØ ¸î °¡Áö Äڵ带 ¹ß°ßÇØ¾ß ÇÑ´Ù. ÀÚ¹Ù Àü¹® ¿ë¾î¿¡¼,
¿¹¿Ü °´Ã¼¸¦ ¸¸µé¾î À̸¦ ·±Å¸ÀÓ ½Ã½ºÅÛ¿¡ ³Ñ°Ü ÁÖ´Â °ÍÀº ¿¹¿Ü¸¦ ´øÁø´Ù(throwing an
exception)¶ó°í ºÒ¸°´Ù.
¾Õ¿¡¼ »ìÆì º¸¾ÒµíÀÌ, MIDletÀº ¼ö¸í Áֱ⠵¿¾È ´Ù¾çÇÑ »óÅ·ΠÀÖÀ» ¼ö ÀÖ´Ù. MIDletÀº ¿äûµÈ
MIDlet »óÅ º¯È°¡ ½ÇÆÐÇßÀ½À» ÇÔÃàÀûÀÎ
MIDletStateChangeException À» ´øÁüÀ¸·Î½á ¾Ë·ÁÁØ´Ù.
ÀÚ¹Ù ¿¹¿Ü 󸮿¡ °üÇÑ »ó¼¼ Á¤º¸´Â ¾Æ·¡ÀÇ Âü°í
ÀÚ·á ºÎºÐÀ» ÂüÁ¶ÇÑ´Ù.
¿¹Á¦ : Àüȱâ À̹ÌÁö
¾ÖÇø®ÄÉÀ̼Ç
À̹ø ¼½¼Ç¿¡¼ ¿ì¸®´Â ´Ù¾çÇÑ ´Ü°è¿¡¼ÀÇ MIDletÀÇ ¿ªÇÒÀ» º¸¿©ÁÖ´Â J2ME À̹ÌÁö ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ
°ÍÀÌ´Ù. ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀº ¶ÇÇÑ À̺¥Æ® ó¸® ¸ÞÄ¿´ÏÁòÀ» ÅëÇØ Á¾·áÇÏ´Â ±â´Éµµ °¡Áú °ÍÀÌ´Ù.
PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀº ÀÚ½ÅÀÇ MIDIet ¸Þ¼Òµå¿¡ ´ëÇÑ È£Ãâ¿¡ ´ëÀÀÇÏ¿©
ÇϳªÀÇ »ý¼ºÀÚ¸¦ ºÒ·¯¿Â´Ù. ÀÌ »ý¼ºÀÚ´Â Àüȱâ ȸé ȯ°æ, Àüȱâ È¸é ¾ÆÀÌÅÛ, ¾ÖÇø®ÄÉÀ̼ÇÀ» Á¾·á½ÃÅ°±â À§ÇÑ
È¸é ¸í·É¾î¸¦ »ý¼ºÇÏ¿© ÃʱâÈ ÀýÂ÷¸¦ ¼öÇàÇÑ´Ù.
Àüȱâ ȸé ȯ°æÀº Display Ŭ·¡½º¿¡ ÀÇÇØ Ç¥½ÃµÈ´Ù. MIDlet´ç Á¤È®È÷
ÇϳªÀÇ Display ÀνºÅϽº°¡ ÀÖ°í, PhoneImage
»ý¼ºÀÚ´Â getDisplay() ¸Þ¼Òµå¸¦ È£ÃâÇÔÀ¸·Î½á ±× ÀνºÅϽº¿¡ ´ëÇÑ ÂüÁ¶¸¦
¾ò´Â´Ù.:
display = Display.getDisplay(this);
|
ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀÇ UI Ãø¸éÀº ±×·¡ÇÈ À̹ÌÁö µ¥ÀÌÅ͸¦ º¸À¯Çϱâ À§ÇØ »ç¿ëµÇ´Â
javax.microedition.lcdui.Image Ŭ·¡½ºÀÌ´Ù.
Image °´Ã¼µéÀº ȸé ÀåÄ¡¿Í µ¶¸³ÀûÀ¸·Î Á¸ÀçÇÑ´Ù. ±×µéÀº ȸé°ú ¹«°üÇÑ ¸Þ¸ð¸®¿¡¸¸
Á¸ÀçÇϸç, ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¸í½ÃÀûÀÎ ¸í·É¾î(Canvas ÀÇ
paint() ¸Þ¼Òµå¿¡¼Ã³·³)¸¦ ¹ßÇàÇÏÁö ¾Ê´Â ÇÑ È¤Àº Image
°´Ã¼°¡ Form ȸéÀ̳ª Alert È¸é ³»¿¡ À§Ä¡ÇÏ°í ±× È¸éÀÌ
°»½ÅµÇ±â Àü±îÁö´Â ȸ鿡 Ç¥½ÃµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.
À̹ÌÁö´Â ±×µéÀÌ ¸¸µé¾îÁø ¹æ½Ä¿¡ µû¶ó °¡º¯ÀÏ ¼öµµ ÀÖ°í
ºÒº¯ÀÏ ¼öµµ ÀÖ´Ù. ºÒº¯ À̹ÌÁö´Â ÀϹÝÀûÀ¸·Î ÀÚ¿ø ¹øµé, ÆÄÀÏ È¤Àº ³×Æ®¿öÅ©¿¡¼ À̹ÌÁö µ¥ÀÌÅ͸¦
·ÎµùÇÔÀ¸·Î½á ¸¸µé¾îÁø´Ù. À̵éÀº ÇÑ ¹ø ¸¸µé¾îÁö¸é ¼öÁ¤ÇÒ ¼ö ¾ø´Ù. °¡º¯ À̹ÌÁö´Â ȸé°ú ¹«°üÇÑ ¸Þ¸ð¸®¿¡¼
¸¸µé¾îÁø´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀº À̸¦ À§ÇØ Graphics °´Ã¼¸¦ ¸íÈ®ÇÏ°Ô »ý¼ºÇÑ ÈÄ À̵éÀ»
Ç¥½ÃÇÒ ¼ö ÀÖ´Ù. Alert , Choice ,
Form ȤÀº ImageItem °´Ã¼¿¡ ÀÖ´Â À̹ÌÁö´Â
ºÒº¯À̾î¾ß ÇÑ´Ù. ·±Å¸ÀÓ È¯°æÀÌ ¾ÖÇø®ÄÉÀ̼ǿ¡°Ô ÅëÁöÇÏÁö ¾Ê°í ¾ðÁ¦µçÁö ȸéÀ» ¾÷µ¥ÀÌÆ®Çϱâ À§ÇØ À̵éÀ» »ç¿ëÇÒ
¼ö Àֱ⠶§¹®ÀÌ´Ù.
PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀº
javax.microedition.lcdui.Image Ŭ·¡½ºÀÇ
createImage(String resourceName) ¸Þ¼Òµå¸¦ È£ÃâÇÔÀ¸·Î½á ºÒº¯
À̹ÌÁö ¾ÆÀÌÅÛÀ» »ý¼ºÇÑ´Ù. ÀÌ ¸Þ¼Òµå´Â ÁöÁ¤µÈ ÀÚ¿ø¿¡¼ ¾ò¾îÁö´Â Çص¶µÈ À̹ÌÁö µ¥ÀÌÅ͵é·ÎºÎÅÍ ºÒº¯ À̹ÌÁö¸¦
»ý¼ºÇϴµ¥, ÀÌ µ¥ÀÌÅ͵éÀº Àåºñ ±¸Çö¿¡ µû¶ó ÀÚ¿ø ¹øµé ³»¿¡ ȤÀº ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡, ȤÀº ³×Æ®¿öÅ©»ó¿¡ Á¸ÀçÇÒ ¼ö
ÀÖ´Ù. resourceName Àº Áö¿øµÇ´Â À̹ÌÁö Æ÷¸Ë Áß Çϳª·Î µÈ À̹ÌÁö µ¥ÀÌÅ͸¦
Æ÷ÇÔÇÏ°í ÀÖ´Â ÀÚ¿øÀÇ À̸§À» Ç¥½ÃÇÏ°í ÀÖ´Ù. ±¸ÇöÀº PNG (Portable Network Graphics)
Æ÷¸Ë v.1.0¿¡ ÀúÀåµÇ¾î ÀÖ´Â À̹ÌÁöµéÀ» Áö¿øÇØ¾ß ÇÑ´Ù.
ÀÚ¿ø ¸íÀÌ nullÀÏ °æ¿ì ¸Þ¼Òµå´Â NullPointerException À» ´øÁø´Ù.
ÀÚ¿øÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª µ¥ÀÌÅ͸¦ ·ÎµùÇÒ ¼ö ¾ø°Å³ª À̹ÌÁö µ¥ÀÌÅ͸¦ Çص¶ÇÒ ¼ö ¾ø´Â °æ¿ì¿¡´Â
IOException À» ´øÁø´Ù. Listing1Àº ÀÌ ¸ðµç °ÍÀÌ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö
º¸¿©ÁØ´Ù. Listing 1.À̹ÌÁö »ý¼ºÇϱâ
try
{
image = Image.createImage("/img/JavaPowered-8.png");
}
catch (java.lang.NullPointerException exc)
{
exc.printStackTrace();
}
catch (java.io.IOException ioExc)
{
ioExc.printStackTrace();
}
startApp
|
PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀº startApp() ¸Þ¼Òµå¸¦
È£ÃâÇÔÀ¸·Î½á ÀÛµ¿ »óÅ·Πµé¾î°£´Ù. Image ¾ÆÀÌÅÛÀº Form
°´Ã¼ (Listing 2 ÂüÁ¶)¿¡ ³»ÀåµÇ¾î ÀÖ´Ù. ±¸ÇöÀº È¸é ¹èÄ¡, ¼øȯ ¹× ½ºÅ©·Ñ¸µÀ» ó¸®ÇÑ´Ù.
Form ¿ª½Ã È¸é ¸í·É¾î¿Í ¿¬°áµÇ¾î ÀÖ´Ù. Listing 2.Àüȱâ ȸ鿡 À̹ÌÁö Ãß°¡Çϱâ
displayForm = new Form("Image");
displayForm. append(
new ImageItem("Default Layout",
image,
ImageItem.LAYOUT_DEFAULT,
"Image Cannot be shown"));
displayForm.addCommand(exitCommand);
|
startApp() ¸Þ¼Òµå´Â Listing 3°ú °°ÀÌ °¢ ¸í·É¾î¸¦ listener¿¡
¿¬°áÇÏ°í Form À» ÇöÀç Ç¥½Ã °¡´ÉÇÑ ¾ÆÀÌÅÛÀ¸·Î Á¤ÀÇÇÔÀ¸·Î½á À̺¥Æ® ó¸® ¸ÞÄ¿´ÏÁòÀ»
¼³Á¤ÇÑ´Ù. Listing 3. ȸ鿡 »ç¿ëÀÚ »óÈ£ÀÛ¿ë Ư¼º Ãß°¡Çϱâ
displayForm.setCommandListener(this);
displayForm.setItemStateListener(this);
|
¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ pauseApp() ¸Þ¼Òµå¸¦ È£ÃâÇϸé
PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¤Áö »óÅ·Πµé¾î°£´Ù. ÀÌ´Â ¹é±×¶ó¿îµå ÀÛ¾÷ÀÌ ¾ø°Å³ª
·¹ÄÚµå ½ºÅä¾î°¡ Á¾·áµÇ¾úÀ» ¶§ »ç¿ëÇÏ´Â ¹«¿¬»ê ¸Þ¼ÒµåÀÌ´Ù. destroyApp()
¸Þ¼Òµå´Â PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀÇ Á¾·á ´Ü°è¸¦ ½ÃÀÛ½ÃŲ´Ù. ÀÌ ¸Þ¼Òµå´Â ¸ðµç
ÀÚ¿øÀ» ÇØÁ¦Çϴ åÀÓÀ» °¡Áö°í ÀÖ´Ù.
commandAction ¸Þ¼Òµå (Listing 4 ÂüÁ¶)´Â
PhoneImage MIDletÀÌ ¸í·É¿¡ ÀÀ´äÇϵµ·Ï Çϸç, ¸ðµç È¸é ¸í·É¾î ÀÛ¾÷½Ã
È£ÃâµÈ´Ù. exitCommand °¡ È£ÃâµÇ¾úÀ» ¶§ MIDletÀ» Á¾·á½ÃÅ°´Â
exitCommand ÀÇ Çڵ鷯°¡ Á¤ÀǵȴÙ. Listing 4. ¸í·É¾î ÄÝ¹é ±¸ÇöÇϱâ
public void commandAction (
Command c, Displayable s) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}
|
Listing 5´Â PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀÇ Àüü ¼Ò½º ÄÚµåÀÌ´Ù. :
Listing 5. PhoneImage
// Import of API classes
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
//A first MIDlet with simple text and a few commands.
public class PhoneImage extends MIDlet
implements CommandListener, ItemStateListener {
//The commands
private Command exitCommand;
//The display for this MIDlet
private Display display;
// Display items e.g. Form and Image
Form displayForm;
Image image;
public PhoneImage() {
display = Display.getDisplay(this);
exitCommand = new Command("Exit", Command.SCREEN, 1);
try
{
image = Image.createImage("/img/JavaPowered-8.png");
}
catch (java.io.IOException ioExc)
{
ioExc.printStackTrace();
}
}
// Start the MIDlet by creating the Form and
// associating the exit command and listener.
public void startApp() {
displayForm = new Form("Image");
displayForm. append(
new ImageItem("Default Layout",
image,
ImageItem.LAYOUT_DEFAULT,
"Image Cannot be shown"));
displayForm.addCommand(exitCommand);
displayForm.setCommandListener(this);
displayForm.setItemStateListener(this);
display.setCurrent(displayForm);
}
public void itemStateChanged(Item item)
{
}
// Pause is a no-op when there is no background
// activities or record stores to be closed.
public void pauseApp() { }
// Destroy must cleanup everything not handled
// by the garbage collector.
public void destroyApp (boolean unconditional) { }
// Respond to commands. Here we are only implementing
// the exit command. In the exit command, cleanup and
// notify that the MIDlet has been destroyed.
public void commandAction (
Command c, Displayable s) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}
}
|
±×¸² 4´Â ÀåÄ¡ ¿¡¹Ä·¹ÀÌÅͻ󿡼 ½ÇÇàµÇ´Â ¾ÖÇø®ÄÉÀ̼ÇÀÌ´Ù.
±×¸² 4. PhoneImage ¾ÖÇø®ÄÉÀ̼Ç
°á·Ð
¸ðµç
À̵¿ Àüȳª È£Ãâ±â¿¡¼ ÀÛµ¿ÇÏ´Â ¹«¼± ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÛ¼ºÀÌ MIDletÀ¸·Î ÈξÀ ½¬¿öÁ³´Ù. MIDletÀÇ Àß
Á¤ÀÇµÈ ¾ÆÅ°ÅØó´Â ±¤¹üÀ§ÇÑ ±â´ÉÀ» Á¦°øÇÏÁö¸¸ ¿ä¾àµÈ ¾ÆÅ°ÅØó¸¦ À¯ÁöÇÏ´Â Àß Á¤ÀÇµÈ ¸Þ¼Òµå ¼¼Æ®¸¦ ±â¹ÝÀ¸·Î
±¸ÃàµÇ¾ú´Ù. ³ª´Â ÀÌ ±ÛÀÌ ¿©·¯ºÐ ÀÚ½ÅÀÇ MIDlet ±¸Ãà¿¡ Âø¼öÇϴµ¥ µµ¿òÀÌ µÇ±â¸¦ ¹Ù¶õ´Ù.
Âü°í ÀÚ·á
|