¢x ½s¿è«Ç ¢x »O¤j­º­¶ ¢x ­p¤¤­º­¶ ¢x

²Ä0018´Á ¡E 2011.09.20 µo¦æ

ISSN 2077-8813

¾ú¥v¦^ÅU ­q¾\/¨ú®ø ®Õ°ÈªA°È ±MÃD³ø¾É   §Þ³N½×¾Â ±ÀÂË¥Zª«
­º­¶ >±MÃD³ø¾É
±MÃD³ø¾É

AndroidÀ³¥Îµ{¦¡¶}µo³t¦¨¯Z

§@ªÌ¡G±i¤¯®p / »OÆW¤j¾Ç¤uµ{¬ì¾Ç¤Î®ü¬v¤uµ{¬ã¨s©Ò¬ã¨s¥Í

«e¨¥¡G
ÀHµÛ¶}©ñ¦¡¨t²Îªº¿³°_¡AAndroid §@·~¨t²Î¤w³vº¥Åܦ¨¥D¬y¡A¥þ¥@¬É¤w¸g¾Ö¦³¶W¹L 40%ªº¨Ï¥ÎªÌ¡C³z¹L¥»¤å³¹§Æ±æ¥i¥H¸ò¤j®a¤À¨É¦p¦ó¦bµu®É¶¡¤º¶}µo¤@­ÓAndroid À³¥Îµ{¦¡¡C

¥»¤å±N¤À¦¨¥H¤U5¤j³¡¥÷°µ¤¶²Ð¡G

  1. Android ²¤¶
  2. ¶}µoÀô¹Ò
  3. ¶}µo¤u¨ã¤§¤¶²Ð
  4. Activity ¤¶²Ð
  5. µ{¦¡¶}µo
    - Phonegap
    - JQueryMobile

Android ²¤¶                                                                                                                                           
Android¬O¤@ºØ¥HLinux¬°°ò¦ªº¶}©ñ­ì©l½X§@·~¨t²Î¡A¥D­n¨Ï¥Î©ó«KÄâ¸Ë¸m¡CGoogle¦b2008¦~µoªí¤FAndroidªº²Ä¤@­Óª©¥»¡C¥Ø«e¥«­±¤WªºAndroid¤w¶}µo¥X³\¦hª©¥»¡A³o¨Çª©¥»¤À§O¥Î¤F¤£¦Pªº²¢ÂI¦W¦r°µ¬°¥Nªí¡CµM¦Ó¡A¦b¤é±`¥Í¬¡¤¤¡A«Ü¦h¤HÅ¥¨ì³o¨Ç²¢ÂIªº¦W¦r«o¤£ª¾¹D³o¨Ç¦W¦r¥Nªí¤°麽¡C¦bFigure 2¡A¦³¬Û¹ïÀ³ªºCodename¡A¥­»Oversion¡A»PAPI version¡C §Ú­Ì¤]¤£Ãøµo²{¡A¨C­Óª©¥»¦WºÙªº²Ä¤@­Ó¦r±Æ§Ç¤U¨Ó¡A«ê¦n¸ò¦r¨å¤¤¦r¥Àªº¶¶§Ç¬Û¦P¡A¨Ã¥H¦¹§@¬°¥Nªí¡C¨Ò¦p¡GBeta¥NªíB¡A Cupcake ¥Nªí C¡A¨Ì¦¹Ãþ±À¡C

¥Ø«e¥«­±¤WªºAndroidª©¥»¥HAndroid 2.2¤À§G³Ì¦h¡A¦]¦¹¡A±µ¤U¨Óªº¶}µo½d¨Ò³£·|¥H2.2ªºª©¥»¬°¥D¡C

¡@

¶}µoÀô¹Ò                                                                                                                                                   
¶}µoAndroidªºÀ³¥Îµ{¦¡¥D­n»Ý­n¥H¤U¥|­Ó¶}µo¤u¨ã¡C
1. JDK (Java Development Kit)
©Ò¦³ªºAndroid À³¥Îµ{¦¡³£¬O¥ÎJava¼g¡A¦Ó JDK¬O¨C­Ó¶}µoJavaµ{¦¡ªº¥²­n¤u¨ã¡C¥i¥H¨ì¡G http://www.oracle.com/technetwork/java/javase/downloads/index.html ¤U¸ü³Ì·sªºª©¥»¡CFigure 4¬°¤U¸üµe­±¡G¡]¿ï¨ú¹Ï¤¤¬õ¦â®Ø®Ø¿ï¨úªº®M¥ó¡^¤U¸ü§¹«á¡A´N¥i¥H¦w¸Ë¨ì±zªº¹q¸£¡C

2. Android SDK
½Ð«ö·Ó±zªº¹q¸£§@·~¨t²Î¨ì¡Ghttp://developer.android.com/sdk/index.html ¤U¸ü³Ì·sªºAndroid¶}µo¤u¨ã¨Ã¦w¸Ë¨ì±z¹q¸£ (Figure 5)¡C³o¬O¶}µoAndroid³Ì®Ö¤ßªº¤u¨ã¡C

Tips¡G¦b¦w¸ËAndroid SDK¡A¤]³\±z·|¸I¨ì Java SDK not found ªº°ÝÃD(Figure 6)¡C¤£¹L¤£¥Î¾á¤ß¡A¤£¬O±zªº°ÝÃD¡A¬OAndroid SDK¦Ü¤µ¤´¥¼¸Ñ¨Mªº¤@­Ó¤pbug¡C¦bWindows 7 »P Windows XP³£·|¸I¨ì³o­Ó°ÝÃD¡C¸Ñ¨M¤èªk¨ä¹ê«Ü²³æ¡A¥u­n«ö ¤W¤@¨B [ Back ] µM«á¦A«ö¤U¤@¨B [Next] ´N¥i¥H¤F¡C

3. Eclipse
¬O¤@­Ó»²§Uµ{¦¡¶}µo¤H­û¶}µo³nÅ骺À³¥Î³nÅé¡C³o­Ó³nÅé¥i¥H¨ì http://www.eclipse.org/downloads/ ¤U¸ü¡C³o­Ó³nÅ餣»Ý­nÄé¡Aª½±µ¸ÑÀ£ÁY¨ì§A¹q¸£´N¥i¥H¶}©l¨Ï¥Î¡C

4. Android ADT
¬O¤@­Ó¶}µoAndroid ªºEclipse ªº®M¥ó¡A©Ò¥H³o­Ó³nÅé­n¦bEclipse¤W¦w¸Ë¡C
½Ð¦b EclipseªºHelp ¡÷ Install New Software ¡÷ Add¡A ¨Ã¶ñ¤J
Name : Android
Location : https://dl-ssl.google.com/android/eclipse/

¤U¤@¨B«K·|Åã¥Ü¥i¥Îªº¤u¨ã¡C½Ð±N "©Ò¦³ªº¿ï¶µ" ¥´¤Ä (Figure 8)¡C

¦w¸Ë§¹«á¡AEclipse¥²¶·­«·s±Ò°Ê¡C±µµÛ¡A§Ú­Ì¥²¶·§â¤w¸g¦w¸Ë¦nªºAndroid SDK¸òEclipse°µ³s±µ¡C¦b Eclipseªº Window ¡÷ Preferences ¡÷ Android ¡÷ SDK location ¡÷ ±z¦w¸ËAndroid SDKªº¦a¤è

¡@

Android ¶}µo¤u¨ã                                                                                                                                 

 Android SDK´£¨Ñ«Ü´Îªº¥\¯à¡A³o¨Ç¥\¯à¥i¥HÅý¶}µoªÌ§ó¤è«Kªº¶}µoAndroid À³¥Îµ{¦¡¡C
• Android emulator:
­Y±z¨S¦³Android¤â¾÷¡AAndroid SDK ¦³´£¨Ñ¤@­Ó²£¥ÍAndroidµêÀÀ¾÷ªº¥\¯à¡C³o­ÓµêÀÀ¾÷¥i¥H¼ÒÀÀ¤@¯ë¤â¾÷ªº°ò¥»¥\¯à¡A¨Ò¦p¡G¥´¹q¸Ü¡A±H²°T¡A¦w¸ËÀ³¥Îµ{¦¡¡AGPS¡Aµ¥µ¥¡C¥i¨Ì¥H¤U¨BÆJ²£¥ÍAndroidµêÀÀ¾÷¡G
½Ð¦bEclipse ¡÷ ¡÷ Virtual devices ¡÷ New ¡÷

Name : µêÀÀ¾÷ªº¦W¦r
Target : µêÀÀ¾÷¨Ï¥Îªº¥­»Oª©¥»¡C
SD Card : µêÀÀ¾÷ªº°O¾Ð¥d®e¶q¡C
Snapshot : ¥Î¨ÓÀx¦sµêÀÀ¾÷Ãö¾÷«eªº³Ì«áª¬ºA¡CÅý¤U¤@¦¸¶}¾÷ªº®É­Ô¡A¥i¥H ÅýµêÀÀ¾÷§ó§Öªº±Ò°Ê¡A¨Ã«ì´_¨ì¤W¤@¦¸³Ì«áÃö¾÷ªºª¬ºA¡C
Built-in : µêÀÀ¾÷ªº¿Ã¹õ¤j¤p¡C«Øij¨Ï¥ÎHVGAªº¤j¤p¡C­Y¿ï¥Î¤Ó¤jªº¿Ã¹õ¡]¨Ò¦p¡GWVGA 800¡^·|¶W¹L¤@¯ëµ§°O«¬¹q¸£¿Ã¹õªº°ª«×¡]768¡^¡C¶V¤jªº¿Ã¹õ¬Û¹ï¦Ó¨¥¡A¤]·|»Ý­n§ó¦hªº¸ê·½¡C

Tips:
¦b²Ä¤@¦¸²£¥ÍµêÀÀ¾÷ªº®É­Ô¡A¤]³\·|¸I¨ìError ¦p :
Files\Android\android-sdk-windows\tools/emulator-arm.exe.
Hint: use '@foo' to launch a virtual device named 'foo'.
Please use -help for more information.
½Ð±NEclipse¤WªºSDK Location ¥Ñ
C:\Program Files\Android\android-sdk
§ï¬°
C:\PROGRA~1\Android\android-sdk
(Figure 10)

©óµe­±¥ª¤W¨¤¥i¬Ý¨£ 5554:myAndroid2.2 ªº¦r¼Ë ¡A¨ä¤¤5554¬O³o­ÓµêÀÀ¾÷ªº¹q¸Ü¸¹½X¡C±z¥i³z¹L²£¥Í¥t¥~¤@­ÓµêÀÀ¾÷¡A¨Ã¥´¨ì5554³o­Ó¸¹½X¡A¨Ó¼ÒÀÀ¼·¡þ±µ¹q¸Üªº¥\¯à¡C

¥t¥~¡AEclipse¤]¦³´£¨Ñ¤@­ÓµêÀÀ¾÷±±¨îªº¥\¯à¡C
½Ð¦bEclipse ¡÷ Window ¡÷ Show View ¡÷ Other ¡÷ Android ¡÷ Emulator Control
³z¹L³o­ÓEmulator Control ¥i¥H¼ÒÀÀ¼·¥´¹q¸Ü¡B²°T¶Ç°eªº¥\¯à¡A¥H¤ÎGPSªº³]©w¡C

• ±M®×¶}µo
²£¥Í¤@­Ó·sªºAndroid±M®×¡C
Eclipse ¡÷ File ¡÷ New ¡÷ Android Project

Figure 12 »¡©ú¡G
Project name : ±M®×¦WºÙ¡C³o­Ó¦WºÙ¤£·|Åã¥Ü¦b§AªºappùØ­±¡C
Target name : À³¥Îµ{¦¡ªºAPIª©¥»¡C
Application name : À³¥Îµ{¦¡ªº¦WºÙ¡C
Package name : µ{¦¡½Xªºclass name¡C
Create Activity ¡GÀ³¥Îµ{¦¡ùØ­±ªºµ{¦¡½X¶i¤JÂI¡C
Min SDK Version : ¦w¸Ë³o­ÓÀ³¥Îµ{¦¡©Ò»ÝªºAndroid³Ì§C»Ý¨D¡C

ª`·N¡G¦b³o­Ó½d¨Ò¤¤¬O8¡A©Ò¥H¦b8¥H¤UªºAPIª©¥»µLªk¦w¸Ë³o­ÓÀ³¥Îµ{¦¡¡C
¡@

¡@

Figure 13¬°Android²£¥Í¥X¨Óªº±M®×¡C¦bµ{¦¡·í¤¤¦³¤@­ÓClass Name¥s°µ HelloworldActivity¡A¥L¬O¥ÑActivity Ä~©Ó¥X¨Óªº¡]¬õ¦â®Ø®Ø¤¤¡^¡CActivity¬O¨C­ÓÀ³¥Îµ{¦¡ªº¶i¤JÂI¡A´N¦p¦PC/C++ªºmain¡Aµ{¦¡²Ä¤@¦¸°õ¦æ³£·|±q³o¸Ì¶}©l¡C¤@­ÓActivity¦³¤À¦¨«Ü¦hª¬ºA¨Ò¦p¡GonCreate¡AonStart¡A onResume¡AonPause¡Aµ¥µ¥¡C¦b¤U¤@³¹¸`·|§ó²`¤Jªº¤¶²ÐActivity¡C³o­Ó²£¥Í¥X¨Óªº±M®×¬O¥i°õ¦æ¥B¤]¦³µe­±ªº¡A¥u­n¦b±zªº±M®×¤W¡A«ö¤U·Æ¹«¥kÁä¡Arun as ¡÷ Android application¡AEclipse´N¥i¥H¦Û°Ê±Ò°ÊAndroidµêÀÀ¾÷¨Ã§â³o­ÓÀ³¥Îµ{¦¡¿N¶i¥h¡C

¡@

Activity¤¶²Ð                                                                                                                                             

³o­Óª¬ºA¬yµ{¹Ï¬O¥Î¨Ó´y­zÀ³¥Îµ{¦¡¦b°õ¦æ¹Lµ{¤¤©Ò¸g¹Lªºª¬ºA¡C
onCreate ¡G¬O¤@­ÓActivity¶}©l±Ò°Êªºª¬ºA¡C¦b³o­Ó³o¸Ì¡AAndroid·|À°§A³B²z»P·Ç³ÆÀ³¥Îµ{¦¡©Ò¥Îªºªº¸ê·½¡A¨Ò¦p ¡G¹Ï®×¡Aµe­±¡Aµ¥µ¥¡C
onStart ¡G³o­Óª¬ºA¥Nªí©Ò¦³ªº¸ê·½³£¤w¸g·Ç³Æ¦n¤F¡CActivity¨ì¤F³o­Óª¬ºA¡A¨Ï¥ÎªÌÁ٬ݤ£¨ìµe­±¡C
onResume ¡G©Ò¦³ªº¸ê·½»PUI¤w¸gÅã¥Ü³B²z¡A¨Ï¥ÎªÌ¥i¥H¶}©l±±¨î³o­ÓÀ³¥Îµ{¦¡¡C
onPause ¡G¬OÀ³¥Îµ{¦¡¤w¸g³Q¼È°±¡C³Q¼È°±ªº­ì¦]¦³¨â­Ó¥i¯à©Ê¡G
²Ä¤@¡A¨Ï¥ÎªÌ¶}©l±Ò°Ê§OªºActivity¡A¦]¦¹Â÷¶}³o­ÓÀ³¥Îµ{¦¡¡C
²Ä¤G¡A¦³§OªºActivity¬ðµM±Ò°Ê¡C¨ä¤¤³Ì±`¨£ªºª¬ªp´N¬O¡A·í¦³¹q¸Ü¨Ó®É¡A­ì¥»ªºÀ³¥Îµ{¦¡·|³Q»\±¼¡C

onDestroy ¡G¥Nªí§AªºActivity­n³Q°±¤î¤F¡C

onPause¸òonStopªºª¬ºA¬Û¦ü¡A°ß¤@ªº®t§O¦b©ó³B©óonPauseªºª¬ºA®É¡A¨Ï¥ÎªÌ¤´¥i¥H¬Ý±o¨ìµe­±¡F¦Ó¦bonStopªºª¬ºA®É¡A¨Ï¥ÎªÌ¤w¸g§¹¥þ¬Ý¤£¨ìµe­±¤F¡C
·í³B©óonPause©ÎonStopªºª¬ºA®É¡A­Ymemory¤£¨¬¡Aprocess«Ü¦³¥i¯à·|³QAndroid±j­¢°±¤î¡C¨Ï¥ÎªÌ­Y­n¦A¦^¨ì³o­ÓÀ³¥Îµ{¦¡¡A¥²¶·­n­«·s¶}©l¶]¡]onCreate¡^¡C
¤@­Ó¦nªºÀ³¥Îµ{¦¡·|¥Ñµ{¦¡³B²zactivityªº°µªk¨Ó¨M©w¡CÄ´¦p»¡¡G¤@­Ó¹CÀ¸À³¥Îµ{¦¡¡A¦bonPauseªºª¬ºA®É¡Aµ{¦¡¥²¶·­n§âª±®a³Ì«áªº¹CÀ¸ª¬ºAÀx¦s°_¨Ó¡AÁקKµ{¦¡³Q­¢°±¤îªº®É­Ô¡Aª±®a¥¢¥h¥L¤§«e©Òª±ªº¬ö¿ý¡C¥ç©ÎªÌ·í¦³¨Ï¥Î¨ìGPS¥\¯àªºÀ³¥Îµ{¦¡®É¡Aµ{¦¡¦bonPauseªºª¬ºA´N§âGPSªº¥\¯à°±¤î¡A¦]¬°GPSªº¥\¯à«D±`¯Ó¶O¹q¤O¡C
¥H¤U¬O¥i¥H¥[¨ìActivityªºµ{¦¡¤ù¬q¡G

µ{¦¡¶}µo                                                                                                                                                  
¨ì¤F³o­Ó³¹¸`¡A¤]³\±z·|ı±oAndroid Apiªºª©¥»³o»ò¦h¡]1.5 , 1.6 , ¡K¡^¡A¹ïJava¤S¤£¼ô±x¡A«ç»ò¥i¯à¦b¨â­Ó¤p®É¤º¶}µo§¹¦¨¤@­ÓÀ³¥Îµ{¦¡©O¡H¦A¥[¤W³]­p¤@­ÓAndroid À³¥Îµ{¦¡ªºUI«Ü½ÆÂø¡A¥²¶·À´Android UIªº¨C­Óª«¥ó¡A¬O§_¯uªº¦³¥i¯à§¹¦¨³o­ÓÁ}Ãøªº¥ô°È¡H´Nºâ¤w¸g¦¨¥\ªº¶}µoAndroidª©¥»ªºÀ³¥Îµ{¦¡¡A¤@´«¨ìiOS¤W­±¤S­n­«·s¶}©l¾Ç¡A¦³¨S¦³¤èªk¯à°÷Åý¤@­Óµ{¦¡½X¦b¥ô¦ó¥­»O³£¥i¥H°õ¦æ? µª®×¡G¦³¡IPhoneGap¡C

爲¤F¼W¥[¶}µoªº³t«×¡A±µ¤U¨Ó±N·|¬°¤j®a¤¶²ÐPhoneGap¡CPhoneGap·|³z¹LJavaScript §ì¨ú¤@¨Ç Android ´£¨ÑªºNative API¡C爲¤°麽¤@©w­nJavaScript©O¡H¦]¬°JavaScript¦b¥ô¦ó¥­»O¤W°õ¦æ³£¯à¦³¬Û¦Pªºµ²ªG¡C³z¹LPhoneGapªºAPI¡A§Ú­Ì´N¥i¥H¨Ï¥ÎNative APIªº¥\¯à¡A¨Ã¥BÅý¤@¥÷JavaScriptªºµ{¦¡¡A¦b¥ô¦ó¥­»O¤W³£¥i¥H°õ¦æ¡C
§Ú­Ì¥i¥H§Q¥ÎHTML·í°µ§Ú­ÌªºUI¡AµM«á§Q¥ÎPhoneGap¥h§ì¨ú¤â¾÷ªº¤@¨Ç¸ê°T¡C³o¼Ë§Ú­Ì´N¥i¥H§â³]­pUIªº®É¶¡¬Ù¤U¨Ó¡A¦Ó¥BPhoneGapªºAPI «D±`²³æ¡A´N¸ò¤@¯ëªºJavaScriptµ{¦¡¤@¼Ë¡C

• PhoneGapÀô¹Ò³]©w¡C
«Ø¥ß¤T­Ó¥Ø¿ý¦b±zªºEclipse±M®×ùØ­±¡C

/libs
/assets/www
/res/xml

• §âPhoneGapªºÀɮשñ¨ì¤W¨BÆJ«Ø¥ßªº¥Ø¿ý¡C
½Ð¨ì http://www.phonegap.com/download/ ¤U¸ü¡C

phonegap.jar ©ñ¨ì /libs
phonegap.js ©ñ¨ì /assets/www
plugins.xml ©ñ¨ì /res/xml¡C

• §â¼g¦nªº½d¨Ò index.html©ñ¨ìassets/www index.html µ{¦¡¤ù¬q¡C
• §â­ì¥»ªº ¡§extends Activity¡§
§ï¦¨¡¨extends DroidGap¡¨¡C
§â setContentView() §ï¦¨super.loadURL(¡§file///android_asset/www/index.html¡¨);
¦A¥[¤W¤@¦æ import com.phonegap.*;(Figure 14)
¡@

• §â¥H¤Uªºµ{¦¡½X©ñ¨ìAndroidManifest.xml (Figure 15)

• ¨Ã±N android:configChanges="orientation|keyboardHidden ©ñ¨ì activity ªº¼ÐÅÒùØ­±

§¹¾ãªºphonegap½d¨Òµ{¦¡µ²ªG ¡G http://www.youtube.com/watch?v=fbQLKzboui8

¦b¶}µo¹Lµ{¡A¤]³\³]­p¥X¨ÓªºHTML UI¤]³\¤£¾A¦X¦b¤â¾÷¤WÅã¥Ü¡C¦]¦¹§Ú­Ì¥i¥H§Q¥ÎJQuerymobile¥h³]­p§Ú­ÌÀ³¥Îµ{¦¡ªºUI¡CJQuerymobile¬O¤@­Ó§K¶O³nÅé¡A±Mªù³]­pUI ªºJavaScript library¡C¥u­n³z¹L¥L­Ì¤w¸g­q¦nªº®æ¦¡¡A±zªºHTML«K¥i¾Ö¦³©M¤â¾÷¸Ì­±¬Û¦üªºµe­±¡C¥L¤£¦ý©M¤â¾÷¸Ì­±¬Û¦üªºµe­±¡A¦b¨C­¶¸õ­¶¤§¶¡¤]·|¦³¤@¯ë¤â¾÷ªº°Êµe®ÄªG¡C¦Ó¥BJQuerymobile ¤]¦³°w¹ïIJ±±ªºµe­±³]­p°µ³Ì¨Î¤Æ¡C ¥i¥Ñ¦¹ºô§}¡Ghttp://jquerymobile.com/demos/1.0b2/°Ñ¦Ò½d¨Ò¡C

µ²½×
³z¹L PhoneGap ¥[¤W JQuerymobile §Ú­Ì¤£»Ý­nÁA¸ÑAndroid API«ç»ò¼g¡A§ó¤£»Ý­nÁA¸ÑAndroid UI¬O«ç»ò³]­pªº¡C¥u³z¹LHTML + JavaScript¡A§Ú­Ìªºµ{¦¡³£¥i¥H¸ò Android ªº native app ¨ã¦³¦P¼Ëªº®ÄªG¡C¨Ã¥B¥i¥H¦b«Üµuªº®É¶¡¤º¡A¶}µo¥X¥i¥H¸ó¥­»OªºÀ³¥Îµ{¦¡¡C

°Ñ¦Ò¤å¥ó
[1] http://en.wikipedia.org/wiki/Mobile_operating_system
[2] http://developer.android.com/resources/dashboard/platform-versions.html

ª©Åv©Ò¦³ © °ê¥ß¥xÆW¤j¾Ç­pºâ¾÷¤Î¸ê°Tºô¸ô¤¤¤ß All Rights Reserved.
¹q¸Ü¡G02-33665022 ©Î 3366-5023 ¶Ç¯u¡G 02-23637204
ŪªÌ·N¨£«H½c¡Gntuccepaper@ntu.edu.tw
¦a§}¡G10617 »O¥_¥«Ã¹´µºÖ¸ô¥|¬q¤@¸¹
«Øij³Ì¨Î¿Ã¹õ¸ÑªR«× 1024*768